From 0db2151f92f6f2449f2322ae73b38da35890d265 Mon Sep 17 00:00:00 2001 From: gitea-actions Date: Wed, 8 Jul 2026 22:28:43 +0100 Subject: [PATCH] removing author and cleaning js / css --- README.md | 2 + assets/avatars/aphy.jpeg | Bin 122624 -> 0 bytes assets/avatars/future-z.jpeg | Bin 120219 -> 0 bytes assets/avatars/lima.jpg | Bin 126166 -> 0 bytes assets/avatars/sensei-chi.jpeg | Bin 153793 -> 0 bytes assets/avatars/young-z.jpeg | Bin 93972 -> 0 bytes assets/avatars/z.jpeg | Bin 112258 -> 0 bytes assets/scripts/application/theme-switcher.js | 32 + assets/scripts/ash-below-lake.js | 1013 +---- assets/scripts/bigger-picture.min.js | 8 +- assets/scripts/comments.js | 203 +- assets/scripts/competency-status-board.js | 247 +- assets/scripts/features/comments.js | 196 + assets/scripts/features/hidden-details.js | 624 +++ assets/scripts/gallery-init.js | 322 +- assets/scripts/hidden-details.js | 692 +--- assets/scripts/lunr.js | 3482 +---------------- assets/scripts/mermaid.min.js | 2817 +------------ assets/scripts/notes.js | 153 +- assets/scripts/pages/ash-below-lake.js | 1008 +++++ .../scripts/pages/competency-status-board.js | 240 ++ assets/scripts/pages/home-dashboard.js | 313 ++ assets/scripts/pages/notes.js | 148 + assets/scripts/pages/play.js | 866 ++++ assets/scripts/pages/sitemap-interactive.js | 398 ++ assets/scripts/pages/wird-tracker.js | 1787 +++++++++ assets/scripts/play.js | 871 +---- assets/scripts/script.js | 354 +- assets/scripts/sitemap-interactive.js | 401 +- assets/scripts/svg-pan-zoom.min.js | 34 +- assets/scripts/ui/copy-buttons.js | 19 + assets/scripts/ui/countdown.js | 38 + assets/scripts/ui/footnote-sidenotes.js | 50 + assets/scripts/ui/gallery-init.js | 315 ++ assets/scripts/ui/mermaid-diagrams.js | 101 + assets/scripts/ui/toc-active-link.js | 88 + assets/scripts/vendor/bigger-picture.min.js | 1 + assets/scripts/vendor/lunr.js | 3475 ++++++++++++++++ assets/scripts/vendor/mermaid.min.js | 2811 +++++++++++++ assets/scripts/vendor/svg-pan-zoom.min.js | 27 + assets/scripts/wird-tracker.js | 1792 +-------- assets/scripts/zhd.js | 316 +- assets/styles/base/elements.css | 226 ++ assets/styles/bigger-picture.min.css | 9 +- assets/styles/comments.css | 119 +- assets/styles/components/comments.css | 118 + assets/styles/components/kanban.css | 251 ++ assets/styles/components/mermaid.css | 76 + assets/styles/components/notes-board.css | 281 ++ assets/styles/components/org-content.css | 502 +++ assets/styles/components/org-syntax.css | 95 + assets/styles/features/hidden-details.css | 289 ++ assets/styles/hidden-details.css | 327 +- assets/styles/kanban.css | 252 +- assets/styles/layout/site-shell.css | 162 + assets/styles/media.css | 135 +- assets/styles/misc.css | 503 +-- assets/styles/org-syntax.css | 96 +- assets/styles/pages/home-dashboard.css | 648 +++ assets/styles/pages/play.css | 832 ++++ assets/styles/pages/wird-tracker.css | 1888 +++++++++ assets/styles/play.css | 833 +--- assets/styles/style.css | 880 +---- assets/styles/themes/tokens.css | 110 + assets/styles/utilities/responsive.css | 134 + assets/styles/vendor/bigger-picture.min.css | 8 + assets/styles/wird-tracker.css | 1889 +-------- assets/styles/zhd.css | 649 +-- blogs/2026/05-may/characters-12-05.org | 12 - blogs/blogs-list.org | 2 +- build-logs/org-web-build.log | 6 - docs/assets-architecture.md | 34 + lima/lima-list.org | 4 +- lisp/build-assets.el | 35 +- posts/career/career-list.org | 6 +- posts/career/requirements-features.org | 4 +- posts/posts-list.org | 8 +- recently-updated.org | 4 +- sitemap.org | 462 +-- tags/learning.org | 6 +- tags/notes.org | 6 +- 81 files changed, 18580 insertions(+), 18565 deletions(-) delete mode 100644 assets/avatars/aphy.jpeg delete mode 100644 assets/avatars/future-z.jpeg delete mode 100644 assets/avatars/lima.jpg delete mode 100644 assets/avatars/sensei-chi.jpeg delete mode 100644 assets/avatars/young-z.jpeg delete mode 100644 assets/avatars/z.jpeg create mode 100644 assets/scripts/application/theme-switcher.js create mode 100644 assets/scripts/features/comments.js create mode 100644 assets/scripts/features/hidden-details.js create mode 100644 assets/scripts/pages/ash-below-lake.js create mode 100644 assets/scripts/pages/competency-status-board.js create mode 100644 assets/scripts/pages/home-dashboard.js create mode 100644 assets/scripts/pages/notes.js create mode 100644 assets/scripts/pages/play.js create mode 100644 assets/scripts/pages/sitemap-interactive.js create mode 100644 assets/scripts/pages/wird-tracker.js create mode 100644 assets/scripts/ui/copy-buttons.js create mode 100644 assets/scripts/ui/countdown.js create mode 100644 assets/scripts/ui/footnote-sidenotes.js create mode 100644 assets/scripts/ui/gallery-init.js create mode 100644 assets/scripts/ui/mermaid-diagrams.js create mode 100644 assets/scripts/ui/toc-active-link.js create mode 100644 assets/scripts/vendor/bigger-picture.min.js create mode 100644 assets/scripts/vendor/lunr.js create mode 100644 assets/scripts/vendor/mermaid.min.js create mode 100644 assets/scripts/vendor/svg-pan-zoom.min.js create mode 100644 assets/styles/base/elements.css create mode 100644 assets/styles/components/comments.css create mode 100644 assets/styles/components/kanban.css create mode 100644 assets/styles/components/mermaid.css create mode 100644 assets/styles/components/notes-board.css create mode 100644 assets/styles/components/org-content.css create mode 100644 assets/styles/components/org-syntax.css create mode 100644 assets/styles/features/hidden-details.css create mode 100644 assets/styles/layout/site-shell.css create mode 100644 assets/styles/pages/home-dashboard.css create mode 100644 assets/styles/pages/play.css create mode 100644 assets/styles/pages/wird-tracker.css create mode 100644 assets/styles/themes/tokens.css create mode 100644 assets/styles/utilities/responsive.css create mode 100644 assets/styles/vendor/bigger-picture.min.css create mode 100644 docs/assets-architecture.md diff --git a/README.md b/README.md index 5b4e04b..972e623 100755 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ This repository contains code for the website https://zainezq.com, which serves The site is written using Emacs and Org-mode, and exported using the `org-publish` functionality. See the `build-site.el` script for details on how the site is built and published. +Asset structure and frontend boundaries are documented in `docs/assets-architecture.md`. + ## Local authoring UI The authoring UI now lives in `/home/zaine/master-folder/org-platform/authoring-service`. diff --git a/assets/avatars/aphy.jpeg b/assets/avatars/aphy.jpeg deleted file mode 100644 index e1da5d40dc766a10a8d26d1125f5625227b524fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122624 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 z%0D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

+7SVc(wg}UgUCMy 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 LAPkZ*LKpwprO#wF diff --git a/assets/avatars/future-z.jpeg b/assets/avatars/future-z.jpeg deleted file mode 100644 index 5511e9c4400e961cfa5f4522b96cc49786d37b11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120219 zcmb5Vbx<5l)IPenCAhl=3+}E#7GEs5haihA?hb*VizT=%?(PZhkl^kPOM-j2yx(_k z)$jgw>vm69^-S-c>8hFO^Yn9`^RoD|3BUy^C@TOE5C8y#*9v%90muQ65E1`7kY111 zf{ccO{8}(j(NNGZF|e>OF)%UTyv4(Q^9J_~CMGr^4lW)(0RaIPHX$(~KJjZG|34!L z|NRpg865=$9sdpH8~p#@<>e;;4;=~cS`p|0h#TBEemu)dS2I%BnDYfJ`tZK zB($yvgHi4`F~7DIv|#Hmle}B~IZ4<%fnHK(o#d3lX)-~Z@P_SI%M=IzM5O=MjRCKw zQIJv5UI&Hn0EmbP$OwqYD2OQkJ3RzMJS1d%IvyDmEdqKASKg4My1#_^s0^|_zlr!j zTjz|Hke6k^8>CmWcu05vDZs-Q9o@D+un&X)t^d1O-~IkS&i?0W2Fn0|tRRL3@PD=m zZdYIo0Au2H0KoFv_&yM7B77jUs!8Pn_$18OPV>V1#2Bg2dcSM!xZ>#ddukk!)D~au zl{G}2aWeZ?NPYSxjAEUYqps_)vGn`!1iaN9lHK1np_*QHmpdksnfm*Z-ubWzQU%?K zS>?EV-uo%GDy#0tV`_7i+9g%q6jgKv^KdZwO~kA&N4eT7{t*`!ni7a>;yHv3 zw6!Y;UzM2tO%J)jb4<)|NH1agC{22g8O{WL#)4R_kp2i%eMoW3`PWwYuHiSi-i=z^KLT?JQdmqm1u z49%it4q6yWm+vas3M1MMQ>ElMc)KX>@~gc4n}c`jS79|;25G2I#r#dIgO@WL?NBuJ z(DWBTifQ}i{b>O66?^5fAsyR-;oFw#`RedgniI~XAo)#} zu|D4Yk~zn4_REp*an7$&=hFlG%YmUstyWk+nM&MGQ{1IhRy_(|@WjdX>IOvv3T@s& zYvq%}u%Y2eiM#Ihn#;5(8#r{!E``S8o=YI0WmE!_vCsceS#zL|1ux?Psm}~9 zy_Nk#K|Y~BTf}=>^n0EWWX7tg+FHaq=qu4Ia=a|J59J;RV^932+jqD_BQs&PN!C9u z3JHm8`wl;S9B}jOdm9#~pZ%WaFM#`G{2!&|Lh-`B0f(jKseW6X6q!oMNjMrqIhBFC z1`)QqZ=Dxv;Fi;s!uiF*4%M6-NWr@!E*5S$)TT?e$Lts{fJ-~pHDju_L|@2pX@5e( z(hDG4qW%TYA6N5!Z#n2uuXW0~Q>pnFPSiIRKIYRu=8Gr!o2SxB9Nwv?J?lIcchdOT z8E!SBkCx#aLn%DhZrm!X%Q-_=G3)sPu#=&T4}YT2x~R74-%xiVJioxw^j`YO-nqX- zvsTUHjHfS(F)91apLkVf7!ARk(h0qW;T+pEX?prMyZnX#%7(^>VW^cE+$3Ut7EOK4 z@lp{Q_V0HSN# z7k6uv?c0>v^>X0qcf5~_(Q1h;iZRCfjP9EGJE_xDHOvc^zS_eA7of-ILSz5-R(;#9 z&kic~Q*3lcsg*eI+b<>+`?lGQ%x=OTROM-FbnHfkHB6_}6|kgwePr(OG&ZLe50Dn|tt5rTe8~c?5A1UH#LGTR2`=w?w-z9H)KsXV8?^V8Qyw zIk7^nd<5dQ`mH!|F8I+Ub+ks_Fr4oK1 z2_LQIn(rrF%jv!V?442H$KUvBRXJ3RHml65U@n{IJ{th7@me~0aXcN8*QJ^Uw@pCq z3#e<_=8v2v0uHLB39EKdJTCwuZw9u>-Q)wcg~iw!ei)>rth#6;_%D8eU538L&4*2O{7sqW2C2$sASF{zD3F`aG>OV< zYO=zvniPNXGlRtEf{@@IO{LoenGFrnyW4pR?V~{tiB1LAgDqu?fJ)ZisiRkl!M%FP z8?$@NHi$CFLrDi8owM(R=< zl(-1six?vv0RYK{M#`YkCg7pt5!p2a_M8dS+x<{%%Sbz*(0%}#SUOB7{Z^?x zt>P`Rd&G>qi^dD8b|Lupx?J-`0g41AGT>@k=&}?TK(zXl67!_^O%`PThwcZb^Qs&# z0fp>(m+W8+ZQm$a(@$wZzS7!Yssv3Qec~YHGZE9xf&-Yx6iO2#b)e>sCxJaK9$G|pf z#wmqQW}^{58P1RaD6~-cSX%C@5>Q8P!_*NMDl`l4P9d-7i)lHIys9n>zN35e7@cj! z@}auZWCwPGOF=4HYwtepzybslWK0@6w7qkOCYS<+ub*vPJ$A9XOWa~+VmlV{feT@e z0;dUb)l5SDfrxg4pIXC@C8(%G-9YlpD{+$KazHj}Y$g^D<}Oa`r;y9baNn?~7O*q* zeZgvW5oi30u5sAr;aHgMzQ| z;SWVY!gT$5ih_=u6 zk93MNtA2Yqy6L{*E*$h`U z;YrziZ&_JY+tl`rHX2LPbc&~g5P2Tuuc*A;MxF9$7Q%8lb4ceV%}U-8-{v_RenR5& zu+rjx#8>zze~$rQUpcFdx5b%Ypt`G~S1syD=|a$G$SDWv;pDQ45XqjDap7}frB`Go z30j9mO!E3!)&O**e_jY9=5Q$X*(_X%d+1MQ;7)PuG_ z*1Z8nk%R?B1iQf=UjRO6m^8r7Auiz1 z>S-dEvh02>R$Of3qkR7S({x?yKiybQn=#eUj>50)hJ%Pj$S(lzxW`S$#{0OZI3~f6 z0?6r^p_xgaN@KWq;lw*k4R**-Aey|$W`5nF@2=UuH2D=#PQA|d;2fKlu?WHhA4V?@ zG5B6g>nAzLcktmP-F&u^k%MeKA&%@@3r1F7HxTzBhFbOA!KWLI`teFXw!8OlXn1mC z96t}Yns5|*y<(LO5)a4#td145*z*eHqVsGnS0EqQT7l_pyw}NLZ zW}k>>P7`S?dLkM%zWn{mKzmExF`*GPV#d;xKs3utV5Sp+R3GYtKyB{z0$68rh$3>p z@)W~3t#3CZ)^%pzY3S0F@B$C=a_J|2k^s z(cBwPFjA&fKIscw2@VDmS3(!O_mS9Vo2xxX5 zzc@=0-9yZ_&;MR;hk&z4iHtLgBhROJTwxb}>8*3(mT&O@QQW&^>y)I zmL&+hqa1LznR#__t|mlJPtp|!xWt%xiAAO6FgeT;os+DYQn;)D6T`|dkP=$V6 z8Dzb>-ZO?p;f+3a>YC{oCvcR`O5d>EY{W%`4QK7PuN$2OxYWBSW)G|G$6pmoV|qjaNjjXA;u&a=9f=qSXZ2 z??sE1erJ47N2LgSJMHnmwskZJJ3lx_YRL zlg1GXEcK0ZVr}w8F`C#F`8Lyzf_=90;a30BA7id34zH#eAq>p1bau>p6~^Q_HP~QO zuu8Pj?OQ+8Zbyf1S{~=C=_~N|M4I$hiZAmliB2&TOtZrVwhd;UZmgX?wNh^b-T`i} z^U(f7ZmO7o>oQB?nTGD7Nuu;~TJoJk{8i+C8dFb2mhVGgO zF~*IDdB`Y~jfbTd$VvmG0&J|oZT_F>vk4){c41ve)w6?(#mMUW!7P7@Q2?UuKO0M_j^)@j6dseIC8#fT*_EGN=vy{UY_ZzzNfIVr;v08V>@yjU%16hedy z9%&TrtgDkP!(0Mk80=1_SU+(4?OcU1;Ml+%QZ@wZu5pbdS7P^=qYA~vkR;lTr*%y> zI}fC|a2CQ?rTc}zq_BW*N!mH?Ajamt3A8ARdnDEnM#FS>C$gTPbbzjYv`w1TP&pTx z)`-la%lYcmHkZh-z6NNp3XS3bOHy}Vjj7t(rdZ6+3(Z`_Cvm%hNmOuv?eF99NqP}~MA?9I zR_hkCgoAg2+k84|FWi`V`|{`W5iv2H?e0}d(j{UmtYUIwB;lH$uHfenYPrDlBcUO& zj2FOPxJa)W?{C^|!6aQIUt{X*x>M|FK?viX9K1SA* zf7OhhW2JIxLr21NpU37V>oZTKsq!*WolAX5{Q4Hn>< zP9D1ivDrbjVtkMFv602IwSvr^*8K;Qq*J9uWA2iY{vYzak(^hqflvjb94 zg;4q4>eYzCof{Z(E?vR^R#NNMObrQ?1Q~l771Jg1i;U$=Fm0~sM3+L!0zTRoz;UPc z#1pITdjkRO^byB2RZ%6bY(`H5W6hmPSf|mp=eO`Ex6v=lcr>=TD4beiKKq@&kFe~w zsn*hT2TVnV=K^Xu73z&S93sdD7$1ASz|>BaZqk+pSLRN0fp!V`3M;T}?g+p5;da(P zBOFCEN!2oC9v`Ok)=b*$$xNF#ei5YP(Y?*HMVIx1^7^aqLX{`%j?Rx)|1e`+@Lj4X z<$s*}F+RK8=7~cuu$GJ}7nRy=gTjCQ91+*B>r%tkkxcYmjTpusWyI_*oRtv&Ru4J` zS~B9z1n*~&8WLwk;6#|`1i<;-IEEMvMgZasLuNL>aQ-4UwadE2-IKldQcd6-^qpboBx0D}Obg+b8WkD@UP^fZnoqq}1QXGPMI)(MsWptaX6H+GNi34@ z0w05Vl^BM1&gNVP;(#|5?|q7Qnug0Qi@DkCuJf?>1PP_s3OFYUfTSs)w!Vfy6=Cawt)7Mw2n@4HuwBUO|zmAu_r=o)fu`k�I6>_)BLd*2-yo&& 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�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 M@%5&;2lYSy*#|QmY5)KL diff --git a/assets/avatars/lima.jpg b/assets/avatars/lima.jpg deleted file mode 100644 index a41ee8d4a6209341e199bc4c06591012b694a373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126166 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%0D_Aao$ORCM<~R?y4(CGjURI4?^##^rt`qKm)Z8 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 diff --git a/assets/avatars/young-z.jpeg b/assets/avatars/young-z.jpeg deleted file mode 100644 index bf11e49b82e33b343aaf4ac793d9220582805edc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93972 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 M0MgkOino>j14In)mjD0& diff --git a/assets/avatars/z.jpeg b/assets/avatars/z.jpeg deleted file mode 100644 index ea4b0eb6af19819c1ffe9a656e715e57db601266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112258 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

9*w_m_yS6Za1AN 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%0DQoQsA~R#xr6(k?&J98XSL!e3t=aK%FxwxD@M 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 sQ`YOvi_@% diff --git a/assets/scripts/application/theme-switcher.js b/assets/scripts/application/theme-switcher.js new file mode 100644 index 0000000..71979f3 --- /dev/null +++ b/assets/scripts/application/theme-switcher.js @@ -0,0 +1,32 @@ +/* Function for setting the theme */ +(function(){ + const root = document.documentElement; + const storageKey = "theme"; + const themes = ["light", "dark", "dark-academia"]; + const labels = { + "light": "Light", + "dark": "Dark", + "dark-academia": "Academia" + }; + const saved = localStorage.getItem(storageKey); + if (themes.includes(saved)) { + root.setAttribute("data-theme", saved); + } + const btn = document.getElementById("theme-toggle"); + if (!btn) return; + const updateButton = () => { + const current = root.getAttribute("data-theme"); + const label = labels[current] || "Auto"; + btn.textContent = `Theme: ${label}`; + btn.setAttribute("aria-label", `Current theme: ${label}. Switch theme.`); + }; + updateButton(); + btn.addEventListener("click", () => { + const current = root.getAttribute("data-theme"); + const index = themes.indexOf(current); + const target = themes[index === -1 ? 1 : (index + 1) % themes.length]; + root.setAttribute("data-theme", target); + localStorage.setItem(storageKey, target); + updateButton(); + }); +})(); diff --git a/assets/scripts/ash-below-lake.js b/assets/scripts/ash-below-lake.js index 5aa74cd..cd3483c 100644 --- a/assets/scripts/ash-below-lake.js +++ b/assets/scripts/ash-below-lake.js @@ -1,1008 +1,7 @@ (function () { - const slot = "ash-below-the-lake"; - const fallbackKey = "play:rpg:ash-below-the-lake"; - const tile = 32; - const cols = 30; - const rows = 15; - const worldH = tile * rows; - const uiY = worldH; - const actions = ["Confront", "Listen", "Forget"]; - const areas = { - harbor: { - name: "Harbor Row", - act: "Act 1", - track: "harbor", - floor: ["#222c36", "#263541", "#304650"], - accent: "#e0a451", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 15], [29, 0, 1, 15], [3, 3, 5, 2], [12, 2, 4, 3], [20, 3, 6, 2], [5, 11, 7, 1], [17, 10, 5, 1]]), - exits: [{ x: 28, y: 7, to: "red", px: 1, py: 7 }], - props: [{ kind: "lake", x: 1, y: 11, w: 28, h: 3 }, { kind: "stall", x: 9, y: 5 }, { kind: "flowers", x: 23, y: 9 }], - start: { x: 3, y: 8 } - }, - red: { - name: "The Red Streets", - act: "Act 1", - track: "red", - floor: ["#2f1f2c", "#442237", "#5b283f"], - accent: "#db4f62", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 6], [0, 9, 1, 6], [29, 0, 1, 15], [4, 3, 4, 3], [12, 4, 3, 8], [20, 2, 5, 3], [22, 9, 4, 2]]), - exits: [{ x: 0, y: 7, to: "harbor", px: 28, py: 7 }, { x: 28, y: 12, to: "roots", px: 1, py: 12 }], - props: [{ kind: "sign", x: 9, y: 3 }, { kind: "stage", x: 17, y: 6 }, { kind: "poster", x: 26, y: 4 }], - start: { x: 2, y: 7 } - }, - roots: { - name: "The Roots", - act: "Act 2", - track: "roots", - floor: ["#182725", "#203832", "#2e493e"], - accent: "#66c7a2", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 11], [0, 13, 1, 2], [29, 0, 1, 15], [5, 2, 2, 10], [11, 5, 7, 1], [15, 8, 2, 5], [22, 3, 3, 9]]), - exits: [{ x: 0, y: 12, to: "red", px: 28, py: 12 }, { x: 28, y: 4, to: "chapel", px: 1, py: 4 }], - props: [{ kind: "archive", x: 8, y: 8 }, { kind: "root", x: 18, y: 3 }, { kind: "home", x: 25, y: 11 }], - start: { x: 2, y: 12 } - }, - chapel: { - name: "The Drowned Chapel", - act: "Act 3", - track: "chapel", - floor: ["#172232", "#1c3043", "#263b4f"], - accent: "#8bd3ff", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 3], [0, 6, 1, 9], [29, 0, 1, 15], [6, 4, 3, 7], [13, 2, 4, 3], [19, 4, 3, 7], [10, 12, 10, 1]]), - exits: [{ x: 0, y: 4, to: "roots", px: 28, py: 4 }, { x: 28, y: 10, to: "shore", px: 1, py: 10 }], - props: [{ kind: "pew", x: 10, y: 7 }, { kind: "pew", x: 16, y: 7 }, { kind: "glass", x: 14, y: 5 }], - start: { x: 2, y: 4 } - }, - shore: { - name: "The Hollow Shore", - act: "Final Act", - track: "shore", - floor: ["#111827", "#1b2440", "#211c33"], - accent: "#f1f5f9", - walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 9], [0, 12, 1, 3], [29, 0, 1, 15], [7, 3, 3, 2], [16, 2, 2, 10], [22, 7, 4, 1]]), - exits: [{ x: 0, y: 10, to: "chapel", px: 28, py: 10 }], - props: [{ kind: "lake", x: 2, y: 10, w: 27, h: 4 }, { kind: "flowers", x: 5, y: 6 }, { kind: "rift", x: 24, y: 4 }], - start: { x: 2, y: 10 } - } - }; - const characters = { - ilyas: { name: "Ilyas", colors: ["#3d2b2f", "#e3b27f", "#334b7a", "#f2f0e6"] }, - mira: { name: "Mira", colors: ["#21191e", "#d98d70", "#b73550", "#f6d36f"] }, - ferryman: { name: "Ferryman", colors: ["#151719", "#dad9cd", "#56616d", "#0b0d10"] }, - cinder: { name: "Brother Cinder", colors: ["#1d1512", "#d59667", "#6b2e2f", "#f4c35c"] }, - sibling: { name: "Your Sibling", colors: ["#1d2531", "#bec8d8", "#52616f", "#dbeafe"] }, - vendor: { name: "Maribel", colors: ["#2a2023", "#d5a06f", "#3d7b65", "#ffd166"] }, - performer: { name: "Velvet Noon", colors: ["#2a1724", "#f2bd93", "#8f244d", "#ffe6a8"] }, - archivist: { name: "Memory Archivist", colors: ["#151f1d", "#b9ddc9", "#386b5c", "#dff7eb"] } - }; - const npcs = { - mira: { character: "mira", area: "harbor", x: 10, y: 8 }, - ferryman: { character: "ferryman", area: "harbor", x: 25, y: 10 }, - vendor: { character: "vendor", area: "harbor", x: 9, y: 6 }, - performer: { character: "performer", area: "red", x: 17, y: 8 }, - archivist: { character: "archivist", area: "roots", x: 9, y: 9 }, - cinder: { character: "cinder", area: "chapel", x: 15, y: 6 }, - sibling: { character: "sibling", area: "shore", x: 24, y: 8 } - }; - const items = { - letter: { name: "Wet Letter", area: "harbor", x: 5, y: 10 }, - bell: { name: "Brass Bell", area: "red", x: 27, y: 5 }, - photo: { name: "Blurred Photo", area: "roots", x: 13, y: 9 }, - cinderKey: { name: "Chapel Key", area: "chapel", x: 22, y: 12 } - }; - const encounters = { - first_erased: { - title: "First Erased Person", - area: "red", - x: 6, - y: 9, - hp: 18, - text: "A person-shaped absence blocks the alley. Their outline mouths a name no one else can hear.", - bullets: "drift" - }, - root_husk: { - title: "Root Husk", - area: "roots", - x: 21, - y: 9, - hp: 24, - text: "A house nobody remembers learned to walk. It wants its rooms back.", - bullets: "rain" - }, - chapel_memory: { - title: "Choir of Ash", - area: "chapel", - x: 11, - y: 10, - hp: 30, - text: "Voices rise from the drowned pews. Every note sounds like an apology.", - bullets: "spiral" - } - }; - - window.AshBelowLakeRpg = function init(root) { - const canvas = root.querySelector("[data-rpg-canvas]"); - const ctx = canvas.getContext("2d"); - const els = { - speaker: root.querySelector("[data-rpg-speaker]"), - line: root.querySelector("[data-rpg-line]"), - area: root.querySelector("[data-rpg-room]"), - route: root.querySelector("[data-rpg-route]"), - resolve: root.querySelector("[data-rpg-hearts]"), - journal: root.querySelector("[data-rpg-quests]"), - inventory: root.querySelector("[data-rpg-inventory]"), - status: root.querySelector("[data-rpg-status]") - }; - const ui = buildUi(root); - const audio = makeAudio(); - let state = freshState(); - let keys = new Set(); - let last = performance.now(); - let saveBusy = false; - let backendAvailable = true; - - bind(); - loadLocal(); - requestAnimationFrame(frame); - - function freshState() { - return { - started: false, - mode: "title", - area: "harbor", - player: { x: 3, y: 8, facing: "down", step: 0 }, - route: "Undecided", - resolve: 20, - toldName: null, - flags: {}, - inventory: [], - memories: [ - { id: "letter", text: "Your sibling's letter says: Don't let the lake remember your name.", stable: true }, - { id: "town", text: "Morrow's End smiles like a town in a postcard someone tried to burn.", stable: true } - ], - forgets: 0, - listens: 0, - confronts: 0, - companion: false, - battle: null, - ending: null, - dialogue: { speaker: "The Letter", line: "Don't let the lake remember your name." } - }; - } - - function buildUi(rootEl) { - const panel = rootEl.querySelector(".rpg-panel"); - const actionsWrap = document.createElement("div"); - actionsWrap.className = "ash-choicebar"; - actionsWrap.innerHTML = actions.map((name) => ``).join(""); - panel.insertBefore(actionsWrap, panel.querySelector(".rpg-list")); - const meter = document.createElement("div"); - meter.className = "ash-memory-meter"; - meter.innerHTML = "Lake Memory"; - panel.insertBefore(meter, actionsWrap); - const nameBox = document.createElement("form"); - nameBox.className = "ash-name-form"; - nameBox.innerHTML = ""; - panel.insertBefore(nameBox, meter); - return { - actionButtons: Array.from(actionsWrap.querySelectorAll("button")), - memoryFill: meter.querySelector("[data-ash-memory-fill]"), - nameForm: nameBox, - nameInput: nameBox.querySelector("[data-ash-name]") - }; - } - - function bind() { - root.querySelector("[data-rpg-start]").addEventListener("click", start); - root.querySelector("[data-rpg-save]").addEventListener("click", save); - root.querySelector("[data-rpg-load]").addEventListener("click", () => load(true)); - root.querySelector("[data-rpg-reset]").addEventListener("click", newGame); - root.querySelector("[data-rpg-sound]").addEventListener("click", () => { - audio.start(); - audio.setTrack(state.started ? areas[state.area].track : "title"); - els.status.textContent = audio.supported() ? "Sound on." : "This browser does not expose Web Audio."; - }); - root.querySelector("[data-rpg-act]").addEventListener("click", act); - root.querySelectorAll("[data-rpg-move]").forEach((button) => { - button.addEventListener("click", () => move(button.dataset.rpgMove)); - }); - ui.actionButtons.forEach((button) => button.addEventListener("click", () => chooseBattle(button.dataset.ashAction))); - ui.nameForm.addEventListener("submit", (event) => { - event.preventDefault(); - tellName(ui.nameInput.value.trim() || "Ilyas"); - }); - window.addEventListener("keydown", (event) => { - if (!root.isConnected || ["INPUT", "TEXTAREA"].includes(event.target.tagName)) return; - if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "w", "a", "s", "d", " ", "Enter", "Escape"].includes(event.key)) event.preventDefault(); - keys.add(event.key.toLowerCase()); - audio.start(); - if (event.key === " " || event.key === "Enter") act(); - if (event.key === "Escape" && state.mode === "battle") leaveBattle("You step back from the memory and let it breathe."); - }); - window.addEventListener("keyup", (event) => keys.delete(event.key.toLowerCase())); - } - - function start() { - audio.start(); - state.started = true; - state.mode = "world"; - state.dialogue = { speaker: "Ilyas", line: "The letter is damp, but the ink has not run. Morrow's End waits beyond the harbor lamps." }; - audio.setTrack(areas[state.area].track); - save(); - } - - async function newGame() { - state = freshState(); - localStorage.removeItem(fallbackKey); - if (backendAvailable) { - try { - const response = await fetch(`/api/play/rpg/save/${slot}`, { method: "DELETE" }); - if (response.status === 404) els.status.textContent = "New game started locally. There was no backend save to clear."; - } catch (_error) { - backendAvailable = false; - } - } - audio.setTrack("title"); - if (!els.status.textContent.includes("backend save to clear")) { - els.status.textContent = backendAvailable ? "New game started and local save cleared." : "New game started locally. Backend save endpoint is not reachable."; - } - renderHud(); - } - - async function save() { - localStorage.setItem(fallbackKey, JSON.stringify(state)); - if (saveBusy || !backendAvailable) { - els.status.textContent = backendAvailable ? "Save already running." : "Saved locally. Backend save endpoint is not available."; - return; - } - saveBusy = true; - try { - const response = await fetch(`/api/play/rpg/save/${slot}`, { - method: "PUT", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ payload: state }) - }); - if (response.status === 404) { - backendAvailable = false; - els.status.textContent = "Saved locally. Backend save endpoint is not deployed yet."; - } else { - els.status.textContent = response.ok ? "Saved to backend." : "Saved locally. Backend rejected the save."; - } - } catch (_error) { - backendAvailable = false; - els.status.textContent = "Saved locally. Backend save API was not reachable."; - } finally { - saveBusy = false; - } - } - - async function load(allowBackend) { - if (loadLocal("Loaded local save.")) return; - if (!allowBackend || !backendAvailable) { - els.status.textContent = backendAvailable ? "No local save found." : "No local save found. Backend save endpoint is not available."; - return; - } - try { - const response = await fetch(`/api/play/rpg/save/${slot}`); - if (response.status === 404) { - els.status.textContent = "No save file exists yet. Press Save after starting a game to create one."; - return; - } - if (!response.ok) { - els.status.textContent = "No local save found. Backend did not return a save."; - return; - } - const data = await response.json(); - state = normalize(data.payload); - localStorage.setItem(fallbackKey, JSON.stringify(state)); - els.status.textContent = "Loaded from backend."; - audio.setTrack(state.started ? areas[state.area].track : "title"); - } catch (_error) { - backendAvailable = false; - els.status.textContent = "No local save found. Backend save API was not reachable."; - } - } - - function loadLocal(message) { - const local = localStorage.getItem(fallbackKey); - if (local) { - state = normalize(JSON.parse(local)); - if (message) els.status.textContent = message; - audio.setTrack(state.started ? areas[state.area].track : "title"); - return true; - } - audio.setTrack(state.started ? areas[state.area].track : "title"); - return false; - } - - function normalize(candidate) { - const base = freshState(); - const next = Object.assign(base, candidate || {}); - next.player = Object.assign(base.player, (candidate && candidate.player) || {}); - next.flags = Object.assign({}, (candidate && candidate.flags) || {}); - next.inventory = Array.isArray(next.inventory) ? next.inventory.filter((id) => items[id]) : []; - next.memories = Array.isArray(next.memories) ? next.memories : base.memories; - next.area = areas[next.area] ? next.area : "harbor"; - next.dialogue = Object.assign(base.dialogue, (candidate && candidate.dialogue) || {}); - return next; - } - - function frame(now) { - const dt = Math.min(48, now - last); - last = now; - update(dt); - draw(now); - renderHud(); - requestAnimationFrame(frame); - } - - function update(dt) { - if (state.mode !== "world") return; - const dir = keyDirection(); - if (!dir) return; - state.player.step += dt; - if (state.player.step < 115) return; - state.player.step = 0; - move(dir); - } - - function keyDirection() { - if (keys.has("arrowup") || keys.has("w")) return "up"; - if (keys.has("arrowdown") || keys.has("s")) return "down"; - if (keys.has("arrowleft") || keys.has("a")) return "left"; - if (keys.has("arrowright") || keys.has("d")) return "right"; - return null; - } - - function move(direction) { - if (state.mode !== "world" || !state.started || state.ending) return; - const delta = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[direction]; - state.player.facing = direction; - const nx = state.player.x + delta[0]; - const ny = state.player.y + delta[1]; - const area = areas[state.area]; - const exit = area.exits.find((item) => item.x === nx && item.y === ny); - if (exit && canEnter(exit.to)) { - state.area = exit.to; - state.player.x = exit.px; - state.player.y = exit.py; - audio.setTrack(areas[state.area].track); - remember(`Entered ${areas[state.area].name}.`, true); - say("Morrow's End", areaEnterLine(state.area)); - save(); - return; - } - if (area.walls.has(`${nx},${ny}`) || npcAt(nx, ny) || nx < 0 || nx >= cols || ny < 0 || ny >= rows) return; - state.player.x = nx; - state.player.y = ny; - const found = itemAt(nx, ny); - if (found) take(found); - const encounter = encounterAt(nx, ny); - if (encounter && !state.flags[`encounter_${encounter}`]) startBattle(encounter); - } - - function canEnter(to) { - if (to === "chapel" && !state.flags.rootsTruth && state.forgets < 2) { - say("Ferryman", "The chapel is under the lake. It only opens for truth, or for forgetting."); - return false; - } - if (to === "shore" && !state.flags.cinderMet) { - say("Brother Cinder", "The shore is not a place. It is a decision. Hear me first."); - return false; - } - return true; - } - - function act() { - audio.start(); - if (!state.started) return start(); - if (state.mode === "battle") return chooseBattle("listen"); - if (state.ending) return; - const front = inFront(); - const npc = npcAt(front.x, front.y) || npcAt(state.player.x, state.player.y); - if (npc) return talk(npc); - const found = itemAt(state.player.x, state.player.y); - if (found) return take(found); - const special = propAt(front.x, front.y) || propAt(state.player.x, state.player.y); - if (special) return inspectProp(special); - if (state.area === "shore" && state.player.x > 22 && state.player.y > 8) return finalChoice(); - say("Ilyas", "The town holds its breath. Somewhere, water knocks against stone."); - } - - function inFront() { - const d = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[state.player.facing] || [0, 1]; - return { x: state.player.x + d[0], y: state.player.y + d[1] }; - } - - function npcAt(x, y) { - return Object.keys(npcs).find((id) => { - const npc = npcs[id]; - return npc.area === state.area && npc.x === x && npc.y === y && !forgottenNpc(id); - }); - } - - function itemAt(x, y) { - return Object.keys(items).find((id) => { - const item = items[id]; - return item.area === state.area && item.x === x && item.y === y && !state.inventory.includes(id); - }); - } - - function encounterAt(x, y) { - return Object.keys(encounters).find((id) => { - const e = encounters[id]; - return e.area === state.area && e.x === x && e.y === y; - }); - } - - function propAt(x, y) { - return areas[state.area].props.find((prop) => x >= prop.x && x < prop.x + (prop.w || 1) && y >= prop.y && y < prop.y + (prop.h || 1)); - } - - function take(id) { - state.inventory.push(id); - audio.sfx("item"); - if (id === "letter") remember("The wet letter refuses to dry.", true); - if (id === "photo") remember("A photo shows you beside someone whose face keeps changing.", true); - if (id === "cinderKey") state.flags.chapelKey = true; - say("Found", `${items[id].name} added to your bag.`); - save(); - } - - function talk(id) { - audio.sfx("talk"); - if (id === "mira") { - state.companion = true; - state.flags.metMira = true; - remember("Mira remembers what other people lose.", true); - say("Mira", state.forgets > 1 ? "You keep looking through people like windows. Don't do that to me, okay?" : "You look lost. Good. Everyone interesting does."); - } - if (id === "ferryman") { - remember("The Ferryman knows where you have been before you arrive.", state.forgets < 2); - say("Ferryman", state.toldName ? `${state.toldName} is a fine name to keep away from water.` : "Names are hooks. I would not throw yours into the lake."); - } - if (id === "vendor") say("Maribel", "Today's special: one jar of fog, two apologies, and a fish that predicts Thursday badly."); - if (id === "performer") { - remember("A performer advertised a show called YOUR MISSING YEARS.", state.forgets < 3); - say("Velvet Noon", "Clap if you remember me. Clap twice if you are pretending."); - } - if (id === "archivist") { - state.flags.rootsTruth = true; - remember("The lake feeds on suffering, but calls it mercy.", true); - say("Memory Archivist", "The archives are homes with the people removed. The lake calls that tidying."); - } - if (id === "cinder") { - state.flags.cinderMet = true; - remember("Brother Cinder believes forgetting pain is mercy.", true); - say("Brother Cinder", "I have seen grief make animals of gentle people. The lake did not begin as a hunger. It began as a kindness."); - } - if (id === "sibling") { - remember("Your sibling entered the lake willingly.", true); - say("Your Sibling", "I gave it my name because I was tired of carrying it. Please don't give it yours."); - finalChoice(); - } - save(); - } - - function inspectProp(prop) { - audio.sfx("talk"); - if (prop.kind === "lake") say("Black Lake", state.toldName ? `It almost says ${state.toldName}. Almost.` : "It reflects nothing. Not clouds. Not you."); - if (prop.kind === "stall") say("Market Sign", "Fresh eels. Older than regret. Discount if they remember your birthday."); - if (prop.kind === "flowers") say("Glowing Flowers", "They lean toward the water like they are listening."); - if (prop.kind === "sign") say("Advertisement", "TONIGHT: The Amazing Vanishing Audience. Refunds unavailable after erasure."); - if (prop.kind === "stage") say("Stage", "The curtain twitches though there is no wind indoors."); - if (prop.kind === "poster") say("Poster", "A smiling face has been scratched out. The scratch is smiling too."); - if (prop.kind === "archive") { - state.flags.rootsTruth = true; - remember("Some memory shelves are empty because nobody dared open them.", true); - say("Memory Archive", "A drawer opens by itself. Inside: houses, birthdays, funeral songs, a ticket stub from a train that never arrived."); - } - if (prop.kind === "root") say("Roots", "They pulse slowly under the town, carrying lake-water like blood."); - if (prop.kind === "home") say("Abandoned Home", "Every room is furnished except for the idea of a family."); - if (prop.kind === "pew") say("Drowned Pew", "The wood is wet. The prayer book is dry."); - if (prop.kind === "glass") say("Sunken Window", "Saints in blue glass lower their eyes toward the lake."); - if (prop.kind === "rift") finalChoice(); - save(); - } - - function tellName(name) { - state.toldName = name.slice(0, 18); - remember(`You told Morrow's End your name is ${state.toldName}.`, false); - say("Morrow's End", `The town repeats ${state.toldName} very softly. Too softly.`); - state.route = state.route === "Undecided" ? "Named" : state.route; - save(); - } - - function startBattle(id) { - const e = encounters[id]; - state.mode = "battle"; - state.battle = { - id, - hp: e.hp, - maxHp: e.hp, - soul: { x: 480, y: 382 }, - bullets: [], - t: 0, - grace: 0, - turn: 1, - message: e.text - }; - audio.setTrack("battle"); - audio.sfx("battle"); - say(e.title, e.text); - save(); - } - - function chooseBattle(action) { - if (state.mode !== "battle" || !state.battle) return; - const battle = state.battle; - if (action === "confront") { - battle.hp -= 9; - state.confronts += 1; - state.route = "Confronting"; - battle.message = "You refuse to move. The memory recoils from your shape."; - audio.sfx("hit"); - } - if (action === "listen") { - battle.hp -= 7; - state.listens += 1; - state.route = state.forgets === 0 ? "Carry" : "Listening"; - battle.message = "You listen until the ache becomes words. The attack softens."; - remember(`Listened to ${encounters[battle.id].title}.`, true); - audio.sfx("listen"); - } - if (action === "forget") { - battle.hp -= 18; - state.forgets += 1; - state.route = state.forgets >= 3 ? "Forgotten" : "Silence"; - battle.message = "You let the lake take the hard part. Something else goes with it."; - rewriteMemory(); - audio.sfx("forget"); - } - battle.turn += 1; - if (battle.hp <= 0) resolveBattle(action); - else say(encounters[battle.id].title, battle.message); - save(); - } - - function resolveBattle(action) { - const id = state.battle.id; - state.flags[`encounter_${id}`] = action; - if (id === "root_husk") state.flags.rootsTruth = true; - if (action === "forget" && state.forgets >= 3) return end("forgotten"); - const line = action === "listen" - ? "The memory steps aside, still hurting, but no longer alone." - : action === "forget" - ? "The memory becomes easy to pass. Behind you, a street sign loses a letter." - : "The memory breaks apart like ash under rain."; - leaveBattle(line); - } - - function leaveBattle(line) { - state.mode = "world"; - state.battle = null; - audio.setTrack(areas[state.area].track); - say("Afterimage", line); - save(); - } - - function finalChoice() { - if (state.forgets >= 3) return end("forgotten"); - if (state.forgets === 0 && state.listens >= 3 && state.flags.metMira) return end("rest"); - if (state.route === "Silence" || state.forgets > state.listens) return end("silence"); - end("carry"); - } - - function end(kind) { - state.ending = kind; - state.mode = "ending"; - state.route = kind === "rest" ? "True: Rest" : kind === "carry" ? "Carry" : kind === "silence" ? "Silence" : "Forgotten"; - audio.setTrack(kind === "forgotten" ? "void" : "ending"); - say("Ending", endingLine(kind)); - remember(endingLine(kind), kind !== "forgotten"); - save(); - } - - function endingLine(kind) { - if (kind === "silence") return "Silence: you join the lake. Morrow's End becomes peaceful, clean, and almost empty."; - if (kind === "carry") return "Carry: the lake breaks. Everyone remembers. The town survives with tears in every lit window."; - if (kind === "forgotten") return "Forgotten: the story continues politely around the space where Ilyas used to be."; - return "Rest: the lake is forgiven, not destroyed. Mira laughs once, real and afraid, as the shore finally reflects the sky."; - } - - function rewriteMemory() { - const mutable = state.memories.find((memory) => !memory.stable && !memory.erased) || state.memories.find((memory) => !memory.erased); - if (mutable) { - mutable.text = state.forgets > 2 ? "There was someone here. There was no one here. Both feel true." : mutable.text.replace(/[aeiou]/gi, "_"); - mutable.erased = state.forgets > 2; - } - if (state.forgets === 2) state.flags.vendorForgotten = true; - if (state.forgets >= 3) state.flags.performerForgotten = true; - } - - function forgottenNpc(id) { - return (id === "vendor" && state.flags.vendorForgotten) || (id === "performer" && state.flags.performerForgotten); - } - - function remember(text, stable) { - if (!state.memories.some((memory) => memory.text === text)) state.memories.push({ id: `m${Date.now()}`, text, stable: Boolean(stable) }); - if (state.memories.length > 8) state.memories.splice(2, 1); - } - - function say(speaker, line) { - state.dialogue = { speaker, line }; - } - - function areaEnterLine(area) { - if (area === "red") return "The Red Streets glow warmly, but the laughter arrives half a second late."; - if (area === "roots") return "The Roots smell like wet stone and bedrooms left untouched for years."; - if (area === "chapel") return "The Drowned Chapel rings with a bell under water."; - if (area === "shore") return "The Hollow Shore bends at the edges, as if the world has been folded too many times."; - return "Harbor Row keeps its lamps low and its names lower."; - } - - function draw(now) { - ctx.imageSmoothingEnabled = false; - if (!state.started || state.mode === "title") drawTitle(now); - else drawWorld(now); - if (state.mode === "battle") drawBattle(now); - if (state.mode === "ending") drawEnding(now); - drawVignette(now); - } - - function drawTitle(now) { - const g = ctx.createLinearGradient(0, 0, 0, canvas.height); - g.addColorStop(0, "#05070c"); - g.addColorStop(0.55, "#101b28"); - g.addColorStop(1, "#020306"); - ctx.fillStyle = g; - ctx.fillRect(0, 0, canvas.width, canvas.height); - drawLake(0, 345, 960, 195, now, 0.4); - ctx.fillStyle = "#f8efe0"; - ctx.font = "700 50px Georgia, serif"; - ctx.textAlign = "center"; - ctx.fillText("Ash Below the Lake", 480, 142); - ctx.font = "18px Georgia, serif"; - ctx.fillStyle = "#b9c6d4"; - ctx.fillText("A quiet town. A black lake. A name you should not give away.", 480, 178); - ctx.fillStyle = "#e0a451"; - ctx.font = "700 18px ui-monospace, monospace"; - ctx.fillText("Press Start or Space", 480, 246); - drawSprite("ilyas", 424, 288, 3, now); - drawSprite("mira", 500, 288, 3, now); - } - - function drawWorld(now) { - const area = areas[state.area]; - for (let y = 0; y < rows; y += 1) { - for (let x = 0; x < cols; x += 1) { - const wall = area.walls.has(`${x},${y}`); - const c = area.floor[(x + y) % area.floor.length]; - ctx.fillStyle = wall ? "#0b0d10" : c; - ctx.fillRect(x * tile, y * tile, tile, tile); - if (!wall) { - ctx.fillStyle = (x + y) % 2 === 0 ? "rgba(255,255,255,0.018)" : "rgba(0,0,0,0.035)"; - ctx.fillRect(x * tile, y * tile + 30, tile, 2); - } - } - } - area.exits.forEach((exit) => drawDoor(exit.x, exit.y, area.accent)); - area.props.forEach((prop) => drawProp(prop, now)); - Object.keys(items).forEach((id) => { - const item = items[id]; - if (item.area === state.area && !state.inventory.includes(id)) drawItem(id, item, now); - }); - Object.keys(encounters).forEach((id) => { - const e = encounters[id]; - if (e.area === state.area && !state.flags[`encounter_${id}`]) drawEncounter(e, now); - }); - Object.keys(npcs).forEach((id) => { - const npc = npcs[id]; - if (npc.area === state.area && !forgottenNpc(id)) drawSprite(npc.character, npc.x * tile, npc.y * tile - 12, 2, now); - }); - drawSprite("ilyas", state.player.x * tile, state.player.y * tile - 12, 2, now); - if (state.companion && state.area !== "chapel") { - const offset = state.player.facing === "left" ? 1 : -1; - drawSprite("mira", (state.player.x + offset) * tile, state.player.y * tile - 12, 2, now + 200); - } - drawTopBar(area); - } - - function drawTopBar(area) { - ctx.fillStyle = "rgba(3, 6, 10, 0.82)"; - ctx.fillRect(0, 0, canvas.width, 42); - ctx.fillStyle = area.accent; - ctx.font = "700 14px ui-monospace, monospace"; - ctx.textAlign = "left"; - ctx.fillText(`${area.act} / ${area.name}`, 18, 26); - ctx.textAlign = "right"; - ctx.fillStyle = "#f8efe0"; - ctx.fillText(`Resolve ${state.resolve} Lake ${state.forgets}`, 940, 26); - } - - function drawBattle(now) { - const battle = state.battle; - battle.t += 1; - updateBullets(battle, now); - ctx.fillStyle = "rgba(4, 5, 8, 0.88)"; - ctx.fillRect(0, 0, canvas.width, canvas.height); - ctx.strokeStyle = "#f8efe0"; - ctx.lineWidth = 3; - ctx.strokeRect(296, 252, 368, 190); - ctx.fillStyle = "#f8efe0"; - ctx.font = "700 24px Georgia, serif"; - ctx.textAlign = "center"; - ctx.fillText(encounters[battle.id].title, 480, 82); - ctx.font = "16px ui-monospace, monospace"; - ctx.fillText(`Memory ${Math.max(0, battle.hp)} / ${battle.maxHp}`, 480, 116); - drawBattleEnemy(battle.id, now); - ctx.fillStyle = "#f35f5f"; - ctx.beginPath(); - ctx.moveTo(battle.soul.x, battle.soul.y - 8); - ctx.bezierCurveTo(battle.soul.x - 13, battle.soul.y - 17, battle.soul.x - 20, battle.soul.y + 4, battle.soul.x, battle.soul.y + 18); - ctx.bezierCurveTo(battle.soul.x + 20, battle.soul.y + 4, battle.soul.x + 13, battle.soul.y - 17, battle.soul.x, battle.soul.y - 8); - ctx.fill(); - ctx.fillStyle = "#dbeafe"; - battle.bullets.forEach((b) => { - ctx.beginPath(); - ctx.arc(b.x, b.y, b.r, 0, Math.PI * 2); - ctx.fill(); - }); - ctx.fillStyle = "#f8efe0"; - ctx.font = "15px Georgia, serif"; - wrapText(battle.message, 148, 480, 660, 22); - } - - function updateBullets(battle) { - const speed = state.forgets > 0 ? 1.15 : 1.55; - const move = keyDirection(); - if (move === "up") battle.soul.y -= 3.3; - if (move === "down") battle.soul.y += 3.3; - if (move === "left") battle.soul.x -= 3.3; - if (move === "right") battle.soul.x += 3.3; - battle.soul.x = clamp(battle.soul.x, 312, 648); - battle.soul.y = clamp(battle.soul.y, 270, 426); - if (battle.t % 26 === 0) { - if (encounters[battle.id].bullets === "rain") battle.bullets.push({ x: 315 + Math.random() * 330, y: 256, vx: 0, vy: speed * 2.4, r: 5 }); - else if (encounters[battle.id].bullets === "spiral") { - const a = battle.t / 14; - battle.bullets.push({ x: 480, y: 346, vx: Math.cos(a) * speed * 2, vy: Math.sin(a) * speed * 2, r: 5 }); - } else battle.bullets.push({ x: Math.random() > 0.5 ? 304 : 656, y: 275 + Math.random() * 130, vx: (Math.random() > 0.5 ? -1 : 1) * speed * 2, vy: Math.sin(battle.t) * 0.6, r: 5 }); - } - battle.bullets.forEach((b) => { - b.x += b.vx; - b.y += b.vy; - if (battle.grace <= 0 && Math.hypot(b.x - battle.soul.x, b.y - battle.soul.y) < b.r + 10) { - state.resolve = Math.max(0, state.resolve - 1); - battle.grace = 24; - audio.sfx("hurt"); - if (state.resolve <= 0) end("forgotten"); - } - }); - battle.grace -= 1; - battle.bullets = battle.bullets.filter((b) => b.x > 280 && b.x < 680 && b.y > 230 && b.y < 455); - } - - function renderHud() { - root.classList.toggle("is-lake-awake", state.forgets > 1); - root.classList.toggle("is-ending", Boolean(state.ending)); - els.speaker.textContent = state.dialogue.speaker; - els.line.textContent = state.dialogue.line; - els.area.textContent = areas[state.area].name; - els.route.textContent = state.route; - els.resolve.textContent = String(state.resolve); - ui.memoryFill.style.width = `${Math.min(100, state.forgets * 34)}%`; - els.inventory.innerHTML = state.inventory.length ? state.inventory.map((id) => `

  • ${items[id].name}
  • `).join("") : "
  • Empty
  • "; - els.journal.innerHTML = state.memories.map((memory) => `
  • ${memory.erased ? "[entry missing]" : memory.text}
  • `).join(""); - ui.actionButtons.forEach((button) => { - button.disabled = state.mode !== "battle"; - }); - } - - function drawProp(prop, now) { - const x = prop.x * tile; - const y = prop.y * tile; - if (prop.kind === "lake") return drawLake(x, y, (prop.w || 1) * tile, (prop.h || 1) * tile, now, 1); - if (prop.kind === "stall") { - ctx.fillStyle = "#7f2d3a"; ctx.fillRect(x, y + 8, 64, 34); - ctx.fillStyle = "#e0a451"; ctx.fillRect(x - 4, y, 72, 12); - } - if (prop.kind === "flowers") for (let i = 0; i < 6; i += 1) { ctx.fillStyle = `rgba(133, 255, 214, ${0.45 + Math.sin(now / 400 + i) * 0.2})`; ctx.fillRect(x + i * 8, y + 12 + (i % 2) * 8, 5, 5); } - if (prop.kind === "sign" || prop.kind === "poster") { ctx.fillStyle = "#12151d"; ctx.fillRect(x, y, 38, 32); ctx.fillStyle = "#f3b15d"; ctx.fillRect(x + 5, y + 6, 28, 3); } - if (prop.kind === "stage") { ctx.fillStyle = "#210d18"; ctx.fillRect(x, y + 10, 96, 46); ctx.fillStyle = "#d64d62"; ctx.fillRect(x + 8, y, 80, 14); } - if (prop.kind === "archive") { ctx.fillStyle = "#4b3a25"; ctx.fillRect(x, y, 58, 52); ctx.fillStyle = "#d8cba8"; for (let i = 0; i < 4; i += 1) ctx.fillRect(x + 8, y + 8 + i * 10, 42, 3); } - if (prop.kind === "root") { ctx.strokeStyle = "#6aa27d"; ctx.lineWidth = 5; ctx.beginPath(); ctx.moveTo(x, y + 28); ctx.bezierCurveTo(x + 26, y - 8, x + 52, y + 48, x + 80, y + 6); ctx.stroke(); } - if (prop.kind === "home") { ctx.fillStyle = "#263332"; ctx.fillRect(x, y, 54, 48); ctx.fillStyle = "#080a0c"; ctx.fillRect(x + 20, y + 18, 14, 30); } - if (prop.kind === "pew") { ctx.fillStyle = "#33251d"; ctx.fillRect(x, y + 10, 76, 20); } - if (prop.kind === "glass") { ctx.fillStyle = "rgba(139,211,255,0.55)"; ctx.fillRect(x, y, 52, 72); ctx.fillStyle = "rgba(255,255,255,0.3)"; ctx.fillRect(x + 23, y, 5, 72); } - if (prop.kind === "rift") { ctx.strokeStyle = `rgba(248,239,224,${0.5 + Math.sin(now / 200) * 0.3})`; ctx.lineWidth = 3; ctx.beginPath(); ctx.moveTo(x + 20, y); ctx.lineTo(x + 5, y + 22); ctx.lineTo(x + 27, y + 40); ctx.lineTo(x + 10, y + 70); ctx.stroke(); } - } - - function drawLake(x, y, w, h, now, alpha) { - const g = ctx.createLinearGradient(0, y, 0, y + h); - g.addColorStop(0, `rgba(7, 18, 30, ${0.7 * alpha})`); - g.addColorStop(1, `rgba(0, 0, 0, ${0.95 * alpha})`); - ctx.fillStyle = g; - ctx.fillRect(x, y, w, h); - ctx.strokeStyle = `rgba(114, 169, 191, ${0.2 * alpha})`; - for (let i = 0; i < 8; i += 1) { - ctx.beginPath(); - const yy = y + 12 + i * 17 + Math.sin(now / 700 + i) * 4; - ctx.moveTo(x, yy); - for (let xx = 0; xx < w; xx += 24) ctx.lineTo(x + xx, yy + Math.sin(now / 350 + xx / 35 + i) * 3); - ctx.stroke(); - } - } - - function drawDoor(x, y, color) { - ctx.fillStyle = color; - ctx.fillRect(x * tile + 7, y * tile + 4, 18, 26); - ctx.fillStyle = "#05070c"; - ctx.fillRect(x * tile + 19, y * tile + 17, 3, 3); - } - - function drawItem(id, item, now) { - const x = item.x * tile; - const y = item.y * tile + Math.sin(now / 220) * 2; - ctx.fillStyle = id === "bell" ? "#d6a24a" : id === "photo" ? "#dbeafe" : id === "cinderKey" ? "#f59e0b" : "#f8efe0"; - ctx.fillRect(x + 10, y + 10, 13, 13); - ctx.fillStyle = "rgba(255,255,255,0.45)"; - ctx.fillRect(x + 13, y + 7, 7, 5); - } - - function drawEncounter(e, now) { - const x = e.x * tile; - const y = e.y * tile; - ctx.fillStyle = `rgba(210, 225, 245, ${0.35 + Math.sin(now / 260) * 0.16})`; - ctx.fillRect(x + 8, y + 4, 16, 27); - ctx.clearRect(x + 12, y + 10, 3, 4); - ctx.clearRect(x + 19, y + 10, 3, 4); - } - - function drawSprite(id, x, y, scale, now) { - const c = characters[id].colors; - const bob = Math.sin(now / 260 + x) * 1.5; - const s = scale; - ctx.fillStyle = "rgba(0,0,0,0.28)"; - ctx.fillRect(x + 5 * s, y + 30 * s, 12 * s, 3 * s); - ctx.fillStyle = c[0]; ctx.fillRect(x + 7 * s, y + bob + 2 * s, 10 * s, 7 * s); - ctx.fillStyle = c[1]; ctx.fillRect(x + 6 * s, y + bob + 8 * s, 12 * s, 10 * s); - ctx.fillStyle = c[2]; ctx.fillRect(x + 5 * s, y + bob + 18 * s, 14 * s, 13 * s); - ctx.fillStyle = c[3]; ctx.fillRect(x + 8 * s, y + bob + 12 * s, 2 * s, 2 * s); ctx.fillRect(x + 14 * s, y + bob + 12 * s, 2 * s, 2 * s); - ctx.fillStyle = c[0]; ctx.fillRect(x + 4 * s, y + bob + 22 * s, 3 * s, 9 * s); ctx.fillRect(x + 17 * s, y + bob + 22 * s, 3 * s, 9 * s); - } - - function drawBattleEnemy(id, now) { - if (id === "first_erased") drawEncounter({ x: 14, y: 4 }, now); - if (id === "root_husk") { ctx.strokeStyle = "#79c89d"; ctx.lineWidth = 8; ctx.beginPath(); ctx.moveTo(440, 180); ctx.bezierCurveTo(470, 120, 510, 230, 540, 160); ctx.stroke(); } - if (id === "chapel_memory") { ctx.fillStyle = "rgba(139,211,255,0.5)"; for (let i = 0; i < 5; i += 1) ctx.fillRect(420 + i * 28, 150 + Math.sin(now / 300 + i) * 8, 16, 54); } - } - - function drawEnding(now) { - ctx.fillStyle = "rgba(0,0,0,0.72)"; - ctx.fillRect(0, 0, canvas.width, canvas.height); - ctx.fillStyle = "#f8efe0"; - ctx.font = "700 42px Georgia, serif"; - ctx.textAlign = "center"; - ctx.fillText(state.route, 480 + Math.sin(now / 120) * (state.ending === "forgotten" ? 3 : 0), 202); - ctx.font = "18px Georgia, serif"; - wrapText(state.dialogue.line, 250, 250, 460, 28); - } - - function drawVignette(now) { - if (state.forgets > 0) { - ctx.fillStyle = `rgba(0,0,0,${0.06 + state.forgets * 0.05 + Math.sin(now / 800) * 0.02})`; - ctx.fillRect(0, 0, canvas.width, canvas.height); - } - const g = ctx.createRadialGradient(480, 245, 120, 480, 245, 560); - g.addColorStop(0, "rgba(0,0,0,0)"); - g.addColorStop(1, "rgba(0,0,0,0.48)"); - ctx.fillStyle = g; - ctx.fillRect(0, 0, canvas.width, canvas.height); - } - - function wrapText(text, x, y, maxWidth, lineHeight) { - ctx.textAlign = "left"; - const words = text.split(" "); - let line = ""; - for (const word of words) { - const test = `${line}${word} `; - if (ctx.measureText(test).width > maxWidth && line) { - ctx.fillText(line, x, y); - line = `${word} `; - y += lineHeight; - } else { - line = test; - } - } - ctx.fillText(line, x, y); - } - }; - - function makeAudio() { - let ctx = null; - let master = null; - let track = "title"; - let timer = null; - const patterns = { - title: [220, 277, 330, 277], - harbor: [262, 330, 392, 330], - red: [196, 233, 294, 349], - roots: [174, 220, 261, 220], - chapel: [147, 196, 247, 294], - shore: [110, 165, 220, 165], - battle: [330, 311, 294, 247], - ending: [262, 392, 440, 523], - void: [110, 98, 82, 73] - }; - function start() { - const Audio = window.AudioContext || window.webkitAudioContext; - if (!Audio) return; - if (ctx) { - if (ctx.state === "suspended") ctx.resume(); - return; - } - ctx = new Audio(); - master = ctx.createGain(); - master.gain.value = 0.14; - master.connect(ctx.destination); - if (ctx.state === "suspended") ctx.resume(); - loop(); - const notes = patterns[track] || patterns.title; - tone(notes[0], 0.22, "triangle", 0.9); - } - function loop() { - clearInterval(timer); - let i = 0; - timer = setInterval(() => { - if (!ctx) return; - const notes = patterns[track] || patterns.title; - tone(notes[i % notes.length], 0.28, track === "battle" ? "sawtooth" : "sine"); - if (track !== "battle") tone(notes[(i + 2) % notes.length] / 2, 0.7, "triangle", 0.45); - i += 1; - }, track === "battle" ? 230 : 520); - } - function tone(freq, dur, type, gainScale) { - const osc = ctx.createOscillator(); - const gain = ctx.createGain(); - osc.type = type; - osc.frequency.value = freq; - gain.gain.setValueAtTime(0, ctx.currentTime); - gain.gain.linearRampToValueAtTime(0.25 * (gainScale || 1), ctx.currentTime + 0.02); - gain.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + dur); - osc.connect(gain); - gain.connect(master); - osc.start(); - osc.stop(ctx.currentTime + dur + 0.03); - } - return { - start, - supported() { - return Boolean(window.AudioContext || window.webkitAudioContext); - }, - setTrack(next) { - track = next; - if (ctx && ctx.state === "suspended") ctx.resume(); - if (ctx) loop(); - if (ctx) tone((patterns[track] || patterns.title)[0], 0.16, track === "battle" ? "sawtooth" : "triangle", 0.65); - }, - sfx(kind) { - if (!ctx) return; - if (ctx.state === "suspended") ctx.resume(); - const map = { item: 660, talk: 440, battle: 130, hit: 180, listen: 523, forget: 96, hurt: 80 }; - tone(map[kind] || 330, kind === "forget" ? 0.8 : 0.18, kind === "forget" ? "sawtooth" : "square", kind === "hurt" ? 1.3 : 0.8); - } - }; - } - - function rects(sources) { - const set = new Set(); - sources.forEach(([x, y, w, h]) => { - for (let yy = y; yy < y + h; yy += 1) for (let xx = x; xx < x + w; xx += 1) set.add(`${xx},${yy}`); - }); - return set; - } - - function clamp(value, min, max) { - return Math.max(min, Math.min(max, value)); - } -})(); + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/pages/ash-below-lake.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/bigger-picture.min.js b/assets/scripts/bigger-picture.min.js index 93bcaa7..6db958b 100755 --- a/assets/scripts/bigger-picture.min.js +++ b/assets/scripts/bigger-picture.min.js @@ -1 +1,7 @@ -var BiggerPicture=function(){function t(){}const n=t=>t;function e(t,n){for(const e in n)t[e]=n[e];return t}function o(t){return t()}function r(t){t.forEach(o)}function i(t){return"function"==typeof t}function c(t,n){return t!=t?n==n:t!==n}function s(n,e,o){n.u.t.push(((n,...e)=>{if(null==n)return t;const o=n.subscribe(...e);return o.unsubscribe?()=>o.unsubscribe():o})(e,o))}function u(n){return n&&i(n.destroy)?n.destroy:t}let l=()=>globalThis.performance.now(),a=t=>requestAnimationFrame(t);const p=new Set;function f(t){p.forEach((n=>{n.c(t)||(p.delete(n),n.f())})),0!==p.size&&a(f)}function d(t){let n;return 0===p.size&&a(f),{promise:new Promise((e=>{p.add(n={c:t,f:e})})),abort(){p.delete(n)}}}function m(t,n){t.appendChild(n)}function b(t,n,e){t.insertBefore(n,e||null)}function h(t){t.parentNode.removeChild(t)}function g(t){return document.createElement(t)}function x(){return document.createTextNode("")}function v(t,n,e,o){return t.addEventListener(n,e,o),()=>t.removeEventListener(n,e,o)}function w(t,n,e){null==e?t.removeAttribute(n):t.getAttribute(n)!==e&&t.setAttribute(n,e)}function y(t,n,e,o){null===e?t.style.removeProperty(n):t.style.setProperty(n,e)}function $(t,n,e){t.classList[e?"add":"remove"](n)}let k,_,M=0,S={};function z(t,n,e,o,r,i,c,s=0){const u=16.666/o;let l="{\n";for(let t=0;1>=t;t+=u){const o=n+(e-n)*i(t);l+=100*t+`%{${c(o,1-o)}}\n`}const a=l+`100% {${c(e,1-e)}}\n}`,p=`_bp_${Math.round(1e9*Math.random())}_${s}`;if(!S[p]){if(!k){const t=g("style");document.head.appendChild(t),k=t.sheet}S[p]=1,k.insertRule(`@keyframes ${p} ${a}`,k.cssRules.length)}const f=t.style.animation||"";return t.style.animation=`${f?f+", ":""}${p} ${o}ms linear ${r}ms 1 both`,M+=1,p}function I(t,n){t.style.animation=(t.style.animation||"").split(", ").filter(n?t=>0>t.indexOf(n):t=>-1===t.indexOf("_bp")).join(", "),n&&!--M&&a((()=>{if(M)return;let t=k.cssRules.length;for(;t--;)k.deleteRule(t);S={}}))}function P(t){_=t}const T=[],A=[],N=[],O=[],C=Promise.resolve();let E=0;function R(t){N.push(t)}const j=new Set;let q,F=0;function J(){const t=_;do{for(;T.length>F;){const t=T[F];F++,P(t),B(t.u)}for(P(null),T.length=0,F=0;A.length;)A.pop()();for(let t=0;N.length>t;t+=1){const n=N[t];j.has(n)||(j.add(n),n())}N.length=0}while(T.length);for(;O.length;)O.pop()();E=0,j.clear(),P(t)}function B(t){if(null!==t.l){t.update(),r(t.g);const n=t.v;t.v=[-1],t.l&&t.l.p(t.$,n),t.k.forEach(R)}}function D(){return q||(q=Promise.resolve(),q.then((()=>{q=null}))),q}function K(t,n,e){t.dispatchEvent(((t,n,e=0)=>{const o=document.createEvent("CustomEvent");return o.initCustomEvent(t,e,0,n),o})(`${n?"intro":"outro"}${e}`))}const L=new Set;let W;function X(){W={r:0,c:[],p:W}}function Y(){W.r||r(W.c),W=W.p}function G(t,n){t&&t.i&&(L.delete(t),t.i(n))}function H(t,n,e,o){if(t&&t.o){if(L.has(t))return;L.add(t),W.c.push((()=>{L.delete(t),o&&(e&&t.d(1),o())})),t.o(n)}}const Q={duration:0};function U(e,o,r){let c,s,u=o(e,r),a=0,p=0;function f(){c&&I(e,c)}function m(){const{delay:o=0,duration:r=300,_:i=n,M:m=t,css:b}=u||Q;b&&(c=z(e,0,1,r,o,i,b,p++)),m(0,1);const h=l()+o,g=h+r;s&&s.abort(),a=1,R((()=>K(e,1,"start"))),s=d((t=>{if(a){if(t>=g)return m(1,0),K(e,1,"end"),f(),a=0;if(t>=h){const n=i((t-h)/r);m(n,1-n)}}return a}))}let b=0;return{start(){b||(b=1,I(e),i(u)?(u=u(),D().then(m)):m())},S(){b=0},end(){a&&(f(),a=0)}}}function V(e,o,c){let s,u=o(e,c),a=1;const p=W;function f(){const{delay:o=0,duration:i=300,_:c=n,M:f=t,css:m}=u||Q;m&&(s=z(e,1,0,i,o,c,m));const b=l()+o,h=b+i;R((()=>K(e,0,"start"))),d((t=>{if(a){if(t>=h)return f(0,1),K(e,0,"end"),--p.r||r(p.c),0;if(t>=b){const n=c((t-b)/i);f(1-n,n)}}return a}))}return p.r+=1,i(u)?D().then((()=>{u=u(),f()})):f(),{end(t){t&&u.M&&u.M(1,0),a&&(s&&I(e,s),a=0)}}}function Z(t){t&&t.c()}function tt(t,n,e,c){const{l:s,I:u,t:l,k:a}=t.u;s&&s.m(n,e),c||R((()=>{const n=u.map(o).filter(i);l?l.push(...n):r(n),t.u.I=[]})),a.forEach(R)}function nt(t,n){const e=t.u;null!==e.l&&(r(e.t),e.l&&e.l.d(n),e.t=e.l=null,e.$=[])}function et(n,e,o,i,c,s,u,l=[-1]){const a=_;P(n);const p=n.u={l:null,$:null,P:s,update:t,T:c,bound:{},I:[],t:[],A:[],g:[],k:[],context:new Map(e.context||(a?a.u.context:[])),N:{},v:l,O:0,root:e.target||a.u.root};u&&u(p.root);let f=0;p.$=o?o(n,e.P||{},((t,e,...o)=>{const r=o.length?o[0]:e;return p.$&&c(p.$[t],p.$[t]=r)&&(!p.O&&p.bound[t]&&p.bound[t](r),f&&((t,n)=>{-1===t.u.v[0]&&(T.push(t),E||(E=1,C.then(J)),t.u.v.fill(0)),t.u.v[n/31|0]|=1<{const t=e.indexOf(n);-1!==t&&e.splice(t,1)}}C(t){this.R&&0!==Object.keys(t).length&&(this.u.O=1,this.R(t),this.u.O=0)}}function rt(t){const n=t-1;return n*n*n+1}function it(t,{delay:n=0,duration:e=400,_:o=rt,x:r=0,y:i=0,opacity:c=0}={}){const s=getComputedStyle(t),u=+s.opacity,l="none"===s.transform?"":s.transform,a=u*(1-c);return{delay:n,duration:e,_:o,css(t,n){return`\n\t\t\ttransform: ${l} translate(${(1-t)*r}px, ${(1-t)*i}px);\n\t\t\topacity: ${u-a*n}`}}}const ct=[];function st(n,e=t){let o;const r=new Set;function i(t){if(c(n,t)&&(n=t,o)){const t=!ct.length;for(const t of r)t[1](),ct.push(t,n);if(t){for(let t=0;ct.length>t;t+=2)ct[t][0](ct[t+1]);ct.length=0}}}return{set:i,update(t){i(t(n))},subscribe(c,s=t){const u=[c,s];return r.add(u),1===r.size&&(o=e(i)||t),c(n),()=>{r.delete(u),0===r.size&&(o(),o=null)}}}}function ut(t,n){if(t===n||t!=t)return()=>t;const e=typeof t;if(Array.isArray(t)){const e=n.map(((n,e)=>ut(t[e],n)));return t=>e.map((n=>n(t)))}if("number"===e){const e=n-t;return n=>t+n*e}}function lt(t,o={}){const r=st(t);let i,c=t;function s(s,u){if(null==t)return r.set(t=s),Promise.resolve();c=s;let a=i,p=0,{delay:f=0,duration:m=400,_:b=n,interpolate:h=ut}=e(e({},o),u);if(0===m)return a&&(a.abort(),a=null),r.set(t=c),Promise.resolve();const g=l()+f;let x;return i=d((n=>{if(g>n)return 1;p||(x=h(t,s),"function"==typeof m&&(m=m(t,s)),p=1),a&&(a.abort(),a=null);const e=n-g;return e>m?(r.set(t=s),0):(r.set(t=x(b(e/m))),1)})),i.promise}return{set:s,update(n,e){return s(n(c,t),e)},subscribe:r.subscribe}}const at=st(0),pt=globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches,ft=t=>({_:rt,duration:pt?0:t}),dt=t=>!t.thumb||`url(${t.thumb})`,mt=(t,n)=>{if(n){"string"==typeof n&&(n=JSON.parse(n));for(const e in n)t.setAttribute(e,n[e])}};function bt(t){let n,e,o;return{c(){n=g("div"),n.innerHTML='',w(n,"class","bp-load"),y(n,"background-image",dt(t[0]))},m(t,e){b(t,n,e),o=1},p(t,e){1&e&&y(n,"background-image",dt(t[0]))},i(t){o||(e&&e.end(1),o=1)},o(t){t&&(e=V(n,it,{duration:480})),o=0},d(t){t&&h(n),t&&e&&e.end()}}}function ht(n){let e,o;return{c(){e=g("div"),w(e,"class","bp-load"),y(e,"background-image",dt(n[0]))},m(t,n){b(t,e,n)},p(t,n){1&n&&y(e,"background-image",dt(t[0]))},i(t){o||R((()=>{o=U(e,it,{duration:480}),o.start()}))},o:t,d(t){t&&h(e)}}}function gt(t){let n,e,o=!t[1]&&bt(t),r=t[2]&&ht(t);return{c(){o&&o.c(),n=x(),r&&r.c(),e=x()},m(t,i){o&&o.m(t,i),b(t,n,i),r&&r.m(t,i),b(t,e,i)},p(t,[i]){t[1]?o&&(X(),H(o,1,1,(()=>{o=null})),Y()):o?(o.p(t,i),2&i&&G(o,1)):(o=bt(t),o.c(),G(o,1),o.m(n.parentNode,n)),t[2]?r?(r.p(t,i),4&i&&G(r,1)):(r=ht(t),r.c(),G(r,1),r.m(e.parentNode,e)):r&&(r.d(1),r=null)},i(t){G(o),G(r)},o(t){H(o)},d(t){o&&o.d(t),t&&h(n),r&&r.d(t),t&&h(e)}}}function xt(t,n,e){let o;s(t,at,(t=>e(2,o=t)));let{j:r}=n,{loaded:i}=n;return t.R=t=>{"j"in t&&e(0,r=t.j),"loaded"in t&&e(1,i=t.loaded)},[r,i,o]}class vt extends ot{constructor(t){super(),et(this,t,xt,gt,c,{j:0,loaded:1})}}function wt(t){let n,e,o,i,c,s;return{c(){n=g("img"),w(n,"sizes",e=t[8].sizes||t[1]+"px"),w(n,"alt",t[7].alt)},m(e,o){b(e,n,o),i=1,c||(s=[u(t[21].call(null,n)),v(n,"error",t[27])],c=1)},p(t,o){(!i||2&o[0]&&e!==(e=t[8].sizes||t[1]+"px"))&&w(n,"sizes",e)},i(t){i||(o&&o.end(1),i=1)},o(t){o=V(n,it,{}),i=0},d(t){t&&h(n),t&&o&&o.end(),c=0,r(s)}}}function yt(t){let n,e;return n=new vt({P:{j:t[7],loaded:t[2]}}),{c(){Z(n.u.l)},m(t,o){tt(n,t,o),e=1},p(t,e){const o={};4&e[0]&&(o.loaded=t[2]),n.C(o)},i(t){e||(G(n.u.l,t),e=1)},o(t){H(n.u.l,t),e=0},d(t){nt(n,t)}}}function $t(t){let n,e,o,i,c,s,l=`translate3d(${t[0][0]/-2+t[6][0]}px, ${t[0][1]/-2+t[6][1]}px, 0)`,a=t[2]&&wt(t),p=t[3]&&yt(t);return{c(){n=g("div"),e=g("div"),a&&a.c(),o=x(),p&&p.c(),w(e,"class","bp-img"),y(e,"width",t[0][0]+"px"),y(e,"height",t[0][1]+"px"),$(e,"bp-drag",t[4]),$(e,"bp-canzoom",t[11]>1&&t[12]>t[0][0]),y(e,"background-image",dt(t[7])),y(e,"transform",l),w(n,"class","bp-img-wrap"),$(n,"bp-close",t[5])},m(r,l){b(r,n,l),m(n,e),a&&a.m(e,null),m(e,o),p&&p.m(e,null),i=1,c||(s=[u(t[20].call(null,e)),v(n,"wheel",t[15]),v(n,"pointerdown",t[16]),v(n,"pointermove",t[17]),v(n,"pointerup",t[19]),v(n,"pointercancel",t[18])],c=1)},p(t,r){t[2]?a?(a.p(t,r),4&r[0]&&G(a,1)):(a=wt(t),a.c(),G(a,1),a.m(e,o)):a&&(X(),H(a,1,1,(()=>{a=null})),Y()),t[3]?p?(p.p(t,r),8&r[0]&&G(p,1)):(p=yt(t),p.c(),G(p,1),p.m(e,null)):p&&(X(),H(p,1,1,(()=>{p=null})),Y()),(!i||1&r[0])&&y(e,"width",t[0][0]+"px"),(!i||1&r[0])&&y(e,"height",t[0][1]+"px"),(!i||16&r[0])&&$(e,"bp-drag",t[4]),(!i||6145&r[0])&&$(e,"bp-canzoom",t[11]>1&&t[12]>t[0][0]),65&r[0]&&l!==(l=`translate3d(${t[0][0]/-2+t[6][0]}px, ${t[0][1]/-2+t[6][1]}px, 0)`)&&y(e,"transform",l),(!i||32&r[0])&&$(n,"bp-close",t[5])},i(t){i||(G(a),G(p),i=1)},o(t){H(a),H(p),i=0},d(t){t&&h(n),a&&a.d(),p&&p.d(),c=0,r(s)}}}function kt(t,n,e){let o,r,i,c;s(t,at,(t=>e(26,i=t)));let{P:u}=n,{q:l}=n,{j:a,F:p,J:f,next:d,zoomed:m,container:b}=u;s(t,m,(t=>e(25,o=t)));let h,g,x,v,w,y,$,k,_,M,S,z=a.maxZoom||p.maxZoom||10,I=u.B(a),P=I[0],T=0;const A=+a.width,N=[],O=new Map,C=lt(I,ft(400));s(t,C,(t=>e(0,c=t)));const E=lt([0,0],ft(400));s(t,E,(t=>e(6,r=t)));const R=([t,n],o=c)=>{const r=(o[0]-b.w)/2,i=(o[1]-b.h)/2;return 0>r?t=0:t>r?l?(t=w?r+(t-r)/10:r)>r+20&&e(4,w=f()):t=r:-r>t&&(l?-r-20>(t=w?-r-(-r-t)/10:-r)&&e(4,w=d()):t=-r),0>i?n=0:n>i?n=i:-i>n&&(n=-i),[t,n]};function j(t=z,n){if(i)return;const o=I[0]*z;let s=c[0]+c[0]*t,u=c[1]+c[1]*t;if(t>0)s>o&&(s=o,u=I[1]*z),s>A&&(s=A,u=+a.height);else if(I[0]>s)return C.set(I),E.set([0,0]);let{x:l,y:p,width:f,height:d}=v.getBoundingClientRect();const m=n?n.clientX-l-f/2:0,b=n?n.clientY-p-d/2:0;l=s/f*-m+m,p=u/d*-b+b;const h=[s,u];C.set(h).then((()=>{e(1,P=Math.round(Math.max(P,s)))})),E.set(R([r[0]+l,r[1]+p],h))}Object.defineProperty(a,"zoom",{configurable:1,get(){return o},set(t){return j(t?z:-z)}});const q=t=>O.delete(t.pointerId);return t.R=t=>{"q"in t&&e(23,l=t.q)},t.u.update=()=>{if(16777217&t.u.v[0]&&m.set(c[0]-10>I[0]),117440512&t.u.v[0]&&i&&o&&!p.intro){const t=ft(480);E.set([0,0],t),C.set(I,t),e(5,S=1)}},[c,P,h,g,w,S,r,a,p,m,b,z,A,C,E,t=>{p.inline&&!o||(t.preventDefault(),j(t.deltaY/-300,t))},t=>{2!==t.button&&(t.preventDefault(),e(4,w=1),O.set(t.pointerId,t),$=t.clientX,k=t.clientY,_=r[0],M=r[1])},t=>{if(O.size>1)return e(4,w=0),p.noPinch?.(b.el)||(t=>{const[n,e]=O.set(t.pointerId,t).values(),o=Math.hypot(n.clientX-e.clientX,n.clientY-e.clientY);x=x||{clientX:(n.clientX+e.clientX)/2,clientY:(n.clientY+e.clientY)/2},j(((T||o)-o)/-35,x),T=o})(t);if(!w)return;let n=t.clientX,r=t.clientY;y=N.push({x:n,y:r})>2,n-=$,r-=k,o||(-90>r&&e(4,w=!p.noClose&&u.close()),30>Math.abs(r)&&(n>40&&e(4,w=f()),-40>n&&e(4,w=d()))),o&&y&&!i&&E.set(R([_+n,M+r]),{duration:0})},q,function(t){if(q(t),x&&(e(4,w=T=0),x=O.size?x:null),w){if(e(4,w=0),t.target===this&&!p.noClose)return u.close();if(y){const[t,n,e]=N.slice(-3);Math.hypot(n.x-e.x,n.y-e.y)>5&&E.set(R([r[0]-5*(t.x-e.x),r[1]-5*(t.y-e.y)]))}else p.onImageClick?.(b.el,a)||j(o?-z:z,t);y=0,N.length=0}},t=>{v=t,u.D((()=>{e(24,I=u.B(a)),!p.inline&&l||(C.set(I),E.set([0,0]))})),u.K(a).then((()=>{e(2,h=1),u.L()})),setTimeout((()=>{e(3,g=!h)}),250)},t=>{mt(t,a.attr),t.srcset=a.img},u,l,I,o,i,t=>p.onError?.(b,a,t)]}class _t extends ot{constructor(t){super(),et(this,t,kt,$t,c,{P:22,q:23},null,[-1,-1])}}function Mt(t){let n,e,o,i,c,s;return o=new vt({P:{j:t[2],loaded:t[0]}}),{c(){n=g("div"),e=g("iframe"),Z(o.u.l),w(e,"allow","autoplay; fullscreen"),w(e,"title",t[2].title),w(n,"class","bp-if"),y(n,"width",t[1][0]+"px"),y(n,"height",t[1][1]+"px")},m(r,l){b(r,n,l),m(n,e),tt(o,n,null),i=1,c||(s=[u(t[3].call(null,e)),v(e,"load",t[5])],c=1)},p(t,[e]){const r={};1&e&&(r.loaded=t[0]),o.C(r),(!i||2&e)&&y(n,"width",t[1][0]+"px"),(!i||2&e)&&y(n,"height",t[1][1]+"px")},i(t){i||(G(o.u.l,t),i=1)},o(t){H(o.u.l,t),i=0},d(t){t&&h(n),nt(o),c=0,r(s)}}}function St(t,n,e){let o,r,{P:i}=n;const{j:c}=i,s=()=>e(1,r=i.B(c));return s(),i.D(s),[o,r,c,t=>{mt(t,c.attr),t.src=c.iframe},i,()=>e(0,o=1)]}class zt extends ot{constructor(t){super(),et(this,t,St,Mt,c,{P:4})}}function It(t){let n,e,o,r,i;return e=new vt({P:{j:t[2],loaded:t[0]}}),{c(){n=g("div"),Z(e.u.l),w(n,"class","bp-vid"),y(n,"width",t[1][0]+"px"),y(n,"height",t[1][1]+"px"),y(n,"background-image",dt(t[2]))},m(c,s){b(c,n,s),tt(e,n,null),o=1,r||(i=u(t[3].call(null,n)),r=1)},p(t,[r]){const i={};1&r&&(i.loaded=t[0]),e.C(i),(!o||2&r)&&y(n,"width",t[1][0]+"px"),(!o||2&r)&&y(n,"height",t[1][1]+"px")},i(t){o||(G(e.u.l,t),o=1)},o(t){H(e.u.l,t),o=0},d(t){t&&h(n),nt(e),r=0,i()}}}function Pt(t,n,e){let o,r,{P:i}=n;const{j:c,F:s,container:u}=i,l=()=>e(1,r=i.B(c));return l(),i.D(l),[o,r,c,t=>{let n;const r=(t,e)=>{Array.isArray(e)||(e=JSON.parse(e));for(const o of e){n||(n=document.createElement(o.type?.includes("audio")?"audio":"video"),mt(n,{controls:1,autoplay:1,playsinline:1,tabindex:"0"}),mt(n,c.attr));const e=document.createElement(t);mt(e,o),"source"==t&&(e.onError=t=>s.onError?.(u,c,t)),n.append(e)}};r("source",c.sources),r("track",c.tracks||[]),n.oncanplay=()=>e(0,o=1),t.append(n)},i]}class Tt extends ot{constructor(t){super(),et(this,t,Pt,It,c,{P:4})}}function At(n){let e,o,i,s,l,a,p,f,d,x=n[6].i,y=jt(n),k=n[0].length>1&&qt(n);return{c(){e=g("div"),o=g("div"),y.c(),s=g("div"),l=g("button"),k&&k.c(),w(l,"class","bp-x"),w(l,"title","Close"),w(l,"aria-label","Close"),w(s,"class","bp-controls"),w(e,"class","bp-wrap"),$(e,"bp-zoomed",n[10]),$(e,"bp-inline",n[8]),$(e,"bp-small",n[7]),$(e,"bp-noclose",n[5].noClose)},m(t,r){b(t,e,r),m(e,o),y.m(e,null),m(e,s),m(s,l),k&&k.m(s,null),p=1,f||(d=[v(l,"click",n[1]),u(n[14].call(null,e))],f=1)},p(n,o){64&o[0]&&c(x,x=n[6].i)?(X(),H(y,1,1,t),Y(),y=jt(n),y.c(),G(y,1),y.m(e,s)):y.p(n,o),n[0].length>1?k?k.p(n,o):(k=qt(n),k.c(),k.m(s,null)):k&&(k.d(1),k=null),(!p||1024&o[0])&&$(e,"bp-zoomed",n[10]),(!p||256&o[0])&&$(e,"bp-inline",n[8]),(!p||128&o[0])&&$(e,"bp-small",n[7]),(!p||32&o[0])&&$(e,"bp-noclose",n[5].noClose)},i(t){p||(i&&i.end(1),G(y),a&&a.end(1),p=1)},o(t){t&&(i=V(o,it,{duration:480})),H(y),t&&(a=V(s,it,{})),p=0},d(t){t&&h(e),t&&i&&i.end(),y.d(t),k&&k.d(),t&&a&&a.end(),f=0,r(d)}}}function Nt(n){let e,o=(n[6].html??n[6].element.outerHTML)+"";return{c(){e=g("div"),w(e,"class","bp-html")},m(t,n){b(t,e,n),e.innerHTML=o},p(t,n){64&n[0]&&o!==(o=(t[6].html??t[6].element.outerHTML)+"")&&(e.innerHTML=o)},i:t,o:t,d(t){t&&h(e)}}}function Ot(n){let e,o;return e=new zt({P:{P:n[13]()}}),{c(){Z(e.u.l)},m(t,n){tt(e,t,n),o=1},p:t,i(t){o||(G(e.u.l,t),o=1)},o(t){H(e.u.l,t),o=0},d(t){nt(e,t)}}}function Ct(n){let e,o;return e=new Tt({P:{P:n[13]()}}),{c(){Z(e.u.l)},m(t,n){tt(e,t,n),o=1},p:t,i(t){o||(G(e.u.l,t),o=1)},o(t){H(e.u.l,t),o=0},d(t){nt(e,t)}}}function Et(t){let n,e;return n=new _t({P:{P:t[13](),q:t[7]}}),{c(){Z(n.u.l)},m(t,o){tt(n,t,o),e=1},p(t,e){const o={};128&e[0]&&(o.q=t[7]),n.C(o)},i(t){e||(G(n.u.l,t),e=1)},o(t){H(n.u.l,t),e=0},d(t){nt(n,t)}}}function Rt(t){let n,e,o,r=t[6].caption+"";return{c(){n=g("div"),w(n,"class","bp-cap")},m(t,e){b(t,n,e),n.innerHTML=r,o=1},p(t,e){(!o||64&e[0])&&r!==(r=t[6].caption+"")&&(n.innerHTML=r)},i(t){o||(e&&e.end(1),o=1)},o(t){e=V(n,it,{duration:200}),o=0},d(t){t&&h(n),t&&e&&e.end()}}}function jt(t){let n,e,o,i,c,s,u,l,a;const p=[Et,Ct,Ot,Nt],f=[];function d(t,n){return t[6].img?0:t[6].sources?1:t[6].iframe?2:3}e=d(t),o=f[e]=p[e](t);let m=t[6].caption&&Rt(t);return{c(){n=g("div"),o.c(),m&&m.c(),s=x(),w(n,"class","bp-inner")},m(o,r){b(o,n,r),f[e].m(n,null),m&&m.m(o,r),b(o,s,r),u=1,l||(a=[v(n,"pointerdown",t[20]),v(n,"pointerup",t[21])],l=1)},p(t,r){let i=e;e=d(t),e===i?f[e].p(t,r):(X(),H(f[i],1,1,(()=>{f[i]=null})),Y(),o=f[e],o?o.p(t,r):(o=f[e]=p[e](t),o.c()),G(o,1),o.m(n,null)),t[6].caption?m?(m.p(t,r),64&r[0]&&G(m,1)):(m=Rt(t),m.c(),G(m,1),m.m(s.parentNode,s)):m&&(X(),H(m,1,1,(()=>{m=null})),Y())},i(e){u||(G(o),R((()=>{c&&c.end(1),i=U(n,t[12],1),i.start()})),G(m),u=1)},o(e){H(o),i&&i.S(),c=V(n,t[12],0),H(m),u=0},d(t){t&&h(n),f[e].d(),t&&c&&c.end(),m&&m.d(t),t&&h(s),l=0,r(a)}}}function qt(t){let n,e,o,i,c,s=`${t[4]+1} / ${t[0].length}`;return{c(){n=g("div"),e=g("button"),o=g("button"),w(n,"class","bp-count"),w(e,"class","bp-prev"),w(e,"title","Previous"),w(e,"aria-label","Previous"),w(o,"class","bp-next"),w(o,"title","Next"),w(o,"aria-label","Next")},m(r,u){b(r,n,u),n.innerHTML=s,b(r,e,u),b(r,o,u),i||(c=[v(e,"click",t[2]),v(o,"click",t[3])],i=1)},p(t,e){17&e[0]&&s!==(s=`${t[4]+1} / ${t[0].length}`)&&(n.innerHTML=s)},d(t){t&&h(n),t&&h(e),t&&h(o),i=0,r(c)}}}function Ft(t){let n,e,o=t[0]&&At(t);return{c(){o&&o.c(),n=x()},m(t,r){o&&o.m(t,r),b(t,n,r),e=1},p(t,e){t[0]?o?(o.p(t,e),1&e[0]&&G(o,1)):(o=At(t),o.c(),G(o,1),o.m(n.parentNode,n)):o&&(X(),H(o,1,1,(()=>{o=null})),Y())},i(t){e||(G(o),e=1)},o(t){H(o),e=0},d(t){o&&o.d(t),t&&h(n)}}}function Jt(t,n,e){let o,{items:r}=n,{target:i}=n;const c=document.documentElement;let u,l,a,p,f,d,m,b,h;const g=()=>!h.img&&!h.sources&&!h.iframe;let x;const v=t=>x=t,w={},y=st(0);s(t,y,(t=>e(10,o=t)));const $=()=>{l.onClose?.(w.el,h),at.set(1),e(0,r=null),p?.focus({preventScroll:1})},k=()=>M(u-1),_=()=>M(u+1),M=t=>{m=t-u,e(4,u=S(t))},S=t=>(t+r.length)%r.length,z=t=>{const{key:n,shiftKey:e}=t;if("Escape"===n)!l.noClose&&$();else if("ArrowRight"===n)_();else if("ArrowLeft"===n)k();else if("Tab"===n){const{activeElement:n}=document;if(e||!n.controls){t.preventDefault();const{focusWrap:o=w.el}=l,r=[...o.querySelectorAll("*")].filter((t=>t.tabIndex>=0));let i=r.indexOf(n);i+=r.length+(e?-1:1),r[i%r.length].focus()}}},I=({width:t=1920,height:n=1080})=>{const{scale:e=.99}=l,o=Math.min(1,w.w/t*e,w.h/n*e);return[Math.round(t*o),Math.round(n*o)]},P=()=>{if(r){const t=r[S(u+1)],n=r[S(u-1)];!t.preload&&T(t),!n.preload&&T(n)}},T=t=>{if(t.img){const n=document.createElement("img");return n.sizes=l.sizes||I(t)[0]+"px",n.srcset=t.img,t.preload=1,n.decode().catch((t=>{}))}};return t.R=t=>{"items"in t&&e(0,r=t.items),"target"in t&&e(15,i=t.target)},t.u.update=()=>{786545&t.u.v[0]&&r&&(e(6,h=r[u]),a&&l.onUpdate?.(w.el,h))},[r,$,k,_,u,l,h,f,d,b,o,y,(t,n)=>a&&r?it(t,{x:(m>0?20:-20)*(n?1:-1),duration:250}):(e(18,a=n),l.intro?it(t,{y:n?10:-10}):(t=>{let n;if(g()){const e=t.firstChild.firstChild;n=[e.clientWidth,e.clientHeight]}else n=I(h);const e=(h.element||p).getBoundingClientRect(),o=e.left-(w.w-e.width)/2,r=e.top-(w.h-e.height)/2,i=e.width/n[0],c=e.height/n[1];return{duration:480,_:rt,css:(t,n)=>`transform:translate3d(${o*n}px, ${r*n}px, 0) scale3d(${i+t*(1-i)}, ${c+t*(1-c)}, 1)`}})(t)),()=>({j:h,B:I,K:T,L:P,F:l,J:k,next:_,close:$,D:v,zoomed:y,container:w}),t=>{let n;e(19,w.el=t,w),l.onOpen?.(w.el,h),d||globalThis.addEventListener("keydown",z);const o=new ResizeObserver((t=>{n&&(e(19,w.w=t[0].contentRect.width,w),e(19,w.h=t[0].contentRect.height,w),e(7,f=769>w.w),g()||x?.(),l.onResize?.(w.el,h)),n=1}));return o.observe(t),{destroy(){o.disconnect(),globalThis.removeEventListener("keydown",z),at.set(0),c.classList.remove("bp-lock"),l.onClosed?.()}}},i,t=>{e(5,l=t),e(8,d=l.inline),!d&&c.scrollHeight>c.clientHeight&&c.classList.add("bp-lock"),p=document.activeElement,e(19,w.w=i.offsetWidth,w),e(19,w.h=i===document.body?globalThis.innerHeight:i.clientHeight,w),e(7,f=769>w.w),e(4,u=l.position||0),e(0,r=[]);for(let t=0;(l.items.length||1)>t;t++){let n=l.items[t]||l.items;"dataset"in n?r.push({element:n,i:t,...n.dataset}):(n.i=t,r.push(n),n=n.element),l.el&&l.el===n&&e(4,u=t)}},M,a,w,t=>e(9,b=t.target),function(t){2!==t.button&&t.target===this&&b===this&&!l.noClose&&$()}]}class Bt extends ot{constructor(t){super(),et(this,t,Jt,Ft,c,{items:0,target:15,open:16,close:1,J:2,next:3,setPosition:17},null,[-1,-1])}get items(){return this.u.$[0]}get target(){return this.u.$[15]}get open(){return this.u.$[16]}get close(){return this.u.$[1]}get J(){return this.u.$[2]}get next(){return this.u.$[3]}get setPosition(){return this.u.$[17]}}return t=>new Bt({...t,P:t})}(); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/vendor/bigger-picture.min.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/comments.js b/assets/scripts/comments.js index 25596f3..51fa87d 100755 --- a/assets/scripts/comments.js +++ b/assets/scripts/comments.js @@ -1,196 +1,7 @@ -let pageSlug = null; - -/* ----------------------------- - * DOM builders - * ----------------------------- */ - - -function showReplyForm(container, parentId) { - if (container.querySelector(".reply-form")) return; - - const form = document.createElement("form"); - form.className = "reply-form"; - - form.innerHTML = ` - - - - `; - - form.addEventListener("submit", async e => { - e.preventDefault(); - - const author = form.author.value.trim(); - const content = form.content.value.trim(); - if (!content) return; - - const ok = await postComment(author, content, parentId); - if (ok) loadComments(); - else alert("Failed to post reply"); - }); - - container.appendChild(form); -} - -function createComment(comment) { - const wrapper = document.createElement("div"); - wrapper.className = "comment"; - wrapper.dataset.id = comment.id; - wrapper.id = `comment-${comment.id}`; - - const author = document.createElement("strong"); - author.textContent = comment.author || "Anonymous"; - - const body = document.createElement("p"); - body.textContent = comment.content; - - const time = document.createElement("time"); - time.className = "comment-date"; - time.dateTime = comment.created_at; - time.textContent = new Date(comment.created_at).toLocaleString(); - - const replyBtn = document.createElement("button"); - replyBtn.className = "comment-reply"; - replyBtn.textContent = "Reply"; - replyBtn.onclick = () => - showReplyForm(wrapper, Number(comment.id)); - - wrapper.append(author, body, time, replyBtn); - - if (comment.children?.length) { - const replies = document.createElement("div"); - replies.className = "comment-children"; - - comment.children.forEach(child => { - replies.appendChild(createComment(child)); - }); - - wrapper.appendChild(replies); - } - return wrapper; -} - - - -function buildCommentTree(comments) { - const byId = {}; - const roots = []; - - comments.forEach(comment => { - comment.children = []; - byId[comment.id] = comment; - }); - - comments.forEach(comment => { - if (comment.parent_id) { - const parent = byId[comment.parent_id]; - if (parent) parent.children.push(comment); - } else { - roots.push(comment); - } - }); - - return roots; -} - - -/* ----------------------------- - * Rendering - * ----------------------------- */ - -function renderComments(comments) { - const list = document.getElementById("comments-list"); - list.innerHTML = ""; - - if (!comments.length) { - const empty = document.createElement("p"); - empty.className = "comments-empty"; - empty.textContent = "No comments yet."; - list.appendChild(empty); - return; - } - - const tree = buildCommentTree(comments); - tree.forEach(comment => list.appendChild(createComment(comment))); -} - - -/* ----------------------------- - * API - * ----------------------------- */ - -async function fetchComments() { - const res = await fetch(`/api/comments/${pageSlug}`); - if (!res.ok) { - console.error("Failed to fetch comments"); - return []; - } - return await res.json(); -} - -async function postComment(author, content, parentId = null) { - const res = await fetch("/api/comments", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - page_slug: pageSlug, - author: author || null, - content, - parent_id: parentId - }) - }); - - return res.ok; -} - - - -/* ----------------------------- - * Form handling - * ----------------------------- */ - -function wireCommentForm() { - const form = document.getElementById("comment-form"); - - form.addEventListener("submit", async event => { - event.preventDefault(); - - const authorInput = form.querySelector("input[name='author']"); - const textarea = form.querySelector("textarea[name='content']"); - - const author = authorInput.value.trim(); - const content = textarea.value.trim(); - - if (!content) return; - - const ok = await postComment(author, content); - if (ok) { - textarea.value = ""; - loadComments(); - } else { - alert("Failed to post comment"); - } - }); -} - - -/* ----------------------------- - * Entry point - * ----------------------------- */ - -async function loadComments() { - const comments = await fetchComments(); - renderComments(comments); -} - -function initComments() { - const section = document.getElementById("comments"); - if (!section) return; - - pageSlug = section.dataset.slug; - - wireCommentForm(); - loadComments(); -} - -initComments(); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/features/comments.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/competency-status-board.js b/assets/scripts/competency-status-board.js index baf3db3..483d1e0 100755 --- a/assets/scripts/competency-status-board.js +++ b/assets/scripts/competency-status-board.js @@ -1,240 +1,7 @@ -const STATES = [ - { key: "completed", label: "Completed" }, - { key: "manager_review", label: "Manager Review" }, - { key: "in_progress", label: "In Progress" }, - { key: "not_started", label: "Not Started" }, - { key: "comments", label: "Comments" }, -]; - -const LEVELS = [ - { key: "graduate", label: "Graduate" }, - { key: "engineer", label: "Engineer" }, -]; - -let currentLevel = LEVELS[0].key; - -function isMobile() { - return window.matchMedia("(max-width: 600px)").matches; -} - -function renderLevelTabs() { - const board = document.getElementById("kanban-board"); - if (!board || document.getElementById("level-tabs")) return; - - const nav = document.createElement("div"); - nav.id = "level-tabs"; - - LEVELS.forEach(({ key, label }) => { - const btn = document.createElement("button"); - btn.textContent = label; - btn.dataset.level = key; - btn.className = "level-tab" + (key === currentLevel ? " active" : ""); - btn.addEventListener("click", () => { - currentLevel = key; - document.querySelectorAll(".level-tab").forEach(b => - b.classList.toggle("active", b.dataset.level === key) - ); - loadBoard(); - }); - nav.appendChild(btn); - }); - - board.insertAdjacentElement("beforebegin", nav); - - if (!document.getElementById("level-tab-styles")) { - const style = document.createElement("style"); - style.id = "level-tab-styles"; - style.textContent = ` - #level-tabs { - display: flex; - gap: 0.5em; - margin-bottom: 1em; - } - .level-tab { - padding: 0.4em 1.2em; - border: 1px solid #ccc; - background: none; - cursor: pointer; - border-radius: 4px; - font-size: 0.95em; - } - .level-tab.active { - background: #333; - color: #fff; - border-color: #333; - } - `; - document.head.appendChild(style); - } -} - -function populateMobileControls(items) { - if (!isMobile()) return; - - const panel = document.getElementById("mobile-move-panel"); - const itemSelect = document.getElementById("move-item"); - const fromSelect = document.getElementById("move-from"); - const toSelect = document.getElementById("move-to"); - - itemSelect.innerHTML = ""; - fromSelect.innerHTML = ""; - toSelect.innerHTML = ""; - - items.forEach((item) => { - const opt = document.createElement("option"); - opt.value = item.id; - opt.textContent = item.title; - opt.dataset.state = item.state; - itemSelect.appendChild(opt); - }); - - STATES.forEach((s) => { - fromSelect.appendChild(new Option(s.label, s.key)); - toSelect.appendChild(new Option(s.label, s.key)); - }); - - itemSelect.onchange = () => { - const selected = itemSelect.selectedOptions[0]; - if (selected?.dataset.state) { - fromSelect.value = selected.dataset.state; - } - }; -} - -const moveConfirmBtn = document.getElementById("move-confirm"); -if (moveConfirmBtn) { - moveConfirmBtn.addEventListener("click", async () => { - const itemId = document.getElementById("move-item").value; - const from = document.getElementById("move-from").value; - const to = document.getElementById("move-to").value; - - if (!itemId || !to) { - alert("Select an item and target column"); - return; - } - - if (from === to) { - alert("Item is already in that column"); - return; - } - - const res = await fetch(`/api/competencies/items/${itemId}/state`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ state: to }), - }); - - if (res.ok) { - loadBoard(); - } else { - alert("Failed to move competency"); - } - }); -} - -let draggedItemId = null; - -function countByState(items) { - return items.reduce((acc, item) => { - acc[item.state] = (acc[item.state] || 0) + 1; - return acc; - }, {}); -} - -async function updateProgress(items) { - const total = items.length; - const completed = items.filter(i => i.state === "completed").length; - const percent = total === 0 ? 0 : Math.round((completed / total) * 100); - - const fill = document.getElementById("progress-fill"); - const label = document.getElementById("progress-label"); - - if (fill) fill.style.width = `${percent}%`; - if (label) label.textContent = `${percent}% completed`; -} - -function createCard(item) { - const card = document.createElement("div"); - card.className = "kanban-card"; - card.draggable = true; - card.dataset.id = item.id; - card.textContent = item.title; - - card.addEventListener("dragstart", () => { - draggedItemId = item.id; - card.classList.add("dragging"); - }); - - card.addEventListener("dragend", () => { - draggedItemId = null; - card.classList.remove("dragging"); - }); - - return card; -} - -function createColumn(state, items, counts) { - const col = document.createElement("div"); - col.className = "kanban-column"; - col.dataset.state = state.key; - - const header = document.createElement("h3"); - header.innerHTML = ` - ${state.label} - ${counts[state.key] || 0} -`; - - const list = document.createElement("div"); - list.className = "kanban-list"; - - list.addEventListener("dragover", (e) => e.preventDefault()); - - list.addEventListener("drop", async () => { - if (!draggedItemId) return; - - const res = await fetch(`/api/competencies/items/${draggedItemId}/state`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ state: state.key }), - }); - - if (res.ok) { - loadBoard(); - } else { - alert("Failed to update state"); - } - }); - - items - .filter((i) => i.state === state.key) - .forEach((i) => list.appendChild(createCard(i))); - - col.appendChild(header); - col.appendChild(list); - - return col; -} - -function renderBoard(items) { - const board = document.getElementById("kanban-board"); - if (!board) return; - board.innerHTML = ""; - - const counts = countByState(items); - - STATES.forEach((state) => { - board.appendChild(createColumn(state, items, counts)); - }); -} - -async function loadBoard() { - const res = await fetch(`/api/competencies/items?group=${currentLevel}`); - const items = await res.json(); - - updateProgress(items); - renderBoard(items); - populateMobileControls(items); -} - -renderLevelTabs(); -loadBoard(); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/pages/competency-status-board.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/features/comments.js b/assets/scripts/features/comments.js new file mode 100644 index 0000000..25596f3 --- /dev/null +++ b/assets/scripts/features/comments.js @@ -0,0 +1,196 @@ +let pageSlug = null; + +/* ----------------------------- + * DOM builders + * ----------------------------- */ + + +function showReplyForm(container, parentId) { + if (container.querySelector(".reply-form")) return; + + const form = document.createElement("form"); + form.className = "reply-form"; + + form.innerHTML = ` + + + + `; + + form.addEventListener("submit", async e => { + e.preventDefault(); + + const author = form.author.value.trim(); + const content = form.content.value.trim(); + if (!content) return; + + const ok = await postComment(author, content, parentId); + if (ok) loadComments(); + else alert("Failed to post reply"); + }); + + container.appendChild(form); +} + +function createComment(comment) { + const wrapper = document.createElement("div"); + wrapper.className = "comment"; + wrapper.dataset.id = comment.id; + wrapper.id = `comment-${comment.id}`; + + const author = document.createElement("strong"); + author.textContent = comment.author || "Anonymous"; + + const body = document.createElement("p"); + body.textContent = comment.content; + + const time = document.createElement("time"); + time.className = "comment-date"; + time.dateTime = comment.created_at; + time.textContent = new Date(comment.created_at).toLocaleString(); + + const replyBtn = document.createElement("button"); + replyBtn.className = "comment-reply"; + replyBtn.textContent = "Reply"; + replyBtn.onclick = () => + showReplyForm(wrapper, Number(comment.id)); + + wrapper.append(author, body, time, replyBtn); + + if (comment.children?.length) { + const replies = document.createElement("div"); + replies.className = "comment-children"; + + comment.children.forEach(child => { + replies.appendChild(createComment(child)); + }); + + wrapper.appendChild(replies); + } + return wrapper; +} + + + +function buildCommentTree(comments) { + const byId = {}; + const roots = []; + + comments.forEach(comment => { + comment.children = []; + byId[comment.id] = comment; + }); + + comments.forEach(comment => { + if (comment.parent_id) { + const parent = byId[comment.parent_id]; + if (parent) parent.children.push(comment); + } else { + roots.push(comment); + } + }); + + return roots; +} + + +/* ----------------------------- + * Rendering + * ----------------------------- */ + +function renderComments(comments) { + const list = document.getElementById("comments-list"); + list.innerHTML = ""; + + if (!comments.length) { + const empty = document.createElement("p"); + empty.className = "comments-empty"; + empty.textContent = "No comments yet."; + list.appendChild(empty); + return; + } + + const tree = buildCommentTree(comments); + tree.forEach(comment => list.appendChild(createComment(comment))); +} + + +/* ----------------------------- + * API + * ----------------------------- */ + +async function fetchComments() { + const res = await fetch(`/api/comments/${pageSlug}`); + if (!res.ok) { + console.error("Failed to fetch comments"); + return []; + } + return await res.json(); +} + +async function postComment(author, content, parentId = null) { + const res = await fetch("/api/comments", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + page_slug: pageSlug, + author: author || null, + content, + parent_id: parentId + }) + }); + + return res.ok; +} + + + +/* ----------------------------- + * Form handling + * ----------------------------- */ + +function wireCommentForm() { + const form = document.getElementById("comment-form"); + + form.addEventListener("submit", async event => { + event.preventDefault(); + + const authorInput = form.querySelector("input[name='author']"); + const textarea = form.querySelector("textarea[name='content']"); + + const author = authorInput.value.trim(); + const content = textarea.value.trim(); + + if (!content) return; + + const ok = await postComment(author, content); + if (ok) { + textarea.value = ""; + loadComments(); + } else { + alert("Failed to post comment"); + } + }); +} + + +/* ----------------------------- + * Entry point + * ----------------------------- */ + +async function loadComments() { + const comments = await fetchComments(); + renderComments(comments); +} + +function initComments() { + const section = document.getElementById("comments"); + if (!section) return; + + pageSlug = section.dataset.slug; + + wireCommentForm(); + loadComments(); +} + +initComments(); diff --git a/assets/scripts/features/hidden-details.js b/assets/scripts/features/hidden-details.js new file mode 100644 index 0000000..dd700c0 --- /dev/null +++ b/assets/scripts/features/hidden-details.js @@ -0,0 +1,624 @@ +(function () { + "use strict"; + + /* + * Hidden site details + * ------------------- + * This file adds small hidden interactions across the site: footer notes, + * click targets, search/keyboard secrets, rare messages, and page-specific + * behavior for the hidden /play pages. + * + * How to add your own things: + * - Add new text to EDITABLE CONTENT arrays such as `details`, `poems`, + * `greetings`, or `lore`. + * - Add search-triggered toast messages to `SEARCH_TOASTS`. + * - Add search-triggered page redirects to `SEARCH_ROUTES`. + * - Add typed keyboard phrases to `KEYBOARD_SECRETS` or `LONG_KEYBOARD_SECRETS`. + * - Add a new feature by writing an `addYourFeature(memory)` function and + * adding it to the `FEATURES` list at the bottom of the file. + */ + + // Storage keys. v1 is read once so old visitors keep their hidden progress. + const STORAGE_KEY = "zxh_hidden_details_v2"; + const OLD_STORAGE_KEY = "zxh_hidden_details_v1"; + + // Shared page context. These are captured once so daily random picks stay stable. + const now = new Date(); + const hour = now.getHours(); + const path = window.location.pathname; + const state = readState(); + // ----------------------------- + // EDITABLE CONTENT + // ----------------------------- + // Generated by the hidden narrative authoring page. + // Friendly source of truth: assets/content/hidden-details.json + + const familyLayers = []; + + const details = []; + + const poems = []; + + const greetings = []; + + const nightMessages = []; + + const lore = { + "quotes": [], + "conversations": [], + "journals": [], + "warnings": [], + "dreams": [], + "cassettes": [], + "fakeUsers": [], + "seasonal": {}, + "homepageTakeovers": [], + "roomLinks": [] +}; + + // Exact search text -> toast message. + const SEARCH_TOASTS = {}; + + // Exact search text -> hidden page route. + const SEARCH_ROUTES = {}; + + // Short typed phrases. Stored in sessionStorage as a rolling key chain. + const KEYBOARD_SECRETS = []; + + // Longer typed phrases and character names. + const LONG_KEYBOARD_SECRETS = []; + + + // ----------------------------- + // STATE HELPERS + // ----------------------------- + + function readState() { + let current = {}; + try { + current = JSON.parse(localStorage.getItem(STORAGE_KEY) || "{}"); + } catch (_) {} + if (!current.visits) { + try { + const oldState = JSON.parse(localStorage.getItem(OLD_STORAGE_KEY) || "{}"); + current = { ...oldState, migratedFromV1: true }; + localStorage.setItem(STORAGE_KEY, JSON.stringify(current)); + } catch (_) {} + } + return current; + } + + function writeState(next) { + try { + localStorage.setItem(STORAGE_KEY, JSON.stringify(next)); + } catch (_) {} + } + + function pick(list, salt) { + const seed = hash(`${path}|${now.toDateString()}|${salt || ""}`); + return list[seed % list.length]; + } + + function hash(value) { + let h = 2166136261; + for (let i = 0; i < value.length; i += 1) { + h ^= value.charCodeAt(i); + h = Math.imul(h, 16777619); + } + return Math.abs(h >>> 0); + } + + // ----------------------------- + // UI HELPERS + // ----------------------------- + + function hiddenMessageMarkup(message) { + return `${escapeHtml(message)}`; + } + + function setHiddenMessage(el, message) { + delete el.dataset.hiddenCharacter; + el.innerHTML = hiddenMessageMarkup(message); + } + + function toast(message, duration) { + let el = document.querySelector(".hidden-toast"); + if (!el) { + el = document.createElement("div"); + el.className = "hidden-toast"; + el.setAttribute("role", "status"); + document.body.appendChild(el); + } + setHiddenMessage(el, message); + el.classList.add("is-visible"); + window.clearTimeout(el._timer); + el._timer = window.setTimeout(() => el.classList.remove("is-visible"), duration || 5600); + } + + function redirectTo(route) { + window.location.href = route; + } + + function runSecretAction(secret) { + if (secret.route) redirectTo(secret.route); + if (secret.message) toast(secret.message); + if (secret.song) playTinySong(); + } + + function layerForSearch(value) { + if (value.includes("future")) return 4; + if (value.includes("sensei") || value.includes("aphy")) return 3; + return 2; + } + + function rememberVisit() { + const visits = (state.visits || 0) + 1; + const seen = Array.isArray(state.seen) ? state.seen : []; + const pathCounts = { ...(state.pathCounts || {}) }; + pathCounts[path] = (pathCounts[path] || 0) + 1; + const layerVisits = { ...(state.layerVisits || {}) }; + const next = { + ...state, + visits, + lastPath: path, + pathCounts, + layerVisits, + seen: Array.from(new Set([...seen, path])).slice(-100), + firstSeen: state.firstSeen || new Date().toISOString(), + lastSeen: new Date().toISOString() + }; + writeState(next); + return next; + } + + function awardLayer(layer, reason) { + const next = readState(); + next.layerVisits = { ...(next.layerVisits || {}) }; + next.layerVisits[layer] = (next.layerVisits[layer] || 0) + 1; + next.lastLayerReason = reason; + writeState(next); + } + + // ----------------------------- + // GLOBAL FEATURES + // ----------------------------- + + function addFooterNote(memory) { + const footer = document.querySelector("footer"); + if (!footer || !details.length) return; + const note = document.createElement("p"); + note.className = "hidden-footer-note"; + const base = pick(details, "footer"); + setHiddenMessage(note, memory.visits > 4 ? `${base} You have passed through ${memory.visits} times.` : base); + footer.appendChild(note); + } + + function addHomepageGreeting(memory) { + const target = document.querySelector("#db-greeting"); + if (!target || !greetings.length) return; + setHiddenMessage(target, pick(greetings, `greeting-${memory.visits}`)); + const extra = document.createElement("p"); + extra.className = "hidden-greeting"; + setHiddenMessage(extra, ""); + target.closest("div")?.appendChild(extra); + } + + function addWhispers() { + // Event: click one of the tiny "?" marks appended to long paragraphs. + const paragraphs = Array.from(document.querySelectorAll("main p, #content p, article p")).filter((p) => p.textContent.trim().length > 80); + paragraphs.slice(0, 5).forEach((p, index) => { + if ((hash(path + index) + index) % 3 !== 0) return; + const mark = document.createElement("span"); + mark.className = "hidden-whisper"; + mark.tabIndex = 0; + mark.textContent = " ?"; + const source = index % 2 ? poems : details; + if (!source.length) return; + mark.title = pick(source, `whisper-${index}`); + mark.addEventListener("click", () => { + awardLayer(index % 2 ? 2 : 1, "paragraph whisper"); + toast(mark.title); + }); + p.appendChild(mark); + }); + } + + function addCornerObject() { + // Event: click the small fixed button in the bottom-left corner. + const object = document.createElement("button"); + object.className = "hidden-corner-object"; + object.type = "button"; + object.title = "hidden interaction"; + object.textContent = state.visits % 2 ? "*" : "~"; + document.body.appendChild(object); + let clicks = 0; + object.addEventListener("click", () => { + clicks += 1; + awardLayer(clicks > 3 ? 3 : 1, "corner object"); + toast("Hidden interaction recorded."); + if (clicks === 7) window.location.href = "/play/left-behind.html"; + }); + } + + function addLogoSearchAndKeyboardSecrets(memory) { + // Events: + // - Click `.site-brand` repeatedly on the homepage. + // - Type exact words into `#search-input`. + // - Type phrases anywhere on the page. + const nav = document.querySelector(".site-brand"); + if (nav) { + let taps = Number(sessionStorage.getItem("zxh_logo_taps") || 0); + nav.addEventListener("click", (event) => { + if (path === "/" || path === "/index.html") { + event.preventDefault(); + taps += 1; + sessionStorage.setItem("zxh_logo_taps", String(taps)); + awardLayer(taps >= 5 ? 3 : 1, "logo taps"); + toast(taps >= 5 ? "Hidden route available: /play/dream-corridor.html" : "Hidden interaction recorded."); + if (taps >= 8) window.location.href = "/play/dream-corridor.html"; + } + }); + } + + const search = document.querySelector("#search-input"); + if (search) { + search.addEventListener("input", () => { + const value = search.value.trim().toLowerCase(); + if (SEARCH_TOASTS[value]) toast(SEARCH_TOASTS[value]); + if (SEARCH_ROUTES[value]) { + awardLayer(layerForSearch(value), `search ${value}`); + redirectTo(SEARCH_ROUTES[value]); + } + }); + } + + document.addEventListener("keydown", (event) => { + const key = event.key.toLowerCase(); + const chain = `${sessionStorage.getItem("zxh_key_chain") || ""}${key}`.slice(-18); + sessionStorage.setItem("zxh_key_chain", chain); + KEYBOARD_SECRETS + .filter((secret) => chain.endsWith(secret.phrase)) + .forEach(runSecretAction); + }); + + if (memory.seen?.length >= 6 && !state.travellerNoteShown) { + window.setTimeout(() => { + toast("Hidden path recorded."); + writeState({ ...readState(), travellerNoteShown: true }); + }, 1600); + } + } + + function addRareEvents() { + if (hour >= 22 || hour < 5) { + document.body.classList.add("hidden-late-night"); + if (nightMessages.length) window.setTimeout(() => toast(pick(nightMessages, "night"), 2200), 900); + } + const roll = Math.random(); + if (roll < 0.003) { + window.setTimeout(() => showDriftNote("", ""), 1800); + awardLayer(3, "rare sensei appearance"); + } else if (roll < 0.008) { + window.setTimeout(() => toast("Hidden warning."), 2400); + awardLayer(4, "future warning"); + } + } + + function showDriftNote(text, art) { + const panel = document.createElement("aside"); + panel.className = "hidden-drift-note"; + panel.innerHTML = `
    ${hiddenMessageMarkup(text)}
    ${escapeHtml(art)}
    `; + panel.querySelector("button").addEventListener("click", () => panel.remove()); + document.body.appendChild(panel); + } + + function addSecretLinks() { + [ + ["/play/left-behind.html", "left behind"], + ["/play/dream-corridor.html", "dream corridor"], + ["/play/kitchen-light.html", "kitchen light"], + ...lore.roomLinks + ].forEach(([href, label], index) => { + const link = document.createElement("a"); + link.className = "hidden-secret-link"; + link.href = href; + link.textContent = label; + link.style.left = `${index + 1}px`; + document.body.appendChild(link); + }); + } + + function enhanceErrors() { + if (document.title.match(/404|not found/i) || document.body.textContent.match(/404|not found/i)) { + toast("Page not found."); + } + } + + function addContinuity(memory) { + const milestones = { + 64: "Hidden layer unlocked." + }; + if (milestones[memory.visits] && !state[`milestone_${memory.visits}`]) { + const layer = memory.visits >= 31 ? 4 : memory.visits >= 9 ? 3 : 2; + awardLayer(layer, `visit milestone ${memory.visits}`); + window.setTimeout(() => toast(milestones[memory.visits], 7000), 1200); + writeState({ ...readState(), [`milestone_${memory.visits}`]: true }); + } + + const count = memory.pathCounts?.[path] || 0; + if ([3, 7, 12].includes(count)) { + window.setTimeout(() => toast("Page revisit recorded.", 6400), 1700); + } + } + + function addSeasonAndDates(memory) { + const month = now.getMonth(); + const day = now.getDate(); + const season = month < 2 || month === 11 ? "winter" : month < 5 ? "spring" : month < 8 ? "summer" : "autumn"; + if (Math.random() < 0.18 && lore.seasonal[season]) window.setTimeout(() => toast(lore.seasonal[season], 5600), 2600); + const first = memory.firstSeen ? new Date(memory.firstSeen) : null; + if (first && memory.visits > 1 && first.getMonth() === month && first.getDate() === day) { + window.setTimeout(() => toast("Visitor anniversary recorded.", 7000), 1400); + } + } + + function addObjectConstellation() { + // Event: click the small keepsake buttons along the bottom rail. + const rail = document.createElement("div"); + rail.className = "hidden-object-rail"; + rail.setAttribute("aria-label", "Hidden objects"); + const objects = [ + ["ring", "Hidden object recorded."], + ["bot", "Hidden object recorded."], + ["tea", "Hidden object recorded."], + ["crayon", "Hidden object recorded."], + ["clock", "Hidden object recorded."] + ]; + objects.forEach(([name, message]) => { + const button = document.createElement("button"); + button.type = "button"; + button.className = `hidden-keepsake hidden-keepsake--${name}`; + button.title = name; + button.textContent = { ring: "o", bot: "#", tea: "u", crayon: "/", clock: ":" }[name]; + button.addEventListener("click", () => { + const next = readState(); + next.keepsakes = Array.from(new Set([...(next.keepsakes || []), name])); + writeState(next); + awardLayer(next.keepsakes.length >= 3 ? 3 : 2, `keepsake ${name}`); + toast(message); + if (next.keepsakes.length >= objects.length) { + window.setTimeout(() => toast("Hidden object set completed."), 1100); + } + }); + rail.appendChild(button); + }); + document.body.appendChild(rail); + } + + function addWeatherWindow(memory) { + // Event: click the small "window" button. This asks for browser geolocation. + if (memory.visits < 3 || !("geolocation" in navigator)) return; + const button = document.createElement("button"); + button.className = "hidden-weather-window"; + button.type = "button"; + button.title = "Check outside weather"; + button.textContent = "window"; + button.addEventListener("click", () => { + toast("Checking outside weather."); + navigator.geolocation.getCurrentPosition((pos) => { + const { latitude, longitude } = pos.coords; + fetch(`https://api.open-meteo.com/v1/forecast?latitude=${latitude.toFixed(3)}&longitude=${longitude.toFixed(3)}¤t=temperature_2m,precipitation&timezone=auto`) + .then((res) => res.json()) + .then((data) => { + const current = data.current || {}; + const rain = Number(current.precipitation || 0) > 0; + const temp = Math.round(Number(current.temperature_2m)); + toast(rain ? `Outside: rain, ${temp}C.` : `Outside: ${temp}C.`); + }) + .catch(() => toast("Weather check failed.")); + }, () => toast("No outside weather today.")); + }); + document.body.appendChild(button); + } + + function addOldWebLayer(memory) { + if (Math.random() < 0.08 || memory.visits > 10) { + const stamp = document.createElement("div"); + stamp.className = "hidden-oldweb-stamp"; + if (!lore.fakeUsers.length) return; + stamp.title = pick(lore.fakeUsers, "fake-user"); + stamp.textContent = "best viewed with patience"; + stamp.addEventListener("click", () => { + awardLayer(1, "old web stamp"); + toast(stamp.title); + }); + document.body.appendChild(stamp); + } + const comments = document.querySelector("#comments"); + if (comments && lore.fakeUsers.length && !comments.querySelector(".hidden-guestbook-line")) { + const line = document.createElement("p"); + line.className = "hidden-guestbook-line"; + setHiddenMessage(line, pick(lore.fakeUsers, "comment-lore")); + comments.appendChild(line); + } + } + + function addSourceRelics() { + const marker = document.createComment("hidden-details"); + document.documentElement.appendChild(marker); + document.querySelectorAll("img[alt=''], img:not([alt])").forEach((img, index) => { + if (index > 2) return; + img.alt = "Decorative image."; + }); + } + + function addLongKeyboardSecrets() { + // Event: type longer hidden phrases anywhere on the page. + document.addEventListener("keydown", (event) => { + const chain = `${sessionStorage.getItem("zxh_second_chain") || ""}${event.key.toLowerCase()}`.slice(-24); + sessionStorage.setItem("zxh_second_chain", chain); + LONG_KEYBOARD_SECRETS + .filter((secret) => chain.endsWith(secret.phrase)) + .forEach(runSecretAction); + }); + } + + function addPatienceRewards(memory) { + // Event: no movement, key presses, scrolling, or clicking for 90 seconds. + if (memory.visits < 2) return; + let idleTimer = null; + const startIdle = () => { + window.clearTimeout(idleTimer); + idleTimer = window.setTimeout(() => { + awardLayer(5, "patience"); + toast("Idle moment recorded.", 7600); + const next = readState(); + next.patientMoments = (next.patientMoments || 0) + 1; + writeState(next); + }, 90000); + }; + ["mousemove", "keydown", "scroll", "click"].forEach((name) => document.addEventListener(name, startIdle, { passive: true })); + startIdle(); + } + + function addRareSecondLayer() { + const roll = Math.random(); + if ((path === "/" || path === "/index.html") && roll < 0.006) { + document.body.classList.add("hidden-home-takeover"); + if (lore.homepageTakeovers.length) window.setTimeout(() => showDriftNote(pick(lore.homepageTakeovers, "takeover"), ""), 600); + } else if (roll < 0.002) { + window.setTimeout(() => showDriftNote("", ""), 1500); + } else if (roll < 0.006) { + if (lore.dreams.length) window.setTimeout(() => toast(pick(lore.dreams, "rare-dream"), 7600), 2000); + } else if (roll < 0.014) { + if (lore.warnings.length) window.setTimeout(() => toast(pick(lore.warnings, "rare-warning"), 6800), 2300); + } + } + + function addFamilyLayerIndex(memory) { + if (!path.includes("/play/family-layer-index")) return; + const target = document.querySelector("[data-family-layer-index]"); + if (!target) return; + const visits = readState().layerVisits || {}; + target.innerHTML = familyLayers.map((line, layer) => { + const count = visits[layer] || 0; + return `
  • ${hiddenMessageMarkup(line)}
    local encounters: ${count}
  • `; + }).join(""); + } + + function addPageSpecificSecrets() { + // Events only used by specific `/play/...` pages. + if (path.includes("/play/cassette-log")) { + document.querySelectorAll("[data-cassette]").forEach((button, index) => { + button.addEventListener("click", () => { + awardLayer(index >= 2 ? 4 : 2, "voice note"); + if (lore.cassettes.length) toast(lore.cassettes[index % lore.cassettes.length], 7600); + playTinySong(); + }); + }); + } + if (path.includes("/play/patience-game")) { + const target = document.querySelector("[data-patience-target]"); + const count = document.querySelector("[data-patience-count]"); + if (target && count) { + let seconds = 0; + setInterval(() => { + seconds += 1; + count.textContent = String(seconds); + if ([30, 90, 180].includes(seconds)) { + setHiddenMessage(target, "Patience milestone recorded."); + } + }, 1000); + } + } + if (path.includes("/play/terminal-cupboard")) { + const input = document.querySelector("[data-cupboard-input]"); + const log = document.querySelector("[data-cupboard-log]"); + const commands = { + help: "commands: layer, exit", + layer: familyLayers.join("\n"), + exit: "Closed." + }; + input?.addEventListener("keydown", (event) => { + if (event.key !== "Enter") return; + const value = input.value.trim().toLowerCase(); + const line = document.createElement("p"); + setHiddenMessage(line, `> ${value}\n${commands[value] || "Unknown command."}`); + log.appendChild(line); + input.value = ""; + }); + } + } + + function addInvisibleHoverSecrets() { + document.querySelectorAll("h1, h2").forEach((heading, index) => { + if (index > 5) return; + heading.classList.add("hidden-hover-memory"); + const source = [...lore.quotes, ...lore.journals, ...poems]; + if (!source.length) return; + heading.dataset.hiddenMemory = pick(source, `heading-${index}`); + }); + } + + function playTinySong() { + try { + const AudioContext = window.AudioContext || window.webkitAudioContext; + if (!AudioContext) return; + const ctx = new AudioContext(); + const notes = [392, 494, 440, 330, 392]; + notes.forEach((freq, index) => { + const osc = ctx.createOscillator(); + const gain = ctx.createGain(); + osc.frequency.value = freq; + osc.type = "sine"; + gain.gain.setValueAtTime(0.0001, ctx.currentTime + index * 0.18); + gain.gain.exponentialRampToValueAtTime(0.05, ctx.currentTime + index * 0.18 + 0.03); + gain.gain.exponentialRampToValueAtTime(0.0001, ctx.currentTime + index * 0.18 + 0.16); + osc.connect(gain); + gain.connect(ctx.destination); + osc.start(ctx.currentTime + index * 0.18); + osc.stop(ctx.currentTime + index * 0.18 + 0.18); + }); + } catch (_) {} + } + + function escapeHtml(value) { + return String(value).replace(/[&<>"']/g, (char) => ({ + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" + }[char])); + } + + // Features run in this order on every page after the DOM is ready. + // Each function receives the current `memory` object. + const FEATURES = [ + addFooterNote, + addHomepageGreeting, + addWhispers, + addCornerObject, + addLogoSearchAndKeyboardSecrets, + addRareEvents, + addSecretLinks, + enhanceErrors, + addContinuity, + addSeasonAndDates, + addObjectConstellation, + addWeatherWindow, + addOldWebLayer, + addSourceRelics, + addLongKeyboardSecrets, + addPatienceRewards, + addRareSecondLayer, + addFamilyLayerIndex, + addPageSpecificSecrets, + addInvisibleHoverSecrets + ]; + + document.addEventListener("DOMContentLoaded", () => { + const memory = rememberVisit(); + FEATURES.forEach((addFeature) => addFeature(memory)); + }); +}()); diff --git a/assets/scripts/gallery-init.js b/assets/scripts/gallery-init.js index c76eb76..99d4d66 100755 --- a/assets/scripts/gallery-init.js +++ b/assets/scripts/gallery-init.js @@ -1,315 +1,7 @@ -document.addEventListener('DOMContentLoaded', () => { - if (typeof window.BiggerPicture !== 'function') { - console.error('[gallery-init] BiggerPicture not found. Check script path.'); - return; - } - const VIDEO_EXTENSIONS = ['mp4', 'webm', 'mov', 'm4v', 'ogv']; - - const isVideo = (href) => { - if (!href) return false; - href = href.toLowerCase(); - return VIDEO_EXTENSIONS.some(ext => href.endsWith('.' + ext)); - }; - - // 1b) Convert MP4 links into inline
    - const videoLinks = document.querySelectorAll('a[href]'); - videoLinks.forEach(a => { - const href = a.getAttribute("href"); - if (!isVideo(href)) return; - - const video = document.createElement("video"); - video.controls = true; - video.preload = "metadata"; - video.style.maxWidth = "100%"; - video.style.borderRadius = "6px"; - - const source = document.createElement("source"); - source.src = href; - source.type = "video/" + href.split('.').pop(); // guesses correct mime - video.appendChild(source); - - // Replace the link with the inline video - a.parentNode.replaceChild(video, a); - }); - - // 1) Wrap Org-exported images so they’re clickable - const imgs = document.querySelectorAll('.figure img, img.org-svg'); - imgs.forEach((img) => { - if (img.closest('a')) return; // already wrapped - const a = document.createElement('a'); - const href = img.currentSrc || img.src; - a.href = href; - a.dataset.img = href; // lets BP pre-size/raster slides - a.dataset.alt = img.alt || ''; - const setDims = () => { - a.dataset.width = img.naturalWidth || img.width || 1920; - a.dataset.height = img.naturalHeight || img.height || 1080; - }; - if (img.complete) setDims(); else img.addEventListener('load', setDims); - img.style.cursor = 'zoom-in'; - img.parentElement.insertBefore(a, img); - a.appendChild(img); - }); - - // 2) One global BP instance - const bp = BiggerPicture({ target: document.body }); - - // SVG pan/zoom handle - let activePanZoom = null; - const destroyPanZoom = () => { try { activePanZoom?.destroy(); } catch(_){} activePanZoom = null; }; - - // Simple rotate state (for non-SVG images) - let activeContainer = null; - let currentRotation = 0; - let rotateControls = null; - - // 3) Build galleries per content container - const containers = document.querySelectorAll('main, article, .content, body'); - containers.forEach((container) => { - const links = Array.from(container.querySelectorAll( -'.figure a, a:has(img.org-svg), a[href$=".mp4"], a[href$=".webm"], a[href$=".mov"], a[href$=".m4v"], a[href$=".ogv"]' - )); - if (!links.length) return; - - // Start the lightbox on click - links.forEach((link, index) => { - link.addEventListener('click', (e) => { - e.preventDefault(); - document.querySelectorAll(".theme-toggle").forEach(el => { - el.classList.add("hidden"); - }); - - bp.open({ - // IMPORTANT: pass the anchor ELEMENTS, not custom objects - items: links, - el: link, - caption: (el) => el.querySelector('img')?.alt || el.title || '', - maxZoom: 40, // for raster images (PNG/JPG); SVG handled separately - - // Fade-out polish + cleanup - onClose(containerEl) { - destroyPanZoom(); - teardownRotation(); - if (containerEl) containerEl.classList.add('bp-fadeout'); - const themeToggle = document.querySelector(".theme-toggle"); - if (themeToggle) { - themeToggle.classList.remove("hidden"); - } - }, - - // Called once after open and on every slide change - //onOpen(containerEl) { setupRotation(containerEl); enhanceSVG(containerEl); } - onOpen(containerEl) { - const linkEl = bp.currItem; - const href = linkEl?.href || ""; - - if (href.endsWith(".mp4")) { - // Turn off image rotation (not applicable for video) - teardownRotation(); - - const htmlLayer = containerEl.querySelector(".bp-html"); - const imgLayer = containerEl.querySelector(".bp-img"); - - if (!htmlLayer) return; - - // Hide the default image layer - if (imgLayer) imgLayer.style.display = "none"; - - // Insert video player - htmlLayer.innerHTML = ` - - `; - - return; // Do not run image/SVG enhancements - } - - // Image behaviour - setupRotation(containerEl); - enhanceSVG(containerEl); - } , - onUpdate(containerEl){ setupRotation(containerEl); enhanceSVG(containerEl); } - }); - }); - }); - }); - - // 4) Simple rotate buttons for raster images - function ensureRotateControls() { - if (rotateControls) return rotateControls; - - const wrapper = document.createElement('div'); - wrapper.className = 'bp-rotate-controls'; - Object.assign(wrapper.style, { - position: 'fixed', - bottom: '1.5rem', - right: '1.5rem', - display: 'flex', - gap: '0.5rem', - zIndex: '9999', - pointerEvents: 'auto' - }); - - const mkBtn = (label, title) => { - const btn = document.createElement('button'); - btn.type = 'button'; - btn.textContent = label; - btn.title = title; - btn.setAttribute('aria-label', title); - Object.assign(btn.style, { - padding: '0.4rem 0.6rem', - borderRadius: '999px', - border: 'none', - fontSize: '1.2rem', - cursor: 'pointer', - background: 'rgba(30,30,30,0.8)', - color: '#fff' - }); - return btn; - }; - - const left = mkBtn('⟲', 'Rotate image 90° left'); - const right = mkBtn('⟳', 'Rotate image 90° right'); - - left.addEventListener('click', (e) => { - e.stopPropagation(); // don’t close the lightbox - if (!activeContainer) return; - currentRotation = (currentRotation - 90 + 360) % 360; - applyRotation(); - }); - - right.addEventListener('click', (e) => { - e.stopPropagation(); - if (!activeContainer) return; - currentRotation = (currentRotation + 90) % 360; - applyRotation(); - }); - - wrapper.append(left, right); - document.body.appendChild(wrapper); - rotateControls = wrapper; - return rotateControls; - } - - function ensureRotateWrapper() { - if (!activeContainer) return null; - - const imgRoot = activeContainer.querySelector('.bp-img'); - if (!imgRoot) return null; - - let imgEl = imgRoot.querySelector('img'); - if (!imgEl) return null; - - const src = (imgEl.currentSrc || imgEl.src || '').toLowerCase(); - // We only rotate raster images; SVGs are handled via svg-pan-zoom - if (src.endsWith('.svg')) return null; - - let wrapper = imgRoot.querySelector('.bp-rotate-wrapper'); - if (!wrapper) { - wrapper = document.createElement('div'); - wrapper.className = 'bp-rotate-wrapper'; - wrapper.style.display = 'inline-block'; - wrapper.style.transformOrigin = 'center center'; - - imgRoot.appendChild(wrapper); - wrapper.appendChild(imgEl); - } else if (!wrapper.contains(imgEl)) { - // Slide changed and BiggerPicture replaced the - wrapper.innerHTML = ''; - wrapper.appendChild(imgEl); - } - - return wrapper; - } - - function applyRotation() { - const wrapper = ensureRotateWrapper(); - if (!wrapper) return; - wrapper.style.transform = `rotate(${currentRotation}deg)`; - } - - function setupRotation(containerEl) { - activeContainer = containerEl; - currentRotation = 0; - const controls = ensureRotateControls(); - controls.style.display = 'flex'; - applyRotation(); - } - - function teardownRotation() { - activeContainer = null; - currentRotation = 0; - if (rotateControls) { - rotateControls.style.display = 'none'; - } - } - - - // 4) If current slide is an SVG, swap to inline + enable svg-pan-zoom - async function enhanceSVG(containerEl) { - try { - destroyPanZoom(); - - const imgEl = containerEl.querySelector('.bp-img img'); - if (!imgEl) return; - - const src = imgEl.currentSrc || imgEl.src || ''; - const isSVG = src.toLowerCase().endsWith('.svg'); - const htmlLayer = containerEl.querySelector('.bp-html'); - if (!isSVG || !htmlLayer) { - // ensure any previous holder is removed and bitmap is visible - const old = htmlLayer?.querySelector('.bp-svg-holder'); - if (old) old.remove(); - imgEl.style.visibility = ''; - return; - } - - // Create/clear holder - let holder = htmlLayer.querySelector('.bp-svg-holder'); - if (!holder) { - holder = document.createElement('div'); - holder.className = 'bp-svg-holder'; - holder.style.maxWidth = '95vw'; - holder.style.maxHeight = '95vh'; - htmlLayer.appendChild(holder); - } - holder.innerHTML = ''; - - // Hide the bitmap so only the inline SVG shows - imgEl.style.visibility = 'hidden'; - - // Inline the SVG - const res = await fetch(src, { cache: 'force-cache' }); - const text = await res.text(); - holder.innerHTML = text; - - const svg = holder.querySelector('svg'); - if (!svg) { imgEl.style.visibility = ''; return; } - - svg.style.maxWidth = '95vw'; - svg.style.maxHeight = '95vh'; - svg.style.display = 'block'; - - if (typeof window.svgPanZoom === 'function') { - activePanZoom = svgPanZoom(svg, { - zoomEnabled: true, - controlIconsEnabled: true, - fit: true, - center: true, - minZoom: 0.05, - maxZoom: 400, // effectively "unlimited" - zoomScaleSensitivity: 0.25, - dblClickZoomEnabled: true - }); - // Keep wheel inside lightbox - holder.addEventListener('wheel', (e) => e.stopPropagation(), { passive: true }); - } else { - console.warn('[gallery-init] svg-pan-zoom not loaded'); - } - } catch (err) { - console.error('[gallery-init] SVG enhance failed:', err); - } - } -}); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/ui/gallery-init.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/hidden-details.js b/assets/scripts/hidden-details.js index 72ebbc9..e5c3b25 100644 --- a/assets/scripts/hidden-details.js +++ b/assets/scripts/hidden-details.js @@ -1,691 +1,7 @@ (function () { "use strict"; - - /* - * Hidden site details - * ------------------- - * This file adds small hidden interactions across the site: footer notes, - * click targets, search/keyboard secrets, rare messages, and page-specific - * behavior for the hidden /play pages. - * - * How to add your own things: - * - Add new text to EDITABLE CONTENT arrays such as `details`, `poems`, - * `greetings`, or `lore`. - * - Add search-triggered toast messages to `SEARCH_TOASTS`. - * - Add search-triggered page redirects to `SEARCH_ROUTES`. - * - Add typed keyboard phrases to `KEYBOARD_SECRETS` or `LONG_KEYBOARD_SECRETS`. - * - Add a new feature by writing an `addYourFeature(memory)` function and - * adding it to the `FEATURES` list at the bottom of the file. - */ - - // Storage keys. v1 is read once so old visitors keep their hidden progress. - const STORAGE_KEY = "zxh_hidden_details_v2"; - const OLD_STORAGE_KEY = "zxh_hidden_details_v1"; - - // Shared page context. These are captured once so daily random picks stay stable. - const now = new Date(); - const hour = now.getHours(); - const path = window.location.pathname; - const state = readState(); - const CHARACTER_AVATARS = { - "lima": { - avatar: "/assets/avatars/lima.jpg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["lima"], - glow: "#f2c58b" - }, - "aphy": { - avatar: "/assets/avatars/aphy.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["aphy"], - glow: "#9dd3a6" - }, - "sensei chi": { - avatar: "/assets/avatars/sensei-chi.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["sensei chi", "sensei"], - glow: "#9ccddd" - }, - "young z": { - avatar: "/assets/avatars/young-z.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["young z", "young"], - glow: "#f0b85c" - }, - "future z": { - avatar: "/assets/avatars/future-z.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["future z", "future"], - glow: "#c2a4ee" - }, - "z": { - avatar: "/assets/avatars/z.jpeg", - fallback: "/assets/avatars/z.jpeg", - aliases: ["z", "zaine"], - glow: "#ead68e" - } - }; - - // ----------------------------- - // EDITABLE CONTENT - // ----------------------------- - // Generated by the hidden narrative authoring page. - // Friendly source of truth: assets/content/hidden-details.json - - const familyLayers = []; - - const details = []; - - const poems = []; - - const greetings = []; - - const nightMessages = []; - - const lore = { - "quotes": [], - "conversations": [], - "journals": [], - "warnings": [], - "dreams": [], - "cassettes": [], - "fakeUsers": [], - "seasonal": {}, - "homepageTakeovers": [], - "roomLinks": [] -}; - - // Exact search text -> toast message. - const SEARCH_TOASTS = {}; - - // Exact search text -> hidden page route. - const SEARCH_ROUTES = {}; - - // Short typed phrases. Stored in sessionStorage as a rolling key chain. - const KEYBOARD_SECRETS = []; - - // Longer typed phrases and character names. - const LONG_KEYBOARD_SECRETS = []; - - - // ----------------------------- - // STATE HELPERS - // ----------------------------- - - function readState() { - let current = {}; - try { - current = JSON.parse(localStorage.getItem(STORAGE_KEY) || "{}"); - } catch (_) {} - if (!current.visits) { - try { - const oldState = JSON.parse(localStorage.getItem(OLD_STORAGE_KEY) || "{}"); - current = { ...oldState, migratedFromV1: true }; - localStorage.setItem(STORAGE_KEY, JSON.stringify(current)); - } catch (_) {} - } - return current; - } - - function writeState(next) { - try { - localStorage.setItem(STORAGE_KEY, JSON.stringify(next)); - } catch (_) {} - } - - function pick(list, salt) { - const seed = hash(`${path}|${now.toDateString()}|${salt || ""}`); - return list[seed % list.length]; - } - - function hash(value) { - let h = 2166136261; - for (let i = 0; i < value.length; i += 1) { - h ^= value.charCodeAt(i); - h = Math.imul(h, 16777619); - } - return Math.abs(h >>> 0); - } - - // ----------------------------- - // UI HELPERS - // ----------------------------- - - function characterForMessage(message) { - const text = String(message || "").toLowerCase(); - return Object.entries(CHARACTER_AVATARS).find(([, config]) => { - return (config.aliases || []).some((alias) => { - const escaped = alias.toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - return new RegExp(`(^|[^a-z0-9-])${escaped}([^a-z0-9-]|$)`).test(text); - }); - })?.[0] || ""; - } - - function avatarMarkup(character) { - const config = CHARACTER_AVATARS[character]; - if (!config) return ""; - return ``; - } - - function hiddenMessageMarkup(message) { - const character = characterForMessage(message); - return character - ? `${avatarMarkup(character)}${escapeHtml(message)}` - : `${escapeHtml(message)}`; - } - - function setHiddenMessage(el, message) { - const character = characterForMessage(message); - el.classList.toggle("has-hidden-avatar", Boolean(character)); - if (character) { - el.dataset.hiddenCharacter = character; - el.innerHTML = hiddenMessageMarkup(message); - } else { - delete el.dataset.hiddenCharacter; - el.textContent = message; - } - } - - function toast(message, duration) { - let el = document.querySelector(".hidden-toast"); - if (!el) { - el = document.createElement("div"); - el.className = "hidden-toast"; - el.setAttribute("role", "status"); - document.body.appendChild(el); - } - setHiddenMessage(el, message); - el.classList.add("is-visible"); - window.clearTimeout(el._timer); - el._timer = window.setTimeout(() => el.classList.remove("is-visible"), duration || 5600); - } - - function redirectTo(route) { - window.location.href = route; - } - - function runSecretAction(secret) { - if (secret.route) redirectTo(secret.route); - if (secret.message) toast(secret.message); - if (secret.song) playTinySong(); - } - - function layerForSearch(value) { - if (value.includes("future")) return 4; - if (value.includes("sensei") || value.includes("aphy")) return 3; - return 2; - } - - function rememberVisit() { - const visits = (state.visits || 0) + 1; - const seen = Array.isArray(state.seen) ? state.seen : []; - const pathCounts = { ...(state.pathCounts || {}) }; - pathCounts[path] = (pathCounts[path] || 0) + 1; - const layerVisits = { ...(state.layerVisits || {}) }; - const next = { - ...state, - visits, - lastPath: path, - pathCounts, - layerVisits, - seen: Array.from(new Set([...seen, path])).slice(-100), - firstSeen: state.firstSeen || new Date().toISOString(), - lastSeen: new Date().toISOString() - }; - writeState(next); - return next; - } - - function awardLayer(layer, reason) { - const next = readState(); - next.layerVisits = { ...(next.layerVisits || {}) }; - next.layerVisits[layer] = (next.layerVisits[layer] || 0) + 1; - next.lastLayerReason = reason; - writeState(next); - } - - // ----------------------------- - // GLOBAL FEATURES - // ----------------------------- - - function addFooterNote(memory) { - const footer = document.querySelector("footer"); - if (!footer || !details.length) return; - const note = document.createElement("p"); - note.className = "hidden-footer-note"; - const base = pick(details, "footer"); - setHiddenMessage(note, memory.visits > 4 ? `${base} You have passed through ${memory.visits} times.` : base); - footer.appendChild(note); - } - - function addHomepageGreeting(memory) { - const target = document.querySelector("#db-greeting"); - if (!target || !greetings.length) return; - setHiddenMessage(target, pick(greetings, `greeting-${memory.visits}`)); - const extra = document.createElement("p"); - extra.className = "hidden-greeting"; - setHiddenMessage(extra, ""); - target.closest("div")?.appendChild(extra); - } - - function addWhispers() { - // Event: click one of the tiny "?" marks appended to long paragraphs. - const paragraphs = Array.from(document.querySelectorAll("main p, #content p, article p")).filter((p) => p.textContent.trim().length > 80); - paragraphs.slice(0, 5).forEach((p, index) => { - if ((hash(path + index) + index) % 3 !== 0) return; - const mark = document.createElement("span"); - mark.className = "hidden-whisper"; - mark.tabIndex = 0; - mark.textContent = " ?"; - const source = index % 2 ? poems : details; - if (!source.length) return; - mark.title = pick(source, `whisper-${index}`); - mark.addEventListener("click", () => { - awardLayer(index % 2 ? 2 : 1, "paragraph whisper"); - toast(mark.title); - }); - p.appendChild(mark); - }); - } - - function addCornerObject() { - // Event: click the small fixed button in the bottom-left corner. - const object = document.createElement("button"); - object.className = "hidden-corner-object"; - object.type = "button"; - object.title = "hidden interaction"; - object.textContent = state.visits % 2 ? "*" : "~"; - document.body.appendChild(object); - let clicks = 0; - object.addEventListener("click", () => { - clicks += 1; - awardLayer(clicks > 3 ? 3 : 1, "corner object"); - toast("Hidden interaction recorded."); - if (clicks === 7) window.location.href = "/play/left-behind.html"; - }); - } - - function addLogoSearchAndKeyboardSecrets(memory) { - // Events: - // - Click `.site-brand` repeatedly on the homepage. - // - Type exact words into `#search-input`. - // - Type phrases anywhere on the page. - const nav = document.querySelector(".site-brand"); - if (nav) { - let taps = Number(sessionStorage.getItem("zxh_logo_taps") || 0); - nav.addEventListener("click", (event) => { - if (path === "/" || path === "/index.html") { - event.preventDefault(); - taps += 1; - sessionStorage.setItem("zxh_logo_taps", String(taps)); - awardLayer(taps >= 5 ? 3 : 1, "logo taps"); - toast(taps >= 5 ? "Hidden route available: /play/dream-corridor.html" : "Hidden interaction recorded."); - if (taps >= 8) window.location.href = "/play/dream-corridor.html"; - } - }); - } - - const search = document.querySelector("#search-input"); - if (search) { - search.addEventListener("input", () => { - const value = search.value.trim().toLowerCase(); - if (SEARCH_TOASTS[value]) toast(SEARCH_TOASTS[value]); - if (SEARCH_ROUTES[value]) { - awardLayer(layerForSearch(value), `search ${value}`); - redirectTo(SEARCH_ROUTES[value]); - } - }); - } - - document.addEventListener("keydown", (event) => { - const key = event.key.toLowerCase(); - const chain = `${sessionStorage.getItem("zxh_key_chain") || ""}${key}`.slice(-18); - sessionStorage.setItem("zxh_key_chain", chain); - KEYBOARD_SECRETS - .filter((secret) => chain.endsWith(secret.phrase)) - .forEach(runSecretAction); - }); - - if (memory.seen?.length >= 6 && !state.travellerNoteShown) { - window.setTimeout(() => { - toast("Hidden path recorded."); - writeState({ ...readState(), travellerNoteShown: true }); - }, 1600); - } - } - - function addRareEvents() { - if (hour >= 22 || hour < 5) { - document.body.classList.add("hidden-late-night"); - if (nightMessages.length) window.setTimeout(() => toast(pick(nightMessages, "night"), 2200), 900); - } - const roll = Math.random(); - if (roll < 0.003) { - window.setTimeout(() => showDriftNote("", ""), 1800); - awardLayer(3, "rare sensei appearance"); - } else if (roll < 0.008) { - window.setTimeout(() => toast("Hidden warning."), 2400); - awardLayer(4, "future warning"); - } - } - - function showDriftNote(text, art) { - const panel = document.createElement("aside"); - panel.className = "hidden-drift-note"; - const character = characterForMessage(text); - panel.innerHTML = `
    ${hiddenMessageMarkup(text)}
    ${escapeHtml(art)}
    `; - panel.querySelector("button").addEventListener("click", () => panel.remove()); - document.body.appendChild(panel); - } - - function addSecretLinks() { - [ - ["/play/left-behind.html", "left behind"], - ["/play/dream-corridor.html", "dream corridor"], - ["/play/kitchen-light.html", "kitchen light"], - ...lore.roomLinks - ].forEach(([href, label], index) => { - const link = document.createElement("a"); - link.className = "hidden-secret-link"; - link.href = href; - link.textContent = label; - link.style.left = `${index + 1}px`; - document.body.appendChild(link); - }); - } - - function enhanceErrors() { - if (document.title.match(/404|not found/i) || document.body.textContent.match(/404|not found/i)) { - toast("Page not found."); - } - } - - function addContinuity(memory) { - const milestones = { - 64: "Hidden layer unlocked." - }; - if (milestones[memory.visits] && !state[`milestone_${memory.visits}`]) { - const layer = memory.visits >= 31 ? 4 : memory.visits >= 9 ? 3 : 2; - awardLayer(layer, `visit milestone ${memory.visits}`); - window.setTimeout(() => toast(milestones[memory.visits], 7000), 1200); - writeState({ ...readState(), [`milestone_${memory.visits}`]: true }); - } - - const count = memory.pathCounts?.[path] || 0; - if ([3, 7, 12].includes(count)) { - window.setTimeout(() => toast("Page revisit recorded.", 6400), 1700); - } - } - - function addSeasonAndDates(memory) { - const month = now.getMonth(); - const day = now.getDate(); - const season = month < 2 || month === 11 ? "winter" : month < 5 ? "spring" : month < 8 ? "summer" : "autumn"; - if (Math.random() < 0.18 && lore.seasonal[season]) window.setTimeout(() => toast(lore.seasonal[season], 5600), 2600); - const first = memory.firstSeen ? new Date(memory.firstSeen) : null; - if (first && memory.visits > 1 && first.getMonth() === month && first.getDate() === day) { - window.setTimeout(() => toast("Visitor anniversary recorded.", 7000), 1400); - } - } - - function addObjectConstellation() { - // Event: click the small keepsake buttons along the bottom rail. - const rail = document.createElement("div"); - rail.className = "hidden-object-rail"; - rail.setAttribute("aria-label", "Hidden objects"); - const objects = [ - ["ring", "Hidden object recorded."], - ["bot", "Hidden object recorded."], - ["tea", "Hidden object recorded."], - ["crayon", "Hidden object recorded."], - ["clock", "Hidden object recorded."] - ]; - objects.forEach(([name, message]) => { - const button = document.createElement("button"); - button.type = "button"; - button.className = `hidden-keepsake hidden-keepsake--${name}`; - button.title = name; - button.textContent = { ring: "o", bot: "#", tea: "u", crayon: "/", clock: ":" }[name]; - button.addEventListener("click", () => { - const next = readState(); - next.keepsakes = Array.from(new Set([...(next.keepsakes || []), name])); - writeState(next); - awardLayer(next.keepsakes.length >= 3 ? 3 : 2, `keepsake ${name}`); - toast(message); - if (next.keepsakes.length >= objects.length) { - window.setTimeout(() => toast("Hidden object set completed."), 1100); - } - }); - rail.appendChild(button); - }); - document.body.appendChild(rail); - } - - function addWeatherWindow(memory) { - // Event: click the small "window" button. This asks for browser geolocation. - if (memory.visits < 3 || !("geolocation" in navigator)) return; - const button = document.createElement("button"); - button.className = "hidden-weather-window"; - button.type = "button"; - button.title = "Check outside weather"; - button.textContent = "window"; - button.addEventListener("click", () => { - toast("Checking outside weather."); - navigator.geolocation.getCurrentPosition((pos) => { - const { latitude, longitude } = pos.coords; - fetch(`https://api.open-meteo.com/v1/forecast?latitude=${latitude.toFixed(3)}&longitude=${longitude.toFixed(3)}¤t=temperature_2m,precipitation&timezone=auto`) - .then((res) => res.json()) - .then((data) => { - const current = data.current || {}; - const rain = Number(current.precipitation || 0) > 0; - const temp = Math.round(Number(current.temperature_2m)); - toast(rain ? `Outside: rain, ${temp}C.` : `Outside: ${temp}C.`); - }) - .catch(() => toast("Weather check failed.")); - }, () => toast("No outside weather today.")); - }); - document.body.appendChild(button); - } - - function addOldWebLayer(memory) { - if (Math.random() < 0.08 || memory.visits > 10) { - const stamp = document.createElement("div"); - stamp.className = "hidden-oldweb-stamp"; - if (!lore.fakeUsers.length) return; - stamp.title = pick(lore.fakeUsers, "fake-user"); - stamp.textContent = "best viewed with patience"; - stamp.addEventListener("click", () => { - awardLayer(1, "old web stamp"); - toast(stamp.title); - }); - document.body.appendChild(stamp); - } - const comments = document.querySelector("#comments"); - if (comments && lore.fakeUsers.length && !comments.querySelector(".hidden-guestbook-line")) { - const line = document.createElement("p"); - line.className = "hidden-guestbook-line"; - setHiddenMessage(line, pick(lore.fakeUsers, "comment-lore")); - comments.appendChild(line); - } - } - - function addSourceRelics() { - const marker = document.createComment("hidden-details"); - document.documentElement.appendChild(marker); - document.querySelectorAll("img[alt=''], img:not([alt])").forEach((img, index) => { - if (index > 2) return; - img.alt = "Decorative image."; - }); - } - - function addLongKeyboardSecrets() { - // Event: type longer hidden phrases anywhere on the page. - document.addEventListener("keydown", (event) => { - const chain = `${sessionStorage.getItem("zxh_second_chain") || ""}${event.key.toLowerCase()}`.slice(-24); - sessionStorage.setItem("zxh_second_chain", chain); - LONG_KEYBOARD_SECRETS - .filter((secret) => chain.endsWith(secret.phrase)) - .forEach(runSecretAction); - }); - } - - function addPatienceRewards(memory) { - // Event: no movement, key presses, scrolling, or clicking for 90 seconds. - if (memory.visits < 2) return; - let idleTimer = null; - const startIdle = () => { - window.clearTimeout(idleTimer); - idleTimer = window.setTimeout(() => { - awardLayer(5, "patience"); - toast("Idle moment recorded.", 7600); - const next = readState(); - next.patientMoments = (next.patientMoments || 0) + 1; - writeState(next); - }, 90000); - }; - ["mousemove", "keydown", "scroll", "click"].forEach((name) => document.addEventListener(name, startIdle, { passive: true })); - startIdle(); - } - - function addRareSecondLayer() { - const roll = Math.random(); - if ((path === "/" || path === "/index.html") && roll < 0.006) { - document.body.classList.add("hidden-home-takeover"); - if (lore.homepageTakeovers.length) window.setTimeout(() => showDriftNote(pick(lore.homepageTakeovers, "takeover"), ""), 600); - } else if (roll < 0.002) { - window.setTimeout(() => showDriftNote("", ""), 1500); - } else if (roll < 0.006) { - if (lore.dreams.length) window.setTimeout(() => toast(pick(lore.dreams, "rare-dream"), 7600), 2000); - } else if (roll < 0.014) { - if (lore.warnings.length) window.setTimeout(() => toast(pick(lore.warnings, "rare-warning"), 6800), 2300); - } - } - - function addFamilyLayerIndex(memory) { - if (!path.includes("/play/family-layer-index")) return; - const target = document.querySelector("[data-family-layer-index]"); - if (!target) return; - const visits = readState().layerVisits || {}; - target.innerHTML = familyLayers.map((line, layer) => { - const count = visits[layer] || 0; - const character = characterForMessage(line); - return `
  • ${hiddenMessageMarkup(line)}
    local encounters: ${count}
  • `; - }).join(""); - } - - function addPageSpecificSecrets() { - // Events only used by specific `/play/...` pages. - if (path.includes("/play/cassette-log")) { - document.querySelectorAll("[data-cassette]").forEach((button, index) => { - button.addEventListener("click", () => { - awardLayer(index >= 2 ? 4 : 2, "voice note"); - if (lore.cassettes.length) toast(lore.cassettes[index % lore.cassettes.length], 7600); - playTinySong(); - }); - }); - } - if (path.includes("/play/patience-game")) { - const target = document.querySelector("[data-patience-target]"); - const count = document.querySelector("[data-patience-count]"); - if (target && count) { - let seconds = 0; - setInterval(() => { - seconds += 1; - count.textContent = String(seconds); - if ([30, 90, 180].includes(seconds)) { - setHiddenMessage(target, "Patience milestone recorded."); - } - }, 1000); - } - } - if (path.includes("/play/terminal-cupboard")) { - const input = document.querySelector("[data-cupboard-input]"); - const log = document.querySelector("[data-cupboard-log]"); - const commands = { - help: "commands: layer, exit", - layer: familyLayers.join("\n"), - exit: "Closed." - }; - input?.addEventListener("keydown", (event) => { - if (event.key !== "Enter") return; - const value = input.value.trim().toLowerCase(); - const line = document.createElement("p"); - setHiddenMessage(line, `> ${value}\n${commands[value] || "Unknown command."}`); - log.appendChild(line); - input.value = ""; - }); - } - } - - function addInvisibleHoverSecrets() { - document.querySelectorAll("h1, h2").forEach((heading, index) => { - if (index > 5) return; - heading.classList.add("hidden-hover-memory"); - const source = [...lore.quotes, ...lore.journals, ...poems]; - if (!source.length) return; - heading.dataset.hiddenMemory = pick(source, `heading-${index}`); - }); - } - - function playTinySong() { - try { - const AudioContext = window.AudioContext || window.webkitAudioContext; - if (!AudioContext) return; - const ctx = new AudioContext(); - const notes = [392, 494, 440, 330, 392]; - notes.forEach((freq, index) => { - const osc = ctx.createOscillator(); - const gain = ctx.createGain(); - osc.frequency.value = freq; - osc.type = "sine"; - gain.gain.setValueAtTime(0.0001, ctx.currentTime + index * 0.18); - gain.gain.exponentialRampToValueAtTime(0.05, ctx.currentTime + index * 0.18 + 0.03); - gain.gain.exponentialRampToValueAtTime(0.0001, ctx.currentTime + index * 0.18 + 0.16); - osc.connect(gain); - gain.connect(ctx.destination); - osc.start(ctx.currentTime + index * 0.18); - osc.stop(ctx.currentTime + index * 0.18 + 0.18); - }); - } catch (_) {} - } - - function escapeHtml(value) { - return String(value).replace(/[&<>"']/g, (char) => ({ - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'" - }[char])); - } - - // Features run in this order on every page after the DOM is ready. - // Each function receives the current `memory` object. - const FEATURES = [ - addFooterNote, - addHomepageGreeting, - addWhispers, - addCornerObject, - addLogoSearchAndKeyboardSecrets, - addRareEvents, - addSecretLinks, - enhanceErrors, - addContinuity, - addSeasonAndDates, - addObjectConstellation, - addWeatherWindow, - addOldWebLayer, - addSourceRelics, - addLongKeyboardSecrets, - addPatienceRewards, - addRareSecondLayer, - addFamilyLayerIndex, - addPageSpecificSecrets, - addInvisibleHoverSecrets - ]; - - document.addEventListener("DOMContentLoaded", () => { - const memory = rememberVisit(); - FEATURES.forEach((addFeature) => addFeature(memory)); - }); + var script = document.createElement("script"); + script.src = "/assets/scripts/features/hidden-details.js"; + script.defer = true; + document.head.appendChild(script); }()); diff --git a/assets/scripts/lunr.js b/assets/scripts/lunr.js index 6aa370f..4e80bce 100755 --- a/assets/scripts/lunr.js +++ b/assets/scripts/lunr.js @@ -1,3475 +1,7 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ - -;(function(){ - -/** - * A convenience function for configuring and constructing - * a new lunr Index. - * - * A lunr.Builder instance is created and the pipeline setup - * with a trimmer, stop word filter and stemmer. - * - * This builder object is yielded to the configuration function - * that is passed as a parameter, allowing the list of fields - * and other builder parameters to be customised. - * - * All documents _must_ be added within the passed config function. - * - * @example - * var idx = lunr(function () { - * this.field('title') - * this.field('body') - * this.ref('id') - * - * documents.forEach(function (doc) { - * this.add(doc) - * }, this) - * }) - * - * @see {@link lunr.Builder} - * @see {@link lunr.Pipeline} - * @see {@link lunr.trimmer} - * @see {@link lunr.stopWordFilter} - * @see {@link lunr.stemmer} - * @namespace {function} lunr - */ -var lunr = function (config) { - var builder = new lunr.Builder - - builder.pipeline.add( - lunr.trimmer, - lunr.stopWordFilter, - lunr.stemmer - ) - - builder.searchPipeline.add( - lunr.stemmer - ) - - config.call(builder, builder) - return builder.build() -} - -lunr.version = "2.3.9" -/*! - * lunr.utils - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A namespace containing utils for the rest of the lunr library - * @namespace lunr.utils - */ -lunr.utils = {} - -/** - * Print a warning message to the console. - * - * @param {String} message The message to be printed. - * @memberOf lunr.utils - * @function - */ -lunr.utils.warn = (function (global) { - /* eslint-disable no-console */ - return function (message) { - if (global.console && console.warn) { - console.warn(message) - } - } - /* eslint-enable no-console */ -})(this) - -/** - * Convert an object to a string. - * - * In the case of `null` and `undefined` the function returns - * the empty string, in all other cases the result of calling - * `toString` on the passed object is returned. - * - * @param {Any} obj The object to convert to a string. - * @return {String} string representation of the passed object. - * @memberOf lunr.utils - */ -lunr.utils.asString = function (obj) { - if (obj === void 0 || obj === null) { - return "" - } else { - return obj.toString() - } -} - -/** - * Clones an object. - * - * Will create a copy of an existing object such that any mutations - * on the copy cannot affect the original. - * - * Only shallow objects are supported, passing a nested object to this - * function will cause a TypeError. - * - * Objects with primitives, and arrays of primitives are supported. - * - * @param {Object} obj The object to clone. - * @return {Object} a clone of the passed object. - * @throws {TypeError} when a nested object is passed. - * @memberOf Utils - */ -lunr.utils.clone = function (obj) { - if (obj === null || obj === undefined) { - return obj - } - - var clone = Object.create(null), - keys = Object.keys(obj) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i], - val = obj[key] - - if (Array.isArray(val)) { - clone[key] = val.slice() - continue - } - - if (typeof val === 'string' || - typeof val === 'number' || - typeof val === 'boolean') { - clone[key] = val - continue - } - - throw new TypeError("clone is not deep and does not support nested objects") - } - - return clone -} -lunr.FieldRef = function (docRef, fieldName, stringValue) { - this.docRef = docRef - this.fieldName = fieldName - this._stringValue = stringValue -} - -lunr.FieldRef.joiner = "/" - -lunr.FieldRef.fromString = function (s) { - var n = s.indexOf(lunr.FieldRef.joiner) - - if (n === -1) { - throw "malformed field ref string" - } - - var fieldRef = s.slice(0, n), - docRef = s.slice(n + 1) - - return new lunr.FieldRef (docRef, fieldRef, s) -} - -lunr.FieldRef.prototype.toString = function () { - if (this._stringValue == undefined) { - this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef - } - - return this._stringValue -} -/*! - * lunr.Set - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A lunr set. - * - * @constructor - */ -lunr.Set = function (elements) { - this.elements = Object.create(null) - - if (elements) { - this.length = elements.length - - for (var i = 0; i < this.length; i++) { - this.elements[elements[i]] = true - } - } else { - this.length = 0 - } -} - -/** - * A complete set that contains all elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.complete = { - intersect: function (other) { - return other - }, - - union: function () { - return this - }, - - contains: function () { - return true - } -} - -/** - * An empty set that contains no elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.empty = { - intersect: function () { - return this - }, - - union: function (other) { - return other - }, - - contains: function () { - return false - } -} - -/** - * Returns true if this set contains the specified object. - * - * @param {object} object - Object whose presence in this set is to be tested. - * @returns {boolean} - True if this set contains the specified object. - */ -lunr.Set.prototype.contains = function (object) { - return !!this.elements[object] -} - -/** - * Returns a new set containing only the elements that are present in both - * this set and the specified set. - * - * @param {lunr.Set} other - set to intersect with this set. - * @returns {lunr.Set} a new set that is the intersection of this and the specified set. - */ - -lunr.Set.prototype.intersect = function (other) { - var a, b, elements, intersection = [] - - if (other === lunr.Set.complete) { - return this - } - - if (other === lunr.Set.empty) { - return other - } - - if (this.length < other.length) { - a = this - b = other - } else { - a = other - b = this - } - - elements = Object.keys(a.elements) - - for (var i = 0; i < elements.length; i++) { - var element = elements[i] - if (element in b.elements) { - intersection.push(element) - } - } - - return new lunr.Set (intersection) -} - -/** - * Returns a new set combining the elements of this and the specified set. - * - * @param {lunr.Set} other - set to union with this set. - * @return {lunr.Set} a new set that is the union of this and the specified set. - */ - -lunr.Set.prototype.union = function (other) { - if (other === lunr.Set.complete) { - return lunr.Set.complete - } - - if (other === lunr.Set.empty) { - return this - } - - return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) -} -/** - * A function to calculate the inverse document frequency for - * a posting. This is shared between the builder and the index - * - * @private - * @param {object} posting - The posting for a given term - * @param {number} documentCount - The total number of documents. - */ -lunr.idf = function (posting, documentCount) { - var documentsWithTerm = 0 - - for (var fieldName in posting) { - if (fieldName == '_index') continue // Ignore the term index, its not a field - documentsWithTerm += Object.keys(posting[fieldName]).length - } - - var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) - - return Math.log(1 + Math.abs(x)) -} - -/** - * A token wraps a string representation of a token - * as it is passed through the text processing pipeline. - * - * @constructor - * @param {string} [str=''] - The string token being wrapped. - * @param {object} [metadata={}] - Metadata associated with this token. - */ -lunr.Token = function (str, metadata) { - this.str = str || "" - this.metadata = metadata || {} -} - -/** - * Returns the token string that is being wrapped by this object. - * - * @returns {string} - */ -lunr.Token.prototype.toString = function () { - return this.str -} - -/** - * A token update function is used when updating or optionally - * when cloning a token. - * - * @callback lunr.Token~updateFunction - * @param {string} str - The string representation of the token. - * @param {Object} metadata - All metadata associated with this token. - */ - -/** - * Applies the given function to the wrapped string token. - * - * @example - * token.update(function (str, metadata) { - * return str.toUpperCase() - * }) - * - * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. - * @returns {lunr.Token} - */ -lunr.Token.prototype.update = function (fn) { - this.str = fn(this.str, this.metadata) - return this -} - -/** - * Creates a clone of this token. Optionally a function can be - * applied to the cloned token. - * - * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. - * @returns {lunr.Token} - */ -lunr.Token.prototype.clone = function (fn) { - fn = fn || function (s) { return s } - return new lunr.Token (fn(this.str, this.metadata), this.metadata) -} -/*! - * lunr.tokenizer - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A function for splitting a string into tokens ready to be inserted into - * the search index. Uses `lunr.tokenizer.separator` to split strings, change - * the value of this property to change how strings are split into tokens. - * - * This tokenizer will convert its parameter to a string by calling `toString` and - * then will split this string on the character in `lunr.tokenizer.separator`. - * Arrays will have their elements converted to strings and wrapped in a lunr.Token. - * - * Optional metadata can be passed to the tokenizer, this metadata will be cloned and - * added as metadata to every token that is created from the object to be tokenized. - * - * @static - * @param {?(string|object|object[])} obj - The object to convert into tokens - * @param {?object} metadata - Optional metadata to associate with every token - * @returns {lunr.Token[]} - * @see {@link lunr.Pipeline} - */ -lunr.tokenizer = function (obj, metadata) { - if (obj == null || obj == undefined) { - return [] - } - - if (Array.isArray(obj)) { - return obj.map(function (t) { - return new lunr.Token( - lunr.utils.asString(t).toLowerCase(), - lunr.utils.clone(metadata) - ) - }) - } - - var str = obj.toString().toLowerCase(), - len = str.length, - tokens = [] - - for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { - var char = str.charAt(sliceEnd), - sliceLength = sliceEnd - sliceStart - - if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { - - if (sliceLength > 0) { - var tokenMetadata = lunr.utils.clone(metadata) || {} - tokenMetadata["position"] = [sliceStart, sliceLength] - tokenMetadata["index"] = tokens.length - - tokens.push( - new lunr.Token ( - str.slice(sliceStart, sliceEnd), - tokenMetadata - ) - ) - } - - sliceStart = sliceEnd + 1 - } - - } - - return tokens -} - -/** - * The separator used to split a string into tokens. Override this property to change the behaviour of - * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. - * - * @static - * @see lunr.tokenizer - */ -lunr.tokenizer.separator = /[\s\-]+/ -/*! - * lunr.Pipeline - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.Pipelines maintain an ordered list of functions to be applied to all - * tokens in documents entering the search index and queries being ran against - * the index. - * - * An instance of lunr.Index created with the lunr shortcut will contain a - * pipeline with a stop word filter and an English language stemmer. Extra - * functions can be added before or after either of these functions or these - * default functions can be removed. - * - * When run the pipeline will call each function in turn, passing a token, the - * index of that token in the original list of all tokens and finally a list of - * all the original tokens. - * - * The output of 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 lunr.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 - */ -lunr.Pipeline = function () { - this._stack = [] -} - -lunr.Pipeline.registeredFunctions = Object.create(null) - -/** - * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token - * string as well as all known metadata. A pipeline function can mutate the token string - * or mutate (or add) metadata for a given token. - * - * A pipeline function can indicate that the passed token should be discarded by returning - * null, undefined or an empty string. This token will not be passed to any downstream pipeline - * functions and will not be added to the index. - * - * Multiple tokens can be returned by returning an array of tokens. Each token will be passed - * to any downstream pipeline functions and all will returned tokens will be added to the index. - * - * Any number of pipeline functions may be chained together using a lunr.Pipeline. - * - * @interface lunr.PipelineFunction - * @param {lunr.Token} token - A token from the document being processed. - * @param {number} i - The index of this token in the complete list of tokens for this document/field. - * @param {lunr.Token[]} tokens - All tokens for this document/field. - * @returns {(?lunr.Token|lunr.Token[])} - */ - -/** - * Register a function with 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 {lunr.PipelineFunction} fn - The function to check for. - * @param {String} label - The label to register this function with - */ -lunr.Pipeline.registerFunction = function (fn, label) { - if (label in this.registeredFunctions) { - lunr.utils.warn('Overwriting existing registered function: ' + label) - } - - fn.label = label - lunr.Pipeline.registeredFunctions[fn.label] = fn -} - -/** - * Warns if the function is not registered as a Pipeline function. - * - * @param {lunr.PipelineFunction} fn - The function to check for. - * @private - */ -lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { - var isRegistered = fn.label && (fn.label in this.registeredFunctions) - - if (!isRegistered) { - lunr.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 lunr.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. - * @returns {lunr.Pipeline} - */ -lunr.Pipeline.load = function (serialised) { - var pipeline = new lunr.Pipeline - - serialised.forEach(function (fnName) { - var fn = lunr.Pipeline.registeredFunctions[fnName] - - if (fn) { - pipeline.add(fn) - } else { - throw new Error('Cannot load unregistered function: ' + fnName) - } - }) - - return pipeline -} - -/** - * Adds new functions to the end of the pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. - */ -lunr.Pipeline.prototype.add = function () { - var fns = Array.prototype.slice.call(arguments) - - fns.forEach(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - this._stack.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. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.after = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - pos = pos + 1 - this._stack.splice(pos, 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. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.before = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - this._stack.splice(pos, 0, newFn) -} - -/** - * Removes a function from the pipeline. - * - * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. - */ -lunr.Pipeline.prototype.remove = function (fn) { - var pos = this._stack.indexOf(fn) - if (pos == -1) { - return - } - - this._stack.splice(pos, 1) -} - -/** - * Runs the current list of functions that make up the pipeline against the - * passed tokens. - * - * @param {Array} tokens The tokens to run through the pipeline. - * @returns {Array} - */ -lunr.Pipeline.prototype.run = function (tokens) { - var stackLength = this._stack.length - - for (var i = 0; i < stackLength; i++) { - var fn = this._stack[i] - var memo = [] - - for (var j = 0; j < tokens.length; j++) { - var result = fn(tokens[j], j, tokens) - - if (result === null || result === void 0 || result === '') continue - - if (Array.isArray(result)) { - for (var k = 0; k < result.length; k++) { - memo.push(result[k]) - } - } else { - memo.push(result) - } - } - - tokens = memo - } - - return tokens -} - -/** - * Convenience method for passing a string through a pipeline and getting - * strings out. This method takes care of wrapping the passed string in a - * token and mapping the resulting tokens back to strings. - * - * @param {string} str - The string to pass through the pipeline. - * @param {?object} metadata - Optional metadata to associate with the token - * passed to the pipeline. - * @returns {string[]} - */ -lunr.Pipeline.prototype.runString = function (str, metadata) { - var token = new lunr.Token (str, metadata) - - return this.run([token]).map(function (t) { - return t.toString() - }) -} - -/** - * Resets the pipeline by removing any existing processors. - * - */ -lunr.Pipeline.prototype.reset = function () { - this._stack = [] -} - -/** - * Returns a representation of the pipeline ready for serialisation. - * - * Logs a warning if the function has not been registered. - * - * @returns {Array} - */ -lunr.Pipeline.prototype.toJSON = function () { - return this._stack.map(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - - return fn.label - }) -} -/*! - * lunr.Vector - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A vector is used to construct the vector space of documents and queries. These - * vectors support operations to determine the similarity between two documents or - * a document and a query. - * - * Normally no parameters are required for initializing a vector, but in the case of - * loading a previously dumped vector the raw elements can be provided to the constructor. - * - * For performance reasons vectors are implemented with a flat array, where an elements - * index is immediately followed by its value. E.g. [index, value, index, value]. This - * allows the underlying array to be as sparse as possible and still offer decent - * performance when being used for vector calculations. - * - * @constructor - * @param {Number[]} [elements] - The flat list of element index and element value pairs. - */ -lunr.Vector = function (elements) { - this._magnitude = 0 - this.elements = elements || [] -} - - -/** - * Calculates the position within the vector to insert a given index. - * - * This is used internally by insert and upsert. If there are duplicate indexes then - * the position is returned as if the value for that index were to be updated, but it - * is the callers responsibility to check whether there is a duplicate at that index - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @returns {Number} - */ -lunr.Vector.prototype.positionForIndex = function (index) { - // For an empty vector the tuple can be inserted at the beginning - if (this.elements.length == 0) { - return 0 - } - - var start = 0, - end = this.elements.length / 2, - sliceLength = end - start, - pivotPoint = Math.floor(sliceLength / 2), - pivotIndex = this.elements[pivotPoint * 2] - - while (sliceLength > 1) { - if (pivotIndex < index) { - start = pivotPoint - } - - if (pivotIndex > index) { - end = pivotPoint - } - - if (pivotIndex == index) { - break - } - - sliceLength = end - start - pivotPoint = start + Math.floor(sliceLength / 2) - pivotIndex = this.elements[pivotPoint * 2] - } - - if (pivotIndex == index) { - return pivotPoint * 2 - } - - if (pivotIndex > index) { - return pivotPoint * 2 - } - - if (pivotIndex < index) { - return (pivotPoint + 1) * 2 - } -} - -/** - * Inserts an element at an index within the vector. - * - * Does not allow duplicates, will throw an error if there is already an entry - * for this index. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - */ -lunr.Vector.prototype.insert = function (insertIdx, val) { - this.upsert(insertIdx, val, function () { - throw "duplicate index" - }) -} - -/** - * Inserts or updates an existing index within the vector. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - * @param {function} fn - A function that is called for updates, the existing value and the - * requested value are passed as arguments - */ -lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { - this._magnitude = 0 - var position = this.positionForIndex(insertIdx) - - if (this.elements[position] == insertIdx) { - this.elements[position + 1] = fn(this.elements[position + 1], val) - } else { - this.elements.splice(position, 0, insertIdx, val) - } -} - -/** - * Calculates the magnitude of this vector. - * - * @returns {Number} - */ -lunr.Vector.prototype.magnitude = function () { - if (this._magnitude) return this._magnitude - - var sumOfSquares = 0, - elementsLength = this.elements.length - - for (var i = 1; i < elementsLength; i += 2) { - var val = this.elements[i] - sumOfSquares += val * val - } - - return this._magnitude = Math.sqrt(sumOfSquares) -} - -/** - * Calculates the dot product of this vector and another vector. - * - * @param {lunr.Vector} otherVector - The vector to compute the dot product with. - * @returns {Number} - */ -lunr.Vector.prototype.dot = function (otherVector) { - var dotProduct = 0, - a = this.elements, b = otherVector.elements, - aLen = a.length, bLen = b.length, - aVal = 0, bVal = 0, - i = 0, j = 0 - - while (i < aLen && j < bLen) { - aVal = a[i], bVal = b[j] - if (aVal < bVal) { - i += 2 - } else if (aVal > bVal) { - j += 2 - } else if (aVal == bVal) { - dotProduct += a[i + 1] * b[j + 1] - i += 2 - j += 2 - } - } - - return dotProduct -} - -/** - * Calculates the similarity between this vector and another vector. - * - * @param {lunr.Vector} otherVector - The other vector to calculate the - * similarity with. - * @returns {Number} - */ -lunr.Vector.prototype.similarity = function (otherVector) { - return this.dot(otherVector) / this.magnitude() || 0 -} - -/** - * Converts the vector to an array of the elements within the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toArray = function () { - var output = new Array (this.elements.length / 2) - - for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { - output[j] = this.elements[i] - } - - return output -} - -/** - * A JSON serializable representation of the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toJSON = function () { - return this.elements -} -/* eslint-disable */ -/*! - * lunr.stemmer - * Copyright (C) 2020 Oliver Nightingale - * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt - */ - -/** - * lunr.stemmer is an english language stemmer, this is a JavaScript - * implementation of the PorterStemmer taken from http://tartarus.org/~martin - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token - The string to stem - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - * @function - */ -lunr.stemmer = (function(){ - var 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" - }, - - step3list = { - "icate" : "ic", - "ative" : "", - "alize" : "al", - "iciti" : "ic", - "ical" : "ic", - "ful" : "", - "ness" : "" - }, - - c = "[^aeiou]", // consonant - v = "[aeiouy]", // vowel - C = c + "[^aeiouy]*", // consonant sequence - V = v + "[aeiou]*", // vowel sequence - - mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 - meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 - mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 - s_v = "^(" + C + ")?" + v; // vowel in stem - - var re_mgr0 = new RegExp(mgr0); - var re_mgr1 = new RegExp(mgr1); - var re_meq1 = new RegExp(meq1); - var re_s_v = new RegExp(s_v); - - var re_1a = /^(.+?)(ss|i)es$/; - var re2_1a = /^(.+?)([^s])s$/; - var re_1b = /^(.+?)eed$/; - var re2_1b = /^(.+?)(ed|ing)$/; - var re_1b_2 = /.$/; - var re2_1b_2 = /(at|bl|iz)$/; - var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); - var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var re_1c = /^(.+?[^aeiou])y$/; - var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - - var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - - var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - var re2_4 = /^(.+?)(s|t)(ion)$/; - - var re_5 = /^(.+?)e$/; - var re_5_1 = /ll$/; - var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var porterStemmer = function porterStemmer(w) { - var 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 function (token) { - return token.update(porterStemmer); - } -})(); - -lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') -/*! - * lunr.stopWordFilter - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.generateStopWordFilter builds a stopWordFilter function from the provided - * list of stop words. - * - * The built in lunr.stopWordFilter is built using this generator and can be used - * to generate custom stopWordFilters for applications or non English languages. - * - * @function - * @param {Array} token The token to pass through the filter - * @returns {lunr.PipelineFunction} - * @see lunr.Pipeline - * @see lunr.stopWordFilter - */ -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.stopWordFilter is an English language stop word list filter, any words - * contained in the 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. - * - * @function - * @implements {lunr.PipelineFunction} - * @params {lunr.Token} token - A token to check for being a stop word. - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - */ -lunr.stopWordFilter = lunr.generateStopWordFilter([ - 'a', - 'able', - 'about', - 'across', - 'after', - 'all', - 'almost', - 'also', - 'am', - 'among', - 'an', - 'and', - 'any', - 'are', - 'as', - 'at', - 'be', - 'because', - 'been', - 'but', - 'by', - 'can', - 'cannot', - 'could', - 'dear', - 'did', - 'do', - 'does', - 'either', - 'else', - 'ever', - 'every', - 'for', - 'from', - 'get', - 'got', - 'had', - 'has', - 'have', - 'he', - 'her', - 'hers', - 'him', - 'his', - 'how', - 'however', - 'i', - 'if', - 'in', - 'into', - 'is', - 'it', - 'its', - 'just', - 'least', - 'let', - 'like', - 'likely', - 'may', - 'me', - 'might', - 'most', - 'must', - 'my', - 'neither', - 'no', - 'nor', - 'not', - 'of', - 'off', - 'often', - 'on', - 'only', - 'or', - 'other', - 'our', - 'own', - 'rather', - 'said', - 'say', - 'says', - 'she', - 'should', - 'since', - 'so', - 'some', - 'than', - 'that', - 'the', - 'their', - 'them', - 'then', - 'there', - 'these', - 'they', - 'this', - 'tis', - 'to', - 'too', - 'twas', - 'us', - 'wants', - 'was', - 'we', - 'were', - 'what', - 'when', - 'where', - 'which', - 'while', - 'who', - 'whom', - 'why', - 'will', - 'with', - 'would', - 'yet', - 'you', - 'your' -]) - -lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') -/*! - * lunr.trimmer - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.trimmer is a pipeline function for trimming non word - * characters from the beginning 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. - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token The token to pass through the filter - * @returns {lunr.Token} - * @see lunr.Pipeline - */ -lunr.trimmer = function (token) { - return token.update(function (s) { - return s.replace(/^\W+/, '').replace(/\W+$/, '') - }) -} - -lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') -/*! - * lunr.TokenSet - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * A token set is used to store the unique list of all tokens - * within an index. Token sets are also used to represent an - * incoming query to the index, this query token set and index - * token set are then intersected to find which tokens to look - * up in the inverted index. - * - * A token set can hold multiple tokens, as in the case of the - * index token set, or it can hold a single token as in the - * case of a simple query token set. - * - * Additionally token sets are used to perform wildcard matching. - * Leading, contained and trailing wildcards are supported, and - * from this edit distance matching can also be provided. - * - * Token sets are implemented as a minimal finite state automata, - * where both common prefixes and suffixes are shared between tokens. - * This helps to reduce the space used for storing the token set. - * - * @constructor - */ -lunr.TokenSet = function () { - this.final = false - this.edges = {} - this.id = lunr.TokenSet._nextId - lunr.TokenSet._nextId += 1 -} - -/** - * Keeps track of the next, auto increment, identifier to assign - * to a new tokenSet. - * - * TokenSets require a unique identifier to be correctly minimised. - * - * @private - */ -lunr.TokenSet._nextId = 1 - -/** - * Creates a TokenSet instance from the given sorted array of words. - * - * @param {String[]} arr - A sorted array of strings to create the set from. - * @returns {lunr.TokenSet} - * @throws Will throw an error if the input array is not sorted. - */ -lunr.TokenSet.fromArray = function (arr) { - var builder = new lunr.TokenSet.Builder - - for (var i = 0, len = arr.length; i < len; i++) { - builder.insert(arr[i]) - } - - builder.finish() - return builder.root -} - -/** - * Creates a token set from a query clause. - * - * @private - * @param {Object} clause - A single clause from lunr.Query. - * @param {string} clause.term - The query clause term. - * @param {number} [clause.editDistance] - The optional edit distance for the term. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromClause = function (clause) { - if ('editDistance' in clause) { - return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) - } else { - return lunr.TokenSet.fromString(clause.term) - } -} - -/** - * Creates a token set representing a single string with a specified - * edit distance. - * - * Insertions, deletions, substitutions and transpositions are each - * treated as an edit distance of 1. - * - * Increasing the allowed edit distance will have a dramatic impact - * on the performance of both creating and intersecting these TokenSets. - * It is advised to keep the edit distance less than 3. - * - * @param {string} str - The string to create the token set from. - * @param {number} editDistance - The allowed edit distance to match. - * @returns {lunr.Vector} - */ -lunr.TokenSet.fromFuzzyString = function (str, editDistance) { - var root = new lunr.TokenSet - - var stack = [{ - node: root, - editsRemaining: editDistance, - str: str - }] - - while (stack.length) { - var frame = stack.pop() - - // no edit - if (frame.str.length > 0) { - var char = frame.str.charAt(0), - noEditNode - - if (char in frame.node.edges) { - noEditNode = frame.node.edges[char] - } else { - noEditNode = new lunr.TokenSet - frame.node.edges[char] = noEditNode - } - - if (frame.str.length == 1) { - noEditNode.final = true - } - - stack.push({ - node: noEditNode, - editsRemaining: frame.editsRemaining, - str: frame.str.slice(1) - }) - } - - if (frame.editsRemaining == 0) { - continue - } - - // insertion - if ("*" in frame.node.edges) { - var insertionNode = frame.node.edges["*"] - } else { - var insertionNode = new lunr.TokenSet - frame.node.edges["*"] = insertionNode - } - - if (frame.str.length == 0) { - insertionNode.final = true - } - - stack.push({ - node: insertionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str - }) - - // deletion - // can only do a deletion if we have enough edits remaining - // and if there are characters left to delete in the string - if (frame.str.length > 1) { - stack.push({ - node: frame.node, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // deletion - // just removing the last character from the str - if (frame.str.length == 1) { - frame.node.final = true - } - - // substitution - // can only do a substitution if we have enough edits remaining - // and if there are characters left to substitute - if (frame.str.length >= 1) { - if ("*" in frame.node.edges) { - var substitutionNode = frame.node.edges["*"] - } else { - var substitutionNode = new lunr.TokenSet - frame.node.edges["*"] = substitutionNode - } - - if (frame.str.length == 1) { - substitutionNode.final = true - } - - stack.push({ - node: substitutionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // transposition - // can only do a transposition if there are edits remaining - // and there are enough characters to transpose - if (frame.str.length > 1) { - var charA = frame.str.charAt(0), - charB = frame.str.charAt(1), - transposeNode - - if (charB in frame.node.edges) { - transposeNode = frame.node.edges[charB] - } else { - transposeNode = new lunr.TokenSet - frame.node.edges[charB] = transposeNode - } - - if (frame.str.length == 1) { - transposeNode.final = true - } - - stack.push({ - node: transposeNode, - editsRemaining: frame.editsRemaining - 1, - str: charA + frame.str.slice(2) - }) - } - } - - return root -} - -/** - * Creates a TokenSet from a string. - * - * The string may contain one or more wildcard characters (*) - * that will allow wildcard matching when intersecting with - * another TokenSet. - * - * @param {string} str - The string to create a TokenSet from. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromString = function (str) { - var node = new lunr.TokenSet, - root = node - - /* - * Iterates through all characters within the passed string - * appending a node for each character. - * - * When a wildcard character is found then a self - * referencing edge is introduced to continually match - * any number of any characters. - */ - for (var i = 0, len = str.length; i < len; i++) { - var char = str[i], - final = (i == len - 1) - - if (char == "*") { - node.edges[char] = node - node.final = final - - } else { - var next = new lunr.TokenSet - next.final = final - - node.edges[char] = next - node = next - } - } - - return root -} - -/** - * Converts this TokenSet into an array of strings - * contained within the TokenSet. - * - * This is not intended to be used on a TokenSet that - * contains wildcards, in these cases the results are - * undefined and are likely to cause an infinite loop. - * - * @returns {string[]} - */ -lunr.TokenSet.prototype.toArray = function () { - var words = [] - - var stack = [{ - prefix: "", - node: this - }] - - while (stack.length) { - var frame = stack.pop(), - edges = Object.keys(frame.node.edges), - len = edges.length - - if (frame.node.final) { - /* In Safari, at this point the prefix is sometimes corrupted, see: - * https://github.com/olivernn/lunr.js/issues/279 Calling any - * String.prototype method forces Safari to "cast" this string to what - * it's supposed to be, fixing the bug. */ - frame.prefix.charAt(0) - words.push(frame.prefix) - } - - for (var i = 0; i < len; i++) { - var edge = edges[i] - - stack.push({ - prefix: frame.prefix.concat(edge), - node: frame.node.edges[edge] - }) - } - } - - return words -} - -/** - * Generates a string representation of a TokenSet. - * - * This is intended to allow TokenSets to be used as keys - * in objects, largely to aid the construction and minimisation - * of a TokenSet. As such it is not designed to be a human - * friendly representation of the TokenSet. - * - * @returns {string} - */ -lunr.TokenSet.prototype.toString = function () { - // NOTE: Using Object.keys here as this.edges is very likely - // to enter 'hash-mode' with many keys being added - // - // avoiding a for-in loop here as it leads to the function - // being de-optimised (at least in V8). From some simple - // benchmarks the performance is comparable, but allowing - // V8 to optimize may mean easy performance wins in the future. - - if (this._str) { - return this._str - } - - var str = this.final ? '1' : '0', - labels = Object.keys(this.edges).sort(), - len = labels.length - - for (var i = 0; i < len; i++) { - var label = labels[i], - node = this.edges[label] - - str = str + label + node.id - } - - return str -} - -/** - * Returns a new TokenSet that is the intersection of - * this TokenSet and the passed TokenSet. - * - * This intersection will take into account any wildcards - * contained within the TokenSet. - * - * @param {lunr.TokenSet} b - An other TokenSet to intersect with. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.prototype.intersect = function (b) { - var output = new lunr.TokenSet, - frame = undefined - - var stack = [{ - qNode: b, - output: output, - node: this - }] - - while (stack.length) { - frame = stack.pop() - - // NOTE: As with the #toString method, we are using - // Object.keys and a for loop instead of a for-in loop - // as both of these objects enter 'hash' mode, causing - // the function to be de-optimised in V8 - var qEdges = Object.keys(frame.qNode.edges), - qLen = qEdges.length, - nEdges = Object.keys(frame.node.edges), - nLen = nEdges.length - - for (var q = 0; q < qLen; q++) { - var qEdge = qEdges[q] - - for (var n = 0; n < nLen; n++) { - var nEdge = nEdges[n] - - if (nEdge == qEdge || qEdge == '*') { - var node = frame.node.edges[nEdge], - qNode = frame.qNode.edges[qEdge], - final = node.final && qNode.final, - next = undefined - - if (nEdge in frame.output.edges) { - // an edge already exists for this character - // no need to create a new node, just set the finality - // bit unless this node is already final - next = frame.output.edges[nEdge] - next.final = next.final || final - - } else { - // no edge exists yet, must create one - // set the finality bit and insert it - // into the output - next = new lunr.TokenSet - next.final = final - frame.output.edges[nEdge] = next - } - - stack.push({ - qNode: qNode, - output: next, - node: node - }) - } - } - } - } - - return output -} -lunr.TokenSet.Builder = function () { - this.previousWord = "" - this.root = new lunr.TokenSet - this.uncheckedNodes = [] - this.minimizedNodes = {} -} - -lunr.TokenSet.Builder.prototype.insert = function (word) { - var node, - commonPrefix = 0 - - if (word < this.previousWord) { - throw new Error ("Out of order word insertion") - } - - for (var i = 0; i < word.length && i < this.previousWord.length; i++) { - if (word[i] != this.previousWord[i]) break - commonPrefix++ - } - - this.minimize(commonPrefix) - - if (this.uncheckedNodes.length == 0) { - node = this.root - } else { - node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child - } - - for (var i = commonPrefix; i < word.length; i++) { - var nextNode = new lunr.TokenSet, - char = word[i] - - node.edges[char] = nextNode - - this.uncheckedNodes.push({ - parent: node, - char: char, - child: nextNode - }) - - node = nextNode - } - - node.final = true - this.previousWord = word -} - -lunr.TokenSet.Builder.prototype.finish = function () { - this.minimize(0) -} - -lunr.TokenSet.Builder.prototype.minimize = function (downTo) { - for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { - var node = this.uncheckedNodes[i], - childKey = node.child.toString() - - if (childKey in this.minimizedNodes) { - node.parent.edges[node.char] = this.minimizedNodes[childKey] - } else { - // Cache the key for this node since - // we know it can't change anymore - node.child._str = childKey - - this.minimizedNodes[childKey] = node.child - } - - this.uncheckedNodes.pop() - } -} -/*! - * lunr.Index - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * An index contains the built index of all documents and provides a query interface - * to the index. - * - * Usually instances of lunr.Index will not be created using this constructor, instead - * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be - * used to load previously built and serialized indexes. - * - * @constructor - * @param {Object} attrs - The attributes of the built search index. - * @param {Object} attrs.invertedIndex - An index of term/field to document reference. - * @param {Object} attrs.fieldVectors - Field vectors - * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. - * @param {string[]} attrs.fields - The names of indexed document fields. - * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. - */ -lunr.Index = function (attrs) { - this.invertedIndex = attrs.invertedIndex - this.fieldVectors = attrs.fieldVectors - this.tokenSet = attrs.tokenSet - this.fields = attrs.fields - this.pipeline = attrs.pipeline -} - -/** - * A result contains details of a document matching a search query. - * @typedef {Object} lunr.Index~Result - * @property {string} ref - The reference of the document this result represents. - * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. - * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. - */ - -/** - * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple - * query language which itself is parsed into an instance of lunr.Query. - * - * For programmatically building queries it is advised to directly use lunr.Query, the query language - * is best used for human entered text rather than program generated text. - * - * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported - * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' - * or 'world', though those that contain both will rank higher in the results. - * - * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can - * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding - * wildcards will increase the number of documents that will be found but can also have a negative - * impact on query performance, especially with wildcards at the beginning of a term. - * - * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term - * hello in the title field will match this query. Using a field not present in the index will lead - * to an error being thrown. - * - * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term - * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported - * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. - * Avoid large values for edit distance to improve query performance. - * - * Each term also supports a presence modifier. By default a term's presence in document is optional, however - * this can be changed to either required or prohibited. For a term's presence to be required in a document the - * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and - * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not - * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. - * - * To escape special characters the backslash character '\' can be used, this allows searches to include - * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead - * of attempting to apply a boost of 2 to the search term "foo". - * - * @typedef {string} lunr.Index~QueryString - * @example Simple single term query - * hello - * @example Multiple term query - * hello world - * @example term scoped to a field - * title:hello - * @example term with a boost of 10 - * hello^10 - * @example term with an edit distance of 2 - * hello~2 - * @example terms with presence modifiers - * -foo +bar baz - */ - -/** - * Performs a search against the index using lunr query syntax. - * - * Results will be returned sorted by their score, the most relevant results - * will be returned first. For details on how the score is calculated, please see - * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. - * - * For more programmatic querying use lunr.Index#query. - * - * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. - * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.search = function (queryString) { - return this.query(function (query) { - var parser = new lunr.QueryParser(queryString, query) - parser.parse() - }) -} - -/** - * A query builder callback provides a query object to be used to express - * the query to perform on the index. - * - * @callback lunr.Index~queryBuilder - * @param {lunr.Query} query - The query object to build up. - * @this lunr.Query - */ - -/** - * Performs a query against the index using the yielded lunr.Query object. - * - * If performing programmatic queries against the index, this method is preferred - * over lunr.Index#search so as to avoid the additional query parsing overhead. - * - * A query object is yielded to the supplied function which should be used to - * express the query to be run against the index. - * - * Note that although this function takes a callback parameter it is _not_ an - * asynchronous operation, the callback is just yielded a query object to be - * customized. - * - * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.query = function (fn) { - // for each query clause - // * process terms - // * expand terms from token set - // * find matching documents and metadata - // * get document vectors - // * score documents - - var query = new lunr.Query(this.fields), - matchingFields = Object.create(null), - queryVectors = Object.create(null), - termFieldCache = Object.create(null), - requiredMatches = Object.create(null), - prohibitedMatches = Object.create(null) - - /* - * To support field level boosts a query vector is created per - * field. An empty vector is eagerly created to support negated - * queries. - */ - for (var i = 0; i < this.fields.length; i++) { - queryVectors[this.fields[i]] = new lunr.Vector - } - - fn.call(query, query) - - for (var i = 0; i < query.clauses.length; i++) { - /* - * Unless the pipeline has been disabled for this term, which is - * the case for terms with wildcards, we need to pass the clause - * term through the search pipeline. A pipeline returns an array - * of processed terms. Pipeline functions may expand the passed - * term, which means we may end up performing multiple index lookups - * for a single query term. - */ - var clause = query.clauses[i], - terms = null, - clauseMatches = lunr.Set.empty - - if (clause.usePipeline) { - terms = this.pipeline.runString(clause.term, { - fields: clause.fields - }) - } else { - terms = [clause.term] - } - - for (var m = 0; m < terms.length; m++) { - var term = terms[m] - - /* - * Each term returned from the pipeline needs to use the same query - * clause object, e.g. the same boost and or edit distance. The - * simplest way to do this is to re-use the clause object but mutate - * its term property. - */ - clause.term = term - - /* - * From the term in the clause we create a token set which will then - * be used to intersect the indexes token set to get a list of terms - * to lookup in the inverted index - */ - var termTokenSet = lunr.TokenSet.fromClause(clause), - expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() - - /* - * If a term marked as required does not exist in the tokenSet it is - * impossible for the search to return any matches. We set all the field - * scoped required matches set to empty and stop examining any further - * clauses. - */ - if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = lunr.Set.empty - } - - break - } - - for (var j = 0; j < expandedTerms.length; j++) { - /* - * For each term get the posting and termIndex, this is required for - * building the query vector. - */ - var expandedTerm = expandedTerms[j], - posting = this.invertedIndex[expandedTerm], - termIndex = posting._index - - for (var k = 0; k < clause.fields.length; k++) { - /* - * For each field that this query term is scoped by (by default - * all fields are in scope) we need to get all the document refs - * that have this term in that field. - * - * The posting is the entry in the invertedIndex for the matching - * term from above. - */ - var field = clause.fields[k], - fieldPosting = posting[field], - matchingDocumentRefs = Object.keys(fieldPosting), - termField = expandedTerm + "/" + field, - matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) - - /* - * if the presence of this term is required ensure that the matching - * documents are added to the set of required matches for this clause. - * - */ - if (clause.presence == lunr.Query.presence.REQUIRED) { - clauseMatches = clauseMatches.union(matchingDocumentsSet) - - if (requiredMatches[field] === undefined) { - requiredMatches[field] = lunr.Set.complete - } - } - - /* - * if the presence of this term is prohibited ensure that the matching - * documents are added to the set of prohibited matches for this field, - * creating that set if it does not yet exist. - */ - if (clause.presence == lunr.Query.presence.PROHIBITED) { - if (prohibitedMatches[field] === undefined) { - prohibitedMatches[field] = lunr.Set.empty - } - - prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) - - /* - * Prohibited matches should not be part of the query vector used for - * similarity scoring and no metadata should be extracted so we continue - * to the next field - */ - continue - } - - /* - * The query field vector is populated using the termIndex found for - * the term and a unit value with the appropriate boost applied. - * Using upsert because there could already be an entry in the vector - * for the term we are working with. In that case we just add the scores - * together. - */ - queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) - - /** - * If we've already seen this term, field combo then we've already collected - * the matching documents and metadata, no need to go through all that again - */ - if (termFieldCache[termField]) { - continue - } - - for (var l = 0; l < matchingDocumentRefs.length; l++) { - /* - * All metadata for this term/field/document triple - * are then extracted and collected into an instance - * of lunr.MatchData ready to be returned in the query - * results - */ - var matchingDocumentRef = matchingDocumentRefs[l], - matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), - metadata = fieldPosting[matchingDocumentRef], - fieldMatch - - if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { - matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) - } else { - fieldMatch.add(expandedTerm, field, metadata) - } - - } - - termFieldCache[termField] = true - } - } - } - - /** - * If the presence was required we need to update the requiredMatches field sets. - * We do this after all fields for the term have collected their matches because - * the clause terms presence is required in _any_ of the fields not _all_ of the - * fields. - */ - if (clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) - } - } - } - - /** - * Need to combine the field scoped required and prohibited - * matching documents into a global set of required and prohibited - * matches - */ - var allRequiredMatches = lunr.Set.complete, - allProhibitedMatches = lunr.Set.empty - - for (var i = 0; i < this.fields.length; i++) { - var field = this.fields[i] - - if (requiredMatches[field]) { - allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) - } - - if (prohibitedMatches[field]) { - allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) - } - } - - var matchingFieldRefs = Object.keys(matchingFields), - results = [], - matches = Object.create(null) - - /* - * If the query is negated (contains only prohibited terms) - * we need to get _all_ fieldRefs currently existing in the - * index. This is only done when we know that the query is - * entirely prohibited terms to avoid any cost of getting all - * fieldRefs unnecessarily. - * - * Additionally, blank MatchData must be created to correctly - * populate the results. - */ - if (query.isNegated()) { - matchingFieldRefs = Object.keys(this.fieldVectors) - - for (var i = 0; i < matchingFieldRefs.length; i++) { - var matchingFieldRef = matchingFieldRefs[i] - var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) - matchingFields[matchingFieldRef] = new lunr.MatchData - } - } - - for (var i = 0; i < matchingFieldRefs.length; i++) { - /* - * Currently we have document fields that match the query, but we - * need to return documents. The matchData and scores are combined - * from multiple fields belonging to the same document. - * - * Scores are calculated by field, using the query vectors created - * above, and combined into a final document score using addition. - */ - var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), - docRef = fieldRef.docRef - - if (!allRequiredMatches.contains(docRef)) { - continue - } - - if (allProhibitedMatches.contains(docRef)) { - continue - } - - var fieldVector = this.fieldVectors[fieldRef], - score = queryVectors[fieldRef.fieldName].similarity(fieldVector), - docMatch - - if ((docMatch = matches[docRef]) !== undefined) { - docMatch.score += score - docMatch.matchData.combine(matchingFields[fieldRef]) - } else { - var match = { - ref: docRef, - score: score, - matchData: matchingFields[fieldRef] - } - matches[docRef] = match - results.push(match) - } - } - - /* - * Sort the results objects by score, highest first. - */ - return results.sort(function (a, b) { - return b.score - a.score - }) -} - -/** - * Prepares the index for JSON serialization. - * - * The schema for this JSON blob will be described in a - * separate JSON schema file. - * - * @returns {Object} - */ -lunr.Index.prototype.toJSON = function () { - var invertedIndex = Object.keys(this.invertedIndex) - .sort() - .map(function (term) { - return [term, this.invertedIndex[term]] - }, this) - - var fieldVectors = Object.keys(this.fieldVectors) - .map(function (ref) { - return [ref, this.fieldVectors[ref].toJSON()] - }, this) - - return { - version: lunr.version, - fields: this.fields, - fieldVectors: fieldVectors, - invertedIndex: invertedIndex, - pipeline: this.pipeline.toJSON() - } -} - -/** - * Loads a previously serialized lunr.Index - * - * @param {Object} serializedIndex - A previously serialized lunr.Index - * @returns {lunr.Index} - */ -lunr.Index.load = function (serializedIndex) { - var attrs = {}, - fieldVectors = {}, - serializedVectors = serializedIndex.fieldVectors, - invertedIndex = Object.create(null), - serializedInvertedIndex = serializedIndex.invertedIndex, - tokenSetBuilder = new lunr.TokenSet.Builder, - pipeline = lunr.Pipeline.load(serializedIndex.pipeline) - - if (serializedIndex.version != lunr.version) { - lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") - } - - for (var i = 0; i < serializedVectors.length; i++) { - var tuple = serializedVectors[i], - ref = tuple[0], - elements = tuple[1] - - fieldVectors[ref] = new lunr.Vector(elements) - } - - for (var i = 0; i < serializedInvertedIndex.length; i++) { - var tuple = serializedInvertedIndex[i], - term = tuple[0], - posting = tuple[1] - - tokenSetBuilder.insert(term) - invertedIndex[term] = posting - } - - tokenSetBuilder.finish() - - attrs.fields = serializedIndex.fields - - attrs.fieldVectors = fieldVectors - attrs.invertedIndex = invertedIndex - attrs.tokenSet = tokenSetBuilder.root - attrs.pipeline = pipeline - - return new lunr.Index(attrs) -} -/*! - * lunr.Builder - * Copyright (C) 2020 Oliver Nightingale - */ - -/** - * lunr.Builder performs indexing on a set of documents and - * returns instances of lunr.Index ready for querying. - * - * All configuration of the index is done via the builder, the - * fields to index, the document reference, the text processing - * pipeline and document scoring parameters are all set on the - * builder before indexing. - * - * @constructor - * @property {string} _ref - Internal reference to the document reference field. - * @property {string[]} _fields - Internal reference to the document fields to index. - * @property {object} invertedIndex - The inverted index maps terms to document fields. - * @property {object} documentTermFrequencies - Keeps track of document term frequencies. - * @property {object} documentLengths - Keeps track of the length of documents added to the index. - * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. - * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. - * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. - * @property {number} documentCount - Keeps track of the total number of documents indexed. - * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. - * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. - * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. - * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. - */ -lunr.Builder = function () { - this._ref = "id" - this._fields = Object.create(null) - this._documents = Object.create(null) - this.invertedIndex = Object.create(null) - this.fieldTermFrequencies = {} - this.fieldLengths = {} - this.tokenizer = lunr.tokenizer - this.pipeline = new lunr.Pipeline - this.searchPipeline = new lunr.Pipeline - this.documentCount = 0 - this._b = 0.75 - this._k1 = 1.2 - this.termIndex = 0 - this.metadataWhitelist = [] -} - -/** - * Sets the document field used as the document reference. Every document must have this field. - * The type of this field in the document should be a string, if it is not a string it will be - * coerced into a string by calling toString. - * - * The default ref is 'id'. - * - * The ref should _not_ be changed during indexing, it should be set before any documents are - * added to the index. Changing it during indexing can lead to inconsistent results. - * - * @param {string} ref - The name of the reference field in the document. - */ -lunr.Builder.prototype.ref = function (ref) { - this._ref = ref -} - -/** - * A function that is used to extract a field from a document. - * - * Lunr expects a field to be at the top level of a document, if however the field - * is deeply nested within a document an extractor function can be used to extract - * the right field for indexing. - * - * @callback fieldExtractor - * @param {object} doc - The document being added to the index. - * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. - * @example Extracting a nested field - * function (doc) { return doc.nested.field } - */ - -/** - * Adds a field to the list of document fields that will be indexed. Every document being - * indexed should have this field. Null values for this field in indexed documents will - * not cause errors but will limit the chance of that document being retrieved by searches. - * - * All fields should be added before adding documents to the index. Adding fields after - * a document has been indexed will have no effect on already indexed documents. - * - * Fields can be boosted at build time. This allows terms within that field to have more - * importance when ranking search results. Use a field boost to specify that matches within - * one field are more important than other fields. - * - * @param {string} fieldName - The name of a field to index in all documents. - * @param {object} attributes - Optional attributes associated with this field. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. - * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. - * @throws {RangeError} fieldName cannot contain unsupported characters '/' - */ -lunr.Builder.prototype.field = function (fieldName, attributes) { - if (/\//.test(fieldName)) { - throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") - } - - this._fields[fieldName] = attributes || {} -} - -/** - * A parameter to tune the amount of field length normalisation that is applied when - * calculating relevance scores. A value of 0 will completely disable any normalisation - * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b - * will be clamped to the range 0 - 1. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.b = function (number) { - if (number < 0) { - this._b = 0 - } else if (number > 1) { - this._b = 1 - } else { - this._b = number - } -} - -/** - * A parameter that controls the speed at which a rise in term frequency results in term - * frequency saturation. The default value is 1.2. Setting this to a higher value will give - * slower saturation levels, a lower value will result in quicker saturation. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.k1 = function (number) { - this._k1 = number -} - -/** - * Adds a document to the index. - * - * Before adding fields to the index the index should have been fully setup, with the document - * ref and all fields to index already having been specified. - * - * The document must have a field name as specified by the ref (by default this is 'id') and - * it should have all fields defined for indexing, though null or undefined values will not - * cause errors. - * - * Entire documents can be boosted at build time. Applying a boost to a document indicates that - * this document should rank higher in search results than other documents. - * - * @param {object} doc - The document to add to the index. - * @param {object} attributes - Optional attributes associated with this document. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. - */ -lunr.Builder.prototype.add = function (doc, attributes) { - var docRef = doc[this._ref], - fields = Object.keys(this._fields) - - this._documents[docRef] = attributes || {} - this.documentCount += 1 - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i], - extractor = this._fields[fieldName].extractor, - field = extractor ? extractor(doc) : doc[fieldName], - tokens = this.tokenizer(field, { - fields: [fieldName] - }), - terms = this.pipeline.run(tokens), - fieldRef = new lunr.FieldRef (docRef, fieldName), - fieldTerms = Object.create(null) - - this.fieldTermFrequencies[fieldRef] = fieldTerms - this.fieldLengths[fieldRef] = 0 - - // store the length of this field for this document - this.fieldLengths[fieldRef] += terms.length - - // calculate term frequencies for this field - for (var j = 0; j < terms.length; j++) { - var term = terms[j] - - if (fieldTerms[term] == undefined) { - fieldTerms[term] = 0 - } - - fieldTerms[term] += 1 - - // add to inverted index - // create an initial posting if one doesn't exist - if (this.invertedIndex[term] == undefined) { - var posting = Object.create(null) - posting["_index"] = this.termIndex - this.termIndex += 1 - - for (var k = 0; k < fields.length; k++) { - posting[fields[k]] = Object.create(null) - } - - this.invertedIndex[term] = posting - } - - // add an entry for this term/fieldName/docRef to the invertedIndex - if (this.invertedIndex[term][fieldName][docRef] == undefined) { - this.invertedIndex[term][fieldName][docRef] = Object.create(null) - } - - // store all whitelisted metadata about this token in the - // inverted index - for (var l = 0; l < this.metadataWhitelist.length; l++) { - var metadataKey = this.metadataWhitelist[l], - metadata = term.metadata[metadataKey] - - if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { - this.invertedIndex[term][fieldName][docRef][metadataKey] = [] - } - - this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) - } - } - - } -} - -/** - * Calculates the average document length for this index - * - * @private - */ -lunr.Builder.prototype.calculateAverageFieldLengths = function () { - - var fieldRefs = Object.keys(this.fieldLengths), - numberOfFields = fieldRefs.length, - accumulator = {}, - documentsWithField = {} - - for (var i = 0; i < numberOfFields; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - field = fieldRef.fieldName - - documentsWithField[field] || (documentsWithField[field] = 0) - documentsWithField[field] += 1 - - accumulator[field] || (accumulator[field] = 0) - accumulator[field] += this.fieldLengths[fieldRef] - } - - var fields = Object.keys(this._fields) - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i] - accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] - } - - this.averageFieldLength = accumulator -} - -/** - * Builds a vector space model of every document using lunr.Vector - * - * @private - */ -lunr.Builder.prototype.createFieldVectors = function () { - var fieldVectors = {}, - fieldRefs = Object.keys(this.fieldTermFrequencies), - fieldRefsLength = fieldRefs.length, - termIdfCache = Object.create(null) - - for (var i = 0; i < fieldRefsLength; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - fieldName = fieldRef.fieldName, - fieldLength = this.fieldLengths[fieldRef], - fieldVector = new lunr.Vector, - termFrequencies = this.fieldTermFrequencies[fieldRef], - terms = Object.keys(termFrequencies), - termsLength = terms.length - - - var fieldBoost = this._fields[fieldName].boost || 1, - docBoost = this._documents[fieldRef.docRef].boost || 1 - - for (var j = 0; j < termsLength; j++) { - var term = terms[j], - tf = termFrequencies[term], - termIndex = this.invertedIndex[term]._index, - idf, score, scoreWithPrecision - - if (termIdfCache[term] === undefined) { - idf = lunr.idf(this.invertedIndex[term], this.documentCount) - termIdfCache[term] = idf - } else { - idf = termIdfCache[term] - } - - score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) - score *= fieldBoost - score *= docBoost - scoreWithPrecision = Math.round(score * 1000) / 1000 - // Converts 1.23456789 to 1.234. - // Reducing the precision so that the vectors take up less - // space when serialised. Doing it now so that they behave - // the same before and after serialisation. Also, this is - // the fastest approach to reducing a number's precision in - // JavaScript. - - fieldVector.insert(termIndex, scoreWithPrecision) - } - - fieldVectors[fieldRef] = fieldVector - } - - this.fieldVectors = fieldVectors -} - -/** - * Creates a token set of all tokens in the index using lunr.TokenSet - * - * @private - */ -lunr.Builder.prototype.createTokenSet = function () { - this.tokenSet = lunr.TokenSet.fromArray( - Object.keys(this.invertedIndex).sort() - ) -} - -/** - * Builds the index, creating an instance of lunr.Index. - * - * This completes the indexing process and should only be called - * once all documents have been added to the index. - * - * @returns {lunr.Index} - */ -lunr.Builder.prototype.build = function () { - this.calculateAverageFieldLengths() - this.createFieldVectors() - this.createTokenSet() - - return new lunr.Index({ - invertedIndex: this.invertedIndex, - fieldVectors: this.fieldVectors, - tokenSet: this.tokenSet, - fields: Object.keys(this._fields), - pipeline: this.searchPipeline - }) -} - -/** - * Applies a plugin to the index builder. - * - * A plugin is a function that is called with the index builder as its context. - * Plugins can be used to customise or extend the behaviour of the index - * in some way. A plugin is just a function, that encapsulated the custom - * behaviour that should be applied when building the index. - * - * The plugin function will be called with the index builder as its argument, additional - * arguments can also be passed when calling use. The function will be called - * with the index builder as its context. - * - * @param {Function} plugin The plugin to apply. - */ -lunr.Builder.prototype.use = function (fn) { - var args = Array.prototype.slice.call(arguments, 1) - args.unshift(this) - fn.apply(this, args) -} -/** - * Contains and collects metadata about a matching document. - * A single instance of lunr.MatchData is returned as part of every - * lunr.Index~Result. - * - * @constructor - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - * @property {object} metadata - A cloned collection of metadata associated with this document. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData = function (term, field, metadata) { - var clonedMetadata = Object.create(null), - metadataKeys = Object.keys(metadata || {}) - - // Cloning the metadata to prevent the original - // being mutated during match data combination. - // Metadata is kept in an array within the inverted - // index so cloning the data can be done with - // Array#slice - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - clonedMetadata[key] = metadata[key].slice() - } - - this.metadata = Object.create(null) - - if (term !== undefined) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = clonedMetadata - } -} - -/** - * An instance of lunr.MatchData will be created for every term that matches a - * document. However only one instance is required in a lunr.Index~Result. This - * method combines metadata from another instance of lunr.MatchData with this - * objects metadata. - * - * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData.prototype.combine = function (otherMatchData) { - var terms = Object.keys(otherMatchData.metadata) - - for (var i = 0; i < terms.length; i++) { - var term = terms[i], - fields = Object.keys(otherMatchData.metadata[term]) - - if (this.metadata[term] == undefined) { - this.metadata[term] = Object.create(null) - } - - for (var j = 0; j < fields.length; j++) { - var field = fields[j], - keys = Object.keys(otherMatchData.metadata[term][field]) - - if (this.metadata[term][field] == undefined) { - this.metadata[term][field] = Object.create(null) - } - - for (var k = 0; k < keys.length; k++) { - var key = keys[k] - - if (this.metadata[term][field][key] == undefined) { - this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] - } else { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) - } - - } - } - } -} - -/** - * Add metadata for a term/field pair to this instance of match data. - * - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - */ -lunr.MatchData.prototype.add = function (term, field, metadata) { - if (!(term in this.metadata)) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = metadata - return - } - - if (!(field in this.metadata[term])) { - this.metadata[term][field] = metadata - return - } - - var metadataKeys = Object.keys(metadata) - - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - - if (key in this.metadata[term][field]) { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) - } else { - this.metadata[term][field][key] = metadata[key] - } - } -} -/** - * A lunr.Query provides a programmatic way of defining queries to be performed - * against a {@link lunr.Index}. - * - * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method - * so the query object is pre-initialized with the right index fields. - * - * @constructor - * @property {lunr.Query~Clause[]} clauses - An array of query clauses. - * @property {string[]} allFields - An array of all available fields in a lunr.Index. - */ -lunr.Query = function (allFields) { - this.clauses = [] - this.allFields = allFields -} - -/** - * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. - * - * This allows wildcards to be added to the beginning and end of a term without having to manually do any string - * concatenation. - * - * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. - * - * @constant - * @default - * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour - * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists - * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with trailing wildcard - * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) - * @example query term with leading and trailing wildcard - * query.term('foo', { - * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING - * }) - */ - -lunr.Query.wildcard = new String ("*") -lunr.Query.wildcard.NONE = 0 -lunr.Query.wildcard.LEADING = 1 -lunr.Query.wildcard.TRAILING = 2 - -/** - * Constants for indicating what kind of presence a term must have in matching documents. - * - * @constant - * @enum {number} - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with required presence - * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) - */ -lunr.Query.presence = { - /** - * Term's presence in a document is optional, this is the default value. - */ - OPTIONAL: 1, - - /** - * Term's presence in a document is required, documents that do not contain - * this term will not be returned. - */ - REQUIRED: 2, - - /** - * Term's presence in a document is prohibited, documents that do contain - * this term will not be returned. - */ - PROHIBITED: 3 -} - -/** - * A single clause in a {@link lunr.Query} contains a term and details on how to - * match that term against a {@link lunr.Index}. - * - * @typedef {Object} lunr.Query~Clause - * @property {string[]} fields - The fields in an index this clause should be matched against. - * @property {number} [boost=1] - Any boost that should be applied when matching this clause. - * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. - * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. - * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. - * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. - */ - -/** - * Adds a {@link lunr.Query~Clause} to this query. - * - * Unless the clause contains the fields to be matched all fields will be matched. In addition - * a default boost of 1 is applied to the clause. - * - * @param {lunr.Query~Clause} clause - The clause to add to this query. - * @see lunr.Query~Clause - * @returns {lunr.Query} - */ -lunr.Query.prototype.clause = function (clause) { - if (!('fields' in clause)) { - clause.fields = this.allFields - } - - if (!('boost' in clause)) { - clause.boost = 1 - } - - if (!('usePipeline' in clause)) { - clause.usePipeline = true - } - - if (!('wildcard' in clause)) { - clause.wildcard = lunr.Query.wildcard.NONE - } - - if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { - clause.term = "*" + clause.term - } - - if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { - clause.term = "" + clause.term + "*" - } - - if (!('presence' in clause)) { - clause.presence = lunr.Query.presence.OPTIONAL - } - - this.clauses.push(clause) - - return this -} - -/** - * A negated query is one in which every clause has a presence of - * prohibited. These queries require some special processing to return - * the expected results. - * - * @returns boolean - */ -lunr.Query.prototype.isNegated = function () { - for (var i = 0; i < this.clauses.length; i++) { - if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { - return false - } - } - - return true -} - -/** - * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} - * to the list of clauses that make up this query. - * - * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion - * to a token or token-like string should be done before calling this method. - * - * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an - * array, each term in the array will share the same options. - * - * @param {object|object[]} term - The term(s) to add to the query. - * @param {object} [options] - Any additional properties to add to the query clause. - * @returns {lunr.Query} - * @see lunr.Query#clause - * @see lunr.Query~Clause - * @example adding a single term to a query - * query.term("foo") - * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard - * query.term("foo", { - * fields: ["title"], - * boost: 10, - * wildcard: lunr.Query.wildcard.TRAILING - * }) - * @example using lunr.tokenizer to convert a string to tokens before using them as terms - * query.term(lunr.tokenizer("foo bar")) - */ -lunr.Query.prototype.term = function (term, options) { - if (Array.isArray(term)) { - term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) - return this - } - - var clause = options || {} - clause.term = term.toString() - - this.clause(clause) - - return this -} -lunr.QueryParseError = function (message, start, end) { - this.name = "QueryParseError" - this.message = message - this.start = start - this.end = end -} - -lunr.QueryParseError.prototype = new Error -lunr.QueryLexer = function (str) { - this.lexemes = [] - this.str = str - this.length = str.length - this.pos = 0 - this.start = 0 - this.escapeCharPositions = [] -} - -lunr.QueryLexer.prototype.run = function () { - var state = lunr.QueryLexer.lexText - - while (state) { - state = state(this) - } -} - -lunr.QueryLexer.prototype.sliceString = function () { - var subSlices = [], - sliceStart = this.start, - sliceEnd = this.pos - - for (var i = 0; i < this.escapeCharPositions.length; i++) { - sliceEnd = this.escapeCharPositions[i] - subSlices.push(this.str.slice(sliceStart, sliceEnd)) - sliceStart = sliceEnd + 1 - } - - subSlices.push(this.str.slice(sliceStart, this.pos)) - this.escapeCharPositions.length = 0 - - return subSlices.join('') -} - -lunr.QueryLexer.prototype.emit = function (type) { - this.lexemes.push({ - type: type, - str: this.sliceString(), - start: this.start, - end: this.pos - }) - - this.start = this.pos -} - -lunr.QueryLexer.prototype.escapeCharacter = function () { - this.escapeCharPositions.push(this.pos - 1) - this.pos += 1 -} - -lunr.QueryLexer.prototype.next = function () { - if (this.pos >= this.length) { - return lunr.QueryLexer.EOS - } - - var char = this.str.charAt(this.pos) - this.pos += 1 - return char -} - -lunr.QueryLexer.prototype.width = function () { - return this.pos - this.start -} - -lunr.QueryLexer.prototype.ignore = function () { - if (this.start == this.pos) { - this.pos += 1 - } - - this.start = this.pos -} - -lunr.QueryLexer.prototype.backup = function () { - this.pos -= 1 -} - -lunr.QueryLexer.prototype.acceptDigitRun = function () { - var char, charCode - - do { - char = this.next() - charCode = char.charCodeAt(0) - } while (charCode > 47 && charCode < 58) - - if (char != lunr.QueryLexer.EOS) { - this.backup() - } -} - -lunr.QueryLexer.prototype.more = function () { - return this.pos < this.length -} - -lunr.QueryLexer.EOS = 'EOS' -lunr.QueryLexer.FIELD = 'FIELD' -lunr.QueryLexer.TERM = 'TERM' -lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' -lunr.QueryLexer.BOOST = 'BOOST' -lunr.QueryLexer.PRESENCE = 'PRESENCE' - -lunr.QueryLexer.lexField = function (lexer) { - lexer.backup() - lexer.emit(lunr.QueryLexer.FIELD) - lexer.ignore() - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexTerm = function (lexer) { - if (lexer.width() > 1) { - lexer.backup() - lexer.emit(lunr.QueryLexer.TERM) - } - - lexer.ignore() - - if (lexer.more()) { - return lunr.QueryLexer.lexText - } -} - -lunr.QueryLexer.lexEditDistance = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexBoost = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.BOOST) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexEOS = function (lexer) { - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } -} - -// This matches the separator used when tokenising fields -// within a document. These should match otherwise it is -// not possible to search for some tokens within a document. -// -// It is possible for the user to change the separator on the -// tokenizer so it _might_ clash with any other of the special -// characters already used within the search string, e.g. :. -// -// This means that it is possible to change the separator in -// such a way that makes some words unsearchable using a search -// string. -lunr.QueryLexer.termSeparator = lunr.tokenizer.separator - -lunr.QueryLexer.lexText = function (lexer) { - while (true) { - var char = lexer.next() - - if (char == lunr.QueryLexer.EOS) { - return lunr.QueryLexer.lexEOS - } - - // Escape character is '\' - if (char.charCodeAt(0) == 92) { - lexer.escapeCharacter() - continue - } - - if (char == ":") { - return lunr.QueryLexer.lexField - } - - if (char == "~") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexEditDistance - } - - if (char == "^") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexBoost - } - - // "+" indicates term presence is required - // checking for length to ensure that only - // leading "+" are considered - if (char == "+" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - // "-" indicates term presence is prohibited - // checking for length to ensure that only - // leading "-" are considered - if (char == "-" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - if (char.match(lunr.QueryLexer.termSeparator)) { - return lunr.QueryLexer.lexTerm - } - } -} - -lunr.QueryParser = function (str, query) { - this.lexer = new lunr.QueryLexer (str) - this.query = query - this.currentClause = {} - this.lexemeIdx = 0 -} - -lunr.QueryParser.prototype.parse = function () { - this.lexer.run() - this.lexemes = this.lexer.lexemes - - var state = lunr.QueryParser.parseClause - - while (state) { - state = state(this) - } - - return this.query -} - -lunr.QueryParser.prototype.peekLexeme = function () { - return this.lexemes[this.lexemeIdx] -} - -lunr.QueryParser.prototype.consumeLexeme = function () { - var lexeme = this.peekLexeme() - this.lexemeIdx += 1 - return lexeme -} - -lunr.QueryParser.prototype.nextClause = function () { - var completedClause = this.currentClause - this.query.clause(completedClause) - this.currentClause = {} -} - -lunr.QueryParser.parseClause = function (parser) { - var lexeme = parser.peekLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.type) { - case lunr.QueryLexer.PRESENCE: - return lunr.QueryParser.parsePresence - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expected either a field or a term, found " + lexeme.type - - if (lexeme.str.length >= 1) { - errorMessage += " with value '" + lexeme.str + "'" - } - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } -} - -lunr.QueryParser.parsePresence = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.str) { - case "-": - parser.currentClause.presence = lunr.Query.presence.PROHIBITED - break - case "+": - parser.currentClause.presence = lunr.Query.presence.REQUIRED - break - default: - var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term or field, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseField = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - if (parser.query.allFields.indexOf(lexeme.str) == -1) { - var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), - errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.fields = [lexeme.str] - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseTerm = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - parser.currentClause.term = lexeme.str.toLowerCase() - - if (lexeme.str.indexOf("*") != -1) { - parser.currentClause.usePipeline = false - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseEditDistance = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var editDistance = parseInt(lexeme.str, 10) - - if (isNaN(editDistance)) { - var errorMessage = "edit distance must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.editDistance = editDistance - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseBoost = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var boost = parseInt(lexeme.str, 10) - - if (isNaN(boost)) { - var errorMessage = "boost must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.boost = boost - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - - /** - * 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.lunr = 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 lunr - })) -})(); +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/vendor/lunr.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/mermaid.min.js b/assets/scripts/mermaid.min.js index 0f033c7..109ecaf 100755 --- a/assets/scripts/mermaid.min.js +++ b/assets/scripts/mermaid.min.js @@ -1,2811 +1,6 @@ -"use strict";var __esbuild_esm_mermaid_nm;(__esbuild_esm_mermaid_nm||={}).mermaid=(()=>{var V3e=Object.create;var _y=Object.defineProperty;var U3e=Object.getOwnPropertyDescriptor;var H3e=Object.getOwnPropertyNames;var q3e=Object.getPrototypeOf,W3e=Object.prototype.hasOwnProperty;var o=(t,e)=>_y(t,"name",{value:e,configurable:!0});var N=(t,e)=>()=>(t&&(e=t(t=0)),e);var Da=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),dr=(t,e)=>{for(var r in e)_y(t,r,{get:e[r],enumerable:!0})},q4=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of H3e(e))!W3e.call(t,i)&&i!==r&&_y(t,i,{get:()=>e[i],enumerable:!(n=U3e(e,i))||n.enumerable});return t},Lr=(t,e,r)=>(q4(t,e,"default"),r&&q4(r,e,"default")),ja=(t,e,r)=>(r=t!=null?V3e(q3e(t)):{},q4(e||!t||!t.__esModule?_y(r,"default",{value:t,enumerable:!0}):r,t)),Y3e=t=>q4(_y({},"__esModule",{value:!0}),t);var X3e,y0,t7,Uz,W4=N(()=>{"use strict";X3e=Object.freeze({left:0,top:0,width:16,height:16}),y0=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),t7=Object.freeze({...X3e,...y0}),Uz=Object.freeze({...t7,body:"",hidden:!1})});var j3e,Hz,qz=N(()=>{"use strict";W4();j3e=Object.freeze({width:null,height:null}),Hz=Object.freeze({...j3e,...y0})});var r7,Y4,Wz=N(()=>{"use strict";r7=o((t,e,r,n="")=>{let i=t.split(":");if(t.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return e&&!Y4(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return e&&!Y4(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return e&&!Y4(l,r)?null:l}return null},"stringToIcon"),Y4=o((t,e)=>t?!!((e&&t.prefix===""||t.prefix)&&t.name):!1,"validateIconName")});function Yz(t,e){let r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);let n=((t.rotate||0)+(e.rotate||0))%4;return n&&(r.rotate=n),r}var Xz=N(()=>{"use strict";o(Yz,"mergeIconTransformations")});function n7(t,e){let r=Yz(t,e);for(let n in Uz)n in y0?n in t&&!(n in r)&&(r[n]=y0[n]):n in e?r[n]=e[n]:n in t&&(r[n]=t[n]);return r}var jz=N(()=>{"use strict";W4();Xz();o(n7,"mergeIconData")});function Kz(t,e){let r=t.icons,n=t.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(e||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var Qz=N(()=>{"use strict";o(Kz,"getIconsTree")});function Zz(t,e,r){let n=t.icons,i=t.aliases||Object.create(null),a={};function s(l){a=n7(n[l]||i[l],a)}return o(s,"parse"),s(e),r.forEach(s),n7(t,a)}function i7(t,e){if(t.icons[e])return Zz(t,e,[]);let r=Kz(t,[e])[e];return r?Zz(t,e,r):null}var Jz=N(()=>{"use strict";jz();Qz();o(Zz,"internalGetIconData");o(i7,"getIconData")});function a7(t,e,r){if(e===1)return t;if(r=r||100,typeof t=="number")return Math.ceil(t*e*r)/r;if(typeof t!="string")return t;let n=t.split(K3e);if(n===null||!n.length)return t;let i=[],a=n.shift(),s=Q3e.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*e*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var K3e,Q3e,eG=N(()=>{"use strict";K3e=/(-?[0-9.]*[0-9]+[0-9.]*)/g,Q3e=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(a7,"calculateSize")});function Z3e(t,e="defs"){let r="",n=t.indexOf("<"+e);for(;n>=0;){let i=t.indexOf(">",n),a=t.indexOf("",a);if(s===-1)break;r+=t.slice(i+1,a).trim(),t=t.slice(0,n).trim()+t.slice(s+1)}return{defs:r,content:t}}function J3e(t,e){return t?""+t+""+e:e}function tG(t,e,r){let n=Z3e(t);return J3e(n.defs,e+n.content+r)}var rG=N(()=>{"use strict";o(Z3e,"splitSVGDefs");o(J3e,"mergeDefsAndContent");o(tG,"wrapSVGContent")});function s7(t,e){let r={...t7,...t},n={...Hz,...e},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,T=y.rotate;x?b?T+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let S;switch(T<0&&(T-=Math.floor(T/4)*4),T=T%4,T){case 1:S=i.height/2+i.top,v.unshift("rotate(90 "+S.toString()+" "+S.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:S=i.width/2+i.left,v.unshift("rotate(-90 "+S.toString()+" "+S.toString()+")");break}T%2===1&&(i.left!==i.top&&(S=i.left,i.left=i.top,i.top=S),i.width!==i.height&&(S=i.width,i.width=i.height,i.height=S)),v.length&&(a=tG(a,'',""))});let s=n.width,l=n.height,u=i.width,h=i.height,f,d;s===null?(d=l===null?"1em":l==="auto"?h:l,f=a7(d,u/h)):(f=s==="auto"?u:s,d=l===null?a7(f,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{e5e(v)||(p[y]=v.toString())},"setAttr");m("width",f),m("height",d);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var e5e,nG=N(()=>{"use strict";W4();qz();eG();rG();e5e=o(t=>t==="unset"||t==="undefined"||t==="none","isUnsetKeyword");o(s7,"iconToSVG")});function o7(t,e=r5e){let r=[],n;for(;n=t5e.exec(t);)r.push(n[1]);if(!r.length)return t;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof e=="function"?e(a):e+(n5e++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),t=t.replace(new RegExp(i,"g"),""),t}var t5e,r5e,n5e,iG=N(()=>{"use strict";t5e=/\sid="(\S+)"/g,r5e="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),n5e=0;o(o7,"replaceIDs")});function l7(t,e){let r=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in e)r+=" "+n+'="'+e[n]+'"';return'"+t+""}var aG=N(()=>{"use strict";o(l7,"iconToHTML")});var sG=N(()=>{"use strict";Wz();Jz();nG();iG();aG()});var c7,Rn,v0=N(()=>{"use strict";c7=o((t,e,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(a=>c7(t,a,i)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(a=>{t.includes(a)||t.push(a)}),t):t===void 0||r<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(a=>{typeof e[a]=="object"&&(t[a]===void 0||typeof t[a]=="object")?(t[a]===void 0&&(t[a]=Array.isArray(e[a])?[]:{}),t[a]=c7(t[a],e[a],{depth:r-1,clobber:n})):(n||typeof t[a]!="object"&&typeof e[a]!="object")&&(t[a]=e[a])}),t)},"assignWithDepth"),Rn=c7});var X4=Da((u7,h7)=>{"use strict";(function(t,e){typeof u7=="object"&&typeof h7<"u"?h7.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs=e()})(u7,(function(){"use strict";var t=1e3,e=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",f="quarter",d="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|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,v={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:o(function(E){var D=["th","st","nd","rd"],_=E%100;return"["+E+(D[(_-20)%10]||D[_]||D[0])+"]"},"ordinal")},x=o(function(E,D,_){var O=String(E);return!O||O.length>=D?E:""+Array(D+1-O.length).join(_)+E},"m"),b={s:x,z:o(function(E){var D=-E.utcOffset(),_=Math.abs(D),O=Math.floor(_/60),M=_%60;return(D<=0?"+":"-")+x(O,2,"0")+":"+x(M,2,"0")},"z"),m:o(function E(D,_){if(D.date()<_.date())return-E(_,D);var O=12*(_.year()-D.year())+(_.month()-D.month()),M=D.clone().add(O,h),P=_-M<0,B=D.clone().add(O+(P?-1:1),h);return+(-(O+(_-M)/(P?M-B:B-M))||0)},"t"),a:o(function(E){return E<0?Math.ceil(E)||0:Math.floor(E)},"a"),p:o(function(E){return{M:h,y:d,w:u,d:l,D:p,h:s,m:a,s:i,ms:n,Q:f}[E]||String(E||"").toLowerCase().replace(/s$/,"")},"p"),u:o(function(E){return E===void 0},"u")},T="en",S={};S[T]=v;var w="$isDayjsObject",k=o(function(E){return E instanceof I||!(!E||!E[w])},"S"),A=o(function E(D,_,O){var M;if(!D)return T;if(typeof D=="string"){var P=D.toLowerCase();S[P]&&(M=P),_&&(S[P]=_,M=P);var B=D.split("-");if(!M&&B.length>1)return E(B[0])}else{var F=D.name;S[F]=D,M=F}return!O&&M&&(T=M),M||!O&&T},"t"),C=o(function(E,D){if(k(E))return E.clone();var _=typeof D=="object"?D:{};return _.date=E,_.args=arguments,new I(_)},"O"),R=b;R.l=A,R.i=k,R.w=function(E,D){return C(E,{locale:D.$L,utc:D.$u,x:D.$x,$offset:D.$offset})};var I=(function(){function E(_){this.$L=A(_.locale,null,!0),this.parse(_),this.$x=this.$x||_.x||{},this[w]=!0}o(E,"M");var D=E.prototype;return D.parse=function(_){this.$d=(function(O){var M=O.date,P=O.utc;if(M===null)return new Date(NaN);if(R.u(M))return new Date;if(M instanceof Date)return new Date(M);if(typeof M=="string"&&!/Z$/i.test(M)){var B=M.match(g);if(B){var F=B[2]-1||0,G=(B[7]||"0").substring(0,3);return P?new Date(Date.UTC(B[1],F,B[3]||1,B[4]||0,B[5]||0,B[6]||0,G)):new Date(B[1],F,B[3]||1,B[4]||0,B[5]||0,B[6]||0,G)}}return new Date(M)})(_),this.init()},D.init=function(){var _=this.$d;this.$y=_.getFullYear(),this.$M=_.getMonth(),this.$D=_.getDate(),this.$W=_.getDay(),this.$H=_.getHours(),this.$m=_.getMinutes(),this.$s=_.getSeconds(),this.$ms=_.getMilliseconds()},D.$utils=function(){return R},D.isValid=function(){return this.$d.toString()!==m},D.isSame=function(_,O){var M=C(_);return this.startOf(O)<=M&&M<=this.endOf(O)},D.isAfter=function(_,O){return C(_){"use strict";oG=ja(X4(),1),au={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},X={trace:o((...t)=>{},"trace"),debug:o((...t)=>{},"debug"),info:o((...t)=>{},"info"),warn:o((...t)=>{},"warn"),error:o((...t)=>{},"error"),fatal:o((...t)=>{},"fatal")},Dy=o(function(t="fatal"){let e=au.fatal;typeof t=="string"?t.toLowerCase()in au&&(e=au[t]):typeof t=="number"&&(e=t),X.trace=()=>{},X.debug=()=>{},X.info=()=>{},X.warn=()=>{},X.error=()=>{},X.fatal=()=>{},e<=au.fatal&&(X.fatal=console.error?console.error.bind(console,Eo("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Eo("FATAL"))),e<=au.error&&(X.error=console.error?console.error.bind(console,Eo("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Eo("ERROR"))),e<=au.warn&&(X.warn=console.warn?console.warn.bind(console,Eo("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Eo("WARN"))),e<=au.info&&(X.info=console.info?console.info.bind(console,Eo("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Eo("INFO"))),e<=au.debug&&(X.debug=console.debug?console.debug.bind(console,Eo("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Eo("DEBUG"))),e<=au.trace&&(X.trace=console.debug?console.debug.bind(console,Eo("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Eo("TRACE")))},"setLogLevel"),Eo=o(t=>`%c${(0,oG.default)().format("ss.SSS")} : ${t} : `,"format")});var j4,lG,cG=N(()=>{"use strict";j4={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:o(t=>t>=255?255:t<0?0:t,"r"),g:o(t=>t>=255?255:t<0?0:t,"g"),b:o(t=>t>=255?255:t<0?0:t,"b"),h:o(t=>t%360,"h"),s:o(t=>t>=100?100:t<0?0:t,"s"),l:o(t=>t>=100?100:t<0?0:t,"l"),a:o(t=>t>=1?1:t<0?0:t,"a")},toLinear:o(t=>{let e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},"toLinear"),hue2rgb:o((t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?t+(e-t)*6*r:r<.5?e:r<.6666666666666666?t+(e-t)*(.6666666666666666-r)*6:t),"hue2rgb"),hsl2rgb:o(({h:t,s:e,l:r},n)=>{if(!e)return r*2.55;t/=360,e/=100,r/=100;let i=r<.5?r*(1+e):r+e-r*e,a=2*r-i;switch(n){case"r":return j4.hue2rgb(a,i,t+.3333333333333333)*255;case"g":return j4.hue2rgb(a,i,t)*255;case"b":return j4.hue2rgb(a,i,t-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:t,g:e,b:r},n)=>{t/=255,e/=255,r/=255;let i=Math.max(t,e,r),a=Math.min(t,e,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case t:return((e-r)/l+(e{"use strict";i5e={clamp:o((t,e,r)=>e>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),"clamp"),round:o(t=>Math.round(t*1e10)/1e10,"round")},uG=i5e});var a5e,fG,dG=N(()=>{"use strict";a5e={dec2hex:o(t=>{let e=Math.round(t).toString(16);return e.length>1?e:`0${e}`},"dec2hex")},fG=a5e});var s5e,Kt,Xl=N(()=>{"use strict";cG();hG();dG();s5e={channel:lG,lang:uG,unit:fG},Kt=s5e});var su,Ni,Ly=N(()=>{"use strict";Xl();su={};for(let t=0;t<=255;t++)su[t]=Kt.unit.dec2hex(t);Ni={ALL:0,RGB:1,HSL:2}});var f7,pG,mG=N(()=>{"use strict";Ly();f7=class{static{o(this,"Type")}constructor(){this.type=Ni.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=Ni.ALL}is(e){return this.type===e}},pG=f7});var d7,gG,yG=N(()=>{"use strict";Xl();mG();Ly();d7=class{static{o(this,"Channels")}constructor(e,r){this.color=r,this.changed=!1,this.data=e,this.type=new pG}set(e,r){return this.color=r,this.changed=!1,this.data=e,this.type.type=Ni.ALL,this}_ensureHSL(){let e=this.data,{h:r,s:n,l:i}=e;r===void 0&&(e.h=Kt.channel.rgb2hsl(e,"h")),n===void 0&&(e.s=Kt.channel.rgb2hsl(e,"s")),i===void 0&&(e.l=Kt.channel.rgb2hsl(e,"l"))}_ensureRGB(){let e=this.data,{r,g:n,b:i}=e;r===void 0&&(e.r=Kt.channel.hsl2rgb(e,"r")),n===void 0&&(e.g=Kt.channel.hsl2rgb(e,"g")),i===void 0&&(e.b=Kt.channel.hsl2rgb(e,"b"))}get r(){let e=this.data,r=e.r;return!this.type.is(Ni.HSL)&&r!==void 0?r:(this._ensureHSL(),Kt.channel.hsl2rgb(e,"r"))}get g(){let e=this.data,r=e.g;return!this.type.is(Ni.HSL)&&r!==void 0?r:(this._ensureHSL(),Kt.channel.hsl2rgb(e,"g"))}get b(){let e=this.data,r=e.b;return!this.type.is(Ni.HSL)&&r!==void 0?r:(this._ensureHSL(),Kt.channel.hsl2rgb(e,"b"))}get h(){let e=this.data,r=e.h;return!this.type.is(Ni.RGB)&&r!==void 0?r:(this._ensureRGB(),Kt.channel.rgb2hsl(e,"h"))}get s(){let e=this.data,r=e.s;return!this.type.is(Ni.RGB)&&r!==void 0?r:(this._ensureRGB(),Kt.channel.rgb2hsl(e,"s"))}get l(){let e=this.data,r=e.l;return!this.type.is(Ni.RGB)&&r!==void 0?r:(this._ensureRGB(),Kt.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(Ni.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(Ni.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(Ni.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(Ni.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(Ni.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(Ni.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}},gG=d7});var o5e,fh,Ry=N(()=>{"use strict";yG();o5e=new gG({r:0,g:0,b:0,a:0},"transparent"),fh=o5e});var vG,od,p7=N(()=>{"use strict";Ry();Ly();vG={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(t=>{if(t.charCodeAt(0)!==35)return;let e=t.match(vG.re);if(!e)return;let r=e[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,f=s?255:15;return fh.set({r:(n>>u*(h+3)&f)*l,g:(n>>u*(h+2)&f)*l,b:(n>>u*(h+1)&f)*l,a:a?(n&f)*l/255:1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`#${su[Math.round(e)]}${su[Math.round(r)]}${su[Math.round(n)]}${su[Math.round(i*255)]}`:`#${su[Math.round(e)]}${su[Math.round(r)]}${su[Math.round(n)]}`},"stringify")},od=vG});var K4,Ny,xG=N(()=>{"use strict";Xl();Ry();K4={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:o(t=>{let e=t.match(K4.hueRe);if(e){let[,r,n]=e;switch(n){case"grad":return Kt.channel.clamp.h(parseFloat(r)*.9);case"rad":return Kt.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return Kt.channel.clamp.h(parseFloat(r)*360)}}return Kt.channel.clamp.h(parseFloat(t))},"_hue2deg"),parse:o(t=>{let e=t.charCodeAt(0);if(e!==104&&e!==72)return;let r=t.match(K4.re);if(!r)return;let[,n,i,a,s,l]=r;return fh.set({h:K4._hue2deg(n),s:Kt.channel.clamp.s(parseFloat(i)),l:Kt.channel.clamp.l(parseFloat(a)),a:s?Kt.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},t)},"parse"),stringify:o(t=>{let{h:e,s:r,l:n,a:i}=t;return i<1?`hsla(${Kt.lang.round(e)}, ${Kt.lang.round(r)}%, ${Kt.lang.round(n)}%, ${i})`:`hsl(${Kt.lang.round(e)}, ${Kt.lang.round(r)}%, ${Kt.lang.round(n)}%)`},"stringify")},Ny=K4});var Q4,m7,bG=N(()=>{"use strict";p7();Q4={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:o(t=>{t=t.toLowerCase();let e=Q4.colors[t];if(e)return od.parse(e)},"parse"),stringify:o(t=>{let e=od.stringify(t);for(let r in Q4.colors)if(Q4.colors[r]===e)return r},"stringify")},m7=Q4});var TG,My,wG=N(()=>{"use strict";Xl();Ry();TG={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:o(t=>{let e=t.charCodeAt(0);if(e!==114&&e!==82)return;let r=t.match(TG.re);if(!r)return;let[,n,i,a,s,l,u,h,f]=r;return fh.set({r:Kt.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:Kt.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:Kt.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?Kt.channel.clamp.a(f?parseFloat(h)/100:parseFloat(h)):1},t)},"parse"),stringify:o(t=>{let{r:e,g:r,b:n,a:i}=t;return i<1?`rgba(${Kt.lang.round(e)}, ${Kt.lang.round(r)}, ${Kt.lang.round(n)}, ${Kt.lang.round(i)})`:`rgb(${Kt.lang.round(e)}, ${Kt.lang.round(r)}, ${Kt.lang.round(n)})`},"stringify")},My=TG});var l5e,Mi,ou=N(()=>{"use strict";p7();xG();bG();wG();Ly();l5e={format:{keyword:m7,hex:od,rgb:My,rgba:My,hsl:Ny,hsla:Ny},parse:o(t=>{if(typeof t!="string")return t;let e=od.parse(t)||My.parse(t)||Ny.parse(t)||m7.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},"parse"),stringify:o(t=>!t.changed&&t.color?t.color:t.type.is(Ni.HSL)||t.data.r===void 0?Ny.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?My.stringify(t):od.stringify(t),"stringify")},Mi=l5e});var c5e,Z4,g7=N(()=>{"use strict";Xl();ou();c5e=o((t,e)=>{let r=Mi.parse(t);for(let n in e)r[n]=Kt.channel.clamp[n](e[n]);return Mi.stringify(r)},"change"),Z4=c5e});var u5e,Ka,y7=N(()=>{"use strict";Xl();Ry();ou();g7();u5e=o((t,e,r=0,n=1)=>{if(typeof t!="number")return Z4(t,{a:e});let i=fh.set({r:Kt.channel.clamp.r(t),g:Kt.channel.clamp.g(e),b:Kt.channel.clamp.b(r),a:Kt.channel.clamp.a(n)});return Mi.stringify(i)},"rgba"),Ka=u5e});var h5e,ld,kG=N(()=>{"use strict";Xl();ou();h5e=o((t,e)=>Kt.lang.round(Mi.parse(t)[e]),"channel"),ld=h5e});var f5e,EG,SG=N(()=>{"use strict";Xl();ou();f5e=o(t=>{let{r:e,g:r,b:n}=Mi.parse(t),i=.2126*Kt.channel.toLinear(e)+.7152*Kt.channel.toLinear(r)+.0722*Kt.channel.toLinear(n);return Kt.lang.round(i)},"luminance"),EG=f5e});var d5e,CG,AG=N(()=>{"use strict";SG();d5e=o(t=>EG(t)>=.5,"isLight"),CG=d5e});var p5e,sa,_G=N(()=>{"use strict";AG();p5e=o(t=>!CG(t),"isDark"),sa=p5e});var m5e,J4,v7=N(()=>{"use strict";Xl();ou();m5e=o((t,e,r)=>{let n=Mi.parse(t),i=n[e],a=Kt.channel.clamp[e](i+r);return i!==a&&(n[e]=a),Mi.stringify(n)},"adjustChannel"),J4=m5e});var g5e,Rt,DG=N(()=>{"use strict";v7();g5e=o((t,e)=>J4(t,"l",e),"lighten"),Rt=g5e});var y5e,Pt,LG=N(()=>{"use strict";v7();y5e=o((t,e)=>J4(t,"l",-e),"darken"),Pt=y5e});var v5e,Pe,RG=N(()=>{"use strict";ou();g7();v5e=o((t,e)=>{let r=Mi.parse(t),n={};for(let i in e)e[i]&&(n[i]=r[i]+e[i]);return Z4(t,n)},"adjust"),Pe=v5e});var x5e,NG,MG=N(()=>{"use strict";ou();y7();x5e=o((t,e,r=50)=>{let{r:n,g:i,b:a,a:s}=Mi.parse(t),{r:l,g:u,b:h,a:f}=Mi.parse(e),d=r/100,p=d*2-1,m=s-f,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,T=a*y+h*v,S=s*d+f*(1-d);return Ka(x,b,T,S)},"mix"),NG=x5e});var b5e,Et,IG=N(()=>{"use strict";ou();MG();b5e=o((t,e=100)=>{let r=Mi.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,NG(r,t,e)},"invert"),Et=b5e});var OG=N(()=>{"use strict";y7();kG();_G();DG();LG();RG();IG()});var eo=N(()=>{"use strict";OG()});var dh,ph,Iy=N(()=>{"use strict";dh="#ffffff",ph="#f2f2f2"});var wi,x0=N(()=>{"use strict";eo();wi=o((t,e)=>e?Pe(t,{s:-40,l:10}):Pe(t,{s:-40,l:-10}),"mkBorder")});var b7,PG,BG=N(()=>{"use strict";eo();Iy();x0();b7=class{static{o(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||Pe(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Pe(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||wi(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||wi(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Et(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Et(this.tertiaryColor),this.lineColor=this.lineColor||Et(this.background),this.arrowheadColor=this.arrowheadColor||Et(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?Pt(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||Pt(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Et(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||Rt(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||Pt(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Pt(this.mainBkg,10)):(this.rowOdd=this.rowOdd||Rt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Rt(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||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},PG=o(t=>{let e=new b7;return e.calculate(t),e},"getThemeVariables")});var T7,FG,$G=N(()=>{"use strict";eo();x0();T7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Rt(this.primaryColor,16),this.tertiaryColor=Pe(this.primaryColor,{h:-160}),this.primaryBorderColor=Et(this.background),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.tertiaryColor),this.lineColor=Et(this.background),this.textColor=Et(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Rt(Et("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Ka(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=Pt("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Pt(this.sectionBkgColor,10),this.taskBorderColor=Ka(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Ka(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||Rt(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Pt(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=Rt(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=Rt(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=Rt(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=Pe(this.primaryColor,{h:64}),this.fillType3=Pe(this.secondaryColor,{h:64}),this.fillType4=Pe(this.primaryColor,{h:-64}),this.fillType5=Pe(this.secondaryColor,{h:-64}),this.fillType6=Pe(this.primaryColor,{h:128}),this.fillType7=Pe(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||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330});for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},FG=o(t=>{let e=new T7;return e.calculate(t),e},"getThemeVariables")});var w7,mh,Oy=N(()=>{"use strict";eo();x0();Iy();w7=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Pe(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Pe(this.primaryColor,{h:-160}),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.tertiaryColor),this.lineColor=Et(this.background),this.textColor=Et(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=Ka(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||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Pt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Pt(this.tertiaryColor,40);for(let e=0;e{this[n]==="calculated"&&(this[n]=void 0)}),typeof e!="object"){this.updateColors();return}let r=Object.keys(e);r.forEach(n=>{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},mh=o(t=>{let e=new w7;return e.calculate(t),e},"getThemeVariables")});var k7,zG,GG=N(()=>{"use strict";eo();Iy();x0();k7=class{static{o(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=Rt("#cde498",10),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.primaryColor),this.lineColor=Et(this.background),this.textColor=Et(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=Pt(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||Pe(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Pe(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Pe(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Pe(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Pe(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Pe(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Pe(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Pe(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Pe(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Pt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Pt(this.tertiaryColor,40);for(let e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},zG=o(t=>{let e=new k7;return e.calculate(t),e},"getThemeVariables")});var E7,VG,UG=N(()=>{"use strict";eo();x0();Iy();E7=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Rt(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Pe(this.primaryColor,{h:-160}),this.primaryBorderColor=wi(this.primaryColor,this.darkMode),this.secondaryBorderColor=wi(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=wi(this.tertiaryColor,this.darkMode),this.primaryTextColor=Et(this.primaryColor),this.secondaryTextColor=Et(this.secondaryColor),this.tertiaryTextColor=Et(this.tertiaryColor),this.lineColor=Et(this.background),this.textColor=Et(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||Rt(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=Rt(this.contrast,55),this.border2=this.contrast,this.actorBorder=Rt(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 e=0;e{this[n]=e[n]}),this.updateColors(),r.forEach(n=>{this[n]=e[n]})}},VG=o(t=>{let e=new E7;return e.calculate(t),e},"getThemeVariables")});var So,e3=N(()=>{"use strict";BG();$G();Oy();GG();UG();So={base:{getThemeVariables:PG},dark:{getThemeVariables:FG},default:{getThemeVariables:mh},forest:{getThemeVariables:zG},neutral:{getThemeVariables:VG}}});var ul,HG=N(()=>{"use strict";ul={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}});var qG,WG,YG,ur,La=N(()=>{"use strict";e3();HG();qG={...ul,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:So.default.getThemeVariables(),sequence:{...ul.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...ul.gantt,tickInterval:void 0,useWidth:void 0},c4:{...ul.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...ul.flowchart,inheritDir:!1},external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...ul.pie,useWidth:984},xyChart:{...ul.xyChart,useWidth:void 0},requirement:{...ul.requirement,useWidth:void 0},packet:{...ul.packet},radar:{...ul.radar},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","}},WG=o((t,e="")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:typeof t[n]=="object"&&t[n]!==null?[...r,e+n,...WG(t[n],"")]:[...r,e+n],[]),"keyify"),YG=new Set(WG(qG,"")),ur=qG});var b0,T5e,S7=N(()=>{"use strict";La();pt();b0=o(t=>{if(X.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>b0(e));return}for(let e of Object.keys(t)){if(X.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!YG.has(e)||t[e]==null){X.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){X.debug("sanitizing object",e),b0(t[e]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)e.includes(n)&&(X.debug("sanitizing css option",e),t[e]=T5e(t[e]))}if(t.themeVariables)for(let e of Object.keys(t.themeVariables)){let r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}X.debug("After sanitization",t)}},"sanitizeDirective"),T5e=o(t=>{let e=0,r=0;for(let n of t){if(e{"use strict";v0();pt();e3();La();S7();gh=Object.freeze(ur),Es=Rn({},gh),cd=[],Py=Rn({},gh),r3=o((t,e)=>{let r=Rn({},t),n={};for(let i of e)QG(i),n=Rn(n,i);if(r=Rn(r,n),n.theme&&n.theme in So){let i=Rn({},t3),a=Rn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in So&&(r.themeVariables=So[r.theme].getThemeVariables(a))}return Py=r,JG(Py),Py},"updateCurrentConfig"),C7=o(t=>(Es=Rn({},gh),Es=Rn(Es,t),t.theme&&So[t.theme]&&(Es.themeVariables=So[t.theme].getThemeVariables(t.themeVariables)),r3(Es,cd),Es),"setSiteConfig"),jG=o(t=>{t3=Rn({},t)},"saveConfigFromInitialize"),KG=o(t=>(Es=Rn(Es,t),r3(Es,cd),Es),"updateSiteConfig"),A7=o(()=>Rn({},Es),"getSiteConfig"),n3=o(t=>(JG(t),Rn(Py,t),Qt()),"setConfig"),Qt=o(()=>Rn({},Py),"getConfig"),QG=o(t=>{t&&(["secure",...Es.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(X.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&QG(t[e])}))},"sanitize"),ZG=o(t=>{b0(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),cd.push(t),r3(Es,cd)},"addDirective"),By=o((t=Es)=>{cd=[],r3(t,cd)},"reset"),w5e={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},XG={},k5e=o(t=>{XG[t]||(X.warn(w5e[t]),XG[t]=!0)},"issueWarning"),JG=o(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&k5e("LAZY_LOAD_DEPRECATED")},"checkConfig"),eV=o(()=>{let t={};t3&&(t=Rn(t,t3));for(let e of cd)t=Rn(t,e);return t},"getUserDefinedConfig")});function Ja(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:s3;tV&&tV(t,null);let n=e.length;for(;n--;){let i=e[n];if(typeof i=="string"){let a=r(i);a!==i&&(E5e(e)||(e[n]=a),i=a)}t[i]=!0}return t}function N5e(t){for(let e=0;e0&&arguments[0]!==void 0?arguments[0]:U5e(),e=o(Ct=>pV(Ct),"DOMPurify");if(e.version="3.2.6",e.removed=[],!t||!t.document||t.document.nodeType!==Vy.document||!t.Element)return e.isSupported=!1,e;let{document:r}=t,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:f=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:d,DOMParser:p,trustedTypes:m}=t,g=u.prototype,y=Gy(g,"cloneNode"),v=Gy(g,"remove"),x=Gy(g,"nextSibling"),b=Gy(g,"childNodes"),T=Gy(g,"parentNode");if(typeof s=="function"){let Ct=r.createElement("template");Ct.content&&Ct.content.ownerDocument&&(r=Ct.content.ownerDocument)}let S,w="",{implementation:k,createNodeIterator:A,createDocumentFragment:C,getElementsByTagName:R}=r,{importNode:I}=n,L=cV();e.isSupported=typeof uV=="function"&&typeof T=="function"&&k&&k.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:E,ERB_EXPR:D,TMPLIT_EXPR:_,DATA_ATTR:O,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:P,ATTR_WHITESPACE:B,CUSTOM_ELEMENT:F}=lV,{IS_ALLOWED_URI:G}=lV,$=null,U=Nr({},[...iV,...D7,...L7,...R7,...aV]),j=null,te=Nr({},[...sV,...N7,...oV,...a3]),Y=Object.seal(hV(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}})),oe=null,J=null,ue=!0,re=!0,ee=!1,Z=!0,K=!1,ae=!0,Q=!1,de=!1,ne=!1,Te=!1,q=!1,Ve=!1,pe=!0,Be=!1,Ye="user-content-",He=!0,Le=!1,Ie={},Ne=null,Ce=Nr({},["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"]),Fe=null,fe=Nr({},["audio","video","img","source","image","track"]),xe=null,W=Nr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),he="http://www.w3.org/1998/Math/MathML",z="http://www.w3.org/2000/svg",se="http://www.w3.org/1999/xhtml",le=se,ke=!1,ve=null,ye=Nr({},[he,z,se],_7),Re=Nr({},["mi","mo","mn","ms","mtext"]),_e=Nr({},["annotation-xml"]),ze=Nr({},["title","style","font","a","script"]),Ke=null,xt=["application/xhtml+xml","text/html"],We="text/html",Oe=null,et=null,Ue=r.createElement("form"),lt=o(function(Se){return Se instanceof RegExp||Se instanceof Function},"isRegexOrFunction"),Gt=o(function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(et&&et===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=lu(Se),Ke=xt.indexOf(Se.PARSER_MEDIA_TYPE)===-1?We:Se.PARSER_MEDIA_TYPE,Oe=Ke==="application/xhtml+xml"?_7:s3,$=hl(Se,"ALLOWED_TAGS")?Nr({},Se.ALLOWED_TAGS,Oe):U,j=hl(Se,"ALLOWED_ATTR")?Nr({},Se.ALLOWED_ATTR,Oe):te,ve=hl(Se,"ALLOWED_NAMESPACES")?Nr({},Se.ALLOWED_NAMESPACES,_7):ye,xe=hl(Se,"ADD_URI_SAFE_ATTR")?Nr(lu(W),Se.ADD_URI_SAFE_ATTR,Oe):W,Fe=hl(Se,"ADD_DATA_URI_TAGS")?Nr(lu(fe),Se.ADD_DATA_URI_TAGS,Oe):fe,Ne=hl(Se,"FORBID_CONTENTS")?Nr({},Se.FORBID_CONTENTS,Oe):Ce,oe=hl(Se,"FORBID_TAGS")?Nr({},Se.FORBID_TAGS,Oe):lu({}),J=hl(Se,"FORBID_ATTR")?Nr({},Se.FORBID_ATTR,Oe):lu({}),Ie=hl(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,ue=Se.ALLOW_ARIA_ATTR!==!1,re=Se.ALLOW_DATA_ATTR!==!1,ee=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,Z=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,K=Se.SAFE_FOR_TEMPLATES||!1,ae=Se.SAFE_FOR_XML!==!1,Q=Se.WHOLE_DOCUMENT||!1,Te=Se.RETURN_DOM||!1,q=Se.RETURN_DOM_FRAGMENT||!1,Ve=Se.RETURN_TRUSTED_TYPE||!1,ne=Se.FORCE_BODY||!1,pe=Se.SANITIZE_DOM!==!1,Be=Se.SANITIZE_NAMED_PROPS||!1,He=Se.KEEP_CONTENT!==!1,Le=Se.IN_PLACE||!1,G=Se.ALLOWED_URI_REGEXP||fV,le=Se.NAMESPACE||se,Re=Se.MATHML_TEXT_INTEGRATION_POINTS||Re,_e=Se.HTML_INTEGRATION_POINTS||_e,Y=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&<(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Y.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&<(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Y.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Y.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),K&&(re=!1),q&&(Te=!0),Ie&&($=Nr({},aV),j=[],Ie.html===!0&&(Nr($,iV),Nr(j,sV)),Ie.svg===!0&&(Nr($,D7),Nr(j,N7),Nr(j,a3)),Ie.svgFilters===!0&&(Nr($,L7),Nr(j,N7),Nr(j,a3)),Ie.mathMl===!0&&(Nr($,R7),Nr(j,oV),Nr(j,a3))),Se.ADD_TAGS&&($===U&&($=lu($)),Nr($,Se.ADD_TAGS,Oe)),Se.ADD_ATTR&&(j===te&&(j=lu(j)),Nr(j,Se.ADD_ATTR,Oe)),Se.ADD_URI_SAFE_ATTR&&Nr(xe,Se.ADD_URI_SAFE_ATTR,Oe),Se.FORBID_CONTENTS&&(Ne===Ce&&(Ne=lu(Ne)),Nr(Ne,Se.FORBID_CONTENTS,Oe)),He&&($["#text"]=!0),Q&&Nr($,["html","head","body"]),$.table&&(Nr($,["tbody"]),delete oe.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw zy('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw zy('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');S=Se.TRUSTED_TYPES_POLICY,w=S.createHTML("")}else S===void 0&&(S=H5e(m,i)),S!==null&&typeof w=="string"&&(w=S.createHTML(""));Za&&Za(Se),et=Se}},"_parseConfig"),vt=Nr({},[...D7,...L7,...M5e]),Lt=Nr({},[...R7,...I5e]),dt=o(function(Se){let at=T(Se);(!at||!at.tagName)&&(at={namespaceURI:le,tagName:"template"});let Nt=s3(Se.tagName),wr=s3(at.tagName);return ve[Se.namespaceURI]?Se.namespaceURI===z?at.namespaceURI===se?Nt==="svg":at.namespaceURI===he?Nt==="svg"&&(wr==="annotation-xml"||Re[wr]):!!vt[Nt]:Se.namespaceURI===he?at.namespaceURI===se?Nt==="math":at.namespaceURI===z?Nt==="math"&&_e[wr]:!!Lt[Nt]:Se.namespaceURI===se?at.namespaceURI===z&&!_e[wr]||at.namespaceURI===he&&!Re[wr]?!1:!Lt[Nt]&&(ze[Nt]||!vt[Nt]):!!(Ke==="application/xhtml+xml"&&ve[Se.namespaceURI]):!1},"_checkValidNamespace"),nt=o(function(Se){Fy(e.removed,{element:Se});try{T(Se).removeChild(Se)}catch{v(Se)}},"_forceRemove"),bt=o(function(Se,at){try{Fy(e.removed,{attribute:at.getAttributeNode(Se),from:at})}catch{Fy(e.removed,{attribute:null,from:at})}if(at.removeAttribute(Se),Se==="is")if(Te||q)try{nt(at)}catch{}else try{at.setAttribute(Se,"")}catch{}},"_removeAttribute"),wt=o(function(Se){let at=null,Nt=null;if(ne)Se=""+Se;else{let yn=nV(Se,/^[\r\n\t ]+/);Nt=yn&&yn[0]}Ke==="application/xhtml+xml"&&le===se&&(Se=''+Se+"");let wr=S?S.createHTML(Se):Se;if(le===se)try{at=new p().parseFromString(wr,Ke)}catch{}if(!at||!at.documentElement){at=k.createDocument(le,"template",null);try{at.documentElement.innerHTML=ke?w:wr}catch{}}let Tn=at.body||at.documentElement;return Se&&Nt&&Tn.insertBefore(r.createTextNode(Nt),Tn.childNodes[0]||null),le===se?R.call(at,Q?"html":"body")[0]:Q?at.documentElement:Tn},"_initDocument"),yt=o(function(Se){return A.call(Se.ownerDocument||Se,Se,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),ft=o(function(Se){return Se instanceof d&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof f)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},"_isClobbered"),Ur=o(function(Se){return typeof l=="function"&&Se instanceof l},"_isNode");function _t(Ct,Se,at){i3(Ct,Nt=>{Nt.call(e,Se,at,et)})}o(_t,"_executeHooks");let bn=o(function(Se){let at=null;if(_t(L.beforeSanitizeElements,Se,null),ft(Se))return nt(Se),!0;let Nt=Oe(Se.nodeName);if(_t(L.uponSanitizeElement,Se,{tagName:Nt,allowedTags:$}),ae&&Se.hasChildNodes()&&!Ur(Se.firstElementChild)&&Qa(/<[/\w!]/g,Se.innerHTML)&&Qa(/<[/\w!]/g,Se.textContent)||Se.nodeType===Vy.progressingInstruction||ae&&Se.nodeType===Vy.comment&&Qa(/<[/\w]/g,Se.data))return nt(Se),!0;if(!$[Nt]||oe[Nt]){if(!oe[Nt]&&cr(Nt)&&(Y.tagNameCheck instanceof RegExp&&Qa(Y.tagNameCheck,Nt)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Nt)))return!1;if(He&&!Ne[Nt]){let wr=T(Se)||Se.parentNode,Tn=b(Se)||Se.childNodes;if(Tn&&wr){let yn=Tn.length;for(let sn=yn-1;sn>=0;--sn){let Hi=y(Tn[sn],!0);Hi.__removalCount=(Se.__removalCount||0)+1,wr.insertBefore(Hi,x(Se))}}}return nt(Se),!0}return Se instanceof u&&!dt(Se)||(Nt==="noscript"||Nt==="noembed"||Nt==="noframes")&&Qa(/<\/no(script|embed|frames)/i,Se.innerHTML)?(nt(Se),!0):(K&&Se.nodeType===Vy.text&&(at=Se.textContent,i3([E,D,_],wr=>{at=$y(at,wr," ")}),Se.textContent!==at&&(Fy(e.removed,{element:Se.cloneNode()}),Se.textContent=at)),_t(L.afterSanitizeElements,Se,null),!1)},"_sanitizeElements"),Br=o(function(Se,at,Nt){if(pe&&(at==="id"||at==="name")&&(Nt in r||Nt in Ue))return!1;if(!(re&&!J[at]&&Qa(O,at))){if(!(ue&&Qa(M,at))){if(!j[at]||J[at]){if(!(cr(Se)&&(Y.tagNameCheck instanceof RegExp&&Qa(Y.tagNameCheck,Se)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Se))&&(Y.attributeNameCheck instanceof RegExp&&Qa(Y.attributeNameCheck,at)||Y.attributeNameCheck instanceof Function&&Y.attributeNameCheck(at))||at==="is"&&Y.allowCustomizedBuiltInElements&&(Y.tagNameCheck instanceof RegExp&&Qa(Y.tagNameCheck,Nt)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Nt))))return!1}else if(!xe[at]){if(!Qa(G,$y(Nt,B,""))){if(!((at==="src"||at==="xlink:href"||at==="href")&&Se!=="script"&&D5e(Nt,"data:")===0&&Fe[Se])){if(!(ee&&!Qa(P,$y(Nt,B,"")))){if(Nt)return!1}}}}}}return!0},"_isValidAttribute"),cr=o(function(Se){return Se!=="annotation-xml"&&nV(Se,F)},"_isBasicCustomElement"),ar=o(function(Se){_t(L.beforeSanitizeAttributes,Se,null);let{attributes:at}=Se;if(!at||ft(Se))return;let Nt={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:j,forceKeepAttr:void 0},wr=at.length;for(;wr--;){let Tn=at[wr],{name:yn,namespaceURI:sn,value:Hi}=Tn,Zs=Oe(yn),_a=Hi,fr=yn==="value"?_a:L5e(_a);if(Nt.attrName=Zs,Nt.attrValue=fr,Nt.keepAttr=!0,Nt.forceKeepAttr=void 0,_t(L.uponSanitizeAttribute,Se,Nt),fr=Nt.attrValue,Be&&(Zs==="id"||Zs==="name")&&(bt(yn,Se),fr=Ye+fr),ae&&Qa(/((--!?|])>)|<\/(style|title)/i,fr)){bt(yn,Se);continue}if(Nt.forceKeepAttr)continue;if(!Nt.keepAttr){bt(yn,Se);continue}if(!Z&&Qa(/\/>/i,fr)){bt(yn,Se);continue}K&&i3([E,D,_],kt=>{fr=$y(fr,kt," ")});let it=Oe(Se.nodeName);if(!Br(it,Zs,fr)){bt(yn,Se);continue}if(S&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!sn)switch(m.getAttributeType(it,Zs)){case"TrustedHTML":{fr=S.createHTML(fr);break}case"TrustedScriptURL":{fr=S.createScriptURL(fr);break}}if(fr!==_a)try{sn?Se.setAttributeNS(sn,yn,fr):Se.setAttribute(yn,fr),ft(Se)?nt(Se):rV(e.removed)}catch{bt(yn,Se)}}_t(L.afterSanitizeAttributes,Se,null)},"_sanitizeAttributes"),_r=o(function Ct(Se){let at=null,Nt=yt(Se);for(_t(L.beforeSanitizeShadowDOM,Se,null);at=Nt.nextNode();)_t(L.uponSanitizeShadowNode,at,null),bn(at),ar(at),at.content instanceof a&&Ct(at.content);_t(L.afterSanitizeShadowDOM,Se,null)},"_sanitizeShadowDOM");return e.sanitize=function(Ct){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},at=null,Nt=null,wr=null,Tn=null;if(ke=!Ct,ke&&(Ct=""),typeof Ct!="string"&&!Ur(Ct))if(typeof Ct.toString=="function"){if(Ct=Ct.toString(),typeof Ct!="string")throw zy("dirty is not a string, aborting")}else throw zy("toString is not a function");if(!e.isSupported)return Ct;if(de||Gt(Se),e.removed=[],typeof Ct=="string"&&(Le=!1),Le){if(Ct.nodeName){let Hi=Oe(Ct.nodeName);if(!$[Hi]||oe[Hi])throw zy("root node is forbidden and cannot be sanitized in-place")}}else if(Ct instanceof l)at=wt(""),Nt=at.ownerDocument.importNode(Ct,!0),Nt.nodeType===Vy.element&&Nt.nodeName==="BODY"||Nt.nodeName==="HTML"?at=Nt:at.appendChild(Nt);else{if(!Te&&!K&&!Q&&Ct.indexOf("<")===-1)return S&&Ve?S.createHTML(Ct):Ct;if(at=wt(Ct),!at)return Te?null:Ve?w:""}at&&ne&&nt(at.firstChild);let yn=yt(Le?Ct:at);for(;wr=yn.nextNode();)bn(wr),ar(wr),wr.content instanceof a&&_r(wr.content);if(Le)return Ct;if(Te){if(q)for(Tn=C.call(at.ownerDocument);at.firstChild;)Tn.appendChild(at.firstChild);else Tn=at;return(j.shadowroot||j.shadowrootmode)&&(Tn=I.call(n,Tn,!0)),Tn}let sn=Q?at.outerHTML:at.innerHTML;return Q&&$["!doctype"]&&at.ownerDocument&&at.ownerDocument.doctype&&at.ownerDocument.doctype.name&&Qa(dV,at.ownerDocument.doctype.name)&&(sn=" -`+sn),K&&i3([E,D,_],Hi=>{sn=$y(sn,Hi," ")}),S&&Ve?S.createHTML(sn):sn},e.setConfig=function(){let Ct=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Gt(Ct),de=!0},e.clearConfig=function(){et=null,de=!1},e.isValidAttribute=function(Ct,Se,at){et||Gt({});let Nt=Oe(Ct),wr=Oe(Se);return Br(Nt,wr,at)},e.addHook=function(Ct,Se){typeof Se=="function"&&Fy(L[Ct],Se)},e.removeHook=function(Ct,Se){if(Se!==void 0){let at=A5e(L[Ct],Se);return at===-1?void 0:_5e(L[Ct],at,1)[0]}return rV(L[Ct])},e.removeHooks=function(Ct){L[Ct]=[]},e.removeAllHooks=function(){L=cV()},e}var uV,tV,E5e,S5e,C5e,Za,Co,hV,M7,I7,i3,A5e,rV,Fy,_5e,s3,_7,nV,$y,D5e,L5e,hl,Qa,zy,iV,D7,L7,M5e,R7,I5e,aV,sV,N7,oV,a3,O5e,P5e,B5e,F5e,$5e,fV,z5e,G5e,dV,V5e,lV,Vy,U5e,H5e,cV,yh,O7=N(()=>{"use strict";({entries:uV,setPrototypeOf:tV,isFrozen:E5e,getPrototypeOf:S5e,getOwnPropertyDescriptor:C5e}=Object),{freeze:Za,seal:Co,create:hV}=Object,{apply:M7,construct:I7}=typeof Reflect<"u"&&Reflect;Za||(Za=o(function(e){return e},"freeze"));Co||(Co=o(function(e){return e},"seal"));M7||(M7=o(function(e,r,n){return e.apply(r,n)},"apply"));I7||(I7=o(function(e,r){return new e(...r)},"construct"));i3=Ja(Array.prototype.forEach),A5e=Ja(Array.prototype.lastIndexOf),rV=Ja(Array.prototype.pop),Fy=Ja(Array.prototype.push),_5e=Ja(Array.prototype.splice),s3=Ja(String.prototype.toLowerCase),_7=Ja(String.prototype.toString),nV=Ja(String.prototype.match),$y=Ja(String.prototype.replace),D5e=Ja(String.prototype.indexOf),L5e=Ja(String.prototype.trim),hl=Ja(Object.prototype.hasOwnProperty),Qa=Ja(RegExp.prototype.test),zy=R5e(TypeError);o(Ja,"unapply");o(R5e,"unconstruct");o(Nr,"addToSet");o(N5e,"cleanArray");o(lu,"clone");o(Gy,"lookupGetter");iV=Za(["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"]),D7=Za(["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"]),L7=Za(["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"]),M5e=Za(["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"]),R7=Za(["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"]),I5e=Za(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),aV=Za(["#text"]),sV=Za(["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"]),N7=Za(["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"]),oV=Za(["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"]),a3=Za(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),O5e=Co(/\{\{[\w\W]*|[\w\W]*\}\}/gm),P5e=Co(/<%[\w\W]*|[\w\W]*%>/gm),B5e=Co(/\$\{[\w\W]*/gm),F5e=Co(/^data-[\-\w.\u00B7-\uFFFF]+$/),$5e=Co(/^aria-[\-\w]+$/),fV=Co(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),z5e=Co(/^(?:\w+script|data):/i),G5e=Co(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),dV=Co(/^html$/i),V5e=Co(/^[a-z][.\w]*(-[.\w]+)+$/i),lV=Object.freeze({__proto__:null,ARIA_ATTR:$5e,ATTR_WHITESPACE:G5e,CUSTOM_ELEMENT:V5e,DATA_ATTR:F5e,DOCTYPE_NAME:dV,ERB_EXPR:P5e,IS_ALLOWED_URI:fV,IS_SCRIPT_OR_DATA:z5e,MUSTACHE_EXPR:O5e,TMPLIT_EXPR:B5e}),Vy={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},U5e=o(function(){return typeof window>"u"?null:window},"getGlobal"),H5e=o(function(e,r){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return e.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),cV=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(pV,"createDOMPurify");yh=pV()});var WU={};dr(WU,{ParseError:()=>gt,SETTINGS_SCHEMA:()=>Wy,__defineFunction:()=>Mt,__defineMacro:()=>ce,__defineSymbol:()=>V,__domTree:()=>qU,__parse:()=>GU,__renderToDomTree:()=>M3,__renderToHTMLTree:()=>UU,__setFontMetrics:()=>XV,default:()=>Owe,render:()=>EA,renderToString:()=>zU,version:()=>HU});function Q5e(t){return String(t).replace(K5e,e=>j5e[e])}function tTe(t){if(t.default)return t.default;var e=t.type,r=Array.isArray(e)?e[0]:e;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function lTe(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}function YV(t){for(var e=0;e=v3[e]&&t<=v3[e+1])return!0;return!1}function XV(t,e){Ql[t]=e}function lA(t,e,r){if(!Ql[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),i=Ql[e][n];if(!i&&t[0]in gV&&(n=gV[t[0]].charCodeAt(0),i=Ql[e][n]),!i&&r==="text"&&YV(n)&&(i=Ql[e][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function xTe(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!P7[e]){var r=P7[e]={cssEmPerMu:o3.quad[e]/18};for(var n in o3)o3.hasOwnProperty(n)&&(r[n]=o3[n][e])}return P7[e]}function xV(t){if(t instanceof Cs)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}function ETe(t){if(t instanceof fd)return t;throw new Error("Expected span but got "+String(t)+".")}function V(t,e,r,n,i,a){Nn[t][i]={font:e,group:r,replace:n},a&&n&&(Nn[t][n]=Nn[t][i])}function Mt(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},u=0;u0&&(a.push(p3(s,e)),s=[]),a.push(n[l]));s.length>0&&a.push(p3(s,e));var h;r?(h=p3(Ii(r,e,!0)),h.classes=["tag"],a.push(h)):i&&a.push(i);var f=du(["katex-html"],a);if(f.setAttribute("aria-hidden","true"),h){var d=h.children[0];d.style.height=St(f.height+f.depth),f.depth&&(d.style.verticalAlign=St(-f.depth))}return f}function sU(t){return new hd(t)}function $7(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof _o&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var r=t.children[0];return r instanceof _o&&r.text===","}else return!1}function EV(t,e,r,n,i){var a=As(t,r),s;a.length===1&&a[0]instanceof es&&er.contains(["mrow","mtable"],a[0].type)?s=a[0]:s=new mt.MathNode("mrow",a);var l=new mt.MathNode("annotation",[new mt.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var u=new mt.MathNode("semantics",[s,l]),h=new mt.MathNode("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var f=i?"katex":"katex-mathml";return $e.makeSpan([f],[h])}function Tr(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function fA(t){var e=D3(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function D3(t){return t&&(t.type==="atom"||CTe.hasOwnProperty(t.type))?t:null}function uU(t,e){var r=Ii(t.body,e,!0);return rwe([t.mclass],r,e)}function hU(t,e){var r,n=As(t.body,e);return t.mclass==="minner"?r=new mt.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new mt.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new mt.MathNode("mo",n),t.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):t.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):t.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function awe(t,e,r){var n=nwe[t];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[e[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[e[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function swe(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var r=t.fetch().text;if(r==="&"||r==="\\\\")t.consume();else if(r==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new gt("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],i=[n],a=0;a-1))if("<>AV".indexOf(h)>-1)for(var d=0;d<2;d++){for(var p=!0,m=u+1;mAV=|." after @',s[u]);var g=awe(h,f,t),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=SV()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var v=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function R3(t,e){var r=D3(t);if(r&&er.contains(xwe,r.text))return r;throw r?new gt("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new gt("Invalid delimiter type '"+t.type+"'",t)}function _V(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Jl(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,l={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u1||!f)&&y.pop(),x.length{"use strict";to=class t{static{o(this,"SourceLocation")}constructor(e,r,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=r,this.end=n}static range(e,r){return r?!e||!e.loc||!r.loc||e.loc.lexer!==r.loc.lexer?null:new t(e.loc.lexer,e.loc.start,r.loc.end):e&&e.loc}},Do=class t{static{o(this,"Token")}constructor(e,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=r}range(e,r){return new t(r,to.range(this,e))}},gt=class t{static{o(this,"ParseError")}constructor(e,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n="KaTeX parse error: "+e,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var f;a+15":">","<":"<",'"':""","'":"'"},K5e=/[&><"']/g;o(Q5e,"escape");WV=o(function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},"getBaseElem"),Z5e=o(function(e){var r=WV(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},"isCharacterBox"),J5e=o(function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},"assert"),eTe=o(function(e){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},"protocolFromUrl"),er={contains:q5e,deflt:W5e,escape:Q5e,hyphenate:X5e,getBaseElem:WV,isCharacterBox:Z5e,protocolFromUrl:eTe},Wy={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:o(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:o((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:o(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:o(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:o(t=>Math.max(0,t),"processor"),cli:"-e, --max-expand ",cliProcessor:o(t=>t==="Infinity"?1/0:parseInt(t),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(tTe,"getDefaultValue");Xy=class{static{o(this,"Settings")}constructor(e){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||{};for(var r in Wy)if(Wy.hasOwnProperty(r)){var n=Wy[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:tTe(n)}}reportNonstrict(e,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(e,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new gt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+e+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]"))}}useStrictBehavior(e,r,n){var i=this.strict;if(typeof i=="function")try{i=i(e,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var r=er.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}},jl=class{static{o(this,"Style")}constructor(e,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=r,this.cramped=n}sup(){return Kl[rTe[this.id]]}sub(){return Kl[nTe[this.id]]}fracNum(){return Kl[iTe[this.id]]}fracDen(){return Kl[aTe[this.id]]}cramp(){return Kl[sTe[this.id]]}text(){return Kl[oTe[this.id]]}isTight(){return this.size>=2}},oA=0,x3=1,k0=2,hu=3,jy=4,Ao=5,E0=6,ts=7,Kl=[new jl(oA,0,!1),new jl(x3,0,!0),new jl(k0,1,!1),new jl(hu,1,!0),new jl(jy,2,!1),new jl(Ao,2,!0),new jl(E0,3,!1),new jl(ts,3,!0)],rTe=[jy,Ao,jy,Ao,E0,ts,E0,ts],nTe=[Ao,Ao,Ao,Ao,ts,ts,ts,ts],iTe=[k0,hu,jy,Ao,E0,ts,E0,ts],aTe=[hu,hu,Ao,Ao,ts,ts,ts,ts],sTe=[x3,x3,hu,hu,Ao,Ao,ts,ts],oTe=[oA,x3,k0,hu,k0,hu,k0,hu],nr={DISPLAY:Kl[oA],TEXT:Kl[k0],SCRIPT:Kl[jy],SCRIPTSCRIPT:Kl[E0]},j7=[{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]]}];o(lTe,"scriptFromCodepoint");v3=[];j7.forEach(t=>t.blocks.forEach(e=>v3.push(...e)));o(YV,"supportedCodepoint");w0=80,cTe=o(function(e,r){return"M95,"+(622+e+r)+` -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`+e/2.075+" -"+e+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+e)+`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+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtMain"),uTe=o(function(e,r){return"M263,"+(601+e+r)+`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`+e/2.084+" -"+e+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+e)+`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+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize1"),hTe=o(function(e,r){return"M983 "+(10+e+r)+` -l`+e/3.13+" -"+e+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` -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+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},"sqrtSize2"),fTe=o(function(e,r){return"M424,"+(2398+e+r)+` -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`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+e)+`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+e)+" "+r+` -h400000v`+(40+e)+"h-400000z"},"sqrtSize3"),dTe=o(function(e,r){return"M473,"+(2713+e+r)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`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+e)+" "+r+"h400000v"+(40+e)+"H1017.7z"},"sqrtSize4"),pTe=o(function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},"phasePath"),mTe=o(function(e,r,n){var i=n-54-r-e;return"M702 "+(e+r)+"H400000"+(40+e)+` -H742v`+i+`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 `+r+"H400000v"+(40+e)+"H742z"},"sqrtTall"),gTe=o(function(e,r,n){r=1e3*r;var i="";switch(e){case"sqrtMain":i=cTe(r,w0);break;case"sqrtSize1":i=uTe(r,w0);break;case"sqrtSize2":i=hTe(r,w0);break;case"sqrtSize3":i=fTe(r,w0);break;case"sqrtSize4":i=dTe(r,w0);break;case"sqrtTall":i=mTe(r,w0,n)}return i},"sqrtPath"),yTe=o(function(e,r){switch(e){case"\u239C":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"\u2223":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"\u2225":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"\u239F":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"\u23A2":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"\u23A5":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"\u23AA":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"\u23D0":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"\u2016":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),mV={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`},vTe=o(function(e,r){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z -M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z -M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z -M347 1759 V0 h-84 V1759 v`+r+" 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,`+(r+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,-`+(r+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,`+(r+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,-`+(r+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"),hd=class{static{o(this,"DocumentFragment")}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 er.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText(),"toText");return this.children.map(e).join("")}},Ql={"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]}},o3={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]},gV={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(XV,"setFontMetrics");o(lA,"getCharacterMetrics");P7={};o(xTe,"getGlobalMetrics");bTe=[[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]],yV=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],vV=o(function(e,r){return r.size<2?e:bTe[e-1][r.size-1]},"sizeAtStyle"),b3=class t{static{o(this,"Options")}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||t.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=yV[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var 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(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return new t(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:vV(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:yV[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=vV(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})}havingBaseSizing(){var 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!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=xTe(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};b3.BASESIZE=6;K7={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},TTe={ex:!0,em:!0,mu:!0},jV=o(function(e){return typeof e!="string"&&(e=e.unit),e in K7||e in TTe||e==="ex"},"validUnit"),ii=o(function(e,r){var n;if(e.unit in K7)n=K7[e.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(e.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,e.unit==="ex")n=i.fontMetrics().xHeight;else if(e.unit==="em")n=i.fontMetrics().quad;else throw new gt("Invalid unit: '"+e.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},"calculateSize"),St=o(function(e){return+e.toFixed(4)+"em"},"makeEm"),bh=o(function(e){return e.filter(r=>r).join(" ")},"createClass"),KV=o(function(e,r,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},"initNode"),QV=o(function(e){var r=document.createElement(e);r.className=bh(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var i in this.attributes)this.attributes.hasOwnProperty(i)&&r.setAttribute(i,this.attributes[i]);for(var a=0;a/=\x00-\x1f]/,ZV=o(function(e){var r="<"+e;this.classes.length&&(r+=' class="'+er.escape(bh(this.classes))+'"');var n="";for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=er.hyphenate(i)+":"+this.style[i]+";");n&&(r+=' style="'+er.escape(n)+'"');for(var a in this.attributes)if(this.attributes.hasOwnProperty(a)){if(wTe.test(a))throw new gt("Invalid attribute name '"+a+"'");r+=" "+a+'="'+er.escape(this.attributes[a])+'"'}r+=">";for(var s=0;s",r},"toMarkup"),fd=class{static{o(this,"Span")}constructor(e,r,n,i){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,KV.call(this,e,n,i),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return er.contains(this.classes,e)}toNode(){return QV.call(this,"span")}toMarkup(){return ZV.call(this,"span")}},Ky=class{static{o(this,"Anchor")}constructor(e,r,n,i){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,KV.call(this,r,i),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return er.contains(this.classes,e)}toNode(){return QV.call(this,"a")}toMarkup(){return ZV.call(this,"a")}},Q7=class{static{o(this,"Img")}constructor(e,r,n){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=r,this.src=e,this.classes=["mord"],this.style=n}hasClass(e){return er.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);return e}toMarkup(){var e=''+er.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=St(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=bh(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(e),r):e}toMarkup(){var e=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=er.hyphenate(i)+":"+this.style[i]+";");n&&(e=!0,r+=' style="'+er.escape(n)+'"');var a=er.escape(this.text);return e?(r+=">",r+=a,r+="",r):a}},dl=class{static{o(this,"SvgNode")}constructor(e,r){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=r||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}},Qy=class{static{o(this,"LineNode")}constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var e="","\\gt",!0);V(H,ie,Ee,"\u2208","\\in",!0);V(H,ie,Ee,"\uE020","\\@not");V(H,ie,Ee,"\u2282","\\subset",!0);V(H,ie,Ee,"\u2283","\\supset",!0);V(H,ie,Ee,"\u2286","\\subseteq",!0);V(H,ie,Ee,"\u2287","\\supseteq",!0);V(H,we,Ee,"\u2288","\\nsubseteq",!0);V(H,we,Ee,"\u2289","\\nsupseteq",!0);V(H,ie,Ee,"\u22A8","\\models");V(H,ie,Ee,"\u2190","\\leftarrow",!0);V(H,ie,Ee,"\u2264","\\le");V(H,ie,Ee,"\u2264","\\leq",!0);V(H,ie,Ee,"<","\\lt",!0);V(H,ie,Ee,"\u2192","\\rightarrow",!0);V(H,ie,Ee,"\u2192","\\to");V(H,we,Ee,"\u2271","\\ngeq",!0);V(H,we,Ee,"\u2270","\\nleq",!0);V(H,ie,mu,"\xA0","\\ ");V(H,ie,mu,"\xA0","\\space");V(H,ie,mu,"\xA0","\\nobreakspace");V(ct,ie,mu,"\xA0","\\ ");V(ct,ie,mu,"\xA0"," ");V(ct,ie,mu,"\xA0","\\space");V(ct,ie,mu,"\xA0","\\nobreakspace");V(H,ie,mu,null,"\\nobreak");V(H,ie,mu,null,"\\allowbreak");V(H,ie,A3,",",",");V(H,ie,A3,";",";");V(H,we,Ot,"\u22BC","\\barwedge",!0);V(H,we,Ot,"\u22BB","\\veebar",!0);V(H,ie,Ot,"\u2299","\\odot",!0);V(H,ie,Ot,"\u2295","\\oplus",!0);V(H,ie,Ot,"\u2297","\\otimes",!0);V(H,ie,De,"\u2202","\\partial",!0);V(H,ie,Ot,"\u2298","\\oslash",!0);V(H,we,Ot,"\u229A","\\circledcirc",!0);V(H,we,Ot,"\u22A1","\\boxdot",!0);V(H,ie,Ot,"\u25B3","\\bigtriangleup");V(H,ie,Ot,"\u25BD","\\bigtriangledown");V(H,ie,Ot,"\u2020","\\dagger");V(H,ie,Ot,"\u22C4","\\diamond");V(H,ie,Ot,"\u22C6","\\star");V(H,ie,Ot,"\u25C3","\\triangleleft");V(H,ie,Ot,"\u25B9","\\triangleright");V(H,ie,ro,"{","\\{");V(ct,ie,De,"{","\\{");V(ct,ie,De,"{","\\textbraceleft");V(H,ie,rs,"}","\\}");V(ct,ie,De,"}","\\}");V(ct,ie,De,"}","\\textbraceright");V(H,ie,ro,"{","\\lbrace");V(H,ie,rs,"}","\\rbrace");V(H,ie,ro,"[","\\lbrack",!0);V(ct,ie,De,"[","\\lbrack",!0);V(H,ie,rs,"]","\\rbrack",!0);V(ct,ie,De,"]","\\rbrack",!0);V(H,ie,ro,"(","\\lparen",!0);V(H,ie,rs,")","\\rparen",!0);V(ct,ie,De,"<","\\textless",!0);V(ct,ie,De,">","\\textgreater",!0);V(H,ie,ro,"\u230A","\\lfloor",!0);V(H,ie,rs,"\u230B","\\rfloor",!0);V(H,ie,ro,"\u2308","\\lceil",!0);V(H,ie,rs,"\u2309","\\rceil",!0);V(H,ie,De,"\\","\\backslash");V(H,ie,De,"\u2223","|");V(H,ie,De,"\u2223","\\vert");V(ct,ie,De,"|","\\textbar",!0);V(H,ie,De,"\u2225","\\|");V(H,ie,De,"\u2225","\\Vert");V(ct,ie,De,"\u2225","\\textbardbl");V(ct,ie,De,"~","\\textasciitilde");V(ct,ie,De,"\\","\\textbackslash");V(ct,ie,De,"^","\\textasciicircum");V(H,ie,Ee,"\u2191","\\uparrow",!0);V(H,ie,Ee,"\u21D1","\\Uparrow",!0);V(H,ie,Ee,"\u2193","\\downarrow",!0);V(H,ie,Ee,"\u21D3","\\Downarrow",!0);V(H,ie,Ee,"\u2195","\\updownarrow",!0);V(H,ie,Ee,"\u21D5","\\Updownarrow",!0);V(H,ie,ki,"\u2210","\\coprod");V(H,ie,ki,"\u22C1","\\bigvee");V(H,ie,ki,"\u22C0","\\bigwedge");V(H,ie,ki,"\u2A04","\\biguplus");V(H,ie,ki,"\u22C2","\\bigcap");V(H,ie,ki,"\u22C3","\\bigcup");V(H,ie,ki,"\u222B","\\int");V(H,ie,ki,"\u222B","\\intop");V(H,ie,ki,"\u222C","\\iint");V(H,ie,ki,"\u222D","\\iiint");V(H,ie,ki,"\u220F","\\prod");V(H,ie,ki,"\u2211","\\sum");V(H,ie,ki,"\u2A02","\\bigotimes");V(H,ie,ki,"\u2A01","\\bigoplus");V(H,ie,ki,"\u2A00","\\bigodot");V(H,ie,ki,"\u222E","\\oint");V(H,ie,ki,"\u222F","\\oiint");V(H,ie,ki,"\u2230","\\oiiint");V(H,ie,ki,"\u2A06","\\bigsqcup");V(H,ie,ki,"\u222B","\\smallint");V(ct,ie,S0,"\u2026","\\textellipsis");V(H,ie,S0,"\u2026","\\mathellipsis");V(ct,ie,S0,"\u2026","\\ldots",!0);V(H,ie,S0,"\u2026","\\ldots",!0);V(H,ie,S0,"\u22EF","\\@cdots",!0);V(H,ie,S0,"\u22F1","\\ddots",!0);V(H,ie,De,"\u22EE","\\varvdots");V(ct,ie,De,"\u22EE","\\varvdots");V(H,ie,Wn,"\u02CA","\\acute");V(H,ie,Wn,"\u02CB","\\grave");V(H,ie,Wn,"\xA8","\\ddot");V(H,ie,Wn,"~","\\tilde");V(H,ie,Wn,"\u02C9","\\bar");V(H,ie,Wn,"\u02D8","\\breve");V(H,ie,Wn,"\u02C7","\\check");V(H,ie,Wn,"^","\\hat");V(H,ie,Wn,"\u20D7","\\vec");V(H,ie,Wn,"\u02D9","\\dot");V(H,ie,Wn,"\u02DA","\\mathring");V(H,ie,rr,"\uE131","\\@imath");V(H,ie,rr,"\uE237","\\@jmath");V(H,ie,De,"\u0131","\u0131");V(H,ie,De,"\u0237","\u0237");V(ct,ie,De,"\u0131","\\i",!0);V(ct,ie,De,"\u0237","\\j",!0);V(ct,ie,De,"\xDF","\\ss",!0);V(ct,ie,De,"\xE6","\\ae",!0);V(ct,ie,De,"\u0153","\\oe",!0);V(ct,ie,De,"\xF8","\\o",!0);V(ct,ie,De,"\xC6","\\AE",!0);V(ct,ie,De,"\u0152","\\OE",!0);V(ct,ie,De,"\xD8","\\O",!0);V(ct,ie,Wn,"\u02CA","\\'");V(ct,ie,Wn,"\u02CB","\\`");V(ct,ie,Wn,"\u02C6","\\^");V(ct,ie,Wn,"\u02DC","\\~");V(ct,ie,Wn,"\u02C9","\\=");V(ct,ie,Wn,"\u02D8","\\u");V(ct,ie,Wn,"\u02D9","\\.");V(ct,ie,Wn,"\xB8","\\c");V(ct,ie,Wn,"\u02DA","\\r");V(ct,ie,Wn,"\u02C7","\\v");V(ct,ie,Wn,"\xA8",'\\"');V(ct,ie,Wn,"\u02DD","\\H");V(ct,ie,Wn,"\u25EF","\\textcircled");JV={"--":!0,"---":!0,"``":!0,"''":!0};V(ct,ie,De,"\u2013","--",!0);V(ct,ie,De,"\u2013","\\textendash");V(ct,ie,De,"\u2014","---",!0);V(ct,ie,De,"\u2014","\\textemdash");V(ct,ie,De,"\u2018","`",!0);V(ct,ie,De,"\u2018","\\textquoteleft");V(ct,ie,De,"\u2019","'",!0);V(ct,ie,De,"\u2019","\\textquoteright");V(ct,ie,De,"\u201C","``",!0);V(ct,ie,De,"\u201C","\\textquotedblleft");V(ct,ie,De,"\u201D","''",!0);V(ct,ie,De,"\u201D","\\textquotedblright");V(H,ie,De,"\xB0","\\degree",!0);V(ct,ie,De,"\xB0","\\degree");V(ct,ie,De,"\xB0","\\textdegree",!0);V(H,ie,De,"\xA3","\\pounds");V(H,ie,De,"\xA3","\\mathsterling",!0);V(ct,ie,De,"\xA3","\\pounds");V(ct,ie,De,"\xA3","\\textsterling",!0);V(H,we,De,"\u2720","\\maltese");V(ct,we,De,"\u2720","\\maltese");bV='0123456789/@."';for(l3=0;l30)return fl(a,h,i,r,s.concat(f));if(u){var d,p;if(u==="boldsymbol"){var m=DTe(a,i,r,s,n);d=m.fontName,p=[m.fontClass]}else l?(d=rU[u].fontName,p=[u]):(d=d3(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(_3(a,d,i).metrics)return fl(a,d,i,r,s.concat(p));if(JV.hasOwnProperty(a)&&d.slice(0,10)==="Typewriter"){for(var g=[],y=0;y{if(bh(t.classes)!==bh(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var r=t.classes[0];if(r==="mbin"||r==="mord")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"),NTe=o(t=>{for(var e=0;er&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}e.height=r,e.depth=n,e.maxFontSize=i},"sizeElementFromChildren"),Ss=o(function(e,r,n,i){var a=new fd(e,r,n,i);return cA(a),a},"makeSpan"),eU=o((t,e,r,n)=>new fd(t,e,r,n),"makeSvgSpan"),MTe=o(function(e,r,n){var i=Ss([e],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=St(i.height),i.maxFontSize=1,i},"makeLineSpan"),ITe=o(function(e,r,n,i){var a=new Ky(e,r,n,i);return cA(a),a},"makeAnchor"),tU=o(function(e){var r=new hd(e);return cA(r),r},"makeFragment"),OTe=o(function(e,r){return e instanceof hd?Ss([],[e],r):e},"wrapFragment"),PTe=o(function(e){if(e.positionType==="individualShift"){for(var r=e.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s{var r=Ss(["mspace"],[],e),n=ii(t,e);return r.style.marginRight=St(n),r},"makeGlue"),d3=o(function(e,r,n){var i="";switch(e){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=e}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},"retrieveTextFontName"),rU={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"}},nU={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},$Te=o(function(e,r){var[n,i,a]=nU[e],s=new Zl(n),l=new dl([s],{width:St(i),height:St(a),style:"width:"+St(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=eU(["overlay"],[l],r);return u.height=a,u.style.height=St(a),u.style.width=St(i),u},"staticSvg"),$e={fontMap:rU,makeSymbol:fl,mathsym:_Te,makeSpan:Ss,makeSvgSpan:eU,makeLineSpan:MTe,makeAnchor:ITe,makeFragment:tU,wrapFragment:OTe,makeVList:BTe,makeOrd:LTe,makeGlue:FTe,staticSvg:$Te,svgData:nU,tryCombineChars:NTe},ni={number:3,unit:"mu"},ud={number:4,unit:"mu"},uu={number:5,unit:"mu"},zTe={mord:{mop:ni,mbin:ud,mrel:uu,minner:ni},mop:{mord:ni,mop:ni,mrel:uu,minner:ni},mbin:{mord:ud,mop:ud,mopen:ud,minner:ud},mrel:{mord:uu,mop:uu,mopen:uu,minner:uu},mopen:{},mclose:{mop:ni,mbin:ud,mrel:uu,minner:ni},mpunct:{mord:ni,mop:ni,mrel:uu,mopen:ni,mclose:ni,mpunct:ni,minner:ni},minner:{mord:ni,mop:ni,mbin:ud,mrel:uu,mopen:ni,mpunct:ni,minner:ni}},GTe={mord:{mop:ni},mop:{mord:ni,mop:ni},mbin:{},mrel:{},mopen:{},mclose:{mop:ni},mpunct:{},minner:{mop:ni}},iU={},w3={},k3={};o(Mt,"defineFunction");o(dd,"defineFunctionBuilders");E3=o(function(e){return e.type==="ordgroup"&&e.body.length===1?e.body[0]:e},"normalizeArgument"),gi=o(function(e){return e.type==="ordgroup"?e.body:[e]},"ordargument"),du=$e.makeSpan,VTe=["leftmost","mbin","mopen","mrel","mop","mpunct"],UTe=["rightmost","mrel","mclose","mpunct"],HTe={display:nr.DISPLAY,text:nr.TEXT,script:nr.SCRIPT,scriptscript:nr.SCRIPTSCRIPT},qTe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Ii=o(function(e,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var v=y.classes[0],x=g.classes[0];v==="mbin"&&er.contains(UTe,x)?y.classes[0]="mord":x==="mbin"&&er.contains(VTe,v)&&(g.classes[0]="mord")},{node:d},p,m),kV(a,(g,y)=>{var v=J7(y),x=J7(g),b=v&&x?g.hasClass("mtight")?GTe[v][x]:zTe[v][x]:null;if(b)return $e.makeGlue(b,h)},{node:d},p,m),a},"buildExpression"),kV=o(function t(e,r,n,i,a){i&&e.push(i);for(var s=0;sp=>{e.splice(d+1,0,p),s++})(s)}i&&e.pop()},"traverseNonSpaceNodes"),aU=o(function(e){return e instanceof hd||e instanceof Ky||e instanceof fd&&e.hasClass("enclosing")?e:null},"checkPartialGroup"),WTe=o(function t(e,r){var n=aU(e);if(n){var i=n.children;if(i.length){if(r==="right")return t(i[i.length-1],"right");if(r==="left")return t(i[0],"left")}}return e},"getOutermostNode"),J7=o(function(e,r){return e?(r&&(e=WTe(e,r)),qTe[e.classes[0]]||null):null},"getTypeOfDomTree"),Zy=o(function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return du(r.concat(n))},"makeNullDelimiter"),Hr=o(function(e,r,n){if(!e)return du();if(w3[e.type]){var i=w3[e.type](e,r);if(n&&r.size!==n.size){i=du(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(p3,"buildHTMLUnbreakable");o(eA,"buildHTML");o(sU,"newDocumentFragment");es=class{static{o(this,"MathNode")}constructor(e,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(e,r){this.attributes[e]=r}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);this.classes.length>0&&(e.className=bh(this.classes));for(var n=0;n0&&(e+=' class ="'+er.escape(bh(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}},_o=class{static{o(this,"TextNode")}constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return er.escape(this.toText())}toText(){return this.text}},tA=class{static{o(this,"SpaceNode")}constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",St(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},mt={MathNode:es,TextNode:_o,SpaceNode:tA,newDocumentFragment:sU},Lo=o(function(e,r,n){return Nn[r][e]&&Nn[r][e].replace&&e.charCodeAt(0)!==55349&&!(JV.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=Nn[r][e].replace),new mt.TextNode(e)},"makeText"),uA=o(function(e){return e.length===1?e[0]:new mt.MathNode("mrow",e)},"makeRow"),hA=o(function(e,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=e.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathsfit")return"sans-serif-italic";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=e.text;if(er.contains(["\\imath","\\jmath"],a))return null;Nn[i][a]&&Nn[i][a].replace&&(a=Nn[i][a].replace);var s=$e.fontMap[n].fontName;return lA(a,s,i)?$e.fontMap[n].variant:null},"getVariant");o($7,"isNumberPunctuation");As=o(function(e,r,n){if(e.length===1){var i=wn(e[0],r);return n&&i instanceof es&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l=1&&(s.type==="mn"||$7(s))){var h=u.children[0];h instanceof es&&h.type==="mn"&&(h.children=[...s.children,...h.children],a.pop())}else if(s.type==="mi"&&s.children.length===1){var f=s.children[0];if(f instanceof _o&&f.text==="\u0338"&&(u.type==="mo"||u.type==="mi"||u.type==="mn")){var d=u.children[0];d instanceof _o&&d.text.length>0&&(d.text=d.text.slice(0,1)+"\u0338"+d.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),Th=o(function(e,r,n){return uA(As(e,r,n))},"buildExpressionRow"),wn=o(function(e,r){if(!e)return new mt.MathNode("mrow");if(k3[e.type]){var n=k3[e.type](e,r);return n}else throw new gt("Got group of unknown type: '"+e.type+"'")},"buildGroup");o(EV,"buildMathML");oU=o(function(e){return new b3({style:e.displayMode?nr.DISPLAY:nr.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},"optionsFromSettings"),lU=o(function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=$e.makeSpan(n,[e])}return e},"displayWrap"),YTe=o(function(e,r,n){var i=oU(n),a;if(n.output==="mathml")return EV(e,r,i,n.displayMode,!0);if(n.output==="html"){var s=eA(e,i);a=$e.makeSpan(["katex"],[s])}else{var l=EV(e,r,i,n.displayMode,!1),u=eA(e,i);a=$e.makeSpan(["katex"],[l,u])}return lU(a,n)},"buildTree"),XTe=o(function(e,r,n){var i=oU(n),a=eA(e,i),s=$e.makeSpan(["katex"],[a]);return lU(s,n)},"buildHTMLTree"),jTe={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},KTe=o(function(e){var r=new mt.MathNode("mo",[new mt.TextNode(jTe[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"mathMLnode"),QTe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},ZTe=o(function(e){return e.type==="ordgroup"?e.body.length:1},"groupLength"),JTe=o(function(e,r){function n(){var l=4e5,u=e.label.slice(1);if(er.contains(["widehat","widecheck","widetilde","utilde"],u)){var h=e,f=ZTe(h.base),d,p,m;if(f>5)u==="widehat"||u==="widecheck"?(d=420,l=2364,m=.42,p=u+"4"):(d=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][f];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],d=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],d=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new Zl(p),v=new dl([y],{width:"100%",height:St(m),viewBox:"0 0 "+l+" "+d,preserveAspectRatio:"none"});return{span:$e.makeSvgSpan([],[v],r),minWidth:0,height:m}}else{var x=[],b=QTe[u],[T,S,w]=b,k=w/1e3,A=T.length,C,R;if(A===1){var I=b[3];C=["hide-tail"],R=[I]}else if(A===2)C=["halfarrow-left","halfarrow-right"],R=["xMinYMin","xMaxYMin"];else if(A===3)C=["brace-left","brace-center","brace-right"],R=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+A+" children.");for(var L=0;L0&&(i.style.minWidth=St(a)),i},"svgSpan"),ewe=o(function(e,r,n,i,a){var s,l=e.height+e.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=$e.makeSpan(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new Qy({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new Qy({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var f=new dl(h,{width:"100%",height:St(l)});s=$e.makeSvgSpan([],[f],a)}return s.height=l,s.style.height=St(l),s},"encloseSpan"),pu={encloseSpan:ewe,mathMLnode:KTe,svgSpan:JTe};o(Tr,"assertNodeType");o(fA,"assertSymbolNodeType");o(D3,"checkSymbolNodeType");dA=o((t,e)=>{var r,n,i;t&&t.type==="supsub"?(n=Tr(t.base,"accent"),r=n.base,t.base=r,i=ETe(Hr(t,e)),t.base=n):(n=Tr(t,"accent"),r=n.base);var a=Hr(r,e.havingCrampedStyle()),s=n.isShifty&&er.isCharacterBox(r),l=0;if(s){var u=er.getBaseElem(r),h=Hr(u,e.havingCrampedStyle());l=xV(h).skew}var f=n.label==="\\c",d=f?a.height+a.depth:Math.min(a.height,e.fontMetrics().xHeight),p;if(n.isStretchy)p=pu.svgSpan(n,e),p=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+St(2*l)+")",marginLeft:St(2*l)}:void 0}]},e);else{var m,g;n.label==="\\vec"?(m=$e.staticSvg("vec",e),g=$e.svgData.vec[1]):(m=$e.makeOrd({mode:n.mode,text:n.label},e,"textord"),m=xV(m),m.italic=0,g=m.width,f&&(d+=m.depth)),p=$e.makeSpan(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),d=a.height);var v=l;y||(v-=g/2),p.style.left=St(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-d},{type:"elem",elem:p}]},e)}var x=$e.makeSpan(["mord","accent"],[p],e);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),cU=o((t,e)=>{var r=t.isStretchy?pu.mathMLnode(t.label):new mt.MathNode("mo",[Lo(t.label,t.mode)]),n=new mt.MathNode("mover",[wn(t.base,e),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),twe=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));Mt({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:o((t,e)=>{var r=E3(e[0]),n=!twe.test(t.funcName),i=!n||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:n,isShifty:i,base:r}},"handler"),htmlBuilder:dA,mathmlBuilder:cU});Mt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((t,e)=>{var r=e[0],n=t.parser.mode;return n==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:dA,mathmlBuilder:cU});Mt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((t,e)=>{var r=Hr(t.base,e),n=pu.svgSpan(t,e),i=t.label==="\\utilde"?.12:0,a=$e.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},e);return $e.makeSpan(["mord","accentunder"],[a],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=pu.mathMLnode(t.label),n=new mt.MathNode("munder",[wn(t.base,e),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});m3=o(t=>{var e=new mt.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e},"paddedNode");Mt({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:n,funcName:i}=t;return{type:"xArrow",mode:n.mode,label:i,body:e[0],below:r[0]}},htmlBuilder(t,e){var r=e.style,n=e.havingStyle(r.sup()),i=$e.wrapFragment(Hr(t.body,n,e),e),a=t.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;t.below&&(n=e.havingStyle(r.sub()),s=$e.wrapFragment(Hr(t.below,n,e),e),s.classes.push(a+"-arrow-pad"));var l=pu.svgSpan(t,e),u=-e.fontMetrics().axisHeight+.5*l.height,h=-e.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||t.label==="\\xleftequilibrium")&&(h-=i.depth);var f;if(s){var d=-e.fontMetrics().axisHeight+s.height+.5*l.height+.111;f=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:d}]},e)}else f=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]},e);return f.children[0].children[0].children[1].classes.push("svg-align"),$e.makeSpan(["mrel","x-arrow"],[f],e)},mathmlBuilder(t,e){var r=pu.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var i=m3(wn(t.body,e));if(t.below){var a=m3(wn(t.below,e));n=new mt.MathNode("munderover",[r,a,i])}else n=new mt.MathNode("mover",[r,i])}else if(t.below){var s=m3(wn(t.below,e));n=new mt.MathNode("munder",[r,s])}else n=m3(),n=new mt.MathNode("mover",[r,n]);return n}});rwe=$e.makeSpan;o(uU,"htmlBuilder$9");o(hU,"mathmlBuilder$8");Mt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:gi(i),isCharacterBox:er.isCharacterBox(i)}},htmlBuilder:uU,mathmlBuilder:hU});L3=o(t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"},"binrelClass");Mt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:L3(e[0]),body:gi(e[1]),isCharacterBox:er.isCharacterBox(e[1])}}});Mt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:r,funcName:n}=t,i=e[1],a=e[0],s;n!=="\\stackrel"?s=L3(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:gi(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:er.isCharacterBox(u)}},htmlBuilder:uU,mathmlBuilder:hU});Mt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:L3(e[0]),body:gi(e[0])}},htmlBuilder(t,e){var r=Ii(t.body,e,!0),n=$e.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=As(t.body,e),n=new mt.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});nwe={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},SV=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),CV=o(t=>t.type==="textord"&&t.text==="@","isStartOfArrow"),iwe=o((t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e,"isLabelEnd");o(awe,"cdArrow");o(swe,"parseCD");Mt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup()),n=$e.wrapFragment(Hr(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=St(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new mt.MathNode("mrow",[wn(t.label,e)]);return r=new mt.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new mt.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Mt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:r}=t;return{type:"cdlabelparent",mode:r.mode,fragment:e[0]}},htmlBuilder(t,e){var r=$e.wrapFragment(Hr(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new mt.MathNode("mrow",[wn(t.fragment,e)])}});Mt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=Tr(e[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new gt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});fU=o((t,e)=>{var r=Ii(t.body,e.withColor(t.color),!1);return $e.makeFragment(r)},"htmlBuilder$8"),dU=o((t,e)=>{var r=As(t.body,e.withColor(t.color)),n=new mt.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n},"mathmlBuilder$7");Mt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=Tr(e[0],"color-token").color,i=e[1];return{type:"color",mode:r.mode,color:n,body:gi(i)}},htmlBuilder:fU,mathmlBuilder:dU});Mt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,i=Tr(e[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:fU,mathmlBuilder:dU});Mt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var{parser:n}=t,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&Tr(i,"size").value}},htmlBuilder(t,e){var r=$e.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=St(ii(t.size,e)))),r},mathmlBuilder(t,e){var r=new mt.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",St(ii(t.size,e)))),r}});rA={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},pU=o(t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new gt("Expected a control sequence",t);return e},"checkControlSequence"),owe=o(t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},"getRHS"),mU=o((t,e,r,n)=>{var i=t.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,i,n)},"letCommand");Mt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:r}=t;e.consumeSpaces();var n=e.fetch();if(rA[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=rA[n.text]),Tr(e.parseFunction(),"internal");throw new gt("Invalid token after macro prefix",n)}});Mt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=e.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new gt("Expected a control sequence",n);for(var a=0,s,l=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),l[a].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new gt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new gt('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new gt("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=e.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=e.gullet.expandTokens(u),u.reverse()),e.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===rA[r]),{type:"internal",mode:e.mode}}});Mt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=pU(e.gullet.popToken());e.gullet.consumeSpaces();var i=owe(e);return mU(e,n,i,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});Mt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=pU(e.gullet.popToken()),i=e.gullet.popToken(),a=e.gullet.popToken();return mU(e,n,a,r==="\\\\globalfuture"),e.gullet.pushToken(a),e.gullet.pushToken(i),{type:"internal",mode:e.mode}}});qy=o(function(e,r,n){var i=Nn.math[e]&&Nn.math[e].replace,a=lA(i||e,r,n);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return a},"getMetrics"),pA=o(function(e,r,n,i){var a=n.havingBaseStyle(r),s=$e.makeSpan(i.concat(a.sizingClasses(n)),[e],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),gU=o(function(e,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=St(a),e.height-=a,e.depth+=a},"centerSpan"),lwe=o(function(e,r,n,i,a,s){var l=$e.makeSymbol(e,"Main-Regular",a,i),u=pA(l,r,i,s);return n&&gU(u,i,r),u},"makeSmallDelim"),cwe=o(function(e,r,n,i){return $e.makeSymbol(e,"Size"+r+"-Regular",n,i)},"mathrmSize"),yU=o(function(e,r,n,i,a,s){var l=cwe(e,r,a,i),u=pA($e.makeSpan(["delimsizing","size"+r],[l],i),nr.TEXT,i,s);return n&&gU(u,i,nr.TEXT),u},"makeLargeDelim"),z7=o(function(e,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=$e.makeSpan(["delimsizinginner",i],[$e.makeSpan([],[$e.makeSymbol(e,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),G7=o(function(e,r,n){var i=Ql["Size4-Regular"][e.charCodeAt(0)]?Ql["Size4-Regular"][e.charCodeAt(0)][4]:Ql["Size1-Regular"][e.charCodeAt(0)][4],a=new Zl("inner",yTe(e,Math.round(1e3*r))),s=new dl([a],{width:St(i),height:St(r),style:"width:"+St(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=$e.makeSvgSpan([],[s],n);return l.height=r,l.style.height=St(r),l.style.width=St(i),{type:"elem",elem:l}},"makeInner"),nA=.008,g3={type:"kern",size:-1*nA},uwe=["|","\\lvert","\\rvert","\\vert"],hwe=["\\|","\\lVert","\\rVert","\\Vert"],vU=o(function(e,r,n,i,a,s){var l,u,h,f,d="",p=0;l=h=f=e,u=null;var m="Size1-Regular";e==="\\uparrow"?h=f="\u23D0":e==="\\Uparrow"?h=f="\u2016":e==="\\downarrow"?l=h="\u23D0":e==="\\Downarrow"?l=h="\u2016":e==="\\updownarrow"?(l="\\uparrow",h="\u23D0",f="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",f="\\Downarrow"):er.contains(uwe,e)?(h="\u2223",d="vert",p=333):er.contains(hwe,e)?(h="\u2225",d="doublevert",p=556):e==="["||e==="\\lbrack"?(l="\u23A1",h="\u23A2",f="\u23A3",m="Size4-Regular",d="lbrack",p=667):e==="]"||e==="\\rbrack"?(l="\u23A4",h="\u23A5",f="\u23A6",m="Size4-Regular",d="rbrack",p=667):e==="\\lfloor"||e==="\u230A"?(h=l="\u23A2",f="\u23A3",m="Size4-Regular",d="lfloor",p=667):e==="\\lceil"||e==="\u2308"?(l="\u23A1",h=f="\u23A2",m="Size4-Regular",d="lceil",p=667):e==="\\rfloor"||e==="\u230B"?(h=l="\u23A5",f="\u23A6",m="Size4-Regular",d="rfloor",p=667):e==="\\rceil"||e==="\u2309"?(l="\u23A4",h=f="\u23A5",m="Size4-Regular",d="rceil",p=667):e==="("||e==="\\lparen"?(l="\u239B",h="\u239C",f="\u239D",m="Size4-Regular",d="lparen",p=875):e===")"||e==="\\rparen"?(l="\u239E",h="\u239F",f="\u23A0",m="Size4-Regular",d="rparen",p=875):e==="\\{"||e==="\\lbrace"?(l="\u23A7",u="\u23A8",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="\u23AB",u="\u23AC",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(l="\u23A7",f="\u23A9",h="\u23AA",m="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(l="\u23AB",f="\u23AD",h="\u23AA",m="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(l="\u23A7",f="\u23AD",h="\u23AA",m="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(l="\u23AB",f="\u23A9",h="\u23AA",m="Size4-Regular");var g=qy(l,m,a),y=g.height+g.depth,v=qy(h,m,a),x=v.height+v.depth,b=qy(f,m,a),T=b.height+b.depth,S=0,w=1;if(u!==null){var k=qy(u,m,a);S=k.height+k.depth,w=2}var A=y+T+S,C=Math.max(0,Math.ceil((r-A)/(w*x))),R=A+C*w*x,I=i.fontMetrics().axisHeight;n&&(I*=i.sizeMultiplier);var L=R/2-I,E=[];if(d.length>0){var D=R-y-T,_=Math.round(R*1e3),O=vTe(d,Math.round(D*1e3)),M=new Zl(d,O),P=(p/1e3).toFixed(3)+"em",B=(_/1e3).toFixed(3)+"em",F=new dl([M],{width:P,height:B,viewBox:"0 0 "+p+" "+_}),G=$e.makeSvgSpan([],[F],i);G.height=_/1e3,G.style.width=P,G.style.height=B,E.push({type:"elem",elem:G})}else{if(E.push(z7(f,m,a)),E.push(g3),u===null){var $=R-y-T+2*nA;E.push(G7(h,$,i))}else{var U=(R-y-T-S)/2+2*nA;E.push(G7(h,U,i)),E.push(g3),E.push(z7(u,m,a)),E.push(g3),E.push(G7(h,U,i))}E.push(g3),E.push(z7(l,m,a))}var j=i.havingBaseStyle(nr.TEXT),te=$e.makeVList({positionType:"bottom",positionData:L,children:E},j);return pA($e.makeSpan(["delimsizing","mult"],[te],j),nr.TEXT,i,s)},"makeStackedDelim"),V7=80,U7=.08,H7=o(function(e,r,n,i,a){var s=gTe(e,i,n),l=new Zl(e,s),u=new dl([l],{width:"400em",height:St(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return $e.makeSvgSpan(["hide-tail"],[u],a)},"sqrtSvg"),fwe=o(function(e,r){var n=r.havingBaseSizing(),i=wU("\\surd",e*n.sizeMultiplier,TU,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,f=0,d;return i.type==="small"?(f=1e3+1e3*s+V7,e<1?a=1:e<1.4&&(a=.7),u=(1+s+U7)/a,h=(1+s)/a,l=H7("sqrtMain",u,f,s,r),l.style.minWidth="0.853em",d=.833/a):i.type==="large"?(f=(1e3+V7)*Yy[i.size],h=(Yy[i.size]+s)/a,u=(Yy[i.size]+s+U7)/a,l=H7("sqrtSize"+i.size,u,f,s,r),l.style.minWidth="1.02em",d=1/a):(u=e+s+U7,h=e+s,f=Math.floor(1e3*e+s)+V7,l=H7("sqrtTall",u,f,s,r),l.style.minWidth="0.742em",d=1.056),l.height=h,l.style.height=St(u),{span:l,advanceWidth:d,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),xU=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],dwe=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],bU=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Yy=[0,1.2,1.8,2.4,3],pwe=o(function(e,r,n,i,a){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),er.contains(xU,e)||er.contains(bU,e))return yU(e,r,!1,n,i,a);if(er.contains(dwe,e))return vU(e,Yy[r],!1,n,i,a);throw new gt("Illegal delimiter: '"+e+"'")},"makeSizedDelim"),mwe=[{type:"small",style:nr.SCRIPTSCRIPT},{type:"small",style:nr.SCRIPT},{type:"small",style:nr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],gwe=[{type:"small",style:nr.SCRIPTSCRIPT},{type:"small",style:nr.SCRIPT},{type:"small",style:nr.TEXT},{type:"stack"}],TU=[{type:"small",style:nr.SCRIPTSCRIPT},{type:"small",style:nr.SCRIPT},{type:"small",style:nr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],ywe=o(function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},"delimTypeToFont"),wU=o(function(e,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;sr)return n[s]}return n[n.length-1]},"traverseSequence"),kU=o(function(e,r,n,i,a,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var l;er.contains(bU,e)?l=mwe:er.contains(xU,e)?l=TU:l=gwe;var u=wU(e,r,l,i);return u.type==="small"?lwe(e,u.style,n,i,a,s):u.type==="large"?yU(e,u.size,n,i,a,s):vU(e,r,n,i,a,s)},"makeCustomSizedDelim"),vwe=o(function(e,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,f=Math.max(r-l,n+l),d=Math.max(f/500*u,2*f-h);return kU(e,d,!0,i,a,s)},"makeLeftRightDelim"),fu={sqrtImage:fwe,sizedDelim:pwe,sizeToMaxHeight:Yy,customSizedDelim:kU,leftRightDelim:vwe},AV={"\\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}},xwe=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];o(R3,"checkDelimiter");Mt({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:o((t,e)=>{var r=R3(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:AV[t.funcName].size,mclass:AV[t.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>t.delim==="."?$e.makeSpan([t.mclass]):fu.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),"htmlBuilder"),mathmlBuilder:o(t=>{var e=[];t.delim!=="."&&e.push(Lo(t.delim,t.mode));var r=new mt.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=St(fu.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(_V,"assertParsed");Mt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new gt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:R3(e[0],t).text,color:r}},"handler")});Mt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=R3(e[0],t),n=t.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=Tr(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((t,e)=>{_V(t);for(var r=Ii(t.body,e,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{_V(t);var r=As(t.body,e);if(t.left!=="."){var n=new mt.MathNode("mo",[Lo(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var i=new mt.MathNode("mo",[Lo(t.right,t.mode)]);i.setAttribute("fence","true"),t.rightColor&&i.setAttribute("mathcolor",t.rightColor),r.push(i)}return uA(r)},"mathmlBuilder")});Mt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var r=R3(e[0],t);if(!t.parser.leftrightDepth)throw new gt("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((t,e)=>{var r;if(t.delim===".")r=Zy(e,[]);else{r=fu.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?Lo("|","text"):Lo(t.delim,t.mode),n=new mt.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});mA=o((t,e)=>{var r=$e.wrapFragment(Hr(t.body,e),e),n=t.label.slice(1),i=e.sizeMultiplier,a,s=0,l=er.isCharacterBox(t.body);if(n==="sout")a=$e.makeSpan(["stretchy","sout"]),a.height=e.fontMetrics().defaultRuleThickness/i,s=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var u=ii({number:.6,unit:"pt"},e),h=ii({number:.35,unit:"ex"},e),f=e.havingBaseSizing();i=i/f.sizeMultiplier;var d=r.height+r.depth+u+h;r.style.paddingLeft=St(d/2+u);var p=Math.floor(1e3*d*i),m=pTe(p),g=new dl([new Zl("phase",m)],{width:"400em",height:St(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=$e.makeSvgSpan(["hide-tail"],[g],e),a.style.height=St(d),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),y=e.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=pu.encloseSpan(r,n,y,v,e),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=St(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=St(x),a.style.borderRightWidth=St(x)),s=r.depth+v,t.backgroundColor&&(a.style.backgroundColor=t.backgroundColor,t.borderColor&&(a.style.borderColor=t.borderColor))}var b;if(t.backgroundColor)b=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]},e);else{var T=/cancel|phase/.test(n)?["svg-align"]:[];b=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:T}]},e)}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?$e.makeSpan(["mord","cancel-lap"],[b],e):$e.makeSpan(["mord"],[b],e)},"htmlBuilder$7"),gA=o((t,e)=>{var r=0,n=new mt.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[wn(t.body,e)]);switch(t.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),t.label==="\\fcolorbox"){var i=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);n.setAttribute("style","border: "+i+"em solid "+String(t.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&n.setAttribute("mathbackground",t.backgroundColor),n},"mathmlBuilder$6");Mt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=Tr(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:mA,mathmlBuilder:gA});Mt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=Tr(e[0],"color-token").color,s=Tr(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:mA,mathmlBuilder:gA});Mt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\fbox",body:e[0]}}});Mt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:mA,mathmlBuilder:gA});Mt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\angl",body:e[0]}}});EU={};o(Jl,"defineEnvironment");SU={};o(ce,"defineMacro");o(DV,"getHLines");N3=o(t=>{var e=t.parser.settings;if(!e.displayMode)throw new gt("{"+t.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext");o(yA,"getAutoTag");o(wh,"parseArray");o(vA,"dCellStyle");ec=o(function(e,r){var n,i,a=e.body.length,s=e.hLinesBeforeRow,l=0,u=new Array(a),h=[],f=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),d=1/r.fontMetrics().ptPerEm,p=5*d;if(e.colSeparationType&&e.colSeparationType==="small"){var m=r.havingStyle(nr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=e.colSeparationType==="CD"?ii({number:3,unit:"ex"},r):12*d,y=3*d,v=e.arraystretch*g,x=.7*v,b=.3*v,T=0;function S(q){for(var Ve=0;Ve0&&(T+=.25),h.push({pos:T,isDashed:q[Ve]})}for(o(S,"setHLinePos"),S(s[0]),n=0;n0&&(L+=b,Aq))for(n=0;n=l)){var J=void 0;(i>0||e.hskipBeforeAndAfter)&&(J=er.deflt(U.pregap,p),J!==0&&(O=$e.makeSpan(["arraycolsep"],[]),O.style.width=St(J),_.push(O)));var ue=[];for(n=0;n0){for(var K=$e.makeLineSpan("hline",r,f),ae=$e.makeLineSpan("hdashline",r,f),Q=[{type:"elem",elem:u,shift:0}];h.length>0;){var de=h.pop(),ne=de.pos-E;de.isDashed?Q.push({type:"elem",elem:ae,shift:ne}):Q.push({type:"elem",elem:K,shift:ne})}u=$e.makeVList({positionType:"individualShift",children:Q},r)}if(P.length===0)return $e.makeSpan(["mord"],[u],r);var Te=$e.makeVList({positionType:"individualShift",children:P},r);return Te=$e.makeSpan(["tag"],[Te],r),$e.makeFragment([u,Te])},"htmlBuilder"),bwe={c:"center ",l:"left ",r:"right "},tc=o(function(e,r){for(var n=[],i=new mt.MathNode("mtd",[],["mtr-glue"]),a=new mt.MathNode("mtd",[],["mml-eqn-num"]),s=0;s0){var g=e.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var T=x;T0?"left ":"",p+=C[C.length-1].length>0?"right ":"";for(var R=1;R-1?"alignat":"align",a=e.envName==="split",s=wh(e.parser,{cols:n,addJot:!0,autoTag:a?void 0:yA(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:e.parser.settings.leqno},"display"),l,u=0,h={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var f="",d=0;d0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");Jl({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=D3(e[0]),n=r?[e[0]]:Tr(e[0],"ordgroup").body,i=n.map(function(s){var l=fA(s),u=l.text;if("lcr".indexOf(u)!==-1)return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new gt("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return wh(t.parser,a,vA(t.envName))},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(t.envName.charAt(t.envName.length-1)==="*"){var i=t.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,"lcr".indexOf(r)===-1)throw new gt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=wh(t.parser,n,vA(t.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[a],left:e[0],right:e[1],rightColor:void 0}:a},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=wh(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=D3(e[0]),n=r?[e[0]]:Tr(e[0],"ordgroup").body,i=n.map(function(s){var l=fA(s),u=l.text;if("lc".indexOf(u)!==-1)return{type:"align",align:u};throw new gt("Unknown column alignment: "+u,s)});if(i.length>1)throw new gt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=wh(t.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new gt("{subarray} can contain only one column");return a},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=wh(t.parser,e,vA(t.envName));return{type:"leftright",mode:t.mode,body:[r],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:CU,htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){er.contains(["gather","gather*"],t.envName)&&N3(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:yA(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return wh(t.parser,e,"display")},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:CU,htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){N3(t);var e={autoTag:yA(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return wh(t.parser,e,"display")},htmlBuilder:ec,mathmlBuilder:tc});Jl({type:"array",names:["CD"],props:{numArgs:0},handler(t){return N3(t),swe(t.parser)},htmlBuilder:ec,mathmlBuilder:tc});ce("\\nonumber","\\gdef\\@eqnsw{0}");ce("\\notag","\\nonumber");Mt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new gt(t.funcName+" valid only within array environment")}});LV=EU;Mt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];if(i.type!=="ordgroup")throw new gt("Invalid environment name",i);for(var a="",s=0;s{var r=t.font,n=e.withFont(r);return Hr(t.body,n)},"htmlBuilder$5"),_U=o((t,e)=>{var r=t.font,n=e.withFont(r);return wn(t.body,n)},"mathmlBuilder$4"),RV={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Mt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=E3(e[0]),a=n;return a in RV&&(a=RV[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:AU,mathmlBuilder:_U});Mt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r}=t,n=e[0],i=er.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:L3(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}},"handler")});Mt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n,breakOnTokenText:i}=t,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:AU,mathmlBuilder:_U});DU=o((t,e)=>{var r=e;return t==="display"?r=r.id>=nr.SCRIPT.id?r.text():nr.DISPLAY:t==="text"&&r.size===nr.DISPLAY.size?r=nr.TEXT:t==="script"?r=nr.SCRIPT:t==="scriptscript"&&(r=nr.SCRIPTSCRIPT),r},"adjustStyle"),xA=o((t,e)=>{var r=DU(t.size,e.style),n=r.fracNum(),i=r.fracDen(),a;a=e.havingStyle(n);var s=Hr(t.numer,a,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,u=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?g=3*p:g=7*p,y=e.fontMetrics().denom1):(d>0?(m=e.fontMetrics().num2,g=p):(m=e.fontMetrics().num3,g=3*p),y=e.fontMetrics().denom2);var v;if(f){var b=e.fontMetrics().axisHeight;m-s.depth-(b+.5*d){var r=new mt.MathNode("mfrac",[wn(t.numer,e),wn(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=ii(t.barSize,e);r.setAttribute("linethickness",St(n))}var i=DU(t.size,e.style);if(i.size!==e.style.size){r=new mt.MathNode("mstyle",[r]);var a=i.size===nr.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",a),r.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var s=[];if(t.leftDelim!=null){var l=new mt.MathNode("mo",[new mt.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),s.push(l)}if(s.push(r),t.rightDelim!=null){var u=new mt.MathNode("mo",[new mt.TextNode(t.rightDelim.replace("\\",""))]);u.setAttribute("fence","true"),s.push(u)}return uA(s)}return r},"mathmlBuilder$3");Mt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1],s,l=null,u=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:a,hasBarLine:s,leftDelim:l,rightDelim:u,size:h,barSize:null}},"handler"),htmlBuilder:xA,mathmlBuilder:bA});Mt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:i,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}},"handler")});Mt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:r,token:n}=t,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:i,token:n}}});NV=["display","text","script","scriptscript"],MV=o(function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r},"delimFromValue");Mt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:r}=t,n=e[4],i=e[5],a=E3(e[0]),s=a.type==="atom"&&a.family==="open"?MV(a.text):null,l=E3(e[1]),u=l.type==="atom"&&l.family==="close"?MV(l.text):null,h=Tr(e[2],"size"),f,d=null;h.isBlank?f=!0:(d=h.value,f=d.number>0);var p="auto",m=e[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=Tr(m.body[0],"textord");p=NV[Number(g.text)]}}else m=Tr(m,"textord"),p=NV[Number(m.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:f,barSize:d,leftDelim:s,rightDelim:u,size:p}},htmlBuilder:xA,mathmlBuilder:bA});Mt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:r,funcName:n,token:i}=t;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Tr(e[0],"size").value,token:i}}});Mt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=J5e(Tr(e[1],"infix").size),s=e[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},"handler"),htmlBuilder:xA,mathmlBuilder:bA});LU=o((t,e)=>{var r=e.style,n,i;t.type==="supsub"?(n=t.sup?Hr(t.sup,e.havingStyle(r.sup()),e):Hr(t.sub,e.havingStyle(r.sub()),e),i=Tr(t.base,"horizBrace")):i=Tr(t,"horizBrace");var a=Hr(i.base,e.havingBaseStyle(nr.DISPLAY)),s=pu.svgSpan(i,e),l;if(i.isOver?(l=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=$e.makeVList({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=$e.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e);i.isOver?l=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]},e):l=$e.makeVList({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]},e)}return $e.makeSpan(["mord",i.isOver?"mover":"munder"],[l],e)},"htmlBuilder$3"),Twe=o((t,e)=>{var r=pu.mathMLnode(t.label);return new mt.MathNode(t.isOver?"mover":"munder",[wn(t.base,e),r])},"mathmlBuilder$2");Mt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:e[0]}},htmlBuilder:LU,mathmlBuilder:Twe});Mt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[1],i=Tr(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:gi(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.body,e,!1);return $e.makeAnchor(t.href,[],r,e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=Th(t.body,e);return r instanceof es||(r=new es("mrow",[r])),r.setAttribute("href",t.href),r},"mathmlBuilder")});Mt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=Tr(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=t,a=Tr(e[0],"raw").string,s=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),f=0;f{var r=Ii(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var i=$e.makeSpan(n,r,e);for(var a in t.attributes)a!=="class"&&t.attributes.hasOwnProperty(a)&&i.setAttribute(a,t.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((t,e)=>Th(t.body,e),"mathmlBuilder")});Mt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:gi(e[0]),mathml:gi(e[1])}},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.html,e,!1);return $e.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>Th(t.mathml,e),"mathmlBuilder")});q7=o(function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new gt("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!jV(n))throw new gt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Mt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((t,e,r)=>{var{parser:n}=t,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=Tr(r[0],"raw").string,h=u.split(","),f=0;f{var r=ii(t.height,e),n=0;t.totalheight.number>0&&(n=ii(t.totalheight,e)-r);var i=0;t.width.number>0&&(i=ii(t.width,e));var a={height:St(r+n)};i>0&&(a.width=St(i)),n>0&&(a.verticalAlign=St(-n));var s=new Q7(t.src,t.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new mt.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=ii(t.height,e),i=0;if(t.totalheight.number>0&&(i=ii(t.totalheight,e)-n,r.setAttribute("valign",St(-i))),r.setAttribute("height",St(n+i)),t.width.number>0){var a=ii(t.width,e);r.setAttribute("width",St(a))}return r.setAttribute("src",t.src),r},"mathmlBuilder")});Mt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=Tr(e[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(t,e){return $e.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=ii(t.dimension,e);return new mt.SpaceNode(r)}});Mt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((t,e)=>{var r;t.alignment==="clap"?(r=$e.makeSpan([],[Hr(t.body,e)]),r=$e.makeSpan(["inner"],[r],e)):r=$e.makeSpan(["inner"],[Hr(t.body,e)]);var n=$e.makeSpan(["fix"],[]),i=$e.makeSpan([t.alignment],[r,n],e),a=$e.makeSpan(["strut"]);return a.style.height=St(i.height+i.depth),i.depth&&(a.style.verticalAlign=St(-i.depth)),i.children.unshift(a),i=$e.makeSpan(["thinbox"],[i],e),$e.makeSpan(["mord","vbox"],[i],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=new mt.MathNode("mpadded",[wn(t.body,e)]);if(t.alignment!=="rlap"){var n=t.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Mt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:r,parser:n}=t,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});Mt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new gt("Mismatched "+t.funcName)}});IV=o((t,e)=>{switch(e.style.size){case nr.DISPLAY.size:return t.display;case nr.TEXT.size:return t.text;case nr.SCRIPT.size:return t.script;case nr.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}},"chooseMathStyle");Mt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:gi(e[0]),text:gi(e[1]),script:gi(e[2]),scriptscript:gi(e[3])}},"handler"),htmlBuilder:o((t,e)=>{var r=IV(t,e),n=Ii(r,e,!1);return $e.makeFragment(n)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=IV(t,e);return Th(r,e)},"mathmlBuilder")});RU=o((t,e,r,n,i,a,s)=>{t=$e.makeSpan([],[t]);var l=r&&er.isCharacterBox(r),u,h;if(e){var f=Hr(e,n.havingStyle(i.sup()),n);h={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-f.depth)}}if(r){var d=Hr(r,n.havingStyle(i.sub()),n);u={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-d.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+t.depth+s;p=$e.makeVList({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:St(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:St(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(u){var g=t.height-s;p=$e.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:St(-a)},{type:"kern",size:u.kern},{type:"elem",elem:t}]},n)}else if(h){var y=t.depth+s;p=$e.makeVList({positionType:"bottom",positionData:y,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:St(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var v=[p];if(u&&a!==0&&!l){var x=$e.makeSpan(["mspace"],[],n);x.style.marginRight=St(a),v.unshift(x)}return $e.makeSpan(["mop","op-limits"],v,n)},"assembleSupSub"),NU=["\\smallint"],C0=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=Tr(t.base,"op"),i=!0):a=Tr(t,"op");var s=e.style,l=!1;s.size===nr.DISPLAY.size&&a.symbol&&!er.contains(NU,a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",f="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(f=a.name.slice(1),a.name=f==="oiint"?"\\iint":"\\iiint"),u=$e.makeSymbol(a.name,h,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),f.length>0){var d=u.italic,p=$e.staticSvg(f+"Size"+(l?"2":"1"),e);u=$e.makeVList({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},e),a.name="\\"+f,u.classes.unshift("mop"),u.italic=d}}else if(a.body){var m=Ii(a.body,e,!0);m.length===1&&m[0]instanceof Cs?(u=m[0],u.classes[0]="mop"):u=$e.makeSpan(["mop"],m,e)}else{for(var g=[],y=1;y{var r;if(t.symbol)r=new es("mo",[Lo(t.name,t.mode)]),er.contains(NU,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new es("mo",As(t.body,e));else{r=new es("mi",[new _o(t.name.slice(1))]);var n=new es("mo",[Lo("\u2061","text")]);t.parentIsSupSub?r=new es("mrow",[r,n]):r=sU([r,n])}return r},"mathmlBuilder$1"),wwe={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Mt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=n;return i.length===1&&(i=wwe[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:C0,mathmlBuilder:Jy});Mt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:gi(n)}},"handler"),htmlBuilder:C0,mathmlBuilder:Jy});kwe={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Mt({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:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:C0,mathmlBuilder:Jy});Mt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:C0,mathmlBuilder:Jy});Mt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t,n=r;return n.length===1&&(n=kwe[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:C0,mathmlBuilder:Jy});MU=o((t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=Tr(t.base,"operatorname"),i=!0):a=Tr(t,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(d=>{var p=d.text;return typeof p=="string"?{type:"textord",mode:d.mode,text:p}:d}),u=Ii(l,e.withFont("mathrm"),!0),h=0;h{for(var r=As(t.body,e.withFont("mathrm")),n=!0,i=0;if.toText()).join("");r=[new mt.TextNode(l)]}var u=new mt.MathNode("mi",r);u.setAttribute("mathvariant","normal");var h=new mt.MathNode("mo",[Lo("\u2061","text")]);return t.parentIsSupSub?new mt.MathNode("mrow",[u,h]):mt.newDocumentFragment([u,h])},"mathmlBuilder");Mt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"operatorname",mode:r.mode,body:gi(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:MU,mathmlBuilder:Ewe});ce("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");dd({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?$e.makeFragment(Ii(t.body,e,!1)):$e.makeSpan(["mord"],Ii(t.body,e,!0),e)},mathmlBuilder(t,e){return Th(t.body,e,!0)}});Mt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:r}=t,n=e[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(t,e){var r=Hr(t.body,e.havingCrampedStyle()),n=$e.makeLineSpan("overline-line",e),i=e.fontMetrics().defaultRuleThickness,a=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},e);return $e.makeSpan(["mord","overline"],[a],e)},mathmlBuilder(t,e){var r=new mt.MathNode("mo",[new mt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new mt.MathNode("mover",[wn(t.body,e),r]);return n.setAttribute("accent","true"),n}});Mt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:gi(n)}},"handler"),htmlBuilder:o((t,e)=>{var r=Ii(t.body,e.withPhantom(),!1);return $e.makeFragment(r)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=As(t.body,e);return new mt.MathNode("mphantom",r)},"mathmlBuilder")});Mt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=$e.makeSpan([],[Hr(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=As(gi(t.body),e),n=new mt.MathNode("mphantom",r),i=new mt.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i},"mathmlBuilder")});Mt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((t,e)=>{var r=$e.makeSpan(["inner"],[Hr(t.body,e.withPhantom())]),n=$e.makeSpan(["fix"],[]);return $e.makeSpan(["mord","rlap"],[r,n],e)},"htmlBuilder"),mathmlBuilder:o((t,e)=>{var r=As(gi(t.body),e),n=new mt.MathNode("mphantom",r),i=new mt.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Mt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=Tr(e[0],"size").value,i=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(t,e){var r=Hr(t.body,e),n=ii(t.dy,e);return $e.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new mt.MathNode("mpadded",[wn(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});Mt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});Mt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,i=r[0],a=Tr(e[0],"size"),s=Tr(e[1],"size");return{type:"rule",mode:n.mode,shift:i&&Tr(i,"size").value,width:a.value,height:s.value}},htmlBuilder(t,e){var r=$e.makeSpan(["mord","rule"],[],e),n=ii(t.width,e),i=ii(t.height,e),a=t.shift?ii(t.shift,e):0;return r.style.borderRightWidth=St(n),r.style.borderTopWidth=St(i),r.style.bottom=St(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=ii(t.width,e),n=ii(t.height,e),i=t.shift?ii(t.shift,e):0,a=e.color&&e.getColor()||"black",s=new mt.MathNode("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",St(r)),s.setAttribute("height",St(n));var l=new mt.MathNode("mpadded",[s]);return i>=0?l.setAttribute("height",St(i)):(l.setAttribute("height",St(i)),l.setAttribute("depth",St(-i))),l.setAttribute("voffset",St(i)),l}});o(IU,"sizingGroup");OV=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],Swe=o((t,e)=>{var r=e.havingSize(t.size);return IU(t.body,r,e)},"htmlBuilder");Mt({type:"sizing",names:OV,props:{numArgs:0,allowedInText:!0},handler:o((t,e)=>{var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:OV.indexOf(n)+1,body:a}},"handler"),htmlBuilder:Swe,mathmlBuilder:o((t,e)=>{var r=e.havingSize(t.size),n=As(t.body,r),i=new mt.MathNode("mstyle",n);return i.setAttribute("mathsize",St(r.sizeMultiplier)),i},"mathmlBuilder")});Mt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((t,e,r)=>{var{parser:n}=t,i=!1,a=!1,s=r[0]&&Tr(r[0],"ordgroup");if(s)for(var l="",u=0;u{var r=$e.makeSpan([],[Hr(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new mt.MathNode("mpadded",[wn(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Mt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n}=t,i=r[0],a=e[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(t,e){var r=Hr(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=$e.wrapFragment(r,e);var n=e.fontMetrics(),i=n.defaultRuleThickness,a=i;e.style.idr.height+r.depth+s&&(s=(s+d-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=St(f);var m=$e.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]},e);if(t.index){var g=e.havingStyle(nr.SCRIPTSCRIPT),y=Hr(t.index,g,e),v=.6*(m.height-m.depth),x=$e.makeVList({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]},e),b=$e.makeSpan(["root"],[x]);return $e.makeSpan(["mord","sqrt"],[b,m],e)}else return $e.makeSpan(["mord","sqrt"],[m],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new mt.MathNode("mroot",[wn(r,e),wn(n,e)]):new mt.MathNode("msqrt",[wn(r,e)])}});PV={display:nr.DISPLAY,text:nr.TEXT,script:nr.SCRIPT,scriptscript:nr.SCRIPTSCRIPT};Mt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(t,e){var r=PV[t.style],n=e.havingStyle(r).withFont("");return IU(t.body,n,e)},mathmlBuilder(t,e){var r=PV[t.style],n=e.havingStyle(r),i=As(t.body,n),a=new mt.MathNode("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[t.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});Cwe=o(function(e,r){var n=e.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===nr.DISPLAY.size||n.alwaysHandleSupSub);return i?C0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===nr.DISPLAY.size||n.limits);return a?MU:null}else{if(n.type==="accent")return er.isCharacterBox(n.base)?dA:null;if(n.type==="horizBrace"){var s=!e.sub;return s===n.isOver?LU:null}else return null}else return null},"htmlBuilderDelegate");dd({type:"supsub",htmlBuilder(t,e){var r=Cwe(t,e);if(r)return r(t,e);var{base:n,sup:i,sub:a}=t,s=Hr(n,e),l,u,h=e.fontMetrics(),f=0,d=0,p=n&&er.isCharacterBox(n);if(i){var m=e.havingStyle(e.style.sup());l=Hr(i,m,e),p||(f=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/e.sizeMultiplier)}if(a){var g=e.havingStyle(e.style.sub());u=Hr(a,g,e),p||(d=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}var y;e.style===nr.DISPLAY?y=h.sup1:e.style.cramped?y=h.sup3:y=h.sup2;var v=e.sizeMultiplier,x=St(.5/h.ptPerEm/v),b=null;if(u){var T=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof Cs||T)&&(b=St(-s.italic))}var S;if(l&&u){f=Math.max(f,y,l.depth+.25*h.xHeight),d=Math.max(d,h.sub2);var w=h.defaultRuleThickness,k=4*w;if(f-l.depth-(u.height-d)0&&(f+=A,d-=A)}var C=[{type:"elem",elem:u,shift:d,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-f,marginRight:x}];S=$e.makeVList({positionType:"individualShift",children:C},e)}else if(u){d=Math.max(d,h.sub1,u.height-.8*h.xHeight);var R=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];S=$e.makeVList({positionType:"shift",positionData:d,children:R},e)}else if(l)f=Math.max(f,y,l.depth+.25*h.xHeight),S=$e.makeVList({positionType:"shift",positionData:-f,children:[{type:"elem",elem:l,marginRight:x}]},e);else throw new Error("supsub must have either sup or sub.");var I=J7(s,"right")||"mord";return $e.makeSpan([I],[s,$e.makeSpan(["msupsub"],[S])],e)},mathmlBuilder(t,e){var r=!1,n,i;t.base&&t.base.type==="horizBrace"&&(i=!!t.sup,i===t.base.isOver&&(r=!0,n=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var a=[wn(t.base,e)];t.sub&&a.push(wn(t.sub,e)),t.sup&&a.push(wn(t.sup,e));var s;if(r)s=n?"mover":"munder";else if(t.sub)if(t.sup){var h=t.base;h&&h.type==="op"&&h.limits&&e.style===nr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(e.style===nr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=t.base;u&&u.type==="op"&&u.limits&&(e.style===nr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||e.style===nr.DISPLAY)?s="munder":s="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===nr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===nr.DISPLAY)?s="mover":s="msup"}return new mt.MathNode(s,a)}});dd({type:"atom",htmlBuilder(t,e){return $e.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new mt.MathNode("mo",[Lo(t.text,t.mode)]);if(t.family==="bin"){var n=hA(t,e);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else t.family==="punct"?r.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&r.setAttribute("stretchy","false");return r}});OU={mi:"italic",mn:"normal",mtext:"normal"};dd({type:"mathord",htmlBuilder(t,e){return $e.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new mt.MathNode("mi",[Lo(t.text,t.mode,e)]),n=hA(t,e)||"italic";return n!==OU[r.type]&&r.setAttribute("mathvariant",n),r}});dd({type:"textord",htmlBuilder(t,e){return $e.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=Lo(t.text,t.mode,e),n=hA(t,e)||"normal",i;return t.mode==="text"?i=new mt.MathNode("mtext",[r]):/[0-9]/.test(t.text)?i=new mt.MathNode("mn",[r]):t.text==="\\prime"?i=new mt.MathNode("mo",[r]):i=new mt.MathNode("mi",[r]),n!==OU[i.type]&&i.setAttribute("mathvariant",n),i}});W7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Y7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};dd({type:"spacing",htmlBuilder(t,e){if(Y7.hasOwnProperty(t.text)){var r=Y7[t.text].className||"";if(t.mode==="text"){var n=$e.makeOrd(t,e,"textord");return n.classes.push(r),n}else return $e.makeSpan(["mspace",r],[$e.mathsym(t.text,t.mode,e)],e)}else{if(W7.hasOwnProperty(t.text))return $e.makeSpan(["mspace",W7[t.text]],[],e);throw new gt('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(Y7.hasOwnProperty(t.text))r=new mt.MathNode("mtext",[new mt.TextNode("\xA0")]);else{if(W7.hasOwnProperty(t.text))return new mt.MathNode("mspace");throw new gt('Unknown type of space "'+t.text+'"')}return r}});BV=o(()=>{var t=new mt.MathNode("mtd",[]);return t.setAttribute("width","50%"),t},"pad");dd({type:"tag",mathmlBuilder(t,e){var r=new mt.MathNode("mtable",[new mt.MathNode("mtr",[BV(),new mt.MathNode("mtd",[Th(t.body,e)]),BV(),new mt.MathNode("mtd",[Th(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});FV={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},$V={"\\textbf":"textbf","\\textmd":"textmd"},Awe={"\\textit":"textit","\\textup":"textup"},zV=o((t,e)=>{var r=t.font;if(r){if(FV[r])return e.withTextFontFamily(FV[r]);if($V[r])return e.withTextFontWeight($V[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(Awe[r])},"optionsWithFont");Mt({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:r,funcName:n}=t,i=e[0];return{type:"text",mode:r.mode,body:gi(i),font:n}},htmlBuilder(t,e){var r=zV(t,e),n=Ii(t.body,r,!0);return $e.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=zV(t,e);return Th(t.body,r)}});Mt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"underline",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Hr(t.body,e),n=$e.makeLineSpan("underline-line",e),i=e.fontMetrics().defaultRuleThickness,a=$e.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]},e);return $e.makeSpan(["mord","underline"],[a],e)},mathmlBuilder(t,e){var r=new mt.MathNode("mo",[new mt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new mt.MathNode("munder",[wn(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});Mt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"vcenter",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Hr(t.body,e),n=e.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return $e.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new mt.MathNode("mpadded",[wn(t.body,e)],["vcenter"])}});Mt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new gt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=GV(t),n=[],i=e.havingStyle(e.style.text()),a=0;at.body.replace(/ /g,t.star?"\u2423":"\xA0"),"makeVerb"),xh=iU,PU=`[ \r - ]`,_we="\\\\[a-zA-Z@]+",Dwe="\\\\[^\uD800-\uDFFF]",Lwe="("+_we+")"+PU+"*",Rwe=`\\\\( -|[ \r ]+ -?)[ \r ]*`,iA="[\u0300-\u036F]",Nwe=new RegExp(iA+"+$"),Mwe="("+PU+"+)|"+(Rwe+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(iA+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(iA+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+Lwe)+("|"+Dwe+")"),S3=class{static{o(this,"Lexer")}constructor(e,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=r,this.tokenRegex=new RegExp(Mwe,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,r){this.catcodes[e]=r}lex(){var e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new Do("EOF",new to(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new gt("Unexpected character: '"+e[r]+"'",new Do(e[r],new to(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=e.indexOf(` -`,this.tokenRegex.lastIndex);return a===-1?(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=a+1,this.lex()}return new Do(i,new to(this,r,this.tokenRegex.lastIndex))}},aA=class{static{o(this,"Namespace")}constructor(e,r){e===void 0&&(e={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new gt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var r in e)e.hasOwnProperty(r)&&(e[r]==null?delete this.current[r]:this.current[r]=e[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][e]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}r==null?delete this.current[e]:this.current[e]=r}},Iwe=SU;ce("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});ce("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});ce("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});ce("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});ce("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var r=t.future();return e[0].length===1&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});ce("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");ce("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});VV={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};ce("\\char",function(t){var e=t.popToken(),r,n="";if(e.text==="'")r=8,e=t.popToken();else if(e.text==='"')r=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")n=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new gt("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=VV[e.text],n==null||n>=r)throw new gt("Invalid base-"+r+" digit "+e.text);for(var i;(i=VV[t.future().text])!=null&&i{var i=t.consumeArg().tokens;if(i.length!==1)throw new gt("\\newcommand's first argument must be a macro name");var a=i[0].text,s=t.isDefined(a);if(s&&!e)throw new gt("\\newcommand{"+a+"} attempting to redefine "+(a+"; use \\renewcommand"));if(!s&&!r)throw new gt("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var l=0;if(i=t.consumeArg().tokens,i.length===1&&i[0].text==="["){for(var u="",h=t.expandNextToken();h.text!=="]"&&h.text!=="EOF";)u+=h.text,h=t.expandNextToken();if(!u.match(/^\s*[0-9]+\s*$/))throw new gt("Invalid number of arguments: "+u);l=parseInt(u),i=t.consumeArg().tokens}return s&&n||t.macros.set(a,{tokens:i,numArgs:l}),""},"newcommand");ce("\\newcommand",t=>TA(t,!1,!0,!1));ce("\\renewcommand",t=>TA(t,!0,!1,!1));ce("\\providecommand",t=>TA(t,!0,!0,!0));ce("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});ce("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});ce("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),xh[r],Nn.math[r],Nn.text[r]),""});ce("\\bgroup","{");ce("\\egroup","}");ce("~","\\nobreakspace");ce("\\lq","`");ce("\\rq","'");ce("\\aa","\\r a");ce("\\AA","\\r A");ce("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");ce("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");ce("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");ce("\u212C","\\mathscr{B}");ce("\u2130","\\mathscr{E}");ce("\u2131","\\mathscr{F}");ce("\u210B","\\mathscr{H}");ce("\u2110","\\mathscr{I}");ce("\u2112","\\mathscr{L}");ce("\u2133","\\mathscr{M}");ce("\u211B","\\mathscr{R}");ce("\u212D","\\mathfrak{C}");ce("\u210C","\\mathfrak{H}");ce("\u2128","\\mathfrak{Z}");ce("\\Bbbk","\\Bbb{k}");ce("\xB7","\\cdotp");ce("\\llap","\\mathllap{\\textrm{#1}}");ce("\\rlap","\\mathrlap{\\textrm{#1}}");ce("\\clap","\\mathclap{\\textrm{#1}}");ce("\\mathstrut","\\vphantom{(}");ce("\\underbar","\\underline{\\text{#1}}");ce("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');ce("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");ce("\\ne","\\neq");ce("\u2260","\\neq");ce("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");ce("\u2209","\\notin");ce("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");ce("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");ce("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");ce("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");ce("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");ce("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");ce("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");ce("\u27C2","\\perp");ce("\u203C","\\mathclose{!\\mkern-0.8mu!}");ce("\u220C","\\notni");ce("\u231C","\\ulcorner");ce("\u231D","\\urcorner");ce("\u231E","\\llcorner");ce("\u231F","\\lrcorner");ce("\xA9","\\copyright");ce("\xAE","\\textregistered");ce("\uFE0F","\\textregistered");ce("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');ce("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');ce("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');ce("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');ce("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");ce("\u22EE","\\vdots");ce("\\varGamma","\\mathit{\\Gamma}");ce("\\varDelta","\\mathit{\\Delta}");ce("\\varTheta","\\mathit{\\Theta}");ce("\\varLambda","\\mathit{\\Lambda}");ce("\\varXi","\\mathit{\\Xi}");ce("\\varPi","\\mathit{\\Pi}");ce("\\varSigma","\\mathit{\\Sigma}");ce("\\varUpsilon","\\mathit{\\Upsilon}");ce("\\varPhi","\\mathit{\\Phi}");ce("\\varPsi","\\mathit{\\Psi}");ce("\\varOmega","\\mathit{\\Omega}");ce("\\substack","\\begin{subarray}{c}#1\\end{subarray}");ce("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");ce("\\boxed","\\fbox{$\\displaystyle{#1}$}");ce("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");ce("\\implies","\\DOTSB\\;\\Longrightarrow\\;");ce("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");ce("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");ce("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");UV={",":"\\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"};ce("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in UV?e=UV[r]:(r.slice(0,4)==="\\not"||r in Nn.math&&er.contains(["bin","rel"],Nn.math[r].group))&&(e="\\dotsb"),e});wA={")":!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};ce("\\dotso",function(t){var e=t.future().text;return e in wA?"\\ldots\\,":"\\ldots"});ce("\\dotsc",function(t){var e=t.future().text;return e in wA&&e!==","?"\\ldots\\,":"\\ldots"});ce("\\cdots",function(t){var e=t.future().text;return e in wA?"\\@cdots\\,":"\\@cdots"});ce("\\dotsb","\\cdots");ce("\\dotsm","\\cdots");ce("\\dotsi","\\!\\cdots");ce("\\dotsx","\\ldots\\,");ce("\\DOTSI","\\relax");ce("\\DOTSB","\\relax");ce("\\DOTSX","\\relax");ce("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");ce("\\,","\\tmspace+{3mu}{.1667em}");ce("\\thinspace","\\,");ce("\\>","\\mskip{4mu}");ce("\\:","\\tmspace+{4mu}{.2222em}");ce("\\medspace","\\:");ce("\\;","\\tmspace+{5mu}{.2777em}");ce("\\thickspace","\\;");ce("\\!","\\tmspace-{3mu}{.1667em}");ce("\\negthinspace","\\!");ce("\\negmedspace","\\tmspace-{4mu}{.2222em}");ce("\\negthickspace","\\tmspace-{5mu}{.277em}");ce("\\enspace","\\kern.5em ");ce("\\enskip","\\hskip.5em\\relax");ce("\\quad","\\hskip1em\\relax");ce("\\qquad","\\hskip2em\\relax");ce("\\tag","\\@ifstar\\tag@literal\\tag@paren");ce("\\tag@paren","\\tag@literal{({#1})}");ce("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new gt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});ce("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");ce("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");ce("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");ce("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");ce("\\newline","\\\\\\relax");ce("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");BU=St(Ql["Main-Regular"][84][1]-.7*Ql["Main-Regular"][65][1]);ce("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+BU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");ce("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+BU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");ce("\\hspace","\\@ifstar\\@hspacer\\@hspace");ce("\\@hspace","\\hskip #1\\relax");ce("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");ce("\\ordinarycolon",":");ce("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");ce("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');ce("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');ce("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');ce("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');ce("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');ce("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');ce("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');ce("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');ce("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');ce("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');ce("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');ce("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');ce("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');ce("\u2237","\\dblcolon");ce("\u2239","\\eqcolon");ce("\u2254","\\coloneqq");ce("\u2255","\\eqqcolon");ce("\u2A74","\\Coloneqq");ce("\\ratio","\\vcentcolon");ce("\\coloncolon","\\dblcolon");ce("\\colonequals","\\coloneqq");ce("\\coloncolonequals","\\Coloneqq");ce("\\equalscolon","\\eqqcolon");ce("\\equalscoloncolon","\\Eqqcolon");ce("\\colonminus","\\coloneq");ce("\\coloncolonminus","\\Coloneq");ce("\\minuscolon","\\eqcolon");ce("\\minuscoloncolon","\\Eqcolon");ce("\\coloncolonapprox","\\Colonapprox");ce("\\coloncolonsim","\\Colonsim");ce("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");ce("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");ce("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");ce("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");ce("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");ce("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");ce("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");ce("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");ce("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");ce("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");ce("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");ce("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");ce("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");ce("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");ce("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");ce("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");ce("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");ce("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");ce("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");ce("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");ce("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");ce("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");ce("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");ce("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");ce("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");ce("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");ce("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");ce("\\imath","\\html@mathml{\\@imath}{\u0131}");ce("\\jmath","\\html@mathml{\\@jmath}{\u0237}");ce("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");ce("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");ce("\u27E6","\\llbracket");ce("\u27E7","\\rrbracket");ce("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");ce("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");ce("\u2983","\\lBrace");ce("\u2984","\\rBrace");ce("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");ce("\u29B5","\\minuso");ce("\\darr","\\downarrow");ce("\\dArr","\\Downarrow");ce("\\Darr","\\Downarrow");ce("\\lang","\\langle");ce("\\rang","\\rangle");ce("\\uarr","\\uparrow");ce("\\uArr","\\Uparrow");ce("\\Uarr","\\Uparrow");ce("\\N","\\mathbb{N}");ce("\\R","\\mathbb{R}");ce("\\Z","\\mathbb{Z}");ce("\\alef","\\aleph");ce("\\alefsym","\\aleph");ce("\\Alpha","\\mathrm{A}");ce("\\Beta","\\mathrm{B}");ce("\\bull","\\bullet");ce("\\Chi","\\mathrm{X}");ce("\\clubs","\\clubsuit");ce("\\cnums","\\mathbb{C}");ce("\\Complex","\\mathbb{C}");ce("\\Dagger","\\ddagger");ce("\\diamonds","\\diamondsuit");ce("\\empty","\\emptyset");ce("\\Epsilon","\\mathrm{E}");ce("\\Eta","\\mathrm{H}");ce("\\exist","\\exists");ce("\\harr","\\leftrightarrow");ce("\\hArr","\\Leftrightarrow");ce("\\Harr","\\Leftrightarrow");ce("\\hearts","\\heartsuit");ce("\\image","\\Im");ce("\\infin","\\infty");ce("\\Iota","\\mathrm{I}");ce("\\isin","\\in");ce("\\Kappa","\\mathrm{K}");ce("\\larr","\\leftarrow");ce("\\lArr","\\Leftarrow");ce("\\Larr","\\Leftarrow");ce("\\lrarr","\\leftrightarrow");ce("\\lrArr","\\Leftrightarrow");ce("\\Lrarr","\\Leftrightarrow");ce("\\Mu","\\mathrm{M}");ce("\\natnums","\\mathbb{N}");ce("\\Nu","\\mathrm{N}");ce("\\Omicron","\\mathrm{O}");ce("\\plusmn","\\pm");ce("\\rarr","\\rightarrow");ce("\\rArr","\\Rightarrow");ce("\\Rarr","\\Rightarrow");ce("\\real","\\Re");ce("\\reals","\\mathbb{R}");ce("\\Reals","\\mathbb{R}");ce("\\Rho","\\mathrm{P}");ce("\\sdot","\\cdot");ce("\\sect","\\S");ce("\\spades","\\spadesuit");ce("\\sub","\\subset");ce("\\sube","\\subseteq");ce("\\supe","\\supseteq");ce("\\Tau","\\mathrm{T}");ce("\\thetasym","\\vartheta");ce("\\weierp","\\wp");ce("\\Zeta","\\mathrm{Z}");ce("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");ce("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");ce("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");ce("\\bra","\\mathinner{\\langle{#1}|}");ce("\\ket","\\mathinner{|{#1}\\rangle}");ce("\\braket","\\mathinner{\\langle{#1}\\rangle}");ce("\\Bra","\\left\\langle#1\\right|");ce("\\Ket","\\left|#1\\right\\rangle");FU=o(t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.consumeArg().tokens,s=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var u=o(d=>p=>{t&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=d;if(!d&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");e.macros.set("|",u(!1)),i.length&&e.macros.set("\\|",u(!0));var h=e.consumeArg().tokens,f=e.expandTokens([...a,...h,...r]);return e.macros.endGroup(),{tokens:f.reverse(),numArgs:0}},"braketHelper");ce("\\bra@ket",FU(!1));ce("\\bra@set",FU(!0));ce("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");ce("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");ce("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");ce("\\angln","{\\angl n}");ce("\\blue","\\textcolor{##6495ed}{#1}");ce("\\orange","\\textcolor{##ffa500}{#1}");ce("\\pink","\\textcolor{##ff00af}{#1}");ce("\\red","\\textcolor{##df0030}{#1}");ce("\\green","\\textcolor{##28ae7b}{#1}");ce("\\gray","\\textcolor{gray}{#1}");ce("\\purple","\\textcolor{##9d38bd}{#1}");ce("\\blueA","\\textcolor{##ccfaff}{#1}");ce("\\blueB","\\textcolor{##80f6ff}{#1}");ce("\\blueC","\\textcolor{##63d9ea}{#1}");ce("\\blueD","\\textcolor{##11accd}{#1}");ce("\\blueE","\\textcolor{##0c7f99}{#1}");ce("\\tealA","\\textcolor{##94fff5}{#1}");ce("\\tealB","\\textcolor{##26edd5}{#1}");ce("\\tealC","\\textcolor{##01d1c1}{#1}");ce("\\tealD","\\textcolor{##01a995}{#1}");ce("\\tealE","\\textcolor{##208170}{#1}");ce("\\greenA","\\textcolor{##b6ffb0}{#1}");ce("\\greenB","\\textcolor{##8af281}{#1}");ce("\\greenC","\\textcolor{##74cf70}{#1}");ce("\\greenD","\\textcolor{##1fab54}{#1}");ce("\\greenE","\\textcolor{##0d923f}{#1}");ce("\\goldA","\\textcolor{##ffd0a9}{#1}");ce("\\goldB","\\textcolor{##ffbb71}{#1}");ce("\\goldC","\\textcolor{##ff9c39}{#1}");ce("\\goldD","\\textcolor{##e07d10}{#1}");ce("\\goldE","\\textcolor{##a75a05}{#1}");ce("\\redA","\\textcolor{##fca9a9}{#1}");ce("\\redB","\\textcolor{##ff8482}{#1}");ce("\\redC","\\textcolor{##f9685d}{#1}");ce("\\redD","\\textcolor{##e84d39}{#1}");ce("\\redE","\\textcolor{##bc2612}{#1}");ce("\\maroonA","\\textcolor{##ffbde0}{#1}");ce("\\maroonB","\\textcolor{##ff92c6}{#1}");ce("\\maroonC","\\textcolor{##ed5fa6}{#1}");ce("\\maroonD","\\textcolor{##ca337c}{#1}");ce("\\maroonE","\\textcolor{##9e034e}{#1}");ce("\\purpleA","\\textcolor{##ddd7ff}{#1}");ce("\\purpleB","\\textcolor{##c6b9fc}{#1}");ce("\\purpleC","\\textcolor{##aa87ff}{#1}");ce("\\purpleD","\\textcolor{##7854ab}{#1}");ce("\\purpleE","\\textcolor{##543b78}{#1}");ce("\\mintA","\\textcolor{##f5f9e8}{#1}");ce("\\mintB","\\textcolor{##edf2df}{#1}");ce("\\mintC","\\textcolor{##e0e5cc}{#1}");ce("\\grayA","\\textcolor{##f6f7f7}{#1}");ce("\\grayB","\\textcolor{##f0f1f2}{#1}");ce("\\grayC","\\textcolor{##e3e5e6}{#1}");ce("\\grayD","\\textcolor{##d6d8da}{#1}");ce("\\grayE","\\textcolor{##babec2}{#1}");ce("\\grayF","\\textcolor{##888d93}{#1}");ce("\\grayG","\\textcolor{##626569}{#1}");ce("\\grayH","\\textcolor{##3b3e40}{#1}");ce("\\grayI","\\textcolor{##21242c}{#1}");ce("\\kaBlue","\\textcolor{##314453}{#1}");ce("\\kaGreen","\\textcolor{##71B307}{#1}");$U={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},sA=class{static{o(this,"MacroExpander")}constructor(e,r,n){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=r,this.expansionCount=0,this.feed(e),this.macros=new aA(Iwe,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new S3(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&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){var r,n,i;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new Do("EOF",n.loc)),this.pushTokens(i),r.range(n,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var r=[],n=e&&e.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new gt("Extra }",a)}else if(a.text==="EOF")throw new gt("Unexpected end of input in a macro argument, expected '"+(e&&n?e[l]:"}")+"'",a);if(e&&n)if((s===0||s===1&&e[l]==="{")&&a.text===e[l]){if(++l,l===e.length){r.splice(-l,l);break}}else l=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new gt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new gt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||e&&i.unexpandable){if(e&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new gt("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new gt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new gt("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Do(e)]):void 0}expandTokens(e){var r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(e){var r=this.expandMacro(e);return r&&r.map(n=>n.text).join("")}_getExpansion(e){var r=this.macros.get(e);if(r==null)return r;if(e.length===1){var n=this.lexer.catcodes[e];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.indexOf("#")!==-1)for(var s=i.replace(/##/g,"");s.indexOf("#"+(a+1))!==-1;)++a;for(var l=new S3(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var f={tokens:u,numArgs:a};return f}return i}isDefined(e){return this.macros.has(e)||xh.hasOwnProperty(e)||Nn.math.hasOwnProperty(e)||Nn.text.hasOwnProperty(e)||$U.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:xh.hasOwnProperty(e)&&!xh[e].primitive}},HV=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,y3=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),X7={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},qV={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},C3=class t{static{o(this,"Parser")}constructor(e,r){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 sA(e,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(e,r){if(r===void 0&&(r=!0),this.fetch().text!==e)throw new gt("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(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 r=this.nextToken;this.consume(),this.gullet.pushToken(new Do("}")),this.gullet.pushTokens(e);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(e,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(t.endOfExpression.indexOf(i.text)!==-1||r&&i.text===r||e&&xh[i.text]&&xh[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(e){for(var r=-1,n,i=0;i=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',e);var l=Nn[this.mode][r].group,u=to.range(e),h;if(STe.hasOwnProperty(l)){var f=l;h={type:"atom",mode:this.mode,family:f,loc:u,text:r}}else h={type:l,mode:this.mode,loc:u,text:r};s=h}else if(r.charCodeAt(0)>=128)this.settings.strict&&(YV(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),e)),s={type:"textord",mode:"text",loc:to.range(e),text:r};else return null;if(this.consume(),a)for(var d=0;d{e.tagName==="A"&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),yh.addHook("afterSanitizeAttributes",e=>{e.tagName==="A"&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener"))})}var pd,Pwe,Bwe,KU,XU,sr,$we,zwe,Gwe,Vwe,QU,md,vr,Uwe,Hwe,rc,SA,qwe,Wwe,jU,I3,kn,gd,Ywe,kh,tt,gr=N(()=>{"use strict";O7();pd=//gi,Pwe=o(t=>t?QU(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),Bwe=(()=>{let t=!1;return()=>{t||(Fwe(),t=!0)}})();o(Fwe,"setupDompurifyHooks");KU=o(t=>(Bwe(),yh.sanitize(t)),"removeScript"),XU=o((t,e)=>{if(e.flowchart?.htmlLabels!==!1){let r=e.securityLevel;r==="antiscript"||r==="strict"?t=KU(t):r!=="loose"&&(t=QU(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=Vwe(t))}return t},"sanitizeMore"),sr=o((t,e)=>t&&(e.dompurifyConfig?t=yh.sanitize(XU(t,e),e.dompurifyConfig).toString():t=yh.sanitize(XU(t,e),{FORBID_TAGS:["style"]}).toString(),t),"sanitizeText"),$we=o((t,e)=>typeof t=="string"?sr(t,e):t.flat().map(r=>sr(r,e)),"sanitizeTextOrArray"),zwe=o(t=>pd.test(t),"hasBreaks"),Gwe=o(t=>t.split(pd),"splitBreaks"),Vwe=o(t=>t.replace(/#br#/g,"
    "),"placeholderToBreak"),QU=o(t=>t.replace(pd,"#br#"),"breakToPlaceholder"),md=o(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e},"getUrl"),vr=o(t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),Uwe=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.max(...e)},"getMax"),Hwe=o(function(...t){let e=t.filter(r=>!isNaN(r));return Math.min(...e)},"getMin"),rc=o(function(t){let e=t.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,t.split(e).length-1),"countOccurrence"),qwe=o((t,e)=>{let r=SA(t,"~"),n=SA(e,"~");return r===1&&n===1},"shouldCombineSets"),Wwe=o(t=>{let e=SA(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(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),jU=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),I3=/\$\$(.*)\$\$/g,kn=o(t=>(t.match(I3)?.length??0)>0,"hasKatex"),gd=o(async(t,e)=>{let r=document.createElement("div");r.innerHTML=await kh(t,e),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),Ywe=o(async(t,e)=>{if(!kn(t))return t;if(!(jU()||e.legacyMathML||e.forceLegacyMathML))return t.replace(I3,"MathML is unsupported in this environment.");{let{default:r}=await Promise.resolve().then(()=>(YU(),WU)),n=e.forceLegacyMathML||!jU()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(pd).map(i=>kn(i)?`
    ${i}
    `:`
    ${i}
    `).join("").replace(I3,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))}return t.replace(I3,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),kh=o(async(t,e)=>sr(await Ywe(t,e),e),"renderKatexSanitized"),tt={getRows:Pwe,sanitizeText:sr,sanitizeTextOrArray:$we,hasBreaks:zwe,splitBreaks:Gwe,lineBreakRegex:pd,removeScript:KU,getUrl:md,evaluate:vr,getMax:Uwe,getMin:Hwe}});var AA,CA,ZU,O3,JU,eH,_s,nc=N(()=>{"use strict";sG();qn();gr();pt();AA={body:'?',height:80,width:80},CA=new Map,ZU=new Map,O3=o(t=>{for(let e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(X.debug("Registering icon pack:",e.name),"loader"in e)ZU.set(e.name,e.loader);else if("icons"in e)CA.set(e.name,e.icons);else throw X.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),JU=o(async(t,e)=>{let r=r7(t,!0,e!==void 0);if(!r)throw new Error(`Invalid icon name: ${t}`);let n=r.prefix||e;if(!n)throw new Error(`Icon name must contain a prefix: ${t}`);let i=CA.get(n);if(!i){let s=ZU.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},CA.set(n,i)}catch(l){throw X.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=i7(i,r.name);if(!a)throw new Error(`Icon not found: ${t}`);return a},"getRegisteredIconData"),eH=o(async t=>{try{return await JU(t),!0}catch{return!1}},"isIconAvailable"),_s=o(async(t,e,r)=>{let n;try{n=await JU(t,e?.fallbackPrefix)}catch(s){X.error(s),n=AA}let i=s7(n,e),a=l7(o7(i.body),{...i.attributes,...r});return sr(a,Qt())},"getIconSVG")});function P3(t){for(var e=[],r=1;r{"use strict";o(P3,"dedent")});var B3,yd,tH,F3=N(()=>{"use strict";B3=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,yd=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,tH=/\s*%%.*\n/gm});var A0,DA=N(()=>{"use strict";A0=class extends Error{static{o(this,"UnknownDiagramError")}constructor(e){super(e),this.name="UnknownDiagramError"}}});var gu,_0,ev,LA,rH,vd=N(()=>{"use strict";pt();F3();DA();gu={},_0=o(function(t,e){t=t.replace(B3,"").replace(yd,"").replace(tH,` -`);for(let[r,{detector:n}]of Object.entries(gu))if(n(t,e))return r;throw new A0(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),ev=o((...t)=>{for(let{id:e,detector:r,loader:n}of t)LA(e,r,n)},"registerLazyLoadedDiagrams"),LA=o((t,e,r)=>{gu[t]&&X.warn(`Detector with key ${t} already exists. Overwriting.`),gu[t]={detector:e,loader:r},X.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),rH=o(t=>gu[t].loader,"getDiagramLoader")});var tv,nH,RA=N(()=>{"use strict";tv=(function(){var t=o(function(He,Le,Ie,Ne){for(Ie=Ie||{},Ne=He.length;Ne--;Ie[He[Ne]]=Le);return Ie},"o"),e=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],f=[1,67],d=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],T=[1,35],S=[1,36],w=[1,37],k=[1,38],A=[1,39],C=[1,40],R=[1,41],I=[1,42],L=[1,43],E=[1,44],D=[1,45],_=[1,46],O=[1,47],M=[1,48],P=[1,50],B=[1,51],F=[1,52],G=[1,53],$=[1,54],U=[1,55],j=[1,56],te=[1,57],Y=[1,58],oe=[1,59],J=[1,60],ue=[14,42],re=[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],ee=[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],Z=[1,82],K=[1,83],ae=[1,84],Q=[1,85],de=[12,14,42],ne=[12,14,33,42],Te=[12,14,33,42,76,77,79,80],q=[12,33],Ve=[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],pe={trace:o(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:o(function(Le,Ie,Ne,Ce,Fe,fe,xe){var W=fe.length-1;switch(Fe){case 3:Ce.setDirection("TB");break;case 4:Ce.setDirection("BT");break;case 5:Ce.setDirection("RL");break;case 6:Ce.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:Ce.setC4Type(fe[W-3]);break;case 19:Ce.setTitle(fe[W].substring(6)),this.$=fe[W].substring(6);break;case 20:Ce.setAccDescription(fe[W].substring(15)),this.$=fe[W].substring(15);break;case 21:this.$=fe[W].trim(),Ce.setTitle(this.$);break;case 22:case 23:this.$=fe[W].trim(),Ce.setAccDescription(this.$);break;case 28:fe[W].splice(2,0,"ENTERPRISE"),Ce.addPersonOrSystemBoundary(...fe[W]),this.$=fe[W];break;case 29:fe[W].splice(2,0,"SYSTEM"),Ce.addPersonOrSystemBoundary(...fe[W]),this.$=fe[W];break;case 30:Ce.addPersonOrSystemBoundary(...fe[W]),this.$=fe[W];break;case 31:fe[W].splice(2,0,"CONTAINER"),Ce.addContainerBoundary(...fe[W]),this.$=fe[W];break;case 32:Ce.addDeploymentNode("node",...fe[W]),this.$=fe[W];break;case 33:Ce.addDeploymentNode("nodeL",...fe[W]),this.$=fe[W];break;case 34:Ce.addDeploymentNode("nodeR",...fe[W]),this.$=fe[W];break;case 35:Ce.popBoundaryParseStack();break;case 39:Ce.addPersonOrSystem("person",...fe[W]),this.$=fe[W];break;case 40:Ce.addPersonOrSystem("external_person",...fe[W]),this.$=fe[W];break;case 41:Ce.addPersonOrSystem("system",...fe[W]),this.$=fe[W];break;case 42:Ce.addPersonOrSystem("system_db",...fe[W]),this.$=fe[W];break;case 43:Ce.addPersonOrSystem("system_queue",...fe[W]),this.$=fe[W];break;case 44:Ce.addPersonOrSystem("external_system",...fe[W]),this.$=fe[W];break;case 45:Ce.addPersonOrSystem("external_system_db",...fe[W]),this.$=fe[W];break;case 46:Ce.addPersonOrSystem("external_system_queue",...fe[W]),this.$=fe[W];break;case 47:Ce.addContainer("container",...fe[W]),this.$=fe[W];break;case 48:Ce.addContainer("container_db",...fe[W]),this.$=fe[W];break;case 49:Ce.addContainer("container_queue",...fe[W]),this.$=fe[W];break;case 50:Ce.addContainer("external_container",...fe[W]),this.$=fe[W];break;case 51:Ce.addContainer("external_container_db",...fe[W]),this.$=fe[W];break;case 52:Ce.addContainer("external_container_queue",...fe[W]),this.$=fe[W];break;case 53:Ce.addComponent("component",...fe[W]),this.$=fe[W];break;case 54:Ce.addComponent("component_db",...fe[W]),this.$=fe[W];break;case 55:Ce.addComponent("component_queue",...fe[W]),this.$=fe[W];break;case 56:Ce.addComponent("external_component",...fe[W]),this.$=fe[W];break;case 57:Ce.addComponent("external_component_db",...fe[W]),this.$=fe[W];break;case 58:Ce.addComponent("external_component_queue",...fe[W]),this.$=fe[W];break;case 60:Ce.addRel("rel",...fe[W]),this.$=fe[W];break;case 61:Ce.addRel("birel",...fe[W]),this.$=fe[W];break;case 62:Ce.addRel("rel_u",...fe[W]),this.$=fe[W];break;case 63:Ce.addRel("rel_d",...fe[W]),this.$=fe[W];break;case 64:Ce.addRel("rel_l",...fe[W]),this.$=fe[W];break;case 65:Ce.addRel("rel_r",...fe[W]),this.$=fe[W];break;case 66:Ce.addRel("rel_b",...fe[W]),this.$=fe[W];break;case 67:fe[W].splice(0,1),Ce.addRel("rel",...fe[W]),this.$=fe[W];break;case 68:Ce.updateElStyle("update_el_style",...fe[W]),this.$=fe[W];break;case 69:Ce.updateRelStyle("update_rel_style",...fe[W]),this.$=fe[W];break;case 70:Ce.updateLayoutConfig("update_layout_config",...fe[W]),this.$=fe[W];break;case 71:this.$=[fe[W]];break;case 72:fe[W].unshift(fe[W-1]),this.$=fe[W];break;case 73:case 75:this.$=fe[W].trim();break;case 74:let he={};he[fe[W-1].trim()]=fe[W].trim(),this.$=he;break;case 76:this.$="";break}},"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:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{13:70,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{13:71,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{13:72,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{13:73,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{14:[1,74]},t(ue,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J}),t(ue,[2,14]),t(re,[2,16],{12:[1,76]}),t(ue,[2,36],{12:[1,77]}),t(ee,[2,19]),t(ee,[2,20]),{25:[1,78]},{27:[1,79]},t(ee,[2,23]),{35:80,75:81,76:Z,77:K,79:ae,80:Q},{35:86,75:81,76:Z,77:K,79:ae,80:Q},{35:87,75:81,76:Z,77:K,79:ae,80:Q},{35:88,75:81,76:Z,77:K,79:ae,80:Q},{35:89,75:81,76:Z,77:K,79:ae,80:Q},{35:90,75:81,76:Z,77:K,79:ae,80:Q},{35:91,75:81,76:Z,77:K,79:ae,80:Q},{35:92,75:81,76:Z,77:K,79:ae,80:Q},{35:93,75:81,76:Z,77:K,79:ae,80:Q},{35:94,75:81,76:Z,77:K,79:ae,80:Q},{35:95,75:81,76:Z,77:K,79:ae,80:Q},{35:96,75:81,76:Z,77:K,79:ae,80:Q},{35:97,75:81,76:Z,77:K,79:ae,80:Q},{35:98,75:81,76:Z,77:K,79:ae,80:Q},{35:99,75:81,76:Z,77:K,79:ae,80:Q},{35:100,75:81,76:Z,77:K,79:ae,80:Q},{35:101,75:81,76:Z,77:K,79:ae,80:Q},{35:102,75:81,76:Z,77:K,79:ae,80:Q},{35:103,75:81,76:Z,77:K,79:ae,80:Q},{35:104,75:81,76:Z,77:K,79:ae,80:Q},t(de,[2,59]),{35:105,75:81,76:Z,77:K,79:ae,80:Q},{35:106,75:81,76:Z,77:K,79:ae,80:Q},{35:107,75:81,76:Z,77:K,79:ae,80:Q},{35:108,75:81,76:Z,77:K,79:ae,80:Q},{35:109,75:81,76:Z,77:K,79:ae,80:Q},{35:110,75:81,76:Z,77:K,79:ae,80:Q},{35:111,75:81,76:Z,77:K,79:ae,80:Q},{35:112,75:81,76:Z,77:K,79:ae,80:Q},{35:113,75:81,76:Z,77:K,79:ae,80:Q},{35:114,75:81,76:Z,77:K,79:ae,80:Q},{35:115,75:81,76:Z,77:K,79:ae,80:Q},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:f,40:d,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J},{12:[1,118],33:[1,117]},{35:119,75:81,76:Z,77:K,79:ae,80:Q},{35:120,75:81,76:Z,77:K,79:ae,80:Q},{35:121,75:81,76:Z,77:K,79:ae,80:Q},{35:122,75:81,76:Z,77:K,79:ae,80:Q},{35:123,75:81,76:Z,77:K,79:ae,80:Q},{35:124,75:81,76:Z,77:K,79:ae,80:Q},{35:125,75:81,76:Z,77:K,79:ae,80:Q},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(ue,[2,15]),t(re,[2,17],{21:22,19:130,22:e,23:r,24:n,26:i,28:a}),t(ue,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:r,24:n,26:i,28:a,34:s,36:l,37:u,38:h,39:f,40:d,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:S,52:w,53:k,54:A,55:C,56:R,57:I,58:L,59:E,60:D,61:_,62:O,63:M,64:P,65:B,66:F,67:G,68:$,69:U,70:j,71:te,72:Y,73:oe,74:J}),t(ee,[2,21]),t(ee,[2,22]),t(de,[2,39]),t(ne,[2,71],{75:81,35:132,76:Z,77:K,79:ae,80:Q}),t(Te,[2,73]),{78:[1,133]},t(Te,[2,75]),t(Te,[2,76]),t(de,[2,40]),t(de,[2,41]),t(de,[2,42]),t(de,[2,43]),t(de,[2,44]),t(de,[2,45]),t(de,[2,46]),t(de,[2,47]),t(de,[2,48]),t(de,[2,49]),t(de,[2,50]),t(de,[2,51]),t(de,[2,52]),t(de,[2,53]),t(de,[2,54]),t(de,[2,55]),t(de,[2,56]),t(de,[2,57]),t(de,[2,58]),t(de,[2,60]),t(de,[2,61]),t(de,[2,62]),t(de,[2,63]),t(de,[2,64]),t(de,[2,65]),t(de,[2,66]),t(de,[2,67]),t(de,[2,68]),t(de,[2,69]),t(de,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(q,[2,28]),t(q,[2,29]),t(q,[2,30]),t(q,[2,31]),t(q,[2,32]),t(q,[2,33]),t(q,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t(re,[2,18]),t(ue,[2,38]),t(ne,[2,72]),t(Te,[2,74]),t(de,[2,24]),t(de,[2,35]),t(Ve,[2,25]),t(Ve,[2,26],{12:[1,138]}),t(Ve,[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:o(function(Le,Ie){if(Ie.recoverable)this.trace(Le);else{var Ne=new Error(Le);throw Ne.hash=Ie,Ne}},"parseError"),parse:o(function(Le){var Ie=this,Ne=[0],Ce=[],Fe=[null],fe=[],xe=this.table,W="",he=0,z=0,se=0,le=2,ke=1,ve=fe.slice.call(arguments,1),ye=Object.create(this.lexer),Re={yy:{}};for(var _e in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_e)&&(Re.yy[_e]=this.yy[_e]);ye.setInput(Le,Re.yy),Re.yy.lexer=ye,Re.yy.parser=this,typeof ye.yylloc>"u"&&(ye.yylloc={});var ze=ye.yylloc;fe.push(ze);var Ke=ye.options&&ye.options.ranges;typeof Re.yy.parseError=="function"?this.parseError=Re.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xt(ft){Ne.length=Ne.length-2*ft,Fe.length=Fe.length-ft,fe.length=fe.length-ft}o(xt,"popStack");function We(){var ft;return ft=Ce.pop()||ye.lex()||ke,typeof ft!="number"&&(ft instanceof Array&&(Ce=ft,ft=Ce.pop()),ft=Ie.symbols_[ft]||ft),ft}o(We,"lex");for(var Oe,et,Ue,lt,Gt,vt,Lt={},dt,nt,bt,wt;;){if(Ue=Ne[Ne.length-1],this.defaultActions[Ue]?lt=this.defaultActions[Ue]:((Oe===null||typeof Oe>"u")&&(Oe=We()),lt=xe[Ue]&&xe[Ue][Oe]),typeof lt>"u"||!lt.length||!lt[0]){var yt="";wt=[];for(dt in xe[Ue])this.terminals_[dt]&&dt>le&&wt.push("'"+this.terminals_[dt]+"'");ye.showPosition?yt="Parse error on line "+(he+1)+`: -`+ye.showPosition()+` -Expecting `+wt.join(", ")+", got '"+(this.terminals_[Oe]||Oe)+"'":yt="Parse error on line "+(he+1)+": Unexpected "+(Oe==ke?"end of input":"'"+(this.terminals_[Oe]||Oe)+"'"),this.parseError(yt,{text:ye.match,token:this.terminals_[Oe]||Oe,line:ye.yylineno,loc:ze,expected:wt})}if(lt[0]instanceof Array&<.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ue+", token: "+Oe);switch(lt[0]){case 1:Ne.push(Oe),Fe.push(ye.yytext),fe.push(ye.yylloc),Ne.push(lt[1]),Oe=null,et?(Oe=et,et=null):(z=ye.yyleng,W=ye.yytext,he=ye.yylineno,ze=ye.yylloc,se>0&&se--);break;case 2:if(nt=this.productions_[lt[1]][1],Lt.$=Fe[Fe.length-nt],Lt._$={first_line:fe[fe.length-(nt||1)].first_line,last_line:fe[fe.length-1].last_line,first_column:fe[fe.length-(nt||1)].first_column,last_column:fe[fe.length-1].last_column},Ke&&(Lt._$.range=[fe[fe.length-(nt||1)].range[0],fe[fe.length-1].range[1]]),vt=this.performAction.apply(Lt,[W,z,he,Re.yy,lt[1],Fe,fe].concat(ve)),typeof vt<"u")return vt;nt&&(Ne=Ne.slice(0,-1*nt*2),Fe=Fe.slice(0,-1*nt),fe=fe.slice(0,-1*nt)),Ne.push(this.productions_[lt[1]][0]),Fe.push(Lt.$),fe.push(Lt._$),bt=xe[Ne[Ne.length-2]][Ne[Ne.length-1]],Ne.push(bt);break;case 3:return!0}}return!0},"parse")},Be=(function(){var He={EOF:1,parseError:o(function(Ie,Ne){if(this.yy.parser)this.yy.parser.parseError(Ie,Ne);else throw new Error(Ie)},"parseError"),setInput:o(function(Le,Ie){return this.yy=Ie||this.yy||{},this._input=Le,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Le=this._input[0];this.yytext+=Le,this.yyleng++,this.offset++,this.match+=Le,this.matched+=Le;var Ie=Le.match(/(?:\r\n?|\n).*/g);return Ie?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Le},"input"),unput:o(function(Le){var Ie=Le.length,Ne=Le.split(/(?:\r\n?|\n)/g);this._input=Le+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ie),this.offset-=Ie;var Ce=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ne.length-1&&(this.yylineno-=Ne.length-1);var Fe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ne?(Ne.length===Ce.length?this.yylloc.first_column:0)+Ce[Ce.length-Ne.length].length-Ne[0].length:this.yylloc.first_column-Ie},this.options.ranges&&(this.yylloc.range=[Fe[0],Fe[0]+this.yyleng-Ie]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Le){this.unput(this.match.slice(Le))},"less"),pastInput:o(function(){var Le=this.matched.substr(0,this.matched.length-this.match.length);return(Le.length>20?"...":"")+Le.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Le=this.match;return Le.length<20&&(Le+=this._input.substr(0,20-Le.length)),(Le.substr(0,20)+(Le.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Le=this.pastInput(),Ie=new Array(Le.length+1).join("-");return Le+this.upcomingInput()+` -`+Ie+"^"},"showPosition"),test_match:o(function(Le,Ie){var Ne,Ce,Fe;if(this.options.backtrack_lexer&&(Fe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Fe.yylloc.range=this.yylloc.range.slice(0))),Ce=Le[0].match(/(?:\r\n?|\n).*/g),Ce&&(this.yylineno+=Ce.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ce?Ce[Ce.length-1].length-Ce[Ce.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Le[0].length},this.yytext+=Le[0],this.match+=Le[0],this.matches=Le,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Le[0].length),this.matched+=Le[0],Ne=this.performAction.call(this,this.yy,this,Ie,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ne)return Ne;if(this._backtrack){for(var fe in Fe)this[fe]=Fe[fe];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Le,Ie,Ne,Ce;this._more||(this.yytext="",this.match="");for(var Fe=this._currentRules(),fe=0;feIe[0].length)){if(Ie=Ne,Ce=fe,this.options.backtrack_lexer){if(Le=this.test_match(Ne,Fe[fe]),Le!==!1)return Le;if(this._backtrack){Ie=!1;continue}else return!1}else if(!this.options.flex)break}return Ie?(Le=this.test_match(Ie,Fe[Ce]),Le!==!1?Le:!1):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:o(function(){var Ie=this.next();return Ie||this.lex()},"lex"),begin:o(function(Ie){this.conditionStack.push(Ie)},"begin"),popState:o(function(){var Ie=this.conditionStack.length-1;return Ie>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ie){return Ie=this.conditionStack.length-1-Math.abs(Ie||0),Ie>=0?this.conditionStack[Ie]:"INITIAL"},"topState"),pushState:o(function(Ie){this.begin(Ie)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ie,Ne,Ce,Fe){var fe=Fe;switch(Ce){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return He})();pe.lexer=Be;function Ye(){this.yy={}}return o(Ye,"Parser"),Ye.prototype=pe,pe.Parser=Ye,new Ye})();tv.parser=tv;nH=tv});var Xwe,jwe,mn,ic,Ei=N(()=>{"use strict";pt();Xwe=o(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),jwe=o(function(t,e,r){let 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"),mn=o(function(t,e,r,n){let i=jwe(e,r,n);Xwe(t,i)},"configureSvgSize"),ic=o(function(t,e,r,n){let i=e.node().getBBox(),a=i.width,s=i.height;X.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;X.info(`Graph bounds: ${l}x${u}`,t),l=a+r*2,u=s+r*2,X.info(`Calculated bounds: ${l}x${u}`),mn(e,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr("viewBox",h)},"setupGraphViewbox")});var $3,Kwe,iH,aH,NA=N(()=>{"use strict";pt();$3={},Kwe=o((t,e,r)=>{let n="";return t in $3&&$3[t]?n=$3[t](r):X.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"),iH=o((t,e)=>{e!==void 0&&($3[t]=e)},"addStylesForDiagram"),aH=Kwe});var rv={};dr(rv,{clear:()=>Sr,getAccDescription:()=>Or,getAccTitle:()=>Mr,getDiagramTitle:()=>Pr,setAccDescription:()=>Ir,setAccTitle:()=>Rr,setDiagramTitle:()=>$r});var MA,IA,OA,PA,Sr,Rr,Mr,Ir,Or,$r,Pr,ci=N(()=>{"use strict";gr();qn();MA="",IA="",OA="",PA=o(t=>sr(t,Qt()),"sanitizeText"),Sr=o(()=>{MA="",OA="",IA=""},"clear"),Rr=o(t=>{MA=PA(t).replace(/^\s+/g,"")},"setAccTitle"),Mr=o(()=>MA,"getAccTitle"),Ir=o(t=>{OA=PA(t).replace(/\n\s+/g,` -`)},"setAccDescription"),Or=o(()=>OA,"getAccDescription"),$r=o(t=>{IA=PA(t)},"setDiagramTitle"),Pr=o(()=>IA,"getDiagramTitle")});var sH,Qwe,ge,nv,G3,iv,FA,Zwe,z3,xd,av,BA,Xt=N(()=>{"use strict";vd();pt();qn();gr();Ei();NA();ci();sH=X,Qwe=Dy,ge=Qt,nv=n3,G3=gh,iv=o(t=>sr(t,ge()),"sanitizeText"),FA=ic,Zwe=o(()=>rv,"getCommonDb"),z3={},xd=o((t,e,r)=>{z3[t]&&sH.warn(`Diagram with id ${t} already registered. Overwriting.`),z3[t]=e,r&&LA(t,r),iH(t,e.styles),e.injectUtils?.(sH,Qwe,ge,iv,FA,Zwe(),()=>{})},"registerDiagram"),av=o(t=>{if(t in z3)return z3[t];throw new BA(t)},"getDiagram"),BA=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(e){super(`Diagram ${e} not found.`)}}});var ml,Eh,ns,pl,ac,sv,$A,zA,V3,U3,oH,Jwe,eke,tke,rke,nke,ike,ake,ske,oke,lke,cke,uke,hke,fke,dke,pke,mke,lH,gke,yke,cH,vke,xke,bke,Tke,Sh,wke,kke,Eke,Ske,Cke,ov,GA=N(()=>{"use strict";Xt();gr();ci();ml=[],Eh=[""],ns="global",pl="",ac=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],sv=[],$A="",zA=!1,V3=4,U3=2,Jwe=o(function(){return oH},"getC4Type"),eke=o(function(t){oH=sr(t,ge())},"setC4Type"),tke=o(function(t,e,r,n,i,a,s,l,u){if(t==null||e===void 0||e===null||r===void 0||r===null||n===void 0||n===null)return;let h={},f=sv.find(d=>d.from===e&&d.to===r);if(f?h=f:sv.push(h),h.type=t,h.from=e,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[d,p]=Object.entries(i)[0];h[d]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[d,p]=Object.entries(a)[0];h[d]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[d,p]=Object.entries(s)[0];h[d]=p}else h.sprite=s;if(typeof l=="object"){let[d,p]=Object.entries(l)[0];h[d]=p}else h.tags=l;if(typeof u=="object"){let[d,p]=Object.entries(u)[0];h[d]=p}else h.link=u;h.wrap=Sh()},"addRel"),rke=o(function(t,e,r,n,i,a,s){if(e===null||r===null)return;let l={},u=ml.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,ml.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.descr={text:n};if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]=f}else l.sprite=i;if(typeof a=="object"){let[h,f]=Object.entries(a)[0];l[h]=f}else l.tags=a;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=ns,l.wrap=Sh()},"addPersonOrSystem"),nke=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ml.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ml.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=Sh(),u.typeC4Shape={text:t},u.parentBoundary=ns},"addContainer"),ike=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ml.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ml.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]=d}else u.sprite=a;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=Sh(),u.typeC4Shape={text:t},u.parentBoundary=ns},"addComponent"),ake=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=ac.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,ac.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=ns,a.wrap=Sh(),pl=ns,ns=t,Eh.push(pl)},"addPersonOrSystemBoundary"),ske=o(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=ac.find(l=>l.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,ac.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=ns,a.wrap=Sh(),pl=ns,ns=t,Eh.push(pl)},"addContainerBoundary"),oke=o(function(t,e,r,n,i,a,s,l){if(e===null||r===null)return;let u={},h=ac.find(f=>f.alias===e);if(h&&e===h.alias?u=h:(u.alias=e,ac.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[f,d]=Object.entries(n)[0];u[f]={text:d}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.descr={text:i};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.tags=s;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.nodeType=t,u.parentBoundary=ns,u.wrap=Sh(),pl=ns,ns=e,Eh.push(pl)},"addDeploymentNode"),lke=o(function(){ns=pl,Eh.pop(),pl=Eh.pop(),Eh.push(pl)},"popBoundaryParseStack"),cke=o(function(t,e,r,n,i,a,s,l,u,h,f){let d=ml.find(p=>p.alias===e);if(!(d===void 0&&(d=ac.find(p=>p.alias===e),d===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];d[p]=m}else d.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];d[p]=m}else d.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];d[p]=m}else d.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];d[p]=m}else d.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];d[p]=m}else d.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];d[p]=m}else d.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];d[p]=m}else d.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];d[p]=m}else d.legendText=h;if(f!=null)if(typeof f=="object"){let[p,m]=Object.entries(f)[0];d[p]=m}else d.legendSprite=f}},"updateElStyle"),uke=o(function(t,e,r,n,i,a,s){let l=sv.find(u=>u.from===e&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),hke=o(function(t,e,r){let n=V3,i=U3;if(typeof e=="object"){let a=Object.values(e)[0];n=parseInt(a)}else n=parseInt(e);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(V3=n),i>=1&&(U3=i)},"updateLayoutConfig"),fke=o(function(){return V3},"getC4ShapeInRow"),dke=o(function(){return U3},"getC4BoundaryInRow"),pke=o(function(){return ns},"getCurrentBoundaryParse"),mke=o(function(){return pl},"getParentBoundaryParse"),lH=o(function(t){return t==null?ml:ml.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),gke=o(function(t){return ml.find(e=>e.alias===t)},"getC4Shape"),yke=o(function(t){return Object.keys(lH(t))},"getC4ShapeKeys"),cH=o(function(t){return t==null?ac:ac.filter(e=>e.parentBoundary===t)},"getBoundaries"),vke=cH,xke=o(function(){return sv},"getRels"),bke=o(function(){return $A},"getTitle"),Tke=o(function(t){zA=t},"setWrap"),Sh=o(function(){return zA},"autoWrap"),wke=o(function(){ml=[],ac=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],pl="",ns="global",Eh=[""],sv=[],Eh=[""],$A="",zA=!1,V3=4,U3=2},"clear"),kke={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},Eke={FILLED:0,OPEN:1},Ske={LEFTOF:0,RIGHTOF:1,OVER:2},Cke=o(function(t){$A=sr(t,ge())},"setTitle"),ov={addPersonOrSystem:rke,addPersonOrSystemBoundary:ake,addContainer:nke,addContainerBoundary:ske,addComponent:ike,addDeploymentNode:oke,popBoundaryParseStack:lke,addRel:tke,updateElStyle:cke,updateRelStyle:uke,updateLayoutConfig:hke,autoWrap:Sh,setWrap:Tke,getC4ShapeArray:lH,getC4Shape:gke,getC4ShapeKeys:yke,getBoundaries:cH,getBoundarys:vke,getCurrentBoundaryParse:pke,getParentBoundaryParse:mke,getRels:xke,getTitle:bke,getC4Type:Jwe,getC4ShapeInRow:fke,getC4BoundaryInRow:dke,setAccTitle:Rr,getAccTitle:Mr,getAccDescription:Or,setAccDescription:Ir,getConfig:o(()=>ge().c4,"getConfig"),clear:wke,LINETYPE:kke,ARROWTYPE:Eke,PLACEMENT:Ske,setTitle:Cke,setC4Type:eke}});function bd(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}var VA=N(()=>{"use strict";o(bd,"ascending")});function UA(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}var uH=N(()=>{"use strict";o(UA,"descending")});function Td(t){let e,r,n;t.length!==2?(e=bd,r=o((l,u)=>bd(t(l),u),"compare2"),n=o((l,u)=>t(l)-u,"delta")):(e=t===bd||t===UA?t:Ake,r=t,n=t);function i(l,u,h=0,f=l.length){if(h>>1;r(l[d],u)<0?h=d+1:f=d}while(h>>1;r(l[d],u)<=0?h=d+1:f=d}while(hh&&n(l[d-1],u)>-n(l[d],u)?d-1:d}return o(s,"center"),{left:i,center:s,right:a}}function Ake(){return 0}var HA=N(()=>{"use strict";VA();uH();o(Td,"bisector");o(Ake,"zero")});function qA(t){return t===null?NaN:+t}var hH=N(()=>{"use strict";o(qA,"number")});var fH,dH,_ke,Dke,WA,pH=N(()=>{"use strict";VA();HA();hH();fH=Td(bd),dH=fH.right,_ke=fH.left,Dke=Td(qA).center,WA=dH});function mH({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function Lke({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function Rke({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function Nke(t){return t!==null&&typeof t=="object"?t.valueOf():t}var D0,gH=N(()=>{"use strict";D0=class extends Map{static{o(this,"InternMap")}constructor(e,r=Nke){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(let[n,i]of e)this.set(n,i)}get(e){return super.get(mH(this,e))}has(e){return super.has(mH(this,e))}set(e,r){return super.set(Lke(this,e),r)}delete(e){return super.delete(Rke(this,e))}};o(mH,"intern_get");o(Lke,"intern_set");o(Rke,"intern_delete");o(Nke,"keyof")});function H3(t,e,r){let n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=Mke?10:a>=Ike?5:a>=Oke?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(t*h),u=Math.round(e*h),l/he&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(t/h),u=Math.round(e/h),l*he&&--u),u0))return[];if(t===e)return[t];let n=e=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h{"use strict";Mke=Math.sqrt(50),Ike=Math.sqrt(10),Oke=Math.sqrt(2);o(H3,"tickSpec");o(q3,"ticks");o(lv,"tickIncrement");o(L0,"tickStep")});function W3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var vH=N(()=>{"use strict";o(W3,"max")});function Y3(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var xH=N(()=>{"use strict";o(Y3,"min")});function X3(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=Math.max(0,Math.ceil((e-t)/r))|0,a=new Array(i);++n{"use strict";o(X3,"range")});var Ch=N(()=>{"use strict";pH();HA();vH();xH();bH();yH();gH()});function YA(t){return t}var TH=N(()=>{"use strict";o(YA,"default")});function Pke(t){return"translate("+t+",0)"}function Bke(t){return"translate(0,"+t+")"}function Fke(t){return e=>+t(e)}function $ke(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function zke(){return!this.__axis}function kH(t,e){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=t===K3||t===j3?-1:1,f=t===j3||t===XA?"x":"y",d=t===K3||t===jA?Pke:Bke;function p(m){var g=n??(e.ticks?e.ticks.apply(e,r):e.domain()),y=i??(e.tickFormat?e.tickFormat.apply(e,r):YA),v=Math.max(a,0)+l,x=e.range(),b=+x[0]+u,T=+x[x.length-1]+u,S=(e.bandwidth?$ke:Fke)(e.copy(),u),w=m.selection?m.selection():m,k=w.selectAll(".domain").data([null]),A=w.selectAll(".tick").data(g,e).order(),C=A.exit(),R=A.enter().append("g").attr("class","tick"),I=A.select("line"),L=A.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(R),I=I.merge(R.append("line").attr("stroke","currentColor").attr(f+"2",h*a)),L=L.merge(R.append("text").attr("fill","currentColor").attr(f,h*v).attr("dy",t===K3?"0em":t===jA?"0.71em":"0.32em")),m!==w&&(k=k.transition(m),A=A.transition(m),I=I.transition(m),L=L.transition(m),C=C.transition(m).attr("opacity",wH).attr("transform",function(E){return isFinite(E=S(E))?d(E+u):this.getAttribute("transform")}),R.attr("opacity",wH).attr("transform",function(E){var D=this.parentNode.__axis;return d((D&&isFinite(D=D(E))?D:S(E))+u)})),C.remove(),k.attr("d",t===j3||t===XA?s?"M"+h*s+","+b+"H"+u+"V"+T+"H"+h*s:"M"+u+","+b+"V"+T:s?"M"+b+","+h*s+"V"+u+"H"+T+"V"+h*s:"M"+b+","+u+"H"+T),A.attr("opacity",1).attr("transform",function(E){return d(S(E)+u)}),I.attr(f+"2",h*a),L.attr(f,h*v).text(y),w.filter(zke).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===XA?"start":t===j3?"end":"middle"),w.each(function(){this.__axis=S})}return o(p,"axis"),p.scale=function(m){return arguments.length?(e=m,p):e},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function KA(t){return kH(K3,t)}function QA(t){return kH(jA,t)}var K3,XA,jA,j3,wH,EH=N(()=>{"use strict";TH();K3=1,XA=2,jA=3,j3=4,wH=1e-6;o(Pke,"translateX");o(Bke,"translateY");o(Fke,"number");o($ke,"center");o(zke,"entering");o(kH,"axis");o(KA,"axisTop");o(QA,"axisBottom")});var SH=N(()=>{"use strict";EH()});function AH(){for(var t=0,e=arguments.length,r={},n;t=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function Uke(t,e){for(var r=0,n=t.length,i;r{"use strict";Gke={value:o(()=>{},"value")};o(AH,"dispatch");o(Q3,"Dispatch");o(Vke,"parseTypenames");Q3.prototype=AH.prototype={constructor:Q3,on:o(function(t,e){var r=this._,n=Vke(t+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n{"use strict";_H()});var Z3,e8,t8=N(()=>{"use strict";Z3="http://www.w3.org/1999/xhtml",e8={svg:"http://www.w3.org/2000/svg",xhtml:Z3,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function sc(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),e8.hasOwnProperty(e)?{space:e8[e],local:t}:t}var J3=N(()=>{"use strict";t8();o(sc,"default")});function Hke(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===Z3&&e.documentElement.namespaceURI===Z3?e.createElement(t):e.createElementNS(r,t)}}function qke(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function cv(t){var e=sc(t);return(e.local?qke:Hke)(e)}var r8=N(()=>{"use strict";J3();t8();o(Hke,"creatorInherit");o(qke,"creatorFixed");o(cv,"default")});function Wke(){}function Ah(t){return t==null?Wke:function(){return this.querySelector(t)}}var e5=N(()=>{"use strict";o(Wke,"none");o(Ah,"default")});function n8(t){typeof t!="function"&&(t=Ah(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";gl();e5();o(n8,"default")});function i8(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}var LH=N(()=>{"use strict";o(i8,"array")});function Yke(){return[]}function R0(t){return t==null?Yke:function(){return this.querySelectorAll(t)}}var a8=N(()=>{"use strict";o(Yke,"empty");o(R0,"default")});function Xke(t){return function(){return i8(t.apply(this,arguments))}}function s8(t){typeof t=="function"?t=Xke(t):t=R0(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a{"use strict";gl();LH();a8();o(Xke,"arrayAll");o(s8,"default")});function N0(t){return function(){return this.matches(t)}}function t5(t){return function(e){return e.matches(t)}}var uv=N(()=>{"use strict";o(N0,"default");o(t5,"childMatcher")});function Kke(t){return function(){return jke.call(this.children,t)}}function Qke(){return this.firstElementChild}function o8(t){return this.select(t==null?Qke:Kke(typeof t=="function"?t:t5(t)))}var jke,NH=N(()=>{"use strict";uv();jke=Array.prototype.find;o(Kke,"childFind");o(Qke,"childFirst");o(o8,"default")});function Jke(){return Array.from(this.children)}function eEe(t){return function(){return Zke.call(this.children,t)}}function l8(t){return this.selectAll(t==null?Jke:eEe(typeof t=="function"?t:t5(t)))}var Zke,MH=N(()=>{"use strict";uv();Zke=Array.prototype.filter;o(Jke,"children");o(eEe,"childrenFilter");o(l8,"default")});function c8(t){typeof t!="function"&&(t=N0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";gl();uv();o(c8,"default")});function hv(t){return new Array(t.length)}var u8=N(()=>{"use strict";o(hv,"default")});function h8(){return new ui(this._enter||this._groups.map(hv),this._parents)}function fv(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}var f8=N(()=>{"use strict";u8();gl();o(h8,"default");o(fv,"EnterNode");fv.prototype={constructor:fv,appendChild:o(function(t){return this._parent.insertBefore(t,this._next)},"appendChild"),insertBefore:o(function(t,e){return this._parent.insertBefore(t,e)},"insertBefore"),querySelector:o(function(t){return this._parent.querySelector(t)},"querySelector"),querySelectorAll:o(function(t){return this._parent.querySelectorAll(t)},"querySelectorAll")}});function d8(t){return function(){return t}}var OH=N(()=>{"use strict";o(d8,"default")});function tEe(t,e,r,n,i,a){for(var s=0,l,u=e.length,h=a.length;s=T&&(T=b+1);!(w=v[T])&&++T{"use strict";gl();f8();OH();o(tEe,"bindIndex");o(rEe,"bindKey");o(nEe,"datum");o(p8,"default");o(iEe,"arraylike")});function m8(){return new ui(this._exit||this._groups.map(hv),this._parents)}var BH=N(()=>{"use strict";u8();gl();o(m8,"default")});function g8(t,e,r){var n=this.enter(),i=this,a=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var FH=N(()=>{"use strict";o(g8,"default")});function y8(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,i=r.length,a=n.length,s=Math.min(i,a),l=new Array(i),u=0;u{"use strict";gl();o(y8,"default")});function v8(){for(var t=this._groups,e=-1,r=t.length;++e=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var zH=N(()=>{"use strict";o(v8,"default")});function x8(t){t||(t=aEe);function e(d,p){return d&&p?t(d.__data__,p.__data__):!d-!p}o(e,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var GH=N(()=>{"use strict";gl();o(x8,"default");o(aEe,"ascending")});function b8(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}var VH=N(()=>{"use strict";o(b8,"default")});function T8(){return Array.from(this)}var UH=N(()=>{"use strict";o(T8,"default")});function w8(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(w8,"default")});function k8(){let t=0;for(let e of this)++t;return t}var qH=N(()=>{"use strict";o(k8,"default")});function E8(){return!this.node()}var WH=N(()=>{"use strict";o(E8,"default")});function S8(t){for(var e=this._groups,r=0,n=e.length;r{"use strict";o(S8,"default")});function sEe(t){return function(){this.removeAttribute(t)}}function oEe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function lEe(t,e){return function(){this.setAttribute(t,e)}}function cEe(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function uEe(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function hEe(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function C8(t,e){var r=sc(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?oEe:sEe:typeof e=="function"?r.local?hEe:uEe:r.local?cEe:lEe)(r,e))}var XH=N(()=>{"use strict";J3();o(sEe,"attrRemove");o(oEe,"attrRemoveNS");o(lEe,"attrConstant");o(cEe,"attrConstantNS");o(uEe,"attrFunction");o(hEe,"attrFunctionNS");o(C8,"default")});function dv(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}var A8=N(()=>{"use strict";o(dv,"default")});function fEe(t){return function(){this.style.removeProperty(t)}}function dEe(t,e,r){return function(){this.style.setProperty(t,e,r)}}function pEe(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function _8(t,e,r){return arguments.length>1?this.each((e==null?fEe:typeof e=="function"?pEe:dEe)(t,e,r??"")):_h(this.node(),t)}function _h(t,e){return t.style.getPropertyValue(e)||dv(t).getComputedStyle(t,null).getPropertyValue(e)}var D8=N(()=>{"use strict";A8();o(fEe,"styleRemove");o(dEe,"styleConstant");o(pEe,"styleFunction");o(_8,"default");o(_h,"styleValue")});function mEe(t){return function(){delete this[t]}}function gEe(t,e){return function(){this[t]=e}}function yEe(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function L8(t,e){return arguments.length>1?this.each((e==null?mEe:typeof e=="function"?yEe:gEe)(t,e)):this.node()[t]}var jH=N(()=>{"use strict";o(mEe,"propertyRemove");o(gEe,"propertyConstant");o(yEe,"propertyFunction");o(L8,"default")});function KH(t){return t.trim().split(/^|\s+/)}function R8(t){return t.classList||new QH(t)}function QH(t){this._node=t,this._names=KH(t.getAttribute("class")||"")}function ZH(t,e){for(var r=R8(t),n=-1,i=e.length;++n{"use strict";o(KH,"classArray");o(R8,"classList");o(QH,"ClassList");QH.prototype={add:o(function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(t){return this._names.indexOf(t)>=0},"contains")};o(ZH,"classedAdd");o(JH,"classedRemove");o(vEe,"classedTrue");o(xEe,"classedFalse");o(bEe,"classedFunction");o(N8,"default")});function TEe(){this.textContent=""}function wEe(t){return function(){this.textContent=t}}function kEe(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function M8(t){return arguments.length?this.each(t==null?TEe:(typeof t=="function"?kEe:wEe)(t)):this.node().textContent}var tq=N(()=>{"use strict";o(TEe,"textRemove");o(wEe,"textConstant");o(kEe,"textFunction");o(M8,"default")});function EEe(){this.innerHTML=""}function SEe(t){return function(){this.innerHTML=t}}function CEe(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function I8(t){return arguments.length?this.each(t==null?EEe:(typeof t=="function"?CEe:SEe)(t)):this.node().innerHTML}var rq=N(()=>{"use strict";o(EEe,"htmlRemove");o(SEe,"htmlConstant");o(CEe,"htmlFunction");o(I8,"default")});function AEe(){this.nextSibling&&this.parentNode.appendChild(this)}function O8(){return this.each(AEe)}var nq=N(()=>{"use strict";o(AEe,"raise");o(O8,"default")});function _Ee(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function P8(){return this.each(_Ee)}var iq=N(()=>{"use strict";o(_Ee,"lower");o(P8,"default")});function B8(t){var e=typeof t=="function"?t:cv(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}var aq=N(()=>{"use strict";r8();o(B8,"default")});function DEe(){return null}function F8(t,e){var r=typeof t=="function"?t:cv(t),n=e==null?DEe:typeof e=="function"?e:Ah(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var sq=N(()=>{"use strict";r8();e5();o(DEe,"constantNull");o(F8,"default")});function LEe(){var t=this.parentNode;t&&t.removeChild(this)}function $8(){return this.each(LEe)}var oq=N(()=>{"use strict";o(LEe,"remove");o($8,"default")});function REe(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function NEe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function z8(t){return this.select(t?NEe:REe)}var lq=N(()=>{"use strict";o(REe,"selection_cloneShallow");o(NEe,"selection_cloneDeep");o(z8,"default")});function G8(t){return arguments.length?this.property("__data__",t):this.node().__data__}var cq=N(()=>{"use strict";o(G8,"default")});function MEe(t){return function(e){t.call(this,e,this.__data__)}}function IEe(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function OEe(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,i=e.length,a;r{"use strict";o(MEe,"contextListener");o(IEe,"parseTypenames");o(OEe,"onRemove");o(PEe,"onAdd");o(V8,"default")});function hq(t,e,r){var n=dv(t),i=n.CustomEvent;typeof i=="function"?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 BEe(t,e){return function(){return hq(this,t,e)}}function FEe(t,e){return function(){return hq(this,t,e.apply(this,arguments))}}function U8(t,e){return this.each((typeof e=="function"?FEe:BEe)(t,e))}var fq=N(()=>{"use strict";A8();o(hq,"dispatchEvent");o(BEe,"dispatchConstant");o(FEe,"dispatchFunction");o(U8,"default")});function*H8(){for(var t=this._groups,e=0,r=t.length;e{"use strict";o(H8,"default")});function ui(t,e){this._groups=t,this._parents=e}function pq(){return new ui([[document.documentElement]],q8)}function $Ee(){return this}var q8,yu,gl=N(()=>{"use strict";DH();RH();NH();MH();IH();PH();f8();BH();FH();$H();zH();GH();VH();UH();HH();qH();WH();YH();XH();D8();jH();eq();tq();rq();nq();iq();aq();sq();oq();lq();cq();uq();fq();dq();q8=[null];o(ui,"Selection");o(pq,"selection");o($Ee,"selection_selection");ui.prototype=pq.prototype={constructor:ui,select:n8,selectAll:s8,selectChild:o8,selectChildren:l8,filter:c8,data:p8,enter:h8,exit:m8,join:g8,merge:y8,selection:$Ee,order:v8,sort:x8,call:b8,nodes:T8,node:w8,size:k8,empty:E8,each:S8,attr:C8,style:_8,property:L8,classed:N8,text:M8,html:I8,raise:O8,lower:P8,append:B8,insert:F8,remove:$8,clone:z8,datum:G8,on:V8,dispatch:U8,[Symbol.iterator]:H8};yu=pq});function qe(t){return typeof t=="string"?new ui([[document.querySelector(t)]],[document.documentElement]):new ui([[t]],q8)}var mq=N(()=>{"use strict";gl();o(qe,"default")});var yl=N(()=>{"use strict";uv();J3();mq();gl();e5();a8();D8()});var gq=N(()=>{"use strict"});function Dh(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function M0(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}var W8=N(()=>{"use strict";o(Dh,"default");o(M0,"extend")});function Lh(){}function vq(){return this.rgb().formatHex()}function YEe(){return this.rgb().formatHex8()}function XEe(){return Sq(this).formatHsl()}function xq(){return this.rgb().formatRgb()}function xl(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=zEe.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?bq(e):r===3?new oa(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?r5(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?r5(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=GEe.exec(t))?new oa(e[1],e[2],e[3],1):(e=VEe.exec(t))?new oa(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=UEe.exec(t))?r5(e[1],e[2],e[3],e[4]):(e=HEe.exec(t))?r5(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=qEe.exec(t))?kq(e[1],e[2]/100,e[3]/100,1):(e=WEe.exec(t))?kq(e[1],e[2]/100,e[3]/100,e[4]):yq.hasOwnProperty(t)?bq(yq[t]):t==="transparent"?new oa(NaN,NaN,NaN,0):null}function bq(t){return new oa(t>>16&255,t>>8&255,t&255,1)}function r5(t,e,r,n){return n<=0&&(t=e=r=NaN),new oa(t,e,r,n)}function X8(t){return t instanceof Lh||(t=xl(t)),t?(t=t.rgb(),new oa(t.r,t.g,t.b,t.opacity)):new oa}function O0(t,e,r,n){return arguments.length===1?X8(t):new oa(t,e,r,n??1)}function oa(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function Tq(){return`#${wd(this.r)}${wd(this.g)}${wd(this.b)}`}function jEe(){return`#${wd(this.r)}${wd(this.g)}${wd(this.b)}${wd((isNaN(this.opacity)?1:this.opacity)*255)}`}function wq(){let t=a5(this.opacity);return`${t===1?"rgb(":"rgba("}${kd(this.r)}, ${kd(this.g)}, ${kd(this.b)}${t===1?")":`, ${t})`}`}function a5(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function kd(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function wd(t){return t=kd(t),(t<16?"0":"")+t.toString(16)}function kq(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new vl(t,e,r,n)}function Sq(t){if(t instanceof vl)return new vl(t.h,t.s,t.l,t.opacity);if(t instanceof Lh||(t=xl(t)),!t)return new vl;if(t instanceof vl)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),s=NaN,l=a-i,u=(a+i)/2;return l?(e===a?s=(r-n)/l+(r0&&u<1?0:s,new vl(s,l,u,t.opacity)}function Cq(t,e,r,n){return arguments.length===1?Sq(t):new vl(t,e,r,n??1)}function vl(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function Eq(t){return t=(t||0)%360,t<0?t+360:t}function n5(t){return Math.max(0,Math.min(1,t||0))}function Y8(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}var pv,i5,I0,mv,oc,zEe,GEe,VEe,UEe,HEe,qEe,WEe,yq,j8=N(()=>{"use strict";W8();o(Lh,"Color");pv=.7,i5=1/pv,I0="\\s*([+-]?\\d+)\\s*",mv="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",oc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",zEe=/^#([0-9a-f]{3,8})$/,GEe=new RegExp(`^rgb\\(${I0},${I0},${I0}\\)$`),VEe=new RegExp(`^rgb\\(${oc},${oc},${oc}\\)$`),UEe=new RegExp(`^rgba\\(${I0},${I0},${I0},${mv}\\)$`),HEe=new RegExp(`^rgba\\(${oc},${oc},${oc},${mv}\\)$`),qEe=new RegExp(`^hsl\\(${mv},${oc},${oc}\\)$`),WEe=new RegExp(`^hsla\\(${mv},${oc},${oc},${mv}\\)$`),yq={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};Dh(Lh,xl,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:vq,formatHex:vq,formatHex8:YEe,formatHsl:XEe,formatRgb:xq,toString:xq});o(vq,"color_formatHex");o(YEe,"color_formatHex8");o(XEe,"color_formatHsl");o(xq,"color_formatRgb");o(xl,"color");o(bq,"rgbn");o(r5,"rgba");o(X8,"rgbConvert");o(O0,"rgb");o(oa,"Rgb");Dh(oa,O0,M0(Lh,{brighter(t){return t=t==null?i5:Math.pow(i5,t),new oa(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?pv:Math.pow(pv,t),new oa(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new oa(kd(this.r),kd(this.g),kd(this.b),a5(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:Tq,formatHex:Tq,formatHex8:jEe,formatRgb:wq,toString:wq}));o(Tq,"rgb_formatHex");o(jEe,"rgb_formatHex8");o(wq,"rgb_formatRgb");o(a5,"clampa");o(kd,"clampi");o(wd,"hex");o(kq,"hsla");o(Sq,"hslConvert");o(Cq,"hsl");o(vl,"Hsl");Dh(vl,Cq,M0(Lh,{brighter(t){return t=t==null?i5:Math.pow(i5,t),new vl(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?pv:Math.pow(pv,t),new vl(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new oa(Y8(t>=240?t-240:t+120,i,n),Y8(t,i,n),Y8(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new vl(Eq(this.h),n5(this.s),n5(this.l),a5(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(){let t=a5(this.opacity);return`${t===1?"hsl(":"hsla("}${Eq(this.h)}, ${n5(this.s)*100}%, ${n5(this.l)*100}%${t===1?")":`, ${t})`}`}}));o(Eq,"clamph");o(n5,"clampt");o(Y8,"hsl2rgb")});var Aq,_q,Dq=N(()=>{"use strict";Aq=Math.PI/180,_q=180/Math.PI});function Oq(t){if(t instanceof lc)return new lc(t.l,t.a,t.b,t.opacity);if(t instanceof vu)return Pq(t);t instanceof oa||(t=X8(t));var e=J8(t.r),r=J8(t.g),n=J8(t.b),i=K8((.2225045*e+.7168786*r+.0606169*n)/Rq),a,s;return e===r&&r===n?a=s=i:(a=K8((.4360747*e+.3850649*r+.1430804*n)/Lq),s=K8((.0139322*e+.0971045*r+.7141733*n)/Nq)),new lc(116*i-16,500*(a-i),200*(i-s),t.opacity)}function e_(t,e,r,n){return arguments.length===1?Oq(t):new lc(t,e,r,n??1)}function lc(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function K8(t){return t>KEe?Math.pow(t,1/3):t/Iq+Mq}function Q8(t){return t>P0?t*t*t:Iq*(t-Mq)}function Z8(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function J8(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function QEe(t){if(t instanceof vu)return new vu(t.h,t.c,t.l,t.opacity);if(t instanceof lc||(t=Oq(t)),t.a===0&&t.b===0)return new vu(NaN,0{"use strict";W8();j8();Dq();s5=18,Lq=.96422,Rq=1,Nq=.82521,Mq=4/29,P0=6/29,Iq=3*P0*P0,KEe=P0*P0*P0;o(Oq,"labConvert");o(e_,"lab");o(lc,"Lab");Dh(lc,e_,M0(Lh,{brighter(t){return new lc(this.l+s5*(t??1),this.a,this.b,this.opacity)},darker(t){return new lc(this.l-s5*(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 e=Lq*Q8(e),t=Rq*Q8(t),r=Nq*Q8(r),new oa(Z8(3.1338561*e-1.6168667*t-.4906146*r),Z8(-.9787684*e+1.9161415*t+.033454*r),Z8(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));o(K8,"xyz2lab");o(Q8,"lab2xyz");o(Z8,"lrgb2rgb");o(J8,"rgb2lrgb");o(QEe,"hclConvert");o(gv,"hcl");o(vu,"Hcl");o(Pq,"hcl2lab");Dh(vu,gv,M0(Lh,{brighter(t){return new vu(this.h,this.c,this.l+s5*(t??1),this.opacity)},darker(t){return new vu(this.h,this.c,this.l-s5*(t??1),this.opacity)},rgb(){return Pq(this).rgb()}}))});var B0=N(()=>{"use strict";j8();Bq()});function t_(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 r_(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],s=n>0?t[n-1]:2*i-a,l=n{"use strict";o(t_,"basis");o(r_,"default")});function i_(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),i=t[(n+e-1)%e],a=t[n%e],s=t[(n+1)%e],l=t[(n+2)%e];return t_((r-n/e)*e,i,a,s,l)}}var Fq=N(()=>{"use strict";n_();o(i_,"default")});var F0,a_=N(()=>{"use strict";F0=o(t=>()=>t,"default")});function $q(t,e){return function(r){return t+r*e}}function ZEe(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function zq(t,e){var r=e-t;return r?$q(t,r>180||r<-180?r-360*Math.round(r/360):r):F0(isNaN(t)?e:t)}function Gq(t){return(t=+t)==1?xu:function(e,r){return r-e?ZEe(e,r,t):F0(isNaN(e)?r:e)}}function xu(t,e){var r=e-t;return r?$q(t,r):F0(isNaN(t)?e:t)}var s_=N(()=>{"use strict";a_();o($q,"linear");o(ZEe,"exponential");o(zq,"hue");o(Gq,"gamma");o(xu,"nogamma")});function Vq(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s{"use strict";B0();n_();Fq();s_();Ed=o((function t(e){var r=Gq(e);function n(i,a){var s=r((i=O0(i)).r,(a=O0(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=xu(i.opacity,a.opacity);return function(f){return i.r=s(f),i.g=l(f),i.b=u(f),i.opacity=h(f),i+""}}return o(n,"rgb"),n.gamma=t,n}),"rgbGamma")(1);o(Vq,"rgbSpline");JEe=Vq(r_),eSe=Vq(i_)});function l_(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(a){for(i=0;i{"use strict";o(l_,"default");o(Uq,"isNumberArray")});function qq(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s{"use strict";o5();o(qq,"genericArray")});function c_(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}var Yq=N(()=>{"use strict";o(c_,"default")});function Wi(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var yv=N(()=>{"use strict";o(Wi,"default")});function u_(t,e){var r={},n={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?r[i]=Rh(t[i],e[i]):n[i]=e[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var Xq=N(()=>{"use strict";o5();o(u_,"default")});function tSe(t){return function(){return t}}function rSe(t){return function(e){return t(e)+""}}function $0(t,e){var r=f_.lastIndex=h_.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(t=t+"",e=e+"";(n=f_.exec(t))&&(i=h_.exec(e));)(a=i.index)>r&&(a=e.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:Wi(n,i)})),r=h_.lastIndex;return r{"use strict";yv();f_=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,h_=new RegExp(f_.source,"g");o(tSe,"zero");o(rSe,"one");o($0,"default")});function Rh(t,e){var r=typeof e,n;return e==null||r==="boolean"?F0(e):(r==="number"?Wi:r==="string"?(n=xl(e))?(e=n,Ed):$0:e instanceof xl?Ed:e instanceof Date?c_:Uq(e)?l_:Array.isArray(e)?qq:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?u_:Wi)(t,e)}var o5=N(()=>{"use strict";B0();o_();Wq();Yq();yv();Xq();d_();a_();Hq();o(Rh,"default")});function l5(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var jq=N(()=>{"use strict";o(l5,"default")});function u5(t,e,r,n,i,a){var s,l,u;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(u=t*r+e*n)&&(r-=t*u,n-=e*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),t*n{"use strict";Kq=180/Math.PI,c5={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(u5,"default")});function Zq(t){let e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?c5:u5(e.a,e.b,e.c,e.d,e.e,e.f)}function Jq(t){return t==null?c5:(h5||(h5=document.createElementNS("http://www.w3.org/2000/svg","g")),h5.setAttribute("transform",t),(t=h5.transform.baseVal.consolidate())?(t=t.matrix,u5(t.a,t.b,t.c,t.d,t.e,t.f)):c5)}var h5,eW=N(()=>{"use strict";Qq();o(Zq,"parseCss");o(Jq,"parseSvg")});function tW(t,e,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push("translate(",null,e,null,r);g.push({i:y-4,x:Wi(h,d)},{i:y-2,x:Wi(f,p)})}else(d||p)&&m.push("translate("+d+e+p+r)}o(a,"translate");function s(h,f,d,p){h!==f?(h-f>180?f+=360:f-h>180&&(h+=360),p.push({i:d.push(i(d)+"rotate(",null,n)-2,x:Wi(h,f)})):f&&d.push(i(d)+"rotate("+f+n)}o(s,"rotate");function l(h,f,d,p){h!==f?p.push({i:d.push(i(d)+"skewX(",null,n)-2,x:Wi(h,f)}):f&&d.push(i(d)+"skewX("+f+n)}o(l,"skewX");function u(h,f,d,p,m,g){if(h!==d||f!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:Wi(h,d)},{i:y-2,x:Wi(f,p)})}else(d!==1||p!==1)&&m.push(i(m)+"scale("+d+","+p+")")}return o(u,"scale"),function(h,f){var d=[],p=[];return h=t(h),f=t(f),a(h.translateX,h.translateY,f.translateX,f.translateY,d,p),s(h.rotate,f.rotate,d,p),l(h.skewX,f.skewX,d,p),u(h.scaleX,h.scaleY,f.scaleX,f.scaleY,d,p),h=f=null,function(m){for(var g=-1,y=p.length,v;++g{"use strict";yv();eW();o(tW,"interpolateTransform");p_=tW(Zq,"px, ","px)","deg)"),m_=tW(Jq,", ",")",")")});function nW(t){return function(e,r){var n=t((e=gv(e)).h,(r=gv(r)).h),i=xu(e.c,r.c),a=xu(e.l,r.l),s=xu(e.opacity,r.opacity);return function(l){return e.h=n(l),e.c=i(l),e.l=a(l),e.opacity=s(l),e+""}}}var g_,nSe,iW=N(()=>{"use strict";B0();s_();o(nW,"hcl");g_=nW(zq),nSe=nW(xu)});var z0=N(()=>{"use strict";o5();yv();jq();d_();rW();o_();iW()});function kv(){return Sd||(oW(iSe),Sd=Tv.now()+p5)}function iSe(){Sd=0}function wv(){this._call=this._time=this._next=null}function m5(t,e,r){var n=new wv;return n.restart(t,e,r),n}function lW(){kv(),++G0;for(var t=f5,e;t;)(e=Sd-t._time)>=0&&t._call.call(void 0,e),t=t._next;--G0}function aW(){Sd=(d5=Tv.now())+p5,G0=xv=0;try{lW()}finally{G0=0,sSe(),Sd=0}}function aSe(){var t=Tv.now(),e=t-d5;e>sW&&(p5-=e,d5=t)}function sSe(){for(var t,e=f5,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:f5=r);bv=t,y_(n)}function y_(t){if(!G0){xv&&(xv=clearTimeout(xv));var e=t-Sd;e>24?(t<1/0&&(xv=setTimeout(aW,t-Tv.now()-p5)),vv&&(vv=clearInterval(vv))):(vv||(d5=Tv.now(),vv=setInterval(aSe,sW)),G0=1,oW(aW))}}var G0,xv,vv,sW,f5,bv,d5,Sd,p5,Tv,oW,v_=N(()=>{"use strict";G0=0,xv=0,vv=0,sW=1e3,d5=0,Sd=0,p5=0,Tv=typeof performance=="object"&&performance.now?performance:Date,oW=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};o(kv,"now");o(iSe,"clearNow");o(wv,"Timer");wv.prototype=m5.prototype={constructor:wv,restart:o(function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?kv():+r)+(e==null?0:+e),!this._next&&bv!==this&&(bv?bv._next=this:f5=this,bv=this),this._call=t,this._time=r,y_()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,y_())},"stop")};o(m5,"timer");o(lW,"timerFlush");o(aW,"wake");o(aSe,"poke");o(sSe,"nap");o(y_,"sleep")});function Ev(t,e,r){var n=new wv;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}var cW=N(()=>{"use strict";v_();o(Ev,"default")});var g5=N(()=>{"use strict";v_();cW()});function bu(t,e,r,n,i,a){var s=t.__transition;if(!s)t.__transition={};else if(r in s)return;cSe(t,r,{name:e,index:n,group:i,on:oSe,tween:lSe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:fW})}function Cv(t,e){var r=Oi(t,e);if(r.state>fW)throw new Error("too late; already scheduled");return r}function la(t,e){var r=Oi(t,e);if(r.state>y5)throw new Error("too late; already running");return r}function Oi(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function cSe(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=m5(a,0,r.time);function a(h){r.state=uW,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var f,d,p,m;if(r.state!==uW)return u();for(f in n)if(m=n[f],m.name===r.name){if(m.state===y5)return Ev(s);m.state===hW?(m.state=Sv,m.timer.stop(),m.on.call("interrupt",t,t.__data__,m.index,m.group),delete n[f]):+f{"use strict";JA();g5();oSe=ZA("start","end","cancel","interrupt"),lSe=[],fW=0,uW=1,v5=2,y5=3,hW=4,x5=5,Sv=6;o(bu,"default");o(Cv,"init");o(la,"set");o(Oi,"get");o(cSe,"create")});function Av(t,e){var r=t.__transition,n,i,a=!0,s;if(r){e=e==null?null:e+"";for(s in r){if((n=r[s]).name!==e){a=!1;continue}i=n.state>v5&&n.state{"use strict";Ds();o(Av,"default")});function x_(t){return this.each(function(){Av(this,t)})}var pW=N(()=>{"use strict";dW();o(x_,"default")});function uSe(t,e){var r,n;return function(){var i=la(this,t),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s{"use strict";Ds();o(uSe,"tweenRemove");o(hSe,"tweenFunction");o(b_,"default");o(V0,"tweenValue")});function Dv(t,e){var r;return(typeof e=="number"?Wi:e instanceof xl?Ed:(r=xl(e))?(e=r,Ed):$0)(t,e)}var T_=N(()=>{"use strict";B0();z0();o(Dv,"default")});function fSe(t){return function(){this.removeAttribute(t)}}function dSe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function pSe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttribute(t);return s===i?null:s===n?a:a=e(n=s,r)}}function mSe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===n?a:a=e(n=s,r)}}function gSe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(t):(s=this.getAttribute(t),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function ySe(t,e,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l)))}}function w_(t,e){var r=sc(t),n=r==="transform"?m_:Dv;return this.attrTween(t,typeof e=="function"?(r.local?ySe:gSe)(r,n,V0(this,"attr."+t,e)):e==null?(r.local?dSe:fSe)(r):(r.local?mSe:pSe)(r,n,e))}var mW=N(()=>{"use strict";z0();yl();_v();T_();o(fSe,"attrRemove");o(dSe,"attrRemoveNS");o(pSe,"attrConstant");o(mSe,"attrConstantNS");o(gSe,"attrFunction");o(ySe,"attrFunctionNS");o(w_,"default")});function vSe(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function xSe(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function bSe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&xSe(t,a)),r}return o(i,"tween"),i._value=e,i}function TSe(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&vSe(t,a)),r}return o(i,"tween"),i._value=e,i}function k_(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;var n=sc(t);return this.tween(r,(n.local?bSe:TSe)(n,e))}var gW=N(()=>{"use strict";yl();o(vSe,"attrInterpolate");o(xSe,"attrInterpolateNS");o(bSe,"attrTweenNS");o(TSe,"attrTween");o(k_,"default")});function wSe(t,e){return function(){Cv(this,t).delay=+e.apply(this,arguments)}}function kSe(t,e){return e=+e,function(){Cv(this,t).delay=e}}function E_(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?wSe:kSe)(e,t)):Oi(this.node(),e).delay}var yW=N(()=>{"use strict";Ds();o(wSe,"delayFunction");o(kSe,"delayConstant");o(E_,"default")});function ESe(t,e){return function(){la(this,t).duration=+e.apply(this,arguments)}}function SSe(t,e){return e=+e,function(){la(this,t).duration=e}}function S_(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?ESe:SSe)(e,t)):Oi(this.node(),e).duration}var vW=N(()=>{"use strict";Ds();o(ESe,"durationFunction");o(SSe,"durationConstant");o(S_,"default")});function CSe(t,e){if(typeof e!="function")throw new Error;return function(){la(this,t).ease=e}}function C_(t){var e=this._id;return arguments.length?this.each(CSe(e,t)):Oi(this.node(),e).ease}var xW=N(()=>{"use strict";Ds();o(CSe,"easeConstant");o(C_,"default")});function ASe(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;la(this,t).ease=r}}function A_(t){if(typeof t!="function")throw new Error;return this.each(ASe(this._id,t))}var bW=N(()=>{"use strict";Ds();o(ASe,"easeVarying");o(A_,"default")});function __(t){typeof t!="function"&&(t=N0(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{"use strict";yl();Cd();o(__,"default")});function D_(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,i=r.length,a=Math.min(n,i),s=new Array(n),l=0;l{"use strict";Cd();o(D_,"default")});function _Se(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function DSe(t,e,r){var n,i,a=_Se(e)?Cv:la;return function(){var s=a(this,t),l=s.on;l!==n&&(i=(n=l).copy()).on(e,r),s.on=i}}function L_(t,e){var r=this._id;return arguments.length<2?Oi(this.node(),r).on.on(t):this.each(DSe(r,t,e))}var kW=N(()=>{"use strict";Ds();o(_Se,"start");o(DSe,"onFunction");o(L_,"default")});function LSe(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function R_(){return this.on("end.remove",LSe(this._id))}var EW=N(()=>{"use strict";o(LSe,"removeFunction");o(R_,"default")});function N_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=Ah(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{"use strict";yl();Cd();Ds();o(N_,"default")});function M_(t){var e=this._name,r=this._id;typeof t!="function"&&(t=R0(t));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l{"use strict";yl();Cd();Ds();o(M_,"default")});function I_(){return new RSe(this._groups,this._parents)}var RSe,AW=N(()=>{"use strict";yl();RSe=yu.prototype.constructor;o(I_,"default")});function NSe(t,e){var r,n,i;return function(){var a=_h(this,t),s=(this.style.removeProperty(t),_h(this,t));return a===s?null:a===r&&s===n?i:i=e(r=a,n=s)}}function _W(t){return function(){this.style.removeProperty(t)}}function MSe(t,e,r){var n,i=r+"",a;return function(){var s=_h(this,t);return s===i?null:s===n?a:a=e(n=s,r)}}function ISe(t,e,r){var n,i,a;return function(){var s=_h(this,t),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(t),_h(this,t))),s===u?null:s===n&&u===i?a:(i=u,a=e(n=s,l))}}function OSe(t,e){var r,n,i,a="style."+e,s="end."+a,l;return function(){var u=la(this,t),h=u.on,f=u.value[a]==null?l||(l=_W(e)):void 0;(h!==r||i!==f)&&(n=(r=h).copy()).on(s,i=f),u.on=n}}function O_(t,e,r){var n=(t+="")=="transform"?p_:Dv;return e==null?this.styleTween(t,NSe(t,n)).on("end.style."+t,_W(t)):typeof e=="function"?this.styleTween(t,ISe(t,n,V0(this,"style."+t,e))).each(OSe(this._id,t)):this.styleTween(t,MSe(t,n,e),r).on("end.style."+t,null)}var DW=N(()=>{"use strict";z0();yl();Ds();_v();T_();o(NSe,"styleNull");o(_W,"styleRemove");o(MSe,"styleConstant");o(ISe,"styleFunction");o(OSe,"styleMaybeRemove");o(O_,"default")});function PSe(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function BSe(t,e,r){var n,i;function a(){var s=e.apply(this,arguments);return s!==i&&(n=(i=s)&&PSe(t,s,r)),n}return o(a,"tween"),a._value=e,a}function P_(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;return this.tween(n,BSe(t,e,r??""))}var LW=N(()=>{"use strict";o(PSe,"styleInterpolate");o(BSe,"styleTween");o(P_,"default")});function FSe(t){return function(){this.textContent=t}}function $Se(t){return function(){var e=t(this);this.textContent=e??""}}function B_(t){return this.tween("text",typeof t=="function"?$Se(V0(this,"text",t)):FSe(t==null?"":t+""))}var RW=N(()=>{"use strict";_v();o(FSe,"textConstant");o($Se,"textFunction");o(B_,"default")});function zSe(t){return function(e){this.textContent=t.call(this,e)}}function GSe(t){var e,r;function n(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&zSe(i)),e}return o(n,"tween"),n._value=t,n}function F_(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,GSe(t))}var NW=N(()=>{"use strict";o(zSe,"textInterpolate");o(GSe,"textTween");o(F_,"default")});function $_(){for(var t=this._name,e=this._id,r=b5(),n=this._groups,i=n.length,a=0;a{"use strict";Cd();Ds();o($_,"default")});function z_(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=la(this,n),f=h.on;f!==t&&(e=(t=f).copy(),e._.cancel.push(l),e._.interrupt.push(l),e._.end.push(u)),h.on=e}),i===0&&a()})}var IW=N(()=>{"use strict";Ds();o(z_,"default")});function is(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function OW(t){return yu().transition(t)}function b5(){return++VSe}var VSe,Tu,Cd=N(()=>{"use strict";yl();mW();gW();yW();vW();xW();bW();TW();wW();kW();EW();SW();CW();AW();DW();LW();RW();NW();MW();_v();IW();VSe=0;o(is,"Transition");o(OW,"transition");o(b5,"newId");Tu=yu.prototype;is.prototype=OW.prototype={constructor:is,select:N_,selectAll:M_,selectChild:Tu.selectChild,selectChildren:Tu.selectChildren,filter:__,merge:D_,selection:I_,transition:$_,call:Tu.call,nodes:Tu.nodes,node:Tu.node,size:Tu.size,empty:Tu.empty,each:Tu.each,on:L_,attr:w_,attrTween:k_,style:O_,styleTween:P_,text:B_,textTween:F_,remove:R_,tween:b_,delay:E_,duration:S_,ease:C_,easeVarying:A_,end:z_,[Symbol.iterator]:Tu[Symbol.iterator]}});function T5(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var PW=N(()=>{"use strict";o(T5,"cubicInOut")});var G_=N(()=>{"use strict";PW()});function HSe(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 V_(t){var e,r;t instanceof is?(e=t._id,t=t._name):(e=b5(),(r=USe).time=kv(),t=t==null?null:t+"");for(var n=this._groups,i=n.length,a=0;a{"use strict";Cd();Ds();G_();g5();USe={time:null,delay:0,duration:250,ease:T5};o(HSe,"inherit");o(V_,"default")});var FW=N(()=>{"use strict";yl();pW();BW();yu.prototype.interrupt=x_;yu.prototype.transition=V_});var w5=N(()=>{"use strict";FW()});var $W=N(()=>{"use strict"});var zW=N(()=>{"use strict"});var GW=N(()=>{"use strict"});function VW(t){return[+t[0],+t[1]]}function qSe(t){return[VW(t[0]),VW(t[1])]}function U_(t){return{type:t}}var c1t,u1t,h1t,f1t,d1t,p1t,UW=N(()=>{"use strict";w5();$W();zW();GW();({abs:c1t,max:u1t,min:h1t}=Math);o(VW,"number1");o(qSe,"number2");f1t={name:"x",handles:["w","e"].map(U_),input:o(function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},"input"),output:o(function(t){return t&&[t[0][0],t[1][0]]},"output")},d1t={name:"y",handles:["n","s"].map(U_),input:o(function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},"input"),output:o(function(t){return t&&[t[0][1],t[1][1]]},"output")},p1t={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(U_),input:o(function(t){return t==null?null:qSe(t)},"input"),output:o(function(t){return t},"output")};o(U_,"type")});var HW=N(()=>{"use strict";UW()});function qW(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return qW;let r=10**e;return function(n){this._+=n[0];for(let i=1,a=n.length;i{"use strict";H_=Math.PI,q_=2*H_,Ad=1e-6,WSe=q_-Ad;o(qW,"append");o(YSe,"appendRound");_d=class{static{o(this,"Path")}constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?qW:YSe(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,i){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(e,r,n,i,a,s){this._append`C${+e},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(e,r,n,i,a){if(e=+e,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=n-e,h=i-r,f=s-e,d=l-r,p=f*f+d*d;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(p>Ad)if(!(Math.abs(d*u-h*f)>Ad)||!a)this._append`L${this._x1=e},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),T=a*Math.tan((H_-Math.acos((y+p-v)/(2*x*b)))/2),S=T/b,w=T/x;Math.abs(S-1)>Ad&&this._append`L${e+S*f},${r+S*d}`,this._append`A${a},${a},0,0,${+(d*m>f*g)},${this._x1=e+w*u},${this._y1=r+w*h}`}}arc(e,r,n,i,a,s){if(e=+e,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let l=n*Math.cos(i),u=n*Math.sin(i),h=e+l,f=r+u,d=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${f}`:(Math.abs(this._x1-h)>Ad||Math.abs(this._y1-f)>Ad)&&this._append`L${h},${f}`,n&&(p<0&&(p=p%q_+q_),p>WSe?this._append`A${n},${n},0,1,${d},${e-l},${r-u}A${n},${n},0,1,${d},${this._x1=h},${this._y1=f}`:p>Ad&&this._append`A${n},${n},0,${+(p>=H_)},${d},${this._x1=e+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(e,r,n,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};o(WW,"path");WW.prototype=_d.prototype});var W_=N(()=>{"use strict";YW()});var XW=N(()=>{"use strict"});var jW=N(()=>{"use strict"});var KW=N(()=>{"use strict"});var QW=N(()=>{"use strict"});var ZW=N(()=>{"use strict"});var JW=N(()=>{"use strict"});var eY=N(()=>{"use strict"});function Y_(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Dd(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}var Lv=N(()=>{"use strict";o(Y_,"default");o(Dd,"formatDecimalParts")});function bl(t){return t=Dd(Math.abs(t)),t?t[1]:NaN}var Rv=N(()=>{"use strict";Lv();o(bl,"default")});function X_(t,e){return function(r,n){for(var i=r.length,a=[],s=0,l=t[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=t[s=(s+1)%t.length];return a.reverse().join(e)}}var tY=N(()=>{"use strict";o(X_,"default")});function j_(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var rY=N(()=>{"use strict";o(j_,"default")});function Nh(t){if(!(e=XSe.exec(t)))throw new Error("invalid format: "+t);var e;return new k5({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]})}function k5(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}var XSe,K_=N(()=>{"use strict";XSe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(Nh,"formatSpecifier");Nh.prototype=k5.prototype;o(k5,"FormatSpecifier");k5.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function Q_(t){e:for(var e=t.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var nY=N(()=>{"use strict";o(Q_,"default")});function J_(t,e){var r=Dd(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(Z_=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+Dd(t,Math.max(0,e+a-1))[0]}var Z_,eD=N(()=>{"use strict";Lv();o(J_,"default")});function E5(t,e){var r=Dd(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var iY=N(()=>{"use strict";Lv();o(E5,"default")});var tD,aY=N(()=>{"use strict";Lv();eD();iY();tD={"%":o((t,e)=>(t*100).toFixed(e),"%"),b:o(t=>Math.round(t).toString(2),"b"),c:o(t=>t+"","c"),d:Y_,e:o((t,e)=>t.toExponential(e),"e"),f:o((t,e)=>t.toFixed(e),"f"),g:o((t,e)=>t.toPrecision(e),"g"),o:o(t=>Math.round(t).toString(8),"o"),p:o((t,e)=>E5(t*100,e),"p"),r:E5,s:J_,X:o(t=>Math.round(t).toString(16).toUpperCase(),"X"),x:o(t=>Math.round(t).toString(16),"x")}});function S5(t){return t}var sY=N(()=>{"use strict";o(S5,"default")});function rD(t){var e=t.grouping===void 0||t.thousands===void 0?S5:X_(oY.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?S5:j_(oY.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",l=t.minus===void 0?"\u2212":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function h(d){d=Nh(d);var p=d.fill,m=d.align,g=d.sign,y=d.symbol,v=d.zero,x=d.width,b=d.comma,T=d.precision,S=d.trim,w=d.type;w==="n"?(b=!0,w="g"):tD[w]||(T===void 0&&(T=12),S=!0,w="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var k=y==="$"?r:y==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():"",A=y==="$"?n:/[%p]/.test(w)?s:"",C=tD[w],R=/[defgprs%]/.test(w);T=T===void 0?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,T)):Math.max(0,Math.min(20,T));function I(L){var E=k,D=A,_,O,M;if(w==="c")D=C(L)+D,L="";else{L=+L;var P=L<0||1/L<0;if(L=isNaN(L)?u:C(Math.abs(L),T),S&&(L=Q_(L)),P&&+L==0&&g!=="+"&&(P=!1),E=(P?g==="("?g:l:g==="-"||g==="("?"":g)+E,D=(w==="s"?lY[8+Z_/3]:"")+D+(P&&g==="("?")":""),R){for(_=-1,O=L.length;++_M||M>57){D=(M===46?i+L.slice(_+1):L.slice(_))+D,L=L.slice(0,_);break}}}b&&!v&&(L=e(L,1/0));var B=E.length+L.length+D.length,F=B>1)+E+L+D+F.slice(B);break;default:L=F+E+L+D;break}return a(L)}return o(I,"format"),I.toString=function(){return d+""},I}o(h,"newFormat");function f(d,p){var m=h((d=Nh(d),d.type="f",d)),g=Math.max(-8,Math.min(8,Math.floor(bl(p)/3)))*3,y=Math.pow(10,-g),v=lY[8+g/3];return function(x){return m(y*x)+v}}return o(f,"formatPrefix"),{format:h,formatPrefix:f}}var oY,lY,cY=N(()=>{"use strict";Rv();tY();rY();K_();nY();aY();eD();sY();oY=Array.prototype.map,lY=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(rD,"default")});function nD(t){return C5=rD(t),cc=C5.format,A5=C5.formatPrefix,C5}var C5,cc,A5,uY=N(()=>{"use strict";cY();nD({thousands:",",grouping:[3],currency:["$",""]});o(nD,"defaultLocale")});function _5(t){return Math.max(0,-bl(Math.abs(t)))}var hY=N(()=>{"use strict";Rv();o(_5,"default")});function D5(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(bl(e)/3)))*3-bl(Math.abs(t)))}var fY=N(()=>{"use strict";Rv();o(D5,"default")});function L5(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,bl(e)-bl(t))+1}var dY=N(()=>{"use strict";Rv();o(L5,"default")});var iD=N(()=>{"use strict";uY();K_();hY();fY();dY()});var pY=N(()=>{"use strict"});function jSe(t){var e=0,r=t.children,n=r&&r.length;if(!n)e=1;else for(;--n>=0;)e+=r[n].value;t.value=e}function aD(){return this.eachAfter(jSe)}var mY=N(()=>{"use strict";o(jSe,"count");o(aD,"default")});function sD(t,e){let r=-1;for(let n of this)t.call(e,n,++r,this);return this}var gY=N(()=>{"use strict";o(sD,"default")});function oD(t,e){for(var r=this,n=[r],i,a,s=-1;r=n.pop();)if(t.call(e,r,++s,this),i=r.children)for(a=i.length-1;a>=0;--a)n.push(i[a]);return this}var yY=N(()=>{"use strict";o(oD,"default")});function lD(t,e){for(var r=this,n=[r],i=[],a,s,l,u=-1;r=n.pop();)if(i.push(r),a=r.children)for(s=0,l=a.length;s{"use strict";o(lD,"default")});function cD(t,e){let r=-1;for(let n of this)if(t.call(e,n,++r,this))return n}var xY=N(()=>{"use strict";o(cD,"default")});function uD(t){return this.eachAfter(function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r})}var bY=N(()=>{"use strict";o(uD,"default")});function hD(t){return this.eachBefore(function(e){e.children&&e.children.sort(t)})}var TY=N(()=>{"use strict";o(hD,"default")});function fD(t){for(var e=this,r=KSe(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 KSe(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 wY=N(()=>{"use strict";o(fD,"default");o(KSe,"leastCommonAncestor")});function dD(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e}var kY=N(()=>{"use strict";o(dD,"default")});function pD(){return Array.from(this)}var EY=N(()=>{"use strict";o(pD,"default")});function mD(){var t=[];return this.eachBefore(function(e){e.children||t.push(e)}),t}var SY=N(()=>{"use strict";o(mD,"default")});function gD(){var t=this,e=[];return t.each(function(r){r!==t&&e.push({source:r.parent,target:r})}),e}var CY=N(()=>{"use strict";o(gD,"default")});function*yD(){var t=this,e,r=[t],n,i,a;do for(e=r.reverse(),r=[];t=e.pop();)if(yield t,n=t.children)for(i=0,a=n.length;i{"use strict";o(yD,"default")});function U0(t,e){t instanceof Map?(t=[void 0,t],e===void 0&&(e=JSe)):e===void 0&&(e=ZSe);for(var r=new Nv(t),n,i=[r],a,s,l,u;n=i.pop();)if((s=e(n.data))&&(u=(s=Array.from(s)).length))for(n.children=s,l=u-1;l>=0;--l)i.push(a=s[l]=new Nv(s[l])),a.parent=n,a.depth=n.depth+1;return r.eachBefore(t6e)}function QSe(){return U0(this).eachBefore(e6e)}function ZSe(t){return t.children}function JSe(t){return Array.isArray(t)?t[1]:null}function e6e(t){t.data.value!==void 0&&(t.value=t.data.value),t.data=t.data.data}function t6e(t){var e=0;do t.height=e;while((t=t.parent)&&t.height<++e)}function Nv(t){this.data=t,this.depth=this.height=0,this.parent=null}var _Y=N(()=>{"use strict";mY();gY();yY();vY();xY();bY();TY();wY();kY();EY();SY();CY();AY();o(U0,"hierarchy");o(QSe,"node_copy");o(ZSe,"objectChildren");o(JSe,"mapChildren");o(e6e,"copyData");o(t6e,"computeHeight");o(Nv,"Node");Nv.prototype=U0.prototype={constructor:Nv,count:aD,each:sD,eachAfter:lD,eachBefore:oD,find:cD,sum:uD,sort:hD,path:fD,ancestors:dD,descendants:pD,leaves:mD,links:gD,copy:QSe,[Symbol.iterator]:yD}});function DY(t){if(typeof t!="function")throw new Error;return t}var LY=N(()=>{"use strict";o(DY,"required")});function H0(){return 0}function Ld(t){return function(){return t}}var RY=N(()=>{"use strict";o(H0,"constantZero");o(Ld,"default")});function vD(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 NY=N(()=>{"use strict";o(vD,"default")});function xD(t,e,r,n,i){for(var a=t.children,s,l=-1,u=a.length,h=t.value&&(n-e)/t.value;++l{"use strict";o(xD,"default")});function bD(t,e,r,n,i){for(var a=t.children,s,l=-1,u=a.length,h=t.value&&(i-r)/t.value;++l{"use strict";o(bD,"default")});function n6e(t,e,r,n,i,a){for(var s=[],l=e.children,u,h,f=0,d=0,p=l.length,m,g,y=e.value,v,x,b,T,S,w,k;fb&&(b=h),k=v*v*w,T=Math.max(b/k,k/x),T>S){v-=h;break}S=T}s.push(u={value:v,dice:m{"use strict";MY();IY();r6e=(1+Math.sqrt(5))/2;o(n6e,"squarifyRatio");OY=o((function t(e){function r(n,i,a,s,l){n6e(e,n,i,a,s,l)}return o(r,"squarify"),r.ratio=function(n){return t((n=+n)>1?n:1)},r}),"custom")(r6e)});function R5(){var t=OY,e=!1,r=1,n=1,i=[0],a=H0,s=H0,l=H0,u=H0,h=H0;function f(p){return p.x0=p.y0=0,p.x1=r,p.y1=n,p.eachBefore(d),i=[0],e&&p.eachBefore(vD),p}o(f,"treemap");function d(p){var m=i[p.depth],g=p.x0+m,y=p.y0+m,v=p.x1-m,x=p.y1-m;v{"use strict";NY();PY();LY();RY();o(R5,"default")});var FY=N(()=>{"use strict";_Y();BY()});var $Y=N(()=>{"use strict"});var zY=N(()=>{"use strict"});function Mh(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}var Mv=N(()=>{"use strict";o(Mh,"initRange")});function no(){var t=new D0,e=[],r=[],n=TD;function i(a){let s=t.get(a);if(s===void 0){if(n!==TD)return n;t.set(a,s=e.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new D0;for(let s of a)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return no(e,r).unknown(n)},Mh.apply(i,arguments),i}var TD,wD=N(()=>{"use strict";Ch();Mv();TD=Symbol("implicit");o(no,"ordinal")});function q0(){var t=no().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,a,s,l=!1,u=0,h=0,f=.5;delete t.unknown;function d(){var p=e().length,m=i{"use strict";Ch();Mv();wD();o(q0,"band")});function kD(t){return function(){return t}}var VY=N(()=>{"use strict";o(kD,"constants")});function ED(t){return+t}var UY=N(()=>{"use strict";o(ED,"number")});function W0(t){return t}function SD(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:kD(isNaN(e)?NaN:.5)}function i6e(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function a6e(t,e,r){var n=t[0],i=t[1],a=e[0],s=e[1];return i2?s6e:a6e,u=h=null,d}o(f,"rescale");function d(p){return p==null||isNaN(p=+p)?a:(u||(u=l(t.map(n),e,r)))(n(s(p)))}return o(d,"scale"),d.invert=function(p){return s(i((h||(h=l(e,t.map(n),Wi)))(p)))},d.domain=function(p){return arguments.length?(t=Array.from(p,ED),f()):t.slice()},d.range=function(p){return arguments.length?(e=Array.from(p),f()):e.slice()},d.rangeRound=function(p){return e=Array.from(p),r=l5,f()},d.clamp=function(p){return arguments.length?(s=p?!0:W0,f()):s!==W0},d.interpolate=function(p){return arguments.length?(r=p,f()):r},d.unknown=function(p){return arguments.length?(a=p,d):a},function(p,m){return n=p,i=m,f()}}function Iv(){return o6e()(W0,W0)}var HY,CD=N(()=>{"use strict";Ch();z0();VY();UY();HY=[0,1];o(W0,"identity");o(SD,"normalize");o(i6e,"clamper");o(a6e,"bimap");o(s6e,"polymap");o(N5,"copy");o(o6e,"transformer");o(Iv,"continuous")});function AD(t,e,r,n){var i=L0(t,e,r),a;switch(n=Nh(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(a=D5(i,s))&&(n.precision=a),A5(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=L5(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=_5(i))&&(n.precision=a-(n.type==="%")*2);break}}return cc(n)}var qY=N(()=>{"use strict";Ch();iD();o(AD,"tickFormat")});function l6e(t){var e=t.domain;return t.ticks=function(r){var n=e();return q3(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return AD(i[0],i[i.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,a=n.length-1,s=n[i],l=n[a],u,h,f=10;for(l0;){if(h=lv(s,l,r),h===u)return n[i]=s,n[a]=l,e(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return t},t}function Tl(){var t=Iv();return t.copy=function(){return N5(t,Tl())},Mh.apply(t,arguments),l6e(t)}var WY=N(()=>{"use strict";Ch();CD();Mv();qY();o(l6e,"linearish");o(Tl,"linear")});function _D(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],a=t[n],s;return a{"use strict";o(_D,"nice")});function En(t,e,r,n){function i(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),i.floor=a=>(t(a=new Date(+a)),a),i.ceil=a=>(t(a=new Date(a-1)),e(a,1),t(a),a),i.round=a=>{let s=i(a),l=i.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a0))return u;let h;do u.push(h=new Date(+a)),e(a,l),t(a);while(hEn(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;e(s,-1),!a(s););else for(;--l>=0;)for(;e(s,1),!a(s););}),r&&(i.count=(a,s)=>(DD.setTime(+a),LD.setTime(+s),t(DD),t(LD),Math.floor(r(DD,LD))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var DD,LD,wu=N(()=>{"use strict";DD=new Date,LD=new Date;o(En,"timeInterval")});var uc,XY,RD=N(()=>{"use strict";wu();uc=En(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);uc.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?En(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):uc);XY=uc.range});var io,jY,ND=N(()=>{"use strict";wu();io=En(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),jY=io.range});var ku,c6e,M5,u6e,MD=N(()=>{"use strict";wu();ku=En(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),c6e=ku.range,M5=En(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),u6e=M5.range});var Eu,h6e,I5,f6e,ID=N(()=>{"use strict";wu();Eu=En(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),h6e=Eu.range,I5=En(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),f6e=I5.range});var Ro,d6e,Pv,p6e,O5,m6e,OD=N(()=>{"use strict";wu();Ro=En(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),d6e=Ro.range,Pv=En(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),p6e=Pv.range,O5=En(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),m6e=O5.range});function Md(t){return En(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}function Id(t){return En(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var wl,Ih,P5,B5,fc,F5,$5,QY,g6e,y6e,v6e,x6e,b6e,T6e,Od,Y0,ZY,JY,Oh,eX,tX,rX,w6e,k6e,E6e,S6e,C6e,A6e,PD=N(()=>{"use strict";wu();o(Md,"timeWeekday");wl=Md(0),Ih=Md(1),P5=Md(2),B5=Md(3),fc=Md(4),F5=Md(5),$5=Md(6),QY=wl.range,g6e=Ih.range,y6e=P5.range,v6e=B5.range,x6e=fc.range,b6e=F5.range,T6e=$5.range;o(Id,"utcWeekday");Od=Id(0),Y0=Id(1),ZY=Id(2),JY=Id(3),Oh=Id(4),eX=Id(5),tX=Id(6),rX=Od.range,w6e=Y0.range,k6e=ZY.range,E6e=JY.range,S6e=Oh.range,C6e=eX.range,A6e=tX.range});var Su,_6e,z5,D6e,BD=N(()=>{"use strict";wu();Su=En(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),_6e=Su.range,z5=En(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),D6e=z5.range});var ao,L6e,kl,R6e,FD=N(()=>{"use strict";wu();ao=En(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());ao.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:En(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});L6e=ao.range,kl=En(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());kl.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:En(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});R6e=kl.range});function iX(t,e,r,n,i,a){let s=[[io,1,1e3],[io,5,5*1e3],[io,15,15*1e3],[io,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function l(h,f,d){let p=fv).right(s,p);if(m===s.length)return t.every(L0(h/31536e6,f/31536e6,d));if(m===0)return uc.every(Math.max(L0(h,f,d),1));let[g,y]=s[p/s[m-1][2]{"use strict";Ch();RD();ND();MD();ID();OD();PD();BD();FD();o(iX,"ticker");[M6e,I6e]=iX(kl,z5,Od,O5,I5,M5),[$D,zD]=iX(ao,Su,wl,Ro,Eu,ku)});var G5=N(()=>{"use strict";RD();ND();MD();ID();OD();PD();BD();FD();aX()});function GD(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function VD(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Bv(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function UD(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,a=t.days,s=t.shortDays,l=t.months,u=t.shortMonths,h=Fv(i),f=$v(i),d=Fv(a),p=$v(a),m=Fv(s),g=$v(s),y=Fv(l),v=$v(l),x=Fv(u),b=$v(u),T={a:P,A:B,b:F,B:G,c:null,d:hX,e:hX,f:nCe,g:dCe,G:mCe,H:eCe,I:tCe,j:rCe,L:gX,m:iCe,M:aCe,p:$,q:U,Q:pX,s:mX,S:sCe,u:oCe,U:lCe,V:cCe,w:uCe,W:hCe,x:null,X:null,y:fCe,Y:pCe,Z:gCe,"%":dX},S={a:j,A:te,b:Y,B:oe,c:null,d:fX,e:fX,f:bCe,g:LCe,G:NCe,H:yCe,I:vCe,j:xCe,L:vX,m:TCe,M:wCe,p:J,q:ue,Q:pX,s:mX,S:kCe,u:ECe,U:SCe,V:CCe,w:ACe,W:_Ce,x:null,X:null,y:DCe,Y:RCe,Z:MCe,"%":dX},w={a:I,A:L,b:E,B:D,c:_,d:cX,e:cX,f:K6e,g:lX,G:oX,H:uX,I:uX,j:W6e,L:j6e,m:q6e,M:Y6e,p:R,q:H6e,Q:Z6e,s:J6e,S:X6e,u:$6e,U:z6e,V:G6e,w:F6e,W:V6e,x:O,X:M,y:lX,Y:oX,Z:U6e,"%":Q6e};T.x=k(r,T),T.X=k(n,T),T.c=k(e,T),S.x=k(r,S),S.X=k(n,S),S.c=k(e,S);function k(re,ee){return function(Z){var K=[],ae=-1,Q=0,de=re.length,ne,Te,q;for(Z instanceof Date||(Z=new Date(+Z));++ae53)return null;"w"in K||(K.w=1),"Z"in K?(Q=VD(Bv(K.y,0,1)),de=Q.getUTCDay(),Q=de>4||de===0?Y0.ceil(Q):Y0(Q),Q=Pv.offset(Q,(K.V-1)*7),K.y=Q.getUTCFullYear(),K.m=Q.getUTCMonth(),K.d=Q.getUTCDate()+(K.w+6)%7):(Q=GD(Bv(K.y,0,1)),de=Q.getDay(),Q=de>4||de===0?Ih.ceil(Q):Ih(Q),Q=Ro.offset(Q,(K.V-1)*7),K.y=Q.getFullYear(),K.m=Q.getMonth(),K.d=Q.getDate()+(K.w+6)%7)}else("W"in K||"U"in K)&&("w"in K||(K.w="u"in K?K.u%7:"W"in K?1:0),de="Z"in K?VD(Bv(K.y,0,1)).getUTCDay():GD(Bv(K.y,0,1)).getDay(),K.m=0,K.d="W"in K?(K.w+6)%7+K.W*7-(de+5)%7:K.w+K.U*7-(de+6)%7);return"Z"in K?(K.H+=K.Z/100|0,K.M+=K.Z%100,VD(K)):GD(K)}}o(A,"newParse");function C(re,ee,Z,K){for(var ae=0,Q=ee.length,de=Z.length,ne,Te;ae=de)return-1;if(ne=ee.charCodeAt(ae++),ne===37){if(ne=ee.charAt(ae++),Te=w[ne in sX?ee.charAt(ae++):ne],!Te||(K=Te(re,Z,K))<0)return-1}else if(ne!=Z.charCodeAt(K++))return-1}return K}o(C,"parseSpecifier");function R(re,ee,Z){var K=h.exec(ee.slice(Z));return K?(re.p=f.get(K[0].toLowerCase()),Z+K[0].length):-1}o(R,"parsePeriod");function I(re,ee,Z){var K=m.exec(ee.slice(Z));return K?(re.w=g.get(K[0].toLowerCase()),Z+K[0].length):-1}o(I,"parseShortWeekday");function L(re,ee,Z){var K=d.exec(ee.slice(Z));return K?(re.w=p.get(K[0].toLowerCase()),Z+K[0].length):-1}o(L,"parseWeekday");function E(re,ee,Z){var K=x.exec(ee.slice(Z));return K?(re.m=b.get(K[0].toLowerCase()),Z+K[0].length):-1}o(E,"parseShortMonth");function D(re,ee,Z){var K=y.exec(ee.slice(Z));return K?(re.m=v.get(K[0].toLowerCase()),Z+K[0].length):-1}o(D,"parseMonth");function _(re,ee,Z){return C(re,e,ee,Z)}o(_,"parseLocaleDateTime");function O(re,ee,Z){return C(re,r,ee,Z)}o(O,"parseLocaleDate");function M(re,ee,Z){return C(re,n,ee,Z)}o(M,"parseLocaleTime");function P(re){return s[re.getDay()]}o(P,"formatShortWeekday");function B(re){return a[re.getDay()]}o(B,"formatWeekday");function F(re){return u[re.getMonth()]}o(F,"formatShortMonth");function G(re){return l[re.getMonth()]}o(G,"formatMonth");function $(re){return i[+(re.getHours()>=12)]}o($,"formatPeriod");function U(re){return 1+~~(re.getMonth()/3)}o(U,"formatQuarter");function j(re){return s[re.getUTCDay()]}o(j,"formatUTCShortWeekday");function te(re){return a[re.getUTCDay()]}o(te,"formatUTCWeekday");function Y(re){return u[re.getUTCMonth()]}o(Y,"formatUTCShortMonth");function oe(re){return l[re.getUTCMonth()]}o(oe,"formatUTCMonth");function J(re){return i[+(re.getUTCHours()>=12)]}o(J,"formatUTCPeriod");function ue(re){return 1+~~(re.getUTCMonth()/3)}return o(ue,"formatUTCQuarter"),{format:o(function(re){var ee=k(re+="",T);return ee.toString=function(){return re},ee},"format"),parse:o(function(re){var ee=A(re+="",!1);return ee.toString=function(){return re},ee},"parse"),utcFormat:o(function(re){var ee=k(re+="",S);return ee.toString=function(){return re},ee},"utcFormat"),utcParse:o(function(re){var ee=A(re+="",!0);return ee.toString=function(){return re},ee},"utcParse")}}function Kr(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a[e.toLowerCase(),r]))}function F6e(t,e,r){var n=Yi.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function $6e(t,e,r){var n=Yi.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function z6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function G6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function V6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function oX(t,e,r){var n=Yi.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function lX(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function U6e(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function H6e(t,e,r){var n=Yi.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function q6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function cX(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function W6e(t,e,r){var n=Yi.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function uX(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function Y6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function X6e(t,e,r){var n=Yi.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function j6e(t,e,r){var n=Yi.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function K6e(t,e,r){var n=Yi.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Q6e(t,e,r){var n=O6e.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function Z6e(t,e,r){var n=Yi.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function J6e(t,e,r){var n=Yi.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function hX(t,e){return Kr(t.getDate(),e,2)}function eCe(t,e){return Kr(t.getHours(),e,2)}function tCe(t,e){return Kr(t.getHours()%12||12,e,2)}function rCe(t,e){return Kr(1+Ro.count(ao(t),t),e,3)}function gX(t,e){return Kr(t.getMilliseconds(),e,3)}function nCe(t,e){return gX(t,e)+"000"}function iCe(t,e){return Kr(t.getMonth()+1,e,2)}function aCe(t,e){return Kr(t.getMinutes(),e,2)}function sCe(t,e){return Kr(t.getSeconds(),e,2)}function oCe(t){var e=t.getDay();return e===0?7:e}function lCe(t,e){return Kr(wl.count(ao(t)-1,t),e,2)}function yX(t){var e=t.getDay();return e>=4||e===0?fc(t):fc.ceil(t)}function cCe(t,e){return t=yX(t),Kr(fc.count(ao(t),t)+(ao(t).getDay()===4),e,2)}function uCe(t){return t.getDay()}function hCe(t,e){return Kr(Ih.count(ao(t)-1,t),e,2)}function fCe(t,e){return Kr(t.getFullYear()%100,e,2)}function dCe(t,e){return t=yX(t),Kr(t.getFullYear()%100,e,2)}function pCe(t,e){return Kr(t.getFullYear()%1e4,e,4)}function mCe(t,e){var r=t.getDay();return t=r>=4||r===0?fc(t):fc.ceil(t),Kr(t.getFullYear()%1e4,e,4)}function gCe(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Kr(e/60|0,"0",2)+Kr(e%60,"0",2)}function fX(t,e){return Kr(t.getUTCDate(),e,2)}function yCe(t,e){return Kr(t.getUTCHours(),e,2)}function vCe(t,e){return Kr(t.getUTCHours()%12||12,e,2)}function xCe(t,e){return Kr(1+Pv.count(kl(t),t),e,3)}function vX(t,e){return Kr(t.getUTCMilliseconds(),e,3)}function bCe(t,e){return vX(t,e)+"000"}function TCe(t,e){return Kr(t.getUTCMonth()+1,e,2)}function wCe(t,e){return Kr(t.getUTCMinutes(),e,2)}function kCe(t,e){return Kr(t.getUTCSeconds(),e,2)}function ECe(t){var e=t.getUTCDay();return e===0?7:e}function SCe(t,e){return Kr(Od.count(kl(t)-1,t),e,2)}function xX(t){var e=t.getUTCDay();return e>=4||e===0?Oh(t):Oh.ceil(t)}function CCe(t,e){return t=xX(t),Kr(Oh.count(kl(t),t)+(kl(t).getUTCDay()===4),e,2)}function ACe(t){return t.getUTCDay()}function _Ce(t,e){return Kr(Y0.count(kl(t)-1,t),e,2)}function DCe(t,e){return Kr(t.getUTCFullYear()%100,e,2)}function LCe(t,e){return t=xX(t),Kr(t.getUTCFullYear()%100,e,2)}function RCe(t,e){return Kr(t.getUTCFullYear()%1e4,e,4)}function NCe(t,e){var r=t.getUTCDay();return t=r>=4||r===0?Oh(t):Oh.ceil(t),Kr(t.getUTCFullYear()%1e4,e,4)}function MCe(){return"+0000"}function dX(){return"%"}function pX(t){return+t}function mX(t){return Math.floor(+t/1e3)}var sX,Yi,O6e,P6e,bX=N(()=>{"use strict";G5();o(GD,"localDate");o(VD,"utcDate");o(Bv,"newDate");o(UD,"formatLocale");sX={"-":"",_:" ",0:"0"},Yi=/^\s*\d+/,O6e=/^%/,P6e=/[\\^$*+?|[\]().{}]/g;o(Kr,"pad");o(B6e,"requote");o(Fv,"formatRe");o($v,"formatLookup");o(F6e,"parseWeekdayNumberSunday");o($6e,"parseWeekdayNumberMonday");o(z6e,"parseWeekNumberSunday");o(G6e,"parseWeekNumberISO");o(V6e,"parseWeekNumberMonday");o(oX,"parseFullYear");o(lX,"parseYear");o(U6e,"parseZone");o(H6e,"parseQuarter");o(q6e,"parseMonthNumber");o(cX,"parseDayOfMonth");o(W6e,"parseDayOfYear");o(uX,"parseHour24");o(Y6e,"parseMinutes");o(X6e,"parseSeconds");o(j6e,"parseMilliseconds");o(K6e,"parseMicroseconds");o(Q6e,"parseLiteralPercent");o(Z6e,"parseUnixTimestamp");o(J6e,"parseUnixTimestampSeconds");o(hX,"formatDayOfMonth");o(eCe,"formatHour24");o(tCe,"formatHour12");o(rCe,"formatDayOfYear");o(gX,"formatMilliseconds");o(nCe,"formatMicroseconds");o(iCe,"formatMonthNumber");o(aCe,"formatMinutes");o(sCe,"formatSeconds");o(oCe,"formatWeekdayNumberMonday");o(lCe,"formatWeekNumberSunday");o(yX,"dISO");o(cCe,"formatWeekNumberISO");o(uCe,"formatWeekdayNumberSunday");o(hCe,"formatWeekNumberMonday");o(fCe,"formatYear");o(dCe,"formatYearISO");o(pCe,"formatFullYear");o(mCe,"formatFullYearISO");o(gCe,"formatZone");o(fX,"formatUTCDayOfMonth");o(yCe,"formatUTCHour24");o(vCe,"formatUTCHour12");o(xCe,"formatUTCDayOfYear");o(vX,"formatUTCMilliseconds");o(bCe,"formatUTCMicroseconds");o(TCe,"formatUTCMonthNumber");o(wCe,"formatUTCMinutes");o(kCe,"formatUTCSeconds");o(ECe,"formatUTCWeekdayNumberMonday");o(SCe,"formatUTCWeekNumberSunday");o(xX,"UTCdISO");o(CCe,"formatUTCWeekNumberISO");o(ACe,"formatUTCWeekdayNumberSunday");o(_Ce,"formatUTCWeekNumberMonday");o(DCe,"formatUTCYear");o(LCe,"formatUTCYearISO");o(RCe,"formatUTCFullYear");o(NCe,"formatUTCFullYearISO");o(MCe,"formatUTCZone");o(dX,"formatLiteralPercent");o(pX,"formatUnixTimestamp");o(mX,"formatUnixTimestampSeconds")});function HD(t){return X0=UD(t),Pd=X0.format,TX=X0.parse,wX=X0.utcFormat,kX=X0.utcParse,X0}var X0,Pd,TX,wX,kX,EX=N(()=>{"use strict";bX();HD({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"]});o(HD,"defaultLocale")});var qD=N(()=>{"use strict";EX()});function ICe(t){return new Date(t)}function OCe(t){return t instanceof Date?+t:+new Date(+t)}function SX(t,e,r,n,i,a,s,l,u,h){var f=Iv(),d=f.invert,p=f.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),T=h("%B"),S=h("%Y");function w(k){return(u(k){"use strict";G5();qD();CD();Mv();YY();o(ICe,"date");o(OCe,"number");o(SX,"calendar");o(V5,"time")});var AX=N(()=>{"use strict";GY();WY();wD();CX()});function WD(t){for(var e=t.length/6|0,r=new Array(e),n=0;n{"use strict";o(WD,"default")});var YD,DX=N(()=>{"use strict";_X();YD=WD("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var LX=N(()=>{"use strict";DX()});function zn(t){return o(function(){return t},"constant")}var U5=N(()=>{"use strict";o(zn,"default")});function NX(t){return t>1?0:t<-1?j0:Math.acos(t)}function jD(t){return t>=1?zv:t<=-1?-zv:Math.asin(t)}var XD,ca,Ph,RX,H5,El,Bd,Xi,j0,zv,K0,q5=N(()=>{"use strict";XD=Math.abs,ca=Math.atan2,Ph=Math.cos,RX=Math.max,H5=Math.min,El=Math.sin,Bd=Math.sqrt,Xi=1e-12,j0=Math.PI,zv=j0/2,K0=2*j0;o(NX,"acos");o(jD,"asin")});function W5(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new _d(e)}var KD=N(()=>{"use strict";W_();o(W5,"withPath")});function PCe(t){return t.innerRadius}function BCe(t){return t.outerRadius}function FCe(t){return t.startAngle}function $Ce(t){return t.endAngle}function zCe(t){return t&&t.padAngle}function GCe(t,e,r,n,i,a,s,l){var u=r-t,h=n-e,f=s-i,d=l-a,p=d*u-f*h;if(!(p*p_*_+O*O&&(C=I,R=L),{cx:C,cy:R,x01:-f,y01:-d,x11:C*(i/w-1),y11:R*(i/w-1)}}function Sl(){var t=PCe,e=BCe,r=zn(0),n=null,i=FCe,a=$Ce,s=zCe,l=null,u=W5(h);function h(){var f,d,p=+t.apply(this,arguments),m=+e.apply(this,arguments),g=i.apply(this,arguments)-zv,y=a.apply(this,arguments)-zv,v=XD(y-g),x=y>g;if(l||(l=f=u()),mXi))l.moveTo(0,0);else if(v>K0-Xi)l.moveTo(m*Ph(g),m*El(g)),l.arc(0,0,m,g,y,!x),p>Xi&&(l.moveTo(p*Ph(y),p*El(y)),l.arc(0,0,p,y,g,x));else{var b=g,T=y,S=g,w=y,k=v,A=v,C=s.apply(this,arguments)/2,R=C>Xi&&(n?+n.apply(this,arguments):Bd(p*p+m*m)),I=H5(XD(m-p)/2,+r.apply(this,arguments)),L=I,E=I,D,_;if(R>Xi){var O=jD(R/p*El(C)),M=jD(R/m*El(C));(k-=O*2)>Xi?(O*=x?1:-1,S+=O,w-=O):(k=0,S=w=(g+y)/2),(A-=M*2)>Xi?(M*=x?1:-1,b+=M,T-=M):(A=0,b=T=(g+y)/2)}var P=m*Ph(b),B=m*El(b),F=p*Ph(w),G=p*El(w);if(I>Xi){var $=m*Ph(T),U=m*El(T),j=p*Ph(S),te=p*El(S),Y;if(vXi?E>Xi?(D=Y5(j,te,P,B,m,E,x),_=Y5($,U,F,G,m,E,x),l.moveTo(D.cx+D.x01,D.cy+D.y01),EXi)||!(k>Xi)?l.lineTo(F,G):L>Xi?(D=Y5(F,G,$,U,p,-L,x),_=Y5(P,B,j,te,p,-L,x),l.lineTo(D.cx+D.x01,D.cy+D.y01),L{"use strict";U5();q5();KD();o(PCe,"arcInnerRadius");o(BCe,"arcOuterRadius");o(FCe,"arcStartAngle");o($Ce,"arcEndAngle");o(zCe,"arcPadAngle");o(GCe,"intersect");o(Y5,"cornerTangents");o(Sl,"default")});function Gv(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}var Zxt,QD=N(()=>{"use strict";Zxt=Array.prototype.slice;o(Gv,"default")});function IX(t){this._context=t}function Cu(t){return new IX(t)}var ZD=N(()=>{"use strict";o(IX,"Linear");IX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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);break}},"point")};o(Cu,"default")});function OX(t){return t[0]}function PX(t){return t[1]}var BX=N(()=>{"use strict";o(OX,"x");o(PX,"y")});function Cl(t,e){var r=zn(!0),n=null,i=Cu,a=null,s=W5(l);t=typeof t=="function"?t:t===void 0?OX:zn(t),e=typeof e=="function"?e:e===void 0?PX:zn(e);function l(u){var h,f=(u=Gv(u)).length,d,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=f;++h)!(h{"use strict";QD();U5();ZD();KD();BX();o(Cl,"default")});function JD(t,e){return et?1:e>=t?0:NaN}var $X=N(()=>{"use strict";o(JD,"default")});function eL(t){return t}var zX=N(()=>{"use strict";o(eL,"default")});function X5(){var t=eL,e=JD,r=null,n=zn(0),i=zn(K0),a=zn(0);function s(l){var u,h=(l=Gv(l)).length,f,d,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(K0,Math.max(-K0,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),T=b*(v<0?-1:1),S;for(u=0;u0&&(p+=S);for(e!=null?m.sort(function(w,k){return e(g[w],g[k])}):r!=null&&m.sort(function(w,k){return r(l[w],l[k])}),u=0,d=p?(v-h*T)/p:0;u0?S*d:0)+T,g[f]={data:l[f],index:u,value:S,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(t=typeof l=="function"?l:zn(+l),s):t},s.sortValues=function(l){return arguments.length?(e=l,r=null,s):e},s.sort=function(l){return arguments.length?(r=l,e=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:zn(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:zn(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:zn(+l),s):a},s}var GX=N(()=>{"use strict";QD();U5();$X();zX();q5();o(X5,"default")});function Vv(t){return new j5(t,!0)}function Uv(t){return new j5(t,!1)}var j5,VX=N(()=>{"use strict";j5=class{static{o(this,"Bump")}constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}};o(Vv,"bumpX");o(Uv,"bumpY")});function so(){}var Hv=N(()=>{"use strict";o(so,"default")});function Q0(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 qv(t){this._context=t}function No(t){return new qv(t)}var Wv=N(()=>{"use strict";o(Q0,"point");o(qv,"Basis");qv.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:Q0(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:Q0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(No,"default")});function UX(t){this._context=t}function K5(t){return new UX(t)}var HX=N(()=>{"use strict";Hv();Wv();o(UX,"BasisClosed");UX.prototype={areaStart:so,areaEnd:so,lineStart:o(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:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:o(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:Q0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(K5,"default")});function qX(t){this._context=t}function Q5(t){return new qX(t)}var WX=N(()=>{"use strict";Wv();o(qX,"BasisOpen");qX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:Q0(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e},"point")};o(Q5,"default")});function YX(t,e){this._basis=new qv(t),this._beta=e}var tL,XX=N(()=>{"use strict";Wv();o(YX,"Bundle");YX.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n=t[0],i=e[0],a=t[r]-n,s=e[r]-i,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+u*a),this._beta*e[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(t,e){this._x.push(+t),this._y.push(+e)},"point")};tL=o((function t(e){function r(n){return e===1?new qv(n):new YX(n,e)}return o(r,"bundle"),r.beta=function(n){return t(+n)},r}),"custom")(.85)});function Z0(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function Z5(t,e){this._context=t,this._k=(1-e)/6}var Yv,Xv=N(()=>{"use strict";o(Z0,"point");o(Z5,"Cardinal");Z5.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Z0(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:Z0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};Yv=o((function t(e){function r(n){return new Z5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r}),"custom")(0)});function J5(t,e){this._context=t,this._k=(1-e)/6}var rL,nL=N(()=>{"use strict";Hv();Xv();o(J5,"CardinalClosed");J5.prototype={areaStart:so,areaEnd:so,lineStart:o(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:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(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:Z0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};rL=o((function t(e){function r(n){return new J5(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r}),"custom")(0)});function eT(t,e){this._context=t,this._k=(1-e)/6}var iL,aL=N(()=>{"use strict";Xv();o(eT,"CardinalOpen");eT.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(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:Z0(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};iL=o((function t(e){function r(n){return new eT(n,e)}return o(r,"cardinal"),r.tension=function(n){return t(+n)},r}),"custom")(0)});function jv(t,e,r){var n=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Xi){var l=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*l-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*l-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>Xi){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*h+t._x1*t._l23_2a-e*t._l12_2a)/f,s=(s*h+t._y1*t._l23_2a-r*t._l12_2a)/f}t._context.bezierCurveTo(n,i,a,s,t._x2,t._y2)}function jX(t,e){this._context=t,this._alpha=e}var Kv,tT=N(()=>{"use strict";q5();Xv();o(jv,"point");o(jX,"CatmullRom");jX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(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:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}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;default:jv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};Kv=o((function t(e){function r(n){return e?new jX(n,e):new Z5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r}),"custom")(.5)});function KX(t,e){this._context=t,this._alpha=e}var sL,QX=N(()=>{"use strict";nL();Hv();tT();o(KX,"CatmullRomClosed");KX.prototype={areaStart:so,areaEnd:so,lineStart:o(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:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(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:jv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};sL=o((function t(e){function r(n){return e?new KX(n,e):new J5(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r}),"custom")(.5)});function ZX(t,e){this._context=t,this._alpha=e}var oL,JX=N(()=>{"use strict";aL();tT();o(ZX,"CatmullRomOpen");ZX.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(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:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:jv(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e},"point")};oL=o((function t(e){function r(n){return e?new ZX(n,e):new eT(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return t(+n)},r}),"custom")(.5)});function ej(t){this._context=t}function rT(t){return new ej(t)}var tj=N(()=>{"use strict";Hv();o(ej,"LinearClosed");ej.prototype={areaStart:so,areaEnd:so,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))},"point")};o(rT,"default")});function rj(t){return t<0?-1:1}function nj(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),s=(r-t._y1)/(i||n<0&&-0),l=(a*i+s*n)/(n+i);return(rj(a)+rj(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function ij(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function lL(t,e,r){var n=t._x0,i=t._y0,a=t._x1,s=t._y1,l=(a-n)/3;t._context.bezierCurveTo(n+l,i+l*e,a-l,s-l*r,a,s)}function nT(t){this._context=t}function aj(t){this._context=new sj(t)}function sj(t){this._context=t}function Qv(t){return new nT(t)}function Zv(t){return new aj(t)}var oj=N(()=>{"use strict";o(rj,"sign");o(nj,"slope3");o(ij,"slope2");o(lL,"point");o(nT,"MonotoneX");nT.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:lL(this,this._t0,ij(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(t,e){var r=NaN;if(t=+t,e=+e,!(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,lL(this,ij(this,r=nj(this,t,e)),r);break;default:lL(this,this._t0,r=nj(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}},"point")};o(aj,"MonotoneY");(aj.prototype=Object.create(nT.prototype)).point=function(t,e){nT.prototype.point.call(this,e,t)};o(sj,"ReflectContext");sj.prototype={moveTo:o(function(t,e){this._context.moveTo(e,t)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(t,e){this._context.lineTo(e,t)},"lineTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)},"bezierCurveTo")};o(Qv,"monotoneX");o(Zv,"monotoneY")});function cj(t){this._context=t}function lj(t){var e,r=t.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e{"use strict";o(cj,"Natural");cj.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(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]),r===2)this._context.lineTo(t[1],e[1]);else for(var n=lj(t),i=lj(e),a=0,s=1;s{"use strict";o(iT,"Step");iT.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(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:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e},"point")};o(em,"default");o(Jv,"stepBefore");o(e2,"stepAfter")});var fj=N(()=>{"use strict";MX();FX();GX();HX();WX();Wv();VX();XX();nL();aL();Xv();QX();JX();tT();tj();ZD();oj();uj();hj()});var dj=N(()=>{"use strict"});var pj=N(()=>{"use strict"});function Bh(t,e,r){this.k=t,this.x=e,this.y=r}function uL(t){for(;!t.__zoom;)if(!(t=t.parentNode))return cL;return t.__zoom}var cL,hL=N(()=>{"use strict";o(Bh,"Transform");Bh.prototype={constructor:Bh,scale:o(function(t){return t===1?this:new Bh(this.k*t,this.x,this.y)},"scale"),translate:o(function(t,e){return t===0&e===0?this:new Bh(this.k,this.x+this.k*t,this.y+this.k*e)},"translate"),apply:o(function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},"apply"),applyX:o(function(t){return t*this.k+this.x},"applyX"),applyY:o(function(t){return t*this.k+this.y},"applyY"),invert:o(function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},"invert"),invertX:o(function(t){return(t-this.x)/this.k},"invertX"),invertY:o(function(t){return(t-this.y)/this.k},"invertY"),rescaleX:o(function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},"rescaleX"),rescaleY:o(function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};cL=new Bh(1,0,0);uL.prototype=Bh.prototype;o(uL,"transform")});var mj=N(()=>{"use strict"});var gj=N(()=>{"use strict";w5();dj();pj();hL();mj()});var yj=N(()=>{"use strict";gj();hL()});var yr=N(()=>{"use strict";Ch();SH();HW();XW();B0();jW();KW();JA();gq();QW();G_();ZW();eY();iD();pY();FY();z0();W_();$Y();JW();zY();AX();LX();yl();fj();G5();qD();g5();w5();yj()});var vj=Da(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.BLANK_URL=ji.relativeFirstCharacters=ji.whitespaceEscapeCharsRegex=ji.urlSchemeRegex=ji.ctrlCharactersRegex=ji.htmlCtrlEntityRegex=ji.htmlEntitiesRegex=ji.invalidProtocolRegex=void 0;ji.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;ji.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;ji.htmlCtrlEntityRegex=/&(newline|tab);/gi;ji.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;ji.urlSchemeRegex=/^.+(:|:)/gim;ji.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;ji.relativeFirstCharacters=[".","/"];ji.BLANK_URL="about:blank"});var tm=Da(aT=>{"use strict";Object.defineProperty(aT,"__esModule",{value:!0});aT.sanitizeUrl=void 0;var Na=vj();function VCe(t){return Na.relativeFirstCharacters.indexOf(t[0])>-1}o(VCe,"isRelativeUrlWithoutProtocol");function UCe(t){var e=t.replace(Na.ctrlCharactersRegex,"");return e.replace(Na.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(UCe,"decodeHtmlCharacters");function HCe(t){return URL.canParse(t)}o(HCe,"isValidUrl");function xj(t){try{return decodeURIComponent(t)}catch{return t}}o(xj,"decodeURI");function qCe(t){if(!t)return Na.BLANK_URL;var e,r=xj(t.trim());do r=UCe(r).replace(Na.htmlCtrlEntityRegex,"").replace(Na.ctrlCharactersRegex,"").replace(Na.whitespaceEscapeCharsRegex,"").trim(),r=xj(r),e=r.match(Na.ctrlCharactersRegex)||r.match(Na.htmlEntitiesRegex)||r.match(Na.htmlCtrlEntityRegex)||r.match(Na.whitespaceEscapeCharsRegex);while(e&&e.length>0);var n=r;if(!n)return Na.BLANK_URL;if(VCe(n))return n;var i=n.trimStart(),a=i.match(Na.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(Na.invalidProtocolRegex.test(s))return Na.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!HCe(l))return Na.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(qCe,"sanitizeUrl");aT.sanitizeUrl=qCe});var fL,Fd,sT,bj,oT,lT,ua,t2,r2=N(()=>{"use strict";fL=ja(tm(),1);gr();Fd=o((t,e)=>{let 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),e.attrs!==void 0)for(let n in e.attrs)r.attr(n,e.attrs[n]);return e.class&&r.attr("class",e.class),r},"drawRect"),sT=o((t,e)=>{let r={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};Fd(t,r).lower()},"drawBackgroundRect"),bj=o((t,e)=>{let r=e.text.replace(pd," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),oT=o((t,e,r,n)=>{let i=t.append("image");i.attr("x",e),i.attr("y",r);let a=(0,fL.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),lT=o((t,e,r,n)=>{let i=t.append("use");i.attr("x",e),i.attr("y",r);let a=(0,fL.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),ua=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),t2=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")});var Tj,dL,wj,WCe,YCe,XCe,jCe,KCe,QCe,ZCe,JCe,e7e,t7e,r7e,n7e,Au,Al,kj=N(()=>{"use strict";gr();r2();Tj=ja(tm(),1),dL=o(function(t,e){return Fd(t,e)},"drawRect"),wj=o(function(t,e,r,n,i,a){let s=t.append("image");s.attr("width",e),s.attr("height",r),s.attr("x",n),s.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,Tj.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),WCe=o((t,e,r)=>{let n=t.append("g"),i=0;for(let a of e){let s=a.textColor?a.textColor:"#444444",l=a.lineColor?a.lineColor:"#444444",u=a.offsetX?parseInt(a.offsetX):0,h=a.offsetY?parseInt(a.offsetY):0,f="";if(i===0){let p=n.append("line");p.attr("x1",a.startPoint.x),p.attr("y1",a.startPoint.y),p.attr("x2",a.endPoint.x),p.attr("y2",a.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",l),p.style("fill","none"),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)"),i=-1}else{let p=n.append("path");p.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)),a.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)")}let d=r.messageFont();Au(r)(a.label.text,n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,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:s},d),a.techn&&a.techn.text!==""&&(d=r.messageFont(),Au(r)("["+a.techn.text+"]",n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+u,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:s,"font-style":"italic"},d))}},"drawRels"),YCe=o(function(t,e,r){let n=t.append("g"),i=e.bgColor?e.bgColor:"none",a=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let u={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};dL(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,Au(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},h),e.type&&e.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,Au(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},h)),e.descr&&e.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,Au(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},h))},"drawBoundary"),XCe=o(function(t,e,r){let n=e.bgColor?e.bgColor:r[e.typeC4Shape.text+"_bg_color"],i=e.borderColor?e.borderColor:r[e.typeC4Shape.text+"_border_color"],a=e.fontColor?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=";break}let l=t.append("g");l.attr("class","person-man");let u=ua();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=e.x,u.y=e.y,u.fill=n,u.width=e.width,u.height=e.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},dL(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.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)),l.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":l.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)),l.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));break}let h=n7e(r,e.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.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":wj(l,48,48,e.x+e.width/2-24,e.y+e.image.Y,s);break}let f=r[e.typeC4Shape.text+"Font"]();return f.fontWeight="bold",f.fontSize=f.fontSize+2,f.fontColor=a,Au(r)(e.label.text,l,e.x,e.y+e.label.Y,e.width,e.height,{fill:a},f),f=r[e.typeC4Shape.text+"Font"](),f.fontColor=a,e.techn&&e.techn?.text!==""?Au(r)(e.techn.text,l,e.x,e.y+e.techn.Y,e.width,e.height,{fill:a,"font-style":"italic"},f):e.type&&e.type.text!==""&&Au(r)(e.type.text,l,e.x,e.y+e.type.Y,e.width,e.height,{fill:a,"font-style":"italic"},f),e.descr&&e.descr.text!==""&&(f=r.personFont(),f.fontColor=a,Au(r)(e.descr.text,l,e.x,e.y+e.descr.Y,e.width,e.height,{fill:a},f)),e.height},"drawC4Shape"),jCe=o(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"),KCe=o(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"),QCe=o(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"),ZCe=o(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"),JCe=o(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"),e7e=o(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"),t7e=o(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"),r7e=o(function(t){let r=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);r.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"),r.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"),n7e=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),Au=(function(){function t(i,a,s,l,u,h,f){let d=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(d,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d){let{fontSize:p,fontFamily:m,fontWeight:g}=d,y=i.split(tt.lineBreakRegex);for(let v=0;v{"use strict";i7e=typeof global=="object"&&global&&global.Object===Object&&global,uT=i7e});var a7e,s7e,hi,Mo=N(()=>{"use strict";pL();a7e=typeof self=="object"&&self&&self.Object===Object&&self,s7e=uT||a7e||Function("return this")(),hi=s7e});var o7e,Ki,$d=N(()=>{"use strict";Mo();o7e=hi.Symbol,Ki=o7e});function u7e(t){var e=l7e.call(t,n2),r=t[n2];try{t[n2]=void 0;var n=!0}catch{}var i=c7e.call(t);return n&&(e?t[n2]=r:delete t[n2]),i}var Ej,l7e,c7e,n2,Sj,Cj=N(()=>{"use strict";$d();Ej=Object.prototype,l7e=Ej.hasOwnProperty,c7e=Ej.toString,n2=Ki?Ki.toStringTag:void 0;o(u7e,"getRawTag");Sj=u7e});function d7e(t){return f7e.call(t)}var h7e,f7e,Aj,_j=N(()=>{"use strict";h7e=Object.prototype,f7e=h7e.toString;o(d7e,"objectToString");Aj=d7e});function g7e(t){return t==null?t===void 0?m7e:p7e:Dj&&Dj in Object(t)?Sj(t):Aj(t)}var p7e,m7e,Dj,ha,_u=N(()=>{"use strict";$d();Cj();_j();p7e="[object Null]",m7e="[object Undefined]",Dj=Ki?Ki.toStringTag:void 0;o(g7e,"baseGetTag");ha=g7e});function y7e(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Sn,oo=N(()=>{"use strict";o(y7e,"isObject");Sn=y7e});function w7e(t){if(!Sn(t))return!1;var e=ha(t);return e==x7e||e==b7e||e==v7e||e==T7e}var v7e,x7e,b7e,T7e,Si,i2=N(()=>{"use strict";_u();oo();v7e="[object AsyncFunction]",x7e="[object Function]",b7e="[object GeneratorFunction]",T7e="[object Proxy]";o(w7e,"isFunction");Si=w7e});var k7e,hT,Lj=N(()=>{"use strict";Mo();k7e=hi["__core-js_shared__"],hT=k7e});function E7e(t){return!!Rj&&Rj in t}var Rj,Nj,Mj=N(()=>{"use strict";Lj();Rj=(function(){var t=/[^.]+$/.exec(hT&&hT.keys&&hT.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();o(E7e,"isMasked");Nj=E7e});function A7e(t){if(t!=null){try{return C7e.call(t)}catch{}try{return t+""}catch{}}return""}var S7e,C7e,Du,mL=N(()=>{"use strict";S7e=Function.prototype,C7e=S7e.toString;o(A7e,"toSource");Du=A7e});function O7e(t){if(!Sn(t)||Nj(t))return!1;var e=Si(t)?I7e:D7e;return e.test(Du(t))}var _7e,D7e,L7e,R7e,N7e,M7e,I7e,Ij,Oj=N(()=>{"use strict";i2();Mj();oo();mL();_7e=/[\\^$.*+?()[\]{}|]/g,D7e=/^\[object .+?Constructor\]$/,L7e=Function.prototype,R7e=Object.prototype,N7e=L7e.toString,M7e=R7e.hasOwnProperty,I7e=RegExp("^"+N7e.call(M7e).replace(_7e,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(O7e,"baseIsNative");Ij=O7e});function P7e(t,e){return t?.[e]}var Pj,Bj=N(()=>{"use strict";o(P7e,"getValue");Pj=P7e});function B7e(t,e){var r=Pj(t,e);return Ij(r)?r:void 0}var Ls,Fh=N(()=>{"use strict";Oj();Bj();o(B7e,"getNative");Ls=B7e});var F7e,Lu,a2=N(()=>{"use strict";Fh();F7e=Ls(Object,"create"),Lu=F7e});function $7e(){this.__data__=Lu?Lu(null):{},this.size=0}var Fj,$j=N(()=>{"use strict";a2();o($7e,"hashClear");Fj=$7e});function z7e(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var zj,Gj=N(()=>{"use strict";o(z7e,"hashDelete");zj=z7e});function H7e(t){var e=this.__data__;if(Lu){var r=e[t];return r===G7e?void 0:r}return U7e.call(e,t)?e[t]:void 0}var G7e,V7e,U7e,Vj,Uj=N(()=>{"use strict";a2();G7e="__lodash_hash_undefined__",V7e=Object.prototype,U7e=V7e.hasOwnProperty;o(H7e,"hashGet");Vj=H7e});function Y7e(t){var e=this.__data__;return Lu?e[t]!==void 0:W7e.call(e,t)}var q7e,W7e,Hj,qj=N(()=>{"use strict";a2();q7e=Object.prototype,W7e=q7e.hasOwnProperty;o(Y7e,"hashHas");Hj=Y7e});function j7e(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Lu&&e===void 0?X7e:e,this}var X7e,Wj,Yj=N(()=>{"use strict";a2();X7e="__lodash_hash_undefined__";o(j7e,"hashSet");Wj=j7e});function rm(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";$j();Gj();Uj();qj();Yj();o(rm,"Hash");rm.prototype.clear=Fj;rm.prototype.delete=zj;rm.prototype.get=Vj;rm.prototype.has=Hj;rm.prototype.set=Wj;gL=rm});function K7e(){this.__data__=[],this.size=0}var jj,Kj=N(()=>{"use strict";o(K7e,"listCacheClear");jj=K7e});function Q7e(t,e){return t===e||t!==t&&e!==e}var Io,zd=N(()=>{"use strict";o(Q7e,"eq");Io=Q7e});function Z7e(t,e){for(var r=t.length;r--;)if(Io(t[r][0],e))return r;return-1}var $h,s2=N(()=>{"use strict";zd();o(Z7e,"assocIndexOf");$h=Z7e});function tAe(t){var e=this.__data__,r=$h(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():eAe.call(e,r,1),--this.size,!0}var J7e,eAe,Qj,Zj=N(()=>{"use strict";s2();J7e=Array.prototype,eAe=J7e.splice;o(tAe,"listCacheDelete");Qj=tAe});function rAe(t){var e=this.__data__,r=$h(e,t);return r<0?void 0:e[r][1]}var Jj,eK=N(()=>{"use strict";s2();o(rAe,"listCacheGet");Jj=rAe});function nAe(t){return $h(this.__data__,t)>-1}var tK,rK=N(()=>{"use strict";s2();o(nAe,"listCacheHas");tK=nAe});function iAe(t,e){var r=this.__data__,n=$h(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var nK,iK=N(()=>{"use strict";s2();o(iAe,"listCacheSet");nK=iAe});function nm(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";Kj();Zj();eK();rK();iK();o(nm,"ListCache");nm.prototype.clear=jj;nm.prototype.delete=Qj;nm.prototype.get=Jj;nm.prototype.has=tK;nm.prototype.set=nK;zh=nm});var aAe,Gh,fT=N(()=>{"use strict";Fh();Mo();aAe=Ls(hi,"Map"),Gh=aAe});function sAe(){this.size=0,this.__data__={hash:new gL,map:new(Gh||zh),string:new gL}}var aK,sK=N(()=>{"use strict";Xj();o2();fT();o(sAe,"mapCacheClear");aK=sAe});function oAe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var oK,lK=N(()=>{"use strict";o(oAe,"isKeyable");oK=oAe});function lAe(t,e){var r=t.__data__;return oK(e)?r[typeof e=="string"?"string":"hash"]:r.map}var Vh,l2=N(()=>{"use strict";lK();o(lAe,"getMapData");Vh=lAe});function cAe(t){var e=Vh(this,t).delete(t);return this.size-=e?1:0,e}var cK,uK=N(()=>{"use strict";l2();o(cAe,"mapCacheDelete");cK=cAe});function uAe(t){return Vh(this,t).get(t)}var hK,fK=N(()=>{"use strict";l2();o(uAe,"mapCacheGet");hK=uAe});function hAe(t){return Vh(this,t).has(t)}var dK,pK=N(()=>{"use strict";l2();o(hAe,"mapCacheHas");dK=hAe});function fAe(t,e){var r=Vh(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var mK,gK=N(()=>{"use strict";l2();o(fAe,"mapCacheSet");mK=fAe});function im(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{"use strict";sK();uK();fK();pK();gK();o(im,"MapCache");im.prototype.clear=aK;im.prototype.delete=cK;im.prototype.get=hK;im.prototype.has=dK;im.prototype.set=mK;Gd=im});function yL(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(dAe);var r=o(function(){var n=arguments,i=e?e.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=t.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(yL.Cache||Gd),r}var dAe,am,vL=N(()=>{"use strict";dT();dAe="Expected a function";o(yL,"memoize");yL.Cache=Gd;am=yL});function pAe(){this.__data__=new zh,this.size=0}var yK,vK=N(()=>{"use strict";o2();o(pAe,"stackClear");yK=pAe});function mAe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var xK,bK=N(()=>{"use strict";o(mAe,"stackDelete");xK=mAe});function gAe(t){return this.__data__.get(t)}var TK,wK=N(()=>{"use strict";o(gAe,"stackGet");TK=gAe});function yAe(t){return this.__data__.has(t)}var kK,EK=N(()=>{"use strict";o(yAe,"stackHas");kK=yAe});function xAe(t,e){var r=this.__data__;if(r instanceof zh){var n=r.__data__;if(!Gh||n.length{"use strict";o2();fT();dT();vAe=200;o(xAe,"stackSet");SK=xAe});function sm(t){var e=this.__data__=new zh(t);this.size=e.size}var dc,c2=N(()=>{"use strict";o2();vK();bK();wK();EK();CK();o(sm,"Stack");sm.prototype.clear=yK;sm.prototype.delete=xK;sm.prototype.get=TK;sm.prototype.has=kK;sm.prototype.set=SK;dc=sm});var bAe,om,xL=N(()=>{"use strict";Fh();bAe=(function(){try{var t=Ls(Object,"defineProperty");return t({},"",{}),t}catch{}})(),om=bAe});function TAe(t,e,r){e=="__proto__"&&om?om(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var pc,lm=N(()=>{"use strict";xL();o(TAe,"baseAssignValue");pc=TAe});function wAe(t,e,r){(r!==void 0&&!Io(t[e],r)||r===void 0&&!(e in t))&&pc(t,e,r)}var u2,bL=N(()=>{"use strict";lm();zd();o(wAe,"assignMergeValue");u2=wAe});function kAe(t){return function(e,r,n){for(var i=-1,a=Object(e),s=n(e),l=s.length;l--;){var u=s[t?l:++i];if(r(a[u],u,a)===!1)break}return e}}var AK,_K=N(()=>{"use strict";o(kAe,"createBaseFor");AK=kAe});var EAe,cm,pT=N(()=>{"use strict";_K();EAe=AK(),cm=EAe});function CAe(t,e){if(e)return t.slice();var r=t.length,n=RK?RK(r):new t.constructor(r);return t.copy(n),n}var NK,DK,SAe,LK,RK,mT,TL=N(()=>{"use strict";Mo();NK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,DK=NK&&typeof module=="object"&&module&&!module.nodeType&&module,SAe=DK&&DK.exports===NK,LK=SAe?hi.Buffer:void 0,RK=LK?LK.allocUnsafe:void 0;o(CAe,"cloneBuffer");mT=CAe});var AAe,um,wL=N(()=>{"use strict";Mo();AAe=hi.Uint8Array,um=AAe});function _Ae(t){var e=new t.constructor(t.byteLength);return new um(e).set(new um(t)),e}var hm,gT=N(()=>{"use strict";wL();o(_Ae,"cloneArrayBuffer");hm=_Ae});function DAe(t,e){var r=e?hm(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var yT,kL=N(()=>{"use strict";gT();o(DAe,"cloneTypedArray");yT=DAe});function LAe(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r{"use strict";o(LAe,"copyArray");vT=LAe});var MK,RAe,IK,OK=N(()=>{"use strict";oo();MK=Object.create,RAe=(function(){function t(){}return o(t,"object"),function(e){if(!Sn(e))return{};if(MK)return MK(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}})(),IK=RAe});function NAe(t,e){return function(r){return t(e(r))}}var xT,SL=N(()=>{"use strict";o(NAe,"overArg");xT=NAe});var MAe,fm,bT=N(()=>{"use strict";SL();MAe=xT(Object.getPrototypeOf,Object),fm=MAe});function OAe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||IAe;return t===r}var IAe,mc,dm=N(()=>{"use strict";IAe=Object.prototype;o(OAe,"isPrototype");mc=OAe});function PAe(t){return typeof t.constructor=="function"&&!mc(t)?IK(fm(t)):{}}var TT,CL=N(()=>{"use strict";OK();bT();dm();o(PAe,"initCloneObject");TT=PAe});function BAe(t){return t!=null&&typeof t=="object"}var ai,Oo=N(()=>{"use strict";o(BAe,"isObjectLike");ai=BAe});function $Ae(t){return ai(t)&&ha(t)==FAe}var FAe,AL,PK=N(()=>{"use strict";_u();Oo();FAe="[object Arguments]";o($Ae,"baseIsArguments");AL=$Ae});var BK,zAe,GAe,VAe,_l,pm=N(()=>{"use strict";PK();Oo();BK=Object.prototype,zAe=BK.hasOwnProperty,GAe=BK.propertyIsEnumerable,VAe=AL((function(){return arguments})())?AL:function(t){return ai(t)&&zAe.call(t,"callee")&&!GAe.call(t,"callee")},_l=VAe});var UAe,Bt,Yn=N(()=>{"use strict";UAe=Array.isArray,Bt=UAe});function qAe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=HAe}var HAe,mm,wT=N(()=>{"use strict";HAe=9007199254740991;o(qAe,"isLength");mm=qAe});function WAe(t){return t!=null&&mm(t.length)&&!Si(t)}var fi,Po=N(()=>{"use strict";i2();wT();o(WAe,"isArrayLike");fi=WAe});function YAe(t){return ai(t)&&fi(t)}var Vd,kT=N(()=>{"use strict";Po();Oo();o(YAe,"isArrayLikeObject");Vd=YAe});function XAe(){return!1}var FK,$K=N(()=>{"use strict";o(XAe,"stubFalse");FK=XAe});var VK,zK,jAe,GK,KAe,QAe,Dl,gm=N(()=>{"use strict";Mo();$K();VK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zK=VK&&typeof module=="object"&&module&&!module.nodeType&&module,jAe=zK&&zK.exports===VK,GK=jAe?hi.Buffer:void 0,KAe=GK?GK.isBuffer:void 0,QAe=KAe||FK,Dl=QAe});function n8e(t){if(!ai(t)||ha(t)!=ZAe)return!1;var e=fm(t);if(e===null)return!0;var r=t8e.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&UK.call(r)==r8e}var ZAe,JAe,e8e,UK,t8e,r8e,HK,qK=N(()=>{"use strict";_u();bT();Oo();ZAe="[object Object]",JAe=Function.prototype,e8e=Object.prototype,UK=JAe.toString,t8e=e8e.hasOwnProperty,r8e=UK.call(Object);o(n8e,"isPlainObject");HK=n8e});function _8e(t){return ai(t)&&mm(t.length)&&!!Gn[ha(t)]}var i8e,a8e,s8e,o8e,l8e,c8e,u8e,h8e,f8e,d8e,p8e,m8e,g8e,y8e,v8e,x8e,b8e,T8e,w8e,k8e,E8e,S8e,C8e,A8e,Gn,WK,YK=N(()=>{"use strict";_u();wT();Oo();i8e="[object Arguments]",a8e="[object Array]",s8e="[object Boolean]",o8e="[object Date]",l8e="[object Error]",c8e="[object Function]",u8e="[object Map]",h8e="[object Number]",f8e="[object Object]",d8e="[object RegExp]",p8e="[object Set]",m8e="[object String]",g8e="[object WeakMap]",y8e="[object ArrayBuffer]",v8e="[object DataView]",x8e="[object Float32Array]",b8e="[object Float64Array]",T8e="[object Int8Array]",w8e="[object Int16Array]",k8e="[object Int32Array]",E8e="[object Uint8Array]",S8e="[object Uint8ClampedArray]",C8e="[object Uint16Array]",A8e="[object Uint32Array]",Gn={};Gn[x8e]=Gn[b8e]=Gn[T8e]=Gn[w8e]=Gn[k8e]=Gn[E8e]=Gn[S8e]=Gn[C8e]=Gn[A8e]=!0;Gn[i8e]=Gn[a8e]=Gn[y8e]=Gn[s8e]=Gn[v8e]=Gn[o8e]=Gn[l8e]=Gn[c8e]=Gn[u8e]=Gn[h8e]=Gn[f8e]=Gn[d8e]=Gn[p8e]=Gn[m8e]=Gn[g8e]=!1;o(_8e,"baseIsTypedArray");WK=_8e});function D8e(t){return function(e){return t(e)}}var Bo,Ud=N(()=>{"use strict";o(D8e,"baseUnary");Bo=D8e});var XK,h2,L8e,_L,R8e,Fo,f2=N(()=>{"use strict";pL();XK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,h2=XK&&typeof module=="object"&&module&&!module.nodeType&&module,L8e=h2&&h2.exports===XK,_L=L8e&&uT.process,R8e=(function(){try{var t=h2&&h2.require&&h2.require("util").types;return t||_L&&_L.binding&&_L.binding("util")}catch{}})(),Fo=R8e});var jK,N8e,Uh,d2=N(()=>{"use strict";YK();Ud();f2();jK=Fo&&Fo.isTypedArray,N8e=jK?Bo(jK):WK,Uh=N8e});function M8e(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var p2,DL=N(()=>{"use strict";o(M8e,"safeGet");p2=M8e});function P8e(t,e,r){var n=t[e];(!(O8e.call(t,e)&&Io(n,r))||r===void 0&&!(e in t))&&pc(t,e,r)}var I8e,O8e,gc,ym=N(()=>{"use strict";lm();zd();I8e=Object.prototype,O8e=I8e.hasOwnProperty;o(P8e,"assignValue");gc=P8e});function B8e(t,e,r,n){var i=!r;r||(r={});for(var a=-1,s=e.length;++a{"use strict";ym();lm();o(B8e,"copyObject");$o=B8e});function F8e(t,e){for(var r=-1,n=Array(t);++r{"use strict";o(F8e,"baseTimes");KK=F8e});function G8e(t,e){var r=typeof t;return e=e??$8e,!!e&&(r=="number"||r!="symbol"&&z8e.test(t))&&t>-1&&t%1==0&&t{"use strict";$8e=9007199254740991,z8e=/^(?:0|[1-9]\d*)$/;o(G8e,"isIndex");Hh=G8e});function H8e(t,e){var r=Bt(t),n=!r&&_l(t),i=!r&&!n&&Dl(t),a=!r&&!n&&!i&&Uh(t),s=r||n||i||a,l=s?KK(t.length,String):[],u=l.length;for(var h in t)(e||U8e.call(t,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||Hh(h,u)))&&l.push(h);return l}var V8e,U8e,ET,LL=N(()=>{"use strict";QK();pm();Yn();gm();m2();d2();V8e=Object.prototype,U8e=V8e.hasOwnProperty;o(H8e,"arrayLikeKeys");ET=H8e});function q8e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var ZK,JK=N(()=>{"use strict";o(q8e,"nativeKeysIn");ZK=q8e});function X8e(t){if(!Sn(t))return ZK(t);var e=mc(t),r=[];for(var n in t)n=="constructor"&&(e||!Y8e.call(t,n))||r.push(n);return r}var W8e,Y8e,eQ,tQ=N(()=>{"use strict";oo();dm();JK();W8e=Object.prototype,Y8e=W8e.hasOwnProperty;o(X8e,"baseKeysIn");eQ=X8e});function j8e(t){return fi(t)?ET(t,!0):eQ(t)}var Rs,qh=N(()=>{"use strict";LL();tQ();Po();o(j8e,"keysIn");Rs=j8e});function K8e(t){return $o(t,Rs(t))}var rQ,nQ=N(()=>{"use strict";Hd();qh();o(K8e,"toPlainObject");rQ=K8e});function Q8e(t,e,r,n,i,a,s){var l=p2(t,r),u=p2(e,r),h=s.get(u);if(h){u2(t,r,h);return}var f=a?a(l,u,r+"",t,e,s):void 0,d=f===void 0;if(d){var p=Bt(u),m=!p&&Dl(u),g=!p&&!m&&Uh(u);f=u,p||m||g?Bt(l)?f=l:Vd(l)?f=vT(l):m?(d=!1,f=mT(u,!0)):g?(d=!1,f=yT(u,!0)):f=[]:HK(u)||_l(u)?(f=l,_l(l)?f=rQ(l):(!Sn(l)||Si(l))&&(f=TT(u))):d=!1}d&&(s.set(u,f),i(f,u,n,a,s),s.delete(u)),u2(t,r,f)}var iQ,aQ=N(()=>{"use strict";bL();TL();kL();EL();CL();pm();Yn();kT();gm();i2();oo();qK();d2();DL();nQ();o(Q8e,"baseMergeDeep");iQ=Q8e});function sQ(t,e,r,n,i){t!==e&&cm(e,function(a,s){if(i||(i=new dc),Sn(a))iQ(t,e,s,r,sQ,n,i);else{var l=n?n(p2(t,s),a,s+"",t,e,i):void 0;l===void 0&&(l=a),u2(t,s,l)}},Rs)}var oQ,lQ=N(()=>{"use strict";c2();bL();pT();aQ();oo();qh();DL();o(sQ,"baseMerge");oQ=sQ});function Z8e(t){return t}var Qi,Ru=N(()=>{"use strict";o(Z8e,"identity");Qi=Z8e});function J8e(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 cQ,uQ=N(()=>{"use strict";o(J8e,"apply");cQ=J8e});function e_e(t,e,r){return e=hQ(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,a=hQ(n.length-e,0),s=Array(a);++i{"use strict";uQ();hQ=Math.max;o(e_e,"overRest");ST=e_e});function t_e(t){return function(){return t}}var Ns,NL=N(()=>{"use strict";o(t_e,"constant");Ns=t_e});var r_e,fQ,dQ=N(()=>{"use strict";NL();xL();Ru();r_e=om?function(t,e){return om(t,"toString",{configurable:!0,enumerable:!1,value:Ns(e),writable:!0})}:Qi,fQ=r_e});function s_e(t){var e=0,r=0;return function(){var n=a_e(),i=i_e-(n-r);if(r=n,i>0){if(++e>=n_e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var n_e,i_e,a_e,pQ,mQ=N(()=>{"use strict";n_e=800,i_e=16,a_e=Date.now;o(s_e,"shortOut");pQ=s_e});var o_e,CT,ML=N(()=>{"use strict";dQ();mQ();o_e=pQ(fQ),CT=o_e});function l_e(t,e){return CT(ST(t,e,Qi),t+"")}var yc,vm=N(()=>{"use strict";Ru();RL();ML();o(l_e,"baseRest");yc=l_e});function c_e(t,e,r){if(!Sn(r))return!1;var n=typeof e;return(n=="number"?fi(r)&&Hh(e,r.length):n=="string"&&e in r)?Io(r[e],t):!1}var lo,qd=N(()=>{"use strict";zd();Po();m2();oo();o(c_e,"isIterateeCall");lo=c_e});function u_e(t){return yc(function(e,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=t.length>3&&typeof a=="function"?(i--,a):void 0,s&&lo(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++n{"use strict";vm();qd();o(u_e,"createAssigner");AT=u_e});var h_e,Wh,OL=N(()=>{"use strict";lQ();IL();h_e=AT(function(t,e,r){oQ(t,e,r)}),Wh=h_e});function FL(t,e){if(!t)return e;let r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return f_e[r]??e}function g_e(t,e){let r=t.trim();if(r)return e.securityLevel!=="loose"?(0,vQ.sanitizeUrl)(r):r}function TQ(t,e){return!t||!e?0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function v_e(t){let e,r=0;t.forEach(i=>{r+=TQ(i,e),e=i});let n=r/2;return $L(t,n)}function x_e(t){return t.length===1?t[0]:v_e(t)}function T_e(t,e,r){let n=structuredClone(r);X.info("our points",n),e!=="start_left"&&e!=="start_right"&&n.reverse();let i=25+t,a=$L(n,i),s=10+t*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return e==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):e==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):e==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function zL(t){let e="",r="";for(let n of t)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":e=e+n+";");return{style:e,labelStyle:r}}function w_e(t){let e="",r="0123456789abcdef",n=r.length;for(let i=0;iMath.round(parseFloat(a)).toString());return i.includes(r.toString())||i.includes(n.toString())}var vQ,BL,f_e,d_e,p_e,xQ,bQ,m_e,y_e,gQ,$L,b_e,yQ,GL,VL,k_e,E_e,UL,S_e,HL,PL,_T,C_e,A_e,vc,qt,wQ,Ji,xc,tr=N(()=>{"use strict";vQ=ja(tm(),1);yr();gr();S7();pt();vd();v0();vL();OL();F3();BL="\u200B",f_e={curveBasis:No,curveBasisClosed:K5,curveBasisOpen:Q5,curveBumpX:Vv,curveBumpY:Uv,curveBundle:tL,curveCardinalClosed:rL,curveCardinalOpen:iL,curveCardinal:Yv,curveCatmullRomClosed:sL,curveCatmullRomOpen:oL,curveCatmullRom:Kv,curveLinear:Cu,curveLinearClosed:rT,curveMonotoneX:Qv,curveMonotoneY:Zv,curveNatural:J0,curveStep:em,curveStepAfter:e2,curveStepBefore:Jv},d_e=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,p_e=o(function(t,e){let r=xQ(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);b0(s),n=Rn(n,[...s])}else n=r.args;if(!n)return;let i=_0(t,e),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),xQ=o(function(t,e=null){try{let r=new RegExp(`[%]{2}(?![{]${d_e.source})(?=[}][%]{2}).* -`,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),X.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let n,i=[];for(;(n=yd.exec(t))!==null;)if(n.index===yd.lastIndex&&yd.lastIndex++,n&&!e||e&&n[1]?.match(e)||e&&n[2]?.match(e)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:t,args:null}:i.length===1?i[0]:i}catch(r){return X.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),bQ=o(function(t){return t.replace(yd,"")},"removeDirectives"),m_e=o(function(t,e){for(let[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray");o(FL,"interpolateToCurve");o(g_e,"formatUrl");y_e=o((t,...e)=>{let r=t.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s{let r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),$L=o((t,e)=>{let r,n=e;for(let i of t){if(r){let a=TQ(i,r);if(a===0)return r;if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:gQ((1-s)*r.x+s*i.x,5),y:gQ((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),b_e=o((t,e,r)=>{X.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let i=$L(e,25),a=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(e[0].x+i.x)/2,l.y=-Math.cos(s)*a+(e[0].y+i.y)/2,l},"calcCardinalityPosition");o(T_e,"calcTerminalLabelPosition");o(zL,"getStylesFromArray");yQ=0,GL=o(()=>(yQ++,"id-"+Math.random().toString(36).substr(2,12)+"-"+yQ),"generateId");o(w_e,"makeRandomHex");VL=o(t=>w_e(t.length),"random"),k_e=o(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"),E_e=o(function(t,e){let r=e.text.replace(tt.lineBreakRegex," "),[,n]=vc(e.fontSize),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.style("font-family",e.fontFamily),i.style("font-size",n),i.style("font-weight",e.fontWeight),i.attr("fill",e.fill),e.class!==void 0&&i.attr("class",e.class);let a=i.append("tspan");return a.attr("x",e.x+e.textMargin*2),a.attr("fill",e.fill),a.text(r),i},"drawSimpleText"),UL=am((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},r),tt.lineBreakRegex.test(t)))return t;let n=t.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=Zi(`${s} `,r),h=Zi(a,r);if(u>e){let{hyphenatedStrings:p,remainingWord:m}=S_e(s,e,"-",r);i.push(a,...p),a=m}else h+u>=e?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),S_e=am((t,e,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...t],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(Zi(h,n)>=e){let d=u+1,p=i.length===d,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(t,e,r="-",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(DT,"calculateTextHeight");o(Zi,"calculateTextWidth");HL=am((t,e)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=e;if(!t)return{width:0,height:0};let[,a]=vc(r),s=["sans-serif",n],l=t.split(tt.lineBreakRegex),u=[],h=qe("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let f=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=k_e();v.text=y||BL;let x=E_e(f,v).style("font-size",a).style("font-weight",i).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}f.remove();let d=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[d]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),PL=class{constructor(e=!1,r){this.count=0;this.count=r?r.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},C_e=o(function(t){return _T=_T||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),_T.innerHTML=t,unescape(_T.textContent)},"entityDecode");o(qL,"isDetailedError");A_e=o((t,e,r,n)=>{if(!n)return;let i=t.node()?.getBBox();i&&t.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",e)},"insertTitle"),vc=o(t=>{if(typeof t=="number")return[t,t+"px"];let e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");o(Vn,"cleanAndMerge");qt={assignWithDepth:Rn,wrapLabel:UL,calculateTextHeight:DT,calculateTextWidth:Zi,calculateTextDimensions:HL,cleanAndMerge:Vn,detectInit:p_e,detectDirective:xQ,isSubstringInArray:m_e,interpolateToCurve:FL,calcLabelPosition:x_e,calcCardinalityPosition:b_e,calcTerminalLabelPosition:T_e,formatUrl:g_e,getStylesFromArray:zL,generateId:GL,random:VL,runFunc:y_e,entityDecode:C_e,insertTitle:A_e,isLabelCoordinateInPath:__e,parseFontSize:vc,InitIDGenerator:PL},wQ=o(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),e},"encodeEntities"),Ji=o(function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),xc=o((t,e,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${t}_${e}_${r}${i?`_${i}`:""}`,"getEdgeId");o(Cn,"handleUndefinedAttr");o(__e,"isLabelCoordinateInPath")});function Ll(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=UL(e[t].text,i,n),e[t].textLines=e[t].text.split(tt.lineBreakRegex).length,e[t].width=i,e[t].height=DT(e[t].text,n);else{let a=e[t].text.split(tt.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(let l of a)e[t].width=Math.max(Zi(l,n),e[t].width),s=DT(l,n),e[t].height=e[t].height+s}}function AQ(t,e,r,n,i){let a=new MT(i);a.data.widthLimit=r.data.widthLimit/Math.min(WL,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&Wt.wrap,f=LT(Wt);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Ll("label",l,h,f,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=LT(Wt);Ll("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=LT(Wt);g.fontSize=g.fontSize-2,Ll("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%WL===0){let g=r.data.startx+Wt.diagramMarginX,y=r.data.stopy+Wt.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+Wt.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let d=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&CQ(a,t,d,p),e=l.alias;let m=i.db.getBoundaries(e);m.length>0&&AQ(t,e,a,m,i),l.alias!=="global"&&SQ(t,l,a),r.data.stopy=Math.max(a.data.stopy+Wt.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+Wt.c4ShapeMargin,r.data.stopx),RT=Math.max(RT,r.data.stopx),NT=Math.max(NT,r.data.stopy)}}var RT,NT,EQ,WL,Wt,MT,YL,g2,LT,D_e,SQ,CQ,Ms,kQ,L_e,R_e,N_e,XL,_Q=N(()=>{"use strict";yr();kj();pt();RA();gr();GA();Xt();v0();tr();Ei();RT=0,NT=0,EQ=4,WL=2;tv.yy=ov;Wt={},MT=class{static{o(this,"Bounds")}constructor(e){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,YL(e.db.getConfig())}setData(e,r,n,i){this.nextData.startx=this.data.startx=e,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(e,r,n,i){e[r]===void 0?e[r]=n:e[r]=i(n,e[r])}insert(e){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+e.margin:this.nextData.stopx+e.margin*2,n=r+e.width,i=this.nextData.starty+e.margin*2,a=i+e.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>EQ)&&(r=this.nextData.startx+e.margin+Wt.nextLinePaddingX,i=this.nextData.stopy+e.margin*2,this.nextData.stopx=n=r+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+e.height,this.nextData.cnt=1),e.x=r,e.y=i,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(e){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},YL(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}},YL=o(function(t){Rn(Wt,t),t.fontFamily&&(Wt.personFontFamily=Wt.systemFontFamily=Wt.messageFontFamily=t.fontFamily),t.fontSize&&(Wt.personFontSize=Wt.systemFontSize=Wt.messageFontSize=t.fontSize),t.fontWeight&&(Wt.personFontWeight=Wt.systemFontWeight=Wt.messageFontWeight=t.fontWeight)},"setConf"),g2=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),LT=o(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),D_e=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");o(Ll,"calcC4ShapeTextWH");SQ=o(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=Wt.c4ShapeMargin-35;let n=e.wrap&&Wt.wrap,i=LT(Wt);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=Zi(e.label.text,i);Ll("label",e,n,i,a),Al.drawBoundary(t,e,Wt)},"drawBoundary"),CQ=o(function(t,e,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=g2(Wt,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=Zi("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=Wt.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let u=s.wrap&&Wt.wrap,h=Wt.width-Wt.c4ShapePadding*2,f=g2(Wt,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",Ll("label",s,u,f,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=g2(Wt,s.typeC4Shape.text);Ll("type",s,u,m,h),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=g2(Wt,s.techn.text);Ll("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let d=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=g2(Wt,s.typeC4Shape.text);Ll("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=i-s.descr.textLines*5}p=p+Wt.c4ShapePadding,s.width=Math.max(s.width||Wt.width,p,Wt.width),s.height=Math.max(s.height||Wt.height,d,Wt.height),s.margin=s.margin||Wt.c4ShapeMargin,t.insert(s),Al.drawC4Shape(e,s,Wt)}t.bumpLastMargin(Wt.c4ShapeMargin)},"drawC4ShapeArray"),Ms=class{static{o(this,"Point")}constructor(e,r){this.x=e,this.y=r}},kQ=o(function(t,e){let r=t.x,n=t.y,i=e.x,a=e.y,s=r+t.width/2,l=n+t.height/2,u=Math.abs(r-i),h=Math.abs(n-a),f=h/u,d=t.height/t.width,p=null;return n==a&&ri?p=new Ms(r,l):r==i&&na&&(p=new Ms(s,n)),r>i&&n=f?p=new Ms(r,l+f*t.width/2):p=new Ms(s-u/h*t.height/2,n+t.height):r=f?p=new Ms(r+t.width,l+f*t.width/2):p=new Ms(s+u/h*t.height/2,n+t.height):ra?d>=f?p=new Ms(r+t.width,l-f*t.width/2):p=new Ms(s+t.height/2*u/h,n):r>i&&n>a&&(d>=f?p=new Ms(r,l-t.width/2*f):p=new Ms(s-t.height/2*u/h,n)),p},"getIntersectPoint"),L_e=o(function(t,e){let r={x:0,y:0};r.x=e.x+e.width/2,r.y=e.y+e.height/2;let n=kQ(t,r);r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=kQ(e,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),R_e=o(function(t,e,r,n){let i=0;for(let a of e){i=i+1;let s=a.wrap&&Wt.wrap,l=D_e(Wt);n.db.getC4Type()==="C4Dynamic"&&(a.label.text=i+": "+a.label.text);let h=Zi(a.label.text,l);Ll("label",a,s,l,h),a.techn&&a.techn.text!==""&&(h=Zi(a.techn.text,l),Ll("techn",a,s,l,h)),a.descr&&a.descr.text!==""&&(h=Zi(a.descr.text,l),Ll("descr",a,s,l,h));let f=r(a.from),d=r(a.to),p=L_e(f,d);a.startPoint=p.startPoint,a.endPoint=p.endPoint}Al.drawRels(t,e,Wt)},"drawRels");o(AQ,"drawInsideBoundary");N_e=o(function(t,e,r,n){Wt=ge().c4;let i=ge().securityLevel,a;i==="sandbox"&&(a=qe("#i"+e));let s=i==="sandbox"?qe(a.nodes()[0].contentDocument.body):qe("body"),l=n.db;n.db.setWrap(Wt.wrap),EQ=l.getC4ShapeInRow(),WL=l.getC4BoundaryInRow(),X.debug(`C:${JSON.stringify(Wt,null,2)}`);let u=i==="sandbox"?s.select(`[id="${e}"]`):qe(`[id="${e}"]`);Al.insertComputerIcon(u),Al.insertDatabaseIcon(u),Al.insertClockIcon(u);let h=new MT(n);h.setData(Wt.diagramMarginX,Wt.diagramMarginX,Wt.diagramMarginY,Wt.diagramMarginY),h.data.widthLimit=screen.availWidth,RT=Wt.diagramMarginX,NT=Wt.diagramMarginY;let f=n.db.getTitle(),d=n.db.getBoundaries("");AQ(u,"",h,d,n),Al.insertArrowHead(u),Al.insertArrowEnd(u),Al.insertArrowCrossHead(u),Al.insertArrowFilledHead(u),R_e(u,n.db.getRels(),n.db.getC4Shape,n),h.data.stopx=RT,h.data.stopy=NT;let p=h.data,g=p.stopy-p.starty+2*Wt.diagramMarginY,v=p.stopx-p.startx+2*Wt.diagramMarginX;f&&u.append("text").text(f).attr("x",(p.stopx-p.startx)/2-4*Wt.diagramMarginX).attr("y",p.starty+Wt.diagramMarginY),mn(u,g,v,Wt.useMaxWidth);let x=f?60:0;u.attr("viewBox",p.startx-Wt.diagramMarginX+" -"+(Wt.diagramMarginY+x)+" "+v+" "+(g+x)),X.debug("models:",p)},"draw"),XL={drawPersonOrSystemArray:CQ,drawBoundary:SQ,setConf:YL,draw:N_e}});var M_e,DQ,LQ=N(()=>{"use strict";M_e=o(t=>`.person { - stroke: ${t.personBorder}; - fill: ${t.personBkg}; - } -`,"getStyles"),DQ=M_e});var RQ={};dr(RQ,{diagram:()=>I_e});var I_e,NQ=N(()=>{"use strict";RA();GA();_Q();LQ();I_e={parser:nH,db:ov,renderer:XL,styles:DQ,init:o(({c4:t,wrap:e})=>{XL.setConf(t),ov.setWrap(e)},"init")}});function jQ(t){return typeof t>"u"||t===null}function F_e(t){return typeof t=="object"&&t!==null}function $_e(t){return Array.isArray(t)?t:jQ(t)?[]:[t]}function z_e(t,e){var r,n,i,a;if(e)for(a=Object.keys(e),r=0,n=a.length;rl&&(a=" ... ",e=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+s,pos:n-e+a.length}}function KL(t,e){return Pi.repeat(" ",e-t.length)+t}function j_e(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(t.buffer);)i.push(a.index),n.push(a.index+a[0].length),t.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var l="",u,h,f=Math.min(t.line+e.linesAfter,i.length).toString().length,d=e.maxLength-(e.indent+f+3);for(u=1;u<=e.linesBefore&&!(s-u<0);u++)h=jL(t.buffer,n[s-u],i[s-u],t.position-(n[s]-n[s-u]),d),l=Pi.repeat(" ",e.indent)+KL((t.line-u+1).toString(),f)+" | "+h.str+` -`+l;for(h=jL(t.buffer,n[s],i[s],t.position,d),l+=Pi.repeat(" ",e.indent)+KL((t.line+1).toString(),f)+" | "+h.str+` -`,l+=Pi.repeat("-",e.indent+f+3+h.pos)+`^ -`,u=1;u<=e.linesAfter&&!(s+u>=i.length);u++)h=jL(t.buffer,n[s+u],i[s+u],t.position-(n[s]-n[s+u]),d),l+=Pi.repeat(" ",e.indent)+KL((t.line+u+1).toString(),f)+" | "+h.str+` -`;return l.replace(/\n$/,"")}function J_e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function eDe(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(Q_e.indexOf(r)===-1)throw new Is('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=J_e(e.styleAliases||null),Z_e.indexOf(this.kind)===-1)throw new Is('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}function IQ(t,e){var r=[];return t[e].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function tDe(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,r;function n(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(o(n,"collectType"),e=0,r=arguments.length;e=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:r*parseFloat(e,10)}function CDe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Pi.isNegativeZero(t))return"-0.0";return r=t.toString(10),SDe.test(r)?r.replace("e",".e"):r}function ADe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Pi.isNegativeZero(t))}function LDe(t){return t===null?!1:ZQ.exec(t)!==null||JQ.exec(t)!==null}function RDe(t){var e,r,n,i,a,s,l,u=0,h=null,f,d,p;if(e=ZQ.exec(t),e===null&&(e=JQ.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(a=+e[4],s=+e[5],l=+e[6],e[7]){for(u=e[7].slice(0,3);u.length<3;)u+="0";u=+u}return e[9]&&(f=+e[10],d=+(e[11]||0),h=(f*60+d)*6e4,e[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function NDe(t){return t.toISOString()}function IDe(t){return t==="<<"||t===null}function PDe(t){if(t===null)return!1;var e,r,n=0,i=t.length,a=n9;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8===0}function BDe(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,a=n9,s=0,l=[];for(e=0;e>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(e));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function FDe(t){var e="",r=0,n,i,a=t.length,s=n9;for(n=0;n>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]),r=(r<<8)+t[n];return i=a%3,i===0?(e+=s[r>>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]):i===2?(e+=s[r>>10&63],e+=s[r>>4&63],e+=s[r<<2&63],e+=s[64]):i===1&&(e+=s[r>>2&63],e+=s[r<<4&63],e+=s[64],e+=s[64]),e}function $De(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}function UDe(t){if(t===null)return!0;var e=[],r,n,i,a,s,l=t;for(r=0,n=l.length;r>10)+55296,(t-65536&1023)+56320)}function lLe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||eZ,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 oZ(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=K_e(r),new Is(e,r)}function Zt(t,e){throw oZ(t,e)}function PT(t,e){t.onWarning&&t.onWarning.call(null,oZ(t,e))}function Yh(t,e,r,n){var i,a,s,l;if(e1&&(t.result+=Pi.repeat(` -`,e-1))}function cLe(t,e,r){var n,i,a,s,l,u,h,f,d=t.kind,p=t.result,m;if(m=t.input.charCodeAt(t.position),Os(m)||bm(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=t.input.charCodeAt(t.position+1),Os(i)||r&&bm(i)))return!1;for(t.kind="scalar",t.result="",a=s=t.position,l=!1;m!==0;){if(m===58){if(i=t.input.charCodeAt(t.position+1),Os(i)||r&&bm(i))break}else if(m===35){if(n=t.input.charCodeAt(t.position-1),Os(n))break}else{if(t.position===t.lineStart&&$T(t)||r&&bm(m))break;if(bc(m))if(u=t.line,h=t.lineStart,f=t.lineIndent,Ci(t,!1,-1),t.lineIndent>=e){l=!0,m=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=u,t.lineStart=h,t.lineIndent=f;break}}l&&(Yh(t,a,s,!1),a9(t,t.line-u),a=s=t.position,l=!1),Yd(m)||(s=t.position+1),m=t.input.charCodeAt(++t.position)}return Yh(t,a,s,!1),t.result?!0:(t.kind=d,t.result=p,!1)}function uLe(t,e){var r,n,i;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Yh(t,n,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)n=t.position,t.position++,i=t.position;else return!0;else bc(r)?(Yh(t,n,i,!0),a9(t,Ci(t,!1,e)),n=i=t.position):t.position===t.lineStart&&$T(t)?Zt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);Zt(t,"unexpected end of the stream within a single quoted scalar")}function hLe(t,e){var r,n,i,a,s,l;if(l=t.input.charCodeAt(t.position),l!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(l=t.input.charCodeAt(t.position))!==0;){if(l===34)return Yh(t,r,t.position,!0),t.position++,!0;if(l===92){if(Yh(t,r,t.position,!0),l=t.input.charCodeAt(++t.position),bc(l))Ci(t,!1,e);else if(l<256&&aZ[l])t.result+=sZ[l],t.position++;else if((s=aLe(l))>0){for(i=s,a=0;i>0;i--)l=t.input.charCodeAt(++t.position),(s=iLe(l))>=0?a=(a<<4)+s:Zt(t,"expected hexadecimal character");t.result+=oLe(a),t.position++}else Zt(t,"unknown escape sequence");r=n=t.position}else bc(l)?(Yh(t,r,n,!0),a9(t,Ci(t,!1,e)),r=n=t.position):t.position===t.lineStart&&$T(t)?Zt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}Zt(t,"unexpected end of the stream within a double quoted scalar")}function fLe(t,e){var r=!0,n,i,a,s=t.tag,l,u=t.anchor,h,f,d,p,m,g=Object.create(null),y,v,x,b;if(b=t.input.charCodeAt(t.position),b===91)f=93,m=!1,l=[];else if(b===123)f=125,m=!0,l={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=l),b=t.input.charCodeAt(++t.position);b!==0;){if(Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===f)return t.position++,t.tag=s,t.anchor=u,t.kind=m?"mapping":"sequence",t.result=l,!0;r?b===44&&Zt(t,"expected the node content, but found ','"):Zt(t,"missed comma between flow collection entries"),v=y=x=null,d=p=!1,b===63&&(h=t.input.charCodeAt(t.position+1),Os(h)&&(d=p=!0,t.position++,Ci(t,!0,e))),n=t.line,i=t.lineStart,a=t.position,wm(t,e,IT,!1,!0),v=t.tag,y=t.result,Ci(t,!0,e),b=t.input.charCodeAt(t.position),(p||t.line===n)&&b===58&&(d=!0,b=t.input.charCodeAt(++t.position),Ci(t,!0,e),wm(t,e,IT,!1,!0),x=t.result),m?Tm(t,l,g,v,y,x,n,i,a):d?l.push(Tm(t,null,g,v,y,x,n,i,a)):l.push(y),Ci(t,!0,e),b=t.input.charCodeAt(t.position),b===44?(r=!0,b=t.input.charCodeAt(++t.position)):r=!1}Zt(t,"unexpected end of the stream within a flow collection")}function dLe(t,e){var r,n,i=QL,a=!1,s=!1,l=e,u=0,h=!1,f,d;if(d=t.input.charCodeAt(t.position),d===124)n=!1;else if(d===62)n=!0;else return!1;for(t.kind="scalar",t.result="";d!==0;)if(d=t.input.charCodeAt(++t.position),d===43||d===45)QL===i?i=d===43?OQ:eLe:Zt(t,"repeat of a chomping mode identifier");else if((f=sLe(d))>=0)f===0?Zt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?Zt(t,"repeat of an indentation width identifier"):(l=e+f-1,s=!0);else break;if(Yd(d)){do d=t.input.charCodeAt(++t.position);while(Yd(d));if(d===35)do d=t.input.charCodeAt(++t.position);while(!bc(d)&&d!==0)}for(;d!==0;){for(i9(t),t.lineIndent=0,d=t.input.charCodeAt(t.position);(!s||t.lineIndentl&&(l=t.lineIndent),bc(d)){u++;continue}if(t.lineIndente)&&u!==0)Zt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(v&&(s=t.line,l=t.lineStart,u=t.position),wm(t,e,OT,!0,i)&&(v?g=t.result:y=t.result),v||(Tm(t,d,p,m,g,y,s,l,u),m=g=y=null),Ci(t,!0,-1),b=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&b!==0)Zt(t,"bad indentation of a mapping entry");else if(t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndente?u=1:t.lineIndent===e?u=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),d=0,p=t.implicitTypes.length;d"),t.result!==null&&g.kind!==t.kind&&Zt(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+g.kind+'", not "'+t.kind+'"'),g.resolve(t.result,t.tag)?(t.result=g.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Zt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||f}function vLe(t){var e=t.position,r,n,i,a=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(Ci(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(a=!0,s=t.input.charCodeAt(++t.position),r=t.position;s!==0&&!Os(s);)s=t.input.charCodeAt(++t.position);for(n=t.input.slice(r,t.position),i=[],n.length<1&&Zt(t,"directive name must not be less than one character in length");s!==0;){for(;Yd(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!bc(s));break}if(bc(s))break;for(r=t.position;s!==0&&!Os(s);)s=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}s!==0&&i9(t),Xh.call(FQ,n)?FQ[n](t,n,i):PT(t,'unknown document directive "'+n+'"')}if(Ci(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Ci(t,!0,-1)):a&&Zt(t,"directives end mark is expected"),wm(t,t.lineIndent-1,OT,!1,!0),Ci(t,!0,-1),t.checkLineBreaks&&rLe.test(t.input.slice(e,t.position))&&PT(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&$T(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Ci(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var n=lZ(t,r);if(typeof e!="function")return n;for(var i=0,a=n.length;i=55296&&r<=56319&&e+1=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function yZ(t){var e=/^\n* /;return e.test(t)}function XLe(t,e,r,n,i,a,s,l){var u,h=0,f=null,d=!1,p=!1,m=n!==-1,g=-1,y=WLe(y2(t,0))&&YLe(y2(t,t.length-1));if(e||s)for(u=0;u=65536?u+=2:u++){if(h=y2(t,u),!T2(h))return xm;y=y&&UQ(h,f,l),f=h}else{for(u=0;u=65536?u+=2:u++){if(h=y2(t,u),h===x2)d=!0,m&&(p=p||u-g-1>n&&t[g+1]!==" ",g=u);else if(!T2(h))return xm;y=y&&UQ(h,f,l),f=h}p=p||m&&u-g-1>n&&t[g+1]!==" "}return!d&&!p?y&&!s&&!i(t)?vZ:a===b2?xm:t9:r>9&&yZ(t)?xm:s?a===b2?xm:t9:p?bZ:xZ}function jLe(t,e,r,n,i){t.dump=(function(){if(e.length===0)return t.quotingType===b2?'""':"''";if(!t.noCompatMode&&($Le.indexOf(e)!==-1||zLe.test(e)))return t.quotingType===b2?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),l=n||t.flowLevel>-1&&r>=t.flowLevel;function u(h){return qLe(t,h)}switch(o(u,"testAmbiguity"),XLe(e,l,t.indent,s,u,t.quotingType,t.forceQuotes&&!n,i)){case vZ:return e;case t9:return"'"+e.replace(/'/g,"''")+"'";case xZ:return"|"+HQ(e,t.indent)+qQ(GQ(e,a));case bZ:return">"+HQ(e,t.indent)+qQ(GQ(KLe(e,s),a));case xm:return'"'+QLe(e)+'"';default:throw new Is("impossible error: invalid scalar style")}})()}function HQ(t,e){var r=yZ(t)?String(e):"",n=t[t.length-1]===` -`,i=n&&(t[t.length-2]===` -`||t===` -`),a=i?"+":n?"":"-";return r+a+` -`}function qQ(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function KLe(t,e){for(var r=/(\n+)([^\n]*)/g,n=(function(){var h=t.indexOf(` -`);return h=h!==-1?h:t.length,r.lastIndex=h,WQ(t.slice(0,h),e)})(),i=t[0]===` -`||t[0]===" ",a,s;s=r.exec(t);){var l=s[1],u=s[2];a=u[0]===" ",n+=l+(!i&&!a&&u!==""?` -`:"")+WQ(u,e),i=a}return n}function WQ(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(t);)l=n.index,l-i>e&&(a=s>i?s:l,u+=` -`+t.slice(i,a),i=a+1),s=l;return u+=` -`,t.length-i>e&&s>i?u+=t.slice(i,s)+` -`+t.slice(s+1):u+=t.slice(i),u.slice(1)}function QLe(t){for(var e="",r=0,n,i=0;i=65536?i+=2:i++)r=y2(t,i),n=Ia[r],!n&&T2(r)?(e+=t[i],r>=65536&&(e+=t[i+1])):e+=n||VLe(r);return e}function ZLe(t,e,r){var n="",i=t.tag,a,s,l;for(a=0,s=r.length;a"u"&&Nu(t,e,null,!1,!1))&&(n!==""&&(n+=","+(t.condenseFlow?"":" ")),n+=t.dump);t.tag=i,t.dump="["+n+"]"}function YQ(t,e,r,n){var i="",a=t.tag,s,l,u;for(s=0,l=r.length;s"u"&&Nu(t,e+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=e9(t,e)),t.dump&&x2===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=a,t.dump=i||"[]"}function JLe(t,e,r){var n="",i=t.tag,a=Object.keys(r),s,l,u,h,f;for(s=0,l=a.length;s1024&&(f+="? "),f+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Nu(t,e,h,!1,!1)&&(f+=t.dump,n+=f));t.tag=i,t.dump="{"+n+"}"}function e9e(t,e,r,n){var i="",a=t.tag,s=Object.keys(r),l,u,h,f,d,p;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new Is("sortKeys must be a boolean or a function");for(l=0,u=s.length;l1024,d&&(t.dump&&x2===t.dump.charCodeAt(0)?p+="?":p+="? "),p+=t.dump,d&&(p+=e9(t,e)),Nu(t,e+1,f,!0,d)&&(t.dump&&x2===t.dump.charCodeAt(0)?p+=":":p+=": ",p+=t.dump,i+=p));t.tag=a,t.dump=i||"{}"}function XQ(t,e,r){var n,i,a,s,l,u;for(i=r?t.explicitTypes:t.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+u+'" style');t.dump=n}return!0}return!1}function Nu(t,e,r,n,i,a,s){t.tag=null,t.dump=r,XQ(t,r,!1)||XQ(t,r,!0);var l=uZ.call(t.dump),u=n,h;n&&(n=t.flowLevel<0||t.flowLevel>e);var f=l==="[object Object]"||l==="[object Array]",d,p;if(f&&(d=t.duplicates.indexOf(r),p=d!==-1),(t.tag!==null&&t.tag!=="?"||p||t.indent!==2&&e>0)&&(i=!1),p&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(f&&p&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),l==="[object Object]")n&&Object.keys(t.dump).length!==0?(e9e(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(JLe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object Array]")n&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?YQ(t,e-1,t.dump,i):YQ(t,e,t.dump,i),p&&(t.dump="&ref_"+d+t.dump)):(ZLe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object String]")t.tag!=="?"&&jLe(t,t.dump,e,a,u);else{if(l==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Is("unacceptable kind of an object to dump "+l)}t.tag!==null&&t.tag!=="?"&&(h=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",t.dump=h+" "+t.dump)}return!0}function t9e(t,e){var r=[],n=[],i,a;for(r9(t,r,n),i=0,a=n.length;i{"use strict";o(jQ,"isNothing");o(F_e,"isObject");o($_e,"toArray");o(z_e,"extend");o(G_e,"repeat");o(V_e,"isNegativeZero");U_e=jQ,H_e=F_e,q_e=$_e,W_e=G_e,Y_e=V_e,X_e=z_e,Pi={isNothing:U_e,isObject:H_e,toArray:q_e,repeat:W_e,isNegativeZero:Y_e,extend:X_e};o(KQ,"formatError");o(v2,"YAMLException$1");v2.prototype=Object.create(Error.prototype);v2.prototype.constructor=v2;v2.prototype.toString=o(function(e){return this.name+": "+KQ(this,e)},"toString");Is=v2;o(jL,"getLine");o(KL,"padStart");o(j_e,"makeSnippet");K_e=j_e,Q_e=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Z_e=["scalar","sequence","mapping"];o(J_e,"compileStyleAliases");o(eDe,"Type$1");Ma=eDe;o(IQ,"compileList");o(tDe,"compileMap");o(ZL,"Schema$1");ZL.prototype.extend=o(function(e){var r=[],n=[];if(e instanceof Ma)n.push(e);else if(Array.isArray(e))n=n.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(r=r.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit));else throw new Is("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof Ma))throw new Is("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new Is("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new Is("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof Ma))throw new Is("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(ZL.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=IQ(i,"implicit"),i.compiledExplicit=IQ(i,"explicit"),i.compiledTypeMap=tDe(i.compiledImplicit,i.compiledExplicit),i},"extend");rDe=ZL,nDe=new Ma("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(t){return t!==null?t:""},"construct")}),iDe=new Ma("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(t){return t!==null?t:[]},"construct")}),aDe=new Ma("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(t){return t!==null?t:{}},"construct")}),sDe=new rDe({explicit:[nDe,iDe,aDe]});o(oDe,"resolveYamlNull");o(lDe,"constructYamlNull");o(cDe,"isNull");uDe=new Ma("tag:yaml.org,2002:null",{kind:"scalar",resolve:oDe,construct:lDe,predicate:cDe,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(hDe,"resolveYamlBoolean");o(fDe,"constructYamlBoolean");o(dDe,"isBoolean");pDe=new Ma("tag:yaml.org,2002:bool",{kind:"scalar",resolve:hDe,construct:fDe,predicate:dDe,represent:{lowercase:o(function(t){return t?"true":"false"},"lowercase"),uppercase:o(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(mDe,"isHexCode");o(gDe,"isOctCode");o(yDe,"isDecCode");o(vDe,"resolveYamlInteger");o(xDe,"constructYamlInteger");o(bDe,"isInteger");TDe=new Ma("tag:yaml.org,2002:int",{kind:"scalar",resolve:vDe,construct:xDe,predicate:bDe,represent:{binary:o(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:o(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:o(function(t){return t.toString(10)},"decimal"),hexadecimal:o(function(t){return t>=0?"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"]}}),wDe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(kDe,"resolveYamlFloat");o(EDe,"constructYamlFloat");SDe=/^[-+]?[0-9]+e/;o(CDe,"representYamlFloat");o(ADe,"isFloat");_De=new Ma("tag:yaml.org,2002:float",{kind:"scalar",resolve:kDe,construct:EDe,predicate:ADe,represent:CDe,defaultStyle:"lowercase"}),QQ=sDe.extend({implicit:[uDe,pDe,TDe,_De]}),DDe=QQ,ZQ=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),JQ=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]))?))?$");o(LDe,"resolveYamlTimestamp");o(RDe,"constructYamlTimestamp");o(NDe,"representYamlTimestamp");MDe=new Ma("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:LDe,construct:RDe,instanceOf:Date,represent:NDe});o(IDe,"resolveYamlMerge");ODe=new Ma("tag:yaml.org,2002:merge",{kind:"scalar",resolve:IDe}),n9=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;o(PDe,"resolveYamlBinary");o(BDe,"constructYamlBinary");o(FDe,"representYamlBinary");o($De,"isBinary");zDe=new Ma("tag:yaml.org,2002:binary",{kind:"scalar",resolve:PDe,construct:BDe,predicate:$De,represent:FDe}),GDe=Object.prototype.hasOwnProperty,VDe=Object.prototype.toString;o(UDe,"resolveYamlOmap");o(HDe,"constructYamlOmap");qDe=new Ma("tag:yaml.org,2002:omap",{kind:"sequence",resolve:UDe,construct:HDe}),WDe=Object.prototype.toString;o(YDe,"resolveYamlPairs");o(XDe,"constructYamlPairs");jDe=new Ma("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:YDe,construct:XDe}),KDe=Object.prototype.hasOwnProperty;o(QDe,"resolveYamlSet");o(ZDe,"constructYamlSet");JDe=new Ma("tag:yaml.org,2002:set",{kind:"mapping",resolve:QDe,construct:ZDe}),eZ=DDe.extend({implicit:[MDe,ODe],explicit:[zDe,qDe,jDe,JDe]}),Xh=Object.prototype.hasOwnProperty,IT=1,tZ=2,rZ=3,OT=4,QL=1,eLe=2,OQ=3,tLe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,rLe=/[\x85\u2028\u2029]/,nLe=/[,\[\]\{\}]/,nZ=/^(?:!|!!|![a-z\-]+!)$/i,iZ=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(PQ,"_class");o(bc,"is_EOL");o(Yd,"is_WHITE_SPACE");o(Os,"is_WS_OR_EOL");o(bm,"is_FLOW_INDICATOR");o(iLe,"fromHexCode");o(aLe,"escapedHexLen");o(sLe,"fromDecimalCode");o(BQ,"simpleEscapeSequence");o(oLe,"charFromCodepoint");aZ=new Array(256),sZ=new Array(256);for(Wd=0;Wd<256;Wd++)aZ[Wd]=BQ(Wd)?1:0,sZ[Wd]=BQ(Wd);o(lLe,"State$1");o(oZ,"generateError");o(Zt,"throwError");o(PT,"throwWarning");FQ={YAML:o(function(e,r,n){var i,a,s;e.version!==null&&Zt(e,"duplication of %YAML directive"),n.length!==1&&Zt(e,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&Zt(e,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&Zt(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&PT(e,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(e,r,n){var i,a;n.length!==2&&Zt(e,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],nZ.test(i)||Zt(e,"ill-formed tag handle (first argument) of the TAG directive"),Xh.call(e.tagMap,i)&&Zt(e,'there is a previously declared suffix for "'+i+'" tag handle'),iZ.test(a)||Zt(e,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{Zt(e,"tag prefix is malformed: "+a)}e.tagMap[i]=a},"handleTagDirective")};o(Yh,"captureSegment");o($Q,"mergeMappings");o(Tm,"storeMappingPair");o(i9,"readLineBreak");o(Ci,"skipSeparationSpace");o($T,"testDocumentSeparator");o(a9,"writeFoldedLines");o(cLe,"readPlainScalar");o(uLe,"readSingleQuotedScalar");o(hLe,"readDoubleQuotedScalar");o(fLe,"readFlowCollection");o(dLe,"readBlockScalar");o(zQ,"readBlockSequence");o(pLe,"readBlockMapping");o(mLe,"readTagProperty");o(gLe,"readAnchorProperty");o(yLe,"readAlias");o(wm,"composeNode");o(vLe,"readDocument");o(lZ,"loadDocuments");o(xLe,"loadAll$1");o(bLe,"load$1");TLe=xLe,wLe=bLe,cZ={loadAll:TLe,load:wLe},uZ=Object.prototype.toString,hZ=Object.prototype.hasOwnProperty,s9=65279,kLe=9,x2=10,ELe=13,SLe=32,CLe=33,ALe=34,JL=35,_Le=37,DLe=38,LLe=39,RLe=42,fZ=44,NLe=45,BT=58,MLe=61,ILe=62,OLe=63,PLe=64,dZ=91,pZ=93,BLe=96,mZ=123,FLe=124,gZ=125,Ia={};Ia[0]="\\0";Ia[7]="\\a";Ia[8]="\\b";Ia[9]="\\t";Ia[10]="\\n";Ia[11]="\\v";Ia[12]="\\f";Ia[13]="\\r";Ia[27]="\\e";Ia[34]='\\"';Ia[92]="\\\\";Ia[133]="\\N";Ia[160]="\\_";Ia[8232]="\\L";Ia[8233]="\\P";$Le=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],zLe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(GLe,"compileStyleMap");o(VLe,"encodeHex");ULe=1,b2=2;o(HLe,"State");o(GQ,"indentString");o(e9,"generateNextLine");o(qLe,"testImplicitResolving");o(FT,"isWhitespace");o(T2,"isPrintable");o(VQ,"isNsCharOrWhitespace");o(UQ,"isPlainSafe");o(WLe,"isPlainSafeFirst");o(YLe,"isPlainSafeLast");o(y2,"codePointAt");o(yZ,"needIndentIndicator");vZ=1,t9=2,xZ=3,bZ=4,xm=5;o(XLe,"chooseScalarStyle");o(jLe,"writeScalar");o(HQ,"blockHeader");o(qQ,"dropEndingNewline");o(KLe,"foldString");o(WQ,"foldLine");o(QLe,"escapeString");o(ZLe,"writeFlowSequence");o(YQ,"writeBlockSequence");o(JLe,"writeFlowMapping");o(e9e,"writeBlockMapping");o(XQ,"detectType");o(Nu,"writeNode");o(t9e,"getDuplicateReferences");o(r9,"inspectNode");o(r9e,"dump$1");n9e=r9e,i9e={dump:n9e};o(o9,"renamed");jh=QQ,Kh=cZ.load,A6t=cZ.loadAll,_6t=i9e.dump,D6t=o9("safeLoad","load"),L6t=o9("safeLoadAll","loadAll"),R6t=o9("safeDump","dump")});function h9(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function CZ(t){jd=t}function on(t,e=""){let r=typeof t=="string"?t:t.source,n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(as.caret,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,e),"getRegex")};return n}function Tc(t,e){if(e){if(as.escapeTest.test(t))return t.replace(as.escapeReplace,wZ)}else if(as.escapeTestNoEncode.test(t))return t.replace(as.escapeReplaceNoEncode,wZ);return t}function kZ(t){try{t=encodeURI(t).replace(as.percentDecode,"%")}catch{return null}return t}function EZ(t,e){let r=t.replace(as.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(as.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function SZ(t,e,r,n,i){let a=e.href,s=e.title||null,l=t[1].replace(i.other.outputLinkReplace,"$1");n.state.inLink=!0;let u={type:t[0].charAt(0)==="!"?"image":"link",raw:r,href:a,title:s,text:l,tokens:n.inlineTokens(l)};return n.state.inLink=!1,u}function $9e(t,e,r){let n=t.match(r.other.indentCodeCompensation);if(n===null)return e;let i=n[1];return e.split(` -`).map(a=>{let s=a.match(r.other.beginningSpace);if(s===null)return a;let[l]=s;return l.length>=i.length?a.slice(i.length):a}).join(` -`)}function nn(t,e){return Xd.parse(t,e)}var jd,C2,as,a9e,s9e,o9e,A2,l9e,f9,AZ,_Z,c9e,d9,u9e,p9,h9e,f9e,qT,m9,d9e,DZ,p9e,g9,TZ,m9e,g9e,y9e,v9e,LZ,x9e,WT,y9,RZ,b9e,NZ,T9e,w9e,k9e,MZ,E9e,S9e,IZ,C9e,A9e,_9e,D9e,L9e,R9e,N9e,VT,M9e,OZ,PZ,I9e,v9,O9e,l9,P9e,GT,k2,B9e,wZ,UT,Mu,HT,x9,Iu,S2,z9e,Xd,M6t,I6t,O6t,P6t,B6t,F6t,$6t,BZ=N(()=>{"use strict";o(h9,"L");jd=h9();o(CZ,"G");C2={exec:o(()=>null,"exec")};o(on,"h");as={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+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},a9e=/^(?:[ \t]*(?:\n|$))+/,s9e=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,o9e=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,A2=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,l9e=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,f9=/(?:[*+-]|\d{1,9}[.)])/,AZ=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_Z=on(AZ).replace(/bull/g,f9).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(),c9e=on(AZ).replace(/bull/g,f9).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(),d9=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,u9e=/^[^\n]+/,p9=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,h9e=on(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",p9).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),f9e=on(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,f9).getRegex(),qT="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",m9=/|$))/,d9e=on("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",m9).replace("tag",qT).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),DZ=on(d9).replace("hr",A2).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",qT).getRegex(),p9e=on(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",DZ).getRegex(),g9={blockquote:p9e,code:s9e,def:h9e,fences:o9e,heading:l9e,hr:A2,html:d9e,lheading:_Z,list:f9e,newline:a9e,paragraph:DZ,table:C2,text:u9e},TZ=on("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",A2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",qT).getRegex(),m9e={...g9,lheading:c9e,table:TZ,paragraph:on(d9).replace("hr",A2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",TZ).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",qT).getRegex()},g9e={...g9,html:on(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",m9).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:C2,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:on(d9).replace("hr",A2).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",_Z).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},y9e=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,v9e=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,LZ=/^( {2,}|\\)\n(?!\s*$)/,x9e=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,MZ=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,E9e=on(MZ,"u").replace(/punct/g,WT).getRegex(),S9e=on(MZ,"u").replace(/punct/g,NZ).getRegex(),IZ="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",C9e=on(IZ,"gu").replace(/notPunctSpace/g,RZ).replace(/punctSpace/g,y9).replace(/punct/g,WT).getRegex(),A9e=on(IZ,"gu").replace(/notPunctSpace/g,w9e).replace(/punctSpace/g,T9e).replace(/punct/g,NZ).getRegex(),_9e=on("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,RZ).replace(/punctSpace/g,y9).replace(/punct/g,WT).getRegex(),D9e=on(/\\(punct)/,"gu").replace(/punct/g,WT).getRegex(),L9e=on(/^<(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(),R9e=on(m9).replace("(?:-->|$)","-->").getRegex(),N9e=on("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",R9e).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),VT=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,M9e=on(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",VT).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),OZ=on(/^!?\[(label)\]\[(ref)\]/).replace("label",VT).replace("ref",p9).getRegex(),PZ=on(/^!?\[(ref)\](?:\[\])?/).replace("ref",p9).getRegex(),I9e=on("reflink|nolink(?!\\()","g").replace("reflink",OZ).replace("nolink",PZ).getRegex(),v9={_backpedal:C2,anyPunctuation:D9e,autolink:L9e,blockSkip:k9e,br:LZ,code:v9e,del:C2,emStrongLDelim:E9e,emStrongRDelimAst:C9e,emStrongRDelimUnd:_9e,escape:y9e,link:M9e,nolink:PZ,punctuation:b9e,reflink:OZ,reflinkSearch:I9e,tag:N9e,text:x9e,url:C2},O9e={...v9,link:on(/^!?\[(label)\]\((.*?)\)/).replace("label",VT).getRegex(),reflink:on(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",VT).getRegex()},l9={...v9,emStrongRDelimAst:A9e,emStrongLDelim:S9e,url:on(/^((?: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\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},wZ=o(t=>B9e[t],"ke");o(Tc,"w");o(kZ,"J");o(EZ,"V");o(E2,"z");o(F9e,"ge");o(SZ,"fe");o($9e,"Je");UT=class{static{o(this,"y")}options;rules;lexer;constructor(t){this.options=t||jd}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let r=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?r:E2(r,` -`)}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let r=e[0],n=$9e(r,e[3]||"",this.rules);return{type:"code",raw:r,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:n}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let r=e[2].trim();if(this.rules.other.endingHash.test(r)){let n=E2(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:E2(e[0],` -`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let r=E2(e[0],` -`).split(` -`),n="",i="",a=[];for(;r.length>0;){let s=!1,l=[],u;for(u=0;u1,i={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let a=this.rules.other.listItemRegex(r),s=!1;for(;t;){let u=!1,h="",f="";if(!(e=a.exec(t))||this.rules.block.hr.test(t))break;h=e[0],t=t.substring(h.length);let d=e[2].split(` -`,1)[0].replace(this.rules.other.listReplaceTabs,x=>" ".repeat(3*x.length)),p=t.split(` -`,1)[0],m=!d.trim(),g=0;if(this.options.pedantic?(g=2,f=d.trimStart()):m?g=e[1].length+1:(g=e[2].search(this.rules.other.nonSpaceChar),g=g>4?1:g,f=d.slice(g),g+=e[1].length),m&&this.rules.other.blankLine.test(p)&&(h+=p+` -`,t=t.substring(p.length+1),u=!0),!u){let x=this.rules.other.nextBulletRegex(g),b=this.rules.other.hrRegex(g),T=this.rules.other.fencesBeginRegex(g),S=this.rules.other.headingBeginRegex(g),w=this.rules.other.htmlBeginRegex(g);for(;t;){let k=t.split(` -`,1)[0],A;if(p=k,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),A=p):A=p.replace(this.rules.other.tabCharGlobal," "),T.test(p)||S.test(p)||w.test(p)||x.test(p)||b.test(p))break;if(A.search(this.rules.other.nonSpaceChar)>=g||!p.trim())f+=` -`+A.slice(g);else{if(m||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||T.test(d)||S.test(d)||b.test(d))break;f+=` -`+p}!m&&!p.trim()&&(m=!0),h+=k+` -`,t=t.substring(k.length+1),d=A.slice(g)}}i.loose||(s?i.loose=!0:this.rules.other.doubleBlankLine.test(h)&&(s=!0));let y=null,v;this.options.gfm&&(y=this.rules.other.listIsTask.exec(f),y&&(v=y[0]!=="[ ] ",f=f.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:h,task:!!y,checked:v,loose:!1,text:f,tokens:[]}),i.raw+=h}let l=i.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let u=0;ud.type==="space"),f=h.length>0&&h.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=f}if(i.loose)for(let u=0;u({text:l,tokens:this.lexer.inline(l),header:!1,align:a.align[u]})));return a}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:e[2].charAt(0)==="="?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let r=e[1].charAt(e[1].length-1)===` -`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:r,tokens:this.lexer.inline(r)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let r=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let a=E2(r.slice(0,-1),"\\");if((r.length-a.length)%2===0)return}else{let a=F9e(e[2],"()");if(a===-2)return;if(a>-1){let s=(e[0].indexOf("!")===0?5:4)+e[1].length+a;e[2]=e[2].substring(0,a),e[0]=e[0].substring(0,s).trim(),e[3]=""}}let n=e[2],i="";if(this.options.pedantic){let a=this.rules.other.pedanticHrefTitle.exec(n);a&&(n=a[1],i=a[3])}else i=e[3]?e[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),SZ(e,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=e[n.toLowerCase()];if(!i){let a=r[0].charAt(0);return{type:"text",raw:a,text:a}}return SZ(r,i,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let n=this.rules.inline.emStrongLDelim.exec(t);if(!(!n||n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!r||this.rules.inline.punctuation.exec(r))){let i=[...n[0]].length-1,a,s,l=i,u=0,h=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,e=e.slice(-1*t.length+i);(n=h.exec(e))!=null;){if(a=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!a)continue;if(s=[...a].length,n[3]||n[4]){l+=s;continue}else if((n[5]||n[6])&&i%3&&!((i+s)%3)){u+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l+u);let f=[...n[0]][0].length,d=t.slice(0,i+n.index+f+s);if(Math.min(i,s)%2){let m=d.slice(1,-1);return{type:"em",raw:d,text:m,tokens:this.lexer.inlineTokens(m)}}let p=d.slice(2,-2);return{type:"strong",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let r=e[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),i=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&i&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:e[0],text:r}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let r,n;return e[2]==="@"?(r=e[1],n="mailto:"+r):(r=e[1],n=r),{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let r,n;if(e[2]==="@")r=e[0],n="mailto:"+r;else{let i;do i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(i!==e[0]);r=e[0],e[1]==="www."?n="http://"+e[0]:n=e[0]}return{type:"link",raw:e[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let r=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:r}}}},Mu=class c9{static{o(this,"l")}tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||jd,this.options.tokenizer=this.options.tokenizer||new UT,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:as,block:GT.normal,inline:k2.normal};this.options.pedantic?(r.block=GT.pedantic,r.inline=k2.pedantic):this.options.gfm&&(r.block=GT.gfm,this.options.breaks?r.inline=k2.breaks:r.inline=k2.gfm),this.tokenizer.rules=r}static get rules(){return{block:GT,inline:k2}}static lex(e,r){return new c9(r).lex(e)}static lexInline(e,r){return new c9(r).inlineTokens(e)}lex(e){e=e.replace(as.carriageReturn,` -`),this.blockTokens(e,this.tokens);for(let r=0;r(i=s.call({lexer:this},e,r))?(e=e.substring(i.raw.length),r.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let s=r.at(-1);i.raw.length===1&&s!==void 0?s.raw+=` -`:r.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` -`)?"":` -`)+i.raw,s.text+=` -`+i.text,this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` -`)?"":` -`)+i.raw,s.text+=` -`+i.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},r.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),r.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let s=1/0,l=e.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=e.substring(0,s+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(` -`)?"":` -`)+i.raw,s.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(` -`)?"":` -`)+i.raw,s.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(e){let s="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let n=e,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,s="";for(;e;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},e,r))?(e=e.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(e,n,s)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(e)){e=e.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(e)){e=e.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(e))){e=e.substring(l.raw.length),r.push(l);continue}let u=e;if(this.options.extensions?.startInline){let h=1/0,f=e.slice(1),d;this.options.extensions.startInline.forEach(p=>{d=p.call({lexer:this},f),typeof d=="number"&&d>=0&&(h=Math.min(h,d))}),h<1/0&&h>=0&&(u=e.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){e=e.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(e){let h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},HT=class{static{o(this,"P")}options;parser;constructor(t){this.options=t||jd}space(t){return""}code({text:t,lang:e,escaped:r}){let n=(e||"").match(as.notSpaceStart)?.[0],i=t.replace(as.endingNewline,"")+` -`;return n?'
    '+(r?i:Tc(i,!0))+`
    -`:"
    "+(r?i:Tc(i,!0))+`
    -`}blockquote({tokens:t}){return`
    -${this.parser.parse(t)}
    -`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)} -`}hr(t){return`
    -`}list(t){let e=t.ordered,r=t.start,n="";for(let s=0;s -`+n+" -`}listitem(t){let e="";if(t.task){let r=this.checkbox({checked:!!t.checked});t.loose?t.tokens[0]?.type==="paragraph"?(t.tokens[0].text=r+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&t.tokens[0].tokens[0].type==="text"&&(t.tokens[0].tokens[0].text=r+" "+Tc(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):e+=r+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`
  • ${e}
  • -`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    -`}table(t){let e="",r="";for(let i=0;i${n}`),` - -`+e+` -`+n+`
    -`}tablerow({text:t}){return` -${t} -`}tablecell(t){let 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`${Tc(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){let n=this.parser.parseInline(r),i=kZ(t);if(i===null)return n;t=i;let a='
    ",a}image({href:t,title:e,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let i=kZ(t);if(i===null)return Tc(r);t=i;let a=`${r}{let s=i[a].flat(1/0);r=r.concat(this.walkTokens(s,e))}):i.tokens&&(r=r.concat(this.walkTokens(i.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let a=e.renderers[i.name];a?e.renderers[i.name]=function(...s){let l=i.renderer.apply(this,s);return l===!1&&(l=a.apply(this,s)),l}:e.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=e[i.level];a?a.unshift(i.tokenizer):e[i.level]=[i.tokenizer],i.start&&(i.level==="block"?e.startBlock?e.startBlock.push(i.start):e.startBlock=[i.start]:i.level==="inline"&&(e.startInline?e.startInline.push(i.start):e.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(e.childTokens[i.name]=i.childTokens)}),n.extensions=e),r.renderer){let i=this.defaults.renderer||new HT(this.defaults);for(let a in r.renderer){if(!(a in i))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let s=a,l=r.renderer[s],u=i[s];i[s]=(...h)=>{let f=l.apply(i,h);return f===!1&&(f=u.apply(i,h)),f||""}}n.renderer=i}if(r.tokenizer){let i=this.defaults.tokenizer||new UT(this.defaults);for(let a in r.tokenizer){if(!(a in i))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let s=a,l=r.tokenizer[s],u=i[s];i[s]=(...h)=>{let f=l.apply(i,h);return f===!1&&(f=u.apply(i,h)),f}}n.tokenizer=i}if(r.hooks){let i=this.defaults.hooks||new S2;for(let a in r.hooks){if(!(a in i))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let s=a,l=r.hooks[s],u=i[s];S2.passThroughHooks.has(a)?i[s]=h=>{if(this.defaults.async&&S2.passThroughHooksRespectAsync.has(a))return Promise.resolve(l.call(i,h)).then(d=>u.call(i,d));let f=l.call(i,h);return u.call(i,f)}:i[s]=(...h)=>{let f=l.apply(i,h);return f===!1&&(f=u.apply(i,h)),f}}n.hooks=i}if(r.walkTokens){let i=this.defaults.walkTokens,a=r.walkTokens;n.walkTokens=function(s){let l=[];return l.push(a.call(this,s)),i&&(l=l.concat(i.call(this,s))),l}}this.defaults={...this.defaults,...n}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Mu.lex(t,e??this.defaults)}parser(t,e){return Iu.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let n={...r},i={...this.defaults,...n},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&n.async===!1)return a(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(typeof e>"u"||e===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=t);let s=i.hooks?i.hooks.provideLexer():t?Mu.lex:Mu.lexInline,l=i.hooks?i.hooks.provideParser():t?Iu.parse:Iu.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(e):e).then(u=>s(u,i)).then(u=>i.hooks?i.hooks.processAllTokens(u):u).then(u=>i.walkTokens?Promise.all(this.walkTokens(u,i.walkTokens)).then(()=>u):u).then(u=>l(u,i)).then(u=>i.hooks?i.hooks.postprocess(u):u).catch(a);try{i.hooks&&(e=i.hooks.preprocess(e));let u=s(e,i);i.hooks&&(u=i.hooks.processAllTokens(u)),i.walkTokens&&this.walkTokens(u,i.walkTokens);let h=l(u,i);return i.hooks&&(h=i.hooks.postprocess(h)),h}catch(u){return a(u)}}}onError(t,e){return r=>{if(r.message+=` -Please report this to https://github.com/markedjs/marked.`,t){let n="

    An error occurred:

    "+Tc(r.message+"",!0)+"
    ";return e?Promise.resolve(n):n}if(e)return Promise.reject(r);throw r}}},Xd=new z9e;o(nn,"d");nn.options=nn.setOptions=function(t){return Xd.setOptions(t),nn.defaults=Xd.defaults,CZ(nn.defaults),nn};nn.getDefaults=h9;nn.defaults=jd;nn.use=function(...t){return Xd.use(...t),nn.defaults=Xd.defaults,CZ(nn.defaults),nn};nn.walkTokens=function(t,e){return Xd.walkTokens(t,e)};nn.parseInline=Xd.parseInline;nn.Parser=Iu;nn.parser=Iu.parse;nn.Renderer=HT;nn.TextRenderer=x9;nn.Lexer=Mu;nn.lexer=Mu.lex;nn.Tokenizer=UT;nn.Hooks=S2;nn.parse=nn;M6t=nn.options,I6t=nn.setOptions,O6t=nn.use,P6t=nn.walkTokens,B6t=nn.parseInline,F6t=Iu.parse,$6t=Mu.lex});function G9e(t,{markdownAutoWrap:e}){let n=t.replace(//g,` -`).replace(/\n{2,}/g,` -`),i=P3(n);return e===!1?i.replace(/ /g," "):i}function FZ(t,e={}){let r=G9e(t,e),n=nn.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(` -`).forEach((f,d)=>{d!==0&&(a++,i.push([])),f.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"?i[a].push({content:l.text,type:"normal"}):i[a].push({content:l.raw,type:"normal"})}),i}function $Z(t,{markdownAutoWrap:e}={}){let r=nn.lexer(t);function n(i){return i.type==="text"?e===!1?i.text.replace(/\n */g,"
    ").replace(/ /g," "):i.text.replace(/\n */g,"
    "):i.type==="strong"?`${i.tokens?.map(n).join("")}`:i.type==="em"?`${i.tokens?.map(n).join("")}`:i.type==="paragraph"?`

    ${i.tokens?.map(n).join("")}

    `:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:(X.warn(`Unsupported markdown: ${i.type}`),i.raw)}return o(n,"output"),r.map(n).join("")}var zZ=N(()=>{"use strict";BZ();_A();pt();o(G9e,"preprocessMarkdown");o(FZ,"markdownToLines");o($Z,"markdownToHTML")});function V9e(t){return Intl.Segmenter?[...new Intl.Segmenter().segment(t)].map(e=>e.segment):[...t]}function U9e(t,e){let r=V9e(e.content);return GZ(t,[],r,e.type)}function GZ(t,e,r,n){if(r.length===0)return[{content:e.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...e,i];return t([{content:s.join(""),type:n}])?GZ(t,s,a,n):(e.length===0&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}])}function VZ(t,e){if(t.some(({content:r})=>r.includes(` -`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return b9(t,e)}function b9(t,e,r=[],n=[]){if(t.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";t[0].content===" "&&(i=" ",t.shift());let a=t.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),e(s))return b9(t,e,r,s);if(n.length>0)r.push(n),t.unshift(a);else if(a.content){let[l,u]=U9e(e,a);r.push([l]),u.content&&t.unshift(u)}return b9(t,e,r)}var UZ=N(()=>{"use strict";o(V9e,"splitTextToChars");o(U9e,"splitWordToFitWidth");o(GZ,"splitWordToFitWidthRecursion");o(VZ,"splitLineToFitWidth");o(b9,"splitLineToFitWidthRecursion")});function HZ(t,e){e&&t.attr("style",e)}async function H9e(t,e,r,n,i=!1,a=Qt()){let s=t.append("foreignObject");s.attr("width",`${10*r}px`),s.attr("height",`${10*r}px`);let l=s.append("xhtml:div"),u=kn(e.label)?await kh(e.label.replace(tt.lineBreakRegex,` -`),a):sr(e.label,a),h=e.isNode?"nodeLabel":"edgeLabel",f=l.append("span");f.html(u),HZ(f,e.labelStyle),f.attr("class",`${h} ${n}`),HZ(l,e.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),l.style("max-width",r+"px"),l.style("text-align","center"),l.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&l.attr("class","labelBkg");let d=l.node().getBoundingClientRect();return d.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),d=l.node().getBoundingClientRect()),s.node()}function T9(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 q9e(t,e,r){let n=t.append("text"),i=T9(n,1,e);w9(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function qZ(t,e,r){let n=t.append("text"),i=T9(n,1,e);w9(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function W9e(t,e,r,n=!1){let a=e.append("g"),s=a.insert("rect").attr("class","background").attr("style","stroke: none"),l=a.append("text").attr("y","-10.1"),u=0;for(let h of r){let f=o(p=>q9e(a,1.1,p)<=t,"checkWidth"),d=f(h)?[h]:VZ(h,f);for(let p of d){let m=T9(l,u,1.1);w9(m,p),u++}}if(n){let h=l.node().getBBox(),f=2;return s.attr("x",h.x-f).attr("y",h.y-f).attr("width",h.width+2*f).attr("height",h.height+2*f),a.node()}else return l.node()}function w9(t,e){t.text(""),e.forEach((r,n)=>{let i=t.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(r.content):i.text(" "+r.content)})}async function k9(t,e={}){let r=[];t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(i,a,s)=>(r.push((async()=>{let l=`${a}:${s}`;return await eH(l)?await _s(l,void 0,{class:"label-icon"}):``})()),i));let n=await Promise.all(r);return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>n.shift()??"")}var di,zo=N(()=>{"use strict";yr();gr();pt();zZ();tr();nc();UZ();qn();o(HZ,"applyStyle");o(H9e,"addHtmlSpan");o(T9,"createTspan");o(q9e,"computeWidthOfText");o(qZ,"computeDimensionOfText");o(W9e,"createFormattedText");o(w9,"updateTextContentAndStyles");o(k9,"replaceIconSubstring");di=o(async(t,e="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,isNode:s=!0,width:l=200,addSvgBackground:u=!1}={},h)=>{if(X.debug("XYZ createText",e,r,n,i,a,s,"addSvgBackground: ",u),a){let f=$Z(e,h),d=await k9(Ji(f),h),p=e.replace(/\\\\/g,"\\"),m={isNode:s,label:kn(e)?p:d,labelStyle:r.replace("fill:","color:")};return await H9e(t,m,l,i,u,h)}else{let f=e.replace(//g,"
    "),d=FZ(f.replace("
    ","
    "),h),p=W9e(l,t,d,e?u:!1);if(s){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");qe(p).attr("style",m)}else{let m=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");qe(p).select("rect").attr("style",m.replace(/background:/g,"fill:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");qe(p).select("text").attr("style",g)}return p}},"createText")});function Vt(t){let e=t.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return e.push("Z"),e.join(" ")}function Go(t,e,r,n,i,a){let s=[],u=r-t,h=n-e,f=u/a,d=2*Math.PI/f,p=e+h/2;for(let m=0;m<=50;m++){let g=m/50,y=t+g*u,v=p+i*Math.sin(d*(y-t));s.push({x:y,y:v})}return s}function Kd(t,e,r,n,i,a){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;d{"use strict";zo();Xt();yr();La();gr();tr();ut=o(async(t,e,r)=>{let n,i=e.useHtmlLabels||vr(ge()?.htmlLabels);r?n=r:n="node default";let a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",Cn(e.labelStyle)),l;e.label===void 0?l="":l=typeof e.label=="string"?e.label:e.label[0];let u=await di(s,sr(Ji(l),ge()),{useHtmlLabels:i,width:e.width||ge().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img}),h=u.getBBox(),f=(e?.padding??0)/2;if(i){let d=u.children[0],p=qe(u),m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=ge().fontSize?ge().fontSize:window.getComputedStyle(document.body).fontSize,T=5,[S=ur.fontSize]=vc(b),w=S*T+"px";y.style.minWidth=w,y.style.maxWidth=w}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}return i?s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):s.attr("transform","translate(0, "+-h.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:h,halfPadding:f,label:s}},"labelHelper"),YT=o(async(t,e,r)=>{let n=r.useHtmlLabels||vr(ge()?.flowchart?.htmlLabels),i=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await di(i,sr(Ji(e),ge()),{useHtmlLabels:n,width:r.width||ge()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(vr(ge()?.flowchart?.htmlLabels)){let u=a.children[0],h=qe(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return 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:l,label:i}},"insertLabel"),Qe=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),st=o((t,e)=>(t.look==="handDrawn"?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");o(Vt,"createPathFromPoints");o(Go,"generateFullSineWavePoints");o(Kd,"generateCirclePoints")});function Y9e(t,e){return t.intersect(e)}var WZ,YZ=N(()=>{"use strict";o(Y9e,"intersectNode");WZ=Y9e});function X9e(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(X9e,"intersectEllipse");XT=X9e});function j9e(t,e,r){return XT(t,e,e,r)}var XZ,jZ=N(()=>{"use strict";E9();o(j9e,"intersectCircle");XZ=j9e});function K9e(t,e,r,n){{let i=e.y-t.y,a=t.x-e.x,s=e.x*t.y-t.x*e.y,l=i*r.x+a*r.y+s,u=i*n.x+a*n.y+s,h=1e-6;if(l!==0&&u!==0&&KZ(l,u))return;let f=n.y-r.y,d=r.x-n.x,p=n.x*r.y-r.x*n.y,m=f*t.x+d*t.y+p,g=f*e.x+d*e.y+p;if(Math.abs(m)0}var QZ,ZZ=N(()=>{"use strict";o(K9e,"intersectLine");o(KZ,"sameSign");QZ=K9e});function Q9e(t,e,r){let n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(f){s=Math.min(s,f.x),l=Math.min(l,f.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));let u=n-t.width/2-s,h=i-t.height/2-l;for(let f=0;f1&&a.sort(function(f,d){let p=f.x-r.x,m=f.y-r.y,g=Math.sqrt(p*p+m*m),y=d.x-r.x,v=d.y-r.y,x=Math.sqrt(y*y+v*v);return g{"use strict";ZZ();o(Q9e,"intersectPolygon");JZ=Q9e});var Z9e,Qh,S9=N(()=>{"use strict";Z9e=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),Qh=Z9e});var Xe,Ut=N(()=>{"use strict";YZ();jZ();E9();eJ();S9();Xe={node:WZ,circle:XZ,ellipse:XT,polygon:JZ,rect:Qh}});var tJ,wc,J9e,_2,je,Je,eRe,$t=N(()=>{"use strict";Xt();tJ=o(t=>{let{handDrawnSeed:e}=ge();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),wc=o(t=>{let e=J9e([...t.cssCompiledStyles||[],...t.cssStyles||[],...t.labelStyle||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),J9e=o(t=>{let e=new Map;return t.forEach(r=>{let[n,i]=r.split(":");e.set(n.trim(),i?.trim())}),e},"styles2Map"),_2=o(t=>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","isLabelStyle"),je=o(t=>{let{stylesArray:e}=wc(t),r=[],n=[],i=[],a=[];return e.forEach(s=>{let l=s[0];_2(l)?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),Je=o((t,e)=>{let{themeVariables:r,handDrawnSeed:n}=ge(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=wc(t);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:eRe(s.get("stroke-dasharray"))},e)},"userNodeOverrides"),eRe=o(t=>{if(!t)return[0,0];let e=t.trim().split(/\s+/).map(Number);if(e.length===1){let i=isNaN(e[0])?0:e[0];return[i,i]}let r=isNaN(e[0])?0:e[0],n=isNaN(e[1])?0:e[1];return[r,n]},"getStrokeDashArray")});function C9(t,e,r){if(t&&t.length){let[n,i]=e,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of t){let[h,f]=u;u[0]=(h-n)*s-(f-i)*l+n,u[1]=(h-n)*l+(f-i)*s+i}}}function tRe(t,e){return t[0]===e[0]&&t[1]===e[1]}function rRe(t,e,r,n=1){let i=r,a=Math.max(e,.1),s=t[0]&&t[0][0]&&typeof t[0][0]=="number"?[t]:t,l=[0,0];if(i)for(let h of s)C9(h,l,i);let u=(function(h,f,d){let p=[];for(let b of h){let T=[...b];tRe(T[0],T[T.length-1])||T.push([T[0][0],T[0][1]]),T.length>2&&p.push(T)}let m=[];f=Math.max(f,.1);let g=[];for(let b of p)for(let T=0;Tb.yminT.ymin?1:b.xT.x?1:b.ymax===T.ymax?0:(b.ymax-T.ymax)/Math.abs(b.ymax-T.ymax))),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let T=0;Tv);T++)b=T;g.splice(0,b+1).forEach((T=>{y.push({s:v,edge:T})}))}if(y=y.filter((b=>!(b.edge.ymax<=v))),y.sort(((b,T)=>b.edge.x===T.edge.x?0:(b.edge.x-T.edge.x)/Math.abs(b.edge.x-T.edge.x))),(d!==1||x%f==0)&&y.length>1)for(let b=0;b=y.length)break;let S=y[b].edge,w=y[T].edge;m.push([[Math.round(S.x),v],[Math.round(w.x),v]])}v+=d,y.forEach((b=>{b.edge.x=b.edge.x+d*b.edge.islope})),x++}return m})(s,a,n);if(i){for(let h of s)C9(h,l,-i);(function(h,f,d){let p=[];h.forEach((m=>p.push(...m))),C9(p,f,d)})(u,l,-i)}return u}function N2(t,e){var r;let n=e.hachureAngle+90,i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return e.roughness>=1&&(((r=e.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),rRe(t,i,n,a||1)}function nw(t){let e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}function _9(t,e){return t.type===e}function V9(t){let e=[],r=(function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:nRe,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:A9,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:rJ,text:""},l})(t),n="BOD",i=0,a=r[i];for(;!_9(a,rJ);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return V9("M0,0"+t);i++,s=jT[a.text],n=a.text}else _9(a,A9)?s=jT[n]:(i++,s=jT[a.text],n=a.text);if(!(i+sf%2?h+r:h+e));a.push({key:"C",data:u}),e=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),e=l[2],r=l[3];break;case"q":{let u=l.map(((h,f)=>f%2?h+r:h+e));a.push({key:"Q",data:u}),e=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),e=l[5],r=l[6];break;case"a":e+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],e,r]});break;case"H":a.push({key:"H",data:[...l]}),e=l[0];break;case"h":e+=l[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),e=l[2],r=l[3];break;case"s":{let u=l.map(((h,f)=>f%2?h+r:h+e));a.push({key:"S",data:u}),e=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),e=l[0],r=l[1];break;case"t":e+=l[0],r+=l[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=n,r=i}return a}function hJ(t){let e=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:f}of t){switch(h){case"M":e.push({key:"M",data:[...f]}),[n,i]=f,[a,s]=f;break;case"C":e.push({key:"C",data:[...f]}),n=f[4],i=f[5],l=f[2],u=f[3];break;case"L":e.push({key:"L",data:[...f]}),[n,i]=f;break;case"H":n=f[0],e.push({key:"L",data:[n,i]});break;case"V":i=f[0],e.push({key:"L",data:[n,i]});break;case"S":{let d=0,p=0;r==="C"||r==="S"?(d=n+(n-l),p=i+(i-u)):(d=n,p=i),e.push({key:"C",data:[d,p,...f]}),l=f[0],u=f[1],n=f[2],i=f[3];break}case"T":{let[d,p]=f,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=d+2*(m-d)/3,b=p+2*(g-p)/3;e.push({key:"C",data:[y,v,x,b,d,p]}),l=m,u=g,n=d,i=p;break}case"Q":{let[d,p,m,g]=f,y=n+2*(d-n)/3,v=i+2*(p-i)/3,x=m+2*(d-m)/3,b=g+2*(p-g)/3;e.push({key:"C",data:[y,v,x,b,m,g]}),l=d,u=p,n=m,i=g;break}case"A":{let d=Math.abs(f[0]),p=Math.abs(f[1]),m=f[2],g=f[3],y=f[4],v=f[5],x=f[6];d===0||p===0?(e.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(fJ(n,i,v,x,d,p,m,g,y).forEach((function(b){e.push({key:"C",data:b})})),n=v,i=x);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=s}r=h}return e}function D2(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function fJ(t,e,r,n,i,a,s,l,u,h){let f=(d=s,Math.PI*d/180);var d;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[t,e]=D2(t,e,-f),[r,n]=D2(r,n,-f);let D=(t-r)/2,_=(e-n)/2,O=D*D/(i*i)+_*_/(a*a);O>1&&(O=Math.sqrt(O),i*=O,a*=O);let M=i*i,P=a*a,B=M*P-M*_*_-P*D*D,F=M*_*_+P*D*D,G=(l===u?-1:1)*Math.sqrt(Math.abs(B/F));y=G*i*_/a+(t+r)/2,v=G*-a*D/i+(e+n)/2,m=Math.asin(parseFloat(((e-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),tg&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let D=g,_=r,O=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=fJ(r=y+i*Math.cos(g),n=v+a*Math.sin(g),_,O,i,a,s,0,u,[g,D,y,v])}x=g-m;let b=Math.cos(m),T=Math.sin(m),S=Math.cos(g),w=Math.sin(g),k=Math.tan(x/4),A=4/3*i*k,C=4/3*a*k,R=[t,e],I=[t+A*T,e-C*b],L=[r+A*w,n-C*S],E=[r,n];if(I[0]=2*R[0]-I[0],I[1]=2*R[1]-I[1],h)return[I,L,E].concat(p);{p=[I,L,E].concat(p);let D=[];for(let _=0;_2){let i=[];for(let a=0;a2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=lJ(v,h,f,d,p,m,g,1,u);if(!u.disableMultiStroke){let b=lJ(v,h,f,d,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...Zh(h,f,h+d*Math.cos(m),f+p*Math.sin(m),u),...Zh(h,f,h+d*Math.cos(g),f+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,f]},{op:"lineTo",data:[h+d*Math.cos(m),f+p*Math.sin(m)]})),{type:"path",ops:x}}function aJ(t,e){let r=hJ(uJ(V9(t))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...Zh(a[0],a[1],l[0],l[1],e)),a=[l[0],l[1]];break;case"C":{let[u,h,f,d,p,m]=l;n.push(...sRe(u,h,f,d,p,m,a,e)),a=[p,m];break}case"Z":n.push(...Zh(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function D9(t,e){let r=[];for(let n of t)if(n.length){let i=e.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+or(i,e),n[0][1]+or(i,e)]});for(let s=1;s500?.4:-.0016668*u+1.233334;let f=i.maxRandomnessOffset||0;f*f*100>l&&(f=u/10);let d=f/2,p=.2+.2*mJ(i),m=i.bowing*i.maxRandomnessOffset*(n-e)/200,g=i.bowing*i.maxRandomnessOffset*(t-r)/200;m=or(m,i,h),g=or(g,i,h);let y=[],v=o(()=>or(d,i,h),"M"),x=o(()=>or(f,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[t+(b?0:v()),e+(b?0:v())]}):y.push({op:"move",data:[t+(b?0:or(f,i,h)),e+(b?0:or(f,i,h))]})),s?y.push({op:"bcurveTo",data:[m+t+(r-t)*p+v(),g+e+(n-e)*p+v(),m+t+2*(r-t)*p+v(),g+e+2*(n-e)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+t+(r-t)*p+x(),g+e+(n-e)*p+x(),m+t+2*(r-t)*p+x(),g+e+2*(n-e)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function KT(t,e,r){if(!t.length)return[];let n=[];n.push([t[0][0]+or(e,r),t[0][1]+or(e,r)]),n.push([t[0][0]+or(e,r),t[0][1]+or(e,r)]);for(let i=1;i3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let l=1;l+21&&i.push(l)):i.push(l),i.push(t[e+3])}else{let u=t[e+0],h=t[e+1],f=t[e+2],d=t[e+3],p=Qd(u,h,.5),m=Qd(h,f,.5),g=Qd(f,d,.5),y=Qd(p,m,.5),v=Qd(m,g,.5),x=Qd(y,v,.5);$9([u,p,y,x],0,r,i),$9([x,v,g,d],0,r,i)}var a,s;return i}function lRe(t,e){return rw(t,0,t.length,e)}function rw(t,e,r,n,i){let a=i||[],s=t[e],l=t[r-1],u=0,h=1;for(let f=e+1;fu&&(u=d,h=f)}return Math.sqrt(u)>n?(rw(t,e,h+1,n,a),rw(t,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function L9(t,e=.15,r){let n=[],i=(t.length-1)/3;for(let a=0;a0?rw(n,0,n.length,r):n}var R2,R9,N9,M9,I9,O9,Ps,P9,nRe,A9,rJ,jT,iRe,co,Em,z9,QT,G9,Ze,Ht=N(()=>{"use strict";o(C9,"t");o(tRe,"e");o(rRe,"s");o(N2,"n");R2=class{static{o(this,"o")}constructor(e){this.helper=e}fillPolygons(e,r){return this._fillPolygons(e,r)}_fillPolygons(e,r){let n=N2(e,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(e,r){let n=[];for(let i of e)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};o(nw,"a");R9=class extends R2{static{o(this,"h")}fillPolygons(e,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=N2(e,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,f]of i)nw([h,f])&&s.push([[h[0]-l,h[1]+u],[...f]],[[h[0]+l,h[1]-u],[...f]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},N9=class extends R2{static{o(this,"r")}fillPolygons(e,r){let n=this._fillPolygons(e,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(e,i);return n.ops=n.ops.concat(a.ops),n}},M9=class{static{o(this,"i")}constructor(e){this.helper=e}fillPolygons(e,r){let n=N2(e,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(e,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let l of e){let u=nw(l),h=u/i,f=Math.ceil(h)-1,d=u-f*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g{let l=nw(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,f=s[0],d=s[1];f[0]>d[0]&&(f=s[1],d=s[0]);let p=Math.atan((d[1]-f[1])/(d[0]-f[0]));for(let m=0;m{let s=nw(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let f=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let d=0;d2*Math.PI&&(A=0,C=2*Math.PI);let R=(C-A)/b.curveStepCount,I=[];for(let L=A;L<=C;L+=R)I.push([T+w*Math.cos(L),S+k*Math.sin(L)]);return I.push([T+w*Math.cos(C),S+k*Math.sin(C)]),I.push([T,S]),km([I],b)})(e,r,n,i,a,s,h));return h.stroke!==co&&f.push(d),this._d("arc",f,h)}curve(e,r){let n=this._o(r),i=[],a=nJ(e,n);if(n.fill&&n.fill!==co)if(n.fillStyle==="solid"){let s=nJ(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=e;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...L9(cJ([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...L9(cJ(h),10,(1+n.roughness)/2))}s.length&&i.push(km([s],n))}return n.stroke!==co&&i.push(a),this._d("curve",i,n)}polygon(e,r){let n=this._o(r),i=[],a=ZT(e,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(D9([e],n)):i.push(km([e],n))),n.stroke!==co&&i.push(a),this._d("polygon",i,n)}path(e,r){let n=this._o(r),i=[];if(!e)return this._d("path",i,n);e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==co,s=n.stroke!==co,l=!!(n.simplification&&n.simplification<1),u=(function(f,d,p){let m=hJ(uJ(V9(f))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...L9(x,d)),x=[]},"i"),T=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:w,data:k}of m)switch(w){case"M":T(),v=[k[0],k[1]],y.push(v);break;case"L":b(),y.push([k[0],k[1]]);break;case"C":if(!x.length){let A=y.length?y[y.length-1]:v;x.push([A[0],A[1]])}x.push([k[0],k[1]]),x.push([k[2],k[3]]),x.push([k[4],k[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(T(),!p)return g;let S=[];for(let w of g){let k=lRe(w,p);k.length&&S.push(k)}return S})(e,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=aJ(e,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let f=aJ(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(f.ops)})}else i.push(D9(u,n));else i.push(km(u,n));return s&&(l?u.forEach((f=>{i.push(ZT(f,!1,n))})):i.push(h)),this._d("path",i,n)}opsToPath(e,r){let n="";for(let i of e.ops){let a=typeof r=="number"&&r>=0?i.data.map((s=>+s.toFixed(r))):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(e){let r=e.sets||[],n=e.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:co};break;case"fillPath":s={d:this.opsToPath(a),stroke:co,strokeWidth:0,fill:n.fill||co};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(e,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(e),stroke:r.fill||co,strokeWidth:n,fill:co}}_mergedShape(e){return e.filter(((r,n)=>n===0||r.op!=="move"))}},z9=class{static{o(this,"st")}constructor(e,r){this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.gen=new Em(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.ctx,a=e.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let l=e.shape==="curve"||e.shape==="polygon"||e.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),e.save(),n.fillLineDash&&e.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(e.lineDashOffset=n.fillLineDashOffset),e.strokeStyle=n.fill||"",e.lineWidth=i,this._drawToContext(e,r,n.fixedDecimalPlaceDigits),e.restore()}_drawToContext(e,r,n,i="nonzero"){e.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map((l=>+l.toFixed(n))):a.data;switch(a.op){case"move":e.moveTo(s[0],s[1]);break;case"bcurveTo":e.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":e.lineTo(s[0],s[1])}}r.type==="fillPath"?e.fill(i):e.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s),s}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s),s}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s),s}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a),a}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n),n}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n),n}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h),h}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n),n}path(e,r){let n=this.gen.path(e,r);return this.draw(n),n}},QT="http://www.w3.org/2000/svg",G9=class{static{o(this,"ot")}constructor(e,r){this.svg=e,this.gen=new Em(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(QT,"g"),s=e.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(QT,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(QT,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),e.shape!=="curve"&&e.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=e.createElementNS(QT,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(e,r){return this.gen.opsToPath(e,r)}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s)}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s)}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s)}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a)}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n)}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n)}arc(e,r,n,i,a,s,l=!1,u){let h=this.gen.arc(e,r,n,i,a,s,l,u);return this.draw(h)}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n)}path(e,r){let n=this.gen.path(e,r);return this.draw(n)}},Ze={canvas:o((t,e)=>new z9(t,e),"canvas"),svg:o((t,e)=>new G9(t,e),"svg"),generator:o(t=>new Em(t),"generator"),newSeed:o(()=>Em.newSeed(),"newSeed")}});function gJ(t,e){let{labelStyles:r}=je(e);e.labelStyle=r;let n=st(e),i=n;n||(i="anchor");let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=1,{cssStyles:l}=e,u=Ze.svg(a),h=Je(e,{fill:"black",stroke:"none",fillStyle:"solid"});e.look!=="handDrawn"&&(h.roughness=0);let f=u.circle(0,0,s*2,h),d=a.insert(()=>f,":first-child");return d.attr("class","anchor").attr("style",Cn(l)),Qe(e,d),e.intersect=function(p){return X.info("Circle intersect",e,s,p),Xe.circle(e,s,p)},a}var yJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();tr();o(gJ,"anchor")});function vJ(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),T=Math.atan2((e-b)/a,(t-x)/i),w=Math.atan2((n-b)/a,(r-x)/i)-T;s&&w<0&&(w+=2*Math.PI),!s&&w>0&&(w-=2*Math.PI);let k=[];for(let A=0;A<20;A++){let C=A/19,R=T+C*w,I=x+i*Math.cos(R),L=b+a*Math.sin(R);k.push({x:I,y:L})}return k}async function xJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.width+e.padding+20,l=a.height+e.padding,u=l/2,h=u/(2.5+l/50),{cssStyles:f}=e,d=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...vJ(-s/2,-l/2,-s/2,l/2,h,u,!1),{x:s/2,y:l/2},...vJ(s/2,l/2,s/2,-l/2,h,u,!0)],p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Vt(d),y=p.path(g,m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(${h/2}, 0)`),Qe(e,v),e.intersect=function(x){return Xe.polygon(e,d,x)},i}var bJ=N(()=>{"use strict";It();Ut();$t();Ht();o(vJ,"generateArcPoints");o(xJ,"bowTieRect")});function Bs(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var Jh=N(()=>{"use strict";o(Bs,"insertPolygonShape")});async function TJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.height+e.padding,l=12,u=a.width+e.padding+l,h=0,f=u,d=-s,p=0,m=[{x:h+l,y:d},{x:f,y:d},{x:f,y:p},{x:h,y:p},{x:h,y:d+l},{x:h+l,y:d}],g,{cssStyles:y}=e;if(e.look==="handDrawn"){let v=Ze.svg(i),x=Je(e,{}),b=Vt(m),T=v.path(b,x);g=i.insert(()=>T,":first-child").attr("transform",`translate(${-u/2}, ${s/2})`),y&&g.attr("style",y)}else g=Bs(i,u,s,m);return n&&g.attr("style",n),Qe(e,g),e.intersect=function(v){return Xe.polygon(e,m,v)},i}var wJ=N(()=>{"use strict";It();Ut();$t();Ht();Jh();It();o(TJ,"card")});function kJ(t,e){let{nodeStyles:r}=je(e);e.label="";let n=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),{cssStyles:i}=e,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}],l=Ze.svg(n),u=Je(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=Vt(s),f=l.path(h,u),d=n.insert(()=>f,":first-child");return i&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",i),r&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(p){return Xe.polygon(e,s,p)},n}var EJ=N(()=>{"use strict";Ut();Ht();$t();It();o(kJ,"choice")});async function iw(t,e,r){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n;let{shapeSvg:a,bbox:s,halfPadding:l}=await ut(t,e,st(e)),u=r?.padding??l,h=s.width/2+u,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ze.svg(a),m=Je(e,{}),g=p.circle(0,0,h*2,m);f=a.insert(()=>g,":first-child"),f.attr("class","basic label-container").attr("style",Cn(d))}else f=a.insert("circle",":first-child").attr("class","basic label-container").attr("style",i).attr("r",h).attr("cx",0).attr("cy",0);return Qe(e,f),e.calcIntersect=function(p,m){let g=p.width/2;return Xe.circle(p,g,m)},e.intersect=function(p){return X.info("Circle intersect",e,h,p),Xe.circle(e,h,p)},a}var U9=N(()=>{"use strict";Ht();pt();tr();Ut();$t();It();o(iw,"circle")});function cRe(t){let e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=t*2,i={x:n/2*e,y:n/2*r},a={x:-(n/2)*e,y:n/2*r},s={x:-(n/2)*e,y:-(n/2)*r},l={x:n/2*e,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y} - M ${i.x},${i.y} L ${s.x},${s.y}`}function SJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,l=Ze.svg(i),u=Je(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),f=cRe(a),d=l.path(f,u),p=i.insert(()=>h,":first-child");return p.insert(()=>d),s&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",n),Qe(e,p),e.intersect=function(m){return X.info("crossedCircle intersect",e,{radius:a,point:m}),Xe.circle(e,a,m)},i}var CJ=N(()=>{"use strict";pt();It();$t();Ht();Ut();o(cRe,"createLine");o(SJ,"crossedCircle")});function ef(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dT,":first-child").attr("stroke-opacity",0),S.insert(()=>x,":first-child"),S.attr("class","text"),f&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${h}, 0)`),s.attr("transform",`translate(${-l/2+h-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,S),e.intersect=function(w){return Xe.polygon(e,p,w)},i}var _J=N(()=>{"use strict";It();Ut();$t();Ht();o(ef,"generateCirclePoints");o(AJ,"curlyBraceLeft")});function tf(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dT,":first-child").attr("stroke-opacity",0),S.insert(()=>x,":first-child"),S.attr("class","text"),f&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${-h}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,S),e.intersect=function(w){return Xe.polygon(e,p,w)},i}var LJ=N(()=>{"use strict";It();Ut();$t();Ht();o(tf,"generateCirclePoints");o(DJ,"curlyBraceRight")});function Oa(t,e,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,f=(a*Math.PI/180-l)/(n-1);for(let d=0;dA,":first-child").attr("stroke-opacity",0),C.insert(()=>b,":first-child"),C.insert(()=>w,":first-child"),C.attr("class","text"),f&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${h-h/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,C),e.intersect=function(R){return Xe.polygon(e,m,R)},i}var NJ=N(()=>{"use strict";It();Ut();$t();Ht();o(Oa,"generateCirclePoints");o(RJ,"curlyBraces")});async function MJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=80,l=20,u=Math.max(s,(a.width+(e.padding??0)*2)*1.25,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=u,y=h,v=g-f,x=y/4,b=[{x:v,y:0},{x,y:0},{x:0,y:y/2},{x,y},{x:v,y},...Kd(-v,-y/2,f,50,270,90)],T=Vt(b),S=p.path(T,m),w=i.insert(()=>S,":first-child");return w.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&w.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&w.selectChildren("path").attr("style",n),w.attr("transform",`translate(${-u/2}, ${-h/2})`),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,b,k)},i}var IJ=N(()=>{"use strict";It();Ut();$t();Ht();o(MJ,"curvedTrapezoid")});async function OJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+e.padding,e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+e.padding,e.height??0),d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Ze.svg(i),g=hRe(0,0,l,f,u,h),y=fRe(0,h,l,f,u,h),v=m.path(g,Je(e,{})),x=m.path(y,Je(e,{fill:"none"}));d=i.insert(()=>x,":first-child"),d=i.insert(()=>v,":first-child"),d.attr("class","basic label-container"),p&&d.attr("style",p)}else{let m=uRe(0,0,l,f,u,h);d=i.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",Cn(p)).attr("style",n)}return d.attr("label-offset-y",h),d.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),Qe(e,d),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+(e.padding??0)/1.5-(a.y-(a.top??0))})`),e.intersect=function(m){let g=Xe.rect(e,m),y=g.x-(e.x??0);if(u!=0&&(Math.abs(y)<(e.width??0)/2||Math.abs(y)==(e.width??0)/2&&Math.abs(g.y-(e.y??0))>(e.height??0)/2-h)){let v=h*h*(1-y*y/(u*u));v>0&&(v=Math.sqrt(v)),v=h-v,m.y-(e.y??0)>0&&(v=-v),g.y+=v}return g},i}var uRe,hRe,fRe,PJ=N(()=>{"use strict";It();Ut();$t();Ht();tr();uRe=o((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"),hRe=o((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"),fRe=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(OJ,"cylinder")});async function BJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=a.width+e.padding,u=a.height+e.padding,h=u*.2,f=-l/2,d=-u/2-h/2,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d+h},{x:-f,y:d+h},{x:-f,y:-d},{x:f,y:-d},{x:f,y:d},{x:-f,y:d},{x:-f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${f+(e.padding??0)/2-(a.x-(a.left??0))}, ${d+h+(e.padding??0)/2-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.rect(e,b)},i}var FJ=N(()=>{"use strict";It();Ut();$t();Ht();o(BJ,"dividedRectangle")});async function $J(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await ut(t,e,st(e)),u=a.width/2+s+5,h=a.width/2+s,f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ze.svg(i),m=Je(e,{roughness:.2,strokeWidth:2.5}),g=Je(e,{roughness:.2,strokeWidth:1.5}),y=p.circle(0,0,u*2,m),v=p.circle(0,0,h*2,g);f=i.insert("g",":first-child"),f.attr("class",Cn(e.cssClasses)).attr("style",Cn(d)),f.node()?.appendChild(y),f.node()?.appendChild(v)}else{f=i.insert("g",":first-child");let p=f.insert("circle",":first-child"),m=f.insert("circle");f.attr("class","basic label-container").attr("style",n),p.attr("class","outer-circle").attr("style",n).attr("r",u).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0)}return Qe(e,f),e.intersect=function(p){return X.info("DoubleCircle intersect",e,u,p),Xe.circle(e,u,p)},i}var zJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();tr();o($J,"doublecircle")});function GJ(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=je(e);e.label="",e.labelStyle=n;let a=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),s=7,{cssStyles:l}=e,u=Ze.svg(a),{nodeBorder:h}=r,f=Je(e,{fillStyle:"solid"});e.look!=="handDrawn"&&(f.roughness=0);let d=u.circle(0,0,s*2,f),p=a.insert(()=>d,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&e.look!=="handDrawn"&&p.selectAll("path").attr("style",i),Qe(e,p),e.intersect=function(m){return X.info("filledCircle intersect",e,{radius:s,point:m}),Xe.circle(e,s,m)},a}var VJ=N(()=>{"use strict";Ht();pt();Ut();$t();It();o(GJ,"filledCircle")});async function UJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=a.width+(e.padding??0),u=l+a.height,h=l+a.height,f=[{x:0,y:-u},{x:h,y:-u},{x:h/2,y:0}],{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=Vt(f),y=p.path(g,m),v=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`);return d&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),e.width=l,e.height=u,Qe(e,v),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-u/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(x){return X.info("Triangle intersect",e,f,x),Xe.polygon(e,f,x)},i}var HJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();It();o(UJ,"flippedTriangle")});function qJ(t,e,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=je(e);e.label="";let s=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),{cssStyles:l}=e,u=Math.max(70,e?.width??0),h=Math.max(10,e?.height??0);r==="LR"&&(u=Math.max(10,e?.width??0),h=Math.max(70,e?.height??0));let f=-1*u/2,d=-1*h/2,p=Ze.svg(s),m=Je(e,{stroke:i.lineColor,fill:i.lineColor});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(f,d,u,h,m),y=s.insert(()=>g,":first-child");l&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",a),Qe(e,y);let v=n?.padding??0;return e.width&&e.height&&(e.width+=v/2||0,e.height+=v/2||0),e.intersect=function(x){return Xe.rect(e,x)},s}var WJ=N(()=>{"use strict";Ht();Ut();$t();It();o(qJ,"forkJoin")});async function YJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let i=80,a=50,{shapeSvg:s,bbox:l}=await ut(t,e,st(e)),u=Math.max(i,l.width+(e.padding??0)*2,e?.width??0),h=Math.max(a,l.height+(e.padding??0)*2,e?.height??0),f=h/2,{cssStyles:d}=e,p=Ze.svg(s),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-u/2,y:-h/2},{x:u/2-f,y:-h/2},...Kd(-u/2+f,0,f,50,90,270),{x:u/2-f,y:h/2},{x:-u/2,y:h/2}],y=Vt(g),v=p.path(y,m),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),Qe(e,x),e.intersect=function(b){return X.info("Pill intersect",e,{radius:f,point:b}),Xe.polygon(e,g,b)},s}var XJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();o(YJ,"halfRoundedRectangle")});async function jJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.height+(e.padding??0),l=a.width+(e.padding??0)*2.5,{cssStyles:u}=e,h=Ze.svg(i),f=Je(e,{});e.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let d=l/2,p=d/6;d=d+p;let m=s/2,g=m/2,y=d-g,v=[{x:-y,y:-m},{x:0,y:-m},{x:y,y:-m},{x:d,y:0},{x:y,y:m},{x:0,y:m},{x:-y,y:m},{x:-d,y:0}],x=Vt(v),b=h.path(x,f),T=i.insert(()=>b,":first-child");return T.attr("class","basic label-container"),u&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",u),n&&e.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),e.width=l,e.height=s,Qe(e,T),e.intersect=function(S){return Xe.polygon(e,v,S)},i}var KJ=N(()=>{"use strict";It();Ut();$t();Ht();o(jJ,"hexagon")});async function QJ(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.label="",e.labelStyle=r;let{shapeSvg:i}=await ut(t,e,st(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:l}=e,u=Ze.svg(i),h=Je(e,{});e.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let f=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],d=Vt(f),p=u.path(d,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container"),l&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&e.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),Qe(e,m),e.intersect=function(g){return X.info("Pill intersect",e,{points:f}),Xe.polygon(e,f,g)},i}var ZJ=N(()=>{"use strict";pt();It();Ut();$t();Ht();o(QJ,"hourglass")});async function JJ(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await ut(t,e,"icon-shape default"),p=e.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=wc(e),x=-g/2,b=-m/2,T=e.label?8:0,S=Ze.svg(h),w=Je(e,{stroke:"none",fill:"none"});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let k=S.rectangle(x,b,g,m,w),A=Math.max(g,f.width),C=m+f.height+T,R=S.rectangle(-A/2,-C/2,A,C,{...w,fill:"transparent",stroke:"none"}),I=h.insert(()=>k,":first-child"),L=h.insert(()=>R);if(e.icon){let E=h.append("g");E.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let D=E.node().getBBox(),_=D.width,O=D.height,M=D.x,P=D.y;E.attr("transform",`translate(${-_/2-M},${p?f.height/2+T/2-O/2-P:-f.height/2-T/2-O/2-P})`),E.attr("style",`color: ${v.get("stroke")??y};`)}return d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${p?-C/2:C/2-f.height})`),I.attr("transform",`translate(0,${p?f.height/2+T/2:-f.height/2-T/2})`),Qe(e,L),e.intersect=function(E){if(X.info("iconSquare intersect",e,E),!e.label)return Xe.rect(e,E);let D=e.x??0,_=e.y??0,O=e.height??0,M=[];return p?M=[{x:D-f.width/2,y:_-O/2},{x:D+f.width/2,y:_-O/2},{x:D+f.width/2,y:_-O/2+f.height+T},{x:D+g/2,y:_-O/2+f.height+T},{x:D+g/2,y:_+O/2},{x:D-g/2,y:_+O/2},{x:D-g/2,y:_-O/2+f.height+T},{x:D-f.width/2,y:_-O/2+f.height+T}]:M=[{x:D-g/2,y:_-O/2},{x:D+g/2,y:_-O/2},{x:D+g/2,y:_-O/2+m},{x:D+f.width/2,y:_-O/2+m},{x:D+f.width/2/2,y:_+O/2},{x:D-f.width/2,y:_+O/2},{x:D-f.width/2,y:_-O/2+m},{x:D-g/2,y:_-O/2+m}],Xe.polygon(e,M,E)},h}var eee=N(()=>{"use strict";Ht();pt();nc();Ut();$t();It();o(JJ,"icon")});async function tee(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,label:d}=await ut(t,e,"icon-shape default"),p=20,m=e.label?8:0,g=e.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=wc(e),b=Ze.svg(h),T=Je(e,{});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let S=x.get("fill");T.stroke=S??v;let w=h.append("g");e.icon&&w.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let k=w.node().getBBox(),A=k.width,C=k.height,R=k.x,I=k.y,L=Math.max(A,C)*Math.SQRT2+p*2,E=b.circle(0,0,L,T),D=Math.max(L,f.width),_=L+f.height+m,O=b.rectangle(-D/2,-_/2,D,_,{...T,fill:"transparent",stroke:"none"}),M=h.insert(()=>E,":first-child"),P=h.insert(()=>O);return w.attr("transform",`translate(${-A/2-R},${g?f.height/2+m/2-C/2-I:-f.height/2-m/2-C/2-I})`),w.attr("style",`color: ${x.get("stroke")??y};`),d.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${g?-_/2:_/2-f.height})`),M.attr("transform",`translate(0,${g?f.height/2+m/2:-f.height/2-m/2})`),Qe(e,P),e.intersect=function(B){return X.info("iconSquare intersect",e,B),Xe.rect(e,B)},h}var ree=N(()=>{"use strict";Ht();pt();nc();Ut();$t();It();o(tee,"iconCircle")});var Fs,Zd=N(()=>{"use strict";Fs=o((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 nee(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await ut(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=wc(e),T=-y/2,S=-g/2,w=e.label?8:0,k=Ze.svg(h),A=Je(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let C=b.get("fill");A.stroke=C??x;let R=k.path(Fs(T,S,y,g,5),A),I=Math.max(y,f.width),L=g+f.height+w,E=k.rectangle(-I/2,-L/2,I,L,{...A,fill:"transparent",stroke:"none"}),D=h.insert(()=>R,":first-child").attr("class","icon-shape2"),_=h.insert(()=>E);if(e.icon){let O=h.append("g");O.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),P=M.width,B=M.height,F=M.x,G=M.y;O.attr("transform",`translate(${-P/2-F},${m?f.height/2+w/2-B/2-G:-f.height/2-w/2-B/2-G})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-L/2:L/2-f.height})`),D.attr("transform",`translate(0,${m?f.height/2+w/2:-f.height/2-w/2})`),Qe(e,_),e.intersect=function(O){if(X.info("iconSquare intersect",e,O),!e.label)return Xe.rect(e,O);let M=e.x??0,P=e.y??0,B=e.height??0,F=[];return m?F=[{x:M-f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2+f.height+w},{x:M+y/2,y:P-B/2+f.height+w},{x:M+y/2,y:P+B/2},{x:M-y/2,y:P+B/2},{x:M-y/2,y:P-B/2+f.height+w},{x:M-f.width/2,y:P-B/2+f.height+w}]:F=[{x:M-y/2,y:P-B/2},{x:M+y/2,y:P-B/2},{x:M+y/2,y:P-B/2+g},{x:M+f.width/2,y:P-B/2+g},{x:M+f.width/2/2,y:P+B/2},{x:M-f.width/2,y:P+B/2},{x:M-f.width/2,y:P-B/2+g},{x:M-y/2,y:P-B/2+g}],Xe.polygon(e,F,O)},h}var iee=N(()=>{"use strict";Ht();pt();nc();Ut();$t();Zd();It();o(nee,"iconRounded")});async function aee(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=je(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;e.width=Math.max(l,u??0);let{shapeSvg:h,bbox:f,halfPadding:d,label:p}=await ut(t,e,"icon-shape default"),m=e.pos==="t",g=l+d*2,y=l+d*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=wc(e),T=-y/2,S=-g/2,w=e.label?8:0,k=Ze.svg(h),A=Je(e,{});e.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");let C=b.get("fill");A.stroke=C??x;let R=k.path(Fs(T,S,y,g,.1),A),I=Math.max(y,f.width),L=g+f.height+w,E=k.rectangle(-I/2,-L/2,I,L,{...A,fill:"transparent",stroke:"none"}),D=h.insert(()=>R,":first-child"),_=h.insert(()=>E);if(e.icon){let O=h.append("g");O.html(`${await _s(e.icon,{height:l,width:l,fallbackPrefix:""})}`);let M=O.node().getBBox(),P=M.width,B=M.height,F=M.x,G=M.y;O.attr("transform",`translate(${-P/2-F},${m?f.height/2+w/2-B/2-G:-f.height/2-w/2-B/2-G})`),O.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${m?-L/2:L/2-f.height})`),D.attr("transform",`translate(0,${m?f.height/2+w/2:-f.height/2-w/2})`),Qe(e,_),e.intersect=function(O){if(X.info("iconSquare intersect",e,O),!e.label)return Xe.rect(e,O);let M=e.x??0,P=e.y??0,B=e.height??0,F=[];return m?F=[{x:M-f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2},{x:M+f.width/2,y:P-B/2+f.height+w},{x:M+y/2,y:P-B/2+f.height+w},{x:M+y/2,y:P+B/2},{x:M-y/2,y:P+B/2},{x:M-y/2,y:P-B/2+f.height+w},{x:M-f.width/2,y:P-B/2+f.height+w}]:F=[{x:M-y/2,y:P-B/2},{x:M+y/2,y:P-B/2},{x:M+y/2,y:P-B/2+g},{x:M+f.width/2,y:P-B/2+g},{x:M+f.width/2/2,y:P+B/2},{x:M-f.width/2,y:P+B/2},{x:M-f.width/2,y:P-B/2+g},{x:M-y/2,y:P-B/2+g}],Xe.polygon(e,F,O)},h}var see=N(()=>{"use strict";Ht();pt();nc();Ut();Zd();$t();It();o(aee,"iconSquare")});async function oee(t,e,{config:{flowchart:r}}){let n=new Image;n.src=e?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));e.imageAspectRatio=i/a;let{labelStyles:s}=je(e);e.labelStyle=s;let l=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;let u=Math.max(e.label?l??0:0,e?.assetWidth??i),h=e.constraint==="on"&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:u,f=e.constraint==="on"?h/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(h,l??0);let{shapeSvg:d,bbox:p,label:m}=await ut(t,e,"image-shape default"),g=e.pos==="t",y=-h/2,v=-f/2,x=e.label?8:0,b=Ze.svg(d),T=Je(e,{});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let S=b.rectangle(y,v,h,f,T),w=Math.max(h,p.width),k=f+p.height+x,A=b.rectangle(-w/2,-k/2,w,k,{...T,fill:"none",stroke:"none"}),C=d.insert(()=>S,":first-child"),R=d.insert(()=>A);if(e.img){let I=d.append("image");I.attr("href",e.img),I.attr("width",h),I.attr("height",f),I.attr("preserveAspectRatio","none"),I.attr("transform",`translate(${-h/2},${g?k/2-f:-k/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-f/2-p.height/2-x/2:f/2-p.height/2+x/2})`),C.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),Qe(e,R),e.intersect=function(I){if(X.info("iconSquare intersect",e,I),!e.label)return Xe.rect(e,I);let L=e.x??0,E=e.y??0,D=e.height??0,_=[];return g?_=[{x:L-p.width/2,y:E-D/2},{x:L+p.width/2,y:E-D/2},{x:L+p.width/2,y:E-D/2+p.height+x},{x:L+h/2,y:E-D/2+p.height+x},{x:L+h/2,y:E+D/2},{x:L-h/2,y:E+D/2},{x:L-h/2,y:E-D/2+p.height+x},{x:L-p.width/2,y:E-D/2+p.height+x}]:_=[{x:L-h/2,y:E-D/2},{x:L+h/2,y:E-D/2},{x:L+h/2,y:E-D/2+f},{x:L+p.width/2,y:E-D/2+f},{x:L+p.width/2/2,y:E+D/2},{x:L-p.width/2,y:E+D/2},{x:L-p.width/2,y:E-D/2+f},{x:L-h/2,y:E-D/2+f}],Xe.polygon(e,_,I)},d}var lee=N(()=>{"use strict";Ht();pt();Ut();$t();It();o(oee,"imageSquare")});async function cee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var uee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(cee,"inv_trapezoid")});async function Jd(t,e,r){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n;let{shapeSvg:a,bbox:s}=await ut(t,e,st(e)),l=Math.max(s.width+r.labelPaddingX*2,e?.width||0),u=Math.max(s.height+r.labelPaddingY*2,e?.height||0),h=-l/2,f=-u/2,d,{rx:p,ry:m}=e,{cssStyles:g}=e;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),e.look==="handDrawn"){let y=Ze.svg(a),v=Je(e,{}),x=p||m?y.path(Fs(h,f,l,u,p||0),v):y.rectangle(h,f,l,u,v);d=a.insert(()=>x,":first-child"),d.attr("class","basic label-container").attr("style",Cn(g))}else d=a.insert("rect",":first-child"),d.attr("class","basic label-container").attr("style",i).attr("rx",Cn(p)).attr("ry",Cn(m)).attr("x",h).attr("y",f).attr("width",l).attr("height",u);return Qe(e,d),e.calcIntersect=function(y,v){return Xe.rect(y,v)},e.intersect=function(y){return Xe.rect(e,y)},a}var M2=N(()=>{"use strict";It();Ut();Zd();$t();Ht();tr();o(Jd,"drawRect")});async function hee(t,e){let{shapeSvg:r,bbox:n,label:i}=await ut(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),Qe(e,a),e.intersect=function(u){return Xe.rect(e,u)},r}var fee=N(()=>{"use strict";M2();It();Ut();o(hee,"labelRect")});async function dee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-(3*l)/6,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var pee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(dee,"lean_left")});async function mee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var gee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(mee,"lean_right")});function yee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.label="",e.labelStyle=r;let i=t.insert("g").attr("class",st(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),l=Math.max(35,e?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],f=Ze.svg(i),d=Je(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=Vt(h),m=f.path(p,d),g=i.insert(()=>m,":first-child");return a&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-l})`),Qe(e,g),e.intersect=function(y){return X.info("lightningBolt intersect",e,y),Xe.polygon(e,h,y)},i}var vee=N(()=>{"use strict";pt();It();$t();Ht();Ut();It();o(yee,"lightningBolt")});async function xee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0),e.width??0),u=l/2,h=u/(2.5+l/50),f=Math.max(a.height+h+(e.padding??0),e.height??0),d=f*.1,p,{cssStyles:m}=e;if(e.look==="handDrawn"){let g=Ze.svg(i),y=pRe(0,0,l,f,u,h,d),v=mRe(0,h,l,f,u,h),x=Je(e,{}),b=g.path(y,x),T=g.path(v,x);i.insert(()=>T,":first-child").attr("class","line"),p=i.insert(()=>b,":first-child"),p.attr("class","basic label-container"),m&&p.attr("style",m)}else{let g=dRe(0,0,l,f,u,h,d);p=i.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",Cn(m)).attr("style",n)}return p.attr("label-offset-y",h),p.attr("transform",`translate(${-l/2}, ${-(f/2+h)})`),Qe(e,p),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),e.intersect=function(g){let y=Xe.rect(e,g),v=y.x-(e.x??0);if(u!=0&&(Math.abs(v)<(e.width??0)/2||Math.abs(v)==(e.width??0)/2&&Math.abs(y.y-(e.y??0))>(e.height??0)/2-h)){let x=h*h*(1-v*v/(u*u));x>0&&(x=Math.sqrt(x)),x=h-x,g.y-(e.y??0)>0&&(x=-x),y.y+=x}return y},i}var dRe,pRe,mRe,bee=N(()=>{"use strict";It();Ut();$t();Ht();tr();dRe=o((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"),pRe=o((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"),mRe=o((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");o(xee,"linedCylinder")});async function Tee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:-l/2-l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:f/2},...Go(-l/2-l/2*.1,f/2,l/2+l/2*.1,f/2,h,.8),{x:l/2+l/2*.1,y:-f/2},{x:-l/2-l/2*.1,y:-f/2},{x:-l/2,y:-f/2},{x:-l/2,y:f/2*1.1},{x:-l/2,y:-f/2}],y=p.polygon(g.map(x=>[x.x,x.y]),m),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&v.selectAll("path").attr("style",n),v.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),Qe(e,v),e.intersect=function(x){return Xe.polygon(e,g,x)},i}var wee=N(()=>{"use strict";It();Ut();Ht();$t();o(Tee,"linedWaveEdgedRect")});async function kee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{}),y=[{x:f-h,y:d+h},{x:f-h,y:d+u+h},{x:f+l-h,y:d+u+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d+u-h},{x:f+l+h,y:d+u-h},{x:f+l+h,y:d-h},{x:f+h,y:d-h},{x:f+h,y:d},{x:f,y:d},{x:f,y:d+h}],v=[{x:f,y:d+h},{x:f+l-h,y:d+h},{x:f+l-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d},{x:f,y:d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Vt(y),b=m.path(x,g),T=Vt(v),S=m.path(T,{...g,fill:"none"}),w=i.insert(()=>S,":first-child");return w.insert(()=>b,":first-child"),w.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)-h-(a.x-(a.left??0))}, ${-(a.height/2)+h-(a.y-(a.top??0))})`),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,y,k)},i}var Eee=N(()=>{"use strict";It();$t();Ht();Ut();o(kee,"multiRect")});async function See(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=u+h,d=-l/2,p=-f/2,m=5,{cssStyles:g}=e,y=Go(d-m,p+f+m,d+l-m,p+f+m,h,.8),v=y?.[y.length-1],x=[{x:d-m,y:p+m},{x:d-m,y:p+f+m},...y,{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:v.y-2*m},{x:d+l+m,y:v.y-2*m},{x:d+l+m,y:p-m},{x:d+m,y:p-m},{x:d+m,y:p},{x:d,y:p},{x:d,y:p+m}],b=[{x:d,y:p+m},{x:d+l-m,y:p+m},{x:d+l-m,y:v.y-m},{x:d+l,y:v.y-m},{x:d+l,y:p},{x:d,y:p}],T=Ze.svg(i),S=Je(e,{});e.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let w=Vt(x),k=T.path(w,S),A=Vt(b),C=T.path(A,S),R=i.insert(()=>k,":first-child");return R.insert(()=>C),R.attr("class","basic label-container"),g&&e.look!=="handDrawn"&&R.selectAll("path").attr("style",g),n&&e.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-(a.width/2)-m-(a.x-(a.left??0))}, ${-(a.height/2)+m-h/2-(a.y-(a.top??0))})`),Qe(e,R),e.intersect=function(I){return Xe.polygon(e,x,I)},i}var Cee=N(()=>{"use strict";It();Ut();Ht();$t();o(See,"multiWaveEdgedRectangle")});async function Aee(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n,e.useHtmlLabels||Qt().flowchart?.htmlLabels!==!1||(e.centerLabel=!0);let{shapeSvg:s,bbox:l,label:u}=await ut(t,e,st(e)),h=Math.max(l.width+(e.padding??0)*2,e?.width??0),f=Math.max(l.height+(e.padding??0)*2,e?.height??0),d=-h/2,p=-f/2,{cssStyles:m}=e,g=Ze.svg(s),y=Je(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=g.rectangle(d,p,h,f,y),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",m),i&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",i),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.rect(e,b)},s}var _ee=N(()=>{"use strict";Ht();Ut();$t();It();qn();o(Aee,"note")});async function Dee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.width+e.padding,l=a.height+e.padding,u=s+l,h=.5,f=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],d,{cssStyles:p}=e;if(e.look==="handDrawn"){let m=Ze.svg(i),g=Je(e,{}),y=gRe(0,0,u),v=m.path(y,g);d=i.insert(()=>v,":first-child").attr("transform",`translate(${-u/2+h}, ${u/2})`),p&&d.attr("style",p)}else d=Bs(i,u,u,f),d.attr("transform",`translate(${-u/2+h}, ${u/2})`);return n&&d.attr("style",n),Qe(e,d),e.calcIntersect=function(m,g){let y=m.width,v=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],x=Xe.polygon(m,v,g);return{x:x.x-.5,y:x.y-.5}},e.intersect=function(m){return this.calcIntersect(e,m)},i}var gRe,Lee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();gRe=o((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");o(Dee,"question")});async function Ree(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0),e?.width??0),u=Math.max(a.height+(e.padding??0),e?.height??0),h=-l/2,f=-u/2,d=f/2,p=[{x:h+d,y:f},{x:h,y:0},{x:h+d,y:-f},{x:-h,y:-f},{x:-h,y:f}],{cssStyles:m}=e,g=Ze.svg(i),y=Je(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=Vt(p),x=g.path(v,y),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),b.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-a.width/2-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Qe(e,b),e.intersect=function(T){return Xe.polygon(e,p,T)},i}var Nee=N(()=>{"use strict";It();Ut();$t();Ht();o(Ree,"rect_left_inv_arrow")});function yRe(t,e){e&&t.attr("style",e)}async function vRe(t){let e=qe(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=ge(),i=t.label;t.label&&kn(t.label)&&(i=await kh(t.label.replace(tt.lineBreakRegex,` -`),n));let s='"+i+"";return r.html(sr(s,n)),yRe(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 xRe,kc,aw=N(()=>{"use strict";yr();Xt();gr();pt();tr();o(yRe,"applyStyle");o(vRe,"addHtmlLabel");xRe=o(async(t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),vr(ge().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),X.info("vertexText"+i);let a={isNode:n,label:Ji(i).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:e&&e.replace("fill:","color:")};return await vRe(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let l of s){let u=document.createElementNS("http://www.w3.org/2000/svg","tspan");u.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),u.setAttribute("dy","1em"),u.setAttribute("x","0"),r?u.setAttribute("class","title-row"):u.setAttribute("class","row"),u.textContent=l.trim(),a.appendChild(u)}return a}},"createLabel"),kc=xRe});async function Mee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let i;e.cssClasses?i="node "+e.cssClasses:i="node default";let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",n),u=e.description,h=e.label,f=l.node().appendChild(await kc(h,e.labelStyle,!0,!0)),d={width:0,height:0};if(vr(ge()?.flowchart?.htmlLabels)){let C=f.children[0],R=qe(f);d=C.getBoundingClientRect(),R.attr("width",d.width),R.attr("height",d.height)}X.info("Text 2",u);let p=u||[],m=f.getBBox(),g=l.node().appendChild(await kc(p.join?p.join("
    "):p,e.labelStyle,!0,!0)),y=g.children[0],v=qe(g);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height);let x=(e.padding||0)/2;qe(g).attr("transform","translate( "+(d.width>m.width?0:(m.width-d.width)/2)+", "+(m.height+x+5)+")"),qe(f).attr("transform","translate( "+(d.width(X.debug("Rough node insert CXC",I),L),":first-child"),k=a.insert(()=>(X.debug("Rough node insert CXC",I),I),":first-child")}else k=s.insert("rect",":first-child"),A=s.insert("line"),k.attr("class","outer title-state").attr("style",n).attr("x",-d.width/2-x).attr("y",-d.height/2-x).attr("width",d.width+(e.padding||0)).attr("height",d.height+(e.padding||0)),A.attr("class","divider").attr("x1",-d.width/2-x).attr("x2",d.width/2+x).attr("y1",-d.height/2-x+m.height+x).attr("y2",-d.height/2-x+m.height+x);return Qe(e,k),e.intersect=function(C){return Xe.rect(e,C)},a}var Iee=N(()=>{"use strict";yr();gr();It();aw();Ut();$t();Ht();Xt();Zd();pt();o(Mee,"rectWithTitle")});function sw(t,e,r,n,i,a,s){let u=(t+r)/2,h=(e+n)/2,f=Math.atan2(n-e,r-t),d=(r-t)/2,p=(n-e)/2,m=d/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(f)*(s?-1:1),b=h-v*i*Math.cos(f)*(s?-1:1),T=Math.atan2((e-b)/a,(t-x)/i),w=Math.atan2((n-b)/a,(r-x)/i)-T;s&&w<0&&(w+=2*Math.PI),!s&&w>0&&(w-=2*Math.PI);let k=[];for(let A=0;A<20;A++){let C=A/19,R=T+C*w,I=x+i*Math.cos(R),L=b+a*Math.sin(R);k.push({x:I,y:L})}return k}async function Oee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=e?.padding??0,l=e?.padding??0,u=(e?.width?e?.width:a.width)+s*2,h=(e?.height?e?.height:a.height)+l*2,f=e.radius||5,d=e.taper||5,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.stroke&&(g.stroke=e.stroke),e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:-u/2+d,y:-h/2},{x:u/2-d,y:-h/2},...sw(u/2-d,-h/2,u/2,-h/2+d,f,f,!0),{x:u/2,y:-h/2+d},{x:u/2,y:h/2-d},...sw(u/2,h/2-d,u/2-d,h/2,f,f,!0),{x:u/2-d,y:h/2},{x:-u/2+d,y:h/2},...sw(-u/2+d,h/2,-u/2,h/2-d,f,f,!0),{x:-u/2,y:h/2-d},{x:-u/2,y:-h/2+d},...sw(-u/2,-h/2+d,-u/2+d,-h/2,f,f,!0)],v=Vt(y),x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container outer-path"),p&&e.look!=="handDrawn"&&b.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectChildren("path").attr("style",n),Qe(e,b),e.intersect=function(T){return Xe.polygon(e,y,T)},i}var Pee=N(()=>{"use strict";It();Ut();$t();Ht();o(sw,"generateArcPoints");o(Oee,"roundedRect")});async function Bee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=e?.padding??0,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=-a.width/2-l,d=-a.height/2-l,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:f,y:d},{x:f+u+8,y:d},{x:f+u+8,y:d+h},{x:f-8,y:d+h},{x:f-8,y:d},{x:f,y:d},{x:f,y:d+h}],v=m.polygon(y.map(b=>[b.x,b.y]),g),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container").attr("style",Cn(p)),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),p&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${-u/2+4+(e.padding??0)-(a.x-(a.left??0))},${-h/2+(e.padding??0)-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.rect(e,b)},i}var Fee=N(()=>{"use strict";It();Ut();$t();Ht();tr();o(Bee,"shadedProcess")});async function $ee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=-l/2,f=-u/2,{cssStyles:d}=e,p=Ze.svg(i),m=Je(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=[{x:h,y:f},{x:h,y:f+u},{x:h+l,y:f+u},{x:h+l,y:f-u/2}],y=Vt(g),v=p.path(y,m),x=i.insert(()=>v,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),x.attr("transform",`translate(0, ${u/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))}, ${-u/4+(e.padding??0)-(a.y-(a.top??0))})`),Qe(e,x),e.intersect=function(b){return Xe.polygon(e,g,b)},i}var zee=N(()=>{"use strict";It();Ut();$t();Ht();o($ee,"slopedRect")});async function Gee(t,e){let r={rx:0,ry:0,classes:"",labelPaddingX:e.labelPaddingX??(e?.padding||0)*2,labelPaddingY:(e?.padding||0)*1};return Jd(t,e,r)}var Vee=N(()=>{"use strict";M2();o(Gee,"squareRect")});async function Uee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.height+e.padding,l=a.width+s/4+e.padding,u=s/2,{cssStyles:h}=e,f=Ze.svg(i),d=Je(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=[{x:-l/2+u,y:-s/2},{x:l/2-u,y:-s/2},...Kd(-l/2+u,0,u,50,90,270),{x:l/2-u,y:s/2},...Kd(l/2-u,0,u,50,270,450)],m=Vt(p),g=f.path(m,d),y=i.insert(()=>g,":first-child");return y.attr("class","basic label-container outer-path"),h&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",h),n&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",n),Qe(e,y),e.intersect=function(v){return Xe.polygon(e,p,v)},i}var Hee=N(()=>{"use strict";It();Ut();$t();Ht();o(Uee,"stadium")});async function qee(t,e){return Jd(t,e,{rx:5,ry:5,classes:"flowchart-node"})}var Wee=N(()=>{"use strict";M2();o(qee,"state")});function Yee(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n;let{cssStyles:a}=e,{lineColor:s,stateBorder:l,nodeBorder:u}=r,h=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),f=Ze.svg(h),d=Je(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=f.circle(0,0,14,{...d,stroke:s,strokeWidth:2}),m=l??u,g=f.circle(0,0,5,{...d,fill:m,stroke:m,strokeWidth:2,fillStyle:"solid"}),y=h.insert(()=>p,":first-child");return y.insert(()=>g),a&&y.selectAll("path").attr("style",a),i&&y.selectAll("path").attr("style",i),Qe(e,y),e.intersect=function(v){return Xe.circle(e,7,v)},h}var Xee=N(()=>{"use strict";Ht();Ut();$t();It();o(Yee,"stateEnd")});function jee(t,e,{config:{themeVariables:r}}){let{lineColor:n}=r,i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a;if(e.look==="handDrawn"){let l=Ze.svg(i).circle(0,0,14,tJ(n));a=i.insert(()=>l),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else a=i.insert("circle",":first-child"),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return Qe(e,a),e.intersect=function(s){return Xe.circle(e,7,s)},i}var Kee=N(()=>{"use strict";Ht();Ut();$t();It();o(jee,"stateStart")});async function Qee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=(e?.padding||0)/2,l=a.width+e.padding,u=a.height+e.padding,h=-a.width/2-s,f=-a.height/2-s,d=[{x:0,y:0},{x:l,y:0},{x:l,y:-u},{x:0,y:-u},{x:0,y:0},{x:-8,y:0},{x:l+8,y:0},{x:l+8,y:-u},{x:-8,y:-u},{x:-8,y:0}];if(e.look==="handDrawn"){let p=Ze.svg(i),m=Je(e,{}),g=p.rectangle(h-8,f,l+16,u,m),y=p.line(h,f,h,f+u,m),v=p.line(h+l,f,h+l,f+u,m);i.insert(()=>y,":first-child"),i.insert(()=>v,":first-child");let x=i.insert(()=>g,":first-child"),{cssStyles:b}=e;x.attr("class","basic label-container").attr("style",Cn(b)),Qe(e,x)}else{let p=Bs(i,l,u,d);n&&p.attr("style",n),Qe(e,p)}return e.intersect=function(p){return Xe.polygon(e,d,p)},i}var Zee=N(()=>{"use strict";It();Ut();$t();Ht();Jh();tr();o(Qee,"subroutine")});async function Jee(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=-s/2,h=-l/2,f=.2*l,d=.2*l,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{}),y=[{x:u-f/2,y:h},{x:u+s+f/2,y:h},{x:u+s+f/2,y:h+l},{x:u-f/2,y:h+l}],v=[{x:u+s-f/2,y:h+l},{x:u+s+f/2,y:h+l},{x:u+s+f/2,y:h+l-d}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Vt(y),b=m.path(x,g),T=Vt(v),S=m.path(T,{...g,fillStyle:"solid"}),w=i.insert(()=>S,":first-child");return w.insert(()=>b,":first-child"),w.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",n),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,y,k)},i}var ete=N(()=>{"use strict";It();$t();Ht();Ut();o(Jee,"taggedRect")});async function tte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/4,f=.2*l,d=.2*u,p=u+h,{cssStyles:m}=e,g=Ze.svg(i),y=Je(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...Go(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-d*.4,T=[{x:x+l-f,y:(b+u)*1.4},{x:x+l,y:b+u-d},{x:x+l,y:(b+u)*.9},...Go(x+l,(b+u)*1.3,x+l-f,(b+u)*1.5,-u*.03,.5)],S=Vt(v),w=g.path(S,y),k=Vt(T),A=g.path(k,{...y,fillStyle:"solid"}),C=i.insert(()=>A,":first-child");return C.insert(()=>w,":first-child"),C.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h/2-(a.y-(a.top??0))})`),Qe(e,C),e.intersect=function(R){return Xe.polygon(e,v,R)},i}var rte=N(()=>{"use strict";It();Ut();Ht();$t();o(tte,"taggedWaveEdgedRectangle")});async function nte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=Math.max(a.width+e.padding,e?.width||0),l=Math.max(a.height+e.padding,e?.height||0),u=-s/2,h=-l/2,f=i.insert("rect",":first-child");return f.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),Qe(e,f),e.intersect=function(d){return Xe.rect(e,d)},i}var ite=N(()=>{"use strict";It();Ut();$t();o(nte,"text")});async function ate(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s,halfPadding:l}=await ut(t,e,st(e)),u=e.look==="neo"?l*2:l,h=a.height+u,f=h/2,d=f/(2.5+h/50),p=a.width+d+u,{cssStyles:m}=e,g;if(e.look==="handDrawn"){let y=Ze.svg(i),v=TRe(0,0,p,h,d,f),x=wRe(0,0,p,h,d,f),b=y.path(v,Je(e,{})),T=y.path(x,Je(e,{fill:"none"}));g=i.insert(()=>T,":first-child"),g=i.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=bRe(0,0,p,h,d,f);g=i.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",Cn(m)).attr("style",n),g.attr("class","basic label-container"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",d),g.attr("transform",`translate(${-p/2}, ${h/2} )`),s.attr("transform",`translate(${-(a.width/2)-d-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Qe(e,g),e.intersect=function(y){let v=Xe.rect(e,y),x=v.y-(e.y??0);if(f!=0&&(Math.abs(x)<(e.height??0)/2||Math.abs(x)==(e.height??0)/2&&Math.abs(v.x-(e.x??0))>(e.width??0)/2-d)){let b=d*d*(1-x*x/(f*f));b!=0&&(b=Math.sqrt(Math.abs(b))),b=d-b,y.x-(e.x??0)>0&&(b=-b),v.x+=b}return v},i}var bRe,TRe,wRe,ste=N(()=>{"use strict";It();$t();Ht();Ut();tr();bRe=o((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"),TRe=o((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"),wRe=o((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD");o(ate,"tiltedCylinder")});async function ote(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=a.width+e.padding,l=a.height+e.padding,u=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ze.svg(i),p=Je(e,{}),m=Vt(u),g=d.path(m,p);h=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),f&&h.attr("style",f)}else h=Bs(i,s,l,u);return n&&h.attr("style",n),e.width=s,e.height=l,Qe(e,h),e.intersect=function(d){return Xe.polygon(e,u,d)},i}var lte=N(()=>{"use strict";It();Ut();$t();Ht();Jh();o(ote,"trapezoid")});async function cte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=60,l=20,u=Math.max(s,a.width+(e.padding??0)*2,e?.width??0),h=Math.max(l,a.height+(e.padding??0)*2,e?.height??0),{cssStyles:f}=e,d=Ze.svg(i),p=Je(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=[{x:-u/2*.8,y:-h/2},{x:u/2*.8,y:-h/2},{x:u/2,y:-h/2*.6},{x:u/2,y:h/2},{x:-u/2,y:h/2},{x:-u/2,y:-h/2*.6}],g=Vt(m),y=d.path(g,p),v=i.insert(()=>y,":first-child");return v.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&v.selectChildren("path").attr("style",n),Qe(e,v),e.intersect=function(x){return Xe.polygon(e,m,x)},i}var ute=N(()=>{"use strict";It();Ut();$t();Ht();o(cte,"trapezoidalPentagon")});async function hte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=vr(ge().flowchart?.htmlLabels),u=a.width+(e.padding??0),h=u+a.height,f=u+a.height,d=[{x:0,y:0},{x:f,y:0},{x:f/2,y:-h}],{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=Vt(d),v=m.path(y,g),x=i.insert(()=>v,":first-child").attr("transform",`translate(${-h/2}, ${h/2})`);return p&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",p),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),e.width=u,e.height=h,Qe(e,x),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${h/2-(a.height+(e.padding??0)/(l?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(b){return X.info("Triangle intersect",e,d,b),Xe.polygon(e,d,b)},i}var fte=N(()=>{"use strict";pt();It();Ut();$t();Ht();It();gr();Xt();o(hte,"triangle")});async function dte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=u/8,f=u+h,{cssStyles:d}=e,m=70-l,g=m>0?m/2:0,y=Ze.svg(i),v=Je(e,{});e.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-l/2-g,y:f/2},...Go(-l/2-g,f/2,l/2+g,f/2,h,.8),{x:l/2+g,y:-f/2},{x:-l/2-g,y:-f/2}],b=Vt(x),T=y.path(b,v),S=i.insert(()=>T,":first-child");return S.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-h-(a.y-(a.top??0))})`),Qe(e,S),e.intersect=function(w){return Xe.polygon(e,x,w)},i}var pte=N(()=>{"use strict";It();Ut();Ht();$t();o(dte,"waveEdgedRectangle")});async function mte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await ut(t,e,st(e)),s=100,l=50,u=Math.max(a.width+(e.padding??0)*2,e?.width??0),h=Math.max(a.height+(e.padding??0)*2,e?.height??0),f=u/h,d=u,p=h;d>p*f?p=d/f:d=p*f,d=Math.max(d,s),p=Math.max(p,l);let m=Math.min(p*.2,p/4),g=p+m*2,{cssStyles:y}=e,v=Ze.svg(i),x=Je(e,{});e.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:-d/2,y:g/2},...Go(-d/2,g/2,d/2,g/2,m,1),{x:d/2,y:-g/2},...Go(d/2,-g/2,-d/2,-g/2,m,-1)],T=Vt(b),S=v.path(T,x),w=i.insert(()=>S,":first-child");return w.attr("class","basic label-container"),y&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",y),n&&e.look!=="handDrawn"&&w.selectAll("path").attr("style",n),Qe(e,w),e.intersect=function(k){return Xe.polygon(e,b,k)},i}var gte=N(()=>{"use strict";It();Ut();$t();Ht();o(mte,"waveRectangle")});async function yte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await ut(t,e,st(e)),l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=5,f=-l/2,d=-u/2,{cssStyles:p}=e,m=Ze.svg(i),g=Je(e,{}),y=[{x:f-h,y:d-h},{x:f-h,y:d+u},{x:f+l,y:d+u},{x:f+l,y:d-h}],v=`M${f-h},${d-h} L${f+l},${d-h} L${f+l},${d+u} L${f-h},${d+u} L${f-h},${d-h} - M${f-h},${d} L${f+l},${d} - M${f},${d-h} L${f},${d+u}`;e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=m.path(v,g),b=i.insert(()=>x,":first-child");return b.attr("transform",`translate(${h/2}, ${h/2})`),b.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)+h/2-(a.x-(a.left??0))}, ${-(a.height/2)+h/2-(a.y-(a.top??0))})`),Qe(e,b),e.intersect=function(T){return Xe.polygon(e,y,T)},i}var vte=N(()=>{"use strict";It();$t();Ht();Ut();o(yte,"windowPane")});async function H9(t,e){let r=e;if(r.alias&&(e.label=r.alias),e.look==="handDrawn"){let{themeVariables:U}=Qt(),{background:j}=U,te={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${j}`]};await H9(t,te)}let n=Qt();e.useHtmlLabels=n.htmlLabels;let i=n.er?.diagramPadding??10,a=n.er?.entityPadding??6,{cssStyles:s}=e,{labelStyles:l,nodeStyles:u}=je(e);if(r.attributes.length===0&&e.label){let U={rx:0,ry:0,labelPaddingX:i,labelPaddingY:i*1.5,classes:""};Zi(e.label,n)+U.labelPaddingX*20){let U=d.width+i*2-(y+v+x+b);y+=U/w,v+=U/w,x>0&&(x+=U/w),b>0&&(b+=U/w)}let A=y+v+x+b,C=Ze.svg(f),R=Je(e,{});e.look!=="handDrawn"&&(R.roughness=0,R.fillStyle="solid");let I=0;g.length>0&&(I=g.reduce((U,j)=>U+(j?.rowHeight??0),0));let L=Math.max(k.width+i*2,e?.width||0,A),E=Math.max((I??0)+d.height,e?.height||0),D=-L/2,_=-E/2;f.selectAll("g:not(:first-child)").each((U,j,te)=>{let Y=qe(te[j]),oe=Y.attr("transform"),J=0,ue=0;if(oe){let ee=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(oe);ee&&(J=parseFloat(ee[1]),ue=parseFloat(ee[2]),Y.attr("class").includes("attribute-name")?J+=y:Y.attr("class").includes("attribute-keys")?J+=y+v:Y.attr("class").includes("attribute-comment")&&(J+=y+v+x))}Y.attr("transform",`translate(${D+i/2+J}, ${ue+_+d.height+a/2})`)}),f.select(".name").attr("transform","translate("+-d.width/2+", "+(_+a/2)+")");let O=C.rectangle(D,_,L,E,R),M=f.insert(()=>O,":first-child").attr("style",s.join("")),{themeVariables:P}=Qt(),{rowEven:B,rowOdd:F,nodeBorder:G}=P;m.push(0);for(let[U,j]of g.entries()){let Y=(U+1)%2===0&&j.yOffset!==0,oe=C.rectangle(D,d.height+_+j?.yOffset,L,j?.rowHeight,{...R,fill:Y?B:F,stroke:G});f.insert(()=>oe,"g.label").attr("style",s.join("")).attr("class",`row-rect-${Y?"even":"odd"}`)}let $=C.line(D,d.height+_,L+D,d.height+_,R);f.insert(()=>$).attr("class","divider"),$=C.line(y+D,d.height+_,y+D,E+_,R),f.insert(()=>$).attr("class","divider"),T&&($=C.line(y+v+D,d.height+_,y+v+D,E+_,R),f.insert(()=>$).attr("class","divider")),S&&($=C.line(y+v+x+D,d.height+_,y+v+x+D,E+_,R),f.insert(()=>$).attr("class","divider"));for(let U of m)$=C.line(D,d.height+_+U,L+D,d.height+_+U,R),f.insert(()=>$).attr("class","divider");if(Qe(e,M),u&&e.look!=="handDrawn"){let j=u.split(";")?.filter(te=>te.includes("stroke"))?.map(te=>`${te}`).join("; ");f.selectAll("path").attr("style",j??""),f.selectAll(".row-rect-even path").attr("style",u)}return e.intersect=function(U){return Xe.rect(e,U)},f}async function I2(t,e,r,n=0,i=0,a=[],s=""){let l=t.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${n}, ${i})`).attr("style",s);e!==rc(e)&&(e=rc(e),e=e.replaceAll("<","<").replaceAll(">",">"));let u=l.node().appendChild(await di(l,e,{width:Zi(e,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let f=u.children[0];for(f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">");f.childNodes[0];)f=f.childNodes[0],f.textContent=f.textContent.replaceAll("<","<").replaceAll(">",">")}let h=u.getBBox();if(vr(r.htmlLabels)){let f=u.children[0];f.style.textAlign="start";let d=qe(u);h=f.getBoundingClientRect(),d.attr("width",h.width),d.attr("height",h.height)}return h}var xte=N(()=>{"use strict";It();Ut();$t();Ht();M2();qn();zo();gr();yr();tr();o(H9,"erBox");o(I2,"addText")});async function bte(t,e,r,n,i=r.class.padding??12){let a=n?0:3,s=t.insert("g").attr("class",st(e)).attr("id",e.domId||e.id),l=null,u=null,h=null,f=null,d=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),e.annotations.length>0){let b=e.annotations[0];await ow(l,{text:`\xAB${b}\xBB`},0),d=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await ow(u,e,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of e.members){let T=await ow(h,b,y,[b.parseClassifier()]);y+=T+a}m=h.node().getBBox().height,m<=0&&(m=i/2),f=s.insert("g").attr("class","methods-group text");let v=0;for(let b of e.methods){let T=await ow(f,b,v,[b.parseClassifier()]);v+=T+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${d})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${d+p+i*2})`),x=s.node().getBBox(),f.attr("transform",`translate(0, ${d+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function ow(t,e,r,n=[]){let i=t.insert("g").attr("class","label").attr("style",n.join("; ")),a=Qt(),s="useHtmlLabels"in e?e.useHtmlLabels:vr(a.htmlLabels)??!0,l="";"text"in e?l=e.text:l=e.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),kn(l)&&(s=!0);let u=await di(i,iv(Ji(l)),{width:Zi(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,f=1;if(s){let d=u.children[0],p=qe(u);f=d.innerHTML.split("
    ").length,d.innerHTML.includes("")&&(f+=d.innerHTML.split("").length-1);let m=d.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,S=parseInt(b,10)*5+"px";y.style.minWidth=S,y.style.maxWidth=S}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&qe(u).selectAll("tspan").attr("font-weight",""),f=u.children.length;let d=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(d.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(d.textContent=d.textContent[0]+" "+d.textContent.substring(1))),d.textContent==="undefined"&&(d.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*f)+r)+")"),h.height}var Tte=N(()=>{"use strict";yr();qn();It();tr();Xt();zo();gr();o(bte,"textHelper");o(ow,"addText")});async function wte(t,e){let r=ge(),n=r.class.padding??12,i=n,a=e.useHtmlLabels??vr(r.htmlLabels)??!0,s=e;s.annotations=s.annotations??[],s.members=s.members??[],s.methods=s.methods??[];let{shapeSvg:l,bbox:u}=await bte(t,e,r,a,i),{labelStyles:h,nodeStyles:f}=je(e);e.labelStyle=h,e.cssStyles=s.styles||"";let d=s.styles?.join(";")||f||"";e.cssStyles||(e.cssStyles=d.replaceAll("!important","").split(";"));let p=s.members.length===0&&s.methods.length===0&&!r.class?.hideEmptyMembersBox,m=Ze.svg(l),g=Je(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=u.width,v=u.height;s.members.length===0&&s.methods.length===0?v+=i:s.members.length>0&&s.methods.length===0&&(v+=i*2);let x=-y/2,b=-v/2,T=m.rectangle(x-n,b-n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0),y+2*n,v+2*n+(p?n*2:s.members.length===0&&s.methods.length===0?-n:0),g),S=l.insert(()=>T,":first-child");S.attr("class","basic label-container");let w=S.node().getBBox();l.selectAll(".text").each((R,I,L)=>{let E=qe(L[I]),D=E.attr("transform"),_=0;if(D){let B=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(D);B&&(_=parseFloat(B[2]))}let O=_+b+n-(p?n:s.members.length===0&&s.methods.length===0?-n/2:0);a||(O-=4);let M=x;(E.attr("class").includes("label-group")||E.attr("class").includes("annotation-group"))&&(M=-E.node()?.getBBox().width/2||0,l.selectAll("text").each(function(P,B,F){window.getComputedStyle(F[B]).textAnchor==="middle"&&(M=0)})),E.attr("transform",`translate(${M}, ${O})`)});let k=l.select(".annotation-group").node().getBBox().height-(p?n/2:0)||0,A=l.select(".label-group").node().getBBox().height-(p?n/2:0)||0,C=l.select(".members-group").node().getBBox().height-(p?n/2:0)||0;if(s.members.length>0||s.methods.length>0||p){let R=m.line(w.x,k+A+b+n,w.x+w.width,k+A+b+n,g);l.insert(()=>R).attr("class","divider").attr("style",d)}if(p||s.members.length>0||s.methods.length>0){let R=m.line(w.x,k+A+C+b+i*2+n,w.x+w.width,k+A+C+b+n+i*2,g);l.insert(()=>R).attr("class","divider").attr("style",d)}if(s.look!=="handDrawn"&&l.selectAll("path").attr("style",d),S.select(":nth-child(2)").attr("style",d),l.selectAll(".divider").select("path").attr("style",d),e.labelStyle?l.selectAll("span").attr("style",e.labelStyle):l.selectAll("span").attr("style",d),!a){let R=RegExp(/color\s*:\s*([^;]*)/),I=R.exec(d);if(I){let L=I[0].replace("color","fill");l.selectAll("tspan").attr("style",L)}else if(h){let L=R.exec(h);if(L){let E=L[0].replace("color","fill");l.selectAll("tspan").attr("style",E)}}}return Qe(e,S),e.intersect=function(R){return Xe.rect(e,R)},l}var kte=N(()=>{"use strict";It();Xt();yr();Ht();$t();Ut();Tte();gr();o(wte,"classBox")});async function Ete(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let i=e,a=e,s=20,l=20,u="verifyMethod"in e,h=st(e),f=t.insert("g").attr("class",h).attr("id",e.domId??e.id),d;u?d=await Ou(f,`<<${i.type}>>`,0,e.labelStyle):d=await Ou(f,"<<Element>>",0,e.labelStyle);let p=d,m=await Ou(f,i.name,p,e.labelStyle+"; font-weight: bold;");if(p+=m+l,u){let k=await Ou(f,`${i.requirementId?`ID: ${i.requirementId}`:""}`,p,e.labelStyle);p+=k;let A=await Ou(f,`${i.text?`Text: ${i.text}`:""}`,p,e.labelStyle);p+=A;let C=await Ou(f,`${i.risk?`Risk: ${i.risk}`:""}`,p,e.labelStyle);p+=C,await Ou(f,`${i.verifyMethod?`Verification: ${i.verifyMethod}`:""}`,p,e.labelStyle)}else{let k=await Ou(f,`${a.type?`Type: ${a.type}`:""}`,p,e.labelStyle);p+=k,await Ou(f,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,p,e.labelStyle)}let g=(f.node()?.getBBox().width??200)+s,y=(f.node()?.getBBox().height??200)+s,v=-g/2,x=-y/2,b=Ze.svg(f),T=Je(e,{});e.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let S=b.rectangle(v,x,g,y,T),w=f.insert(()=>S,":first-child");if(w.attr("class","basic label-container").attr("style",n),f.selectAll(".label").each((k,A,C)=>{let R=qe(C[A]),I=R.attr("transform"),L=0,E=0;if(I){let M=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(I);M&&(L=parseFloat(M[1]),E=parseFloat(M[2]))}let D=E-y/2,_=v+s/2;(A===0||A===1)&&(_=L),R.attr("transform",`translate(${_}, ${D+s})`)}),p>d+m+l){let k=b.line(v,x+d+m+l,v+g,x+d+m+l,T);f.insert(()=>k).attr("style",n)}return Qe(e,w),e.intersect=function(k){return Xe.rect(e,k)},f}async function Ou(t,e,r,n=""){if(e==="")return 0;let i=t.insert("g").attr("class","label").attr("style",n),a=ge(),s=a.htmlLabels??!0,l=await di(i,iv(Ji(e)),{width:Zi(e,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),u;if(s){let h=l.children[0],f=qe(l);u=h.getBoundingClientRect(),f.attr("width",u.width),f.attr("height",u.height)}else{let h=l.children[0];for(let f of h.children)f.textContent=f.textContent.replaceAll(">",">").replaceAll("<","<"),n&&f.setAttribute("style",n);u=l.getBBox(),u.height+=6}return i.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var Ste=N(()=>{"use strict";It();Ut();$t();Ht();tr();Xt();zo();yr();o(Ete,"requirementBox");o(Ou,"addText")});async function Cte(t,e,{config:r}){let{labelStyles:n,nodeStyles:i}=je(e);e.labelStyle=n||"";let a=10,s=e.width;e.width=(e.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await ut(t,e,st(e)),f=e.padding||10,d="",p;"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(d=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",d).attr("target","_blank"));let m={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await YT(p,"ticket"in e&&e.ticket||"",m):{label:g,bbox:y}=await YT(l,"ticket"in e&&e.ticket||"",m);let{label:v,bbox:x}=await YT(l,"assigned"in e&&e.assigned||"",m);e.width=s;let b=10,T=e?.width||0,S=Math.max(y.height,x.height)/2,w=Math.max(u.height+b*2,e?.height||0)+S,k=-T/2,A=-w/2;h.attr("transform","translate("+(f-T/2)+", "+(-S-u.height/2)+")"),g.attr("transform","translate("+(f-T/2)+", "+(-S+u.height/2)+")"),v.attr("transform","translate("+(f+T/2-x.width-2*a)+", "+(-S+u.height/2)+")");let C,{rx:R,ry:I}=e,{cssStyles:L}=e;if(e.look==="handDrawn"){let E=Ze.svg(l),D=Je(e,{}),_=R||I?E.path(Fs(k,A,T,w,R||0),D):E.rectangle(k,A,T,w,D);C=l.insert(()=>_,":first-child"),C.attr("class","basic label-container").attr("style",L||null)}else{C=l.insert("rect",":first-child"),C.attr("class","basic label-container __APA__").attr("style",i).attr("rx",R??5).attr("ry",I??5).attr("x",k).attr("y",A).attr("width",T).attr("height",w);let E="priority"in e&&e.priority;if(E){let D=l.append("line"),_=k+2,O=A+Math.floor((R??0)/2),M=A+w-Math.floor((R??0)/2);D.attr("x1",_).attr("y1",O).attr("x2",_).attr("y2",M).attr("stroke-width","4").attr("stroke",kRe(E))}}return Qe(e,C),e.height=w,e.intersect=function(E){return Xe.rect(e,E)},l}var kRe,Ate=N(()=>{"use strict";It();Ut();Zd();$t();Ht();kRe=o(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");o(Cte,"kanbanItem")});async function _te(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await ut(t,e,st(e)),u=a.width+10*s,h=a.height+8*s,f=.15*u,{cssStyles:d}=e,p=a.width+20,m=a.height+20,g=Math.max(u,p),y=Math.max(h,m);l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`);let v,x=`M0 0 - a${f},${f} 1 0,0 ${g*.25},${-1*y*.1} - a${f},${f} 1 0,0 ${g*.25},0 - a${f},${f} 1 0,0 ${g*.25},0 - a${f},${f} 1 0,0 ${g*.25},${y*.1} - - a${f},${f} 1 0,0 ${g*.15},${y*.33} - a${f*.8},${f*.8} 1 0,0 0,${y*.34} - a${f},${f} 1 0,0 ${-1*g*.15},${y*.33} - - a${f},${f} 1 0,0 ${-1*g*.25},${y*.15} - a${f},${f} 1 0,0 ${-1*g*.25},0 - a${f},${f} 1 0,0 ${-1*g*.25},0 - a${f},${f} 1 0,0 ${-1*g*.25},${-1*y*.15} - - a${f},${f} 1 0,0 ${-1*g*.1},${-1*y*.33} - a${f*.8},${f*.8} 1 0,0 0,${-1*y*.34} - a${f},${f} 1 0,0 ${g*.1},${-1*y*.33} - H0 V0 Z`;if(e.look==="handDrawn"){let b=Ze.svg(i),T=Je(e,{}),S=b.path(x,T);v=i.insert(()=>S,":first-child"),v.attr("class","basic label-container").attr("style",Cn(d))}else v=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",x);return v.attr("transform",`translate(${-g/2}, ${-y/2})`),Qe(e,v),e.calcIntersect=function(b,T){return Xe.rect(b,T)},e.intersect=function(b){return X.info("Bang intersect",e,b),Xe.rect(e,b)},i}var Dte=N(()=>{"use strict";pt();It();Ut();$t();Ht();tr();o(_te,"bang")});async function Lte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await ut(t,e,st(e)),u=a.width+2*s,h=a.height+2*s,f=.15*u,d=.25*u,p=.35*u,m=.2*u,{cssStyles:g}=e,y,v=`M0 0 - a${f},${f} 0 0,1 ${u*.25},${-1*u*.1} - a${p},${p} 1 0,1 ${u*.4},${-1*u*.1} - a${d},${d} 1 0,1 ${u*.35},${u*.2} - - a${f},${f} 1 0,1 ${u*.15},${h*.35} - a${m},${m} 1 0,1 ${-1*u*.15},${h*.65} - - a${d},${f} 1 0,1 ${-1*u*.25},${u*.15} - a${p},${p} 1 0,1 ${-1*u*.5},0 - a${f},${f} 1 0,1 ${-1*u*.25},${-1*u*.15} - - a${f},${f} 1 0,1 ${-1*u*.1},${-1*h*.35} - a${m},${m} 1 0,1 ${u*.1},${-1*h*.65} - H0 V0 Z`;if(e.look==="handDrawn"){let x=Ze.svg(i),b=Je(e,{}),T=x.path(v,b);y=i.insert(()=>T,":first-child"),y.attr("class","basic label-container").attr("style",Cn(g))}else y=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",v);return l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),y.attr("transform",`translate(${-u/2}, ${-h/2})`),Qe(e,y),e.calcIntersect=function(x,b){return Xe.rect(x,b)},e.intersect=function(x){return X.info("Cloud intersect",e,x),Xe.rect(e,x)},i}var Rte=N(()=>{"use strict";Ht();pt();tr();Ut();$t();It();o(Lte,"cloud")});async function Nte(t,e){let{labelStyles:r,nodeStyles:n}=je(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await ut(t,e,st(e)),u=a.width+8*s,h=a.height+2*s,f=5,d=` - M${-u/2} ${h/2-f} - v${-h+2*f} - q0,-${f} ${f},-${f} - h${u-2*f} - q${f},0 ${f},${f} - v${h-2*f} - q0,${f} -${f},${f} - h${-u+2*f} - q-${f},0 -${f},-${f} - Z - `,p=i.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("style",n).attr("d",d);return i.append("line").attr("class","node-line-").attr("x1",-u/2).attr("y1",h/2).attr("x2",u/2).attr("y2",h/2),l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),i.append(()=>l.node()),Qe(e,p),e.calcIntersect=function(m,g){return Xe.rect(m,g)},e.intersect=function(m){return Xe.rect(e,m)},i}var Mte=N(()=>{"use strict";Ut();$t();It();o(Nte,"defaultMindmapNode")});async function Ite(t,e){let r={padding:e.padding??0};return iw(t,e,r)}var Ote=N(()=>{"use strict";U9();o(Ite,"mindmapCircle")});function Pte(t){return t in q9}var ERe,SRe,q9,W9=N(()=>{"use strict";yJ();bJ();wJ();EJ();U9();CJ();_J();LJ();NJ();IJ();PJ();FJ();zJ();VJ();HJ();WJ();XJ();KJ();ZJ();eee();ree();iee();see();lee();uee();fee();pee();gee();vee();bee();wee();Eee();Cee();_ee();Lee();Nee();Iee();Pee();Fee();zee();Vee();Hee();Wee();Xee();Kee();Zee();ete();rte();ite();ste();lte();ute();fte();pte();gte();vte();xte();kte();Ste();Ate();Dte();Rte();Mte();Ote();ERe=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Gee},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Oee},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Uee},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Qee},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:OJ},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:iw},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:_te},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Lte},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Dee},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:jJ},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:mee},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:dee},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:ote},{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:cee},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:$J},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:nte},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:TJ},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Bee},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:jee},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Yee},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:qJ},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:QJ},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:AJ},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:DJ},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:RJ},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:yee},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:dte},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:YJ},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ate},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:xee},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:MJ},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:BJ},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:hte},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:yte},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:GJ},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:cte},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:UJ},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:$ee},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:See},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:kee},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:xJ},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:SJ},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:tte},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Jee},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:mte},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Ree},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Tee}],SRe=o(()=>{let e=[...Object.entries({state:qee,choice:kJ,note:Aee,rectWithTitle:Mee,labelRect:hee,iconSquare:aee,iconCircle:tee,icon:JJ,iconRounded:nee,imageSquare:oee,anchor:gJ,kanbanItem:Cte,mindmapCircle:Ite,defaultMindmapNode:Nte,classBox:wte,erBox:H9,requirementBox:Ete}),...ERe.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(e)},"generateShapeMap"),q9=SRe();o(Pte,"isValidShape")});var CRe,lw,Bte=N(()=>{"use strict";yr();w2();Xt();pt();W9();tr();gr();ci();CRe="flowchart-",lw=class{constructor(){this.vertexCounter=0;this.config=ge();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=Rr;this.setAccDescription=Ir;this.setDiagramTitle=$r;this.getAccTitle=Mr;this.getAccDescription=Or;this.getDiagramTitle=Pr;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{o(this,"FlowDB")}sanitizeText(e){return tt.sanitizeText(e,this.config)}lookUpDomId(e){for(let r of this.vertices.values())if(r.id===e)return r.domId;return e}addVertex(e,r,n,i,a,s,l={},u){if(!e||e.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(` -`)?m=u+` -`:m=`{ -`+u+` -}`,h=Kh(m,{schema:jh})}let f=this.edges.find(m=>m.id===e);if(f){let m=h;m?.animate!==void 0&&(f.animate=m.animate),m?.animation!==void 0&&(f.animation=m.animation),m?.curve!==void 0&&(f.interpolate=m.curve);return}let d,p=this.vertices.get(e);if(p===void 0&&(p={id:e,labelType:"text",domId:CRe+e+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(e,p)),this.vertexCounter++,r!==void 0?(this.config=ge(),d=this.sanitizeText(r.text.trim()),p.labelType=r.type,d.startsWith('"')&&d.endsWith('"')&&(d=d.substring(1,d.length-1)),p.text=d):p.text===void 0&&(p.text=e),n!==void 0&&(p.type=n),i?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!Pte(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===e&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===e&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(e,r,n,i){let l={start:e,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};X.info("abc78 Got edge...",l);let u=n.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=u.type),n!==void 0&&(l.type=n.type,l.stroke=n.stroke,l.length=n.length>10?10:n.length),i&&!this.edges.some(h=>h.id===i))l.id=i,l.isUserDefinedId=!0;else{let h=this.edges.filter(f=>f.start===l.start&&f.end===l.end);h.length===0?l.id=xc(l.start,l.end,{counter:0,prefix:"L"}):l.id=xc(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))X.info("Pushing edge..."),this.edges.push(l);else 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.`)}isLinkData(e){return e!==null&&typeof e=="object"&&"id"in e&&typeof e.id=="string"}addLink(e,r,n){let i=this.isLinkData(n)?n.id.replace("@",""):void 0;X.info("addLink",e,r,i);for(let a of e)for(let s of r){let l=a===e[e.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,n,i):this.addSingleLink(a,s,n,void 0)}}updateLinkInterpolate(e,r){e.forEach(n=>{n==="default"?this.edges.defaultInterpolate=r:this.edges[n].interpolate=r})}updateLink(e,r){e.forEach(n=>{if(typeof n=="number"&&n>=this.edges.length)throw new Error(`The index ${n} 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.)`);n==="default"?this.edges.defaultStyle=r:(this.edges[n].style=r,(this.edges[n]?.style?.length??0)>0&&!this.edges[n]?.style?.some(i=>i?.startsWith("fill"))&&this.edges[n]?.style?.push("fill:none"))})}addClass(e,r){let n=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");e.split(",").forEach(i=>{let a=this.classes.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},this.classes.set(i,a)),n?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(e){this.direction=e.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(e,r){for(let n of e.split(",")){let i=this.vertices.get(n);i&&i.classes.push(r);let a=this.edges.find(l=>l.id===n);a&&a.classes.push(r);let s=this.subGraphLookup.get(n);s&&s.classes.push(r)}}setTooltip(e,r){if(r!==void 0){r=this.sanitizeText(r);for(let n of e.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(n):n,r)}}setClickFun(e,r,n){let i=this.lookUpDomId(e);if(ge().securityLevel!=="loose"||r===void 0)return;let a=[];if(typeof n=="string"){a=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let l=0;l{let l=document.querySelector(`[id="${i}"]`);l!==null&&l.addEventListener("click",()=>{qt.runFunc(r,...a)},!1)}))}setLink(e,r,n){e.split(",").forEach(i=>{let a=this.vertices.get(i);a!==void 0&&(a.link=qt.formatUrl(r,this.config),a.linkTarget=n)}),this.setClass(e,"clickable")}getTooltip(e){return this.tooltips.get(e)}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFun(i,r,n)}),this.setClass(e,"clickable")}bindFunctions(e){this.funs.forEach(r=>{r(e)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(e){let r=qe(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=qe("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),qe(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=qe(a.currentTarget);if(s.attr("title")===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),qe(a.currentTarget).classed("hover",!1)})}clear(e="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=e,this.config=ge(),Sr()}setGen(e){this.version=e||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(e,r,n){let i=e.text.trim(),a=n.text;e===n&&/\s/.exec(n.text)&&(i=void 0);let l=o(p=>{let m={boolean:{},number:{},string:{}},g=[],y;return{nodeList:p.filter(function(x){let b=typeof x;return x.stmt&&x.stmt==="dir"?(y=x.value,!1):x.trim()===""?!1:b in m?m[b].hasOwnProperty(x)?!1:m[b][x]=!0:g.includes(x)?!1:g.push(x)}),dir:y}},"uniq")(r.flat()),u=l.nodeList,h=l.dir,f=ge().flowchart??{};if(h=h??(f.inheritDir?this.getDirection()??ge().direction??void 0:void 0),this.version==="gen-1")for(let p=0;p2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===e)return{result:!0,count:0};let i=0,a=1;for(;i=0){let l=this.indexNodes2(e,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}i=i+1}return{result:!1,count:a}}getDepthFirstPos(e){return this.posCrossRef[e]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(e){let r=e.trim(),n="arrow_open";switch(r[0]){case"<":n="arrow_point",r=r.slice(1);break;case"x":n="arrow_cross",r=r.slice(1);break;case"o":n="arrow_circle",r=r.slice(1);break}let i="normal";return r.includes("=")&&(i="thick"),r.includes(".")&&(i="dotted"),{type:n,stroke:i}}countChar(e,r){let n=r.length,i=0;for(let a=0;a":i="arrow_point",r.startsWith("<")&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle",r.startsWith("o")&&(i="double_"+i,n=n.slice(1));break}let a="normal",s=n.length-1;n.startsWith("=")&&(a="thick"),n.startsWith("~")&&(a="invisible");let l=this.countChar(".",n);return l&&(a="dotted",s=l),{type:i,stroke:a,length:s}}destructLink(e,r){let n=this.destructEndLink(e),i;if(r){if(i=this.destructStartLink(r),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=n.length,i}return n}exists(e,r){for(let n of e)if(n.nodes.includes(r))return!0;return!1}makeUniq(e,r){let n=[];return e.nodes.forEach((i,a)=>{this.exists(r,i)||n.push(e.nodes[a])}),{nodes:n}}getTypeFromVertex(e){if(e.img)return"imageSquare";if(e.icon)return e.form==="circle"?"iconCircle":e.form==="square"?"iconSquare":e.form==="rounded"?"iconRounded":"icon";switch(e.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return e.type}}findNode(e,r){return e.find(n=>n.id===r)}destructEdgeType(e){let r="none",n="arrow_point";switch(e){case"arrow_point":case"arrow_circle":case"arrow_cross":n=e;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=e.replace("double_",""),n=r;break}return{arrowTypeStart:r,arrowTypeEnd:n}}addNodeFromVertex(e,r,n,i,a,s){let l=n.get(e.id),u=i.get(e.id)??!1,h=this.findNode(r,e.id);if(h)h.cssStyles=e.styles,h.cssCompiledStyles=this.getCompiledStyles(e.classes),h.cssClasses=e.classes.join(" ");else{let f={id:e.id,label:e.text,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:e.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...e.classes]),cssClasses:"default "+e.classes.join(" "),dir:e.dir,domId:e.domId,look:s,link:e.link,linkTarget:e.linkTarget,tooltip:this.getTooltip(e.id),icon:e.icon,pos:e.pos,img:e.img,assetWidth:e.assetWidth,assetHeight:e.assetHeight,constraint:e.constraint};u?r.push({...f,isGroup:!0,shape:"rect"}):r.push({...f,isGroup:!1,shape:this.getTypeFromVertex(e)})}}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}getData(){let e=ge(),r=[],n=[],i=this.getSubGraphs(),a=new Map,s=new Map;for(let h=i.length-1;h>=0;h--){let f=i[h];f.nodes.length>0&&s.set(f.id,!0);for(let d of f.nodes)a.set(d,f.id)}for(let h=i.length-1;h>=0;h--){let f=i[h];r.push({id:f.id,label:f.title,labelStyle:"",parentId:a.get(f.id),padding:8,cssCompiledStyles:this.getCompiledStyles(f.classes),cssClasses:f.classes.join(" "),shape:"rect",dir:f.dir,isGroup:!0,look:e.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,e,e.look||"classic")});let u=this.getEdges();return u.forEach((h,f)=>{let{arrowTypeStart:d,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:xc(h.start,h.end,{counter:f,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":d,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:e.look,animate:h.animate,animation:h.animation,curve:h.interpolate||this.edges.defaultInterpolate||e.flowchart?.curve};n.push(g)}),{nodes:r,edges:n,other:{},config:e}}defaultConfig(){return G3.flowchart}}});var Vo,ep=N(()=>{"use strict";yr();Vo=o((t,e)=>{let r;return e==="sandbox"&&(r=qe("#i"+t)),(e==="sandbox"?qe(r.nodes()[0].contentDocument.body):qe("body")).select(`[id="${t}"]`)},"getDiagramElement")});var Pu,O2=N(()=>{"use strict";Pu=o(({flowchart:t})=>{let e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0,n=e+r;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var Fte,ARe,_Re,DRe,LRe,RRe,NRe,$te,Sm,zte,cw=N(()=>{"use strict";Xt();gr();pt();O2();yr();Ht();zo();S9();aw();Zd();$t();Fte=o(async(t,e)=>{X.info("Creating subgraph rect for ",e.id,e);let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=je(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=vr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await di(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0}),y=g.getBBox();if(vr(r.flowchart.htmlLabels)){let A=g.children[0],C=qe(g);y=A.getBoundingClientRect(),C.attr("width",y.width),C.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,T=e.y-x/2;X.trace("Data ",e,JSON.stringify(e));let S;if(e.look==="handDrawn"){let A=Ze.svg(d),C=Je(e,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),R=A.path(Fs(b,T,v,x,0),C);S=d.insert(()=>(X.debug("Rough node insert CXC",R),R),":first-child"),S.select("path:nth-child(2)").attr("style",h.join(";")),S.select("path").attr("style",f.join(";").replace("fill","stroke"))}else S=d.insert("rect",":first-child"),S.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:w}=Pu(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+w})`),l){let A=m.select("span");A&&A.attr("style",l)}let k=S.node().getBBox();return e.offsetX=0,e.width=k.width,e.height=k.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Qh(e,A)},{cluster:d,labelBBox:y}},"rect"),ARe=o((t,e)=>{let r=t.insert("g").attr("class","note-cluster").attr("id",e.id),n=r.insert("rect",":first-child"),i=0*e.padding,a=i/2;n.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");let s=n.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(l){return Qh(e,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),_Re=o(async(t,e)=>{let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),f=h.insert("g",":first-child"),d=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=d.node().appendChild(await kc(e.label,e.labelStyle,void 0,!0)),g=m.getBBox();if(vr(r.flowchart.htmlLabels)){let R=m.children[0],I=qe(m);g=R.getBoundingClientRect(),I.attr("width",g.width),I.attr("height",g.height)}let y=0*e.padding,v=y/2,x=(e.width<=g.width+e.padding?g.width+e.padding:e.width)+y;e.width<=g.width+e.padding?e.diff=(x-e.width)/2-e.padding:e.diff=-e.padding;let b=e.height+y,T=e.height+y-g.height-6,S=e.x-x/2,w=e.y-b/2;e.width=x;let k=e.y-e.height/2-v+g.height+2,A;if(e.look==="handDrawn"){let R=e.cssClasses.includes("statediagram-cluster-alt"),I=Ze.svg(h),L=e.rx||e.ry?I.path(Fs(S,w,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):I.rectangle(S,w,x,b,{seed:i});A=h.insert(()=>L,":first-child");let E=I.rectangle(S,k,x,T,{fill:R?a:s,fillStyle:R?"hachure":"solid",stroke:u,seed:i});A=h.insert(()=>L,":first-child"),p=h.insert(()=>E)}else A=f.insert("rect",":first-child"),A.attr("class","outer").attr("x",S).attr("y",w).attr("width",x).attr("height",b).attr("data-look",e.look),p.attr("class","inner").attr("x",S).attr("y",k).attr("width",x).attr("height",T);d.attr("transform",`translate(${e.x-g.width/2}, ${w+1-(vr(r.flowchart.htmlLabels)?0:3)})`);let C=A.node().getBBox();return e.height=C.height,e.offsetX=0,e.offsetY=g.height-e.padding/2,e.labelBBox=g,e.intersect=function(R){return Qh(e,R)},{cluster:h,labelBBox:g}},"roundedWithTitle"),DRe=o(async(t,e)=>{X.info("Creating subgraph rect for ",e.id,e);let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:f}=je(e),d=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),p=vr(r.flowchart.htmlLabels),m=d.insert("g").attr("class","cluster-label "),g=await di(m,e.label,{style:e.labelStyle,useHtmlLabels:p,isNode:!0,width:e.width}),y=g.getBBox();if(vr(r.flowchart.htmlLabels)){let A=g.children[0],C=qe(g);y=A.getBoundingClientRect(),C.attr("width",y.width),C.attr("height",y.height)}let v=e.width<=y.width+e.padding?y.width+e.padding:e.width;e.width<=y.width+e.padding?e.diff=(v-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-v/2,T=e.y-x/2;X.trace("Data ",e,JSON.stringify(e));let S;if(e.look==="handDrawn"){let A=Ze.svg(d),C=Je(e,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),R=A.path(Fs(b,T,v,x,e.rx),C);S=d.insert(()=>(X.debug("Rough node insert CXC",R),R),":first-child"),S.select("path:nth-child(2)").attr("style",h.join(";")),S.select("path").attr("style",f.join(";").replace("fill","stroke"))}else S=d.insert("rect",":first-child"),S.attr("style",u).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:w}=Pu(r);if(m.attr("transform",`translate(${e.x-y.width/2}, ${e.y-e.height/2+w})`),l){let A=m.select("span");A&&A.attr("style",l)}let k=S.node().getBBox();return e.offsetX=0,e.width=k.width,e.height=k.height,e.offsetY=y.height-e.padding/2,e.intersect=function(A){return Qh(e,A)},{cluster:d,labelBBox:y}},"kanbanSection"),LRe=o((t,e)=>{let r=ge(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),l=s.insert("g",":first-child"),u=0*e.padding,h=e.width+u;e.diff=-e.padding;let f=e.height+u,d=e.x-h/2,p=e.y-f/2;e.width=h;let m;if(e.look==="handDrawn"){let v=Ze.svg(s).rectangle(d,p,h,f,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else m=l.insert("rect",":first-child"),m.attr("class","divider").attr("x",d).attr("y",p).attr("width",h).attr("height",f).attr("data-look",e.look);let g=m.node().getBBox();return e.height=g.height,e.offsetX=0,e.offsetY=0,e.intersect=function(y){return Qh(e,y)},{cluster:s,labelBBox:{}}},"divider"),RRe=Fte,NRe={rect:Fte,squareRect:RRe,roundedWithTitle:_Re,noteGroup:ARe,divider:LRe,kanbanSection:DRe},$te=new Map,Sm=o(async(t,e)=>{let r=e.shape||"rect",n=await NRe[r](t,e);return $te.set(e.id,n),n},"insertCluster"),zte=o(()=>{$te=new Map},"clear")});function uw(t,e){if(t===void 0||e===void 0)return{angle:0,deltaX:0,deltaY:0};t=Xn(t),e=Xn(e);let[r,n]=[t.x,t.y],[i,a]=[e.x,e.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var fa,Y9,Xn,hw,X9=N(()=>{"use strict";fa={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4},Y9={arrow_point:9,arrow_cross:12.5,arrow_circle:12.5};o(uw,"calculateDeltaAndAngle");Xn=o(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),hw=o(t=>({x:o(function(e,r,n){let i=0,a=Xn(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(fa,t.arrowTypeEnd)){let{angle:m,deltaX:g}=uw(n[n.length-1],n[n.length-2]);i=fa[t.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(Xn(e).x-Xn(n[n.length-1]).x),l=Math.abs(Xn(e).y-Xn(n[n.length-1]).y),u=Math.abs(Xn(e).x-Xn(n[0]).x),h=Math.abs(Xn(e).y-Xn(n[0]).y),f=fa[t.arrowTypeStart],d=fa[t.arrowTypeEnd],p=1;if(s0&&l0&&h=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(fa,t.arrowTypeEnd)){let{angle:m,deltaY:g}=uw(n[n.length-1],n[n.length-2]);i=fa[t.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(Xn(e).y-Xn(n[n.length-1]).y),l=Math.abs(Xn(e).x-Xn(n[n.length-1]).x),u=Math.abs(Xn(e).y-Xn(n[0]).y),h=Math.abs(Xn(e).x-Xn(n[0]).x),f=fa[t.arrowTypeStart],d=fa[t.arrowTypeEnd],p=1;if(s0&&l0&&h{"use strict";pt();Vte=o((t,e,r,n,i,a)=>{e.arrowTypeStart&&Gte(t,"start",e.arrowTypeStart,r,n,i,a),e.arrowTypeEnd&&Gte(t,"end",e.arrowTypeEnd,r,n,i,a)},"addEdgeMarkers"),MRe={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}},Gte=o((t,e,r,n,i,a,s)=>{let l=MRe[r];if(!l){X.warn(`Unknown arrow type: ${r}`);return}let u=l.type,f=`${i}_${a}-${u}${e==="start"?"Start":"End"}`;if(s&&s.trim()!==""){let d=s.replace(/[^\dA-Za-z]/g,"_"),p=`${f}_${d}`;if(!document.getElementById(p)){let m=document.getElementById(f);if(m){let g=m.cloneNode(!0);g.id=p,g.querySelectorAll("path, circle, line").forEach(v=>{v.setAttribute("stroke",s),l.fill&&v.setAttribute("fill",s)}),m.parentNode?.appendChild(g)}}t.attr(`marker-${e}`,`url(${n}#${p})`)}else t.attr(`marker-${e}`,`url(${n}#${f})`)},"addEdgeMarker")});function dw(t,e){ge().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}function PRe(t){let e=[],r=[];for(let n=1;n5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(e.push(a),r.push(n))}return{cornerPoints:e,cornerPointPositions:r}}function $Re(t,e){if(t.length<2)return"";let r="",n=t.length,i=1e-5;for(let a=0;a({...i}));if(t.length>=2&&fa[e.arrowTypeStart]){let i=fa[e.arrowTypeStart],a=t[0],s=t[1],{angle:l}=Wte(a,s),u=i*Math.cos(l),h=i*Math.sin(l);r[0].x=a.x+u,r[0].y=a.y+h}let n=t.length;if(n>=2&&fa[e.arrowTypeEnd]){let i=fa[e.arrowTypeEnd],a=t[n-1],s=t[n-2],{angle:l}=Wte(s,a),u=i*Math.cos(l),h=i*Math.sin(l);r[n-1].x=a.x-u,r[n-1].y=a.y-h}return r}var pw,da,Yte,fw,mw,gw,IRe,ORe,Hte,qte,BRe,FRe,yw,j9=N(()=>{"use strict";Xt();gr();pt();zo();tr();X9();O2();yr();Ht();aw();Ute();$t();pw=new Map,da=new Map,Yte=o(()=>{pw.clear(),da.clear()},"clear"),fw=o(t=>t?t.reduce((r,n)=>r+";"+n,""):"","getLabelStyles"),mw=o(async(t,e)=>{let r=vr(ge().flowchart.htmlLabels),{labelStyles:n}=je(e);e.labelStyle=n;let i=await di(t,e.label,{style:e.labelStyle,useHtmlLabels:r,addSvgBackground:!0,isNode:!1});X.info("abc82",e,e.labelType);let a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label").attr("data-id",e.id);s.node().appendChild(i);let l=i.getBBox();if(r){let h=i.children[0],f=qe(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),pw.set(e.id,a),e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=await kc(e.startLabelLeft,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),da.get(e.id)||da.set(e.id,{}),da.get(e.id).startLeft=f,dw(u,e.startLabelLeft)}if(e.startLabelRight){let h=await kc(e.startLabelRight,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),da.get(e.id)||da.set(e.id,{}),da.get(e.id).startRight=f,dw(u,e.startLabelRight)}if(e.endLabelLeft){let h=await kc(e.endLabelLeft,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),da.get(e.id)||da.set(e.id,{}),da.get(e.id).endLeft=f,dw(u,e.endLabelLeft)}if(e.endLabelRight){let h=await kc(e.endLabelRight,fw(e.labelStyle)),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),da.get(e.id)||da.set(e.id,{}),da.get(e.id).endRight=f,dw(u,e.endLabelRight)}return i},"insertEdgeLabel");o(dw,"setTerminalWidth");gw=o((t,e)=>{X.debug("Moving label abc88 ",t.id,t.label,pw.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=ge(),{subGraphTitleTotalMargin:i}=Pu(n);if(t.label){let a=pw.get(t.id),s=t.x,l=t.y;if(r){let u=qt.calcLabelPosition(r);X.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=da.get(t.id).startLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=da.get(t.id).startRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=da.get(t.id).endLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=da.get(t.id).endRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),IRe=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),ORe=o((t,e,r)=>{X.debug(`intersection calc abc89: - outsidePoint: ${JSON.stringify(e)} - insidePoint : ${JSON.stringify(r)} - node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{X.warn("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(X.info("abc88 checking point",a,e),!IRe(e,a)&&!i){let s=ORe(e,n,a);X.debug("abc88 inside",a,n,s),X.debug("abc88 intersection",s,e);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?X.warn("abc88 no intersect",s,r):r.push(s),i=!0}else X.warn("abc88 outside",a,n),n=a,i||r.push(a)}),X.debug("returning points",r),r},"cutPathAtIntersect");o(PRe,"extractCornerPoints");qte=o(function(t,e,r){let n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:e.x-s*n,y:e.y-s*i}},"findAdjacentPoint"),BRe=o(function(t){let{cornerPointPositions:e}=PRe(t),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){X.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+d:l.x+m-d,y:f<0?l.y-d:l.y+d}:p={x:h<0?l.x-d:l.x+d,y:f<0?l.y-m+d:l.y+m-d}}else X.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(t[n]);return r},"fixCorners"),FRe=o((t,e,r)=>{let n=t-e-r,i=2,a=2,s=i+a,l=Math.floor(n/s),u=Array(l).fill(`${i} ${a}`).join(" ");return`0 ${e} ${u} ${r}`},"generateDashArray"),yw=o(function(t,e,r,n,i,a,s,l=!1){let{handDrawnSeed:u}=ge(),h=e.points,f=!1,d=i;var p=a;let m=[];for(let _ in e.cssCompiledStyles)_2(_)||m.push(e.cssCompiledStyles[_]);X.debug("UIO intersect check",e.points,p.x,d.x),p.intersect&&d.intersect&&!l&&(h=h.slice(1,e.points.length-1),h.unshift(d.intersect(h[0])),X.debug("Last point UIO",e.start,"-->",e.end,h[h.length-1],p,p.intersect(h[h.length-1])),h.push(p.intersect(h[h.length-1])));let g=btoa(JSON.stringify(h));e.toCluster&&(X.info("to cluster abc88",r.get(e.toCluster)),h=Hte(e.points,r.get(e.toCluster).node),f=!0),e.fromCluster&&(X.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(h,null,2)),h=Hte(h.reverse(),r.get(e.fromCluster).node).reverse(),f=!0);let y=h.filter(_=>!Number.isNaN(_.y));y=BRe(y);let v=No;switch(v=Cu,e.curve){case"linear":v=Cu;break;case"basis":v=No;break;case"cardinal":v=Yv;break;case"bumpX":v=Vv;break;case"bumpY":v=Uv;break;case"catmullRom":v=Kv;break;case"monotoneX":v=Qv;break;case"monotoneY":v=Zv;break;case"natural":v=J0;break;case"step":v=em;break;case"stepAfter":v=e2;break;case"stepBefore":v=Jv;break;default:v=No}let{x,y:b}=hw(e),T=Cl().x(x).y(b).curve(v),S;switch(e.thickness){case"normal":S="edge-thickness-normal";break;case"thick":S="edge-thickness-thick";break;case"invisible":S="edge-thickness-invisible";break;default:S="edge-thickness-normal"}switch(e.pattern){case"solid":S+=" edge-pattern-solid";break;case"dotted":S+=" edge-pattern-dotted";break;case"dashed":S+=" edge-pattern-dashed";break;default:S+=" edge-pattern-solid"}let w,k=e.curve==="rounded"?$Re(zRe(y,e),5):T(y),A=Array.isArray(e.style)?e.style:[e.style],C=A.find(_=>_?.startsWith("stroke:")),R=!1;if(e.look==="handDrawn"){let _=Ze.svg(t);Object.assign([],y);let O=_.path(k,{roughness:.3,seed:u});S+=" transition",w=qe(O).select("path").attr("id",e.id).attr("class"," "+S+(e.classes?" "+e.classes:"")).attr("style",A?A.reduce((P,B)=>P+";"+B,""):"");let M=w.attr("d");w.attr("d",M),t.node().appendChild(w.node())}else{let _=m.join(";"),O=A?A.reduce((U,j)=>U+j+";",""):"",M="";e.animate&&(M=" edge-animation-fast"),e.animation&&(M=" edge-animation-"+e.animation);let P=(_?_+";"+O+";":O)+";"+(A?A.reduce((U,j)=>U+";"+j,""):"");w=t.append("path").attr("d",k).attr("id",e.id).attr("class"," "+S+(e.classes?" "+e.classes:"")+(M??"")).attr("style",P),C=P.match(/stroke:([^;]+)/)?.[1],R=e.animate===!0||!!e.animation||_.includes("animation");let B=w.node(),F=typeof B.getTotalLength=="function"?B.getTotalLength():0,G=Y9[e.arrowTypeStart]||0,$=Y9[e.arrowTypeEnd]||0;if(e.look==="neo"&&!R){let j=`stroke-dasharray: ${e.pattern==="dotted"||e.pattern==="dashed"?FRe(F,G,$):`0 ${G} ${F-G-$} ${$}`}; stroke-dashoffset: 0;`;w.attr("style",j+w.attr("style"))}}w.attr("data-edge",!0),w.attr("data-et","edge"),w.attr("data-id",e.id),w.attr("data-points",g),e.showPoints&&y.forEach(_=>{t.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",_.x).attr("cy",_.y)});let I="";(ge().flowchart.arrowMarkerAbsolute||ge().state.arrowMarkerAbsolute)&&(I=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,I=I.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),X.info("arrowTypeStart",e.arrowTypeStart),X.info("arrowTypeEnd",e.arrowTypeEnd),Vte(w,e,I,s,n,C);let L=Math.floor(h.length/2),E=h[L];qt.isLabelCoordinateInPath(E,w.attr("d"))||(f=!0);let D={};return f&&(D.updatedPath=h),D.originalPath=e.points,D},"insertEdge");o($Re,"generateRoundedPath");o(Wte,"calculateDeltaAndAngle");o(zRe,"applyMarkerOffsetsToPoints")});var GRe,VRe,URe,HRe,qRe,WRe,YRe,XRe,jRe,KRe,QRe,ZRe,JRe,eNe,tNe,rNe,nNe,vw,K9=N(()=>{"use strict";pt();GRe=o((t,e,r,n)=>{e.forEach(i=>{nNe[i](t,r,n)})},"insertMarkers"),VRe=o((t,e,r)=>{X.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"),URe=o((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"),HRe=o((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"),qRe=o((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"),WRe=o((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"),YRe=o((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"),XRe=o((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"),jRe=o((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"),KRe=o((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"),QRe=o((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"),ZRe=o((t,e,r)=>{let 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");let i=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");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),JRe=o((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"),eNe=o((t,e,r)=>{let 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");let i=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");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),tNe=o((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"),rNe=o((t,e,r)=>{let n=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");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),nNe={extension:VRe,composition:URe,aggregation:HRe,dependency:qRe,lollipop:WRe,point:YRe,circle:XRe,cross:jRe,barb:KRe,only_one:QRe,zero_or_one:ZRe,one_or_more:JRe,zero_or_more:eNe,requirement_arrow:tNe,requirement_contains:rNe},vw=GRe});async function Cm(t,e,r){let n,i;e.shape==="rect"&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");let a=e.shape?q9[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let s;r.config.securityLevel==="sandbox"?s="_top":e.linkTarget&&(s=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",s??null),i=await a(n,e,r)}else i=await a(t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),xw.set(e.id,n),e.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var xw,Xte,jte,P2,bw=N(()=>{"use strict";pt();W9();xw=new Map;o(Cm,"insertNode");Xte=o((t,e)=>{xw.set(e.id,t)},"setNodeElem"),jte=o(()=>{xw.clear()},"clear"),P2=o(t=>{let e=xw.get(t.id);X.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});var Kte,Qte=N(()=>{"use strict";qn();gr();pt();cw();j9();K9();bw();It();tr();Kte={common:tt,getConfig:Qt,insertCluster:Sm,insertEdge:yw,insertEdgeLabel:mw,insertMarkers:vw,insertNode:Cm,interpolateToCurve:FL,labelHelper:ut,log:X,positionEdgeLabel:gw}});function aNe(t){return typeof t=="symbol"||ai(t)&&ha(t)==iNe}var iNe,uo,tp=N(()=>{"use strict";_u();Oo();iNe="[object Symbol]";o(aNe,"isSymbol");uo=aNe});function sNe(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r{"use strict";o(sNe,"arrayMap");$s=sNe});function ere(t){if(typeof t=="string")return t;if(Bt(t))return $s(t,ere)+"";if(uo(t))return Jte?Jte.call(t):"";var e=t+"";return e=="0"&&1/t==-oNe?"-0":e}var oNe,Zte,Jte,tre,rre=N(()=>{"use strict";$d();rp();Yn();tp();oNe=1/0,Zte=Ki?Ki.prototype:void 0,Jte=Zte?Zte.toString:void 0;o(ere,"baseToString");tre=ere});function cNe(t){for(var e=t.length;e--&&lNe.test(t.charAt(e)););return e}var lNe,nre,ire=N(()=>{"use strict";lNe=/\s/;o(cNe,"trimmedEndIndex");nre=cNe});function hNe(t){return t&&t.slice(0,nre(t)+1).replace(uNe,"")}var uNe,are,sre=N(()=>{"use strict";ire();uNe=/^\s+/;o(hNe,"baseTrim");are=hNe});function gNe(t){if(typeof t=="number")return t;if(uo(t))return ore;if(Sn(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Sn(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=are(t);var r=dNe.test(t);return r||pNe.test(t)?mNe(t.slice(2),r?2:8):fNe.test(t)?ore:+t}var ore,fNe,dNe,pNe,mNe,lre,cre=N(()=>{"use strict";sre();oo();tp();ore=NaN,fNe=/^[-+]0x[0-9a-f]+$/i,dNe=/^0b[01]+$/i,pNe=/^0o[0-7]+$/i,mNe=parseInt;o(gNe,"toNumber");lre=gNe});function vNe(t){if(!t)return t===0?t:0;if(t=lre(t),t===ure||t===-ure){var e=t<0?-1:1;return e*yNe}return t===t?t:0}var ure,yNe,Am,Q9=N(()=>{"use strict";cre();ure=1/0,yNe=17976931348623157e292;o(vNe,"toFinite");Am=vNe});function xNe(t){var e=Am(t),r=e%1;return e===e?r?e-r:e:0}var Ec,_m=N(()=>{"use strict";Q9();o(xNe,"toInteger");Ec=xNe});var bNe,Tw,hre=N(()=>{"use strict";Fh();Mo();bNe=Ls(hi,"WeakMap"),Tw=bNe});function TNe(){}var si,Z9=N(()=>{"use strict";o(TNe,"noop");si=TNe});function wNe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(wNe,"arrayEach");ww=wNe});function kNe(t,e,r,n){for(var i=t.length,a=r+(n?1:-1);n?a--:++a{"use strict";o(kNe,"baseFindIndex");kw=kNe});function ENe(t){return t!==t}var fre,dre=N(()=>{"use strict";o(ENe,"baseIsNaN");fre=ENe});function SNe(t,e,r){for(var n=r-1,i=t.length;++n{"use strict";o(SNe,"strictIndexOf");pre=SNe});function CNe(t,e,r){return e===e?pre(t,e,r):kw(t,fre,r)}var Dm,Ew=N(()=>{"use strict";eR();dre();mre();o(CNe,"baseIndexOf");Dm=CNe});function ANe(t,e){var r=t==null?0:t.length;return!!r&&Dm(t,e,0)>-1}var Sw,tR=N(()=>{"use strict";Ew();o(ANe,"arrayIncludes");Sw=ANe});var _Ne,gre,yre=N(()=>{"use strict";SL();_Ne=xT(Object.keys,Object),gre=_Ne});function RNe(t){if(!mc(t))return gre(t);var e=[];for(var r in Object(t))LNe.call(t,r)&&r!="constructor"&&e.push(r);return e}var DNe,LNe,Lm,Cw=N(()=>{"use strict";dm();yre();DNe=Object.prototype,LNe=DNe.hasOwnProperty;o(RNe,"baseKeys");Lm=RNe});function NNe(t){return fi(t)?ET(t):Lm(t)}var qr,Sc=N(()=>{"use strict";LL();Cw();Po();o(NNe,"keys");qr=NNe});var MNe,INe,ONe,pa,vre=N(()=>{"use strict";ym();Hd();IL();Po();dm();Sc();MNe=Object.prototype,INe=MNe.hasOwnProperty,ONe=AT(function(t,e){if(mc(e)||fi(e)){$o(e,qr(e),t);return}for(var r in e)INe.call(e,r)&&gc(t,r,e[r])}),pa=ONe});function FNe(t,e){if(Bt(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||uo(t)?!0:BNe.test(t)||!PNe.test(t)||e!=null&&t in Object(e)}var PNe,BNe,Rm,Aw=N(()=>{"use strict";Yn();tp();PNe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,BNe=/^\w*$/;o(FNe,"isKey");Rm=FNe});function zNe(t){var e=am(t,function(n){return r.size===$Ne&&r.clear(),n}),r=e.cache;return e}var $Ne,xre,bre=N(()=>{"use strict";vL();$Ne=500;o(zNe,"memoizeCapped");xre=zNe});var GNe,VNe,UNe,Tre,wre=N(()=>{"use strict";bre();GNe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,VNe=/\\(\\)?/g,UNe=xre(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(GNe,function(r,n,i,a){e.push(i?a.replace(VNe,"$1"):n||r)}),e}),Tre=UNe});function HNe(t){return t==null?"":tre(t)}var _w,rR=N(()=>{"use strict";rre();o(HNe,"toString");_w=HNe});function qNe(t,e){return Bt(t)?t:Rm(t,e)?[t]:Tre(_w(t))}var rf,B2=N(()=>{"use strict";Yn();Aw();wre();rR();o(qNe,"castPath");rf=qNe});function YNe(t){if(typeof t=="string"||uo(t))return t;var e=t+"";return e=="0"&&1/t==-WNe?"-0":e}var WNe,Cc,Nm=N(()=>{"use strict";tp();WNe=1/0;o(YNe,"toKey");Cc=YNe});function XNe(t,e){e=rf(e,t);for(var r=0,n=e.length;t!=null&&r{"use strict";B2();Nm();o(XNe,"baseGet");nf=XNe});function jNe(t,e,r){var n=t==null?void 0:nf(t,e);return n===void 0?r:n}var kre,Ere=N(()=>{"use strict";F2();o(jNe,"get");kre=jNe});function KNe(t,e){for(var r=-1,n=e.length,i=t.length;++r{"use strict";o(KNe,"arrayPush");Mm=KNe});function QNe(t){return Bt(t)||_l(t)||!!(Sre&&t&&t[Sre])}var Sre,Cre,Are=N(()=>{"use strict";$d();pm();Yn();Sre=Ki?Ki.isConcatSpreadable:void 0;o(QNe,"isFlattenable");Cre=QNe});function _re(t,e,r,n,i){var a=-1,s=t.length;for(r||(r=Cre),i||(i=[]);++a0&&r(l)?e>1?_re(l,e-1,r,n,i):Mm(i,l):n||(i[i.length]=l)}return i}var Ac,Im=N(()=>{"use strict";Dw();Are();o(_re,"baseFlatten");Ac=_re});function ZNe(t){var e=t==null?0:t.length;return e?Ac(t,1):[]}var Qr,Lw=N(()=>{"use strict";Im();o(ZNe,"flatten");Qr=ZNe});function JNe(t){return CT(ST(t,void 0,Qr),t+"")}var Dre,Lre=N(()=>{"use strict";Lw();RL();ML();o(JNe,"flatRest");Dre=JNe});function eMe(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),r=r>i?i:r,r<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(i);++n{"use strict";o(eMe,"baseSlice");Rw=eMe});function cMe(t){return lMe.test(t)}var tMe,rMe,nMe,iMe,aMe,sMe,oMe,lMe,Rre,Nre=N(()=>{"use strict";tMe="\\ud800-\\udfff",rMe="\\u0300-\\u036f",nMe="\\ufe20-\\ufe2f",iMe="\\u20d0-\\u20ff",aMe=rMe+nMe+iMe,sMe="\\ufe0e\\ufe0f",oMe="\\u200d",lMe=RegExp("["+oMe+tMe+aMe+sMe+"]");o(cMe,"hasUnicode");Rre=cMe});function uMe(t,e,r,n){var i=-1,a=t==null?0:t.length;for(n&&a&&(r=t[++i]);++i{"use strict";o(uMe,"arrayReduce");Mre=uMe});function hMe(t,e){return t&&$o(e,qr(e),t)}var Ore,Pre=N(()=>{"use strict";Hd();Sc();o(hMe,"baseAssign");Ore=hMe});function fMe(t,e){return t&&$o(e,Rs(e),t)}var Bre,Fre=N(()=>{"use strict";Hd();qh();o(fMe,"baseAssignIn");Bre=fMe});function dMe(t,e){for(var r=-1,n=t==null?0:t.length,i=0,a=[];++r{"use strict";o(dMe,"arrayFilter");Om=dMe});function pMe(){return[]}var Mw,iR=N(()=>{"use strict";o(pMe,"stubArray");Mw=pMe});var mMe,gMe,$re,yMe,Pm,Iw=N(()=>{"use strict";Nw();iR();mMe=Object.prototype,gMe=mMe.propertyIsEnumerable,$re=Object.getOwnPropertySymbols,yMe=$re?function(t){return t==null?[]:(t=Object(t),Om($re(t),function(e){return gMe.call(t,e)}))}:Mw,Pm=yMe});function vMe(t,e){return $o(t,Pm(t),e)}var zre,Gre=N(()=>{"use strict";Hd();Iw();o(vMe,"copySymbols");zre=vMe});var xMe,bMe,Ow,aR=N(()=>{"use strict";Dw();bT();Iw();iR();xMe=Object.getOwnPropertySymbols,bMe=xMe?function(t){for(var e=[];t;)Mm(e,Pm(t)),t=fm(t);return e}:Mw,Ow=bMe});function TMe(t,e){return $o(t,Ow(t),e)}var Vre,Ure=N(()=>{"use strict";Hd();aR();o(TMe,"copySymbolsIn");Vre=TMe});function wMe(t,e,r){var n=e(t);return Bt(t)?n:Mm(n,r(t))}var Pw,sR=N(()=>{"use strict";Dw();Yn();o(wMe,"baseGetAllKeys");Pw=wMe});function kMe(t){return Pw(t,qr,Pm)}var $2,oR=N(()=>{"use strict";sR();Iw();Sc();o(kMe,"getAllKeys");$2=kMe});function EMe(t){return Pw(t,Rs,Ow)}var Bw,lR=N(()=>{"use strict";sR();aR();qh();o(EMe,"getAllKeysIn");Bw=EMe});var SMe,Fw,Hre=N(()=>{"use strict";Fh();Mo();SMe=Ls(hi,"DataView"),Fw=SMe});var CMe,$w,qre=N(()=>{"use strict";Fh();Mo();CMe=Ls(hi,"Promise"),$w=CMe});var AMe,af,cR=N(()=>{"use strict";Fh();Mo();AMe=Ls(hi,"Set"),af=AMe});var Wre,_Me,Yre,Xre,jre,Kre,DMe,LMe,RMe,NMe,MMe,np,ho,ip=N(()=>{"use strict";Hre();fT();qre();cR();hre();_u();mL();Wre="[object Map]",_Me="[object Object]",Yre="[object Promise]",Xre="[object Set]",jre="[object WeakMap]",Kre="[object DataView]",DMe=Du(Fw),LMe=Du(Gh),RMe=Du($w),NMe=Du(af),MMe=Du(Tw),np=ha;(Fw&&np(new Fw(new ArrayBuffer(1)))!=Kre||Gh&&np(new Gh)!=Wre||$w&&np($w.resolve())!=Yre||af&&np(new af)!=Xre||Tw&&np(new Tw)!=jre)&&(np=o(function(t){var e=ha(t),r=e==_Me?t.constructor:void 0,n=r?Du(r):"";if(n)switch(n){case DMe:return Kre;case LMe:return Wre;case RMe:return Yre;case NMe:return Xre;case MMe:return jre}return e},"getTag"));ho=np});function PMe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&OMe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var IMe,OMe,Qre,Zre=N(()=>{"use strict";IMe=Object.prototype,OMe=IMe.hasOwnProperty;o(PMe,"initCloneArray");Qre=PMe});function BMe(t,e){var r=e?hm(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var Jre,ene=N(()=>{"use strict";gT();o(BMe,"cloneDataView");Jre=BMe});function $Me(t){var e=new t.constructor(t.source,FMe.exec(t));return e.lastIndex=t.lastIndex,e}var FMe,tne,rne=N(()=>{"use strict";FMe=/\w*$/;o($Me,"cloneRegExp");tne=$Me});function zMe(t){return ine?Object(ine.call(t)):{}}var nne,ine,ane,sne=N(()=>{"use strict";$d();nne=Ki?Ki.prototype:void 0,ine=nne?nne.valueOf:void 0;o(zMe,"cloneSymbol");ane=zMe});function sIe(t,e,r){var n=t.constructor;switch(e){case jMe:return hm(t);case GMe:case VMe:return new n(+t);case KMe:return Jre(t,r);case QMe:case ZMe:case JMe:case eIe:case tIe:case rIe:case nIe:case iIe:case aIe:return yT(t,r);case UMe:return new n;case HMe:case YMe:return new n(t);case qMe:return tne(t);case WMe:return new n;case XMe:return ane(t)}}var GMe,VMe,UMe,HMe,qMe,WMe,YMe,XMe,jMe,KMe,QMe,ZMe,JMe,eIe,tIe,rIe,nIe,iIe,aIe,one,lne=N(()=>{"use strict";gT();ene();rne();sne();kL();GMe="[object Boolean]",VMe="[object Date]",UMe="[object Map]",HMe="[object Number]",qMe="[object RegExp]",WMe="[object Set]",YMe="[object String]",XMe="[object Symbol]",jMe="[object ArrayBuffer]",KMe="[object DataView]",QMe="[object Float32Array]",ZMe="[object Float64Array]",JMe="[object Int8Array]",eIe="[object Int16Array]",tIe="[object Int32Array]",rIe="[object Uint8Array]",nIe="[object Uint8ClampedArray]",iIe="[object Uint16Array]",aIe="[object Uint32Array]";o(sIe,"initCloneByTag");one=sIe});function lIe(t){return ai(t)&&ho(t)==oIe}var oIe,cne,une=N(()=>{"use strict";ip();Oo();oIe="[object Map]";o(lIe,"baseIsMap");cne=lIe});var hne,cIe,fne,dne=N(()=>{"use strict";une();Ud();f2();hne=Fo&&Fo.isMap,cIe=hne?Bo(hne):cne,fne=cIe});function hIe(t){return ai(t)&&ho(t)==uIe}var uIe,pne,mne=N(()=>{"use strict";ip();Oo();uIe="[object Set]";o(hIe,"baseIsSet");pne=hIe});var gne,fIe,yne,vne=N(()=>{"use strict";mne();Ud();f2();gne=Fo&&Fo.isSet,fIe=gne?Bo(gne):pne,yne=fIe});function zw(t,e,r,n,i,a){var s,l=e&dIe,u=e&pIe,h=e&mIe;if(r&&(s=i?r(t,n,i,a):r(t)),s!==void 0)return s;if(!Sn(t))return t;var f=Bt(t);if(f){if(s=Qre(t),!l)return vT(t,s)}else{var d=ho(t),p=d==bne||d==bIe;if(Dl(t))return mT(t,l);if(d==Tne||d==xne||p&&!i){if(s=u||p?{}:TT(t),!l)return u?Vre(t,Bre(s,t)):zre(t,Ore(s,t))}else{if(!Mn[d])return i?t:{};s=one(t,d,l)}}a||(a=new dc);var m=a.get(t);if(m)return m;a.set(t,s),yne(t)?t.forEach(function(v){s.add(zw(v,e,r,v,t,a))}):fne(t)&&t.forEach(function(v,x){s.set(x,zw(v,e,r,x,t,a))});var g=h?u?Bw:$2:u?Rs:qr,y=f?void 0:g(t);return ww(y||t,function(v,x){y&&(x=v,v=t[x]),gc(s,x,zw(v,e,r,x,t,a))}),s}var dIe,pIe,mIe,xne,gIe,yIe,vIe,xIe,bne,bIe,TIe,wIe,Tne,kIe,EIe,SIe,CIe,AIe,_Ie,DIe,LIe,RIe,NIe,MIe,IIe,OIe,PIe,BIe,FIe,Mn,Gw,uR=N(()=>{"use strict";c2();J9();ym();Pre();Fre();TL();EL();Gre();Ure();oR();lR();ip();Zre();lne();CL();Yn();gm();dne();oo();vne();Sc();qh();dIe=1,pIe=2,mIe=4,xne="[object Arguments]",gIe="[object Array]",yIe="[object Boolean]",vIe="[object Date]",xIe="[object Error]",bne="[object Function]",bIe="[object GeneratorFunction]",TIe="[object Map]",wIe="[object Number]",Tne="[object Object]",kIe="[object RegExp]",EIe="[object Set]",SIe="[object String]",CIe="[object Symbol]",AIe="[object WeakMap]",_Ie="[object ArrayBuffer]",DIe="[object DataView]",LIe="[object Float32Array]",RIe="[object Float64Array]",NIe="[object Int8Array]",MIe="[object Int16Array]",IIe="[object Int32Array]",OIe="[object Uint8Array]",PIe="[object Uint8ClampedArray]",BIe="[object Uint16Array]",FIe="[object Uint32Array]",Mn={};Mn[xne]=Mn[gIe]=Mn[_Ie]=Mn[DIe]=Mn[yIe]=Mn[vIe]=Mn[LIe]=Mn[RIe]=Mn[NIe]=Mn[MIe]=Mn[IIe]=Mn[TIe]=Mn[wIe]=Mn[Tne]=Mn[kIe]=Mn[EIe]=Mn[SIe]=Mn[CIe]=Mn[OIe]=Mn[PIe]=Mn[BIe]=Mn[FIe]=!0;Mn[xIe]=Mn[bne]=Mn[AIe]=!1;o(zw,"baseClone");Gw=zw});function zIe(t){return Gw(t,$Ie)}var $Ie,ln,hR=N(()=>{"use strict";uR();$Ie=4;o(zIe,"clone");ln=zIe});function UIe(t){return Gw(t,GIe|VIe)}var GIe,VIe,fR,wne=N(()=>{"use strict";uR();GIe=1,VIe=4;o(UIe,"cloneDeep");fR=UIe});function HIe(t){for(var e=-1,r=t==null?0:t.length,n=0,i=[];++e{"use strict";o(HIe,"compact");_c=HIe});function WIe(t){return this.__data__.set(t,qIe),this}var qIe,Ene,Sne=N(()=>{"use strict";qIe="__lodash_hash_undefined__";o(WIe,"setCacheAdd");Ene=WIe});function YIe(t){return this.__data__.has(t)}var Cne,Ane=N(()=>{"use strict";o(YIe,"setCacheHas");Cne=YIe});function Vw(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new Gd;++e{"use strict";dT();Sne();Ane();o(Vw,"SetCache");Vw.prototype.add=Vw.prototype.push=Ene;Vw.prototype.has=Cne;Bm=Vw});function XIe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(XIe,"arraySome");Hw=XIe});function jIe(t,e){return t.has(e)}var Fm,qw=N(()=>{"use strict";o(jIe,"cacheHas");Fm=jIe});function ZIe(t,e,r,n,i,a){var s=r&KIe,l=t.length,u=e.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(t),f=a.get(e);if(h&&f)return h==e&&f==t;var d=-1,p=!0,m=r&QIe?new Bm:void 0;for(a.set(t,e),a.set(e,t);++d{"use strict";Uw();dR();qw();KIe=1,QIe=2;o(ZIe,"equalArrays");Ww=ZIe});function JIe(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}var _ne,Dne=N(()=>{"use strict";o(JIe,"mapToArray");_ne=JIe});function eOe(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var $m,Yw=N(()=>{"use strict";o(eOe,"setToArray");$m=eOe});function pOe(t,e,r,n,i,a,s){switch(r){case dOe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case fOe:return!(t.byteLength!=e.byteLength||!a(new um(t),new um(e)));case nOe:case iOe:case oOe:return Io(+t,+e);case aOe:return t.name==e.name&&t.message==e.message;case lOe:case uOe:return t==e+"";case sOe:var l=_ne;case cOe:var u=n&tOe;if(l||(l=$m),t.size!=e.size&&!u)return!1;var h=s.get(t);if(h)return h==e;n|=rOe,s.set(t,e);var f=Ww(l(t),l(e),n,i,a,s);return s.delete(t),f;case hOe:if(mR)return mR.call(t)==mR.call(e)}return!1}var tOe,rOe,nOe,iOe,aOe,sOe,oOe,lOe,cOe,uOe,hOe,fOe,dOe,Lne,mR,Rne,Nne=N(()=>{"use strict";$d();wL();zd();pR();Dne();Yw();tOe=1,rOe=2,nOe="[object Boolean]",iOe="[object Date]",aOe="[object Error]",sOe="[object Map]",oOe="[object Number]",lOe="[object RegExp]",cOe="[object Set]",uOe="[object String]",hOe="[object Symbol]",fOe="[object ArrayBuffer]",dOe="[object DataView]",Lne=Ki?Ki.prototype:void 0,mR=Lne?Lne.valueOf:void 0;o(pOe,"equalByTag");Rne=pOe});function vOe(t,e,r,n,i,a){var s=r&mOe,l=$2(t),u=l.length,h=$2(e),f=h.length;if(u!=f&&!s)return!1;for(var d=u;d--;){var p=l[d];if(!(s?p in e:yOe.call(e,p)))return!1}var m=a.get(t),g=a.get(e);if(m&&g)return m==e&&g==t;var y=!0;a.set(t,e),a.set(e,t);for(var v=s;++d{"use strict";oR();mOe=1,gOe=Object.prototype,yOe=gOe.hasOwnProperty;o(vOe,"equalObjects");Mne=vOe});function TOe(t,e,r,n,i,a){var s=Bt(t),l=Bt(e),u=s?Pne:ho(t),h=l?Pne:ho(e);u=u==One?Xw:u,h=h==One?Xw:h;var f=u==Xw,d=h==Xw,p=u==h;if(p&&Dl(t)){if(!Dl(e))return!1;s=!0,f=!1}if(p&&!f)return a||(a=new dc),s||Uh(t)?Ww(t,e,r,n,i,a):Rne(t,e,u,r,n,i,a);if(!(r&xOe)){var m=f&&Bne.call(t,"__wrapped__"),g=d&&Bne.call(e,"__wrapped__");if(m||g){var y=m?t.value():t,v=g?e.value():e;return a||(a=new dc),i(y,v,r,n,a)}}return p?(a||(a=new dc),Mne(t,e,r,n,i,a)):!1}var xOe,One,Pne,Xw,bOe,Bne,Fne,$ne=N(()=>{"use strict";c2();pR();Nne();Ine();ip();Yn();gm();d2();xOe=1,One="[object Arguments]",Pne="[object Array]",Xw="[object Object]",bOe=Object.prototype,Bne=bOe.hasOwnProperty;o(TOe,"baseIsEqualDeep");Fne=TOe});function zne(t,e,r,n,i){return t===e?!0:t==null||e==null||!ai(t)&&!ai(e)?t!==t&&e!==e:Fne(t,e,r,n,zne,i)}var jw,gR=N(()=>{"use strict";$ne();Oo();o(zne,"baseIsEqual");jw=zne});function EOe(t,e,r,n){var i=r.length,a=i,s=!n;if(t==null)return!a;for(t=Object(t);i--;){var l=r[i];if(s&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++i{"use strict";c2();gR();wOe=1,kOe=2;o(EOe,"baseIsMatch");Gne=EOe});function SOe(t){return t===t&&!Sn(t)}var Kw,yR=N(()=>{"use strict";oo();o(SOe,"isStrictComparable");Kw=SOe});function COe(t){for(var e=qr(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,Kw(i)]}return e}var Une,Hne=N(()=>{"use strict";yR();Sc();o(COe,"getMatchData");Une=COe});function AOe(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var Qw,vR=N(()=>{"use strict";o(AOe,"matchesStrictComparable");Qw=AOe});function _Oe(t){var e=Une(t);return e.length==1&&e[0][2]?Qw(e[0][0],e[0][1]):function(r){return r===t||Gne(r,t,e)}}var qne,Wne=N(()=>{"use strict";Vne();Hne();vR();o(_Oe,"baseMatches");qne=_Oe});function DOe(t,e){return t!=null&&e in Object(t)}var Yne,Xne=N(()=>{"use strict";o(DOe,"baseHasIn");Yne=DOe});function LOe(t,e,r){e=rf(e,t);for(var n=-1,i=e.length,a=!1;++n{"use strict";B2();pm();Yn();m2();wT();Nm();o(LOe,"hasPath");Zw=LOe});function ROe(t,e){return t!=null&&Zw(t,e,Yne)}var Jw,bR=N(()=>{"use strict";Xne();xR();o(ROe,"hasIn");Jw=ROe});function IOe(t,e){return Rm(t)&&Kw(e)?Qw(Cc(t),e):function(r){var n=kre(r,t);return n===void 0&&n===e?Jw(r,t):jw(e,n,NOe|MOe)}}var NOe,MOe,jne,Kne=N(()=>{"use strict";gR();Ere();bR();Aw();yR();vR();Nm();NOe=1,MOe=2;o(IOe,"baseMatchesProperty");jne=IOe});function OOe(t){return function(e){return e?.[t]}}var ek,TR=N(()=>{"use strict";o(OOe,"baseProperty");ek=OOe});function POe(t){return function(e){return nf(e,t)}}var Qne,Zne=N(()=>{"use strict";F2();o(POe,"basePropertyDeep");Qne=POe});function BOe(t){return Rm(t)?ek(Cc(t)):Qne(t)}var Jne,eie=N(()=>{"use strict";TR();Zne();Aw();Nm();o(BOe,"property");Jne=BOe});function FOe(t){return typeof t=="function"?t:t==null?Qi:typeof t=="object"?Bt(t)?jne(t[0],t[1]):qne(t):Jne(t)}var vn,ss=N(()=>{"use strict";Wne();Kne();Ru();Yn();eie();o(FOe,"baseIteratee");vn=FOe});function $Oe(t,e,r,n){for(var i=-1,a=t==null?0:t.length;++i{"use strict";o($Oe,"arrayAggregator");tie=$Oe});function zOe(t,e){return t&&cm(t,e,qr)}var zm,tk=N(()=>{"use strict";pT();Sc();o(zOe,"baseForOwn");zm=zOe});function GOe(t,e){return function(r,n){if(r==null)return r;if(!fi(r))return t(r,n);for(var i=r.length,a=e?i:-1,s=Object(r);(e?a--:++a{"use strict";Po();o(GOe,"createBaseEach");nie=GOe});var VOe,zs,sf=N(()=>{"use strict";tk();iie();VOe=nie(zm),zs=VOe});function UOe(t,e,r,n){return zs(t,function(i,a,s){e(n,i,r(i),s)}),n}var aie,sie=N(()=>{"use strict";sf();o(UOe,"baseAggregator");aie=UOe});function HOe(t,e){return function(r,n){var i=Bt(r)?tie:aie,a=e?e():{};return i(r,t,vn(n,2),a)}}var oie,lie=N(()=>{"use strict";rie();sie();ss();Yn();o(HOe,"createAggregator");oie=HOe});var qOe,rk,cie=N(()=>{"use strict";Mo();qOe=o(function(){return hi.Date.now()},"now"),rk=qOe});var uie,WOe,YOe,of,hie=N(()=>{"use strict";vm();zd();qd();qh();uie=Object.prototype,WOe=uie.hasOwnProperty,YOe=yc(function(t,e){t=Object(t);var r=-1,n=e.length,i=n>2?e[2]:void 0;for(i&&lo(e[0],e[1],i)&&(n=1);++r{"use strict";o(XOe,"arrayIncludesWith");nk=XOe});function KOe(t,e,r,n){var i=-1,a=Sw,s=!0,l=t.length,u=[],h=e.length;if(!l)return u;r&&(e=$s(e,Bo(r))),n?(a=nk,s=!1):e.length>=jOe&&(a=Fm,s=!1,e=new Bm(e));e:for(;++i{"use strict";Uw();tR();wR();rp();Ud();qw();jOe=200;o(KOe,"baseDifference");fie=KOe});var QOe,lf,pie=N(()=>{"use strict";die();Im();vm();kT();QOe=yc(function(t,e){return Vd(t)?fie(t,Ac(e,1,Vd,!0)):[]}),lf=QOe});function ZOe(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var ma,mie=N(()=>{"use strict";o(ZOe,"last");ma=ZOe});function JOe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:Ec(e),Rw(t,e<0?0:e,n)):[]}var yi,gie=N(()=>{"use strict";nR();_m();o(JOe,"drop");yi=JOe});function ePe(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:Ec(e),e=n-e,Rw(t,0,e<0?0:e)):[]}var Bu,yie=N(()=>{"use strict";nR();_m();o(ePe,"dropRight");Bu=ePe});function tPe(t){return typeof t=="function"?t:Qi}var Gm,ik=N(()=>{"use strict";Ru();o(tPe,"castFunction");Gm=tPe});function rPe(t,e){var r=Bt(t)?ww:zs;return r(t,Gm(e))}var Ae,ak=N(()=>{"use strict";J9();sf();ik();Yn();o(rPe,"forEach");Ae=rPe});var vie=N(()=>{"use strict";ak()});function nPe(t,e){for(var r=-1,n=t==null?0:t.length;++r{"use strict";o(nPe,"arrayEvery");xie=nPe});function iPe(t,e){var r=!0;return zs(t,function(n,i,a){return r=!!e(n,i,a),r}),r}var Tie,wie=N(()=>{"use strict";sf();o(iPe,"baseEvery");Tie=iPe});function aPe(t,e,r){var n=Bt(t)?xie:Tie;return r&&lo(t,e,r)&&(e=void 0),n(t,vn(e,3))}var Pa,kie=N(()=>{"use strict";bie();wie();ss();Yn();qd();o(aPe,"every");Pa=aPe});function sPe(t,e){var r=[];return zs(t,function(n,i,a){e(n,i,a)&&r.push(n)}),r}var sk,kR=N(()=>{"use strict";sf();o(sPe,"baseFilter");sk=sPe});function oPe(t,e){var r=Bt(t)?Om:sk;return r(t,vn(e,3))}var Zr,ER=N(()=>{"use strict";Nw();kR();ss();Yn();o(oPe,"filter");Zr=oPe});function lPe(t){return function(e,r,n){var i=Object(e);if(!fi(e)){var a=vn(r,3);e=qr(e),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=t(e,r,n);return s>-1?i[a?e[s]:s]:void 0}}var Eie,Sie=N(()=>{"use strict";ss();Po();Sc();o(lPe,"createFind");Eie=lPe});function uPe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:Ec(r);return i<0&&(i=cPe(n+i,0)),kw(t,vn(e,3),i)}var cPe,Cie,Aie=N(()=>{"use strict";eR();ss();_m();cPe=Math.max;o(uPe,"findIndex");Cie=uPe});var hPe,os,_ie=N(()=>{"use strict";Sie();Aie();hPe=Eie(Cie),os=hPe});function fPe(t){return t&&t.length?t[0]:void 0}var ea,Die=N(()=>{"use strict";o(fPe,"head");ea=fPe});var Lie=N(()=>{"use strict";Die()});function dPe(t,e){var r=-1,n=fi(t)?Array(t.length):[];return zs(t,function(i,a,s){n[++r]=e(i,a,s)}),n}var ok,SR=N(()=>{"use strict";sf();Po();o(dPe,"baseMap");ok=dPe});function pPe(t,e){var r=Bt(t)?$s:ok;return r(t,vn(e,3))}var rt,Vm=N(()=>{"use strict";rp();ss();SR();Yn();o(pPe,"map");rt=pPe});function mPe(t,e){return Ac(rt(t,e),1)}var ga,CR=N(()=>{"use strict";Im();Vm();o(mPe,"flatMap");ga=mPe});function gPe(t,e){return t==null?t:cm(t,Gm(e),Rs)}var AR,Rie=N(()=>{"use strict";pT();ik();qh();o(gPe,"forIn");AR=gPe});function yPe(t,e){return t&&zm(t,Gm(e))}var _R,Nie=N(()=>{"use strict";tk();ik();o(yPe,"forOwn");_R=yPe});var vPe,xPe,bPe,DR,Mie=N(()=>{"use strict";lm();lie();vPe=Object.prototype,xPe=vPe.hasOwnProperty,bPe=oie(function(t,e,r){xPe.call(t,r)?t[r].push(e):pc(t,r,[e])}),DR=bPe});function TPe(t,e){return t>e}var Iie,Oie=N(()=>{"use strict";o(TPe,"baseGt");Iie=TPe});function EPe(t,e){return t!=null&&kPe.call(t,e)}var wPe,kPe,Pie,Bie=N(()=>{"use strict";wPe=Object.prototype,kPe=wPe.hasOwnProperty;o(EPe,"baseHas");Pie=EPe});function SPe(t,e){return t!=null&&Zw(t,e,Pie)}var Ft,Fie=N(()=>{"use strict";Bie();xR();o(SPe,"has");Ft=SPe});function APe(t){return typeof t=="string"||!Bt(t)&&ai(t)&&ha(t)==CPe}var CPe,xi,lk=N(()=>{"use strict";_u();Yn();Oo();CPe="[object String]";o(APe,"isString");xi=APe});function _Pe(t,e){return $s(e,function(r){return t[r]})}var $ie,zie=N(()=>{"use strict";rp();o(_Pe,"baseValues");$ie=_Pe});function DPe(t){return t==null?[]:$ie(t,qr(t))}var kr,LR=N(()=>{"use strict";zie();Sc();o(DPe,"values");kr=DPe});function RPe(t,e,r,n){t=fi(t)?t:kr(t),r=r&&!n?Ec(r):0;var i=t.length;return r<0&&(r=LPe(i+r,0)),xi(t)?r<=i&&t.indexOf(e,r)>-1:!!i&&Dm(t,e,r)>-1}var LPe,jn,Gie=N(()=>{"use strict";Ew();Po();lk();_m();LR();LPe=Math.max;o(RPe,"includes");jn=RPe});function MPe(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:Ec(r);return i<0&&(i=NPe(n+i,0)),Dm(t,e,i)}var NPe,ck,Vie=N(()=>{"use strict";Ew();_m();NPe=Math.max;o(MPe,"indexOf");ck=MPe});function FPe(t){if(t==null)return!0;if(fi(t)&&(Bt(t)||typeof t=="string"||typeof t.splice=="function"||Dl(t)||Uh(t)||_l(t)))return!t.length;var e=ho(t);if(e==IPe||e==OPe)return!t.size;if(mc(t))return!Lm(t).length;for(var r in t)if(BPe.call(t,r))return!1;return!0}var IPe,OPe,PPe,BPe,mr,uk=N(()=>{"use strict";Cw();ip();pm();Yn();Po();gm();dm();d2();IPe="[object Map]",OPe="[object Set]",PPe=Object.prototype,BPe=PPe.hasOwnProperty;o(FPe,"isEmpty");mr=FPe});function zPe(t){return ai(t)&&ha(t)==$Pe}var $Pe,Uie,Hie=N(()=>{"use strict";_u();Oo();$Pe="[object RegExp]";o(zPe,"baseIsRegExp");Uie=zPe});var qie,GPe,Uo,Wie=N(()=>{"use strict";Hie();Ud();f2();qie=Fo&&Fo.isRegExp,GPe=qie?Bo(qie):Uie,Uo=GPe});function VPe(t){return t===void 0}var xr,Yie=N(()=>{"use strict";o(VPe,"isUndefined");xr=VPe});function UPe(t,e){return t{"use strict";o(UPe,"baseLt");hk=UPe});function HPe(t,e){var r={};return e=vn(e,3),zm(t,function(n,i,a){pc(r,i,e(n,i,a))}),r}var ap,Xie=N(()=>{"use strict";lm();tk();ss();o(HPe,"mapValues");ap=HPe});function qPe(t,e,r){for(var n=-1,i=t.length;++n{"use strict";tp();o(qPe,"baseExtremum");Um=qPe});function WPe(t){return t&&t.length?Um(t,Qi,Iie):void 0}var Gs,jie=N(()=>{"use strict";fk();Oie();Ru();o(WPe,"max");Gs=WPe});function YPe(t){return t&&t.length?Um(t,Qi,hk):void 0}var Rl,NR=N(()=>{"use strict";fk();RR();Ru();o(YPe,"min");Rl=YPe});function XPe(t,e){return t&&t.length?Um(t,vn(e,2),hk):void 0}var sp,Kie=N(()=>{"use strict";fk();ss();RR();o(XPe,"minBy");sp=XPe});function KPe(t){if(typeof t!="function")throw new TypeError(jPe);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}var jPe,Qie,Zie=N(()=>{"use strict";jPe="Expected a function";o(KPe,"negate");Qie=KPe});function QPe(t,e,r,n){if(!Sn(t))return t;e=rf(e,t);for(var i=-1,a=e.length,s=a-1,l=t;l!=null&&++i{"use strict";ym();B2();m2();oo();Nm();o(QPe,"baseSet");Jie=QPe});function ZPe(t,e,r){for(var n=-1,i=e.length,a={};++n{"use strict";F2();eae();B2();o(ZPe,"basePickBy");dk=ZPe});function JPe(t,e){if(t==null)return{};var r=$s(Bw(t),function(n){return[n]});return e=vn(e),dk(t,r,function(n,i){return e(n,i[0])})}var Vs,tae=N(()=>{"use strict";rp();ss();MR();lR();o(JPe,"pickBy");Vs=JPe});function eBe(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var rae,nae=N(()=>{"use strict";o(eBe,"baseSortBy");rae=eBe});function tBe(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,a=uo(t),s=e!==void 0,l=e===null,u=e===e,h=uo(e);if(!l&&!h&&!a&&t>e||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&t{"use strict";tp();o(tBe,"compareAscending");iae=tBe});function rBe(t,e,r){for(var n=-1,i=t.criteria,a=e.criteria,s=i.length,l=r.length;++n=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return t.index-e.index}var sae,oae=N(()=>{"use strict";aae();o(rBe,"compareMultiple");sae=rBe});function nBe(t,e,r){e.length?e=$s(e,function(a){return Bt(a)?function(s){return nf(s,a.length===1?a[0]:a)}:a}):e=[Qi];var n=-1;e=$s(e,Bo(vn));var i=ok(t,function(a,s,l){var u=$s(e,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return rae(i,function(a,s){return sae(a,s,r)})}var lae,cae=N(()=>{"use strict";rp();F2();ss();SR();nae();Ud();oae();Ru();Yn();o(nBe,"baseOrderBy");lae=nBe});var iBe,uae,hae=N(()=>{"use strict";TR();iBe=ek("length"),uae=iBe});function gBe(t){for(var e=fae.lastIndex=0;fae.test(t);)++e;return e}var dae,aBe,sBe,oBe,lBe,cBe,uBe,IR,OR,hBe,pae,mae,gae,fBe,yae,vae,dBe,pBe,mBe,fae,xae,bae=N(()=>{"use strict";dae="\\ud800-\\udfff",aBe="\\u0300-\\u036f",sBe="\\ufe20-\\ufe2f",oBe="\\u20d0-\\u20ff",lBe=aBe+sBe+oBe,cBe="\\ufe0e\\ufe0f",uBe="["+dae+"]",IR="["+lBe+"]",OR="\\ud83c[\\udffb-\\udfff]",hBe="(?:"+IR+"|"+OR+")",pae="[^"+dae+"]",mae="(?:\\ud83c[\\udde6-\\uddff]){2}",gae="[\\ud800-\\udbff][\\udc00-\\udfff]",fBe="\\u200d",yae=hBe+"?",vae="["+cBe+"]?",dBe="(?:"+fBe+"(?:"+[pae,mae,gae].join("|")+")"+vae+yae+")*",pBe=vae+yae+dBe,mBe="(?:"+[pae+IR+"?",IR,mae,gae,uBe].join("|")+")",fae=RegExp(OR+"(?="+OR+")|"+mBe+pBe,"g");o(gBe,"unicodeSize");xae=gBe});function yBe(t){return Rre(t)?xae(t):uae(t)}var Tae,wae=N(()=>{"use strict";hae();Nre();bae();o(yBe,"stringSize");Tae=yBe});function vBe(t,e){return dk(t,e,function(r,n){return Jw(t,n)})}var kae,Eae=N(()=>{"use strict";MR();bR();o(vBe,"basePick");kae=vBe});var xBe,op,Sae=N(()=>{"use strict";Eae();Lre();xBe=Dre(function(t,e){return t==null?{}:kae(t,e)}),op=xBe});function wBe(t,e,r,n){for(var i=-1,a=TBe(bBe((e-t)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=t,t+=r;return s}var bBe,TBe,Cae,Aae=N(()=>{"use strict";bBe=Math.ceil,TBe=Math.max;o(wBe,"baseRange");Cae=wBe});function kBe(t){return function(e,r,n){return n&&typeof n!="number"&&lo(e,r,n)&&(r=n=void 0),e=Am(e),r===void 0?(r=e,e=0):r=Am(r),n=n===void 0?e{"use strict";Aae();qd();Q9();o(kBe,"createRange");_ae=kBe});var EBe,Ho,Lae=N(()=>{"use strict";Dae();EBe=_ae(),Ho=EBe});function SBe(t,e,r,n,i){return i(t,function(a,s,l){r=n?(n=!1,a):e(r,a,s,l)}),r}var Rae,Nae=N(()=>{"use strict";o(SBe,"baseReduce");Rae=SBe});function CBe(t,e,r){var n=Bt(t)?Mre:Rae,i=arguments.length<3;return n(t,vn(e,4),r,i,zs)}var Jr,PR=N(()=>{"use strict";Ire();sf();ss();Nae();Yn();o(CBe,"reduce");Jr=CBe});function ABe(t,e){var r=Bt(t)?Om:sk;return r(t,Qie(vn(e,3)))}var cf,Mae=N(()=>{"use strict";Nw();kR();ss();Yn();Zie();o(ABe,"reject");cf=ABe});function LBe(t){if(t==null)return 0;if(fi(t))return xi(t)?Tae(t):t.length;var e=ho(t);return e==_Be||e==DBe?t.size:Lm(t).length}var _Be,DBe,BR,Iae=N(()=>{"use strict";Cw();ip();Po();lk();wae();_Be="[object Map]",DBe="[object Set]";o(LBe,"size");BR=LBe});function RBe(t,e){var r;return zs(t,function(n,i,a){return r=e(n,i,a),!r}),!!r}var Oae,Pae=N(()=>{"use strict";sf();o(RBe,"baseSome");Oae=RBe});function NBe(t,e,r){var n=Bt(t)?Hw:Oae;return r&&lo(t,e,r)&&(e=void 0),n(t,vn(e,3))}var z2,Bae=N(()=>{"use strict";dR();ss();Pae();Yn();qd();o(NBe,"some");z2=NBe});var MBe,Dc,Fae=N(()=>{"use strict";Im();cae();vm();qd();MBe=yc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&lo(t,e[0],e[1])?e=[]:r>2&&lo(e[0],e[1],e[2])&&(e=[e[0]]),lae(t,Ac(e,1),[])}),Dc=MBe});var IBe,OBe,$ae,zae=N(()=>{"use strict";cR();Z9();Yw();IBe=1/0,OBe=af&&1/$m(new af([,-0]))[1]==IBe?function(t){return new af(t)}:si,$ae=OBe});function BBe(t,e,r){var n=-1,i=Sw,a=t.length,s=!0,l=[],u=l;if(r)s=!1,i=nk;else if(a>=PBe){var h=e?null:$ae(t);if(h)return $m(h);s=!1,i=Fm,u=new Bm}else u=e?[]:l;e:for(;++n{"use strict";Uw();tR();wR();qw();zae();Yw();PBe=200;o(BBe,"baseUniq");Hm=BBe});var FBe,FR,Gae=N(()=>{"use strict";Im();vm();pk();kT();FBe=yc(function(t){return Hm(Ac(t,1,Vd,!0))}),FR=FBe});function $Be(t){return t&&t.length?Hm(t):[]}var qm,Vae=N(()=>{"use strict";pk();o($Be,"uniq");qm=$Be});function zBe(t,e){return t&&t.length?Hm(t,vn(e,2)):[]}var Uae,Hae=N(()=>{"use strict";ss();pk();o(zBe,"uniqBy");Uae=zBe});function VBe(t){var e=++GBe;return _w(t)+e}var GBe,lp,qae=N(()=>{"use strict";rR();GBe=0;o(VBe,"uniqueId");lp=VBe});function UBe(t,e,r){for(var n=-1,i=t.length,a=e.length,s={};++n{"use strict";o(UBe,"baseZipObject");Wae=UBe});function HBe(t,e){return Wae(t||[],e||[],gc)}var mk,Xae=N(()=>{"use strict";ym();Yae();o(HBe,"zipObject");mk=HBe});var Yt=N(()=>{"use strict";vre();hR();wne();kne();NL();hie();pie();gie();yie();vie();kie();ER();_ie();Lie();CR();Lw();ak();Rie();Nie();Mie();Fie();Ru();Gie();Vie();Yn();uk();i2();oo();Wie();lk();Yie();Sc();mie();Vm();Xie();jie();OL();NR();Kie();Z9();cie();Sae();tae();Lae();PR();Mae();Iae();Bae();Fae();Gae();Vae();qae();LR();Xae();});function Kae(t,e){t[e]?t[e]++:t[e]=1}function Qae(t,e){--t[e]||delete t[e]}function G2(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}return i+jae+a+jae+(xr(n)?qBe:n)}function WBe(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function $R(t,e){return G2(t,e.v,e.w,e.name)}var qBe,cp,jae,cn,gk=N(()=>{"use strict";Yt();qBe="\0",cp="\0",jae="",cn=class{static{o(this,"Graph")}constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=Ns(void 0),this._defaultEdgeLabelFn=Ns(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[cp]={}),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(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return Si(e)||(e=Ns(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return qr(this._nodes)}sources(){var e=this;return Zr(this.nodes(),function(r){return mr(e._in[r])})}sinks(){var e=this;return Zr(this.nodes(),function(r){return mr(e._out[r])})}setNodes(e,r){var n=arguments,i=this;return Ae(e,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=cp,this._children[e]={},this._children[cp][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var r=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Ae(this.children(e),n=>{this.setParent(n)}),delete this._children[e]),Ae(qr(this._in[e]),r),delete this._in[e],delete this._preds[e],Ae(qr(this._out[e]),r),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(xr(r))r=cp;else{r+="";for(var n=r;!xr(n);n=this.parent(n))if(n===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==cp)return r}}children(e){if(xr(e)&&(e=cp),this._isCompound){var r=this._children[e];if(r)return qr(r)}else{if(e===cp)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return qr(r)}successors(e){var r=this._sucs[e];if(r)return qr(r)}neighbors(e){var r=this.predecessors(e);if(r)return FR(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;Ae(this._nodes,function(s,l){e(l)&&r.setNode(l,s)}),Ae(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&Ae(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(e){return Si(e)||(e=Ns(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return kr(this._edgeObjs)}setPath(e,r){var n=this,i=arguments;return Jr(e,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var e,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(e=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,xr(n)||(n=""+n);var l=G2(this._isDirected,e,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!xr(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(e,r,n);var u=WBe(this._isDirected,e,r,n);return e=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,Kae(this._preds[r],e),Kae(this._sucs[e],r),this._in[r][l]=u,this._out[e][l]=u,this._edgeCount++,this}edge(e,r,n){var i=arguments.length===1?$R(this._isDirected,arguments[0]):G2(this._isDirected,e,r,n);return this._edgeLabels[i]}hasEdge(e,r,n){var i=arguments.length===1?$R(this._isDirected,arguments[0]):G2(this._isDirected,e,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,r,n){var i=arguments.length===1?$R(this._isDirected,arguments[0]):G2(this._isDirected,e,r,n),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],Qae(this._preds[r],e),Qae(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var n=this._in[e];if(n){var i=kr(n);return r?Zr(i,function(a){return a.v===r}):i}}outEdges(e,r){var n=this._out[e];if(n){var i=kr(n);return r?Zr(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var n=this.inEdges(e,r);if(n)return n.concat(this.outEdges(e,r))}};cn.prototype._nodeCount=0;cn.prototype._edgeCount=0;o(Kae,"incrementOrInitEntry");o(Qae,"decrementOrRemoveEntry");o(G2,"edgeArgsToId");o(WBe,"edgeArgsToObj");o($R,"edgeObjToId")});var qo=N(()=>{"use strict";gk()});function Zae(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function YBe(t,e){if(t!=="_next"&&t!=="_prev")return e}var vk,Jae=N(()=>{"use strict";vk=class{static{o(this,"List")}constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return Zae(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&Zae(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,n=r._prev;n!==r;)e.push(JSON.stringify(n,YBe)),n=n._prev;return"["+e.join(", ")+"]"}};o(Zae,"unlink");o(YBe,"filterOutLinks")});function ese(t,e){if(t.nodeCount()<=1)return[];var r=KBe(t,e||XBe),n=jBe(r.graph,r.buckets,r.zeroIdx);return Qr(rt(n,function(i){return t.outEdges(i.v,i.w)}))}function jBe(t,e,r){for(var n=[],i=e[e.length-1],a=e[0],s;t.nodeCount();){for(;s=a.dequeue();)zR(t,e,r,s);for(;s=i.dequeue();)zR(t,e,r,s);if(t.nodeCount()){for(var l=e.length-2;l>0;--l)if(s=e[l].dequeue(),s){n=n.concat(zR(t,e,r,s,!0));break}}}return n}function zR(t,e,r,n,i){var a=i?[]:void 0;return Ae(t.inEdges(n.v),function(s){var l=t.edge(s),u=t.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,GR(e,r,u)}),Ae(t.outEdges(n.v),function(s){var l=t.edge(s),u=s.w,h=t.node(u);h.in-=l,GR(e,r,h)}),t.removeNode(n.v),a}function KBe(t,e){var r=new cn,n=0,i=0;Ae(t.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),Ae(t.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=e(l),f=u+h;r.setEdge(l.v,l.w,f),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=Ho(i+n+3).map(function(){return new vk}),s=n+1;return Ae(r.nodes(),function(l){GR(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function GR(t,e,r){r.out?r.in?t[r.out-r.in+e].enqueue(r):t[t.length-1].enqueue(r):t[0].enqueue(r)}var XBe,tse=N(()=>{"use strict";Yt();qo();Jae();XBe=Ns(1);o(ese,"greedyFAS");o(jBe,"doGreedyFAS");o(zR,"removeNode");o(KBe,"buildState");o(GR,"assignBucket")});function rse(t){var e=t.graph().acyclicer==="greedy"?ese(t,r(t)):QBe(t);Ae(e,function(n){var i=t.edge(n);t.removeEdge(n),i.forwardName=n.name,i.reversed=!0,t.setEdge(n.w,n.v,i,lp("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function QBe(t){var e=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,Ae(t.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?e.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),Ae(t.nodes(),i),e}function nse(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.reversed){t.removeEdge(e);var n=r.forwardName;delete r.reversed,delete r.forwardName,t.setEdge(e.w,e.v,r,n)}})}var VR=N(()=>{"use strict";Yt();tse();o(rse,"run");o(QBe,"dfsFAS");o(nse,"undo")});function Lc(t,e,r,n){var i;do i=lp(n);while(t.hasNode(i));return r.dummy=e,t.setNode(i,r),i}function ase(t){var e=new cn().setGraph(t.graph());return Ae(t.nodes(),function(r){e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){var n=e.edge(r.v,r.w)||{weight:0,minlen:1},i=t.edge(r);e.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),e}function xk(t){var e=new cn({multigraph:t.isMultigraph()}).setGraph(t.graph());return Ae(t.nodes(),function(r){t.children(r).length||e.setNode(r,t.node(r))}),Ae(t.edges(),function(r){e.setEdge(r,t.edge(r))}),e}function UR(t,e){var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function uf(t){var e=rt(Ho(qR(t)+1),function(){return[]});return Ae(t.nodes(),function(r){var n=t.node(r),i=n.rank;xr(i)||(e[i][n.order]=r)}),e}function sse(t){var e=Rl(rt(t.nodes(),function(r){return t.node(r).rank}));Ae(t.nodes(),function(r){var n=t.node(r);Ft(n,"rank")&&(n.rank-=e)})}function ose(t){var e=Rl(rt(t.nodes(),function(a){return t.node(a).rank})),r=[];Ae(t.nodes(),function(a){var s=t.node(a).rank-e;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=t.graph().nodeRankFactor;Ae(r,function(a,s){xr(a)&&s%i!==0?--n:n&&Ae(a,function(l){t.node(l).rank+=n})})}function HR(t,e,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),Lc(t,"border",i,e)}function qR(t){return Gs(rt(t.nodes(),function(e){var r=t.node(e).rank;if(!xr(r))return r}))}function lse(t,e){var r={lhs:[],rhs:[]};return Ae(t,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}function cse(t,e){var r=rk();try{return e()}finally{console.log(t+" time: "+(rk()-r)+"ms")}}function use(t,e){return e()}var Rc=N(()=>{"use strict";Yt();qo();o(Lc,"addDummyNode");o(ase,"simplify");o(xk,"asNonCompoundGraph");o(UR,"intersectRect");o(uf,"buildLayerMatrix");o(sse,"normalizeRanks");o(ose,"removeEmptyRanks");o(HR,"addBorderNode");o(qR,"maxRank");o(lse,"partition");o(cse,"time");o(use,"notime")});function fse(t){function e(r){var n=t.children(r),i=t.node(r);if(n.length&&Ae(n,e),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{"use strict";Yt();Rc();o(fse,"addBorderSegments");o(hse,"addBorderNode")});function mse(t){var e=t.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&yse(t)}function gse(t){var e=t.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&ZBe(t),(e==="lr"||e==="rl")&&(JBe(t),yse(t))}function yse(t){Ae(t.nodes(),function(e){pse(t.node(e))}),Ae(t.edges(),function(e){pse(t.edge(e))})}function pse(t){var e=t.width;t.width=t.height,t.height=e}function ZBe(t){Ae(t.nodes(),function(e){WR(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,WR),Object.prototype.hasOwnProperty.call(r,"y")&&WR(r)})}function WR(t){t.y=-t.y}function JBe(t){Ae(t.nodes(),function(e){YR(t.node(e))}),Ae(t.edges(),function(e){var r=t.edge(e);Ae(r.points,YR),Object.prototype.hasOwnProperty.call(r,"x")&&YR(r)})}function YR(t){var e=t.x;t.x=t.y,t.y=e}var vse=N(()=>{"use strict";Yt();o(mse,"adjust");o(gse,"undo");o(yse,"swapWidthHeight");o(pse,"swapWidthHeightOne");o(ZBe,"reverseY");o(WR,"reverseYOne");o(JBe,"swapXY");o(YR,"swapXYOne")});function xse(t){t.graph().dummyChains=[],Ae(t.edges(),function(e){tFe(t,e)})}function tFe(t,e){var r=e.v,n=t.node(r).rank,i=e.w,a=t.node(i).rank,s=e.name,l=t.edge(e),u=l.labelRank;if(a!==n+1){t.removeEdge(e);var h=void 0,f,d;for(d=0,++n;n{"use strict";Yt();Rc();o(xse,"run");o(tFe,"normalizeEdge");o(bse,"undo")});function V2(t){var e={};function r(n){var i=t.node(n);if(Object.prototype.hasOwnProperty.call(e,n))return i.rank;e[n]=!0;var a=Rl(rt(t.outEdges(n),function(s){return r(s.w)-t.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}o(r,"dfs"),Ae(t.sources(),r)}function up(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}var bk=N(()=>{"use strict";Yt();o(V2,"longestPath");o(up,"slack")});function Tk(t){var e=new cn({directed:!1}),r=t.nodes()[0],n=t.nodeCount();e.setNode(r,{});for(var i,a;rFe(e,t){"use strict";Yt();qo();bk();o(Tk,"feasibleTree");o(rFe,"tightTree");o(nFe,"findMinSlackEdge");o(iFe,"shiftRanks")});var wse=N(()=>{"use strict"});var KR=N(()=>{"use strict"});var cjt,QR=N(()=>{"use strict";Yt();KR();cjt=Ns(1)});var kse=N(()=>{"use strict";QR()});var ZR=N(()=>{"use strict"});var Ese=N(()=>{"use strict";ZR()});var bjt,Sse=N(()=>{"use strict";Yt();bjt=Ns(1)});function JR(t){var e={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new U2;Object.prototype.hasOwnProperty.call(e,a)||(r[a]=!0,e[a]=!0,Ae(t.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),Ae(t.sinks(),i),BR(e)!==t.nodeCount())throw new U2;return n}function U2(){}var eN=N(()=>{"use strict";Yt();JR.CycleException=U2;o(JR,"topsort");o(U2,"CycleException");U2.prototype=new Error});var Cse=N(()=>{"use strict";eN()});function wk(t,e,r){Bt(e)||(e=[e]);var n=(t.isDirected()?t.successors:t.neighbors).bind(t),i=[],a={};return Ae(e,function(s){if(!t.hasNode(s))throw new Error("Graph does not have node: "+s);Ase(t,s,r==="post",a,n,i)}),i}function Ase(t,e,r,n,i,a){Object.prototype.hasOwnProperty.call(n,e)||(n[e]=!0,r||a.push(e),Ae(i(e),function(s){Ase(t,s,r,n,i,a)}),r&&a.push(e))}var tN=N(()=>{"use strict";Yt();o(wk,"dfs");o(Ase,"doDfs")});function rN(t,e){return wk(t,e,"post")}var _se=N(()=>{"use strict";tN();o(rN,"postorder")});function nN(t,e){return wk(t,e,"pre")}var Dse=N(()=>{"use strict";tN();o(nN,"preorder")});var Lse=N(()=>{"use strict";KR();gk()});var Rse=N(()=>{"use strict";wse();QR();kse();Ese();Sse();Cse();_se();Dse();Lse();ZR();eN()});function ff(t){t=ase(t),V2(t);var e=Tk(t);aN(e),iN(e,t);for(var r,n;r=Ose(e);)n=Pse(e,t,r),Bse(e,t,r,n)}function iN(t,e){var r=rN(t,t.nodes());r=r.slice(0,r.length-1),Ae(r,function(n){cFe(t,e,n)})}function cFe(t,e,r){var n=t.node(r),i=n.parent;t.edge(r,i).cutvalue=Mse(t,e,r)}function Mse(t,e,r){var n=t.node(r),i=n.parent,a=!0,s=e.edge(r,i),l=0;return s||(a=!1,s=e.edge(i,r)),l=s.weight,Ae(e.nodeEdges(r),function(u){var h=u.v===r,f=h?u.w:u.v;if(f!==i){var d=h===a,p=e.edge(u).weight;if(l+=d?p:-p,hFe(t,r,f)){var m=t.edge(r,f).cutvalue;l+=d?-m:m}}}),l}function aN(t,e){arguments.length<2&&(e=t.nodes()[0]),Ise(t,{},1,e)}function Ise(t,e,r,n,i){var a=r,s=t.node(n);return e[n]=!0,Ae(t.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(e,l)||(r=Ise(t,e,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Ose(t){return os(t.edges(),function(e){return t.edge(e).cutvalue<0})}function Pse(t,e,r){var n=r.v,i=r.w;e.hasEdge(n,i)||(n=r.w,i=r.v);var a=t.node(n),s=t.node(i),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=Zr(e.edges(),function(f){return u===Nse(t,t.node(f.v),l)&&u!==Nse(t,t.node(f.w),l)});return sp(h,function(f){return up(e,f)})}function Bse(t,e,r,n){var i=r.v,a=r.w;t.removeEdge(i,a),t.setEdge(n.v,n.w,{}),aN(t),iN(t,e),uFe(t,e)}function uFe(t,e){var r=os(t.nodes(),function(i){return!e.node(i).parent}),n=nN(t,r);n=n.slice(1),Ae(n,function(i){var a=t.node(i).parent,s=e.edge(i,a),l=!1;s||(s=e.edge(a,i),l=!0),e.node(i).rank=e.node(a).rank+(l?s.minlen:-s.minlen)})}function hFe(t,e,r){return t.hasEdge(e,r)}function Nse(t,e,r){return r.low<=e.lim&&e.lim<=r.lim}var Fse=N(()=>{"use strict";Yt();Rse();Rc();jR();bk();ff.initLowLimValues=aN;ff.initCutValues=iN;ff.calcCutValue=Mse;ff.leaveEdge=Ose;ff.enterEdge=Pse;ff.exchangeEdges=Bse;o(ff,"networkSimplex");o(iN,"initCutValues");o(cFe,"assignCutValue");o(Mse,"calcCutValue");o(aN,"initLowLimValues");o(Ise,"dfsAssignLowLim");o(Ose,"leaveEdge");o(Pse,"enterEdge");o(Bse,"exchangeEdges");o(uFe,"updateRanks");o(hFe,"isTreeEdge");o(Nse,"isDescendant")});function sN(t){switch(t.graph().ranker){case"network-simplex":$se(t);break;case"tight-tree":dFe(t);break;case"longest-path":fFe(t);break;default:$se(t)}}function dFe(t){V2(t),Tk(t)}function $se(t){ff(t)}var fFe,oN=N(()=>{"use strict";jR();Fse();bk();o(sN,"rank");fFe=V2;o(dFe,"tightTreeRanker");o($se,"networkSimplexRanker")});function zse(t){var e=Lc(t,"root",{},"_root"),r=pFe(t),n=Gs(kr(r))-1,i=2*n+1;t.graph().nestingRoot=e,Ae(t.edges(),function(s){t.edge(s).minlen*=i});var a=mFe(t)+1;Ae(t.children(),function(s){Gse(t,e,i,a,n,r,s)}),t.graph().nodeRankFactor=i}function Gse(t,e,r,n,i,a,s){var l=t.children(s);if(!l.length){s!==e&&t.setEdge(e,s,{weight:0,minlen:r});return}var u=HR(t,"_bt"),h=HR(t,"_bb"),f=t.node(s);t.setParent(u,s),f.borderTop=u,t.setParent(h,s),f.borderBottom=h,Ae(l,function(d){Gse(t,e,r,n,i,a,d);var p=t.node(d),m=p.borderTop?p.borderTop:d,g=p.borderBottom?p.borderBottom:d,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;t.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),t.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),t.parent(s)||t.setEdge(e,u,{weight:0,minlen:i+a[s]})}function pFe(t){var e={};function r(n,i){var a=t.children(n);a&&a.length&&Ae(a,function(s){r(s,i+1)}),e[n]=i}return o(r,"dfs"),Ae(t.children(),function(n){r(n,1)}),e}function mFe(t){return Jr(t.edges(),function(e,r){return e+t.edge(r).weight},0)}function Vse(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,Ae(t.edges(),function(r){var n=t.edge(r);n.nestingEdge&&t.removeEdge(r)})}var Use=N(()=>{"use strict";Yt();Rc();o(zse,"run");o(Gse,"dfs");o(pFe,"treeDepths");o(mFe,"sumWeights");o(Vse,"cleanup")});function Hse(t,e,r){var n={},i;Ae(r,function(a){for(var s=t.parent(a),l,u;s;){if(l=t.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){e.setEdge(u,s);return}s=l}})}var qse=N(()=>{"use strict";Yt();o(Hse,"addSubgraphConstraints")});function Wse(t,e,r){var n=yFe(t),i=new cn({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return t.node(a)});return Ae(t.nodes(),function(a){var s=t.node(a),l=t.parent(a);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),Ae(t[r](a),function(u){var h=u.v===a?u.w:u.v,f=i.edge(h,a),d=xr(f)?0:f.weight;i.setEdge(h,a,{weight:t.edge(u).weight+d})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))}),i}function yFe(t){for(var e;t.hasNode(e=lp("_root")););return e}var Yse=N(()=>{"use strict";Yt();qo();o(Wse,"buildLayerGraph");o(yFe,"createRootNode")});function Xse(t,e){for(var r=0,n=1;n0;)f%2&&(d+=l[f+1]),f=f-1>>1,l[f]+=h.weight;u+=h.weight*d})),u}var jse=N(()=>{"use strict";Yt();o(Xse,"crossCount");o(vFe,"twoLayerCrossCount")});function Kse(t){var e={},r=Zr(t.nodes(),function(l){return!t.children(l).length}),n=Gs(rt(r,function(l){return t.node(l).rank})),i=rt(Ho(n+1),function(){return[]});function a(l){if(!Ft(e,l)){e[l]=!0;var u=t.node(l);i[u.rank].push(l),Ae(t.successors(l),a)}}o(a,"dfs");var s=Dc(r,function(l){return t.node(l).rank});return Ae(s,a),i}var Qse=N(()=>{"use strict";Yt();o(Kse,"initOrder")});function Zse(t,e){return rt(e,function(r){var n=t.inEdges(r);if(n.length){var i=Jr(n,function(a,s){var l=t.edge(s),u=t.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var Jse=N(()=>{"use strict";Yt();o(Zse,"barycenter")});function eoe(t,e){var r={};Ae(t,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};xr(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),Ae(e.edges(),function(i){var a=r[i.v],s=r[i.w];!xr(a)&&!xr(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Zr(r,function(i){return!i.indegree});return xFe(n)}function xFe(t){var e=[];function r(a){return function(s){s.merged||(xr(s.barycenter)||xr(a.barycenter)||s.barycenter>=a.barycenter)&&bFe(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&t.push(s)}}for(o(n,"handleOut");t.length;){var i=t.pop();e.push(i),Ae(i.in.reverse(),r(i)),Ae(i.out,n(i))}return rt(Zr(e,function(a){return!a.merged}),function(a){return op(a,["vs","i","barycenter","weight"])})}function bFe(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 toe=N(()=>{"use strict";Yt();o(eoe,"resolveConflicts");o(xFe,"doResolveConflicts");o(bFe,"mergeEntries")});function noe(t,e){var r=lse(t,function(f){return Object.prototype.hasOwnProperty.call(f,"barycenter")}),n=r.lhs,i=Dc(r.rhs,function(f){return-f.i}),a=[],s=0,l=0,u=0;n.sort(TFe(!!e)),u=roe(a,i,u),Ae(n,function(f){u+=f.vs.length,a.push(f.vs),s+=f.barycenter*f.weight,l+=f.weight,u=roe(a,i,u)});var h={vs:Qr(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function roe(t,e,r){for(var n;e.length&&(n=ma(e)).i<=r;)e.pop(),t.push(n.vs),r++;return r}function TFe(t){return function(e,r){return e.barycenterr.barycenter?1:t?r.i-e.i:e.i-r.i}}var ioe=N(()=>{"use strict";Yt();Rc();o(noe,"sort");o(roe,"consumeUnsortable");o(TFe,"compareWithBias")});function lN(t,e,r,n){var i=t.children(e),a=t.node(e),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=Zr(i,function(g){return g!==s&&g!==l}));var h=Zse(t,i);Ae(h,function(g){if(t.children(g.v).length){var y=lN(t,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&kFe(g,y)}});var f=eoe(h,r);wFe(f,u);var d=noe(f,n);if(s&&(d.vs=Qr([s,d.vs,l]),t.predecessors(s).length)){var p=t.node(t.predecessors(s)[0]),m=t.node(t.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(d,"barycenter")||(d.barycenter=0,d.weight=0),d.barycenter=(d.barycenter*d.weight+p.order+m.order)/(d.weight+2),d.weight+=2}return d}function wFe(t,e){Ae(t,function(r){r.vs=Qr(r.vs.map(function(n){return e[n]?e[n].vs:n}))})}function kFe(t,e){xr(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 aoe=N(()=>{"use strict";Yt();Jse();toe();ioe();o(lN,"sortSubgraph");o(wFe,"expandSubgraphs");o(kFe,"mergeBarycenters")});function loe(t){var e=qR(t),r=soe(t,Ho(1,e+1),"inEdges"),n=soe(t,Ho(e-1,-1,-1),"outEdges"),i=Kse(t);ooe(t,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){EFe(l%2?r:n,l%4>=2),i=uf(t);var h=Xse(t,i);h{"use strict";Yt();qo();Rc();qse();Yse();jse();Qse();aoe();o(loe,"order");o(soe,"buildLayerGraphs");o(EFe,"sweepLayerGraphs");o(ooe,"assignOrder")});function uoe(t){var e=CFe(t);Ae(t.graph().dummyChains,function(r){for(var n=t.node(r),i=n.edgeObj,a=SFe(t,e,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],f=!0;r!==i.w;){if(n=t.node(r),f){for(;(h=s[u])!==l&&t.node(h).maxRanks||l>e[u].lim));for(h=u,u=n;(u=t.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function CFe(t){var e={},r=0;function n(i){var a=r;Ae(t.children(i),n),e[i]={low:a,lim:r++}}return o(n,"dfs"),Ae(t.children(),n),e}var hoe=N(()=>{"use strict";Yt();o(uoe,"parentDummyChains");o(SFe,"findPath");o(CFe,"postorder")});function AFe(t,e){var r={};function n(i,a){var s=0,l=0,u=i.length,h=ma(a);return Ae(a,function(f,d){var p=DFe(t,f),m=p?t.node(p).order:u;(p||f===h)&&(Ae(a.slice(l,d+1),function(g){Ae(t.predecessors(g),function(y){var v=t.node(y),x=v.order;(xh)&&foe(r,p,f)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return Ae(s,function(f,d){if(t.node(f).dummy==="border"){var p=t.predecessors(f);p.length&&(u=t.node(p[0]).order,n(s,h,d,l,u),h=d,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),Jr(e,i),r}function DFe(t,e){if(t.node(e).dummy)return os(t.predecessors(e),function(r){return t.node(r).dummy})}function foe(t,e,r){if(e>r){var n=e;e=r,r=n}var i=t[e];i||(t[e]=i={}),i[r]=!0}function LFe(t,e,r){if(e>r){var n=e;e=r,r=n}return!!t[e]&&Object.prototype.hasOwnProperty.call(t[e],r)}function RFe(t,e,r,n){var i={},a={},s={};return Ae(e,function(l){Ae(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),Ae(e,function(l){var u=-1;Ae(l,function(h){var f=n(h);if(f.length){f=Dc(f,function(y){return s[y]});for(var d=(f.length-1)/2,p=Math.floor(d),m=Math.ceil(d);p<=m;++p){var g=f[p];a[h]===h&&u{"use strict";Yt();qo();Rc();o(AFe,"findType1Conflicts");o(_Fe,"findType2Conflicts");o(DFe,"findOtherInnerSegmentNode");o(foe,"addConflict");o(LFe,"hasConflict");o(RFe,"verticalAlignment");o(NFe,"horizontalCompaction");o(MFe,"buildBlockGraph");o(IFe,"findSmallestWidthAlignment");o(OFe,"alignCoordinates");o(PFe,"balance");o(doe,"positionX");o(BFe,"sep");o(FFe,"width")});function moe(t){t=xk(t),$Fe(t),_R(doe(t),function(e,r){t.node(r).x=e})}function $Fe(t){var e=uf(t),r=t.graph().ranksep,n=0;Ae(e,function(i){var a=Gs(rt(i,function(s){return t.node(s).height}));Ae(i,function(s){t.node(s).y=n+a/2}),n+=a+r})}var goe=N(()=>{"use strict";Yt();Rc();poe();o(moe,"position");o($Fe,"positionY")});function H2(t,e){var r=e&&e.debugTiming?cse:use;r("layout",()=>{var n=r(" buildLayoutGraph",()=>KFe(t));r(" runLayout",()=>zFe(n,r)),r(" updateInputGraph",()=>GFe(t,n))})}function zFe(t,e){e(" makeSpaceForEdgeLabels",()=>QFe(t)),e(" removeSelfEdges",()=>s$e(t)),e(" acyclic",()=>rse(t)),e(" nestingGraph.run",()=>zse(t)),e(" rank",()=>sN(xk(t))),e(" injectEdgeLabelProxies",()=>ZFe(t)),e(" removeEmptyRanks",()=>ose(t)),e(" nestingGraph.cleanup",()=>Vse(t)),e(" normalizeRanks",()=>sse(t)),e(" assignRankMinMax",()=>JFe(t)),e(" removeEdgeLabelProxies",()=>e$e(t)),e(" normalize.run",()=>xse(t)),e(" parentDummyChains",()=>uoe(t)),e(" addBorderSegments",()=>fse(t)),e(" order",()=>loe(t)),e(" insertSelfEdges",()=>o$e(t)),e(" adjustCoordinateSystem",()=>mse(t)),e(" position",()=>moe(t)),e(" positionSelfEdges",()=>l$e(t)),e(" removeBorderNodes",()=>a$e(t)),e(" normalize.undo",()=>bse(t)),e(" fixupEdgeLabelCoords",()=>n$e(t)),e(" undoCoordinateSystem",()=>gse(t)),e(" translateGraph",()=>t$e(t)),e(" assignNodeIntersects",()=>r$e(t)),e(" reversePoints",()=>i$e(t)),e(" acyclic.undo",()=>nse(t))}function GFe(t,e){Ae(t.nodes(),function(r){var n=t.node(r),i=e.node(r);n&&(n.x=i.x,n.y=i.y,e.children(r).length&&(n.width=i.width,n.height=i.height))}),Ae(t.edges(),function(r){var n=t.edge(r),i=e.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),t.graph().width=e.graph().width,t.graph().height=e.graph().height}function KFe(t){var e=new cn({multigraph:!0,compound:!0}),r=uN(t.graph());return e.setGraph(Wh({},UFe,cN(r,VFe),op(r,HFe))),Ae(t.nodes(),function(n){var i=uN(t.node(n));e.setNode(n,of(cN(i,qFe),WFe)),e.setParent(n,t.parent(n))}),Ae(t.edges(),function(n){var i=uN(t.edge(n));e.setEdge(n,Wh({},XFe,cN(i,YFe),op(i,jFe)))}),e}function QFe(t){var e=t.graph();e.ranksep/=2,Ae(t.edges(),function(r){var n=t.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function ZFe(t){Ae(t.edges(),function(e){var r=t.edge(e);if(r.width&&r.height){var n=t.node(e.v),i=t.node(e.w),a={rank:(i.rank-n.rank)/2+n.rank,e};Lc(t,"edge-proxy",a,"_ep")}})}function JFe(t){var e=0;Ae(t.nodes(),function(r){var n=t.node(r);n.borderTop&&(n.minRank=t.node(n.borderTop).rank,n.maxRank=t.node(n.borderBottom).rank,e=Gs(e,n.maxRank))}),t.graph().maxRank=e}function e$e(t){Ae(t.nodes(),function(e){var r=t.node(e);r.dummy==="edge-proxy"&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}function t$e(t){var e=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=t.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var f=h.x,d=h.y,p=h.width,m=h.height;e=Math.min(e,f-p/2),r=Math.max(r,f+p/2),n=Math.min(n,d-m/2),i=Math.max(i,d+m/2)}o(u,"getExtremes"),Ae(t.nodes(),function(h){u(t.node(h))}),Ae(t.edges(),function(h){var f=t.edge(h);Object.prototype.hasOwnProperty.call(f,"x")&&u(f)}),e-=s,n-=l,Ae(t.nodes(),function(h){var f=t.node(h);f.x-=e,f.y-=n}),Ae(t.edges(),function(h){var f=t.edge(h);Ae(f.points,function(d){d.x-=e,d.y-=n}),Object.prototype.hasOwnProperty.call(f,"x")&&(f.x-=e),Object.prototype.hasOwnProperty.call(f,"y")&&(f.y-=n)}),a.width=r-e+s,a.height=i-n+l}function r$e(t){Ae(t.edges(),function(e){var r=t.edge(e),n=t.node(e.v),i=t.node(e.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift(UR(n,a)),r.points.push(UR(i,s))})}function n$e(t){Ae(t.edges(),function(e){var r=t.edge(e);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function i$e(t){Ae(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}function a$e(t){Ae(t.nodes(),function(e){if(t.children(e).length){var r=t.node(e),n=t.node(r.borderTop),i=t.node(r.borderBottom),a=t.node(ma(r.borderLeft)),s=t.node(ma(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),Ae(t.nodes(),function(e){t.node(e).dummy==="border"&&t.removeNode(e)})}function s$e(t){Ae(t.edges(),function(e){if(e.v===e.w){var r=t.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}})}function o$e(t){var e=uf(t);Ae(e,function(r){var n=0;Ae(r,function(i,a){var s=t.node(i);s.order=a+n,Ae(s.selfEdges,function(l){Lc(t,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function l$e(t){Ae(t.nodes(),function(e){var r=t.node(e);if(r.dummy==="selfedge"){var n=t.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,l=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function cN(t,e){return ap(op(t,e),Number)}function uN(t){var e={};return Ae(t,function(r,n){e[n.toLowerCase()]=r}),e}var VFe,UFe,HFe,qFe,WFe,YFe,XFe,jFe,yoe=N(()=>{"use strict";Yt();qo();dse();vse();VR();XR();oN();Use();coe();hoe();goe();Rc();o(H2,"layout");o(zFe,"runLayout");o(GFe,"updateInputGraph");VFe=["nodesep","edgesep","ranksep","marginx","marginy"],UFe={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},HFe=["acyclicer","ranker","rankdir","align"],qFe=["width","height"],WFe={width:0,height:0},YFe=["minlen","weight","width","height","labeloffset"],XFe={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},jFe=["labelpos"];o(KFe,"buildLayoutGraph");o(QFe,"makeSpaceForEdgeLabels");o(ZFe,"injectEdgeLabelProxies");o(JFe,"assignRankMinMax");o(e$e,"removeEdgeLabelProxies");o(t$e,"translateGraph");o(r$e,"assignNodeIntersects");o(n$e,"fixupEdgeLabelCoords");o(i$e,"reversePointsForReversedEdges");o(a$e,"removeBorderNodes");o(s$e,"removeSelfEdges");o(o$e,"insertSelfEdges");o(l$e,"positionSelfEdges");o(cN,"selectNumberAttrs");o(uN,"canonicalize")});var hN=N(()=>{"use strict";VR();yoe();XR();oN()});function Wo(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:c$e(t),edges:u$e(t)};return xr(t.graph())||(e.value=ln(t.graph())),e}function c$e(t){return rt(t.nodes(),function(e){var r=t.node(e),n=t.parent(e),i={v:e};return xr(r)||(i.value=r),xr(n)||(i.parent=n),i})}function u$e(t){return rt(t.edges(),function(e){var r=t.edge(e),n={v:e.v,w:e.w};return xr(e.name)||(n.name=e.name),xr(r)||(n.value=r),n})}var fN=N(()=>{"use strict";Yt();gk();o(Wo,"write");o(c$e,"writeNodes");o(u$e,"writeEdges")});var Er,hp,boe,Toe,kk,h$e,woe,koe,f$e,Wm,xoe,Eoe,Soe,Coe,Aoe,_oe=N(()=>{"use strict";pt();qo();fN();Er=new Map,hp=new Map,boe=new Map,Toe=o(()=>{hp.clear(),boe.clear(),Er.clear()},"clear"),kk=o((t,e)=>{let r=hp.get(e)||[];return X.trace("In isDescendant",e," ",t," = ",r.includes(t)),r.includes(t)},"isDescendant"),h$e=o((t,e)=>{let r=hp.get(e)||[];return X.info("Descendants of ",e," is ",r),X.info("Edge is ",t),t.v===e||t.w===e?!1:r?r.includes(t.v)||kk(t.v,e)||kk(t.w,e)||r.includes(t.w):(X.debug("Tilt, ",e,",not in descendants"),!1)},"edgeInCluster"),woe=o((t,e,r,n)=>{X.warn("Copying children of ",t,"root",n,"data",e.node(t),n);let i=e.children(t)||[];t!==n&&i.push(t),X.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach(a=>{if(e.children(a).length>0)woe(a,e,r,n);else{let s=e.node(a);X.info("cp ",a," to ",n," with parent ",t),r.setNode(a,s),n!==e.parent(a)&&(X.warn("Setting parent",a,e.parent(a)),r.setParent(a,e.parent(a))),t!==n&&a!==t?(X.debug("Setting parent",a,t),r.setParent(a,t)):(X.info("In copy ",t,"root",n,"data",e.node(t),n),X.debug("Not Setting parent for node=",a,"cluster!==rootId",t!==n,"node!==clusterId",a!==t));let l=e.edges(a);X.debug("Copying Edges",l),l.forEach(u=>{X.info("Edge",u);let h=e.edge(u.v,u.w,u.name);X.info("Edge data",h,n);try{h$e(u,n)?(X.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),X.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]))):X.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",t)}catch(f){X.error(f)}})}X.debug("Removing node",a),e.removeNode(a)})},"copy"),koe=o((t,e)=>{let r=e.children(t),n=[...r];for(let i of r)boe.set(i,t),n=[...n,...koe(i,e)];return n},"extractDescendants"),f$e=o((t,e,r)=>{let n=t.edges().filter(u=>u.v===e||u.w===e),i=t.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===e?r:u.v,w:u.w===e?e:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),Wm=o((t,e,r)=>{let n=e.children(t);if(X.trace("Searching children of id ",t,n),n.length<1)return t;let i;for(let a of n){let s=Wm(a,e,r),l=f$e(e,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),xoe=o(t=>!Er.has(t)||!Er.get(t).externalConnections?t:Er.has(t)?Er.get(t).id:t,"getAnchorId"),Eoe=o((t,e)=>{if(!t||e>10){X.debug("Opting out, no graph ");return}else X.debug("Opting in, graph ");t.nodes().forEach(function(r){t.children(r).length>0&&(X.warn("Cluster identified",r," Replacement id in edges: ",Wm(r,t,r)),hp.set(r,koe(r,t)),Er.set(r,{id:Wm(r,t,r),clusterData:t.node(r)}))}),t.nodes().forEach(function(r){let n=t.children(r),i=t.edges();n.length>0?(X.debug("Cluster identified",r,hp),i.forEach(a=>{let s=kk(a.v,r),l=kk(a.w,r);s^l&&(X.warn("Edge: ",a," leaves cluster ",r),X.warn("Descendants of XXX ",r,": ",hp.get(r)),Er.get(r).externalConnections=!0)})):X.debug("Not a cluster ",r,hp)});for(let r of Er.keys()){let n=Er.get(r).id,i=t.parent(n);i!==r&&Er.has(i)&&!Er.get(i).externalConnections&&(Er.get(r).id=i)}t.edges().forEach(function(r){let n=t.edge(r);X.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),X.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(t.edge(r)));let i=r.v,a=r.w;if(X.warn("Fix XXX",Er,"ids:",r.v,r.w,"Translating: ",Er.get(r.v)," --- ",Er.get(r.w)),Er.get(r.v)||Er.get(r.w)){if(X.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=xoe(r.v),a=xoe(r.w),t.removeEdge(r.v,r.w,r.name),i!==r.v){let s=t.parent(i);Er.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=t.parent(a);Er.get(s).externalConnections=!0,n.toCluster=r.w}X.warn("Fix Replacing with XXX",i,a,r.name),t.setEdge(i,a,n,r.name)}}),X.warn("Adjusted Graph",Wo(t)),Soe(t,0),X.trace(Er)},"adjustClustersAndEdges"),Soe=o((t,e)=>{if(X.warn("extractor - ",e,Wo(t),t.children("D")),e>10){X.error("Bailing out");return}let r=t.nodes(),n=!1;for(let i of r){let a=t.children(i);n=n||a.length>0}if(!n){X.debug("Done, no node has children",t.nodes());return}X.debug("Nodes = ",r,e);for(let i of r)if(X.debug("Extracting node",i,Er,Er.has(i)&&!Er.get(i).externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),!Er.has(i))X.debug("Not a cluster",i,e);else if(!Er.get(i).externalConnections&&t.children(i)&&t.children(i).length>0){X.warn("Cluster without external connections, without a parent and with children",i,e);let s=t.graph().rankdir==="TB"?"LR":"TB";Er.get(i)?.clusterData?.dir&&(s=Er.get(i).clusterData.dir,X.warn("Fixing dir",Er.get(i).clusterData.dir,s));let l=new cn({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});X.warn("Old graph before copy",Wo(t)),woe(i,t,l,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:Er.get(i).clusterData,label:Er.get(i).label,graph:l}),X.warn("New graph after copy node: (",i,")",Wo(l)),X.debug("Old graph after copy",Wo(t))}else X.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!Er.get(i).externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),X.debug(Er);r=t.nodes(),X.warn("New list of nodes",r);for(let i of r){let a=t.node(i);X.warn(" Now next level",i,a),a?.clusterNode&&Soe(a.graph,e+1)}},"extractor"),Coe=o((t,e)=>{if(e.length===0)return[];let r=Object.assign([],e);return e.forEach(n=>{let i=t.children(n),a=Coe(t,i);r=[...r,...a]}),r},"sorter"),Aoe=o(t=>Coe(t,t.children()),"sortNodesByHierarchy")});var Loe={};dr(Loe,{render:()=>d$e});var Doe,d$e,Roe=N(()=>{"use strict";hN();fN();qo();K9();It();_oe();bw();cw();j9();pt();O2();Xt();Doe=o(async(t,e,r,n,i,a)=>{X.warn("Graph in recursive render:XAX",Wo(e),i);let s=e.graph().rankdir;X.trace("Dir in recursive render - dir:",s);let l=t.insert("g").attr("class","root");e.nodes()?X.info("Recursive render XXX",e.nodes()):X.info("No nodes found for",e),e.edges().length>0&&X.info("Recursive edges",e.edge(e.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),f=l.insert("g").attr("class","edgeLabels"),d=l.insert("g").attr("class","nodes");await Promise.all(e.nodes().map(async function(y){let v=e.node(y);if(i!==void 0){let x=JSON.parse(JSON.stringify(i.clusterData));X.trace(`Setting data for parent cluster XXX - Node.id = `,y,` - data=`,x.height,` -Parent cluster`,i.height),e.setNode(i.id,x),e.parent(y)||(X.trace("Setting parent",y,i.id),e.setParent(y,i.id,x))}if(X.info("(Insert) Node XXX"+y+": "+JSON.stringify(e.node(y))),v?.clusterNode){X.info("Cluster identified XBX",y,v.width,e.node(y));let{ranksep:x,nodesep:b}=e.graph();v.graph.setGraph({...v.graph.graph(),ranksep:x+25,nodesep:b});let T=await Doe(d,v.graph,r,n,e.node(y),a),S=T.elem;Qe(v,S),v.diff=T.diff||0,X.info("New compound node after recursive render XAX",y,"width",v.width,"height",v.height),Xte(S,v)}else e.children(y).length>0?(X.trace("Cluster - the non recursive path XBX",y,v.id,v,v.width,"Graph:",e),X.trace(Wm(v.id,e)),Er.set(v.id,{id:Wm(v.id,e),node:v})):(X.trace("Node - the non recursive path XAX",y,d,e.node(y),s),await Cm(d,e.node(y),{config:a,dir:s}))})),await o(async()=>{let y=e.edges().map(async function(v){let x=e.edge(v.v,v.w,v.name);X.info("Edge "+v.v+" -> "+v.w+": "+JSON.stringify(v)),X.info("Edge "+v.v+" -> "+v.w+": ",v," ",JSON.stringify(e.edge(v))),X.info("Fix",Er,"ids:",v.v,v.w,"Translating: ",Er.get(v.v),Er.get(v.w)),await mw(f,x)});await Promise.all(y)},"processEdges")(),X.info("Graph before layout:",JSON.stringify(Wo(e))),X.info("############################################# XXX"),X.info("### Layout ### XXX"),X.info("############################################# XXX"),H2(e),X.info("Graph after layout:",JSON.stringify(Wo(e)));let m=0,{subGraphTitleTotalMargin:g}=Pu(a);return await Promise.all(Aoe(e).map(async function(y){let v=e.node(y);if(X.info("Position XBX => "+y+": ("+v.x,","+v.y,") width: ",v.width," height: ",v.height),v?.clusterNode)v.y+=g,X.info("A tainted cluster node XBX1",y,v.id,v.width,v.height,v.x,v.y,e.parent(y)),Er.get(v.id).node=v,P2(v);else if(e.children(y).length>0){X.info("A pure cluster node XBX1",y,v.id,v.x,v.y,v.width,v.height,e.parent(y)),v.height+=g,e.node(v.parentId);let x=v?.padding/2||0,b=v?.labelBBox?.height||0,T=b-x||0;X.debug("OffsetY",T,"labelHeight",b,"halfPadding",x),await Sm(u,v),Er.get(v.id).node=v}else{let x=e.node(v.parentId);v.y+=g/2,X.info("A regular node XBX1 - using the padding",v.id,"parent",v.parentId,v.width,v.height,v.x,v.y,"offsetY",v.offsetY,"parent",x,x?.offsetY,v),P2(v)}})),e.edges().forEach(function(y){let v=e.edge(y);X.info("Edge "+y.v+" -> "+y.w+": "+JSON.stringify(v),v),v.points.forEach(S=>S.y+=g/2);let x=e.node(y.v);var b=e.node(y.w);let T=yw(h,v,Er,r,x,b,n);gw(v,T)}),e.nodes().forEach(function(y){let v=e.node(y);X.info(y,v.type,v.diff),v.isGroup&&(m=v.diff)}),X.warn("Returning from recursive render XAX",l,m),{elem:l,diff:m}},"recursiveRender"),d$e=o(async(t,e)=>{let r=new cn({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{}}),n=e.select("g");vw(n,t.markers,t.type,t.diagramId),jte(),Yte(),zte(),Toe(),t.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),X.debug("Edges:",t.edges),t.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let f=structuredClone(a),d=structuredClone(a),p=structuredClone(a);f.label="",f.arrowTypeEnd="none",f.id=s+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=s+"-cyclic-special-mid",p.label="",h.isGroup&&(f.fromCluster=s,p.toCluster=s),p.id=s+"-cyclic-special-2",p.arrowTypeStart="none",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,d,s+"-cyclic-special-1"),r.setEdge(u,s,p,s+"-cyct.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},"n"),e:o(function(u){throw u},"e"),f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,s=!0,l=!1;return{s:o(function(){r=r.call(t)},"s"),n:o(function(){var u=r.next();return s=u.done,u},"n"),e:o(function(u){l=!0,a=u},"e"),f:o(function(){try{s||r.return==null||r.return()}finally{if(l)throw a}},"f")}}function sue(t,e,r){return(e=oue(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function y$e(t){if(typeof Symbol<"u"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function v$e(t,e){var r=t==null?null:typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(r!=null){var n,i,a,s,l=[],u=!0,h=!1;try{if(a=(r=r.call(t)).next,e===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==e);u=!0);}catch(f){h=!0,i=f}finally{try{if(!u&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(h)throw i}}return l}}function x$e(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function b$e(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _i(t,e){return p$e(t)||v$e(t,e)||cI(t,e)||x$e()}function Xk(t){return m$e(t)||y$e(t)||cI(t)||b$e()}function T$e(t,e){if(typeof t!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function oue(t){var e=T$e(t,"string");return typeof e=="symbol"?e:e+""}function $i(t){"@babel/helpers - typeof";return $i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$i(t)}function cI(t,e){if(t){if(typeof t=="string")return UM(t,e);var r={}.toString.call(t).slice(8,-1);return r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set"?Array.from(t):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?UM(t,e):void 0}}function gx(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function yx(){if(Ioe)return dN;Ioe=1;function t(e){var r=typeof e;return e!=null&&(r=="object"||r=="function")}return o(t,"isObject"),dN=t,dN}function H$e(){if(Ooe)return pN;Ooe=1;var t=typeof Ek=="object"&&Ek&&Ek.Object===Object&&Ek;return pN=t,pN}function cE(){if(Poe)return mN;Poe=1;var t=H$e(),e=typeof self=="object"&&self&&self.Object===Object&&self,r=t||e||Function("return this")();return mN=r,mN}function q$e(){if(Boe)return gN;Boe=1;var t=cE(),e=o(function(){return t.Date.now()},"now");return gN=e,gN}function W$e(){if(Foe)return yN;Foe=1;var t=/\s/;function e(r){for(var n=r.length;n--&&t.test(r.charAt(n)););return n}return o(e,"trimmedEndIndex"),yN=e,yN}function Y$e(){if($oe)return vN;$oe=1;var t=W$e(),e=/^\s+/;function r(n){return n&&n.slice(0,t(n)+1).replace(e,"")}return o(r,"baseTrim"),vN=r,vN}function fI(){if(zoe)return xN;zoe=1;var t=cE(),e=t.Symbol;return xN=e,xN}function X$e(){if(Goe)return bN;Goe=1;var t=fI(),e=Object.prototype,r=e.hasOwnProperty,n=e.toString,i=t?t.toStringTag:void 0;function a(s){var l=r.call(s,i),u=s[i];try{s[i]=void 0;var h=!0}catch{}var f=n.call(s);return h&&(l?s[i]=u:delete s[i]),f}return o(a,"getRawTag"),bN=a,bN}function j$e(){if(Voe)return TN;Voe=1;var t=Object.prototype,e=t.toString;function r(n){return e.call(n)}return o(r,"objectToString"),TN=r,TN}function gue(){if(Uoe)return wN;Uoe=1;var t=fI(),e=X$e(),r=j$e(),n="[object Null]",i="[object Undefined]",a=t?t.toStringTag:void 0;function s(l){return l==null?l===void 0?i:n:a&&a in Object(l)?e(l):r(l)}return o(s,"baseGetTag"),wN=s,wN}function K$e(){if(Hoe)return kN;Hoe=1;function t(e){return e!=null&&typeof e=="object"}return o(t,"isObjectLike"),kN=t,kN}function vx(){if(qoe)return EN;qoe=1;var t=gue(),e=K$e(),r="[object Symbol]";function n(i){return typeof i=="symbol"||e(i)&&t(i)==r}return o(n,"isSymbol"),EN=n,EN}function Q$e(){if(Woe)return SN;Woe=1;var t=Y$e(),e=yx(),r=vx(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,s=/^0o[0-7]+$/i,l=parseInt;function u(h){if(typeof h=="number")return h;if(r(h))return n;if(e(h)){var f=typeof h.valueOf=="function"?h.valueOf():h;h=e(f)?f+"":f}if(typeof h!="string")return h===0?h:+h;h=t(h);var d=a.test(h);return d||s.test(h)?l(h.slice(2),d?2:8):i.test(h)?n:+h}return o(u,"toNumber"),SN=u,SN}function Z$e(){if(Yoe)return CN;Yoe=1;var t=yx(),e=q$e(),r=Q$e(),n="Expected a function",i=Math.max,a=Math.min;function s(l,u,h){var f,d,p,m,g,y,v=0,x=!1,b=!1,T=!0;if(typeof l!="function")throw new TypeError(n);u=r(u)||0,t(h)&&(x=!!h.leading,b="maxWait"in h,p=b?i(r(h.maxWait)||0,u):p,T="trailing"in h?!!h.trailing:T);function S(D){var _=f,O=d;return f=d=void 0,v=D,m=l.apply(O,_),m}o(S,"invokeFunc");function w(D){return v=D,g=setTimeout(C,u),x?S(D):m}o(w,"leadingEdge");function k(D){var _=D-y,O=D-v,M=u-_;return b?a(M,p-O):M}o(k,"remainingWait");function A(D){var _=D-y,O=D-v;return y===void 0||_>=u||_<0||b&&O>=p}o(A,"shouldInvoke");function C(){var D=e();if(A(D))return R(D);g=setTimeout(C,k(D))}o(C,"timerExpired");function R(D){return g=void 0,T&&f?S(D):(f=d=void 0,m)}o(R,"trailingEdge");function I(){g!==void 0&&clearTimeout(g),v=0,f=y=d=g=void 0}o(I,"cancel");function L(){return g===void 0?m:R(e())}o(L,"flush");function E(){var D=e(),_=A(D);if(f=arguments,d=this,y=D,_){if(g===void 0)return w(y);if(b)return clearTimeout(g),g=setTimeout(C,u),S(y)}return g===void 0&&(g=setTimeout(C,u)),m}return o(E,"debounced"),E.cancel=I,E.flush=L,E}return o(s,"debounce"),CN=s,CN}function nze(t,e,r,n,i){var a=i*Math.PI/180,s=Math.cos(a)*(t-r)-Math.sin(a)*(e-n)+r,l=Math.sin(a)*(t-r)+Math.cos(a)*(e-n)+n;return{x:s,y:l}}function aze(t,e,r){if(r===0)return t;var n=(e.x1+e.x2)/2,i=(e.y1+e.y2)/2,a=e.w/e.h,s=1/a,l=nze(t.x,t.y,n,i,r),u=ize(l.x,l.y,n,i,a,s);return{x:u.x,y:u.y}}function gze(){return Zoe||(Zoe=1,(function(t,e){(function(){var r,n,i,a,s,l,u,h,f,d,p,m,g,y,v;i=Math.floor,d=Math.min,n=o(function(x,b){return xb?1:0},"defaultCmp"),f=o(function(x,b,T,S,w){var k;if(T==null&&(T=0),w==null&&(w=n),T<0)throw new Error("lo must be non-negative");for(S==null&&(S=x.length);TI;0<=I?R++:R--)C.push(R);return C}).apply(this).reverse(),A=[],S=0,w=k.length;SL;0<=L?++C:--C)E.push(s(x,T));return E},"nsmallest"),y=o(function(x,b,T,S){var w,k,A;for(S==null&&(S=n),w=x[T];T>b;){if(A=T-1>>1,k=x[A],S(w,k)<0){x[T]=k,T=A;continue}break}return x[T]=w},"_siftdown"),v=o(function(x,b,T){var S,w,k,A,C;for(T==null&&(T=n),w=x.length,C=b,k=x[b],S=2*b+1;S-1}return o(e,"listCacheHas"),tM=e,tM}function cVe(){if($le)return rM;$le=1;var t=mE();function e(r,n){var i=this.__data__,a=t(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return o(e,"listCacheSet"),rM=e,rM}function uVe(){if(zle)return nM;zle=1;var t=aVe(),e=sVe(),r=oVe(),n=lVe(),i=cVe();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l-1&&n%1==0&&n0;){var f=i.shift();e(f),a.add(f.id()),l&&n(i,a,f)}return t}function Yue(t,e,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:bUe,e=arguments.length>1?arguments[1]:void 0,r=0;r0?E=_:L=_;while(Math.abs(D)>s&&++O=a?b(I,O):M===0?O:S(I,L,L+h)}o(w,"getTForX");var k=!1;function A(){k=!0,(t!==e||r!==n)&&T()}o(A,"precompute");var C=o(function(L){return k||A(),t===e&&r===n?L:L===0?0:L===1?1:v(w(L),e,n)},"f");C.getControlPoints=function(){return[{x:t,y:e},{x:r,y:n}]};var R="generateBezier("+[t,e,r,n]+")";return C.toString=function(){return R},C}function Dce(t,e,r,n,i){if(n===1||e===r)return r;var a=i(e,r,n);return t==null||((t.roundValue||t.color)&&(a=Math.round(a)),t.min!==void 0&&(a=Math.max(a,t.min)),t.max!==void 0&&(a=Math.min(a,t.max))),a}function Lce(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function jm(t,e,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=Lce(t,i),l=Lce(e,i);if(At(s)&&At(l))return Dce(a,s,l,r,n);if(An(s)&&An(l)){for(var u=[],h=0;h0?(m==="spring"&&g.push(s.duration),s.easingImpl=Vk[m].apply(null,g)):s.easingImpl=Vk[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!t.locked()){var T={};X2(x.x,b.x)&&(T.x=jm(x.x,b.x,v,y)),X2(x.y,b.y)&&(T.y=jm(x.y,b.y,v,y)),t.position(T)}var S=s.startPan,w=s.pan,k=a.pan,A=w!=null&&n;A&&(X2(S.x,w.x)&&(k.x=jm(S.x,w.x,v,y)),X2(S.y,w.y)&&(k.y=jm(S.y,w.y,v,y)),t.emit("pan"));var C=s.startZoom,R=s.zoom,I=R!=null&&n;I&&(X2(C,R)&&(a.zoom=ox(a.minZoom,jm(C,R,v,y),a.maxZoom)),t.emit("zoom")),(A||I)&&t.emit("viewport");var L=s.style;if(L&&L.length>0&&i){for(var E=0;E=0;A--){var C=k[A];C()}k.splice(0,k.length)},"callbacks"),b=m.length-1;b>=0;b--){var T=m[b],S=T._private;if(S.stopped){m.splice(b,1),S.hooked=!1,S.playing=!1,S.started=!1,x(S.frames);continue}!S.playing&&!S.applying||(S.playing&&S.applying&&(S.applying=!1),S.started||IUe(f,T,t),MUe(f,T,t,d),S.applying&&(S.applying=!1),x(S.frames),S.step!=null&&S.step(t),T.completed()&&(m.splice(b,1),S.hooked=!1,S.playing=!1,S.started=!1,x(S.completes)),y=!0)}return!d&&m.length===0&&g.length===0&&n.push(f),y}o(i,"stepOne");for(var a=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(n),e.emit("step")}function hhe(t){this.options=ir({},VUe,UUe,t)}function fhe(t){this.options=ir({},HUe,t)}function dhe(t){this.options=ir({},qUe,t)}function kE(t){this.options=ir({},WUe,t),this.options.layout=this;var e=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),l=e.some(function(h){return h.data("id")===a}),u=e.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function yhe(t){this.options=ir({},oHe,t)}function _I(t){this.options=ir({},lHe,t)}function vhe(t){this.options=ir({},cHe,t)}function xhe(t){this.options=ir({},uHe,t)}function bhe(t){this.options=t,this.notifications=0}function khe(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function LI(t,e,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(dHe(t,e,r,n,i),{cx:eI,cy:tI,radius:gp,startX:The,startY:whe,stopX:rI,stopY:nI,startAngle:Ic.ang+Math.PI/2*vp,endAngle:Yo.ang-Math.PI/2*vp,counterClockwise:qk})}function Ehe(t){var e=[];if(t!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=Math.min(a,n/2,i/2);t.beginPath(),t.moveTo(e+s,r),t.lineTo(e+n-s,r),t.quadraticCurveTo(e+n,r,e+n,r+s),t.lineTo(e+n,r+i-s),t.quadraticCurveTo(e+n,r+i,e+n-s,r+i),t.lineTo(e+s,r+i),t.quadraticCurveTo(e,r+i,e,r+i-s),t.lineTo(e,r+s),t.quadraticCurveTo(e,r,e+s,r),t.closePath()}function Qce(t,e,r){var n=t.createShader(e);if(t.shaderSource(n,r),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))throw new Error(t.getShaderInfoLog(n));return n}function rqe(t,e,r){var n=Qce(t,t.VERTEX_SHADER,e),i=Qce(t,t.FRAGMENT_SHADER,r),a=t.createProgram();if(t.attachShader(a,n),t.attachShader(a,i),t.linkProgram(a),!t.getProgramParameter(a,t.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function nqe(t,e,r){r===void 0&&(r=e);var n=t.makeOffscreenCanvas(e,r),i=n.context=n.getContext("2d");return n.clear=function(){return i.clearRect(0,0,n.width,n.height)},n.clear(),n}function MI(t){var e=t.pixelRatio,r=t.cy.zoom(),n=t.cy.pan();return{zoom:r*e,pan:{x:n.x*e,y:n.y*e}}}function iqe(t){var e=t.pixelRatio,r=t.cy.zoom();return r*e}function aqe(t,e,r,n,i){var a=n*r+e.x,s=i*r+e.y;return s=Math.round(t.canvasHeight-s),[a,s]}function sqe(t){return t.pstyle("background-fill").value!=="solid"||t.pstyle("background-image").strValue!=="none"?!1:t.pstyle("border-width").value===0||t.pstyle("border-opacity").value===0?!0:t.pstyle("border-style").value==="solid"}function oqe(t,e){if(t.length!==e.length)return!1;for(var r=0;r>0&255)/255,r[1]=(t>>8&255)/255,r[2]=(t>>16&255)/255,r[3]=(t>>24&255)/255,r}function lqe(t){return t[0]+(t[1]<<8)+(t[2]<<16)+(t[3]<<24)}function cqe(t,e){var r=t.createTexture();return r.buffer=function(n){t.bindTexture(t.TEXTURE_2D,r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_NEAREST),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null)},r.deleteTexture=function(){t.deleteTexture(r)},r}function Bhe(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 Fhe(t,e,r){switch(e){case t.FLOAT:return new Float32Array(r);case t.INT:return new Int32Array(r)}}function uqe(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 hqe(t,e,r,n){var i=Bhe(t,e),a=_i(i,2),s=a[0],l=a[1],u=Fhe(t,l,n),h=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,h),t.bufferData(t.ARRAY_BUFFER,u,t.STATIC_DRAW),l===t.FLOAT?t.vertexAttribPointer(r,s,l,!1,0,0):l===t.INT&&t.vertexAttribIPointer(r,s,l,0,0),t.enableVertexAttribArray(r),t.bindBuffer(t.ARRAY_BUFFER,null),h}function Mc(t,e,r,n){var i=Bhe(t,r),a=_i(i,3),s=a[0],l=a[1],u=a[2],h=Fhe(t,l,e*s),f=s*u,d=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,d),t.bufferData(t.ARRAY_BUFFER,e*f,t.DYNAMIC_DRAW),t.enableVertexAttribArray(n),l===t.FLOAT?t.vertexAttribPointer(n,s,l,!1,f,0):l===t.INT&&t.vertexAttribIPointer(n,s,l,f,0),t.vertexAttribDivisor(n,1),t.bindBuffer(t.ARRAY_BUFFER,null);for(var p=new Array(e),m=0;mNhe?(_qe(t),e.call(t,a)):(Dqe(t),Vhe(t,a,nx.SCREEN)))}}{var r=t.matchCanvasSize;t.matchCanvasSize=function(a){r.call(t,a),t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth,t.canvasHeight),t.pickingFrameBuffer.needsDraw=!0}}t.findNearestElements=function(a,s,l,u){return Oqe(t,a,s)};{var n=t.invalidateCachedZSortedEles;t.invalidateCachedZSortedEles=function(){n.call(t),t.pickingFrameBuffer.needsDraw=!0}}{var i=t.notify;t.notify=function(a,s){i.call(t,a,s),a==="viewport"||a==="bounds"?t.pickingFrameBuffer.needsDraw=!0:a==="background"&&t.drawing.invalidate(s,{type:"node-body"})}}}function _qe(t){var e=t.data.contexts[t.WEBGL];e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}function Dqe(t){var e=o(function(n){n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.canvasWidth,t.canvasHeight),n.restore()},"clear");e(t.data.contexts[t.NODE]),e(t.data.contexts[t.DRAG])}function Lqe(t){var e=t.canvasWidth,r=t.canvasHeight,n=MI(t),i=n.pan,a=n.zoom,s=BM();Yk(s,s,[i.x,i.y]),aI(s,s,[a,a]);var l=BM();mqe(l,e,r);var u=BM();return pqe(u,l,s),u}function Ghe(t,e){var r=t.canvasWidth,n=t.canvasHeight,i=MI(t),a=i.pan,s=i.zoom;e.setTransform(1,0,0,1,0,0),e.clearRect(0,0,r,n),e.translate(a.x,a.y),e.scale(s,s)}function Rqe(t,e){t.drawSelectionRectangle(e,function(r){return Ghe(t,r)})}function Nqe(t){var e=t.data.contexts[t.NODE];e.save(),Ghe(t,e),e.strokeStyle="rgba(0, 0, 0, 0.3)",e.beginPath(),e.moveTo(-1e3,0),e.lineTo(1e3,0),e.stroke(),e.beginPath(),e.moveTo(0,-1e3),e.lineTo(0,1e3),e.stroke(),e.restore()}function Mqe(t){var e=o(function(i,a,s){for(var l=i.atlasManager.getAtlasCollection(a),u=t.data.contexts[t.NODE],h=l.atlases,f=0;f=0&&S.add(A)}return S}function Oqe(t,e,r){var n=Iqe(t,e,r),i=t.getCachedZSortedEles(),a,s,l=qs(n),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,f=i[h];if(!a&&f.isNode()&&(a=f),!s&&f.isEdge()&&(s=f),a&&s)break}}catch(d){l.e(d)}finally{l.f()}return[a,s].filter(Boolean)}function VM(t,e,r){var n=t.drawing;e+=1,r.isNode()?(n.drawNode(r,e,"node-underlay"),n.drawNode(r,e,"node-body"),n.drawTexture(r,e,"label"),n.drawNode(r,e,"node-overlay")):(n.drawEdgeLine(r,e),n.drawEdgeArrow(r,e,"source"),n.drawEdgeArrow(r,e,"target"),n.drawTexture(r,e,"label"),n.drawTexture(r,e,"edge-source-label"),n.drawTexture(r,e,"edge-target-label"))}function Vhe(t,e,r){var n;t.webglDebug&&(n=performance.now());var i=t.drawing,a=0;if(r.screen&&t.data.canvasNeedsRedraw[t.SELECT_BOX]&&Rqe(t,e),t.data.canvasNeedsRedraw[t.NODE]||r.picking){var s=t.data.contexts[t.WEBGL];r.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=Lqe(t),u=t.getCachedZSortedEles();if(a=u.length,i.startFrame(l,r),r.screen){for(var h=0;h{"use strict";o(UM,"_arrayLikeToArray");o(p$e,"_arrayWithHoles");o(m$e,"_arrayWithoutHoles");o(Af,"_classCallCheck");o(g$e,"_defineProperties");o(_f,"_createClass");o(qs,"_createForOfIteratorHelper");o(sue,"_defineProperty$1");o(y$e,"_iterableToArray");o(v$e,"_iterableToArrayLimit");o(x$e,"_nonIterableRest");o(b$e,"_nonIterableSpread");o(_i,"_slicedToArray");o(Xk,"_toConsumableArray");o(T$e,"_toPrimitive");o(oue,"_toPropertyKey");o($i,"_typeof");o(cI,"_unsupportedIterableToArray");Bi=typeof window>"u"?null:window,Noe=Bi?Bi.navigator:null;Bi&&Bi.document;w$e=$i(""),lue=$i({}),k$e=$i(function(){}),E$e=typeof HTMLElement>"u"?"undefined":$i(HTMLElement),px=o(function(e){return e&&e.instanceString&&oi(e.instanceString)?e.instanceString():null},"instanceStr"),Jt=o(function(e){return e!=null&&$i(e)==w$e},"string"),oi=o(function(e){return e!=null&&$i(e)===k$e},"fn"),An=o(function(e){return!fo(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},"array"),Yr=o(function(e){return e!=null&&$i(e)===lue&&!An(e)&&e.constructor===Object},"plainObject"),S$e=o(function(e){return e!=null&&$i(e)===lue},"object"),At=o(function(e){return e!=null&&$i(e)===$i(1)&&!isNaN(e)},"number"),C$e=o(function(e){return At(e)&&Math.floor(e)===e},"integer"),jk=o(function(e){if(E$e!=="undefined")return e!=null&&e instanceof HTMLElement},"htmlElement"),fo=o(function(e){return mx(e)||cue(e)},"elementOrCollection"),mx=o(function(e){return px(e)==="collection"&&e._private.single},"element"),cue=o(function(e){return px(e)==="collection"&&!e._private.single},"collection"),uI=o(function(e){return px(e)==="core"},"core"),uue=o(function(e){return px(e)==="stylesheet"},"stylesheet"),A$e=o(function(e){return px(e)==="event"},"event"),Tf=o(function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},"emptyString"),_$e=o(function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},"domElement"),D$e=o(function(e){return Yr(e)&&At(e.x1)&&At(e.x2)&&At(e.y1)&&At(e.y2)},"boundingBox"),L$e=o(function(e){return S$e(e)&&oi(e.then)},"promise"),R$e=o(function(){return Noe&&Noe.userAgent.match(/msie|trident|edge/i)},"ms"),lg=o(function(e,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},"ascending"),F$e=o(function(e,r){return-1*fue(e,r)},"descending"),ir=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(f,"hue2rgb");var d=new RegExp("^"+I$e+"$").exec(e);if(d){if(n=parseInt(d[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(d[2]),i<0||i>100||(i=i/100,a=parseFloat(d[3]),a<0||a>100)||(a=a/100,s=d[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*f(m,p,n+1/3)),u=Math.round(255*f(m,p,n)),h=Math.round(255*f(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),G$e=o(function(e){var r,n=new RegExp("^"+N$e+"$").exec(e);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),V$e=o(function(e){return U$e[e.toLowerCase()]},"colorname2tuple"),due=o(function(e){return(An(e)?e:null)||V$e(e)||$$e(e)||G$e(e)||z$e(e)},"color2tuple"),U$e={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},pue=o(function(e){for(var r=e.map,n=e.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:yp,n=r,i;i=e.next(),!i.done;)n=n*vue+i.value|0;return n},"hashIterableInts"),ix=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yp;return r*vue+e|0},"hashInt"),ax=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:eg;return(r<<5)+r+e|0},"hashIntAlt"),tze=o(function(e,r){return e*2097152+r},"combineHashes"),df=o(function(e){return e[0]*2097152+e[1]},"combineHashesArray"),Sk=o(function(e,r){return[ix(e[0],r[0]),ax(e[1],r[1])]},"hashArrays"),Xoe=o(function(e,r){var n={value:0,done:!1},i=0,a=e.length,s={next:o(function(){return i=0;i--)e[i]===r&&e.splice(i,1)},"removeFromArray"),mI=o(function(e){e.splice(0,e.length)},"clearArray"),hze=o(function(e,r){for(var n=0;n"u"?"undefined":$i(Set))!==dze?Set:pze,uE=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!uI(e)){Kn("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){Kn("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new hg,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=e.pan(),u=e.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];An(r.classes)?h=r.classes:Jt(r.classes)&&(h=r.classes.split(/\s+/));for(var f=0,d=h.length;f0;){var k=b.pop(),A=v(k),C=k.id();if(p[C]=A,A!==1/0)for(var R=k.neighborhood().intersect(g),I=0;I0)for(B.unshift(P);d[G];){var $=d[G];B.unshift($.edge),B.unshift($.node),F=$.node,G=F.id()}return l.spawn(B)},"pathTo")}},"dijkstra")},Tze={kruskal:o(function(e){e=e||function(T){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(S){for(var w=0;w0;){if(w(),A++,S===f){for(var C=[],R=a,I=f,L=x[I];C.unshift(R),L!=null&&C.unshift(L),R=v[I],R!=null;)I=R.id(),L=x[I];return{found:!0,distance:d[S],path:this.spawn(C),steps:A}}m[S]=!0;for(var E=T._private.edges,D=0;DL&&(g[I]=L,b[I]=R,T[I]=w),!a){var E=R*f+C;!a&&g[E]>L&&(g[E]=L,b[E]=C,T[E]=w)}}}for(var D=0;D1&&arguments[1]!==void 0?arguments[1]:s,pe=T(q),Be=[],Ye=pe;;){if(Ye==null)return r.spawn();var He=b(Ye),Le=He.edge,Ie=He.pred;if(Be.unshift(Ye[0]),Ye.same(Ve)&&Be.length>0)break;Le!=null&&Be.unshift(Le),Ye=Ie}return u.spawn(Be)},"pathTo"),k=0;k=0;f--){var d=h[f],p=d[1],m=d[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(f,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=Dze(a,e,r),n--}return r},"contractUntil"),Lze={kargerStein:o(function(){var e=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(B){return B.isLoop()});var a=n.length,s=i.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/_ze);if(a<2){Kn("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=-1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=0,a=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?e=e.slice(r,n):(n0&&e.splice(0,r));for(var l=0,u=e.length-1;u>=0;u--){var h=e[u];s?isFinite(h)||(e[u]=-1/0,l++):e.splice(u,1)}a&&e.sort(function(p,m){return p-m});var f=e.length,d=Math.floor(f/2);return f%2!==0?e[d+1+l]:(e[d-1+l]+e[d+l])/2},"median"),Pze=o(function(e){return Math.PI*e/180},"deg2rad"),Ck=o(function(e,r){return Math.atan2(r,e)-Math.PI/2},"getAngleFromDisp"),gI=Math.log2||function(t){return Math.log(t)/Math.log(2)},yI=o(function(e){return e>0?1:e<0?-1:0},"signum"),Tp=o(function(e,r){return Math.sqrt(mp(e,r))},"dist"),mp=o(function(e,r){var n=r.x-e.x,i=r.y-e.y;return n*n+i*i},"sqdist"),Bze=o(function(e){for(var r=e.length,n=0,i=0;i=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},"makeBoundingBox"),$ze=o(function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},"copyBoundingBox"),zze=o(function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},"clearBoundingBox"),Gze=o(function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},"updateBoundingBox"),Cue=o(function(e,r,n){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},"expandBoundingBoxByPoint"),Fk=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBox"),$k=o(function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var l=_i(r,4);n=l[0],i=l[1],a=l[2],s=l[3]}return e.x1-=s,e.x2+=i,e.y1-=n,e.y2+=a,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},"expandBoundingBoxSides"),ele=o(function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},"assignBoundingBox"),vI=o(function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},"boundingBoxesIntersect"),yf=o(function(e,r,n){return e.x1<=r&&r<=e.x2&&e.y1<=n&&n<=e.y2},"inBoundingBox"),tle=o(function(e,r){return yf(e,r.x,r.y)},"pointInBoundingBox"),Aue=o(function(e,r){return yf(e,r.x1,r.y1)&&yf(e,r.x2,r.y2)},"boundingBoxInBoundingBox"),Vze=(LN=Math.hypot)!==null&&LN!==void 0?LN:function(t,e){return Math.sqrt(t*t+e*e)};o(Uze,"inflatePolygon");o(Hze,"miterBox");_ue=o(function(e,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?kf(a,s):u,f=a/2,d=s/2;h=Math.min(h,f,d);var p=h!==f,m=h!==d,g;if(p){var y=n-f+h-l,v=i-d-l,x=n+f-h+l,b=v;if(g=vf(e,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var T=n+f+l,S=i-d+h-l,w=T,k=i+d-h+l;if(g=vf(e,r,n,i,T,S,w,k,!1),g.length>0)return g}if(p){var A=n-f+h-l,C=i+d+l,R=n+f-h+l,I=C;if(g=vf(e,r,n,i,A,C,R,I,!1),g.length>0)return g}if(m){var L=n-f-l,E=i-d+h-l,D=L,_=i+d-h+l;if(g=vf(e,r,n,i,L,E,D,_,!1),g.length>0)return g}var O;{var M=n-f+h,P=i-d+h;if(O=Z2(e,r,n,i,M,P,h+l),O.length>0&&O[0]<=M&&O[1]<=P)return[O[0],O[1]]}{var B=n+f-h,F=i-d+h;if(O=Z2(e,r,n,i,B,F,h+l),O.length>0&&O[0]>=B&&O[1]<=F)return[O[0],O[1]]}{var G=n+f-h,$=i+d-h;if(O=Z2(e,r,n,i,G,$,h+l),O.length>0&&O[0]>=G&&O[1]>=$)return[O[0],O[1]]}{var U=n-f+h,j=i+d-h;if(O=Z2(e,r,n,i,U,j,h+l),O.length>0&&O[0]<=U&&O[1]>=j)return[O[0],O[1]]}return[]},"roundRectangleIntersectLine"),qze=o(function(e,r,n,i,a,s,l){var u=l,h=Math.min(n,a),f=Math.max(n,a),d=Math.min(i,s),p=Math.max(i,s);return h-u<=e&&e<=f+u&&d-u<=r&&r<=p+u},"inLineVicinity"),Wze=o(function(e,r,n,i,a,s,l,u,h){var f={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(ef.x2||rf.y2)},"inBezierVicinity"),Yze=o(function(e,r,n,i){n-=i;var a=r*r-4*e*n;if(a<0)return[];var s=Math.sqrt(a),l=2*e,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Xze=o(function(e,r,n,i,a){var s=1e-5;e===0&&(e=s),r/=e,n/=e,i/=e;var l,u,h,f,d,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){d=h+Math.sqrt(l),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+d+p,m+=(d+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+d)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,f=u*u*u,f=Math.acos(h/Math.sqrt(f)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(f/3),a[2]=-m+g*Math.cos((f+2*Math.PI)/3),a[4]=-m+g*Math.cos((f+4*Math.PI)/3)},"solveCubic"),jze=o(function(e,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,f=9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,d=3*n*n-6*n*a+n*l-n*e+2*a*a+2*a*e-l*e+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*e-a*e+i*s-i*i+i*r-s*r,m=[];Xze(h,f,d,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,T,S,w=0;w=0?Sh?(e-a)*(e-a)+(r-s)*(r-s):f-p},"sqdistToFiniteLine"),Hs=o(function(e,r,n){for(var i,a,s,l,u,h=0,f=0;f=e&&e>=s||i<=e&&e<=s)u=(e-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),Vu=o(function(e,r,n,i,a,s,l,u,h){var f=new Array(n.length),d;u[0]!=null?(d=Math.atan(u[1]/u[0]),u[0]<0?d=d+Math.PI/2:d=-d-Math.PI/2):d=u;for(var p=Math.cos(-d),m=Math.sin(-d),g=0;g0){var v=Jk(f,-h);y=Zk(v)}else y=f;return Hs(e,r,y)},"pointInsidePolygon"),Qze=o(function(e,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),f=0;f=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var T=b[0]*u[0]+e,S=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[T,S];var w=b[1]*u[0]+e,k=b[1]*u[1]+r;return[T,S,w,k]}else return[T,S]},"intersectLineCircle"),RN=o(function(e,r,n){return r<=e&&e<=n||n<=e&&e<=r?e:e<=r&&r<=n||n<=r&&r<=e?r:n},"midOfThree"),vf=o(function(e,r,n,i,a,s,l,u,h){var f=e-a,d=n-e,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*f,x=d*m-g*f,b=y*d-p*g;if(b!==0){var T=v/b,S=x/b,w=.001,k=0-w,A=1+w;return k<=T&&T<=A&&k<=S&&S<=A?[e+T*d,r+T*g]:h?[e+T*d,r+T*g]:[]}else return v===0||x===0?RN(e,n,l)===l?[l,u]:RN(e,n,a)===a?[a,s]:RN(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Jze=o(function(e,r,n,i,a){var s=[],l=i/2,u=a/2,h=r,f=n;s.push({x:h+l*e[0],y:f+u*e[1]});for(var d=1;d0){var y=Jk(d,-u);m=Zk(y)}else m=d}else m=n;for(var v,x,b,T,S=0;S2){for(var g=[f[0],f[1]],y=Math.pow(g[0]-e,2)+Math.pow(g[1]-r,2),v=1;vf&&(f=S)},"set"),get:o(function(T){return h[T]},"get")},p=0;p0?O=_.edgesTo(D)[0]:O=D.edgesTo(_)[0];var M=i(O);D=D.id(),A[D]>A[L]+M&&(A[D]=A[L]+M,C.nodes.indexOf(D)<0?C.push(D):C.updateItem(D),k[D]=0,w[D]=[]),A[D]==A[L]+M&&(k[D]=k[D]+k[L],w[D].push(L))}else for(var P=0;P0;){for(var $=S.pop(),U=0;U0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),pGe=o(function(e,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:yGe,l=i,u,h,f=0;f=2?q2(e,r,n,0,sle,vGe):q2(e,r,n,0,ale)},"euclidean"),squaredEuclidean:o(function(e,r,n){return q2(e,r,n,0,sle)},"squaredEuclidean"),manhattan:o(function(e,r,n){return q2(e,r,n,0,ale)},"manhattan"),max:o(function(e,r,n){return q2(e,r,n,-1/0,xGe)},"max")};cg["squared-euclidean"]=cg.squaredEuclidean;cg.squaredeuclidean=cg.squaredEuclidean;o(fE,"clusteringDistance");bGe=xa({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),bI=o(function(e){return bGe(e)},"setOptions"),eE=o(function(e,r,n,i,a){var s=a!=="kMedoids",l=s?function(d){return n[d]}:function(d){return i[d](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,f=r;return fE(e,i.length,l,u,h,f)},"getDist"),MN=o(function(e,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;hn)return!1}return!0},"haveMatricesConverged"),kGe=o(function(e,r,n){for(var i=0;il&&(l=r[h][f],u=f);a[u].push(e[h])}for(var d=0;d=a.threshold||a.mode==="dendrogram"&&e.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},e[g.index]=v,e.splice(y.index,1),r[g.key]=v;for(var x=0;xn[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},"findExemplars"),fle=o(function(e,r,n){for(var i=[],a=0;al&&(s=h,l=r[a*e+h])}s>0&&i.push(s)}for(var f=0;fh&&(u=f,h=d)}n[a]=s[u]}return i=fle(e,r,n),i},"assign"),dle=o(function(e){for(var r=this.cy(),n=this.nodes(),i=OGe(e),a={},s=0;s=L?(E=L,L=_,D=O):_>E&&(E=_);for(var M=0;M0?1:0;A[R%i.minIterations*l+U]=j,$+=j}if($>0&&(R>=i.minIterations-1||R==i.maxIterations-1)){for(var te=0,Y=0;Y1||k>1)&&(l=!0),d[T]=[],b.outgoers().forEach(function(C){C.isEdge()&&d[T].push(C.id())})}else p[T]=[void 0,b.target().id()]}):s.forEach(function(b){var T=b.id();if(b.isNode()){var S=b.degree(!0);S%2&&(u?h?l=!0:h=T:u=T),d[T]=[],b.connectedEdges().forEach(function(w){return d[T].push(w.id())})}else p[T]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(f&&h!=f)return m;f=h}else{if(f&&h!=f&&u!=f)return m;f||(f=h)}else f||(f=s[0].id());var g=o(function(T){for(var S=T,w=[T],k,A,C;d[S].length;)k=d[S].shift(),A=p[k][0],C=p[k][1],S!=C?(d[C]=d[C].filter(function(R){return R!=k}),S=C):!a&&S!=A&&(d[A]=d[A].filter(function(R){return R!=k}),S=A),w.unshift(k),w.unshift(S);return w},"walk"),y=[],v=[];for(v=g(f);v.length!=1;)d[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in d)if(d[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},_k=o(function(){var e=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=e.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(e);v.merge(x),b.forEach(function(T){var S=T.id(),w=T.connectedEdges().intersection(e);v.merge(T),r[S].cutVertex?v.merge(w.filter(function(k){return k.isLoop()})):v.merge(w)})}),a.push(v)},"buildComponent"),h=o(function(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=e.getElementById(m).connectedEdges().intersection(e);if(y.size()===0)a.push(e.spawn(e.getElementById(m)));else{var v,x,b,T;y.forEach(function(S){v=S.source().id(),x=S.target().id(),b=v===m?x:v,b!==g&&(T=S.id(),l[T]||(l[T]=!0,s.push({x:m,y:b,edge:S})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(h(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");e.forEach(function(d){if(d.isNode()){var p=d.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var f=Object.keys(r).filter(function(d){return r[d].cutVertex}).map(function(d){return e.getElementById(d)});return{cut:e.spawn(f),components:a}},"hopcroftTarjanBiconnected"),UGe={hopcroftTarjanBiconnected:_k,htbc:_k,htb:_k,hopcroftTarjanBiconnectedComponents:_k},Dk=o(function(){var e=this,r={},n=0,i=[],a=[],s=e.spawn(e),l=o(function(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var f=e.getElementById(h).connectedEdges().intersection(e);if(f.forEach(function(y){var v=y.target().id();v!==h&&(v in r||l(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var d=e.spawn();;){var p=a.pop();if(d.merge(e.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=d.edgesWith(d),g=d.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return e.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),HGe={tarjanStronglyConnected:Dk,tsc:Dk,tscc:Dk,tarjanStronglyConnectedComponents:Dk},Oue={};[sx,bze,Tze,kze,Sze,Aze,Lze,nGe,ag,sg,WM,gGe,DGe,MGe,zGe,VGe,UGe,HGe].forEach(function(t){ir(Oue,t)});Pue=0,Bue=1,Fue=2,Il=o(function(e){if(!(this instanceof Il))return new Il(e);this.id="Thenable/1.0.7",this.state=Pue,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");Il.prototype={fulfill:o(function(e){return ple(this,Bue,"fulfillValue",e)},"fulfill"),reject:o(function(e){return ple(this,Fue,"rejectReason",e)},"reject"),then:o(function(e,r){var n=this,i=new Il;return n.onFulfilled.push(gle(e,i,"fulfill")),n.onRejected.push(gle(r,i,"reject")),$ue(n),i.proxy},"then")};ple=o(function(e,r,n,i){return e.state===Pue&&(e.state=r,e[n]=i,$ue(e)),e},"deliver"),$ue=o(function(e){e.state===Bue?mle(e,"onFulfilled",e.fulfillValue):e.state===Fue&&mle(e,"onRejected",e.rejectReason)},"execute"),mle=o(function(e,r,n){if(e[r].length!==0){var i=e[r];e[r]=[];var a=o(function(){for(var l=0;l0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s0&&this.spawn(i).updateStyle().emit("class"),r},"classes"),addClass:o(function(e){return this.toggleClass(e,!0)},"addClass"),hasClass:o(function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},"hasClass"),toggleClass:o(function(e,r){An(e)||(e=e.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(e){return this.toggleClass(e,!1)},"removeClass"),flashClass:o(function(e,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},r),n},"flashClass")};zk.className=zk.classNames=zk.classes;Wr={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Fi,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Wr.variable="(?:[\\w-.]|(?:\\\\"+Wr.metaChar+"))+";Wr.className="(?:[\\w-]|(?:\\\\"+Wr.metaChar+"))+";Wr.value=Wr.string+"|"+Wr.number;Wr.id=Wr.variable;(function(){var t,e,r;for(t=Wr.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&(Wr.comparatorOp+="|\\!"+e)})();xn=o(function(){return{checks:[]}},"newQuery"),zt={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},KM=[{selector:":selected",matches:o(function(e){return e.selected()},"matches")},{selector:":unselected",matches:o(function(e){return!e.selected()},"matches")},{selector:":selectable",matches:o(function(e){return e.selectable()},"matches")},{selector:":unselectable",matches:o(function(e){return!e.selectable()},"matches")},{selector:":locked",matches:o(function(e){return e.locked()},"matches")},{selector:":unlocked",matches:o(function(e){return!e.locked()},"matches")},{selector:":visible",matches:o(function(e){return e.visible()},"matches")},{selector:":hidden",matches:o(function(e){return!e.visible()},"matches")},{selector:":transparent",matches:o(function(e){return e.transparent()},"matches")},{selector:":grabbed",matches:o(function(e){return e.grabbed()},"matches")},{selector:":free",matches:o(function(e){return!e.grabbed()},"matches")},{selector:":removed",matches:o(function(e){return e.removed()},"matches")},{selector:":inside",matches:o(function(e){return!e.removed()},"matches")},{selector:":grabbable",matches:o(function(e){return e.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(e){return!e.grabbable()},"matches")},{selector:":animated",matches:o(function(e){return e.animated()},"matches")},{selector:":unanimated",matches:o(function(e){return!e.animated()},"matches")},{selector:":parent",matches:o(function(e){return e.isParent()},"matches")},{selector:":childless",matches:o(function(e){return e.isChildless()},"matches")},{selector:":child",matches:o(function(e){return e.isChild()},"matches")},{selector:":orphan",matches:o(function(e){return e.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(e){return e.isChild()},"matches")},{selector:":compound",matches:o(function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()},"matches")},{selector:":loop",matches:o(function(e){return e.isLoop()},"matches")},{selector:":simple",matches:o(function(e){return e.isSimple()},"matches")},{selector:":active",matches:o(function(e){return e.active()},"matches")},{selector:":inactive",matches:o(function(e){return!e.active()},"matches")},{selector:":backgrounding",matches:o(function(e){return e.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(e){return!e.backgrounding()},"matches")}].sort(function(t,e){return F$e(t.selector,e.selector)}),GVe=(function(){for(var t={},e,r=0;r0&&f.edgeCount>0)return hn("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return hn("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&hn("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),YVe=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=o(function(f){return f??""},"clean"),r=o(function(f){return Jt(f)?'"'+f+'"':e(f)},"cleanVal"),n=o(function(f){return" "+f+" "},"space"),i=o(function(f,d){var p=f.type,m=f.value;switch(p){case zt.GROUP:{var g=e(m);return g.substring(0,g.length-1)}case zt.DATA_COMPARE:{var y=f.field,v=f.operator;return"["+y+n(e(v))+r(m)+"]"}case zt.DATA_BOOL:{var x=f.operator,b=f.field;return"["+e(x)+b+"]"}case zt.DATA_EXIST:{var T=f.field;return"["+T+"]"}case zt.META_COMPARE:{var S=f.operator,w=f.field;return"[["+w+n(e(S))+r(m)+"]]"}case zt.STATE:return m;case zt.ID:return"#"+m;case zt.CLASS:return"."+m;case zt.PARENT:case zt.CHILD:return a(f.parent,d)+n(">")+a(f.child,d);case zt.ANCESTOR:case zt.DESCENDANT:return a(f.ancestor,d)+" "+a(f.descendant,d);case zt.COMPOUND_SPLIT:{var k=a(f.left,d),A=a(f.subject,d),C=a(f.right,d);return k+(k.length>0?" ":"")+A+C}case zt.TRUE:return""}},"checkToString"),a=o(function(f,d){return f.checks.reduce(function(p,m,g){return p+(d===f&&g===0?"$":"")+i(m,d)},"")},"queryToString"),s="",l=0;l1&&l=0&&(r=r.replace("!",""),d=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(a||l||f)&&(u=!a&&!s?"":""+e,h=""+n),f&&(e=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=e===n;break;case">":p=!0,i=e>n;break;case">=":p=!0,i=e>=n;break;case"<":p=!0,i=e1&&arguments[1]!==void 0?arguments[1]:!0;return EI(this,t,e,Yue)};o(Xue,"addParent");ug.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return EI(this,t,e,Xue)};o(tUe,"addParentAndChildren");ug.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return EI(this,t,e,tUe)};ug.ancestors=ug.parents;cx=jue={data:un.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:un.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:un.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:un.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:un.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:un.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var e=this[0];if(e)return e._private.data.id},"id")};cx.attr=cx.data;cx.removeAttr=cx.removeData;rUe=jue,yE={};o(RM,"defineDegreeFunction");ir(yE,{degree:RM(function(t,e){return e.source().same(e.target())?2:1}),indegree:RM(function(t,e){return e.target().same(t)?1:0}),outdegree:RM(function(t,e){return e.source().same(t)?1:0})});o(Xm,"defineDegreeBoundsFunction");ir(yE,{minDegree:Xm("degree",function(t,e){return te}),minIndegree:Xm("indegree",function(t,e){return te}),minOutdegree:Xm("outdegree",function(t,e){return te})});ir(yE,{totalDegree:o(function(e){for(var r=0,n=this.nodes(),i=0;i0,p=d;d&&(f=f[0]);var m=p?f.position():{x:0,y:0};r!==void 0?h.position(e,r+m[e]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},e===void 0?a:a[e]}else if(!s)return;return this},"relativePosition")};Ml.modelPosition=Ml.point=Ml.position;Ml.modelPositions=Ml.points=Ml.positions;Ml.renderedPoint=Ml.renderedPosition;Ml.relativePoint=Ml.relativePosition;nUe=Kue;og=Df={};Df.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),n=r.zoom(),i=r.pan(),a=e.x1*n+i.x,s=e.x2*n+i.x,l=e.y1*n+i.y,u=e.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Df.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,t||r.emitAndNotify("bounds")}}),this)};Df.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},d=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(d.w===0||d.h===0)&&(d={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},d.x1=p.x-d.w/2,d.x2=p.x+d.w/2,d.y1=p.y-d.h/2,d.y2=p.y+d.h/2);function m(R,I,L){var E=0,D=0,_=I+L;return R>0&&_>0&&(E=I/_*R,D=L/_*R),{biasDiff:E,biasComplementDiff:D}}o(m,"computeBiasValues");function g(R,I,L,E){if(L.units==="%")switch(E){case"width":return R>0?L.pfValue*R:0;case"height":return I>0?L.pfValue*I:0;case"average":return R>0&&I>0?L.pfValue*(R+I)/2:0;case"min":return R>0&&I>0?R>I?L.pfValue*I:L.pfValue*R:0;case"max":return R>0&&I>0?R>I?L.pfValue*R:L.pfValue*I:0;default:return 0}else return L.units==="px"?L.pfValue:0}o(g,"computePaddingValues");var y=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var v=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(v=v*100/f.width.val);var x=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(x=x*100/f.height.val);var b=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(b=b*100/f.height.val);var T=m(f.width.val-d.w,y,v),S=T.biasDiff,w=T.biasComplementDiff,k=m(f.height.val-d.h,x,b),A=k.biasDiff,C=k.biasComplementDiff;l.autoPadding=g(d.w,d.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(d.w,f.width.val),p.x=(-S+d.x1+d.x2+w)/2,l.autoHeight=Math.max(d.h,f.height.val),p.y=(-A+d.y1+d.y2+C)/2}o(r,"update");for(var n=0;ne.x2?i:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},"updateBounds"),mf=o(function(e,r){return r==null?e:Nl(e,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),W2=o(function(e,r,n){return Us(e,r,n)},"prefixedProperty"),Lk=o(function(e,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var f=i.arrowBounds=i.arrowBounds||{},d=f[n]=f[n]||{};d.x1=u-s,d.y1=h-s,d.x2=u+s,d.y2=h+s,d.w=d.x2-d.x1,d.h=d.y2-d.y1,Fk(d,1),Nl(e,d.x1,d.y1,d.x2,d.y2)}}},"updateBoundsFromArrow"),NM=o(function(e,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),f=W2(s,"labelWidth",n),d=W2(s,"labelHeight",n),p=W2(s,"labelX",n),m=W2(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,T=r.pstyle("text-border-width").pfValue,S=T/2,w=r.pstyle("text-background-padding").pfValue,k=2,A=d,C=f,R=C/2,I=A/2,L,E,D,_;if(v)L=p-R,E=p+R,D=m-I,_=m+I;else{switch(u.value){case"left":L=p-C,E=p;break;case"center":L=p-R,E=p+R;break;case"right":L=p,E=p+C;break}switch(h.value){case"top":D=m-A,_=m;break;case"center":D=m-I,_=m+I;break;case"bottom":D=m,_=m+A;break}}var O=g-Math.max(b,S)-w-k,M=g+Math.max(b,S)+w+k,P=y-Math.max(b,S)-w-k,B=y+Math.max(b,S)+w+k;L+=O,E+=M,D+=P,_+=B;var F=n||"main",G=a.labelBounds,$=G[F]=G[F]||{};$.x1=L,$.y1=D,$.x2=E,$.y2=_,$.w=E-L,$.h=_-D,$.leftPad=O,$.rightPad=M,$.topPad=P,$.botPad=B;var U=v&&x.strValue==="autorotate",j=x.pfValue!=null&&x.pfValue!==0;if(U||j){var te=U?W2(a.rstyle,"labelAngle",n):x.pfValue,Y=Math.cos(te),oe=Math.sin(te),J=(L+E)/2,ue=(D+_)/2;if(!v){switch(u.value){case"left":J=E;break;case"right":J=L;break}switch(h.value){case"top":ue=_;break;case"bottom":ue=D;break}}var re=o(function(Te,q){return Te=Te-J,q=q-ue,{x:Te*Y-q*oe+J,y:Te*oe+q*Y+ue}},"rotate"),ee=re(L,D),Z=re(L,_),K=re(E,D),ae=re(E,_);L=Math.min(ee.x,Z.x,K.x,ae.x),E=Math.max(ee.x,Z.x,K.x,ae.x),D=Math.min(ee.y,Z.y,K.y,ae.y),_=Math.max(ee.y,Z.y,K.y,ae.y)}var Q=F+"Rot",de=G[Q]=G[Q]||{};de.x1=L,de.y1=D,de.x2=E,de.y2=_,de.w=E-L,de.h=_-D,Nl(e,L,D,E,_),Nl(a.labelBounds.all,L,D,E,_)}return e}},"updateBoundsFromLabel"),mce=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value,a=r.pstyle("outline-offset").value,s=i+a;Zue(e,r,n,s,"outside",s/2)}},"updateBoundsFromOutline"),Zue=o(function(e,r,n,i,a,s){if(!(n===0||i<=0||a==="inside")){var l=r.cy(),u=r.pstyle("shape").value,h=l.renderer().nodeShapes[u],f=r.position(),d=f.x,p=f.y,m=r.width(),g=r.height();if(h.hasMiterBounds){a==="center"&&(i/=2);var y=h.miterBounds(d,p,m,g,i);mf(e,y)}else s!=null&&s>0&&$k(e,[s,s,s,s])}},"updateBoundsFromMiter"),iUe=o(function(e,r){if(!r.cy().headless()){var n=r.pstyle("border-opacity").value,i=r.pstyle("border-width").pfValue,a=r.pstyle("border-position").value;Zue(e,r,n,i,a)}},"updateBoundsFromMiterBorder"),aUe=o(function(e,r){var n=e._private.cy,i=n.styleEnabled(),a=n.headless(),s=cs(),l=e._private,u=e.isNode(),h=e.isEdge(),f,d,p,m,g,y,v=l.rstyle,x=u&&i?e.pstyle("bounds-expansion").pfValue:[0],b=o(function(ne){return ne.pstyle("display").value!=="none"},"isDisplayed"),T=!i||b(e)&&(!h||b(e.source())&&b(e.target()));if(T){var S=0,w=0;i&&r.includeOverlays&&(S=e.pstyle("overlay-opacity").value,S!==0&&(w=e.pstyle("overlay-padding").value));var k=0,A=0;i&&r.includeUnderlays&&(k=e.pstyle("underlay-opacity").value,k!==0&&(A=e.pstyle("underlay-padding").value));var C=Math.max(w,A),R=0,I=0;if(i&&(R=e.pstyle("width").pfValue,I=R/2),u&&r.includeNodes){var L=e.position();g=L.x,y=L.y;var E=e.outerWidth(),D=E/2,_=e.outerHeight(),O=_/2;f=g-D,d=g+D,p=y-O,m=y+O,Nl(s,f,p,d,m),i&&mce(s,e),i&&r.includeOutlines&&!a&&mce(s,e),i&&iUe(s,e)}else if(h&&r.includeEdges)if(i&&!a){var M=e.pstyle("curve-style").strValue;if(f=Math.min(v.srcX,v.midX,v.tgtX),d=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),f-=I,d+=I,p-=I,m+=I,Nl(s,f,p,d,m),M==="haystack"){var P=v.haystackPts;if(P&&P.length===2){if(f=P[0].x,p=P[0].y,d=P[1].x,m=P[1].y,f>d){var B=f;f=d,d=B}if(p>m){var F=p;p=m,m=F}Nl(s,f-I,p-I,d+I,m+I)}}else if(M==="bezier"||M==="unbundled-bezier"||gf(M,"segments")||gf(M,"taxi")){var G;switch(M){case"bezier":case"unbundled-bezier":G=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":G=v.linePts;break}if(G!=null)for(var $=0;$d){var J=f;f=d,d=J}if(p>m){var ue=p;p=m,m=ue}f-=I,d+=I,p-=I,m+=I,Nl(s,f,p,d,m)}if(i&&r.includeEdges&&h&&(Lk(s,e,"mid-source"),Lk(s,e,"mid-target"),Lk(s,e,"source"),Lk(s,e,"target")),i){var re=e.pstyle("ghost").value==="yes";if(re){var ee=e.pstyle("ghost-offset-x").pfValue,Z=e.pstyle("ghost-offset-y").pfValue;Nl(s,s.x1+ee,s.y1+Z,s.x2+ee,s.y2+Z)}}var K=l.bodyBounds=l.bodyBounds||{};ele(K,s),$k(K,x),Fk(K,1),i&&(f=s.x1,d=s.x2,p=s.y1,m=s.y2,Nl(s,f-C,p-C,d+C,m+C));var ae=l.overlayBounds=l.overlayBounds||{};ele(ae,s),$k(ae,x),Fk(ae,1);var Q=l.labelBounds=l.labelBounds||{};Q.all!=null?zze(Q.all):Q.all=cs(),i&&r.includeLabels&&(r.includeMainLabels&&NM(s,e,null),h&&(r.includeSourceLabels&&NM(s,e,"source"),r.includeTargetLabels&&NM(s,e,"target")))}return s.x1=Xo(s.x1),s.y1=Xo(s.y1),s.x2=Xo(s.x2),s.y2=Xo(s.y2),s.w=Xo(s.x2-s.x1),s.h=Xo(s.y2-s.y1),s.w>0&&s.h>0&&T&&($k(s,x),Fk(s,1)),s},"boundingBoxImpl"),Jue=o(function(e){var r=0,n=o(function(s){return(s?1:0)<=0;l--)s(l);return this};Cf.removeAllListeners=function(){return this.removeListener("*")};Cf.emit=Cf.trigger=function(t,e,r){var n=this.listeners,i=n.length;return this.emitting++,An(e)||(e=[e]),TUe(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(){var f=n[u];if(f.type===s.type&&(!f.namespace||f.namespace===s.namespace||f.namespace===xUe)&&a.eventMatches(a.context,f,s)){var d=[s];e!=null&&hze(d,e),a.beforeEmit(a.context,f,s),f.conf&&f.conf.one&&(a.listeners=a.listeners.filter(function(g){return g!==f}));var p=a.callbackContext(a.context,f,s),m=f.callback.apply(p,d);a.afterEmit(a.context,f,s),m===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[e]=u,a.set(h,{ele:u,index:e})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(e){e=e[0];var r=this._private,n=e._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(e){var r=this._private.cy;if(!e)return this;if(e&&Jt(e)){var n=e;e=r.mutableElements().filter(n)}for(var i=0;i=0;r--){var n=this[r];e(n)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(e,r){for(var n=[],i=this,a=0;an&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(e,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":$i(Symbol))!=e&&$i(Symbol.iterator)!=e;r&&(tE[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return sue({next:o(function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,i.style().apply(n));var a=n._private.style[e];return a??(r?i.style().getDefaultProperty(e):null)}},"parsedStyle"),numericStyle:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(e);return n.pfValue!==void 0?n.pfValue:n.value}},"numericStyle"),numericStyleUnits:o(function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},"numericStyleUnits"),renderedStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,e)},"renderedStyle"),style:o(function(e,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(Yr(e)){var s=e;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(Jt(e))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,e):void 0}else a.applyBypass(this,e,r,i),this.emitAndNotify("style");else if(e===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(l[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:o(function(e){return this.neighborhood().add(this).filter(e)},"closedNeighborhood"),openNeighborhood:o(function(e){return this.neighborhood(e)},"openNeighborhood")});Ba.neighbourhood=Ba.neighborhood;Ba.closedNeighbourhood=Ba.closedNeighborhood;Ba.openNeighbourhood=Ba.openNeighborhood;ir(Ba,{source:jo(o(function(e){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&e?n.filter(e):n},"sourceImpl"),"source"),target:jo(o(function(e){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&e?n.filter(e):n},"targetImpl"),"target"),sources:Cce({attr:"source"}),targets:Cce({attr:"target"})});o(Cce,"defineSourceFunction");ir(Ba,{edgesWith:jo(Ace(),"edgesWith"),edgesTo:jo(Ace({thisIsSrc:!0}),"edgesTo")});o(Ace,"defineEdgesWithFunction");ir(Ba,{connectedEdges:jo(function(t){for(var e=[],r=this,n=0;n0);return s},"components"),component:o(function(){var e=this[0];return e.cy().mutableElements().components(e)[0]},"component")});Ba.componentsOf=Ba.components;va=o(function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){Kn("A collection must have a reference to the core");return}var a=new zu,s=!1;if(!r)r=[];else if(r.length>0&&Yr(r[0])&&!mx(r[0])){s=!0;for(var l=[],u=new hg,h=0,f=r.length;h0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],l,u=0,h=r.length;u0){for(var F=l.length===r.length?r:new va(n,l),G=0;G0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(_){for(var O=_._private.edges,M=0;M0&&(t?L.emitAndNotify("remove"):e&&L.emit("remove"));for(var E=0;Ef&&Math.abs(g.v)>f;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")})(),In=o(function(e,r,n,i){var a=RUe(e,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),Vk={linear:o(function(e,r,n){return e+(r-e)*n},"linear"),ease:In(.25,.1,.25,1),"ease-in":In(.42,0,1,1),"ease-out":In(0,0,.58,1),"ease-in-out":In(.42,0,.58,1),"ease-in-sine":In(.47,0,.745,.715),"ease-out-sine":In(.39,.575,.565,1),"ease-in-out-sine":In(.445,.05,.55,.95),"ease-in-quad":In(.55,.085,.68,.53),"ease-out-quad":In(.25,.46,.45,.94),"ease-in-out-quad":In(.455,.03,.515,.955),"ease-in-cubic":In(.55,.055,.675,.19),"ease-out-cubic":In(.215,.61,.355,1),"ease-in-out-cubic":In(.645,.045,.355,1),"ease-in-quart":In(.895,.03,.685,.22),"ease-out-quart":In(.165,.84,.44,1),"ease-in-out-quart":In(.77,0,.175,1),"ease-in-quint":In(.755,.05,.855,.06),"ease-out-quint":In(.23,1,.32,1),"ease-in-out-quint":In(.86,0,.07,1),"ease-in-expo":In(.95,.05,.795,.035),"ease-out-expo":In(.19,1,.22,1),"ease-in-out-expo":In(1,0,0,1),"ease-in-circ":In(.6,.04,.98,.335),"ease-out-circ":In(.075,.82,.165,1),"ease-in-out-circ":In(.785,.135,.15,.86),spring:o(function(e,r,n){if(n===0)return Vk.linear;var i=NUe(e,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":In};o(Dce,"getEasedValue");o(Lce,"getValue");o(jm,"ease");o(MUe,"step$1");o(X2,"valid");o(IUe,"startAnimation");o(Rce,"stepAll");OUe={animate:un.animate(),animation:un.animation(),animated:un.animated(),clearQueue:un.clearQueue(),delay:un.delay(),delayAnimation:un.delayAnimation(),stop:un.stop(),addToAnimationPool:o(function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&Kk(o(function(a){Rce(a,e),r()},"animationStep"))}o(r,"headlessStep");var n=e.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){Rce(s,e)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},PUe={qualifierCompare:o(function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},"qualifierCompare"),eventMatches:o(function(e,r,n){var i=r.qualifier;return i!=null?e!==n.target&&mx(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(e,r){r.cy=e,r.target=e},"addEventFields"),callbackContext:o(function(e,r,n){return r.qualifier!=null?n.target:e},"callbackContext")},Mk=o(function(e){return Jt(e)?new Ef(e):e},"argSelector"),uhe={createEmitter:o(function(){var e=this._private;return e.emitter||(e.emitter=new vE(PUe,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(e,r,n){return this.emitter().on(e,Mk(r),n),this},"on"),removeListener:o(function(e,r,n){return this.emitter().removeListener(e,Mk(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(e,r,n){return this.emitter().one(e,Mk(r),n),this},"one"),once:o(function(e,r,n){return this.emitter().one(e,Mk(r),n),this},"once"),emit:o(function(e,r){return this.emitter().emit(e,r),this},"emit"),emitAndNotify:o(function(e,r){return this.emit(e),this.notify(e,r),this},"emitAndNotify")};un.eventAliasesOn(uhe);ZM={png:o(function(e){var r=this._private.renderer;return e=e||{},r.png(e)},"png"),jpg:o(function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)},"jpg")};ZM.jpeg=ZM.jpg;Uk={layout:o(function(e){var r=this;if(e==null){Kn("Layout options must be specified to make a layout");return}if(e.name==null){Kn("A `name` must be specified to make a layout");return}var n=e.name,i=r.extension("layout",n);if(i==null){Kn("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;Jt(e.eles)?a=r.$(e.eles):a=e.eles!=null?e.eles:r.$();var s=new i(ir({},e,{cy:r,eles:a}));return s},"layout")};Uk.createLayout=Uk.makeLayout=Uk.layout;BUe={notify:o(function(e,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(e,r)}},"notify"),notifications:o(function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},"notifications"),noNotifications:o(function(e){this.notifications(!1),e(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},"startBatch"),endBatch:o(function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var i=e.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},"endBatch"),batch:o(function(e){return this.startBatch(),e(),this.endBatch(),this},"batch"),batchData:o(function(e){var r=this;return this.batch(function(){for(var n=Object.keys(e),i=0;i0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},"destroyRenderer"),onRender:o(function(e){return this.on("render",e)},"onRender"),offRender:o(function(e){return this.off("render",e)},"offRender")};JM.invalidateDimensions=JM.resize;Hk={collection:o(function(e,r){return Jt(e)?this.$(e):fo(e)?e.collection():An(e)?(r||(r={}),new va(this,e,r.unique,r.removed)):new va(this)},"collection"),nodes:o(function(e){var r=this.$(function(n){return n.isNode()});return e?r.filter(e):r},"nodes"),edges:o(function(e){var r=this.$(function(n){return n.isEdge()});return e?r.filter(e):r},"edges"),$:o(function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};Hk.elements=Hk.filter=Hk.$;na={},tx="t",$Ue="f";na.apply=function(t){for(var e=this,r=e._private,n=r.cy,i=n.collection(),a=0;a0;if(p||d&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y1&&(S=1),l.color){var k=n.valueMin[0],A=n.valueMax[0],C=n.valueMin[1],R=n.valueMax[1],I=n.valueMin[2],L=n.valueMax[2],E=n.valueMin[3]==null?1:n.valueMin[3],D=n.valueMax[3]==null?1:n.valueMax[3],_=[Math.round(k+(A-k)*S),Math.round(C+(R-C)*S),Math.round(I+(L-I)*S),Math.round(E+(D-E)*S)];a={bypass:n.bypass,name:n.name,value:_,strValue:"rgb("+_[0]+", "+_[1]+", "+_[2]+")"}}else if(l.number){var O=n.valueMin+(n.valueMax-n.valueMin)*S;a=this.parse(n.name,O,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var M=n.field.split("."),P=d.data,B=0;B0&&a>0){for(var l={},u=!1,h=0;h0?t.delayAnimation(s).play().promise().then(T):T()}).then(function(){return t.animation({style:l,duration:a,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1)};na.checkTrigger=function(t,e,r,n,i,a){var s=this.properties[e],l=i(s);t.removed()||l!=null&&l(r,n,t)&&a(s)};na.checkZOrderTrigger=function(t,e,r,n){var i=this;this.checkTrigger(t,e,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",t)})};na.checkBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBounds},function(i){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache()})};na.checkConnectedEdgesBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBoundsOfConnectedEdges},function(i){t.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};na.checkParallelEdgesBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBoundsOfParallelEdges},function(i){t.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};na.checkTriggers=function(t,e,r,n){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,n),this.checkBoundsTrigger(t,e,r,n),this.checkConnectedEdgesBoundsTrigger(t,e,r,n),this.checkParallelEdgesBoundsTrigger(t,e,r,n)};wx={};wx.applyBypass=function(t,e,r,n){var i=this,a=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var l=0;li.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var f=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){hn("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=f[0];var d=f[1];if(d!=="core"){var p=new Ef(d);if(p.invalid){hn("Skipping parsing of block: Invalid selector found in string stylesheet: "+d),l();continue}}var m=f[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){hn("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],T=x[2],S=e.properties[b];if(!S){hn("Skipping property: Invalid property name in: "+s),u();continue}var w=r.parse(b,T);if(!w){hn("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:T}),u()}if(g){l();break}r.selector(d);for(var k=0;k=7&&e[0]==="d"&&(f=new RegExp(l.data.regex).exec(e))){if(r)return!1;var p=l.data;return{name:t,value:f,strValue:""+e,mapped:p,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(d=new RegExp(l.mapData.regex).exec(e))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(t,d[4]);if(!g||g.mapped)return!1;var y=this.parse(t,d[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return hn("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:t,value:d,strValue:""+e,mapped:m,field:d[1],fieldMin:parseFloat(d[2]),fieldMax:parseFloat(d[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var T;if(u?T=e.split(/\s+/):An(e)?T=e:T=[e],h.evenMultiple&&T.length%2!==0)return null;for(var S=[],w=[],k=[],A="",C=!1,R=0;R0?" ":"")+I.strValue}return h.validate&&!h.validate(S,w)?null:h.singleEnum&&C?S.length===1&&Jt(S[0])?{name:t,value:S[0],strValue:S[0],bypass:r}:null:{name:t,value:S,pfValue:k,strValue:A,bypass:r,units:w}}var L=o(function(){for(var re=0;reh.max||h.strictMax&&e===h.max))return null;var M={name:t,value:e,strValue:""+e+(E||""),units:E,bypass:r};return h.unitless||E!=="px"&&E!=="em"?M.pfValue=e:M.pfValue=E==="px"||!E?e:this.getEmSizeInPixels()*e,(E==="ms"||E==="s")&&(M.pfValue=E==="ms"?e:1e3*e),(E==="deg"||E==="rad")&&(M.pfValue=E==="rad"?e:Pze(e)),E==="%"&&(M.pfValue=e/100),M}else if(h.propList){var P=[],B=""+e;if(B!=="none"){for(var F=B.split(/\s*,\s*|\s+/),G=0;G0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},"minZoom"),maxZoom:o(function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},"maxZoom"),getZoomedViewport:o(function(e){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),At(e)?s=e:Yr(e)&&(s=e.level,e.position!=null?a=hE(e.position,i,n):e.renderedPosition!=null&&(a=e.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var h=e.pan;At(h.x)&&(r.pan.x=h.x,l=!1),At(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(e,r){if(this._private.panningEnabled){if(Jt(e)){var n=e;e=this.mutableElements().filter(n)}else fo(e)||(e=this.mutableElements());if(e.length!==0){var i=e.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var e=this._private,r=e.container,n=this;return e.sizeCache=e.sizeCache||(r?(function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}})():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var e=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-e.x)/r,x2:(n.x2-e.x)/r,y1:(n.y1-e.y)/r,y2:(n.y2-e.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},"extent"),renderedExtent:o(function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};kp.centre=kp.center;kp.autolockNodes=kp.autolock;kp.autoungrabifyNodes=kp.autoungrabify;hx={data:un.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:un.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:un.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:un.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};hx.attr=hx.data;hx.removeAttr=hx.removeData;fx=o(function(e){var r=this;e=ir({},e);var n=e.container;n&&!jk(n)&&jk(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=Bi!==void 0&&n!==void 0&&!e.headless,l=e;l.layout=ir({name:s?"grid":"null"},l.layout),l.renderer=ir({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new va(this),listeners:[],aniEles:new va(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:At(l.zoom)?l.zoom:1,pan:{x:Yr(l.pan)&&At(l.pan.x)?l.pan.x:0,y:Yr(l.pan)&&At(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var f=o(function(g,y){var v=g.some(L$e);if(v)return fg.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var d=ir({},l,l.renderer);r.initRenderer(d);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(Yr(g)||An(g))&&r.add(g),r.one("layoutready",function(T){r.notifications(!0),r.emit(T),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=ir({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");f([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,oi(l.ready)&&r.on("ready",l.ready);for(var v=0;v0,l=!!t.boundingBox,u=cs(l?t.boundingBox:structuredClone(e.extent())),h;if(fo(t.roots))h=t.roots;else if(An(t.roots)){for(var f=[],d=0;d0;){var _=D(),O=R(_,L);if(O)_.outgoers().filter(function(Ve){return Ve.isNode()&&r.has(Ve)}).forEach(E);else if(O===null){hn("Detected double maximal shift for node `"+_.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var M=0;if(t.avoidOverlap)for(var P=0;P0&&x[0].length<=3?Le/2:0),Ne=2*Math.PI/x[Ye].length*He;return Ye===0&&x[0].length===1&&(Ie=1),{x:K.x+Ie*Math.cos(Ne),y:K.y+Ie*Math.sin(Ne)}}else{var Ce=x[Ye].length,Fe=Math.max(Ce===1?0:l?(u.w-t.padding*2-ae.w)/((t.grid?de:Ce)-1):(u.w-t.padding*2-ae.w)/((t.grid?de:Ce)+1),M),fe={x:K.x+(He+1-(Ce+1)/2)*Fe,y:K.y+(Ye+1-(Y+1)/2)*Q};return fe}},"getPositionTopBottom"),Te={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(Te).indexOf(t.direction)===-1&&Kn("Invalid direction '".concat(t.direction,"' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(Te).join(", ")));var q=o(function(pe){return aze(ne(pe),u,Te[t.direction])},"getPosition");return r.nodes().layoutPositions(this,t,q),this};HUe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(fhe,"CircleLayout");fhe.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=n.nodes().not(":parent");e.sort&&(a=a.sort(e.sort));for(var s=cs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=e.sweep===void 0?2*Math.PI-2*Math.PI/a.length:e.sweep,h=u/Math.max(1,a.length-1),f,d=0,p=0;p1&&e.avoidOverlap){d*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),T=Math.sqrt(d*d/(x*x+b*b));f=Math.max(T,f)}var S=o(function(k,A){var C=e.startAngle+A*h*(i?1:-1),R=f*Math.cos(C),I=f*Math.sin(C),L={x:l.x+R,y:l.y+I};return L},"getPos");return n.nodes().layoutPositions(this,e,S),this};qUe={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(e){return e.degree()},"concentric"),levelWidth:o(function(e){return e.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(dhe,"ConcentricLayout");dhe.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,n=t.cy,i=e.eles,a=i.nodes().not(":parent"),s=cs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,f=0;f0){var w=Math.abs(b[0].value-S.value);w>=v&&(b=[],x.push(b))}b.push(S)}var k=h+e.minNodeSpacing;if(!e.avoidOverlap){var A=x.length>0&&x[0].length>1,C=Math.min(s.w,s.h)/2-k,R=C/(x.length+A?1:0);k=Math.min(k,R)}for(var I=0,L=0;L1&&e.avoidOverlap){var O=Math.cos(_)-Math.cos(0),M=Math.sin(_)-Math.sin(0),P=Math.sqrt(k*k/(O*O+M*M));I=Math.max(P,I)}E.r=I,I+=k}if(e.equidistant){for(var B=0,F=0,G=0;G=t.numIter||(ZUe(n,t),n.temperature=n.temperature*t.coolingFactor,n.temperature=t.animationThreshold&&a(),Kk(f)}},"frame");f()}else{for(;h;)h=s(u),u++;Ice(n,t),l()}return this};kE.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};kE.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};YUe=o(function(e,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=cs(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),l={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=n.eles.components(),h={},f=0;f0){l.graphSet.push(C);for(var f=0;fi.count?0:i.graph},"findLCA"),phe=o(function(e,r,n,i){var a=i.graphSet[n];if(-10)var d=i.nodeOverlap*f,p=Math.sqrt(l*l+u*u),m=d*l/p,g=d*u/p;else var y=nE(e,l,u),v=nE(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,T=x*x+b*b,p=Math.sqrt(T),d=(e.nodeRepulsion+r.nodeRepulsion)/T,m=d*x/p,g=d*b/p;e.isLocked||(e.offsetX-=m,e.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),tHe=o(function(e,r,n,i){if(n>0)var a=e.maxX-r.minX;else var a=r.maxX-e.minX;if(i>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),nE=o(function(e,r,n){var i=e.positionX,a=e.positionY,s=e.height||1,l=e.width||1,u=n/r,h=s/l,f={};return r===0&&0n?(f.x=i,f.y=a+s/2,f):0r&&-1*h<=u&&u<=h?(f.x=i-l/2,f.y=a-l*n/2/r,f):0=h)?(f.x=i+s*r/2/n,f.y=a+s/2,f):(0>n&&(u<=-1*h||u>=h)&&(f.x=i-s*r/2/n,f.y=a-s/2),f)},"findClippingPoint"),rHe=o(function(e,r){for(var n=0;nn){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),iHe=o(function(e,r){var n=[],i=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;i<=a;){var s=n[i++],l=e.idToIndex[s],u=e.layoutNodes[l],h=u.children;if(0n)var a={x:n*e/i,y:n*r/i};else var a={x:e,y:r};return a},"limitForce"),ghe=o(function(e,r){var n=e.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||e.maxX+i.padRight>i.maxX)&&(i.maxX=e.maxX+i.padRight,a=!0),(i.minX==null||e.minX-i.padLefti.maxY)&&(i.maxY=e.maxY+i.padBottom,a=!0),(i.minY==null||e.minY-i.padTopx&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),oHe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(e){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(e,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(e,r){return r},"transform")};o(yhe,"GridLayout");yhe.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=n.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));var a=cs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,e,function(j){return{x:a.x1,y:a.y1}});else{var s=i.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),f=o(function(te){if(te==null)return Math.min(u,h);var Y=Math.min(u,h);Y==u?u=te:h=te},"small"),d=o(function(te){if(te==null)return Math.max(u,h);var Y=Math.max(u,h);Y==u?u=te:h=te},"large"),p=e.rows,m=e.cols!=null?e.cols:e.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=f(),y=d();(g-1)*y>=s?f(g-1):(y-1)*g>=s&&d(y-1)}else for(;h*u=s?d(x+1):f(v+1)}var b=a.w/h,T=a.h/u;if(e.condense&&(b=0,T=0),e.avoidOverlap)for(var S=0;S=h&&(O=0,_++)},"moveToNextCell"),P={},B=0;B(O=Kze(t,e,M[P],M[P+1],M[P+2],M[P+3])))return v(A,O),!0}else if(R.edgeType==="bezier"||R.edgeType==="multibezier"||R.edgeType==="self"||R.edgeType==="compound"){for(var M=R.allpts,P=0;P+5(O=jze(t,e,M[P],M[P+1],M[P+2],M[P+3],M[P+4],M[P+5])))return v(A,O),!0}for(var B=B||C.source,F=F||C.target,G=i.getArrowWidth(I,L),$=[{name:"source",x:R.arrowStartX,y:R.arrowStartY,angle:R.srcArrowAngle},{name:"target",x:R.arrowEndX,y:R.arrowEndY,angle:R.tgtArrowAngle},{name:"mid-source",x:R.midX,y:R.midY,angle:R.midsrcArrowAngle},{name:"mid-target",x:R.midX,y:R.midY,angle:R.midtgtArrowAngle}],P=0;P<$.length;P++){var U=$[P],j=a.arrowShapes[A.pstyle(U.name+"-arrow-shape").value],te=A.pstyle("width").pfValue;if(j.roughCollide(t,e,G,U.angle,{x:U.x,y:U.y},te,f)&&j.collide(t,e,G,U.angle,{x:U.x,y:U.y},te,f))return v(A),!0}h&&l.length>0&&(x(B),x(F))}o(b,"checkEdge");function T(A,C,R){return Us(A,C,R)}o(T,"preprop");function S(A,C){var R=A._private,I=p,L;C?L=C+"-":L="",A.boundingBox();var E=R.labelBounds[C||"main"],D=A.pstyle(L+"label").value,_=A.pstyle("text-events").strValue==="yes";if(!(!_||!D)){var O=T(R.rscratch,"labelX",C),M=T(R.rscratch,"labelY",C),P=T(R.rscratch,"labelAngle",C),B=A.pstyle(L+"text-margin-x").pfValue,F=A.pstyle(L+"text-margin-y").pfValue,G=E.x1-I-B,$=E.x2+I-B,U=E.y1-I-F,j=E.y2+I-F;if(P){var te=Math.cos(P),Y=Math.sin(P),oe=o(function(ae,Q){return ae=ae-O,Q=Q-M,{x:ae*te-Q*Y+O,y:ae*Y+Q*te+M}},"rotate"),J=oe(G,U),ue=oe(G,j),re=oe($,U),ee=oe($,j),Z=[J.x+B,J.y+F,re.x+B,re.y+F,ee.x+B,ee.y+F,ue.x+B,ue.y+F];if(Hs(t,e,Z))return v(A),!0}else if(yf(E,t,e))return v(A),!0}}o(S,"checkLabel");for(var w=s.length-1;w>=0;w--){var k=s[w];k.isNode()?x(k)||S(k):b(k)||S(k)||S(k,"source")||S(k,"target")}return l};Sp.getAllInBox=function(t,e,r,n){var i=this.getCachedZSortedEles().interactive,a=this.cy.zoom(),s=2/a,l=[],u=Math.min(t,r),h=Math.max(t,r),f=Math.min(e,n),d=Math.max(e,n);t=u,r=h,e=f,n=d;var p=cs({x1:t,y1:e,x2:r,y2:n}),m=[{x:p.x1,y:p.y1},{x:p.x2,y:p.y1},{x:p.x2,y:p.y2},{x:p.x1,y:p.y2}],g=[[m[0],m[1]],[m[1],m[2]],[m[2],m[3]],[m[3],m[0]]];function y(ae,Q,de){return Us(ae,Q,de)}o(y,"preprop");function v(ae,Q){var de=ae._private,ne=s,Te="";ae.boundingBox();var q=de.labelBounds.main;if(!q)return null;var Ve=y(de.rscratch,"labelX",Q),pe=y(de.rscratch,"labelY",Q),Be=y(de.rscratch,"labelAngle",Q),Ye=ae.pstyle(Te+"text-margin-x").pfValue,He=ae.pstyle(Te+"text-margin-y").pfValue,Le=q.x1-ne-Ye,Ie=q.x2+ne-Ye,Ne=q.y1-ne-He,Ce=q.y2+ne-He;if(Be){var Fe=Math.cos(Be),fe=Math.sin(Be),xe=o(function(he,z){return he=he-Ve,z=z-pe,{x:he*Fe-z*fe+Ve,y:he*fe+z*Fe+pe}},"rotate");return[xe(Le,Ne),xe(Ie,Ne),xe(Ie,Ce),xe(Le,Ce)]}else return[{x:Le,y:Ne},{x:Ie,y:Ne},{x:Ie,y:Ce},{x:Le,y:Ce}]}o(v,"getRotatedLabelBox");function x(ae,Q,de,ne){function Te(q,Ve,pe){return(pe.y-q.y)*(Ve.x-q.x)>(Ve.y-q.y)*(pe.x-q.x)}return o(Te,"ccw"),Te(ae,de,ne)!==Te(Q,de,ne)&&Te(ae,Q,de)!==Te(ae,Q,ne)}o(x,"doLinesIntersect");for(var b=0;b0?-(Math.PI-e.ang):Math.PI+e.ang},"invertVec"),dHe=o(function(e,r,n,i,a){if(e!==$ce?zce(r,e,Ic):fHe(Yo,Ic),zce(r,n,Yo),Bce=Ic.nx*Yo.ny-Ic.ny*Yo.nx,Fce=Ic.nx*Yo.nx-Ic.ny*-Yo.ny,Fu=Math.asin(Math.max(-1,Math.min(1,Bce))),Math.abs(Fu)<1e-6){eI=r.x,tI=r.y,gp=Qm=0;return}vp=1,qk=!1,Fce<0?Fu<0?Fu=Math.PI+Fu:(Fu=Math.PI-Fu,vp=-1,qk=!0):Fu>0&&(vp=-1,qk=!0),r.radius!==void 0?Qm=r.radius:Qm=i,fp=Fu/2,Ik=Math.min(Ic.len/2,Yo.len/2),a?(Nc=Math.abs(Math.cos(fp)*Qm/Math.sin(fp)),Nc>Ik?(Nc=Ik,gp=Math.abs(Nc*Math.sin(fp)/Math.cos(fp))):gp=Qm):(Nc=Math.min(Ik,Qm),gp=Math.abs(Nc*Math.sin(fp)/Math.cos(fp))),rI=r.x+Yo.nx*Nc,nI=r.y+Yo.ny*Nc,eI=rI-Yo.ny*gp*vp,tI=nI+Yo.nx*gp*vp,The=r.x+Ic.nx*Nc,whe=r.y+Ic.ny*Nc,$ce=r},"calcCornerArc");o(khe,"drawPreparedRoundCorner");o(LI,"getRoundCorner");dx=.01,pHe=Math.sqrt(2*dx),$a={};$a.findMidptPtsEtc=function(t,e){var r=e.posPts,n=e.intersectionPts,i=e.vectorNormInverse,a,s=t.pstyle("source-endpoint"),l=t.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(w,k,A,C){var R=C-k,I=A-w,L=Math.sqrt(I*I+R*R);return{x:-R/L,y:I/L}},"recalcVectorNormInverse"),f=t.pstyle("edge-distances").value;switch(f){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var d=this.manualEndptToPx(t.source()[0],s),p=_i(d,2),m=p[0],g=p[1],y=this.manualEndptToPx(t.target()[0],l),v=_i(y,2),x=v[0],b=v[1],T={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=T}else hn("Edge ".concat(t.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};$a.findHaystackPoints=function(t){for(var e=0;e0?Math.max(z-se,0):Math.min(z+se,0)},"subDWH"),D=E(I,C),_=E(L,R),O=!1;b===h?x=Math.abs(D)>Math.abs(_)?i:n:b===u||b===l?(x=n,O=!0):(b===a||b===s)&&(x=i,O=!0);var M=x===n,P=M?_:D,B=M?L:I,F=yI(B),G=!1;!(O&&(S||k))&&(b===l&&B<0||b===u&&B>0||b===a&&B>0||b===s&&B<0)&&(F*=-1,P=F*Math.abs(P),G=!0);var $;if(S){var U=w<0?1+w:w;$=U*P}else{var j=w<0?P:0;$=j+w*F}var te=o(function(z){return Math.abs(z)=Math.abs(P)},"getIsTooClose"),Y=te($),oe=te(Math.abs(P)-Math.abs($)),J=Y||oe;if(J&&!G)if(M){var ue=Math.abs(B)<=p/2,re=Math.abs(I)<=m/2;if(ue){var ee=(f.x1+f.x2)/2,Z=f.y1,K=f.y2;r.segpts=[ee,Z,ee,K]}else if(re){var ae=(f.y1+f.y2)/2,Q=f.x1,de=f.x2;r.segpts=[Q,ae,de,ae]}else r.segpts=[f.x1,f.y2]}else{var ne=Math.abs(B)<=d/2,Te=Math.abs(L)<=g/2;if(ne){var q=(f.y1+f.y2)/2,Ve=f.x1,pe=f.x2;r.segpts=[Ve,q,pe,q]}else if(Te){var Be=(f.x1+f.x2)/2,Ye=f.y1,He=f.y2;r.segpts=[Be,Ye,Be,He]}else r.segpts=[f.x2,f.y1]}else if(M){var Le=f.y1+$+(v?p/2*F:0),Ie=f.x1,Ne=f.x2;r.segpts=[Ie,Le,Ne,Le]}else{var Ce=f.x1+$+(v?d/2*F:0),Fe=f.y1,fe=f.y2;r.segpts=[Ce,Fe,Ce,fe]}if(r.isRound){var xe=t.pstyle("taxi-radius").value,W=t.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(xe),r.isArcRadius=new Array(r.segpts.length/2).fill(W)}};$a.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var n=e.srcPos,i=e.tgtPos,a=e.srcW,s=e.srcH,l=e.tgtW,u=e.tgtH,h=e.srcShape,f=e.tgtShape,d=e.srcCornerRadius,p=e.tgtCornerRadius,m=e.srcRs,g=e.tgtRs,y=!At(r.startX)||!At(r.startY),v=!At(r.arrowStartX)||!At(r.arrowStartY),x=!At(r.endX)||!At(r.endY),b=!At(r.arrowEndX)||!At(r.arrowEndY),T=3,S=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,w=T*S,k=Tp({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),A=kB.poolIndex()){var F=P;P=B,B=F}var G=D.srcPos=P.position(),$=D.tgtPos=B.position(),U=D.srcW=P.outerWidth(),j=D.srcH=P.outerHeight(),te=D.tgtW=B.outerWidth(),Y=D.tgtH=B.outerHeight(),oe=D.srcShape=r.nodeShapes[e.getNodeShape(P)],J=D.tgtShape=r.nodeShapes[e.getNodeShape(B)],ue=D.srcCornerRadius=P.pstyle("corner-radius").value==="auto"?"auto":P.pstyle("corner-radius").pfValue,re=D.tgtCornerRadius=B.pstyle("corner-radius").value==="auto"?"auto":B.pstyle("corner-radius").pfValue,ee=D.tgtRs=B._private.rscratch,Z=D.srcRs=P._private.rscratch;D.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var K=0;K=pHe||(Ne=Math.sqrt(Math.max(Ie*Ie,dx)+Math.max(Le*Le,dx)));var Ce=D.vector={x:Ie,y:Le},Fe=D.vectorNorm={x:Ce.x/Ne,y:Ce.y/Ne},fe={x:-Fe.y,y:Fe.x};D.nodesOverlap=!At(Ne)||J.checkPoint(q[0],q[1],0,te,Y,$.x,$.y,re,ee)||oe.checkPoint(pe[0],pe[1],0,U,j,G.x,G.y,ue,Z),D.vectorNormInverse=fe,_={nodesOverlap:D.nodesOverlap,dirCounts:D.dirCounts,calculatedIntersection:!0,hasBezier:D.hasBezier,hasUnbundled:D.hasUnbundled,eles:D.eles,srcPos:$,srcRs:ee,tgtPos:G,tgtRs:Z,srcW:te,srcH:Y,tgtW:U,tgtH:j,srcIntn:Be,tgtIntn:Ve,srcShape:J,tgtShape:oe,posPts:{x1:He.x2,y1:He.y2,x2:He.x1,y2:He.y1},intersectionPts:{x1:Ye.x2,y1:Ye.y2,x2:Ye.x1,y2:Ye.y1},vector:{x:-Ce.x,y:-Ce.y},vectorNorm:{x:-Fe.x,y:-Fe.y},vectorNormInverse:{x:-fe.x,y:-fe.y}}}var xe=Te?_:D;Q.nodesOverlap=xe.nodesOverlap,Q.srcIntn=xe.srcIntn,Q.tgtIntn=xe.tgtIntn,Q.isRound=de.startsWith("round"),i&&(P.isParent()||P.isChild()||B.isParent()||B.isChild())&&(P.parents().anySame(B)||B.parents().anySame(P)||P.same(B)&&P.isParent())?e.findCompoundLoopPoints(ae,xe,K,ne):P===B?e.findLoopPoints(ae,xe,K,ne):de.endsWith("segments")?e.findSegmentsPoints(ae,xe):de.endsWith("taxi")?e.findTaxiPoints(ae,xe):de==="straight"||!ne&&D.eles.length%2===1&&K===Math.floor(D.eles.length/2)?e.findStraightEdgePoints(ae):e.findBezierPoints(ae,xe,K,ne,Te),e.findEndpoints(ae),e.tryToCorrectInvalidPoints(ae,xe),e.checkForInvalidEdgeWarning(ae),e.storeAllpts(ae),e.storeEdgeProjections(ae),e.calculateArrowAngles(ae),e.recalculateEdgeLabelProjections(ae),e.calculateLabelAngles(ae)}},"_loop"),A=0;A0){var q=h,Ve=mp(q,tg(s)),pe=mp(q,tg(Te)),Be=Ve;if(pe2){var Ye=mp(q,{x:Te[2],y:Te[3]});Ye0){var le=f,ke=mp(le,tg(s)),ve=mp(le,tg(se)),ye=ke;if(ve2){var Re=mp(le,{x:se[2],y:se[3]});Re=g||A){v={cp:S,segment:k};break}}if(v)break}var C=v.cp,R=v.segment,I=(g-x)/R.length,L=R.t1-R.t0,E=m?R.t0+L*I:R.t1-L*I;E=ox(0,E,1),e=ig(C.p0,C.p1,C.p2,E),p=gHe(C.p0,C.p1,C.p2,E);break}case"straight":case"segments":case"haystack":{for(var D=0,_,O,M,P,B=n.allpts.length,F=0;F+3=g));F+=2);var G=g-O,$=G/_;$=ox(0,$,1),e=Fze(M,P,$),p=Che(M,P);break}}s("labelX",d,e.x),s("labelY",d,e.y),s("labelAutoAngle",d,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(t)}};Bc.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))};Bc.applyPrefixedLabelDimensions=function(t,e){var r=t._private,n=this.getLabelText(t,e),i=bp(n,t._private.labelDimsKey);if(Us(r.rscratch,"prefixedLabelDimsKey",e)!==i){$u(r.rscratch,"prefixedLabelDimsKey",e,i);var a=this.calculateLabelDimensions(t,n),s=t.pstyle("line-height").pfValue,l=t.pstyle("text-wrap").strValue,u=Us(r.rscratch,"labelWrapCachedLines",e)||[],h=l!=="wrap"?1:Math.max(u.length,1),f=a.height/h,d=f*s,p=a.width,m=a.height+(h-1)*(s-1)*f;$u(r.rstyle,"labelWidth",e,p),$u(r.rscratch,"labelWidth",e,p),$u(r.rstyle,"labelHeight",e,m),$u(r.rscratch,"labelHeight",e,m),$u(r.rscratch,"labelLineHeight",e,d)}};Bc.getLabelText=function(t,e){var r=t._private,n=e?e+"-":"",i=t.pstyle(n+"label").strValue,a=t.pstyle("text-transform").value,s=o(function(j,te){return te?($u(r.rscratch,j,e,te),te):Us(r.rscratch,j,e)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=t.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",f=i.split(` -`),d=t.pstyle("text-max-width").pfValue,p=t.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;vd){var w=x.matchAll(y),k="",A=0,C=qs(w),R;try{for(C.s();!(R=C.n()).done;){var I=R.value,L=I[0],E=x.substring(A,I.index);A=I.index+L.length;var D=k.length===0?E:k+E+L,_=this.calculateLabelDimensions(t,D),O=_.width;O<=d?k+=E+L:(k&&g.push(k),k=E+L)}}catch(U){C.e(U)}finally{C.f()}k.match(/^[\s\u200b]+$/)||g.push(k)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` -`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var M=t.pstyle("text-max-width").pfValue,P="",B="\u2026",F=!1;if(this.calculateLabelDimensions(t,i).widthM)break;P+=i[G],G===i.length-1&&(F=!0)}return F||(P+=B),P}return i};Bc.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e};Bc.calculateLabelDimensions=function(t,e){var r=this,n=r.cy.window(),i=n.document,a=0,s=t.pstyle("font-style").strValue,l=t.pstyle("font-size").pfValue,u=t.pstyle("font-family").strValue,h=t.pstyle("font-weight").strValue,f=this.labelCalcCanvas,d=this.labelCalcCanvasContext;if(!f){f=this.labelCalcCanvas=i.createElement("canvas"),d=this.labelCalcCanvasContext=f.getContext("2d");var p=f.style;p.position="absolute",p.left="-9999px",p.top="-9999px",p.zIndex="-1",p.visibility="hidden",p.pointerEvents="none"}d.font="".concat(s," ").concat(h," ").concat(l,"px ").concat(u);for(var m=0,g=0,y=e.split(` -`),v=0;v1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),l)for(var u=0;u=t.desktopTapThreshold2}var bt=a(z);lt&&(t.hoverData.tapholdCancelled=!0);var wt=o(function(){var Se=t.hoverData.dragDelta=t.hoverData.dragDelta||[];Se.length===0?(Se.push(et[0]),Se.push(et[1])):(Se[0]+=et[0],Se[1]+=et[1])},"updateDragDelta");le=!0,i(xt,["mousemove","vmousemove","tapdrag"],z,{x:Re[0],y:Re[1]});var yt=o(function(Se){return{originalEvent:z,type:Se,position:{x:Re[0],y:Re[1]}}},"makeEvent"),ft=o(function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||ke.emit(yt("boxstart")),Ke[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()},"goIntoBoxMode");if(t.hoverData.which===3){if(lt){var Ur=yt("cxtdrag");Oe?Oe.emit(Ur):ke.emit(Ur),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||xt!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit(yt("cxtdragout")),t.hoverData.cxtOver=xt,xt&&xt.emit(yt("cxtdragover")))}}else if(t.hoverData.dragging){if(le=!0,ke.panningEnabled()&&ke.userPanningEnabled()){var _t;if(t.hoverData.justStartedPan){var bn=t.hoverData.mdownPos;_t={x:(Re[0]-bn[0])*ve,y:(Re[1]-bn[1])*ve},t.hoverData.justStartedPan=!1}else _t={x:et[0]*ve,y:et[1]*ve};ke.panBy(_t),ke.emit(yt("dragpan")),t.hoverData.dragged=!0}Re=t.projectIntoViewport(z.clientX,z.clientY)}else if(Ke[4]==1&&(Oe==null||Oe.pannable())){if(lt){if(!t.hoverData.dragging&&ke.boxSelectionEnabled()&&(bt||!ke.panningEnabled()||!ke.userPanningEnabled()))ft();else if(!t.hoverData.selecting&&ke.panningEnabled()&&ke.userPanningEnabled()){var Br=s(Oe,t.hoverData.downs);Br&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,Ke[4]=0,t.data.bgActivePosistion=tg(_e),t.redrawHint("select",!0),t.redraw())}Oe&&Oe.pannable()&&Oe.active()&&Oe.unactivate()}}else{if(Oe&&Oe.pannable()&&Oe.active()&&Oe.unactivate(),(!Oe||!Oe.grabbed())&&xt!=We&&(We&&i(We,["mouseout","tapdragout"],z,{x:Re[0],y:Re[1]}),xt&&i(xt,["mouseover","tapdragover"],z,{x:Re[0],y:Re[1]}),t.hoverData.last=xt),Oe)if(lt){if(ke.boxSelectionEnabled()&&bt)Oe&&Oe.grabbed()&&(x(Ue),Oe.emit(yt("freeon")),Ue.emit(yt("free")),t.dragData.didDrag&&(Oe.emit(yt("dragfreeon")),Ue.emit(yt("dragfree")))),ft();else if(Oe&&Oe.grabbed()&&t.nodeIsDraggable(Oe)){var cr=!t.dragData.didDrag;cr&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||y(Ue,{inDragLayer:!0});var ar={x:0,y:0};if(At(et[0])&&At(et[1])&&(ar.x+=et[0],ar.y+=et[1],cr)){var _r=t.hoverData.dragDelta;_r&&At(_r[0])&&At(_r[1])&&(ar.x+=_r[0],ar.y+=_r[1])}t.hoverData.draggingEles=!0,Ue.silentShift(ar).emit(yt("position")).emit(yt("drag")),t.redrawHint("drag",!0),t.redraw()}}else wt();le=!0}if(Ke[2]=Re[0],Ke[3]=Re[1],le)return z.stopPropagation&&z.stopPropagation(),z.preventDefault&&z.preventDefault(),!1}},"mousemoveHandler"),!1);var E,D,_;t.registerBinding(e,"mouseup",o(function(z){if(!(t.hoverData.which===1&&z.which!==1&&t.hoverData.capture)){var se=t.hoverData.capture;if(se){t.hoverData.capture=!1;var le=t.cy,ke=t.projectIntoViewport(z.clientX,z.clientY),ve=t.selection,ye=t.findNearestElement(ke[0],ke[1],!0,!1),Re=t.dragData.possibleDragElements,_e=t.hoverData.down,ze=a(z);t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,_e&&_e.unactivate();var Ke=o(function(Gt){return{originalEvent:z,type:Gt,position:{x:ke[0],y:ke[1]}}},"makeEvent");if(t.hoverData.which===3){var xt=Ke("cxttapend");if(_e?_e.emit(xt):le.emit(xt),!t.hoverData.cxtDragged){var We=Ke("cxttap");_e?_e.emit(We):le.emit(We)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(i(ye,["mouseup","tapend","vmouseup"],z,{x:ke[0],y:ke[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(i(_e,["click","tap","vclick"],z,{x:ke[0],y:ke[1]}),D=!1,z.timeStamp-_<=le.multiClickDebounceTime()?(E&&clearTimeout(E),D=!0,_=null,i(_e,["dblclick","dbltap","vdblclick"],z,{x:ke[0],y:ke[1]})):(E=setTimeout(function(){D||i(_e,["oneclick","onetap","voneclick"],z,{x:ke[0],y:ke[1]})},le.multiClickDebounceTime()),_=z.timeStamp)),_e==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!a(z)&&(le.$(r).unselect(["tapunselect"]),Re.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=Re=le.collection()),ye==_e&&!t.dragData.didDrag&&!t.hoverData.selecting&&ye!=null&&ye._private.selectable&&(t.hoverData.dragging||(le.selectionType()==="additive"||ze?ye.selected()?ye.unselect(["tapunselect"]):ye.select(["tapselect"]):ze||(le.$(r).unmerge(ye).unselect(["tapunselect"]),ye.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var Oe=le.collection(t.getAllInBox(ve[0],ve[1],ve[2],ve[3]));t.redrawHint("select",!0),Oe.length>0&&t.redrawHint("eles",!0),le.emit(Ke("boxend"));var et=o(function(Gt){return Gt.selectable()&&!Gt.selected()},"eleWouldBeSelected");le.selectionType()==="additive"||ze||le.$(r).unmerge(Oe).unselect(),Oe.emit(Ke("box")).stdFilter(et).select().emit(Ke("boxselect")),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!ve[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var Ue=_e&&_e.grabbed();x(Re),Ue&&(_e.emit(Ke("freeon")),Re.emit(Ke("free")),t.dragData.didDrag&&(_e.emit(Ke("dragfreeon")),Re.emit(Ke("dragfree"))))}}ve[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},"mouseupHandler"),!1);var O=[],M=4,P,B=1e5,F=o(function(z,se){for(var le=0;le=M){var ke=O;if(P=F(ke,5),!P){var ve=Math.abs(ke[0]);P=G(ke)&&ve>5}if(P)for(var ye=0;ye5&&(le=yI(le)*5),We=le/-250,P&&(We/=B,We*=3),We=We*t.wheelSensitivity;var Oe=z.deltaMode===1;Oe&&(We*=33);var et=Re.zoom()*Math.pow(10,We);z.type==="gesturechange"&&(et=t.gestureStartZoom*z.scale),Re.zoom({level:et,renderedPosition:{x:xt[0],y:xt[1]}}),Re.emit({type:z.type==="gesturechange"?"pinchzoom":"scrollzoom",originalEvent:z,position:{x:Ke[0],y:Ke[1]}})}}}},"wheelHandler");t.registerBinding(t.container,"wheel",$,!0),t.registerBinding(e,"scroll",o(function(z){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},"scrollHandler"),!0),t.registerBinding(t.container,"gesturestart",o(function(z){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||z.preventDefault()},"gestureStartHandler"),!0),t.registerBinding(t.container,"gesturechange",function(he){t.hasTouchStarted||$(he)},!0),t.registerBinding(t.container,"mouseout",o(function(z){var se=t.projectIntoViewport(z.clientX,z.clientY);t.cy.emit({originalEvent:z,type:"mouseout",position:{x:se[0],y:se[1]}})},"mouseOutHandler"),!1),t.registerBinding(t.container,"mouseover",o(function(z){var se=t.projectIntoViewport(z.clientX,z.clientY);t.cy.emit({originalEvent:z,type:"mouseover",position:{x:se[0],y:se[1]}})},"mouseOverHandler"),!1);var U,j,te,Y,oe,J,ue,re,ee,Z,K,ae,Q,de=o(function(z,se,le,ke){return Math.sqrt((le-z)*(le-z)+(ke-se)*(ke-se))},"distance"),ne=o(function(z,se,le,ke){return(le-z)*(le-z)+(ke-se)*(ke-se)},"distanceSq"),Te;t.registerBinding(t.container,"touchstart",Te=o(function(z){if(t.hasTouchStarted=!0,!!I(z)){T(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var se=t.cy,le=t.touchData.now,ke=t.touchData.earlier;if(z.touches[0]){var ve=t.projectIntoViewport(z.touches[0].clientX,z.touches[0].clientY);le[0]=ve[0],le[1]=ve[1]}if(z.touches[1]){var ve=t.projectIntoViewport(z.touches[1].clientX,z.touches[1].clientY);le[2]=ve[0],le[3]=ve[1]}if(z.touches[2]){var ve=t.projectIntoViewport(z.touches[2].clientX,z.touches[2].clientY);le[4]=ve[0],le[5]=ve[1]}var ye=o(function(bt){return{originalEvent:z,type:bt,position:{x:le[0],y:le[1]}}},"makeEvent");if(z.touches[1]){t.touchData.singleTouchMoved=!0,x(t.dragData.touchDragEles);var Re=t.findContainerClientCoords();ee=Re[0],Z=Re[1],K=Re[2],ae=Re[3],U=z.touches[0].clientX-ee,j=z.touches[0].clientY-Z,te=z.touches[1].clientX-ee,Y=z.touches[1].clientY-Z,Q=0<=U&&U<=K&&0<=te&&te<=K&&0<=j&&j<=ae&&0<=Y&&Y<=ae;var _e=se.pan(),ze=se.zoom();oe=de(U,j,te,Y),J=ne(U,j,te,Y),ue=[(U+te)/2,(j+Y)/2],re=[(ue[0]-_e.x)/ze,(ue[1]-_e.y)/ze];var Ke=200,xt=Ke*Ke;if(J=1){for(var vt=t.touchData.startPosition=[null,null,null,null,null,null],Lt=0;Lt=t.touchTapThreshold2}if(se&&t.touchData.cxt){z.preventDefault();var Lt=z.touches[0].clientX-ee,dt=z.touches[0].clientY-Z,nt=z.touches[1].clientX-ee,bt=z.touches[1].clientY-Z,wt=ne(Lt,dt,nt,bt),yt=wt/J,ft=150,Ur=ft*ft,_t=1.5,bn=_t*_t;if(yt>=bn||wt>=Ur){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Br=ze("cxttapend");t.touchData.start?(t.touchData.start.unactivate().emit(Br),t.touchData.start=null):ke.emit(Br)}}if(se&&t.touchData.cxt){var Br=ze("cxtdrag");t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Br):ke.emit(Br),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var cr=t.findNearestElement(ve[0],ve[1],!0,!0);(!t.touchData.cxtOver||cr!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit(ze("cxtdragout")),t.touchData.cxtOver=cr,cr&&cr.emit(ze("cxtdragover")))}else if(se&&z.touches[2]&&ke.boxSelectionEnabled())z.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||ke.emit(ze("boxstart")),t.touchData.selecting=!0,t.touchData.didSelect=!0,le[4]=1,!le||le.length===0||le[0]===void 0?(le[0]=(ve[0]+ve[2]+ve[4])/3,le[1]=(ve[1]+ve[3]+ve[5])/3,le[2]=(ve[0]+ve[2]+ve[4])/3+1,le[3]=(ve[1]+ve[3]+ve[5])/3+1):(le[2]=(ve[0]+ve[2]+ve[4])/3,le[3]=(ve[1]+ve[3]+ve[5])/3),t.redrawHint("select",!0),t.redraw();else if(se&&z.touches[1]&&!t.touchData.didSelect&&ke.zoomingEnabled()&&ke.panningEnabled()&&ke.userZoomingEnabled()&&ke.userPanningEnabled()){z.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var ar=t.dragData.touchDragEles;if(ar){t.redrawHint("drag",!0);for(var _r=0;_r0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},"touchmoveHandler"),!1);var Ve;t.registerBinding(e,"touchcancel",Ve=o(function(z){var se=t.touchData.start;t.touchData.capture=!1,se&&se.unactivate()},"touchcancelHandler"));var pe,Be,Ye,He;if(t.registerBinding(e,"touchend",pe=o(function(z){var se=t.touchData.start,le=t.touchData.capture;if(le)z.touches.length===0&&(t.touchData.capture=!1),z.preventDefault();else return;var ke=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var ve=t.cy,ye=ve.zoom(),Re=t.touchData.now,_e=t.touchData.earlier;if(z.touches[0]){var ze=t.projectIntoViewport(z.touches[0].clientX,z.touches[0].clientY);Re[0]=ze[0],Re[1]=ze[1]}if(z.touches[1]){var ze=t.projectIntoViewport(z.touches[1].clientX,z.touches[1].clientY);Re[2]=ze[0],Re[3]=ze[1]}if(z.touches[2]){var ze=t.projectIntoViewport(z.touches[2].clientX,z.touches[2].clientY);Re[4]=ze[0],Re[5]=ze[1]}var Ke=o(function(Ur){return{originalEvent:z,type:Ur,position:{x:Re[0],y:Re[1]}}},"makeEvent");se&&se.unactivate();var xt;if(t.touchData.cxt){if(xt=Ke("cxttapend"),se?se.emit(xt):ve.emit(xt),!t.touchData.cxtDragged){var We=Ke("cxttap");se?se.emit(We):ve.emit(We)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!z.touches[2]&&ve.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var Oe=ve.collection(t.getAllInBox(ke[0],ke[1],ke[2],ke[3]));ke[0]=void 0,ke[1]=void 0,ke[2]=void 0,ke[3]=void 0,ke[4]=0,t.redrawHint("select",!0),ve.emit(Ke("boxend"));var et=o(function(Ur){return Ur.selectable()&&!Ur.selected()},"eleWouldBeSelected");Oe.emit(Ke("box")).stdFilter(et).select().emit(Ke("boxselect")),Oe.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(se?.unactivate(),z.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!z.touches[1]){if(!z.touches[0]){if(!z.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Ue=t.dragData.touchDragEles;if(se!=null){var lt=se._private.grabbed;x(Ue),t.redrawHint("drag",!0),t.redrawHint("eles",!0),lt&&(se.emit(Ke("freeon")),Ue.emit(Ke("free")),t.dragData.didDrag&&(se.emit(Ke("dragfreeon")),Ue.emit(Ke("dragfree")))),i(se,["touchend","tapend","vmouseup","tapdragout"],z,{x:Re[0],y:Re[1]}),se.unactivate(),t.touchData.start=null}else{var Gt=t.findNearestElement(Re[0],Re[1],!0,!0);i(Gt,["touchend","tapend","vmouseup","tapdragout"],z,{x:Re[0],y:Re[1]})}var vt=t.touchData.startPosition[0]-Re[0],Lt=vt*vt,dt=t.touchData.startPosition[1]-Re[1],nt=dt*dt,bt=Lt+nt,wt=bt*ye*ye;t.touchData.singleTouchMoved||(se||ve.$(":selected").unselect(["tapunselect"]),i(se,["tap","vclick"],z,{x:Re[0],y:Re[1]}),Be=!1,z.timeStamp-He<=ve.multiClickDebounceTime()?(Ye&&clearTimeout(Ye),Be=!0,He=null,i(se,["dbltap","vdblclick"],z,{x:Re[0],y:Re[1]})):(Ye=setTimeout(function(){Be||i(se,["onetap","voneclick"],z,{x:Re[0],y:Re[1]})},ve.multiClickDebounceTime()),He=z.timeStamp)),se!=null&&!t.dragData.didDrag&&se._private.selectable&&wt"u"){var Le=[],Ie=o(function(z){return{clientX:z.clientX,clientY:z.clientY,force:1,identifier:z.pointerId,pageX:z.pageX,pageY:z.pageY,radiusX:z.width/2,radiusY:z.height/2,screenX:z.screenX,screenY:z.screenY,target:z.target}},"makeTouch"),Ne=o(function(z){return{event:z,touch:Ie(z)}},"makePointer"),Ce=o(function(z){Le.push(Ne(z))},"addPointer"),Fe=o(function(z){for(var se=0;se0)return U[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y0?m:_ue(a,s,e,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(e,r,n,i,a,s,l,u){u=u==="auto"?kf(i,a):u;var h=2*u;if(Vu(e,r,this.points,s,l,i,a-h,[0,-1],n)||Vu(e,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var f=i/2+2*n,d=a/2+2*n,p=[s-f,l-d,s-f,l,s+f,l,s+f,l-d];return!!(Hs(e,r,p)||xp(e,r,h,h,s+i/2-u,l+a/2-u,n)||xp(e,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};Uu.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",ls(3,0)),this.generateRoundPolygon("round-triangle",ls(3,0)),this.generatePolygon("rectangle",ls(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",ls(5,0)),this.generateRoundPolygon("round-pentagon",ls(5,0)),this.generatePolygon("hexagon",ls(6,0)),this.generateRoundPolygon("round-hexagon",ls(6,0)),this.generatePolygon("heptagon",ls(7,0)),this.generateRoundPolygon("round-heptagon",ls(7,0)),this.generatePolygon("octagon",ls(8,0)),this.generateRoundPolygon("round-octagon",ls(8,0));var n=new Array(20);{var i=HM(5,0),a=HM(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l=e.deqFastCost*S)break}else if(h){if(b>=e.deqCost*m||b>=e.deqAvgCost*p)break}else if(T>=e.deqNoDrawCost*OM)break;var w=e.deq(n,v,y);if(w.length>0)for(var k=0;k0&&(e.onDeqd(n,g),!h&&e.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=e.priority||pI;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},vHe=(function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Qk;Af(this,t),this.idsByKey=new zu,this.keyForId=new zu,this.cachesByLvl=new zu,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return o(t,"ElementTextureCacheLookup"),_f(t,[{key:"getIdsFor",value:o(function(r){r==null&&Kn("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new hg,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new zu,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0},"invalidate")}])})(),Hce=25,Ok=50,Wk=-4,iI=3,Nhe=7.99,xHe=8,bHe=1024,THe=1024,wHe=1024,kHe=.2,EHe=.8,SHe=10,CHe=.15,AHe=.1,_He=.9,DHe=.9,LHe=100,RHe=1,ng={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},NHe=xa({getKey:null,doesEleInvalidateKey:Qk,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Tue,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),ex=o(function(e,r){var n=this;n.renderer=e,n.onDequeues=[];var i=NHe(r);ir(n,i),n.lookup=new vHe(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),zi=ex.prototype;zi.reasons=ng;zi.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};zi.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},n=r[t]=r[t]||[];return n};zi.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new bx(function(r,n){return n.reqs-r.reqs});return e};zi.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e};zi.getElement=function(t,e,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!a.allowEdgeTxrCaching&&t.isEdge()||!a.allowParentTxrCaching&&t.isParent())return null;if(n==null&&(n=Math.ceil(gI(l*r))),n=Nhe||n>iI)return null;var h=Math.pow(2,n),f=e.h*h,d=e.w*h,p=s.eleTextBiggerThanMin(t,h);if(!this.isVisible(t,p))return null;var m=u.get(t,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(f<=Hce?g=Hce:f<=Ok?g=Ok:g=Math.ceil(f/Ok)*Ok,f>wHe||d>THe)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,d)||a.addTexture(g,d)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidthn;L--)R=a.getElement(t,e,r,L,ng.downscale);I()}else return a.queueElement(t,k.level-1),k;else{var E;if(!T&&!S&&!w)for(var D=n-1;D>=Wk;D--){var _=u.get(t,D);if(_){E=_;break}}if(b(E))return a.queueElement(t,n),E;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,t,e,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:d,height:f,scaledLabelShown:p},v.usedWidth+=Math.ceil(d+xHe),v.eleCaches.push(m),u.set(t,n,m),a.checkTextureFullness(v),m};zi.invalidateElements=function(t){for(var e=0;e=kHe*t.width&&this.retireTexture(t)};zi.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>EHe&&t.fullnessChecks>=SHe?wf(r,t):t.fullnessChecks++};zi.retireTexture=function(t){var e=this,r=t.height,n=e.getTextureQueue(r),i=this.lookup;wf(n,t),t.retired=!0;for(var a=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,mI(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),wf(i,s),n.push(s),s}};zi.queueElement=function(t,e){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(t),s=i[a];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,n.updateItem(s);else{var l={eles:t.spawn().merge(t),level:e,reqs:1,key:a};n.push(l),i[a]=l}};zi.dequeue=function(t){for(var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=[],a=e.lookup,s=0;s0;s++){var l=r.pop(),u=l.key,h=l.eles[0],f=a.hasCache(h,l.level);if(n[u]=null,f)continue;i.push(l);var d=e.getBoundingBox(h);e.getElement(h,d,t,l.level,ng.dequeue)}return i};zi.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=this.getKey(t),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=dI,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(t))};zi.onDequeue=function(t){this.onDequeues.push(t)};zi.offDequeue=function(t){wf(this.onDequeues,t)};zi.setupDequeueing=Rhe.setupDequeueing({deqRedrawThreshold:LHe,deqCost:CHe,deqAvgCost:AHe,deqNoDrawCost:_He,deqFastCost:DHe,deq:o(function(e,r,n){return e.dequeue(r,n)},"deq"),onDeqd:o(function(e,r){for(var n=0;n=IHe||r>aE)return null}n.validateLayersElesOrdering(r,t);var u=n.layersByLevel,h=Math.pow(2,r),f=u[r]=u[r]||[],d,p=n.levelIsComplete(r,t),m,g=o(function(){var I=o(function(O){if(n.validateLayersElesOrdering(O,t),n.levelIsComplete(O,t))return m=u[O],!0},"canUseAsTmpLvl"),L=o(function(O){if(!m)for(var M=r+O;rx<=M&&M<=aE&&!I(M);M+=O);},"checkLvls");L(1),L(-1);for(var E=f.length-1;E>=0;E--){var D=f[E];D.invalid&&wf(f,D)}},"checkTempLevels");if(!p)g();else return f;var y=o(function(){if(!d){d=cs();for(var I=0;IWce||D>Wce)return null;var _=E*D;if(_>VHe)return null;var O=n.makeLayer(d,r);if(L!=null){var M=f.indexOf(L)+1;f.splice(M,0,O)}else(I.insert===void 0||I.insert)&&f.unshift(O);return O},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=t.length/MHe,T=!l,S=0;S=b||!Aue(x.bb,w.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||T?n.queueLayer(x,w):n.drawEleInLayer(x,w,r,e),x.eles.push(w),A[r]=x}return m||(T?null:f)};ba.getEleLevelForLayerLevel=function(t,e){return t};ba.drawEleInLayer=function(t,e,r,n){var i=this,a=this.renderer,s=t.context,l=e.boundingBox();l.w===0||l.h===0||!e.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,e,null,null,r,UHe),a.setImgSmoothing(s,!0))};ba.levelIsComplete=function(t,e){var r=this,n=r.layersByLevel[t];if(!n||n.length===0)return!1;for(var i=0,a=0;a0||s.invalid)return!1;i+=s.eles.length}return i===e.length};ba.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var n=0;n0){e=!0;break}}return e};ba.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Gu(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,o(function(n,i,a){e.invalidateLayer(n)},"invalAssocLayers")))};ba.invalidateLayer=function(t){if(this.lastInvalidationTime=Gu(),!t.invalid){var e=t.level,r=t.eles,n=this.layersByLevel[e];wf(n,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var i=0;i3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=e._private.rscratch;if(!(a&&!e.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,t.translate(-u.x1,-u.y1));var h=a?e.pstyle("opacity").value:1,f=a?e.pstyle("line-opacity").value:1,d=e.pstyle("curve-style").value,p=e.pstyle("line-style").value,m=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,y=e.pstyle("line-outline-width").value,v=e.pstyle("line-outline-color").value,x=h*f,b=h*f,T=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;d==="straight-triangle"?(s.eleStrokeStyle(t,e,O),s.drawEdgeTrianglePath(e,t,l.allpts)):(t.lineWidth=m,t.lineCap=g,s.eleStrokeStyle(t,e,O),s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLine"),S=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(t.lineWidth=m+y,t.lineCap=g,y>0)s.colorStrokeStyle(t,v[0],v[1],v[2],O);else{t.lineCap="butt";return}d==="straight-triangle"?s.drawEdgeTrianglePath(e,t,l.allpts):(s.drawEdgePath(e,t,l.allpts,p),t.lineCap="butt")},"drawLineOutline"),w=o(function(){i&&s.drawEdgeOverlay(t,e)},"drawOverlay"),k=o(function(){i&&s.drawEdgeUnderlay(t,e)},"drawUnderlay"),A=o(function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(t,e,O)},"drawArrows"),C=o(function(){s.drawElementText(t,e,null,n)},"drawText");t.lineJoin="round";var R=e.pstyle("ghost").value==="yes";if(R){var I=e.pstyle("ghost-offset-x").pfValue,L=e.pstyle("ghost-offset-y").pfValue,E=e.pstyle("ghost-opacity").value,D=x*E;t.translate(I,L),T(D),A(D),t.translate(-I,-L)}else S();k(),T(),A(),w(),C(),r&&t.translate(u.x1,u.y1)}};Ohe=o(function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(e,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(e,"-padding")).pfValue,h=2*u,f=n.pstyle("".concat(e,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,f[0],f[1],f[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");Hu.drawEdgeOverlay=Ohe("overlay");Hu.drawEdgeUnderlay=Ohe("underlay");Hu.drawEdgePath=function(t,e,r,n){var i=t._private.rscratch,a=e,s,l=!1,u=this.usePaths(),h=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(u){var d=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===d;p?(s=e=i.pathCache,l=!0):(s=e=new Path2D,i.pathCacheKey=d,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=f;break;case"solid":a.setLineDash([]);break}if(!l&&!i.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(e))return}else if(n===!1)return;if(e.isNode()){var l=e.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(e);t.textAlign=u,t.textBaseline="bottom"}else{var h=e.element()._private.rscratch.badLine,f=e.pstyle("label"),d=e.pstyle("source-label"),p=e.pstyle("target-label");if(h||(!f||!f.value)&&(!d||!d.value)&&(!p||!p.value))return;t.textAlign="center",t.textBaseline="bottom"}var m=!r,g;r&&(g=r,t.translate(-g.x1,-g.y1)),i==null?(s.drawText(t,e,null,m,a),e.isEdge()&&(s.drawText(t,e,"source",m,a),s.drawText(t,e,"target",m,a))):s.drawText(t,e,i,m,a),r&&t.translate(g.x1,g.y1)};Cp.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,n=e.pstyle("font-style").strValue,i=e.pstyle("font-size").pfValue+"px",a=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,l=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,u=e.pstyle("text-outline-opacity").value*l,h=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=n+" "+s+" "+i+" "+a,t.lineJoin="round",this.colorFillStyle(t,h[0],h[1],h[2],l),this.colorStrokeStyle(t,f[0],f[1],f[2],u)};o(eqe,"circle");o(Kce,"roundRect");Cp.getTextAngle=function(t,e){var r,n=t._private,i=n.rscratch,a=e?e+"-":"",s=t.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=Us(i,"labelAngle",e);r=t.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};Cp.drawText=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=e._private,s=a.rscratch,l=i?e.effectiveOpacity():1;if(!(i&&(l===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=Us(s,"labelX",r),h=Us(s,"labelY",r),f,d,p=this.getLabelText(e,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(t,e,i);var m=r?r+"-":"",g=Us(s,"labelWidth",r),y=Us(s,"labelHeight",r),v=e.pstyle(m+"text-margin-x").pfValue,x=e.pstyle(m+"text-margin-y").pfValue,b=e.isEdge(),T=e.pstyle("text-halign").value,S=e.pstyle("text-valign").value;b&&(T="center",S="center"),u+=v,h+=x;var w;switch(n?w=this.getTextAngle(e,r):w=0,w!==0&&(f=u,d=h,t.translate(f,d),t.rotate(w),u=0,h=0),S){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var k=e.pstyle("text-background-opacity").value,A=e.pstyle("text-border-opacity").value,C=e.pstyle("text-border-width").pfValue,R=e.pstyle("text-background-padding").pfValue,I=e.pstyle("text-background-shape").strValue,L=I==="round-rectangle"||I==="roundrectangle",E=I==="circle",D=2;if(k>0||C>0&&A>0){var _=t.fillStyle,O=t.strokeStyle,M=t.lineWidth,P=e.pstyle("text-background-color").value,B=e.pstyle("text-border-color").value,F=e.pstyle("text-border-style").value,G=k>0,$=C>0&&A>0,U=u-R;switch(T){case"left":U-=g;break;case"center":U-=g/2;break}var j=h-y-R,te=g+2*R,Y=y+2*R;if(G&&(t.fillStyle="rgba(".concat(P[0],",").concat(P[1],",").concat(P[2],",").concat(k*l,")")),$&&(t.strokeStyle="rgba(".concat(B[0],",").concat(B[1],",").concat(B[2],",").concat(A*l,")"),t.lineWidth=C,t.setLineDash))switch(F){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=C/4,t.setLineDash([]);break;case"solid":default:t.setLineDash([]);break}if(L?(t.beginPath(),Kce(t,U,j,te,Y,D)):E?(t.beginPath(),eqe(t,U,j,te,Y)):(t.beginPath(),t.rect(U,j,te,Y)),G&&t.fill(),$&&t.stroke(),$&&F==="double"){var oe=C/2;t.beginPath(),L?Kce(t,U+oe,j+oe,te-2*oe,Y-2*oe,D):t.rect(U+oe,j+oe,te-2*oe,Y-2*oe),t.stroke()}t.fillStyle=_,t.strokeStyle=O,t.lineWidth=M,t.setLineDash&&t.setLineDash([])}var J=2*e.pstyle("text-outline-width").pfValue;if(J>0&&(t.lineWidth=J),e.pstyle("text-wrap").value==="wrap"){var ue=Us(s,"labelWrapCachedLines",r),re=Us(s,"labelLineHeight",r),ee=g/2,Z=this.getLabelJustification(e);switch(Z==="auto"||(T==="left"?Z==="left"?u+=-g:Z==="center"&&(u+=-ee):T==="center"?Z==="left"?u+=-ee:Z==="right"&&(u+=ee):T==="right"&&(Z==="center"?u+=ee:Z==="right"&&(u+=g))),S){case"top":h-=(ue.length-1)*re;break;case"center":case"bottom":h-=(ue.length-1)*re;break}for(var K=0;K0&&t.strokeText(ue[K],u,h),t.fillText(ue[K],u,h),h+=re}else J>0&&t.strokeText(p,u,h),t.fillText(p,u,h);w!==0&&(t.rotate(-w),t.translate(-f,-d))}}};Lf={};Lf.drawNode=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=e._private,f=h.rscratch,d=e.position();if(!(!At(d.x)||!At(d.y))&&!(a&&!e.visible())){var p=a?e.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=e.padding();l=e.width()+2*v,u=e.height()+2*v;var x;r&&(x=r,t.translate(-x.x1,-x.y1));for(var b=e.pstyle("background-image"),T=b.value,S=new Array(T.length),w=new Array(T.length),k=0,A=0;A0&&arguments[0]!==void 0?arguments[0]:D;s.eleFillStyle(t,e,W)},"setupShapeColor"),re=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:$;s.colorStrokeStyle(t,_[0],_[1],_[2],W)},"setupBorderColor"),ee=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Y;s.colorStrokeStyle(t,j[0],j[1],j[2],W)},"setupOutlineColor"),Z=o(function(W,he,z,se){var le=s.nodePathCache=s.nodePathCache||[],ke=bue(z==="polygon"?z+","+se.join(","):z,""+he,""+W,""+J),ve=le[ke],ye,Re=!1;return ve!=null?(ye=ve,Re=!0,f.pathCache=ye):(ye=new Path2D,le[ke]=f.pathCache=ye),{path:ye,cacheHit:Re}},"getPath"),K=e.pstyle("shape").strValue,ae=e.pstyle("shape-polygon-points").pfValue;if(m){t.translate(d.x,d.y);var Q=Z(l,u,K,ae);g=Q.path,y=Q.cacheHit}var de=o(function(){if(!y){var W=d;m&&(W={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(g||t,W.x,W.y,l,u,J,f)}m?t.fill(g):t.fill()},"drawShape"),ne=o(function(){for(var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,z=h.backgrounding,se=0,le=0;le0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(e)&&(s.drawPie(t,e,he),W&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,J,f)))},"drawPie"),q=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasStripe(e)&&(t.save(),m?t.clip(f.pathCache):(s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,J,f),t.clip()),s.drawStripe(t,e,he),t.restore(),W&&(m||s.nodeShapes[s.getNodeShape(e)].draw(t,d.x,d.y,l,u,J,f)))},"drawStripe"),Ve=o(function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=(L>0?L:-L)*W,z=L>0?0:255;L!==0&&(s.colorFillStyle(t,z,z,z,he),m?t.fill(g):t.fill())},"darken"),pe=o(function(){if(E>0){if(t.lineWidth=E,t.lineCap=P,t.lineJoin=M,t.setLineDash)switch(O){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(F),t.lineDashOffset=G;break;case"solid":case"double":t.setLineDash([]);break}if(B!=="center"){if(t.save(),t.lineWidth*=2,B==="inside")m?t.clip(g):t.clip();else{var W=new Path2D;W.rect(-l/2-E,-u/2-E,l+2*E,u+2*E),W.addPath(g),t.clip(W,"evenodd")}m?t.stroke(g):t.stroke(),t.restore()}else m?t.stroke(g):t.stroke();if(O==="double"){t.lineWidth=E/3;var he=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",m?t.stroke(g):t.stroke(),t.globalCompositeOperation=he}t.setLineDash&&t.setLineDash([])}},"drawBorder"),Be=o(function(){if(U>0){if(t.lineWidth=U,t.lineCap="butt",t.setLineDash)switch(te){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var W=d;m&&(W={x:0,y:0});var he=s.getNodeShape(e),z=E;B==="inside"&&(z=0),B==="outside"&&(z*=2);var se=(l+z+(U+oe))/l,le=(u+z+(U+oe))/u,ke=l*se,ve=u*le,ye=s.nodeShapes[he].points,Re;if(m){var _e=Z(ke,ve,he,ye);Re=_e.path}if(he==="ellipse")s.drawEllipsePath(Re||t,W.x,W.y,ke,ve);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(he)){var ze=0,Ke=0,xt=0;he==="round-diamond"?ze=(z+oe+U)*1.4:he==="round-heptagon"?(ze=(z+oe+U)*1.075,xt=-(z/2+oe+U)/35):he==="round-hexagon"?ze=(z+oe+U)*1.12:he==="round-pentagon"?(ze=(z+oe+U)*1.13,xt=-(z/2+oe+U)/15):he==="round-tag"?(ze=(z+oe+U)*1.12,Ke=(z/2+U+oe)*.07):he==="round-triangle"&&(ze=(z+oe+U)*(Math.PI/2),xt=-(z+oe/2+U)/Math.PI),ze!==0&&(se=(l+ze)/l,ke=l*se,["round-hexagon","round-tag"].includes(he)||(le=(u+ze)/u,ve=u*le)),J=J==="auto"?Lue(ke,ve):J;for(var We=ke/2,Oe=ve/2,et=J+(z+U+oe)/2,Ue=new Array(ye.length/2),lt=new Array(ye.length/2),Gt=0;Gt0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,f[0],f[1],f[2],h),l.nodeShapes[d].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");Lf.drawNodeOverlay=Phe("overlay");Lf.drawNodeUnderlay=Phe("underlay");Lf.hasPie=function(t){return t=t[0],t._private.hasPie};Lf.hasStripe=function(t){return t=t[0],t._private.hasStripe};Lf.drawPie=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=e.pstyle("pie-size"),s=e.pstyle("pie-hole"),l=e.pstyle("pie-start-angle").pfValue,u=n.x,h=n.y,f=e.width(),d=e.height(),p=Math.min(f,d)/2,m,g=0,y=this.usePaths();if(y&&(u=0,h=0),a.units==="%"?p=p*a.pfValue:a.pfValue!==void 0&&(p=a.pfValue/2),s.units==="%"?m=p*s.pfValue:s.pfValue!==void 0&&(m=s.pfValue/2),!(m>=p))for(var v=1;v<=i.pieBackgroundN;v++){var x=e.pstyle("pie-"+v+"-background-size").value,b=e.pstyle("pie-"+v+"-background-color").value,T=e.pstyle("pie-"+v+"-background-opacity").value*r,S=x/100;S+g>1&&(S=1-g);var w=1.5*Math.PI+2*Math.PI*g;w+=l;var k=2*Math.PI*S,A=w+k;x===0||g>=1||g+S>1||(m===0?(t.beginPath(),t.moveTo(u,h),t.arc(u,h,p,w,A),t.closePath()):(t.beginPath(),t.arc(u,h,p,w,A),t.arc(u,h,m,A,w,!0),t.closePath()),this.colorFillStyle(t,b[0],b[1],b[2],T),t.fill(),g+=S)}};Lf.drawStripe=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=n.x,s=n.y,l=e.width(),u=e.height(),h=0,f=this.usePaths();t.save();var d=e.pstyle("stripe-direction").value,p=e.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":t.rotate(-Math.PI/2);break}var m=l,g=u;p.units==="%"?(m=m*p.pfValue,g=g*p.pfValue):p.pfValue!==void 0&&(m=p.pfValue,g=p.pfValue),f&&(a=0,s=0),s-=m/2,a-=g/2;for(var y=1;y<=i.stripeBackgroundN;y++){var v=e.pstyle("stripe-"+y+"-background-size").value,x=e.pstyle("stripe-"+y+"-background-color").value,b=e.pstyle("stripe-"+y+"-background-opacity").value*r,T=v/100;T+h>1&&(T=1-h),!(v===0||h>=1||h+T>1)&&(t.beginPath(),t.rect(a,s+g*h,m,g*T),t.closePath(),this.colorFillStyle(t,x[0],x[1],x[2],b),t.fill(),h+=T)}t.restore()};us={},tqe=100;us.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};us.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;ie.minMbLowQualFrames&&(e.motionBlurPxRatio=e.mbPxRBlurry)),e.clearingMotionBlur&&(e.motionBlurPxRatio=1),e.textureDrawLastFrame&&!d&&(f[e.NODE]=!0,f[e.SELECT_BOX]=!0);var b=r.style(),T=r.zoom(),S=s!==void 0?s:T,w=r.pan(),k={x:w.x,y:w.y},A={zoom:T,pan:{x:w.x,y:w.y}},C=e.prevViewport,R=C===void 0||A.zoom!==C.zoom||A.pan.x!==C.pan.x||A.pan.y!==C.pan.y;!R&&!(y&&!g)&&(e.motionBlurPxRatio=1),l&&(k=l),S*=u,k.x*=u,k.y*=u;var I=e.getCachedZSortedEles();function L(re,ee,Z,K,ae){var Q=re.globalCompositeOperation;re.globalCompositeOperation="destination-out",e.colorFillStyle(re,255,255,255,e.motionBlurTransparency),re.fillRect(ee,Z,K,ae),re.globalCompositeOperation=Q}o(L,"mbclear");function E(re,ee){var Z,K,ae,Q;!e.clearingMotionBlur&&(re===h.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]||re===h.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])?(Z={x:w.x*m,y:w.y*m},K=T*m,ae=e.canvasWidth*m,Q=e.canvasHeight*m):(Z=k,K=S,ae=e.canvasWidth,Q=e.canvasHeight),re.setTransform(1,0,0,1,0,0),ee==="motionBlur"?L(re,0,0,ae,Q):!n&&(ee===void 0||ee)&&re.clearRect(0,0,ae,Q),i||(re.translate(Z.x,Z.y),re.scale(K,K)),l&&re.translate(l.x,l.y),s&&re.scale(s,s)}if(o(E,"setContextTransform"),d||(e.textureDrawLastFrame=!1),d){if(e.textureDrawLastFrame=!0,!e.textureCache){e.textureCache={},e.textureCache.bb=r.mutableElements().boundingBox(),e.textureCache.texture=e.data.bufferCanvases[e.TEXTURE_BUFFER];var D=e.data.bufferContexts[e.TEXTURE_BUFFER];D.setTransform(1,0,0,1,0,0),D.clearRect(0,0,e.canvasWidth*e.textureMult,e.canvasHeight*e.textureMult),e.render({forcedContext:D,drawOnlyNodeLayer:!0,forcedPxRatio:u*e.textureMult});var A=e.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:e.canvasWidth,height:e.canvasHeight};A.mpan={x:(0-A.pan.x)/A.zoom,y:(0-A.pan.y)/A.zoom}}f[e.DRAG]=!1,f[e.NODE]=!1;var _=h.contexts[e.NODE],O=e.textureCache.texture,A=e.textureCache.viewport;_.setTransform(1,0,0,1,0,0),p?L(_,0,0,A.width,A.height):_.clearRect(0,0,A.width,A.height);var M=b.core("outside-texture-bg-color").value,P=b.core("outside-texture-bg-opacity").value;e.colorFillStyle(_,M[0],M[1],M[2],P),_.fillRect(0,0,A.width,A.height);var T=r.zoom();E(_,!1),_.clearRect(A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u),_.drawImage(O,A.mpan.x,A.mpan.y,A.width/A.zoom/u,A.height/A.zoom/u)}else e.textureOnViewport&&!n&&(e.textureCache=null);var B=r.extent(),F=e.pinching||e.hoverData.dragging||e.swipePanning||e.data.wheelZooming||e.hoverData.draggingEles||e.cy.animated(),G=e.hideEdgesOnViewport&&F,$=[];if($[e.NODE]=!f[e.NODE]&&p&&!e.clearedForMotionBlur[e.NODE]||e.clearingMotionBlur,$[e.NODE]&&(e.clearedForMotionBlur[e.NODE]=!0),$[e.DRAG]=!f[e.DRAG]&&p&&!e.clearedForMotionBlur[e.DRAG]||e.clearingMotionBlur,$[e.DRAG]&&(e.clearedForMotionBlur[e.DRAG]=!0),f[e.NODE]||i||a||$[e.NODE]){var U=p&&!$[e.NODE]&&m!==1,_=n||(U?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE]:h.contexts[e.NODE]),j=p&&!U?"motionBlur":void 0;E(_,j),G?e.drawCachedNodes(_,I.nondrag,u,B):e.drawLayeredElements(_,I.nondrag,u,B),e.debug&&e.drawDebugPoints(_,I.nondrag),!i&&!p&&(f[e.NODE]=!1)}if(!a&&(f[e.DRAG]||i||$[e.DRAG])){var U=p&&!$[e.DRAG]&&m!==1,_=n||(U?e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG]:h.contexts[e.DRAG]);E(_,p&&!U?"motionBlur":void 0),G?e.drawCachedNodes(_,I.drag,u,B):e.drawCachedElements(_,I.drag,u,B),e.debug&&e.drawDebugPoints(_,I.drag),!i&&!p&&(f[e.DRAG]=!1)}if(this.drawSelectionRectangle(t,E),p&&m!==1){var te=h.contexts[e.NODE],Y=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],oe=h.contexts[e.DRAG],J=e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],ue=o(function(ee,Z,K){ee.setTransform(1,0,0,1,0,0),K||!x?ee.clearRect(0,0,e.canvasWidth,e.canvasHeight):L(ee,0,0,e.canvasWidth,e.canvasHeight);var ae=m;ee.drawImage(Z,0,0,e.canvasWidth*ae,e.canvasHeight*ae,0,0,e.canvasWidth,e.canvasHeight)},"drawMotionBlur");(f[e.NODE]||$[e.NODE])&&(ue(te,Y,$[e.NODE]),f[e.NODE]=!1),(f[e.DRAG]||$[e.DRAG])&&(ue(oe,J,$[e.DRAG]),f[e.DRAG]=!1)}e.prevViewport=A,e.clearingMotionBlur&&(e.clearingMotionBlur=!1,e.motionBlurCleared=!0,e.motionBlur=!0),p&&(e.motionBlurTimeout=setTimeout(function(){e.motionBlurTimeout=null,e.clearedForMotionBlur[e.NODE]=!1,e.clearedForMotionBlur[e.DRAG]=!1,e.motionBlur=!1,e.clearingMotionBlur=!d,e.mbFrames=0,f[e.NODE]=!0,f[e.DRAG]=!0,e.redraw()},tqe)),n||r.emit("render")};us.drawSelectionRectangle=function(t,e){var r=this,n=r.cy,i=r.data,a=n.style(),s=t.drawOnlyNodeLayer,l=t.drawAllLayers,u=i.canvasNeedsRedraw,h=t.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var f=h||i.contexts[r.SELECT_BOX];if(e(f),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var d=r.cy.zoom(),p=a.core("selection-box-border-width").value/d;f.lineWidth=p,f.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",f.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(f.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",f.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(i.bgActivePosistion&&!r.hoverData.selecting){var d=r.cy.zoom(),m=i.bgActivePosistion;f.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",f.beginPath(),f.arc(m.x,m.y,a.core("active-bg-size").pfValue/d,0,2*Math.PI),f.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(f.setTransform(1,0,0,1,0,0),f.fillStyle="rgba(255, 0, 0, 0.75)",f.strokeStyle="rgba(255, 0, 0, 0.75)",f.font="30px Arial",!j2){var x=f.measureText(v);j2=x.actualBoundingBoxAscent}f.fillText(v,0,j2);var b=60;f.strokeRect(0,j2+10,250,20),f.fillRect(0,j2+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(Qce,"compileShader");o(rqe,"createProgram");o(nqe,"createTextureCanvas");o(MI,"getEffectivePanZoom");o(iqe,"getEffectiveZoom");o(aqe,"modelToRenderedPosition");o(sqe,"isSimpleShape");o(oqe,"arrayEqual");o(dp,"toWebGLColor");o(Zm,"indexToVec4");o(lqe,"vec4ToIndex");o(cqe,"createTexture");o(Bhe,"getTypeInfo");o(Fhe,"createTypedArray");o(uqe,"createTypedArrayView");o(hqe,"createBufferStaticDraw");o(Mc,"createBufferDynamicDraw");o(fqe,"create3x3MatrixBufferDynamicDraw");o(dqe,"createPickingFrameBuffer");Zce=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});o(BM,"create");o(Jce,"identity");o(pqe,"multiply");o(Yk,"translate");o(eue,"rotate");o(aI,"scale");o(mqe,"projection");gqe=(function(){function t(e,r,n,i){Af(this,t),this.debugID=Math.floor(Math.random()*1e4),this.r=e,this.texSize=r,this.texRows=n,this.texHeight=Math.floor(r/n),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(e,r,r),this.scratch=i(e,r,this.texHeight,"scratch")}return o(t,"Atlas"),_f(t,[{key:"lock",value:o(function(){this.locked=!0},"lock")},{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var n=r.w,i=r.h,a=this.texHeight,s=this.texSize,l=a/i,u=n*l,h=i*l;return u>s&&(l=s/n,u=n*l,h=i*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,n,i){var a=this;if(this.locked)throw new Error("can't draw, atlas is locked");var s=this.texSize,l=this.texRows,u=this.texHeight,h=this.getScale(n),f=h.scale,d=h.texW,p=h.texH,m=o(function(T,S){if(i&&S){var w=S.context,k=T.x,A=T.row,C=k,R=u*A;w.save(),w.translate(C,R),w.scale(f,f),i(w,n),w.restore()}},"drawAt"),g=[null,null],y=o(function(){m(a.freePointer,a.canvas),g[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:d,h:p},g[1]={x:a.freePointer.x+d,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=d,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var T=a.scratch,S=a.canvas;T.clear(),m({x:0,row:0},T);var w=s-a.freePointer.x,k=d-w,A=u;{var C=a.freePointer.x,R=a.freePointer.row*u,I=w;S.context.drawImage(T,0,0,I,A,C,R,I,A),g[0]={x:C,y:R,w:I,h:p}}{var L=w,E=(a.freePointer.row+1)*u,D=k;S&&S.context.drawImage(T,L,0,D,A,0,E,D,A),g[1]={x:0,y:E,w:D,h:p}}a.freePointer.x=k,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+d<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,g),this.needsBuffer=!0,g},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){if(this.locked)return!1;var n=this.texSize,i=this.texRows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>n?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},a=i.forceRedraw,s=a===void 0?!1:a,l=i.filterEle,u=l===void 0?function(){return!0}:l,h=i.filterType,f=h===void 0?function(){return!0}:h,d=!1,p=!1,m=qs(r),g;try{for(m.s();!(g=m.n()).done;){var y=g.value;if(u(y)){var v=qs(this.renderTypes.values()),x;try{var b=o(function(){var S=x.value,w=S.type;if(f(w)){var k=n.collections.get(S.collection),A=S.getKey(y),C=Array.isArray(A)?A:[A];if(s)C.forEach(function(E){return k.markKeyForGC(E)}),p=!0;else{var R=S.getID?S.getID(y):y.id(),I=n._key(w,R),L=n.typeAndIdToKey.get(I);L!==void 0&&!oqe(C,L)&&(d=!0,n.typeAndIdToKey.delete(I),L.forEach(function(E){return k.markKeyForGC(E)}))}}},"_loop2");for(v.s();!(x=v.n()).done;)b()}catch(T){v.e(T)}finally{v.f()}}}}catch(T){m.e(T)}finally{m.f()}return p&&(this.gc(),d=!1),d},"invalidate")},{key:"gc",value:o(function(){var r=qs(this.collections.values()),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;i.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"getOrCreateAtlas",value:o(function(r,n,i,a){var s=this.renderTypes.get(n),l=this.collections.get(s.collection),u=!1,h=l.draw(a,i,function(p){s.drawClipped?(p.save(),p.beginPath(),p.rect(0,0,i.w,i.h),p.clip(),s.drawElement(p,r,i,!0,!0),p.restore()):s.drawElement(p,r,i,!0,!0),u=!0});if(u){var f=s.getID?s.getID(r):r.id(),d=this._key(n,f);this.typeAndIdToKey.has(d)?this.typeAndIdToKey.get(d).push(a):this.typeAndIdToKey.set(d,[a])}return h},"getOrCreateAtlas")},{key:"getAtlasInfo",value:o(function(r,n){var i=this,a=this.renderTypes.get(n),s=a.getKey(r),l=Array.isArray(s)?s:[s];return l.map(function(u){var h=a.getBoundingBox(r,u),f=i.getOrCreateAtlas(r,n,h,u),d=f.getOffsets(u),p=_i(d,2),m=p[0],g=p[1];return{atlas:f,tex:m,tex1:m,tex2:g,bb:h}})},"getAtlasInfo")},{key:"getDebugInfo",value:o(function(){var r=[],n=qs(this.collections),i;try{for(n.s();!(i=n.n()).done;){var a=_i(i.value,2),s=a[0],l=a[1],u=l.getCounts(),h=u.keyCount,f=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:f})}}catch(d){n.e(d)}finally{n.f()}return r},"getDebugInfo")}])})(),bqe=(function(){function t(e){Af(this,t),this.globalOptions=e,this.atlasSize=e.webglTexSize,this.maxAtlasesPerBatch=e.webglTexPerBatch,this.batchAtlases=[]}return o(t,"AtlasBatchManager"),_f(t,[{key:"getMaxAtlasesPerBatch",value:o(function(){return this.maxAtlasesPerBatch},"getMaxAtlasesPerBatch")},{key:"getAtlasSize",value:o(function(){return this.atlasSize},"getAtlasSize")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,n){return n})},"getIndexArray")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"canAddToCurrentBatch",value:o(function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0},"canAddToCurrentBatch")},{key:"getAtlasIndexForBatch",value:o(function(r){var n=this.batchAtlases.indexOf(r);if(n<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(r),n=this.batchAtlases.length-1}return n},"getAtlasIndexForBatch")}])})(),Tqe=` - float circleSD(vec2 p, float r) { - return distance(vec2(0), p) - r; // signed distance - } -`,wqe=` - float rectangleSD(vec2 p, vec2 b) { - vec2 d = abs(p)-b; - return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0); - } -`,kqe=` - float roundRectangleSD(vec2 p, vec2 b, vec4 cr) { - cr.xy = (p.x > 0.0) ? cr.xy : cr.zw; - cr.x = (p.y > 0.0) ? cr.x : cr.y; - vec2 q = abs(p) - b + cr.x; - return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x; - } -`,Eqe=` - float ellipseSD(vec2 p, vec2 ab) { - p = abs( p ); // symmetry - - // find root with Newton solver - vec2 q = ab*(p-ab); - float w = (q.x1.0) ? d : -d; - } -`,nx={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},sE={IGNORE:1,USE_BB:2},FM=0,tue=1,rue=2,$M=3,Jm=4,Pk=5,K2=6,Q2=7,Sqe=(function(){function t(e,r,n){Af(this,t),this.r=e,this.gl=r,this.maxInstances=n.webglBatchSize,this.atlasSize=n.webglTexSize,this.bgColor=n.bgColor,this.debug=n.webglDebug,this.batchDebugInfo=[],n.enableWrapping=!0,n.createTextureCanvas=nqe,this.atlasManager=new xqe(e,n),this.batchManager=new bqe(n),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(nx.SCREEN),this.pickingProgram=this._createShaderProgram(nx.PICKING),this.vao=this._createVAO()}return o(t,"ElementDrawingWebGL"),_f(t,[{key:"addAtlasCollection",value:o(function(r,n){this.atlasManager.addAtlasCollection(r,n)},"addAtlasCollection")},{key:"addTextureAtlasRenderType",value:o(function(r,n){this.atlasManager.addRenderType(r,n)},"addTextureAtlasRenderType")},{key:"addSimpleShapeRenderType",value:o(function(r,n){this.simpleShapeOptions.set(r,n)},"addSimpleShapeRenderType")},{key:"invalidate",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.type,a=this.atlasManager;return i?a.invalidate(r,{filterType:o(function(l){return l===i},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"_createShaderProgram",value:o(function(r){var n=this.gl,i=`#version 300 es - precision highp float; - - uniform mat3 uPanZoomMatrix; - uniform int uAtlasSize; - - // instanced - in vec2 aPosition; // a vertex from the unit square - - in mat3 aTransform; // used to transform verticies, eg into a bounding box - in int aVertType; // the type of thing we are rendering - - // the z-index that is output when using picking mode - in vec4 aIndex; - - // For textures - in int aAtlasId; // which shader unit/atlas to use - in vec4 aTex; // x/y/w/h of texture in atlas - - // for edges - in vec4 aPointAPointB; - in vec4 aPointCPointD; - in vec2 aLineWidth; // also used for node border width - - // simple shapes - in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left] - in vec4 aColor; // also used for edges - in vec4 aBorderColor; // aLineWidth is used for border width - - // output values passed to the fragment shader - out vec2 vTexCoord; - out vec4 vColor; - out vec2 vPosition; - // flat values are not interpolated - flat out int vAtlasId; - flat out int vVertType; - flat out vec2 vTopRight; - flat out vec2 vBotLeft; - flat out vec4 vCornerRadius; - flat out vec4 vBorderColor; - flat out vec2 vBorderWidth; - flat out vec4 vIndex; - - void main(void) { - int vid = gl_VertexID; - vec2 position = aPosition; // TODO make this a vec3, simplifies some code below - - if(aVertType == `.concat(FM,`) { - float texX = aTex.x; // texture coordinates - float texY = aTex.y; - float texW = aTex.z; - float texH = aTex.w; - - if(vid == 1 || vid == 2 || vid == 4) { - texX += texW; - } - if(vid == 2 || vid == 4 || vid == 5) { - texY += texH; - } - - float d = float(uAtlasSize); - vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 - - gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); - } - else if(aVertType == `).concat(Jm," || aVertType == ").concat(Q2,` - || aVertType == `).concat(Pk," || aVertType == ").concat(K2,`) { // simple shapes - - // the bounding box is needed by the fragment shader - vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat - vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat - vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated - - // calculations are done in the fragment shader, just pass these along - vColor = aColor; - vCornerRadius = aCornerRadius; - vBorderColor = aBorderColor; - vBorderWidth = aLineWidth; - - gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); - } - else if(aVertType == `).concat(tue,`) { - vec2 source = aPointAPointB.xy; - vec2 target = aPointAPointB.zw; - - // adjust the geometry so that the line is centered on the edge - position.y = position.y - 0.5; - - // stretch the unit square into a long skinny rectangle - vec2 xBasis = target - source; - vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); - vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y; - - gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); - vColor = aColor; - } - else if(aVertType == `).concat(rue,`) { - vec2 pointA = aPointAPointB.xy; - vec2 pointB = aPointAPointB.zw; - vec2 pointC = aPointCPointD.xy; - vec2 pointD = aPointCPointD.zw; - - // adjust the geometry so that the line is centered on the edge - position.y = position.y - 0.5; - - vec2 p0, p1, p2, pos; - if(position.x == 0.0) { // The left side of the unit square - p0 = pointA; - p1 = pointB; - p2 = pointC; - pos = position; - } else { // The right side of the unit square, use same approach but flip the geometry upside down - p0 = pointD; - p1 = pointC; - p2 = pointB; - pos = vec2(0.0, -position.y); - } - - vec2 p01 = p1 - p0; - vec2 p12 = p2 - p1; - vec2 p21 = p1 - p2; - - // Find the normal vector. - vec2 tangent = normalize(normalize(p12) + normalize(p01)); - vec2 normal = vec2(-tangent.y, tangent.x); - - // Find the vector perpendicular to p0 -> p1. - vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); - - // Determine the bend direction. - float sigma = sign(dot(p01 + p21, normal)); - float width = aLineWidth[0]; - - 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); - } - - vColor = aColor; - } - else if(aVertType == `).concat($M,` && 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); - - gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); - vColor = aColor; - } - else { - gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space - } - - vAtlasId = aAtlasId; - vVertType = aVertType; - vIndex = aIndex; - } - `),a=this.batchManager.getIndexArray(),s=`#version 300 es - precision highp float; - - // declare texture unit for each texture atlas in the batch - `.concat(a.map(function(h){return"uniform sampler2D uTexture".concat(h,";")}).join(` - `),` - - uniform vec4 uBGColor; - uniform float uZoom; - - in vec2 vTexCoord; - in vec4 vColor; - in vec2 vPosition; // model coordinates - - flat in int vAtlasId; - flat in vec4 vIndex; - flat in int vVertType; - flat in vec2 vTopRight; - flat in vec2 vBotLeft; - flat in vec4 vCornerRadius; - flat in vec4 vBorderColor; - flat in vec2 vBorderWidth; - - out vec4 outColor; - - `).concat(Tqe,` - `).concat(wqe,` - `).concat(kqe,` - `).concat(Eqe,` - - vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha - return vec4( - top.rgb + (bot.rgb * (1.0 - top.a)), - top.a + (bot.a * (1.0 - top.a)) - ); - } - - vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance - // scale to the zoom level so that borders don't look blurry when zoomed in - // note 1.5 is an aribitrary value chosen because it looks good - return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); - } - - void main(void) { - if(vVertType == `).concat(FM,`) { - // look up the texel from the texture unit - `).concat(a.map(function(h){return"if(vAtlasId == ".concat(h,") outColor = texture(uTexture").concat(h,", vTexCoord);")}).join(` - else `),` - } - else if(vVertType == `).concat($M,`) { - // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out'; - outColor = blend(vColor, uBGColor); - outColor.a = 1.0; // make opaque, masks out line under arrow - } - else if(vVertType == `).concat(Jm,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border - outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done - } - else if(vVertType == `).concat(Jm," || vVertType == ").concat(Q2,` - || vVertType == `).concat(Pk," || vVertType == ").concat(K2,`) { // use SDF - - float outerBorder = vBorderWidth[0]; - float innerBorder = vBorderWidth[1]; - float borderPadding = outerBorder * 2.0; - float w = vTopRight.x - vBotLeft.x - borderPadding; - float h = vTopRight.y - vBotLeft.y - borderPadding; - vec2 b = vec2(w/2.0, h/2.0); // half width, half height - vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center - - float d; // signed distance - if(vVertType == `).concat(Jm,`) { - d = rectangleSD(p, b); - } else if(vVertType == `).concat(Q2,` && w == h) { - d = circleSD(p, b.x); // faster than ellipse - } else if(vVertType == `).concat(Q2,`) { - d = ellipseSD(p, b); - } else { - d = roundRectangleSD(p, b, vCornerRadius.wzyx); - } - - // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling - // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box - if(d > 0.0) { - if(d > outerBorder) { - discard; - } else { - outColor = distInterp(vBorderColor, vec4(0), d - outerBorder); - } - } else { - if(d > innerBorder) { - vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor; - vec4 innerBorderColor = blend(vBorderColor, vColor); - outColor = distInterp(innerBorderColor, outerColor, d); - } - else { - vec4 outerColor; - if(innerBorder == 0.0 && outerBorder == 0.0) { - outerColor = vec4(0); - } else if(innerBorder == 0.0) { - outerColor = vBorderColor; - } else { - outerColor = blend(vBorderColor, vColor); - } - outColor = distInterp(vColor, outerColor, d - innerBorder); - } - } - } - else { - outColor = vColor; - } - - `).concat(r.picking?`if(outColor.a == 0.0) discard; - else outColor = vIndex;`:"",` - } - `),l=rqe(n,i,s);l.aPosition=n.getAttribLocation(l,"aPosition"),l.aIndex=n.getAttribLocation(l,"aIndex"),l.aVertType=n.getAttribLocation(l,"aVertType"),l.aTransform=n.getAttribLocation(l,"aTransform"),l.aAtlasId=n.getAttribLocation(l,"aAtlasId"),l.aTex=n.getAttribLocation(l,"aTex"),l.aPointAPointB=n.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=n.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=n.getAttribLocation(l,"aLineWidth"),l.aColor=n.getAttribLocation(l,"aColor"),l.aCornerRadius=n.getAttribLocation(l,"aCornerRadius"),l.aBorderColor=n.getAttribLocation(l,"aBorderColor"),l.uPanZoomMatrix=n.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=n.getUniformLocation(l,"uAtlasSize"),l.uBGColor=n.getUniformLocation(l,"uBGColor"),l.uZoom=n.getUniformLocation(l,"uZoom"),l.uTextures=[];for(var u=0;u1&&arguments[1]!==void 0?arguments[1]:nx.SCREEN;this.panZoomMatrix=r,this.renderTarget=n,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.batchManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"_isVisible",value:o(function(r,n){return r.visible()?n&&n.isVisible?n.isVisible(r):!0:!1},"_isVisible")},{key:"drawTexture",value:o(function(r,n,i){var a=this.atlasManager,s=this.batchManager,l=a.getRenderTypeOpts(i);if(this._isVisible(r,l)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&l.getTexPickingMode){var u=l.getTexPickingMode(r);if(u===sE.IGNORE)return;if(u==sE.USE_BB){this.drawPickingRectangle(r,n,i);return}}var h=a.getAtlasInfo(r,i),f=qs(h),d;try{for(f.s();!(d=f.n()).done;){var p=d.value,m=p.atlas,g=p.tex1,y=p.tex2;s.canAddToCurrentBatch(m)||this.endBatch();for(var v=s.getAtlasIndexForBatch(m),x=0,b=[[g,!0],[y,!1]];x=this.maxInstances&&this.endBatch()}}}}catch(L){f.e(L)}finally{f.f()}}},"drawTexture")},{key:"setTransformMatrix",value:o(function(r,n,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,l=0;if(i.shapeProps&&i.shapeProps.padding&&(l=r.pstyle(i.shapeProps.padding).pfValue),a){var u=a.bb,h=a.tex1,f=a.tex2,d=h.w/(h.w+f.w);s||(d=1-d);var p=this._getAdjustedBB(u,l,s,d);this._applyTransformMatrix(n,p,i,r)}else{var m=i.getBoundingBox(r),g=this._getAdjustedBB(m,l,!0,1);this._applyTransformMatrix(n,g,i,r)}},"setTransformMatrix")},{key:"_applyTransformMatrix",value:o(function(r,n,i,a){var s,l;Jce(r);var u=i.getRotation?i.getRotation(a):0;if(u!==0){var h=i.getRotationPoint(a),f=h.x,d=h.y;Yk(r,r,[f,d]),eue(r,r,u);var p=i.getRotationOffset(a);s=p.x+(n.xOffset||0),l=p.y+(n.yOffset||0)}else s=n.x1,l=n.y1;Yk(r,r,[s,l]),aI(r,r,[n.w,n.h])},"_applyTransformMatrix")},{key:"_getAdjustedBB",value:o(function(r,n,i,a){var s=r.x1,l=r.y1,u=r.w,h=r.h,f=r.yOffset;n&&(s-=n,l-=n,u+=2*n,h+=2*n);var d=0,p=u*a;return i&&a<1?u=p:!i&&a<1&&(d=u-p,s+=d,u=p),{x1:s,y1:l,w:u,h,xOffset:d,yOffset:f}},"_getAdjustedBB")},{key:"drawPickingRectangle",value:o(function(r,n,i){var a=this.atlasManager.getRenderTypeOpts(i),s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=Jm;var l=this.indexBuffer.getView(s);Zm(n,l);var u=this.colorBuffer.getView(s);dp([0,0,0],1,u);var h=this.transformBuffer.getMatrixView(s);this.setTransformMatrix(r,h,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()},"drawPickingRectangle")},{key:"drawNode",value:o(function(r,n,i){var a=this.simpleShapeOptions.get(i);if(this._isVisible(r,a)){var s=a.shapeProps,l=this._getVertTypeForShape(r,s.shape);if(l===void 0||a.isSimple&&!a.isSimple(r)){this.drawTexture(r,n,i);return}var u=this.instanceCount;if(this.vertTypeBuffer.getView(u)[0]=l,l===Pk||l===K2){var h=a.getBoundingBox(r),f=this._getCornerRadius(r,s.radius,h),d=this.cornerRadiusBuffer.getView(u);d[0]=f,d[1]=f,d[2]=f,d[3]=f,l===K2&&(d[0]=0,d[2]=0)}var p=this.indexBuffer.getView(u);Zm(n,p);var m=r.pstyle(s.color).value,g=r.pstyle(s.opacity).value,y=this.colorBuffer.getView(u);dp(m,g,y);var v=this.lineWidthBuffer.getView(u);if(v[0]=0,v[1]=0,s.border){var x=r.pstyle("border-width").value;if(x>0){var b=r.pstyle("border-color").value,T=r.pstyle("border-opacity").value,S=this.borderColorBuffer.getView(u);dp(b,T,S);var w=r.pstyle("border-position").value;if(w==="inside")v[0]=0,v[1]=-x;else if(w==="outside")v[0]=x,v[1]=0;else{var k=x/2;v[0]=k,v[1]=-k}}}var A=this.transformBuffer.getMatrixView(u);this.setTransformMatrix(r,A,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},"drawNode")},{key:"_getVertTypeForShape",value:o(function(r,n){var i=r.pstyle(n).value;switch(i){case"rectangle":return Jm;case"ellipse":return Q2;case"roundrectangle":case"round-rectangle":return Pk;case"bottom-round-rectangle":return K2;default:return}},"_getVertTypeForShape")},{key:"_getCornerRadius",value:o(function(r,n,i){var a=i.w,s=i.h;if(r.pstyle(n).value==="auto")return kf(a,s);var l=r.pstyle(n).pfValue,u=a/2,h=s/2;return Math.min(l,h,u)},"_getCornerRadius")},{key:"drawEdgeArrow",value:o(function(r,n,i){if(r.visible()){var a=r._private.rscratch,s,l,u;if(i==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(i+"-arrow-shape").value;if(h!=="none"){var f=r.pstyle(i+"-arrow-color").value,d=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=d*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.instanceCount,b=this.transformBuffer.getMatrixView(x);Jce(b),Yk(b,b,[s,l]),aI(b,b,[v,v]),eue(b,b,u),this.vertTypeBuffer.getView(x)[0]=$M;var T=this.indexBuffer.getView(x);Zm(n,T);var S=this.colorBuffer.getView(x);dp(f,m,S),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,n){if(r.visible()){var i=this._getEdgePoints(r);if(i){var a=r.pstyle("opacity").value,s=r.pstyle("line-opacity").value,l=r.pstyle("width").pfValue,u=r.pstyle("line-color").value,h=a*s;if(i.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),i.length==4){var f=this.instanceCount;this.vertTypeBuffer.getView(f)[0]=tue;var d=this.indexBuffer.getView(f);Zm(n,d);var p=this.colorBuffer.getView(f);dp(u,h,p);var m=this.lineWidthBuffer.getView(f);m[0]=l;var g=this.pointAPointBBuffer.getView(f);g[0]=i[0],g[1]=i[1],g[2]=i[2],g[3]=i[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}}}},"drawEdgeLine")},{key:"_isValidEdge",value:o(function(r){var n=r._private.rscratch;return!(n.badLine||n.allpts==null||isNaN(n.allpts[0]))},"_isValidEdge")},{key:"_getEdgePoints",value:o(function(r){var n=r._private.rscratch;if(this._isValidEdge(r)){var i=n.allpts;if(i.length==4)return i;var a=this._getNumSegments(r);return this._getCurveSegmentPoints(i,a)}},"_getEdgePoints")},{key:"_getNumSegments",value:o(function(r){var n=15;return Math.min(Math.max(n,5),this.maxInstances)},"_getNumSegments")},{key:"_getCurveSegmentPoints",value:o(function(r,n){if(r.length==4)return r;for(var i=Array((n+1)*2),a=0;a<=n;a++)if(a==0)i[0]=r[0],i[1]=r[1];else if(a==n)i[a*2]=r[r.length-2],i[a*2+1]=r[r.length-1];else{var s=a/n;this._setCurvePoint(r,s,i,a*2)}return i},"_getCurveSegmentPoints")},{key:"_setCurvePoint",value:o(function(r,n,i,a){if(r.length<=2)i[a]=r[0],i[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l0}},"isLayerVisible"),l=o(function(d){var p=d.pstyle("text-events").strValue==="yes";return p?sE.USE_BB:sE.IGNORE},"getTexPickingMode"),u=o(function(d){var p=d.position(),m=p.x,g=p.y,y=d.outerWidth(),v=d.outerHeight();return{w:y,h:v,x1:m-y/2,y1:g-v/2}},"getBBForSimpleShape");r.drawing.addAtlasCollection("node",{texRows:t.webglTexRowsNodes}),r.drawing.addAtlasCollection("label",{texRows:t.webglTexRows}),r.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:e.getStyleKey,getBoundingBox:e.getElementBox,drawElement:e.drawElement}),r.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:u,isSimple:sqe,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),r.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:u,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),r.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:u,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),r.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:l,getKey:zM(e.getLabelKey,null),getBoundingBox:GM(e.getLabelBox,null),drawClipped:!0,drawElement:e.drawLabel,getRotation:i(null),getRotationPoint:e.getLabelRotationPoint,getRotationOffset:e.getLabelRotationOffset,isVisible:a("label")}),r.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:l,getKey:zM(e.getSourceLabelKey,"source"),getBoundingBox:GM(e.getSourceLabelBox,"source"),drawClipped:!0,drawElement:e.drawSourceLabel,getRotation:i("source"),getRotationPoint:e.getSourceLabelRotationPoint,getRotationOffset:e.getSourceLabelRotationOffset,isVisible:a("source-label")}),r.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:l,getKey:zM(e.getTargetLabelKey,"target"),getBoundingBox:GM(e.getTargetLabelBox,"target"),drawClipped:!0,drawElement:e.drawTargetLabel,getRotation:i("target"),getRotationPoint:e.getTargetLabelRotationPoint,getRotationOffset:e.getTargetLabelRotationOffset,isVisible:a("target-label")});var h=xx(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(f,d){var p=!1;d&&d.length>0&&(p|=r.drawing.invalidate(d)),p&&h()}),Aqe(r)};o(Cqe,"getBGColor");o(zhe,"getLabelLines");zM=o(function(e,r){return function(n){var i=e(n),a=zhe(n,r);return a.length>1?a.map(function(s,l){return"".concat(i,"_").concat(l)}):i}},"getStyleKeysForLabel"),GM=o(function(e,r){return function(n,i){var a=e(n);if(typeof i=="string"){var s=i.indexOf("_");if(s>0){var l=Number(i.substring(s+1)),u=zhe(n,r),h=a.h/u.length,f=h*l,d=a.y1+f;return{x1:a.x1,w:a.w,y1:d,h,yOffset:f}}}return a}},"getBoundingBoxForLabel");o(Aqe,"overrideCanvasRendererFunctions");o(_qe,"clearWebgl");o(Dqe,"clearCanvas");o(Lqe,"createPanZoomMatrix");o(Ghe,"setContextTransform");o(Rqe,"drawSelectionRectangle");o(Nqe,"drawAxes");o(Mqe,"drawAtlases");o(Iqe,"getPickingIndexes");o(Oqe,"findNearestElementsWebgl");o(VM,"drawEle");o(Vhe,"renderWebgl");Rf={};Rf.drawPolygonPath=function(t,e,r,n,i,a){var s=n/2,l=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*a[0],r+l*a[1]);for(var u=1;u0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(t.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=e.pan(),v={x:y.x*h,y:y.y*h};h*=e.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}t.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=t.bg,m.rect(0,0,a,s),m.fill())}return p};o(Pqe,"b64ToBlob");o(aue,"b64UriToB64");o(Hhe,"output");Sx.png=function(t){return Hhe(t,this.bufferCanvasImage(t),"image/png")};Sx.jpg=function(t){return Hhe(t,this.bufferCanvasImage(t),"image/jpeg")};qhe={};qhe.nodeShapeImpl=function(t,e,r,n,i,a,s,l){switch(t){case"ellipse":return this.drawEllipsePath(e,r,n,i,a);case"polygon":return this.drawPolygonPath(e,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(e,r,n,i,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,n,i,a,l);case"barrel":return this.drawBarrelPath(e,r,n,i,a)}};Bqe=Whe,Cr=Whe.prototype;Cr.CANVAS_LAYERS=3;Cr.SELECT_BOX=0;Cr.DRAG=1;Cr.NODE=2;Cr.WEBGL=3;Cr.CANVAS_TYPES=["2d","2d","2d","webgl2"];Cr.BUFFER_COUNT=3;Cr.TEXTURE_BUFFER=0;Cr.MOTIONBLUR_BUFFER_NODE=1;Cr.MOTIONBLUR_BUFFER_DRAG=2;o(Whe,"CanvasRenderer");Cr.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Cr.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Cr.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Cr.SELECT_BOX]=e;break;case"gc":r.data.gc=!0;break}};Fqe=typeof Path2D<"u";Cr.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t};Cr.usePaths=function(){return Fqe&&this.pathsEnabled};Cr.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)};Cr.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled};Cr.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":$i(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(t,e);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=t,r.height=e}return r};[Ihe,Fc,Hu,NI,Cp,Lf,us,$he,Rf,Sx,qhe].forEach(function(t){ir(Cr,t)});$qe=[{name:"null",impl:bhe},{name:"base",impl:Lhe},{name:"canvas",impl:Bqe}],zqe=[{type:"layout",extensions:hHe},{type:"renderer",extensions:$qe}],Yhe={},Xhe={};o(jhe,"setExtension");o(Khe,"getExtension");o(Gqe,"setModule");o(Vqe,"getModule");lI=o(function(){if(arguments.length===2)return Khe.apply(null,arguments);if(arguments.length===3)return jhe.apply(null,arguments);if(arguments.length===4)return Vqe.apply(null,arguments);if(arguments.length===5)return Gqe.apply(null,arguments);Kn("Invalid extension access syntax")},"extension");fx.prototype.extension=lI;zqe.forEach(function(t){t.extensions.forEach(function(e){jhe(t.type,e.name,e.impl)})});oE=o(function(){if(!(this instanceof oE))return new oE;this.length=0},"Stylesheet"),Ep=oE.prototype;Ep.instanceString=function(){return"stylesheet"};Ep.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this};Ep.css=function(t,e){var r=this.length-1;if(Jt(t))this[r].properties.push({name:t,value:e});else if(Yr(t))for(var n=t,i=Object.keys(n),a=0;a{"use strict";o((function(e,r){typeof Cx=="object"&&typeof OI=="object"?OI.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Cx=="object"?Cx.layoutBase=r():e.layoutBase=r()}),"webpackUniversalModuleDefinition")(Cx,function(){return(function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)})([(function(t,e,r){"use strict";function n(){}o(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_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.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=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s}),(function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];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(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},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 u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(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(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.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 this.owner==null?null:this.owner.getParent()},t.exports=h}),(function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&k>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(w,1),x.target!=x.source&&x.target.edges.splice(k,1);var S=x.source.owner.getEdges().indexOf(x);if(S==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(S,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),S=T.length,w=0;wv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,S,w,k,A,C=this.nodes,R=C.length,I=0;IT&&(y=T),vw&&(x=w),bT&&(y=T),vw&&(x=w),b=this.nodes.length){var R=0;v.forEach(function(I){I.owner==g&&R++}),R==this.nodes.length&&(this.isConnected=!0)}},t.exports=p}),(function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=C,!1;if(hf)return l[0]=p,l[1]=h,l[2]=k,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,E=!0):(l[0]=g,l[1]=m,E=!0):_===M&&(u>f?(l[0]=p,l[1]=m,E=!0):(l[0]=x,l[1]=v,E=!0)),-O===M?f>u?(l[2]=A,l[3]=C,D=!0):(l[2]=k,l[3]=w,D=!0):O===M&&(f>u?(l[2]=S,l[3]=w,D=!0):(l[2]=R,l[3]=C,D=!0)),E&&D)return!1;if(u>f?h>d?(P=this.getCardinalDirection(_,M,4),B=this.getCardinalDirection(O,M,2)):(P=this.getCardinalDirection(-_,M,3),B=this.getCardinalDirection(-O,M,1)):h>d?(P=this.getCardinalDirection(-_,M,1),B=this.getCardinalDirection(-O,M,3)):(P=this.getCardinalDirection(_,M,2),B=this.getCardinalDirection(O,M,4)),!E)switch(P){case 1:G=m,F=u+-T/M,l[0]=F,l[1]=G;break;case 2:F=x,G=h+b*M,l[0]=F,l[1]=G;break;case 3:G=v,F=u+T/M,l[0]=F,l[1]=G;break;case 4:F=y,G=h+-b*M,l[0]=F,l[1]=G;break}if(!D)switch(B){case 1:U=w,$=f+-L/M,l[2]=$,l[3]=U;break;case 2:$=R,U=d+I*M,l[2]=$,l[3]=U;break;case 3:U=C,$=f+L/M,l[2]=$,l[3]=U;break;case 4:$=A,U=d+-I*M,l[2]=$,l[3]=U;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,S=void 0,w=void 0,k=void 0,A=void 0,C=void 0,R=void 0;return T=p-f,w=h-d,A=d*f-h*p,S=v-g,k=m-y,C=y*g-m*v,R=T*k-S*w,R===0?null:(x=(w*C-k*A)/R,b=(S*A-T*C)/R,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n}),(function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n}),(function(t,e,r){"use strict";var n=(function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i}),(function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(w[0]);T.length>0&&g;){var k=T[0];T.splice(0,1),b.add(k);for(var A=k.getEdges(),x=0;x-1&&w.splice(L,1)}b=new Set,S=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(C,1);var R=S.getNeighborsList();R.forEach(function(E){if(y.indexOf(E)<0){var D=v.get(E),_=D-1;_==1&&k.push(E),v.set(E,_)}})}y=y.concat(k),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p}),(function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n}),(function(t,e,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i}),(function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||T>=x[0].length)){for(var S=0;Sh},"_defaultCompareFunction")}]),l})();t.exports=s}),(function(t,e,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(e,r){typeof Ax=="object"&&typeof BI=="object"?BI.exports=r(PI()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof Ax=="object"?Ax.coseBase=r(PI()):e.coseBase=r(e.layoutBase)}),"webpackUniversalModuleDefinition")(Ax,function(t){return(function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)})([(function(e,r){e.exports=t}),(function(e,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in i)a[s]=i[s];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,e.exports=a}),(function(e,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a}),(function(e,r,n){"use strict";var i=n(0).LGraph;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a}),(function(e,r,n){"use strict";var i=n(0).LGraphManager;function a(l){i.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a}),(function(e,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(u,h,f,d){i.call(this,u,h,f,d)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.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(u,h){for(var f=this.getChild().getNodes(),d,p=0;p0)this.positionNodesRadially(w);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(C){return k.has(C)});this.graphManager.setAllNodesToApplyGravitation(A),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%f.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var w=new Set(this.getAllNodes()),k=this.nodesWithGravity.filter(function(R){return w.has(R)});this.graphManager.setAllNodesToApplyGravitation(k),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=f.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var A=!this.isTreeGrowing&&!this.isGrowthFinished,C=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(A,C),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var w=this.graphManager.getAllNodes(),k={},A=0;A1){var E;for(E=0;EC&&(C=Math.floor(L.y)),I=Math.floor(L.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(d.WORLD_CENTER_X-L.x/2,d.WORLD_CENTER_Y-L.y/2))},T.radialLayout=function(w,k,A){var C=Math.max(this.maxDiagonalInTree(w),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(k,null,0,359,0,C);var R=x.calculateBounds(w),I=new b;I.setDeviceOrgX(R.getMinX()),I.setDeviceOrgY(R.getMinY()),I.setWorldOrgX(A.x),I.setWorldOrgY(A.y);for(var L=0;L1;){var j=U[0];U.splice(0,1);var te=P.indexOf(j);te>=0&&P.splice(te,1),G--,B--}k!=null?$=(P.indexOf(U[0])+1)%G:$=0;for(var Y=Math.abs(C-A)/B,oe=$;F!=B;oe=++oe%G){var J=P[oe].getOtherEnd(w);if(J!=k){var ue=(A+F*Y)%360,re=(ue+Y)%360;T.branchRadialLayout(J,w,ue,re,R+I,I),F++}}},T.maxDiagonalInTree=function(w){for(var k=y.MIN_VALUE,A=0;Ak&&(k=R)}return k},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var w=this,k={};this.memberGroups={},this.idToDummyNode={};for(var A=[],C=this.graphManager.getAllNodes(),R=0;R"u"&&(k[E]=[]),k[E]=k[E].concat(I)}Object.keys(k).forEach(function(D){if(k[D].length>1){var _="DummyCompound_"+D;w.memberGroups[_]=k[D];var O=k[D][0].getParent(),M=new l(w.graphManager);M.id=_,M.paddingLeft=O.paddingLeft||0,M.paddingRight=O.paddingRight||0,M.paddingBottom=O.paddingBottom||0,M.paddingTop=O.paddingTop||0,w.idToDummyNode[_]=M;var P=w.getGraphManager().add(w.newGraph(),M),B=O.getChild();B.add(M);for(var F=0;F=0;w--){var k=this.compoundOrder[w],A=k.id,C=k.paddingLeft,R=k.paddingTop;this.adjustLocations(this.tiledMemberPack[A],k.rect.x,k.rect.y,C,R)}},T.prototype.repopulateZeroDegreeMembers=function(){var w=this,k=this.tiledZeroDegreePack;Object.keys(k).forEach(function(A){var C=w.idToDummyNode[A],R=C.paddingLeft,I=C.paddingTop;w.adjustLocations(k[A],C.rect.x,C.rect.y,R,I)})},T.prototype.getToBeTiled=function(w){var k=w.id;if(this.toBeTiled[k]!=null)return this.toBeTiled[k];var A=w.getChild();if(A==null)return this.toBeTiled[k]=!1,!1;for(var C=A.getNodes(),R=0;R0)return this.toBeTiled[k]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[k]=!1,!1}return this.toBeTiled[k]=!0,!0},T.prototype.getNodeDegree=function(w){for(var k=w.id,A=w.getEdges(),C=0,R=0;RD&&(D=O.rect.height)}A+=D+w.verticalPadding}},T.prototype.tileCompoundMembers=function(w,k){var A=this;this.tiledMemberPack=[],Object.keys(w).forEach(function(C){var R=k[C];A.tiledMemberPack[C]=A.tileNodes(w[C],R.paddingLeft+R.paddingRight),R.rect.width=A.tiledMemberPack[C].width,R.rect.height=A.tiledMemberPack[C].height})},T.prototype.tileNodes=function(w,k){var A=h.TILING_PADDING_VERTICAL,C=h.TILING_PADDING_HORIZONTAL,R={rows:[],rowWidth:[],rowHeight:[],width:0,height:k,verticalPadding:A,horizontalPadding:C};w.sort(function(E,D){return E.rect.width*E.rect.height>D.rect.width*D.rect.height?-1:E.rect.width*E.rect.height0&&(L+=w.horizontalPadding),w.rowWidth[A]=L,w.width0&&(E+=w.verticalPadding);var D=0;E>w.rowHeight[A]&&(D=w.rowHeight[A],w.rowHeight[A]=E,D=w.rowHeight[A]-D),w.height+=D,w.rows[A].push(k)},T.prototype.getShortestRowIndex=function(w){for(var k=-1,A=Number.MAX_VALUE,C=0;CA&&(k=C,A=w.rowWidth[C]);return k},T.prototype.canAddHorizontal=function(w,k,A){var C=this.getShortestRowIndex(w);if(C<0)return!0;var R=w.rowWidth[C];if(R+w.horizontalPadding+k<=w.width)return!0;var I=0;w.rowHeight[C]0&&(I=A+w.verticalPadding-w.rowHeight[C]);var L;w.width-R>=k+w.horizontalPadding?L=(w.height+I)/(R+k+w.horizontalPadding):L=(w.height+I)/w.width,I=A+w.verticalPadding;var E;return w.widthI&&k!=A){C.splice(-1,1),w.rows[A].push(R),w.rowWidth[k]=w.rowWidth[k]-I,w.rowWidth[A]=w.rowWidth[A]+I,w.width=w.rowWidth[instance.getLongestRowIndex(w)];for(var L=Number.MIN_VALUE,E=0;EL&&(L=C[E].height);k>0&&(L+=w.verticalPadding);var D=w.rowHeight[k]+w.rowHeight[A];w.rowHeight[k]=L,w.rowHeight[A]0)for(var B=R;B<=I;B++)P[0]+=this.grid[B][L-1].length+this.grid[B][L].length-1;if(I0)for(var B=L;B<=E;B++)P[3]+=this.grid[R-1][B].length+this.grid[R][B].length-1;for(var F=y.MAX_VALUE,G,$,U=0;U{"use strict";o((function(e,r){typeof _x=="object"&&typeof $I=="object"?$I.exports=r(FI()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof _x=="object"?_x.cytoscapeCoseBilkent=r(FI()):e.cytoscapeCoseBilkent=r(e.coseBase)}),"webpackUniversalModuleDefinition")(_x,function(t){return(function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)})([(function(e,r){e.exports=t}),(function(e,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,f=n(0).layoutBase.DimensionD,d={ready:o(function(){},"ready"),stop:o(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 p(v,x){var b={};for(var T in v)b[T]=v[T];for(var T in x)b[T]=x[T];return b}o(p,"extend");function m(v){this.options=p(d,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,T=this.idToLNode={},S=this.layout=new l,w=this;w.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var k=S.newGraphManager();this.gm=k;var A=this.options.eles.nodes(),C=this.options.eles.edges();this.root=k.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(A),S);for(var R=0;R0){var E;E=b.getGraphManager().add(b.newGraph(),A),this.processChildrenList(E,k,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),e.exports=y})])})});function Hqe(t,e){t.forEach(r=>{let n={id:r.id,labelText:r.label,height:r.height,width:r.width,padding:r.padding??0};Object.keys(r).forEach(i=>{["id","label","height","width","padding","x","y"].includes(i)||(n[i]=r[i])}),e.add({group:"nodes",data:n,position:{x:r.x??0,y:r.y??0}})})}function qqe(t,e){t.forEach(r=>{let n={id:r.id,source:r.start,target:r.end};Object.keys(r).forEach(i=>{["id","start","end"].includes(i)||(n[i]=r[i])}),e.add({group:"edges",data:n})})}function Jhe(t){return new Promise(e=>{let r=qe("body").append("div").attr("id","cy").attr("style","display:none"),n=Ko({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});r.remove(),Hqe(t.nodes,n),qqe(t.edges,n),n.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}});let i={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};n.layout(i).run(),n.ready(a=>{X.info("Cytoscape ready",a),e(n)})})}function efe(t){return t.nodes().map(e=>{let r=e.data(),n=e.position(),i={id:r.id,x:n.x,y:n.y};return Object.keys(r).forEach(a=>{a!=="id"&&(i[a]=r[a])}),i})}function tfe(t){return t.edges().map(e=>{let r=e.data(),n=e._private.rscratch,i={id:r.id,source:r.source,target:r.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(r).forEach(a=>{["id","source","target"].includes(a)||(i[a]=r[a])}),i})}var Zhe,rfe=N(()=>{"use strict";II();Zhe=ja(Qhe(),1);yr();pt();Ko.use(Zhe.default);o(Hqe,"addNodes");o(qqe,"addEdges");o(Jhe,"createCytoscapeInstance");o(efe,"extractPositionedNodes");o(tfe,"extractPositionedEdges")});async function nfe(t,e){X.debug("Starting cose-bilkent layout algorithm");try{Wqe(t);let r=await Jhe(t),n=efe(r),i=tfe(r);return X.debug(`Layout completed: ${n.length} nodes, ${i.length} edges`),{nodes:n,edges:i}}catch(r){throw X.error("Error in cose-bilkent layout algorithm:",r),r}}function Wqe(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))throw new Error("Edges array is required in layout data");return!0}var ife=N(()=>{"use strict";pt();rfe();o(nfe,"executeCoseBilkentLayout");o(Wqe,"validateLayoutData")});var afe,sfe=N(()=>{"use strict";ife();afe=o(async(t,e,{insertCluster:r,insertEdge:n,insertEdgeLabel:i,insertMarkers:a,insertNode:s,log:l,positionEdgeLabel:u},{algorithm:h})=>{let f={},d={},p=e.select("g");a(p,t.markers,t.type,t.diagramId);let m=p.insert("g").attr("class","subgraphs"),g=p.insert("g").attr("class","edgePaths"),y=p.insert("g").attr("class","edgeLabels"),v=p.insert("g").attr("class","nodes");l.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(t.nodes.map(async T=>{if(T.isGroup){let S={...T};d[T.id]=S,f[T.id]=S,await r(m,T)}else{let S={...T};f[T.id]=S;let w=await s(v,T,{config:t.config,dir:t.direction||"TB"}),k=w.node().getBBox();S.width=k.width,S.height=k.height,S.domId=w,l.debug(`Node ${T.id} dimensions: ${k.width}x${k.height}`)}})),l.debug("Running cose-bilkent layout algorithm");let x={...t,nodes:t.nodes.map(T=>{let S=f[T.id];return{...T,width:S.width,height:S.height}})},b=await nfe(x,t.config);l.debug("Positioning nodes based on layout results"),b.nodes.forEach(T=>{let S=f[T.id];S?.domId&&(S.domId.attr("transform",`translate(${T.x}, ${T.y})`),S.x=T.x,S.y=T.y,l.debug(`Positioned node ${S.id} at center (${T.x}, ${T.y})`))}),b.edges.forEach(T=>{let S=t.edges.find(w=>w.id===T.id);S&&(S.points=[{x:T.startX,y:T.startY},{x:T.midX,y:T.midY},{x:T.endX,y:T.endY}])}),l.debug("Inserting and positioning edges"),await Promise.all(t.edges.map(async T=>{let S=await i(y,T),w=f[T.start??""],k=f[T.end??""];if(w&&k){let A=b.edges.find(C=>C.id===T.id);if(A){l.debug("APA01 positionedEdge",A);let C={...T},R=n(g,C,d,t.type,w,k,t.diagramId);u(C,R)}else{let C={...T,points:[{x:w.x||0,y:w.y||0},{x:k.x||0,y:k.y||0}]},R=n(g,C,d,t.type,w,k,t.diagramId);u(C,R)}}})),l.debug("Cose-bilkent rendering completed")},"render")});var ofe={};dr(ofe,{render:()=>Yqe});var Yqe,lfe=N(()=>{"use strict";sfe();Yqe=afe});var Dx,zI,Xqe,Qo,$c,Nf=N(()=>{"use strict";Qte();pt();Dx={},zI=o(t=>{for(let e of t)Dx[e.name]=e},"registerLayoutLoaders"),Xqe=o(()=>{zI([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>(Roe(),Loe)),"loader")},{name:"cose-bilkent",loader:o(async()=>await Promise.resolve().then(()=>(lfe(),ofe)),"loader")}])},"registerDefaultLayoutLoaders");Xqe();Qo=o(async(t,e)=>{if(!(t.layoutAlgorithm in Dx))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);let r=Dx[t.layoutAlgorithm];return(await r.loader()).render(t,e,Kte,{algorithm:r.algorithm})},"render"),$c=o((t="",{fallback:e="dagre"}={})=>{if(t in Dx)return t;if(e in Dx)return X.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")});var Ws,jqe,Kqe,Mf=N(()=>{"use strict";Ei();pt();Ws=o((t,e,r,n)=>{t.attr("class",r);let{width:i,height:a,x:s,y:l}=jqe(t,e);mn(t,a,i,n);let u=Kqe(s,l,i,a,e);t.attr("viewBox",u),X.debug(`viewBox configured: ${u} with padding: ${e}`)},"setupViewPortForSVG"),jqe=o((t,e)=>{let r=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+e*2,height:r.height+e*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),Kqe=o((t,e,r,n,i)=>`${t-i} ${e-i} ${r} ${n}`,"createViewBox")});var Qqe,Zqe,cfe,ufe=N(()=>{"use strict";yr();Xt();pt();ep();Nf();Mf();tr();Qqe=o(function(t,e){return e.db.getClasses()},"getClasses"),Zqe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing state diagram (v2)",e);let{securityLevel:i,flowchart:a,layout:s}=ge(),l;i==="sandbox"&&(l=qe("#i"+e));let u=i==="sandbox"?l.nodes()[0].contentDocument:document;X.debug("Before getData: ");let h=n.db.getData();X.debug("Data: ",h);let f=Vo(e,i),d=n.db.getDirection();h.type=n.type,h.layoutAlgorithm=$c(s),h.layoutAlgorithm==="dagre"&&s==="elk"&&X.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,X.debug("REF1:",h),await Qo(h,f);let p=h.config.flowchart?.diagramPadding??8;qt.insertTitle(f,"flowchartTitleText",a?.titleTopMargin||0,n.db.getDiagramTitle()),Ws(f,p,"flowchart",a?.useMaxWidth||!1);for(let m of h.nodes){let g=qe(`#${e} [id="${m.id}"]`);if(!g||!m.link)continue;let y=u.createElementNS("http://www.w3.org/2000/svg","a");y.setAttributeNS("http://www.w3.org/2000/svg","class",m.cssClasses),y.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i==="sandbox"?y.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):m.linkTarget&&y.setAttributeNS("http://www.w3.org/2000/svg","target",m.linkTarget);let v=g.insert(function(){return y},":first-child"),x=g.select(".label-container");x&&v.append(function(){return x.node()});let b=g.select(".label");b&&v.append(function(){return b.node()})}},"draw"),cfe={getClasses:Qqe,draw:Zqe}});var GI,VI,hfe=N(()=>{"use strict";GI=(function(){var t=o(function(fr,it,kt,jt){for(kt=kt||{},jt=fr.length;jt--;kt[fr[jt]]=it);return kt},"o"),e=[1,4],r=[1,3],n=[1,5],i=[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],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],f=[1,23],d=[1,25],p=[1,26],m=[1,27],g=[1,49],y=[1,48],v=[1,29],x=[1,30],b=[1,31],T=[1,32],S=[1,33],w=[1,44],k=[1,46],A=[1,42],C=[1,47],R=[1,43],I=[1,50],L=[1,45],E=[1,51],D=[1,52],_=[1,34],O=[1,35],M=[1,36],P=[1,37],B=[1,57],F=[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],G=[1,61],$=[1,60],U=[1,62],j=[8,9,11,75,77,78],te=[1,78],Y=[1,91],oe=[1,96],J=[1,95],ue=[1,92],re=[1,88],ee=[1,94],Z=[1,90],K=[1,97],ae=[1,93],Q=[1,98],de=[1,89],ne=[8,9,10,11,40,75,77,78],Te=[8,9,10,11,40,46,75,77,78],q=[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],Ve=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],pe=[44,60,89,102,105,106,109,111,114,115,116],Be=[1,121],Ye=[1,122],He=[1,124],Le=[1,123],Ie=[44,60,62,74,89,102,105,106,109,111,114,115,116],Ne=[1,133],Ce=[1,147],Fe=[1,148],fe=[1,149],xe=[1,150],W=[1,135],he=[1,137],z=[1,141],se=[1,142],le=[1,143],ke=[1,144],ve=[1,145],ye=[1,146],Re=[1,151],_e=[1,152],ze=[1,131],Ke=[1,132],xt=[1,139],We=[1,134],Oe=[1,138],et=[1,136],Ue=[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],lt=[1,154],Gt=[1,156],vt=[8,9,11],Lt=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],dt=[1,176],nt=[1,172],bt=[1,173],wt=[1,177],yt=[1,174],ft=[1,175],Ur=[77,116,119],_t=[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],bn=[10,106],Br=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],cr=[1,247],ar=[1,245],_r=[1,249],Ct=[1,243],Se=[1,244],at=[1,246],Nt=[1,248],wr=[1,250],Tn=[1,268],yn=[8,9,11,106],sn=[8,9,10,11,60,84,105,106,109,110,111,112],Hi={trace:o(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:o(function(it,kt,jt,ht,Dr,me,Yl){var be=me.length-1;switch(Dr){case 2:this.$=[];break;case 3:(!Array.isArray(me[be])||me[be].length>0)&&me[be-1].push(me[be]),this.$=me[be-1];break;case 4:case 183:this.$=me[be];break;case 11:ht.setDirection("TB"),this.$="TB";break;case 12:ht.setDirection(me[be-1]),this.$=me[be-1];break;case 27:this.$=me[be-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=ht.addSubGraph(me[be-6],me[be-1],me[be-4]);break;case 34:this.$=ht.addSubGraph(me[be-3],me[be-1],me[be-3]);break;case 35:this.$=ht.addSubGraph(void 0,me[be-1],void 0);break;case 37:this.$=me[be].trim(),ht.setAccTitle(this.$);break;case 38:case 39:this.$=me[be].trim(),ht.setAccDescription(this.$);break;case 43:this.$=me[be-1]+me[be];break;case 44:this.$=me[be];break;case 45:ht.addVertex(me[be-1][me[be-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,me[be]),ht.addLink(me[be-3].stmt,me[be-1],me[be-2]),this.$={stmt:me[be-1],nodes:me[be-1].concat(me[be-3].nodes)};break;case 46:ht.addLink(me[be-2].stmt,me[be],me[be-1]),this.$={stmt:me[be],nodes:me[be].concat(me[be-2].nodes)};break;case 47:ht.addLink(me[be-3].stmt,me[be-1],me[be-2]),this.$={stmt:me[be-1],nodes:me[be-1].concat(me[be-3].nodes)};break;case 48:this.$={stmt:me[be-1],nodes:me[be-1]};break;case 49:ht.addVertex(me[be-1][me[be-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,me[be]),this.$={stmt:me[be-1],nodes:me[be-1],shapeData:me[be]};break;case 50:this.$={stmt:me[be],nodes:me[be]};break;case 51:this.$=[me[be]];break;case 52:ht.addVertex(me[be-5][me[be-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,me[be-4]),this.$=me[be-5].concat(me[be]);break;case 53:this.$=me[be-4].concat(me[be]);break;case 54:this.$=me[be];break;case 55:this.$=me[be-2],ht.setClass(me[be-2],me[be]);break;case 56:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"square");break;case 57:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"doublecircle");break;case 58:this.$=me[be-5],ht.addVertex(me[be-5],me[be-2],"circle");break;case 59:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"ellipse");break;case 60:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"stadium");break;case 61:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"subroutine");break;case 62:this.$=me[be-7],ht.addVertex(me[be-7],me[be-1],"rect",void 0,void 0,void 0,Object.fromEntries([[me[be-5],me[be-3]]]));break;case 63:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"cylinder");break;case 64:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"round");break;case 65:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"diamond");break;case 66:this.$=me[be-5],ht.addVertex(me[be-5],me[be-2],"hexagon");break;case 67:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"odd");break;case 68:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"trapezoid");break;case 69:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"inv_trapezoid");break;case 70:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"lean_right");break;case 71:this.$=me[be-3],ht.addVertex(me[be-3],me[be-1],"lean_left");break;case 72:this.$=me[be],ht.addVertex(me[be]);break;case 73:me[be-1].text=me[be],this.$=me[be-1];break;case 74:case 75:me[be-2].text=me[be-1],this.$=me[be-2];break;case 76:this.$=me[be];break;case 77:var jr=ht.destructLink(me[be],me[be-2]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length,text:me[be-1]};break;case 78:var jr=ht.destructLink(me[be],me[be-2]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length,text:me[be-1],id:me[be-3]};break;case 79:this.$={text:me[be],type:"text"};break;case 80:this.$={text:me[be-1].text+""+me[be],type:me[be-1].type};break;case 81:this.$={text:me[be],type:"string"};break;case 82:this.$={text:me[be],type:"markdown"};break;case 83:var jr=ht.destructLink(me[be]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length};break;case 84:var jr=ht.destructLink(me[be]);this.$={type:jr.type,stroke:jr.stroke,length:jr.length,id:me[be-1]};break;case 85:this.$=me[be-1];break;case 86:this.$={text:me[be],type:"text"};break;case 87:this.$={text:me[be-1].text+""+me[be],type:me[be-1].type};break;case 88:this.$={text:me[be],type:"string"};break;case 89:case 104:this.$={text:me[be],type:"markdown"};break;case 101:this.$={text:me[be],type:"text"};break;case 102:this.$={text:me[be-1].text+""+me[be],type:me[be-1].type};break;case 103:this.$={text:me[be],type:"text"};break;case 105:this.$=me[be-4],ht.addClass(me[be-2],me[be]);break;case 106:this.$=me[be-4],ht.setClass(me[be-2],me[be]);break;case 107:case 115:this.$=me[be-1],ht.setClickEvent(me[be-1],me[be]);break;case 108:case 116:this.$=me[be-3],ht.setClickEvent(me[be-3],me[be-2]),ht.setTooltip(me[be-3],me[be]);break;case 109:this.$=me[be-2],ht.setClickEvent(me[be-2],me[be-1],me[be]);break;case 110:this.$=me[be-4],ht.setClickEvent(me[be-4],me[be-3],me[be-2]),ht.setTooltip(me[be-4],me[be]);break;case 111:this.$=me[be-2],ht.setLink(me[be-2],me[be]);break;case 112:this.$=me[be-4],ht.setLink(me[be-4],me[be-2]),ht.setTooltip(me[be-4],me[be]);break;case 113:this.$=me[be-4],ht.setLink(me[be-4],me[be-2],me[be]);break;case 114:this.$=me[be-6],ht.setLink(me[be-6],me[be-4],me[be]),ht.setTooltip(me[be-6],me[be-2]);break;case 117:this.$=me[be-1],ht.setLink(me[be-1],me[be]);break;case 118:this.$=me[be-3],ht.setLink(me[be-3],me[be-2]),ht.setTooltip(me[be-3],me[be]);break;case 119:this.$=me[be-3],ht.setLink(me[be-3],me[be-2],me[be]);break;case 120:this.$=me[be-5],ht.setLink(me[be-5],me[be-4],me[be]),ht.setTooltip(me[be-5],me[be-2]);break;case 121:this.$=me[be-4],ht.addVertex(me[be-2],void 0,void 0,me[be]);break;case 122:this.$=me[be-4],ht.updateLink([me[be-2]],me[be]);break;case 123:this.$=me[be-4],ht.updateLink(me[be-2],me[be]);break;case 124:this.$=me[be-8],ht.updateLinkInterpolate([me[be-6]],me[be-2]),ht.updateLink([me[be-6]],me[be]);break;case 125:this.$=me[be-8],ht.updateLinkInterpolate(me[be-6],me[be-2]),ht.updateLink(me[be-6],me[be]);break;case 126:this.$=me[be-6],ht.updateLinkInterpolate([me[be-4]],me[be]);break;case 127:this.$=me[be-6],ht.updateLinkInterpolate(me[be-4],me[be]);break;case 128:case 130:this.$=[me[be]];break;case 129:case 131:me[be-2].push(me[be]),this.$=me[be-2];break;case 133:this.$=me[be-1]+me[be];break;case 181:this.$=me[be];break;case 182:this.$=me[be-1]+""+me[be];break;case 184:this.$=me[be-1]+""+me[be];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break}},"anonymous"),table:[{3:1,4:2,9:e,10:r,12:n},{1:[3]},t(i,a,{5:6}),{4:7,9:e,10:r,12:n},{4:8,9:e,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),{8:[1,54],9:[1,55],10:B,15:53,18:56},t(F,[2,3]),t(F,[2,4]),t(F,[2,5]),t(F,[2,6]),t(F,[2,7]),t(F,[2,8]),{8:G,9:$,11:U,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:G,9:$,11:U,21:67},{8:G,9:$,11:U,21:68},{8:G,9:$,11:U,21:69},{8:G,9:$,11:U,21:70},{8:G,9:$,11:U,21:71},{8:G,9:$,10:[1,72],11:U,21:73},t(F,[2,36]),{35:[1,74]},{37:[1,75]},t(F,[2,39]),t(j,[2,50],{18:76,39:77,10:B,40:te}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:Y,44:oe,60:J,80:[1,86],89:ue,95:[1,83],97:[1,84],101:85,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de,120:87},t(F,[2,185]),t(F,[2,186]),t(F,[2,187]),t(F,[2,188]),t(ne,[2,51]),t(ne,[2,54],{46:[1,99]}),t(Te,[2,72],{113:112,29:[1,100],44:g,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:y,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:w,102:k,105:A,106:C,109:R,111:I,114:L,115:E,116:D}),t(q,[2,181]),t(q,[2,142]),t(q,[2,143]),t(q,[2,144]),t(q,[2,145]),t(q,[2,146]),t(q,[2,147]),t(q,[2,148]),t(q,[2,149]),t(q,[2,150]),t(q,[2,151]),t(q,[2,152]),t(i,[2,12]),t(i,[2,18]),t(i,[2,19]),{9:[1,113]},t(Ve,[2,26],{18:114,10:B}),t(F,[2,27]),{42:115,43:38,44:g,45:39,47:40,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(F,[2,40]),t(F,[2,41]),t(F,[2,42]),t(pe,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:Be,81:Ye,116:He,119:Le},{75:[1,125],77:[1,126]},t(Ie,[2,83]),t(F,[2,28]),t(F,[2,29]),t(F,[2,30]),t(F,[2,31]),t(F,[2,32]),{10:Ne,12:Ce,14:Fe,27:fe,28:127,32:xe,44:W,60:he,75:z,80:[1,129],81:[1,130],83:140,84:se,85:le,86:ke,87:ve,88:ye,89:Re,90:_e,91:128,105:ze,109:Ke,111:xt,114:We,115:Oe,116:et},t(Ue,a,{5:153}),t(F,[2,37]),t(F,[2,38]),t(j,[2,48],{44:lt}),t(j,[2,49],{18:155,10:B,40:Gt}),t(ne,[2,44]),{44:g,47:157,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{102:[1,158],103:159,105:[1,160]},{44:g,47:161,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{44:g,47:162,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(vt,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t(vt,[2,115],{120:167,10:[1,166],14:Y,44:oe,60:J,89:ue,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de}),t(vt,[2,117],{10:[1,168]}),t(Lt,[2,183]),t(Lt,[2,170]),t(Lt,[2,171]),t(Lt,[2,172]),t(Lt,[2,173]),t(Lt,[2,174]),t(Lt,[2,175]),t(Lt,[2,176]),t(Lt,[2,177]),t(Lt,[2,178]),t(Lt,[2,179]),t(Lt,[2,180]),{44:g,47:169,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{30:170,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:178,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:180,50:[1,179],67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:181,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:182,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:183,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{109:[1,184]},{30:185,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:186,65:[1,187],67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:188,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:189,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{30:190,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},t(q,[2,182]),t(i,[2,20]),t(Ve,[2,25]),t(j,[2,46],{39:191,18:192,10:B,40:te}),t(pe,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{77:[1,196],79:197,116:He,119:Le},t(Ur,[2,79]),t(Ur,[2,81]),t(Ur,[2,82]),t(Ur,[2,168]),t(Ur,[2,169]),{76:198,79:120,80:Be,81:Ye,116:He,119:Le},t(Ie,[2,84]),{8:G,9:$,10:Ne,11:U,12:Ce,14:Fe,21:200,27:fe,29:[1,199],32:xe,44:W,60:he,75:z,83:140,84:se,85:le,86:ke,87:ve,88:ye,89:Re,90:_e,91:201,105:ze,109:Ke,111:xt,114:We,115:Oe,116:et},t(_t,[2,101]),t(_t,[2,103]),t(_t,[2,104]),t(_t,[2,157]),t(_t,[2,158]),t(_t,[2,159]),t(_t,[2,160]),t(_t,[2,161]),t(_t,[2,162]),t(_t,[2,163]),t(_t,[2,164]),t(_t,[2,165]),t(_t,[2,166]),t(_t,[2,167]),t(_t,[2,90]),t(_t,[2,91]),t(_t,[2,92]),t(_t,[2,93]),t(_t,[2,94]),t(_t,[2,95]),t(_t,[2,96]),t(_t,[2,97]),t(_t,[2,98]),t(_t,[2,99]),t(_t,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,202],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},{10:B,18:203},{44:[1,204]},t(ne,[2,43]),{10:[1,205],44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:112,114:L,115:E,116:D},{10:[1,206]},{10:[1,207],106:[1,208]},t(bn,[2,128]),{10:[1,209],44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:112,114:L,115:E,116:D},{10:[1,210],44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:112,114:L,115:E,116:D},{80:[1,211]},t(vt,[2,109],{10:[1,212]}),t(vt,[2,111],{10:[1,213]}),{80:[1,214]},t(Lt,[2,184]),{80:[1,215],98:[1,216]},t(ne,[2,55],{113:112,44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,114:L,115:E,116:D}),{31:[1,217],67:dt,82:218,116:wt,117:yt,118:ft},t(Br,[2,86]),t(Br,[2,88]),t(Br,[2,89]),t(Br,[2,153]),t(Br,[2,154]),t(Br,[2,155]),t(Br,[2,156]),{49:[1,219],67:dt,82:218,116:wt,117:yt,118:ft},{30:220,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{51:[1,221],67:dt,82:218,116:wt,117:yt,118:ft},{53:[1,222],67:dt,82:218,116:wt,117:yt,118:ft},{55:[1,223],67:dt,82:218,116:wt,117:yt,118:ft},{57:[1,224],67:dt,82:218,116:wt,117:yt,118:ft},{60:[1,225]},{64:[1,226],67:dt,82:218,116:wt,117:yt,118:ft},{66:[1,227],67:dt,82:218,116:wt,117:yt,118:ft},{30:228,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},{31:[1,229],67:dt,82:218,116:wt,117:yt,118:ft},{67:dt,69:[1,230],71:[1,231],82:218,116:wt,117:yt,118:ft},{67:dt,69:[1,233],71:[1,232],82:218,116:wt,117:yt,118:ft},t(j,[2,45],{18:155,10:B,40:Gt}),t(j,[2,47],{44:lt}),t(pe,[2,75]),t(pe,[2,74]),{62:[1,234],67:dt,82:218,116:wt,117:yt,118:ft},t(pe,[2,77]),t(Ur,[2,80]),{77:[1,235],79:197,116:He,119:Le},{30:236,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},t(Ue,a,{5:237}),t(_t,[2,102]),t(F,[2,35]),{43:238,44:g,45:39,47:40,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},{10:B,18:239},{10:cr,60:ar,84:_r,92:240,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{10:cr,60:ar,84:_r,92:251,104:[1,252],105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{10:cr,60:ar,84:_r,92:253,104:[1,254],105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{105:[1,255]},{10:cr,60:ar,84:_r,92:256,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{44:g,47:257,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(vt,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t(vt,[2,116]),t(vt,[2,118],{10:[1,261]}),t(vt,[2,119]),t(Te,[2,56]),t(Br,[2,87]),t(Te,[2,57]),{51:[1,262],67:dt,82:218,116:wt,117:yt,118:ft},t(Te,[2,64]),t(Te,[2,59]),t(Te,[2,60]),t(Te,[2,61]),{109:[1,263]},t(Te,[2,63]),t(Te,[2,65]),{66:[1,264],67:dt,82:218,116:wt,117:yt,118:ft},t(Te,[2,67]),t(Te,[2,68]),t(Te,[2,70]),t(Te,[2,69]),t(Te,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(pe,[2,78]),{31:[1,265],67:dt,82:218,116:wt,117:yt,118:ft},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,266],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},t(ne,[2,53]),{43:267,44:g,45:39,47:40,60:y,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D},t(vt,[2,121],{106:Tn}),t(yn,[2,130],{108:269,10:cr,60:ar,84:_r,105:Ct,109:Se,110:at,111:Nt,112:wr}),t(sn,[2,132]),t(sn,[2,134]),t(sn,[2,135]),t(sn,[2,136]),t(sn,[2,137]),t(sn,[2,138]),t(sn,[2,139]),t(sn,[2,140]),t(sn,[2,141]),t(vt,[2,122],{106:Tn}),{10:[1,270]},t(vt,[2,123],{106:Tn}),{10:[1,271]},t(bn,[2,129]),t(vt,[2,105],{106:Tn}),t(vt,[2,106],{113:112,44:g,60:y,89:w,102:k,105:A,106:C,109:R,111:I,114:L,115:E,116:D}),t(vt,[2,110]),t(vt,[2,112],{10:[1,272]}),t(vt,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:G,9:$,11:U,21:277},t(F,[2,34]),t(ne,[2,52]),{10:cr,60:ar,84:_r,105:Ct,107:278,108:242,109:Se,110:at,111:Nt,112:wr},t(sn,[2,133]),{14:Y,44:oe,60:J,89:ue,101:279,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de,120:87},{14:Y,44:oe,60:J,89:ue,101:280,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de,120:87},{98:[1,281]},t(vt,[2,120]),t(Te,[2,58]),{30:282,67:dt,80:nt,81:bt,82:171,116:wt,117:yt,118:ft},t(Te,[2,66]),t(Ue,a,{5:283}),t(yn,[2,131],{108:269,10:cr,60:ar,84:_r,105:Ct,109:Se,110:at,111:Nt,112:wr}),t(vt,[2,126],{120:167,10:[1,284],14:Y,44:oe,60:J,89:ue,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de}),t(vt,[2,127],{120:167,10:[1,285],14:Y,44:oe,60:J,89:ue,105:re,106:ee,109:Z,111:K,114:ae,115:Q,116:de}),t(vt,[2,114]),{31:[1,286],67:dt,82:218,116:wt,117:yt,118:ft},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:f,32:[1,287],33:24,34:d,36:p,38:m,42:28,43:38,44:g,45:39,47:40,60:y,84:v,85:x,86:b,87:T,88:S,89:w,102:k,105:A,106:C,109:R,111:I,113:41,114:L,115:E,116:D,121:_,122:O,123:M,124:P},{10:cr,60:ar,84:_r,92:288,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},{10:cr,60:ar,84:_r,92:289,105:Ct,107:241,108:242,109:Se,110:at,111:Nt,112:wr},t(Te,[2,62]),t(F,[2,33]),t(vt,[2,124],{106:Tn}),t(vt,[2,125],{106:Tn})],defaultActions:{},parseError:o(function(it,kt){if(kt.recoverable)this.trace(it);else{var jt=new Error(it);throw jt.hash=kt,jt}},"parseError"),parse:o(function(it){var kt=this,jt=[0],ht=[],Dr=[null],me=[],Yl=this.table,be="",jr=0,V4=0,XC=0,jC=2,Gz=1,$3e=me.slice.call(arguments,1),qi=Object.create(this.lexer),ad={yy:{}};for(var KC in this.yy)Object.prototype.hasOwnProperty.call(this.yy,KC)&&(ad.yy[KC]=this.yy[KC]);qi.setInput(it,ad.yy),ad.yy.lexer=qi,ad.yy.parser=this,typeof qi.yylloc>"u"&&(qi.yylloc={});var QC=qi.yylloc;me.push(QC);var z3e=qi.options&&qi.options.ranges;typeof ad.yy.parseError=="function"?this.parseError=ad.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pat(Js){jt.length=jt.length-2*Js,Dr.length=Dr.length-Js,me.length=me.length-Js}o(Pat,"popStack");function G3e(){var Js;return Js=ht.pop()||qi.lex()||Gz,typeof Js!="number"&&(Js instanceof Array&&(ht=Js,Js=ht.pop()),Js=kt.symbols_[Js]||Js),Js}o(G3e,"lex");for(var Xa,ZC,sd,ko,Bat,JC,g0={},U4,iu,Vz,H4;;){if(sd=jt[jt.length-1],this.defaultActions[sd]?ko=this.defaultActions[sd]:((Xa===null||typeof Xa>"u")&&(Xa=G3e()),ko=Yl[sd]&&Yl[sd][Xa]),typeof ko>"u"||!ko.length||!ko[0]){var e7="";H4=[];for(U4 in Yl[sd])this.terminals_[U4]&&U4>jC&&H4.push("'"+this.terminals_[U4]+"'");qi.showPosition?e7="Parse error on line "+(jr+1)+`: -`+qi.showPosition()+` -Expecting `+H4.join(", ")+", got '"+(this.terminals_[Xa]||Xa)+"'":e7="Parse error on line "+(jr+1)+": Unexpected "+(Xa==Gz?"end of input":"'"+(this.terminals_[Xa]||Xa)+"'"),this.parseError(e7,{text:qi.match,token:this.terminals_[Xa]||Xa,line:qi.yylineno,loc:QC,expected:H4})}if(ko[0]instanceof Array&&ko.length>1)throw new Error("Parse Error: multiple actions possible at state: "+sd+", token: "+Xa);switch(ko[0]){case 1:jt.push(Xa),Dr.push(qi.yytext),me.push(qi.yylloc),jt.push(ko[1]),Xa=null,ZC?(Xa=ZC,ZC=null):(V4=qi.yyleng,be=qi.yytext,jr=qi.yylineno,QC=qi.yylloc,XC>0&&XC--);break;case 2:if(iu=this.productions_[ko[1]][1],g0.$=Dr[Dr.length-iu],g0._$={first_line:me[me.length-(iu||1)].first_line,last_line:me[me.length-1].last_line,first_column:me[me.length-(iu||1)].first_column,last_column:me[me.length-1].last_column},z3e&&(g0._$.range=[me[me.length-(iu||1)].range[0],me[me.length-1].range[1]]),JC=this.performAction.apply(g0,[be,V4,jr,ad.yy,ko[1],Dr,me].concat($3e)),typeof JC<"u")return JC;iu&&(jt=jt.slice(0,-1*iu*2),Dr=Dr.slice(0,-1*iu),me=me.slice(0,-1*iu)),jt.push(this.productions_[ko[1]][0]),Dr.push(g0.$),me.push(g0._$),Vz=Yl[jt[jt.length-2]][jt[jt.length-1]],jt.push(Vz);break;case 3:return!0}}return!0},"parse")},Zs=(function(){var fr={EOF:1,parseError:o(function(kt,jt){if(this.yy.parser)this.yy.parser.parseError(kt,jt);else throw new Error(kt)},"parseError"),setInput:o(function(it,kt){return this.yy=kt||this.yy||{},this._input=it,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var it=this._input[0];this.yytext+=it,this.yyleng++,this.offset++,this.match+=it,this.matched+=it;var kt=it.match(/(?:\r\n?|\n).*/g);return kt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),it},"input"),unput:o(function(it){var kt=it.length,jt=it.split(/(?:\r\n?|\n)/g);this._input=it+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-kt),this.offset-=kt;var ht=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),jt.length-1&&(this.yylineno-=jt.length-1);var Dr=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:jt?(jt.length===ht.length?this.yylloc.first_column:0)+ht[ht.length-jt.length].length-jt[0].length:this.yylloc.first_column-kt},this.options.ranges&&(this.yylloc.range=[Dr[0],Dr[0]+this.yyleng-kt]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(it){this.unput(this.match.slice(it))},"less"),pastInput:o(function(){var it=this.matched.substr(0,this.matched.length-this.match.length);return(it.length>20?"...":"")+it.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var it=this.match;return it.length<20&&(it+=this._input.substr(0,20-it.length)),(it.substr(0,20)+(it.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var it=this.pastInput(),kt=new Array(it.length+1).join("-");return it+this.upcomingInput()+` -`+kt+"^"},"showPosition"),test_match:o(function(it,kt){var jt,ht,Dr;if(this.options.backtrack_lexer&&(Dr={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Dr.yylloc.range=this.yylloc.range.slice(0))),ht=it[0].match(/(?:\r\n?|\n).*/g),ht&&(this.yylineno+=ht.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ht?ht[ht.length-1].length-ht[ht.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+it[0].length},this.yytext+=it[0],this.match+=it[0],this.matches=it,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(it[0].length),this.matched+=it[0],jt=this.performAction.call(this,this.yy,this,kt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),jt)return jt;if(this._backtrack){for(var me in Dr)this[me]=Dr[me];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var it,kt,jt,ht;this._more||(this.yytext="",this.match="");for(var Dr=this._currentRules(),me=0;mekt[0].length)){if(kt=jt,ht=me,this.options.backtrack_lexer){if(it=this.test_match(jt,Dr[me]),it!==!1)return it;if(this._backtrack){kt=!1;continue}else return!1}else if(!this.options.flex)break}return kt?(it=this.test_match(kt,Dr[ht]),it!==!1?it:!1):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:o(function(){var kt=this.next();return kt||this.lex()},"lex"),begin:o(function(kt){this.conditionStack.push(kt)},"begin"),popState:o(function(){var kt=this.conditionStack.length-1;return kt>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(kt){return kt=this.conditionStack.length-1-Math.abs(kt||0),kt>=0?this.conditionStack[kt]:"INITIAL"},"topState"),pushState:o(function(kt){this.begin(kt)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(kt,jt,ht,Dr){var me=Dr;switch(ht){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),jt.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let Yl=/\n\s*/g;return jt.yytext=jt.yytext.replace(Yl,"
    "),40;break;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:return kt.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return kt.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return kt.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 98;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;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;break;case 69:return this.pushState("edgeText"),75;break;case 70:return 119;case 71:return this.popState(),77;break;case 72:return this.pushState("thickEdgeText"),75;break;case 73:return 119;case 74:return this.popState(),77;break;case 75:return this.pushState("dottedEdgeText"),75;break;case 76:return 119;case 77:return 77;case 78:return this.popState(),53;break;case 79:return"TEXT";case 80:return this.pushState("ellipseText"),52;break;case 81:return this.popState(),55;break;case 82:return this.pushState("text"),54;break;case 83:return this.popState(),57;break;case 84:return this.pushState("text"),56;break;case 85:return 58;case 86:return this.pushState("text"),67;break;case 87:return this.popState(),64;break;case 88:return this.pushState("text"),63;break;case 89:return this.popState(),49;break;case 90:return this.pushState("text"),48;break;case 91:return this.popState(),69;break;case 92:return this.popState(),71;break;case 93:return 117;case 94:return this.pushState("trapText"),68;break;case 95:return this.pushState("trapText"),70;break;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;break;case 108:return this.pushState("text"),62;break;case 109:return this.popState(),51;break;case 110:return this.pushState("text"),50;break;case 111:return this.popState(),31;break;case 112:return this.pushState("text"),29;break;case 113:return this.popState(),66;break;case 114:return this.pushState("text"),65;break;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}}};return fr})();Hi.lexer=Zs;function _a(){this.yy={}}return o(_a,"Parser"),_a.prototype=Hi,Hi.Parser=_a,new _a})();GI.parser=GI;VI=GI});var ffe,dfe,pfe=N(()=>{"use strict";hfe();ffe=Object.assign({},VI);ffe.parse=t=>{let e=t.replace(/}\s*\n/g,`} -`);return VI.parse(e)};dfe=ffe});var zc,yg=N(()=>{"use strict";zc=o(()=>` - /* 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")});var Jqe,eWe,mfe,gfe=N(()=>{"use strict";eo();yg();Jqe=o((t,e)=>{let r=ld,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Ka(n,i,a,e)},"fade"),eWe=o(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: ${Jqe(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; - } - ${zc()} -`,"getStyles"),mfe=eWe});var CE={};dr(CE,{diagram:()=>tWe});var tWe,AE=N(()=>{"use strict";Xt();Bte();ufe();pfe();gfe();tWe={parser:dfe,get db(){return new lw},renderer:cfe,styles:mfe,init:o(t=>{t.flowchart||(t.flowchart={}),t.layout&&nv({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,nv({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})},"init")}});var UI,Tfe,wfe=N(()=>{"use strict";UI=(function(){var t=o(function(K,ae,Q,de){for(Q=Q||{},de=K.length;de--;Q[K[de]]=ae);return Q},"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,20],l=[1,21],u=[1,22],h=[1,23],f=[1,24],d=[1,19],p=[1,25],m=[1,26],g=[1,18],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],S=[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],w=[1,42],k=[1,43],A=[1,52],C=[40,50,68,69],R=[1,63],I=[1,61],L=[1,58],E=[1,62],D=[1,64],_=[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],O=[63,64,65,66,67],M=[1,81],P=[1,80],B=[1,78],F=[1,79],G=[6,10,42,47],$=[6,10,13,41,42,47,48,49],U=[1,89],j=[1,88],te=[1,87],Y=[19,56],oe=[1,98],J=[1,97],ue=[19,56,58,60],re={trace:o(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:o(function(ae,Q,de,ne,Te,q,Ve){var pe=q.length-1;switch(Te){case 1:break;case 2:this.$=[];break;case 3:q[pe-1].push(q[pe]),this.$=q[pe-1];break;case 4:case 5:this.$=q[pe];break;case 6:case 7:this.$=[];break;case 8:ne.addEntity(q[pe-4]),ne.addEntity(q[pe-2]),ne.addRelationship(q[pe-4],q[pe],q[pe-2],q[pe-3]);break;case 9:ne.addEntity(q[pe-8]),ne.addEntity(q[pe-4]),ne.addRelationship(q[pe-8],q[pe],q[pe-4],q[pe-5]),ne.setClass([q[pe-8]],q[pe-6]),ne.setClass([q[pe-4]],q[pe-2]);break;case 10:ne.addEntity(q[pe-6]),ne.addEntity(q[pe-2]),ne.addRelationship(q[pe-6],q[pe],q[pe-2],q[pe-3]),ne.setClass([q[pe-6]],q[pe-4]);break;case 11:ne.addEntity(q[pe-6]),ne.addEntity(q[pe-4]),ne.addRelationship(q[pe-6],q[pe],q[pe-4],q[pe-5]),ne.setClass([q[pe-4]],q[pe-2]);break;case 12:ne.addEntity(q[pe-3]),ne.addAttributes(q[pe-3],q[pe-1]);break;case 13:ne.addEntity(q[pe-5]),ne.addAttributes(q[pe-5],q[pe-1]),ne.setClass([q[pe-5]],q[pe-3]);break;case 14:ne.addEntity(q[pe-2]);break;case 15:ne.addEntity(q[pe-4]),ne.setClass([q[pe-4]],q[pe-2]);break;case 16:ne.addEntity(q[pe]);break;case 17:ne.addEntity(q[pe-2]),ne.setClass([q[pe-2]],q[pe]);break;case 18:ne.addEntity(q[pe-6],q[pe-4]),ne.addAttributes(q[pe-6],q[pe-1]);break;case 19:ne.addEntity(q[pe-8],q[pe-6]),ne.addAttributes(q[pe-8],q[pe-1]),ne.setClass([q[pe-8]],q[pe-3]);break;case 20:ne.addEntity(q[pe-5],q[pe-3]);break;case 21:ne.addEntity(q[pe-7],q[pe-5]),ne.setClass([q[pe-7]],q[pe-2]);break;case 22:ne.addEntity(q[pe-3],q[pe-1]);break;case 23:ne.addEntity(q[pe-5],q[pe-3]),ne.setClass([q[pe-5]],q[pe]);break;case 24:case 25:this.$=q[pe].trim(),ne.setAccTitle(this.$);break;case 26:case 27:this.$=q[pe].trim(),ne.setAccDescription(this.$);break;case 32:ne.setDirection("TB");break;case 33:ne.setDirection("BT");break;case 34:ne.setDirection("RL");break;case 35:ne.setDirection("LR");break;case 36:this.$=q[pe-3],ne.addClass(q[pe-2],q[pe-1]);break;case 37:case 38:case 56:case 64:this.$=[q[pe]];break;case 39:case 40:this.$=q[pe-2].concat([q[pe]]);break;case 41:this.$=q[pe-2],ne.setClass(q[pe-1],q[pe]);break;case 42:this.$=q[pe-3],ne.addCssStyles(q[pe-2],q[pe-1]);break;case 43:this.$=[q[pe]];break;case 44:q[pe-2].push(q[pe]),this.$=q[pe-2];break;case 46:this.$=q[pe-1]+q[pe];break;case 54:case 76:case 77:this.$=q[pe].replace(/"/g,"");break;case 55:case 78:this.$=q[pe];break;case 57:q[pe].push(q[pe-1]),this.$=q[pe];break;case 58:this.$={type:q[pe-1],name:q[pe]};break;case 59:this.$={type:q[pe-2],name:q[pe-1],keys:q[pe]};break;case 60:this.$={type:q[pe-2],name:q[pe-1],comment:q[pe]};break;case 61:this.$={type:q[pe-3],name:q[pe-2],keys:q[pe-1],comment:q[pe]};break;case 62:case 63:case 66:this.$=q[pe];break;case 65:q[pe-2].push(q[pe]),this.$=q[pe-2];break;case 67:this.$=q[pe].replace(/"/g,"");break;case 68:this.$={cardA:q[pe],relType:q[pe-1],cardB:q[pe-2]};break;case 69:this.$=ne.Cardinality.ZERO_OR_ONE;break;case 70:this.$=ne.Cardinality.ZERO_OR_MORE;break;case 71:this.$=ne.Cardinality.ONE_OR_MORE;break;case 72:this.$=ne.Cardinality.ONLY_ONE;break;case 73:this.$=ne.Cardinality.MD_PARENT;break;case 74:this.$=ne.Identification.NON_IDENTIFYING;break;case 75:this.$=ne.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:f,40:d,43:p,44:m,50:g},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:y,64:v,65:x,66:b,67:T}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(S,[2,54]),t(S,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:w,41:k},{16:44,40:w,41:k},{16:45,40:w,41:k},t(e,[2,4]),{11:46,40:d,50:g},{16:47,40:w,41:k},{18:48,19:[1,49],51:50,52:51,56:A},{11:53,40:d,50:g},{62:54,68:[1,55],69:[1,56]},t(C,[2,69]),t(C,[2,70]),t(C,[2,71]),t(C,[2,72]),t(C,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:R,38:57,41:I,42:L,45:59,46:60,48:E,49:D},t(_,[2,37]),t(_,[2,38]),{16:65,40:w,41:k,42:L},{13:R,38:66,41:I,42:L,45:59,46:60,48:E,49:D},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:L,63:y,64:v,65:x,66:b,67:T}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:A},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:y,64:v,65:x,66:b,67:T},t(O,[2,74]),t(O,[2,75]),{6:M,10:P,39:77,42:B,47:F},{40:[1,82],41:[1,83]},t(G,[2,43],{46:84,13:R,41:I,48:E,49:D}),t($,[2,45]),t($,[2,50]),t($,[2,51]),t($,[2,52]),t($,[2,53]),t(e,[2,41],{42:L}),{6:M,10:P,39:85,42:B,47:F},{14:86,40:U,50:j,70:te},{16:90,40:w,41:k},{11:91,40:d,50:g},{18:92,19:[1,93],51:50,52:51,56:A},t(e,[2,12]),{19:[2,57]},t(Y,[2,58],{54:94,55:95,57:96,59:oe,60:J}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:R,41:I,45:101,46:60,48:E,49:D},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(_,[2,39]),t(_,[2,40]),t($,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:L},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(Y,[2,59],{55:106,58:[1,107],60:J}),t(Y,[2,60]),t(ue,[2,64]),t(Y,[2,67]),t(ue,[2,66]),{18:108,19:[1,109],51:50,52:51,56:A},{16:110,40:w,41:k},t(G,[2,44],{46:84,13:R,41:I,48:E,49:D}),{14:111,40:U,50:j,70:te},{16:112,40:w,41:k},{14:113,40:U,50:j,70:te},t(e,[2,13]),t(Y,[2,61]),{57:114,59:oe},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:L}),t(e,[2,11]),{13:[1,117],42:L},t(e,[2,10]),t(ue,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:A},{14:120,40:U,50:j,70:te},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:o(function(ae,Q){if(Q.recoverable)this.trace(ae);else{var de=new Error(ae);throw de.hash=Q,de}},"parseError"),parse:o(function(ae){var Q=this,de=[0],ne=[],Te=[null],q=[],Ve=this.table,pe="",Be=0,Ye=0,He=0,Le=2,Ie=1,Ne=q.slice.call(arguments,1),Ce=Object.create(this.lexer),Fe={yy:{}};for(var fe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,fe)&&(Fe.yy[fe]=this.yy[fe]);Ce.setInput(ae,Fe.yy),Fe.yy.lexer=Ce,Fe.yy.parser=this,typeof Ce.yylloc>"u"&&(Ce.yylloc={});var xe=Ce.yylloc;q.push(xe);var W=Ce.options&&Ce.options.ranges;typeof Fe.yy.parseError=="function"?this.parseError=Fe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function he(et){de.length=de.length-2*et,Te.length=Te.length-et,q.length=q.length-et}o(he,"popStack");function z(){var et;return et=ne.pop()||Ce.lex()||Ie,typeof et!="number"&&(et instanceof Array&&(ne=et,et=ne.pop()),et=Q.symbols_[et]||et),et}o(z,"lex");for(var se,le,ke,ve,ye,Re,_e={},ze,Ke,xt,We;;){if(ke=de[de.length-1],this.defaultActions[ke]?ve=this.defaultActions[ke]:((se===null||typeof se>"u")&&(se=z()),ve=Ve[ke]&&Ve[ke][se]),typeof ve>"u"||!ve.length||!ve[0]){var Oe="";We=[];for(ze in Ve[ke])this.terminals_[ze]&&ze>Le&&We.push("'"+this.terminals_[ze]+"'");Ce.showPosition?Oe="Parse error on line "+(Be+1)+`: -`+Ce.showPosition()+` -Expecting `+We.join(", ")+", got '"+(this.terminals_[se]||se)+"'":Oe="Parse error on line "+(Be+1)+": Unexpected "+(se==Ie?"end of input":"'"+(this.terminals_[se]||se)+"'"),this.parseError(Oe,{text:Ce.match,token:this.terminals_[se]||se,line:Ce.yylineno,loc:xe,expected:We})}if(ve[0]instanceof Array&&ve.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ke+", token: "+se);switch(ve[0]){case 1:de.push(se),Te.push(Ce.yytext),q.push(Ce.yylloc),de.push(ve[1]),se=null,le?(se=le,le=null):(Ye=Ce.yyleng,pe=Ce.yytext,Be=Ce.yylineno,xe=Ce.yylloc,He>0&&He--);break;case 2:if(Ke=this.productions_[ve[1]][1],_e.$=Te[Te.length-Ke],_e._$={first_line:q[q.length-(Ke||1)].first_line,last_line:q[q.length-1].last_line,first_column:q[q.length-(Ke||1)].first_column,last_column:q[q.length-1].last_column},W&&(_e._$.range=[q[q.length-(Ke||1)].range[0],q[q.length-1].range[1]]),Re=this.performAction.apply(_e,[pe,Ye,Be,Fe.yy,ve[1],Te,q].concat(Ne)),typeof Re<"u")return Re;Ke&&(de=de.slice(0,-1*Ke*2),Te=Te.slice(0,-1*Ke),q=q.slice(0,-1*Ke)),de.push(this.productions_[ve[1]][0]),Te.push(_e.$),q.push(_e._$),xt=Ve[de[de.length-2]][de[de.length-1]],de.push(xt);break;case 3:return!0}}return!0},"parse")},ee=(function(){var K={EOF:1,parseError:o(function(Q,de){if(this.yy.parser)this.yy.parser.parseError(Q,de);else throw new Error(Q)},"parseError"),setInput:o(function(ae,Q){return this.yy=Q||this.yy||{},this._input=ae,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var ae=this._input[0];this.yytext+=ae,this.yyleng++,this.offset++,this.match+=ae,this.matched+=ae;var Q=ae.match(/(?:\r\n?|\n).*/g);return Q?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ae},"input"),unput:o(function(ae){var Q=ae.length,de=ae.split(/(?:\r\n?|\n)/g);this._input=ae+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Q),this.offset-=Q;var ne=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),de.length-1&&(this.yylineno-=de.length-1);var Te=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:de?(de.length===ne.length?this.yylloc.first_column:0)+ne[ne.length-de.length].length-de[0].length:this.yylloc.first_column-Q},this.options.ranges&&(this.yylloc.range=[Te[0],Te[0]+this.yyleng-Q]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(ae){this.unput(this.match.slice(ae))},"less"),pastInput:o(function(){var ae=this.matched.substr(0,this.matched.length-this.match.length);return(ae.length>20?"...":"")+ae.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var ae=this.match;return ae.length<20&&(ae+=this._input.substr(0,20-ae.length)),(ae.substr(0,20)+(ae.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var ae=this.pastInput(),Q=new Array(ae.length+1).join("-");return ae+this.upcomingInput()+` -`+Q+"^"},"showPosition"),test_match:o(function(ae,Q){var de,ne,Te;if(this.options.backtrack_lexer&&(Te={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Te.yylloc.range=this.yylloc.range.slice(0))),ne=ae[0].match(/(?:\r\n?|\n).*/g),ne&&(this.yylineno+=ne.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ne?ne[ne.length-1].length-ne[ne.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ae[0].length},this.yytext+=ae[0],this.match+=ae[0],this.matches=ae,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ae[0].length),this.matched+=ae[0],de=this.performAction.call(this,this.yy,this,Q,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),de)return de;if(this._backtrack){for(var q in Te)this[q]=Te[q];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ae,Q,de,ne;this._more||(this.yytext="",this.match="");for(var Te=this._currentRules(),q=0;qQ[0].length)){if(Q=de,ne=q,this.options.backtrack_lexer){if(ae=this.test_match(de,Te[q]),ae!==!1)return ae;if(this._backtrack){Q=!1;continue}else return!1}else if(!this.options.flex)break}return Q?(ae=this.test_match(Q,Te[ne]),ae!==!1?ae:!1):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:o(function(){var Q=this.next();return Q||this.lex()},"lex"),begin:o(function(Q){this.conditionStack.push(Q)},"begin"),popState:o(function(){var Q=this.conditionStack.length-1;return Q>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Q){return Q=this.conditionStack.length-1-Math.abs(Q||0),Q>=0?this.conditionStack[Q]:"INITIAL"},"topState"),pushState:o(function(Q){this.begin(Q)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Q,de,ne,Te){var q=Te;switch(ne){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 59;case 25:return 56;case 26:return 56;case 27:return 60;case 28:break;case 29:return this.popState(),19;break;case 30:return de.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;break;case 34:return this.popState(),10;break;case 35:break;case 36:return 13;case 37:return 42;case 38:return 49;case 39:return this.begin("style"),37;break;case 40:return 43;case 41:return 63;case 42:return 65;case 43:return 65;case 44:return 65;case 45:return 63;case 46:return 63;case 47:return 64;case 48:return 64;case 49:return 64;case 50:return 64;case 51:return 64;case 52:return 65;case 53:return 64;case 54:return 65;case 55:return 66;case 56:return 66;case 57:return 66;case 58:return 66;case 59:return 63;case 60:return 64;case 61:return 65;case 62:return 67;case 63:return 68;case 64:return 69;case 65:return 69;case 66:return 68;case 67:return 68;case 68:return 68;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 73:return de.yytext[0];case 74:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74],inclusive:!0}}};return K})();re.lexer=ee;function Z(){this.yy={}}return o(Z,"Parser"),Z.prototype=re,re.Parser=Z,new Z})();UI.parser=UI;Tfe=UI});var _E,kfe=N(()=>{"use strict";pt();Xt();ci();tr();_E=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=Rr;this.getAccTitle=Mr;this.setAccDescription=Ir;this.getAccDescription=Or;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getConfig=o(()=>ge().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{o(this,"ErDB")}addEntity(e,r=""){return this.entities.has(e)?!this.entities.get(e)?.alias&&r&&(this.entities.get(e).alias=r,X.info(`Add alias '${r}' to entity '${e}'`)):(this.entities.set(e,{id:`entity-${e}-${this.entities.size}`,label:e,attributes:[],alias:r,shape:"erBox",look:ge().look??"default",cssClasses:"default",cssStyles:[]}),X.info("Added new entity :",e)),this.entities.get(e)}getEntity(e){return this.entities.get(e)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(e,r){let n=this.addEntity(e),i;for(i=r.length-1;i>=0;i--)r[i].keys||(r[i].keys=[]),r[i].comment||(r[i].comment=""),n.attributes.push(r[i]),X.debug("Added attribute ",r[i].name)}addRelationship(e,r,n,i){let a=this.entities.get(e),s=this.entities.get(n);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:i};this.relationships.push(l),X.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(e){this.direction=e}getCompiledStyles(e){let r=[];for(let n of e){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(e,r){for(let n of e){let i=this.entities.get(n);if(!r||!i)return;for(let a of r)i.cssStyles.push(a)}}addClass(e,r){e.forEach(n=>{let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)})})}setClass(e,r){for(let n of e){let i=this.entities.get(n);if(i)for(let a of r)i.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],Sr()}getData(){let e=[],r=[],n=ge();for(let a of this.entities.keys()){let s=this.entities.get(a);s&&(s.cssCompiledStyles=this.getCompiledStyles(s.cssClasses.split(" ")),e.push(s))}let i=0;for(let a of this.relationships){let s={id:xc(a.entityA,a.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:a.entityA,end:a.entityB,label:a.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:a.relSpec.cardB.toLowerCase(),arrowTypeEnd:a.relSpec.cardA.toLowerCase(),pattern:a.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:"TB"}}}});var HI={};dr(HI,{draw:()=>lWe});var lWe,Efe=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();yr();lWe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing er diagram (unified)",e);let{securityLevel:i,er:a,layout:s}=ge(),l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=$c(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=n.db.getDirection(),l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=e,await Qo(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let h=u.selectAll('[id*="-background"]');Array.from(h).length>0&&h.each(function(){let d=qe(this),m=d.attr("id").replace("-background",""),g=u.select(`#${CSS.escape(m)}`);if(!g.empty()){let y=g.attr("transform");d.attr("transform",y)}});let f=8;qt.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,f,"erDiagram",a?.useMaxWidth??!0)},"draw")});var cWe,uWe,Sfe,Cfe=N(()=>{"use strict";eo();cWe=o((t,e)=>{let r=ld,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Ka(n,i,a,e)},"fade"),uWe=o(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: ${cWe(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"),Sfe=uWe});var Afe={};dr(Afe,{diagram:()=>hWe});var hWe,_fe=N(()=>{"use strict";wfe();kfe();Efe();Cfe();hWe={parser:Tfe,get db(){return new _E},renderer:HI,styles:Sfe}});function li(t){return typeof t=="object"&&t!==null&&typeof t.$type=="string"}function Ta(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"}function qI(t){return typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.type=="string"&&typeof t.path=="string"}function _p(t){return typeof t=="object"&&t!==null&&li(t.container)&&Ta(t.reference)&&typeof t.message=="string"}function Ol(t){return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function If(t){return typeof t=="object"&&t!==null&&typeof t.tokenType=="object"}function Lx(t){return Ol(t)&&typeof t.fullText=="string"}var Ap,Pl=N(()=>{"use strict";o(li,"isAstNode");o(Ta,"isReference");o(qI,"isAstNodeDescription");o(_p,"isLinkingError");Ap=class{static{o(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,r){return li(e)&&this.isSubtype(e.$type,r)}isSubtype(e,r){if(e===r)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[r];if(i!==void 0)return i;{let a=this.computeIsSubtype(e,r);return n[r]=a,a}}getAllSubTypes(e){let r=this.allSubtypes[e];if(r)return r;{let n=this.getAllTypes(),i=[];for(let a of n)this.isSubtype(a,e)&&i.push(a);return this.allSubtypes[e]=i,i}}};o(Ol,"isCompositeCstNode");o(If,"isLeafCstNode");o(Lx,"isRootCstNode")});function mWe(t){return typeof t=="string"?t:typeof t>"u"?"undefined":typeof t.toString=="function"?t.toString():Object.prototype.toString.call(t)}function DE(t){return!!t&&typeof t[Symbol.iterator]=="function"}function an(...t){if(t.length===1){let e=t[0];if(e instanceof po)return e;if(DE(e))return new po(()=>e[Symbol.iterator](),r=>r.next());if(typeof e.length=="number")return new po(()=>({index:0}),r=>r.index1?new po(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){let r=e.iterator.next();if(!r.done)return r;e.iterator=void 0}if(e.array){if(e.arrIndex{"use strict";po=class t{static{o(this,"StreamImpl")}constructor(e,r){this.startFn=e,this.nextFn=r}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),r=0,n=e.next();for(;!n.done;)r++,n=e.next();return r}toArray(){let e=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,r){let n=this.map(i=>[e?e(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(e){return new t(()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return za})}join(e=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=e),n+=mWe(i.value)),a=!0;while(!i.done);return n}indexOf(e,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===e)return i;a=n.next(),i++}return-1}every(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(!e(n.value))return!1;n=r.next()}return!0}some(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return!0;n=r.next()}return!1}forEach(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)e(i.value,n),i=r.next(),n++}map(e){return new t(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?za:{done:!1,value:e(i)}})}filter(e){return new t(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&e(n.value))return n;while(!n.done);return za})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=e(i,a.value),a=n.next();return i}reduceRight(e,r){return this.recursiveReduce(this.iterator(),e,r)}recursiveReduce(e,r,n){let i=e.next();if(i.done)return n;let a=this.recursiveReduce(e,r,n);return a===void 0?i.value:r(a,i.value)}find(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return n.value;n=r.next()}}findIndex(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(e(i.value))return n;i=r.next(),n++}return-1}includes(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===e)return!0;n=r.next()}return!1}flatMap(e){return new t(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=e(i);if(DE(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return za})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let r=e>1?this.flat(e-1):this;return new t(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(DE(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return za})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(e=1){return new t(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>e?za:this.nextFn(r.state)))}distinct(e){return new t(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=e?e(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return za})}exclude(e,r){let n=new Set;for(let i of e){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};o(mWe,"toString");o(DE,"isIterable");Rx=new po(()=>{},()=>za),za=Object.freeze({done:!0,value:void 0});o(an,"stream");Gc=class extends po{static{o(this,"TreeStreamImpl")}constructor(e,r,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[r(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let s=i.iterators[i.iterators.length-1].next();if(s.done)i.iterators.pop();else return i.iterators.push(r(s.value)[Symbol.iterator]()),s}return za})}iterator(){let e={state:this.startFn(),next:o(()=>this.nextFn(e.state),"next"),prune:o(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(t){function e(a){return a.reduce((s,l)=>s+l,0)}o(e,"sum"),t.sum=e;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),t.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min"),t.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),t.max=i})(vg||(vg={}))});var RE={};dr(RE,{DefaultNameRegexp:()=>LE,RangeComparison:()=>Vc,compareRange:()=>Rfe,findCommentNode:()=>jI,findDeclarationNodeAtOffset:()=>yWe,findLeafNodeAtOffset:()=>KI,findLeafNodeBeforeOffset:()=>Nfe,flattenCst:()=>gWe,getInteriorNodes:()=>bWe,getNextNode:()=>vWe,getPreviousNode:()=>Ife,getStartlineNode:()=>xWe,inRange:()=>XI,isChildNode:()=>YI,isCommentNode:()=>WI,streamCst:()=>Dp,toDocumentSegment:()=>Lp,tokenToRange:()=>xg});function Dp(t){return new Gc(t,e=>Ol(e)?e.content:[],{includeRoot:!0})}function gWe(t){return Dp(t).filter(If)}function YI(t,e){for(;t.container;)if(t=t.container,t===e)return!0;return!1}function xg(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}function Lp(t){if(!t)return;let{offset:e,end:r,range:n}=t;return{range:n,offset:e,end:r,length:r-e}}function Rfe(t,e){if(t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>=e.end.character)return Vc.After;let r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,n=t.end.lineVc.After}function yWe(t,e,r=LE){if(t){if(e>0){let n=e-t.offset,i=t.text.charAt(n);r.test(i)||e--}return KI(t,e)}}function jI(t,e){if(t){let r=Ife(t,!0);if(r&&WI(r,e))return r;if(Lx(t)){let n=t.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=t.content[i];if(WI(a,e))return a}}}}function WI(t,e){return If(t)&&e.includes(t.tokenType.name)}function KI(t,e){if(If(t))return t;if(Ol(t)){let r=Mfe(t,e,!1);if(r)return KI(r,e)}}function Nfe(t,e){if(If(t))return t;if(Ol(t)){let r=Mfe(t,e,!0);if(r)return Nfe(r,e)}}function Mfe(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=t.content[s];if(l.offset<=e&&l.end>e)return l;l.end<=e?(a=r?l:void 0,n=s+1):i=s-1}return a}function Ife(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t);for(;n>0;){n--;let i=r.content[n];if(e||!i.hidden)return i}t=r}}function vWe(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t),i=r.content.length-1;for(;n{"use strict";Pl();Ys();o(Dp,"streamCst");o(gWe,"flattenCst");o(YI,"isChildNode");o(xg,"tokenToRange");o(Lp,"toDocumentSegment");(function(t){t[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"})(Vc||(Vc={}));o(Rfe,"compareRange");o(XI,"inRange");LE=/^[\w\p{L}]$/u;o(yWe,"findDeclarationNodeAtOffset");o(jI,"findCommentNode");o(WI,"isCommentNode");o(KI,"findLeafNodeAtOffset");o(Nfe,"findLeafNodeBeforeOffset");o(Mfe,"binarySearch");o(Ife,"getPreviousNode");o(vWe,"getNextNode");o(xWe,"getStartlineNode");o(bWe,"getInteriorNodes");o(TWe,"getCommonParent");o(Lfe,"getParentChain")});function Uc(t){throw new Error("Error! The input value was not handled.")}var Rp,NE=N(()=>{"use strict";Rp=class extends Error{static{o(this,"ErrorWithLocation")}constructor(e,r){super(e?`${r} at ${e.range.start.line}:${e.range.start.character}`:r)}};o(Uc,"assertUnreachable")});var zx={};dr(zx,{AbstractElement:()=>wg,AbstractRule:()=>bg,AbstractType:()=>Tg,Action:()=>Gg,Alternatives:()=>Vg,ArrayLiteral:()=>kg,ArrayType:()=>Eg,Assignment:()=>Ug,BooleanLiteral:()=>Sg,CharacterRange:()=>Hg,Condition:()=>Nx,Conjunction:()=>Cg,CrossReference:()=>qg,Disjunction:()=>Ag,EndOfFile:()=>Wg,Grammar:()=>_g,GrammarImport:()=>Ix,Group:()=>Yg,InferredType:()=>Dg,Interface:()=>Lg,Keyword:()=>Xg,LangiumGrammarAstReflection:()=>i1,LangiumGrammarTerminals:()=>wWe,NamedArgument:()=>Ox,NegatedToken:()=>jg,Negation:()=>Rg,NumberLiteral:()=>Ng,Parameter:()=>Mg,ParameterReference:()=>Ig,ParserRule:()=>Og,ReferenceType:()=>Pg,RegexToken:()=>Kg,ReturnType:()=>Px,RuleCall:()=>Qg,SimpleType:()=>Bg,StringLiteral:()=>Fg,TerminalAlternatives:()=>Zg,TerminalGroup:()=>Jg,TerminalRule:()=>Np,TerminalRuleCall:()=>e1,Type:()=>$g,TypeAttribute:()=>Bx,TypeDefinition:()=>ME,UnionType:()=>zg,UnorderedGroup:()=>t1,UntilToken:()=>r1,ValueLiteral:()=>Mx,Wildcard:()=>n1,isAbstractElement:()=>Fx,isAbstractRule:()=>kWe,isAbstractType:()=>EWe,isAction:()=>qu,isAlternatives:()=>BE,isArrayLiteral:()=>DWe,isArrayType:()=>QI,isAssignment:()=>Fl,isBooleanLiteral:()=>ZI,isCharacterRange:()=>sO,isCondition:()=>SWe,isConjunction:()=>JI,isCrossReference:()=>Mp,isDisjunction:()=>eO,isEndOfFile:()=>oO,isFeatureName:()=>CWe,isGrammar:()=>LWe,isGrammarImport:()=>RWe,isGroup:()=>Of,isInferredType:()=>IE,isInterface:()=>OE,isKeyword:()=>Zo,isNamedArgument:()=>NWe,isNegatedToken:()=>lO,isNegation:()=>tO,isNumberLiteral:()=>MWe,isParameter:()=>IWe,isParameterReference:()=>rO,isParserRule:()=>Ga,isPrimitiveType:()=>Ofe,isReferenceType:()=>nO,isRegexToken:()=>cO,isReturnType:()=>iO,isRuleCall:()=>$l,isSimpleType:()=>PE,isStringLiteral:()=>OWe,isTerminalAlternatives:()=>uO,isTerminalGroup:()=>hO,isTerminalRule:()=>mo,isTerminalRuleCall:()=>FE,isType:()=>$x,isTypeAttribute:()=>PWe,isTypeDefinition:()=>AWe,isUnionType:()=>aO,isUnorderedGroup:()=>$E,isUntilToken:()=>fO,isValueLiteral:()=>_We,isWildcard:()=>dO,reflection:()=>pr});function kWe(t){return pr.isInstance(t,bg)}function EWe(t){return pr.isInstance(t,Tg)}function SWe(t){return pr.isInstance(t,Nx)}function CWe(t){return Ofe(t)||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"||typeof t=="string"&&/\^?[_a-zA-Z][\w_]*/.test(t)}function Ofe(t){return t==="string"||t==="number"||t==="boolean"||t==="Date"||t==="bigint"}function AWe(t){return pr.isInstance(t,ME)}function _We(t){return pr.isInstance(t,Mx)}function Fx(t){return pr.isInstance(t,wg)}function DWe(t){return pr.isInstance(t,kg)}function QI(t){return pr.isInstance(t,Eg)}function ZI(t){return pr.isInstance(t,Sg)}function JI(t){return pr.isInstance(t,Cg)}function eO(t){return pr.isInstance(t,Ag)}function LWe(t){return pr.isInstance(t,_g)}function RWe(t){return pr.isInstance(t,Ix)}function IE(t){return pr.isInstance(t,Dg)}function OE(t){return pr.isInstance(t,Lg)}function NWe(t){return pr.isInstance(t,Ox)}function tO(t){return pr.isInstance(t,Rg)}function MWe(t){return pr.isInstance(t,Ng)}function IWe(t){return pr.isInstance(t,Mg)}function rO(t){return pr.isInstance(t,Ig)}function Ga(t){return pr.isInstance(t,Og)}function nO(t){return pr.isInstance(t,Pg)}function iO(t){return pr.isInstance(t,Px)}function PE(t){return pr.isInstance(t,Bg)}function OWe(t){return pr.isInstance(t,Fg)}function mo(t){return pr.isInstance(t,Np)}function $x(t){return pr.isInstance(t,$g)}function PWe(t){return pr.isInstance(t,Bx)}function aO(t){return pr.isInstance(t,zg)}function qu(t){return pr.isInstance(t,Gg)}function BE(t){return pr.isInstance(t,Vg)}function Fl(t){return pr.isInstance(t,Ug)}function sO(t){return pr.isInstance(t,Hg)}function Mp(t){return pr.isInstance(t,qg)}function oO(t){return pr.isInstance(t,Wg)}function Of(t){return pr.isInstance(t,Yg)}function Zo(t){return pr.isInstance(t,Xg)}function lO(t){return pr.isInstance(t,jg)}function cO(t){return pr.isInstance(t,Kg)}function $l(t){return pr.isInstance(t,Qg)}function uO(t){return pr.isInstance(t,Zg)}function hO(t){return pr.isInstance(t,Jg)}function FE(t){return pr.isInstance(t,e1)}function $E(t){return pr.isInstance(t,t1)}function fO(t){return pr.isInstance(t,r1)}function dO(t){return pr.isInstance(t,n1)}var wWe,bg,Tg,Nx,ME,Mx,wg,kg,Eg,Sg,Cg,Ag,_g,Ix,Dg,Lg,Ox,Rg,Ng,Mg,Ig,Og,Pg,Px,Bg,Fg,Np,$g,Bx,zg,Gg,Vg,Ug,Hg,qg,Wg,Yg,Xg,jg,Kg,Qg,Zg,Jg,e1,t1,r1,n1,i1,pr,Hc=N(()=>{"use strict";Pl();wWe={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]*/},bg="AbstractRule";o(kWe,"isAbstractRule");Tg="AbstractType";o(EWe,"isAbstractType");Nx="Condition";o(SWe,"isCondition");o(CWe,"isFeatureName");o(Ofe,"isPrimitiveType");ME="TypeDefinition";o(AWe,"isTypeDefinition");Mx="ValueLiteral";o(_We,"isValueLiteral");wg="AbstractElement";o(Fx,"isAbstractElement");kg="ArrayLiteral";o(DWe,"isArrayLiteral");Eg="ArrayType";o(QI,"isArrayType");Sg="BooleanLiteral";o(ZI,"isBooleanLiteral");Cg="Conjunction";o(JI,"isConjunction");Ag="Disjunction";o(eO,"isDisjunction");_g="Grammar";o(LWe,"isGrammar");Ix="GrammarImport";o(RWe,"isGrammarImport");Dg="InferredType";o(IE,"isInferredType");Lg="Interface";o(OE,"isInterface");Ox="NamedArgument";o(NWe,"isNamedArgument");Rg="Negation";o(tO,"isNegation");Ng="NumberLiteral";o(MWe,"isNumberLiteral");Mg="Parameter";o(IWe,"isParameter");Ig="ParameterReference";o(rO,"isParameterReference");Og="ParserRule";o(Ga,"isParserRule");Pg="ReferenceType";o(nO,"isReferenceType");Px="ReturnType";o(iO,"isReturnType");Bg="SimpleType";o(PE,"isSimpleType");Fg="StringLiteral";o(OWe,"isStringLiteral");Np="TerminalRule";o(mo,"isTerminalRule");$g="Type";o($x,"isType");Bx="TypeAttribute";o(PWe,"isTypeAttribute");zg="UnionType";o(aO,"isUnionType");Gg="Action";o(qu,"isAction");Vg="Alternatives";o(BE,"isAlternatives");Ug="Assignment";o(Fl,"isAssignment");Hg="CharacterRange";o(sO,"isCharacterRange");qg="CrossReference";o(Mp,"isCrossReference");Wg="EndOfFile";o(oO,"isEndOfFile");Yg="Group";o(Of,"isGroup");Xg="Keyword";o(Zo,"isKeyword");jg="NegatedToken";o(lO,"isNegatedToken");Kg="RegexToken";o(cO,"isRegexToken");Qg="RuleCall";o($l,"isRuleCall");Zg="TerminalAlternatives";o(uO,"isTerminalAlternatives");Jg="TerminalGroup";o(hO,"isTerminalGroup");e1="TerminalRuleCall";o(FE,"isTerminalRuleCall");t1="UnorderedGroup";o($E,"isUnorderedGroup");r1="UntilToken";o(fO,"isUntilToken");n1="Wildcard";o(dO,"isWildcard");i1=class extends Ap{static{o(this,"LangiumGrammarAstReflection")}getAllTypes(){return[wg,bg,Tg,Gg,Vg,kg,Eg,Ug,Sg,Hg,Nx,Cg,qg,Ag,Wg,_g,Ix,Yg,Dg,Lg,Xg,Ox,jg,Rg,Ng,Mg,Ig,Og,Pg,Kg,Px,Qg,Bg,Fg,Zg,Jg,Np,e1,$g,Bx,ME,zg,t1,r1,Mx,n1]}computeIsSubtype(e,r){switch(e){case Gg:case Vg:case Ug:case Hg:case qg:case Wg:case Yg:case Xg:case jg:case Kg:case Qg:case Zg:case Jg:case e1:case t1:case r1:case n1:return this.isSubtype(wg,r);case kg:case Ng:case Fg:return this.isSubtype(Mx,r);case Eg:case Pg:case Bg:case zg:return this.isSubtype(ME,r);case Sg:return this.isSubtype(Nx,r)||this.isSubtype(Mx,r);case Cg:case Ag:case Rg:case Ig:return this.isSubtype(Nx,r);case Dg:case Lg:case $g:return this.isSubtype(Tg,r);case Og:return this.isSubtype(bg,r)||this.isSubtype(Tg,r);case Np:return this.isSubtype(bg,r);default:return!1}}getReferenceType(e){let r=`${e.container.$type}:${e.property}`;switch(r){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return Tg;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return bg;case"Grammar:usedGrammars":return _g;case"NamedArgument:parameter":case"ParameterReference:parameter":return Mg;case"TerminalRuleCall:rule":return Np;default:throw new Error(`${r} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case wg:return{name:wg,properties:[{name:"cardinality"},{name:"lookahead"}]};case kg:return{name:kg,properties:[{name:"elements",defaultValue:[]}]};case Eg:return{name:Eg,properties:[{name:"elementType"}]};case Sg:return{name:Sg,properties:[{name:"true",defaultValue:!1}]};case Cg:return{name:Cg,properties:[{name:"left"},{name:"right"}]};case Ag:return{name:Ag,properties:[{name:"left"},{name:"right"}]};case _g:return{name:_g,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 Ix:return{name:Ix,properties:[{name:"path"}]};case Dg:return{name:Dg,properties:[{name:"name"}]};case Lg:return{name:Lg,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case Ox:return{name:Ox,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Rg:return{name:Rg,properties:[{name:"value"}]};case Ng:return{name:Ng,properties:[{name:"value"}]};case Mg:return{name:Mg,properties:[{name:"name"}]};case Ig:return{name:Ig,properties:[{name:"parameter"}]};case Og:return{name:Og,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 Pg:return{name:Pg,properties:[{name:"referenceType"}]};case Px:return{name:Px,properties:[{name:"name"}]};case Bg:return{name:Bg,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case Fg:return{name:Fg,properties:[{name:"value"}]};case Np:return{name:Np,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case $g:return{name:$g,properties:[{name:"name"},{name:"type"}]};case Bx:return{name:Bx,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case zg:return{name:zg,properties:[{name:"types",defaultValue:[]}]};case Gg:return{name:Gg,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Vg:return{name:Vg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Ug:return{name:Ug,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Hg:return{name:Hg,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case qg:return{name:qg,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case Wg:return{name:Wg,properties:[{name:"cardinality"},{name:"lookahead"}]};case Yg:return{name:Yg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case Xg:return{name:Xg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case jg:return{name:jg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Kg:return{name:Kg,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case Qg:return{name:Qg,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case Zg:return{name:Zg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Jg:return{name:Jg,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case e1:return{name:e1,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case t1:return{name:t1,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case r1:return{name:r1,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case n1:return{name:n1,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}},pr=new i1});var GE={};dr(GE,{assignMandatoryProperties:()=>gO,copyAstNode:()=>mO,findLocalReferences:()=>FWe,findRootNode:()=>Gx,getContainerOfType:()=>Ip,getDocument:()=>Va,hasContainerOfType:()=>BWe,linkContentToContainer:()=>zE,streamAllContents:()=>qc,streamAst:()=>Jo,streamContents:()=>Vx,streamReferences:()=>a1});function zE(t){for(let[e,r]of Object.entries(t))e.startsWith("$")||(Array.isArray(r)?r.forEach((n,i)=>{li(n)&&(n.$container=t,n.$containerProperty=e,n.$containerIndex=i)}):li(r)&&(r.$container=t,r.$containerProperty=e))}function Ip(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}function BWe(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}function Va(t){let r=Gx(t).$document;if(!r)throw new Error("AST node has no document.");return r}function Gx(t){for(;t.$container;)t=t.$container;return t}function Vx(t,e){if(!t)throw new Error("Node must be an AstNode.");let r=e?.range;return new po(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexVx(r,e))}function Jo(t,e){if(t){if(e?.range&&!pO(t,e.range))return new Gc(t,()=>[])}else throw new Error("Root node must be an AstNode.");return new Gc(t,r=>Vx(r,e),{includeRoot:!0})}function pO(t,e){var r;if(!e)return!0;let n=(r=t.$cstNode)===null||r===void 0?void 0:r.range;return n?XI(n,e):!1}function a1(t){return new po(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex{a1(n).forEach(i=>{i.reference.ref===t&&r.push(i.reference)})}),an(r)}function gO(t,e){let r=t.getTypeMetaData(e.$type),n=e;for(let i of r.properties)i.defaultValue!==void 0&&n[i.name]===void 0&&(n[i.name]=Pfe(i.defaultValue))}function Pfe(t){return Array.isArray(t)?[...t.map(Pfe)]:t}function mO(t,e){let r={$type:t.$type};for(let[n,i]of Object.entries(t))if(!n.startsWith("$"))if(li(i))r[n]=mO(i,e);else if(Ta(i))r[n]=e(r,n,i.$refNode,i.$refText);else if(Array.isArray(i)){let a=[];for(let s of i)li(s)?a.push(mO(s,e)):Ta(s)?a.push(e(r,n,s.$refNode,s.$refText)):a.push(s);r[n]=a}else r[n]=i;return zE(r),r}var hs=N(()=>{"use strict";Pl();Ys();Bl();o(zE,"linkContentToContainer");o(Ip,"getContainerOfType");o(BWe,"hasContainerOfType");o(Va,"getDocument");o(Gx,"findRootNode");o(Vx,"streamContents");o(qc,"streamAllContents");o(Jo,"streamAst");o(pO,"isAstNodeInRange");o(a1,"streamReferences");o(FWe,"findLocalReferences");o(gO,"assignMandatoryProperties");o(Pfe,"copyDefaultValue");o(mO,"copyAstNode")});function lr(t){return t.charCodeAt(0)}function VE(t,e){Array.isArray(t)?t.forEach(function(r){e.push(r)}):e.push(t)}function s1(t,e){if(t[e]===!0)throw"duplicate flag "+e;let r=t[e];t[e]=!0}function Op(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}function Ux(){throw Error("Internal Error - Should never get here!")}function yO(t){return t.type==="Character"}var vO=N(()=>{"use strict";o(lr,"cc");o(VE,"insertToSet");o(s1,"addFlag");o(Op,"ASSERT_EXISTS");o(Ux,"ASSERT_NEVER_REACH_HERE");o(yO,"isCharacter")});var Hx,qx,xO,Bfe=N(()=>{"use strict";vO();Hx=[];for(let t=lr("0");t<=lr("9");t++)Hx.push(t);qx=[lr("_")].concat(Hx);for(let t=lr("a");t<=lr("z");t++)qx.push(t);for(let t=lr("A");t<=lr("Z");t++)qx.push(t);xO=[lr(" "),lr("\f"),lr(` -`),lr("\r"),lr(" "),lr("\v"),lr(" "),lr("\xA0"),lr("\u1680"),lr("\u2000"),lr("\u2001"),lr("\u2002"),lr("\u2003"),lr("\u2004"),lr("\u2005"),lr("\u2006"),lr("\u2007"),lr("\u2008"),lr("\u2009"),lr("\u200A"),lr("\u2028"),lr("\u2029"),lr("\u202F"),lr("\u205F"),lr("\u3000"),lr("\uFEFF")]});var $We,UE,zWe,Pp,Ffe=N(()=>{"use strict";vO();Bfe();$We=/[0-9a-fA-F]/,UE=/[0-9]/,zWe=/[1-9]/,Pp=class{static{o(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let r=this.disjunction();this.consumeChar("/");let n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":s1(n,"global");break;case"i":s1(n,"ignoreCase");break;case"m":s1(n,"multiLine");break;case"u":s1(n,"unicode");break;case"y":s1(n,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:r,loc:this.loc(0)}}disjunction(){let e=[],r=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(r)}}alternative(){let e=[],r=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(r)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let 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 r;switch(this.popChar()){case"=":r="Lookahead";break;case"!":r="NegativeLookahead";break}Op(r);let n=this.disjunction();return this.consumeChar(")"),{type:r,value:n,loc:this.loc(e)}}return Ux()}quantifier(e=!1){let r,n=this.idx;switch(this.popChar()){case"*":r={atLeast:0,atMost:1/0};break;case"+":r={atLeast:1,atMost:1/0};break;case"?":r={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":r={atLeast:i,atMost:i};break;case",":let a;this.isDigit()?(a=this.integerIncludingZero(),r={atLeast:i,atMost:a}):r={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&r===void 0)return;Op(r);break}if(!(e===!0&&r===void 0)&&Op(r))return this.peekChar(0)==="?"?(this.consumeChar("?"),r.greedy=!1):r.greedy=!0,r.type="Quantifier",r.loc=this.loc(n),r}atom(){let e,r=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Op(e)?(e.loc=this.loc(r),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):Ux()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[lr(` -`),lr("\r"),lr("\u2028"),lr("\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 e,r=!1;switch(this.popChar()){case"d":e=Hx;break;case"D":e=Hx,r=!0;break;case"s":e=xO;break;case"S":e=xO,r=!0;break;case"w":e=qx;break;case"W":e=qx,r=!0;break}return Op(e)?{type:"Set",value:e,complement:r}:Ux()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=lr("\f");break;case"n":e=lr(` -`);break;case"r":e=lr("\r");break;case"t":e=lr(" ");break;case"v":e=lr("\v");break}return Op(e)?{type:"Character",value:e}:Ux()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:lr("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:lr(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:lr(e)}}}characterClass(){let e=[],r=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),r=!0);this.isClassAtom();){let n=this.classAtom(),i=n.type==="Character";if(yO(n)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),s=a.type==="Character";if(yO(a)){if(a.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}});var Wc,$fe=N(()=>{"use strict";Wc=class{static{o(this,"BaseRegExpVisitor")}visitChildren(e){for(let r in e){let n=e[r];e.hasOwnProperty(r)&&(n.type!==void 0?this.visit(n):Array.isArray(n)&&n.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}});var Wx=N(()=>{"use strict";Ffe();$fe()});var HE={};dr(HE,{NEWLINE_REGEXP:()=>TO,escapeRegExp:()=>Fp,getCaseInsensitivePattern:()=>kO,getTerminalParts:()=>GWe,isMultilineComment:()=>wO,isWhitespace:()=>o1,partialMatches:()=>EO,partialRegExp:()=>Vfe,whitespaceCharacters:()=>Gfe});function GWe(t){try{typeof t!="string"&&(t=t.source),t=`/${t}/`;let e=zfe.pattern(t),r=[];for(let n of e.value.value)Bp.reset(t),Bp.visit(n),r.push({start:Bp.startRegexp,end:Bp.endRegex});return r}catch{return[]}}function wO(t){try{return typeof t=="string"&&(t=new RegExp(t)),t=t.toString(),Bp.reset(t),Bp.visit(zfe.pattern(t)),Bp.multiline}catch{return!1}}function o1(t){let e=typeof t=="string"?new RegExp(t):t;return Gfe.some(r=>e.test(r))}function Fp(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function kO(t){return Array.prototype.map.call(t,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:Fp(e)).join("")}function EO(t,e){let r=Vfe(t),n=e.match(r);return!!n&&n[0].length>0}function Vfe(t){typeof t=="string"&&(t=new RegExp(t));let e=t,r=t.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional");n",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process"),new RegExp(i(),t.flags)}var TO,zfe,bO,Bp,Gfe,l1=N(()=>{"use strict";Wx();TO=/\r?\n/gm,zfe=new Pp,bO=class extends Wc{static{o(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let r=String.fromCharCode(e.value);if(!this.multiline&&r===` -`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let n=Fp(r);this.endRegexpStack.push(n),this.isStarting&&(this.startRegexp+=n)}}visitSet(e){if(!this.multiline){let r=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(r);this.multiline=!!` -`.match(n)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},Bp=new bO;o(GWe,"getTerminalParts");o(wO,"isMultilineComment");Gfe=`\f -\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(o1,"isWhitespace");o(Fp,"escapeRegExp");o(kO,"getCaseInsensitivePattern");o(EO,"partialMatches");o(Vfe,"partialRegExp")});var WE={};dr(WE,{findAssignment:()=>MO,findNameAssignment:()=>qE,findNodeForKeyword:()=>RO,findNodeForProperty:()=>Xx,findNodesForKeyword:()=>VWe,findNodesForKeywordInternal:()=>NO,findNodesForProperty:()=>DO,getActionAtElement:()=>Yfe,getActionType:()=>jfe,getAllReachableRules:()=>Yx,getCrossReferenceTerminal:()=>AO,getEntryRule:()=>Ufe,getExplicitRuleType:()=>c1,getHiddenRules:()=>Hfe,getRuleType:()=>IO,getRuleTypeName:()=>YWe,getTypeName:()=>Kx,isArrayCardinality:()=>HWe,isArrayOperator:()=>qWe,isCommentTerminal:()=>_O,isDataType:()=>WWe,isDataTypeRule:()=>jx,isOptionalCardinality:()=>UWe,terminalRegex:()=>u1});function Ufe(t){return t.rules.find(e=>Ga(e)&&e.entry)}function Hfe(t){return t.rules.filter(e=>mo(e)&&e.hidden)}function Yx(t,e){let r=new Set,n=Ufe(t);if(!n)return new Set(t.rules);let i=[n].concat(Hfe(t));for(let s of i)qfe(s,r,e);let a=new Set;for(let s of t.rules)(r.has(s.name)||mo(s)&&s.hidden)&&a.add(s);return a}function qfe(t,e,r){e.add(t.name),qc(t).forEach(n=>{if($l(n)||r&&FE(n)){let i=n.rule.ref;i&&!e.has(i.name)&&qfe(i,e,r)}})}function AO(t){if(t.terminal)return t.terminal;if(t.type.ref){let e=qE(t.type.ref);return e?.terminal}}function _O(t){return t.hidden&&!o1(u1(t))}function DO(t,e){return!t||!e?[]:LO(t,e,t.astNode,!0)}function Xx(t,e,r){if(!t||!e)return;let n=LO(t,e,t.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function LO(t,e,r,n){if(!n){let i=Ip(t.grammarSource,Fl);if(i&&i.feature===e)return[t]}return Ol(t)&&t.astNode===r?t.content.flatMap(i=>LO(i,e,r,!1)):[]}function VWe(t,e){return t?NO(t,e,t?.astNode):[]}function RO(t,e,r){if(!t)return;let n=NO(t,e,t?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function NO(t,e,r){if(t.astNode!==r)return[];if(Zo(t.grammarSource)&&t.grammarSource.value===e)return[t];let n=Dp(t).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Zo(s.grammarSource)&&s.grammarSource.value===e&&a.push(s):n.prune()}while(!i.done);return a}function MO(t){var e;let r=t.astNode;for(;r===((e=t.container)===null||e===void 0?void 0:e.astNode);){let n=Ip(t.grammarSource,Fl);if(n)return n;t=t.container}}function qE(t){let e=t;return IE(e)&&(qu(e.$container)?e=e.$container.$container:Ga(e.$container)?e=e.$container:Uc(e.$container)),Wfe(t,e,new Map)}function Wfe(t,e,r){var n;function i(a,s){let l;return Ip(a,Fl)||(l=Wfe(s,s,r)),r.set(t,l),l}if(o(i,"go"),r.has(t))return r.get(t);r.set(t,void 0);for(let a of qc(e)){if(Fl(a)&&a.feature.toLowerCase()==="name")return r.set(t,a),a;if($l(a)&&Ga(a.rule.ref))return i(a,a.rule.ref);if(PE(a)&&(!((n=a.typeRef)===null||n===void 0)&&n.ref))return i(a,a.typeRef.ref)}}function Yfe(t){let e=t.$container;if(Of(e)){let r=e.elements,n=r.indexOf(t);for(let i=n-1;i>=0;i--){let a=r[i];if(qu(a))return a;{let s=qc(r[i]).find(qu);if(s)return s}}}if(Fx(e))return Yfe(e)}function UWe(t,e){return t==="?"||t==="*"||Of(e)&&!!e.guardCondition}function HWe(t){return t==="*"||t==="+"}function qWe(t){return t==="+="}function jx(t){return Xfe(t,new Set)}function Xfe(t,e){if(e.has(t))return!0;e.add(t);for(let r of qc(t))if($l(r)){if(!r.rule.ref||Ga(r.rule.ref)&&!Xfe(r.rule.ref,e))return!1}else{if(Fl(r))return!1;if(qu(r))return!1}return!!t.definition}function WWe(t){return CO(t.type,new Set)}function CO(t,e){if(e.has(t))return!0;if(e.add(t),QI(t))return!1;if(nO(t))return!1;if(aO(t))return t.types.every(r=>CO(r,e));if(PE(t)){if(t.primitiveType!==void 0)return!0;if(t.stringType!==void 0)return!0;if(t.typeRef!==void 0){let r=t.typeRef.ref;return $x(r)?CO(r.type,e):!1}else return!1}else return!1}function c1(t){if(t.inferredType)return t.inferredType.name;if(t.dataType)return t.dataType;if(t.returnType){let e=t.returnType.ref;if(e){if(Ga(e))return e.name;if(OE(e)||$x(e))return e.name}}}function Kx(t){var e;if(Ga(t))return jx(t)?t.name:(e=c1(t))!==null&&e!==void 0?e:t.name;if(OE(t)||$x(t)||iO(t))return t.name;if(qu(t)){let r=jfe(t);if(r)return r}else if(IE(t))return t.name;throw new Error("Cannot get name of Unknown Type")}function jfe(t){var e;if(t.inferredType)return t.inferredType.name;if(!((e=t.type)===null||e===void 0)&&e.ref)return Kx(t.type.ref)}function YWe(t){var e,r,n;return mo(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":jx(t)?t.name:(n=c1(t))!==null&&n!==void 0?n:t.name}function IO(t){var e,r,n;return mo(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":(n=c1(t))!==null&&n!==void 0?n:t.name}function u1(t){let e={s:!1,i:!1,u:!1},r=h1(t.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function h1(t,e){if(uO(t))return XWe(t);if(hO(t))return jWe(t);if(sO(t))return ZWe(t);if(FE(t)){let r=t.rule.ref;if(!r)throw new Error("Missing rule reference.");return Wu(h1(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead})}else{if(lO(t))return QWe(t);if(fO(t))return KWe(t);if(cO(t)){let r=t.regex.lastIndexOf("/"),n=t.regex.substring(1,r),i=t.regex.substring(r+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),Wu(n,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}else{if(dO(t))return Wu(OO,{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error(`Invalid terminal element: ${t?.$type}`)}}}function XWe(t){return Wu(t.elements.map(e=>h1(e)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead})}function jWe(t){return Wu(t.elements.map(e=>h1(e)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead})}function KWe(t){return Wu(`${OO}*?${h1(t.terminal)}`,{cardinality:t.cardinality,lookahead:t.lookahead})}function QWe(t){return Wu(`(?!${h1(t.terminal)})${OO}*?`,{cardinality:t.cardinality,lookahead:t.lookahead})}function ZWe(t){return t.right?Wu(`[${SO(t.left)}-${SO(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1}):Wu(SO(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}function SO(t){return Fp(t.value)}function Wu(t,e){var r;return(e.wrap!==!1||e.lookahead)&&(t=`(${(r=e.lookahead)!==null&&r!==void 0?r:""}${t})`),e.cardinality?`${t}${e.cardinality}`:t}var OO,zl=N(()=>{"use strict";NE();Hc();Pl();hs();Bl();l1();o(Ufe,"getEntryRule");o(Hfe,"getHiddenRules");o(Yx,"getAllReachableRules");o(qfe,"ruleDfs");o(AO,"getCrossReferenceTerminal");o(_O,"isCommentTerminal");o(DO,"findNodesForProperty");o(Xx,"findNodeForProperty");o(LO,"findNodesForPropertyInternal");o(VWe,"findNodesForKeyword");o(RO,"findNodeForKeyword");o(NO,"findNodesForKeywordInternal");o(MO,"findAssignment");o(qE,"findNameAssignment");o(Wfe,"findNameAssignmentInternal");o(Yfe,"getActionAtElement");o(UWe,"isOptionalCardinality");o(HWe,"isArrayCardinality");o(qWe,"isArrayOperator");o(jx,"isDataTypeRule");o(Xfe,"isDataTypeRuleInternal");o(WWe,"isDataType");o(CO,"isDataTypeInternal");o(c1,"getExplicitRuleType");o(Kx,"getTypeName");o(jfe,"getActionType");o(YWe,"getRuleTypeName");o(IO,"getRuleType");o(u1,"terminalRegex");OO=/[\s\S]/.source;o(h1,"abstractElementToRegex");o(XWe,"terminalAlternativesToRegex");o(jWe,"terminalGroupToRegex");o(KWe,"untilTokenToRegex");o(QWe,"negateTokenToRegex");o(ZWe,"characterRangeToRegex");o(SO,"keywordToRegex");o(Wu,"withCardinality")});function PO(t){let e=[],r=t.Grammar;for(let n of r.rules)mo(n)&&_O(n)&&wO(u1(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:LE}}var BO=N(()=>{"use strict";Bl();zl();l1();Hc();o(PO,"createGrammarConfig")});var FO=N(()=>{"use strict"});function f1(t){console&&console.error&&console.error(`Error: ${t}`)}function Qx(t){console&&console.warn&&console.warn(`Warning: ${t}`)}var Kfe=N(()=>{"use strict";o(f1,"PRINT_ERROR");o(Qx,"PRINT_WARNING")});function Zx(t){let e=new Date().getTime(),r=t();return{time:new Date().getTime()-e,value:r}}var Qfe=N(()=>{"use strict";o(Zx,"timer")});function Jx(t){function e(){}o(e,"FakeConstructor"),e.prototype=t;let r=new e;function n(){return typeof r.bar}return o(n,"fakeAccess"),n(),n(),t;(0,eval)(t)}var Zfe=N(()=>{"use strict";o(Jx,"toFastProperties")});var d1=N(()=>{"use strict";Kfe();Qfe();Zfe()});function JWe(t){return eYe(t)?t.LABEL:t.name}function eYe(t){return xi(t.LABEL)&&t.LABEL!==""}function YE(t){return rt(t,p1)}function p1(t){function e(r){return rt(r,p1)}if(o(e,"convertDefinition"),t instanceof fn){let r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return xi(t.label)&&(r.label=t.label),r}else{if(t instanceof Pn)return{type:"Alternative",definition:e(t.definition)};if(t instanceof dn)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof Bn)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Fn)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:p1(new Ar({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof _n)return{type:"RepetitionWithSeparator",idx:t.idx,separator:p1(new Ar({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof zr)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof Dn)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof Ar){let r={type:"Terminal",name:t.terminalType.name,label:JWe(t.terminalType),idx:t.idx};xi(t.label)&&(r.terminalLabel=t.label);let n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=Uo(n)?n.source:n),r}else{if(t instanceof fs)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}var go,fn,fs,Pn,dn,Bn,Fn,zr,_n,Dn,Ar,XE=N(()=>{"use strict";Yt();o(JWe,"tokenLabel");o(eYe,"hasTokenLabel");go=class{static{o(this,"AbstractProduction")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),Ae(this.definition,r=>{r.accept(e)})}},fn=class extends go{static{o(this,"NonTerminal")}constructor(e){super([]),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},fs=class extends go{static{o(this,"Rule")}constructor(e){super(e.definition),this.orgText="",pa(this,Vs(e,r=>r!==void 0))}},Pn=class extends go{static{o(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,pa(this,Vs(e,r=>r!==void 0))}},dn=class extends go{static{o(this,"Option")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},Bn=class extends go{static{o(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},Fn=class extends go{static{o(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},zr=class extends go{static{o(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},_n=class extends go{static{o(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,pa(this,Vs(e,r=>r!==void 0))}},Dn=class extends go{static{o(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,pa(this,Vs(e,r=>r!==void 0))}},Ar=class{static{o(this,"Terminal")}constructor(e){this.idx=1,pa(this,Vs(e,r=>r!==void 0))}accept(e){e.visit(this)}};o(YE,"serializeGrammar");o(p1,"serializeProduction")});var ds,Jfe=N(()=>{"use strict";XE();ds=class{static{o(this,"GAstVisitor")}visit(e){let r=e;switch(r.constructor){case fn:return this.visitNonTerminal(r);case Pn:return this.visitAlternative(r);case dn:return this.visitOption(r);case Bn:return this.visitRepetitionMandatory(r);case Fn:return this.visitRepetitionMandatoryWithSeparator(r);case _n:return this.visitRepetitionWithSeparator(r);case zr:return this.visitRepetition(r);case Dn:return this.visitAlternation(r);case Ar:return this.visitTerminal(r);case fs:return this.visitRule(r);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}});function $O(t){return t instanceof Pn||t instanceof dn||t instanceof zr||t instanceof Bn||t instanceof Fn||t instanceof _n||t instanceof Ar||t instanceof fs}function $p(t,e=[]){return t instanceof dn||t instanceof zr||t instanceof _n?!0:t instanceof Dn?z2(t.definition,n=>$p(n,e)):t instanceof fn&&jn(e,t)?!1:t instanceof go?(t instanceof fn&&e.push(t),Pa(t.definition,n=>$p(n,e))):!1}function zO(t){return t instanceof Dn}function Xs(t){if(t instanceof fn)return"SUBRULE";if(t instanceof dn)return"OPTION";if(t instanceof Dn)return"OR";if(t instanceof Bn)return"AT_LEAST_ONE";if(t instanceof Fn)return"AT_LEAST_ONE_SEP";if(t instanceof _n)return"MANY_SEP";if(t instanceof zr)return"MANY";if(t instanceof Ar)return"CONSUME";throw Error("non exhaustive match")}var ede=N(()=>{"use strict";Yt();XE();o($O,"isSequenceProd");o($p,"isOptionalProd");o(zO,"isBranchingProd");o(Xs,"getProductionDslName")});var ps=N(()=>{"use strict";XE();Jfe();ede()});function tde(t,e,r){return[new dn({definition:[new Ar({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}var Yu,jE=N(()=>{"use strict";Yt();ps();Yu=class{static{o(this,"RestWalker")}walk(e,r=[]){Ae(e.definition,(n,i)=>{let a=yi(e.definition,i+1);if(n instanceof fn)this.walkProdRef(n,a,r);else if(n instanceof Ar)this.walkTerminal(n,a,r);else if(n instanceof Pn)this.walkFlat(n,a,r);else if(n instanceof dn)this.walkOption(n,a,r);else if(n instanceof Bn)this.walkAtLeastOne(n,a,r);else if(n instanceof Fn)this.walkAtLeastOneSep(n,a,r);else if(n instanceof _n)this.walkManySep(n,a,r);else if(n instanceof zr)this.walkMany(n,a,r);else if(n instanceof Dn)this.walkOr(n,a,r);else throw Error("non exhaustive match")})}walkTerminal(e,r,n){}walkProdRef(e,r,n){}walkFlat(e,r,n){let i=r.concat(n);this.walk(e,i)}walkOption(e,r,n){let i=r.concat(n);this.walk(e,i)}walkAtLeastOne(e,r,n){let i=[new dn({definition:e.definition})].concat(r,n);this.walk(e,i)}walkAtLeastOneSep(e,r,n){let i=tde(e,r,n);this.walk(e,i)}walkMany(e,r,n){let i=[new dn({definition:e.definition})].concat(r,n);this.walk(e,i)}walkManySep(e,r,n){let i=tde(e,r,n);this.walk(e,i)}walkOr(e,r,n){let i=r.concat(n);Ae(e.definition,a=>{let s=new Pn({definition:[a]});this.walk(s,i)})}};o(tde,"restForRepetitionWithSeparator")});function zp(t){if(t instanceof fn)return zp(t.referencedRule);if(t instanceof Ar)return nYe(t);if($O(t))return tYe(t);if(zO(t))return rYe(t);throw Error("non exhaustive match")}function tYe(t){let e=[],r=t.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=$p(a),e=e.concat(zp(a)),n=n+1,i=r.length>n;return qm(e)}function rYe(t){let e=rt(t.definition,r=>zp(r));return qm(Qr(e))}function nYe(t){return[t.terminalType]}var GO=N(()=>{"use strict";Yt();ps();o(zp,"first");o(tYe,"firstForSequence");o(rYe,"firstForBranching");o(nYe,"firstForTerminal")});var KE,VO=N(()=>{"use strict";KE="_~IN~_"});function rde(t){let e={};return Ae(t,r=>{let n=new UO(r).startWalking();pa(e,n)}),e}function iYe(t,e){return t.name+e+KE}var UO,nde=N(()=>{"use strict";jE();GO();Yt();VO();ps();UO=class extends Yu{static{o(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,r,n){}walkProdRef(e,r,n){let i=iYe(e.referencedRule,e.idx)+this.topProd.name,a=r.concat(n),s=new Pn({definition:a}),l=zp(s);this.follows[i]=l}};o(rde,"computeAllProdsFollows");o(iYe,"buildBetweenProdsFollowPrefix")});function m1(t){let e=t.toString();if(QE.hasOwnProperty(e))return QE[e];{let r=aYe.pattern(e);return QE[e]=r,r}}function ide(){QE={}}var QE,aYe,ZE=N(()=>{"use strict";Wx();QE={},aYe=new Pp;o(m1,"getRegExpAst");o(ide,"clearRegExpParserCache")});function ode(t,e=!1){try{let r=m1(t);return HO(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===sde)e&&Qx(`${eb} 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.`);else{let n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),f1(`${eb} - Failed parsing: < ${t.toString()} > - Using the @chevrotain/regexp-to-ast library - Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function HO(t,e,r){switch(t.type){case"Disjunction":for(let i=0;i{if(typeof u=="number")JE(u,e,r);else{let h=u;if(r===!0)for(let f=h.from;f<=h.to;f++)JE(f,e,r);else{for(let f=h.from;f<=h.to&&f=g1){let f=h.from>=g1?h.from:g1,d=h.to,p=Yc(f),m=Yc(d);for(let g=p;g<=m;g++)e[g]=g}}}});break;case"Group":HO(s.value,e,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&qO(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return kr(e)}function JE(t,e,r){let n=Yc(t);e[n]=n,r===!0&&sYe(t,e)}function sYe(t,e){let r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){let i=Yc(n.charCodeAt(0));e[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Yc(i.charCodeAt(0));e[a]=a}}}function ade(t,e){return os(t.value,r=>{if(typeof r=="number")return jn(e,r);{let n=r;return os(e,i=>n.from<=i&&i<=n.to)!==void 0}})}function qO(t){let e=t.quantifier;return e&&e.atLeast===0?!0:t.value?Bt(t.value)?Pa(t.value,qO):qO(t.value):!1}function eS(t,e){if(e instanceof RegExp){let r=m1(e),n=new WO(t);return n.visit(r),n.found}else return os(e,r=>jn(t,r.charCodeAt(0)))!==void 0}var sde,eb,WO,lde=N(()=>{"use strict";Wx();Yt();d1();ZE();YO();sde="Complement Sets are not supported for first char optimization",eb=`Unable to use "first char" lexer optimizations: -`;o(ode,"getOptimizedStartCodesIndices");o(HO,"firstCharOptimizedIndices");o(JE,"addOptimizedIdxToResult");o(sYe,"handleIgnoreCase");o(ade,"findCode");o(qO,"isWholeOptional");WO=class extends Wc{static{o(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return}super.visitChildren(e)}}visitCharacter(e){jn(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?ade(e,this.targetCharCodes)===void 0&&(this.found=!0):ade(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(eS,"canMatchCharCode")});function hde(t,e){e=of(e,{useSticky:jO,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:o((b,T)=>T(),"tracer")});let r=e.tracer;r("initCharCodeToOptimizedIndexMap",()=>{EYe()});let n;r("Reject Lexer.NA",()=>{n=cf(t,b=>b[Gp]===Zn.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=rt(n,b=>{let T=b[Gp];if(Uo(T)){let S=T.source;return S.length===1&&S!=="^"&&S!=="$"&&S!=="."&&!T.ignoreCase?S:S.length===2&&S[0]==="\\"&&!jn(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],S[1])?S[1]:e.useSticky?ude(T):cde(T)}else{if(Si(T))return i=!0,{exec:T};if(typeof T=="object")return i=!0,T;if(typeof T=="string"){if(T.length===1)return T;{let S=T.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),w=new RegExp(S);return e.useSticky?ude(w):cde(w)}}else throw Error("non exhaustive match")}})});let s,l,u,h,f;r("misc mapping",()=>{s=rt(n,b=>b.tokenTypeIdx),l=rt(n,b=>{let T=b.GROUP;if(T!==Zn.SKIPPED){if(xi(T))return T;if(xr(T))return!1;throw Error("non exhaustive match")}}),u=rt(n,b=>{let T=b.LONGER_ALT;if(T)return Bt(T)?rt(T,w=>ck(n,w)):[ck(n,T)]}),h=rt(n,b=>b.PUSH_MODE),f=rt(n,b=>Ft(b,"POP_MODE"))});let d;r("Line Terminator Handling",()=>{let b=xde(e.lineTerminatorCharacters);d=rt(n,T=>!1),e.positionTracking!=="onlyOffset"&&(d=rt(n,T=>Ft(T,"LINE_BREAKS")?!!T.LINE_BREAKS:vde(T,b)===!1&&eS(b,T.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=rt(n,gde),m=rt(a,wYe),g=Jr(n,(b,T)=>{let S=T.GROUP;return xi(S)&&S!==Zn.SKIPPED&&(b[S]=[]),b},{}),y=rt(a,(b,T)=>({pattern:a[T],longerAlt:u[T],canLineTerminator:d[T],isCustom:p[T],short:m[T],group:l[T],push:h[T],pop:f[T],tokenTypeIdx:s[T],tokenType:n[T]}))});let v=!0,x=[];return e.safeMode||r("First Char Optimization",()=>{x=Jr(n,(b,T,S)=>{if(typeof T.PATTERN=="string"){let w=T.PATTERN.charCodeAt(0),k=Yc(w);XO(b,k,y[S])}else if(Bt(T.START_CHARS_HINT)){let w;Ae(T.START_CHARS_HINT,k=>{let A=typeof k=="string"?k.charCodeAt(0):k,C=Yc(A);w!==C&&(w=C,XO(b,C,y[S]))})}else if(Uo(T.PATTERN))if(T.PATTERN.unicode)v=!1,e.ensureOptimizations&&f1(`${eb} 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`);else{let w=ode(T.PATTERN,e.ensureOptimizations);mr(w)&&(v=!1),Ae(w,k=>{XO(b,k,y[S])})}else e.ensureOptimizations&&f1(`${eb} 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`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function fde(t,e){let r=[],n=lYe(t);r=r.concat(n.errors);let i=cYe(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(oYe(a)),r=r.concat(yYe(a)),r=r.concat(vYe(a,e)),r=r.concat(xYe(a)),r}function oYe(t){let e=[],r=Zr(t,n=>Uo(n[Gp]));return e=e.concat(hYe(r)),e=e.concat(pYe(r)),e=e.concat(mYe(r)),e=e.concat(gYe(r)),e=e.concat(fYe(r)),e}function lYe(t){let e=Zr(t,i=>!Ft(i,Gp)),r=rt(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Qn.MISSING_PATTERN,tokenTypes:[i]})),n=lf(t,e);return{errors:r,valid:n}}function cYe(t){let e=Zr(t,i=>{let a=i[Gp];return!Uo(a)&&!Si(a)&&!Ft(a,"exec")&&!xi(a)}),r=rt(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Qn.INVALID_PATTERN,tokenTypes:[i]})),n=lf(t,e);return{errors:r,valid:n}}function hYe(t){class e extends Wc{static{o(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Zr(t,i=>{let a=i.PATTERN;try{let s=m1(a),l=new e;return l.visit(s),l.found}catch{return uYe.test(a.source)}});return rt(r,i=>({message:`Unexpected RegExp Anchor Error: - Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Qn.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function fYe(t){let e=Zr(t,n=>n.PATTERN.test(""));return rt(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Qn.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function pYe(t){class e extends Wc{static{o(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Zr(t,i=>{let a=i.PATTERN;try{let s=m1(a),l=new e;return l.visit(s),l.found}catch{return dYe.test(a.source)}});return rt(r,i=>({message:`Unexpected RegExp Anchor Error: - Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Qn.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function mYe(t){let e=Zr(t,n=>{let i=n[Gp];return i instanceof RegExp&&(i.multiline||i.global)});return rt(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Qn.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function gYe(t){let e=[],r=rt(t,a=>Jr(t,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!jn(e,l)&&l.PATTERN!==Zn.NA&&(e.push(l),s.push(l)),s),[]));r=_c(r);let n=Zr(r,a=>a.length>1);return rt(n,a=>{let s=rt(a,u=>u.name);return{message:`The same RegExp pattern ->${ea(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Qn.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function yYe(t){let e=Zr(t,n=>{if(!Ft(n,"GROUP"))return!1;let i=n.GROUP;return i!==Zn.SKIPPED&&i!==Zn.NA&&!xi(i)});return rt(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Qn.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function vYe(t,e){let r=Zr(t,i=>i.PUSH_MODE!==void 0&&!jn(e,i.PUSH_MODE));return rt(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Qn.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function xYe(t){let e=[],r=Jr(t,(n,i,a)=>{let s=i.PATTERN;return s===Zn.NA||(xi(s)?n.push({str:s,idx:a,tokenType:i}):Uo(s)&&TYe(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ae(t,(n,i)=>{Ae(r,({str:a,idx:s,tokenType:l})=>{if(i${l.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`;e.push({message:u,type:Qn.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),e}function bYe(t,e){if(Uo(e)){let r=e.exec(t);return r!==null&&r.index===0}else{if(Si(e))return e(t,0,[],{});if(Ft(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function TYe(t){return os([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>t.source.indexOf(r)!==-1)===void 0}function cde(t){let e=t.ignoreCase?"i":"";return new RegExp(`^(?:${t.source})`,e)}function ude(t){let e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function dde(t,e,r){let n=[];return Ft(t,y1)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+y1+`> property in its definition -`,type:Qn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),Ft(t,tS)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+tS+`> property in its definition -`,type:Qn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),Ft(t,tS)&&Ft(t,y1)&&!Ft(t.modes,t.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${y1}: <${t.defaultMode}>which does not exist -`,type:Qn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),Ft(t,tS)&&Ae(t.modes,(i,a)=>{Ae(i,(s,l)=>{if(xr(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}> -`,type:Qn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(Ft(s,"LONGER_ALT")){let u=Bt(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ae(u,h=>{!xr(h)&&!jn(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}> -`,type:Qn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function pde(t,e,r){let n=[],i=!1,a=_c(Qr(kr(t.modes))),s=cf(a,u=>u[Gp]===Zn.NA),l=xde(r);return e&&Ae(s,u=>{let h=vde(u,l);if(h!==!1){let d={message:kYe(u,h),type:h.issue,tokenType:u};n.push(d)}else Ft(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):eS(l,u.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:Qn.NO_LINE_BREAKS_FLAGS}),n}function mde(t){let e={},r=qr(t);return Ae(r,n=>{let i=t[n];if(Bt(i))e[n]=[];else throw Error("non exhaustive match")}),e}function gde(t){let e=t.PATTERN;if(Uo(e))return!1;if(Si(e))return!0;if(Ft(e,"exec"))return!0;if(xi(e))return!1;throw Error("non exhaustive match")}function wYe(t){return xi(t)&&t.length===1?t.charCodeAt(0):!1}function vde(t,e){if(Ft(t,"LINE_BREAKS"))return!1;if(Uo(t.PATTERN)){try{eS(e,t.PATTERN)}catch(r){return{issue:Qn.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(xi(t.PATTERN))return!1;if(gde(t))return{issue:Qn.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function kYe(t,e){if(e.issue===Qn.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===Qn.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 xde(t){return rt(t,r=>xi(r)?r.charCodeAt(0):r)}function XO(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Yc(t){return t255?255+~~(t/255):t}}var Gp,y1,tS,jO,uYe,dYe,yde,g1,rS,YO=N(()=>{"use strict";Wx();tb();Yt();d1();lde();ZE();Gp="PATTERN",y1="defaultMode",tS="modes",jO=typeof new RegExp("(?:)").sticky=="boolean";o(hde,"analyzeTokenTypes");o(fde,"validatePatterns");o(oYe,"validateRegExpPattern");o(lYe,"findMissingPatterns");o(cYe,"findInvalidPatterns");uYe=/[^\\][$]/;o(hYe,"findEndOfInputAnchor");o(fYe,"findEmptyMatchRegExps");dYe=/[^\\[][\^]|^\^/;o(pYe,"findStartOfInputAnchor");o(mYe,"findUnsupportedFlags");o(gYe,"findDuplicatePatterns");o(yYe,"findInvalidGroupType");o(vYe,"findModesThatDoNotExist");o(xYe,"findUnreachablePatterns");o(bYe,"testTokenType");o(TYe,"noMetaChar");o(cde,"addStartOfInput");o(ude,"addStickyFlag");o(dde,"performRuntimeChecks");o(pde,"performWarningRuntimeChecks");o(mde,"cloneEmptyGroups");o(gde,"isCustomPattern");o(wYe,"isShortPattern");yde={test:o(function(t){let e=t.length;for(let r=this.lastIndex;r{r.isParent=r.categoryMatches.length>0})}function SYe(t){let e=ln(t),r=t,n=!0;for(;n;){r=_c(Qr(rt(r,a=>a.CATEGORIES)));let i=lf(r,e);e=e.concat(i),mr(i)?n=!1:r=i}return e}function CYe(t){Ae(t,e=>{KO(e)||(wde[bde]=e,e.tokenTypeIdx=bde++),Tde(e)&&!Bt(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Tde(e)||(e.CATEGORIES=[]),DYe(e)||(e.categoryMatches=[]),LYe(e)||(e.categoryMatchesMap={})})}function AYe(t){Ae(t,e=>{e.categoryMatches=[],Ae(e.categoryMatchesMap,(r,n)=>{e.categoryMatches.push(wde[n].tokenTypeIdx)})})}function _Ye(t){Ae(t,e=>{kde([],e)})}function kde(t,e){Ae(t,r=>{e.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ae(e.CATEGORIES,r=>{let n=t.concat(e);jn(n,r)||kde(n,r)})}function KO(t){return Ft(t,"tokenTypeIdx")}function Tde(t){return Ft(t,"CATEGORIES")}function DYe(t){return Ft(t,"categoryMatches")}function LYe(t){return Ft(t,"categoryMatchesMap")}function Ede(t){return Ft(t,"tokenTypeIdx")}var bde,wde,Vp=N(()=>{"use strict";Yt();o(Xu,"tokenStructuredMatcher");o(v1,"tokenStructuredMatcherNoCategories");bde=1,wde={};o(ju,"augmentTokenTypes");o(SYe,"expandCategories");o(CYe,"assignTokenDefaultProps");o(AYe,"assignCategoriesTokensProp");o(_Ye,"assignCategoriesMapProp");o(kde,"singleAssignCategoriesToksMap");o(KO,"hasShortKeyProperty");o(Tde,"hasCategoriesProperty");o(DYe,"hasExtendingTokensTypesProperty");o(LYe,"hasExtendingTokensTypesMapProperty");o(Ede,"isTokenType")});var x1,QO=N(()=>{"use strict";x1={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.`}}});var Qn,rb,Zn,tb=N(()=>{"use strict";YO();Yt();d1();Vp();QO();ZE();(function(t){t[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"})(Qn||(Qn={}));rb={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:x1,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(rb);Zn=class{static{o(this,"Lexer")}constructor(e,r=rb){if(this.lexerDefinition=e,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=(i,a)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let s=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);let{time:l,value:u}=Zx(a),h=l>10?console.warn:console.log;return this.traceInitIndent time: ${l}ms`),this.traceInitIndent--,u}else return a()},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=pa({},rb,r);let n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,a=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===rb.lineTerminatorsPattern)this.config.lineTerminatorsPattern=yde;else if(this.config.lineTerminatorCharacters===rb.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(r.safeMode&&r.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),Bt(e)?i={modes:{defaultMode:ln(e)},defaultMode:y1}:(a=!1,i=ln(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(dde(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(pde(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},Ae(i.modes,(l,u)=>{i.modes[u]=cf(l,h=>xr(h))});let s=qr(i.modes);if(Ae(i.modes,(l,u)=>{this.TRACE_INIT(`Mode: <${u}> processing`,()=>{if(this.modes.push(u),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(fde(l,s))}),mr(this.lexerDefinitionErrors)){ju(l);let h;this.TRACE_INIT("analyzeTokenTypes",()=>{h=hde(l,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[u]=h.patternIdxToConfig,this.charCodeToPatternIdxToConfig[u]=h.charCodeToPatternIdxToConfig,this.emptyGroups=pa({},this.emptyGroups,h.emptyGroups),this.hasCustom=h.hasCustom||this.hasCustom,this.canModeBeOptimized[u]=h.canBeOptimized}})}),this.defaultMode=i.defaultMode,!mr(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let u=rt(this.lexerDefinitionErrors,h=>h.message).join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+u)}Ae(this.lexerDefinitionWarning,l=>{Qx(l.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(jO?(this.chopInput=Qi,this.match=this.matchWithTest):(this.updateLastIndex=si,this.match=this.matchWithExec),a&&(this.handleModes=si),this.trackStartLines===!1&&(this.computeNewColumn=Qi),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=si),/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))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let l=Jr(this.canModeBeOptimized,(u,h,f)=>(h===!1&&u.push(f),u),[]);if(r.ensureOptimizations&&!mr(l))throw Error(`Lexer Modes: < ${l.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",()=>{ide()}),this.TRACE_INIT("toFastProperties",()=>{Jx(this)})})}tokenize(e,r=this.defaultMode){if(!mr(this.lexerDefinitionErrors)){let i=rt(this.lexerDefinitionErrors,a=>a.message).join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+i)}return this.tokenizeInternal(e,r)}tokenizeInternal(e,r){let n,i,a,s,l,u,h,f,d,p,m,g,y,v,x,b,T=e,S=T.length,w=0,k=0,A=this.hasCustom?0:Math.floor(e.length/10),C=new Array(A),R=[],I=this.trackStartLines?1:void 0,L=this.trackStartLines?1:void 0,E=mde(this.emptyGroups),D=this.trackStartLines,_=this.config.lineTerminatorsPattern,O=0,M=[],P=[],B=[],F=[];Object.freeze(F);let G;function $(){return M}o($,"getPossiblePatternsSlow");function U(J){let ue=Yc(J),re=P[ue];return re===void 0?F:re}o(U,"getPossiblePatternsOptimized");let j=o(J=>{if(B.length===1&&J.tokenType.PUSH_MODE===void 0){let ue=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(J);R.push({offset:J.startOffset,line:J.startLine,column:J.startColumn,length:J.image.length,message:ue})}else{B.pop();let ue=ma(B);M=this.patternIdxToConfig[ue],P=this.charCodeToPatternIdxToConfig[ue],O=M.length;let re=this.canModeBeOptimized[ue]&&this.config.safeMode===!1;P&&re?G=U:G=$}},"pop_mode");function te(J){B.push(J),P=this.charCodeToPatternIdxToConfig[J],M=this.patternIdxToConfig[J],O=M.length,O=M.length;let ue=this.canModeBeOptimized[J]&&this.config.safeMode===!1;P&&ue?G=U:G=$}o(te,"push_mode"),te.call(this,r);let Y,oe=this.config.recoveryEnabled;for(;wu.length){u=s,h=f,Y=ae;break}}}break}}if(u!==null){if(d=u.length,p=Y.group,p!==void 0&&(m=Y.tokenTypeIdx,g=this.createTokenInstance(u,w,m,Y.tokenType,I,L,d),this.handlePayload(g,h),p===!1?k=this.addToken(C,k,g):E[p].push(g)),e=this.chopInput(e,d),w=w+d,L=this.computeNewColumn(L,d),D===!0&&Y.canLineTerminator===!0){let ee=0,Z,K;_.lastIndex=0;do Z=_.test(u),Z===!0&&(K=_.lastIndex-1,ee++);while(Z===!0);ee!==0&&(I=I+ee,L=d-K,this.updateTokenEndLineColumnLocation(g,p,K,ee,I,L,d))}this.handleModes(Y,j,te,g)}else{let ee=w,Z=I,K=L,ae=oe===!1;for(;ae===!1&&w{"use strict";Yt();tb();Vp();o(Ku,"tokenLabel");o(ZO,"hasTokenLabel");RYe="parent",Sde="categories",Cde="label",Ade="group",_de="push_mode",Dde="pop_mode",Lde="longer_alt",Rde="line_breaks",Nde="start_chars_hint";o(Pf,"createToken");o(NYe,"createTokenInternal");yo=Pf({name:"EOF",pattern:Zn.NA});ju([yo]);o(Qu,"createTokenInstance");o(nb,"tokenMatcher")});var Zu,Mde,Gl,b1=N(()=>{"use strict";Up();Yt();ps();Zu={buildMismatchTokenMessage({expected:t,actual:e,previous:r,ruleName:n}){return`Expecting ${ZO(t)?`--> ${Ku(t)} <--`:`token of type --> ${t.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:t,ruleName:e}){return"Redundant input, expecting EOF but found: "+t.image},buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",l=` -but found: '`+ea(e).image+"'";if(n)return a+n+l;{let u=Jr(t,(p,m)=>p.concat(m),[]),h=rt(u,p=>`[${rt(p,m=>Ku(m)).join(", ")}]`),d=`one of these possible Token sequences: -${rt(h,(p,m)=>` ${m+1}. ${p}`).join(` -`)}`;return a+d+l}},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:r,ruleName:n}){let i="Expecting: ",s=` -but found: '`+ea(e).image+"'";if(r)return i+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences:: - <${rt(t,h=>`[${rt(h,f=>Ku(f)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(Zu);Mde={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-"}},Gl={buildDuplicateFoundError(t,e){function r(f){return f instanceof Ar?f.terminalType.name:f instanceof fn?f.nonTerminalName:""}o(r,"getExtraProductionArgument");let n=t.name,i=ea(e),a=i.idx,s=Xs(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""} - 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 h=h.replace(/[ \t]+/g," "),h=h.replace(/\s\s+/g,` -`),h},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){let e=rt(t.prefixPath,i=>Ku(i)).join(", "),r=t.alternation.idx===0?"":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){let e=rt(t.prefixPath,i=>Ku(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in inside <${t.topLevelRule.name}> Rule, -<${e}> may appears as a prefix path in all these alternatives. -`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,n},buildEmptyRepetitionError(t){let e=Xs(t.repetition);return t.repetition.idx!==0&&(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){let e=t.topLevelRule.name,r=rt(t.leftRecursionPath,a=>a.name),n=`${e} --> ${r.concat([e]).join(" --> ")}`;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: - ${n} - 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){let e;return t.topLevelRule instanceof fs?e=t.topLevelRule.name:e=t.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}}});function Ide(t,e){let r=new JO(t,e);return r.resolveRefs(),r.errors}var JO,Ode=N(()=>{"use strict";js();Yt();ps();o(Ide,"resolveGrammar");JO=class extends ds{static{o(this,"GastRefResolverVisitor")}constructor(e,r){super(),this.nameToTopRule=e,this.errMsgProvider=r,this.errors=[]}resolveRefs(){Ae(kr(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let r=this.nameToTopRule[e.nonTerminalName];if(r)e.referencedRule=r;else{let n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:n,type:Gi.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}});function sS(t,e,r=[]){r=ln(r);let n=[],i=0;function a(l){return l.concat(yi(t,i+1))}o(a,"remainingPathWith");function s(l){let u=sS(a(l),e,r);return n.concat(u)}for(o(s,"getAlternativesForProd");r.length{mr(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof Ar)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:yi(t,i)}),n}function oS(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=e.length,h=u-n-1,f=[],d=[];for(d.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!mr(d);){let p=d.pop();if(p===s){l&&ma(d).idx<=h&&d.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(mr(m))continue;let x=m[0];if(x===i){let b={idx:g,def:yi(m),ruleStack:Bu(y),occurrenceStack:Bu(v)};d.push(b)}else if(x instanceof Ar)if(g=0;b--){let T=x.definition[b],S={idx:g,def:T.definition.concat(yi(m)),ruleStack:y,occurrenceStack:v};d.push(S),d.push(s)}else if(x instanceof Pn)d.push({idx:g,def:x.definition.concat(yi(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof fs)d.push(MYe(x,g,y,v));else throw Error("non exhaustive match")}return f}function MYe(t,e,r,n){let i=ln(r);i.push(t.name);let a=ln(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var eP,nS,T1,iS,ib,aS,ab,sb=N(()=>{"use strict";Yt();GO();jE();ps();eP=class extends Yu{static{o(this,"AbstractNextPossibleTokensWalker")}constructor(e,r){super(),this.topProd=e,this.path=r,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=ln(this.path.ruleStack).reverse(),this.occurrenceStack=ln(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,r=[]){this.found||super.walk(e,r)}walkProdRef(e,r,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=r.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){mr(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},nS=class extends eP{static{o(this,"NextAfterTokenWalker")}constructor(e,r){super(e,r),this.path=r,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,r,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=r.concat(n),a=new Pn({definition:i});this.possibleTokTypes=zp(a),this.found=!0}}},T1=class extends Yu{static{o(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,r){super(),this.topRule=e,this.occurrence=r,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},iS=class extends T1{static{o(this,"NextTerminalAfterManyWalker")}walkMany(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,r,n)}},ib=class extends T1{static{o(this,"NextTerminalAfterManySepWalker")}walkManySep(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,r,n)}},aS=class extends T1{static{o(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,r,n)}},ab=class extends T1{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,r,n){if(e.idx===this.occurrence){let i=ea(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof Ar&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,r,n)}};o(sS,"possiblePathsFrom");o(oS,"nextPossibleTokensAfter");o(MYe,"expandTopLevelRule")});function ob(t){if(t instanceof dn||t==="Option")return Jn.OPTION;if(t instanceof zr||t==="Repetition")return Jn.REPETITION;if(t instanceof Bn||t==="RepetitionMandatory")return Jn.REPETITION_MANDATORY;if(t instanceof Fn||t==="RepetitionMandatoryWithSeparator")return Jn.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof _n||t==="RepetitionWithSeparator")return Jn.REPETITION_WITH_SEPARATOR;if(t instanceof Dn||t==="Alternation")return Jn.ALTERNATION;throw Error("non exhaustive match")}function cS(t){let{occurrence:e,rule:r,prodType:n,maxLookahead:i}=t,a=ob(n);return a===Jn.ALTERNATION?w1(e,r,i):k1(e,r,a,i)}function Bde(t,e,r,n,i,a){let s=w1(t,e,r),l=Ude(s)?v1:Xu;return a(s,n,l,i)}function Fde(t,e,r,n,i,a){let s=k1(t,e,i,r),l=Ude(s)?v1:Xu;return a(s[0],l,n)}function $de(t,e,r,n){let i=t.length,a=Pa(t,s=>Pa(s,l=>l.length===1));if(e)return function(s){let l=rt(s,u=>u.GATE);for(let u=0;uQr(u)),l=Jr(s,(u,h,f)=>(Ae(h,d=>{Ft(u,d.tokenTypeIdx)||(u[d.tokenTypeIdx]=f),Ae(d.categoryMatches,p=>{Ft(u,p)||(u[p]=f)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=t.length;if(n&&!r){let a=Qr(t);if(a.length===1&&mr(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=Jr(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ae(u.categoryMatches,f=>{l[f]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;asS([s],1)),n=Pde(r.length),i=rt(r,s=>{let l={};return Ae(s,u=>{let h=tP(u.partialPath);Ae(h,f=>{l[f]=!0})}),l}),a=r;for(let s=1;s<=e;s++){let l=a;a=Pde(l.length);for(let u=0;u{let x=tP(v.partialPath);Ae(x,b=>{i[u][b]=!0})})}}}}return n}function w1(t,e,r,n){let i=new lS(t,Jn.ALTERNATION,n);return e.accept(i),Gde(i.result,r)}function k1(t,e,r,n){let i=new lS(t,r);e.accept(i);let a=i.result,l=new rP(e,t,r).startWalking(),u=new Pn({definition:a}),h=new Pn({definition:l});return Gde([u,h],n)}function uS(t,e){e:for(let r=0;r{let i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function Ude(t){return Pa(t,e=>Pa(e,r=>Pa(r,n=>mr(n.categoryMatches))))}var Jn,rP,lS,E1=N(()=>{"use strict";Yt();sb();jE();Vp();ps();(function(t){t[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"})(Jn||(Jn={}));o(ob,"getProdType");o(cS,"getLookaheadPaths");o(Bde,"buildLookaheadFuncForOr");o(Fde,"buildLookaheadFuncForOptionalProd");o($de,"buildAlternativesLookAheadFunc");o(zde,"buildSingleAlternativeLookaheadFunction");rP=class extends Yu{static{o(this,"RestDefinitionFinderWalker")}constructor(e,r,n){super(),this.topProd=e,this.targetOccurrence=r,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,r,n,i){return e.idx===this.targetOccurrence&&this.targetProdType===r?(this.restDef=n.concat(i),!0):!1}walkOption(e,r,n){this.checkIsTarget(e,Jn.OPTION,r,n)||super.walkOption(e,r,n)}walkAtLeastOne(e,r,n){this.checkIsTarget(e,Jn.REPETITION_MANDATORY,r,n)||super.walkOption(e,r,n)}walkAtLeastOneSep(e,r,n){this.checkIsTarget(e,Jn.REPETITION_MANDATORY_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}walkMany(e,r,n){this.checkIsTarget(e,Jn.REPETITION,r,n)||super.walkOption(e,r,n)}walkManySep(e,r,n){this.checkIsTarget(e,Jn.REPETITION_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}},lS=class extends ds{static{o(this,"InsideDefinitionFinderVisitor")}constructor(e,r,n){super(),this.targetOccurrence=e,this.targetProdType=r,this.targetRef=n,this.result=[]}checkIsTarget(e,r){e.idx===this.targetOccurrence&&this.targetProdType===r&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,Jn.OPTION)}visitRepetition(e){this.checkIsTarget(e,Jn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,Jn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,Jn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,Jn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,Jn.ALTERNATION)}};o(Pde,"initializeArrayOfArrays");o(tP,"pathToHashKeys");o(IYe,"isUniquePrefixHash");o(Gde,"lookAheadSequenceFromAlternatives");o(w1,"getLookaheadPathsForOr");o(k1,"getLookaheadPathsForOptionalProd");o(uS,"containsPath");o(Vde,"isStrictPrefixOfPath");o(Ude,"areTokenCategoriesNotUsed")});function Hde(t){let e=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName});return rt(e,r=>Object.assign({type:Gi.CUSTOM_LOOKAHEAD_VALIDATION},r))}function qde(t,e,r,n){let i=ga(t,u=>OYe(u,r)),a=GYe(t,e,r),s=ga(t,u=>FYe(u,r)),l=ga(t,u=>BYe(u,t,n,r));return i.concat(a,s,l)}function OYe(t,e){let r=new nP;t.accept(r);let n=r.allProductions,i=DR(n,PYe),a=Vs(i,l=>l.length>1);return rt(kr(a),l=>{let u=ea(l),h=e.buildDuplicateFoundError(t,l),f=Xs(u),d={message:h,type:Gi.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:f,occurrence:u.idx},p=Wde(u);return p&&(d.parameter=p),d})}function PYe(t){return`${Xs(t)}_#_${t.idx}_#_${Wde(t)}`}function Wde(t){return t instanceof Ar?t.terminalType.name:t instanceof fn?t.nonTerminalName:""}function BYe(t,e,r,n){let i=[];if(Jr(e,(s,l)=>l.name===t.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:s,type:Gi.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function Yde(t,e,r){let n=[],i;return jn(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:Gi.INVALID_RULE_OVERRIDE,ruleName:t})),n}function aP(t,e,r,n=[]){let i=[],a=hS(e.definition);if(mr(a))return[];{let s=t.name;jn(a,t)&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:Gi.LEFT_RECURSION,ruleName:s});let u=lf(a,n.concat([t])),h=ga(u,f=>{let d=ln(n);return d.push(f),aP(t,f,r,d)});return i.concat(h)}}function hS(t){let e=[];if(mr(t))return e;let r=ea(t);if(r instanceof fn)e.push(r.referencedRule);else if(r instanceof Pn||r instanceof dn||r instanceof Bn||r instanceof Fn||r instanceof _n||r instanceof zr)e=e.concat(hS(r.definition));else if(r instanceof Dn)e=Qr(rt(r.definition,a=>hS(a.definition)));else if(!(r instanceof Ar))throw Error("non exhaustive match");let n=$p(r),i=t.length>1;if(n&&i){let a=yi(t);return e.concat(hS(a))}else return e}function Xde(t,e){let r=new lb;t.accept(r);let n=r.alternations;return ga(n,a=>{let s=Bu(a.definition);return ga(s,(l,u)=>{let h=oS([l],[],Xu,1);return mr(h)?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:a,emptyChoiceIdx:u}),type:Gi.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:a.idx,alternative:u+1}]:[]})})}function jde(t,e,r){let n=new lb;t.accept(n);let i=n.alternations;return i=cf(i,s=>s.ignoreAmbiguities===!0),ga(i,s=>{let l=s.idx,u=s.maxLookahead||e,h=w1(l,t,u,s),f=$Ye(h,s,t,r),d=zYe(h,s,t,r);return f.concat(d)})}function FYe(t,e){let r=new lb;t.accept(r);let n=r.alternations;return ga(n,a=>a.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:a}),type:Gi.TOO_MANY_ALTS,ruleName:t.name,occurrence:a.idx}]:[])}function Kde(t,e,r){let n=[];return Ae(t,i=>{let a=new iP;i.accept(a);let s=a.allProductions;Ae(s,l=>{let u=ob(l),h=l.maxLookahead||e,f=l.idx,p=k1(f,i,u,h)[0];if(mr(Qr(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:Gi.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function $Ye(t,e,r,n){let i=[],a=Jr(t,(l,u,h)=>(e.definition[h].ignoreAmbiguities===!0||Ae(u,f=>{let d=[h];Ae(t,(p,m)=>{h!==m&&uS(p,f)&&e.definition[m].ignoreAmbiguities!==!0&&d.push(m)}),d.length>1&&!uS(i,f)&&(i.push(f),l.push({alts:d,path:f}))}),l),[]);return rt(a,l=>{let u=rt(l.alts,f=>f+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:u,prefixPath:l.path}),type:Gi.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:l.alts}})}function zYe(t,e,r,n){let i=Jr(t,(s,l,u)=>{let h=rt(l,f=>({idx:u,path:f}));return s.concat(h)},[]);return _c(ga(i,s=>{if(e.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,f=Zr(i,p=>e.definition[p.idx].ignoreAmbiguities!==!0&&p.idx{let m=[p.idx+1,u+1],g=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:m,prefixPath:p.path}),type:Gi.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function GYe(t,e,r){let n=[],i=rt(e,a=>a.name);return Ae(t,a=>{let s=a.name;if(jn(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:Gi.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}var nP,lb,iP,cb=N(()=>{"use strict";Yt();js();ps();E1();sb();Vp();o(Hde,"validateLookahead");o(qde,"validateGrammar");o(OYe,"validateDuplicateProductions");o(PYe,"identifyProductionForDuplicates");o(Wde,"getExtraProductionArgument");nP=class extends ds{static{o(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(BYe,"validateRuleDoesNotAlreadyExist");o(Yde,"validateRuleIsOverridden");o(aP,"validateNoLeftRecursion");o(hS,"getFirstNoneTerminal");lb=class extends ds{static{o(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(Xde,"validateEmptyOrAlternative");o(jde,"validateAmbiguousAlternationAlternatives");iP=class extends ds{static{o(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(FYe,"validateTooManyAlts");o(Kde,"validateSomeNonEmptyLookaheadPath");o($Ye,"checkAlternativesAmbiguities");o(zYe,"checkPrefixAlternativesAmbiguities");o(GYe,"checkTerminalAndNoneTerminalsNameSpace")});function Qde(t){let e=of(t,{errMsgProvider:Mde}),r={};return Ae(t.rules,n=>{r[n.name]=n}),Ide(r,e.errMsgProvider)}function Zde(t){return t=of(t,{errMsgProvider:Gl}),qde(t.rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}var Jde=N(()=>{"use strict";Yt();Ode();cb();b1();o(Qde,"resolveGrammar");o(Zde,"validateGrammar")});function Bf(t){return jn(ipe,t.name)}var epe,tpe,rpe,npe,ipe,S1,Hp,ub,hb,fb,C1=N(()=>{"use strict";Yt();epe="MismatchedTokenException",tpe="NoViableAltException",rpe="EarlyExitException",npe="NotAllInputParsedException",ipe=[epe,tpe,rpe,npe];Object.freeze(ipe);o(Bf,"isRecognitionException");S1=class extends Error{static{o(this,"RecognitionException")}constructor(e,r){super(e),this.token=r,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},Hp=class extends S1{static{o(this,"MismatchedTokenException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=epe}},ub=class extends S1{static{o(this,"NoViableAltException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=tpe}},hb=class extends S1{static{o(this,"NotAllInputParsedException")}constructor(e,r){super(e,r),this.name=npe}},fb=class extends S1{static{o(this,"EarlyExitException")}constructor(e,r,n){super(e,r),this.previousToken=n,this.name=rpe}}});function VYe(t,e,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,f=u.occurrence,d=u.isEndOfRule;this.RULE_STACK.length===1&&d&&h===void 0&&(h=yo,f=1),!(h===void 0||f===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,f,s)&&this.tryInRepetitionRecovery(t,e,r,h)}var sP,lP,oP,fS,cP=N(()=>{"use strict";Up();Yt();C1();VO();js();sP={},lP="InRuleRecoveryException",oP=class extends Error{static{o(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=lP}},fS=class{static{o(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=Ft(e,"recoveryEnabled")?e.recoveryEnabled:ms.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=VYe)}getTokenToInsert(e){let r=Qu(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,r,n,i){let a=this.findReSyncTokenType(),s=this.exportLexerState(),l=[],u=!1,h=this.LA(1),f=this.LA(1),d=o(()=>{let p=this.LA(0),m=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:h,previous:p,ruleName:this.getCurrRuleFullName()}),g=new Hp(m,h,this.LA(0));g.resyncedTokens=Bu(l),this.SAVE_ERROR(g)},"generateErrorMessage");for(;!u;)if(this.tokenMatcher(f,i)){d();return}else if(n.call(this)){d(),e.apply(this,r);return}else this.tokenMatcher(f,a)?u=!0:(f=this.SKIP_TOKEN(),this.addToResyncTokens(f,l));this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,r,n){return!(n===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))}getFollowsForInRuleRecovery(e,r){let n=this.getCurrentGrammarPath(e,r);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new oP("sad sad panda")}canPerformInRuleRecovery(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,r){if(!this.canTokenTypeBeInsertedInRecovery(e)||mr(r))return!1;let n=this.LA(1);return os(r,a=>this.tokenMatcher(n,a))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return jn(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),r=this.LA(1),n=2;for(;;){let i=os(e,a=>nb(r,a));if(i!==void 0)return i;r=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return sP;let e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,r=this.RULE_OCCURRENCE_STACK;return rt(e,(n,i)=>i===0?sP:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:r[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=rt(this.buildFullFollowKeyStack(),r=>this.getFollowSetFromFollowKey(r));return Qr(e)}getFollowSetFromFollowKey(e){if(e===sP)return[yo];let r=e.ruleName+e.idxInCallingRule+KE+e.inRule;return this.resyncFollows[r]}addToResyncTokens(e,r){return this.tokenMatcher(e,yo)||r.push(e),r}reSyncTo(e){let r=[],n=this.LA(1);for(;this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return Bu(r)}attemptInRepetitionRecovery(e,r,n,i,a,s,l){}getCurrentGrammarPath(e,r){let n=this.getHumanReadableRuleStack(),i=ln(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r}}getHumanReadableRuleStack(){return rt(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(VYe,"attemptInRepetitionRecovery")});function dS(t,e,r){return r|e|t}var pS=N(()=>{"use strict";o(dS,"getKeyForAutomaticLookahead")});var Ju,uP=N(()=>{"use strict";Yt();b1();js();cb();E1();Ju=class{static{o(this,"LLkLookaheadStrategy")}constructor(e){var r;this.maxLookahead=(r=e?.maxLookahead)!==null&&r!==void 0?r:ms.maxLookahead}validate(e){let r=this.validateNoLeftRecursion(e.rules);if(mr(r)){let n=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),a=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...r,...n,...i,...a]}return r}validateNoLeftRecursion(e){return ga(e,r=>aP(r,r,Gl))}validateEmptyOrAlternatives(e){return ga(e,r=>Xde(r,Gl))}validateAmbiguousAlternationAlternatives(e,r){return ga(e,n=>jde(n,r,Gl))}validateSomeNonEmptyLookaheadPath(e,r){return Kde(e,r,Gl)}buildLookaheadForAlternation(e){return Bde(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,$de)}buildLookaheadForOptional(e){return Fde(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,ob(e.prodType),zde)}}});function UYe(t){mS.reset(),t.accept(mS);let e=mS.dslMethods;return mS.reset(),e}var gS,hP,mS,ape=N(()=>{"use strict";Yt();js();pS();ps();uP();gS=class{static{o(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=Ft(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:ms.dynamicTokensEnabled,this.maxLookahead=Ft(e,"maxLookahead")?e.maxLookahead:ms.maxLookahead,this.lookaheadStrategy=Ft(e,"lookaheadStrategy")?e.lookaheadStrategy:new Ju({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ae(e,r=>{this.TRACE_INIT(`${r.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:a,repetitionMandatory:s,repetitionMandatoryWithSeparator:l,repetitionWithSeparator:u}=UYe(r);Ae(n,h=>{let f=h.idx===0?"":h.idx;this.TRACE_INIT(`${Xs(h)}${f}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:h.idx,rule:r,maxLookahead:h.maxLookahead||this.maxLookahead,hasPredicates:h.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),p=dS(this.fullRuleNameToShort[r.name],256,h.idx);this.setLaFuncCache(p,d)})}),Ae(i,h=>{this.computeLookaheadFunc(r,h.idx,768,"Repetition",h.maxLookahead,Xs(h))}),Ae(a,h=>{this.computeLookaheadFunc(r,h.idx,512,"Option",h.maxLookahead,Xs(h))}),Ae(s,h=>{this.computeLookaheadFunc(r,h.idx,1024,"RepetitionMandatory",h.maxLookahead,Xs(h))}),Ae(l,h=>{this.computeLookaheadFunc(r,h.idx,1536,"RepetitionMandatoryWithSeparator",h.maxLookahead,Xs(h))}),Ae(u,h=>{this.computeLookaheadFunc(r,h.idx,1280,"RepetitionWithSeparator",h.maxLookahead,Xs(h))})})})}computeLookaheadFunc(e,r,n,i,a,s){this.TRACE_INIT(`${s}${r===0?"":r}`,()=>{let l=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:r,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),u=dS(this.fullRuleNameToShort[e.name],n,r);this.setLaFuncCache(u,l)})}getKeyForAutomaticLookahead(e,r){let n=this.getLastExplicitRuleShortName();return dS(n,e,r)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,r){this.lookAheadFuncsCache.set(e,r)}},hP=class extends ds{static{o(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},mS=new hP;o(UYe,"collectMethods")});function pP(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";o(pP,"setNodeLocationOnlyOffset");o(mP,"setNodeLocationFull");o(spe,"addTerminalToCst");o(ope,"addNoneTerminalToCst")});function gP(t,e){Object.defineProperty(t,HYe,{enumerable:!1,configurable:!0,writable:!1,value:e})}var HYe,cpe=N(()=>{"use strict";HYe="name";o(gP,"defineNameProp")});function qYe(t,e){let r=qr(t),n=r.length;for(let i=0;is.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: - ${a.join(` - -`).replace(/\n/g,` - `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}function hpe(t,e,r){let n=o(function(){},"derivedConstructor");gP(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ae(e,a=>{i[a]=qYe}),n.prototype=i,n.prototype.constructor=n,n}function WYe(t,e){return YYe(t,e)}function YYe(t,e){let r=Zr(e,i=>Si(t[i])===!1),n=rt(r,i=>({msg:`Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,type:yP.MISSING_METHOD,methodName:i}));return _c(n)}var yP,fpe=N(()=>{"use strict";Yt();cpe();o(qYe,"defaultVisit");o(upe,"createBaseSemanticVisitorConstructor");o(hpe,"createBaseVisitorConstructorWithDefaults");(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(yP||(yP={}));o(WYe,"validateVisitor");o(YYe,"validateMissingCstMethods")});var bS,dpe=N(()=>{"use strict";lpe();Yt();fpe();js();bS=class{static{o(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=Ft(e,"nodeLocationTracking")?e.nodeLocationTracking:ms.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=si,this.cstFinallyStateUpdate=si,this.cstPostTerminal=si,this.cstPostNonTerminal=si,this.cstPostRule=si;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=mP,this.setNodeLocationFromNode=mP,this.cstPostRule=si,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=si,this.setNodeLocationFromNode=si,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=pP,this.setNodeLocationFromNode=pP,this.cstPostRule=si,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=si,this.setNodeLocationFromNode=si,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=si,this.setNodeLocationFromNode=si,this.cstPostRule=si,this.setInitialNodeLocation=si;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let r={name:e,children:Object.create(null)};this.setInitialNodeLocation(r),this.CST_STACK.push(r)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN}cstPostTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];spe(n,r,e),this.setNodeLocationFromToken(n.location,r)}cstPostNonTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];ope(n,r,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(xr(this.baseCstVisitorConstructor)){let e=upe(this.className,qr(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(xr(this.baseCstVisitorWithDefaultsConstructor)){let e=hpe(this.className,qr(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}}});var TS,ppe=N(()=>{"use strict";js();TS=class{static{o(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):A1}LA(e){let r=this.currIdx+e;return r<0||this.tokVectorLength<=r?A1:this.tokVector[r]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}}});var wS,mpe=N(()=>{"use strict";Yt();C1();js();b1();cb();ps();wS=class{static{o(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,r,n){return this.consumeInternal(r,e,n)}subrule(e,r,n){return this.subruleInternal(r,e,n)}option(e,r){return this.optionInternal(r,e)}or(e,r){return this.orInternal(r,e)}many(e,r){return this.manyInternal(e,r)}atLeastOne(e,r){return this.atLeastOneInternal(e,r)}CONSUME(e,r){return this.consumeInternal(e,0,r)}CONSUME1(e,r){return this.consumeInternal(e,1,r)}CONSUME2(e,r){return this.consumeInternal(e,2,r)}CONSUME3(e,r){return this.consumeInternal(e,3,r)}CONSUME4(e,r){return this.consumeInternal(e,4,r)}CONSUME5(e,r){return this.consumeInternal(e,5,r)}CONSUME6(e,r){return this.consumeInternal(e,6,r)}CONSUME7(e,r){return this.consumeInternal(e,7,r)}CONSUME8(e,r){return this.consumeInternal(e,8,r)}CONSUME9(e,r){return this.consumeInternal(e,9,r)}SUBRULE(e,r){return this.subruleInternal(e,0,r)}SUBRULE1(e,r){return this.subruleInternal(e,1,r)}SUBRULE2(e,r){return this.subruleInternal(e,2,r)}SUBRULE3(e,r){return this.subruleInternal(e,3,r)}SUBRULE4(e,r){return this.subruleInternal(e,4,r)}SUBRULE5(e,r){return this.subruleInternal(e,5,r)}SUBRULE6(e,r){return this.subruleInternal(e,6,r)}SUBRULE7(e,r){return this.subruleInternal(e,7,r)}SUBRULE8(e,r){return this.subruleInternal(e,8,r)}SUBRULE9(e,r){return this.subruleInternal(e,9,r)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,r,n=_1){if(jn(this.definedRulesNames,e)){let s={message:Gl.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Gi.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);let i=this.defineRule(e,r,n);return this[e]=i,i}OVERRIDE_RULE(e,r,n=_1){let i=Yde(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let a=this.defineRule(e,r,n);return this[e]=a,a}BACKTRACK(e,r){return function(){this.isBackTrackingStack.push(1);let n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(Bf(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return YE(kr(this.gastProductionsCache))}}});var kS,gpe=N(()=>{"use strict";Yt();pS();C1();E1();sb();js();cP();Up();Vp();kS=class{static{o(this,"RecognizerEngine")}initRecognizerEngine(e,r){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=v1,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},Ft(r,"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(Bt(e)){if(mr(e))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(typeof e[0].startOffset=="number")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(Bt(e))this.tokensMap=Jr(e,(a,s)=>(a[s.name]=s,a),{});else if(Ft(e,"modes")&&Pa(Qr(kr(e.modes)),Ede)){let a=Qr(kr(e.modes)),s=qm(a);this.tokensMap=Jr(s,(l,u)=>(l[u.name]=u,l),{})}else if(Sn(e))this.tokensMap=ln(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=yo;let n=Ft(e,"modes")?Qr(kr(e.modes)):kr(e),i=Pa(n,a=>mr(a.categoryMatches));this.tokenMatcher=i?v1:Xu,ju(kr(this.tokensMap))}defineRule(e,r,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> 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=Ft(n,"resyncEnabled")?n.resyncEnabled:_1.resyncEnabled,a=Ft(n,"recoveryValueFunc")?n.recoveryValueFunc:_1.recoveryValueFunc,s=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s;let l;return this.outputCst===!0?l=o(function(...f){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f);let d=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(d),d}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTry"):l=o(function(...f){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,f)}catch(d){return this.invokeRuleCatch(d,i,a)}finally{this.ruleFinallyStateUpdate()}},"invokeRuleWithTryCst"),Object.assign(l,{ruleName:e,originalGrammarAction:r})}invokeRuleCatch(e,r,n){let i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(Bf(e)){let s=e;if(a){let l=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(l))if(s.resyncedTokens=this.reSyncTo(l),this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];return u.recoveredNode=!0,u}else return n(e);else{if(this.outputCst){let u=this.CST_STACK[this.CST_STACK.length-1];u.recoveredNode=!0,s.partialCstResult=u}throw s}}else{if(i)return this.moveToTerminatedState(),n(e);throw s}}else throw e}optionInternal(e,r){let n=this.getKeyForAutomaticLookahead(512,r);return this.optionInternalLogic(e,r,n)}optionInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof e!="function"){a=e.DEF;let s=e.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=e;if(i.call(this)===!0)return a.call(this)}atLeastOneInternal(e,r){let n=this.getKeyForAutomaticLookahead(1024,e);return this.atLeastOneInternalLogic(e,r,n)}atLeastOneInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let s=r.GATE;if(s!==void 0){let l=i;i=o(()=>s.call(this)&&l.call(this),"lookAheadFunc")}}else a=r;if(i.call(this)===!0){let s=this.doSingleRepetition(a);for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a)}else throw this.raiseEarlyExitException(e,Jn.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],i,1024,e,aS)}atLeastOneSepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1536,e);this.atLeastOneSepFirstInternalLogic(e,r,n)}atLeastOneSepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,ab],l,1536,e,ab)}else throw this.raiseEarlyExitException(e,Jn.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)}manyInternal(e,r){let n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,r,n)}manyInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let l=r.GATE;if(l!==void 0){let u=i;i=o(()=>l.call(this)&&u.call(this),"lookaheadFunction")}}else a=r;let s=!0;for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],i,768,e,iS,s)}manySepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1280,e);this.manySepFirstInternalLogic(e,r,n)}manySepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let l=o(()=>this.tokenMatcher(this.LA(1),a),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,l,i,ib],l,1280,e,ib)}}repetitionSepSecondInternal(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,1536,e,a)}doSingleRepetition(e){let r=this.getLexerPosition();return e.call(this),this.getLexerPosition()>r}orInternal(e,r){let n=this.getKeyForAutomaticLookahead(256,r),i=Bt(e)?e:e.DEF,s=this.getLaFuncFromCache(n).call(this,i);if(s!==void 0)return i[s].ALT.call(this);this.raiseNoAltException(r,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new hb(r,e))}}subruleInternal(e,r,n){let i;try{let a=n!==void 0?n.ARGS:void 0;return this.subruleIdx=r,i=e.apply(this,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(a){throw this.subruleInternalError(a,n,e.ruleName)}}subruleInternalError(e,r,n){throw Bf(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,r,n){let i;try{let a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(a){i=this.consumeInternalRecovery(e,r,a)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i}consumeInternalError(e,r,n){let i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Hp(i,r,a))}consumeInternalRecovery(e,r,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===lP?n:a}}else throw n}saveRecogState(){let e=this.errors,r=ln(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),yo)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}});var ES,ype=N(()=>{"use strict";C1();Yt();E1();js();ES=class{static{o(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=Ft(e,"errorMessageProvider")?e.errorMessageProvider:ms.errorMessageProvider}SAVE_ERROR(e){if(Bf(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:ln(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return ln(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,r,n){let i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],l=k1(e,a,r,this.maxLookahead)[0],u=[];for(let f=1;f<=this.maxLookahead;f++)u.push(this.LA(f));let h=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:l,actual:u,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new fb(h,this.LA(1),this.LA(0)))}raiseNoAltException(e,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=w1(e,i,this.maxLookahead),s=[];for(let h=1;h<=this.maxLookahead;h++)s.push(this.LA(h));let l=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:s,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new ub(u,this.LA(1),l))}}});var SS,vpe=N(()=>{"use strict";sb();Yt();SS=class{static{o(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,r){let n=this.gastProductionsCache[e];if(xr(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return oS([n],r,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let r=ea(e.ruleStack),i=this.getGAstProductions()[r];return new nS(i,e).startWalking()}}});function pb(t,e,r,n=!1){AS(r);let i=ma(this.recordingProdStack),a=Si(e)?e:e.DEF,s=new t({definition:[],idx:r});return n&&(s.separator=e.SEP),Ft(e,"MAX_LOOKAHEAD")&&(s.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),_S}function KYe(t,e){AS(e);let r=ma(this.recordingProdStack),n=Bt(t)===!1,i=n===!1?t:t.DEF,a=new Dn({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});Ft(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD);let s=z2(i,l=>Si(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ae(i,l=>{let u=new Pn({definition:[]});a.definition.push(u),Ft(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:Ft(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),_S}function Tpe(t){return t===0?"":`${t}`}function AS(t){if(t<0||t>bpe){let e=new Error(`Invalid DSL Method idx value: <${t}> - Idx value must be a none negative value smaller than ${bpe+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}var _S,xpe,bpe,wpe,kpe,jYe,CS,Epe=N(()=>{"use strict";Yt();ps();tb();Vp();Up();js();pS();_S={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(_S);xpe=!0,bpe=Math.pow(2,8)-1,wpe=Pf({name:"RECORDING_PHASE_TOKEN",pattern:Zn.NA});ju([wpe]);kpe=Qu(wpe,`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(kpe);jYe={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},CS=class{static{o(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let r=e>0?e:"";this[`CONSUME${r}`]=function(n,i){return this.consumeInternalRecord(n,e,i)},this[`SUBRULE${r}`]=function(n,i){return this.subruleInternalRecord(n,e,i)},this[`OPTION${r}`]=function(n){return this.optionInternalRecord(n,e)},this[`OR${r}`]=function(n){return this.orInternalRecord(n,e)},this[`MANY${r}`]=function(n){this.manyInternalRecord(e,n)},this[`MANY_SEP${r}`]=function(n){this.manySepFirstInternalRecord(e,n)},this[`AT_LEAST_ONE${r}`]=function(n){this.atLeastOneInternalRecord(e,n)},this[`AT_LEAST_ONE_SEP${r}`]=function(n){this.atLeastOneSepFirstInternalRecord(e,n)}}this.consume=function(e,r,n){return this.consumeInternalRecord(r,e,n)},this.subrule=function(e,r,n){return this.subruleInternalRecord(r,e,n)},this.option=function(e,r){return this.optionInternalRecord(r,e)},this.or=function(e,r){return this.orInternalRecord(r,e)},this.many=function(e,r){this.manyInternalRecord(e,r)},this.atLeastOne=function(e,r){this.atLeastOneInternalRecord(e,r)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let r=0;r<10;r++){let n=r>0?r:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,r){return()=>!0}LA_RECORD(e){return A1}topLevelRuleRecord(e,r){try{let n=new fs({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.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 n}throw n}}optionInternalRecord(e,r){return pb.call(this,dn,e,r)}atLeastOneInternalRecord(e,r){pb.call(this,Bn,r,e)}atLeastOneSepFirstInternalRecord(e,r){pb.call(this,Fn,r,e,xpe)}manyInternalRecord(e,r){pb.call(this,zr,r,e)}manySepFirstInternalRecord(e,r){pb.call(this,_n,r,e,xpe)}orInternalRecord(e,r){return KYe.call(this,e,r)}subruleInternalRecord(e,r,n){if(AS(r),!e||Ft(e,"ruleName")===!1){let l=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> - inside top level rule: <${this.recordingProdStack[0].name}>`);throw l.KNOWN_RECORDER_ERROR=!0,l}let i=ma(this.recordingProdStack),a=e.ruleName,s=new fn({idx:r,nonTerminalName:a,label:n?.LABEL,referencedRule:void 0});return i.definition.push(s),this.outputCst?jYe:_S}consumeInternalRecord(e,r,n){if(AS(r),!KO(e)){let s=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> - inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let i=ma(this.recordingProdStack),a=new Ar({idx:r,terminalType:e,label:n?.LABEL});return i.definition.push(a),kpe}};o(pb,"recordProd");o(KYe,"recordOrProd");o(Tpe,"getIdxSuffix");o(AS,"assertMethodIdxIsValid")});var DS,Spe=N(()=>{"use strict";Yt();d1();js();DS=class{static{o(this,"PerformanceTracer")}initPerformanceTracer(e){if(Ft(e,"traceInitPerf")){let r=e.traceInitPerf,n=typeof r=="number";this.traceInitMaxIdent=n?r:1/0,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ms.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;let n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:i,value:a}=Zx(r),s=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,a}else return r()}}});function Cpe(t,e){e.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]})})}var Ape=N(()=>{"use strict";o(Cpe,"applyMixins")});function LS(t=void 0){return function(){return t}}var A1,ms,_1,Gi,mb,gb,js=N(()=>{"use strict";Yt();d1();nde();Up();b1();Jde();cP();ape();dpe();ppe();mpe();gpe();ype();vpe();Epe();Spe();Ape();cb();A1=Qu(yo,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(A1);ms=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Zu,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),_1=Object.freeze({recoveryValueFunc:o(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(t){t[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"})(Gi||(Gi={}));o(LS,"EMPTY_ALT");mb=class t{static{o(this,"Parser")}static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{Jx(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ae(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=Qde({rules:kr(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(mr(n)&&this.skipValidations===!1){let i=Zde({rules:kr(this.gastProductionsCache),tokenTypes:kr(this.tokensMap),errMsgProvider:Gl,grammarName:r}),a=Hde({lookaheadStrategy:this.lookaheadStrategy,rules:kr(this.gastProductionsCache),tokenTypes:kr(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),mr(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=rde(kr(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:kr(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(kr(this.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!mr(this.definitionErrors))throw e=rt(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: - ${e.join(` -------------------------------- -`)}`)})}constructor(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),Ft(r,"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=Ft(r,"skipValidations")?r.skipValidations:ms.skipValidations}};mb.DEFER_DEFINITION_ERRORS_HANDLING=!1;Cpe(mb,[fS,gS,bS,TS,kS,wS,ES,SS,CS,DS]);gb=class extends mb{static{o(this,"EmbeddedActionsParser")}constructor(e,r=ms){let n=ln(r);n.outputCst=!1,super(e,n)}}});var _pe=N(()=>{"use strict";ps()});var Dpe=N(()=>{"use strict"});var Lpe=N(()=>{"use strict";_pe();Dpe()});var Rpe=N(()=>{"use strict";FO()});var Ff=N(()=>{"use strict";FO();js();tb();Up();E1();uP();b1();C1();QO();ps();ps();Lpe();Rpe()});function qp(t,e,r){return`${t.name}_${e}_${r}`}function Ope(t){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};nXe(e,t);let r=t.length;for(let n=0;nPpe(t,e,s));return N1(t,e,n,r,...i)}function cXe(t,e,r){let n=ia(t,e,r,{type:$f});zf(t,n);let i=N1(t,e,n,r,Wp(t,e,r));return uXe(t,e,r,i)}function Wp(t,e,r){let n=Zr(rt(r.definition,i=>Ppe(t,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:fXe(t,n)}function Bpe(t,e,r,n,i){let a=n.left,s=n.right,l=ia(t,e,r,{type:rXe});zf(t,l);let u=ia(t,e,r,{type:Ipe});return a.loopback=l,u.loopback=l,t.decisionMap[qp(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,Di(s,l),i===void 0?(Di(l,a),Di(l,u)):(Di(l,u),Di(l,i.left),Di(i.right,a)),{left:a,right:u}}function Fpe(t,e,r,n,i){let a=n.left,s=n.right,l=ia(t,e,r,{type:tXe});zf(t,l);let u=ia(t,e,r,{type:Ipe}),h=ia(t,e,r,{type:eXe});return l.loopback=h,u.loopback=h,Di(l,a),Di(l,u),Di(s,h),i!==void 0?(Di(h,u),Di(h,i.left),Di(i.right,a)):Di(h,l),t.decisionMap[qp(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function uXe(t,e,r,n){let i=n.left,a=n.right;return Di(i,a),t.decisionMap[qp(e,"Option",r.idx)]=i,n}function zf(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}function N1(t,e,r,n,...i){let a=ia(t,e,n,{type:JYe,start:r});r.end=a;for(let l of i)l!==void 0?(Di(r,l.left),Di(l.right,a)):Di(r,a);let s={left:r,right:a};return t.decisionMap[qp(e,hXe(n),n.idx)]=r,s}function hXe(t){if(t instanceof Dn)return"Alternation";if(t instanceof dn)return"Option";if(t instanceof zr)return"Repetition";if(t instanceof _n)return"RepetitionWithSeparator";if(t instanceof Bn)return"RepetitionMandatory";if(t instanceof Fn)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function fXe(t,e){let r=e.length;for(let a=0;a{"use strict";Vm();ER();Ff();o(qp,"buildATNKey");$f=1,ZYe=2,Npe=4,Mpe=5,R1=7,JYe=8,eXe=9,tXe=10,rXe=11,Ipe=12,yb=class{static{o(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},D1=class extends yb{static{o(this,"AtomTransition")}constructor(e,r){super(e),this.tokenType=r}},vb=class extends yb{static{o(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},L1=class extends yb{static{o(this,"RuleTransition")}constructor(e,r,n){super(e),this.rule=r,this.followState=n}isEpsilon(){return!0}};o(Ope,"createATN");o(nXe,"createRuleStartAndStopATNStates");o(Ppe,"atom");o(iXe,"repetition");o(aXe,"repetitionSep");o(sXe,"repetitionMandatory");o(oXe,"repetitionMandatorySep");o(lXe,"alternation");o(cXe,"option");o(Wp,"block");o(Bpe,"plus");o(Fpe,"star");o(uXe,"optional");o(zf,"defineDecisionState");o(N1,"makeAlts");o(hXe,"getProdType");o(fXe,"makeBlock");o(xP,"tokenRef");o(dXe,"ruleRef");o(pXe,"buildRuleHandle");o(Di,"epsilon");o(ia,"newState");o(bP,"addTransition");o(mXe,"removeState")});function TP(t,e=!0){return`${e?`a${t.alt}`:""}s${t.state.stateNumber}:${t.stack.map(r=>r.stateNumber.toString()).join("_")}`}var xb,M1,zpe=N(()=>{"use strict";Vm();xb={},M1=class{static{o(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let r=TP(e);r in this.map||(this.map[r]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return rt(this.configs,e=>e.alt)}get key(){let e="";for(let r in this.map)e+=r+":";return e}};o(TP,"getATNConfigKey")});function gXe(t,e){let r={};return n=>{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:t,decision:e,states:{}},r[i]=a),a}}function Vpe(t,e=!0){let r=new Set;for(let n of t){let i=new Set;for(let a of n){if(a===void 0){if(e)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function yXe(t){let e=t.decisionStates.length,r=Array(e);for(let n=0;nKu(i)).join(", "),r=t.production.idx===0?"":t.production.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${wXe(t.production)}${r}> inside <${t.topLevelRule.name}> Rule, -<${e}> may appears as a prefix path in all these alternatives. -`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,n}function wXe(t){if(t instanceof fn)return"SUBRULE";if(t instanceof dn)return"OPTION";if(t instanceof Dn)return"OR";if(t instanceof Bn)return"AT_LEAST_ONE";if(t instanceof Fn)return"AT_LEAST_ONE_SEP";if(t instanceof _n)return"MANY_SEP";if(t instanceof zr)return"MANY";if(t instanceof Ar)return"CONSUME";throw Error("non exhaustive match")}function kXe(t,e,r){let n=ga(e.configs.elements,a=>a.state.transitions),i=Uae(n.filter(a=>a instanceof D1).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:t}}function EXe(t,e){return t.edges[e.tokenTypeIdx]}function SXe(t,e,r){let n=new M1,i=[];for(let s of t.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===R1){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u0&&!LXe(a))for(let s of i)a.add(s);return a}function CXe(t,e){if(t instanceof D1&&nb(e,t.tokenType))return t.target}function AXe(t,e){let r;for(let n of t.elements)if(e.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function Hpe(t){return{configs:t,edges:{},isAcceptState:!1,prediction:-1}}function Upe(t,e,r,n){return n=qpe(t,n),e.edges[r.tokenTypeIdx]=n,n}function qpe(t,e){if(e===xb)return e;let r=e.configs.key,n=t.states[r];return n!==void 0?n:(e.configs.finalize(),t.states[r]=e,e)}function _Xe(t){let e=new M1,r=t.transitions.length;for(let n=0;n0){let i=[...t.stack],s={state:i.pop(),alt:t.alt,stack:i};NS(s,e)}else e.add(t);return}r.epsilonOnlyTransitions||e.add(t);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}function OXe(t){for(let e of Array.from(t.values()))if(Object.keys(e).length===1)return!0;return!1}var RS,Gpe,bb,Wpe=N(()=>{"use strict";Ff();$pe();zpe();NR();CR();Hae();Vm();Lw();ak();uk();PR();o(gXe,"createDFACache");RS=class{static{o(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,r){this.predicates[e]=r}toString(){let e="",r=this.predicates.length;for(let n=0;nconsole.log(n))}initialize(e){this.atn=Ope(e.rules),this.dfas=yXe(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:r,rule:n,hasPredicates:i,dynamicTokensEnabled:a}=e,s=this.dfas,l=this.logging,u=qp(n,"Alternation",r),f=this.atn.decisionMap[u].decision,d=rt(cS({maxLookahead:1,occurrence:r,prodType:"Alternation",rule:n}),p=>rt(p,m=>m[0]));if(Vpe(d,!1)&&!a){let p=Jr(d,(m,g,y)=>(Ae(g,v=>{v&&(m[v.tokenTypeIdx]=y,Ae(v.categoryMatches,x=>{m[x]=y}))}),m),{});return i?function(m){var g;let y=this.LA(1),v=p[y.tokenTypeIdx];if(m!==void 0&&v!==void 0){let x=(g=m[v])===null||g===void 0?void 0:g.GATE;if(x!==void 0&&x.call(this)===!1)return}return v}:function(){let m=this.LA(1);return p[m.tokenTypeIdx]}}else return i?function(p){let m=new RS,g=p===void 0?0:p.length;for(let v=0;vrt(p,m=>m[0]));if(Vpe(d)&&d[0][0]&&!a){let p=d[0],m=Qr(p);if(m.length===1&&mr(m[0].categoryMatches)){let y=m[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===y}}else{let g=Jr(m,(y,v)=>(v!==void 0&&(y[v.tokenTypeIdx]=!0,Ae(v.categoryMatches,x=>{y[x]=!0})),y),{});return function(){let y=this.LA(1);return g[y.tokenTypeIdx]===!0}}}return function(){let p=wP.call(this,s,f,Gpe,l);return typeof p=="object"?!1:p===0}}};o(Vpe,"isLL1Sequence");o(yXe,"initATNSimulator");o(wP,"adaptivePredict");o(vXe,"performLookahead");o(xXe,"computeLookaheadTarget");o(bXe,"reportLookaheadAmbiguity");o(TXe,"buildAmbiguityError");o(wXe,"getProductionDslName");o(kXe,"buildAdaptivePredictError");o(EXe,"getExistingTargetState");o(SXe,"computeReachSet");o(CXe,"getReachableTarget");o(AXe,"getUniqueAlt");o(Hpe,"newDFAState");o(Upe,"addDFAEdge");o(qpe,"addDFAState");o(_Xe,"computeStartState");o(NS,"closure");o(DXe,"getEpsilonTarget");o(LXe,"hasConfigInRuleStopState");o(RXe,"allConfigsInRuleStopStates");o(NXe,"hasConflictTerminatingPrediction");o(MXe,"getConflictingAltSets");o(IXe,"hasConflictingAltSet");o(OXe,"hasStateAssociatedWithOneAlt")});var Ype=N(()=>{"use strict";Wpe()});var Xpe,kP,jpe,MS,tn,Gr,IS,Kpe,EP,Qpe,Zpe,Jpe,e0e,SP,t0e,r0e,n0e,OS,I1,O1,CP,P1,i0e,AP,_P,DP,LP,RP,a0e,s0e,NP,o0e,MP,Tb,l0e,c0e,u0e,h0e,f0e,d0e,p0e,m0e,PS,g0e,y0e,v0e,x0e,b0e,T0e,w0e,k0e,E0e,S0e,C0e,BS,A0e,_0e,D0e,L0e,R0e,N0e,M0e,I0e,O0e,P0e,B0e,F0e,$0e,IP,OP,z0e,G0e,V0e,U0e,H0e,q0e,W0e,Y0e,X0e,PP,Ge,BP=N(()=>{"use strict";(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(Xpe||(Xpe={}));(function(t){function e(r){return typeof r=="string"}o(e,"is"),t.is=e})(kP||(kP={}));(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(jpe||(jpe={}));(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}o(e,"is"),t.is=e})(MS||(MS={}));(function(t){function e(n,i){return n===Number.MAX_VALUE&&(n=MS.MAX_VALUE),i===Number.MAX_VALUE&&(i=MS.MAX_VALUE),{line:n,character:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.uinteger(i.line)&&Ge.uinteger(i.character)}o(r,"is"),t.is=r})(tn||(tn={}));(function(t){function e(n,i,a,s){if(Ge.uinteger(n)&&Ge.uinteger(i)&&Ge.uinteger(a)&&Ge.uinteger(s))return{start:tn.create(n,i),end:tn.create(a,s)};if(tn.is(n)&&tn.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&tn.is(i.start)&&tn.is(i.end)}o(r,"is"),t.is=r})(Gr||(Gr={}));(function(t){function e(n,i){return{uri:n,range:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.range)&&(Ge.string(i.uri)||Ge.undefined(i.uri))}o(r,"is"),t.is=r})(IS||(IS={}));(function(t){function e(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.targetRange)&&Ge.string(i.targetUri)&&Gr.is(i.targetSelectionRange)&&(Gr.is(i.originSelectionRange)||Ge.undefined(i.originSelectionRange))}o(r,"is"),t.is=r})(Kpe||(Kpe={}));(function(t){function e(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.numberRange(i.red,0,1)&&Ge.numberRange(i.green,0,1)&&Ge.numberRange(i.blue,0,1)&&Ge.numberRange(i.alpha,0,1)}o(r,"is"),t.is=r})(EP||(EP={}));(function(t){function e(n,i){return{range:n,color:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.range)&&EP.is(i.color)}o(r,"is"),t.is=r})(Qpe||(Qpe={}));(function(t){function e(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.string(i.label)&&(Ge.undefined(i.textEdit)||O1.is(i))&&(Ge.undefined(i.additionalTextEdits)||Ge.typedArray(i.additionalTextEdits,O1.is))}o(r,"is"),t.is=r})(Zpe||(Zpe={}));(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(Jpe||(Jpe={}));(function(t){function e(n,i,a,s,l,u){let h={startLine:n,endLine:i};return Ge.defined(a)&&(h.startCharacter=a),Ge.defined(s)&&(h.endCharacter=s),Ge.defined(l)&&(h.kind=l),Ge.defined(u)&&(h.collapsedText=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.uinteger(i.startLine)&&Ge.uinteger(i.startLine)&&(Ge.undefined(i.startCharacter)||Ge.uinteger(i.startCharacter))&&(Ge.undefined(i.endCharacter)||Ge.uinteger(i.endCharacter))&&(Ge.undefined(i.kind)||Ge.string(i.kind))}o(r,"is"),t.is=r})(e0e||(e0e={}));(function(t){function e(n,i){return{location:n,message:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&IS.is(i.location)&&Ge.string(i.message)}o(r,"is"),t.is=r})(SP||(SP={}));(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(t0e||(t0e={}));(function(t){t.Unnecessary=1,t.Deprecated=2})(r0e||(r0e={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(n)&&Ge.string(n.href)}o(e,"is"),t.is=e})(n0e||(n0e={}));(function(t){function e(n,i,a,s,l,u){let h={range:n,message:i};return Ge.defined(a)&&(h.severity=a),Ge.defined(s)&&(h.code=s),Ge.defined(l)&&(h.source=l),Ge.defined(u)&&(h.relatedInformation=u),h}o(e,"create"),t.create=e;function r(n){var i;let a=n;return Ge.defined(a)&&Gr.is(a.range)&&Ge.string(a.message)&&(Ge.number(a.severity)||Ge.undefined(a.severity))&&(Ge.integer(a.code)||Ge.string(a.code)||Ge.undefined(a.code))&&(Ge.undefined(a.codeDescription)||Ge.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(Ge.string(a.source)||Ge.undefined(a.source))&&(Ge.undefined(a.relatedInformation)||Ge.typedArray(a.relatedInformation,SP.is))}o(r,"is"),t.is=r})(OS||(OS={}));(function(t){function e(n,i,...a){let s={title:n,command:i};return Ge.defined(a)&&a.length>0&&(s.arguments=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.title)&&Ge.string(i.command)}o(r,"is"),t.is=r})(I1||(I1={}));(function(t){function e(a,s){return{range:a,newText:s}}o(e,"replace"),t.replace=e;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),t.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),t.del=n;function i(a){let s=a;return Ge.objectLiteral(s)&&Ge.string(s.newText)&&Gr.is(s.range)}o(i,"is"),t.is=i})(O1||(O1={}));(function(t){function e(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Ge.string(i.label)&&(Ge.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(Ge.string(i.description)||i.description===void 0)}o(r,"is"),t.is=r})(CP||(CP={}));(function(t){function e(r){let n=r;return Ge.string(n)}o(e,"is"),t.is=e})(P1||(P1={}));(function(t){function e(a,s,l){return{range:a,newText:s,annotationId:l}}o(e,"replace"),t.replace=e;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),t.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),t.del=n;function i(a){let s=a;return O1.is(s)&&(CP.is(s.annotationId)||P1.is(s.annotationId))}o(i,"is"),t.is=i})(i0e||(i0e={}));(function(t){function e(n,i){return{textDocument:n,edits:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&NP.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),t.is=r})(AP||(AP={}));(function(t){function e(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="create"&&Ge.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||Ge.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Ge.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||P1.is(i.annotationId))}o(r,"is"),t.is=r})(_P||(_P={}));(function(t){function e(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="rename"&&Ge.string(i.oldUri)&&Ge.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||Ge.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||Ge.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||P1.is(i.annotationId))}o(r,"is"),t.is=r})(DP||(DP={}));(function(t){function e(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&i.kind==="delete"&&Ge.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||Ge.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||Ge.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||P1.is(i.annotationId))}o(r,"is"),t.is=r})(LP||(LP={}));(function(t){function e(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>Ge.string(i.kind)?_P.is(i)||DP.is(i)||LP.is(i):AP.is(i)))}o(e,"is"),t.is=e})(RP||(RP={}));(function(t){function e(n){return{uri:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)}o(r,"is"),t.is=r})(a0e||(a0e={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)&&Ge.integer(i.version)}o(r,"is"),t.is=r})(s0e||(s0e={}));(function(t){function e(n,i){return{uri:n,version:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)&&(i.version===null||Ge.integer(i.version))}o(r,"is"),t.is=r})(NP||(NP={}));(function(t){function e(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.string(i.uri)&&Ge.string(i.languageId)&&Ge.integer(i.version)&&Ge.string(i.text)}o(r,"is"),t.is=r})(o0e||(o0e={}));(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(r){let n=r;return n===t.PlainText||n===t.Markdown}o(e,"is"),t.is=e})(MP||(MP={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(r)&&MP.is(n.kind)&&Ge.string(n.value)}o(e,"is"),t.is=e})(Tb||(Tb={}));(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(l0e||(l0e={}));(function(t){t.PlainText=1,t.Snippet=2})(c0e||(c0e={}));(function(t){t.Deprecated=1})(u0e||(u0e={}));(function(t){function e(n,i,a){return{newText:n,insert:i,replace:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Ge.string(i.newText)&&Gr.is(i.insert)&&Gr.is(i.replace)}o(r,"is"),t.is=r})(h0e||(h0e={}));(function(t){t.asIs=1,t.adjustIndentation=2})(f0e||(f0e={}));(function(t){function e(r){let n=r;return n&&(Ge.string(n.detail)||n.detail===void 0)&&(Ge.string(n.description)||n.description===void 0)}o(e,"is"),t.is=e})(d0e||(d0e={}));(function(t){function e(r){return{label:r}}o(e,"create"),t.create=e})(p0e||(p0e={}));(function(t){function e(r,n){return{items:r||[],isIncomplete:!!n}}o(e,"create"),t.create=e})(m0e||(m0e={}));(function(t){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(e,"fromPlainText"),t.fromPlainText=e;function r(n){let i=n;return Ge.string(i)||Ge.objectLiteral(i)&&Ge.string(i.language)&&Ge.string(i.value)}o(r,"is"),t.is=r})(PS||(PS={}));(function(t){function e(r){let n=r;return!!n&&Ge.objectLiteral(n)&&(Tb.is(n.contents)||PS.is(n.contents)||Ge.typedArray(n.contents,PS.is))&&(r.range===void 0||Gr.is(r.range))}o(e,"is"),t.is=e})(g0e||(g0e={}));(function(t){function e(r,n){return n?{label:r,documentation:n}:{label:r}}o(e,"create"),t.create=e})(y0e||(y0e={}));(function(t){function e(r,n,...i){let a={label:r};return Ge.defined(n)&&(a.documentation=n),Ge.defined(i)?a.parameters=i:a.parameters=[],a}o(e,"create"),t.create=e})(v0e||(v0e={}));(function(t){t.Text=1,t.Read=2,t.Write=3})(x0e||(x0e={}));(function(t){function e(r,n){let i={range:r};return Ge.number(n)&&(i.kind=n),i}o(e,"create"),t.create=e})(b0e||(b0e={}));(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(T0e||(T0e={}));(function(t){t.Deprecated=1})(w0e||(w0e={}));(function(t){function e(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(e,"create"),t.create=e})(k0e||(k0e={}));(function(t){function e(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}o(e,"create"),t.create=e})(E0e||(E0e={}));(function(t){function e(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Ge.string(i.name)&&Ge.number(i.kind)&&Gr.is(i.range)&&Gr.is(i.selectionRange)&&(i.detail===void 0||Ge.string(i.detail))&&(i.deprecated===void 0||Ge.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),t.is=r})(S0e||(S0e={}));(function(t){t.Empty="",t.QuickFix="quickfix",t.Refactor="refactor",t.RefactorExtract="refactor.extract",t.RefactorInline="refactor.inline",t.RefactorRewrite="refactor.rewrite",t.Source="source",t.SourceOrganizeImports="source.organizeImports",t.SourceFixAll="source.fixAll"})(C0e||(C0e={}));(function(t){t.Invoked=1,t.Automatic=2})(BS||(BS={}));(function(t){function e(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.typedArray(i.diagnostics,OS.is)&&(i.only===void 0||Ge.typedArray(i.only,Ge.string))&&(i.triggerKind===void 0||i.triggerKind===BS.Invoked||i.triggerKind===BS.Automatic)}o(r,"is"),t.is=r})(A0e||(A0e={}));(function(t){function e(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):I1.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return i&&Ge.string(i.title)&&(i.diagnostics===void 0||Ge.typedArray(i.diagnostics,OS.is))&&(i.kind===void 0||Ge.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||I1.is(i.command))&&(i.isPreferred===void 0||Ge.boolean(i.isPreferred))&&(i.edit===void 0||RP.is(i.edit))}o(r,"is"),t.is=r})(_0e||(_0e={}));(function(t){function e(n,i){let a={range:n};return Ge.defined(i)&&(a.data=i),a}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Gr.is(i.range)&&(Ge.undefined(i.command)||I1.is(i.command))}o(r,"is"),t.is=r})(D0e||(D0e={}));(function(t){function e(n,i){return{tabSize:n,insertSpaces:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Ge.uinteger(i.tabSize)&&Ge.boolean(i.insertSpaces)}o(r,"is"),t.is=r})(L0e||(L0e={}));(function(t){function e(n,i,a){return{range:n,target:i,data:a}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Gr.is(i.range)&&(Ge.undefined(i.target)||Ge.string(i.target))}o(r,"is"),t.is=r})(R0e||(R0e={}));(function(t){function e(n,i){return{range:n,parent:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&Gr.is(i.range)&&(i.parent===void 0||t.is(i.parent))}o(r,"is"),t.is=r})(N0e||(N0e={}));(function(t){t.namespace="namespace",t.type="type",t.class="class",t.enum="enum",t.interface="interface",t.struct="struct",t.typeParameter="typeParameter",t.parameter="parameter",t.variable="variable",t.property="property",t.enumMember="enumMember",t.event="event",t.function="function",t.method="method",t.macro="macro",t.keyword="keyword",t.modifier="modifier",t.comment="comment",t.string="string",t.number="number",t.regexp="regexp",t.operator="operator",t.decorator="decorator"})(M0e||(M0e={}));(function(t){t.declaration="declaration",t.definition="definition",t.readonly="readonly",t.static="static",t.deprecated="deprecated",t.abstract="abstract",t.async="async",t.modification="modification",t.documentation="documentation",t.defaultLibrary="defaultLibrary"})(I0e||(I0e={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(e,"is"),t.is=e})(O0e||(O0e={}));(function(t){function e(n,i){return{range:n,text:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Gr.is(i.range)&&Ge.string(i.text)}o(r,"is"),t.is=r})(P0e||(P0e={}));(function(t){function e(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Gr.is(i.range)&&Ge.boolean(i.caseSensitiveLookup)&&(Ge.string(i.variableName)||i.variableName===void 0)}o(r,"is"),t.is=r})(B0e||(B0e={}));(function(t){function e(n,i){return{range:n,expression:i}}o(e,"create"),t.create=e;function r(n){let i=n;return i!=null&&Gr.is(i.range)&&(Ge.string(i.expression)||i.expression===void 0)}o(r,"is"),t.is=r})(F0e||(F0e={}));(function(t){function e(n,i){return{frameId:n,stoppedLocation:i}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.defined(i)&&Gr.is(n.stoppedLocation)}o(r,"is"),t.is=r})($0e||($0e={}));(function(t){t.Type=1,t.Parameter=2;function e(r){return r===1||r===2}o(e,"is"),t.is=e})(IP||(IP={}));(function(t){function e(n){return{value:n}}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&(i.tooltip===void 0||Ge.string(i.tooltip)||Tb.is(i.tooltip))&&(i.location===void 0||IS.is(i.location))&&(i.command===void 0||I1.is(i.command))}o(r,"is"),t.is=r})(OP||(OP={}));(function(t){function e(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(e,"create"),t.create=e;function r(n){let i=n;return Ge.objectLiteral(i)&&tn.is(i.position)&&(Ge.string(i.label)||Ge.typedArray(i.label,OP.is))&&(i.kind===void 0||IP.is(i.kind))&&i.textEdits===void 0||Ge.typedArray(i.textEdits,O1.is)&&(i.tooltip===void 0||Ge.string(i.tooltip)||Tb.is(i.tooltip))&&(i.paddingLeft===void 0||Ge.boolean(i.paddingLeft))&&(i.paddingRight===void 0||Ge.boolean(i.paddingRight))}o(r,"is"),t.is=r})(z0e||(z0e={}));(function(t){function e(r){return{kind:"snippet",value:r}}o(e,"createSnippet"),t.createSnippet=e})(G0e||(G0e={}));(function(t){function e(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(e,"create"),t.create=e})(V0e||(V0e={}));(function(t){function e(r){return{items:r}}o(e,"create"),t.create=e})(U0e||(U0e={}));(function(t){t.Invoked=0,t.Automatic=1})(H0e||(H0e={}));(function(t){function e(r,n){return{range:r,text:n}}o(e,"create"),t.create=e})(q0e||(q0e={}));(function(t){function e(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(e,"create"),t.create=e})(W0e||(W0e={}));(function(t){function e(r){let n=r;return Ge.objectLiteral(n)&&kP.is(n.uri)&&Ge.string(n.name)}o(e,"is"),t.is=e})(Y0e||(Y0e={}));(function(t){function e(a,s,l,u){return new PP(a,s,l,u)}o(e,"create"),t.create=e;function r(a){let s=a;return!!(Ge.defined(s)&&Ge.string(s.uri)&&(Ge.undefined(s.languageId)||Ge.string(s.languageId))&&Ge.uinteger(s.lineCount)&&Ge.func(s.getText)&&Ge.func(s.positionAt)&&Ge.func(s.offsetAt))}o(r,"is"),t.is=r;function n(a,s){let l=a.getText(),u=i(s,(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),h=l.length;for(let f=u.length-1;f>=0;f--){let d=u[f],p=a.offsetAt(d.range.start),m=a.offsetAt(d.range.end);if(m<=h)l=l.substring(0,p)+d.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),t.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let f=0,d=0,p=0;for(;f0&&e.push(r.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return tn.create(0,e);for(;ne?i=s:n=s+1}let a=n-1;return tn.create(a,e-r[a])}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line],i=e.line+1"u"}o(n,"undefined"),t.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),t.boolean=i;function a(m){return e.call(m)==="[object String]"}o(a,"string"),t.string=a;function s(m){return e.call(m)==="[object Number]"}o(s,"number"),t.number=s;function l(m,g,y){return e.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),t.numberRange=l;function u(m){return e.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer"),t.integer=u;function h(m){return e.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger"),t.uinteger=h;function f(m){return e.call(m)==="[object Function]"}o(f,"func"),t.func=f;function d(m){return m!==null&&typeof m=="object"}o(d,"objectLiteral"),t.objectLiteral=d;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),t.typedArray=p})(Ge||(Ge={}))});var wb,kb,Yp,Xp,FP,B1,FS=N(()=>{"use strict";BP();Bl();wb=class{static{o(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){var e;return(e=this.nodeStack[this.nodeStack.length-1])!==null&&e!==void 0?e:this.rootNode}buildRootNode(e){return this.rootNode=new B1(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let r=new Xp;return r.grammarSource=e,r.root=this.rootNode,this.current.content.push(r),this.nodeStack.push(r),r}buildLeafNode(e,r){let n=new Yp(e.startOffset,e.image.length,xg(e),e.tokenType,!r);return n.grammarSource=r,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){let r=e.container;if(r){let n=r.content.indexOf(e);n>=0&&r.content.splice(n,1)}}addHiddenNodes(e){let r=[];for(let a of e){let s=new Yp(a.startOffset,a.image.length,xg(a),a.tokenType,!0);s.root=this.rootNode,r.push(s)}let n=this.current,i=!1;if(n.content.length>0){n.content.push(...r);return}for(;n.container;){let a=n.container.content.indexOf(n);if(a>0){n.container.content.splice(a,0,...r),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...r)}construct(e){let r=this.current;typeof e.$type=="string"&&(this.current.astNode=e),e.$cstNode=r;let n=this.nodeStack.pop();n?.content.length===0&&this.removeNode(n)}},kb=class{static{o(this,"AbstractCstNode")}get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,r;let n=typeof((e=this._astNode)===null||e===void 0?void 0:e.$type)=="string"?this._astNode:(r=this.container)===null||r===void 0?void 0:r.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}},Yp=class extends kb{static{o(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,r,n,i,a=!1){super(),this._hidden=a,this._offset=e,this._tokenType=i,this._length=r,this._range=n}},Xp=class extends kb{static{o(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new FP(this)}get children(){return this.content}get offset(){var e,r;return(r=(e=this.firstNonHiddenNode)===null||e===void 0?void 0:e.offset)!==null&&r!==void 0?r:0}get length(){return this.end-this.offset}get end(){var e,r;return(r=(e=this.lastNonHiddenNode)===null||e===void 0?void 0:e.end)!==null&&r!==void 0?r:0}get range(){let e=this.firstNonHiddenNode,r=this.lastNonHiddenNode;if(e&&r){if(this._rangeCache===void 0){let{range:n}=e,{range:i}=r;this._rangeCache={start:n.start,end:i.end.line=0;e--){let r=this.content[e];if(!r.hidden)return r}return this.content[this.content.length-1]}},FP=class t extends Array{static{o(this,"CstNodeContainer")}constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,t.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,r,...n){return this.addParents(n),super.splice(e,r,...n)}addParents(e){for(let r of e)r.container=this.parent}},B1=class extends Xp{static{o(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}}});function $P(t){return t.$type===$S}var $S,j0e,K0e,Eb,Sb,zS,F1,Cb,PXe,zP,Ab=N(()=>{"use strict";Ff();Ype();Hc();zl();hs();FS();$S=Symbol("Datatype");o($P,"isDataTypeNode");j0e="\u200B",K0e=o(t=>t.endsWith(j0e)?t:t+j0e,"withRuleSuffix"),Eb=class{static{o(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let r=this.lexer.definition,n=e.LanguageMetaData.mode==="production";this.wrapper=new zP(r,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,r){this.wrapper.wrapOr(e,r)}optional(e,r){this.wrapper.wrapOption(e,r)}many(e,r){this.wrapper.wrapMany(e,r)}atLeastOne(e,r){this.wrapper.wrapAtLeastOne(e,r)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},Sb=class extends Eb{static{o(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new wb,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,r){let n=this.computeRuleType(e),i=this.wrapper.DEFINE_RULE(K0e(e.name),this.startImplementation(n,r).bind(this));return this.allRules.set(e.name,i),e.entry&&(this.mainRule=i),i}computeRuleType(e){if(!e.fragment){if(jx(e))return $S;{let r=c1(e);return r??e.name}}}parse(e,r={}){this.nodeBuilder.buildRootNode(e);let n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;let i=r.rule?this.allRules.get(r.rule):this.mainRule;if(!i)throw new Error(r.rule?`No rule found with name '${r.rule}'`:"No main rule available.");let a=i.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:a,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,r){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let s={$type:e};this.stack.push(s),e===$S&&(s.value="")}let a;try{a=r(n)}catch{a=void 0}return a===void 0&&i&&(a=this.construct()),a}}extractHiddenTokens(e){let r=this.lexerResult.hidden;if(!r.length)return[];let n=e.startOffset;for(let i=0;in)return r.splice(0,i);return r.splice(0,r.length)}consume(e,r,n){let i=this.wrapper.wrapConsume(e,r);if(!this.isRecording()&&this.isValidToken(i)){let a=this.extractHiddenTokens(i);this.nodeBuilder.addHiddenNodes(a);let s=this.nodeBuilder.buildLeafNode(i,n),{assignment:l,isCrossRef:u}=this.getAssignment(n),h=this.current;if(l){let f=Zo(n)?i.image:this.converter.convert(i.image,s);this.assign(l.operator,l.feature,f,s,u)}else if($P(h)){let f=i.image;Zo(n)||(f=this.converter.convert(f,s).toString()),h.value+=f}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,r,n,i,a){let s;!this.isRecording()&&!n&&(s=this.nodeBuilder.buildCompositeNode(i));let l=this.wrapper.wrapSubrule(e,r,a);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(l,i,s)}performSubruleAssignment(e,r,n){let{assignment:i,isCrossRef:a}=this.getAssignment(r);if(i)this.assign(i.operator,i.feature,e,n,a);else if(!i){let s=this.current;if($P(s))s.value+=e.toString();else if(typeof e=="object"&&e){let u=this.assignWithoutOverride(e,s);this.stack.pop(),this.stack.push(u)}}}action(e,r){if(!this.isRecording()){let n=this.current;if(r.feature&&r.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode),this.nodeBuilder.buildCompositeNode(r).content.push(n.$cstNode);let a={$type:e};this.stack.push(a),this.assign(r.operator,r.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;let e=this.current;return zE(e),this.nodeBuilder.construct(e),this.stack.pop(),$P(e)?this.converter.convert(e.value,e.$cstNode):(gO(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){let r=Ip(e,Fl);this.assignmentMap.set(e,{assignment:r,isCrossRef:r?Mp(r.terminal):!1})}return this.assignmentMap.get(e)}assign(e,r,n,i,a){let s=this.current,l;switch(a&&typeof n=="string"?l=this.linker.buildReference(s,r,i,n):l=n,e){case"=":{s[r]=l;break}case"?=":{s[r]=!0;break}case"+=":Array.isArray(s[r])||(s[r]=[]),s[r].push(l)}}assignWithoutOverride(e,r){for(let[i,a]of Object.entries(r)){let s=e[i];s===void 0?e[i]=a:Array.isArray(s)&&Array.isArray(a)&&(a.push(...s),e[i]=a)}let n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},zS=class{static{o(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return Zu.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return Zu.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return Zu.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return Zu.buildEarlyExitMessage(e)}},F1=class extends zS{static{o(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:r}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${r.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},Cb=class extends Eb{static{o(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let r=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=r.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,r){let n=this.wrapper.DEFINE_RULE(K0e(e.name),this.startImplementation(r).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return r=>{let n=this.keepStackSize();try{e(r)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,r,n){this.wrapper.wrapConsume(e,r),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,r,n,i,a){this.before(i),this.wrapper.wrapSubrule(e,r,a),this.after(i)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let r=this.elementStack.lastIndexOf(e);r>=0&&this.elementStack.splice(r)}}get currIdx(){return this.wrapper.currIdx}},PXe={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new F1},zP=class extends gb{static{o(this,"ChevrotainWrapper")}constructor(e,r){let n=r&&"maxLookahead"in r;super(e,Object.assign(Object.assign(Object.assign({},PXe),{lookaheadStrategy:n?new Ju({maxLookahead:r.maxLookahead}):new bb({logging:r.skipValidations?()=>{}:void 0})}),r))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,r){return this.RULE(e,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,r){return this.consume(e,r)}wrapSubrule(e,r,n){return this.subrule(e,r,{ARGS:[n]})}wrapOr(e,r){this.or(e,r)}wrapOption(e,r){this.option(e,r)}wrapMany(e,r){this.many(e,r)}wrapAtLeastOne(e,r){this.atLeastOne(e,r)}}});function _b(t,e,r){return BXe({parser:e,tokens:r,ruleNames:new Map},t),e}function BXe(t,e){let r=Yx(e,!1),n=an(e.rules).filter(Ga).filter(i=>r.has(i));for(let i of n){let a=Object.assign(Object.assign({},t),{consume:1,optional:1,subrule:1,many:1,or:1});t.parser.rule(i,jp(a,i.definition))}}function jp(t,e,r=!1){let n;if(Zo(e))n=HXe(t,e);else if(qu(e))n=FXe(t,e);else if(Fl(e))n=jp(t,e.terminal);else if(Mp(e))n=Q0e(t,e);else if($l(e))n=$Xe(t,e);else if(BE(e))n=GXe(t,e);else if($E(e))n=VXe(t,e);else if(Of(e))n=UXe(t,e);else if(oO(e)){let i=t.consume++;n=o(()=>t.parser.consume(i,yo,e),"method")}else throw new Rp(e.$cstNode,`Unexpected element type: ${e.$type}`);return Z0e(t,r?void 0:GS(e),n,e.cardinality)}function FXe(t,e){let r=Kx(e);return()=>t.parser.action(r,e)}function $Xe(t,e){let r=e.rule.ref;if(Ga(r)){let n=t.subrule++,i=r.fragment,a=e.arguments.length>0?zXe(r,e.arguments):()=>({});return s=>t.parser.subrule(n,J0e(t,r),i,e,a(s))}else if(mo(r)){let n=t.consume++,i=GP(t,r.name);return()=>t.parser.consume(n,i,e)}else if(r)Uc(r);else throw new Rp(e.$cstNode,`Undefined rule: ${e.rule.$refText}`)}function zXe(t,e){let r=e.map(n=>eh(n.value));return n=>{let i={};for(let a=0;ae(n)||r(n)}else if(JI(t)){let e=eh(t.left),r=eh(t.right);return n=>e(n)&&r(n)}else if(tO(t)){let e=eh(t.value);return r=>!e(r)}else if(rO(t)){let e=t.parameter.ref.name;return r=>r!==void 0&&r[e]===!0}else if(ZI(t)){let e=!!t.true;return()=>e}Uc(t)}function GXe(t,e){if(e.elements.length===1)return jp(t,e.elements[0]);{let r=[];for(let i of e.elements){let a={ALT:jp(t,i,!0)},s=GS(i);s&&(a.GATE=eh(s)),r.push(a)}let n=t.or++;return i=>t.parser.alternatives(n,r.map(a=>{let s={ALT:o(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function VXe(t,e){if(e.elements.length===1)return jp(t,e.elements[0]);let r=[];for(let l of e.elements){let u={ALT:jp(t,l,!0)},h=GS(l);h&&(u.GATE=eh(h)),r.push(u)}let n=t.or++,i=o((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=o(l=>t.parser.alternatives(n,r.map((u,h)=>{let f={ALT:o(()=>!0,"ALT")},d=t.parser;f.ALT=()=>{if(u.ALT(l),!d.isRecording()){let m=i(n,d);d.unorderedGroups.get(m)||d.unorderedGroups.set(m,[]);let g=d.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?f.GATE=()=>p(l):f.GATE=()=>{let m=d.unorderedGroups.get(i(n,d));return!m?.[h]},f})),"alternatives"),s=Z0e(t,GS(e),a,"*");return l=>{s(l),t.parser.isRecording()||t.parser.unorderedGroups.delete(i(n,t.parser))}}function UXe(t,e){let r=e.elements.map(n=>jp(t,n));return n=>r.forEach(i=>i(n))}function GS(t){if(Of(t))return t.guardCondition}function Q0e(t,e,r=e.terminal){if(r)if($l(r)&&Ga(r.rule.ref)){let n=r.rule.ref,i=t.subrule++;return a=>t.parser.subrule(i,J0e(t,n),!1,e,a)}else if($l(r)&&mo(r.rule.ref)){let n=t.consume++,i=GP(t,r.rule.ref.name);return()=>t.parser.consume(n,i,e)}else if(Zo(r)){let n=t.consume++,i=GP(t,r.value);return()=>t.parser.consume(n,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);let n=qE(e.type.ref),i=n?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+Kx(e.type.ref));return Q0e(t,e,i)}}function HXe(t,e){let r=t.consume++,n=t.tokens[e.value];if(!n)throw new Error("Could not find token for keyword: "+e.value);return()=>t.parser.consume(r,n,e)}function Z0e(t,e,r,n){let i=e&&eh(e);if(!n)if(i){let a=t.or++;return s=>t.parser.alternatives(a,[{ALT:o(()=>r(s),"ALT"),GATE:o(()=>i(s),"GATE")},{ALT:LS(),GATE:o(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=t.many++;return s=>t.parser.many(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=t.many++;if(i){let s=t.or++;return l=>t.parser.alternatives(s,[{ALT:o(()=>t.parser.atLeastOne(a,{DEF:o(()=>r(l),"DEF")}),"ALT"),GATE:o(()=>i(l),"GATE")},{ALT:LS(),GATE:o(()=>!i(l),"GATE")}])}else return s=>t.parser.atLeastOne(a,{DEF:o(()=>r(s),"DEF")})}else if(n==="?"){let a=t.optional++;return s=>t.parser.optional(a,{DEF:o(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else Uc(n)}function J0e(t,e){let r=qXe(t,e),n=t.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function qXe(t,e){if(Ga(e))return e.name;if(t.ruleNames.has(e))return t.ruleNames.get(e);{let r=e,n=r.$container,i=e.$type;for(;!Ga(n);)(Of(n)||BE(n)||$E(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,t.ruleNames.set(e,i),i}}function GP(t,e){let r=t.tokens[e];if(!r)throw new Error(`Token "${e}" not found."`);return r}var VS=N(()=>{"use strict";Ff();Hc();NE();Ys();zl();o(_b,"createParser");o(BXe,"buildRules");o(jp,"buildElement");o(FXe,"buildAction");o($Xe,"buildRuleCall");o(zXe,"buildRuleCallPredicate");o(eh,"buildPredicate");o(GXe,"buildAlternatives");o(VXe,"buildUnorderedGroup");o(UXe,"buildGroup");o(GS,"getGuardCondition");o(Q0e,"buildCrossReference");o(HXe,"buildKeyword");o(Z0e,"wrap");o(J0e,"getRule");o(qXe,"getRuleName");o(GP,"getToken")});function VP(t){let e=t.Grammar,r=t.parser.Lexer,n=new Cb(t);return _b(e,n,r.definition),n.finalize(),n}var UP=N(()=>{"use strict";Ab();VS();o(VP,"createCompletionParser")});function HP(t){let e=eme(t);return e.finalize(),e}function eme(t){let e=t.Grammar,r=t.parser.Lexer,n=new Sb(t);return _b(e,n,r.definition)}var qP=N(()=>{"use strict";Ab();VS();o(HP,"createLangiumParser");o(eme,"prepareLangiumParser")});var th,US=N(()=>{"use strict";Ff();Hc();hs();zl();l1();Ys();th=class{static{o(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,r){let n=an(Yx(e,!1)),i=this.buildTerminalTokens(n),a=this.buildKeywordTokens(n,i,r);return i.forEach(s=>{let l=s.PATTERN;typeof l=="object"&&l&&"test"in l&&o1(l)?a.unshift(s):a.push(s)}),a}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(mo).filter(r=>!r.fragment).map(r=>this.buildTerminalToken(r)).toArray()}buildTerminalToken(e){let r=u1(e),n=this.requiresCustomPattern(r)?this.regexPatternFunction(r):r,i={name:e.name,PATTERN:n};return typeof n=="function"&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=o1(r)?Zn.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")||e.flags.includes("s")?!0:!!(e.source.includes("?<=")||e.source.includes("?(r.lastIndex=i,r.exec(n))}buildKeywordTokens(e,r,n){return e.filter(Ga).flatMap(i=>qc(i).filter(Zo)).distinct(i=>i.value).toArray().sort((i,a)=>a.value.length-i.value.length).map(i=>this.buildKeywordToken(i,r,!!n?.caseInsensitive))}buildKeywordToken(e,r,n){let i=this.buildKeywordPattern(e,n),a={name:e.value,PATTERN:i,LONGER_ALT:this.findLongerAlt(e,r)};return typeof i=="function"&&(a.LINE_BREAKS=!0),a}buildKeywordPattern(e,r){return r?new RegExp(kO(e.value)):e.value}findLongerAlt(e,r){return r.reduce((n,i)=>{let a=i?.PATTERN;return a?.source&&EO("^"+a.source+"$",e.value)&&n.push(i),n},[])}}});var Kp,Xc,WP=N(()=>{"use strict";Hc();zl();Kp=class{static{o(this,"DefaultValueConverter")}convert(e,r){let n=r.grammarSource;if(Mp(n)&&(n=AO(n)),$l(n)){let i=n.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,r)}return e}runConverter(e,r,n){var i;switch(e.name.toUpperCase()){case"INT":return Xc.convertInt(r);case"STRING":return Xc.convertString(r);case"ID":return Xc.convertID(r)}switch((i=IO(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return Xc.convertNumber(r);case"boolean":return Xc.convertBoolean(r);case"bigint":return Xc.convertBigint(r);case"date":return Xc.convertDate(r);default:return r}}};(function(t){function e(h){let f="";for(let d=1;d{"use strict";Object.defineProperty(jP,"__esModule",{value:!0});var YP;function XP(){if(YP===void 0)throw new Error("No runtime abstraction layer installed");return YP}o(XP,"RAL");(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");YP=r}o(e,"install"),t.install=e})(XP||(XP={}));jP.default=XP});var nme=Da(Ua=>{"use strict";Object.defineProperty(Ua,"__esModule",{value:!0});Ua.stringArray=Ua.array=Ua.func=Ua.error=Ua.number=Ua.string=Ua.boolean=void 0;function WXe(t){return t===!0||t===!1}o(WXe,"boolean");Ua.boolean=WXe;function tme(t){return typeof t=="string"||t instanceof String}o(tme,"string");Ua.string=tme;function YXe(t){return typeof t=="number"||t instanceof Number}o(YXe,"number");Ua.number=YXe;function XXe(t){return t instanceof Error}o(XXe,"error");Ua.error=XXe;function jXe(t){return typeof t=="function"}o(jXe,"func");Ua.func=jXe;function rme(t){return Array.isArray(t)}o(rme,"array");Ua.array=rme;function KXe(t){return rme(t)&&t.every(e=>tme(e))}o(KXe,"stringArray");Ua.stringArray=KXe});var ZP=Da($1=>{"use strict";Object.defineProperty($1,"__esModule",{value:!0});$1.Emitter=$1.Event=void 0;var QXe=KP(),ime;(function(t){let e={dispose(){}};t.None=function(){return e}})(ime||($1.Event=ime={}));var QP=class{static{o(this,"CallbackList")}add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:o(()=>this.remove(e,r),"dispose")})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,a=this._callbacks.length;i{this._callbacks||(this._callbacks=new QP),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:o(()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};$1.Emitter=HS;HS._noop=function(){}});var ame=Da(z1=>{"use strict";Object.defineProperty(z1,"__esModule",{value:!0});z1.CancellationTokenSource=z1.CancellationToken=void 0;var ZXe=KP(),JXe=nme(),JP=ZP(),qS;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:JP.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:JP.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||JXe.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}o(e,"is"),t.is=e})(qS||(z1.CancellationToken=qS={}));var eje=Object.freeze(function(t,e){let r=(0,ZXe.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),WS=class{static{o(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?eje:(this._emitter||(this._emitter=new JP.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},eB=class{static{o(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new WS),this._token}cancel(){this._token?this._token.cancel():this._token=qS.Cancelled}dispose(){this._token?this._token instanceof WS&&this._token.dispose():this._token=qS.None}};z1.CancellationTokenSource=eB});var br={};var el=N(()=>{"use strict";Lr(br,ja(ame(),1))});function tB(){return new Promise(t=>{typeof setImmediate>"u"?setTimeout(t,0):setImmediate(t)})}function XS(){return YS=performance.now(),new br.CancellationTokenSource}function ome(t){sme=t}function Kc(t){return t===jc}async function bi(t){if(t===br.CancellationToken.None)return;let e=performance.now();if(e-YS>=sme&&(YS=e,await tB(),YS=performance.now()),t.isCancellationRequested)throw jc}var YS,sme,jc,gs,tl=N(()=>{"use strict";el();o(tB,"delayNextTick");YS=0,sme=10;o(XS,"startCancelableOperation");o(ome,"setInterruptionPeriod");jc=Symbol("OperationCancelled");o(Kc,"isOperationCancelled");o(bi,"interruptAndCheck");gs=class{static{o(this,"Deferred")}constructor(){this.promise=new Promise((e,r)=>{this.resolve=n=>(e(n),this),this.reject=n=>(r(n),this)})}}});function rB(t,e){if(t.length<=1)return t;let r=t.length/2|0,n=t.slice(0,r),i=t.slice(r);rB(n,e),rB(i,e);let a=0,s=0,l=0;for(;ar.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}function tje(t){let e=ume(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var jS,G1,hme=N(()=>{"use strict";jS=class t{static{o(this,"FullTextDocument")}constructor(e,r,n,i){this._uri=e,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let r=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(r,n)}return this._content}update(e,r){for(let n of e)if(t.isIncremental(n)){let i=ume(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,f=lme(n.text,!1,a);if(u-l===f.length)for(let p=0,m=f.length;pe?i=s:n=s+1}let a=n-1;return e=this.ensureBeforeEOL(e,r[a]),{line:a,character:e-r[a]}}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line];if(e.character<=0)return n;let i=e.line+1r&&cme(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(t){function e(i,a,s,l){return new jS(i,a,s,l)}o(e,"create"),t.create=e;function r(i,a,s){if(i instanceof jS)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),t.update=r;function n(i,a){let s=i.getText(),l=rB(a.map(tje),(f,d)=>{let p=f.range.start.line-d.range.start.line;return p===0?f.range.start.character-d.range.start.character:p}),u=0,h=[];for(let f of l){let d=i.offsetAt(f.range.start);if(du&&h.push(s.substring(u,d)),f.newText.length&&h.push(f.newText),u=i.offsetAt(f.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),t.applyEdits=n})(G1||(G1={}));o(rB,"mergeSort");o(lme,"computeLineOffsets");o(cme,"isEOL");o(ume,"getWellformedRange");o(tje,"getWellformedEdit")});var fme,ys,V1,nB=N(()=>{"use strict";(()=>{"use strict";var t={470:i=>{function a(u){if(typeof u!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(u))}o(a,"e");function s(u,h){for(var f,d="",p=0,m=-1,g=0,y=0;y<=u.length;++y){if(y2){var v=d.lastIndexOf("/");if(v!==d.length-1){v===-1?(d="",p=0):p=(d=d.slice(0,v)).length-1-d.lastIndexOf("/"),m=y,g=0;continue}}else if(d.length===2||d.length===1){d="",p=0,m=y,g=0;continue}}h&&(d.length>0?d+="/..":d="..",p=2)}else d.length>0?d+="/"+u.slice(m+1,y):d=u.slice(m+1,y),p=y-m-1;m=y,g=0}else f===46&&g!==-1?++g:g=-1}return d}o(s,"r");var l={resolve:o(function(){for(var u,h="",f=!1,d=arguments.length-1;d>=-1&&!f;d--){var p;d>=0?p=arguments[d]:(u===void 0&&(u=process.cwd()),p=u),a(p),p.length!==0&&(h=p+"/"+h,f=p.charCodeAt(0)===47)}return h=s(h,!f),f?h.length>0?"/"+h:"/":h.length>0?h:"."},"resolve"),normalize:o(function(u){if(a(u),u.length===0)return".";var h=u.charCodeAt(0)===47,f=u.charCodeAt(u.length-1)===47;return(u=s(u,!h)).length!==0||h||(u="."),u.length>0&&f&&(u+="/"),h?"/"+u:u},"normalize"),isAbsolute:o(function(u){return a(u),u.length>0&&u.charCodeAt(0)===47},"isAbsolute"),join:o(function(){if(arguments.length===0)return".";for(var u,h=0;h0&&(u===void 0?u=f:u+="/"+f)}return u===void 0?".":l.normalize(u)},"join"),relative:o(function(u,h){if(a(u),a(h),u===h||(u=l.resolve(u))===(h=l.resolve(h)))return"";for(var f=1;fy){if(h.charCodeAt(m+x)===47)return h.slice(m+x+1);if(x===0)return h.slice(m+x)}else p>y&&(u.charCodeAt(f+x)===47?v=x:x===0&&(v=0));break}var b=u.charCodeAt(f+x);if(b!==h.charCodeAt(m+x))break;b===47&&(v=x)}var T="";for(x=f+v+1;x<=d;++x)x!==d&&u.charCodeAt(x)!==47||(T.length===0?T+="..":T+="/..");return T.length>0?T+h.slice(m+v):(m+=v,h.charCodeAt(m)===47&&++m,h.slice(m))},"relative"),_makeLong:o(function(u){return u},"_makeLong"),dirname:o(function(u){if(a(u),u.length===0)return".";for(var h=u.charCodeAt(0),f=h===47,d=-1,p=!0,m=u.length-1;m>=1;--m)if((h=u.charCodeAt(m))===47){if(!p){d=m;break}}else p=!1;return d===-1?f?"/":".":f&&d===1?"//":u.slice(0,d)},"dirname"),basename:o(function(u,h){if(h!==void 0&&typeof h!="string")throw new TypeError('"ext" argument must be a string');a(u);var f,d=0,p=-1,m=!0;if(h!==void 0&&h.length>0&&h.length<=u.length){if(h.length===u.length&&h===u)return"";var g=h.length-1,y=-1;for(f=u.length-1;f>=0;--f){var v=u.charCodeAt(f);if(v===47){if(!m){d=f+1;break}}else y===-1&&(m=!1,y=f+1),g>=0&&(v===h.charCodeAt(g)?--g==-1&&(p=f):(g=-1,p=y))}return d===p?p=y:p===-1&&(p=u.length),u.slice(d,p)}for(f=u.length-1;f>=0;--f)if(u.charCodeAt(f)===47){if(!m){d=f+1;break}}else p===-1&&(m=!1,p=f+1);return p===-1?"":u.slice(d,p)},"basename"),extname:o(function(u){a(u);for(var h=-1,f=0,d=-1,p=!0,m=0,g=u.length-1;g>=0;--g){var y=u.charCodeAt(g);if(y!==47)d===-1&&(p=!1,d=g+1),y===46?h===-1?h=g:m!==1&&(m=1):h!==-1&&(m=-1);else if(!p){f=g+1;break}}return h===-1||d===-1||m===0||m===1&&h===d-1&&h===f+1?"":u.slice(h,d)},"extname"),format:o(function(u){if(u===null||typeof u!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof u);return(function(h,f){var d=f.dir||f.root,p=f.base||(f.name||"")+(f.ext||"");return d?d===f.root?d+p:d+"/"+p:p})(0,u)},"format"),parse:o(function(u){a(u);var h={root:"",dir:"",base:"",ext:"",name:""};if(u.length===0)return h;var f,d=u.charCodeAt(0),p=d===47;p?(h.root="/",f=1):f=0;for(var m=-1,g=0,y=-1,v=!0,x=u.length-1,b=0;x>=f;--x)if((d=u.charCodeAt(x))!==47)y===-1&&(v=!1,y=x+1),d===46?m===-1?m=x:b!==1&&(b=1):m!==-1&&(b=-1);else if(!v){g=x+1;break}return m===-1||y===-1||b===0||b===1&&m===y-1&&m===g+1?y!==-1&&(h.base=h.name=g===0&&p?u.slice(1,y):u.slice(g,y)):(g===0&&p?(h.name=u.slice(1,m),h.base=u.slice(1,y)):(h.name=u.slice(g,m),h.base=u.slice(g,y)),h.ext=u.slice(m,y)),g>0?h.dir=u.slice(0,g-1):p&&(h.dir="/"),h},"parse"),sep:"/",delimiter:":",win32:null,posix:null};l.posix=l,i.exports=l}},e={};function r(i){var a=e[i];if(a!==void 0)return a.exports;var s=e[i]={exports:{}};return t[i](s,s.exports,r),s.exports}o(r,"r"),r.d=(i,a)=>{for(var s in a)r.o(a,s)&&!r.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:a[s]})},r.o=(i,a)=>Object.prototype.hasOwnProperty.call(i,a),r.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var n={};(()=>{let i;r.r(n),r.d(n,{URI:o(()=>p,"URI"),Utils:o(()=>I,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(L,E){if(!L.scheme&&E)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${L.authority}", path: "${L.path}", query: "${L.query}", fragment: "${L.fragment}"}`);if(L.scheme&&!a.test(L.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(L.path){if(L.authority){if(!s.test(L.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(l.test(L.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"s");let h="",f="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"f")}static isUri(E){return E instanceof p||!!E&&typeof E.authority=="string"&&typeof E.fragment=="string"&&typeof E.path=="string"&&typeof E.query=="string"&&typeof E.scheme=="string"&&typeof E.fsPath=="string"&&typeof E.with=="function"&&typeof E.toString=="function"}scheme;authority;path;query;fragment;constructor(E,D,_,O,M,P=!1){typeof E=="object"?(this.scheme=E.scheme||h,this.authority=E.authority||h,this.path=E.path||h,this.query=E.query||h,this.fragment=E.fragment||h):(this.scheme=(function(B,F){return B||F?B:"file"})(E,P),this.authority=D||h,this.path=(function(B,F){switch(B){case"https":case"http":case"file":F?F[0]!==f&&(F=f+F):F=f}return F})(this.scheme,_||h),this.query=O||h,this.fragment=M||h,u(this,P))}get fsPath(){return b(this,!1)}with(E){if(!E)return this;let{scheme:D,authority:_,path:O,query:M,fragment:P}=E;return D===void 0?D=this.scheme:D===null&&(D=h),_===void 0?_=this.authority:_===null&&(_=h),O===void 0?O=this.path:O===null&&(O=h),M===void 0?M=this.query:M===null&&(M=h),P===void 0?P=this.fragment:P===null&&(P=h),D===this.scheme&&_===this.authority&&O===this.path&&M===this.query&&P===this.fragment?this:new g(D,_,O,M,P)}static parse(E,D=!1){let _=d.exec(E);return _?new g(_[2]||h,k(_[4]||h),k(_[5]||h),k(_[7]||h),k(_[9]||h),D):new g(h,h,h,h,h)}static file(E){let D=h;if(i&&(E=E.replace(/\\/g,f)),E[0]===f&&E[1]===f){let _=E.indexOf(f,2);_===-1?(D=E.substring(2),E=f):(D=E.substring(2,_),E=E.substring(_)||f)}return new g("file",D,E,h,h)}static from(E){let D=new g(E.scheme,E.authority,E.path,E.query,E.fragment);return u(D,!0),D}toString(E=!1){return T(this,E)}toJSON(){return this}static revive(E){if(E){if(E instanceof p)return E;{let D=new g(E);return D._formatted=E.external,D._fsPath=E._sep===m?E.fsPath:null,D}}return E}}let m=i?1:void 0;class g extends p{static{o(this,"l")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(E=!1){return E?T(this,!0):(this._formatted||(this._formatted=T(this,!1)),this._formatted)}toJSON(){let E={$mid:1};return this._fsPath&&(E.fsPath=this._fsPath,E._sep=m),this._formatted&&(E.external=this._formatted),this.path&&(E.path=this.path),this.scheme&&(E.scheme=this.scheme),this.authority&&(E.authority=this.authority),this.query&&(E.query=this.query),this.fragment&&(E.fragment=this.fragment),E}}let y={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 v(L,E,D){let _,O=-1;for(let M=0;M=97&&P<=122||P>=65&&P<=90||P>=48&&P<=57||P===45||P===46||P===95||P===126||E&&P===47||D&&P===91||D&&P===93||D&&P===58)O!==-1&&(_+=encodeURIComponent(L.substring(O,M)),O=-1),_!==void 0&&(_+=L.charAt(M));else{_===void 0&&(_=L.substr(0,M));let B=y[P];B!==void 0?(O!==-1&&(_+=encodeURIComponent(L.substring(O,M)),O=-1),_+=B):O===-1&&(O=M)}}return O!==-1&&(_+=encodeURIComponent(L.substring(O))),_!==void 0?_:L}o(v,"d");function x(L){let E;for(let D=0;D1&&L.scheme==="file"?`//${L.authority}${L.path}`:L.path.charCodeAt(0)===47&&(L.path.charCodeAt(1)>=65&&L.path.charCodeAt(1)<=90||L.path.charCodeAt(1)>=97&&L.path.charCodeAt(1)<=122)&&L.path.charCodeAt(2)===58?E?L.path.substr(1):L.path[1].toLowerCase()+L.path.substr(2):L.path,i&&(D=D.replace(/\//g,"\\")),D}o(b,"m");function T(L,E){let D=E?x:v,_="",{scheme:O,authority:M,path:P,query:B,fragment:F}=L;if(O&&(_+=O,_+=":"),(M||O==="file")&&(_+=f,_+=f),M){let G=M.indexOf("@");if(G!==-1){let $=M.substr(0,G);M=M.substr(G+1),G=$.lastIndexOf(":"),G===-1?_+=D($,!1,!1):(_+=D($.substr(0,G),!1,!1),_+=":",_+=D($.substr(G+1),!1,!0)),_+="@"}M=M.toLowerCase(),G=M.lastIndexOf(":"),G===-1?_+=D(M,!1,!0):(_+=D(M.substr(0,G),!1,!0),_+=M.substr(G))}if(P){if(P.length>=3&&P.charCodeAt(0)===47&&P.charCodeAt(2)===58){let G=P.charCodeAt(1);G>=65&&G<=90&&(P=`/${String.fromCharCode(G+32)}:${P.substr(3)}`)}else if(P.length>=2&&P.charCodeAt(1)===58){let G=P.charCodeAt(0);G>=65&&G<=90&&(P=`${String.fromCharCode(G+32)}:${P.substr(2)}`)}_+=D(P,!0,!1)}return B&&(_+="?",_+=D(B,!1,!1)),F&&(_+="#",_+=E?F:v(F,!1,!1)),_}o(T,"y");function S(L){try{return decodeURIComponent(L)}catch{return L.length>3?L.substr(0,3)+S(L.substr(3)):L}}o(S,"v");let w=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function k(L){return L.match(w)?L.replace(w,(E=>S(E))):L}o(k,"C");var A=r(470);let C=A.posix||A,R="/";var I;(function(L){L.joinPath=function(E,...D){return E.with({path:C.join(E.path,...D)})},L.resolvePath=function(E,...D){let _=E.path,O=!1;_[0]!==R&&(_=R+_,O=!0);let M=C.resolve(_,...D);return O&&M[0]===R&&!E.authority&&(M=M.substring(1)),E.with({path:M})},L.dirname=function(E){if(E.path.length===0||E.path===R)return E;let D=C.dirname(E.path);return D.length===1&&D.charCodeAt(0)===46&&(D=""),E.with({path:D})},L.basename=function(E){return C.basename(E.path)},L.extname=function(E){return C.extname(E.path)}})(I||(I={}))})(),fme=n})();({URI:ys,Utils:V1}=fme)});var vs,Qc=N(()=>{"use strict";nB();(function(t){t.basename=V1.basename,t.dirname=V1.dirname,t.extname=V1.extname,t.joinPath=V1.joinPath,t.resolvePath=V1.resolvePath;function e(i,a){return i?.toString()===a?.toString()}o(e,"equals"),t.equals=e;function r(i,a){let s=typeof i=="string"?i:i.path,l=typeof a=="string"?a:a.path,u=s.split("/").filter(m=>m.length>0),h=l.split("/").filter(m=>m.length>0),f=0;for(;f{"use strict";hme();U1();el();Ys();Qc();(function(t){t[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"})(Ln||(Ln={}));Db=class{static{o(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,r=br.CancellationToken.None){let n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,r)}fromTextDocument(e,r,n){return r=r??ys.parse(e.uri),br.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromString(e,r,n){return br.CancellationToken.is(n)?this.createAsync(r,e,n):this.create(r,e,n)}fromModel(e,r){return this.create(r,{$model:e})}create(e,r,n){if(typeof r=="string"){let i=this.parse(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else if("$model"in r){let i={value:r.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(i,e)}else{let i=this.parse(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}async createAsync(e,r,n){if(typeof r=="string"){let i=await this.parseAsync(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else{let i=await this.parseAsync(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}createLangiumDocument(e,r,n,i){let a;if(n)a={parseResult:e,uri:r,state:Ln.Parsed,references:[],textDocument:n};else{let s=this.createTextDocumentGetter(r,i);a={parseResult:e,uri:r,state:Ln.Parsed,references:[],get textDocument(){return s()}}}return e.value.$document=a,a}async update(e,r){var n,i;let a=(n=e.parseResult.value.$cstNode)===null||n===void 0?void 0:n.root.fullText,s=(i=this.textDocuments)===null||i===void 0?void 0:i.get(e.uri.toString()),l=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{let u=this.createTextDocumentGetter(e.uri,l);Object.defineProperty(e,"textDocument",{get:u})}return a!==l&&(e.parseResult=await this.parseAsync(e.uri,l,r),e.parseResult.value.$document=e),e.state=Ln.Parsed,e}parse(e,r,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r,n)}parseAsync(e,r,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(r,n)}createTextDocumentGetter(e,r){let n=this.serviceRegistry,i;return()=>i??(i=G1.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,r??""))}},Lb=class{static{o(this,"DefaultLangiumDocuments")}constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return an(this.documentMap.values())}addDocument(e){let r=e.uri.toString();if(this.documentMap.has(r))throw new Error(`A document with the URI '${r}' is already present.`);this.documentMap.set(r,e)}getDocument(e){let r=e.toString();return this.documentMap.get(r)}async getOrCreateDocument(e,r){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,r),this.addDocument(n),n)}createDocument(e,r,n){if(n)return this.langiumDocumentFactory.fromString(r,e,n).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(r,e);return this.addDocument(i),i}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=Ln.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0),n}deleteDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=Ln.Changed,this.documentMap.delete(r)),n}}});var iB,Rb,aB=N(()=>{"use strict";el();Pl();hs();tl();U1();iB=Symbol("ref_resolving"),Rb=class{static{o(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,r=br.CancellationToken.None){for(let n of Jo(e.parseResult.value))await bi(r),a1(n).forEach(i=>this.doLink(i,e))}doLink(e,r){var n;let i=e.reference;if(i._ref===void 0){i._ref=iB;try{let a=this.getCandidate(e);if(_p(a))i._ref=a;else if(i._nodeDescription=a,this.langiumDocuments().hasDocument(a.documentUri)){let s=this.loadAstNode(a);i._ref=s??this.createLinkingError(e,a)}else i._ref=void 0}catch(a){console.error(`An error occurred while resolving reference to '${i.$refText}':`,a);let s=(n=a.message)!==null&&n!==void 0?n:String(a);i._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${i.$refText}': ${s}`})}r.references.push(i)}}unlink(e){for(let r of e.references)delete r._ref,delete r._nodeDescription;e.references=[]}getCandidate(e){let n=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return n??this.createLinkingError(e)}buildReference(e,r,n,i){let a=this,s={$refNode:n,$refText:i,get ref(){var l;if(li(this._ref))return this._ref;if(qI(this._nodeDescription)){let u=a.loadAstNode(this._nodeDescription);this._ref=u??a.createLinkingError({reference:s,container:e,property:r},this._nodeDescription)}else if(this._ref===void 0){this._ref=iB;let u=Gx(e).$document,h=a.getLinkedNode({reference:s,container:e,property:r});if(h.error&&u&&u.state{"use strict";zl();o(dme,"isNamed");Nb=class{static{o(this,"DefaultNameProvider")}getName(e){if(dme(e))return e.name}getNameNode(e){return Xx(e.$cstNode,"name")}}});var Mb,oB=N(()=>{"use strict";zl();Pl();hs();Bl();Ys();Qc();Mb=class{static{o(this,"DefaultReferences")}constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){let r=MO(e),n=e.astNode;if(r&&n){let i=n[r.feature];if(Ta(i))return i.ref;if(Array.isArray(i)){for(let a of i)if(Ta(a)&&a.$refNode&&a.$refNode.offset<=e.offset&&a.$refNode.end>=e.end)return a.ref}}if(n){let i=this.nameProvider.getNameNode(n);if(i&&(i===e||YI(e,i)))return n}}}findDeclarationNode(e){let r=this.findDeclaration(e);if(r?.$cstNode){let n=this.nameProvider.getNameNode(r);return n??r.$cstNode}}findReferences(e,r){let n=[];if(r.includeDeclaration){let a=this.getReferenceToSelf(e);a&&n.push(a)}let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return r.documentUri&&(i=i.filter(a=>vs.equals(a.sourceUri,r.documentUri))),n.push(...i),an(n)}getReferenceToSelf(e){let r=this.nameProvider.getNameNode(e);if(r){let n=Va(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:Lp(r),local:!0}}}}});var Vl,Qp,H1=N(()=>{"use strict";Ys();Vl=class{static{o(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[r,n]of e)this.add(r,n)}get size(){return vg.sum(an(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,r){if(r===void 0)return this.map.delete(e);{let n=this.map.get(e);if(n){let i=n.indexOf(r);if(i>=0)return n.length===1?this.map.delete(e):n.splice(i,1),!0}return!1}}get(e){var r;return(r=this.map.get(e))!==null&&r!==void 0?r:[]}has(e,r){if(r===void 0)return this.map.has(e);{let n=this.map.get(e);return n?n.indexOf(r)>=0:!1}}add(e,r){return this.map.has(e)?this.map.get(e).push(r):this.map.set(e,[r]),this}addAll(e,r){return this.map.has(e)?this.map.get(e).push(...r):this.map.set(e,Array.from(r)),this}forEach(e){this.map.forEach((r,n)=>r.forEach(i=>e(i,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return an(this.map.entries()).flatMap(([e,r])=>r.map(n=>[e,n]))}keys(){return an(this.map.keys())}values(){return an(this.map.values()).flat()}entriesGroupedByKey(){return an(this.map.entries())}},Qp=class{static{o(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[r,n]of e)this.set(r,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,r){return this.map.set(e,r),this.inverse.set(r,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let r=this.map.get(e);return r!==void 0?(this.map.delete(e),this.inverse.delete(r),!0):!1}}});var Ib,lB=N(()=>{"use strict";el();hs();H1();tl();Ib=class{static{o(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,r=br.CancellationToken.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,r)}async computeExportsForNode(e,r,n=Vx,i=br.CancellationToken.None){let a=[];this.exportNode(e,a,r);for(let s of n(e))await bi(i),this.exportNode(s,a,r);return a}exportNode(e,r,n){let i=this.nameProvider.getName(e);i&&r.push(this.descriptions.createDescription(e,i,n))}async computeLocalScopes(e,r=br.CancellationToken.None){let n=e.parseResult.value,i=new Vl;for(let a of qc(n))await bi(r),this.processNode(a,e,i);return i}processNode(e,r,n){let i=e.$container;if(i){let a=this.nameProvider.getName(e);a&&n.add(i,this.descriptions.createDescription(e,a,r))}}}});var q1,Ob,rje,cB=N(()=>{"use strict";Ys();q1=class{static{o(this,"StreamScope")}constructor(e,r,n){var i;this.elements=e,this.outerScope=r,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===e.toLowerCase()):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}},Ob=class{static{o(this,"MapScope")}constructor(e,r,n){var i;this.elements=new Map,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1;for(let a of e){let s=this.caseInsensitive?a.name.toLowerCase():a.name;this.elements.set(s,a)}this.outerScope=r}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getAllElements(){let e=an(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},rje={getElement(){},getAllElements(){return Rx}}});var W1,Pb,Zp,KS,Y1,QS=N(()=>{"use strict";W1=class{static{o(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},Pb=class extends W1{static{o(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,r){this.throwIfDisposed(),this.cache.set(e,r)}get(e,r){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(r){let n=r();return this.cache.set(e,n),n}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},Zp=class extends W1{static{o(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(r=>r)}has(e,r){return this.throwIfDisposed(),this.cacheForContext(e).has(r)}set(e,r,n){this.throwIfDisposed(),this.cacheForContext(e).set(r,n)}get(e,r,n){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(r))return i.get(r);if(n){let a=n();return i.set(r,a),a}else return}delete(e,r){return this.throwIfDisposed(),this.cacheForContext(e).delete(r)}clear(e){if(this.throwIfDisposed(),e){let r=this.converter(e);this.cache.delete(r)}else this.cache.clear()}cacheForContext(e){let r=this.converter(e),n=this.cache.get(r);return n||(n=new Map,this.cache.set(r,n)),n}},KS=class extends Zp{static{o(this,"DocumentCache")}constructor(e,r){super(n=>n.toString()),r?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(r,n=>{this.clear(n.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{for(let a of i)this.clear(a)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{let a=n.concat(i);for(let s of a)this.clear(s)}))}},Y1=class extends Pb{static{o(this,"WorkspaceCache")}constructor(e,r){super(),r?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(r,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((n,i)=>{i.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}});var Bb,uB=N(()=>{"use strict";cB();hs();Ys();QS();Bb=class{static{o(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new Y1(e.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=Va(e.container).precomputedScopes;if(i){let s=e.container;do{let l=i.get(s);l.length>0&&r.push(an(l).filter(u=>this.reflection.isSubtype(u.type,n))),s=s.$container}while(s)}let a=this.getGlobalScope(n,e);for(let s=r.length-1;s>=0;s--)a=this.createScope(r[s],a);return a}createScope(e,r,n){return new q1(an(e),r,n)}createScopeForNodes(e,r,n){let i=an(e).map(a=>{let s=this.nameProvider.getName(a);if(s)return this.descriptions.createDescription(a,s)}).nonNullable();return new q1(i,r,n)}getGlobalScope(e,r){return this.globalScopeCache.get(e,()=>new Ob(this.indexManager.allElements(e)))}}});function hB(t){return typeof t.$comment=="string"}function pme(t){return typeof t=="object"&&!!t&&("$ref"in t||"$error"in t)}var Fb,ZS=N(()=>{"use strict";nB();Pl();hs();zl();o(hB,"isAstNodeWithComment");o(pme,"isIntermediateReference");Fb=class{static{o(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,r){let n=r??{},i=r?.replacer,a=o((l,u)=>this.replacer(l,u,n),"defaultReplacer"),s=i?(l,u)=>i(l,u,a):a;try{return this.currentDocument=Va(e),JSON.stringify(e,s,r?.space)}finally{this.currentDocument=void 0}}deserialize(e,r){let n=r??{},i=JSON.parse(e);return this.linkNode(i,i,n),i}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:s,uriConverter:l}){var u,h,f,d;if(!this.ignoreProperties.has(e))if(Ta(r)){let p=r.ref,m=n?r.$refText:void 0;if(p){let g=Va(p),y="";this.currentDocument&&this.currentDocument!==g&&(l?y=l(g.uri,r):y=g.uri.toString());let v=this.astNodeLocator.getAstNodePath(p);return{$ref:`${y}#${v}`,$refText:m}}else return{$error:(h=(u=r.error)===null||u===void 0?void 0:u.message)!==null&&h!==void 0?h:"Could not resolve reference",$refText:m}}else if(li(r)){let p;if(a&&(p=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},r)),(!e||r.$document)&&p?.$textRegion&&(p.$textRegion.documentURI=(f=this.currentDocument)===null||f===void 0?void 0:f.uri.toString())),i&&!e&&(p??(p=Object.assign({},r)),p.$sourceText=(d=r.$cstNode)===null||d===void 0?void 0:d.text),s){p??(p=Object.assign({},r));let m=this.commentProvider.getComment(r);m&&(p.$comment=m.replace(/\r/g,""))}return p??r}else return r}addAstNodeRegionWithAssignmentsTo(e){let r=o(n=>({offset:n.offset,end:n.end,length:n.length,range:n.range}),"createDocumentSegment");if(e.$cstNode){let n=e.$textRegion=r(e.$cstNode),i=n.assignments={};return Object.keys(e).filter(a=>!a.startsWith("$")).forEach(a=>{let s=DO(e.$cstNode,a).map(r);s.length!==0&&(i[a]=s)}),e}}linkNode(e,r,n,i,a,s){for(let[u,h]of Object.entries(e))if(Array.isArray(h))for(let f=0;f{"use strict";Qc();$b=class{static{o(this,"DefaultServiceRegistry")}get map(){return this.fileExtensionMap}constructor(e){this.languageIdMap=new Map,this.fileExtensionMap=new Map,this.textDocuments=e?.workspace.TextDocuments}register(e){let r=e.LanguageMetaData;for(let n of r.fileExtensions)this.fileExtensionMap.has(n)&&console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${r.languageId}'.`),this.fileExtensionMap.set(n,e);this.languageIdMap.set(r.languageId,e),this.languageIdMap.size===1?this.singleton=e:this.singleton=void 0}getServices(e){var r,n;if(this.singleton!==void 0)return this.singleton;if(this.languageIdMap.size===0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let i=(n=(r=this.textDocuments)===null||r===void 0?void 0:r.get(e))===null||n===void 0?void 0:n.languageId;if(i!==void 0){let l=this.languageIdMap.get(i);if(l)return l}let a=vs.extname(e),s=this.fileExtensionMap.get(a);if(!s)throw i?new Error(`The service registry contains no services for the extension '${a}' for language '${i}'.`):new Error(`The service registry contains no services for the extension '${a}'.`);return s}hasServices(e){try{return this.getServices(e),!0}catch{return!1}}get all(){return Array.from(this.languageIdMap.values())}}});function Jp(t){return{code:t}}var X1,zb,Gb=N(()=>{"use strict";vo();H1();tl();Ys();o(Jp,"diagnosticData");(function(t){t.all=["fast","slow","built-in"]})(X1||(X1={}));zb=class{static{o(this,"ValidationRegistry")}constructor(e){this.entries=new Vl,this.entriesBefore=[],this.entriesAfter=[],this.reflection=e.shared.AstReflection}register(e,r=this,n="fast"){if(n==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(let[i,a]of Object.entries(e)){let s=a;if(Array.isArray(s))for(let l of s){let u={check:this.wrapValidationException(l,r),category:n};this.addEntry(i,u)}else if(typeof s=="function"){let l={check:this.wrapValidationException(s,r),category:n};this.addEntry(i,l)}else Uc(s)}}wrapValidationException(e,r){return async(n,i,a)=>{await this.handleException(()=>e.call(r,n,i,a),"An error occurred during validation",i,n)}}async handleException(e,r,n,i){try{await e()}catch(a){if(Kc(a))throw a;console.error(`${r}:`,a),a instanceof Error&&a.stack&&console.error(a.stack);let s=a instanceof Error?a.message:String(a);n("error",`${r}: ${s}`,{node:i})}}addEntry(e,r){if(e==="AstNode"){this.entries.add("AstNode",r);return}for(let n of this.reflection.getAllSubTypes(e))this.entries.add(n,r)}getChecks(e,r){let n=an(this.entries.get(e)).concat(this.entries.get("AstNode"));return r&&(n=n.filter(i=>r.includes(i.category))),n.map(i=>i.check)}registerBeforeDocument(e,r=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",r))}registerAfterDocument(e,r=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",r))}wrapPreparationException(e,r,n){return async(i,a,s,l)=>{await this.handleException(()=>e.call(n,i,a,s,l),r,a,i)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}});function mme(t){if(t.range)return t.range;let e;return typeof t.property=="string"?e=Xx(t.node.$cstNode,t.property,t.index):typeof t.keyword=="string"&&(e=RO(t.node.$cstNode,t.keyword,t.index)),e??(e=t.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function JS(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 gme(t){switch(t){case"error":return Jp(rl.LexingError);case"warning":return Jp(rl.LexingWarning);case"info":return Jp(rl.LexingInfo);case"hint":return Jp(rl.LexingHint);default:throw new Error("Invalid diagnostic severity: "+t)}}var Vb,rl,dB=N(()=>{"use strict";el();zl();hs();Bl();tl();Gb();Vb=class{static{o(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,r={},n=br.CancellationToken.None){let i=e.parseResult,a=[];if(await bi(n),(!r.categories||r.categories.includes("built-in"))&&(this.processLexingErrors(i,a,r),r.stopAfterLexingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===rl.LexingError})||(this.processParsingErrors(i,a,r),r.stopAfterParsingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===rl.ParsingError}))||(this.processLinkingErrors(e,a,r),r.stopAfterLinkingErrors&&a.some(s=>{var l;return((l=s.data)===null||l===void 0?void 0:l.code)===rl.LinkingError}))))return a;try{a.push(...await this.validateAst(i.value,r,n))}catch(s){if(Kc(s))throw s;console.error("An error occurred during validation:",s)}return await bi(n),a}processLexingErrors(e,r,n){var i,a,s;let l=[...e.lexerErrors,...(a=(i=e.lexerReport)===null||i===void 0?void 0:i.diagnostics)!==null&&a!==void 0?a:[]];for(let u of l){let h=(s=u.severity)!==null&&s!==void 0?s:"error",f={severity:JS(h),range:{start:{line:u.line-1,character:u.column-1},end:{line:u.line-1,character:u.column+u.length-1}},message:u.message,data:gme(h),source:this.getSource()};r.push(f)}}processParsingErrors(e,r,n){for(let i of e.parserErrors){let a;if(isNaN(i.token.startOffset)){if("previousToken"in i){let s=i.previousToken;if(isNaN(s.startOffset)){let l={line:0,character:0};a={start:l,end:l}}else{let l={line:s.endLine-1,character:s.endColumn};a={start:l,end:l}}}}else a=xg(i.token);if(a){let s={severity:JS("error"),range:a,message:i.message,data:Jp(rl.ParsingError),source:this.getSource()};r.push(s)}}}processLinkingErrors(e,r,n){for(let i of e.references){let a=i.error;if(a){let s={node:a.container,property:a.property,index:a.index,data:{code:rl.LinkingError,containerType:a.container.$type,property:a.property,refText:a.reference.$refText}};r.push(this.toDiagnostic("error",a.message,s))}}}async validateAst(e,r,n=br.CancellationToken.None){let i=[],a=o((s,l,u)=>{i.push(this.toDiagnostic(s,l,u))},"acceptor");return await this.validateAstBefore(e,r,a,n),await this.validateAstNodes(e,r,a,n),await this.validateAstAfter(e,r,a,n),i}async validateAstBefore(e,r,n,i=br.CancellationToken.None){var a;let s=this.validationRegistry.checksBefore;for(let l of s)await bi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}async validateAstNodes(e,r,n,i=br.CancellationToken.None){await Promise.all(Jo(e).map(async a=>{await bi(i);let s=this.validationRegistry.getChecks(a.$type,r.categories);for(let l of s)await l(a,n,i)}))}async validateAstAfter(e,r,n,i=br.CancellationToken.None){var a;let s=this.validationRegistry.checksAfter;for(let l of s)await bi(i),await l(e,n,(a=r.categories)!==null&&a!==void 0?a:[],i)}toDiagnostic(e,r,n){return{message:r,range:mme(n),severity:JS(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(mme,"getDiagnosticRange");o(JS,"toDiagnosticSeverity");o(gme,"toDiagnosticData");(function(t){t.LexingError="lexing-error",t.LexingWarning="lexing-warning",t.LexingInfo="lexing-info",t.LexingHint="lexing-hint",t.ParsingError="parsing-error",t.LinkingError="linking-error"})(rl||(rl={}))});var Ub,Hb,pB=N(()=>{"use strict";el();Pl();hs();Bl();tl();Qc();Ub=class{static{o(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,r,n){let i=n??Va(e);r??(r=this.nameProvider.getName(e));let a=this.astNodeLocator.getAstNodePath(e);if(!r)throw new Error(`Node at path ${a} has no name.`);let s,l=o(()=>{var u;return s??(s=Lp((u=this.nameProvider.getNameNode(e))!==null&&u!==void 0?u:e.$cstNode))},"nameSegmentGetter");return{node:e,name:r,get nameSegment(){return l()},selectionSegment:Lp(e.$cstNode),type:e.$type,documentUri:i.uri,path:a}}},Hb=class{static{o(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,r=br.CancellationToken.None){let n=[],i=e.parseResult.value;for(let a of Jo(i))await bi(r),a1(a).filter(s=>!_p(s)).forEach(s=>{let l=this.createDescription(s);l&&n.push(l)});return n}createDescription(e){let r=e.reference.$nodeDescription,n=e.reference.$refNode;if(!r||!n)return;let i=Va(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:r.documentUri,targetPath:r.path,segment:Lp(n),local:vs.equals(r.documentUri,i)}}}});var qb,mB=N(()=>{"use strict";qb=class{static{o(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let r=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return r+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:r}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return r!==void 0?e+this.indexSeparator+r:e}getAstNode(e,r){return r.split(this.segmentSeparator).reduce((i,a)=>{if(!i||a.length===0)return i;let s=a.indexOf(this.indexSeparator);if(s>0){let l=a.substring(0,s),u=parseInt(a.substring(s+1)),h=i[l];return h?.[u]}return i[a]},e)}}});var ei={};var e6=N(()=>{"use strict";Lr(ei,ja(ZP(),1))});var Wb,gB=N(()=>{"use strict";e6();tl();Wb=class{static{o(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new gs,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new ei.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var r,n;this.workspaceConfig=(n=(r=e.capabilities.workspace)===null||r===void 0?void 0:r.configuration)!==null&&n!==void 0?n:!1}async initialized(e){if(this.workspaceConfig){if(e.register){let r=this.serviceRegistry.all;e.register({section:r.map(n=>this.toSectionName(n.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let r=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(r);r.forEach((i,a)=>{this.updateSectionConfiguration(i.section,n[a])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(r=>{let n=e.settings[r];this.updateSectionConfiguration(r,n),this.onConfigurationSectionUpdateEmitter.fire({section:r,configuration:n})})}updateSectionConfiguration(e,r){this.settings[e]=r}async getConfiguration(e,r){await this.ready;let n=this.toSectionName(e);if(this.settings[n])return this.settings[n][r]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}});var Gf,yB=N(()=>{"use strict";(function(t){function e(r){return{dispose:o(async()=>await r(),"dispose")}}o(e,"create"),t.create=e})(Gf||(Gf={}))});var Yb,vB=N(()=>{"use strict";el();yB();H1();tl();Ys();Gb();U1();Yb=class{static{o(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Vl,this.documentPhaseListeners=new Vl,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=Ln.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,r={},n=br.CancellationToken.None){var i,a;for(let s of e){let l=s.uri.toString();if(s.state===Ln.Validated){if(typeof r.validation=="boolean"&&r.validation)s.state=Ln.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(l);else if(typeof r.validation=="object"){let u=this.buildState.get(l),h=(i=u?.result)===null||i===void 0?void 0:i.validationChecks;if(h){let d=((a=r.validation.categories)!==null&&a!==void 0?a:X1.all).filter(p=>!h.includes(p));d.length>0&&(this.buildState.set(l,{completed:!1,options:{validation:Object.assign(Object.assign({},r.validation),{categories:d})},result:u.result}),s.state=Ln.IndexedReferences)}}}else this.buildState.delete(l)}this.currentState=Ln.Changed,await this.emitUpdate(e.map(s=>s.uri),[]),await this.buildDocuments(e,r,n)}async update(e,r,n=br.CancellationToken.None){this.currentState=Ln.Changed;for(let s of r)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(let s of e){if(!this.langiumDocuments.invalidateDocument(s)){let u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);u.state=Ln.Changed,this.langiumDocuments.addDocument(u)}this.buildState.delete(s.toString())}let i=an(e).concat(r).map(s=>s.toString()).toSet();this.langiumDocuments.all.filter(s=>!i.has(s.uri.toString())&&this.shouldRelink(s,i)).forEach(s=>{this.serviceRegistry.getServices(s.uri).references.Linker.unlink(s),s.state=Math.min(s.state,Ln.ComputedScopes),s.diagnostics=void 0}),await this.emitUpdate(e,r),await bi(n);let a=this.sortDocuments(this.langiumDocuments.all.filter(s=>{var l;return s.staten(e,r)))}sortDocuments(e){let r=0,n=e.length-1;for(;r=0&&!this.hasTextDocument(e[n]);)n--;rn.error!==void 0)?!0:this.indexManager.isAffected(e,r)}onUpdate(e){return this.updateListeners.push(e),Gf.create(()=>{let r=this.updateListeners.indexOf(e);r>=0&&this.updateListeners.splice(r,1)})}async buildDocuments(e,r,n){this.prepareBuild(e,r),await this.runCancelable(e,Ln.Parsed,n,a=>this.langiumDocumentFactory.update(a,n)),await this.runCancelable(e,Ln.IndexedContent,n,a=>this.indexManager.updateContent(a,n)),await this.runCancelable(e,Ln.ComputedScopes,n,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.precomputedScopes=await s.computeLocalScopes(a,n)}),await this.runCancelable(e,Ln.Linked,n,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,n)),await this.runCancelable(e,Ln.IndexedReferences,n,a=>this.indexManager.updateReferences(a,n));let i=e.filter(a=>this.shouldValidate(a));await this.runCancelable(i,Ln.Validated,n,a=>this.validate(a,n));for(let a of e){let s=this.buildState.get(a.uri.toString());s&&(s.completed=!0)}}prepareBuild(e,r){for(let n of e){let i=n.uri.toString(),a=this.buildState.get(i);(!a||a.completed)&&this.buildState.set(i,{completed:!1,options:r,result:a?.result})}}async runCancelable(e,r,n,i){let a=e.filter(l=>l.statel.state===r);await this.notifyBuildPhase(s,r,n),this.currentState=r}onBuildPhase(e,r){return this.buildPhaseListeners.add(e,r),Gf.create(()=>{this.buildPhaseListeners.delete(e,r)})}onDocumentPhase(e,r){return this.documentPhaseListeners.add(e,r),Gf.create(()=>{this.documentPhaseListeners.delete(e,r)})}waitUntil(e,r,n){let i;if(r&&"path"in r?i=r:n=r,n??(n=br.CancellationToken.None),i){let a=this.langiumDocuments.getDocument(i);if(a&&a.state>e)return Promise.resolve(i)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(jc):new Promise((a,s)=>{let l=this.onBuildPhase(e,()=>{if(l.dispose(),u.dispose(),i){let h=this.langiumDocuments.getDocument(i);a(h?.uri)}else a(void 0)}),u=n.onCancellationRequested(()=>{l.dispose(),u.dispose(),s(jc)})})}async notifyDocumentPhase(e,r,n){let a=this.documentPhaseListeners.get(r).slice();for(let s of a)try{await s(e,n)}catch(l){if(!Kc(l))throw l}}async notifyBuildPhase(e,r,n){if(e.length===0)return;let a=this.buildPhaseListeners.get(r).slice();for(let s of a)await bi(n),await s(e,n)}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,r){var n,i;let a=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,l=typeof s=="object"?s:void 0,u=await a.validateDocument(e,l,r);e.diagnostics?e.diagnostics.push(...u):e.diagnostics=u;let h=this.buildState.get(e.uri.toString());if(h){(n=h.result)!==null&&n!==void 0||(h.result={});let f=(i=l?.categories)!==null&&i!==void 0?i:X1.all;h.result.validationChecks?h.result.validationChecks.push(...f):h.result.validationChecks=[...f]}}getBuildOptions(e){var r,n;return(n=(r=this.buildState.get(e.uri.toString()))===null||r===void 0?void 0:r.options)!==null&&n!==void 0?n:{}}}});var Xb,xB=N(()=>{"use strict";hs();QS();el();Ys();Qc();Xb=class{static{o(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new Zp,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,r){let n=Va(e).uri,i=[];return this.referenceIndex.forEach(a=>{a.forEach(s=>{vs.equals(s.targetUri,n)&&s.targetPath===r&&i.push(s)})}),an(i)}allElements(e,r){let n=an(this.symbolIndex.keys());return r&&(n=n.filter(i=>!r||r.has(i))),n.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,r){var n;return r?this.symbolByTypeIndex.get(e,r,()=>{var a;return((a=this.symbolIndex.get(e))!==null&&a!==void 0?a:[]).filter(l=>this.astReflection.isSubtype(l.type,r))}):(n=this.symbolIndex.get(e))!==null&&n!==void 0?n:[]}remove(e){let r=e.toString();this.symbolIndex.delete(r),this.symbolByTypeIndex.clear(r),this.referenceIndex.delete(r)}async updateContent(e,r=br.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e,r),a=e.uri.toString();this.symbolIndex.set(a,i),this.symbolByTypeIndex.clear(a)}async updateReferences(e,r=br.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,r);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,r){let n=this.referenceIndex.get(e.uri.toString());return n?n.some(i=>!i.local&&r.has(i.targetUri.toString())):!1}}});var jb,bB=N(()=>{"use strict";el();tl();Qc();jb=class{static{o(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new gs,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var r;this.folders=(r=e.workspaceFolders)!==null&&r!==void 0?r:void 0}initialized(e){return this.mutex.write(r=>{var n;return this.initializeWorkspace((n=this.folders)!==null&&n!==void 0?n:[],r)})}async initializeWorkspace(e,r=br.CancellationToken.None){let n=await this.performStartup(e);await bi(r),await this.documentBuilder.build(n,this.initialBuildOptions,r)}async performStartup(e){let r=this.serviceRegistry.all.flatMap(a=>a.LanguageMetaData.fileExtensions),n=[],i=o(a=>{n.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");return await this.loadAdditionalDocuments(e,i),await Promise.all(e.map(a=>[a,this.getRootFolder(a)]).map(async a=>this.traverseFolder(...a,r,i))),this._ready.resolve(),n}loadAdditionalDocuments(e,r){return Promise.resolve()}getRootFolder(e){return ys.parse(e.uri)}async traverseFolder(e,r,n,i){let a=await this.fileSystemProvider.readDirectory(r);await Promise.all(a.map(async s=>{if(this.includeEntry(e,s,n)){if(s.isDirectory)await this.traverseFolder(e,s.uri,n,i);else if(s.isFile){let l=await this.langiumDocuments.getOrCreateDocument(s.uri);i(l)}}}))}includeEntry(e,r,n){let i=vs.basename(r.uri);if(i.startsWith("."))return!1;if(r.isDirectory)return i!=="node_modules"&&i!=="out";if(r.isFile){let a=vs.extname(r.uri);return n.includes(a)}return!1}}});function r6(t){return Array.isArray(t)&&(t.length===0||"name"in t[0])}function wB(t){return t&&"modes"in t&&"defaultMode"in t}function TB(t){return!r6(t)&&!wB(t)}var Kb,t6,e0,n6=N(()=>{"use strict";Ff();Kb=class{static{o(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,r,n,i,a){return x1.buildUnexpectedCharactersMessage(e,r,n,i,a)}buildUnableToPopLexerModeMessage(e){return x1.buildUnableToPopLexerModeMessage(e)}},t6={mode:"full"},e0=class{static{o(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let r=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(r);let n=TB(r)?Object.values(r):r,i=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Zn(n,{positionTracking:"full",skipValidations:i,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,r=t6){var n,i,a;let s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:(n=s.groups.hidden)!==null&&n!==void 0?n:[],report:(a=(i=this.tokenBuilder).flushLexingReport)===null||a===void 0?void 0:a.call(i,e)}}toTokenTypeDictionary(e){if(TB(e))return e;let r=wB(e)?Object.values(e.modes).flat():e,n={};return r.forEach(i=>n[i.name]=i),n}};o(r6,"isTokenTypeArray");o(wB,"isIMultiModeLexerDefinition");o(TB,"isTokenTypeDictionary")});function SB(t,e,r){let n,i;typeof t=="string"?(i=e,n=r):(i=t.range.start,n=e),i||(i=tn.create(0,0));let a=xme(t),s=AB(n),l=ije({lines:a,position:i,options:s});return cje({index:0,tokens:l,position:i})}function CB(t,e){let r=AB(e),n=xme(t);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function xme(t){let e="";return typeof t=="string"?e=t:e=t.text,e.split(TO)}function ije(t){var e,r,n;let i=[],a=t.position.line,s=t.position.character;for(let l=0;l=f.length){if(i.length>0){let m=tn.create(a,s);i.push({type:"break",content:"",range:Gr.create(m,m)})}}else{yme.lastIndex=d;let m=yme.exec(f);if(m){let g=m[0],y=m[1],v=tn.create(a,s+d),x=tn.create(a,s+d+g.length);i.push({type:"tag",content:y,range:Gr.create(v,x)}),d+=g.length,d=EB(f,d)}if(d0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function aje(t,e,r,n){let i=[];if(t.length===0){let a=tn.create(r,n),s=tn.create(r,n+e.length);i.push({type:"text",content:e,range:Gr.create(a,s)})}else{let a=0;for(let l of t){let u=l.index,h=e.substring(a,u);h.length>0&&i.push({type:"text",content:e.substring(a,u),range:Gr.create(tn.create(r,a+n),tn.create(r,u+n))});let f=h.length+1,d=l[1];if(i.push({type:"inline-tag",content:d,range:Gr.create(tn.create(r,a+f+n),tn.create(r,a+f+d.length+n))}),f+=d.length,l.length===4){f+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:Gr.create(tn.create(r,a+f+n),tn.create(r,a+f+p.length+n))})}else i.push({type:"text",content:"",range:Gr.create(tn.create(r,a+f+n),tn.create(r,a+f+n))});a=u+l[0].length}let s=e.substring(a);s.length>0&&i.push({type:"text",content:s,range:Gr.create(tn.create(r,a+n),tn.create(r,a+n+s.length))})}return i}function EB(t,e){let r=t.substring(e).match(sje);return r?e+r.index:t.length}function lje(t){let e=t.match(oje);if(e&&typeof e.index=="number")return e.index}function cje(t){var e,r,n,i;let a=tn.create(t.position.line,t.position.character);if(t.tokens.length===0)return new i6([],Gr.create(a,a));let s=[];for(;t.index0){let u=EB(e,a);s=e.substring(u),e=e.substring(0,a)}return(t==="linkcode"||t==="link"&&r.link==="code")&&(s=`\`${s}\``),(i=(n=r.renderLink)===null||n===void 0?void 0:n.call(r,e,s))!==null&&i!==void 0?i:pje(e,s)}}function pje(t,e){try{return ys.parse(t,!0),`[${e}](${t})`}catch{return t}}function vme(t){return t.endsWith(` -`)?` -`:` - -`}var yme,nje,sje,oje,i6,Qb,Zb,a6,_B=N(()=>{"use strict";BP();l1();Qc();o(SB,"parseJSDoc");o(CB,"isJSDoc");o(xme,"getLines");yme=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,nje=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(ije,"tokenize");o(aje,"buildInlineTokens");sje=/\S/,oje=/\s*$/;o(EB,"skipWhitespace");o(lje,"lastCharacter");o(cje,"parseJSDocComment");o(uje,"parseJSDocElement");o(hje,"appendEmptyLine");o(bme,"parseJSDocText");o(fje,"parseJSDocInline");o(Tme,"parseJSDocTag");o(wme,"parseJSDocLine");o(AB,"normalizeOptions");o(kB,"normalizeOption");i6=class{static{o(this,"JSDocCommentImpl")}constructor(e,r){this.elements=e,this.range=r}getTag(e){return this.getAllTags().find(r=>r.name===e)}getTags(e){return this.getAllTags().filter(r=>r.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let r of this.elements)if(e.length===0)e=r.toString();else{let n=r.toString();e+=vme(e)+n}return e.trim()}toMarkdown(e){let r="";for(let n of this.elements)if(r.length===0)r=n.toMarkdown(e);else{let i=n.toMarkdown(e);r+=vme(r)+i}return r.trim()}},Qb=class{static{o(this,"JSDocTagImpl")}constructor(e,r,n,i){this.name=e,this.content=r,this.inline=n,this.range=i}toString(){let e=`@${this.name}`,r=this.content.toString();return this.content.inlines.length===1?e=`${e} ${r}`:this.content.inlines.length>1&&(e=`${e} -${r}`),this.inline?`{${e}}`:e}toMarkdown(e){var r,n;return(n=(r=e?.renderTag)===null||r===void 0?void 0:r.call(e,this))!==null&&n!==void 0?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){let r=this.content.toMarkdown(e);if(this.inline){let a=dje(this.name,r,e??{});if(typeof a=="string")return a}let n="";e?.tag==="italic"||e?.tag===void 0?n="*":e?.tag==="bold"?n="**":e?.tag==="bold-italic"&&(n="***");let i=`${n}@${this.name}${n}`;return this.content.inlines.length===1?i=`${i} \u2014 ${r}`:this.content.inlines.length>1&&(i=`${i} -${r}`),this.inline?`{${i}}`:i}};o(dje,"renderInlineTag");o(pje,"renderLinkDefault");Zb=class{static{o(this,"JSDocTextImpl")}constructor(e,r){this.inlines=e,this.range=r}toString(){let e="";for(let r=0;rn.range.start.line&&(e+=` -`)}return e}toMarkdown(e){let r="";for(let n=0;ni.range.start.line&&(r+=` -`)}return r}},a6=class{static{o(this,"JSDocLineImpl")}constructor(e,r){this.text=e,this.range=r}toString(){return this.text}toMarkdown(){return this.text}};o(vme,"fillNewlines")});var Jb,DB=N(()=>{"use strict";hs();_B();Jb=class{static{o(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&CB(r))return SB(r).toMarkdown({renderLink:o((i,a)=>this.documentationLinkRenderer(e,i,a),"renderLink"),renderTag:o(i=>this.documentationTagRenderer(e,i),"renderTag")})}documentationLinkRenderer(e,r,n){var i;let a=(i=this.findNameInPrecomputedScopes(e,r))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,r);if(a&&a.nameSegment){let s=a.nameSegment.range.start.line+1,l=a.nameSegment.range.start.character+1,u=a.documentUri.with({fragment:`L${s},${l}`});return`[${n}](${u.toString()})`}else return}documentationTagRenderer(e,r){}findNameInPrecomputedScopes(e,r){let i=Va(e).precomputedScopes;if(!i)return;let a=e;do{let l=i.get(a).find(u=>u.name===r);if(l)return l;a=a.$container}while(a)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}}});var e4,LB=N(()=>{"use strict";ZS();Bl();e4=class{static{o(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var r;return hB(e)?e.$comment:(r=jI(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||r===void 0?void 0:r.text}}});var t4,RB,NB,MB=N(()=>{"use strict";tl();e6();t4=class{static{o(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,r){return Promise.resolve(this.syncParser.parse(e))}},RB=class{static{o(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let r=this.queue.shift();r&&(e.lock(),r.resolve(e))}}),this.workerPool.push(e)}}async parse(e,r){let n=await this.acquireParserWorker(r),i=new gs,a,s=r.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(l=>{let u=this.hydrator.hydrate(l);i.resolve(u)}).catch(l=>{i.reject(l)}).finally(()=>{s.dispose(),clearTimeout(a)}),i.promise}terminateWorker(e){e.terminate();let r=this.workerPool.indexOf(e);r>=0&&this.workerPool.splice(r,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let r=new gs;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(jc)}),this.queue.push(r),r.promise}},NB=class{static{o(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new ei.Emitter,this.deferred=new gs,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,r(a=>{let s=a;this.deferred.resolve(s),this.unlock()}),n(a=>{this.deferred.reject(a),this.unlock()})}terminate(){this.deferred.reject(jc),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new gs,this.sendMessage(e),this.deferred.promise}}});var r4,IB=N(()=>{"use strict";el();tl();r4=class{static{o(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new br.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=XS();return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n=br.CancellationToken.None){let i=new gs,a={action:r,deferred:i,cancellationToken:n};return e.push(a),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:r,deferred:n,cancellationToken:i})=>{try{let a=await Promise.resolve().then(()=>r(i));n.resolve(a)}catch(a){Kc(a)?n.resolve(void 0):n.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}});var n4,OB=N(()=>{"use strict";FS();Hc();Pl();hs();H1();Bl();n4=class{static{o(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new Qp,this.tokenTypeIdMap=new Qp,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(r=>Object.assign(Object.assign({},r),{message:r.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of Jo(e))r.set(i,{});if(e.$cstNode)for(let i of Dp(e.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,r));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)li(l)?s.push(this.dehydrateAstNode(l,r)):Ta(l)?s.push(this.dehydrateReference(l,r)):s.push(l)}else li(a)?n[i]=this.dehydrateAstNode(a,r):Ta(a)?n[i]=this.dehydrateReference(a,r):a!==void 0&&(n[i]=a);return n}dehydrateReference(e,r){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=r.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,r){let n=r.cstNodes.get(e);return Lx(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),Ol(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):If(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let r=e.value,n=this.createHydrationContext(r);return"$cstNode"in r&&this.hydrateCstNode(r.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let a of Jo(e))r.set(a,{});let i;if(e.$cstNode)for(let a of Dp(e.$cstNode)){let s;"fullText"in a?(s=new B1(a.fullText),i=s):"content"in a?s=new Xp:"tokenType"in a&&(s=this.hydrateCstLeafNode(a)),s&&(n.set(a,s),s.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=r.cstNodes.get(e.$cstNode));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let l of a)li(l)?s.push(this.setParent(this.hydrateAstNode(l,r),n)):Ta(l)?s.push(this.hydrateReference(l,n,i,r)):s.push(l)}else li(a)?n[i]=this.setParent(this.hydrateAstNode(a,r),n):Ta(a)?n[i]=this.hydrateReference(a,n,i,r):a!==void 0&&(n[i]=a);return n}setParent(e,r){return e.$container=r,e}hydrateReference(e,r,n,i){return this.linker.buildReference(r,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,r,n=0){let i=r.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=r.astNodes.get(e.astNode),Ol(i))for(let a of e.content){let s=this.hydrateCstNode(a,r,n++);i.content.push(s)}return i}hydrateCstLeafNode(e){let r=this.getTokenType(e.tokenType),n=e.offset,i=e.length,a=e.startLine,s=e.startColumn,l=e.endLine,u=e.endColumn,h=e.hidden;return new Yp(n,i,{start:{line:a,character:s},end:{line:l,character:u}},r,h)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let r of Jo(this.grammar))Fx(r)&&this.grammarElementIdMap.set(r,e++)}}});function wa(t){return{documentation:{CommentProvider:o(e=>new e4(e),"CommentProvider"),DocumentationProvider:o(e=>new Jb(e),"DocumentationProvider")},parser:{AsyncParser:o(e=>new t4(e),"AsyncParser"),GrammarConfig:o(e=>PO(e),"GrammarConfig"),LangiumParser:o(e=>HP(e),"LangiumParser"),CompletionParser:o(e=>VP(e),"CompletionParser"),ValueConverter:o(()=>new Kp,"ValueConverter"),TokenBuilder:o(()=>new th,"TokenBuilder"),Lexer:o(e=>new e0(e),"Lexer"),ParserErrorMessageProvider:o(()=>new F1,"ParserErrorMessageProvider"),LexerErrorMessageProvider:o(()=>new Kb,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:o(()=>new qb,"AstNodeLocator"),AstNodeDescriptionProvider:o(e=>new Ub(e),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:o(e=>new Hb(e),"ReferenceDescriptionProvider")},references:{Linker:o(e=>new Rb(e),"Linker"),NameProvider:o(()=>new Nb,"NameProvider"),ScopeProvider:o(e=>new Bb(e),"ScopeProvider"),ScopeComputation:o(e=>new Ib(e),"ScopeComputation"),References:o(e=>new Mb(e),"References")},serializer:{Hydrator:o(e=>new n4(e),"Hydrator"),JsonSerializer:o(e=>new Fb(e),"JsonSerializer")},validation:{DocumentValidator:o(e=>new Vb(e),"DocumentValidator"),ValidationRegistry:o(e=>new zb(e),"ValidationRegistry")},shared:o(()=>t.shared,"shared")}}function ka(t){return{ServiceRegistry:o(e=>new $b(e),"ServiceRegistry"),workspace:{LangiumDocuments:o(e=>new Lb(e),"LangiumDocuments"),LangiumDocumentFactory:o(e=>new Db(e),"LangiumDocumentFactory"),DocumentBuilder:o(e=>new Yb(e),"DocumentBuilder"),IndexManager:o(e=>new Xb(e),"IndexManager"),WorkspaceManager:o(e=>new jb(e),"WorkspaceManager"),FileSystemProvider:o(e=>t.fileSystemProvider(e),"FileSystemProvider"),WorkspaceLock:o(()=>new r4,"WorkspaceLock"),ConfigurationProvider:o(e=>new Wb(e),"ConfigurationProvider")}}}var PB=N(()=>{"use strict";BO();UP();qP();US();WP();aB();sB();oB();lB();uB();ZS();fB();dB();Gb();pB();mB();gB();vB();U1();xB();bB();n6();DB();LB();Ab();MB();IB();OB();o(wa,"createDefaultCoreModule");o(ka,"createDefaultSharedCoreModule")});function Hn(t,e,r,n,i,a,s,l,u){let h=[t,e,r,n,i,a,s,l,u].reduce(s6,{});return Ame(h)}function Cme(t){if(t&&t[Sme])for(let e of Object.values(t))Cme(e);return t}function Ame(t,e){let r=new Proxy({},{deleteProperty:o(()=>!1,"deleteProperty"),set:o(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:o((n,i)=>i===Sme?!0:Eme(n,i,t,e||r),"get"),getOwnPropertyDescriptor:o((n,i)=>(Eme(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:o((n,i)=>i in t,"has"),ownKeys:o(()=>[...Object.getOwnPropertyNames(t)],"ownKeys")});return r}function Eme(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]===kme)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=kme;try{t[e]=typeof i=="function"?i(n):Ame(i,n)}catch(a){throw t[e]=a instanceof Error?a:void 0,a}return t[e]}else return}function s6(t,e){if(e){for(let[r,n]of Object.entries(e))if(n!==void 0){let i=t[r];i!==null&&n!==null&&typeof i=="object"&&typeof n=="object"?t[r]=s6(i,n):t[r]=n}}return t}var BB,Sme,kme,FB=N(()=>{"use strict";(function(t){t.merge=(e,r)=>s6(s6({},e),r)})(BB||(BB={}));o(Hn,"inject");Sme=Symbol("isProxy");o(Cme,"eagerLoad");o(Ame,"_inject");kme=Symbol();o(Eme,"_resolve");o(s6,"_merge")});var _me=N(()=>{"use strict"});var Dme=N(()=>{"use strict";LB();DB();_B()});var Lme=N(()=>{"use strict"});var Rme=N(()=>{"use strict";BO();Lme()});var $B,t0,o6,zB,Nme=N(()=>{"use strict";Ff();US();n6();$B={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(t){t.REGULAR="indentation-sensitive",t.IGNORE_INDENTATION="ignore-indentation"})(t0||(t0={}));o6=class extends th{static{o(this,"IndentationAwareTokenBuilder")}constructor(e=$B){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options=Object.assign(Object.assign({},$B),e),this.indentTokenType=Pf({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=Pf({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,r){let n=super.buildTokens(e,r);if(!r6(n))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:a,whitespaceTokenName:s,ignoreIndentationDelimiters:l}=this.options,u,h,f,d=[];for(let p of n){for(let[m,g]of l)p.name===m?p.PUSH_MODE=t0.IGNORE_INDENTATION:p.name===g&&(p.POP_MODE=!0);p.name===a?u=p:p.name===i?h=p:p.name===s?f=p:d.push(p)}if(!u||!h||!f)throw new Error("Some indentation/whitespace tokens not found!");return l.length>0?{modes:{[t0.REGULAR]:[u,h,...d,f],[t0.IGNORE_INDENTATION]:[...d,f]},defaultMode:t0.REGULAR}:[u,h,f,...d]}flushLexingReport(e){let r=super.flushLexingReport(e);return Object.assign(Object.assign({},r),{remainingDedents:this.flushRemainingDedents(e)})}isStartOfLine(e,r){return r===0||`\r -`.includes(e[r-1])}matchWhitespace(e,r,n,i){var a;this.whitespaceRegExp.lastIndex=r;let s=this.whitespaceRegExp.exec(e);return{currIndentLevel:(a=s?.[0].length)!==null&&a!==void 0?a:0,prevIndentLevel:this.indentationStack.at(-1),match:s}}createIndentationTokenInstance(e,r,n,i){let a=this.getLineNumber(r,i);return Qu(e,n,i,i+n.length,a,a,1,n.length)}getLineNumber(e,r){return e.substring(0,r).split(/\r\n|\r|\n/).length}indentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:a,prevIndentLevel:s,match:l}=this.matchWhitespace(e,r,n,i);return a<=s?null:(this.indentationStack.push(a),l)}dedentMatcher(e,r,n,i){var a,s,l,u;if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:h,prevIndentLevel:f,match:d}=this.matchWhitespace(e,r,n,i);if(h>=f)return null;let p=this.indentationStack.lastIndexOf(h);if(p===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${h} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,offset:r,length:(s=(a=d?.[0])===null||a===void 0?void 0:a.length)!==null&&s!==void 0?s:0,line:this.getLineNumber(e,r),column:1}),null;let m=this.indentationStack.length-p-1,g=(u=(l=e.substring(0,r).match(/[\r\n]+$/))===null||l===void 0?void 0:l[0].length)!==null&&u!==void 0?u:1;for(let y=0;y1;)r.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],r}},zB=class extends e0{static{o(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof o6)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,r=t6){let n=super.tokenize(e),i=n.report;r?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:a,dedentTokenType:s}=this.indentationTokenBuilder,l=a.tokenTypeIdx,u=s.tokenTypeIdx,h=[],f=n.tokens.length-1;for(let d=0;d=0&&h.push(n.tokens[f]),n.tokens=h,n}}});var Mme=N(()=>{"use strict"});var Ime=N(()=>{"use strict";MB();UP();FS();Nme();qP();Ab();n6();VS();Mme();US();WP()});var Ome=N(()=>{"use strict";aB();sB();oB();cB();lB();uB()});var Pme=N(()=>{"use strict";OB();ZS()});var l6,Ea,GB=N(()=>{"use strict";l6=class{static{o(this,"EmptyFileSystemProvider")}readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},Ea={fileSystemProvider:o(()=>new l6,"fileSystemProvider")}});function yje(){let t=Hn(ka(Ea),gje),e=Hn(wa({shared:t}),mje);return t.ServiceRegistry.register(e),e}function Zc(t){var e;let r=yje(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,ys.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}var mje,gje,Bme=N(()=>{"use strict";PB();FB();Hc();GB();Qc();mje={Grammar:o(()=>{},"Grammar"),LanguageMetaData:o(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},gje={AstReflection:o(()=>new i1,"AstReflection")};o(yje,"createMinimalGrammarServices");o(Zc,"loadGrammarFromJson")});var Xr={};dr(Xr,{AstUtils:()=>GE,BiMap:()=>Qp,Cancellation:()=>br,ContextCache:()=>Zp,CstUtils:()=>RE,DONE_RESULT:()=>za,Deferred:()=>gs,Disposable:()=>Gf,DisposableCache:()=>W1,DocumentCache:()=>KS,EMPTY_STREAM:()=>Rx,ErrorWithLocation:()=>Rp,GrammarUtils:()=>WE,MultiMap:()=>Vl,OperationCancelled:()=>jc,Reduction:()=>vg,RegExpUtils:()=>HE,SimpleCache:()=>Pb,StreamImpl:()=>po,TreeStreamImpl:()=>Gc,URI:()=>ys,UriUtils:()=>vs,WorkspaceCache:()=>Y1,assertUnreachable:()=>Uc,delayNextTick:()=>tB,interruptAndCheck:()=>bi,isOperationCancelled:()=>Kc,loadGrammarFromJson:()=>Zc,setInterruptionPeriod:()=>ome,startCancelableOperation:()=>XS,stream:()=>an});var Fme=N(()=>{"use strict";QS();e6();Lr(Xr,ei);H1();yB();NE();Bme();tl();Ys();Qc();hs();el();Bl();zl();l1()});var $me=N(()=>{"use strict";dB();Gb()});var zme=N(()=>{"use strict";pB();mB();gB();vB();U1();GB();xB();IB();bB()});var Sa={};dr(Sa,{AbstractAstReflection:()=>Ap,AbstractCstNode:()=>kb,AbstractLangiumParser:()=>Eb,AbstractParserErrorMessageProvider:()=>zS,AbstractThreadedAsyncParser:()=>RB,AstUtils:()=>GE,BiMap:()=>Qp,Cancellation:()=>br,CompositeCstNodeImpl:()=>Xp,ContextCache:()=>Zp,CstNodeBuilder:()=>wb,CstUtils:()=>RE,DEFAULT_TOKENIZE_OPTIONS:()=>t6,DONE_RESULT:()=>za,DatatypeSymbol:()=>$S,DefaultAstNodeDescriptionProvider:()=>Ub,DefaultAstNodeLocator:()=>qb,DefaultAsyncParser:()=>t4,DefaultCommentProvider:()=>e4,DefaultConfigurationProvider:()=>Wb,DefaultDocumentBuilder:()=>Yb,DefaultDocumentValidator:()=>Vb,DefaultHydrator:()=>n4,DefaultIndexManager:()=>Xb,DefaultJsonSerializer:()=>Fb,DefaultLangiumDocumentFactory:()=>Db,DefaultLangiumDocuments:()=>Lb,DefaultLexer:()=>e0,DefaultLexerErrorMessageProvider:()=>Kb,DefaultLinker:()=>Rb,DefaultNameProvider:()=>Nb,DefaultReferenceDescriptionProvider:()=>Hb,DefaultReferences:()=>Mb,DefaultScopeComputation:()=>Ib,DefaultScopeProvider:()=>Bb,DefaultServiceRegistry:()=>$b,DefaultTokenBuilder:()=>th,DefaultValueConverter:()=>Kp,DefaultWorkspaceLock:()=>r4,DefaultWorkspaceManager:()=>jb,Deferred:()=>gs,Disposable:()=>Gf,DisposableCache:()=>W1,DocumentCache:()=>KS,DocumentState:()=>Ln,DocumentValidator:()=>rl,EMPTY_SCOPE:()=>rje,EMPTY_STREAM:()=>Rx,EmptyFileSystem:()=>Ea,EmptyFileSystemProvider:()=>l6,ErrorWithLocation:()=>Rp,GrammarAST:()=>zx,GrammarUtils:()=>WE,IndentationAwareLexer:()=>zB,IndentationAwareTokenBuilder:()=>o6,JSDocDocumentationProvider:()=>Jb,LangiumCompletionParser:()=>Cb,LangiumParser:()=>Sb,LangiumParserErrorMessageProvider:()=>F1,LeafCstNodeImpl:()=>Yp,LexingMode:()=>t0,MapScope:()=>Ob,Module:()=>BB,MultiMap:()=>Vl,OperationCancelled:()=>jc,ParserWorker:()=>NB,Reduction:()=>vg,RegExpUtils:()=>HE,RootCstNodeImpl:()=>B1,SimpleCache:()=>Pb,StreamImpl:()=>po,StreamScope:()=>q1,TextDocument:()=>G1,TreeStreamImpl:()=>Gc,URI:()=>ys,UriUtils:()=>vs,ValidationCategory:()=>X1,ValidationRegistry:()=>zb,ValueConverter:()=>Xc,WorkspaceCache:()=>Y1,assertUnreachable:()=>Uc,createCompletionParser:()=>VP,createDefaultCoreModule:()=>wa,createDefaultSharedCoreModule:()=>ka,createGrammarConfig:()=>PO,createLangiumParser:()=>HP,createParser:()=>_b,delayNextTick:()=>tB,diagnosticData:()=>Jp,eagerLoad:()=>Cme,getDiagnosticRange:()=>mme,indentationBuilderDefaultOptions:()=>$B,inject:()=>Hn,interruptAndCheck:()=>bi,isAstNode:()=>li,isAstNodeDescription:()=>qI,isAstNodeWithComment:()=>hB,isCompositeCstNode:()=>Ol,isIMultiModeLexerDefinition:()=>wB,isJSDoc:()=>CB,isLeafCstNode:()=>If,isLinkingError:()=>_p,isNamed:()=>dme,isOperationCancelled:()=>Kc,isReference:()=>Ta,isRootCstNode:()=>Lx,isTokenTypeArray:()=>r6,isTokenTypeDictionary:()=>TB,loadGrammarFromJson:()=>Zc,parseJSDoc:()=>SB,prepareLangiumParser:()=>eme,setInterruptionPeriod:()=>ome,startCancelableOperation:()=>XS,stream:()=>an,toDiagnosticData:()=>gme,toDiagnosticSeverity:()=>JS});var vo=N(()=>{"use strict";PB();FB();fB();_me();Pl();Dme();Rme();Ime();Ome();Pme();Fme();Lr(Sa,Xr);$me();zme();Hc()});function Xme(t){return Ul.isInstance(t,i4)}function jme(t){return Ul.isInstance(t,j1)}function Kme(t){return Ul.isInstance(t,K1)}function Qme(t){return Ul.isInstance(t,Q1)}function Zme(t){return Ul.isInstance(t,a4)}function Jme(t){return Ul.isInstance(t,Z1)}function ege(t){return Ul.isInstance(t,s4)}function tge(t){return Ul.isInstance(t,o4)}function rge(t){return Ul.isInstance(t,l4)}function nge(t){return Ul.isInstance(t,c4)}function ige(t){return Ul.isInstance(t,u4)}var vje,Tt,QB,i4,c6,j1,u6,h6,VB,K1,UB,HB,qB,Q1,WB,a4,f6,YB,Z1,XB,s4,o4,l4,c4,g6,jB,u4,KB,d6,p6,m6,age,Ul,Gme,xje,Vme,bje,Ume,Tje,Hme,wje,qme,kje,Wme,Eje,Yme,Sje,Cje,Aje,_je,Dje,Lje,Rje,Nje,xs,ZB,JB,eF,tF,rF,nF,iF,Mje,Ije,Oje,Pje,Vf,rh,Ha,Bje,qa=N(()=>{"use strict";vo();vo();vo();vo();vje=Object.defineProperty,Tt=o((t,e)=>vje(t,"name",{value:e,configurable:!0}),"__name"),QB="Statement",i4="Architecture";o(Xme,"isArchitecture");Tt(Xme,"isArchitecture");c6="Axis",j1="Branch";o(jme,"isBranch");Tt(jme,"isBranch");u6="Checkout",h6="CherryPicking",VB="ClassDefStatement",K1="Commit";o(Kme,"isCommit");Tt(Kme,"isCommit");UB="Curve",HB="Edge",qB="Entry",Q1="GitGraph";o(Qme,"isGitGraph");Tt(Qme,"isGitGraph");WB="Group",a4="Info";o(Zme,"isInfo");Tt(Zme,"isInfo");f6="Item",YB="Junction",Z1="Merge";o(Jme,"isMerge");Tt(Jme,"isMerge");XB="Option",s4="Packet";o(ege,"isPacket");Tt(ege,"isPacket");o4="PacketBlock";o(tge,"isPacketBlock");Tt(tge,"isPacketBlock");l4="Pie";o(rge,"isPie");Tt(rge,"isPie");c4="PieSection";o(nge,"isPieSection");Tt(nge,"isPieSection");g6="Radar",jB="Service",u4="Treemap";o(ige,"isTreemap");Tt(ige,"isTreemap");KB="TreemapRow",d6="Direction",p6="Leaf",m6="Section",age=class extends Ap{static{o(this,"MermaidAstReflection")}static{Tt(this,"MermaidAstReflection")}getAllTypes(){return[i4,c6,j1,u6,h6,VB,K1,UB,d6,HB,qB,Q1,WB,a4,f6,YB,p6,Z1,XB,s4,o4,l4,c4,g6,m6,jB,QB,u4,KB]}computeIsSubtype(t,e){switch(t){case j1:case u6:case h6:case K1:case Z1:return this.isSubtype(QB,e);case d6:return this.isSubtype(Q1,e);case p6:case m6:return this.isSubtype(f6,e);default:return!1}}getReferenceType(t){let e=`${t.container.$type}:${t.property}`;switch(e){case"Entry:axis":return c6;default:throw new Error(`${e} is not a valid reference id.`)}}getTypeMetaData(t){switch(t){case i4:return{name:i4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case c6:return{name:c6,properties:[{name:"label"},{name:"name"}]};case j1:return{name:j1,properties:[{name:"name"},{name:"order"}]};case u6:return{name:u6,properties:[{name:"branch"}]};case h6:return{name:h6,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case VB:return{name:VB,properties:[{name:"className"},{name:"styleText"}]};case K1:return{name:K1,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case UB:return{name:UB,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case HB:return{name:HB,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 qB:return{name:qB,properties:[{name:"axis"},{name:"value"}]};case Q1:return{name:Q1,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case WB:return{name:WB,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case a4:return{name:a4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case f6:return{name:f6,properties:[{name:"classSelector"},{name:"name"}]};case YB:return{name:YB,properties:[{name:"id"},{name:"in"}]};case Z1:return{name:Z1,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case XB:return{name:XB,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case s4:return{name:s4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case o4:return{name:o4,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case l4:return{name:l4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case c4:return{name:c4,properties:[{name:"label"},{name:"value"}]};case g6:return{name:g6,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case jB:return{name:jB,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case u4:return{name:u4,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"},{name:"TreemapRows",defaultValue:[]}]};case KB:return{name:KB,properties:[{name:"indent"},{name:"item"}]};case d6:return{name:d6,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};case p6:return{name:p6,properties:[{name:"classSelector"},{name:"name"},{name:"value"}]};case m6:return{name:m6,properties:[{name:"classSelector"},{name:"name"}]};default:return{name:t,properties:[]}}}},Ul=new age,xje=Tt(()=>Gme??(Gme=Zc(`{"$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"),bje=Tt(()=>Vme??(Vme=Zc(`{"$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"),Tje=Tt(()=>Ume??(Ume=Zc(`{"$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"),wje=Tt(()=>Hme??(Hme=Zc(`{"$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"),kje=Tt(()=>qme??(qme=Zc(`{"$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"),Eje=Tt(()=>Wme??(Wme=Zc(`{"$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"),Sje=Tt(()=>Yme??(Yme=Zc(`{"$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"),Cje={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Aje={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},_je={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Dje={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Lje={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Rje={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},Nje={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},xs={AstReflection:Tt(()=>new age,"AstReflection")},ZB={Grammar:Tt(()=>xje(),"Grammar"),LanguageMetaData:Tt(()=>Cje,"LanguageMetaData"),parser:{}},JB={Grammar:Tt(()=>bje(),"Grammar"),LanguageMetaData:Tt(()=>Aje,"LanguageMetaData"),parser:{}},eF={Grammar:Tt(()=>Tje(),"Grammar"),LanguageMetaData:Tt(()=>_je,"LanguageMetaData"),parser:{}},tF={Grammar:Tt(()=>wje(),"Grammar"),LanguageMetaData:Tt(()=>Dje,"LanguageMetaData"),parser:{}},rF={Grammar:Tt(()=>kje(),"Grammar"),LanguageMetaData:Tt(()=>Lje,"LanguageMetaData"),parser:{}},nF={Grammar:Tt(()=>Eje(),"Grammar"),LanguageMetaData:Tt(()=>Rje,"LanguageMetaData"),parser:{}},iF={Grammar:Tt(()=>Sje(),"Grammar"),LanguageMetaData:Tt(()=>Nje,"LanguageMetaData"),parser:{}},Mje=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,Ije=/accTitle[\t ]*:([^\n\r]*)/,Oje=/title([\t ][^\n\r]*|)/,Pje={ACC_DESCR:Mje,ACC_TITLE:Ije,TITLE:Oje},Vf=class extends Kp{static{o(this,"AbstractMermaidValueConverter")}static{Tt(this,"AbstractMermaidValueConverter")}runConverter(t,e,r){let n=this.runCommonConverter(t,e,r);return n===void 0&&(n=this.runCustomConverter(t,e,r)),n===void 0?super.runConverter(t,e,r):n}runCommonConverter(t,e,r){let n=Pje[t.name];if(n===void 0)return;let i=n.exec(e);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` -`)}}},rh=class extends Vf{static{o(this,"CommonValueConverter")}static{Tt(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},Ha=class extends th{static{o(this,"AbstractMermaidTokenBuilder")}static{Tt(this,"AbstractMermaidTokenBuilder")}constructor(t){super(),this.keywords=new Set(t)}buildKeywordTokens(t,e,r){let n=super.buildKeywordTokens(t,e,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},Bje=class extends Ha{static{o(this,"CommonTokenBuilder")}static{Tt(this,"CommonTokenBuilder")}}});function v6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),rF,y6);return e.ServiceRegistry.register(r),{shared:e,GitGraph:r}}var Fje,y6,aF=N(()=>{"use strict";qa();vo();Fje=class extends Ha{static{o(this,"GitGraphTokenBuilder")}static{Tt(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},y6={parser:{TokenBuilder:Tt(()=>new Fje,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(v6,"createGitGraphServices");Tt(v6,"createGitGraphServices")});function b6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),ZB,x6);return e.ServiceRegistry.register(r),{shared:e,Info:r}}var $je,x6,sF=N(()=>{"use strict";qa();vo();$je=class extends Ha{static{o(this,"InfoTokenBuilder")}static{Tt(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},x6={parser:{TokenBuilder:Tt(()=>new $je,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(b6,"createInfoServices");Tt(b6,"createInfoServices")});function w6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),JB,T6);return e.ServiceRegistry.register(r),{shared:e,Packet:r}}var zje,T6,oF=N(()=>{"use strict";qa();vo();zje=class extends Ha{static{o(this,"PacketTokenBuilder")}static{Tt(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},T6={parser:{TokenBuilder:Tt(()=>new zje,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(w6,"createPacketServices");Tt(w6,"createPacketServices")});function E6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),eF,k6);return e.ServiceRegistry.register(r),{shared:e,Pie:r}}var Gje,Vje,k6,lF=N(()=>{"use strict";qa();vo();Gje=class extends Ha{static{o(this,"PieTokenBuilder")}static{Tt(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},Vje=class extends Vf{static{o(this,"PieValueConverter")}static{Tt(this,"PieValueConverter")}runCustomConverter(t,e,r){if(t.name==="PIE_SECTION_LABEL")return e.replace(/"/g,"").trim()}},k6={parser:{TokenBuilder:Tt(()=>new Gje,"TokenBuilder"),ValueConverter:Tt(()=>new Vje,"ValueConverter")}};o(E6,"createPieServices");Tt(E6,"createPieServices")});function C6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),tF,S6);return e.ServiceRegistry.register(r),{shared:e,Architecture:r}}var Uje,Hje,S6,cF=N(()=>{"use strict";qa();vo();Uje=class extends Ha{static{o(this,"ArchitectureTokenBuilder")}static{Tt(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},Hje=class extends Vf{static{o(this,"ArchitectureValueConverter")}static{Tt(this,"ArchitectureValueConverter")}runCustomConverter(t,e,r){if(t.name==="ARCH_ICON")return e.replace(/[()]/g,"").trim();if(t.name==="ARCH_TEXT_ICON")return e.replace(/["()]/g,"");if(t.name==="ARCH_TITLE")return e.replace(/[[\]]/g,"").trim()}},S6={parser:{TokenBuilder:Tt(()=>new Uje,"TokenBuilder"),ValueConverter:Tt(()=>new Hje,"ValueConverter")}};o(C6,"createArchitectureServices");Tt(C6,"createArchitectureServices")});function _6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),nF,A6);return e.ServiceRegistry.register(r),{shared:e,Radar:r}}var qje,A6,uF=N(()=>{"use strict";qa();vo();qje=class extends Ha{static{o(this,"RadarTokenBuilder")}static{Tt(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},A6={parser:{TokenBuilder:Tt(()=>new qje,"TokenBuilder"),ValueConverter:Tt(()=>new rh,"ValueConverter")}};o(_6,"createRadarServices");Tt(_6,"createRadarServices")});function sge(t){let e=t.validation.TreemapValidator,r=t.validation.ValidationRegistry;if(r){let n={Treemap:e.checkSingleRoot.bind(e)};r.register(n,e)}}function L6(t=Ea){let e=Hn(ka(t),xs),r=Hn(wa({shared:e}),iF,D6);return e.ServiceRegistry.register(r),sge(r),{shared:e,Treemap:r}}var Wje,Yje,Xje,jje,D6,hF=N(()=>{"use strict";qa();vo();Wje=class extends Ha{static{o(this,"TreemapTokenBuilder")}static{Tt(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},Yje=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,Xje=class extends Vf{static{o(this,"TreemapValueConverter")}static{Tt(this,"TreemapValueConverter")}runCustomConverter(t,e,r){if(t.name==="NUMBER2")return parseFloat(e.replace(/,/g,""));if(t.name==="SEPARATOR")return e.substring(1,e.length-1);if(t.name==="STRING2")return e.substring(1,e.length-1);if(t.name==="INDENTATION")return e.length;if(t.name==="ClassDef"){if(typeof e!="string")return e;let n=Yje.exec(e);if(n)return{$type:"ClassDefStatement",className:n[1],styleText:n[2]||void 0}}}};o(sge,"registerValidationChecks");Tt(sge,"registerValidationChecks");jje=class{static{o(this,"TreemapValidator")}static{Tt(this,"TreemapValidator")}checkSingleRoot(t,e){let r;for(let n of t.TreemapRows)n.item&&(r===void 0&&n.indent===void 0?r=0:n.indent===void 0?e("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}):r!==void 0&&r>=parseInt(n.indent,10)&&e("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}))}},D6={parser:{TokenBuilder:Tt(()=>new Wje,"TokenBuilder"),ValueConverter:Tt(()=>new Xje,"ValueConverter")},validation:{TreemapValidator:Tt(()=>new jje,"TreemapValidator")}};o(L6,"createTreemapServices");Tt(L6,"createTreemapServices")});var oge={};dr(oge,{InfoModule:()=>x6,createInfoServices:()=>b6});var lge=N(()=>{"use strict";sF();qa()});var cge={};dr(cge,{PacketModule:()=>T6,createPacketServices:()=>w6});var uge=N(()=>{"use strict";oF();qa()});var hge={};dr(hge,{PieModule:()=>k6,createPieServices:()=>E6});var fge=N(()=>{"use strict";lF();qa()});var dge={};dr(dge,{ArchitectureModule:()=>S6,createArchitectureServices:()=>C6});var pge=N(()=>{"use strict";cF();qa()});var mge={};dr(mge,{GitGraphModule:()=>y6,createGitGraphServices:()=>v6});var gge=N(()=>{"use strict";aF();qa()});var yge={};dr(yge,{RadarModule:()=>A6,createRadarServices:()=>_6});var vge=N(()=>{"use strict";uF();qa()});var xge={};dr(xge,{TreemapModule:()=>D6,createTreemapServices:()=>L6});var bge=N(()=>{"use strict";hF();qa()});async function bs(t,e){let r=Kje[t];if(!r)throw new Error(`Unknown diagram type: ${t}`);nh[t]||await r();let i=nh[t].parse(e);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new Qje(i);return i.value}var nh,Kje,Qje,Uf=N(()=>{"use strict";aF();sF();oF();lF();cF();uF();hF();qa();nh={},Kje={info:Tt(async()=>{let{createInfoServices:t}=await Promise.resolve().then(()=>(lge(),oge)),e=t().Info.parser.LangiumParser;nh.info=e},"info"),packet:Tt(async()=>{let{createPacketServices:t}=await Promise.resolve().then(()=>(uge(),cge)),e=t().Packet.parser.LangiumParser;nh.packet=e},"packet"),pie:Tt(async()=>{let{createPieServices:t}=await Promise.resolve().then(()=>(fge(),hge)),e=t().Pie.parser.LangiumParser;nh.pie=e},"pie"),architecture:Tt(async()=>{let{createArchitectureServices:t}=await Promise.resolve().then(()=>(pge(),dge)),e=t().Architecture.parser.LangiumParser;nh.architecture=e},"architecture"),gitGraph:Tt(async()=>{let{createGitGraphServices:t}=await Promise.resolve().then(()=>(gge(),mge)),e=t().GitGraph.parser.LangiumParser;nh.gitGraph=e},"gitGraph"),radar:Tt(async()=>{let{createRadarServices:t}=await Promise.resolve().then(()=>(vge(),yge)),e=t().Radar.parser.LangiumParser;nh.radar=e},"radar"),treemap:Tt(async()=>{let{createTreemapServices:t}=await Promise.resolve().then(()=>(bge(),xge)),e=t().Treemap.parser.LangiumParser;nh.treemap=e},"treemap")};o(bs,"parse");Tt(bs,"parse");Qje=class extends Error{static{o(this,"MermaidParseError")}constructor(t){let e=t.lexerErrors.map(n=>n.message).join(` -`),r=t.parserErrors.map(n=>n.message).join(` -`);super(`Parsing failed: ${e} ${r}`),this.result=t}static{Tt(this,"MermaidParseError")}}});function nl(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}var r0=N(()=>{"use strict";o(nl,"populateCommonDb")});var rn,R6=N(()=>{"use strict";rn={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var J1,fF=N(()=>{"use strict";J1=class{constructor(e){this.init=e;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function dF(){return VL({length:7})}function Jje(t,e){let r=Object.create(null);return t.reduce((n,i)=>{let a=e(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function Tge(t,e,r){let n=t.indexOf(e);n===-1?t.push(r):t.splice(n,1,r)}function kge(t){let e=t.reduce((i,a)=>i.seq>a.seq?i:a,t[0]),r="";t.forEach(function(i){i===e?r+=" *":r+=" |"});let n=[r,e.id,e.seq];for(let i in Dt.records.branches)Dt.records.branches.get(i)===e.id&&n.push(i);if(X.debug(n.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){let i=Dt.records.commits.get(e.parents[0]);Tge(t,e,i),e.parents[1]&&t.push(Dt.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){let i=Dt.records.commits.get(e.parents[0]);Tge(t,e,i)}}t=Jje(t,i=>i.id),kge(t)}var Zje,n0,Dt,eKe,tKe,rKe,nKe,iKe,aKe,sKe,wge,oKe,lKe,cKe,uKe,hKe,Ege,fKe,dKe,pKe,N6,pF=N(()=>{"use strict";pt();tr();qn();gr();ci();R6();fF();La();Zje=ur.gitGraph,n0=o(()=>Vn({...Zje,...Qt().gitGraph}),"getConfig"),Dt=new J1(()=>{let t=n0(),e=t.mainBranchName,r=t.mainBranchOrder;return{mainBranchName:e,commits:new Map,head:null,branchConfig:new Map([[e,{name:e,order:r}]]),branches:new Map([[e,null]]),currBranch:e,direction:"LR",seq:0,options:{}}});o(dF,"getID");o(Jje,"uniqBy");eKe=o(function(t){Dt.records.direction=t},"setDirection"),tKe=o(function(t){X.debug("options str",t),t=t?.trim(),t=t||"{}";try{Dt.records.options=JSON.parse(t)}catch(e){X.error("error while parsing gitGraph options",e.message)}},"setOptions"),rKe=o(function(){return Dt.records.options},"getOptions"),nKe=o(function(t){let e=t.msg,r=t.id,n=t.type,i=t.tags;X.info("commit",e,r,n,i),X.debug("Entering commit:",e,r,n,i);let a=n0();r=tt.sanitizeText(r,a),e=tt.sanitizeText(e,a),i=i?.map(l=>tt.sanitizeText(l,a));let s={id:r||Dt.records.seq+"-"+dF(),message:e,seq:Dt.records.seq++,type:n??rn.NORMAL,tags:i??[],parents:Dt.records.head==null?[]:[Dt.records.head.id],branch:Dt.records.currBranch};Dt.records.head=s,X.info("main branch",a.mainBranchName),Dt.records.commits.has(s.id)&&X.warn(`Commit ID ${s.id} already exists`),Dt.records.commits.set(s.id,s),Dt.records.branches.set(Dt.records.currBranch,s.id),X.debug("in pushCommit "+s.id)},"commit"),iKe=o(function(t){let e=t.name,r=t.order;if(e=tt.sanitizeText(e,n0()),Dt.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}")`);Dt.records.branches.set(e,Dt.records.head!=null?Dt.records.head.id:null),Dt.records.branchConfig.set(e,{name:e,order:r}),wge(e),X.debug("in createBranch")},"branch"),aKe=o(t=>{let e=t.branch,r=t.id,n=t.type,i=t.tags,a=n0();e=tt.sanitizeText(e,a),r&&(r=tt.sanitizeText(r,a));let s=Dt.records.branches.get(Dt.records.currBranch),l=Dt.records.branches.get(e),u=s?Dt.records.commits.get(s):void 0,h=l?Dt.records.commits.get(l):void 0;if(u&&h&&u.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(Dt.records.currBranch===e){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${Dt.records.currBranch})has no commits`);throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},p}if(!Dt.records.branches.has(e)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},p}if(r&&Dt.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom id");throw p.hash={text:`merge ${e} ${r} ${n} ${i?.join(" ")}`,token:`merge ${e} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${e} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let f=l||"",d={id:r||`${Dt.records.seq}-${dF()}`,message:`merged branch ${e} into ${Dt.records.currBranch}`,seq:Dt.records.seq++,parents:Dt.records.head==null?[]:[Dt.records.head.id,f],branch:Dt.records.currBranch,type:rn.MERGE,customType:n,customId:!!r,tags:i??[]};Dt.records.head=d,Dt.records.commits.set(d.id,d),Dt.records.branches.set(Dt.records.currBranch,d.id),X.debug(Dt.records.branches),X.debug("in mergeBranch")},"merge"),sKe=o(function(t){let e=t.id,r=t.targetId,n=t.tags,i=t.parent;X.debug("Entering cherryPick:",e,r,n);let a=n0();if(e=tt.sanitizeText(e,a),r=tt.sanitizeText(r,a),n=n?.map(u=>tt.sanitizeText(u,a)),i=tt.sanitizeText(i,a),!e||!Dt.records.commits.has(e)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},u}let s=Dt.records.commits.get(e);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===rn.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||!Dt.records.commits.has(r)){if(l===Dt.records.currBranch){let d=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let u=Dt.records.branches.get(Dt.records.currBranch);if(u===void 0||!u){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${Dt.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let h=Dt.records.commits.get(u);if(h===void 0||!h){let d=new Error(`Incorrect usage of "cherry-pick". Current branch (${Dt.records.currBranch})has no commits`);throw d.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},d}let f={id:Dt.records.seq+"-"+dF(),message:`cherry-picked ${s?.message} into ${Dt.records.currBranch}`,seq:Dt.records.seq++,parents:Dt.records.head==null?[]:[Dt.records.head.id,s.id],branch:Dt.records.currBranch,type:rn.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===rn.MERGE?`|parent:${i}`:""}`]};Dt.records.head=f,Dt.records.commits.set(f.id,f),Dt.records.branches.set(Dt.records.currBranch,f.id),X.debug(Dt.records.branches),X.debug("in cherryPick")}},"cherryPick"),wge=o(function(t){if(t=tt.sanitizeText(t,n0()),Dt.records.branches.has(t)){Dt.records.currBranch=t;let e=Dt.records.branches.get(Dt.records.currBranch);e===void 0||!e?Dt.records.head=null:Dt.records.head=Dt.records.commits.get(e)??null}else{let e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw e.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},e}},"checkout");o(Tge,"upsert");o(kge,"prettyPrintCommitHistory");oKe=o(function(){X.debug(Dt.records.commits);let t=Ege()[0];kge([t])},"prettyPrint"),lKe=o(function(){Dt.reset(),Sr()},"clear"),cKe=o(function(){return[...Dt.records.branchConfig.values()].map((e,r)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${r}`)}).sort((e,r)=>(e.order??0)-(r.order??0)).map(({name:e})=>({name:e}))},"getBranchesAsObjArray"),uKe=o(function(){return Dt.records.branches},"getBranches"),hKe=o(function(){return Dt.records.commits},"getCommits"),Ege=o(function(){let t=[...Dt.records.commits.values()];return t.forEach(function(e){X.debug(e.id)}),t.sort((e,r)=>e.seq-r.seq),t},"getCommitsArray"),fKe=o(function(){return Dt.records.currBranch},"getCurrentBranch"),dKe=o(function(){return Dt.records.direction},"getDirection"),pKe=o(function(){return Dt.records.head},"getHead"),N6={commitType:rn,getConfig:n0,setDirection:eKe,setOptions:tKe,getOptions:rKe,commit:nKe,branch:iKe,merge:aKe,cherryPick:sKe,checkout:wge,prettyPrint:oKe,clear:lKe,getBranchesAsObjArray:cKe,getBranches:uKe,getCommits:hKe,getCommitsArray:Ege,getCurrentBranch:fKe,getDirection:dKe,getHead:pKe,setAccTitle:Rr,getAccTitle:Mr,getAccDescription:Or,setAccDescription:Ir,setDiagramTitle:$r,getDiagramTitle:Pr}});var mKe,gKe,yKe,vKe,xKe,bKe,TKe,Sge,Cge=N(()=>{"use strict";Uf();pt();r0();pF();R6();mKe=o((t,e)=>{nl(t,e),t.dir&&e.setDirection(t.dir);for(let r of t.statements)gKe(r,e)},"populate"),gKe=o((t,e)=>{let n={Commit:o(i=>e.commit(yKe(i)),"Commit"),Branch:o(i=>e.branch(vKe(i)),"Branch"),Merge:o(i=>e.merge(xKe(i)),"Merge"),Checkout:o(i=>e.checkout(bKe(i)),"Checkout"),CherryPicking:o(i=>e.cherryPick(TKe(i)),"CherryPicking")}[t.$type];n?n(t):X.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),yKe=o(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?rn[t.type]:rn.NORMAL,tags:t.tags??void 0}),"parseCommit"),vKe=o(t=>({name:t.name,order:t.order??0}),"parseBranch"),xKe=o(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?rn[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),bKe=o(t=>t.branch,"parseCheckout"),TKe=o(t=>({id:t.id,targetId:"",tags:t.tags?.length===0?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),Sge={parse:o(async t=>{let e=await bs("gitGraph",t);X.debug(e),mKe(e,N6)},"parse")}});var wKe,il,qf,Wf,Jc,ih,i0,Ks,Qs,M6,h4,I6,Hf,Vr,kKe,_ge,Dge,EKe,SKe,CKe,AKe,_Ke,DKe,LKe,RKe,NKe,MKe,IKe,OKe,Age,PKe,f4,BKe,FKe,$Ke,zKe,GKe,Lge,Rge=N(()=>{"use strict";yr();Xt();pt();tr();R6();wKe=ge(),il=wKe?.gitGraph,qf=10,Wf=40,Jc=4,ih=2,i0=8,Ks=new Map,Qs=new Map,M6=30,h4=new Map,I6=[],Hf=0,Vr="LR",kKe=o(()=>{Ks.clear(),Qs.clear(),h4.clear(),Hf=0,I6=[],Vr="LR"},"clear"),_ge=o(t=>{let e=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof t=="string"?t.split(/\\n|\n|/gi):t).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),e.appendChild(i)}),e},"drawText"),Dge=o(t=>{let e,r,n;return Vr==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),t.forEach(i=>{let a=Vr==="TB"||Vr=="BT"?Qs.get(i)?.y:Qs.get(i)?.x;a!==void 0&&r(a,n)&&(e=i,n=a)}),e},"findClosestParent"),EKe=o(t=>{let e="",r=1/0;return t.forEach(n=>{let i=Qs.get(n).y;i<=r&&(e=n,r=i)}),e||void 0},"findClosestParentBT"),SKe=o((t,e,r)=>{let n=r,i=r,a=[];t.forEach(s=>{let l=e.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=AKe(l),i=Math.max(n,i)):a.push(l),_Ke(l,n)}),n=i,a.forEach(s=>{DKe(s,n,r)}),t.forEach(s=>{let l=e.get(s);if(l?.parents.length){let u=EKe(l.parents);n=Qs.get(u).y-Wf,n<=i&&(i=n);let h=Ks.get(l.branch).pos,f=n-qf;Qs.set(l.id,{x:h,y:f})}})},"setParallelBTPos"),CKe=o(t=>{let e=Dge(t.parents.filter(n=>n!==null));if(!e)throw new Error(`Closest parent not found for commit ${t.id}`);let r=Qs.get(e)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return r},"findClosestParentPos"),AKe=o(t=>CKe(t)+Wf,"calculateCommitPosition"),_Ke=o((t,e)=>{let r=Ks.get(t.branch);if(!r)throw new Error(`Branch not found for commit ${t.id}`);let n=r.pos,i=e+qf;return Qs.set(t.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),DKe=o((t,e,r)=>{let n=Ks.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);let i=e+r,a=n.pos;Qs.set(t.id,{x:a,y:i})},"setRootPosition"),LKe=o((t,e,r,n,i,a)=>{if(a===rn.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%i0} ${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%i0} ${n}-inner`);else if(a===rn.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}`);else{let s=t.append("circle");if(s.attr("cx",r.x),s.attr("cy",r.y),s.attr("r",e.type===rn.MERGE?9:10),s.attr("class",`commit ${e.id} commit${i%i0}`),a===rn.MERGE){let l=t.append("circle");l.attr("cx",r.x),l.attr("cy",r.y),l.attr("r",6),l.attr("class",`commit ${n} ${e.id} commit${i%i0}`)}a===rn.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%i0}`)}},"drawCommitBullet"),RKe=o((t,e,r,n)=>{if(e.type!==rn.CHERRY_PICK&&(e.customId&&e.type===rn.MERGE||e.type!==rn.MERGE)&&il?.showCommitLabel){let i=t.append("g"),a=i.insert("rect").attr("class","commit-label-bkg"),s=i.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(e.id),l=s.node()?.getBBox();if(l&&(a.attr("x",r.posWithOffset-l.width/2-ih).attr("y",r.y+13.5).attr("width",l.width+2*ih).attr("height",l.height+2*ih),Vr==="TB"||Vr==="BT"?(a.attr("x",r.x-(l.width+4*Jc+5)).attr("y",r.y-12),s.attr("x",r.x-(l.width+4*Jc)).attr("y",r.y+l.height-12)):s.attr("x",r.posWithOffset-l.width/2),il.rotateCommitLabel))if(Vr==="TB"||Vr==="BT")s.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),a.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let u=-7.5-(l.width+10)/25*9.5,h=10+l.width/25*8.5;i.attr("transform","translate("+u+", "+h+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),NKe=o((t,e,r,n)=>{if(e.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of e.tags.reverse()){let h=t.insert("polygon"),f=t.append("circle"),d=t.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=d.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),d.attr("x",r.posWithOffset-p.width/2),l.push({tag:d,hole:f,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:f,yOffset:d}of l){let p=s/2,m=r.y-19.2-d;if(f.attr("class","tag-label-bkg").attr("points",` - ${n-a/2-Jc/2},${m+ih} - ${n-a/2-Jc/2},${m-ih} - ${r.posWithOffset-a/2-Jc},${m-p-ih} - ${r.posWithOffset+a/2+Jc},${m-p-ih} - ${r.posWithOffset+a/2+Jc},${m+p+ih} - ${r.posWithOffset-a/2-Jc},${m+p+ih}`),h.attr("cy",m).attr("cx",n-a/2+Jc/2).attr("r",1.5).attr("class","tag-hole"),Vr==="TB"||Vr==="BT"){let g=n+d;f.attr("class","tag-label-bkg").attr("points",` - ${r.x},${g+2} - ${r.x},${g-2} - ${r.x+qf},${g-p-2} - ${r.x+qf+a+4},${g-p-2} - ${r.x+qf+a+4},${g+p+2} - ${r.x+qf},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+Jc/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),MKe=o(t=>{switch(t.customType??t.type){case rn.NORMAL:return"commit-normal";case rn.REVERSE:return"commit-reverse";case rn.HIGHLIGHT:return"commit-highlight";case rn.MERGE:return"commit-merge";case rn.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),IKe=o((t,e,r,n)=>{let i={x:0,y:0};if(t.parents.length>0){let a=Dge(t.parents);if(a){let s=n.get(a)??i;return e==="TB"?s.y+Wf:e==="BT"?(n.get(t.id)??i).y-Wf:s.x+Wf}}else return e==="TB"?M6:e==="BT"?(n.get(t.id)??i).y-Wf:0;return 0},"calculatePosition"),OKe=o((t,e,r)=>{let n=Vr==="BT"&&r?e:e+qf,i=Vr==="TB"||Vr==="BT"?n:Ks.get(t.branch)?.pos,a=Vr==="TB"||Vr==="BT"?Ks.get(t.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:i,posWithOffset:n}},"getCommitPosition"),Age=o((t,e,r)=>{if(!il)throw new Error("GitGraph config not found");let n=t.append("g").attr("class","commit-bullets"),i=t.append("g").attr("class","commit-labels"),a=Vr==="TB"||Vr==="BT"?M6:0,s=[...e.keys()],l=il?.parallelCommits??!1,u=o((f,d)=>{let p=e.get(f)?.seq,m=e.get(d)?.seq;return p!==void 0&&m!==void 0?p-m:0},"sortKeys"),h=s.sort(u);Vr==="BT"&&(l&&SKe(h,e,a),h=h.reverse()),h.forEach(f=>{let d=e.get(f);if(!d)throw new Error(`Commit not found for key ${f}`);l&&(a=IKe(d,Vr,a,Qs));let p=OKe(d,a,l);if(r){let m=MKe(d),g=d.customType??d.type,y=Ks.get(d.branch)?.index??0;LKe(n,d,p,m,y,g),RKe(i,d,p,a),NKe(i,d,p,a)}Vr==="TB"||Vr==="BT"?Qs.set(d.id,{x:p.x,y:p.posWithOffset}):Qs.set(d.id,{x:p.posWithOffset,y:p.y}),a=Vr==="BT"&&l?a+Wf:a+Wf+qf,a>Hf&&(Hf=a)})},"drawCommits"),PKe=o((t,e,r,n,i)=>{let s=(Vr==="TB"||Vr==="BT"?r.xh.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>t.seq&&h.sequ(h)&&l(h))},"shouldRerouteArrow"),f4=o((t,e,r=0)=>{let n=t+Math.abs(t-e)/2;if(r>5)return n;if(I6.every(s=>Math.abs(s-n)>=10))return I6.push(n),n;let a=Math.abs(t-e);return f4(t,e-a/5,r+1)},"findLane"),BKe=o((t,e,r,n)=>{let i=Qs.get(e.id),a=Qs.get(r.id);if(i===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${e.id} and ${r.id}`);let s=PKe(e,r,i,a,n),l="",u="",h=0,f=0,d=Ks.get(r.branch)?.index;r.type===rn.MERGE&&e.id!==r.parents[0]&&(d=Ks.get(e.branch)?.index);let p;if(s){l="A 10 10, 0, 0, 0,",u="A 10 10, 0, 0, 1,",h=10,f=10;let m=i.ya.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===rn.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y-h} ${u} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x+h} ${i.y} ${l} ${a.x} ${i.y+f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):Vr==="BT"?(i.xa.x&&(l="A 20 20, 0, 0, 0,",u="A 20 20, 0, 0, 1,",h=20,f=20,r.type===rn.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${l} ${i.x-f} ${a.y} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`),i.x===a.x&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):(i.ya.y&&(r.type===rn.MERGE&&e.id!==r.parents[0]?p=`M ${i.x} ${i.y} L ${a.x-h} ${i.y} ${l} ${a.x} ${i.y-f} L ${a.x} ${a.y}`:p=`M ${i.x} ${i.y} L ${i.x} ${a.y+h} ${u} ${i.x+f} ${a.y} L ${a.x} ${a.y}`),i.y===a.y&&(p=`M ${i.x} ${i.y} L ${a.x} ${a.y}`));if(p===void 0)throw new Error("Line definition not found");t.append("path").attr("d",p).attr("class","arrow arrow"+d%i0)},"drawArrow"),FKe=o((t,e)=>{let r=t.append("g").attr("class","commit-arrows");[...e.keys()].forEach(n=>{let i=e.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{BKe(r,e.get(a),i,e)})})},"drawArrows"),$Ke=o((t,e)=>{let r=t.append("g");e.forEach((n,i)=>{let a=i%i0,s=Ks.get(n.name)?.pos;if(s===void 0)throw new Error(`Position not found for branch ${n.name}`);let l=r.append("line");l.attr("x1",0),l.attr("y1",s),l.attr("x2",Hf),l.attr("y2",s),l.attr("class","branch branch"+a),Vr==="TB"?(l.attr("y1",M6),l.attr("x1",s),l.attr("y2",Hf),l.attr("x2",s)):Vr==="BT"&&(l.attr("y1",Hf),l.attr("x1",s),l.attr("y2",M6),l.attr("x2",s)),I6.push(s);let u=n.name,h=_ge(u),f=r.insert("rect"),p=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);p.node().appendChild(h);let m=h.getBBox();f.attr("class","branchLabelBkg label"+a).attr("rx",4).attr("ry",4).attr("x",-m.width-4-(il?.rotateCommitLabel===!0?30:0)).attr("y",-m.height/2+8).attr("width",m.width+18).attr("height",m.height+4),p.attr("transform","translate("+(-m.width-14-(il?.rotateCommitLabel===!0?30:0))+", "+(s-m.height/2-1)+")"),Vr==="TB"?(f.attr("x",s-m.width/2-10).attr("y",0),p.attr("transform","translate("+(s-m.width/2-5)+", 0)")):Vr==="BT"?(f.attr("x",s-m.width/2-10).attr("y",Hf),p.attr("transform","translate("+(s-m.width/2-5)+", "+Hf+")")):f.attr("transform","translate(-19, "+(s-m.height/2)+")")})},"drawBranches"),zKe=o(function(t,e,r,n,i){return Ks.set(t,{pos:e,index:r}),e+=50+(i?40:0)+(Vr==="TB"||Vr==="BT"?n.width/2:0),e},"setBranchPosition"),GKe=o(function(t,e,r,n){if(kKe(),X.debug("in gitgraph renderer",t+` -`,"id:",e,r),!il)throw new Error("GitGraph config not found");let i=il.rotateCommitLabel??!1,a=n.db;h4=a.getCommits();let s=a.getBranchesAsObjArray();Vr=a.getDirection();let l=qe(`[id="${e}"]`),u=0;s.forEach((h,f)=>{let d=_ge(h.name),p=l.append("g"),m=p.insert("g").attr("class","branchLabel"),g=m.insert("g").attr("class","label branch-label");g.node()?.appendChild(d);let y=d.getBBox();u=zKe(h.name,u,f,y,i),g.remove(),m.remove(),p.remove()}),Age(l,h4,!1),il.showBranches&&$Ke(l,s),FKe(l,h4),Age(l,h4,!0),qt.insertTitle(l,"gitTitleText",il.titleTopMargin??0,a.getDiagramTitle()),FA(void 0,l,il.diagramPadding,il.useMaxWidth)},"draw"),Lge={draw:GKe}});var VKe,Nge,Mge=N(()=>{"use strict";VKe=o(t=>` - .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(e=>` - .branch-label${e} { fill: ${t["gitBranchLabel"+e]}; } - .commit${e} { stroke: ${t["git"+e]}; fill: ${t["git"+e]}; } - .commit-highlight${e} { stroke: ${t["gitInv"+e]}; fill: ${t["gitInv"+e]}; } - .label${e} { fill: ${t["git"+e]}; } - .arrow${e} { stroke: ${t["git"+e]}; } - `).join(` -`)} - - .branch { - stroke-width: 1; - stroke: ${t.lineColor}; - stroke-dasharray: 2; - } - .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};} - .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; } - .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};} - .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; } - .tag-hole { fill: ${t.textColor}; } - - .commit-merge { - stroke: ${t.primaryColor}; - fill: ${t.primaryColor}; - } - .commit-reverse { - stroke: ${t.primaryColor}; - fill: ${t.primaryColor}; - stroke-width: 3; - } - .commit-highlight-outer { - } - .commit-highlight-inner { - stroke: ${t.primaryColor}; - fill: ${t.primaryColor}; - } - - .arrow { stroke-width: 8; stroke-linecap: round; fill: none} - .gitTitleText { - text-anchor: middle; - font-size: 18px; - fill: ${t.textColor}; - } -`,"getStyles"),Nge=VKe});var Ige={};dr(Ige,{diagram:()=>UKe});var UKe,Oge=N(()=>{"use strict";Cge();pF();Rge();Mge();UKe={parser:Sge,db:N6,renderer:Lge,styles:Nge}});var mF,Fge,$ge=N(()=>{"use strict";mF=(function(){var t=o(function(D,_,O,M){for(O=O||{},M=D.length;M--;O[D[M]]=_);return O},"o"),e=[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],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],f=[1,34],d=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],T=[1,19],S=[1,20],w=[1,21],k=[1,22],A=[1,23],C=[1,25],R=[1,35],I={trace:o(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:o(function(_,O,M,P,B,F,G){var $=F.length-1;switch(B){case 1:return F[$-1];case 2:this.$=[];break;case 3:F[$-1].push(F[$]),this.$=F[$-1];break;case 4:case 5:this.$=F[$];break;case 6:case 7:this.$=[];break;case 8:P.setWeekday("monday");break;case 9:P.setWeekday("tuesday");break;case 10:P.setWeekday("wednesday");break;case 11:P.setWeekday("thursday");break;case 12:P.setWeekday("friday");break;case 13:P.setWeekday("saturday");break;case 14:P.setWeekday("sunday");break;case 15:P.setWeekend("friday");break;case 16:P.setWeekend("saturday");break;case 17:P.setDateFormat(F[$].substr(11)),this.$=F[$].substr(11);break;case 18:P.enableInclusiveEndDates(),this.$=F[$].substr(18);break;case 19:P.TopAxis(),this.$=F[$].substr(8);break;case 20:P.setAxisFormat(F[$].substr(11)),this.$=F[$].substr(11);break;case 21:P.setTickInterval(F[$].substr(13)),this.$=F[$].substr(13);break;case 22:P.setExcludes(F[$].substr(9)),this.$=F[$].substr(9);break;case 23:P.setIncludes(F[$].substr(9)),this.$=F[$].substr(9);break;case 24:P.setTodayMarker(F[$].substr(12)),this.$=F[$].substr(12);break;case 27:P.setDiagramTitle(F[$].substr(6)),this.$=F[$].substr(6);break;case 28:this.$=F[$].trim(),P.setAccTitle(this.$);break;case 29:case 30:this.$=F[$].trim(),P.setAccDescription(this.$);break;case 31:P.addSection(F[$].substr(8)),this.$=F[$].substr(8);break;case 33:P.addTask(F[$-1],F[$]),this.$="task";break;case 34:this.$=F[$-1],P.setClickEvent(F[$-1],F[$],null);break;case 35:this.$=F[$-2],P.setClickEvent(F[$-2],F[$-1],F[$]);break;case 36:this.$=F[$-2],P.setClickEvent(F[$-2],F[$-1],null),P.setLink(F[$-2],F[$]);break;case 37:this.$=F[$-3],P.setClickEvent(F[$-3],F[$-2],F[$-1]),P.setLink(F[$-3],F[$]);break;case 38:this.$=F[$-2],P.setClickEvent(F[$-2],F[$],null),P.setLink(F[$-2],F[$-1]);break;case 39:this.$=F[$-3],P.setClickEvent(F[$-3],F[$-1],F[$]),P.setLink(F[$-3],F[$-2]);break;case 40:this.$=F[$-1],P.setLink(F[$-1],F[$]);break;case 41:case 47:this.$=F[$-1]+" "+F[$];break;case 42:case 43:case 45:this.$=F[$-2]+" "+F[$-1]+" "+F[$];break;case 44:case 46:this.$=F[$-3]+" "+F[$-2]+" "+F[$-1]+" "+F[$];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:S,33:w,35:k,36:A,37:24,38:C,40:R},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:f,22:d,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:S,33:w,35:k,36:A,37:24,38:C,40:R},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:o(function(_,O){if(O.recoverable)this.trace(_);else{var M=new Error(_);throw M.hash=O,M}},"parseError"),parse:o(function(_){var O=this,M=[0],P=[],B=[null],F=[],G=this.table,$="",U=0,j=0,te=0,Y=2,oe=1,J=F.slice.call(arguments,1),ue=Object.create(this.lexer),re={yy:{}};for(var ee in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ee)&&(re.yy[ee]=this.yy[ee]);ue.setInput(_,re.yy),re.yy.lexer=ue,re.yy.parser=this,typeof ue.yylloc>"u"&&(ue.yylloc={});var Z=ue.yylloc;F.push(Z);var K=ue.options&&ue.options.ranges;typeof re.yy.parseError=="function"?this.parseError=re.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ae(Ce){M.length=M.length-2*Ce,B.length=B.length-Ce,F.length=F.length-Ce}o(ae,"popStack");function Q(){var Ce;return Ce=P.pop()||ue.lex()||oe,typeof Ce!="number"&&(Ce instanceof Array&&(P=Ce,Ce=P.pop()),Ce=O.symbols_[Ce]||Ce),Ce}o(Q,"lex");for(var de,ne,Te,q,Ve,pe,Be={},Ye,He,Le,Ie;;){if(Te=M[M.length-1],this.defaultActions[Te]?q=this.defaultActions[Te]:((de===null||typeof de>"u")&&(de=Q()),q=G[Te]&&G[Te][de]),typeof q>"u"||!q.length||!q[0]){var Ne="";Ie=[];for(Ye in G[Te])this.terminals_[Ye]&&Ye>Y&&Ie.push("'"+this.terminals_[Ye]+"'");ue.showPosition?Ne="Parse error on line "+(U+1)+`: -`+ue.showPosition()+` -Expecting `+Ie.join(", ")+", got '"+(this.terminals_[de]||de)+"'":Ne="Parse error on line "+(U+1)+": Unexpected "+(de==oe?"end of input":"'"+(this.terminals_[de]||de)+"'"),this.parseError(Ne,{text:ue.match,token:this.terminals_[de]||de,line:ue.yylineno,loc:Z,expected:Ie})}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Te+", token: "+de);switch(q[0]){case 1:M.push(de),B.push(ue.yytext),F.push(ue.yylloc),M.push(q[1]),de=null,ne?(de=ne,ne=null):(j=ue.yyleng,$=ue.yytext,U=ue.yylineno,Z=ue.yylloc,te>0&&te--);break;case 2:if(He=this.productions_[q[1]][1],Be.$=B[B.length-He],Be._$={first_line:F[F.length-(He||1)].first_line,last_line:F[F.length-1].last_line,first_column:F[F.length-(He||1)].first_column,last_column:F[F.length-1].last_column},K&&(Be._$.range=[F[F.length-(He||1)].range[0],F[F.length-1].range[1]]),pe=this.performAction.apply(Be,[$,j,U,re.yy,q[1],B,F].concat(J)),typeof pe<"u")return pe;He&&(M=M.slice(0,-1*He*2),B=B.slice(0,-1*He),F=F.slice(0,-1*He)),M.push(this.productions_[q[1]][0]),B.push(Be.$),F.push(Be._$),Le=G[M[M.length-2]][M[M.length-1]],M.push(Le);break;case 3:return!0}}return!0},"parse")},L=(function(){var D={EOF:1,parseError:o(function(O,M){if(this.yy.parser)this.yy.parser.parseError(O,M);else throw new Error(O)},"parseError"),setInput:o(function(_,O){return this.yy=O||this.yy||{},this._input=_,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var O=_.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},"input"),unput:o(function(_){var O=_.length,M=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var P=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),M.length-1&&(this.yylineno-=M.length-1);var B=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:M?(M.length===P.length?this.yylloc.first_column:0)+P[P.length-M.length].length-M[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[B[0],B[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(_){this.unput(this.match.slice(_))},"less"),pastInput:o(function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var _=this.pastInput(),O=new Array(_.length+1).join("-");return _+this.upcomingInput()+` -`+O+"^"},"showPosition"),test_match:o(function(_,O){var M,P,B;if(this.options.backtrack_lexer&&(B={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(B.yylloc.range=this.yylloc.range.slice(0))),P=_[0].match(/(?:\r\n?|\n).*/g),P&&(this.yylineno+=P.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:P?P[P.length-1].length-P[P.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+_[0].length},this.yytext+=_[0],this.match+=_[0],this.matches=_,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(_[0].length),this.matched+=_[0],M=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),M)return M;if(this._backtrack){for(var F in B)this[F]=B[F];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _,O,M,P;this._more||(this.yytext="",this.match="");for(var B=this._currentRules(),F=0;FO[0].length)){if(O=M,P=F,this.options.backtrack_lexer){if(_=this.test_match(M,B[F]),_!==!1)return _;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(_=this.test_match(O,B[P]),_!==!1?_:!1):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:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,M,P,B){var F=B;switch(P){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return D})();I.lexer=L;function E(){this.yy={}}return o(E,"Parser"),E.prototype=I,I.Parser=E,new E})();mF.parser=mF;Fge=mF});var zge=Da((gF,yF)=>{"use strict";(function(t,e){typeof gF=="object"&&typeof yF<"u"?yF.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=e()})(gF,(function(){"use strict";var t="day";return function(e,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),t)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),t);var u,h,f,d,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,f=(h?n.utc:n)().year(u).startOf("year"),d=4-f.isoWeekday(),f.isoWeekday()>4&&(d+=7),f.add(d,t));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),f=!!h.u(u)||u;return h.p(l)==="isoweek"?f?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}}))});var Gge=Da((vF,xF)=>{"use strict";(function(t,e){typeof vF=="object"&&typeof xF<"u"?xF.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=e()})(vF,(function(){"use strict";var t={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"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x})(g)}],f=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),d=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=d(g,!1)}],a:[a,function(g){this.afternoon=d(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=f("months"),v=(f("monthsShort")||y.map((function(x){return x.slice(0,3)}))).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=f("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(C,R,I){var L=I&&I.toUpperCase();return R||v[I]||t[I]||v[L].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(E,D,_){return D||_.slice(1)}))}))).match(e),b=x.length,T=0;T-1)return new Date((M==="X"?1e3:1)*O);var F=m(M)(O),G=F.year,$=F.month,U=F.day,j=F.hours,te=F.minutes,Y=F.seconds,oe=F.milliseconds,J=F.zone,ue=F.week,re=new Date,ee=U||(G||$?1:re.getDate()),Z=G||re.getFullYear(),K=0;G&&!$||(K=$>0?$-1:re.getMonth());var ae,Q=j||0,de=te||0,ne=Y||0,Te=oe||0;return J?new Date(Date.UTC(Z,K,ee,Q,de,ne,Te+60*J.offset*1e3)):P?new Date(Date.UTC(Z,K,ee,Q,de,ne,Te)):(ae=new Date(Z,K,ee,Q,de,ne,Te),ue&&(ae=B(ae).week(ue).toDate()),ae)}catch{return new Date("")}})(S,A,w,v),this.init(),L&&L!==!0&&(this.$L=this.locale(L).$L),I&&S!=this.format(A)&&(this.$d=new Date("")),s={}}else if(A instanceof Array)for(var E=A.length,D=1;D<=E;D+=1){k[1]=A[D-1];var _=v.apply(this,k);if(_.isValid()){this.$d=_.$d,this.$L=_.$L,this.init();break}D===E&&(this.$d=new Date(""))}else b.call(this,T)}}}))});var Vge=Da((bF,TF)=>{"use strict";(function(t,e){typeof bF=="object"&&typeof TF<"u"?TF.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=e()})(bF,(function(){"use strict";return function(t,e){var r=e.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var l=this.$utils(),u=(i||"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(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}}));return n.bind(this)(u)}}}))});function i1e(t,e,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);t[0].match(s)&&(e[i]=!0,t.shift(1),n=!0)})}var qge,xo,Wge,Yge,Xge,Uge,eu,SF,CF,AF,d4,p4,_F,DF,B6,ty,LF,jge,RF,m4,NF,MF,F6,wF,YKe,XKe,jKe,KKe,QKe,ZKe,JKe,eQe,tQe,rQe,nQe,iQe,aQe,sQe,oQe,lQe,cQe,uQe,hQe,fQe,dQe,pQe,mQe,Kge,gQe,yQe,vQe,Qge,xQe,kF,Zge,Jge,O6,ey,bQe,TQe,EF,P6,Vi,e1e,wQe,a0,kQe,Hge,EQe,t1e,SQe,r1e,CQe,AQe,n1e,a1e=N(()=>{"use strict";qge=ja(tm(),1),xo=ja(X4(),1),Wge=ja(zge(),1),Yge=ja(Gge(),1),Xge=ja(Vge(),1);pt();Xt();tr();ci();xo.default.extend(Wge.default);xo.default.extend(Yge.default);xo.default.extend(Xge.default);Uge={friday:5,saturday:6},eu="",SF="",AF="",d4=[],p4=[],_F=new Map,DF=[],B6=[],ty="",LF="",jge=["active","done","crit","milestone","vert"],RF=[],m4=!1,NF=!1,MF="sunday",F6="saturday",wF=0,YKe=o(function(){DF=[],B6=[],ty="",RF=[],O6=0,EF=void 0,P6=void 0,Vi=[],eu="",SF="",LF="",CF=void 0,AF="",d4=[],p4=[],m4=!1,NF=!1,wF=0,_F=new Map,Sr(),MF="sunday",F6="saturday"},"clear"),XKe=o(function(t){SF=t},"setAxisFormat"),jKe=o(function(){return SF},"getAxisFormat"),KKe=o(function(t){CF=t},"setTickInterval"),QKe=o(function(){return CF},"getTickInterval"),ZKe=o(function(t){AF=t},"setTodayMarker"),JKe=o(function(){return AF},"getTodayMarker"),eQe=o(function(t){eu=t},"setDateFormat"),tQe=o(function(){m4=!0},"enableInclusiveEndDates"),rQe=o(function(){return m4},"endDatesAreInclusive"),nQe=o(function(){NF=!0},"enableTopAxis"),iQe=o(function(){return NF},"topAxisEnabled"),aQe=o(function(t){LF=t},"setDisplayMode"),sQe=o(function(){return LF},"getDisplayMode"),oQe=o(function(){return eu},"getDateFormat"),lQe=o(function(t){d4=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),cQe=o(function(){return d4},"getIncludes"),uQe=o(function(t){p4=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),hQe=o(function(){return p4},"getExcludes"),fQe=o(function(){return _F},"getLinks"),dQe=o(function(t){ty=t,DF.push(t)},"addSection"),pQe=o(function(){return DF},"getSections"),mQe=o(function(){let t=Hge(),e=10,r=0;for(;!t&&r[\d\w- ]+)/.exec(r);if(i!==null){let s=null;for(let u of i.groups.ids.split(" ")){let h=a0(u);h!==void 0&&(!s||h.endTime>s.endTime)&&(s=h)}if(s)return s.endTime;let l=new Date;return l.setHours(0,0,0,0),l}let a=(0,xo.default)(r,e.trim(),!0);if(a.isValid())return a.toDate();{X.debug("Invalid date:"+r),X.debug("With date format:"+e.trim());let s=new Date(r);if(s===void 0||isNaN(s.getTime())||s.getFullYear()<-1e4||s.getFullYear()>1e4)throw new Error("Invalid date:"+r);return s}},"getStartDate"),Zge=o(function(t){let e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),Jge=o(function(t,e,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let f=null;for(let p of a.groups.ids.split(" ")){let m=a0(p);m!==void 0&&(!f||m.startTime{window.open(r,"_self")}),_F.set(n,r))}),t1e(t,"clickable")},"setLink"),t1e=o(function(t,e){t.split(",").forEach(function(r){let n=a0(r);n!==void 0&&n.classes.push(e)})},"setClass"),SQe=o(function(t,e,r){if(ge().securityLevel!=="loose"||e===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{qt.runFunc(e,...n)})},"setClickFun"),r1e=o(function(t,e){RF.push(function(){let r=document.querySelector(`[id="${t}"]`);r!==null&&r.addEventListener("click",function(){e()})},function(){let r=document.querySelector(`[id="${t}-text"]`);r!==null&&r.addEventListener("click",function(){e()})})},"pushFun"),CQe=o(function(t,e,r){t.split(",").forEach(function(n){SQe(n,e,r)}),t1e(t,"clickable")},"setClickEvent"),AQe=o(function(t){RF.forEach(function(e){e(t)})},"bindFunctions"),n1e={getConfig:o(()=>ge().gantt,"getConfig"),clear:YKe,setDateFormat:eQe,getDateFormat:oQe,enableInclusiveEndDates:tQe,endDatesAreInclusive:rQe,enableTopAxis:nQe,topAxisEnabled:iQe,setAxisFormat:XKe,getAxisFormat:jKe,setTickInterval:KKe,getTickInterval:QKe,setTodayMarker:ZKe,getTodayMarker:JKe,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,setDisplayMode:aQe,getDisplayMode:sQe,setAccDescription:Ir,getAccDescription:Or,addSection:dQe,getSections:pQe,getTasks:mQe,addTask:wQe,findTaskById:a0,addTaskOrg:kQe,setIncludes:lQe,getIncludes:cQe,setExcludes:uQe,getExcludes:hQe,setClickEvent:CQe,setLink:EQe,getLinks:fQe,bindFunctions:AQe,parseDuration:Zge,isInvalidDate:Kge,setWeekday:gQe,getWeekday:yQe,setWeekend:vQe};o(i1e,"getTaskTags")});var $6,_Qe,s1e,DQe,ah,LQe,o1e,l1e=N(()=>{"use strict";$6=ja(X4(),1);pt();yr();gr();Xt();Ei();_Qe=o(function(){X.debug("Something is calling, setConf, remove the call")},"setConf"),s1e={monday:Ih,tuesday:P5,wednesday:B5,thursday:fc,friday:F5,saturday:$5,sunday:wl},DQe=o((t,e)=>{let r=[...t].map(()=>-1/0),n=[...t].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s=r[s]){r[s]=a.endTime,a.order=s+e,s>i&&(i=s);break}return i},"getMaxIntersections"),LQe=o(function(t,e,r,n){let i=ge().gantt,a=ge().securityLevel,s;a==="sandbox"&&(s=qe("#i"+e));let l=a==="sandbox"?qe(s.nodes()[0].contentDocument.body):qe("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(e);ah=h.parentElement.offsetWidth,ah===void 0&&(ah=1200),i.useWidth!==void 0&&(ah=i.useWidth);let f=n.db.getTasks(),d=[];for(let C of f)d.push(C.type);d=A(d);let p={},m=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let C={};for(let I of f)C[I.section]===void 0?C[I.section]=[I]:C[I.section].push(I);let R=0;for(let I of Object.keys(C)){let L=DQe(C[I],R)+1;R+=L,m+=L*(i.barHeight+i.barGap),p[I]=L}}else{m+=f.length*(i.barHeight+i.barGap);for(let C of d)p[C]=f.filter(R=>R.type===C).length}h.setAttribute("viewBox","0 0 "+ah+" "+m);let g=l.select(`[id="${e}"]`),y=V5().domain([Y3(f,function(C){return C.startTime}),W3(f,function(C){return C.endTime})]).rangeRound([0,ah-i.leftPadding-i.rightPadding]);function v(C,R){let I=C.startTime,L=R.startTime,E=0;return I>L?E=1:IG.vert===$.vert?0:G.vert?1:-1);let M=[...new Set(C.map(G=>G.order))].map(G=>C.find($=>$.order===G));g.append("g").selectAll("rect").data(M).enter().append("rect").attr("x",0).attr("y",function(G,$){return $=G.order,$*R+I-2}).attr("width",function(){return _-i.rightPadding/2}).attr("height",R).attr("class",function(G){for(let[$,U]of d.entries())if(G.type===U)return"section section"+$%i.numberSectionStyles;return"section section0"}).enter();let P=g.append("g").selectAll("rect").data(C).enter(),B=n.db.getLinks();if(P.append("rect").attr("id",function(G){return G.id}).attr("rx",3).attr("ry",3).attr("x",function(G){return G.milestone?y(G.startTime)+L+.5*(y(G.endTime)-y(G.startTime))-.5*E:y(G.startTime)+L}).attr("y",function(G,$){return $=G.order,G.vert?i.gridLineStartPadding:$*R+I}).attr("width",function(G){return G.milestone?E:G.vert?.08*E:y(G.renderEndTime||G.endTime)-y(G.startTime)}).attr("height",function(G){return G.vert?f.length*(i.barHeight+i.barGap)+i.barHeight*2:E}).attr("transform-origin",function(G,$){return $=G.order,(y(G.startTime)+L+.5*(y(G.endTime)-y(G.startTime))).toString()+"px "+($*R+I+.5*E).toString()+"px"}).attr("class",function(G){let $="task",U="";G.classes.length>0&&(U=G.classes.join(" "));let j=0;for(let[Y,oe]of d.entries())G.type===oe&&(j=Y%i.numberSectionStyles);let te="";return G.active?G.crit?te+=" activeCrit":te=" active":G.done?G.crit?te=" doneCrit":te=" done":G.crit&&(te+=" crit"),te.length===0&&(te=" task"),G.milestone&&(te=" milestone "+te),G.vert&&(te=" vert "+te),te+=j,te+=" "+U,$+te}),P.append("text").attr("id",function(G){return G.id+"-text"}).text(function(G){return G.task}).attr("font-size",i.fontSize).attr("x",function(G){let $=y(G.startTime),U=y(G.renderEndTime||G.endTime);if(G.milestone&&($+=.5*(y(G.endTime)-y(G.startTime))-.5*E,U=$+E),G.vert)return y(G.startTime)+L;let j=this.getBBox().width;return j>U-$?U+j+1.5*i.leftPadding>_?$+L-5:U+L+5:(U-$)/2+$+L}).attr("y",function(G,$){return G.vert?i.gridLineStartPadding+f.length*(i.barHeight+i.barGap)+60:($=G.order,$*R+i.barHeight/2+(i.fontSize/2-2)+I)}).attr("text-height",E).attr("class",function(G){let $=y(G.startTime),U=y(G.endTime);G.milestone&&(U=$+E);let j=this.getBBox().width,te="";G.classes.length>0&&(te=G.classes.join(" "));let Y=0;for(let[J,ue]of d.entries())G.type===ue&&(Y=J%i.numberSectionStyles);let oe="";return G.active&&(G.crit?oe="activeCritText"+Y:oe="activeText"+Y),G.done?G.crit?oe=oe+" doneCritText"+Y:oe=oe+" doneText"+Y:G.crit&&(oe=oe+" critText"+Y),G.milestone&&(oe+=" milestoneText"),G.vert&&(oe+=" vertText"),j>U-$?U+j+1.5*i.leftPadding>_?te+" taskTextOutsideLeft taskTextOutside"+Y+" "+oe:te+" taskTextOutsideRight taskTextOutside"+Y+" "+oe+" width-"+j:te+" taskText taskText"+Y+" "+oe+" width-"+j}),ge().securityLevel==="sandbox"){let G;G=qe("#i"+e);let $=G.nodes()[0].contentDocument;P.filter(function(U){return B.has(U.id)}).each(function(U){var j=$.querySelector("#"+U.id),te=$.querySelector("#"+U.id+"-text");let Y=j.parentNode;var oe=$.createElement("a");oe.setAttribute("xlink:href",B.get(U.id)),oe.setAttribute("target","_top"),Y.appendChild(oe),oe.appendChild(j),oe.appendChild(te)})}}o(b,"drawRects");function T(C,R,I,L,E,D,_,O){if(_.length===0&&O.length===0)return;let M,P;for(let{startTime:j,endTime:te}of D)(M===void 0||jP)&&(P=te);if(!M||!P)return;if((0,$6.default)(P).diff((0,$6.default)(M),"year")>5){X.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let B=n.db.getDateFormat(),F=[],G=null,$=(0,$6.default)(M);for(;$.valueOf()<=P;)n.db.isInvalidDate($,B,_,O)?G?G.end=$:G={start:$,end:$}:G&&(F.push(G),G=null),$=$.add(1,"d");g.append("g").selectAll("rect").data(F).enter().append("rect").attr("id",j=>"exclude-"+j.start.format("YYYY-MM-DD")).attr("x",j=>y(j.start.startOf("day"))+I).attr("y",i.gridLineStartPadding).attr("width",j=>y(j.end.endOf("day"))-y(j.start.startOf("day"))).attr("height",E-R-i.gridLineStartPadding).attr("transform-origin",function(j,te){return(y(j.start)+I+.5*(y(j.end)-y(j.start))).toString()+"px "+(te*C+.5*E).toString()+"px"}).attr("class","exclude-range")}o(T,"drawExcludeDays");function S(C,R,I,L){let E=n.db.getDateFormat(),D=n.db.getAxisFormat(),_;D?_=D:E==="D"?_="%d":_=i.axisFormat??"%Y-%m-%d";let O=QA(y).tickSize(-L+R+i.gridLineStartPadding).tickFormat(Pd(_)),P=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if(P!==null){let B=P[1],F=P[2],G=n.db.getWeekday()||i.weekday;switch(F){case"millisecond":O.ticks(uc.every(B));break;case"second":O.ticks(io.every(B));break;case"minute":O.ticks(ku.every(B));break;case"hour":O.ticks(Eu.every(B));break;case"day":O.ticks(Ro.every(B));break;case"week":O.ticks(s1e[G].every(B));break;case"month":O.ticks(Su.every(B));break}}if(g.append("g").attr("class","grid").attr("transform","translate("+C+", "+(L-50)+")").call(O).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let B=KA(y).tickSize(-L+R+i.gridLineStartPadding).tickFormat(Pd(_));if(P!==null){let F=P[1],G=P[2],$=n.db.getWeekday()||i.weekday;switch(G){case"millisecond":B.ticks(uc.every(F));break;case"second":B.ticks(io.every(F));break;case"minute":B.ticks(ku.every(F));break;case"hour":B.ticks(Eu.every(F));break;case"day":B.ticks(Ro.every(F));break;case"week":B.ticks(s1e[$].every(F));break;case"month":B.ticks(Su.every(F));break}}g.append("g").attr("class","grid").attr("transform","translate("+C+", "+R+")").call(B).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(S,"makeGrid");function w(C,R){let I=0,L=Object.keys(p).map(E=>[E,p[E]]);g.append("g").selectAll("text").data(L).enter().append(function(E){let D=E[0].split(tt.lineBreakRegex),_=-(D.length-1)/2,O=u.createElementNS("http://www.w3.org/2000/svg","text");O.setAttribute("dy",_+"em");for(let[M,P]of D.entries()){let B=u.createElementNS("http://www.w3.org/2000/svg","tspan");B.setAttribute("alignment-baseline","central"),B.setAttribute("x","10"),M>0&&B.setAttribute("dy","1em"),B.textContent=P,O.appendChild(B)}return O}).attr("x",10).attr("y",function(E,D){if(D>0)for(let _=0;_{"use strict";RQe=o(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"),c1e=RQe});var h1e={};dr(h1e,{diagram:()=>NQe});var NQe,f1e=N(()=>{"use strict";$ge();a1e();l1e();u1e();NQe={parser:Fge,db:n1e,renderer:o1e,styles:c1e}});var m1e,g1e=N(()=>{"use strict";Uf();pt();m1e={parse:o(async t=>{let e=await bs("info",t);X.debug(e)},"parse")}});var g4,IF=N(()=>{g4={name:"mermaid",version:"11.12.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.1.1","@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.18",dompurify:"^3.2.5",katex:"^0.16.22",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^16.2.1",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.5","@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.2",chokidar:"3.6.0",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.1.0",jison:"^0.4.18","js-base64":"^3.7.8",jsdom:"^26.1.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.3",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.13","type-fest":"^4.35.0",typedoc:"^0.28.12","typedoc-plugin-markdown":"^4.8.1",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.6.4","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}});var BQe,FQe,y1e,v1e=N(()=>{"use strict";IF();BQe={version:g4.version+""},FQe=o(()=>BQe.version,"getVersion"),y1e={getVersion:FQe}});var aa,tu=N(()=>{"use strict";yr();Xt();aa=o(t=>{let{securityLevel:e}=ge(),r=qe("body");if(e==="sandbox"){let a=qe(`#i${t}`).node()?.contentDocument??document;r=qe(a.body)}return r.select(`#${t}`)},"selectSvgElement")});var $Qe,x1e,b1e=N(()=>{"use strict";pt();tu();Ei();$Qe=o((t,e,r)=>{X.debug(`rendering info diagram -`+t);let n=aa(e);mn(n,100,400,!0),n.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"),x1e={draw:$Qe}});var T1e={};dr(T1e,{diagram:()=>zQe});var zQe,w1e=N(()=>{"use strict";g1e();v1e();b1e();zQe={parser:m1e,db:y1e,renderer:x1e}});var S1e,OF,z6,PF,UQe,HQe,qQe,WQe,YQe,XQe,jQe,G6,BF=N(()=>{"use strict";pt();ci();La();S1e=ur.pie,OF={sections:new Map,showData:!1,config:S1e},z6=OF.sections,PF=OF.showData,UQe=structuredClone(S1e),HQe=o(()=>structuredClone(UQe),"getConfig"),qQe=o(()=>{z6=new Map,PF=OF.showData,Sr()},"clear"),WQe=o(({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.`);z6.has(t)||(z6.set(t,e),X.debug(`added new section: ${t}, with value: ${e}`))},"addSection"),YQe=o(()=>z6,"getSections"),XQe=o(t=>{PF=t},"setShowData"),jQe=o(()=>PF,"getShowData"),G6={getConfig:HQe,clear:qQe,setDiagramTitle:$r,getDiagramTitle:Pr,setAccTitle:Rr,getAccTitle:Mr,setAccDescription:Ir,getAccDescription:Or,addSection:WQe,getSections:YQe,setShowData:XQe,getShowData:jQe}});var KQe,C1e,A1e=N(()=>{"use strict";Uf();pt();r0();BF();KQe=o((t,e)=>{nl(t,e),e.setShowData(t.showData),t.sections.map(e.addSection)},"populateDb"),C1e={parse:o(async t=>{let e=await bs("pie",t);X.debug(e),KQe(e,G6)},"parse")}});var QQe,_1e,D1e=N(()=>{"use strict";QQe=o(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"),_1e=QQe});var ZQe,JQe,L1e,R1e=N(()=>{"use strict";yr();Xt();pt();tu();Ei();tr();ZQe=o(t=>{let e=[...t.values()].reduce((i,a)=>i+a,0),r=[...t.entries()].map(([i,a])=>({label:i,value:a})).filter(i=>i.value/e*100>=1).sort((i,a)=>a.value-i.value);return X5().value(i=>i.value)(r)},"createPieArcs"),JQe=o((t,e,r,n)=>{X.debug(`rendering pie chart -`+t);let i=n.db,a=ge(),s=Vn(i.getConfig(),a.pie),l=40,u=18,h=4,f=450,d=f,p=aa(e),m=p.append("g");m.attr("transform","translate("+d/2+","+f/2+")");let{themeVariables:g}=a,[y]=vc(g.pieOuterStrokeWidth);y??=2;let v=s.textPosition,x=Math.min(d,f)/2-l,b=Sl().innerRadius(0).outerRadius(x),T=Sl().innerRadius(x*v).outerRadius(x*v);m.append("circle").attr("cx",0).attr("cy",0).attr("r",x+y/2).attr("class","pieOuterCircle");let S=i.getSections(),w=ZQe(S),k=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],A=0;S.forEach(_=>{A+=_});let C=w.filter(_=>(_.data.value/A*100).toFixed(0)!=="0"),R=no(k);m.selectAll("mySlices").data(C).enter().append("path").attr("d",b).attr("fill",_=>R(_.data.label)).attr("class","pieCircle"),m.selectAll("mySlices").data(C).enter().append("text").text(_=>(_.data.value/A*100).toFixed(0)+"%").attr("transform",_=>"translate("+T.centroid(_)+")").style("text-anchor","middle").attr("class","slice"),m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(f-50)/2).attr("class","pieTitleText");let I=[...S.entries()].map(([_,O])=>({label:_,value:O})),L=m.selectAll(".legend").data(I).enter().append("g").attr("class","legend").attr("transform",(_,O)=>{let M=u+h,P=M*I.length/2,B=12*u,F=O*M-P;return"translate("+B+","+F+")"});L.append("rect").attr("width",u).attr("height",u).style("fill",_=>R(_.label)).style("stroke",_=>R(_.label)),L.append("text").attr("x",u+h).attr("y",u-h).text(_=>i.getShowData()?`${_.label} [${_.value}]`:_.label);let E=Math.max(...L.selectAll("text").nodes().map(_=>_?.getBoundingClientRect().width??0)),D=d+l+u+h+E;p.attr("viewBox",`0 0 ${D} ${f}`),mn(p,f,D,s.useMaxWidth)},"draw"),L1e={draw:JQe}});var N1e={};dr(N1e,{diagram:()=>eZe});var eZe,M1e=N(()=>{"use strict";A1e();BF();D1e();R1e();eZe={parser:C1e,db:G6,renderer:L1e,styles:_1e}});var FF,O1e,P1e=N(()=>{"use strict";FF=(function(){var t=o(function(he,z,se,le){for(se=se||{},le=he.length;le--;se[he[le]]=z);return se},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[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],l=[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],u=[55,56,57],h=[2,36],f=[1,37],d=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,14],x=[1,23],b=[1,18],T=[1,19],S=[1,20],w=[1,21],k=[1,22],A=[1,24],C=[1,25],R=[1,26],I=[1,27],L=[1,28],E=[1,29],D=[1,32],_=[1,33],O=[1,34],M=[1,39],P=[1,40],B=[1,42],F=[1,44],G=[1,62],$=[1,61],U=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],j=[1,65],te=[1,66],Y=[1,67],oe=[1,68],J=[1,69],ue=[1,70],re=[1,71],ee=[1,72],Z=[1,73],K=[1,74],ae=[1,75],Q=[1,76],de=[4,5,6,7,8,9,10,11,12,13,14,15,18],ne=[1,90],Te=[1,91],q=[1,92],Ve=[1,99],pe=[1,93],Be=[1,96],Ye=[1,94],He=[1,95],Le=[1,97],Ie=[1,98],Ne=[1,102],Ce=[10,55,56,57],Fe=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],fe={trace:o(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:o(function(z,se,le,ke,ve,ye,Re){var _e=ye.length-1;switch(ve){case 23:this.$=ye[_e];break;case 24:this.$=ye[_e-1]+""+ye[_e];break;case 26:this.$=ye[_e-1]+ye[_e];break;case 27:this.$=[ye[_e].trim()];break;case 28:ye[_e-2].push(ye[_e].trim()),this.$=ye[_e-2];break;case 29:this.$=ye[_e-4],ke.addClass(ye[_e-2],ye[_e]);break;case 37:this.$=[];break;case 42:this.$=ye[_e].trim(),ke.setDiagramTitle(this.$);break;case 43:this.$=ye[_e].trim(),ke.setAccTitle(this.$);break;case 44:case 45:this.$=ye[_e].trim(),ke.setAccDescription(this.$);break;case 46:ke.addSection(ye[_e].substr(8)),this.$=ye[_e].substr(8);break;case 47:ke.addPoint(ye[_e-3],"",ye[_e-1],ye[_e],[]);break;case 48:ke.addPoint(ye[_e-4],ye[_e-3],ye[_e-1],ye[_e],[]);break;case 49:ke.addPoint(ye[_e-4],"",ye[_e-2],ye[_e-1],ye[_e]);break;case 50:ke.addPoint(ye[_e-5],ye[_e-4],ye[_e-2],ye[_e-1],ye[_e]);break;case 51:ke.setXAxisLeftText(ye[_e-2]),ke.setXAxisRightText(ye[_e]);break;case 52:ye[_e-1].text+=" \u27F6 ",ke.setXAxisLeftText(ye[_e-1]);break;case 53:ke.setXAxisLeftText(ye[_e]);break;case 54:ke.setYAxisBottomText(ye[_e-2]),ke.setYAxisTopText(ye[_e]);break;case 55:ye[_e-1].text+=" \u27F6 ",ke.setYAxisBottomText(ye[_e-1]);break;case 56:ke.setYAxisBottomText(ye[_e]);break;case 57:ke.setQuadrant1Text(ye[_e]);break;case 58:ke.setQuadrant2Text(ye[_e]);break;case 59:ke.setQuadrant3Text(ye[_e]);break;case 60:ke.setQuadrant4Text(ye[_e]);break;case 64:this.$={text:ye[_e],type:"text"};break;case 65:this.$={text:ye[_e-1].text+""+ye[_e],type:ye[_e-1].type};break;case 66:this.$={text:ye[_e],type:"text"};break;case 67:this.$={text:ye[_e],type:"markdown"};break;case 68:this.$=ye[_e];break;case 69:this.$=ye[_e-1]+""+ye[_e];break}},"anonymous"),table:[{18:e,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:e,26:8,27:2,28:r,55:n,56:i,57:a},{18:e,26:9,27:2,28:r,55:n,56:i,57:a},t(s,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:T,39:S,41:w,42:k,48:A,50:C,51:R,52:I,53:L,54:E,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),t(s,[2,34]),{27:45,55:n,56:i,57:a},t(u,[2,37]),t(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:f,5:d,10:p,12:m,13:g,14:y,18:v,25:x,35:b,37:T,39:S,41:w,42:k,48:A,50:C,51:R,52:I,53:L,54:E,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),t(u,[2,39]),t(u,[2,40]),t(u,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(u,[2,45]),t(u,[2,46]),{18:[1,50]},{4:f,5:d,10:p,12:m,13:g,14:y,43:51,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:52,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:53,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:54,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:55,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,10:p,12:m,13:g,14:y,43:56,58:31,60:D,61:_,63:O,64:M,65:P,66:B,67:F},{4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,44:[1,57],47:[1,58],58:60,59:59,63:O,64:M,65:P,66:B,67:F},t(U,[2,64]),t(U,[2,66]),t(U,[2,67]),t(U,[2,70]),t(U,[2,71]),t(U,[2,72]),t(U,[2,73]),t(U,[2,74]),t(U,[2,75]),t(U,[2,76]),t(U,[2,77]),t(U,[2,78]),t(U,[2,79]),t(U,[2,80]),t(s,[2,35]),t(u,[2,38]),t(u,[2,42]),t(u,[2,43]),t(u,[2,44]),{3:64,4:j,5:te,6:Y,7:oe,8:J,9:ue,10:re,11:ee,12:Z,13:K,14:ae,15:Q,21:63},t(u,[2,53],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,49:[1,77],63:O,64:M,65:P,66:B,67:F}),t(u,[2,56],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,49:[1,78],63:O,64:M,65:P,66:B,67:F}),t(u,[2,57],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,58],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,59],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,60],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),{45:[1,79]},{44:[1,80]},t(U,[2,65]),t(U,[2,81]),t(U,[2,82]),t(U,[2,83]),{3:82,4:j,5:te,6:Y,7:oe,8:J,9:ue,10:re,11:ee,12:Z,13:K,14:ae,15:Q,18:[1,81]},t(de,[2,23]),t(de,[2,1]),t(de,[2,2]),t(de,[2,3]),t(de,[2,4]),t(de,[2,5]),t(de,[2,6]),t(de,[2,7]),t(de,[2,8]),t(de,[2,9]),t(de,[2,10]),t(de,[2,11]),t(de,[2,12]),t(u,[2,52],{58:31,43:83,4:f,5:d,10:p,12:m,13:g,14:y,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),t(u,[2,55],{58:31,43:84,4:f,5:d,10:p,12:m,13:g,14:y,60:D,61:_,63:O,64:M,65:P,66:B,67:F}),{46:[1,85]},{45:[1,86]},{4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,16:89,17:Ye,18:He,19:Le,20:Ie,22:88,23:87},t(de,[2,24]),t(u,[2,51],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,54],{59:59,58:60,4:f,5:d,8:G,10:p,12:m,13:g,14:y,18:$,63:O,64:M,65:P,66:B,67:F}),t(u,[2,47],{22:88,16:89,23:100,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie}),{46:[1,101]},t(u,[2,29],{10:Ne}),t(Ce,[2,27],{16:103,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie}),t(Fe,[2,25]),t(Fe,[2,13]),t(Fe,[2,14]),t(Fe,[2,15]),t(Fe,[2,16]),t(Fe,[2,17]),t(Fe,[2,18]),t(Fe,[2,19]),t(Fe,[2,20]),t(Fe,[2,21]),t(Fe,[2,22]),t(u,[2,49],{10:Ne}),t(u,[2,48],{22:88,16:89,23:104,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie}),{4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,16:89,17:Ye,18:He,19:Le,20:Ie,22:105},t(Fe,[2,26]),t(u,[2,50],{10:Ne}),t(Ce,[2,28],{16:103,4:ne,5:Te,6:q,8:Ve,11:pe,13:Be,17:Ye,18:He,19:Le,20:Ie})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(z,se){if(se.recoverable)this.trace(z);else{var le=new Error(z);throw le.hash=se,le}},"parseError"),parse:o(function(z){var se=this,le=[0],ke=[],ve=[null],ye=[],Re=this.table,_e="",ze=0,Ke=0,xt=0,We=2,Oe=1,et=ye.slice.call(arguments,1),Ue=Object.create(this.lexer),lt={yy:{}};for(var Gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Gt)&&(lt.yy[Gt]=this.yy[Gt]);Ue.setInput(z,lt.yy),lt.yy.lexer=Ue,lt.yy.parser=this,typeof Ue.yylloc>"u"&&(Ue.yylloc={});var vt=Ue.yylloc;ye.push(vt);var Lt=Ue.options&&Ue.options.ranges;typeof lt.yy.parseError=="function"?this.parseError=lt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function dt(Se){le.length=le.length-2*Se,ve.length=ve.length-Se,ye.length=ye.length-Se}o(dt,"popStack");function nt(){var Se;return Se=ke.pop()||Ue.lex()||Oe,typeof Se!="number"&&(Se instanceof Array&&(ke=Se,Se=ke.pop()),Se=se.symbols_[Se]||Se),Se}o(nt,"lex");for(var bt,wt,yt,ft,Ur,_t,bn={},Br,cr,ar,_r;;){if(yt=le[le.length-1],this.defaultActions[yt]?ft=this.defaultActions[yt]:((bt===null||typeof bt>"u")&&(bt=nt()),ft=Re[yt]&&Re[yt][bt]),typeof ft>"u"||!ft.length||!ft[0]){var Ct="";_r=[];for(Br in Re[yt])this.terminals_[Br]&&Br>We&&_r.push("'"+this.terminals_[Br]+"'");Ue.showPosition?Ct="Parse error on line "+(ze+1)+`: -`+Ue.showPosition()+` -Expecting `+_r.join(", ")+", got '"+(this.terminals_[bt]||bt)+"'":Ct="Parse error on line "+(ze+1)+": Unexpected "+(bt==Oe?"end of input":"'"+(this.terminals_[bt]||bt)+"'"),this.parseError(Ct,{text:Ue.match,token:this.terminals_[bt]||bt,line:Ue.yylineno,loc:vt,expected:_r})}if(ft[0]instanceof Array&&ft.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+bt);switch(ft[0]){case 1:le.push(bt),ve.push(Ue.yytext),ye.push(Ue.yylloc),le.push(ft[1]),bt=null,wt?(bt=wt,wt=null):(Ke=Ue.yyleng,_e=Ue.yytext,ze=Ue.yylineno,vt=Ue.yylloc,xt>0&&xt--);break;case 2:if(cr=this.productions_[ft[1]][1],bn.$=ve[ve.length-cr],bn._$={first_line:ye[ye.length-(cr||1)].first_line,last_line:ye[ye.length-1].last_line,first_column:ye[ye.length-(cr||1)].first_column,last_column:ye[ye.length-1].last_column},Lt&&(bn._$.range=[ye[ye.length-(cr||1)].range[0],ye[ye.length-1].range[1]]),_t=this.performAction.apply(bn,[_e,Ke,ze,lt.yy,ft[1],ve,ye].concat(et)),typeof _t<"u")return _t;cr&&(le=le.slice(0,-1*cr*2),ve=ve.slice(0,-1*cr),ye=ye.slice(0,-1*cr)),le.push(this.productions_[ft[1]][0]),ve.push(bn.$),ye.push(bn._$),ar=Re[le[le.length-2]][le[le.length-1]],le.push(ar);break;case 3:return!0}}return!0},"parse")},xe=(function(){var he={EOF:1,parseError:o(function(se,le){if(this.yy.parser)this.yy.parser.parseError(se,le);else throw new Error(se)},"parseError"),setInput:o(function(z,se){return this.yy=se||this.yy||{},this._input=z,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var z=this._input[0];this.yytext+=z,this.yyleng++,this.offset++,this.match+=z,this.matched+=z;var se=z.match(/(?:\r\n?|\n).*/g);return se?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),z},"input"),unput:o(function(z){var se=z.length,le=z.split(/(?:\r\n?|\n)/g);this._input=z+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-se),this.offset-=se;var ke=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),le.length-1&&(this.yylineno-=le.length-1);var ve=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:le?(le.length===ke.length?this.yylloc.first_column:0)+ke[ke.length-le.length].length-le[0].length:this.yylloc.first_column-se},this.options.ranges&&(this.yylloc.range=[ve[0],ve[0]+this.yyleng-se]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(z){this.unput(this.match.slice(z))},"less"),pastInput:o(function(){var z=this.matched.substr(0,this.matched.length-this.match.length);return(z.length>20?"...":"")+z.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var z=this.match;return z.length<20&&(z+=this._input.substr(0,20-z.length)),(z.substr(0,20)+(z.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var z=this.pastInput(),se=new Array(z.length+1).join("-");return z+this.upcomingInput()+` -`+se+"^"},"showPosition"),test_match:o(function(z,se){var le,ke,ve;if(this.options.backtrack_lexer&&(ve={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ve.yylloc.range=this.yylloc.range.slice(0))),ke=z[0].match(/(?:\r\n?|\n).*/g),ke&&(this.yylineno+=ke.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ke?ke[ke.length-1].length-ke[ke.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+z[0].length},this.yytext+=z[0],this.match+=z[0],this.matches=z,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(z[0].length),this.matched+=z[0],le=this.performAction.call(this,this.yy,this,se,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),le)return le;if(this._backtrack){for(var ye in ve)this[ye]=ve[ye];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var z,se,le,ke;this._more||(this.yytext="",this.match="");for(var ve=this._currentRules(),ye=0;yese[0].length)){if(se=le,ke=ye,this.options.backtrack_lexer){if(z=this.test_match(le,ve[ye]),z!==!1)return z;if(this._backtrack){se=!1;continue}else return!1}else if(!this.options.flex)break}return se?(z=this.test_match(se,ve[ke]),z!==!1?z:!1):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:o(function(){var se=this.next();return se||this.lex()},"lex"),begin:o(function(se){this.conditionStack.push(se)},"begin"),popState:o(function(){var se=this.conditionStack.length-1;return se>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(se){return se=this.conditionStack.length-1-Math.abs(se||0),se>=0?this.conditionStack[se]:"INITIAL"},"topState"),pushState:o(function(se){this.begin(se)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(se,le,ke,ve){var ye=ve;switch(ke){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:return 65;case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/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}}};return he})();fe.lexer=xe;function W(){this.yy={}}return o(W,"Parser"),W.prototype=fe,fe.Parser=W,new W})();FF.parser=FF;O1e=FF});var Ts,V6,B1e=N(()=>{"use strict";yr();La();pt();Oy();Ts=mh(),V6=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:ur.quadrantChart?.chartWidth||500,chartWidth:ur.quadrantChart?.chartHeight||500,titlePadding:ur.quadrantChart?.titlePadding||10,titleFontSize:ur.quadrantChart?.titleFontSize||20,quadrantPadding:ur.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:ur.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:ur.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:ur.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:ur.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:ur.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:ur.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:ur.quadrantChart?.pointTextPadding||5,pointLabelFontSize:ur.quadrantChart?.pointLabelFontSize||12,pointRadius:ur.quadrantChart?.pointRadius||5,xAxisPosition:ur.quadrantChart?.xAxisPosition||"top",yAxisPosition:ur.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:ur.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:ur.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:Ts.quadrant1Fill,quadrant2Fill:Ts.quadrant2Fill,quadrant3Fill:Ts.quadrant3Fill,quadrant4Fill:Ts.quadrant4Fill,quadrant1TextFill:Ts.quadrant1TextFill,quadrant2TextFill:Ts.quadrant2TextFill,quadrant3TextFill:Ts.quadrant3TextFill,quadrant4TextFill:Ts.quadrant4TextFill,quadrantPointFill:Ts.quadrantPointFill,quadrantPointTextFill:Ts.quadrantPointTextFill,quadrantXAxisTextFill:Ts.quadrantXAxisTextFill,quadrantYAxisTextFill:Ts.quadrantYAxisTextFill,quadrantTitleFill:Ts.quadrantTitleFill,quadrantInternalBorderStrokeFill:Ts.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:Ts.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,X.info("clear called")}setData(e){this.data={...this.data,...e}}addPoints(e){this.data.points=[...e,...this.data.points]}addClass(e,r){this.classes.set(e,r)}setConfig(e){X.trace("setConfig called with: ",e),this.config={...this.config,...e}}setThemeConfig(e){X.trace("setThemeConfig called with: ",e),this.themeConfig={...this.themeConfig,...e}}calculateSpace(e,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:e==="top"&&r?a:0,bottom:e==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,f={top:i?h:0},d=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+f.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-f.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:f,quadrantSpace:{quadrantLeft:d,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(e,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:f,quadrantTop:d,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+f+(m?f/2:0),y:e==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+d+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:d+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(e){let{quadrantSpace:r}=e,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,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:i,y:s,width:a,height:n,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:i,y:s+n,width:a,height:n,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:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(e){let{quadrantSpace:r}=e,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=Tl().domain([0,1]).range([i,s+i]),u=Tl().domain([0,1]).range([n+a,a]);return this.data.points.map(f=>{let d=this.classes.get(f.className);return d&&(f={...d,...f}),{x:l(f.x),y:u(f.y),fill:f.color??this.themeConfig.quadrantPointFill,radius:f.radius??this.config.pointRadius,text:{text:f.text,fill:this.themeConfig.quadrantPointTextFill,x:l(f.x),y:u(f.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:f.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:f.strokeWidth??"0px"}})}getBorders(e){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=e,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(e){if(e)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(){let e=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,e,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,e,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function $F(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function F1e(t){return!/^\d+$/.test(t)}function $1e(t){return!/^\d+px$/.test(t)}var s0,z1e=N(()=>{"use strict";s0=class extends Error{static{o(this,"InvalidStyleError")}constructor(e,r,n){super(`value for ${e} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o($F,"validateHexCode");o(F1e,"validateNumber");o($1e,"validateSizeInPixels")});function sh(t){return sr(t.trim(),nZe)}function iZe(t){Ca.setData({quadrant1Text:sh(t.text)})}function aZe(t){Ca.setData({quadrant2Text:sh(t.text)})}function sZe(t){Ca.setData({quadrant3Text:sh(t.text)})}function oZe(t){Ca.setData({quadrant4Text:sh(t.text)})}function lZe(t){Ca.setData({xAxisLeftText:sh(t.text)})}function cZe(t){Ca.setData({xAxisRightText:sh(t.text)})}function uZe(t){Ca.setData({yAxisTopText:sh(t.text)})}function hZe(t){Ca.setData({yAxisBottomText:sh(t.text)})}function zF(t){let e={};for(let r of t){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(F1e(i))throw new s0(n,i,"number");e.radius=parseInt(i)}else if(n==="color"){if($F(i))throw new s0(n,i,"hex code");e.color=i}else if(n==="stroke-color"){if($F(i))throw new s0(n,i,"hex code");e.strokeColor=i}else if(n==="stroke-width"){if($1e(i))throw new s0(n,i,"number of pixels (eg. 10px)");e.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return e}function fZe(t,e,r,n,i){let a=zF(i);Ca.addPoints([{x:r,y:n,text:sh(t.text),className:e,...a}])}function dZe(t,e){Ca.addClass(t,zF(e))}function pZe(t){Ca.setConfig({chartWidth:t})}function mZe(t){Ca.setConfig({chartHeight:t})}function gZe(){let t=ge(),{themeVariables:e,quadrantChart:r}=t;return r&&Ca.setConfig(r),Ca.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),Ca.setData({titleText:Pr()}),Ca.build()}var nZe,Ca,yZe,G1e,V1e=N(()=>{"use strict";Xt();gr();ci();B1e();z1e();nZe=ge();o(sh,"textSanitizer");Ca=new V6;o(iZe,"setQuadrant1Text");o(aZe,"setQuadrant2Text");o(sZe,"setQuadrant3Text");o(oZe,"setQuadrant4Text");o(lZe,"setXAxisLeftText");o(cZe,"setXAxisRightText");o(uZe,"setYAxisTopText");o(hZe,"setYAxisBottomText");o(zF,"parseStyles");o(fZe,"addPoint");o(dZe,"addClass");o(pZe,"setWidth");o(mZe,"setHeight");o(gZe,"getQuadrantData");yZe=o(function(){Ca.clear(),Sr()},"clear"),G1e={setWidth:pZe,setHeight:mZe,setQuadrant1Text:iZe,setQuadrant2Text:aZe,setQuadrant3Text:sZe,setQuadrant4Text:oZe,setXAxisLeftText:lZe,setXAxisRightText:cZe,setYAxisTopText:uZe,setYAxisBottomText:hZe,parseStyles:zF,addPoint:fZe,addClass:dZe,getQuadrantData:gZe,clear:yZe,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,getAccDescription:Or,setAccDescription:Ir}});var vZe,U1e,H1e=N(()=>{"use strict";yr();Xt();pt();Ei();vZe=o((t,e,r,n)=>{function i(C){return C==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(C){return C==="left"?"start":"middle"}o(a,"getTextAnchor");function s(C){return`translate(${C.x}, ${C.y}) rotate(${C.rotation||0})`}o(s,"getTransformation");let l=ge();X.debug(`Rendering quadrant chart -`+t);let u=l.securityLevel,h;u==="sandbox"&&(h=qe("#i"+e));let d=(u==="sandbox"?qe(h.nodes()[0].contentDocument.body):qe("body")).select(`[id="${e}"]`),p=d.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;mn(d,g,m,l.quadrantChart?.useMaxWidth??!0),d.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),T=p.append("g").attr("class","labels"),S=p.append("g").attr("class","title");y.title&&S.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",C=>C.x1).attr("y1",C=>C.y1).attr("x2",C=>C.x2).attr("y2",C=>C.y2).style("stroke",C=>C.strokeFill).style("stroke-width",C=>C.strokeWidth);let w=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");w.append("rect").attr("x",C=>C.x).attr("y",C=>C.y).attr("width",C=>C.width).attr("height",C=>C.height).attr("fill",C=>C.fill),w.append("text").attr("x",0).attr("y",0).attr("fill",C=>C.text.fill).attr("font-size",C=>C.text.fontSize).attr("dominant-baseline",C=>i(C.text.horizontalPos)).attr("text-anchor",C=>a(C.text.verticalPos)).attr("transform",C=>s(C.text)).text(C=>C.text.text),T.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(C=>C.text).attr("fill",C=>C.fill).attr("font-size",C=>C.fontSize).attr("dominant-baseline",C=>i(C.horizontalPos)).attr("text-anchor",C=>a(C.verticalPos)).attr("transform",C=>s(C));let A=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");A.append("circle").attr("cx",C=>C.x).attr("cy",C=>C.y).attr("r",C=>C.radius).attr("fill",C=>C.fill).attr("stroke",C=>C.strokeColor).attr("stroke-width",C=>C.strokeWidth),A.append("text").attr("x",0).attr("y",0).text(C=>C.text.text).attr("fill",C=>C.text.fill).attr("font-size",C=>C.text.fontSize).attr("dominant-baseline",C=>i(C.text.horizontalPos)).attr("text-anchor",C=>a(C.text.verticalPos)).attr("transform",C=>s(C.text))},"draw"),U1e={draw:vZe}});var q1e={};dr(q1e,{diagram:()=>xZe});var xZe,W1e=N(()=>{"use strict";P1e();V1e();H1e();xZe={parser:O1e,db:G1e,renderer:U1e,styles:o(()=>"","styles")}});var GF,j1e,K1e=N(()=>{"use strict";GF=(function(){var t=o(function(O,M,P,B){for(P=P||{},B=O.length;B--;P[O[B]]=M);return P},"o"),e=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,34,35,36],u=[1,25],h=[1,26],f=[1,28],d=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],S=[1,43],w=[1,42],k=[1,47],A=[1,50],C=[1,10,12,14,16,18,19,21,23,34,35,36],R=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],I=[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],L=[1,64],E={trace:o(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:o(function(M,P,B,F,G,$,U){var j=$.length-1;switch(G){case 5:F.setOrientation($[j]);break;case 9:F.setDiagramTitle($[j].text.trim());break;case 12:F.setLineData({text:"",type:"text"},$[j]);break;case 13:F.setLineData($[j-1],$[j]);break;case 14:F.setBarData({text:"",type:"text"},$[j]);break;case 15:F.setBarData($[j-1],$[j]);break;case 16:this.$=$[j].trim(),F.setAccTitle(this.$);break;case 17:case 18:this.$=$[j].trim(),F.setAccDescription(this.$);break;case 19:this.$=$[j-1];break;case 20:this.$=[Number($[j-2]),...$[j]];break;case 21:this.$=[Number($[j])];break;case 22:F.setXAxisTitle($[j]);break;case 23:F.setXAxisTitle($[j-1]);break;case 24:F.setXAxisTitle({type:"text",text:""});break;case 25:F.setXAxisBand($[j]);break;case 26:F.setXAxisRangeData(Number($[j-2]),Number($[j]));break;case 27:this.$=$[j-1];break;case 28:this.$=[$[j-2],...$[j]];break;case 29:this.$=[$[j]];break;case 30:F.setYAxisTitle($[j]);break;case 31:F.setYAxisTitle($[j-1]);break;case 32:F.setYAxisTitle({type:"text",text:""});break;case 33:F.setYAxisRangeData(Number($[j-2]),Number($[j]));break;case 37:this.$={text:$[j],type:"text"};break;case 38:this.$={text:$[j],type:"text"};break;case 39:this.$={text:$[j],type:"markdown"};break;case 40:this.$=$[j];break;case 41:this.$=$[j-1]+""+$[j];break}},"anonymous"),table:[t(e,r,{3:1,4:2,7:4,5:n,34:i,35:a,36:s}),{1:[3]},t(e,r,{4:2,7:4,3:8,5:n,34:i,35:a,36:s}),t(e,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],34:i,35:a,36:s}),{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]},t(l,[2,34]),t(l,[2,35]),t(l,[2,36]),{1:[2,1]},t(e,r,{4:2,7:4,3:21,5:n,34:i,35:a,36:s}),{1:[2,3]},t(l,[2,5]),t(e,[2,7],{4:22,34:i,35:a,36:s}),{11:23,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:39,13:38,24:S,27:w,29:40,30:41,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:45,15:44,27:k,33:46,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:49,17:48,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{11:52,17:51,24:A,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},{20:[1,53]},{22:[1,54]},t(C,[2,18]),{1:[2,2]},t(C,[2,8]),t(C,[2,9]),t(R,[2,37],{40:55,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T}),t(R,[2,38]),t(R,[2,39]),t(I,[2,40]),t(I,[2,42]),t(I,[2,43]),t(I,[2,44]),t(I,[2,45]),t(I,[2,46]),t(I,[2,47]),t(I,[2,48]),t(I,[2,49]),t(I,[2,50]),t(I,[2,51]),t(C,[2,10]),t(C,[2,22],{30:41,29:56,24:S,27:w}),t(C,[2,24]),t(C,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},t(C,[2,11]),t(C,[2,30],{33:60,27:k}),t(C,[2,32]),{31:[1,61]},t(C,[2,12]),{17:62,24:A},{25:63,27:L},t(C,[2,14]),{17:65,24:A},t(C,[2,16]),t(C,[2,17]),t(I,[2,41]),t(C,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(C,[2,31]),{27:[1,69]},t(C,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(C,[2,15]),t(C,[2,26]),t(C,[2,27]),{11:59,32:72,37:24,38:u,39:h,40:27,41:f,42:d,43:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T},t(C,[2,33]),t(C,[2,19]),{25:73,27:L},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:o(function(M,P){if(P.recoverable)this.trace(M);else{var B=new Error(M);throw B.hash=P,B}},"parseError"),parse:o(function(M){var P=this,B=[0],F=[],G=[null],$=[],U=this.table,j="",te=0,Y=0,oe=0,J=2,ue=1,re=$.slice.call(arguments,1),ee=Object.create(this.lexer),Z={yy:{}};for(var K in this.yy)Object.prototype.hasOwnProperty.call(this.yy,K)&&(Z.yy[K]=this.yy[K]);ee.setInput(M,Z.yy),Z.yy.lexer=ee,Z.yy.parser=this,typeof ee.yylloc>"u"&&(ee.yylloc={});var ae=ee.yylloc;$.push(ae);var Q=ee.options&&ee.options.ranges;typeof Z.yy.parseError=="function"?this.parseError=Z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function de(fe){B.length=B.length-2*fe,G.length=G.length-fe,$.length=$.length-fe}o(de,"popStack");function ne(){var fe;return fe=F.pop()||ee.lex()||ue,typeof fe!="number"&&(fe instanceof Array&&(F=fe,fe=F.pop()),fe=P.symbols_[fe]||fe),fe}o(ne,"lex");for(var Te,q,Ve,pe,Be,Ye,He={},Le,Ie,Ne,Ce;;){if(Ve=B[B.length-1],this.defaultActions[Ve]?pe=this.defaultActions[Ve]:((Te===null||typeof Te>"u")&&(Te=ne()),pe=U[Ve]&&U[Ve][Te]),typeof pe>"u"||!pe.length||!pe[0]){var Fe="";Ce=[];for(Le in U[Ve])this.terminals_[Le]&&Le>J&&Ce.push("'"+this.terminals_[Le]+"'");ee.showPosition?Fe="Parse error on line "+(te+1)+`: -`+ee.showPosition()+` -Expecting `+Ce.join(", ")+", got '"+(this.terminals_[Te]||Te)+"'":Fe="Parse error on line "+(te+1)+": Unexpected "+(Te==ue?"end of input":"'"+(this.terminals_[Te]||Te)+"'"),this.parseError(Fe,{text:ee.match,token:this.terminals_[Te]||Te,line:ee.yylineno,loc:ae,expected:Ce})}if(pe[0]instanceof Array&&pe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ve+", token: "+Te);switch(pe[0]){case 1:B.push(Te),G.push(ee.yytext),$.push(ee.yylloc),B.push(pe[1]),Te=null,q?(Te=q,q=null):(Y=ee.yyleng,j=ee.yytext,te=ee.yylineno,ae=ee.yylloc,oe>0&&oe--);break;case 2:if(Ie=this.productions_[pe[1]][1],He.$=G[G.length-Ie],He._$={first_line:$[$.length-(Ie||1)].first_line,last_line:$[$.length-1].last_line,first_column:$[$.length-(Ie||1)].first_column,last_column:$[$.length-1].last_column},Q&&(He._$.range=[$[$.length-(Ie||1)].range[0],$[$.length-1].range[1]]),Ye=this.performAction.apply(He,[j,Y,te,Z.yy,pe[1],G,$].concat(re)),typeof Ye<"u")return Ye;Ie&&(B=B.slice(0,-1*Ie*2),G=G.slice(0,-1*Ie),$=$.slice(0,-1*Ie)),B.push(this.productions_[pe[1]][0]),G.push(He.$),$.push(He._$),Ne=U[B[B.length-2]][B[B.length-1]],B.push(Ne);break;case 3:return!0}}return!0},"parse")},D=(function(){var O={EOF:1,parseError:o(function(P,B){if(this.yy.parser)this.yy.parser.parseError(P,B);else throw new Error(P)},"parseError"),setInput:o(function(M,P){return this.yy=P||this.yy||{},this._input=M,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var M=this._input[0];this.yytext+=M,this.yyleng++,this.offset++,this.match+=M,this.matched+=M;var P=M.match(/(?:\r\n?|\n).*/g);return P?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),M},"input"),unput:o(function(M){var P=M.length,B=M.split(/(?:\r\n?|\n)/g);this._input=M+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-P),this.offset-=P;var F=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),B.length-1&&(this.yylineno-=B.length-1);var G=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:B?(B.length===F.length?this.yylloc.first_column:0)+F[F.length-B.length].length-B[0].length:this.yylloc.first_column-P},this.options.ranges&&(this.yylloc.range=[G[0],G[0]+this.yyleng-P]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(M){this.unput(this.match.slice(M))},"less"),pastInput:o(function(){var M=this.matched.substr(0,this.matched.length-this.match.length);return(M.length>20?"...":"")+M.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var M=this.match;return M.length<20&&(M+=this._input.substr(0,20-M.length)),(M.substr(0,20)+(M.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var M=this.pastInput(),P=new Array(M.length+1).join("-");return M+this.upcomingInput()+` -`+P+"^"},"showPosition"),test_match:o(function(M,P){var B,F,G;if(this.options.backtrack_lexer&&(G={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(G.yylloc.range=this.yylloc.range.slice(0))),F=M[0].match(/(?:\r\n?|\n).*/g),F&&(this.yylineno+=F.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:F?F[F.length-1].length-F[F.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+M[0].length},this.yytext+=M[0],this.match+=M[0],this.matches=M,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(M[0].length),this.matched+=M[0],B=this.performAction.call(this,this.yy,this,P,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),B)return B;if(this._backtrack){for(var $ in G)this[$]=G[$];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var M,P,B,F;this._more||(this.yytext="",this.match="");for(var G=this._currentRules(),$=0;$P[0].length)){if(P=B,F=$,this.options.backtrack_lexer){if(M=this.test_match(B,G[$]),M!==!1)return M;if(this._backtrack){P=!1;continue}else return!1}else if(!this.options.flex)break}return P?(M=this.test_match(P,G[F]),M!==!1?M:!1):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:o(function(){var P=this.next();return P||this.lex()},"lex"),begin:o(function(P){this.conditionStack.push(P)},"begin"),popState:o(function(){var P=this.conditionStack.length-1;return P>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(P){return P=this.conditionStack.length-1-Math.abs(P||0),P>=0?this.conditionStack[P]:"INITIAL"},"topState"),pushState:o(function(P){this.begin(P)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(P,B,F,G){var $=G;switch(F){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";break;case 18:return this.pushState("axis_data"),"Y_AXIS";break;case 19:return this.pushState("axis_band_data"),24;break;case 20:return 31;case 21:return this.pushState("data"),16;break;case 22:return this.pushState("data"),18;break;case 23:return this.pushState("data_inner"),24;break;case 24:return 27;case 25:return this.popState(),26;break;case 26:this.popState();break;case 27:this.pushState("string");break;case 28:this.popState();break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 44:break;case 45:return 35;case 46:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/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}}};return O})();E.lexer=D;function _(){this.yy={}}return o(_,"Parser"),_.prototype=E,E.Parser=_,new _})();GF.parser=GF;j1e=GF});function VF(t){return t.type==="bar"}function U6(t){return t.type==="band"}function ry(t){return t.type==="linear"}var H6=N(()=>{"use strict";o(VF,"isBarPlot");o(U6,"isBandAxisData");o(ry,"isLinearAxisData")});var ny,UF=N(()=>{"use strict";zo();ny=class{constructor(e){this.parentGroup=e}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(e,r){if(!this.parentGroup)return{width:e.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of e){let s=qZ(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var iy,HF=N(()=>{"use strict";iy=class{constructor(e,r,n,i){this.axisConfig=e;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;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{o(this,"BaseAxis")}setRange(e){this.range=e,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=e[1]-e[0]:this.boundingRect.width=e[1]-e[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(e){this.axisPosition=e,this.setRange(this.range)}getTickDistance(){let e=this.getRange();return Math.abs(e[0]-e[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(e=>e.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(e){let r=e.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height+this.axisConfig.labelPadding*2;this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width,this.boundingRect.height=e.height-r}calculateSpaceIfDrawnVertical(e){let r=e.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*e.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=e.width-r,this.boundingRect.height=e.height}calculateSpace(e){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(e):this.calculateSpaceIfDrawnHorizontally(e),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}getDrawableElementsForLeftAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.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(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.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"}]}),e}getDrawableElementsForBottomAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),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 r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);e.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.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"}]}),e}getDrawableElementsForTopAxis(){let e=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;e.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&e.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;e.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&e.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"}]}),e}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var q6,Q1e=N(()=>{"use strict";yr();pt();HF();q6=class extends iy{static{o(this,"BandAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.categories=n,this.scale=q0().domain(this.categories).range(this.getRange())}setRange(e){super.setRange(e)}recalculateScale(){this.scale=q0().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),X.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(e){return this.scale(e)??this.getRange()[0]}}});var W6,Z1e=N(()=>{"use strict";yr();HF();W6=class extends iy{static{o(this,"LinearAxis")}constructor(e,r,n,i,a){super(e,i,a,r),this.domain=n,this.scale=Tl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let e=[...this.domain];this.axisPosition==="left"&&e.reverse(),this.scale=Tl().domain(e).range(this.getRange())}getScaleValue(e){return this.scale(e)}}});function qF(t,e,r,n){let i=new ny(n);return U6(t)?new q6(e,r,t.categories,t.title,i):new W6(e,r,[t.min,t.max],t.title,i)}var J1e=N(()=>{"use strict";H6();UF();Q1e();Z1e();o(qF,"getAxis")});function eye(t,e,r,n){let i=new ny(n);return new WF(i,t,e,r)}var WF,tye=N(()=>{"use strict";UF();WF=class{constructor(e,r,n,i){this.textDimensionCalculator=e;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,e.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let e=[];return this.showChartTitle&&e.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}]}),e}};o(eye,"getChartTitleComponent")});var Y6,rye=N(()=>{"use strict";yr();Y6=class{constructor(e,r,n,i,a){this.plotData=e;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let e=this.plotData.data.map(n=>[this.xAxis.getScaleValue(n[0]),this.yAxis.getScaleValue(n[1])]),r;return this.orientation==="horizontal"?r=Cl().y(n=>n[0]).x(n=>n[1])(e):r=Cl().x(n=>n[0]).y(n=>n[1])(e),r?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}});var X6,nye=N(()=>{"use strict";X6=class{constructor(e,r,n,i,a,s){this.barData=e;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let e=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:e.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function iye(t,e,r){return new YF(t,e,r)}var YF,aye=N(()=>{"use strict";rye();nye();YF=class{constructor(e,r,n){this.chartConfig=e;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(e,r){this.xAxis=e,this.yAxis=r}setBoundingBoxXY(e){this.boundingRect.x=e.x,this.boundingRect.y=e.y}calculateSpace(e){return this.boundingRect.width=e.width,this.boundingRect.height=e.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let e=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new Y6(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break;case"bar":{let i=new X6(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);e.push(...i.getDrawableElement())}break}return e}};o(iye,"getPlotComponent")});var j6,sye=N(()=>{"use strict";J1e();tye();aye();H6();j6=class{constructor(e,r,n,i){this.chartConfig=e;this.chartData=r;this.componentStore={title:eye(e,r,n,i),plot:iye(e,r,n),xAxis:qF(r.xAxis,e.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:qF(r.yAxis,e.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});e-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:e,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:e,height:r}),n=l.width,e-=l.width,e>0&&(a+=e,e=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>VF(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let e=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});e-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:e,height:r}),e-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:e,height:r}),r-=u.height,a=n+u.height,e>0&&(s+=e,e=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>VF(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let e=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))e.push(...r.getDrawableElements());return e}}});var K6,oye=N(()=>{"use strict";sye();K6=class{static{o(this,"XYChartBuilder")}static build(e,r,n,i){return new j6(e,r,n,i).getDrawableElement()}}});function cye(){let t=mh(),e=Qt();return Vn(t.xyChart,e.themeVariables.xyChart)}function uye(){let t=Qt();return Vn(ur.xyChart,t.xyChart)}function hye(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function KF(t){let e=Qt();return sr(t.trim(),e)}function kZe(t){lye=t}function EZe(t){t==="horizontal"?v4.chartOrientation="horizontal":v4.chartOrientation="vertical"}function SZe(t){pn.xAxis.title=KF(t.text)}function fye(t,e){pn.xAxis={type:"linear",title:pn.xAxis.title,min:t,max:e},Q6=!0}function CZe(t){pn.xAxis={type:"band",title:pn.xAxis.title,categories:t.map(e=>KF(e.text))},Q6=!0}function AZe(t){pn.yAxis.title=KF(t.text)}function _Ze(t,e){pn.yAxis={type:"linear",title:pn.yAxis.title,min:t,max:e},jF=!0}function DZe(t){let e=Math.min(...t),r=Math.max(...t),n=ry(pn.yAxis)?pn.yAxis.min:1/0,i=ry(pn.yAxis)?pn.yAxis.max:-1/0;pn.yAxis={type:"linear",title:pn.yAxis.title,min:Math.min(n,e),max:Math.max(i,r)}}function dye(t){let e=[];if(t.length===0)return e;if(!Q6){let r=ry(pn.xAxis)?pn.xAxis.min:1/0,n=ry(pn.xAxis)?pn.xAxis.max:-1/0;fye(Math.min(r,1),Math.max(n,t.length))}if(jF||DZe(t),U6(pn.xAxis)&&(e=pn.xAxis.categories.map((r,n)=>[r,t[n]])),ry(pn.xAxis)){let r=pn.xAxis.min,n=pn.xAxis.max,i=(n-r)/(t.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);e=a.map((s,l)=>[s,t[l]])}return e}function pye(t){return XF[t===0?0:t%XF.length]}function LZe(t,e){let r=dye(e);pn.plots.push({type:"line",strokeFill:pye(y4),strokeWidth:2,data:r}),y4++}function RZe(t,e){let r=dye(e);pn.plots.push({type:"bar",fill:pye(y4),data:r}),y4++}function NZe(){if(pn.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return pn.title=Pr(),K6.build(v4,pn,x4,lye)}function MZe(){return x4}function IZe(){return v4}function OZe(){return pn}var y4,lye,v4,x4,pn,XF,Q6,jF,PZe,mye,gye=N(()=>{"use strict";qn();La();Oy();tr();gr();ci();oye();H6();y4=0,v4=uye(),x4=cye(),pn=hye(),XF=x4.plotColorPalette.split(",").map(t=>t.trim()),Q6=!1,jF=!1;o(cye,"getChartDefaultThemeConfig");o(uye,"getChartDefaultConfig");o(hye,"getChartDefaultData");o(KF,"textSanitizer");o(kZe,"setTmpSVGG");o(EZe,"setOrientation");o(SZe,"setXAxisTitle");o(fye,"setXAxisRangeData");o(CZe,"setXAxisBand");o(AZe,"setYAxisTitle");o(_Ze,"setYAxisRangeData");o(DZe,"setYAxisRangeFromPlotData");o(dye,"transformDataWithoutCategory");o(pye,"getPlotColorFromPalette");o(LZe,"setLineData");o(RZe,"setBarData");o(NZe,"getDrawableElem");o(MZe,"getChartThemeConfig");o(IZe,"getChartConfig");o(OZe,"getXYChartData");PZe=o(function(){Sr(),y4=0,v4=uye(),pn=hye(),x4=cye(),XF=x4.plotColorPalette.split(",").map(t=>t.trim()),Q6=!1,jF=!1},"clear"),mye={getDrawableElem:NZe,clear:PZe,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,getAccDescription:Or,setAccDescription:Ir,setOrientation:EZe,setXAxisTitle:SZe,setXAxisRangeData:fye,setXAxisBand:CZe,setYAxisTitle:AZe,setYAxisRangeData:_Ze,setLineData:LZe,setBarData:RZe,setTmpSVGG:kZe,getChartThemeConfig:MZe,getChartConfig:IZe,getXYChartData:OZe}});var BZe,yye,vye=N(()=>{"use strict";pt();tu();Ei();BZe=o((t,e,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig(),l=i.getXYChartData().plots[0].data.map(T=>T[1]);function u(T){return T==="top"?"text-before-edge":"middle"}o(u,"getDominantBaseLine");function h(T){return T==="left"?"start":T==="right"?"end":"middle"}o(h,"getTextAnchor");function f(T){return`translate(${T.x}, ${T.y}) rotate(${T.rotation||0})`}o(f,"getTextTransformation"),X.debug(`Rendering xychart chart -`+t);let d=aa(e),p=d.append("g").attr("class","main"),m=p.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");mn(d,s.height,s.width,!0),d.attr("viewBox",`0 0 ${s.width} ${s.height}`),m.attr("fill",a.backgroundColor),i.setTmpSVGG(d.append("g").attr("class","mermaid-tmp-group"));let g=i.getDrawableElem(),y={};function v(T){let S=p,w="";for(let[k]of T.entries()){let A=p;k>0&&y[w]&&(A=y[w]),w+=T[k],S=y[w],S||(S=y[w]=A.append("g").attr("class",T[k]))}return S}o(v,"getGroup");for(let T of g){if(T.data.length===0)continue;let S=v(T.groupTexts);switch(T.type){case"rect":if(S.selectAll("rect").data(T.data).enter().append("rect").attr("x",w=>w.x).attr("y",w=>w.y).attr("width",w=>w.width).attr("height",w=>w.height).attr("fill",w=>w.fill).attr("stroke",w=>w.strokeFill).attr("stroke-width",w=>w.strokeWidth),s.showDataLabel)if(s.chartOrientation==="horizontal"){let A=function(I,L){let{data:E,label:D}=I;return L*D.length*.7<=E.width-10};var x=A;o(A,"fitsHorizontally");let w=.7,k=T.data.map((I,L)=>({data:I,label:l[L].toString()})).filter(I=>I.data.width>0&&I.data.height>0),C=k.map(I=>{let{data:L}=I,E=L.height*.7;for(;!A(I,E)&&E>0;)E-=1;return E}),R=Math.floor(Math.min(...C));S.selectAll("text").data(k).enter().append("text").attr("x",I=>I.data.x+I.data.width-10).attr("y",I=>I.data.y+I.data.height/2).attr("text-anchor","end").attr("dominant-baseline","middle").attr("fill","black").attr("font-size",`${R}px`).text(I=>I.label)}else{let A=function(I,L,E){let{data:D,label:_}=I,M=L*_.length*.7,P=D.x+D.width/2,B=P-M/2,F=P+M/2,G=B>=D.x&&F<=D.x+D.width,$=D.y+E+L<=D.y+D.height;return G&&$};var b=A;o(A,"fitsInBar");let w=10,k=T.data.map((I,L)=>({data:I,label:l[L].toString()})).filter(I=>I.data.width>0&&I.data.height>0),C=k.map(I=>{let{data:L,label:E}=I,D=L.width/(E.length*.7);for(;!A(I,D,10)&&D>0;)D-=1;return D}),R=Math.floor(Math.min(...C));S.selectAll("text").data(k).enter().append("text").attr("x",I=>I.data.x+I.data.width/2).attr("y",I=>I.data.y+10).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("fill","black").attr("font-size",`${R}px`).text(I=>I.label)}break;case"text":S.selectAll("text").data(T.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",w=>w.fill).attr("font-size",w=>w.fontSize).attr("dominant-baseline",w=>u(w.verticalPos)).attr("text-anchor",w=>h(w.horizontalPos)).attr("transform",w=>f(w)).text(w=>w.text);break;case"path":S.selectAll("path").data(T.data).enter().append("path").attr("d",w=>w.path).attr("fill",w=>w.fill?w.fill:"none").attr("stroke",w=>w.strokeFill).attr("stroke-width",w=>w.strokeWidth);break}}},"draw"),yye={draw:BZe}});var xye={};dr(xye,{diagram:()=>FZe});var FZe,bye=N(()=>{"use strict";K1e();gye();vye();FZe={parser:j1e,db:mye,renderer:yye}});var QF,kye,Eye=N(()=>{"use strict";QF=(function(){var t=o(function(fe,xe,W,he){for(W=W||{},he=fe.length;he--;W[fe[he]]=xe);return W},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],f=[1,28],d=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],T=[1,31],S=[1,32],w=[1,30],k=[1,39],A=[1,40],C=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],R=[1,61],I=[89,90],L=[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],E=[27,29],D=[1,70],_=[1,71],O=[1,72],M=[1,73],P=[1,74],B=[1,75],F=[1,76],G=[1,83],$=[1,80],U=[1,84],j=[1,85],te=[1,86],Y=[1,87],oe=[1,88],J=[1,89],ue=[1,90],re=[1,91],ee=[1,92],Z=[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],K=[63,64],ae=[1,101],Q=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],de=[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],ne=[1,110],Te=[1,106],q=[1,107],Ve=[1,108],pe=[1,109],Be=[1,111],Ye=[1,116],He=[1,117],Le=[1,114],Ie=[1,115],Ne={trace:o(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:o(function(xe,W,he,z,se,le,ke){var ve=le.length-1;switch(se){case 4:this.$=le[ve].trim(),z.setAccTitle(this.$);break;case 5:case 6:this.$=le[ve].trim(),z.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:z.setDirection("TB");break;case 18:z.setDirection("BT");break;case 19:z.setDirection("RL");break;case 20:z.setDirection("LR");break;case 21:z.addRequirement(le[ve-3],le[ve-4]);break;case 22:z.addRequirement(le[ve-5],le[ve-6]),z.setClass([le[ve-5]],le[ve-3]);break;case 23:z.setNewReqId(le[ve-2]);break;case 24:z.setNewReqText(le[ve-2]);break;case 25:z.setNewReqRisk(le[ve-2]);break;case 26:z.setNewReqVerifyMethod(le[ve-2]);break;case 29:this.$=z.RequirementType.REQUIREMENT;break;case 30:this.$=z.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=z.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=z.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=z.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=z.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=z.RiskLevel.LOW_RISK;break;case 36:this.$=z.RiskLevel.MED_RISK;break;case 37:this.$=z.RiskLevel.HIGH_RISK;break;case 38:this.$=z.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=z.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=z.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=z.VerifyType.VERIFY_TEST;break;case 42:z.addElement(le[ve-3]);break;case 43:z.addElement(le[ve-5]),z.setClass([le[ve-5]],le[ve-3]);break;case 44:z.setNewElementType(le[ve-2]);break;case 45:z.setNewElementDocRef(le[ve-2]);break;case 48:z.addRelationship(le[ve-2],le[ve],le[ve-4]);break;case 49:z.addRelationship(le[ve-2],le[ve-4],le[ve]);break;case 50:this.$=z.Relationships.CONTAINS;break;case 51:this.$=z.Relationships.COPIES;break;case 52:this.$=z.Relationships.DERIVES;break;case 53:this.$=z.Relationships.SATISFIES;break;case 54:this.$=z.Relationships.VERIFIES;break;case 55:this.$=z.Relationships.REFINES;break;case 56:this.$=z.Relationships.TRACES;break;case 57:this.$=le[ve-2],z.defineClass(le[ve-1],le[ve]);break;case 58:z.setClass(le[ve-1],le[ve]);break;case 59:z.setClass([le[ve-2]],le[ve]);break;case 60:case 62:this.$=[le[ve]];break;case 61:case 63:this.$=le[ve-2].concat([le[ve]]);break;case 64:this.$=le[ve-2],z.setCssStyle(le[ve-1],le[ve]);break;case 65:this.$=[le[ve]];break;case 66:le[ve-2].push(le[ve]),this.$=le[ve-2];break;case 68:this.$=le[ve-1]+le[ve];break}},"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(a,[2,6]),{3:12,4:2,6:e,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},t(a,[2,4]),t(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:43,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:44,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:45,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:46,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:47,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:48,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:49,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{4:17,5:s,7:50,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:f,24:d,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:S,77:w,89:k,90:A},{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(C,[2,17]),t(C,[2,18]),t(C,[2,19]),t(C,[2,20]),{30:60,33:62,75:R,89:k,90:A},{30:63,33:62,75:R,89:k,90:A},{30:64,33:62,75:R,89:k,90:A},t(I,[2,29]),t(I,[2,30]),t(I,[2,31]),t(I,[2,32]),t(I,[2,33]),t(I,[2,34]),t(L,[2,81]),t(L,[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(E,[2,79]),t(E,[2,80]),{27:[1,67],29:[1,68]},t(E,[2,85]),t(E,[2,86]),{62:69,65:D,66:_,67:O,68:M,69:P,70:B,71:F},{62:77,65:D,66:_,67:O,68:M,69:P,70:B,71:F},{30:78,33:62,75:R,89:k,90:A},{73:79,75:G,76:$,78:81,79:82,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee},t(Z,[2,60]),t(Z,[2,62]),{73:93,75:G,76:$,78:81,79:82,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee},{30:94,33:62,75:R,76:$,89:k,90:A},{5:[1,95]},{30:96,33:62,75:R,89:k,90:A},{5:[1,97]},{30:98,33:62,75:R,89:k,90:A},{63:[1,99]},t(K,[2,50]),t(K,[2,51]),t(K,[2,52]),t(K,[2,53]),t(K,[2,54]),t(K,[2,55]),t(K,[2,56]),{64:[1,100]},t(C,[2,59],{76:$}),t(C,[2,64],{76:ae}),{33:103,75:[1,102],89:k,90:A},t(Q,[2,65],{79:104,75:G,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee}),t(de,[2,67]),t(de,[2,69]),t(de,[2,70]),t(de,[2,71]),t(de,[2,72]),t(de,[2,73]),t(de,[2,74]),t(de,[2,75]),t(de,[2,76]),t(de,[2,77]),t(de,[2,78]),t(C,[2,57],{76:ae}),t(C,[2,58],{76:$}),{5:ne,28:105,31:Te,34:q,36:Ve,38:pe,40:Be},{27:[1,112],76:$},{5:Ye,40:He,56:113,57:Le,59:Ie},{27:[1,118],76:$},{33:119,89:k,90:A},{33:120,89:k,90:A},{75:G,78:121,79:82,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee},t(Z,[2,61]),t(Z,[2,63]),t(de,[2,68]),t(C,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:ne,28:126,31:Te,34:q,36:Ve,38:pe,40:Be},t(C,[2,28]),{5:[1,127]},t(C,[2,42]),{32:[1,128]},{32:[1,129]},{5:Ye,40:He,56:130,57:Le,59:Ie},t(C,[2,47]),{5:[1,131]},t(C,[2,48]),t(C,[2,49]),t(Q,[2,66],{79:104,75:G,80:U,81:j,82:te,83:Y,84:oe,85:J,86:ue,87:re,88:ee}),{33:132,89:k,90:A},{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(C,[2,27]),{5:ne,28:145,31:Te,34:q,36:Ve,38:pe,40:Be},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},t(C,[2,46]),{5:Ye,40:He,56:152,57:Le,59:Ie},{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(C,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},t(C,[2,43]),{5:ne,28:159,31:Te,34:q,36:Ve,38:pe,40:Be},{5:ne,28:160,31:Te,34:q,36:Ve,38:pe,40:Be},{5:ne,28:161,31:Te,34:q,36:Ve,38:pe,40:Be},{5:ne,28:162,31:Te,34:q,36:Ve,38:pe,40:Be},{5:Ye,40:He,56:163,57:Le,59:Ie},{5:Ye,40:He,56:164,57:Le,59:Ie},t(C,[2,23]),t(C,[2,24]),t(C,[2,25]),t(C,[2,26]),t(C,[2,44]),t(C,[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:o(function(xe,W){if(W.recoverable)this.trace(xe);else{var he=new Error(xe);throw he.hash=W,he}},"parseError"),parse:o(function(xe){var W=this,he=[0],z=[],se=[null],le=[],ke=this.table,ve="",ye=0,Re=0,_e=0,ze=2,Ke=1,xt=le.slice.call(arguments,1),We=Object.create(this.lexer),Oe={yy:{}};for(var et in this.yy)Object.prototype.hasOwnProperty.call(this.yy,et)&&(Oe.yy[et]=this.yy[et]);We.setInput(xe,Oe.yy),Oe.yy.lexer=We,Oe.yy.parser=this,typeof We.yylloc>"u"&&(We.yylloc={});var Ue=We.yylloc;le.push(Ue);var lt=We.options&&We.options.ranges;typeof Oe.yy.parseError=="function"?this.parseError=Oe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Gt(ar){he.length=he.length-2*ar,se.length=se.length-ar,le.length=le.length-ar}o(Gt,"popStack");function vt(){var ar;return ar=z.pop()||We.lex()||Ke,typeof ar!="number"&&(ar instanceof Array&&(z=ar,ar=z.pop()),ar=W.symbols_[ar]||ar),ar}o(vt,"lex");for(var Lt,dt,nt,bt,wt,yt,ft={},Ur,_t,bn,Br;;){if(nt=he[he.length-1],this.defaultActions[nt]?bt=this.defaultActions[nt]:((Lt===null||typeof Lt>"u")&&(Lt=vt()),bt=ke[nt]&&ke[nt][Lt]),typeof bt>"u"||!bt.length||!bt[0]){var cr="";Br=[];for(Ur in ke[nt])this.terminals_[Ur]&&Ur>ze&&Br.push("'"+this.terminals_[Ur]+"'");We.showPosition?cr="Parse error on line "+(ye+1)+`: -`+We.showPosition()+` -Expecting `+Br.join(", ")+", got '"+(this.terminals_[Lt]||Lt)+"'":cr="Parse error on line "+(ye+1)+": Unexpected "+(Lt==Ke?"end of input":"'"+(this.terminals_[Lt]||Lt)+"'"),this.parseError(cr,{text:We.match,token:this.terminals_[Lt]||Lt,line:We.yylineno,loc:Ue,expected:Br})}if(bt[0]instanceof Array&&bt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+nt+", token: "+Lt);switch(bt[0]){case 1:he.push(Lt),se.push(We.yytext),le.push(We.yylloc),he.push(bt[1]),Lt=null,dt?(Lt=dt,dt=null):(Re=We.yyleng,ve=We.yytext,ye=We.yylineno,Ue=We.yylloc,_e>0&&_e--);break;case 2:if(_t=this.productions_[bt[1]][1],ft.$=se[se.length-_t],ft._$={first_line:le[le.length-(_t||1)].first_line,last_line:le[le.length-1].last_line,first_column:le[le.length-(_t||1)].first_column,last_column:le[le.length-1].last_column},lt&&(ft._$.range=[le[le.length-(_t||1)].range[0],le[le.length-1].range[1]]),yt=this.performAction.apply(ft,[ve,Re,ye,Oe.yy,bt[1],se,le].concat(xt)),typeof yt<"u")return yt;_t&&(he=he.slice(0,-1*_t*2),se=se.slice(0,-1*_t),le=le.slice(0,-1*_t)),he.push(this.productions_[bt[1]][0]),se.push(ft.$),le.push(ft._$),bn=ke[he[he.length-2]][he[he.length-1]],he.push(bn);break;case 3:return!0}}return!0},"parse")},Ce=(function(){var fe={EOF:1,parseError:o(function(W,he){if(this.yy.parser)this.yy.parser.parseError(W,he);else throw new Error(W)},"parseError"),setInput:o(function(xe,W){return this.yy=W||this.yy||{},this._input=xe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var xe=this._input[0];this.yytext+=xe,this.yyleng++,this.offset++,this.match+=xe,this.matched+=xe;var W=xe.match(/(?:\r\n?|\n).*/g);return W?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),xe},"input"),unput:o(function(xe){var W=xe.length,he=xe.split(/(?:\r\n?|\n)/g);this._input=xe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-W),this.offset-=W;var z=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),he.length-1&&(this.yylineno-=he.length-1);var se=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:he?(he.length===z.length?this.yylloc.first_column:0)+z[z.length-he.length].length-he[0].length:this.yylloc.first_column-W},this.options.ranges&&(this.yylloc.range=[se[0],se[0]+this.yyleng-W]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(xe){this.unput(this.match.slice(xe))},"less"),pastInput:o(function(){var xe=this.matched.substr(0,this.matched.length-this.match.length);return(xe.length>20?"...":"")+xe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var xe=this.match;return xe.length<20&&(xe+=this._input.substr(0,20-xe.length)),(xe.substr(0,20)+(xe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var xe=this.pastInput(),W=new Array(xe.length+1).join("-");return xe+this.upcomingInput()+` -`+W+"^"},"showPosition"),test_match:o(function(xe,W){var he,z,se;if(this.options.backtrack_lexer&&(se={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(se.yylloc.range=this.yylloc.range.slice(0))),z=xe[0].match(/(?:\r\n?|\n).*/g),z&&(this.yylineno+=z.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:z?z[z.length-1].length-z[z.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+xe[0].length},this.yytext+=xe[0],this.match+=xe[0],this.matches=xe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(xe[0].length),this.matched+=xe[0],he=this.performAction.call(this,this.yy,this,W,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),he)return he;if(this._backtrack){for(var le in se)this[le]=se[le];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var xe,W,he,z;this._more||(this.yytext="",this.match="");for(var se=this._currentRules(),le=0;leW[0].length)){if(W=he,z=le,this.options.backtrack_lexer){if(xe=this.test_match(he,se[le]),xe!==!1)return xe;if(this._backtrack){W=!1;continue}else return!1}else if(!this.options.flex)break}return W?(xe=this.test_match(W,se[z]),xe!==!1?xe:!1):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:o(function(){var W=this.next();return W||this.lex()},"lex"),begin:o(function(W){this.conditionStack.push(W)},"begin"),popState:o(function(){var W=this.conditionStack.length-1;return W>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(W){return W=this.conditionStack.length-1-Math.abs(W||0),W>=0?this.conditionStack[W]:"INITIAL"},"topState"),pushState:o(function(W){this.begin(W)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(W,he,z,se){var le=se;switch(z){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return he.yytext=he.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/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}}};return fe})();Ne.lexer=Ce;function Fe(){this.yy={}}return o(Fe,"Parser"),Fe.prototype=Ne,Ne.Parser=Fe,new Fe})();QF.parser=QF;kye=QF});var Z6,Sye=N(()=>{"use strict";Xt();pt();ci();Z6=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=Rr;this.getAccTitle=Mr;this.setAccDescription=Ir;this.getAccDescription=Or;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getConfig=o(()=>ge().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{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}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(e,r){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=e)}setNewReqText(e){this.latestRequirement!==void 0&&(this.latestRequirement.text=e)}setNewReqRisk(e){this.latestRequirement!==void 0&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),X.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){this.latestElement!==void 0&&(this.latestElement.type=e)}setNewElementDocRef(e){this.latestElement!==void 0&&(this.latestElement.docRef=e)}addRelationship(e,r,n){this.relations.push({type:e,src:r,dst:n})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,Sr()}setCssStyle(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(!r||!i)return;for(let a of r)a.includes(",")?i.cssStyles.push(...a.split(",")):i.cssStyles.push(a)}}setClass(e,r){for(let n of e){let i=this.requirements.get(n)??this.elements.get(n);if(i)for(let a of r){i.classes.push(a);let s=this.classes.get(a)?.styles;s&&i.cssStyles.push(...s)}}}defineClass(e,r){for(let n of e){let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let e=ge(),r=[],n=[];for(let i of this.requirements.values()){let a=i;a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.shape="requirementBox",a.look=e.look,r.push(a)}for(let i of this.elements.values()){let a=i;a.shape="requirementBox",a.look=e.look,a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),r.push(a)}for(let i of this.relations){let a=0,s=i.type===this.Relationships.CONTAINS,l={id:`${i.src}-${i.dst}-${a}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeStart:s?"requirement_contains":"",arrowTypeEnd:s?"":"requirement_arrow",look:e.look};n.push(l),a++}return{nodes:r,edges:n,other:{},config:e,direction:this.getDirection()}}}});var VZe,Cye,Aye=N(()=>{"use strict";VZe=o(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"),Cye=VZe});var ZF={};dr(ZF,{draw:()=>UZe});var UZe,_ye=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();UZe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing requirement diagram (unified)",e);let{securityLevel:i,state:a,layout:s}=ge(),l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=$c(s),l.nodeSpacing=a?.nodeSpacing??50,l.rankSpacing=a?.rankSpacing??50,l.markers=["requirement_contains","requirement_arrow"],l.diagramId=e,await Qo(l,u);let h=8;qt.insertTitle(u,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,h,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var Dye={};dr(Dye,{diagram:()=>HZe});var HZe,Lye=N(()=>{"use strict";Eye();Sye();Aye();_ye();HZe={parser:kye,get db(){return new Z6},renderer:ZF,styles:Cye}});var JF,Mye,Iye=N(()=>{"use strict";JF=(function(){var t=o(function(ee,Z,K,ae){for(K=K||{},ae=ee.length;ae--;K[ee[ae]]=Z);return K},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,13],u=[1,14],h=[1,16],f=[1,17],d=[1,18],p=[1,24],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],T=[1,31],S=[1,32],w=[1,33],k=[1,34],A=[1,35],C=[1,36],R=[1,37],I=[1,38],L=[1,39],E=[1,41],D=[1,42],_=[1,43],O=[1,44],M=[1,45],P=[1,46],B=[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],G=[4,5,16,50,52,53],$=[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],U=[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],j=[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],te=[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],Y=[69,70,71],oe=[1,127],J={trace:o(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:o(function(Z,K,ae,Q,de,ne,Te){var q=ne.length-1;switch(de){case 3:return Q.apply(ne[q]),ne[q];break;case 4:case 9:this.$=[];break;case 5:case 10:ne[q-1].push(ne[q]),this.$=ne[q-1];break;case 6:case 7:case 11:case 12:this.$=ne[q];break;case 8:case 13:this.$=[];break;case 15:ne[q].type="createParticipant",this.$=ne[q];break;case 16:ne[q-1].unshift({type:"boxStart",boxData:Q.parseBoxData(ne[q-2])}),ne[q-1].push({type:"boxEnd",boxText:ne[q-2]}),this.$=ne[q-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(ne[q-2]),sequenceIndexStep:Number(ne[q-1]),sequenceVisible:!0,signalType:Q.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(ne[q-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Q.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Q.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Q.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:Q.LINETYPE.ACTIVE_START,actor:ne[q-1].actor};break;case 23:this.$={type:"activeEnd",signalType:Q.LINETYPE.ACTIVE_END,actor:ne[q-1].actor};break;case 29:Q.setDiagramTitle(ne[q].substring(6)),this.$=ne[q].substring(6);break;case 30:Q.setDiagramTitle(ne[q].substring(7)),this.$=ne[q].substring(7);break;case 31:this.$=ne[q].trim(),Q.setAccTitle(this.$);break;case 32:case 33:this.$=ne[q].trim(),Q.setAccDescription(this.$);break;case 34:ne[q-1].unshift({type:"loopStart",loopText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.LOOP_START}),ne[q-1].push({type:"loopEnd",loopText:ne[q-2],signalType:Q.LINETYPE.LOOP_END}),this.$=ne[q-1];break;case 35:ne[q-1].unshift({type:"rectStart",color:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.RECT_START}),ne[q-1].push({type:"rectEnd",color:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.RECT_END}),this.$=ne[q-1];break;case 36:ne[q-1].unshift({type:"optStart",optText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.OPT_START}),ne[q-1].push({type:"optEnd",optText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.OPT_END}),this.$=ne[q-1];break;case 37:ne[q-1].unshift({type:"altStart",altText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.ALT_START}),ne[q-1].push({type:"altEnd",signalType:Q.LINETYPE.ALT_END}),this.$=ne[q-1];break;case 38:ne[q-1].unshift({type:"parStart",parText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.PAR_START}),ne[q-1].push({type:"parEnd",signalType:Q.LINETYPE.PAR_END}),this.$=ne[q-1];break;case 39:ne[q-1].unshift({type:"parStart",parText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.PAR_OVER_START}),ne[q-1].push({type:"parEnd",signalType:Q.LINETYPE.PAR_END}),this.$=ne[q-1];break;case 40:ne[q-1].unshift({type:"criticalStart",criticalText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.CRITICAL_START}),ne[q-1].push({type:"criticalEnd",signalType:Q.LINETYPE.CRITICAL_END}),this.$=ne[q-1];break;case 41:ne[q-1].unshift({type:"breakStart",breakText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.BREAK_START}),ne[q-1].push({type:"breakEnd",optText:Q.parseMessage(ne[q-2]),signalType:Q.LINETYPE.BREAK_END}),this.$=ne[q-1];break;case 43:this.$=ne[q-3].concat([{type:"option",optionText:Q.parseMessage(ne[q-1]),signalType:Q.LINETYPE.CRITICAL_OPTION},ne[q]]);break;case 45:this.$=ne[q-3].concat([{type:"and",parText:Q.parseMessage(ne[q-1]),signalType:Q.LINETYPE.PAR_AND},ne[q]]);break;case 47:this.$=ne[q-3].concat([{type:"else",altText:Q.parseMessage(ne[q-1]),signalType:Q.LINETYPE.ALT_ELSE},ne[q]]);break;case 48:ne[q-3].draw="participant",ne[q-3].type="addParticipant",ne[q-3].description=Q.parseMessage(ne[q-1]),this.$=ne[q-3];break;case 49:ne[q-1].draw="participant",ne[q-1].type="addParticipant",this.$=ne[q-1];break;case 50:ne[q-3].draw="actor",ne[q-3].type="addParticipant",ne[q-3].description=Q.parseMessage(ne[q-1]),this.$=ne[q-3];break;case 51:ne[q-1].draw="actor",ne[q-1].type="addParticipant",this.$=ne[q-1];break;case 52:ne[q-1].type="destroyParticipant",this.$=ne[q-1];break;case 53:ne[q-1].draw="participant",ne[q-1].type="addParticipant",this.$=ne[q-1];break;case 54:this.$=[ne[q-1],{type:"addNote",placement:ne[q-2],actor:ne[q-1].actor,text:ne[q]}];break;case 55:ne[q-2]=[].concat(ne[q-1],ne[q-1]).slice(0,2),ne[q-2][0]=ne[q-2][0].actor,ne[q-2][1]=ne[q-2][1].actor,this.$=[ne[q-1],{type:"addNote",placement:Q.PLACEMENT.OVER,actor:ne[q-2].slice(0,2),text:ne[q]}];break;case 56:this.$=[ne[q-1],{type:"addLinks",actor:ne[q-1].actor,text:ne[q]}];break;case 57:this.$=[ne[q-1],{type:"addALink",actor:ne[q-1].actor,text:ne[q]}];break;case 58:this.$=[ne[q-1],{type:"addProperties",actor:ne[q-1].actor,text:ne[q]}];break;case 59:this.$=[ne[q-1],{type:"addDetails",actor:ne[q-1].actor,text:ne[q]}];break;case 62:this.$=[ne[q-2],ne[q]];break;case 63:this.$=ne[q];break;case 64:this.$=Q.PLACEMENT.LEFTOF;break;case 65:this.$=Q.PLACEMENT.RIGHTOF;break;case 66:this.$=[ne[q-4],ne[q-1],{type:"addMessage",from:ne[q-4].actor,to:ne[q-1].actor,signalType:ne[q-3],msg:ne[q],activate:!0},{type:"activeStart",signalType:Q.LINETYPE.ACTIVE_START,actor:ne[q-1].actor}];break;case 67:this.$=[ne[q-4],ne[q-1],{type:"addMessage",from:ne[q-4].actor,to:ne[q-1].actor,signalType:ne[q-3],msg:ne[q]},{type:"activeEnd",signalType:Q.LINETYPE.ACTIVE_END,actor:ne[q-4].actor}];break;case 68:this.$=[ne[q-3],ne[q-1],{type:"addMessage",from:ne[q-3].actor,to:ne[q-1].actor,signalType:ne[q-2],msg:ne[q]}];break;case 69:this.$={type:"addParticipant",actor:ne[q-1],config:ne[q]};break;case 70:this.$=ne[q-1].trim();break;case 71:this.$={type:"addParticipant",actor:ne[q]};break;case 72:this.$=Q.LINETYPE.SOLID_OPEN;break;case 73:this.$=Q.LINETYPE.DOTTED_OPEN;break;case 74:this.$=Q.LINETYPE.SOLID;break;case 75:this.$=Q.LINETYPE.BIDIRECTIONAL_SOLID;break;case 76:this.$=Q.LINETYPE.DOTTED;break;case 77:this.$=Q.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 78:this.$=Q.LINETYPE.SOLID_CROSS;break;case 79:this.$=Q.LINETYPE.DOTTED_CROSS;break;case 80:this.$=Q.LINETYPE.SOLID_POINT;break;case 81:this.$=Q.LINETYPE.DOTTED_POINT;break;case 82:this.$=Q.parseMessage(ne[q].trim().substring(1));break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},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],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},t(B,[2,5]),{9:47,12:12,13:l,14:u,17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},t(B,[2,7]),t(B,[2,8]),t(B,[2,14]),{12:48,50:R,52:I,53:L},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,71:P},{22:55,71:P},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(B,[2,29]),t(B,[2,30]),{32:[1,61]},{34:[1,62]},t(B,[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:P},{22:75,71:P},{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:P},{22:92,71:P},{22:93,71:P},{22:94,71:P},t([5,51,65,76,77,78,79,80,81,82,83,84,85,86],F),t(B,[2,6]),t(B,[2,15]),t(G,[2,9],{10:95}),t(B,[2,17]),{5:[1,97],19:[1,96]},{5:[1,98]},t(B,[2,21]),{5:[1,99]},{5:[1,100]},t(B,[2,24]),t(B,[2,25]),t(B,[2,26]),t(B,[2,27]),t(B,[2,28]),t(B,[2,31]),t(B,[2,32]),t($,i,{7:101}),t($,i,{7:102}),t($,i,{7:103}),t(U,i,{40:104,7:105}),t(j,i,{42:106,7:107}),t(j,i,{7:107,42:108}),t(te,i,{45:109,7:110}),t($,i,{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:P},t(Y,[2,72]),t(Y,[2,73]),t(Y,[2,74]),t(Y,[2,75]),t(Y,[2,76]),t(Y,[2,77]),t(Y,[2,78]),t(Y,[2,79]),t(Y,[2,80]),t(Y,[2,81]),{22:123,71:P},{22:125,59:124,71:P},{71:[2,64]},{71:[2,65]},{57:126,86:oe},{57:128,86:oe},{57:129,86:oe},{57:130,86:oe},{4:[1,133],5:[1,135],11:132,12:134,16:[1,131],50:R,52:I,53:L},{5:[1,136]},t(B,[2,19]),t(B,[2,20]),t(B,[2,22]),t(B,[2,23]),{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,137],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,138],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,139],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{16:[1,140]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,46],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,49:[1,141],50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{16:[1,142]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,44],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,48:[1,143],50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{16:[1,144]},{16:[1,145]},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[2,42],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,47:[1,146],50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{4:a,5:s,8:8,9:10,12:12,13:l,14:u,16:[1,147],17:15,18:h,21:f,22:40,23:d,24:19,25:20,26:21,27:22,28:23,29:p,30:m,31:g,33:y,35:v,36:x,37:b,38:T,39:S,41:w,43:k,44:A,46:C,50:R,52:I,53:L,55:E,60:D,61:_,62:O,63:M,71:P},{15:[1,148]},t(B,[2,49]),t(B,[2,53]),{5:[2,69]},{74:[1,149]},{15:[1,150]},t(B,[2,51]),t(B,[2,52]),{22:151,71:P},{22:152,71:P},{57:153,86:oe},{57:154,86:oe},{57:155,86:oe},{65:[1,156],86:[2,63]},{5:[2,56]},{5:[2,82]},{5:[2,57]},{5:[2,58]},{5:[2,59]},t(B,[2,16]),t(G,[2,10]),{12:157,50:R,52:I,53:L},t(G,[2,12]),t(G,[2,13]),t(B,[2,18]),t(B,[2,34]),t(B,[2,35]),t(B,[2,36]),t(B,[2,37]),{15:[1,158]},t(B,[2,38]),{15:[1,159]},t(B,[2,39]),t(B,[2,40]),{15:[1,160]},t(B,[2,41]),{5:[1,161]},{75:[1,162]},{5:[1,163]},{57:164,86:oe},{57:165,86:oe},{5:[2,68]},{5:[2,54]},{5:[2,55]},{22:166,71:P},t(G,[2,11]),t(U,i,{7:105,40:167}),t(j,i,{7:107,42:168}),t(te,i,{7:110,45:169}),t(B,[2,48]),{5:[2,70]},t(B,[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:o(function(Z,K){if(K.recoverable)this.trace(Z);else{var ae=new Error(Z);throw ae.hash=K,ae}},"parseError"),parse:o(function(Z){var K=this,ae=[0],Q=[],de=[null],ne=[],Te=this.table,q="",Ve=0,pe=0,Be=0,Ye=2,He=1,Le=ne.slice.call(arguments,1),Ie=Object.create(this.lexer),Ne={yy:{}};for(var Ce in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ce)&&(Ne.yy[Ce]=this.yy[Ce]);Ie.setInput(Z,Ne.yy),Ne.yy.lexer=Ie,Ne.yy.parser=this,typeof Ie.yylloc>"u"&&(Ie.yylloc={});var Fe=Ie.yylloc;ne.push(Fe);var fe=Ie.options&&Ie.options.ranges;typeof Ne.yy.parseError=="function"?this.parseError=Ne.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xe(We){ae.length=ae.length-2*We,de.length=de.length-We,ne.length=ne.length-We}o(xe,"popStack");function W(){var We;return We=Q.pop()||Ie.lex()||He,typeof We!="number"&&(We instanceof Array&&(Q=We,We=Q.pop()),We=K.symbols_[We]||We),We}o(W,"lex");for(var he,z,se,le,ke,ve,ye={},Re,_e,ze,Ke;;){if(se=ae[ae.length-1],this.defaultActions[se]?le=this.defaultActions[se]:((he===null||typeof he>"u")&&(he=W()),le=Te[se]&&Te[se][he]),typeof le>"u"||!le.length||!le[0]){var xt="";Ke=[];for(Re in Te[se])this.terminals_[Re]&&Re>Ye&&Ke.push("'"+this.terminals_[Re]+"'");Ie.showPosition?xt="Parse error on line "+(Ve+1)+`: -`+Ie.showPosition()+` -Expecting `+Ke.join(", ")+", got '"+(this.terminals_[he]||he)+"'":xt="Parse error on line "+(Ve+1)+": Unexpected "+(he==He?"end of input":"'"+(this.terminals_[he]||he)+"'"),this.parseError(xt,{text:Ie.match,token:this.terminals_[he]||he,line:Ie.yylineno,loc:Fe,expected:Ke})}if(le[0]instanceof Array&&le.length>1)throw new Error("Parse Error: multiple actions possible at state: "+se+", token: "+he);switch(le[0]){case 1:ae.push(he),de.push(Ie.yytext),ne.push(Ie.yylloc),ae.push(le[1]),he=null,z?(he=z,z=null):(pe=Ie.yyleng,q=Ie.yytext,Ve=Ie.yylineno,Fe=Ie.yylloc,Be>0&&Be--);break;case 2:if(_e=this.productions_[le[1]][1],ye.$=de[de.length-_e],ye._$={first_line:ne[ne.length-(_e||1)].first_line,last_line:ne[ne.length-1].last_line,first_column:ne[ne.length-(_e||1)].first_column,last_column:ne[ne.length-1].last_column},fe&&(ye._$.range=[ne[ne.length-(_e||1)].range[0],ne[ne.length-1].range[1]]),ve=this.performAction.apply(ye,[q,pe,Ve,Ne.yy,le[1],de,ne].concat(Le)),typeof ve<"u")return ve;_e&&(ae=ae.slice(0,-1*_e*2),de=de.slice(0,-1*_e),ne=ne.slice(0,-1*_e)),ae.push(this.productions_[le[1]][0]),de.push(ye.$),ne.push(ye._$),ze=Te[ae[ae.length-2]][ae[ae.length-1]],ae.push(ze);break;case 3:return!0}}return!0},"parse")},ue=(function(){var ee={EOF:1,parseError:o(function(K,ae){if(this.yy.parser)this.yy.parser.parseError(K,ae);else throw new Error(K)},"parseError"),setInput:o(function(Z,K){return this.yy=K||this.yy||{},this._input=Z,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Z=this._input[0];this.yytext+=Z,this.yyleng++,this.offset++,this.match+=Z,this.matched+=Z;var K=Z.match(/(?:\r\n?|\n).*/g);return K?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Z},"input"),unput:o(function(Z){var K=Z.length,ae=Z.split(/(?:\r\n?|\n)/g);this._input=Z+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-K),this.offset-=K;var Q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ae.length-1&&(this.yylineno-=ae.length-1);var de=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ae?(ae.length===Q.length?this.yylloc.first_column:0)+Q[Q.length-ae.length].length-ae[0].length:this.yylloc.first_column-K},this.options.ranges&&(this.yylloc.range=[de[0],de[0]+this.yyleng-K]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Z){this.unput(this.match.slice(Z))},"less"),pastInput:o(function(){var Z=this.matched.substr(0,this.matched.length-this.match.length);return(Z.length>20?"...":"")+Z.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Z=this.match;return Z.length<20&&(Z+=this._input.substr(0,20-Z.length)),(Z.substr(0,20)+(Z.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Z=this.pastInput(),K=new Array(Z.length+1).join("-");return Z+this.upcomingInput()+` -`+K+"^"},"showPosition"),test_match:o(function(Z,K){var ae,Q,de;if(this.options.backtrack_lexer&&(de={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(de.yylloc.range=this.yylloc.range.slice(0))),Q=Z[0].match(/(?:\r\n?|\n).*/g),Q&&(this.yylineno+=Q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Q?Q[Q.length-1].length-Q[Q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Z[0].length},this.yytext+=Z[0],this.match+=Z[0],this.matches=Z,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Z[0].length),this.matched+=Z[0],ae=this.performAction.call(this,this.yy,this,K,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ae)return ae;if(this._backtrack){for(var ne in de)this[ne]=de[ne];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Z,K,ae,Q;this._more||(this.yytext="",this.match="");for(var de=this._currentRules(),ne=0;neK[0].length)){if(K=ae,Q=ne,this.options.backtrack_lexer){if(Z=this.test_match(ae,de[ne]),Z!==!1)return Z;if(this._backtrack){K=!1;continue}else return!1}else if(!this.options.flex)break}return K?(Z=this.test_match(K,de[Q]),Z!==!1?Z:!1):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:o(function(){var K=this.next();return K||this.lex()},"lex"),begin:o(function(K){this.conditionStack.push(K)},"begin"),popState:o(function(){var K=this.conditionStack.length-1;return K>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(K){return K=this.conditionStack.length-1-Math.abs(K||0),K>=0?this.conditionStack[K]:"INITIAL"},"topState"),pushState:o(function(K){this.begin(K)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(K,ae,Q,de){var ne=de;switch(Q){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("CONFIG"),73;break;case 8:return 74;case 9:return this.popState(),this.popState(),75;break;case 10:return ae.yytext=ae.yytext.trim(),71;break;case 11:return ae.yytext=ae.yytext.trim(),this.begin("ALIAS"),71;break;case 12:return this.begin("LINE"),14;break;case 13:return this.begin("ID"),50;break;case 14:return this.begin("ID"),52;break;case 15:return 13;case 16:return this.begin("ID"),53;break;case 17:return ae.yytext=ae.yytext.trim(),this.begin("ALIAS"),71;break;case 18:return this.popState(),this.popState(),this.begin("LINE"),51;break;case 19:return this.popState(),this.popState(),5;break;case 20:return this.begin("LINE"),36;break;case 21:return this.begin("LINE"),37;break;case 22:return this.begin("LINE"),38;break;case 23:return this.begin("LINE"),39;break;case 24:return this.begin("LINE"),49;break;case 25:return this.begin("LINE"),41;break;case 26:return this.begin("LINE"),43;break;case 27:return this.begin("LINE"),48;break;case 28:return this.begin("LINE"),44;break;case 29:return this.begin("LINE"),47;break;case 30:return this.begin("LINE"),46;break;case 31:return this.popState(),15;break;case 32:return 16;case 33:return 66;case 34:return 67;case 35:return 60;case 36:return 61;case 37:return 62;case 38:return 63;case 39:return 58;case 40:return 55;case 41:return this.begin("ID"),21;break;case 42:return this.begin("ID"),23;break;case 43:return 29;case 44:return 30;case 45:return this.begin("acc_title"),31;break;case 46:return this.popState(),"acc_title_value";break;case 47:return this.begin("acc_descr"),33;break;case 48:return this.popState(),"acc_descr_value";break;case 49:this.begin("acc_descr_multiline");break;case 50:this.popState();break;case 51:return"acc_descr_multiline_value";case 52:return 6;case 53:return 18;case 54:return 20;case 55:return 65;case 56:return 5;case 57:return ae.yytext=ae.yytext.trim(),71;break;case 58:return 78;case 59:return 79;case 60:return 80;case 61:return 81;case 62:return 76;case 63:return 77;case 64:return 82;case 65:return 83;case 66:return 84;case 67:return 85;case 68:return 86;case 69:return 86;case 70:return 69;case 71:return 70;case 72:return 5;case 73:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\})/i,/^(?:[^\<->\->:\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}}};return ee})();J.lexer=ue;function re(){this.yy={}}return o(re,"Parser"),re.prototype=J,J.Parser=re,new re})();JF.parser=JF;Mye=JF});var XZe,jZe,KZe,b4,J6,e$=N(()=>{"use strict";Xt();w2();pt();fF();gr();ci();XZe={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},jZe={FILLED:0,OPEN:1},KZe={LEFTOF:0,RIGHTOF:1,OVER:2},b4={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},J6=class{constructor(){this.state=new J1(()=>({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=Rr;this.setAccDescription=Ir;this.setDiagramTitle=$r;this.getAccTitle=Mr;this.getAccDescription=Or;this.getDiagramTitle=Pr;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(ge().wrap),this.LINETYPE=XZe,this.ARROWTYPE=jZe,this.PLACEMENT=KZe}static{o(this,"SequenceDB")}addBox(e){this.state.records.boxes.push({name:e.text,wrap:e.wrap??this.autoWrap(),fill:e.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(e,r,n,i,a){let s=this.state.records.currentBox,l;if(a!==void 0){let h;a.includes(` -`)?h=a+` -`:h=`{ -`+a+` -}`,l=Kh(h,{schema:jh})}i=l?.type??i;let u=this.state.records.actors.get(e);if(u){if(this.state.records.currentBox&&u.box&&this.state.records.currentBox!==u.box)throw new Error(`A same participant should only be defined in one Box: ${u.name} can't be in '${u.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(s=u.box?u.box:this.state.records.currentBox,u.box=s,u&&r===u.name&&n==null)return}if(n?.text==null&&(n={text:r,type:i}),(i==null||n.text==null)&&(n={text:r,type:i}),this.state.records.actors.set(e,{box:s,name:r,description:n.text,wrap:n.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:i??"participant"}),this.state.records.prevActor){let h=this.state.records.actors.get(this.state.records.prevActor);h&&(h.nextActor=e)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(e),this.state.records.prevActor=e}activationCount(e){let r,n=0;if(!e)return 0;for(r=0;r>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},l}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:e,to:r,message:n?.text??"",wrap:n?.wrap??this.autoWrap(),type:i,activate:a}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(e=>e.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(e){return this.state.records.actors.get(e)}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(e){this.state.records.wrapEnabled=e}extractWrap(e){if(e===void 0)return{};e=e.trim();let r=/^:?wrap:/.exec(e)!==null?!0:/^:?nowrap:/.exec(e)!==null?!1:void 0;return{cleanedText:(r===void 0?e:e.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:ge().sequence?.wrap??!1}clear(){this.state.reset(),Sr()}parseMessage(e){let r=e.trim(),{wrap:n,cleanedText:i}=this.extractWrap(r),a={text:i,wrap:n};return X.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(e){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(e),n=r?.[1]?r[1].trim():"transparent",i=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",n)||(n="transparent",i=e.trim());else{let l=new Option().style;l.color=n,l.color!==n&&(n="transparent",i=e.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(i);return{text:s?sr(s,ge()):void 0,color:n,wrap:a}}addNote(e,r,n){let i={actor:e,placement:r,message:n.text,wrap:n.wrap??this.autoWrap()},a=[].concat(e,e);this.state.records.notes.push(i),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:n.text,wrap:n.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(e,r){let n=this.getActor(e);try{let i=sr(r.text,ge());i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let a=JSON.parse(i);this.insertLinks(n,a)}catch(i){X.error("error while parsing actor link text",i)}}addALink(e,r){let n=this.getActor(e);try{let i={},a=sr(r.text,ge()),s=a.indexOf("@");a=a.replace(/=/g,"="),a=a.replace(/&/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();i[l]=u,this.insertLinks(n,i)}catch(i){X.error("error while parsing actor link text",i)}}insertLinks(e,r){if(e.links==null)e.links=r;else for(let n in r)e.links[n]=r[n]}addProperties(e,r){let n=this.getActor(e);try{let i=sr(r.text,ge()),a=JSON.parse(i);this.insertProperties(n,a)}catch(i){X.error("error while parsing actor properties text",i)}}insertProperties(e,r){if(e.properties==null)e.properties=r;else for(let n in r)e.properties[n]=r[n]}boxEnd(){this.state.records.currentBox=void 0}addDetails(e,r){let n=this.getActor(e),i=document.getElementById(r.text);try{let a=i.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(n,s.properties),s.links&&this.insertLinks(n,s.links)}catch(a){X.error("error while parsing actor details text",a)}}getActorProperty(e,r){if(e?.properties!==void 0)return e.properties[r]}apply(e){if(Array.isArray(e))e.forEach(r=>{this.apply(r)});else switch(e.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:e.sequenceIndex,step:e.sequenceIndexStep,visible:e.sequenceVisible},wrap:!1,type:e.signalType});break;case"addParticipant":this.addActor(e.actor,e.actor,e.description,e.draw,e.config);break;case"createParticipant":if(this.state.records.actors.has(e.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=e.actor,this.addActor(e.actor,e.actor,e.description,e.draw,e.config),this.state.records.createdActors.set(e.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=e.actor,this.state.records.destroyedActors.set(e.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"activeEnd":this.addSignal(e.actor,void 0,void 0,e.signalType);break;case"addNote":this.addNote(e.actor,e.placement,e.text);break;case"addLinks":this.addLinks(e.actor,e.text);break;case"addALink":this.addALink(e.actor,e.text);break;case"addProperties":this.addProperties(e.actor,e.text);break;case"addDetails":this.addDetails(e.actor,e.text);break;case"addMessage":if(this.state.records.lastCreated){if(e.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(e.to!==this.state.records.lastDestroyed&&e.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(e.from,e.to,e.msg,e.signalType,e.activate);break;case"boxStart":this.addBox(e.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,e.loopText,e.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"rectStart":this.addSignal(void 0,void 0,e.color,e.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"optStart":this.addSignal(void 0,void 0,e.optText,e.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"altStart":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"else":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"setAccTitle":Rr(e.text);break;case"parStart":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"and":this.addSignal(void 0,void 0,e.parText,e.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,e.criticalText,e.signalType);break;case"option":this.addSignal(void 0,void 0,e.optionText,e.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break;case"breakStart":this.addSignal(void 0,void 0,e.breakText,e.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break}}getConfig(){return ge().sequence}}});var QZe,Oye,Pye=N(()=>{"use strict";QZe=o(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"),Oye=QZe});var t$,Yf,jf,Kf,eC,Xf,T4,ZZe,tC,w4,o0,Bye,Fr,r$,JZe,eJe,tJe,rJe,nJe,iJe,aJe,sJe,oJe,lJe,cJe,uJe,hJe,Fye,fJe,dJe,pJe,mJe,gJe,yJe,vJe,$ye,xJe,oh,bJe,mi,zye=N(()=>{"use strict";t$=ja(tm(),1);qn();tr();gr();r2();Yf=36,jf="actor-top",Kf="actor-bottom",eC="actor-box",Xf="actor-man",T4=o(function(t,e){return Fd(t,e)},"drawRect"),ZZe=o(function(t,e,r,n,i){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};let a=e.links,s=e.actorCnt,l=e.rectData;var u="none";i&&(u="block !important");let h=t.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var f="";l.class!==void 0&&(f=" "+l.class);let d=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+f),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",d),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,t$.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),bJe(n)(v,g,l.x+10,l.height+m,d,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:d}},"drawPopup"),tC=o(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),w4=o(async function(t,e,r=null){let n=t.append("foreignObject"),i=await kh(e.text,Qt()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),e.class==="noteText"){let l=t.node().firstChild;l.setAttribute("height",s.height+2*e.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let f=l;l=u,u=f}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),e.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),o0=o(function(t,e){let r=0,n=0,i=e.text.split(tt.lineBreakRegex),[a,s]=vc(e.fontSize),l=[],u=0,h=o(()=>e.y,"yfunc");if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":h=o(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(e.y+(r+n+e.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(e.y+(r+n+2*e.textMargin)-e.textMargin),"yfunc");break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)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";break}for(let[f,d]of i.entries()){e.textMargin!==void 0&&e.textMargin===0&&a!==void 0&&(u=f*a);let p=t.append("text");p.attr("x",e.x),p.attr("y",h()),e.anchor!==void 0&&p.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&p.style("font-family",e.fontFamily),s!==void 0&&p.style("font-size",s),e.fontWeight!==void 0&&p.style("font-weight",e.fontWeight),e.fill!==void 0&&p.attr("fill",e.fill),e.class!==void 0&&p.attr("class",e.class),e.dy!==void 0?p.attr("dy",e.dy):u!==0&&p.attr("dy",u);let m=d||BL;if(e.tspan){let g=p.append("tspan");g.attr("x",e.x),e.fill!==void 0&&g.attr("fill",e.fill),g.text(m)}else p.text(m);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),Bye=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=t.append("polygon");return n.attr("points",r(e.x,e.y,e.width,e.height,7)),n.attr("class","labelBox"),e.y=e.y+e.height/2,o0(t,e),n},"drawLabel"),Fr=-1,r$=o((t,e,r,n)=>{t.select&&r.forEach(i=>{let a=e.get(i),s=t.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),JZe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).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),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.rx=3,h.ry=3,h.name=e.name;let d=T4(u,h);if(e.rectData=h,e.properties?.icon){let m=e.properties.icon.trim();m.charAt(0)==="@"?lT(u,h.x+h.width-20,h.y+10,m.substr(1)):oT(u,h.x+h.width-20,h.y+10,m)}oh(r,kn(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${eC}`},r);let p=e.height;if(d.node){let m=d.node().getBBox();e.height=m.height,p=m.height}return p},"drawActorTypeParticipant"),eJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower();var u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).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),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua();var f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.name=e.name;let d=6,p={...h,x:h.x+-d,y:h.y+ +d,class:"actor"},m=T4(u,h);if(T4(u,p),e.rectData=h,e.properties?.icon){let y=e.properties.icon.trim();y.charAt(0)==="@"?lT(u,h.x+h.width-20,h.y+10,y.substr(1)):oT(u,h.x+h.width-20,h.y+10,y)}oh(r,kn(e.description))(e.description,u,h.x-d,h.y+d,h.width,h.height,{class:`actor ${eC}`},r);let g=e.height;if(m.node){let y=m.node().getBBox();e.height=y.height,g=y.height}return g},"drawActorTypeCollections"),tJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,l=t.append("g").lower(),u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).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),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua(),f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.name=e.name;let d=h.height/2,p=d/(2.5+h.height/50),m=u.append("g"),g=u.append("g");if(m.append("path").attr("d",`M ${h.x},${h.y+d} - a ${p},${d} 0 0 0 0,${h.height} - h ${h.width-2*p} - a ${p},${d} 0 0 0 0,-${h.height} - Z - `).attr("class",f),g.append("path").attr("d",`M ${h.x},${h.y+d} - a ${p},${d} 0 0 0 0,${h.height}`).attr("stroke","#666").attr("stroke-width","1px").attr("class",f),m.attr("transform",`translate(${p}, ${-(h.height/2)})`),g.attr("transform",`translate(${h.width-p}, ${-h.height/2})`),e.rectData=h,e.properties?.icon){let x=e.properties.icon.trim(),b=h.x+h.width-20,T=h.y+10;x.charAt(0)==="@"?lT(u,b,T,x.substr(1)):oT(u,b,T,x)}oh(r,kn(e.description))(e.description,u,h.x,h.y,h.width,h.height,{class:`actor ${eC}`},r);let y=e.height,v=m.select("path:last-child");if(v.node()){let x=v.node().getBBox();e.height=x.height,y=x.height}return y},"drawActorTypeQueue"),rJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+75,l=t.append("g").lower();n||(Fr++,l.append("line").attr("id","actor"+Fr).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=Fr);let u=t.append("g"),h=Xf;n?h+=` ${Kf}`:h+=` ${jf}`,u.attr("class",h),u.attr("name",e.name);let f=ua();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor";let d=e.x+e.width/2,p=i+30,m=18;u.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"),u.append("circle").attr("cx",d).attr("cy",p).attr("r",m).attr("fill","#eaeaf7").attr("stroke","#666").attr("stroke-width",1.2),u.append("line").attr("marker-end","url(#filled-head-control)").attr("transform",`translate(${d}, ${p-m})`);let g=u.node().getBBox();return e.height=g.height+2*(r?.sequence?.labelBoxHeight??0),oh(r,kn(e.description))(e.description,u,f.x,f.y+m+(n?5:10),f.width,f.height,{class:`actor ${Xf}`},r),e.height},"drawActorTypeControl"),nJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+75,l=t.append("g").lower(),u=t.append("g"),h=Xf;n?h+=` ${Kf}`:h+=` ${jf}`,u.attr("class",h),u.attr("name",e.name);let f=ua();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor";let d=e.x+e.width/2,p=i+(n?10:25),m=18;u.append("circle").attr("cx",d).attr("cy",p).attr("r",m).attr("width",e.width).attr("height",e.height),u.append("line").attr("x1",d-m).attr("x2",d+m).attr("y1",p+m).attr("y2",p+m).attr("stroke","#333").attr("stroke-width",2);let g=u.node().getBBox();return e.height=g.height+(r?.sequence?.labelBoxHeight??0),n||(Fr++,l.append("line").attr("id","actor"+Fr).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=Fr),oh(r,kn(e.description))(e.description,u,f.x,f.y+(n?(p-i+m-5)/2:(p+m-i)/2),f.width,f.height,{class:`actor ${Xf}`},r),n?u.attr("transform",`translate(0, ${m/2})`):u.attr("transform",`translate(0, ${m/2})`),e.height},"drawActorTypeEntity"),iJe=o(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,l=t.append("g").lower(),u=l;n||(Fr++,Object.keys(e.links||{}).length&&!r.forceMenus&&u.attr("onclick",tC(`actor${Fr}_popup`)).attr("cursor","pointer"),u.append("line").attr("id","actor"+Fr).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),u=l.append("g"),e.actorCnt=Fr,e.links!=null&&u.attr("id","root-"+Fr));let h=ua(),f="actor";e.properties?.class?f=e.properties.class:h.fill="#eaeaea",n?f+=` ${Kf}`:f+=` ${jf}`,h.x=e.x,h.y=i,h.width=e.width,h.height=e.height,h.class=f,h.name=e.name,h.x=e.x,h.y=i;let d=h.width/4,p=h.width/4,m=d/2,g=m/(2.5+d/50),y=u.append("g"),v=` - M ${h.x},${h.y+g} - a ${m},${g} 0 0 0 ${d},0 - a ${m},${g} 0 0 0 -${d},0 - l 0,${p-2*g} - a ${m},${g} 0 0 0 ${d},0 - l 0,-${p-2*g} -`;y.append("path").attr("d",v).attr("fill","#eaeaea").attr("stroke","#000").attr("stroke-width",1).attr("class",f),n?y.attr("transform",`translate(${d*1.5}, ${h.height/4-2*g})`):y.attr("transform",`translate(${d*1.5}, ${(h.height+g)/4})`),e.rectData=h,oh(r,kn(e.description))(e.description,u,h.x,h.y+(n?(h.height+p)/4:(h.height+g)/2),h.width,h.height,{class:`actor ${eC}`},r);let x=y.select("path:last-child");if(x.node()){let b=x.node().getBBox();e.height=b.height+(r.sequence.labelBoxHeight??0)}return e.height},"drawActorTypeDatabase"),aJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=30,u=t.append("g").lower();n||(Fr++,u.append("line").attr("id","actor"+Fr).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=Fr);let h=t.append("g"),f=Xf;n?f+=` ${Kf}`:f+=` ${jf}`,h.attr("class",f),h.attr("name",e.name);let d=ua();d.x=e.x,d.y=i,d.fill="#eaeaea",d.width=e.width,d.height=e.height,d.class="actor",h.append("line").attr("id","actor-man-torso"+Fr).attr("x1",e.x+e.width/2-l*2.5).attr("y1",i+10).attr("x2",e.x+e.width/2-15).attr("y2",i+10),h.append("line").attr("id","actor-man-arms"+Fr).attr("x1",e.x+e.width/2-l*2.5).attr("y1",i+0).attr("x2",e.x+e.width/2-l*2.5).attr("y2",i+20),h.append("circle").attr("cx",e.x+e.width/2).attr("cy",i+10).attr("r",l);let p=h.node().getBBox();return e.height=p.height+(r.sequence.labelBoxHeight??0),oh(r,kn(e.description))(e.description,h,d.x,d.y+(n?l/2-4:l/2+3),d.width,d.height,{class:`actor ${Xf}`},r),n?h.attr("transform",`translate(0,${l/2+7})`):h.attr("transform",`translate(0,${l/2+7})`),e.height},"drawActorTypeBoundary"),sJe=o(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,l=t.append("g").lower();n||(Fr++,l.append("line").attr("id","actor"+Fr).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=Fr);let u=t.append("g"),h=Xf;n?h+=` ${Kf}`:h+=` ${jf}`,u.attr("class",h),u.attr("name",e.name);let f=ua();f.x=e.x,f.y=i,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor",f.rx=3,f.ry=3,u.append("line").attr("id","actor-man-torso"+Fr).attr("x1",a).attr("y1",i+25).attr("x2",a).attr("y2",i+45),u.append("line").attr("id","actor-man-arms"+Fr).attr("x1",a-Yf/2).attr("y1",i+33).attr("x2",a+Yf/2).attr("y2",i+33),u.append("line").attr("x1",a-Yf/2).attr("y1",i+60).attr("x2",a).attr("y2",i+45),u.append("line").attr("x1",a).attr("y1",i+45).attr("x2",a+Yf/2-2).attr("y2",i+60);let d=u.append("circle");d.attr("cx",e.x+e.width/2),d.attr("cy",i+10),d.attr("r",15),d.attr("width",e.width),d.attr("height",e.height);let p=u.node().getBBox();return e.height=p.height,oh(r,kn(e.description))(e.description,u,f.x,f.y+35,f.width,f.height,{class:`actor ${Xf}`},r),e.height},"drawActorTypeActor"),oJe=o(async function(t,e,r,n){switch(e.type){case"actor":return await sJe(t,e,r,n);case"participant":return await JZe(t,e,r,n);case"boundary":return await aJe(t,e,r,n);case"control":return await rJe(t,e,r,n);case"entity":return await nJe(t,e,r,n);case"database":return await iJe(t,e,r,n);case"collections":return await eJe(t,e,r,n);case"queue":return await tJe(t,e,r,n)}},"drawActor"),lJe=o(function(t,e,r){let i=t.append("g");Fye(i,e),e.name&&oh(r)(e.name,i,e.x,e.y+r.boxTextMargin+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},r),i.lower()},"drawBox"),cJe=o(function(t){return t.append("g")},"anchorElement"),uJe=o(function(t,e,r,n,i){let a=ua(),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,T4(s,a)},"drawActivation"),hJe=o(async function(t,e,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:l,messageFontFamily:u,messageFontSize:h,messageFontWeight:f}=n,d=t.append("g"),p=o(function(y,v,x,b){return d.append("line").attr("x1",y).attr("y1",v).attr("x2",x).attr("y2",b).attr("class","loopLine")},"drawLoopLine");p(e.startx,e.starty,e.stopx,e.starty),p(e.stopx,e.starty,e.stopx,e.stopy),p(e.startx,e.stopy,e.stopx,e.stopy),p(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(y){p(e.startx,y.y,e.stopx,y.y).style("stroke-dasharray","3, 3")});let m=t2();m.text=r,m.x=e.startx,m.y=e.starty,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.anchor="middle",m.valign="middle",m.tspan=!1,m.width=l||50,m.height=s||20,m.textMargin=a,m.class="labelText",Bye(d,m),m=$ye(),m.text=e.title,m.x=e.startx+l/2+(e.stopx-e.startx)/2,m.y=e.starty+i+a,m.anchor="middle",m.valign="middle",m.textMargin=a,m.class="loopText",m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=!0;let g=kn(m.text)?await w4(d,m,e):o0(d,m);if(e.sectionTitles!==void 0){for(let[y,v]of Object.entries(e.sectionTitles))if(v.message){m.text=v.message,m.x=e.startx+(e.stopx-e.startx)/2,m.y=e.sections[y].y+i+a,m.class="loopText",m.anchor="middle",m.valign="middle",m.tspan=!1,m.fontFamily=u,m.fontSize=h,m.fontWeight=f,m.wrap=e.wrap,kn(m.text)?(e.starty=e.sections[y].y,await w4(d,m,e)):o0(d,m);let x=Math.round(g.map(b=>(b._groups||b)[0][0].getBBox().height).reduce((b,T)=>b+T));e.sections[y].height+=x-(i+a)}}return e.height=Math.round(e.stopy-e.starty),d},"drawLoop"),Fye=o(function(t,e){sT(t,e)},"drawBackgroundRect"),fJe=o(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"),dJe=o(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"),pJe=o(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"),mJe=o(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"),gJe=o(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"),yJe=o(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"),vJe=o(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"),$ye=o(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"),xJe=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),oh=(function(){function t(a,s,l,u,h,f,d){let p=s.append("text").attr("x",l+h/2).attr("y",u+f/2+5).style("text-anchor","middle").text(a);i(p,d)}o(t,"byText");function e(a,s,l,u,h,f,d,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=vc(m),b=a.split(tt.lineBreakRegex);for(let T=0;T{let s=l0(Me),l=a.actorKeys.reduce((d,p)=>d+=t.get(p).width+(t.get(p).margin||0),0),u=Me.boxMargin*8;l+=u,l-=2*Me.boxTextMargin,a.wrap&&(a.name=qt.wrapLabel(a.name,l-2*Me.wrapPadding,s));let h=qt.calculateTextDimensions(a.name,s);i=tt.getMax(h.height,i);let f=tt.getMax(l,h.width+2*Me.wrapPadding);if(a.margin=Me.boxTextMargin,la.textMaxHeight=i),tt.getMax(n,Me.height)}var Me,ot,TJe,l0,ay,n$,kJe,EJe,i$,Vye,Uye,rC,Gye,CJe,_Je,LJe,RJe,NJe,Hye,qye=N(()=>{"use strict";yr();zye();pt();gr();gr();r2();Xt();v0();tr();Ei();e$();Me={},ot={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(t=>t.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(t){this.boxes.push(t)},"addBox"),addActor:o(function(t){this.actors.push(t)},"addActor"),addLoop:o(function(t){this.loops.push(t)},"addLoop"),addMessage:o(function(t){this.messages.push(t)},"addMessage"),addNote:o(function(t){this.notes.push(t)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(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,Uye(ge())},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let f=i.sequenceItems.length-a+1;i.updateVal(h,"starty",e-f*Me.boxMargin,Math.min),i.updateVal(h,"stopy",n+f*Me.boxMargin,Math.max),i.updateVal(ot.data,"startx",t-f*Me.boxMargin,Math.min),i.updateVal(ot.data,"stopx",r+f*Me.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",t-f*Me.boxMargin,Math.min),i.updateVal(h,"stopx",r+f*Me.boxMargin,Math.max),i.updateVal(ot.data,"starty",e-f*Me.boxMargin,Math.min),i.updateVal(ot.data,"stopy",n+f*Me.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(t,e,r,n){let i=tt.getMin(t,r),a=tt.getMax(t,r),s=tt.getMin(e,n),l=tt.getMax(e,n);this.updateVal(ot.data,"startx",i,Math.min),this.updateVal(ot.data,"starty",s,Math.min),this.updateVal(ot.data,"stopx",a,Math.max),this.updateVal(ot.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(t,e,r){let n=r.get(t.from),i=rC(t.from).length||0,a=n.x+n.width/2+(i-1)*Me.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Me.activationWidth,stopy:void 0,actor:t.from,anchored:mi.anchorElement(e)})},"newActivation"),endActivation:o(function(t){let e=this.activations.map(function(r){return r.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:o(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:o(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(t){let e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ot.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=tt.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},TJe=o(async function(t,e){ot.bumpVerticalPos(Me.boxMargin),e.height=Me.boxMargin,e.starty=ot.getVerticalPos();let r=ua();r.x=e.startx,r.y=e.starty,r.width=e.width||Me.width,r.class="note";let n=t.append("g"),i=mi.drawRect(n,r),a=t2();a.x=e.startx,a.y=e.starty,a.width=r.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Me.noteFontFamily,a.fontSize=Me.noteFontSize,a.fontWeight=Me.noteFontWeight,a.anchor=Me.noteAlign,a.textMargin=Me.noteMargin,a.valign="center";let s=kn(a.text)?await w4(n,a):o0(n,a),l=Math.round(s.map(u=>(u._groups||u)[0][0].getBBox().height).reduce((u,h)=>u+h));i.attr("height",l+2*Me.noteMargin),e.height+=l+2*Me.noteMargin,ot.bumpVerticalPos(l+2*Me.noteMargin),e.stopy=e.starty+l+2*Me.noteMargin,e.stopx=e.startx+r.width,ot.insert(e.startx,e.starty,e.stopx,e.stopy),ot.models.addNote(e)},"drawNote"),l0=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),ay=o(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),n$=o(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");o(wJe,"boundMessage");kJe=o(async function(t,e,r,n){let{startx:i,stopx:a,starty:s,message:l,type:u,sequenceIndex:h,sequenceVisible:f}=e,d=qt.calculateTextDimensions(l,l0(Me)),p=t2();p.x=i,p.y=s+10,p.width=a-i,p.class="messageText",p.dy="1em",p.text=l,p.fontFamily=Me.messageFontFamily,p.fontSize=Me.messageFontSize,p.fontWeight=Me.messageFontWeight,p.anchor=Me.messageAlign,p.valign="center",p.textMargin=Me.wrapPadding,p.tspan=!1,kn(p.text)?await w4(t,p,{startx:i,stopx:a,starty:r}):o0(t,p);let m=d.width,g;i===a?Me.rightAngles?g=t.append("path").attr("d",`M ${i},${r} H ${i+tt.getMax(Me.width/2,m/2)} V ${r+25} H ${i}`):g=t.append("path").attr("d","M "+i+","+r+" C "+(i+60)+","+(r-10)+" "+(i+60)+","+(r+30)+" "+i+","+(r+20)):(g=t.append("line"),g.attr("x1",i),g.attr("y1",r),g.attr("x2",a),g.attr("y2",r)),u===n.db.LINETYPE.DOTTED||u===n.db.LINETYPE.DOTTED_CROSS||u===n.db.LINETYPE.DOTTED_POINT||u===n.db.LINETYPE.DOTTED_OPEN||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED?(g.style("stroke-dasharray","3, 3"),g.attr("class","messageLine1")):g.attr("class","messageLine0");let y="";Me.arrowMarkerAbsolute&&(y=md(!0)),g.attr("stroke-width",2),g.attr("stroke","none"),g.style("fill","none"),(u===n.db.LINETYPE.SOLID||u===n.db.LINETYPE.DOTTED)&&g.attr("marker-end","url("+y+"#arrowhead)"),(u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(g.attr("marker-start","url("+y+"#arrowhead)"),g.attr("marker-end","url("+y+"#arrowhead)")),(u===n.db.LINETYPE.SOLID_POINT||u===n.db.LINETYPE.DOTTED_POINT)&&g.attr("marker-end","url("+y+"#filled-head)"),(u===n.db.LINETYPE.SOLID_CROSS||u===n.db.LINETYPE.DOTTED_CROSS)&&g.attr("marker-end","url("+y+"#crosshead)"),(f||Me.showSequenceNumbers)&&((u===n.db.LINETYPE.BIDIRECTIONAL_SOLID||u===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(ii&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),Uye=o(function(t){Rn(Me,t),t.fontFamily&&(Me.actorFontFamily=Me.noteFontFamily=Me.messageFontFamily=t.fontFamily),t.fontSize&&(Me.actorFontSize=Me.noteFontSize=Me.messageFontSize=t.fontSize),t.fontWeight&&(Me.actorFontWeight=Me.noteFontWeight=Me.messageFontWeight=t.fontWeight)},"setConf"),rC=o(function(t){return ot.activations.filter(function(e){return e.actor===t})},"actorActivations"),Gye=o(function(t,e){let r=e.get(t),n=rC(t),i=n.reduce(function(s,l){return tt.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return tt.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o(ru,"adjustLoopHeightForWrap");o(SJe,"adjustCreatedDestroyedData");CJe=o(async function(t,e,r,n){let{securityLevel:i,sequence:a}=ge();Me=a;let s;i==="sandbox"&&(s=qe("#i"+e));let l=i==="sandbox"?qe(s.nodes()[0].contentDocument.body):qe("body"),u=i==="sandbox"?s.nodes()[0].contentDocument:document;ot.init(),X.debug(n.db);let h=i==="sandbox"?l.select(`[id="${e}"]`):qe(`[id="${e}"]`),f=n.db.getActors(),d=n.db.getCreatedActors(),p=n.db.getDestroyedActors(),m=n.db.getBoxes(),g=n.db.getActorKeys(),y=n.db.getMessages(),v=n.db.getDiagramTitle(),x=n.db.hasAtLeastOneBox(),b=n.db.hasAtLeastOneBoxWithTitle(),T=await AJe(f,y,n);if(Me.height=await DJe(f,T,m),mi.insertComputerIcon(h),mi.insertDatabaseIcon(h),mi.insertClockIcon(h),x&&(ot.bumpVerticalPos(Me.boxMargin),b&&ot.bumpVerticalPos(m[0].textMaxHeight)),Me.hideUnusedParticipants===!0){let B=new Set;y.forEach(F=>{B.add(F.from),B.add(F.to)}),g=g.filter(F=>B.has(F))}EJe(h,f,d,g,0,y,!1);let S=await NJe(y,f,T,n);mi.insertArrowHead(h),mi.insertArrowCrossHead(h),mi.insertArrowFilledHead(h),mi.insertSequenceNumber(h);function w(B,F){let G=ot.endActivation(B);G.starty+18>F&&(G.starty=F-6,F+=12),mi.drawActivation(h,G,F,Me,rC(B.from).length),ot.insert(G.startx,F-10,G.stopx,F)}o(w,"activeEnd");let k=1,A=1,C=[],R=[],I=0;for(let B of y){let F,G,$;switch(B.type){case n.db.LINETYPE.NOTE:ot.resetVerticalPos(),G=B.noteModel,await TJe(h,G);break;case n.db.LINETYPE.ACTIVE_START:ot.newActivation(B,h,f);break;case n.db.LINETYPE.ACTIVE_END:w(B,ot.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.LOOP_END:F=ot.endLoop(),await mi.drawLoop(h,F,"loop",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.RECT_START:ru(S,B,Me.boxMargin,Me.boxMargin,U=>ot.newLoop(void 0,U.message));break;case n.db.LINETYPE.RECT_END:F=ot.endLoop(),R.push(F),ot.models.addLoop(F),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos());break;case n.db.LINETYPE.OPT_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.OPT_END:F=ot.endLoop(),await mi.drawLoop(h,F,"opt",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.ALT_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.ALT_ELSE:ru(S,B,Me.boxMargin+Me.boxTextMargin,Me.boxMargin,U=>ot.addSectionToLoop(U));break;case n.db.LINETYPE.ALT_END:F=ot.endLoop(),await mi.drawLoop(h,F,"alt",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U)),ot.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:ru(S,B,Me.boxMargin+Me.boxTextMargin,Me.boxMargin,U=>ot.addSectionToLoop(U));break;case n.db.LINETYPE.PAR_END:F=ot.endLoop(),await mi.drawLoop(h,F,"par",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.AUTONUMBER:k=B.message.start||k,A=B.message.step||A,B.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.CRITICAL_OPTION:ru(S,B,Me.boxMargin+Me.boxTextMargin,Me.boxMargin,U=>ot.addSectionToLoop(U));break;case n.db.LINETYPE.CRITICAL_END:F=ot.endLoop(),await mi.drawLoop(h,F,"critical",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;case n.db.LINETYPE.BREAK_START:ru(S,B,Me.boxMargin,Me.boxMargin+Me.boxTextMargin,U=>ot.newLoop(U));break;case n.db.LINETYPE.BREAK_END:F=ot.endLoop(),await mi.drawLoop(h,F,"break",Me),ot.bumpVerticalPos(F.stopy-ot.getVerticalPos()),ot.models.addLoop(F);break;default:try{$=B.msgModel,$.starty=ot.getVerticalPos(),$.sequenceIndex=k,$.sequenceVisible=n.db.showSequenceNumbers();let U=await wJe(h,$);SJe(B,$,U,I,f,d,p),C.push({messageModel:$,lineStartY:U}),ot.models.addMessage($)}catch(U){X.error("error while drawing message",U)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(B.type)&&(k=k+A),I++}X.debug("createdActors",d),X.debug("destroyedActors",p),await i$(h,f,g,!1);for(let B of C)await kJe(h,B.messageModel,B.lineStartY,n);Me.mirrorActors&&await i$(h,f,g,!0),R.forEach(B=>mi.drawBackgroundRect(h,B)),r$(h,f,g,Me);for(let B of ot.models.boxes){B.height=ot.getVerticalPos()-B.y,ot.insert(B.x,B.y,B.x+B.width,B.height);let F=Me.boxMargin*2;B.startx=B.x-F,B.starty=B.y-F*.25,B.stopx=B.startx+B.width+2*F,B.stopy=B.starty+B.height+F*.75,B.stroke="rgb(0,0,0, 0.5)",mi.drawBox(h,B,Me)}x&&ot.bumpVerticalPos(Me.boxMargin);let L=Vye(h,f,g,u),{bounds:E}=ot.getBounds();E.startx===void 0&&(E.startx=0),E.starty===void 0&&(E.starty=0),E.stopx===void 0&&(E.stopx=0),E.stopy===void 0&&(E.stopy=0);let D=E.stopy-E.starty;D2,d=o(y=>l?-y:y,"adjustValue");t.from===t.to?h=u:(t.activate&&!f&&(h+=d(Me.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(h+=d(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(u-=d(3)));let p=[n,i,a,s],m=Math.abs(u-h);t.wrap&&t.message&&(t.message=qt.wrapLabel(t.message,tt.getMax(m+2*Me.wrapPadding,Me.width),l0(Me)));let g=qt.calculateTextDimensions(t.message,l0(Me));return{width:tt.getMax(t.wrap?0:g.width+2*Me.wrapPadding,m+2*Me.wrapPadding,Me.width),height:0,startx:u,stopx:h,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,p),toBounds:Math.max.apply(null,p)}},"buildMessageModel"),NJe=o(async function(t,e,r,n){let i={},a=[],s,l,u;for(let h of t){switch(h.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),i[s.id]=s,i[h.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let d=e.get(h.from?h.from:h.to.actor),p=rC(h.from?h.from:h.to.actor).length,m=d.x+d.width/2+(p-1)*Me.activationWidth/2,g={startx:m,stopx:m+Me.activationWidth,actor:h.from,enabled:!0};ot.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let d=ot.activations.map(p=>p.actor).lastIndexOf(h.from);ot.activations.splice(d,1).splice(0,1)}break}h.placement!==void 0?(l=await LJe(h,e,n),h.noteModel=l,a.forEach(d=>{s=d,s.from=tt.getMin(s.from,l.startx),s.to=tt.getMax(s.to,l.startx+l.width),s.width=tt.getMax(s.width,Math.abs(s.from-s.to))-Me.labelBoxWidth})):(u=RJe(h,e,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(d=>{if(s=d,u.startx===u.stopx){let p=e.get(h.from),m=e.get(h.to);s.from=tt.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=tt.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=tt.getMax(s.width,Math.abs(s.to-s.from))-Me.labelBoxWidth}else s.from=tt.getMin(u.startx,s.from),s.to=tt.getMax(u.stopx,s.to),s.width=tt.getMax(s.width,u.width)-Me.labelBoxWidth}))}return ot.activations=[],X.debug("Loop type widths:",i),i},"calculateLoopBounds"),Hye={bounds:ot,drawActors:i$,drawActorsPopup:Vye,setConf:Uye,draw:CJe}});var Wye={};dr(Wye,{diagram:()=>MJe});var MJe,Yye=N(()=>{"use strict";Iye();e$();Pye();Xt();qye();MJe={parser:Mye,get db(){return new J6},renderer:Hye,styles:Oye,init:o(t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,nv({sequence:{wrap:t.wrap}}))},"init")}});var a$,nC,s$=N(()=>{"use strict";a$=(function(){var t=o(function(Ie,Ne,Ce,Fe){for(Ce=Ce||{},Fe=Ie.length;Fe--;Ce[Ie[Fe]]=Ne);return Ce},"o"),e=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,42],s=[1,26],l=[1,24],u=[1,25],h=[1,32],f=[1,33],d=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],T=[1,29],S=[1,30],w=[1,31],k=[1,44],A=[1,46],C=[1,43],R=[1,47],I=[1,9],L=[1,8,9],E=[1,58],D=[1,59],_=[1,60],O=[1,61],M=[1,62],P=[1,63],B=[1,64],F=[1,8,9,41],G=[1,76],$=[1,8,9,12,13,22,39,41,44,68,69,70,71,72,73,74,79,81],U=[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],j=[13,60,86,100,102,103],te=[13,60,73,74,86,100,102,103],Y=[13,60,68,69,70,71,72,86,100,102,103],oe=[1,100],J=[1,117],ue=[1,113],re=[1,109],ee=[1,115],Z=[1,110],K=[1,111],ae=[1,112],Q=[1,114],de=[1,116],ne=[22,48,60,61,82,86,87,88,89,90],Te=[1,8,9,39,41,44],q=[1,8,9,22],Ve=[1,145],pe=[1,8,9,61],Be=[1,8,9,22,48,60,61,82,86,87,88,89,90],Ye={trace:o(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:o(function(Ne,Ce,Fe,fe,xe,W,he){var z=W.length-1;switch(xe){case 8:this.$=W[z-1];break;case 9:case 10:case 13:case 15:this.$=W[z];break;case 11:case 14:this.$=W[z-2]+"."+W[z];break;case 12:case 16:this.$=W[z-1]+W[z];break;case 17:case 18:this.$=W[z-1]+"~"+W[z]+"~";break;case 19:fe.addRelation(W[z]);break;case 20:W[z-1].title=fe.cleanupLabel(W[z]),fe.addRelation(W[z-1]);break;case 31:this.$=W[z].trim(),fe.setAccTitle(this.$);break;case 32:case 33:this.$=W[z].trim(),fe.setAccDescription(this.$);break;case 34:fe.addClassesToNamespace(W[z-3],W[z-1]);break;case 35:fe.addClassesToNamespace(W[z-4],W[z-1]);break;case 36:this.$=W[z],fe.addNamespace(W[z]);break;case 37:this.$=[W[z]];break;case 38:this.$=[W[z-1]];break;case 39:W[z].unshift(W[z-2]),this.$=W[z];break;case 41:fe.setCssClass(W[z-2],W[z]);break;case 42:fe.addMembers(W[z-3],W[z-1]);break;case 44:fe.setCssClass(W[z-5],W[z-3]),fe.addMembers(W[z-5],W[z-1]);break;case 45:this.$=W[z],fe.addClass(W[z]);break;case 46:this.$=W[z-1],fe.addClass(W[z-1]),fe.setClassLabel(W[z-1],W[z]);break;case 50:fe.addAnnotation(W[z],W[z-2]);break;case 51:case 64:this.$=[W[z]];break;case 52:W[z].push(W[z-1]),this.$=W[z];break;case 53:break;case 54:fe.addMember(W[z-1],fe.cleanupLabel(W[z]));break;case 55:break;case 56:break;case 57:this.$={id1:W[z-2],id2:W[z],relation:W[z-1],relationTitle1:"none",relationTitle2:"none"};break;case 58:this.$={id1:W[z-3],id2:W[z],relation:W[z-1],relationTitle1:W[z-2],relationTitle2:"none"};break;case 59:this.$={id1:W[z-3],id2:W[z],relation:W[z-2],relationTitle1:"none",relationTitle2:W[z-1]};break;case 60:this.$={id1:W[z-4],id2:W[z],relation:W[z-2],relationTitle1:W[z-3],relationTitle2:W[z-1]};break;case 61:fe.addNote(W[z],W[z-1]);break;case 62:fe.addNote(W[z]);break;case 63:this.$=W[z-2],fe.defineClass(W[z-1],W[z]);break;case 65:this.$=W[z-2].concat([W[z]]);break;case 66:fe.setDirection("TB");break;case 67:fe.setDirection("BT");break;case 68:fe.setDirection("RL");break;case 69:fe.setDirection("LR");break;case 70:this.$={type1:W[z-2],type2:W[z],lineType:W[z-1]};break;case 71:this.$={type1:"none",type2:W[z],lineType:W[z-1]};break;case 72:this.$={type1:W[z-1],type2:"none",lineType:W[z]};break;case 73:this.$={type1:"none",type2:"none",lineType:W[z]};break;case 74:this.$=fe.relationType.AGGREGATION;break;case 75:this.$=fe.relationType.EXTENSION;break;case 76:this.$=fe.relationType.COMPOSITION;break;case 77:this.$=fe.relationType.DEPENDENCY;break;case 78:this.$=fe.relationType.LOLLIPOP;break;case 79:this.$=fe.lineType.LINE;break;case 80:this.$=fe.lineType.DOTTED_LINE;break;case 81:case 87:this.$=W[z-2],fe.setClickEvent(W[z-1],W[z]);break;case 82:case 88:this.$=W[z-3],fe.setClickEvent(W[z-2],W[z-1]),fe.setTooltip(W[z-2],W[z]);break;case 83:this.$=W[z-2],fe.setLink(W[z-1],W[z]);break;case 84:this.$=W[z-3],fe.setLink(W[z-2],W[z-1],W[z]);break;case 85:this.$=W[z-3],fe.setLink(W[z-2],W[z-1]),fe.setTooltip(W[z-2],W[z]);break;case 86:this.$=W[z-4],fe.setLink(W[z-3],W[z-2],W[z]),fe.setTooltip(W[z-3],W[z-1]);break;case 89:this.$=W[z-3],fe.setClickEvent(W[z-2],W[z-1],W[z]);break;case 90:this.$=W[z-4],fe.setClickEvent(W[z-3],W[z-2],W[z-1]),fe.setTooltip(W[z-3],W[z]);break;case 91:this.$=W[z-3],fe.setLink(W[z-2],W[z]);break;case 92:this.$=W[z-4],fe.setLink(W[z-3],W[z-1],W[z]);break;case 93:this.$=W[z-4],fe.setLink(W[z-3],W[z-1]),fe.setTooltip(W[z-3],W[z]);break;case 94:this.$=W[z-5],fe.setLink(W[z-4],W[z-2],W[z]),fe.setTooltip(W[z-4],W[z-1]);break;case 95:this.$=W[z-2],fe.setCssStyle(W[z-1],W[z]);break;case 96:fe.setCssClass(W[z-1],W[z]);break;case 97:this.$=[W[z]];break;case 98:W[z-2].push(W[z]),this.$=W[z-2];break;case 100:this.$=W[z-1]+W[z];break}},"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:e,35:r,37:n,38:22,42:i,43:23,46:a,49:s,51:l,52:u,54:h,56:f,57:d,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:S,83:w,86:k,100:A,102:C,103:R},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(I,[2,5],{8:[1,48]}),{8:[1,49]},t(L,[2,19],{22:[1,50]}),t(L,[2,21]),t(L,[2,22]),t(L,[2,23]),t(L,[2,24]),t(L,[2,25]),t(L,[2,26]),t(L,[2,27]),t(L,[2,28]),t(L,[2,29]),t(L,[2,30]),{34:[1,51]},{36:[1,52]},t(L,[2,33]),t(L,[2,53],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:E,69:D,70:_,71:O,72:M,73:P,74:B}),{39:[1,65]},t(F,[2,40],{39:[1,67],44:[1,66]}),t(L,[2,55]),t(L,[2,56]),{16:68,60:p,86:k,100:A,102:C},{16:39,17:40,19:69,60:p,86:k,100:A,102:C,103:R},{16:39,17:40,19:70,60:p,86:k,100:A,102:C,103:R},{16:39,17:40,19:71,60:p,86:k,100:A,102:C,103:R},{60:[1,72]},{13:[1,73]},{16:39,17:40,19:74,60:p,86:k,100:A,102:C,103:R},{13:G,55:75},{58:77,60:[1,78]},t(L,[2,66]),t(L,[2,67]),t(L,[2,68]),t(L,[2,69]),t($,[2,13],{16:39,17:40,19:80,18:[1,79],20:[1,81],60:p,86:k,100:A,102:C,103:R}),t($,[2,15],{20:[1,82]}),{15:83,16:84,17:85,60:p,86:k,100:A,102:C,103:R},{16:39,17:40,19:86,60:p,86:k,100:A,102:C,103:R},t(U,[2,123]),t(U,[2,124]),t(U,[2,125]),t(U,[2,126]),t([1,8,9,12,13,20,22,39,41,44,68,69,70,71,72,73,74,79,81],[2,127]),t(I,[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:e,35:r,37:n,42:i,46:a,49:s,51:l,52:u,54:h,56:f,57:d,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:S,83:w,86:k,100:A,102:C,103:R}),{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:e,35:r,37:n,38:22,42:i,43:23,46:a,49:s,51:l,52:u,54:h,56:f,57:d,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:S,83:w,86:k,100:A,102:C,103:R},t(L,[2,20]),t(L,[2,31]),t(L,[2,32]),{13:[1,90],16:39,17:40,19:89,60:p,86:k,100:A,102:C,103:R},{53:91,66:56,67:57,68:E,69:D,70:_,71:O,72:M,73:P,74:B},t(L,[2,54]),{67:92,73:P,74:B},t(j,[2,73],{66:93,68:E,69:D,70:_,71:O,72:M}),t(te,[2,74]),t(te,[2,75]),t(te,[2,76]),t(te,[2,77]),t(te,[2,78]),t(Y,[2,79]),t(Y,[2,80]),{8:[1,95],24:96,40:94,43:23,46:a},{16:97,60:p,86:k,100:A,102:C},{41:[1,99],45:98,51:oe},{50:[1,101]},{13:[1,102]},{13:[1,103]},{79:[1,104],81:[1,105]},{22:J,48:ue,59:106,60:re,82:ee,84:107,85:108,86:Z,87:K,88:ae,89:Q,90:de},{60:[1,118]},{13:G,55:119},t(L,[2,62]),t(L,[2,128]),{22:J,48:ue,59:120,60:re,61:[1,121],82:ee,84:107,85:108,86:Z,87:K,88:ae,89:Q,90:de},t(ne,[2,64]),{16:39,17:40,19:122,60:p,86:k,100:A,102:C,103:R},t($,[2,16]),t($,[2,17]),t($,[2,18]),{39:[2,36]},{15:124,16:84,17:85,18:[1,123],39:[2,9],60:p,86:k,100:A,102:C,103:R},{39:[2,10]},t(Te,[2,45],{11:125,12:[1,126]}),t(I,[2,7]),{9:[1,127]},t(q,[2,57]),{16:39,17:40,19:128,60:p,86:k,100:A,102:C,103:R},{13:[1,130],16:39,17:40,19:129,60:p,86:k,100:A,102:C,103:R},t(j,[2,72],{66:131,68:E,69:D,70:_,71:O,72:M}),t(j,[2,71]),{41:[1,132]},{24:96,40:133,43:23,46:a},{8:[1,134],41:[2,37]},t(F,[2,41],{39:[1,135]}),{41:[1,136]},t(F,[2,43]),{41:[2,51],45:137,51:oe},{16:39,17:40,19:138,60:p,86:k,100:A,102:C,103:R},t(L,[2,81],{13:[1,139]}),t(L,[2,83],{13:[1,141],77:[1,140]}),t(L,[2,87],{13:[1,142],80:[1,143]}),{13:[1,144]},t(L,[2,95],{61:Ve}),t(pe,[2,97],{85:146,22:J,48:ue,60:re,82:ee,86:Z,87:K,88:ae,89:Q,90:de}),t(Be,[2,99]),t(Be,[2,101]),t(Be,[2,102]),t(Be,[2,103]),t(Be,[2,104]),t(Be,[2,105]),t(Be,[2,106]),t(Be,[2,107]),t(Be,[2,108]),t(Be,[2,109]),t(L,[2,96]),t(L,[2,61]),t(L,[2,63],{61:Ve}),{60:[1,147]},t($,[2,14]),{15:148,16:84,17:85,60:p,86:k,100:A,102:C,103:R},{39:[2,12]},t(Te,[2,46]),{13:[1,149]},{1:[2,4]},t(q,[2,59]),t(q,[2,58]),{16:39,17:40,19:150,60:p,86:k,100:A,102:C,103:R},t(j,[2,70]),t(L,[2,34]),{41:[1,151]},{24:96,40:152,41:[2,38],43:23,46:a},{45:153,51:oe},t(F,[2,42]),{41:[2,52]},t(L,[2,50]),t(L,[2,82]),t(L,[2,84]),t(L,[2,85],{77:[1,154]}),t(L,[2,88]),t(L,[2,89],{13:[1,155]}),t(L,[2,91],{13:[1,157],77:[1,156]}),{22:J,48:ue,60:re,82:ee,84:158,85:108,86:Z,87:K,88:ae,89:Q,90:de},t(Be,[2,100]),t(ne,[2,65]),{39:[2,11]},{14:[1,159]},t(q,[2,60]),t(L,[2,35]),{41:[2,39]},{41:[1,160]},t(L,[2,86]),t(L,[2,90]),t(L,[2,92]),t(L,[2,93],{77:[1,161]}),t(pe,[2,98],{85:146,22:J,48:ue,60:re,82:ee,86:Z,87:K,88:ae,89:Q,90:de}),t(Te,[2,8]),t(F,[2,44]),t(L,[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:o(function(Ne,Ce){if(Ce.recoverable)this.trace(Ne);else{var Fe=new Error(Ne);throw Fe.hash=Ce,Fe}},"parseError"),parse:o(function(Ne){var Ce=this,Fe=[0],fe=[],xe=[null],W=[],he=this.table,z="",se=0,le=0,ke=0,ve=2,ye=1,Re=W.slice.call(arguments,1),_e=Object.create(this.lexer),ze={yy:{}};for(var Ke in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ke)&&(ze.yy[Ke]=this.yy[Ke]);_e.setInput(Ne,ze.yy),ze.yy.lexer=_e,ze.yy.parser=this,typeof _e.yylloc>"u"&&(_e.yylloc={});var xt=_e.yylloc;W.push(xt);var We=_e.options&&_e.options.ranges;typeof ze.yy.parseError=="function"?this.parseError=ze.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Oe(_t){Fe.length=Fe.length-2*_t,xe.length=xe.length-_t,W.length=W.length-_t}o(Oe,"popStack");function et(){var _t;return _t=fe.pop()||_e.lex()||ye,typeof _t!="number"&&(_t instanceof Array&&(fe=_t,_t=fe.pop()),_t=Ce.symbols_[_t]||_t),_t}o(et,"lex");for(var Ue,lt,Gt,vt,Lt,dt,nt={},bt,wt,yt,ft;;){if(Gt=Fe[Fe.length-1],this.defaultActions[Gt]?vt=this.defaultActions[Gt]:((Ue===null||typeof Ue>"u")&&(Ue=et()),vt=he[Gt]&&he[Gt][Ue]),typeof vt>"u"||!vt.length||!vt[0]){var Ur="";ft=[];for(bt in he[Gt])this.terminals_[bt]&&bt>ve&&ft.push("'"+this.terminals_[bt]+"'");_e.showPosition?Ur="Parse error on line "+(se+1)+`: -`+_e.showPosition()+` -Expecting `+ft.join(", ")+", got '"+(this.terminals_[Ue]||Ue)+"'":Ur="Parse error on line "+(se+1)+": Unexpected "+(Ue==ye?"end of input":"'"+(this.terminals_[Ue]||Ue)+"'"),this.parseError(Ur,{text:_e.match,token:this.terminals_[Ue]||Ue,line:_e.yylineno,loc:xt,expected:ft})}if(vt[0]instanceof Array&&vt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Gt+", token: "+Ue);switch(vt[0]){case 1:Fe.push(Ue),xe.push(_e.yytext),W.push(_e.yylloc),Fe.push(vt[1]),Ue=null,lt?(Ue=lt,lt=null):(le=_e.yyleng,z=_e.yytext,se=_e.yylineno,xt=_e.yylloc,ke>0&&ke--);break;case 2:if(wt=this.productions_[vt[1]][1],nt.$=xe[xe.length-wt],nt._$={first_line:W[W.length-(wt||1)].first_line,last_line:W[W.length-1].last_line,first_column:W[W.length-(wt||1)].first_column,last_column:W[W.length-1].last_column},We&&(nt._$.range=[W[W.length-(wt||1)].range[0],W[W.length-1].range[1]]),dt=this.performAction.apply(nt,[z,le,se,ze.yy,vt[1],xe,W].concat(Re)),typeof dt<"u")return dt;wt&&(Fe=Fe.slice(0,-1*wt*2),xe=xe.slice(0,-1*wt),W=W.slice(0,-1*wt)),Fe.push(this.productions_[vt[1]][0]),xe.push(nt.$),W.push(nt._$),yt=he[Fe[Fe.length-2]][Fe[Fe.length-1]],Fe.push(yt);break;case 3:return!0}}return!0},"parse")},He=(function(){var Ie={EOF:1,parseError:o(function(Ce,Fe){if(this.yy.parser)this.yy.parser.parseError(Ce,Fe);else throw new Error(Ce)},"parseError"),setInput:o(function(Ne,Ce){return this.yy=Ce||this.yy||{},this._input=Ne,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ne=this._input[0];this.yytext+=Ne,this.yyleng++,this.offset++,this.match+=Ne,this.matched+=Ne;var Ce=Ne.match(/(?:\r\n?|\n).*/g);return Ce?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ne},"input"),unput:o(function(Ne){var Ce=Ne.length,Fe=Ne.split(/(?:\r\n?|\n)/g);this._input=Ne+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ce),this.offset-=Ce;var fe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Fe.length-1&&(this.yylineno-=Fe.length-1);var xe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Fe?(Fe.length===fe.length?this.yylloc.first_column:0)+fe[fe.length-Fe.length].length-Fe[0].length:this.yylloc.first_column-Ce},this.options.ranges&&(this.yylloc.range=[xe[0],xe[0]+this.yyleng-Ce]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ne){this.unput(this.match.slice(Ne))},"less"),pastInput:o(function(){var Ne=this.matched.substr(0,this.matched.length-this.match.length);return(Ne.length>20?"...":"")+Ne.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ne=this.match;return Ne.length<20&&(Ne+=this._input.substr(0,20-Ne.length)),(Ne.substr(0,20)+(Ne.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ne=this.pastInput(),Ce=new Array(Ne.length+1).join("-");return Ne+this.upcomingInput()+` -`+Ce+"^"},"showPosition"),test_match:o(function(Ne,Ce){var Fe,fe,xe;if(this.options.backtrack_lexer&&(xe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(xe.yylloc.range=this.yylloc.range.slice(0))),fe=Ne[0].match(/(?:\r\n?|\n).*/g),fe&&(this.yylineno+=fe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:fe?fe[fe.length-1].length-fe[fe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ne[0].length},this.yytext+=Ne[0],this.match+=Ne[0],this.matches=Ne,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ne[0].length),this.matched+=Ne[0],Fe=this.performAction.call(this,this.yy,this,Ce,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Fe)return Fe;if(this._backtrack){for(var W in xe)this[W]=xe[W];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ne,Ce,Fe,fe;this._more||(this.yytext="",this.match="");for(var xe=this._currentRules(),W=0;WCe[0].length)){if(Ce=Fe,fe=W,this.options.backtrack_lexer){if(Ne=this.test_match(Fe,xe[W]),Ne!==!1)return Ne;if(this._backtrack){Ce=!1;continue}else return!1}else if(!this.options.flex)break}return Ce?(Ne=this.test_match(Ce,xe[fe]),Ne!==!1?Ne:!1):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:o(function(){var Ce=this.next();return Ce||this.lex()},"lex"),begin:o(function(Ce){this.conditionStack.push(Ce)},"begin"),popState:o(function(){var Ce=this.conditionStack.length-1;return Ce>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ce){return Ce=this.conditionStack.length-1-Math.abs(Ce||0),Ce>=0?this.conditionStack[Ce]:"INITIAL"},"topState"),pushState:o(function(Ce){this.begin(Ce)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ce,Fe,fe,xe){var W=xe;switch(fe){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 22:this.popState();break;case 23:return 80;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:return this.popState(),41;break;case 34:return"EOF_IN_STRUCT";case 35:return 8;case 36:break;case 37:return"EDGE_STATE";case 38:return this.begin("class"),46;break;case 39:return this.popState(),8;break;case 40:break;case 41:return this.popState(),this.popState(),41;break;case 42:return this.begin("class-body"),39;break;case 43:return this.popState(),41;break;case 44:return"EOF_IN_STRUCT";case 45:return"EDGE_STATE";case 46:return"OPEN_IN_STRUCT";case 47:break;case 48:return"MEMBER";case 49:return 83;case 50:return 75;case 51:return 76;case 52:return 78;case 53:return 54;case 54:return 56;case 55:return 49;case 56:return 50;case 57:return 81;case 58:this.popState();break;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 61:this.popState();break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:return 77;case 65:return 77;case 66:return 77;case 67:return 77;case 68:return 69;case 69:return 69;case 70:return 71;case 71:return 71;case 72:return 70;case 73:return 68;case 74:return 72;case 75:return 73;case 76:return 74;case 77:return 22;case 78:return 44;case 79:return 100;case 80:return 18;case 81:return"PLUS";case 82:return 87;case 83:return 61;case 84:return 89;case 85:return 89;case 86:return 90;case 87:return"EQUALS";case 88:return"EQUALS";case 89:return 60;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 86;case 94:return 102;case 95:return 48;case 96:return 48;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?: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}}};return Ie})();Ye.lexer=He;function Le(){this.yy={}}return o(Le,"Parser"),Le.prototype=Ye,Ye.Parser=Le,new Le})();a$.parser=a$;nC=a$});var Kye,k4,Qye=N(()=>{"use strict";Xt();gr();Kye=["#","+","~","-",""],k4=class{static{o(this,"ClassMember")}constructor(e,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=sr(e,ge());this.parseMember(n)}getDisplayDetails(){let e=this.visibility+rc(this.id);this.memberType==="method"&&(e+=`(${rc(this.parameters.trim())})`,this.returnType&&(e+=" : "+rc(this.returnType))),e=e.trim();let r=this.parseClassifier();return{displayText:e,cssStyle:r}}parseMember(e){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(e);if(a){let s=a[1]?a[1].trim():"";if(Kye.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=e.length,a=e.substring(0,1),s=e.substring(i-1);Kye.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=e.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${rc(this.id)}${this.memberType==="method"?`(${rc(this.parameters)})${this.returnType?" : "+rc(this.returnType):""}`:""}`;this.text=n.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""}}}});var iC,Zye,c0,sy,o$=N(()=>{"use strict";yr();pt();Xt();gr();tr();ci();Qye();iC="classId-",Zye=0,c0=o(t=>tt.sanitizeText(t,ge()),"sanitizeText"),sy=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=o(e=>{let r=qe(".mermaidTooltip");(r._groups||r)[0][0]===null&&(r=qe("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),qe(e).select("svg").selectAll("g.node").on("mouseover",a=>{let s=qe(a.currentTarget);if(s.attr("title")===null)return;let u=this.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.top-14+document.body.scrollTop+"px"),r.html(r.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),qe(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=Rr;this.getAccTitle=Mr;this.setAccDescription=Ir;this.getAccDescription=Or;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getConfig=o(()=>ge().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{o(this,"ClassDB")}splitClassNameAndType(e){let r=tt.sanitizeText(e,ge()),n="",i=r;if(r.indexOf("~")>0){let a=r.split("~");i=c0(a[0]),n=c0(a[1])}return{className:i,type:n}}setClassLabel(e,r){let n=tt.sanitizeText(e,ge());r&&(r=c0(r));let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).label=r,this.classes.get(i).text=`${r}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(e){let r=tt.sanitizeText(e,ge()),{className:n,type:i}=this.splitClassNameAndType(r);if(this.classes.has(n))return;let a=tt.sanitizeText(n,ge());this.classes.set(a,{id:a,type:i,label:a,text:`${a}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:iC+a+"-"+Zye}),Zye++}addInterface(e,r){let n={id:`interface${this.interfaces.length}`,label:e,classId:r};this.interfaces.push(n)}lookUpDomId(e){let r=tt.sanitizeText(e,ge());if(this.classes.has(r))return this.classes.get(r).domId;throw new Error("Class not found: "+r)}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",Sr()}getClass(e){return this.classes.get(e)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(e){X.debug("Adding relation: "+JSON.stringify(e));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];e.relation.type1===this.relationType.LOLLIPOP&&!r.includes(e.relation.type2)?(this.addClass(e.id2),this.addInterface(e.id1,e.id2),e.id1=`interface${this.interfaces.length-1}`):e.relation.type2===this.relationType.LOLLIPOP&&!r.includes(e.relation.type1)?(this.addClass(e.id1),this.addInterface(e.id2,e.id1),e.id2=`interface${this.interfaces.length-1}`):(this.addClass(e.id1),this.addClass(e.id2)),e.id1=this.splitClassNameAndType(e.id1).className,e.id2=this.splitClassNameAndType(e.id2).className,e.relationTitle1=tt.sanitizeText(e.relationTitle1.trim(),ge()),e.relationTitle2=tt.sanitizeText(e.relationTitle2.trim(),ge()),this.relations.push(e)}addAnnotation(e,r){let n=this.splitClassNameAndType(e).className;this.classes.get(n).annotations.push(r)}addMember(e,r){this.addClass(e);let n=this.splitClassNameAndType(e).className,i=this.classes.get(n);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?i.annotations.push(c0(a.substring(2,a.length-2))):a.indexOf(")")>0?i.methods.push(new k4(a,"method")):a&&i.members.push(new k4(a,"attribute"))}}addMembers(e,r){Array.isArray(r)&&(r.reverse(),r.forEach(n=>this.addMember(e,n)))}addNote(e,r){let n={id:`note${this.notes.length}`,class:r,text:e};this.notes.push(n)}cleanupLabel(e){return e.startsWith(":")&&(e=e.substring(1)),c0(e.trim())}setCssClass(e,r){e.split(",").forEach(n=>{let i=n;/\d/.exec(n[0])&&(i=iC+i);let a=this.classes.get(i);a&&(a.cssClasses+=" "+r)})}defineClass(e,r){for(let n of e){let i=this.styleClasses.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.styleClasses.set(n,i)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(n)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(e,r){e.split(",").forEach(n=>{r!==void 0&&(this.classes.get(n).tooltip=c0(r))})}getTooltip(e,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(e).tooltip:this.classes.get(e).tooltip}setLink(e,r,n){let i=ge();e.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=iC+s);let l=this.classes.get(s);l&&(l.link=qt.formatUrl(r,i),i.securityLevel==="sandbox"?l.linkTarget="_top":typeof n=="string"?l.linkTarget=c0(n):l.linkTarget="_blank")}),this.setCssClass(e,"clickable")}setClickEvent(e,r,n){e.split(",").forEach(i=>{this.setClickFunc(i,r,n),this.classes.get(i).haveCallback=!0}),this.setCssClass(e,"clickable")}setClickFunc(e,r,n){let i=tt.sanitizeText(e,ge());if(ge().securityLevel!=="loose"||r===void 0)return;let s=i;if(this.classes.has(s)){let l=this.lookUpDomId(s),u=[];if(typeof n=="string"){u=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let h=0;h{let h=document.querySelector(`[id="${l}"]`);h!==null&&h.addEventListener("click",()=>{qt.runFunc(r,...u)},!1)})}}bindFunctions(e){this.functions.forEach(r=>{r(e)})}getDirection(){return this.direction}setDirection(e){this.direction=e}addNamespace(e){this.namespaces.has(e)||(this.namespaces.set(e,{id:e,classes:new Map,children:{},domId:iC+e+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(e){return this.namespaces.get(e)}getNamespaces(){return this.namespaces}addClassesToNamespace(e,r){if(this.namespaces.has(e))for(let n of r){let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).parent=e,this.namespaces.get(e).classes.set(i,this.classes.get(i))}}setCssStyle(e,r){let n=this.classes.get(e);if(!(!r||!n))for(let i of r)i.includes(",")?n.styles.push(...i.split(",")):n.styles.push(i)}getArrowMarker(e){let r;switch(e){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}getData(){let e=[],r=[],n=ge();for(let a of this.namespaces.keys()){let s=this.namespaces.get(a);if(s){let l={id:s.id,label:s.id,isGroup:!0,padding:n.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:n.look};e.push(l)}}for(let a of this.classes.keys()){let s=this.classes.get(a);if(s){let l=s;l.parentId=s.parent,l.look=n.look,e.push(l)}}let i=0;for(let a of this.notes){i++;let s={id:a.id,label:a.text,isGroup:!1,shape:"note",padding:n.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${n.themeVariables.noteBkgColor}`,`stroke: ${n.themeVariables.noteBorderColor}`],look:n.look};e.push(s);let l=this.classes.get(a.class)?.id??"";if(l){let u={id:`edgeNote${i}`,start:a.id,end:l,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:n.look};r.push(u)}}for(let a of this.interfaces){let s={id:a.id,label:a.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:n.look};e.push(s)}i=0;for(let a of this.relations){i++;let s={id:xc(a.id1,a.id2,{prefix:"id",counter:i}),start:a.id1,end:a.id2,type:"normal",label:a.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(a.relation.type1),arrowTypeEnd:this.getArrowMarker(a.relation.type2),startLabelRight:a.relationTitle1==="none"?"":a.relationTitle1,endLabelLeft:a.relationTitle2==="none"?"":a.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:a.style||"",pattern:a.relation.lineType==1?"dashed":"solid",look:n.look};r.push(s)}return{nodes:e,edges:r,other:{},config:n,direction:this.getDirection()}}}});var BJe,aC,l$=N(()=>{"use strict";yg();BJe=o(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}; -} - ${zc()} -`,"getStyles"),aC=BJe});var FJe,$Je,zJe,sC,c$=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();FJe=o((t,e="TB")=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),$Je=o(function(t,e){return e.db.getClasses()},"getClasses"),zJe=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing class diagram (v3)",e);let{securityLevel:i,state:a,layout:s}=ge(),l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=$c(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=e,await Qo(l,u);let h=8;qt.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),sC={getClasses:$Je,draw:zJe,getDir:FJe}});var Jye={};dr(Jye,{diagram:()=>GJe});var GJe,eve=N(()=>{"use strict";s$();o$();l$();c$();GJe={parser:nC,get db(){return new sy},renderer:sC,styles:aC,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var nve={};dr(nve,{diagram:()=>qJe});var qJe,ive=N(()=>{"use strict";s$();o$();l$();c$();qJe={parser:nC,get db(){return new sy},renderer:sC,styles:aC,init:o(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var u$,oC,h$=N(()=>{"use strict";u$=(function(){var t=o(function(F,G,$,U){for($=$||{},U=F.length;U--;$[F[U]]=G);return $},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],f=[1,19],d=[1,33],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],T=[1,28],S=[1,29],w=[1,30],k=[1,31],A=[1,32],C=[1,35],R=[1,36],I=[1,37],L=[1,38],E=[1,34],D=[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],_=[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],O=[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],M={trace:o(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,"-->":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:"-->",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:o(function(G,$,U,j,te,Y,oe){var J=Y.length-1;switch(te){case 3:return j.setRootDoc(Y[J]),Y[J];break;case 4:this.$=[];break;case 5:Y[J]!="nl"&&(Y[J-1].push(Y[J]),this.$=Y[J-1]);break;case 6:case 7:this.$=Y[J];break;case 8:this.$="nl";break;case 12:this.$=Y[J];break;case 13:let Z=Y[J-1];Z.description=j.trimColon(Y[J]),this.$=Z;break;case 14:this.$={stmt:"relation",state1:Y[J-2],state2:Y[J]};break;case 15:let K=j.trimColon(Y[J]);this.$={stmt:"relation",state1:Y[J-3],state2:Y[J-1],description:K};break;case 19:this.$={stmt:"state",id:Y[J-3],type:"default",description:"",doc:Y[J-1]};break;case 20:var ue=Y[J],re=Y[J-2].trim();if(Y[J].match(":")){var ee=Y[J].split(":");ue=ee[0],re=[re,ee[1]]}this.$={stmt:"state",id:ue,type:"default",description:re};break;case 21:this.$={stmt:"state",id:Y[J-3],type:"default",description:Y[J-5],doc:Y[J-1]};break;case 22:this.$={stmt:"state",id:Y[J],type:"fork"};break;case 23:this.$={stmt:"state",id:Y[J],type:"join"};break;case 24:this.$={stmt:"state",id:Y[J],type:"choice"};break;case 25:this.$={stmt:"state",id:j.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:Y[J-1].trim(),note:{position:Y[J-2].trim(),text:Y[J].trim()}};break;case 29:this.$=Y[J].trim(),j.setAccTitle(this.$);break;case 30:case 31:this.$=Y[J].trim(),j.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:Y[J-3],url:Y[J-2],tooltip:Y[J-1]};break;case 33:this.$={stmt:"click",id:Y[J-3],url:Y[J-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:Y[J-1].trim(),classes:Y[J].trim()};break;case 36:this.$={stmt:"style",id:Y[J-1].trim(),styleClass:Y[J].trim()};break;case 37:this.$={stmt:"applyClass",id:Y[J-1].trim(),styleClass:Y[J].trim()};break;case 38:j.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:j.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:j.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:j.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:Y[J].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:Y[J-2].trim(),classes:[Y[J].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:Y[J-2].trim(),classes:[Y[J].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([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],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,7]),t(D,[2,8]),t(D,[2,9]),t(D,[2,10]),t(D,[2,11]),t(D,[2,12],{14:[1,40],15:[1,41]}),t(D,[2,16]),{18:[1,42]},t(D,[2,18],{20:[1,43]}),{23:[1,44]},t(D,[2,22]),t(D,[2,23]),t(D,[2,24]),t(D,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(D,[2,28]),{34:[1,49]},{36:[1,50]},t(D,[2,31]),{13:51,24:d,57:E},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(_,[2,44],{58:[1,56]}),t(_,[2,45],{58:[1,57]}),t(D,[2,38]),t(D,[2,39]),t(D,[2,40]),t(D,[2,41]),t(D,[2,6]),t(D,[2,13]),{13:58,24:d,57:E},t(D,[2,17]),t(O,i,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(D,[2,29]),t(D,[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]},t(D,[2,14],{14:[1,71]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,72],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(D,[2,34]),t(D,[2,35]),t(D,[2,36]),t(D,[2,37]),t(_,[2,46]),t(_,[2,47]),t(D,[2,15]),t(D,[2,19]),t(O,i,{7:78}),t(D,[2,26]),t(D,[2,27]),{5:[1,79]},{5:[1,80]},{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,81],22:f,24:d,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:S,41:w,45:k,48:A,51:C,52:R,53:I,54:L,57:E},t(D,[2,32]),t(D,[2,33]),t(D,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:o(function(G,$){if($.recoverable)this.trace(G);else{var U=new Error(G);throw U.hash=$,U}},"parseError"),parse:o(function(G){var $=this,U=[0],j=[],te=[null],Y=[],oe=this.table,J="",ue=0,re=0,ee=0,Z=2,K=1,ae=Y.slice.call(arguments,1),Q=Object.create(this.lexer),de={yy:{}};for(var ne in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ne)&&(de.yy[ne]=this.yy[ne]);Q.setInput(G,de.yy),de.yy.lexer=Q,de.yy.parser=this,typeof Q.yylloc>"u"&&(Q.yylloc={});var Te=Q.yylloc;Y.push(Te);var q=Q.options&&Q.options.ranges;typeof de.yy.parseError=="function"?this.parseError=de.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ve(z){U.length=U.length-2*z,te.length=te.length-z,Y.length=Y.length-z}o(Ve,"popStack");function pe(){var z;return z=j.pop()||Q.lex()||K,typeof z!="number"&&(z instanceof Array&&(j=z,z=j.pop()),z=$.symbols_[z]||z),z}o(pe,"lex");for(var Be,Ye,He,Le,Ie,Ne,Ce={},Fe,fe,xe,W;;){if(He=U[U.length-1],this.defaultActions[He]?Le=this.defaultActions[He]:((Be===null||typeof Be>"u")&&(Be=pe()),Le=oe[He]&&oe[He][Be]),typeof Le>"u"||!Le.length||!Le[0]){var he="";W=[];for(Fe in oe[He])this.terminals_[Fe]&&Fe>Z&&W.push("'"+this.terminals_[Fe]+"'");Q.showPosition?he="Parse error on line "+(ue+1)+`: -`+Q.showPosition()+` -Expecting `+W.join(", ")+", got '"+(this.terminals_[Be]||Be)+"'":he="Parse error on line "+(ue+1)+": Unexpected "+(Be==K?"end of input":"'"+(this.terminals_[Be]||Be)+"'"),this.parseError(he,{text:Q.match,token:this.terminals_[Be]||Be,line:Q.yylineno,loc:Te,expected:W})}if(Le[0]instanceof Array&&Le.length>1)throw new Error("Parse Error: multiple actions possible at state: "+He+", token: "+Be);switch(Le[0]){case 1:U.push(Be),te.push(Q.yytext),Y.push(Q.yylloc),U.push(Le[1]),Be=null,Ye?(Be=Ye,Ye=null):(re=Q.yyleng,J=Q.yytext,ue=Q.yylineno,Te=Q.yylloc,ee>0&&ee--);break;case 2:if(fe=this.productions_[Le[1]][1],Ce.$=te[te.length-fe],Ce._$={first_line:Y[Y.length-(fe||1)].first_line,last_line:Y[Y.length-1].last_line,first_column:Y[Y.length-(fe||1)].first_column,last_column:Y[Y.length-1].last_column},q&&(Ce._$.range=[Y[Y.length-(fe||1)].range[0],Y[Y.length-1].range[1]]),Ne=this.performAction.apply(Ce,[J,re,ue,de.yy,Le[1],te,Y].concat(ae)),typeof Ne<"u")return Ne;fe&&(U=U.slice(0,-1*fe*2),te=te.slice(0,-1*fe),Y=Y.slice(0,-1*fe)),U.push(this.productions_[Le[1]][0]),te.push(Ce.$),Y.push(Ce._$),xe=oe[U[U.length-2]][U[U.length-1]],U.push(xe);break;case 3:return!0}}return!0},"parse")},P=(function(){var F={EOF:1,parseError:o(function($,U){if(this.yy.parser)this.yy.parser.parseError($,U);else throw new Error($)},"parseError"),setInput:o(function(G,$){return this.yy=$||this.yy||{},this._input=G,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var G=this._input[0];this.yytext+=G,this.yyleng++,this.offset++,this.match+=G,this.matched+=G;var $=G.match(/(?:\r\n?|\n).*/g);return $?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),G},"input"),unput:o(function(G){var $=G.length,U=G.split(/(?:\r\n?|\n)/g);this._input=G+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-$),this.offset-=$;var j=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),U.length-1&&(this.yylineno-=U.length-1);var te=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:U?(U.length===j.length?this.yylloc.first_column:0)+j[j.length-U.length].length-U[0].length:this.yylloc.first_column-$},this.options.ranges&&(this.yylloc.range=[te[0],te[0]+this.yyleng-$]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(G){this.unput(this.match.slice(G))},"less"),pastInput:o(function(){var G=this.matched.substr(0,this.matched.length-this.match.length);return(G.length>20?"...":"")+G.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var G=this.match;return G.length<20&&(G+=this._input.substr(0,20-G.length)),(G.substr(0,20)+(G.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var G=this.pastInput(),$=new Array(G.length+1).join("-");return G+this.upcomingInput()+` -`+$+"^"},"showPosition"),test_match:o(function(G,$){var U,j,te;if(this.options.backtrack_lexer&&(te={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(te.yylloc.range=this.yylloc.range.slice(0))),j=G[0].match(/(?:\r\n?|\n).*/g),j&&(this.yylineno+=j.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:j?j[j.length-1].length-j[j.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+G[0].length},this.yytext+=G[0],this.match+=G[0],this.matches=G,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(G[0].length),this.matched+=G[0],U=this.performAction.call(this,this.yy,this,$,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),U)return U;if(this._backtrack){for(var Y in te)this[Y]=te[Y];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var G,$,U,j;this._more||(this.yytext="",this.match="");for(var te=this._currentRules(),Y=0;Y$[0].length)){if($=U,j=Y,this.options.backtrack_lexer){if(G=this.test_match(U,te[Y]),G!==!1)return G;if(this._backtrack){$=!1;continue}else return!1}else if(!this.options.flex)break}return $?(G=this.test_match($,te[j]),G!==!1?G:!1):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:o(function(){var $=this.next();return $||this.lex()},"lex"),begin:o(function($){this.conditionStack.push($)},"begin"),popState:o(function(){var $=this.conditionStack.length-1;return $>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function($){return $=this.conditionStack.length-1-Math.abs($||0),$>=0?this.conditionStack[$]:"INITIAL"},"topState"),pushState:o(function($){this.begin($)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function($,U,j,te){var Y=te;switch(j){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:break;case 9:break;case 10:return 5;case 11:break;case 12:break;case 13:break;case 14:break;case 15:return this.pushState("SCALE"),17;break;case 16:return 18;case 17:this.popState();break;case 18:return this.begin("acc_title"),33;break;case 19:return this.popState(),"acc_title_value";break;case 20:return this.begin("acc_descr"),35;break;case 21:return this.popState(),"acc_descr_value";break;case 22:this.begin("acc_descr_multiline");break;case 23:this.popState();break;case 24:return"acc_descr_multiline_value";case 25:return this.pushState("CLASSDEF"),41;break;case 26:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 27:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 28:return this.popState(),43;break;case 29:return this.pushState("CLASS"),48;break;case 30:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 31:return this.popState(),50;break;case 32:return this.pushState("STYLE"),45;break;case 33:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 34:return this.popState(),47;break;case 35:return this.pushState("SCALE"),17;break;case 36:return 18;case 37:this.popState();break;case 38:this.pushState("STATE");break;case 39:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),U.yytext=U.yytext.slice(0,-10).trim(),27;break;case 42:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),25;break;case 43:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),26;break;case 44:return this.popState(),U.yytext=U.yytext.slice(0,-10).trim(),27;break;case 45:return 51;case 46:return 52;case 47:return 53;case 48:return 54;case 49:this.pushState("STATE_STRING");break;case 50:return this.pushState("STATE_ID"),"AS";break;case 51:return this.popState(),"ID";break;case 52:this.popState();break;case 53:return"STATE_DESCR";case 54:return 19;case 55:this.popState();break;case 56:return this.popState(),this.pushState("struct"),20;break;case 57:break;case 58:return this.popState(),21;break;case 59:break;case 60:return this.begin("NOTE"),29;break;case 61:return this.popState(),this.pushState("NOTE_ID"),59;break;case 62:return this.popState(),this.pushState("NOTE_ID"),60;break;case 63:this.popState(),this.pushState("FLOATING_NOTE");break;case 64:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 65:break;case 66:return"NOTE_TEXT";case 67:return this.popState(),"ID";break;case 68:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 69:return this.popState(),U.yytext=U.yytext.substr(2).trim(),31;break;case 70:return this.popState(),U.yytext=U.yytext.slice(0,-8).trim(),31;break;case 71:return 6;case 72:return 6;case 73:return 16;case 74:return 57;case 75:return 24;case 76:return U.yytext=U.yytext.trim(),14;break;case 77:return 15;case 78:return 28;case 79:return 58;case 80:return 5;case 81:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[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}}};return F})();M.lexer=P;function B(){this.yy={}}return o(B,"Parser"),B.prototype=M,M.Parser=B,new B})();u$.parser=u$;oC=u$});var Qf,u0,E4,ove,lve,cve,h0,lC,f$,d$,p$,m$,cC,uC,uve,hve,g$,y$,fve,dve,oy,jJe,pve,v$,KJe,QJe,mve,gve,ZJe,yve,JJe,vve,x$,b$,xve,hC,bve,T$,fC=N(()=>{"use strict";Qf="state",u0="root",E4="relation",ove="classDef",lve="style",cve="applyClass",h0="default",lC="divider",f$="fill:none",d$="fill: #333",p$="text",m$="normal",cC="rect",uC="rectWithTitle",uve="stateStart",hve="stateEnd",g$="divider",y$="roundedWithTitle",fve="note",dve="noteGroup",oy="statediagram",jJe="state",pve=`${oy}-${jJe}`,v$="transition",KJe="note",QJe="note-edge",mve=`${v$} ${QJe}`,gve=`${oy}-${KJe}`,ZJe="cluster",yve=`${oy}-${ZJe}`,JJe="cluster-alt",vve=`${oy}-${JJe}`,x$="parent",b$="note",xve="state",hC="----",bve=`${hC}${b$}`,T$=`${hC}${x$}`});function w$(t="",e=0,r="",n=hC){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${xve}-${t}${i}-${e}`}function dC(t,e,r){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(i=>{let a=r.get(i);a&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...a.styles])}));let n=t.find(i=>i.id===e.id);n?Object.assign(n,e):t.push(e)}function tet(t){return t?.classes?.join(" ")??""}function ret(t){return t?.styles??[]}var pC,Zf,eet,Tve,ly,kve,Eve=N(()=>{"use strict";Xt();pt();gr();fC();pC=new Map,Zf=0;o(w$,"stateDomId");eet=o((t,e,r,n,i,a,s,l)=>{X.trace("items",e),e.forEach(u=>{switch(u.stmt){case Qf:ly(t,u,r,n,i,a,s,l);break;case h0:ly(t,u,r,n,i,a,s,l);break;case E4:{ly(t,u.state1,r,n,i,a,s,l),ly(t,u.state2,r,n,i,a,s,l);let h={id:"edge"+Zf,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:f$,labelStyle:"",label:tt.sanitizeText(u.description??"",ge()),arrowheadStyle:d$,labelpos:"c",labelType:p$,thickness:m$,classes:v$,look:s};i.push(h),Zf++}break}})},"setupDoc"),Tve=o((t,e="TB")=>{let r=e;if(t.doc)for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(dC,"insertOrUpdateNode");o(tet,"getClassesFromDbInfo");o(ret,"getStylesFromDbInfo");ly=o((t,e,r,n,i,a,s,l)=>{let u=e.id,h=r.get(u),f=tet(h),d=ret(h),p=ge();if(X.info("dataFetcher parsedItem",e,h,d),u!=="root"){let m=cC;e.start===!0?m=uve:e.start===!1&&(m=hve),e.type!==h0&&(m=e.type),pC.get(u)||pC.set(u,{id:u,shape:m,description:tt.sanitizeText(u,p),cssClasses:`${f} ${pve}`,cssStyles:d});let g=pC.get(u);e.description&&(Array.isArray(g.description)?(g.shape=uC,g.description.push(e.description)):g.description?.length&&g.description.length>0?(g.shape=uC,g.description===u?g.description=[e.description]:g.description=[g.description,e.description]):(g.shape=cC,g.description=e.description),g.description=tt.sanitizeTextOrArray(g.description,p)),g.description?.length===1&&g.shape===uC&&(g.type==="group"?g.shape=y$:g.shape=cC),!g.type&&e.doc&&(X.info("Setting cluster for XCX",u,Tve(e)),g.type="group",g.isGroup=!0,g.dir=Tve(e),g.shape=e.type===lC?g$:y$,g.cssClasses=`${g.cssClasses} ${yve} ${a?vve:""}`);let y={labelStyle:"",shape:g.shape,label:g.description,cssClasses:g.cssClasses,cssCompiledStyles:[],cssStyles:g.cssStyles,id:u,dir:g.dir,domId:w$(u,Zf),type:g.type,isGroup:g.type==="group",padding:8,rx:10,ry:10,look:s};if(y.shape===g$&&(y.label=""),t&&t.id!=="root"&&(X.trace("Setting node ",u," to be child of its parent ",t.id),y.parentId=t.id),y.centerLabel=!0,e.note){let v={labelStyle:"",shape:fve,label:e.note.text,cssClasses:gve,cssStyles:[],cssCompiledStyles:[],id:u+bve+"-"+Zf,domId:w$(u,Zf,b$),type:g.type,isGroup:g.type==="group",padding:p.flowchart?.padding,look:s,position:e.note.position},x=u+T$,b={labelStyle:"",shape:dve,label:e.note.text,cssClasses:g.cssClasses,cssStyles:[],id:u+T$,domId:w$(u,Zf,x$),type:"group",isGroup:!0,padding:16,look:s,position:e.note.position};Zf++,b.id=x,v.parentId=x,dC(n,b,l),dC(n,v,l),dC(n,y,l);let T=u,S=v.id;e.note.position==="left of"&&(T=v.id,S=u),i.push({id:T+"-"+S,start:T,end:S,arrowhead:"none",arrowTypeEnd:"",style:f$,labelStyle:"",classes:mve,arrowheadStyle:d$,labelpos:"c",labelType:p$,thickness:m$,look:s})}else dC(n,y,l)}e.doc&&(X.trace("Adding nodes children "),eet(e,e.doc,r,n,i,!a,s,l))},"dataFetcher"),kve=o(()=>{pC.clear(),Zf=0},"reset")});var E$,net,iet,Sve,S$=N(()=>{"use strict";Xt();pt();ep();Nf();Mf();tr();fC();E$=o((t,e="TB")=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),net=o(function(t,e){return e.db.getClasses()},"getClasses"),iet=o(async function(t,e,r,n){X.info("REF0:"),X.info("Drawing state diagram (v2)",e);let{securityLevel:i,state:a,layout:s}=ge();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=Vo(e,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["barb"],l.diagramId=e,await Qo(l,u);let h=8;try{(typeof n.db.getLinks=="function"?n.db.getLinks():new Map).forEach((d,p)=>{let m=typeof p=="string"?p:typeof p?.id=="string"?p.id:"";if(!m){X.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(p));return}let g=u.node()?.querySelectorAll("g"),y;if(g?.forEach(T=>{T.textContent?.trim()===m&&(y=T)}),!y){X.warn("\u26A0\uFE0F Could not find node matching text:",m);return}let v=y.parentNode;if(!v){X.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",m);return}let x=document.createElementNS("http://www.w3.org/2000/svg","a"),b=d.url.replace(/^"+|"+$/g,"");if(x.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",b),x.setAttribute("target","_blank"),d.tooltip){let T=d.tooltip.replace(/^"+|"+$/g,"");x.setAttribute("title",T)}v.replaceChild(x,y),x.appendChild(y),X.info("\u{1F517} Wrapped node in
    tag for:",m,d.url)})}catch(f){X.error("\u274C Error injecting clickable links:",f)}qt.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),Ws(u,h,oy,a?.useMaxWidth??!0)},"draw"),Sve={getClasses:net,draw:iet,getDir:E$}});var ws,Ave,_ve,mC,al,gC=N(()=>{"use strict";Xt();pt();tr();gr();ci();Eve();S$();fC();ws={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},Ave=o(()=>new Map,"newClassesList"),_ve=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),mC=o(t=>JSON.parse(JSON.stringify(t)),"clone"),al=class{constructor(e){this.version=e;this.nodes=[];this.edges=[];this.rootDoc=[];this.classes=Ave();this.documents={root:_ve()};this.currentDocument=this.documents.root;this.startEndCount=0;this.dividerCnt=0;this.links=new Map;this.getAccTitle=Mr;this.setAccTitle=Rr;this.getAccDescription=Or;this.setAccDescription=Ir;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;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{o(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(e){this.clear(!0);for(let i of Array.isArray(e)?e:e.doc)switch(i.stmt){case Qf:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case E4:this.addRelation(i.state1,i.state2,i.description);break;case ove:this.addStyleClass(i.id.trim(),i.classes);break;case lve:this.handleStyleDef(i);break;case cve:this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip);break}let r=this.getStates(),n=ge();kve(),ly(void 0,this.getRootDocV2(),r,this.nodes,this.edges,!0,n.look,this.classes);for(let i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(e){let r=e.id.trim().split(","),n=e.styleClass.split(",");for(let i of r){let a=this.getState(i);if(!a){let s=i.trim();this.addState(s),a=this.getState(s)}a&&(a.styles=n.map(s=>s.replace(/;/g,"")?.trim()))}}setRootDoc(e){X.info("Setting root doc",e),this.rootDoc=e,this.version===1?this.extract(e):this.extract(this.getRootDocV2())}docTranslator(e,r,n){if(r.stmt===E4){this.docTranslator(e,r.state1,!0),this.docTranslator(e,r.state2,!1);return}if(r.stmt===Qf&&(r.id===ws.START_NODE?(r.id=e.id+(n?"_start":"_end"),r.start=n):r.id=r.id.trim()),r.stmt!==u0&&r.stmt!==Qf||!r.doc)return;let i=[],a=[];for(let s of r.doc)if(s.type===lC){let l=mC(s);l.doc=mC(a),i.push(l),a=[]}else a.push(s);if(i.length>0&&a.length>0){let s={stmt:Qf,id:GL(),type:"divider",doc:mC(a)};i.push(mC(s)),r.doc=i}r.doc.forEach(s=>this.docTranslator(r,s,!0))}getRootDocV2(){return this.docTranslator({id:u0,stmt:u0},{id:u0,stmt:u0,doc:this.rootDoc},!0),{id:u0,doc:this.rootDoc}}addState(e,r=h0,n=void 0,i=void 0,a=void 0,s=void 0,l=void 0,u=void 0){let h=e?.trim();if(!this.currentDocument.states.has(h))X.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:Qf,id:h,descriptions:[],type:r,doc:n,note:a,classes:[],styles:[],textStyles:[]});else{let f=this.currentDocument.states.get(h);if(!f)throw new Error(`State not found: ${h}`);f.doc||(f.doc=n),f.type||(f.type=r)}if(i&&(X.info("Setting state description",h,i),(Array.isArray(i)?i:[i]).forEach(d=>this.addDescription(h,d.trim()))),a){let f=this.currentDocument.states.get(h);if(!f)throw new Error(`State not found: ${h}`);f.note=a,f.note.text=tt.sanitizeText(f.note.text,ge())}s&&(X.info("Setting state classes",h,s),(Array.isArray(s)?s:[s]).forEach(d=>this.setCssClass(h,d.trim()))),l&&(X.info("Setting state styles",h,l),(Array.isArray(l)?l:[l]).forEach(d=>this.setStyle(h,d.trim()))),u&&(X.info("Setting state styles",h,l),(Array.isArray(u)?u:[u]).forEach(d=>this.setTextStyle(h,d.trim())))}clear(e){this.nodes=[],this.edges=[],this.documents={root:_ve()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=Ave(),e||(this.links=new Map,Sr())}getState(e){return this.currentDocument.states.get(e)}getStates(){return this.currentDocument.states}logDocuments(){X.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(e,r,n){this.links.set(e,{url:r,tooltip:n}),X.warn("Adding link",e,r,n)}getLinks(){return this.links}startIdIfNeeded(e=""){return e===ws.START_NODE?(this.startEndCount++,`${ws.START_TYPE}${this.startEndCount}`):e}startTypeIfNeeded(e="",r=h0){return e===ws.START_NODE?ws.START_TYPE:r}endIdIfNeeded(e=""){return e===ws.END_NODE?(this.startEndCount++,`${ws.END_TYPE}${this.startEndCount}`):e}endTypeIfNeeded(e="",r=h0){return e===ws.END_NODE?ws.END_TYPE:r}addRelationObjs(e,r,n=""){let i=this.startIdIfNeeded(e.id.trim()),a=this.startTypeIfNeeded(e.id.trim(),e.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(i,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:tt.sanitizeText(n,ge())})}addRelation(e,r,n){if(typeof e=="object"&&typeof r=="object")this.addRelationObjs(e,r,n);else if(typeof e=="string"&&typeof r=="string"){let i=this.startIdIfNeeded(e.trim()),a=this.startTypeIfNeeded(e),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(i,a),this.addState(s,l),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:n?tt.sanitizeText(n,ge()):void 0})}}addDescription(e,r){let n=this.currentDocument.states.get(e),i=r.startsWith(":")?r.replace(":","").trim():r;n?.descriptions?.push(tt.sanitizeText(i,ge()))}cleanupLabel(e){return e.startsWith(":")?e.slice(2).trim():e.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(e,r=""){this.classes.has(e)||this.classes.set(e,{id:e,styles:[],textStyles:[]});let n=this.classes.get(e);r&&n&&r.split(ws.STYLECLASS_SEP).forEach(i=>{let a=i.replace(/([^;]*);/,"$1").trim();if(RegExp(ws.COLOR_KEYWORD).exec(i)){let l=a.replace(ws.FILL_KEYWORD,ws.BG_FILL).replace(ws.COLOR_KEYWORD,ws.FILL_KEYWORD);n.textStyles.push(l)}n.styles.push(a)})}getClasses(){return this.classes}setCssClass(e,r){e.split(",").forEach(n=>{let i=this.getState(n);if(!i){let a=n.trim();this.addState(a),i=this.getState(a)}i?.classes?.push(r)})}setStyle(e,r){this.getState(e)?.styles?.push(r)}setTextStyle(e,r){this.getState(e)?.textStyles?.push(r)}getDirectionStatement(){return this.rootDoc.find(e=>e.stmt==="dir")}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(e){let r=this.getDirectionStatement();r?r.value=e:this.rootDoc.unshift({stmt:"dir",value:e})}trimColon(e){return e.startsWith(":")?e.slice(1).trim():e.trim()}getData(){let e=ge();return{nodes:this.nodes,edges:this.edges,other:{},config:e,direction:E$(this.getRootDocV2())}}getConfig(){return ge().state}}});var set,yC,C$=N(()=>{"use strict";set=o(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?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?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"),yC=set});var oet,cet,uet,het,Lve,fet,det,pet,met,A$,Dve,Rve,Nve=N(()=>{"use strict";yr();gC();tr();gr();Xt();pt();oet=o(t=>t.append("circle").attr("class","start-state").attr("r",ge().state.sizeUnit).attr("cx",ge().state.padding+ge().state.sizeUnit).attr("cy",ge().state.padding+ge().state.sizeUnit),"drawStartState"),cet=o(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",ge().state.textHeight).attr("class","divider").attr("x2",ge().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),uet=o((t,e)=>{let r=t.append("text").attr("x",2*ge().state.padding).attr("y",ge().state.textHeight+2*ge().state.padding).attr("font-size",ge().state.fontSize).attr("class","state-title").text(e.id),n=r.node().getBBox();return t.insert("rect",":first-child").attr("x",ge().state.padding).attr("y",ge().state.padding).attr("width",n.width+2*ge().state.padding).attr("height",n.height+2*ge().state.padding).attr("rx",ge().state.radius),r},"drawSimpleState"),het=o((t,e)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*ge().state.padding).text(m);g||y.attr("dy",ge().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*ge().state.padding).attr("y",ge().state.textHeight+1.3*ge().state.padding).attr("font-size",ge().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),a=i.height,s=t.append("text").attr("x",ge().state.padding).attr("y",a+ge().state.padding*.4+ge().state.dividerMargin+ge().state.textHeight).attr("class","state-description"),l=!0,u=!0;e.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=t.append("line").attr("x1",ge().state.padding).attr("y1",ge().state.padding+a+ge().state.dividerMargin/2).attr("y2",ge().state.padding+a+ge().state.dividerMargin/2).attr("class","descr-divider"),f=s.node().getBBox(),d=Math.max(f.width,i.width);return h.attr("x2",d+3*ge().state.padding),t.insert("rect",":first-child").attr("x",ge().state.padding).attr("y",ge().state.padding).attr("width",d+2*ge().state.padding).attr("height",f.height+a+2*ge().state.padding).attr("rx",ge().state.radius),t},"drawDescrState"),Lve=o((t,e,r)=>{let n=ge().state.padding,i=2*ge().state.padding,a=t.node().getBBox(),s=a.width,l=a.x,u=t.append("text").attr("x",0).attr("y",ge().state.titleShift).attr("font-size",ge().state.fontSize).attr("class","state-title").text(e.id),f=u.node().getBBox().width+i,d=Math.max(f,s);d===s&&(d=d+i);let p,m=t.node().getBBox();e.doc,p=l-n,f>s&&(p=(s-d)/2+n),Math.abs(l-m.x)s&&(p=l-(f-s)/2);let g=1-ge().state.textHeight;return t.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",d).attr("height",m.height+ge().state.textHeight+ge().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),f<=s&&u.attr("x",l+(d-i)/2-f/2+n),t.insert("rect",":first-child").attr("x",p).attr("y",ge().state.titleShift-ge().state.textHeight-ge().state.padding).attr("width",d).attr("height",ge().state.textHeight*3).attr("rx",ge().state.radius),t.insert("rect",":first-child").attr("x",p).attr("y",ge().state.titleShift-ge().state.textHeight-ge().state.padding).attr("width",d).attr("height",m.height+3+2*ge().state.textHeight).attr("rx",ge().state.radius),t},"addTitleAndBox"),fet=o(t=>(t.append("circle").attr("class","end-state-outer").attr("r",ge().state.sizeUnit+ge().state.miniPadding).attr("cx",ge().state.padding+ge().state.sizeUnit+ge().state.miniPadding).attr("cy",ge().state.padding+ge().state.sizeUnit+ge().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",ge().state.sizeUnit).attr("cx",ge().state.padding+ge().state.sizeUnit+2).attr("cy",ge().state.padding+ge().state.sizeUnit+2)),"drawEndState"),det=o((t,e)=>{let r=ge().state.forkWidth,n=ge().state.forkHeight;if(e.parentId){let i=r;r=n,n=i}return t.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",ge().state.padding).attr("y",ge().state.padding)},"drawForkJoinState"),pet=o((t,e,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");let l=s.split(tt.lineBreakRegex),u=1.25*ge().state.noteMargin;for(let h of l){let f=h.trim();if(f.length>0){let d=a.append("tspan");if(d.text(f),u===0){let p=d.node().getBBox();u+=p.height}i+=u,d.attr("x",e+ge().state.noteMargin),d.attr("y",r+i+1.25*ge().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),met=o((t,e)=>{e.attr("class","state-note");let r=e.append("rect").attr("x",0).attr("y",ge().state.padding),n=e.append("g"),{textWidth:i,textHeight:a}=pet(t,0,0,n);return r.attr("height",a+2*ge().state.noteMargin),r.attr("width",i+ge().state.noteMargin*2),r},"drawNote"),A$=o(function(t,e){let r=e.id,n={id:r,label:e.id,width:0,height:0},i=t.append("g").attr("id",r).attr("class","stateGroup");e.type==="start"&&oet(i),e.type==="end"&&fet(i),(e.type==="fork"||e.type==="join")&&det(i,e),e.type==="note"&&met(e.note.text,i),e.type==="divider"&&cet(i),e.type==="default"&&e.descriptions.length===0&&uet(i,e),e.type==="default"&&e.descriptions.length>0&&het(i,e);let a=i.node().getBBox();return n.width=a.width+2*ge().state.padding,n.height=a.height+2*ge().state.padding,n},"drawState"),Dve=0,Rve=o(function(t,e,r){let n=o(function(u){switch(u){case al.relationType.AGGREGATION:return"aggregation";case al.relationType.EXTENSION:return"extension";case al.relationType.COMPOSITION:return"composition";case al.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(u=>!Number.isNaN(u.y));let i=e.points,a=Cl().x(function(u){return u.x}).y(function(u){return u.y}).curve(No),s=t.append("path").attr("d",a(i)).attr("id","edge"+Dve).attr("class","transition"),l="";if(ge().state.arrowMarkerAbsolute&&(l=md(!0)),s.attr("marker-end","url("+l+"#"+n(al.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=t.append("g").attr("class","stateLabel"),{x:h,y:f}=qt.calcLabelPosition(e.points),d=tt.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=d.length;b++){let T=u.append("text").attr("text-anchor","middle").text(d[b]).attr("x",h).attr("y",f+p),S=T.node().getBBox();g=Math.max(g,S.width),y=Math.min(y,S.x),X.info(S.x,h,f+p),p===0&&(p=T.node().getBBox().height,X.info("Title height",p,f)),m.push(T)}let v=p*d.length;if(d.length>1){let b=(d.length-1)*p*.5;m.forEach((T,S)=>T.attr("y",f+S*p-b)),v=p*d.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-ge().state.padding/2).attr("y",f-v/2-ge().state.padding/2-3.5).attr("width",g+ge().state.padding).attr("height",v+ge().state.padding),X.info(x)}Dve++},"drawEdge")});var bo,_$,get,yet,vet,xet,Mve,Ive,Ove=N(()=>{"use strict";yr();hN();qo();pt();gr();Nve();Xt();Ei();_$={},get=o(function(){},"setConf"),yet=o(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"),vet=o(function(t,e,r,n){bo=ge().state;let i=ge().securityLevel,a;i==="sandbox"&&(a=qe("#i"+e));let s=i==="sandbox"?qe(a.nodes()[0].contentDocument.body):qe("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;X.debug("Rendering diagram "+t);let u=s.select(`[id='${e}']`);yet(u);let h=n.db.getRootDoc();Mve(h,u,void 0,!1,s,l,n);let f=bo.padding,d=u.node().getBBox(),p=d.width+f*2,m=d.height+f*2,g=p*1.75;mn(u,m,g,bo.useMaxWidth),u.attr("viewBox",`${d.x-bo.padding} ${d.y-bo.padding} `+p+" "+m)},"draw"),xet=o(t=>t?t.length*bo.fontSizeFactor:1,"getLabelWidth"),Mve=o((t,e,r,n,i,a,s)=>{let l=new cn({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u{let w=S.parentElement,k=0,A=0;w&&(w.parentElement&&(k=w.parentElement.getBBox().width),A=parseInt(w.getAttribute("data-x-shift"),10),Number.isNaN(A)&&(A=0)),S.setAttribute("x1",0-A+8),S.setAttribute("x2",k-A-8)})):X.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(X.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),Rve(e,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*bo.padding,x.height=v.height+2*bo.padding,X.debug("Doc rendered",x,l),x},"renderDoc"),Ive={setConf:get,draw:vet}});var Pve={};dr(Pve,{diagram:()=>bet});var bet,Bve=N(()=>{"use strict";h$();gC();C$();Ove();bet={parser:oC,get db(){return new al(1)},renderer:Ive,styles:yC,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var zve={};dr(zve,{diagram:()=>Eet});var Eet,Gve=N(()=>{"use strict";h$();gC();C$();S$();Eet={parser:oC,get db(){return new al(2)},renderer:Sve,styles:yC,init:o(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")}});var D$,Hve,qve=N(()=>{"use strict";D$=(function(){var t=o(function(d,p,m,g){for(m=m||{},g=d.length;g--;m[d[g]]=p);return m},"o"),e=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(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:o(function(p,m,g,y,v,x,b){var T=x.length-1;switch(v){case 1:return x[T-1];case 2:this.$=[];break;case 3:x[T-1].push(x[T]),this.$=x[T-1];break;case 4:case 5:this.$=x[T];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[T].substr(6)),this.$=x[T].substr(6);break;case 9:this.$=x[T].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[T].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[T].substr(8)),this.$=x[T].substr(8);break;case 13:y.addTask(x[T-1],x[T]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,T="",S=0,w=0,k=0,A=2,C=1,R=x.slice.call(arguments,1),I=Object.create(this.lexer),L={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(L.yy[E]=this.yy[E]);I.setInput(p,L.yy),L.yy.lexer=I,L.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var D=I.yylloc;x.push(D);var _=I.options&&I.options.ranges;typeof L.yy.parseError=="function"?this.parseError=L.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function O(re){g.length=g.length-2*re,v.length=v.length-re,x.length=x.length-re}o(O,"popStack");function M(){var re;return re=y.pop()||I.lex()||C,typeof re!="number"&&(re instanceof Array&&(y=re,re=y.pop()),re=m.symbols_[re]||re),re}o(M,"lex");for(var P,B,F,G,$,U,j={},te,Y,oe,J;;){if(F=g[g.length-1],this.defaultActions[F]?G=this.defaultActions[F]:((P===null||typeof P>"u")&&(P=M()),G=b[F]&&b[F][P]),typeof G>"u"||!G.length||!G[0]){var ue="";J=[];for(te in b[F])this.terminals_[te]&&te>A&&J.push("'"+this.terminals_[te]+"'");I.showPosition?ue="Parse error on line "+(S+1)+`: -`+I.showPosition()+` -Expecting `+J.join(", ")+", got '"+(this.terminals_[P]||P)+"'":ue="Parse error on line "+(S+1)+": Unexpected "+(P==C?"end of input":"'"+(this.terminals_[P]||P)+"'"),this.parseError(ue,{text:I.match,token:this.terminals_[P]||P,line:I.yylineno,loc:D,expected:J})}if(G[0]instanceof Array&&G.length>1)throw new Error("Parse Error: multiple actions possible at state: "+F+", token: "+P);switch(G[0]){case 1:g.push(P),v.push(I.yytext),x.push(I.yylloc),g.push(G[1]),P=null,B?(P=B,B=null):(w=I.yyleng,T=I.yytext,S=I.yylineno,D=I.yylloc,k>0&&k--);break;case 2:if(Y=this.productions_[G[1]][1],j.$=v[v.length-Y],j._$={first_line:x[x.length-(Y||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(Y||1)].first_column,last_column:x[x.length-1].last_column},_&&(j._$.range=[x[x.length-(Y||1)].range[0],x[x.length-1].range[1]]),U=this.performAction.apply(j,[T,w,S,L.yy,G[1],v,x].concat(R)),typeof U<"u")return U;Y&&(g=g.slice(0,-1*Y*2),v=v.slice(0,-1*Y),x=x.slice(0,-1*Y)),g.push(this.productions_[G[1]][0]),v.push(j.$),x.push(j._$),oe=b[g[g.length-2]][g[g.length-1]],g.push(oe);break;case 3:return!0}}return!0},"parse")},h=(function(){var d={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(p){this.unput(this.match.slice(p))},"less"),pastInput:o(function(){var p=this.matched.substr(0,this.matched.length-this.match.length);return(p.length>20?"...":"")+p.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var p=this.match;return p.length<20&&(p+=this._input.substr(0,20-p.length)),(p.substr(0,20)+(p.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var p=this.pastInput(),m=new Array(p.length+1).join("-");return p+this.upcomingInput()+` -`+m+"^"},"showPosition"),test_match:o(function(p,m){var g,y,v;if(this.options.backtrack_lexer&&(v={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(v.yylloc.range=this.yylloc.range.slice(0))),y=p[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+p[0].length},this.yytext+=p[0],this.match+=p[0],this.matches=p,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(p[0].length),this.matched+=p[0],g=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var x in v)this[x]=v[x];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,m,g,y;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),x=0;xm[0].length)){if(m=g,y=x,this.options.backtrack_lexer){if(p=this.test_match(g,v[x]),p!==!1)return p;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(p=this.test_match(m,v[y]),p!==!1?p:!1):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:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return d})();u.lexer=h;function f(){this.yy={}}return o(f,"Parser"),f.prototype=u,u.Parser=f,new f})();D$.parser=D$;Hve=D$});var cy,L$,S4,C4,Det,Let,Ret,Net,Met,Iet,Oet,Wve,Pet,R$,Yve=N(()=>{"use strict";Xt();ci();cy="",L$=[],S4=[],C4=[],Det=o(function(){L$.length=0,S4.length=0,cy="",C4.length=0,Sr()},"clear"),Let=o(function(t){cy=t,L$.push(t)},"addSection"),Ret=o(function(){return L$},"getSections"),Net=o(function(){let t=Wve(),e=100,r=0;for(;!t&&r{r.people&&t.push(...r.people)}),[...new Set(t)].sort()},"updateActors"),Iet=o(function(t,e){let r=e.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(l=>l.trim()),s={section:cy,type:cy,people:a,task:t,score:n};C4.push(s)},"addTask"),Oet=o(function(t){let e={section:cy,type:cy,description:t,task:t,classes:[]};S4.push(e)},"addTaskOrg"),Wve=o(function(){let t=o(function(r){return C4[r].processed},"compileTask"),e=!0;for(let[r,n]of C4.entries())t(r),e=e&&n.processed;return e},"compileTasks"),Pet=o(function(){return Met()},"getActors"),R$={getConfig:o(()=>ge().journey,"getConfig"),clear:Det,setDiagramTitle:$r,getDiagramTitle:Pr,setAccTitle:Rr,getAccTitle:Mr,setAccDescription:Ir,getAccDescription:Or,addSection:Let,getSections:Ret,getTasks:Net,addTask:Iet,addTaskOrg:Oet,getActors:Pet}});var Bet,Xve,jve=N(()=>{"use strict";yg();Bet=o(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}`:""}; - } - ${zc()} -`,"getStyles"),Xve=Bet});var N$,Fet,Qve,Zve,$et,zet,Kve,Get,Vet,Jve,Uet,uy,e2e=N(()=>{"use strict";yr();r2();N$=o(function(t,e){return Fd(t,e)},"drawRect"),Fet=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=Sl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=Sl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),Qve=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),Zve=o(function(t,e){return bj(t,e)},"drawText"),$et=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let 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,Zve(t,e)},"drawLabel"),zet=o(function(t,e,r){let n=t.append("g"),i=ua();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width*e.taskCount+r.diagramMarginX*(e.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,N$(n,i),Jve(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),Kve=-1,Get=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");Kve++,i.append("line").attr("id","task"+Kve).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"),Fet(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=ua();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,N$(i,s);let l=e.x+14;e.people.forEach(u=>{let h=e.actors[u].color,f={cx:l,cy:e.y,r:7,fill:h,stroke:"#000",title:u,pos:e.actors[u].position};Qve(i,f),l+=10}),Jve(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),Vet=o(function(t,e){sT(t,e)},"drawBackgroundRect"),Jve=(function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{let a=lh[i].color,s={cx:20,cy:n,r:7,fill:a,stroke:"#000",pos:lh[i].position};uy.drawCircle(t,s);let l=t.append("text").attr("visibility","hidden").text(i),u=l.node().getBoundingClientRect().width;l.remove();let h=[];if(u<=r)h=[i];else{let f=i.split(" "),d="";l=t.append("text").attr("visibility","hidden"),f.forEach(p=>{let m=d?`${d} ${p}`:p;if(l.text(m),l.node().getBoundingClientRect().width>r){if(d&&h.push(d),d=p,l.text(p),l.node().getBoundingClientRect().width>r){let y="";for(let v of p)y+=v,l.text(y+"-"),l.node().getBoundingClientRect().width>r&&(h.push(y.slice(0,-1)+"-"),y=v);d=y}}else d=m}),d&&h.push(d),l.remove()}h.forEach((f,d)=>{let p={x:40,y:n+7+d*20,fill:"#666",text:f,textMargin:e.boxTextMargin??5},g=uy.drawText(t,p).node().getBoundingClientRect().width;g>vC&&g>e.leftMargin-g&&(vC=g)}),n+=Math.max(20,h.length*20)})}var Het,lh,vC,Hl,Jf,Wet,sl,M$,t2e,Yet,I$,r2e=N(()=>{"use strict";yr();e2e();Xt();Ei();Het=o(function(t){Object.keys(t).forEach(function(r){Hl[r]=t[r]})},"setConf"),lh={},vC=0;o(qet,"drawActorLegend");Hl=ge().journey,Jf=0,Wet=o(function(t,e,r,n){let i=ge(),a=i.journey.titleColor,s=i.journey.titleFontSize,l=i.journey.titleFontFamily,u=i.securityLevel,h;u==="sandbox"&&(h=qe("#i"+e));let f=u==="sandbox"?qe(h.nodes()[0].contentDocument.body):qe("body");sl.init();let d=f.select("#"+e);uy.initGraphics(d);let p=n.db.getTasks(),m=n.db.getDiagramTitle(),g=n.db.getActors();for(let S in lh)delete lh[S];let y=0;g.forEach(S=>{lh[S]={color:Hl.actorColours[y%Hl.actorColours.length],position:y},y++}),qet(d),Jf=Hl.leftMargin+vC,sl.insert(0,0,Jf,Object.keys(lh).length*50),Yet(d,p,0);let v=sl.getBounds();m&&d.append("text").text(m).attr("x",Jf).attr("font-size",s).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",l);let x=v.stopy-v.starty+2*Hl.diagramMarginY,b=Jf+v.stopx+2*Hl.diagramMarginX;mn(d,x,b,Hl.useMaxWidth),d.append("line").attr("x1",Jf).attr("y1",Hl.height*4).attr("x2",b-Jf-4).attr("y2",Hl.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");let T=m?70:0;d.attr("viewBox",`${v.startx} -25 ${b} ${x+T}`),d.attr("preserveAspectRatio","xMinYMin meet"),d.attr("height",x+T+25)},"draw"),sl={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:o(function(t,e,r,n){let i=ge().journey,a=this,s=0;function l(u){return o(function(f){s++;let d=a.sequenceItems.length-s+1;a.updateVal(f,"starty",e-d*i.boxMargin,Math.min),a.updateVal(f,"stopy",n+d*i.boxMargin,Math.max),a.updateVal(sl.data,"startx",t-d*i.boxMargin,Math.min),a.updateVal(sl.data,"stopx",r+d*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(f,"startx",t-d*i.boxMargin,Math.min),a.updateVal(f,"stopx",r+d*i.boxMargin,Math.max),a.updateVal(sl.data,"starty",e-d*i.boxMargin,Math.min),a.updateVal(sl.data,"stopy",n+d*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(t,e,r,n){let i=Math.min(t,r),a=Math.max(t,r),s=Math.min(e,n),l=Math.max(e,n);this.updateVal(sl.data,"startx",i,Math.min),this.updateVal(sl.data,"starty",s,Math.min),this.updateVal(sl.data,"stopx",a,Math.max),this.updateVal(sl.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},M$=Hl.sectionFills,t2e=Hl.sectionColours,Yet=o(function(t,e,r){let n=ge().journey,i="",a=n.height*2+n.diagramMarginY,s=r+a,l=0,u="#CCC",h="black",f=0;for(let[d,p]of e.entries()){if(i!==p.section){u=M$[l%M$.length],f=l%M$.length,h=t2e[l%t2e.length];let g=0,y=p.section;for(let x=d;x(lh[y]&&(g[y]=lh[y]),g),{});p.x=d*n.taskMargin+d*n.width+Jf,p.y=s,p.width=n.diagramMarginX,p.height=n.diagramMarginY,p.colour=h,p.fill=u,p.num=f,p.actors=m,uy.drawTask(t,p,n),sl.insert(p.x,p.y,p.x+p.width+n.taskMargin,450)}},"drawTasks"),I$={setConf:Het,draw:Wet}});var n2e={};dr(n2e,{diagram:()=>Xet});var Xet,i2e=N(()=>{"use strict";qve();Yve();jve();r2e();Xet={parser:Hve,db:R$,renderer:I$,styles:Xve,init:o(t=>{I$.setConf(t.journey),R$.clear()},"init")}});var P$,h2e,f2e=N(()=>{"use strict";P$=(function(){var t=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),e=[6,8,10,11,12,14,16,17,20,21],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,16],u=[1,17],h={trace:o(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:o(function(m,g,y,v,x,b,T){var S=b.length-1;switch(x){case 1:return b[S-1];case 2:this.$=[];break;case 3:b[S-1].push(b[S]),this.$=b[S-1];break;case 4:case 5:this.$=b[S];break;case 6:case 7:this.$=[];break;case 8:v.getCommonDb().setDiagramTitle(b[S].substr(6)),this.$=b[S].substr(6);break;case 9:this.$=b[S].trim(),v.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=b[S].trim(),v.getCommonDb().setAccDescription(this.$);break;case 12:v.addSection(b[S].substr(8)),this.$=b[S].substr(8);break;case 15:v.addTask(b[S],0,""),this.$=b[S];break;case 16:v.addEvent(b[S].substr(2)),this.$=b[S];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:l,21:u},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],T=this.table,S="",w=0,k=0,A=0,C=2,R=1,I=b.slice.call(arguments,1),L=Object.create(this.lexer),E={yy:{}};for(var D in this.yy)Object.prototype.hasOwnProperty.call(this.yy,D)&&(E.yy[D]=this.yy[D]);L.setInput(m,E.yy),E.yy.lexer=L,E.yy.parser=this,typeof L.yylloc>"u"&&(L.yylloc={});var _=L.yylloc;b.push(_);var O=L.options&&L.options.ranges;typeof E.yy.parseError=="function"?this.parseError=E.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function M(ee){y.length=y.length-2*ee,x.length=x.length-ee,b.length=b.length-ee}o(M,"popStack");function P(){var ee;return ee=v.pop()||L.lex()||R,typeof ee!="number"&&(ee instanceof Array&&(v=ee,ee=v.pop()),ee=g.symbols_[ee]||ee),ee}o(P,"lex");for(var B,F,G,$,U,j,te={},Y,oe,J,ue;;){if(G=y[y.length-1],this.defaultActions[G]?$=this.defaultActions[G]:((B===null||typeof B>"u")&&(B=P()),$=T[G]&&T[G][B]),typeof $>"u"||!$.length||!$[0]){var re="";ue=[];for(Y in T[G])this.terminals_[Y]&&Y>C&&ue.push("'"+this.terminals_[Y]+"'");L.showPosition?re="Parse error on line "+(w+1)+`: -`+L.showPosition()+` -Expecting `+ue.join(", ")+", got '"+(this.terminals_[B]||B)+"'":re="Parse error on line "+(w+1)+": Unexpected "+(B==R?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(re,{text:L.match,token:this.terminals_[B]||B,line:L.yylineno,loc:_,expected:ue})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+G+", token: "+B);switch($[0]){case 1:y.push(B),x.push(L.yytext),b.push(L.yylloc),y.push($[1]),B=null,F?(B=F,F=null):(k=L.yyleng,S=L.yytext,w=L.yylineno,_=L.yylloc,A>0&&A--);break;case 2:if(oe=this.productions_[$[1]][1],te.$=x[x.length-oe],te._$={first_line:b[b.length-(oe||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(oe||1)].first_column,last_column:b[b.length-1].last_column},O&&(te._$.range=[b[b.length-(oe||1)].range[0],b[b.length-1].range[1]]),j=this.performAction.apply(te,[S,k,w,E.yy,$[1],x,b].concat(I)),typeof j<"u")return j;oe&&(y=y.slice(0,-1*oe*2),x=x.slice(0,-1*oe),b=b.slice(0,-1*oe)),y.push(this.productions_[$[1]][0]),x.push(te.$),b.push(te._$),J=T[y[y.length-2]][y[y.length-1]],y.push(J);break;case 3:return!0}}return!0},"parse")},f=(function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1&&(this.yylineno-=y.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(m){this.unput(this.match.slice(m))},"less"),pastInput:o(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var m=this.pastInput(),g=new Array(m.length+1).join("-");return m+this.upcomingInput()+` -`+g+"^"},"showPosition"),test_match:o(function(m,g){var y,v,x;if(this.options.backtrack_lexer&&(x={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(x.yylloc.range=this.yylloc.range.slice(0))),v=m[0].match(/(?:\r\n?|\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(m[0].length),this.matched+=m[0],y=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),y)return y;if(this._backtrack){for(var b in x)this[b]=x[b];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,g,y,v;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),b=0;bg[0].length)){if(g=y,v=b,this.options.backtrack_lexer){if(m=this.test_match(y,x[b]),m!==!1)return m;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(m=this.test_match(g,x[v]),m!==!1?m:!1):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:o(function(){var g=this.next();return g||this.lex()},"lex"),begin:o(function(g){this.conditionStack.push(g)},"begin"),popState:o(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return p})();h.lexer=f;function d(){this.yy={}}return o(d,"Parser"),d.prototype=h,h.Parser=d,new d})();P$.parser=P$;h2e=P$});var F$={};dr(F$,{addEvent:()=>T2e,addSection:()=>y2e,addTask:()=>b2e,addTaskOrg:()=>w2e,clear:()=>g2e,default:()=>ntt,getCommonDb:()=>m2e,getSections:()=>v2e,getTasks:()=>x2e});var hy,p2e,B$,xC,fy,m2e,g2e,y2e,v2e,x2e,b2e,T2e,w2e,d2e,ntt,k2e=N(()=>{"use strict";ci();hy="",p2e=0,B$=[],xC=[],fy=[],m2e=o(()=>rv,"getCommonDb"),g2e=o(function(){B$.length=0,xC.length=0,hy="",fy.length=0,Sr()},"clear"),y2e=o(function(t){hy=t,B$.push(t)},"addSection"),v2e=o(function(){return B$},"getSections"),x2e=o(function(){let t=d2e(),e=100,r=0;for(;!t&&rr.id===p2e-1).events.push(t)},"addEvent"),w2e=o(function(t){let e={section:hy,type:hy,description:t,task:t,classes:[]};xC.push(e)},"addTaskOrg"),d2e=o(function(){let t=o(function(r){return fy[r].processed},"compileTask"),e=!0;for(let[r,n]of fy.entries())t(r),e=e&&n.processed;return e},"compileTasks"),ntt={clear:g2e,getCommonDb:m2e,addSection:y2e,getSections:v2e,getTasks:x2e,addTask:b2e,addTaskOrg:w2e,addEvent:T2e}});function A2e(t,e){t.each(function(){var r=qe(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let f=0;fe||i==="
    ")&&(a.pop(),h.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var itt,bC,att,stt,S2e,ott,ltt,E2e,ctt,utt,htt,$$,C2e,ftt,dtt,ptt,mtt,ed,_2e=N(()=>{"use strict";yr();itt=12,bC=o(function(t,e){let r=t.append("rect");return 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),r.attr("rx",e.rx),r.attr("ry",e.ry),e.class!==void 0&&r.attr("class",e.class),r},"drawRect"),att=o(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=Sl().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}o(a,"smile");function s(u){let h=Sl().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),e.score>3?a(i):e.score<3?s(i):l(i),n},"drawFace"),stt=o(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),S2e=o(function(t,e){let r=e.text.replace(//gi," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class!==void 0&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),ott=o(function(t,e){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let 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,S2e(t,e)},"drawLabel"),ltt=o(function(t,e,r){let n=t.append("g"),i=$$();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,bC(n,i),C2e(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),E2e=-1,ctt=o(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");E2e++,i.append("line").attr("id","task"+E2e).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"),att(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=$$();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,bC(i,s),C2e(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),utt=o(function(t,e){bC(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),htt=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),$$=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),C2e=(function(){function t(i,a,s,l,u,h,f,d){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",d).style("text-anchor","middle").text(i);n(p,f)}o(t,"byText");function e(i,a,s,l,u,h,f,d,p){let{taskFontSize:m,taskFontFamily:g}=d,y=i.split(//gi);for(let v=0;v{"use strict";yr();_2e();pt();Xt();Ei();gtt=o(function(t,e,r,n){let i=ge(),a=i.timeline?.leftMargin??50;X.debug("timeline",n.db);let s=i.securityLevel,l;s==="sandbox"&&(l=qe("#i"+e));let h=(s==="sandbox"?qe(l.nodes()[0].contentDocument.body):qe("body")).select("#"+e);h.append("g");let f=n.db.getTasks(),d=n.db.getCommonDb().getDiagramTitle();X.debug("task",f),ed.initGraphics(h);let p=n.db.getSections();X.debug("sections",p);let m=0,g=0,y=0,v=0,x=50+a,b=50;v=50;let T=0,S=!0;p.forEach(function(R){let I={number:T,descr:R,section:T,width:150,padding:20,maxHeight:m},L=ed.getVirtualNodeHeight(h,I,i);X.debug("sectionHeight before draw",L),m=Math.max(m,L+20)});let w=0,k=0;X.debug("tasks.length",f.length);for(let[R,I]of f.entries()){let L={number:R,descr:I,section:I.section,width:150,padding:20,maxHeight:g},E=ed.getVirtualNodeHeight(h,L,i);X.debug("taskHeight before draw",E),g=Math.max(g,E+20),w=Math.max(w,I.events.length);let D=0;for(let _ of I.events){let O={descr:_,section:I.section,number:I.section,width:150,padding:20,maxHeight:50};D+=ed.getVirtualNodeHeight(h,O,i)}I.events.length>0&&(D+=(I.events.length-1)*10),k=Math.max(k,D)}X.debug("maxSectionHeight before draw",m),X.debug("maxTaskHeight before draw",g),p&&p.length>0?p.forEach(R=>{let I=f.filter(_=>_.section===R),L={number:T,descr:R,section:T,width:200*Math.max(I.length,1)-50,padding:20,maxHeight:m};X.debug("sectionNode",L);let E=h.append("g"),D=ed.drawNode(E,L,T,i);X.debug("sectionNode output",D),E.attr("transform",`translate(${x}, ${v})`),b+=m+50,I.length>0&&D2e(h,I,T,x,b,g,i,w,k,m,!1),x+=200*Math.max(I.length,1),b=v,T++}):(S=!1,D2e(h,f,T,x,b,g,i,w,k,m,!0));let A=h.node().getBBox();X.debug("bounds",A),d&&h.append("text").text(d).attr("x",A.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),y=S?m+g+150:g+100,h.append("g").attr("class","lineWrapper").append("line").attr("x1",a).attr("y1",y).attr("x2",A.width+3*a).attr("y2",y).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),ic(void 0,h,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),D2e=o(function(t,e,r,n,i,a,s,l,u,h,f){for(let d of e){let p={descr:d.task,section:r,number:r,width:150,padding:20,maxHeight:a};X.debug("taskNode",p);let m=t.append("g").attr("class","taskWrapper"),y=ed.drawNode(m,p,r,s).height;if(X.debug("taskHeight after draw",y),m.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,y),d.events){let v=t.append("g").attr("class","lineWrapper"),x=a;i+=100,x=x+ytt(t,d.events,r,n,i,s),i-=100,v.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+100+u+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}n=n+200,f&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),ytt=o(function(t,e,r,n,i,a){let s=0,l=i;i=i+100;for(let u of e){let h={descr:u,section:r,number:r,width:150,padding:20,maxHeight:50};X.debug("eventNode",h);let f=t.append("g").attr("class","eventWrapper"),p=ed.drawNode(f,h,r,a).height;s=s+p,f.attr("transform",`translate(${n}, ${i})`),i=i+10+p}return i=l,s},"drawEvents"),L2e={setConf:o(()=>{},"setConf"),draw:gtt}});var vtt,xtt,N2e,M2e=N(()=>{"use strict";eo();vtt=o(t=>{let e="";for(let r=0;r` - .edge { - stroke-width: 3; - } - ${vtt(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"),N2e=xtt});var I2e={};dr(I2e,{diagram:()=>btt});var btt,O2e=N(()=>{"use strict";f2e();k2e();R2e();M2e();btt={db:F$,renderer:L2e,parser:h2e,styles:N2e}});var z$,F2e,$2e=N(()=>{"use strict";z$=(function(){var t=o(function(S,w,k,A){for(k=k||{},A=S.length;A--;k[S[A]]=w);return k},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(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:o(function(w,k,A,C,R,I,L){var E=I.length-1;switch(R){case 6:case 7:return C;case 8:C.getLogger().trace("Stop NL ");break;case 9:C.getLogger().trace("Stop EOF ");break;case 11:C.getLogger().trace("Stop NL2 ");break;case 12:C.getLogger().trace("Stop EOF2 ");break;case 15:C.getLogger().info("Node: ",I[E].id),C.addNode(I[E-1].length,I[E].id,I[E].descr,I[E].type);break;case 16:C.getLogger().trace("Icon: ",I[E]),C.decorateNode({icon:I[E]});break;case 17:case 21:C.decorateNode({class:I[E]});break;case 18:C.getLogger().trace("SPACELIST");break;case 19:C.getLogger().trace("Node: ",I[E].id),C.addNode(0,I[E].id,I[E].descr,I[E].type);break;case 20:C.decorateNode({icon:I[E]});break;case 25:C.getLogger().trace("node found ..",I[E-2]),this.$={id:I[E-1],descr:I[E-1],type:C.getType(I[E-2],I[E])};break;case 26:this.$={id:I[E],descr:I[E],type:C.nodeType.DEFAULT};break;case 27:C.getLogger().trace("node found ..",I[E-3]),this.$={id:I[E-3],descr:I[E-1],type:C.getType(I[E-2],I[E])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:f,10:23,11:d},t(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),t(p,[2,18]),t(p,[2,19]),t(p,[2,20]),t(p,[2,21]),t(p,[2,23]),t(p,[2,24]),t(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:f,10:32,11:d},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},t(m,[2,14],{7:g,11:y}),t(v,[2,8]),t(v,[2,9]),t(v,[2,10]),t(p,[2,15]),t(p,[2,16]),t(p,[2,17]),{20:[1,35]},{21:[1,36]},t(m,[2,13],{7:g,11:y}),t(v,[2,11]),t(v,[2,12]),{21:[1,37]},t(p,[2,25]),t(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(w,k){if(k.recoverable)this.trace(w);else{var A=new Error(w);throw A.hash=k,A}},"parseError"),parse:o(function(w){var k=this,A=[0],C=[],R=[null],I=[],L=this.table,E="",D=0,_=0,O=0,M=2,P=1,B=I.slice.call(arguments,1),F=Object.create(this.lexer),G={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(G.yy[$]=this.yy[$]);F.setInput(w,G.yy),G.yy.lexer=F,G.yy.parser=this,typeof F.yylloc>"u"&&(F.yylloc={});var U=F.yylloc;I.push(U);var j=F.options&&F.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function te(q){A.length=A.length-2*q,R.length=R.length-q,I.length=I.length-q}o(te,"popStack");function Y(){var q;return q=C.pop()||F.lex()||P,typeof q!="number"&&(q instanceof Array&&(C=q,q=C.pop()),q=k.symbols_[q]||q),q}o(Y,"lex");for(var oe,J,ue,re,ee,Z,K={},ae,Q,de,ne;;){if(ue=A[A.length-1],this.defaultActions[ue]?re=this.defaultActions[ue]:((oe===null||typeof oe>"u")&&(oe=Y()),re=L[ue]&&L[ue][oe]),typeof re>"u"||!re.length||!re[0]){var Te="";ne=[];for(ae in L[ue])this.terminals_[ae]&&ae>M&&ne.push("'"+this.terminals_[ae]+"'");F.showPosition?Te="Parse error on line "+(D+1)+`: -`+F.showPosition()+` -Expecting `+ne.join(", ")+", got '"+(this.terminals_[oe]||oe)+"'":Te="Parse error on line "+(D+1)+": Unexpected "+(oe==P?"end of input":"'"+(this.terminals_[oe]||oe)+"'"),this.parseError(Te,{text:F.match,token:this.terminals_[oe]||oe,line:F.yylineno,loc:U,expected:ne})}if(re[0]instanceof Array&&re.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ue+", token: "+oe);switch(re[0]){case 1:A.push(oe),R.push(F.yytext),I.push(F.yylloc),A.push(re[1]),oe=null,J?(oe=J,J=null):(_=F.yyleng,E=F.yytext,D=F.yylineno,U=F.yylloc,O>0&&O--);break;case 2:if(Q=this.productions_[re[1]][1],K.$=R[R.length-Q],K._$={first_line:I[I.length-(Q||1)].first_line,last_line:I[I.length-1].last_line,first_column:I[I.length-(Q||1)].first_column,last_column:I[I.length-1].last_column},j&&(K._$.range=[I[I.length-(Q||1)].range[0],I[I.length-1].range[1]]),Z=this.performAction.apply(K,[E,_,D,G.yy,re[1],R,I].concat(B)),typeof Z<"u")return Z;Q&&(A=A.slice(0,-1*Q*2),R=R.slice(0,-1*Q),I=I.slice(0,-1*Q)),A.push(this.productions_[re[1]][0]),R.push(K.$),I.push(K._$),de=L[A[A.length-2]][A[A.length-1]],A.push(de);break;case 3:return!0}}return!0},"parse")},b=(function(){var S={EOF:1,parseError:o(function(k,A){if(this.yy.parser)this.yy.parser.parseError(k,A);else throw new Error(k)},"parseError"),setInput:o(function(w,k){return this.yy=k||this.yy||{},this._input=w,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var w=this._input[0];this.yytext+=w,this.yyleng++,this.offset++,this.match+=w,this.matched+=w;var k=w.match(/(?:\r\n?|\n).*/g);return k?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),w},"input"),unput:o(function(w){var k=w.length,A=w.split(/(?:\r\n?|\n)/g);this._input=w+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var C=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),A.length-1&&(this.yylineno-=A.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:A?(A.length===C.length?this.yylloc.first_column:0)+C[C.length-A.length].length-A[0].length:this.yylloc.first_column-k},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-k]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(w){this.unput(this.match.slice(w))},"less"),pastInput:o(function(){var w=this.matched.substr(0,this.matched.length-this.match.length);return(w.length>20?"...":"")+w.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var w=this.match;return w.length<20&&(w+=this._input.substr(0,20-w.length)),(w.substr(0,20)+(w.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var w=this.pastInput(),k=new Array(w.length+1).join("-");return w+this.upcomingInput()+` -`+k+"^"},"showPosition"),test_match:o(function(w,k){var A,C,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),C=w[0].match(/(?:\r\n?|\n).*/g),C&&(this.yylineno+=C.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:C?C[C.length-1].length-C[C.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+w[0].length},this.yytext+=w[0],this.match+=w[0],this.matches=w,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(w[0].length),this.matched+=w[0],A=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),A)return A;if(this._backtrack){for(var I in R)this[I]=R[I];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var w,k,A,C;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),I=0;Ik[0].length)){if(k=A,C=I,this.options.backtrack_lexer){if(w=this.test_match(A,R[I]),w!==!1)return w;if(this._backtrack){k=!1;continue}else return!1}else if(!this.options.flex)break}return k?(w=this.test_match(k,R[C]),w!==!1?w:!1):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:o(function(){var k=this.next();return k||this.lex()},"lex"),begin:o(function(k){this.conditionStack.push(k)},"begin"),popState:o(function(){var k=this.conditionStack.length-1;return k>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(k){return k=this.conditionStack.length-1-Math.abs(k||0),k>=0?this.conditionStack[k]:"INITIAL"},"topState"),pushState:o(function(k){this.begin(k)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(k,A,C,R){var I=R;switch(C){case 0:return k.getLogger().trace("Found comment",A.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:k.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return k.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:k.getLogger().trace("end icon"),this.popState();break;case 10:return k.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return k.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return k.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return k.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:k.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return k.getLogger().trace("description:",A.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),k.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),k.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),k.getLogger().trace("node end ...",A.yytext),"NODE_DEND";break;case 30:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),k.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),k.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),k.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return k.getLogger().trace("Long description:",A.yytext),20;break;case 36:return k.getLogger().trace("Long description:",A.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return S})();x.lexer=b;function T(){this.yy={}}return o(T,"Parser"),T.prototype=x,x.Parser=T,new T})();z$.parser=z$;F2e=z$});function z2e(t,e=0){return(Aa[t[e+0]]+Aa[t[e+1]]+Aa[t[e+2]]+Aa[t[e+3]]+"-"+Aa[t[e+4]]+Aa[t[e+5]]+"-"+Aa[t[e+6]]+Aa[t[e+7]]+"-"+Aa[t[e+8]]+Aa[t[e+9]]+"-"+Aa[t[e+10]]+Aa[t[e+11]]+Aa[t[e+12]]+Aa[t[e+13]]+Aa[t[e+14]]+Aa[t[e+15]]).toLowerCase()}var Aa,G2e=N(()=>{"use strict";Aa=[];for(let t=0;t<256;++t)Aa.push((t+256).toString(16).slice(1));o(z2e,"unsafeStringify")});function V$(){if(!G$){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");G$=crypto.getRandomValues.bind(crypto)}return G$(Ett)}var G$,Ett,V2e=N(()=>{"use strict";Ett=new Uint8Array(16);o(V$,"rng")});var Stt,U$,U2e=N(()=>{"use strict";Stt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),U$={randomUUID:Stt}});function Ctt(t,e,r){if(U$.randomUUID&&!e&&!t)return U$.randomUUID();t=t||{};let n=t.random??t.rng?.()??V$();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){if(r=r||0,r<0||r+16>e.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let i=0;i<16;++i)e[r+i]=n[i];return e}return z2e(n)}var H$,H2e=N(()=>{"use strict";U2e();V2e();G2e();o(Ctt,"v4");H$=Ctt});var q2e=N(()=>{"use strict";H2e()});var ch,TC,W2e=N(()=>{"use strict";Xt();q2e();gr();pt();La();qn();ch={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},TC=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this),this.nodeType=ch,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{o(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(e){for(let r=this.nodes.length-1;r>=0;r--)if(this.nodes[r].level0?this.nodes[0]:null}addNode(e,r,n,i){X.info("addNode",e,r,n,i);let a=!1;this.nodes.length===0?(this.baseLevel=e,e=0,a=!0):this.baseLevel!==void 0&&(e=e-this.baseLevel,a=!1);let s=ge(),l=s.mindmap?.padding??ur.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:l*=2;break}let u={id:this.count++,nodeId:sr(r,s),level:e,descr:sr(n,s),type:i,children:[],width:s.mindmap?.maxNodeWidth??ur.mindmap.maxNodeWidth,padding:l,isRoot:a},h=this.getParent(e);if(h)h.children.push(u),this.nodes.push(u);else if(a)this.nodes.push(u);else throw new Error(`There can be only one root. No parent could be found for ("${u.descr}")`)}getType(e,r){switch(X.debug("In get type",e,r),e){case"[":return this.nodeType.RECT;case"(":return r===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(e,r){this.elements[e]=r}getElementById(e){return this.elements[e]}decorateNode(e){if(!e)return;let r=ge(),n=this.nodes[this.nodes.length-1];e.icon&&(n.icon=sr(e.icon,r)),e.class&&(n.class=sr(e.class,r))}type2Str(e){switch(e){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(e,r){if(e.level===0?e.section=void 0:e.section=r,e.children)for(let[n,i]of e.children.entries()){let a=e.level===0?n:r;this.assignSections(i,a)}}flattenNodes(e,r){let n=["mindmap-node"];e.isRoot===!0?n.push("section-root","section--1"):e.section!==void 0&&n.push(`section-${e.section}`),e.class&&n.push(e.class);let i=n.join(" "),a=o(l=>{switch(l){case ch.CIRCLE:return"mindmapCircle";case ch.RECT:return"rect";case ch.ROUNDED_RECT:return"rounded";case ch.CLOUD:return"cloud";case ch.BANG:return"bang";case ch.HEXAGON:return"hexagon";case ch.DEFAULT:return"defaultMindmapNode";case ch.NO_BORDER:default:return"rect"}},"getShapeFromType"),s={id:e.id.toString(),domId:"node_"+e.id.toString(),label:e.descr,isGroup:!1,shape:a(e.type),width:e.width,height:e.height??0,padding:e.padding,cssClasses:i,cssStyles:[],look:"default",icon:e.icon,x:e.x,y:e.y,level:e.level,nodeId:e.nodeId,type:e.type,section:e.section};if(r.push(s),e.children)for(let l of e.children)this.flattenNodes(l,r)}generateEdges(e,r){if(e.children)for(let n of e.children){let i="edge";n.section!==void 0&&(i+=` section-edge-${n.section}`);let a=e.level+1;i+=` edge-depth-${a}`;let s={id:`edge_${e.id}_${n.id}`,start:e.id.toString(),end:n.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:"default",classes:i,depth:e.level,section:n.section};r.push(s),this.generateEdges(n,r)}}getData(){let e=this.getMindmap(),r=ge(),i=eV().layout!==void 0,a=r;if(i||(a.layout="cose-bilkent"),!e)return{nodes:[],edges:[],config:a};X.debug("getData: mindmapRoot",e,r),this.assignSections(e);let s=[],l=[];this.flattenNodes(e,s),this.generateEdges(e,l),X.debug(`getData: processed ${s.length} nodes and ${l.length} edges`);let u=new Map;for(let h of s)u.set(h.id,{shape:h.shape,width:h.width,height:h.height,padding:h.padding});return{nodes:s,edges:l,config:a,rootNode:e,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(u),type:"mindmap",diagramId:"mindmap-"+H$()}}getLogger(){return X}}});var Att,Y2e,X2e=N(()=>{"use strict";pt();ep();Nf();Mf();La();Att=o(async(t,e,r,n)=>{X.debug(`Rendering mindmap diagram -`+t);let i=n.db,a=i.getData(),s=Vo(e,a.config.securityLevel);a.type=n.type,a.layoutAlgorithm=$c(a.config.layout,{fallback:"cose-bilkent"}),a.diagramId=e,i.getMindmap()&&(a.nodes.forEach(u=>{u.shape==="rounded"?(u.radius=15,u.taper=15,u.stroke="none",u.width=0,u.padding=15):u.shape==="circle"?u.padding=10:u.shape==="rect"&&(u.width=0,u.padding=10)}),await Qo(a,s),Ws(s,a.config.mindmap?.padding??ur.mindmap.padding,"mindmapDiagram",a.config.mindmap?.useMaxWidth??ur.mindmap.useMaxWidth))},"draw"),Y2e={draw:Att}});var _tt,Dtt,j2e,K2e=N(()=>{"use strict";eo();_tt=o(t=>{let e="";for(let r=0;r` - .edge { - stroke-width: 3; - } - ${_tt(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"),j2e=Dtt});var Q2e={};dr(Q2e,{diagram:()=>Ltt});var Ltt,Z2e=N(()=>{"use strict";$2e();W2e();X2e();K2e();Ltt={get db(){return new TC},renderer:Y2e,parser:F2e,styles:j2e}});var q$,txe,rxe=N(()=>{"use strict";q$=(function(){var t=o(function(A,C,R,I){for(R=R||{},I=A.length;I--;R[A[I]]=C);return R},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],f=[1,24],d=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],T=[1,38],S={trace:o(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:o(function(C,R,I,L,E,D,_){var O=D.length-1;switch(E){case 6:case 7:return L;case 8:L.getLogger().trace("Stop NL ");break;case 9:L.getLogger().trace("Stop EOF ");break;case 11:L.getLogger().trace("Stop NL2 ");break;case 12:L.getLogger().trace("Stop EOF2 ");break;case 15:L.getLogger().info("Node: ",D[O-1].id),L.addNode(D[O-2].length,D[O-1].id,D[O-1].descr,D[O-1].type,D[O]);break;case 16:L.getLogger().info("Node: ",D[O].id),L.addNode(D[O-1].length,D[O].id,D[O].descr,D[O].type);break;case 17:L.getLogger().trace("Icon: ",D[O]),L.decorateNode({icon:D[O]});break;case 18:case 23:L.decorateNode({class:D[O]});break;case 19:L.getLogger().trace("SPACELIST");break;case 20:L.getLogger().trace("Node: ",D[O-1].id),L.addNode(0,D[O-1].id,D[O-1].descr,D[O-1].type,D[O]);break;case 21:L.getLogger().trace("Node: ",D[O].id),L.addNode(0,D[O].id,D[O].descr,D[O].type);break;case 22:L.decorateNode({icon:D[O]});break;case 27:L.getLogger().trace("node found ..",D[O-2]),this.$={id:D[O-1],descr:D[O-1],type:L.getType(D[O-2],D[O])};break;case 28:this.$={id:D[O],descr:D[O],type:0};break;case 29:L.getLogger().trace("node found ..",D[O-3]),this.$={id:D[O-3],descr:D[O-1],type:L.getType(D[O-2],D[O])};break;case 30:this.$=D[O-1]+D[O];break;case 31:this.$=D[O];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(u,[2,3]),{1:[2,2]},t(u,[2,4]),t(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:f,10:23,11:d},t(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),t(p,[2,19]),t(p,[2,21],{15:30,24:m}),t(p,[2,22]),t(p,[2,23]),t(g,[2,25]),t(g,[2,26]),t(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:f,10:34,11:d},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},t(y,[2,14],{7:v,11:x}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(p,[2,16],{15:37,24:m}),t(p,[2,17]),t(p,[2,18]),t(p,[2,20],{24:T}),t(g,[2,31]),{21:[1,39]},{22:[1,40]},t(y,[2,13],{7:v,11:x}),t(b,[2,11]),t(b,[2,12]),t(p,[2,15],{24:T}),t(g,[2,30]),{22:[1,41]},t(g,[2,27]),t(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(C,R){if(R.recoverable)this.trace(C);else{var I=new Error(C);throw I.hash=R,I}},"parseError"),parse:o(function(C){var R=this,I=[0],L=[],E=[null],D=[],_=this.table,O="",M=0,P=0,B=0,F=2,G=1,$=D.slice.call(arguments,1),U=Object.create(this.lexer),j={yy:{}};for(var te in this.yy)Object.prototype.hasOwnProperty.call(this.yy,te)&&(j.yy[te]=this.yy[te]);U.setInput(C,j.yy),j.yy.lexer=U,j.yy.parser=this,typeof U.yylloc>"u"&&(U.yylloc={});var Y=U.yylloc;D.push(Y);var oe=U.options&&U.options.ranges;typeof j.yy.parseError=="function"?this.parseError=j.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function J(Be){I.length=I.length-2*Be,E.length=E.length-Be,D.length=D.length-Be}o(J,"popStack");function ue(){var Be;return Be=L.pop()||U.lex()||G,typeof Be!="number"&&(Be instanceof Array&&(L=Be,Be=L.pop()),Be=R.symbols_[Be]||Be),Be}o(ue,"lex");for(var re,ee,Z,K,ae,Q,de={},ne,Te,q,Ve;;){if(Z=I[I.length-1],this.defaultActions[Z]?K=this.defaultActions[Z]:((re===null||typeof re>"u")&&(re=ue()),K=_[Z]&&_[Z][re]),typeof K>"u"||!K.length||!K[0]){var pe="";Ve=[];for(ne in _[Z])this.terminals_[ne]&&ne>F&&Ve.push("'"+this.terminals_[ne]+"'");U.showPosition?pe="Parse error on line "+(M+1)+`: -`+U.showPosition()+` -Expecting `+Ve.join(", ")+", got '"+(this.terminals_[re]||re)+"'":pe="Parse error on line "+(M+1)+": Unexpected "+(re==G?"end of input":"'"+(this.terminals_[re]||re)+"'"),this.parseError(pe,{text:U.match,token:this.terminals_[re]||re,line:U.yylineno,loc:Y,expected:Ve})}if(K[0]instanceof Array&&K.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Z+", token: "+re);switch(K[0]){case 1:I.push(re),E.push(U.yytext),D.push(U.yylloc),I.push(K[1]),re=null,ee?(re=ee,ee=null):(P=U.yyleng,O=U.yytext,M=U.yylineno,Y=U.yylloc,B>0&&B--);break;case 2:if(Te=this.productions_[K[1]][1],de.$=E[E.length-Te],de._$={first_line:D[D.length-(Te||1)].first_line,last_line:D[D.length-1].last_line,first_column:D[D.length-(Te||1)].first_column,last_column:D[D.length-1].last_column},oe&&(de._$.range=[D[D.length-(Te||1)].range[0],D[D.length-1].range[1]]),Q=this.performAction.apply(de,[O,P,M,j.yy,K[1],E,D].concat($)),typeof Q<"u")return Q;Te&&(I=I.slice(0,-1*Te*2),E=E.slice(0,-1*Te),D=D.slice(0,-1*Te)),I.push(this.productions_[K[1]][0]),E.push(de.$),D.push(de._$),q=_[I[I.length-2]][I[I.length-1]],I.push(q);break;case 3:return!0}}return!0},"parse")},w=(function(){var A={EOF:1,parseError:o(function(R,I){if(this.yy.parser)this.yy.parser.parseError(R,I);else throw new Error(R)},"parseError"),setInput:o(function(C,R){return this.yy=R||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var R=C.match(/(?:\r\n?|\n).*/g);return R?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var R=C.length,I=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-R),this.offset-=R;var L=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),I.length-1&&(this.yylineno-=I.length-1);var E=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:I?(I.length===L.length?this.yylloc.first_column:0)+L[L.length-I.length].length-I[0].length:this.yylloc.first_column-R},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-R]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),R=new Array(C.length+1).join("-");return C+this.upcomingInput()+` -`+R+"^"},"showPosition"),test_match:o(function(C,R){var I,L,E;if(this.options.backtrack_lexer&&(E={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(E.yylloc.range=this.yylloc.range.slice(0))),L=C[0].match(/(?:\r\n?|\n).*/g),L&&(this.yylineno+=L.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:L?L[L.length-1].length-L[L.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],I=this.performAction.call(this,this.yy,this,R,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),I)return I;if(this._backtrack){for(var D in E)this[D]=E[D];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,R,I,L;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),D=0;DR[0].length)){if(R=I,L=D,this.options.backtrack_lexer){if(C=this.test_match(I,E[D]),C!==!1)return C;if(this._backtrack){R=!1;continue}else return!1}else if(!this.options.flex)break}return R?(C=this.test_match(R,E[L]),C!==!1?C:!1):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:o(function(){var R=this.next();return R||this.lex()},"lex"),begin:o(function(R){this.conditionStack.push(R)},"begin"),popState:o(function(){var R=this.conditionStack.length-1;return R>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(R){return R=this.conditionStack.length-1-Math.abs(R||0),R>=0?this.conditionStack[R]:"INITIAL"},"topState"),pushState:o(function(R){this.begin(R)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(R,I,L,E){var D=E;switch(L){case 0:return this.pushState("shapeData"),I.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let _=/\n\s*/g;return I.yytext=I.yytext.replace(_,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return R.getLogger().trace("Found comment",I.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:R.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return R.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:R.getLogger().trace("end icon"),this.popState();break;case 16:return R.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return R.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return R.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return R.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;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:R.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return R.getLogger().trace("description:",I.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),R.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),R.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),R.getLogger().trace("node end ...",I.yytext),"NODE_DEND";break;case 36:return this.popState(),R.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),R.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),R.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),R.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),R.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return R.getLogger().trace("Long description:",I.yytext),21;break;case 42:return R.getLogger().trace("Long description:",I.yytext),21;break}},"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}}};return A})();S.lexer=w;function k(){this.yy={}}return o(k,"Parser"),k.prototype=S,S.Parser=k,new k})();q$.parser=q$;txe=q$});var ol,Y$,W$,X$,Itt,Ott,nxe,Ptt,Btt,Ui,Ftt,$tt,ztt,Gtt,Vtt,Utt,Htt,ixe,axe=N(()=>{"use strict";Xt();gr();pt();La();w2();ol=[],Y$=[],W$=0,X$={},Itt=o(()=>{ol=[],Y$=[],W$=0,X$={}},"clear"),Ott=o(t=>{if(ol.length===0)return null;let e=ol[0].level,r=null;for(let n=ol.length-1;n>=0;n--)if(ol[n].level===e&&!r&&(r=ol[n]),ol[n].levell.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:sr(l.label??"",n),isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};e.push(u)}}return{nodes:e,edges:t,other:{},config:ge()}},"getData"),Btt=o((t,e,r,n,i)=>{let a=ge(),s=a.mindmap?.padding??ur.mindmap.padding;switch(n){case Ui.ROUNDED_RECT:case Ui.RECT:case Ui.HEXAGON:s*=2}let l={id:sr(e,a)||"kbn"+W$++,level:t,label:sr(r,a),width:a.mindmap?.maxNodeWidth??ur.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(` -`)?h=i+` -`:h=`{ -`+i+` -}`;let f=Kh(h,{schema:jh});if(f.shape&&(f.shape!==f.shape.toLowerCase()||f.shape.includes("_")))throw new Error(`No such shape: ${f.shape}. Shape names should be lowercase.`);f?.shape&&f.shape==="kanbanItem"&&(l.shape=f?.shape),f?.label&&(l.label=f?.label),f?.icon&&(l.icon=f?.icon.toString()),f?.assigned&&(l.assigned=f?.assigned.toString()),f?.ticket&&(l.ticket=f?.ticket.toString()),f?.priority&&(l.priority=f?.priority)}let u=Ott(t);u?l.parentId=u.id||"kbn"+W$++:Y$.push(l),ol.push(l)},"addNode"),Ui={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Ftt=o((t,e)=>{switch(X.debug("In get type",t,e),t){case"[":return Ui.RECT;case"(":return e===")"?Ui.ROUNDED_RECT:Ui.CLOUD;case"((":return Ui.CIRCLE;case")":return Ui.CLOUD;case"))":return Ui.BANG;case"{{":return Ui.HEXAGON;default:return Ui.DEFAULT}},"getType"),$tt=o((t,e)=>{X$[t]=e},"setElementForId"),ztt=o(t=>{if(!t)return;let e=ge(),r=ol[ol.length-1];t.icon&&(r.icon=sr(t.icon,e)),t.class&&(r.cssClasses=sr(t.class,e))},"decorateNode"),Gtt=o(t=>{switch(t){case Ui.DEFAULT:return"no-border";case Ui.RECT:return"rect";case Ui.ROUNDED_RECT:return"rounded-rect";case Ui.CIRCLE:return"circle";case Ui.CLOUD:return"cloud";case Ui.BANG:return"bang";case Ui.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),Vtt=o(()=>X,"getLogger"),Utt=o(t=>X$[t],"getElementById"),Htt={clear:Itt,addNode:Btt,getSections:nxe,getData:Ptt,nodeType:Ui,getType:Ftt,setElementForId:$tt,decorateNode:ztt,type2Str:Gtt,getLogger:Vtt,getElementById:Utt},ixe=Htt});var qtt,sxe,oxe=N(()=>{"use strict";Xt();pt();tu();Ei();La();cw();bw();qtt=o(async(t,e,r,n)=>{X.debug(`Rendering kanban diagram -`+t);let a=n.db.getData(),s=ge();s.htmlLabels=!1;let l=aa(e),u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let f=a.nodes.filter(v=>v.isGroup),d=0,p=10,m=[],g=25;for(let v of f){let x=s?.kanban?.sectionWidth||200;d=d+1,v.x=x*d+(d-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+d;let b=await Sm(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of f){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,T=-b*3/2+g,S=T,w=a.nodes.filter(C=>C.parentId===v.id);for(let C of w){if(C.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");C.x=v.x,C.width=b-1.5*p;let I=(await Cm(h,C,{config:s})).node().getBBox();C.y=S+I.height/2,await P2(C),S=C.y+I.height/2+p/2}let k=x.cluster.select("rect"),A=Math.max(S-T+3*p,50)+(g-25);k.attr("height",A)}ic(void 0,l,s.mindmap?.padding??ur.kanban.padding,s.mindmap?.useMaxWidth??ur.kanban.useMaxWidth)},"draw"),sxe={draw:qtt}});var Wtt,Ytt,lxe,cxe=N(()=>{"use strict";eo();yg();Wtt=o(t=>{let e="";for(let n=0;nt.darkMode?Pt(n,i):Rt(n,i),"adjuster");for(let n=0;n` - .edge { - stroke-width: 3; - } - ${Wtt(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; - } - ${zc()} -`,"getStyles"),lxe=Ytt});var uxe={};dr(uxe,{diagram:()=>Xtt});var Xtt,hxe=N(()=>{"use strict";rxe();axe();oxe();cxe();Xtt={db:ixe,renderer:sxe,parser:txe,styles:lxe}});var j$,A4,pxe=N(()=>{"use strict";j$=(function(){var t=o(function(l,u,h,f){for(h=h||{},f=l.length;f--;h[l[f]]=u);return h},"o"),e=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(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:o(function(u,h,f,d,p,m,g){var y=m.length-1;switch(p){case 7:let v=d.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=d.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());d.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:e,20:r},{1:[2,6],7:11,10:[1,12]},t(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(n,[2,8]),t(n,[2,9]),{19:[1,16]},t(n,[2,11]),{1:[2,1]},{1:[2,5]},t(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:e,20:r},{15:18,16:7,17:8,18:e,20:r},{18:[1,19]},t(r,[2,3]),{12:[1,20]},t(n,[2,10]),{15:21,16:7,17:8,18:e,20:r},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var f=new Error(u);throw f.hash=h,f}},"parseError"),parse:o(function(u){var h=this,f=[0],d=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,T=2,S=1,w=m.slice.call(arguments,1),k=Object.create(this.lexer),A={yy:{}};for(var C in this.yy)Object.prototype.hasOwnProperty.call(this.yy,C)&&(A.yy[C]=this.yy[C]);k.setInput(u,A.yy),A.yy.lexer=k,A.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var R=k.yylloc;m.push(R);var I=k.options&&k.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function L(Y){f.length=f.length-2*Y,p.length=p.length-Y,m.length=m.length-Y}o(L,"popStack");function E(){var Y;return Y=d.pop()||k.lex()||S,typeof Y!="number"&&(Y instanceof Array&&(d=Y,Y=d.pop()),Y=h.symbols_[Y]||Y),Y}o(E,"lex");for(var D,_,O,M,P,B,F={},G,$,U,j;;){if(O=f[f.length-1],this.defaultActions[O]?M=this.defaultActions[O]:((D===null||typeof D>"u")&&(D=E()),M=g[O]&&g[O][D]),typeof M>"u"||!M.length||!M[0]){var te="";j=[];for(G in g[O])this.terminals_[G]&&G>T&&j.push("'"+this.terminals_[G]+"'");k.showPosition?te="Parse error on line "+(v+1)+`: -`+k.showPosition()+` -Expecting `+j.join(", ")+", got '"+(this.terminals_[D]||D)+"'":te="Parse error on line "+(v+1)+": Unexpected "+(D==S?"end of input":"'"+(this.terminals_[D]||D)+"'"),this.parseError(te,{text:k.match,token:this.terminals_[D]||D,line:k.yylineno,loc:R,expected:j})}if(M[0]instanceof Array&&M.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+D);switch(M[0]){case 1:f.push(D),p.push(k.yytext),m.push(k.yylloc),f.push(M[1]),D=null,_?(D=_,_=null):(x=k.yyleng,y=k.yytext,v=k.yylineno,R=k.yylloc,b>0&&b--);break;case 2:if($=this.productions_[M[1]][1],F.$=p[p.length-$],F._$={first_line:m[m.length-($||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-($||1)].first_column,last_column:m[m.length-1].last_column},I&&(F._$.range=[m[m.length-($||1)].range[0],m[m.length-1].range[1]]),B=this.performAction.apply(F,[y,x,v,A.yy,M[1],p,m].concat(w)),typeof B<"u")return B;$&&(f=f.slice(0,-1*$*2),p=p.slice(0,-1*$),m=m.slice(0,-1*$)),f.push(this.productions_[M[1]][0]),p.push(F.$),m.push(F._$),U=g[f[f.length-2]][f[f.length-1]],f.push(U);break;case 3:return!0}}return!0},"parse")},a=(function(){var l={EOF:1,parseError:o(function(h,f){if(this.yy.parser)this.yy.parser.parseError(h,f);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,f=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),f.length-1&&(this.yylineno-=f.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:f?(f.length===d.length?this.yylloc.first_column:0)+d[d.length-f.length].length-f[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(u){this.unput(this.match.slice(u))},"less"),pastInput:o(function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var u=this.pastInput(),h=new Array(u.length+1).join("-");return u+this.upcomingInput()+` -`+h+"^"},"showPosition"),test_match:o(function(u,h){var f,d,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),d=u[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],f=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),f)return f;if(this._backtrack){for(var m in p)this[m]=p[m];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,h,f,d;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),m=0;mh[0].length)){if(h=f,d=m,this.options.backtrack_lexer){if(u=this.test_match(f,p[m]),u!==!1)return u;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(u=this.test_match(h,p[d]),u!==!1?u:!1):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:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,f,d,p){var m=p;switch(d){case 0:return this.pushState("csv"),4;break;case 1:return this.pushState("csv"),4;break;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;break;case 6:return 20;case 7:return this.popState("escaped_text"),18;break;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}};return l})();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s})();j$.parser=j$;A4=j$});var kC,EC,wC,Ztt,K$,Jtt,Q$,ert,trt,rrt,nrt,mxe,gxe=N(()=>{"use strict";Xt();gr();ci();kC=[],EC=[],wC=new Map,Ztt=o(()=>{kC=[],EC=[],wC=new Map,Sr()},"clear"),K$=class{constructor(e,r,n=0){this.source=e;this.target=r;this.value=n}static{o(this,"SankeyLink")}},Jtt=o((t,e,r)=>{kC.push(new K$(t,e,r))},"addLink"),Q$=class{constructor(e){this.ID=e}static{o(this,"SankeyNode")}},ert=o(t=>{t=tt.sanitizeText(t,ge());let e=wC.get(t);return e===void 0&&(e=new Q$(t),wC.set(t,e),EC.push(e)),e},"findOrCreateNode"),trt=o(()=>EC,"getNodes"),rrt=o(()=>kC,"getLinks"),nrt=o(()=>({nodes:EC.map(t=>({id:t.ID})),links:kC.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),mxe={nodesMap:wC,getConfig:o(()=>ge().sankey,"getConfig"),getNodes:trt,getLinks:rrt,getGraph:nrt,addLink:Jtt,findOrCreateNode:ert,getAccTitle:Mr,setAccTitle:Rr,getAccDescription:Or,setAccDescription:Ir,getDiagramTitle:Pr,setDiagramTitle:$r,clear:Ztt}});function _4(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var yxe=N(()=>{"use strict";o(_4,"max")});function dy(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var vxe=N(()=>{"use strict";o(dy,"min")});function py(t,e){let r=0;if(e===void 0)for(let n of t)(n=+n)&&(r+=n);else{let n=-1;for(let i of t)(i=+e(i,++n,t))&&(r+=i)}return r}var xxe=N(()=>{"use strict";o(py,"sum")});var Z$=N(()=>{"use strict";yxe();vxe();xxe()});function irt(t){return t.target.depth}function J$(t){return t.depth}function ez(t,e){return e-1-t.height}function D4(t,e){return t.sourceLinks.length?t.depth:e-1}function tz(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?dy(t.sourceLinks,irt)-1:0}var rz=N(()=>{"use strict";Z$();o(irt,"targetDepth");o(J$,"left");o(ez,"right");o(D4,"justify");o(tz,"center")});function my(t){return function(){return t}}var bxe=N(()=>{"use strict";o(my,"constant")});function Txe(t,e){return SC(t.source,e.source)||t.index-e.index}function wxe(t,e){return SC(t.target,e.target)||t.index-e.index}function SC(t,e){return t.y0-e.y0}function nz(t){return t.value}function art(t){return t.index}function srt(t){return t.nodes}function ort(t){return t.links}function kxe(t,e){let r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function Exe({nodes:t}){for(let e of t){let r=e.y0,n=r;for(let i of e.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of e.targetLinks)i.y1=n+i.width/2,n+=i.width}}function CC(){let t=0,e=0,r=1,n=1,i=24,a=8,s,l=art,u=D4,h,f,d=srt,p=ort,m=6;function g(){let O={nodes:d.apply(null,arguments),links:p.apply(null,arguments)};return y(O),v(O),x(O),b(O),w(O),Exe(O),O}o(g,"sankey"),g.update=function(O){return Exe(O),O},g.nodeId=function(O){return arguments.length?(l=typeof O=="function"?O:my(O),g):l},g.nodeAlign=function(O){return arguments.length?(u=typeof O=="function"?O:my(O),g):u},g.nodeSort=function(O){return arguments.length?(h=O,g):h},g.nodeWidth=function(O){return arguments.length?(i=+O,g):i},g.nodePadding=function(O){return arguments.length?(a=s=+O,g):a},g.nodes=function(O){return arguments.length?(d=typeof O=="function"?O:my(O),g):d},g.links=function(O){return arguments.length?(p=typeof O=="function"?O:my(O),g):p},g.linkSort=function(O){return arguments.length?(f=O,g):f},g.size=function(O){return arguments.length?(t=e=0,r=+O[0],n=+O[1],g):[r-t,n-e]},g.extent=function(O){return arguments.length?(t=+O[0][0],r=+O[1][0],e=+O[0][1],n=+O[1][1],g):[[t,e],[r,n]]},g.iterations=function(O){return arguments.length?(m=+O,g):m};function y({nodes:O,links:M}){for(let[B,F]of O.entries())F.index=B,F.sourceLinks=[],F.targetLinks=[];let P=new Map(O.map((B,F)=>[l(B,F,O),B]));for(let[B,F]of M.entries()){F.index=B;let{source:G,target:$}=F;typeof G!="object"&&(G=F.source=kxe(P,G)),typeof $!="object"&&($=F.target=kxe(P,$)),G.sourceLinks.push(F),$.targetLinks.push(F)}if(f!=null)for(let{sourceLinks:B,targetLinks:F}of O)B.sort(f),F.sort(f)}o(y,"computeNodeLinks");function v({nodes:O}){for(let M of O)M.value=M.fixedValue===void 0?Math.max(py(M.sourceLinks,nz),py(M.targetLinks,nz)):M.fixedValue}o(v,"computeNodeValues");function x({nodes:O}){let M=O.length,P=new Set(O),B=new Set,F=0;for(;P.size;){for(let G of P){G.depth=F;for(let{target:$}of G.sourceLinks)B.add($)}if(++F>M)throw new Error("circular link");P=B,B=new Set}}o(x,"computeNodeDepths");function b({nodes:O}){let M=O.length,P=new Set(O),B=new Set,F=0;for(;P.size;){for(let G of P){G.height=F;for(let{source:$}of G.targetLinks)B.add($)}if(++F>M)throw new Error("circular link");P=B,B=new Set}}o(b,"computeNodeHeights");function T({nodes:O}){let M=_4(O,F=>F.depth)+1,P=(r-t-i)/(M-1),B=new Array(M);for(let F of O){let G=Math.max(0,Math.min(M-1,Math.floor(u.call(null,F,M))));F.layer=G,F.x0=t+G*P,F.x1=F.x0+i,B[G]?B[G].push(F):B[G]=[F]}if(h)for(let F of B)F.sort(h);return B}o(T,"computeNodeLayers");function S(O){let M=dy(O,P=>(n-e-(P.length-1)*s)/py(P,nz));for(let P of O){let B=e;for(let F of P){F.y0=B,F.y1=B+F.value*M,B=F.y1+s;for(let G of F.sourceLinks)G.width=G.value*M}B=(n-B+s)/(P.length+1);for(let F=0;FP.length)-1)),S(M);for(let P=0;P0))continue;let te=(U/j-$.y0)*M;$.y0+=te,$.y1+=te,L($)}h===void 0&&G.sort(SC),C(G,P)}}o(k,"relaxLeftToRight");function A(O,M,P){for(let B=O.length,F=B-2;F>=0;--F){let G=O[F];for(let $ of G){let U=0,j=0;for(let{target:Y,value:oe}of $.sourceLinks){let J=oe*(Y.layer-$.layer);U+=_($,Y)*J,j+=J}if(!(j>0))continue;let te=(U/j-$.y0)*M;$.y0+=te,$.y1+=te,L($)}h===void 0&&G.sort(SC),C(G,P)}}o(A,"relaxRightToLeft");function C(O,M){let P=O.length>>1,B=O[P];I(O,B.y0-s,P-1,M),R(O,B.y1+s,P+1,M),I(O,n,O.length-1,M),R(O,e,0,M)}o(C,"resolveCollisions");function R(O,M,P,B){for(;P1e-6&&(F.y0+=G,F.y1+=G),M=F.y1+s}}o(R,"resolveCollisionsTopToBottom");function I(O,M,P,B){for(;P>=0;--P){let F=O[P],G=(F.y1-M)*B;G>1e-6&&(F.y0-=G,F.y1-=G),M=F.y0-s}}o(I,"resolveCollisionsBottomToTop");function L({sourceLinks:O,targetLinks:M}){if(f===void 0){for(let{source:{sourceLinks:P}}of M)P.sort(wxe);for(let{target:{targetLinks:P}}of O)P.sort(Txe)}}o(L,"reorderNodeLinks");function E(O){if(f===void 0)for(let{sourceLinks:M,targetLinks:P}of O)M.sort(wxe),P.sort(Txe)}o(E,"reorderLinks");function D(O,M){let P=O.y0-(O.sourceLinks.length-1)*s/2;for(let{target:B,width:F}of O.sourceLinks){if(B===M)break;P+=F+s}for(let{source:B,width:F}of M.targetLinks){if(B===O)break;P-=F}return P}o(D,"targetTop");function _(O,M){let P=M.y0-(M.targetLinks.length-1)*s/2;for(let{source:B,width:F}of M.targetLinks){if(B===O)break;P+=F+s}for(let{target:B,width:F}of O.sourceLinks){if(B===M)break;P-=F}return P}return o(_,"sourceTop"),g}var Sxe=N(()=>{"use strict";Z$();rz();bxe();o(Txe,"ascendingSourceBreadth");o(wxe,"ascendingTargetBreadth");o(SC,"ascendingBreadth");o(nz,"value");o(art,"defaultId");o(srt,"defaultNodes");o(ort,"defaultLinks");o(kxe,"find");o(Exe,"computeLinkBreadths");o(CC,"Sankey")});function sz(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Cxe(){return new sz}var iz,az,f0,lrt,oz,Axe=N(()=>{"use strict";iz=Math.PI,az=2*iz,f0=1e-6,lrt=az-f0;o(sz,"Path");o(Cxe,"path");sz.prototype=Cxe.prototype={constructor:sz,moveTo:o(function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},"lineTo"),quadraticCurveTo:o(function(t,e,r,n){this._+="Q"+ +t+","+ +e+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(t,e,r,n,i,a){this._+="C"+ +t+","+ +e+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(t,e,r,n,i){t=+t,e=+e,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-t,u=n-e,h=a-t,f=s-e,d=h*h+f*f;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(d>f0)if(!(Math.abs(f*l-u*h)>f0)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(d),b=i*Math.tan((iz-Math.acos((g+d-y)/(2*v*x)))/2),T=b/x,S=b/v;Math.abs(T-1)>f0&&(this._+="L"+(t+T*h)+","+(e+T*f)),this._+="A"+i+","+i+",0,0,"+ +(f*p>h*m)+","+(this._x1=t+S*l)+","+(this._y1=e+S*u)}},"arcTo"),arc:o(function(t,e,r,n,i,a){t=+t,e=+e,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=t+s,h=e+l,f=1^a,d=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>f0||Math.abs(this._y1-h)>f0)&&(this._+="L"+u+","+h),r&&(d<0&&(d=d%az+az),d>lrt?this._+="A"+r+","+r+",0,1,"+f+","+(t-s)+","+(e-l)+"A"+r+","+r+",0,1,"+f+","+(this._x1=u)+","+(this._y1=h):d>f0&&(this._+="A"+r+","+r+",0,"+ +(d>=iz)+","+f+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=e+r*Math.sin(i))))},"arc"),rect:o(function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};oz=Cxe});var _xe=N(()=>{"use strict";Axe()});function AC(t){return o(function(){return t},"constant")}var Dxe=N(()=>{"use strict";o(AC,"default")});function Lxe(t){return t[0]}function Rxe(t){return t[1]}var Nxe=N(()=>{"use strict";o(Lxe,"x");o(Rxe,"y")});var Mxe,Ixe=N(()=>{"use strict";Mxe=Array.prototype.slice});function crt(t){return t.source}function urt(t){return t.target}function hrt(t){var e=crt,r=urt,n=Lxe,i=Rxe,a=null;function s(){var l,u=Mxe.call(arguments),h=e.apply(this,u),f=r.apply(this,u);if(a||(a=l=oz()),t(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=f,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(e=l,s):e},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:AC(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:AC(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function frt(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function lz(){return hrt(frt)}var Oxe=N(()=>{"use strict";_xe();Ixe();Dxe();Nxe();o(crt,"linkSource");o(urt,"linkTarget");o(hrt,"link");o(frt,"curveHorizontal");o(lz,"linkHorizontal")});var Pxe=N(()=>{"use strict";Oxe()});function drt(t){return[t.source.x1,t.y0]}function prt(t){return[t.target.x0,t.y1]}function _C(){return lz().source(drt).target(prt)}var Bxe=N(()=>{"use strict";Pxe();o(drt,"horizontalSource");o(prt,"horizontalTarget");o(_C,"default")});var Fxe=N(()=>{"use strict";Sxe();rz();Bxe()});var L4,$xe=N(()=>{"use strict";L4=class t{static{o(this,"Uid")}static{this.count=0}static next(e){return new t(e+ ++t.count)}constructor(e){this.id=e,this.href=`#${e}`}toString(){return"url("+this.href+")"}}});var mrt,grt,zxe,Gxe=N(()=>{"use strict";Xt();yr();Fxe();Ei();$xe();mrt={left:J$,right:ez,center:tz,justify:D4},grt=o(function(t,e,r,n){let{securityLevel:i,sankey:a}=ge(),s=G3.sankey,l;i==="sandbox"&&(l=qe("#i"+e));let u=i==="sandbox"?qe(l.nodes()[0].contentDocument.body):qe("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):qe(`[id="${e}"]`),f=a?.width??s.width,d=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=n.db.getGraph(),b=mrt[m];CC().nodeId(I=>I.id).nodeWidth(10).nodePadding(10+(v?15:0)).nodeAlign(b).extent([[0,0],[f,d]])(x);let w=no(YD);h.append("g").attr("class","nodes").selectAll(".node").data(x.nodes).join("g").attr("class","node").attr("id",I=>(I.uid=L4.next("node-")).id).attr("transform",function(I){return"translate("+I.x0+","+I.y0+")"}).attr("x",I=>I.x0).attr("y",I=>I.y0).append("rect").attr("height",I=>I.y1-I.y0).attr("width",I=>I.x1-I.x0).attr("fill",I=>w(I.id));let k=o(({id:I,value:L})=>v?`${I} -${g}${Math.round(L*100)/100}${y}`:I,"getText");h.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(x.nodes).join("text").attr("x",I=>I.x0(I.y1+I.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",I=>I.x0(L.uid=L4.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",L=>L.source.x1).attr("x2",L=>L.target.x0);I.append("stop").attr("offset","0%").attr("stop-color",L=>w(L.source.id)),I.append("stop").attr("offset","100%").attr("stop-color",L=>w(L.target.id))}let R;switch(C){case"gradient":R=o(I=>I.uid,"coloring");break;case"source":R=o(I=>w(I.source.id),"coloring");break;case"target":R=o(I=>w(I.target.id),"coloring");break;default:R=C}A.append("path").attr("d",_C()).attr("stroke",R).attr("stroke-width",I=>Math.max(1,I.width)),ic(void 0,h,0,p)},"draw"),zxe={draw:grt}});var Vxe,Uxe=N(()=>{"use strict";Vxe=o(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` -`).trim(),"prepareTextForParsing")});var yrt,Hxe,qxe=N(()=>{"use strict";yrt=o(t=>`.label { - font-family: ${t.fontFamily}; - }`,"getStyles"),Hxe=yrt});var Wxe={};dr(Wxe,{diagram:()=>xrt});var vrt,xrt,Yxe=N(()=>{"use strict";pxe();gxe();Gxe();Uxe();qxe();vrt=A4.parse.bind(A4);A4.parse=t=>vrt(Vxe(t));xrt={styles:Hxe,parser:A4,db:mxe,renderer:zxe}});var krt,gy,cz=N(()=>{"use strict";qn();La();tr();ci();krt=ur.packet,gy=class{constructor(){this.packet=[];this.setAccTitle=Rr;this.getAccTitle=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getAccDescription=Or;this.setAccDescription=Ir}static{o(this,"PacketDB")}getConfig(){let e=Vn({...krt,...Qt().packet});return e.showBits&&(e.paddingY+=10),e}getPacket(){return this.packet}pushWord(e){e.length>0&&this.packet.push(e)}clear(){Sr(),this.packet=[]}}});var Ert,Srt,Crt,uz,Kxe=N(()=>{"use strict";Uf();pt();r0();cz();Ert=1e4,Srt=o((t,e)=>{nl(t,e);let r=-1,n=[],i=1,{bitsPerRow:a}=e.getConfig();for(let{start:s,end:l,bits:u,label:h}of t.blocks){if(s!==void 0&&l!==void 0&&l{if(t.start===void 0)throw new Error("start should have been set during first phase");if(t.end===void 0)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*r)return[t,void 0];let n=e*r-1,i=e*r;return[{start:t.start,end:n,label:t.label,bits:n-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]},"getNextFittingBlock"),uz={parser:{yy:void 0},parse:o(async t=>{let e=await bs("packet",t),r=uz.parser?.yy;if(!(r instanceof gy))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.");X.debug(e),Srt(e,r)},"parse")}});var Art,_rt,Qxe,Zxe=N(()=>{"use strict";tu();Ei();Art=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,f=i.getPacket(),d=i.getDiagramTitle(),p=s+l,m=p*(f.length+1)-(d?0:s),g=u*h+2,y=aa(e);y.attr("viewbox",`0 0 ${g} ${m}`),mn(y,m,g,a.useMaxWidth);for(let[v,x]of f.entries())_rt(y,x,v,a);y.append("text").text(d).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),_rt=o((t,e,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=t.append("g"),f=r*(n+a)+a;for(let d of e){let p=d.start%l*s+1,m=(d.end-d.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",f).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",f+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(d.label),!u)continue;let g=d.end===d.start,y=f-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(d.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(d.end)}},"drawWord"),Qxe={draw:Art}});var Drt,Jxe,ebe=N(()=>{"use strict";tr();Drt={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},Jxe=o(({packet:t}={})=>{let e=Vn(Drt,t);return` - .packetByte { - font-size: ${e.byteFontSize}; - } - .packetByte.start { - fill: ${e.startByteColor}; - } - .packetByte.end { - fill: ${e.endByteColor}; - } - .packetLabel { - fill: ${e.labelColor}; - font-size: ${e.labelFontSize}; - } - .packetTitle { - fill: ${e.titleColor}; - font-size: ${e.titleFontSize}; - } - .packetBlock { - stroke: ${e.blockStrokeColor}; - stroke-width: ${e.blockStrokeWidth}; - fill: ${e.blockFillColor}; - } - `},"styles")});var tbe={};dr(tbe,{diagram:()=>Lrt});var Lrt,rbe=N(()=>{"use strict";cz();Kxe();Zxe();ebe();Lrt={parser:uz,get db(){return new gy},renderer:Qxe,styles:Jxe}});var yy,abe,d0,Mrt,Irt,sbe,Ort,Prt,Brt,Frt,$rt,zrt,Grt,p0,hz=N(()=>{"use strict";qn();La();tr();ci();yy={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},abe={axes:[],curves:[],options:yy},d0=structuredClone(abe),Mrt=ur.radar,Irt=o(()=>Vn({...Mrt,...Qt().radar}),"getConfig"),sbe=o(()=>d0.axes,"getAxes"),Ort=o(()=>d0.curves,"getCurves"),Prt=o(()=>d0.options,"getOptions"),Brt=o(t=>{d0.axes=t.map(e=>({name:e.name,label:e.label??e.name}))},"setAxes"),Frt=o(t=>{d0.curves=t.map(e=>({name:e.name,label:e.label??e.name,entries:$rt(e.entries)}))},"setCurves"),$rt=o(t=>{if(t[0].axis==null)return t.map(r=>r.value);let e=sbe();if(e.length===0)throw new Error("Axes must be populated before curves for reference entries");return e.map(r=>{let n=t.find(i=>i.axis?.$refText===r.name);if(n===void 0)throw new Error("Missing entry for axis "+r.label);return n.value})},"computeCurveEntries"),zrt=o(t=>{let e=t.reduce((r,n)=>(r[n.name]=n,r),{});d0.options={showLegend:e.showLegend?.value??yy.showLegend,ticks:e.ticks?.value??yy.ticks,max:e.max?.value??yy.max,min:e.min?.value??yy.min,graticule:e.graticule?.value??yy.graticule}},"setOptions"),Grt=o(()=>{Sr(),d0=structuredClone(abe)},"clear"),p0={getAxes:sbe,getCurves:Ort,getOptions:Prt,setAxes:Brt,setCurves:Frt,setOptions:zrt,getConfig:Irt,clear:Grt,setAccTitle:Rr,getAccTitle:Mr,setDiagramTitle:$r,getDiagramTitle:Pr,getAccDescription:Or,setAccDescription:Ir}});var Vrt,obe,lbe=N(()=>{"use strict";Uf();pt();r0();hz();Vrt=o(t=>{nl(t,p0);let{axes:e,curves:r,options:n}=t;p0.setAxes(e),p0.setCurves(r),p0.setOptions(n)},"populate"),obe={parse:o(async t=>{let e=await bs("radar",t);X.debug(e),Vrt(e)},"parse")}});function Yrt(t,e,r,n,i,a,s){let l=e.length,u=Math.min(s.width,s.height)/2;r.forEach((h,f)=>{if(h.entries.length!==l)return;let d=h.entries.map((p,m)=>{let g=2*Math.PI*m/l-Math.PI/2,y=Xrt(p,n,i,u),v=y*Math.cos(g),x=y*Math.sin(g);return{x:v,y:x}});a==="circle"?t.append("path").attr("d",jrt(d,s.curveTension)).attr("class",`radarCurve-${f}`):a==="polygon"&&t.append("polygon").attr("points",d.map(p=>`${p.x},${p.y}`).join(" ")).attr("class",`radarCurve-${f}`)})}function Xrt(t,e,r,n){let i=Math.min(Math.max(t,e),r);return n*(i-e)/(r-e)}function jrt(t,e){let r=t.length,n=`M${t[0].x},${t[0].y}`;for(let i=0;i{let h=t.append("g").attr("transform",`translate(${i}, ${a+u*s})`);h.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${u}`),h.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(l.label)})}var Urt,Hrt,qrt,Wrt,cbe,ube=N(()=>{"use strict";tu();Urt=o((t,e,r,n)=>{let i=n.db,a=i.getAxes(),s=i.getCurves(),l=i.getOptions(),u=i.getConfig(),h=i.getDiagramTitle(),f=aa(e),d=Hrt(f,u),p=l.max??Math.max(...s.map(y=>Math.max(...y.entries))),m=l.min,g=Math.min(u.width,u.height)/2;qrt(d,a,g,l.ticks,l.graticule),Wrt(d,a,g,u),Yrt(d,a,s,m,p,l.graticule,u),Krt(d,s,l.showLegend,u),d.append("text").attr("class","radarTitle").text(h).attr("x",0).attr("y",-u.height/2-u.marginTop)},"draw"),Hrt=o((t,e)=>{let r=e.width+e.marginLeft+e.marginRight,n=e.height+e.marginTop+e.marginBottom,i={x:e.marginLeft+e.width/2,y: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.x}, ${i.y})`)},"drawFrame"),qrt=o((t,e,r,n,i)=>{if(i==="circle")for(let a=0;a{let d=2*f*Math.PI/a-Math.PI/2,p=l*Math.cos(d),m=l*Math.sin(d);return`${p},${m}`}).join(" ");t.append("polygon").attr("points",u).attr("class","radarGraticule")}}},"drawGraticule"),Wrt=o((t,e,r,n)=>{let i=e.length;for(let a=0;a{"use strict";tr();Oy();qn();Qrt=o((t,e)=>{let r="";for(let n=0;n{let e=mh(),r=Qt(),n=Vn(e,r.themeVariables),i=Vn(n.radar,t);return{themeVariables:n,radarOptions:i}},"buildRadarStyleOptions"),hbe=o(({radar:t}={})=>{let{themeVariables:e,radarOptions:r}=Zrt(t);return` - .radarTitle { - font-size: ${e.fontSize}; - color: ${e.titleColor}; - dominant-baseline: hanging; - text-anchor: middle; - } - .radarAxisLine { - stroke: ${r.axisColor}; - stroke-width: ${r.axisStrokeWidth}; - } - .radarAxisLabel { - dominant-baseline: middle; - text-anchor: middle; - font-size: ${r.axisLabelFontSize}px; - color: ${r.axisColor}; - } - .radarGraticule { - fill: ${r.graticuleColor}; - fill-opacity: ${r.graticuleOpacity}; - stroke: ${r.graticuleColor}; - stroke-width: ${r.graticuleStrokeWidth}; - } - .radarLegendText { - text-anchor: start; - font-size: ${r.legendFontSize}px; - dominant-baseline: hanging; - } - ${Qrt(e,r)} - `},"styles")});var dbe={};dr(dbe,{diagram:()=>Jrt});var Jrt,pbe=N(()=>{"use strict";hz();lbe();ube();fbe();Jrt={parser:obe,db:p0,renderer:cbe,styles:hbe}});var fz,ybe,vbe=N(()=>{"use strict";fz=(function(){var t=o(function(T,S,w,k){for(w=w||{},k=T.length;k--;w[T[k]]=S);return w},"o"),e=[1,15],r=[1,7],n=[1,13],i=[1,14],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],f=[8,10,21,28,29,30,31,39,43,46],d=[1,23],p=[1,24],m=[8,10,15,16,21,28,29,30,31,39,43,46],g=[8,10,15,16,21,27,28,29,30,31,39,43,46],y=[1,49],v={trace:o(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:o(function(S,w,k,A,C,R,I){var L=R.length-1;switch(C){case 4:A.getLogger().debug("Rule: separator (NL) ");break;case 5:A.getLogger().debug("Rule: separator (Space) ");break;case 6:A.getLogger().debug("Rule: separator (EOF) ");break;case 7:A.getLogger().debug("Rule: hierarchy: ",R[L-1]),A.setHierarchy(R[L-1]);break;case 8:A.getLogger().debug("Stop NL ");break;case 9:A.getLogger().debug("Stop EOF ");break;case 10:A.getLogger().debug("Stop NL2 ");break;case 11:A.getLogger().debug("Stop EOF2 ");break;case 12:A.getLogger().debug("Rule: statement: ",R[L]),typeof R[L].length=="number"?this.$=R[L]:this.$=[R[L]];break;case 13:A.getLogger().debug("Rule: statement #2: ",R[L-1]),this.$=[R[L-1]].concat(R[L]);break;case 14:A.getLogger().debug("Rule: link: ",R[L],S),this.$={edgeTypeStr:R[L],label:""};break;case 15:A.getLogger().debug("Rule: LABEL link: ",R[L-3],R[L-1],R[L]),this.$={edgeTypeStr:R[L],label:R[L-1]};break;case 18:let E=parseInt(R[L]),D=A.generateId();this.$={id:D,type:"space",label:"",width:E,children:[]};break;case 23:A.getLogger().debug("Rule: (nodeStatement link node) ",R[L-2],R[L-1],R[L]," typestr: ",R[L-1].edgeTypeStr);let _=A.edgeStrToEdgeData(R[L-1].edgeTypeStr);this.$=[{id:R[L-2].id,label:R[L-2].label,type:R[L-2].type,directions:R[L-2].directions},{id:R[L-2].id+"-"+R[L].id,start:R[L-2].id,end:R[L].id,label:R[L-1].label,type:"edge",directions:R[L].directions,arrowTypeEnd:_,arrowTypeStart:"arrow_open"},{id:R[L].id,label:R[L].label,type:A.typeStr2Type(R[L].typeStr),directions:R[L].directions}];break;case 24:A.getLogger().debug("Rule: nodeStatement (abc88 node size) ",R[L-1],R[L]),this.$={id:R[L-1].id,label:R[L-1].label,type:A.typeStr2Type(R[L-1].typeStr),directions:R[L-1].directions,widthInColumns:parseInt(R[L],10)};break;case 25:A.getLogger().debug("Rule: nodeStatement (node) ",R[L]),this.$={id:R[L].id,label:R[L].label,type:A.typeStr2Type(R[L].typeStr),directions:R[L].directions,widthInColumns:1};break;case 26:A.getLogger().debug("APA123",this?this:"na"),A.getLogger().debug("COLUMNS: ",R[L]),this.$={type:"column-setting",columns:R[L]==="auto"?-1:parseInt(R[L])};break;case 27:A.getLogger().debug("Rule: id-block statement : ",R[L-2],R[L-1]);let O=A.generateId();this.$={...R[L-2],type:"composite",children:R[L-1]};break;case 28:A.getLogger().debug("Rule: blockStatement : ",R[L-2],R[L-1],R[L]);let M=A.generateId();this.$={id:M,type:"composite",label:"",children:R[L-1]};break;case 29:A.getLogger().debug("Rule: node (NODE_ID separator): ",R[L]),this.$={id:R[L]};break;case 30:A.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",R[L-1],R[L]),this.$={id:R[L-1],label:R[L].label,typeStr:R[L].typeStr,directions:R[L].directions};break;case 31:A.getLogger().debug("Rule: dirList: ",R[L]),this.$=[R[L]];break;case 32:A.getLogger().debug("Rule: dirList: ",R[L-1],R[L]),this.$=[R[L-1]].concat(R[L]);break;case 33:A.getLogger().debug("Rule: nodeShapeNLabel: ",R[L-2],R[L-1],R[L]),this.$={typeStr:R[L-2]+R[L],label:R[L-1]};break;case 34:A.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",R[L-3],R[L-2]," #3:",R[L-1],R[L]),this.$={typeStr:R[L-3]+R[L],label:R[L-2],directions:R[L-1]};break;case 35:case 36:this.$={type:"classDef",id:R[L-1].trim(),css:R[L].trim()};break;case 37:this.$={type:"applyClass",id:R[L-1].trim(),styleClass:R[L].trim()};break;case 38:this.$={type:"applyStyles",id:R[L-1].trim(),stylesStr:R[L].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:e,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{8:[1,20]},t(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:e,21:r,28:n,29:i,31:a,39:s,43:l,46:u}),t(f,[2,16],{14:22,15:d,16:p}),t(f,[2,17]),t(f,[2,18]),t(f,[2,19]),t(f,[2,20]),t(f,[2,21]),t(f,[2,22]),t(m,[2,25],{27:[1,25]}),t(f,[2,26]),{19:26,26:12,31:a},{10:e,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},t(g,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},t(h,[2,13]),{26:35,31:a},{31:[2,14]},{17:[1,36]},t(m,[2,24]),{10:e,11:37,13:4,14:22,15:d,16:p,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},t(g,[2,30]),{18:[1,43]},{18:[1,44]},t(m,[2,23]),{18:[1,45]},{30:[1,46]},t(f,[2,28]),t(f,[2,35]),t(f,[2,36]),t(f,[2,37]),t(f,[2,38]),{36:[1,47]},{33:48,34:y},{15:[1,50]},t(f,[2,27]),t(g,[2,33]),{38:[1,51]},{33:52,34:y,38:[2,31]},{31:[2,15]},t(g,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(S,w){if(w.recoverable)this.trace(S);else{var k=new Error(S);throw k.hash=w,k}},"parseError"),parse:o(function(S){var w=this,k=[0],A=[],C=[null],R=[],I=this.table,L="",E=0,D=0,_=0,O=2,M=1,P=R.slice.call(arguments,1),B=Object.create(this.lexer),F={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&(F.yy[G]=this.yy[G]);B.setInput(S,F.yy),F.yy.lexer=B,F.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var $=B.yylloc;R.push($);var U=B.options&&B.options.ranges;typeof F.yy.parseError=="function"?this.parseError=F.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function j(Te){k.length=k.length-2*Te,C.length=C.length-Te,R.length=R.length-Te}o(j,"popStack");function te(){var Te;return Te=A.pop()||B.lex()||M,typeof Te!="number"&&(Te instanceof Array&&(A=Te,Te=A.pop()),Te=w.symbols_[Te]||Te),Te}o(te,"lex");for(var Y,oe,J,ue,re,ee,Z={},K,ae,Q,de;;){if(J=k[k.length-1],this.defaultActions[J]?ue=this.defaultActions[J]:((Y===null||typeof Y>"u")&&(Y=te()),ue=I[J]&&I[J][Y]),typeof ue>"u"||!ue.length||!ue[0]){var ne="";de=[];for(K in I[J])this.terminals_[K]&&K>O&&de.push("'"+this.terminals_[K]+"'");B.showPosition?ne="Parse error on line "+(E+1)+`: -`+B.showPosition()+` -Expecting `+de.join(", ")+", got '"+(this.terminals_[Y]||Y)+"'":ne="Parse error on line "+(E+1)+": Unexpected "+(Y==M?"end of input":"'"+(this.terminals_[Y]||Y)+"'"),this.parseError(ne,{text:B.match,token:this.terminals_[Y]||Y,line:B.yylineno,loc:$,expected:de})}if(ue[0]instanceof Array&&ue.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+Y);switch(ue[0]){case 1:k.push(Y),C.push(B.yytext),R.push(B.yylloc),k.push(ue[1]),Y=null,oe?(Y=oe,oe=null):(D=B.yyleng,L=B.yytext,E=B.yylineno,$=B.yylloc,_>0&&_--);break;case 2:if(ae=this.productions_[ue[1]][1],Z.$=C[C.length-ae],Z._$={first_line:R[R.length-(ae||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(ae||1)].first_column,last_column:R[R.length-1].last_column},U&&(Z._$.range=[R[R.length-(ae||1)].range[0],R[R.length-1].range[1]]),ee=this.performAction.apply(Z,[L,D,E,F.yy,ue[1],C,R].concat(P)),typeof ee<"u")return ee;ae&&(k=k.slice(0,-1*ae*2),C=C.slice(0,-1*ae),R=R.slice(0,-1*ae)),k.push(this.productions_[ue[1]][0]),C.push(Z.$),R.push(Z._$),Q=I[k[k.length-2]][k[k.length-1]],k.push(Q);break;case 3:return!0}}return!0},"parse")},x=(function(){var T={EOF:1,parseError:o(function(w,k){if(this.yy.parser)this.yy.parser.parseError(w,k);else throw new Error(w)},"parseError"),setInput:o(function(S,w){return this.yy=w||this.yy||{},this._input=S,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var w=S.match(/(?:\r\n?|\n).*/g);return w?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),S},"input"),unput:o(function(S){var w=S.length,k=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-w),this.offset-=w;var A=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===A.length?this.yylloc.first_column:0)+A[A.length-k.length].length-k[0].length:this.yylloc.first_column-w},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-w]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). -`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(S){this.unput(this.match.slice(S))},"less"),pastInput:o(function(){var S=this.matched.substr(0,this.matched.length-this.match.length);return(S.length>20?"...":"")+S.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var S=this.match;return S.length<20&&(S+=this._input.substr(0,20-S.length)),(S.substr(0,20)+(S.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var S=this.pastInput(),w=new Array(S.length+1).join("-");return S+this.upcomingInput()+` -`+w+"^"},"showPosition"),test_match:o(function(S,w){var k,A,C;if(this.options.backtrack_lexer&&(C={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(C.yylloc.range=this.yylloc.range.slice(0))),A=S[0].match(/(?:\r\n?|\n).*/g),A&&(this.yylineno+=A.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:A?A[A.length-1].length-A[A.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+S[0].length},this.yytext+=S[0],this.match+=S[0],this.matches=S,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(S[0].length),this.matched+=S[0],k=this.performAction.call(this,this.yy,this,w,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var R in C)this[R]=C[R];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,w,k,A;this._more||(this.yytext="",this.match="");for(var C=this._currentRules(),R=0;Rw[0].length)){if(w=k,A=R,this.options.backtrack_lexer){if(S=this.test_match(k,C[R]),S!==!1)return S;if(this._backtrack){w=!1;continue}else return!1}else if(!this.options.flex)break}return w?(S=this.test_match(w,C[A]),S!==!1?S:!1):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:o(function(){var w=this.next();return w||this.lex()},"lex"),begin:o(function(w){this.conditionStack.push(w)},"begin"),popState:o(function(){var w=this.conditionStack.length-1;return w>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(w){return w=this.conditionStack.length-1-Math.abs(w||0),w>=0?this.conditionStack[w]:"INITIAL"},"topState"),pushState:o(function(w){this.begin(w)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(w,k,A,C){var R=C;switch(A){case 0:return w.getLogger().debug("Found block-beta"),10;break;case 1:return w.getLogger().debug("Found id-block"),29;break;case 2:return w.getLogger().debug("Found block"),10;break;case 3:w.getLogger().debug(".",k.yytext);break;case 4:w.getLogger().debug("_",k.yytext);break;case 5:return 5;case 6:return k.yytext=-1,28;break;case 7:return k.yytext=k.yytext.replace(/columns\s+/,""),w.getLogger().debug("COLUMNS (LEX)",k.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:w.getLogger().debug("LEX: POPPING STR:",k.yytext),this.popState();break;case 13:return w.getLogger().debug("LEX: STR end:",k.yytext),"STR";break;case 14:return k.yytext=k.yytext.replace(/space\:/,""),w.getLogger().debug("SPACE NUM (LEX)",k.yytext),21;break;case 15:return k.yytext="1",w.getLogger().debug("COLUMNS (LEX)",k.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),w.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),w.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),w.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),w.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),w.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),w.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),w.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),w.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),w.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),w.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),w.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),w.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),w.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return w.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return w.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return w.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return w.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return w.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return w.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return w.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return w.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),w.getLogger().debug("LEX ARR START"),37;break;case 74:return w.getLogger().debug("Lex: NODE_ID",k.yytext),31;break;case 75:return w.getLogger().debug("Lex: EOF",k.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:w.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:w.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return w.getLogger().debug("LEX: NODE_DESCR:",k.yytext),"NODE_DESCR";break;case 83:w.getLogger().debug("LEX POPPING"),this.popState();break;case 84:w.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (right): dir:",k.yytext),"DIR";break;case 86:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (left):",k.yytext),"DIR";break;case 87:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (x):",k.yytext),"DIR";break;case 88:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (y):",k.yytext),"DIR";break;case 89:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (up):",k.yytext),"DIR";break;case 90:return k.yytext=k.yytext.replace(/^,\s*/,""),w.getLogger().debug("Lex (down):",k.yytext),"DIR";break;case 91:return k.yytext="]>",w.getLogger().debug("Lex (ARROW_DIR end):",k.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return w.getLogger().debug("Lex: LINK","#"+k.yytext+"#"),15;break;case 93:return w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 94:return w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 95:return w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 96:return w.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 97:return w.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 98:return w.getLogger().debug("Lex: START_LINK",k.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return w.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),w.getLogger().debug("Lex: LINK","#"+k.yytext+"#"),15;break;case 102:return this.popState(),w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 103:return this.popState(),w.getLogger().debug("Lex: LINK",k.yytext),15;break;case 104:return w.getLogger().debug("Lex: COLON",k.yytext),k.yytext=k.yytext.slice(1),27;break}},"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}}};return T})();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b})();fz.parser=fz;ybe=fz});function cnt(t){switch(X.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return X.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 unt(t){switch(X.debug("typeStr2Type",t),t){case"==":return"thick";default:return"normal"}}function hnt(t){switch(t.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}var ql,pz,dz,xbe,bbe,rnt,wbe,nnt,DC,int,ant,snt,ont,kbe,mz,R4,lnt,Tbe,fnt,dnt,pnt,mnt,gnt,ynt,vnt,xnt,bnt,Tnt,wnt,Ebe,Sbe=N(()=>{"use strict";hR();qn();Xt();pt();gr();ci();ql=new Map,pz=[],dz=new Map,xbe="color",bbe="fill",rnt="bgFill",wbe=",",nnt=ge(),DC=new Map,int=o(t=>tt.sanitizeText(t,nnt),"sanitizeText"),ant=o(function(t,e=""){let r=DC.get(t);r||(r={id:t,styles:[],textStyles:[]},DC.set(t,r)),e?.split(wbe).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(xbe).exec(n)){let s=i.replace(bbe,rnt).replace(xbe,bbe);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),snt=o(function(t,e=""){let r=ql.get(t);e!=null&&(r.styles=e.split(wbe))},"addStyle2Node"),ont=o(function(t,e){t.split(",").forEach(function(r){let n=ql.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},ql.set(i,n)}n.classes||(n.classes=[]),n.classes.push(e)})},"setCssClass"),kbe=o((t,e)=>{let r=t.flat(),n=[],a=r.find(s=>s?.type==="column-setting")?.columns??-1;for(let s of r){if(typeof a=="number"&&a>0&&s.type!=="column-setting"&&typeof s.widthInColumns=="number"&&s.widthInColumns>a&&X.warn(`Block ${s.id} width ${s.widthInColumns} exceeds configured column width ${a}`),s.label&&(s.label=int(s.label)),s.type==="classDef"){ant(s.id,s.css);continue}if(s.type==="applyClass"){ont(s.id,s?.styleClass??"");continue}if(s.type==="applyStyles"){s?.stylesStr&&snt(s.id,s?.stylesStr);continue}if(s.type==="column-setting")e.columns=s.columns??-1;else if(s.type==="edge"){let l=(dz.get(s.id)??0)+1;dz.set(s.id,l),s.id=l+"-"+s.id,pz.push(s)}else{s.label||(s.type==="composite"?s.label="":s.label=s.id);let l=ql.get(s.id);if(l===void 0?ql.set(s.id,s):(s.type!=="na"&&(l.type=s.type),s.label!==s.id&&(l.label=s.label)),s.children&&kbe(s.children,s),s.type==="space"){let u=s.width??1;for(let h=0;h{X.debug("Clear called"),Sr(),R4={id:"root",type:"composite",children:[],columns:-1},ql=new Map([["root",R4]]),mz=[],DC=new Map,pz=[],dz=new Map},"clear");o(cnt,"typeStr2Type");o(unt,"edgeTypeStr2Type");o(hnt,"edgeStrToEdgeData");Tbe=0,fnt=o(()=>(Tbe++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Tbe),"generateId"),dnt=o(t=>{R4.children=t,kbe(t,R4),mz=R4.children},"setHierarchy"),pnt=o(t=>{let e=ql.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),mnt=o(()=>[...ql.values()],"getBlocksFlat"),gnt=o(()=>mz||[],"getBlocks"),ynt=o(()=>pz,"getEdges"),vnt=o(t=>ql.get(t),"getBlock"),xnt=o(t=>{ql.set(t.id,t)},"setBlock"),bnt=o(()=>X,"getLogger"),Tnt=o(function(){return DC},"getClasses"),wnt={getConfig:o(()=>Qt().block,"getConfig"),typeStr2Type:cnt,edgeTypeStr2Type:unt,edgeStrToEdgeData:hnt,getLogger:bnt,getBlocksFlat:mnt,getBlocks:gnt,getEdges:ynt,setHierarchy:dnt,getBlock:vnt,setBlock:xnt,getColumns:pnt,getClasses:Tnt,clear:lnt,generateId:fnt},Ebe=wnt});var LC,knt,Cbe,Abe=N(()=>{"use strict";eo();yg();LC=o((t,e)=>{let r=ld,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return Ka(n,i,a,e)},"fade"),knt=o(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: ${LC(t.edgeLabelBackground,.5)}; - // background-color: - } - - .node .cluster { - // fill: ${LC(t.mainBkg,.5)}; - fill: ${LC(t.clusterBkg,.5)}; - stroke: ${LC(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}; - } - ${zc()} -`,"getStyles"),Cbe=knt});var Ent,Snt,Cnt,Ant,_nt,Dnt,Lnt,Rnt,Nnt,Mnt,Int,_be,Dbe=N(()=>{"use strict";pt();Ent=o((t,e,r,n)=>{e.forEach(i=>{Int[i](t,r,n)})},"insertMarkers"),Snt=o((t,e,r)=>{X.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"),Cnt=o((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"),Ant=o((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"),_nt=o((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"),Dnt=o((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"),Lnt=o((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"),Rnt=o((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"),Nnt=o((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"),Mnt=o((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"),Int={extension:Snt,composition:Cnt,aggregation:Ant,dependency:_nt,lollipop:Dnt,point:Lnt,circle:Rnt,cross:Nnt,barb:Mnt},_be=Ent});function Ont(t,e){if(t===0||!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);if(t<0)return{px:e,py:0};if(t===1)return{px:0,py:e};let r=e%t,n=Math.floor(e/t);return{px:r,py:n}}function gz(t,e,r=0,n=0){X.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"siblingWidth",r),t?.size?.width||(t.size={width:r,height:n,x:0,y:0});let i=0,a=0;if(t.children?.length>0){for(let m of t.children)gz(m,e);let s=Pnt(t);i=s.width,a=s.height,X.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",i,a);for(let m of t.children)m.size&&(X.debug(`abc95 Setting size of children of ${t.id} id=${m.id} ${i} ${a} ${JSON.stringify(m.size)}`),m.size.width=i*(m.widthInColumns??1)+Ti*((m.widthInColumns??1)-1),m.size.height=a,m.size.x=0,m.size.y=0,X.debug(`abc95 updating size of ${t.id} children child:${m.id} maxWidth:${i} maxHeight:${a}`));for(let m of t.children)gz(m,e,i,a);let l=t.columns??-1,u=0;for(let m of t.children)u+=m.widthInColumns??1;let h=t.children.length;l>0&&l0?Math.min(t.children.length,l):t.children.length;if(m>0){let g=(d-m*Ti-Ti)/m;X.debug("abc95 (growing to fit) width",t.id,d,t.size?.width,g);for(let y of t.children)y.size&&(y.size.width=g)}}t.size={width:d,height:p,x:0,y:0}}X.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function Lbe(t,e){X.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);let r=t.columns??-1;if(X.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){let n=t?.children[0]?.size?.width??0,i=t.children.length*n+(t.children.length-1)*Ti;X.debug("widthOfChildren 88",i,"posX");let a=0;X.debug("abc91 block?.size?.x",t.id,t?.size?.x);let s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-Ti,l=0;for(let u of t.children){let h=t;if(!u.size)continue;let{width:f,height:d}=u.size,{px:p,py:m}=Ont(r,a);if(m!=l&&(l=m,s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-Ti,X.debug("New row in layout for block",t.id," and child ",u.id,l)),X.debug(`abc89 layout blocks (child) id: ${u.id} Pos: ${a} (px, py) ${p},${m} (${h?.size?.x},${h?.size?.y}) parent: ${h.id} width: ${f}${Ti}`),h.size){let y=f/2;u.size.x=s+Ti+y,X.debug(`abc91 layout blocks (calc) px, pyid:${u.id} startingPos=X${s} new startingPosX${u.size.x} ${y} padding=${Ti} width=${f} halfWidth=${y} => x:${u.size.x} y:${u.size.y} ${u.widthInColumns} (width * (child?.w || 1)) / 2 ${f*(u?.widthInColumns??1)/2}`),s=u.size.x+y,u.size.y=h.size.y-h.size.height/2+m*(d+Ti)+d/2+Ti,X.debug(`abc88 layout blocks (calc) px, pyid:${u.id}startingPosX${s}${Ti}${y}=>x:${u.size.x}y:${u.size.y}${u.widthInColumns}(width * (child?.w || 1)) / 2${f*(u?.widthInColumns??1)/2}`)}u.children&&Lbe(u,e);let g=u?.widthInColumns??1;r>0&&(g=Math.min(g,r-a%r)),a+=g,X.debug("abc88 columnsPos",u,a)}}X.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function Rbe(t,{minX:e,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&t.id!=="root"){let{x:a,y:s,width:l,height:u}=t.size;a-l/2n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(t.children)for(let a of t.children)({minX:e,minY:r,maxX:n,maxY:i}=Rbe(a,{minX:e,minY:r,maxX:n,maxY:i}));return{minX:e,minY:r,maxX:n,maxY:i}}function Nbe(t){let e=t.getBlock("root");if(!e)return;gz(e,t,0,0),Lbe(e,t),X.debug("getBlocks",JSON.stringify(e,null,2));let{minX:r,minY:n,maxX:i,maxY:a}=Rbe(e),s=a-n,l=i-r;return{x:r,y:n,width:l,height:s}}var Ti,Pnt,Mbe=N(()=>{"use strict";pt();Xt();Ti=ge()?.block?.padding??8;o(Ont,"calculateBlockPosition");Pnt=o(t=>{let e=0,r=0;for(let n of t.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};X.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type!=="space"&&(i>e&&(e=i/(t.widthInColumns??1)),a>r&&(r=a))}return{width:e,height:r}},"getMaxChildSize");o(gz,"setBlockSizes");o(Lbe,"layoutBlocks");o(Rbe,"findBounds");o(Nbe,"layout")});function Ibe(t,e){e&&t.attr("style",e)}function Bnt(t,e){let r=qe(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(sr(i,e)),Ibe(s,t.labelStyle),s.attr("class",a),Ibe(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 Fnt,ks,RC=N(()=>{"use strict";yr();Xt();gr();pt();zo();tr();o(Ibe,"applyStyle");o(Bnt,"addHtmlLabel");Fnt=o(async(t,e,r,n)=>{let i=t||"";typeof i=="object"&&(i=i[0]);let a=ge();if(vr(a.flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),X.debug("vertexText"+i);let s=await k9(Ji(i)),l={isNode:n,label:s,labelStyle:e.replace("fill:","color:")};return Bnt(l,a)}else{let s=document.createElementNS("http://www.w3.org/2000/svg","text");s.setAttribute("style",e.replace("color:","fill:"));let l=[];typeof i=="string"?l=i.split(/\\n|\n|/gi):Array.isArray(i)?l=i:l=[];for(let u of l){let h=document.createElementNS("http://www.w3.org/2000/svg","tspan");h.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),h.setAttribute("dy","1em"),h.setAttribute("x","0"),r?h.setAttribute("class","title-row"):h.setAttribute("class","row"),h.textContent=u.trim(),s.appendChild(h)}return s}},"createLabel"),ks=Fnt});var Pbe,$nt,Obe,Bbe=N(()=>{"use strict";pt();Pbe=o((t,e,r,n,i)=>{e.arrowTypeStart&&Obe(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&Obe(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),$nt={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Obe=o((t,e,r,n,i,a)=>{let s=$nt[r];if(!s){X.warn(`Unknown arrow type: ${r}`);return}let l=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function NC(t,e){ge().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}var yz,Wa,$be,zbe,znt,Gnt,Fbe,Gbe,Vbe=N(()=>{"use strict";pt();RC();zo();yr();Xt();tr();gr();X9();O2();Bbe();yz={},Wa={},$be=o(async(t,e)=>{let r=ge(),n=vr(r.flowchart.htmlLabels),i=e.labelType==="markdown"?di(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0},r):await ks(e.label,e.labelStyle),a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(i);let l=i.getBBox();if(n){let h=i.children[0],f=qe(i);l=h.getBoundingClientRect(),f.attr("width",l.width),f.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),yz[e.id]=a,e.width=l.width,e.height=l.height;let u;if(e.startLabelLeft){let h=await ks(e.startLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].startLeft=f,NC(u,e.startLabelLeft)}if(e.startLabelRight){let h=await ks(e.startLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=f.node().appendChild(h),d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].startRight=f,NC(u,e.startLabelRight)}if(e.endLabelLeft){let h=await ks(e.endLabelLeft,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].endLeft=f,NC(u,e.endLabelLeft)}if(e.endLabelRight){let h=await ks(e.endLabelRight,e.labelStyle),f=t.insert("g").attr("class","edgeTerminals"),d=f.insert("g").attr("class","inner");u=d.node().appendChild(h);let p=h.getBBox();d.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),f.node().appendChild(h),Wa[e.id]||(Wa[e.id]={}),Wa[e.id].endRight=f,NC(u,e.endLabelRight)}return i},"insertEdgeLabel");o(NC,"setTerminalWidth");zbe=o((t,e)=>{X.debug("Moving label abc88 ",t.id,t.label,yz[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=ge(),{subGraphTitleTotalMargin:i}=Pu(n);if(t.label){let a=yz[t.id],s=t.x,l=t.y;if(r){let u=qt.calcLabelPosition(r);X.debug("Moving label "+t.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),e.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(t.startLabelLeft){let a=Wa[t.id].startLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.startLabelRight){let a=Wa[t.id].startRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelLeft){let a=Wa[t.id].endLeft,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(t.endLabelRight){let a=Wa[t.id].endRight,s=t.x,l=t.y;if(r){let u=qt.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),znt=o((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,l=t.height/2;return i>=s||a>=l},"outsideNode"),Gnt=o((t,e,r)=>{X.debug(`intersection calc abc89: - outsidePoint: ${JSON.stringify(e)} - insidePoint : ${JSON.stringify(r)} - node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,l=r.xMath.abs(n-e.x)*u){let d=r.y{X.debug("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(!znt(e,a)&&!i){let s=Gnt(e,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),Gbe=o(function(t,e,r,n,i,a,s){let l=r.points;X.debug("abc88 InsertEdge: edge=",r,"e=",e);let u=!1,h=a.node(e.v);var f=a.node(e.w);f?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(f.intersect(l[l.length-1]))),r.toCluster&&(X.debug("to cluster abc88",n[r.toCluster]),l=Fbe(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(X.debug("from cluster abc88",n[r.fromCluster]),l=Fbe(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let d=l.filter(S=>!Number.isNaN(S.y)),p=No;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=hw(r),y=Cl().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=t.append("path").attr("d",y(d)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(ge().flowchart.arrowMarkerAbsolute||ge().state.arrowMarkerAbsolute)&&(b=md(!0)),Pbe(x,r,b,s,i);let T={};return u&&(T.updatedPath=l),T.originalPath=r.points,T},"insertEdge")});var Vnt,Ube,Hbe=N(()=>{"use strict";Vnt=o(t=>{let e=new Set;for(let r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r);break}return e},"expandAndDeduplicateDirections"),Ube=o((t,e,r)=>{let n=Vnt(t),i=2,a=e.height+2*r.padding,s=a/i,l=e.width+2*s+r.padding,u=r.padding/2;return n.has("right")&&n.has("left")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:s,y:0},{x:l/2,y:2*u},{x:l-s,y:0},{x:l,y:0},{x:l,y:-a/3},{x:l+2*u,y:-a/2},{x:l,y:-2*a/3},{x:l,y:-a},{x:l-s,y:-a},{x:l/2,y:-a-2*u},{x:s,y:-a},{x:0,y:-a},{x:0,y:-2*a/3},{x:-2*u,y:-a/2},{x:0,y:-a/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}]:n.has("right")&&n.has("left")&&n.has("down")?[{x:0,y:0},{x:s,y:-a},{x:l-s,y:-a},{x:l,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:l,y:-s},{x:l,y:-a+s},{x:0,y:-a}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:l,y:0},{x:0,y:-s},{x:0,y:-a+s},{x:l,y:-a}]:n.has("right")&&n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")&&n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:l,y:-s},{x:0,y:-a}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:l,y:0},{x:0,y:-a}]:n.has("left")&&n.has("up")?[{x:l,y:0},{x:0,y:-s},{x:l,y:-a}]:n.has("left")&&n.has("down")?[{x:l,y:0},{x:0,y:0},{x:l,y:-a}]:n.has("right")?[{x:s,y:-u},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a+u}]:n.has("left")?[{x:s,y:0},{x:s,y:-u},{x:l-s,y:-u},{x:l-s,y:-a+u},{x:s,y:-a+u},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")?[{x:s,y:-u},{x:s,y:-a+u},{x:0,y:-a+u},{x:l/2,y:-a},{x:l,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u}]:n.has("down")?[{x:l/2,y:0},{x:0,y:-u},{x:s,y:-u},{x:s,y:-a+u},{x:l-s,y:-a+u},{x:l-s,y:-u},{x:l,y:-u}]:[{x:0,y:0}]},"getArrowPoints")});function Unt(t,e){return t.intersect(e)}var qbe,Wbe=N(()=>{"use strict";o(Unt,"intersectNode");qbe=Unt});function Hnt(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,l=a-n.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);n.x{"use strict";o(Hnt,"intersectEllipse");MC=Hnt});function qnt(t,e,r){return MC(t,e,e,r)}var Ybe,Xbe=N(()=>{"use strict";vz();o(qnt,"intersectCircle");Ybe=qnt});function Wnt(t,e,r,n){var i,a,s,l,u,h,f,d,p,m,g,y,v,x,b;if(i=e.y-t.y,s=t.x-e.x,u=e.x*t.y-t.x*e.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&jbe(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,f=a*t.x+l*t.y+h,d=a*e.x+l*e.y+h,!(f!==0&&d!==0&&jbe(f,d))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function jbe(t,e){return t*e>0}var Kbe,Qbe=N(()=>{"use strict";o(Wnt,"intersectLine");o(jbe,"sameSign");Kbe=Wnt});function Ynt(t,e,r){var n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,e.x),l=Math.min(l,e.y));for(var u=n-t.width/2-s,h=i-t.height/2-l,f=0;f1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),T=y.x-r.x,S=y.y-r.y,w=Math.sqrt(T*T+S*S);return b{"use strict";Qbe();Zbe=Ynt;o(Ynt,"intersectPolygon")});var Xnt,e4e,t4e=N(()=>{"use strict";Xnt=o((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,l=t.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),e4e=Xnt});var $n,xz=N(()=>{"use strict";Wbe();Xbe();vz();Jbe();t4e();$n={node:qbe,circle:Ybe,ellipse:MC,polygon:Zbe,rect:e4e}});function Wl(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}var Li,ti,bz=N(()=>{"use strict";RC();zo();Xt();yr();gr();tr();Li=o(async(t,e,r,n)=>{let i=ge(),a,s=e.useHtmlLabels||vr(i.flowchart.htmlLabels);r?a=r:a="node default";let l=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=l.insert("g").attr("class","label").attr("style",e.labelStyle),h;e.labelText===void 0?h="":h=typeof e.labelText=="string"?e.labelText:e.labelText[0];let f=u.node(),d;e.labelType==="markdown"?d=di(u,sr(Ji(h),i),{useHtmlLabels:s,width:e.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=f.appendChild(await ks(sr(Ji(h),i),e.labelStyle,!1,n));let p=d.getBBox(),m=e.padding/2;if(vr(i.flowchart.htmlLabels)){let g=d.children[0],y=qe(d),v=g.getElementsByTagName("img");if(v){let x=h.replace(/]*>/g,"").trim()==="";await Promise.all([...v].map(b=>new Promise(T=>{function S(){if(b.style.display="flex",b.style.flexDirection="column",x){let w=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,A=parseInt(w,10)*5+"px";b.style.minWidth=A,b.style.maxWidth=A}else b.style.width="100%";T(b)}o(S,"setupImage"),setTimeout(()=>{b.complete&&S()}),b.addEventListener("error",S),b.addEventListener("load",S)})))}p=g.getBoundingClientRect(),y.attr("width",p.width),y.attr("height",p.height)}return s?u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"):u.attr("transform","translate(0, "+-p.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-p.width/2+", "+-p.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:p,halfPadding:m,label:u}},"labelHelper"),ti=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");o(Wl,"insertPolygonShape")});var jnt,r4e,n4e=N(()=>{"use strict";bz();pt();Xt();xz();jnt=o(async(t,e)=>{e.useHtmlLabels||ge().flowchart.htmlLabels||(e.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await Li(t,e,"node "+e.classes,!0);X.info("Classes = ",e.classes);let s=n.insert("rect",":first-child");return s.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),ti(e,s),e.intersect=function(l){return $n.rect(e,l)},n},"note"),r4e=jnt});function Tz(t,e,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");e.includes("t")?(X.debug("add top border"),a(r)):s(r),e.includes("r")?(X.debug("add right border"),a(n)):s(n),e.includes("b")?(X.debug("add bottom border"),a(r)):s(r),e.includes("l")?(X.debug("add left border"),a(n)):s(n),t.attr("stroke-dasharray",i.join(" "))}var i4e,To,a4e,Knt,Qnt,Znt,Jnt,eit,tit,rit,nit,iit,ait,sit,oit,lit,cit,uit,hit,fit,dit,pit,s4e,mit,git,o4e,IC,wz,l4e,c4e=N(()=>{"use strict";yr();Xt();gr();pt();Hbe();RC();xz();n4e();bz();i4e=o(t=>t?" "+t:"","formatClass"),To=o((t,e)=>`${e||"node default"}${i4e(t.classes)} ${i4e(t.class)}`,"getClassesFromNode"),a4e=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];X.info("Question main (Circle)");let u=Wl(r,s,s,l);return u.attr("style",e.style),ti(e,u),e.intersect=function(h){return X.warn("Intersect called"),$n.polygon(e,l,h)},r},"question"),Knt=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(s){return $n.circle(e,14,s)},r},"choice"),Qnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=4,a=n.height+e.padding,s=a/i,l=n.width+2*s+e.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Wl(r,l,a,u);return h.attr("style",e.style),ti(e,h),e.intersect=function(f){return $n.polygon(e,u,f)},r},"hexagon"),Znt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,void 0,!0),i=2,a=n.height+2*e.padding,s=a/i,l=n.width+2*s+e.padding,u=Ube(e.directions,n,e),h=Wl(r,l,a,u);return h.attr("style",e.style),ti(e,h),e.intersect=function(f){return $n.polygon(e,u,f)},r},"block_arrow"),Jnt=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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 Wl(r,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(u){return $n.polygon(e,s,u)},r},"rect_left_inv_arrow"),eit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"lean_right"),tit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"lean_left"),rit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"trapezoid"),nit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"inv_trapezoid"),iit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"rect_right_inv_arrow"),ait=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.width+e.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+e.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return ti(e,h),e.intersect=function(f){let d=$n.rect(e,f),p=d.x-e.x;if(a!=0&&(Math.abs(p)e.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,f.y-e.y>0&&(m=-m),d.y+=m}return d},r},"cylinder"),sit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,"node "+e.classes+" "+e.class,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(Tz(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{X.warn(`Unknown node property ${d}`)})}return ti(e,a),e.intersect=function(f){return $n.rect(e,f)},r},"rect"),oit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,"node "+e.classes,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,l=e.positioned?e.height:n.height+e.padding,u=e.positioned?-s/2:-n.width/2-i,h=e.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),e.props){let f=new Set(Object.keys(e.props));e.props.borders&&(Tz(a,e.props.borders,s,l),f.delete("borders")),f.forEach(d=>{X.warn(`Unknown node property ${d}`)})}return ti(e,a),e.intersect=function(f){return $n.rect(e,f)},r},"composite"),lit=o(async(t,e)=>{let{shapeSvg:r}=await Li(t,e,"label",!0);X.trace("Classes = ",e.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),e.props){let s=new Set(Object.keys(e.props));e.props.borders&&(Tz(n,e.props.borders,i,a),s.delete("borders")),s.forEach(l=>{X.warn(`Unknown node property ${l}`)})}return ti(e,n),e.intersect=function(s){return $n.rect(e,s)},r},"labelRect");o(Tz,"applyNodePropertyBorders");cit=o(async(t,e)=>{let r;e.classes?r="node "+e.classes:r="node default";let n=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"),l=e.labelText.flat?e.labelText.flat():e.labelText,u="";typeof l=="object"?u=l[0]:u=l,X.info("Label text abc79",u,l,typeof l=="object");let h=s.node().appendChild(await ks(u,e.labelStyle,!0,!0)),f={width:0,height:0};if(vr(ge().flowchart.htmlLabels)){let y=h.children[0],v=qe(h);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}X.info("Text 2",l);let d=l.slice(1,l.length),p=h.getBBox(),m=s.node().appendChild(await ks(d.join?d.join("
    "):d,e.labelStyle,!0,!0));if(vr(ge().flowchart.htmlLabels)){let y=m.children[0],v=qe(m);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height)}let g=e.padding/2;return qe(m).attr("transform","translate( "+(f.width>p.width?0:(p.width-f.width)/2)+", "+(p.height+g+5)+")"),qe(h).attr("transform","translate( "+(f.width{let{shapeSvg:r,bbox:n}=await Li(t,e,To(e,void 0),!0),i=n.height+e.padding,a=n.width+i/4+e.padding,s=r.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return ti(e,s),e.intersect=function(l){return $n.rect(e,l)},r},"stadium"),hit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,To(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),X.info("Circle main"),ti(e,a),e.intersect=function(s){return X.info("Circle intersect",e,n.width/2+i,s),$n.circle(e,n.width/2+i,s)},r},"circle"),fit=o(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Li(t,e,To(e,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",e.class),l.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i+a).attr("width",n.width+e.padding+a*2).attr("height",n.height+e.padding+a*2),u.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),X.info("DoubleCircle main"),ti(e,l),e.intersect=function(h){return X.info("DoubleCircle intersect",e,n.width/2+i+a,h),$n.circle(e,n.width/2+i+a,h)},r},"doublecircle"),dit=o(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Li(t,e,To(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}],l=Wl(r,i,a,s);return l.attr("style",e.style),ti(e,l),e.intersect=function(u){return $n.polygon(e,s,u)},r},"subroutine"),pit=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),ti(e,n),e.intersect=function(i){return $n.circle(e,7,i)},r},"start"),s4e=o((t,e,r)=>{let n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return ti(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(l){return $n.rect(e,l)},n},"forkJoin"),mit=o((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),ti(e,i),e.intersect=function(a){return $n.circle(e,7,a)},r},"end"),git=o(async(t,e)=>{let r=e.padding/2,n=4,i=8,a;e.classes?a="node "+e.classes:a="node default";let s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),f=0,d=n,p=s.insert("g").attr("class","label"),m=0,g=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xAB"+e.classData.annotations[0]+"\xBB":"",v=p.node().appendChild(await ks(y,e.labelStyle,!0,!0)),x=v.getBBox();if(vr(ge().flowchart.htmlLabels)){let C=v.children[0],R=qe(v);x=C.getBoundingClientRect(),R.attr("width",x.width),R.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+n,f+=x.width);let b=e.classData.label;e.classData.type!==void 0&&e.classData.type!==""&&(ge().flowchart.htmlLabels?b+="<"+e.classData.type+">":b+="<"+e.classData.type+">");let T=p.node().appendChild(await ks(b,e.labelStyle,!0,!0));qe(T).attr("class","classTitle");let S=T.getBBox();if(vr(ge().flowchart.htmlLabels)){let C=T.children[0],R=qe(T);S=C.getBoundingClientRect(),R.attr("width",S.width),R.attr("height",S.height)}d+=S.height+n,S.width>f&&(f=S.width);let w=[];e.classData.members.forEach(async C=>{let R=C.getDisplayDetails(),I=R.displayText;ge().flowchart.htmlLabels&&(I=I.replace(//g,">"));let L=p.node().appendChild(await ks(I,R.cssStyle?R.cssStyle:e.labelStyle,!0,!0)),E=L.getBBox();if(vr(ge().flowchart.htmlLabels)){let D=L.children[0],_=qe(L);E=D.getBoundingClientRect(),_.attr("width",E.width),_.attr("height",E.height)}E.width>f&&(f=E.width),d+=E.height+n,w.push(L)}),d+=i;let k=[];if(e.classData.methods.forEach(async C=>{let R=C.getDisplayDetails(),I=R.displayText;ge().flowchart.htmlLabels&&(I=I.replace(//g,">"));let L=p.node().appendChild(await ks(I,R.cssStyle?R.cssStyle:e.labelStyle,!0,!0)),E=L.getBBox();if(vr(ge().flowchart.htmlLabels)){let D=L.children[0],_=qe(L);E=D.getBoundingClientRect(),_.attr("width",E.width),_.attr("height",E.height)}E.width>f&&(f=E.width),d+=E.height+n,k.push(L)}),d+=i,g){let C=(f-x.width)/2;qe(v).attr("transform","translate( "+(-1*f/2+C)+", "+-1*d/2+")"),m=x.height+n}let A=(f-S.width)/2;return qe(T).attr("transform","translate( "+(-1*f/2+A)+", "+(-1*d/2+m)+")"),m+=S.height+n,u.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,w.forEach(C=>{qe(C).attr("transform","translate( "+-f/2+", "+(-1*d/2+m+i/2)+")");let R=C?.getBBox();m+=(R?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-d/2-r+i+m).attr("y2",-d/2-r+i+m),m+=i,k.forEach(C=>{qe(C).attr("transform","translate( "+-f/2+", "+(-1*d/2+m)+")");let R=C?.getBBox();m+=(R?.height??0)+n}),l.attr("style",e.style).attr("class","outer title-state").attr("x",-f/2-r).attr("y",-(d/2)-r).attr("width",f+e.padding).attr("height",d+e.padding),ti(e,l),e.intersect=function(C){return $n.rect(e,C)},s},"class_box"),o4e={rhombus:a4e,composite:oit,question:a4e,rect:sit,labelRect:lit,rectWithTitle:cit,choice:Knt,circle:hit,doublecircle:fit,stadium:uit,hexagon:Qnt,block_arrow:Znt,rect_left_inv_arrow:Jnt,lean_right:eit,lean_left:tit,trapezoid:rit,inv_trapezoid:nit,rect_right_inv_arrow:iit,cylinder:ait,start:pit,end:mit,note:r4e,subroutine:dit,fork:s4e,join:s4e,class_box:git},IC={},wz=o(async(t,e,r)=>{let n,i;if(e.link){let a;ge().securityLevel==="sandbox"?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=await o4e[e.shape](n,e,r)}else i=await o4e[e.shape](t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),IC[e.id]=n,e.haveCallback&&IC[e.id].attr("class",IC[e.id].attr("class")+" clickable"),n},"insertNode"),l4e=o(t=>{let e=IC[t.id];X.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});function u4e(t,e,r=!1){let n=t,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=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"}let u=zL(n?.styles??[]),h=n.label,f=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,directions:n.directions,width:f.width,height:f.height,x:f.x,y:f.y,positioned:r,intersect:void 0,type:n.type,padding:l??Qt()?.block?.padding??0}}async function yit(t,e,r){let n=u4e(e,r,!1);if(n.type==="group")return;let i=Qt(),a=await wz(t,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function vit(t,e,r){let n=u4e(e,r,!0);if(r.getBlock(n.id).type!=="space"){let a=Qt();await wz(t,n,{config:a}),e.intersect=n?.intersect,l4e(n)}}async function kz(t,e,r,n){for(let i of e)await n(t,i,r),i.children&&await kz(t,i.children,r,n)}async function h4e(t,e,r){await kz(t,e,r,yit)}async function f4e(t,e,r){await kz(t,e,r,vit)}async function d4e(t,e,r,n,i){let a=new cn({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of e)if(s.start&&s.end){let l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,f=u.size,d=[{x:h.x,y:h.y},{x:h.x+(f.x-h.x)/2,y:h.y+(f.y-h.y)/2},{x:f.x,y:f.y}];Gbe(t,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",a,i),s.label&&(await $be(t,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:d,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),zbe({...s,x:d[1].x,y:d[1].y},{originalPath:d}))}}}var p4e=N(()=>{"use strict";qo();qn();Vbe();c4e();tr();o(u4e,"getNodeFromBlock");o(yit,"calculateBlockSize");o(vit,"insertBlockPositioned");o(kz,"performOperations");o(h4e,"calculateBlockSizes");o(f4e,"insertBlocks");o(d4e,"insertEdges")});var xit,bit,m4e,g4e=N(()=>{"use strict";yr();qn();Dbe();pt();Ei();Mbe();p4e();xit=o(function(t,e){return e.db.getClasses()},"getClasses"),bit=o(async function(t,e,r,n){let{securityLevel:i,block:a}=Qt(),s=n.db,l;i==="sandbox"&&(l=qe("#i"+e));let u=i==="sandbox"?qe(l.nodes()[0].contentDocument.body):qe("body"),h=i==="sandbox"?u.select(`[id="${e}"]`):qe(`[id="${e}"]`);_be(h,["point","circle","cross"],n.type,e);let d=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await h4e(g,d,s);let y=Nbe(s);if(await f4e(g,d,s),await d4e(g,m,p,s,e),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,T=v.width+10,{useMaxWidth:S}=a;mn(h,b,T,!!S),X.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),m4e={draw:bit,getClasses:xit}});var y4e={};dr(y4e,{diagram:()=>Tit});var Tit,v4e=N(()=>{"use strict";vbe();Sbe();Abe();g4e();Tit={parser:ybe,db:Ebe,renderer:m4e,styles:Cbe}});var Ez,Sz,N4,T4e,Cz,Ya,nu,M4,w4e,Sit,I4,k4e,E4e,S4e,C4e,A4e,OC,td,PC=N(()=>{"use strict";Ez={L:"left",R:"right",T:"top",B:"bottom"},Sz={L:o(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:o(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:o(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:o(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},N4={L:o((t,e)=>t-e+2,"L"),R:o((t,e)=>t-2,"R"),T:o((t,e)=>t-e+2,"T"),B:o((t,e)=>t-2,"B")},T4e=o(function(t){return Ya(t)?t==="L"?"R":"L":t==="T"?"B":"T"},"getOppositeArchitectureDirection"),Cz=o(function(t){let e=t;return e==="L"||e==="R"||e==="T"||e==="B"},"isArchitectureDirection"),Ya=o(function(t){let e=t;return e==="L"||e==="R"},"isArchitectureDirectionX"),nu=o(function(t){let e=t;return e==="T"||e==="B"},"isArchitectureDirectionY"),M4=o(function(t,e){let r=Ya(t)&&nu(e),n=nu(t)&&Ya(e);return r||n},"isArchitectureDirectionXY"),w4e=o(function(t){let e=t[0],r=t[1],n=Ya(e)&&nu(r),i=nu(e)&&Ya(r);return n||i},"isArchitecturePairXY"),Sit=o(function(t){return t!=="LL"&&t!=="RR"&&t!=="TT"&&t!=="BB"},"isValidArchitectureDirectionPair"),I4=o(function(t,e){let r=`${t}${e}`;return Sit(r)?r:void 0},"getArchitectureDirectionPair"),k4e=o(function([t,e],r){let n=r[0],i=r[1];return Ya(n)?nu(i)?[t+(n==="L"?-1:1),e+(i==="T"?1:-1)]:[t+(n==="L"?-1:1),e]:Ya(i)?[t+(i==="L"?1:-1),e+(n==="T"?1:-1)]:[t,e+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),E4e=o(function(t){return t==="LT"||t==="TL"?[1,1]:t==="BL"||t==="LB"?[1,-1]:t==="BR"||t==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),S4e=o(function(t,e){return M4(t,e)?"bend":Ya(t)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),C4e=o(function(t){return t.type==="service"},"isArchitectureService"),A4e=o(function(t){return t.type==="junction"},"isArchitectureJunction"),OC=o(t=>t.data(),"edgeData"),td=o(t=>t.data(),"nodeData")});var Cit,vy,Az=N(()=>{"use strict";qn();La();tr();ci();PC();Cit=ur.architecture,vy=class{constructor(){this.nodes={};this.groups={};this.edges=[];this.registeredIds={};this.elements={};this.setAccTitle=Rr;this.getAccTitle=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getAccDescription=Or;this.setAccDescription=Ir;this.clear()}static{o(this,"ArchitectureDB")}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},Sr()}addService({id:e,icon:r,in:n,title:i,iconText:a}){if(this.registeredIds[e]!==void 0)throw new Error(`The service id [${e}] is already in use by another ${this.registeredIds[e]}`);if(n!==void 0){if(e===n)throw new Error(`The service [${e}] cannot be placed within itself`);if(this.registeredIds[n]===void 0)throw new Error(`The service [${e}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[n]==="node")throw new Error(`The service [${e}]'s parent is not a group`)}this.registeredIds[e]="node",this.nodes[e]={id:e,type:"service",icon:r,iconText:a,title:i,edges:[],in:n}}getServices(){return Object.values(this.nodes).filter(C4e)}addJunction({id:e,in:r}){this.registeredIds[e]="node",this.nodes[e]={id:e,type:"junction",edges:[],in:r}}getJunctions(){return Object.values(this.nodes).filter(A4e)}getNodes(){return Object.values(this.nodes)}getNode(e){return this.nodes[e]??null}addGroup({id:e,icon:r,in:n,title:i}){if(this.registeredIds?.[e]!==void 0)throw new Error(`The group id [${e}] is already in use by another ${this.registeredIds[e]}`);if(n!==void 0){if(e===n)throw new Error(`The group [${e}] cannot be placed within itself`);if(this.registeredIds?.[n]===void 0)throw new Error(`The group [${e}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[n]==="node")throw new Error(`The group [${e}]'s parent is not a group`)}this.registeredIds[e]="group",this.groups[e]={id:e,icon:r,title:i,in:n}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:e,rhsId:r,lhsDir:n,rhsDir:i,lhsInto:a,rhsInto:s,lhsGroup:l,rhsGroup:u,title:h}){if(!Cz(n))throw new Error(`Invalid direction given for left hand side of edge ${e}--${r}. Expected (L,R,T,B) got ${String(n)}`);if(!Cz(i))throw new Error(`Invalid direction given for right hand side of edge ${e}--${r}. Expected (L,R,T,B) got ${String(i)}`);if(this.nodes[e]===void 0&&this.groups[e]===void 0)throw new Error(`The left-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[r]===void 0&&this.groups[r]===void 0)throw new Error(`The right-hand id [${r}] does not yet exist. Please create the service/group before declaring an edge to it.`);let f=this.nodes[e].in,d=this.nodes[r].in;if(l&&f&&d&&f==d)throw new Error(`The left-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(u&&f&&d&&f==d)throw new Error(`The right-hand id [${r}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let p={lhsId:e,lhsDir:n,lhsInto:a,lhsGroup:l,rhsId:r,rhsDir:i,rhsInto:s,rhsGroup:u,title:h};this.edges.push(p),this.nodes[e]&&this.nodes[r]&&(this.nodes[e].edges.push(this.edges[this.edges.length-1]),this.nodes[r].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(this.dataStructures===void 0){let e={},r=Object.entries(this.nodes).reduce((u,[h,f])=>(u[h]=f.edges.reduce((d,p)=>{let m=this.getNode(p.lhsId)?.in,g=this.getNode(p.rhsId)?.in;if(m&&g&&m!==g){let y=S4e(p.lhsDir,p.rhsDir);y!=="bend"&&(e[m]??={},e[m][g]=y,e[g]??={},e[g][m]=y)}if(p.lhsId===h){let y=I4(p.lhsDir,p.rhsDir);y&&(d[y]=p.rhsId)}else{let y=I4(p.rhsDir,p.lhsDir);y&&(d[y]=p.lhsId)}return d},{}),u),{}),n=Object.keys(r)[0],i={[n]:1},a=Object.keys(r).reduce((u,h)=>h===n?u:{...u,[h]:1},{}),s=o(u=>{let h={[u]:[0,0]},f=[u];for(;f.length>0;){let d=f.shift();if(d){i[d]=1,delete a[d];let p=r[d],[m,g]=h[d];Object.entries(p).forEach(([y,v])=>{i[v]||(h[v]=k4e([m,g],y),f.push(v))})}}return h},"BFS"),l=[s(n)];for(;Object.keys(a).length>0;)l.push(s(Object.keys(a)[0]));this.dataStructures={adjList:r,spatialMaps:l,groupAlignments:e}}return this.dataStructures}setElementForId(e,r){this.elements[e]=r}getElementById(e){return this.elements[e]}getConfig(){return Vn({...Cit,...Qt().architecture})}getConfigField(e){return this.getConfig()[e]}}});var Ait,_z,_4e=N(()=>{"use strict";Uf();pt();r0();Az();Ait=o((t,e)=>{nl(t,e),t.groups.map(r=>e.addGroup(r)),t.services.map(r=>e.addService({...r,type:"service"})),t.junctions.map(r=>e.addJunction({...r,type:"junction"})),t.edges.map(r=>e.addEdge(r))},"populateDb"),_z={parser:{yy:void 0},parse:o(async t=>{let e=await bs("architecture",t);X.debug(e);let r=_z.parser?.yy;if(!(r instanceof vy))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.");Ait(e,r)},"parse")}});var _it,D4e,L4e=N(()=>{"use strict";_it=o(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"),D4e=_it});var Lz=Da((O4,Dz)=>{"use strict";o((function(e,r){typeof O4=="object"&&typeof Dz=="object"?Dz.exports=r():typeof define=="function"&&define.amd?define([],r):typeof O4=="object"?O4.layoutBase=r():e.layoutBase=r()}),"webpackUniversalModuleDefinition")(O4,function(){return(function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)})([(function(t,e,r){"use strict";function n(){}o(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_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,f){n.call(this,f),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=f,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var f=this.getOtherEnd(u),d=h.getGraphManager().getRoot();;){if(f.getOwner()==h)return f;if(f.getOwner()==d)break;f=f.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.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=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s}),(function(t,e,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(d,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),d.graphManager!=null&&(d=d.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=d,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var f in n)h[f]=n[f];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(d){this.rect.width=d},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(d){this.rect.height=d},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 u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(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(d,p){this.rect.x=d.x,this.rect.y=d.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(d,p){this.rect.x=d-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(d,p){this.rect.x=d,this.rect.y=p},h.prototype.moveBy=function(d,p){this.rect.x+=d,this.rect.y+=p},h.prototype.getEdgeListToNode=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==d){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(d){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==d||y.source==d)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var d=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)d.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";d.add(m.source)}}),d},h.prototype.withChildren=function(){var d=new Set,p,m;if(d.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(d){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=d.inverseTransformPoint(g);this.setLocation(y.x,y.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 this.owner==null?null:this.owner.getParent()},t.exports=h}),(function(t,e,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=i}),(function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n}),(function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),f=r(12),d=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&k>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(w,1),x.target!=x.source&&x.target.edges.splice(k,1);var S=x.source.owner.getEdges().indexOf(x);if(S==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(S,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),S=T.length,w=0;wv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new f(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,S,w,k,A,C=this.nodes,R=C.length,I=0;IT&&(y=T),vw&&(x=w),bT&&(y=T),vw&&(x=w),b=this.nodes.length){var R=0;v.forEach(function(I){I.owner==g&&R++}),R==this.nodes.length&&(this.isConnected=!0)}},t.exports=p}),(function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,f){if(u==null&&h==null&&f==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{f=u,h=l,u=s;var d=h.getOwner(),p=f.getOwner();if(!(d!=null&&d.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(d==p)return u.isInterGraph=!1,d.add(u,h,f);if(u.isInterGraph=!0,u.source=h,u.target=f,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,f=u.length,d=0;d=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var f=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(f=1);var d=f*l[0],p=l[1]/f;l[0]d)return l[0]=u,l[1]=m,l[2]=f,l[3]=C,!1;if(hf)return l[0]=p,l[1]=h,l[2]=k,l[3]=d,!1;if(uf?(l[0]=y,l[1]=v,E=!0):(l[0]=g,l[1]=m,E=!0):_===M&&(u>f?(l[0]=p,l[1]=m,E=!0):(l[0]=x,l[1]=v,E=!0)),-O===M?f>u?(l[2]=A,l[3]=C,D=!0):(l[2]=k,l[3]=w,D=!0):O===M&&(f>u?(l[2]=S,l[3]=w,D=!0):(l[2]=R,l[3]=C,D=!0)),E&&D)return!1;if(u>f?h>d?(P=this.getCardinalDirection(_,M,4),B=this.getCardinalDirection(O,M,2)):(P=this.getCardinalDirection(-_,M,3),B=this.getCardinalDirection(-O,M,1)):h>d?(P=this.getCardinalDirection(-_,M,1),B=this.getCardinalDirection(-O,M,3)):(P=this.getCardinalDirection(_,M,2),B=this.getCardinalDirection(O,M,4)),!E)switch(P){case 1:G=m,F=u+-T/M,l[0]=F,l[1]=G;break;case 2:F=x,G=h+b*M,l[0]=F,l[1]=G;break;case 3:G=v,F=u+T/M,l[0]=F,l[1]=G;break;case 4:F=y,G=h+-b*M,l[0]=F,l[1]=G;break}if(!D)switch(B){case 1:U=w,$=f+-L/M,l[2]=$,l[3]=U;break;case 2:$=R,U=d+I*M,l[2]=$,l[3]=U;break;case 3:U=C,$=f+L/M,l[2]=$,l[3]=U;break;case 4:$=A,U=d+-I*M,l[2]=$,l[3]=U;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,f=a.y,d=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,S=void 0,w=void 0,k=void 0,A=void 0,C=void 0,R=void 0;return T=p-f,w=h-d,A=d*f-h*p,S=v-g,k=m-y,C=y*g-m*v,R=T*k-S*w,R===0?null:(x=(w*C-k*A)/R,b=(S*A-T*C)/R,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,t.exports=i}),(function(t,e,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n}),(function(t,e,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n}),(function(t,e,r){"use strict";var n=(function(){function h(f,d){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i}),(function(t,e,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(w[0]);T.length>0&&g;){var k=T[0];T.splice(0,1),b.add(k);for(var A=k.getEdges(),x=0;x-1&&w.splice(L,1)}b=new Set,S=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(C,1);var R=S.getNeighborsList();R.forEach(function(E){if(y.indexOf(E)<0){var D=v.get(E),_=D-1;_==1&&k.push(E),v.set(E,_)}})}y=y.concat(k),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},t.exports=p}),(function(t,e,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n}),(function(t,e,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i}),(function(t,e,r){"use strict";function n(d){if(Array.isArray(d)){for(var p=0,m=Array(d.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(d>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(d-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var d=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&d&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(d.gravitationForceX=-this.gravityConstant*y,d.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(d.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,d.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var d,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),d=this.totalDisplacement=x.length||T>=x[0].length)){for(var S=0;Sh},"_defaultCompareFunction")}]),l})();t.exports=s}),(function(t,e,r){"use strict";function n(){}o(n,"SVD"),n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=(function(dt){for(var nt=[];dt-- >0;)nt.push(0);return nt})(Math.min(this.m+1,this.n)),this.U=(function(dt){var nt=o(function bt(wt){if(wt.length==0)return 0;for(var yt=[],ft=0;ft0;)nt.push(0);return nt})(this.n),l=(function(dt){for(var nt=[];dt-- >0;)nt.push(0);return nt})(this.m),u=!0,h=!0,f=Math.min(this.m-1,this.n),d=Math.max(0,Math.min(this.n-2,this.m)),p=0;p=0;M--)if(this.s[M]!==0){for(var P=M+1;P=0;te--){if((function(dt,nt){return dt&&nt})(te0;){var Q=void 0,de=void 0;for(Q=D-2;Q>=-1&&Q!==-1;Q--)if(Math.abs(s[Q])<=ae+K*(Math.abs(this.s[Q])+Math.abs(this.s[Q+1]))){s[Q]=0;break}if(Q===D-2)de=4;else{var ne=void 0;for(ne=D-1;ne>=Q&&ne!==Q;ne--){var Te=(ne!==D?Math.abs(s[ne]):0)+(ne!==Q+1?Math.abs(s[ne-1]):0);if(Math.abs(this.s[ne])<=ae+K*Te){this.s[ne]=0;break}}ne===Q?de=3:ne===D-1?de=1:(de=2,Q=ne)}switch(Q++,de){case 1:{var q=s[D-2];s[D-2]=0;for(var Ve=D-2;Ve>=Q;Ve--){var pe=n.hypot(this.s[Ve],q),Be=this.s[Ve]/pe,Ye=q/pe;if(this.s[Ve]=pe,Ve!==Q&&(q=-Ye*s[Ve-1],s[Ve-1]=Be*s[Ve-1]),h)for(var He=0;He=this.s[Q+1]);){var lt=this.s[Q];if(this.s[Q]=this.s[Q+1],this.s[Q+1]=lt,h&&QMath.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},t.exports=n}),(function(t,e,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,f=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,d=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=f,this.gap_penalty=d,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(e,r){typeof P4=="object"&&typeof Rz=="object"?Rz.exports=r(Lz()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof P4=="object"?P4.coseBase=r(Lz()):e.coseBase=r(e.layoutBase)}),"webpackUniversalModuleDefinition")(P4,function(t){return(()=>{"use strict";var e={45:((a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u}),806:((a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var f in u)h[f]=u[f];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h}),767:((a,s,l)=>{var u=l(551).FDLayoutEdge;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h}),880:((a,s,l)=>{var u=l(551).LGraph;function h(d,p,m){u.call(this,d,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h}),578:((a,s,l)=>{var u=l(551).LGraphManager;function h(d){u.call(this,d)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var f in u)h[f]=u[f];a.exports=h}),765:((a,s,l)=>{var u=l(551).FDLayout,h=l(578),f=l(880),d=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,T=l(551).DimensionD,S=l(551).Layout,w=l(551).Integer,k=l(551).IGeometry,A=l(551).LGraph,C=l(551).Transform,R=l(551).LinkedList;function I(){u.call(this),this.toBeTiled={},this.constraints={}}o(I,"CoSELayout"),I.prototype=Object.create(u.prototype);for(var L in u)I[L]=u[L];I.prototype.newGraphManager=function(){var E=new h(this);return this.graphManager=E,E},I.prototype.newGraph=function(E){return new f(null,this.graphManager,E)},I.prototype.newNode=function(E){return new d(this.graphManager,E)},I.prototype.newEdge=function(E){return new p(null,null,E)},I.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},I.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},I.prototype.layout=function(){var E=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return E&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},I.prototype.classicLayout=function(){if(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){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var D=new Set(this.getAllNodes()),_=this.nodesWithGravity.filter(function(P){return D.has(P)});this.graphManager.setAllNodesToApplyGravitation(_)}}else{var E=this.getFlatForest();if(E.length>0)this.positionNodesRadially(E);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var D=new Set(this.getAllNodes()),_=this.nodesWithGravity.filter(function(O){return D.has(O)});this.graphManager.setAllNodesToApplyGravitation(_),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},I.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var E=new Set(this.getAllNodes()),D=this.nodesWithGravity.filter(function(M){return E.has(M)});this.graphManager.setAllNodesToApplyGravitation(D),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var _=!this.isTreeGrowing&&!this.isGrowthFinished,O=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(_,O),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},I.prototype.getPositionsData=function(){for(var E=this.graphManager.getAllNodes(),D={},_=0;_0&&this.updateDisplacements();for(var _=0;_0&&(O.fixedNodeWeight=P)}}if(this.constraints.relativePlacementConstraint){var B=new Map,F=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(J){E.fixedNodesOnHorizontal.add(J),E.fixedNodesOnVertical.add(J)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var G=this.constraints.alignmentConstraint.vertical,_=0;_=2*J.length/3;ee--)ue=Math.floor(Math.random()*(ee+1)),re=J[ee],J[ee]=J[ue],J[ue]=re;return J},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(J){if(J.left){var ue=B.has(J.left)?B.get(J.left):J.left,re=B.has(J.right)?B.get(J.right):J.right;E.nodesInRelativeHorizontal.includes(ue)||(E.nodesInRelativeHorizontal.push(ue),E.nodeToRelativeConstraintMapHorizontal.set(ue,[]),E.dummyToNodeForVerticalAlignment.has(ue)?E.nodeToTempPositionMapHorizontal.set(ue,E.idToNodeMap.get(E.dummyToNodeForVerticalAlignment.get(ue)[0]).getCenterX()):E.nodeToTempPositionMapHorizontal.set(ue,E.idToNodeMap.get(ue).getCenterX())),E.nodesInRelativeHorizontal.includes(re)||(E.nodesInRelativeHorizontal.push(re),E.nodeToRelativeConstraintMapHorizontal.set(re,[]),E.dummyToNodeForVerticalAlignment.has(re)?E.nodeToTempPositionMapHorizontal.set(re,E.idToNodeMap.get(E.dummyToNodeForVerticalAlignment.get(re)[0]).getCenterX()):E.nodeToTempPositionMapHorizontal.set(re,E.idToNodeMap.get(re).getCenterX())),E.nodeToRelativeConstraintMapHorizontal.get(ue).push({right:re,gap:J.gap}),E.nodeToRelativeConstraintMapHorizontal.get(re).push({left:ue,gap:J.gap})}else{var ee=F.has(J.top)?F.get(J.top):J.top,Z=F.has(J.bottom)?F.get(J.bottom):J.bottom;E.nodesInRelativeVertical.includes(ee)||(E.nodesInRelativeVertical.push(ee),E.nodeToRelativeConstraintMapVertical.set(ee,[]),E.dummyToNodeForHorizontalAlignment.has(ee)?E.nodeToTempPositionMapVertical.set(ee,E.idToNodeMap.get(E.dummyToNodeForHorizontalAlignment.get(ee)[0]).getCenterY()):E.nodeToTempPositionMapVertical.set(ee,E.idToNodeMap.get(ee).getCenterY())),E.nodesInRelativeVertical.includes(Z)||(E.nodesInRelativeVertical.push(Z),E.nodeToRelativeConstraintMapVertical.set(Z,[]),E.dummyToNodeForHorizontalAlignment.has(Z)?E.nodeToTempPositionMapVertical.set(Z,E.idToNodeMap.get(E.dummyToNodeForHorizontalAlignment.get(Z)[0]).getCenterY()):E.nodeToTempPositionMapVertical.set(Z,E.idToNodeMap.get(Z).getCenterY())),E.nodeToRelativeConstraintMapVertical.get(ee).push({bottom:Z,gap:J.gap}),E.nodeToRelativeConstraintMapVertical.get(Z).push({top:ee,gap:J.gap})}});else{var U=new Map,j=new Map;this.constraints.relativePlacementConstraint.forEach(function(J){if(J.left){var ue=B.has(J.left)?B.get(J.left):J.left,re=B.has(J.right)?B.get(J.right):J.right;U.has(ue)?U.get(ue).push(re):U.set(ue,[re]),U.has(re)?U.get(re).push(ue):U.set(re,[ue])}else{var ee=F.has(J.top)?F.get(J.top):J.top,Z=F.has(J.bottom)?F.get(J.bottom):J.bottom;j.has(ee)?j.get(ee).push(Z):j.set(ee,[Z]),j.has(Z)?j.get(Z).push(ee):j.set(Z,[ee])}});var te=o(function(ue,re){var ee=[],Z=[],K=new R,ae=new Set,Q=0;return ue.forEach(function(de,ne){if(!ae.has(ne)){ee[Q]=[],Z[Q]=!1;var Te=ne;for(K.push(Te),ae.add(Te),ee[Q].push(Te);K.length!=0;){Te=K.shift(),re.has(Te)&&(Z[Q]=!0);var q=ue.get(Te);q.forEach(function(Ve){ae.has(Ve)||(K.push(Ve),ae.add(Ve),ee[Q].push(Ve))})}Q++}}),{components:ee,isFixed:Z}},"constructComponents"),Y=te(U,E.fixedNodesOnHorizontal);this.componentsOnHorizontal=Y.components,this.fixedComponentsOnHorizontal=Y.isFixed;var oe=te(j,E.fixedNodesOnVertical);this.componentsOnVertical=oe.components,this.fixedComponentsOnVertical=oe.isFixed}}},I.prototype.updateDisplacements=function(){var E=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(oe){var J=E.idToNodeMap.get(oe.nodeId);J.displacementX=0,J.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var D=this.constraints.alignmentConstraint.vertical,_=0;_1){var F;for(F=0;FO&&(O=Math.floor(B.y)),P=Math.floor(B.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-B.x/2,v.WORLD_CENTER_Y-B.y/2))},I.radialLayout=function(E,D,_){var O=Math.max(this.maxDiagonalInTree(E),m.DEFAULT_RADIAL_SEPARATION);I.branchRadialLayout(D,null,0,359,0,O);var M=A.calculateBounds(E),P=new C;P.setDeviceOrgX(M.getMinX()),P.setDeviceOrgY(M.getMinY()),P.setWorldOrgX(_.x),P.setWorldOrgY(_.y);for(var B=0;B1;){var ee=re[0];re.splice(0,1);var Z=te.indexOf(ee);Z>=0&&te.splice(Z,1),J--,Y--}D!=null?ue=(te.indexOf(re[0])+1)%J:ue=0;for(var K=Math.abs(O-_)/Y,ae=ue;oe!=Y;ae=++ae%J){var Q=te[ae].getOtherEnd(E);if(Q!=D){var de=(_+oe*K)%360,ne=(de+K)%360;I.branchRadialLayout(Q,E,de,ne,M+P,P),oe++}}},I.maxDiagonalInTree=function(E){for(var D=w.MIN_VALUE,_=0;_D&&(D=M)}return D},I.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},I.prototype.groupZeroDegreeMembers=function(){var E=this,D={};this.memberGroups={},this.idToDummyNode={};for(var _=[],O=this.graphManager.getAllNodes(),M=0;M"u"&&(D[F]=[]),D[F]=D[F].concat(P)}Object.keys(D).forEach(function(G){if(D[G].length>1){var $="DummyCompound_"+G;E.memberGroups[$]=D[G];var U=D[G][0].getParent(),j=new d(E.graphManager);j.id=$,j.paddingLeft=U.paddingLeft||0,j.paddingRight=U.paddingRight||0,j.paddingBottom=U.paddingBottom||0,j.paddingTop=U.paddingTop||0,E.idToDummyNode[$]=j;var te=E.getGraphManager().add(E.newGraph(),j),Y=U.getChild();Y.add(j);for(var oe=0;oeM?(O.rect.x-=(O.labelWidth-M)/2,O.setWidth(O.labelWidth),O.labelMarginLeft=(O.labelWidth-M)/2):O.labelPosHorizontal=="right"&&O.setWidth(M+O.labelWidth)),O.labelHeight&&(O.labelPosVertical=="top"?(O.rect.y-=O.labelHeight,O.setHeight(P+O.labelHeight),O.labelMarginTop=O.labelHeight):O.labelPosVertical=="center"&&O.labelHeight>P?(O.rect.y-=(O.labelHeight-P)/2,O.setHeight(O.labelHeight),O.labelMarginTop=(O.labelHeight-P)/2):O.labelPosVertical=="bottom"&&O.setHeight(P+O.labelHeight))}})},I.prototype.repopulateCompounds=function(){for(var E=this.compoundOrder.length-1;E>=0;E--){var D=this.compoundOrder[E],_=D.id,O=D.paddingLeft,M=D.paddingTop,P=D.labelMarginLeft,B=D.labelMarginTop;this.adjustLocations(this.tiledMemberPack[_],D.rect.x,D.rect.y,O,M,P,B)}},I.prototype.repopulateZeroDegreeMembers=function(){var E=this,D=this.tiledZeroDegreePack;Object.keys(D).forEach(function(_){var O=E.idToDummyNode[_],M=O.paddingLeft,P=O.paddingTop,B=O.labelMarginLeft,F=O.labelMarginTop;E.adjustLocations(D[_],O.rect.x,O.rect.y,M,P,B,F)})},I.prototype.getToBeTiled=function(E){var D=E.id;if(this.toBeTiled[D]!=null)return this.toBeTiled[D];var _=E.getChild();if(_==null)return this.toBeTiled[D]=!1,!1;for(var O=_.getNodes(),M=0;M0)return this.toBeTiled[D]=!1,!1;if(P.getChild()==null){this.toBeTiled[P.id]=!1;continue}if(!this.getToBeTiled(P))return this.toBeTiled[D]=!1,!1}return this.toBeTiled[D]=!0,!0},I.prototype.getNodeDegree=function(E){for(var D=E.id,_=E.getEdges(),O=0,M=0;M<_.length;M++){var P=_[M];P.getSource().id!==P.getTarget().id&&(O=O+1)}return O},I.prototype.getNodeDegreeWithChildren=function(E){var D=this.getNodeDegree(E);if(E.getChild()==null)return D;for(var _=E.getChild().getNodes(),O=0;O<_.length;O++){var M=_[O];D+=this.getNodeDegreeWithChildren(M)}return D},I.prototype.performDFSOnCompounds=function(){this.compoundOrder=[],this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())},I.prototype.fillCompexOrderByDFS=function(E){for(var D=0;DU&&(U=te.rect.height)}_+=U+E.verticalPadding}},I.prototype.tileCompoundMembers=function(E,D){var _=this;this.tiledMemberPack=[],Object.keys(E).forEach(function(O){var M=D[O];if(_.tiledMemberPack[O]=_.tileNodes(E[O],M.paddingLeft+M.paddingRight),M.rect.width=_.tiledMemberPack[O].width,M.rect.height=_.tiledMemberPack[O].height,M.setCenter(_.tiledMemberPack[O].centerX,_.tiledMemberPack[O].centerY),M.labelMarginLeft=0,M.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var P=M.rect.width,B=M.rect.height;M.labelWidth&&(M.labelPosHorizontal=="left"?(M.rect.x-=M.labelWidth,M.setWidth(P+M.labelWidth),M.labelMarginLeft=M.labelWidth):M.labelPosHorizontal=="center"&&M.labelWidth>P?(M.rect.x-=(M.labelWidth-P)/2,M.setWidth(M.labelWidth),M.labelMarginLeft=(M.labelWidth-P)/2):M.labelPosHorizontal=="right"&&M.setWidth(P+M.labelWidth)),M.labelHeight&&(M.labelPosVertical=="top"?(M.rect.y-=M.labelHeight,M.setHeight(B+M.labelHeight),M.labelMarginTop=M.labelHeight):M.labelPosVertical=="center"&&M.labelHeight>B?(M.rect.y-=(M.labelHeight-B)/2,M.setHeight(M.labelHeight),M.labelMarginTop=(M.labelHeight-B)/2):M.labelPosVertical=="bottom"&&M.setHeight(B+M.labelHeight))}})},I.prototype.tileNodes=function(E,D){var _=this.tileNodesByFavoringDim(E,D,!0),O=this.tileNodesByFavoringDim(E,D,!1),M=this.getOrgRatio(_),P=this.getOrgRatio(O),B;return PF&&(F=oe.getWidth())});var G=P/M,$=B/M,U=Math.pow(_-O,2)+4*(G+O)*($+_)*M,j=(O-_+Math.sqrt(U))/(2*(G+O)),te;D?(te=Math.ceil(j),te==j&&te++):te=Math.floor(j);var Y=te*(G+O)-O;return F>Y&&(Y=F),Y+=O*2,Y},I.prototype.tileNodesByFavoringDim=function(E,D,_){var O=m.TILING_PADDING_VERTICAL,M=m.TILING_PADDING_HORIZONTAL,P=m.TILING_COMPARE_BY,B={rows:[],rowWidth:[],rowHeight:[],width:0,height:D,verticalPadding:O,horizontalPadding:M,centerX:0,centerY:0};P&&(B.idealRowWidth=this.calcIdealRowWidth(E,_));var F=o(function(J){return J.rect.width*J.rect.height},"getNodeArea"),G=o(function(J,ue){return F(ue)-F(J)},"areaCompareFcn");E.sort(function(oe,J){var ue=G;return B.idealRowWidth?(ue=P,ue(oe.id,J.id)):ue(oe,J)});for(var $=0,U=0,j=0;j0&&(B+=E.horizontalPadding),E.rowWidth[_]=B,E.width0&&(F+=E.verticalPadding);var G=0;F>E.rowHeight[_]&&(G=E.rowHeight[_],E.rowHeight[_]=F,G=E.rowHeight[_]-G),E.height+=G,E.rows[_].push(D)},I.prototype.getShortestRowIndex=function(E){for(var D=-1,_=Number.MAX_VALUE,O=0;O_&&(D=O,_=E.rowWidth[O]);return D},I.prototype.canAddHorizontal=function(E,D,_){if(E.idealRowWidth){var O=E.rows.length-1,M=E.rowWidth[O];return M+D+E.horizontalPadding<=E.idealRowWidth}var P=this.getShortestRowIndex(E);if(P<0)return!0;var B=E.rowWidth[P];if(B+E.horizontalPadding+D<=E.width)return!0;var F=0;E.rowHeight[P]<_&&P>0&&(F=_+E.verticalPadding-E.rowHeight[P]);var G;E.width-B>=D+E.horizontalPadding?G=(E.height+F)/(B+D+E.horizontalPadding):G=(E.height+F)/E.width,F=_+E.verticalPadding;var $;return E.widthP&&D!=_){O.splice(-1,1),E.rows[_].push(M),E.rowWidth[D]=E.rowWidth[D]-P,E.rowWidth[_]=E.rowWidth[_]+P,E.width=E.rowWidth[instance.getLongestRowIndex(E)];for(var B=Number.MIN_VALUE,F=0;FB&&(B=O[F].height);D>0&&(B+=E.verticalPadding);var G=E.rowHeight[D]+E.rowHeight[_];E.rowHeight[D]=B,E.rowHeight[_]0)for(var Y=M;Y<=P;Y++)te[0]+=this.grid[Y][B-1].length+this.grid[Y][B].length-1;if(P0)for(var Y=B;Y<=F;Y++)te[3]+=this.grid[M-1][Y].length+this.grid[M][Y].length-1;for(var oe=w.MAX_VALUE,J,ue,re=0;re{var u=l(551).FDLayoutNode,h=l(551).IMath;function f(p,m,g,y){u.call(this,p,m,g,y)}o(f,"CoSENode"),f.prototype=Object.create(u.prototype);for(var d in u)f[d]=u[d];f.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},f.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y0){var et=0;Oe.forEach(function(lt){he=="horizontal"?(ye.set(lt,x.has(lt)?b[x.get(lt)]:se.get(lt)),et+=ye.get(lt)):(ye.set(lt,x.has(lt)?T[x.get(lt)]:se.get(lt)),et+=ye.get(lt))}),et=et/Oe.length,We.forEach(function(lt){z.has(lt)||ye.set(lt,et)})}else{var Ue=0;We.forEach(function(lt){he=="horizontal"?Ue+=x.has(lt)?b[x.get(lt)]:se.get(lt):Ue+=x.has(lt)?T[x.get(lt)]:se.get(lt)}),Ue=Ue/We.length,We.forEach(function(lt){ye.set(lt,Ue)})}});for(var ze=o(function(){var Oe=_e.shift(),et=W.get(Oe);et.forEach(function(Ue){if(ye.get(Ue.id)lt&&(lt=yt),ftGt&&(Gt=ft)}}catch(Ct){Lt=!0,dt=Ct}finally{try{!vt&&nt.return&&nt.return()}finally{if(Lt)throw dt}}var Ur=(et+lt)/2-(Ue+Gt)/2,_t=!0,bn=!1,Br=void 0;try{for(var cr=We[Symbol.iterator](),ar;!(_t=(ar=cr.next()).done);_t=!0){var _r=ar.value;ye.set(_r,ye.get(_r)+Ur)}}catch(Ct){bn=!0,Br=Ct}finally{try{!_t&&cr.return&&cr.return()}finally{if(bn)throw Br}}})}return ye},"findAppropriatePositionForRelativePlacement"),L=o(function(W){var he=0,z=0,se=0,le=0;if(W.forEach(function(Re){Re.left?b[x.get(Re.left)]-b[x.get(Re.right)]>=0?he++:z++:T[x.get(Re.top)]-T[x.get(Re.bottom)]>=0?se++:le++}),he>z&&se>le)for(var ke=0;kez)for(var ve=0;vele)for(var ye=0;ye1)y.fixedNodeConstraint.forEach(function(xe,W){O[W]=[xe.position.x,xe.position.y],M[W]=[b[x.get(xe.nodeId)],T[x.get(xe.nodeId)]]}),P=!0;else if(y.alignmentConstraint)(function(){var xe=0;if(y.alignmentConstraint.vertical){for(var W=y.alignmentConstraint.vertical,he=o(function(ye){var Re=new Set;W[ye].forEach(function(Ke){Re.add(Ke)});var _e=new Set([].concat(u(Re)).filter(function(Ke){return F.has(Ke)})),ze=void 0;_e.size>0?ze=b[x.get(_e.values().next().value)]:ze=R(Re).x,W[ye].forEach(function(Ke){O[xe]=[ze,T[x.get(Ke)]],M[xe]=[b[x.get(Ke)],T[x.get(Ke)]],xe++})},"_loop2"),z=0;z0?ze=b[x.get(_e.values().next().value)]:ze=R(Re).y,se[ye].forEach(function(Ke){O[xe]=[b[x.get(Ke)],ze],M[xe]=[b[x.get(Ke)],T[x.get(Ke)]],xe++})},"_loop3"),ke=0;kej&&(j=U[Y].length,te=Y);if(j<$.size/2)L(y.relativePlacementConstraint),P=!1,B=!1;else{var oe=new Map,J=new Map,ue=[];U[te].forEach(function(xe){G.get(xe).forEach(function(W){W.direction=="horizontal"?(oe.has(xe)?oe.get(xe).push(W):oe.set(xe,[W]),oe.has(W.id)||oe.set(W.id,[]),ue.push({left:xe,right:W.id})):(J.has(xe)?J.get(xe).push(W):J.set(xe,[W]),J.has(W.id)||J.set(W.id,[]),ue.push({top:xe,bottom:W.id}))})}),L(ue),B=!1;var re=I(oe,"horizontal"),ee=I(J,"vertical");U[te].forEach(function(xe,W){M[W]=[b[x.get(xe)],T[x.get(xe)]],O[W]=[],re.has(xe)?O[W][0]=re.get(xe):O[W][0]=b[x.get(xe)],ee.has(xe)?O[W][1]=ee.get(xe):O[W][1]=T[x.get(xe)]}),P=!0}}if(P){for(var Z=void 0,K=d.transpose(O),ae=d.transpose(M),Q=0;Q0){var Be={x:0,y:0};y.fixedNodeConstraint.forEach(function(xe,W){var he={x:b[x.get(xe.nodeId)],y:T[x.get(xe.nodeId)]},z=xe.position,se=C(z,he);Be.x+=se.x,Be.y+=se.y}),Be.x/=y.fixedNodeConstraint.length,Be.y/=y.fixedNodeConstraint.length,b.forEach(function(xe,W){b[W]+=Be.x}),T.forEach(function(xe,W){T[W]+=Be.y}),y.fixedNodeConstraint.forEach(function(xe){b[x.get(xe.nodeId)]=xe.position.x,T[x.get(xe.nodeId)]=xe.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var Ye=y.alignmentConstraint.vertical,He=o(function(W){var he=new Set;Ye[W].forEach(function(le){he.add(le)});var z=new Set([].concat(u(he)).filter(function(le){return F.has(le)})),se=void 0;z.size>0?se=b[x.get(z.values().next().value)]:se=R(he).x,he.forEach(function(le){F.has(le)||(b[x.get(le)]=se)})},"_loop4"),Le=0;Le0?se=T[x.get(z.values().next().value)]:se=R(he).y,he.forEach(function(le){F.has(le)||(T[x.get(le)]=se)})},"_loop5"),Ce=0;Ce{a.exports=t})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var R4e=Da((B4,Mz)=>{"use strict";o((function(e,r){typeof B4=="object"&&typeof Mz=="object"?Mz.exports=r(Nz()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof B4=="object"?B4.cytoscapeFcose=r(Nz()):e.cytoscapeFcose=r(e.coseBase)}),"webpackUniversalModuleDefinition")(B4,function(t){return(()=>{"use strict";var e={658:(a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h{var u=(function(){function d(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),T;!(y=(T=b.next()).done)&&(g.push(T.value),!(m&&g.length===m));y=!0);}catch(S){v=!0,x=S}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(d,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return d(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),h=l(140).layoutBase.LinkedList,f={};f.getTopMostNodes=function(d){for(var p={},m=0;m0&&P.merge($)});for(var B=0;B1){T=x[0],S=T.connectedEdges().length,x.forEach(function(M){M.connectedEdges().length0&&g.set("dummy"+(g.size+1),A),C},f.relocateComponent=function(d,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,T=!1,S=void 0;try{for(var w=p.nodeIndexes[Symbol.iterator](),k;!(b=(k=w.next()).done);b=!0){var A=k.value,C=u(A,2),R=C[0],I=C[1],L=m.cy.getElementById(R);if(L){var E=L.boundingBox(),D=p.xCoords[I]-E.w/2,_=p.xCoords[I]+E.w/2,O=p.yCoords[I]-E.h/2,M=p.yCoords[I]+E.h/2;Dy&&(y=_),Ox&&(x=M)}}}catch($){T=!0,S=$}finally{try{!b&&w.return&&w.return()}finally{if(T)throw S}}var P=d.x-(y+g)/2,B=d.y-(x+v)/2;p.xCoords=p.xCoords.map(function($){return $+P}),p.yCoords=p.yCoords.map(function($){return $+B})}else{Object.keys(p).forEach(function($){var U=p[$],j=U.getRect().x,te=U.getRect().x+U.getRect().width,Y=U.getRect().y,oe=U.getRect().y+U.getRect().height;jy&&(y=te),Yx&&(x=oe)});var F=d.x-(y+g)/2,G=d.y-(x+v)/2;Object.keys(p).forEach(function($){var U=p[$];U.setCenter(U.getCenterX()+F,U.getCenterY()+G)})}}},f.calcBoundingBox=function(d,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,T=void 0,S=void 0,w=void 0,k=void 0,A=d.descendants().not(":parent"),C=A.length,R=0;RT&&(y=T),vw&&(x=w),b{var u=l(548),h=l(140).CoSELayout,f=l(140).CoSENode,d=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,T){var S=b.cy,w=b.eles,k=w.nodes(),A=w.edges(),C=void 0,R=void 0,I=void 0,L={};b.randomize&&(C=T.nodeIndexes,R=T.xCoords,I=T.yCoords);var E=o(function($){return typeof $=="function"},"isFn"),D=o(function($,U){return E($)?$(U):$},"optFn"),_=u.calcParentsWithoutChildren(S,w),O=o(function G($,U,j,te){for(var Y=U.length,oe=0;oe0){var K=void 0;K=j.getGraphManager().add(j.newGraph(),re),G(K,ue,j,te)}}},"processChildrenList"),M=o(function($,U,j){for(var te=0,Y=0,oe=0;oe0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=te/Y:E(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),P=o(function($,U){U.fixedNodeConstraint&&($.constraints.fixedNodeConstraint=U.fixedNodeConstraint),U.alignmentConstraint&&($.constraints.alignmentConstraint=U.alignmentConstraint),U.relativePlacementConstraint&&($.constraints.relativePlacementConstraint=U.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var B=new h,F=B.newGraphManager();return O(F.addRoot(),u.getTopMostNodes(k),B,b),M(B,F,A),P(B,b),B.runLayout(),L},"coseLayout");a.exports={coseLayout:v}}),212:((a,s,l)=>{var u=(function(){function b(T,S){for(var w=0;w0)if(M){var F=d.getTopMostNodes(w.eles.nodes());if(E=d.connectComponents(k,w.eles,F),E.forEach(function(Te){var q=Te.boundingBox();D.push({x:q.x1+q.w/2,y:q.y1+q.h/2})}),w.randomize&&E.forEach(function(Te){w.eles=Te,C.push(m(w))}),w.quality=="default"||w.quality=="proof"){var G=k.collection();if(w.tile){var $=new Map,U=[],j=[],te=0,Y={nodeIndexes:$,xCoords:U,yCoords:j},oe=[];if(E.forEach(function(Te,q){Te.edges().length==0&&(Te.nodes().forEach(function(Ve,pe){G.merge(Te.nodes()[pe]),Ve.isParent()||(Y.nodeIndexes.set(Te.nodes()[pe].id(),te++),Y.xCoords.push(Te.nodes()[0].position().x),Y.yCoords.push(Te.nodes()[0].position().y))}),oe.push(q))}),G.length>1){var J=G.boundingBox();D.push({x:J.x1+J.w/2,y:J.y1+J.h/2}),E.push(G),C.push(Y);for(var ue=oe.length-1;ue>=0;ue--)E.splice(oe[ue],1),C.splice(oe[ue],1),D.splice(oe[ue],1)}}E.forEach(function(Te,q){w.eles=Te,L.push(y(w,C[q])),d.relocateComponent(D[q],L[q],w)})}else E.forEach(function(Te,q){d.relocateComponent(D[q],C[q],w)});var re=new Set;if(E.length>1){var ee=[],Z=A.filter(function(Te){return Te.css("display")=="none"});E.forEach(function(Te,q){var Ve=void 0;if(w.quality=="draft"&&(Ve=C[q].nodeIndexes),Te.nodes().not(Z).length>0){var pe={};pe.edges=[],pe.nodes=[];var Be=void 0;Te.nodes().not(Z).forEach(function(Ye){if(w.quality=="draft")if(!Ye.isParent())Be=Ve.get(Ye.id()),pe.nodes.push({x:C[q].xCoords[Be]-Ye.boundingbox().w/2,y:C[q].yCoords[Be]-Ye.boundingbox().h/2,width:Ye.boundingbox().w,height:Ye.boundingbox().h});else{var He=d.calcBoundingBox(Ye,C[q].xCoords,C[q].yCoords,Ve);pe.nodes.push({x:He.topLeftX,y:He.topLeftY,width:He.width,height:He.height})}else L[q][Ye.id()]&&pe.nodes.push({x:L[q][Ye.id()].getLeft(),y:L[q][Ye.id()].getTop(),width:L[q][Ye.id()].getWidth(),height:L[q][Ye.id()].getHeight()})}),Te.edges().forEach(function(Ye){var He=Ye.source(),Le=Ye.target();if(He.css("display")!="none"&&Le.css("display")!="none")if(w.quality=="draft"){var Ie=Ve.get(He.id()),Ne=Ve.get(Le.id()),Ce=[],Fe=[];if(He.isParent()){var fe=d.calcBoundingBox(He,C[q].xCoords,C[q].yCoords,Ve);Ce.push(fe.topLeftX+fe.width/2),Ce.push(fe.topLeftY+fe.height/2)}else Ce.push(C[q].xCoords[Ie]),Ce.push(C[q].yCoords[Ie]);if(Le.isParent()){var xe=d.calcBoundingBox(Le,C[q].xCoords,C[q].yCoords,Ve);Fe.push(xe.topLeftX+xe.width/2),Fe.push(xe.topLeftY+xe.height/2)}else Fe.push(C[q].xCoords[Ne]),Fe.push(C[q].yCoords[Ne]);pe.edges.push({startX:Ce[0],startY:Ce[1],endX:Fe[0],endY:Fe[1]})}else L[q][He.id()]&&L[q][Le.id()]&&pe.edges.push({startX:L[q][He.id()].getCenterX(),startY:L[q][He.id()].getCenterY(),endX:L[q][Le.id()].getCenterX(),endY:L[q][Le.id()].getCenterY()})}),pe.nodes.length>0&&(ee.push(pe),re.add(q))}});var K=O.packComponents(ee,w.randomize).shifts;if(w.quality=="draft")C.forEach(function(Te,q){var Ve=Te.xCoords.map(function(Be){return Be+K[q].dx}),pe=Te.yCoords.map(function(Be){return Be+K[q].dy});Te.xCoords=Ve,Te.yCoords=pe});else{var ae=0;re.forEach(function(Te){Object.keys(L[Te]).forEach(function(q){var Ve=L[Te][q];Ve.setCenter(Ve.getCenterX()+K[ae].dx,Ve.getCenterY()+K[ae].dy)}),ae++})}}}else{var P=w.eles.boundingBox();if(D.push({x:P.x1+P.w/2,y:P.y1+P.h/2}),w.randomize){var B=m(w);C.push(B)}w.quality=="default"||w.quality=="proof"?(L.push(y(w,C[0])),d.relocateComponent(D[0],L[0],w)):d.relocateComponent(D[0],C[0],w)}var Q=o(function(q,Ve){if(w.quality=="default"||w.quality=="proof"){typeof q=="number"&&(q=Ve);var pe=void 0,Be=void 0,Ye=q.data("id");return L.forEach(function(Le){Ye in Le&&(pe={x:Le[Ye].getRect().getCenterX(),y:Le[Ye].getRect().getCenterY()},Be=Le[Ye])}),w.nodeDimensionsIncludeLabels&&(Be.labelWidth&&(Be.labelPosHorizontal=="left"?pe.x+=Be.labelWidth/2:Be.labelPosHorizontal=="right"&&(pe.x-=Be.labelWidth/2)),Be.labelHeight&&(Be.labelPosVertical=="top"?pe.y+=Be.labelHeight/2:Be.labelPosVertical=="bottom"&&(pe.y-=Be.labelHeight/2))),pe==null&&(pe={x:q.position("x"),y:q.position("y")}),{x:pe.x,y:pe.y}}else{var He=void 0;return C.forEach(function(Le){var Ie=Le.nodeIndexes.get(q.id());Ie!=null&&(He={x:Le.xCoords[Ie],y:Le.yCoords[Ie]})}),He==null&&(He={x:q.position("x"),y:q.position("y")}),{x:He.x,y:He.y}}},"getPositions");if(w.quality=="default"||w.quality=="proof"||w.randomize){var de=d.calcParentsWithoutChildren(k,A),ne=A.filter(function(Te){return Te.css("display")=="none"});w.eles=A.not(ne),A.nodes().not(":parent").not(ne).layoutPositions(S,w,Q),de.length>0&&de.forEach(function(Te){Te.position(Q(Te))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b})();a.exports=x}),657:((a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,f=l(140).layoutBase.SVD,d=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,T=new Map,S=new Map,w=[],k=[],A=[],C=[],R=[],I=[],L=[],E=[],D=void 0,_=void 0,O=1e8,M=1e-9,P=m.piTol,B=m.samplingType,F=m.nodeSeparation,G=void 0,$=o(function(){for(var he=0,z=0,se=!1;z=ke;){ye=le[ke++];for(var We=w[ye],Oe=0;Oeze&&(ze=R[Ue],Ke=Ue)}return Ke},"BFS"),j=o(function(he){var z=void 0;if(he){z=Math.floor(Math.random()*_),D=z;for(var le=0;le<_;le++)R[le]=O;for(var ke=0;ke=1)break;ze=_e}for(var We=0;We<_;We++)ke[We]=se[We];for(Re=0,ze=M;;){Re++;for(var Oe=0;Oe<_;Oe++)ve[Oe]=le[Oe];if(ve=h.minusOp(ve,h.multCons(ke,h.dotProduct(ke,ve))),le=h.multGamma(h.multL(h.multGamma(ve),I,E)),z=h.dotProduct(ve,le),le=h.normalize(le),_e=h.dotProduct(ve,le),Ke=Math.abs(_e/ze),Ke<=1+P&&Ke>=1)break;ze=_e}for(var et=0;et<_;et++)ve[et]=le[et];k=h.multCons(ke,Math.sqrt(Math.abs(he))),A=h.multCons(ve,Math.sqrt(Math.abs(z)))},"powerIteration");u.connectComponents(g,y,u.getTopMostNodes(v),b),x.forEach(function(W){u.connectComponents(g,y,u.getTopMostNodes(W.descendants().intersection(y)),b)});for(var oe=0,J=0;J0&&(z.isParent()?w[he].push(S.get(z.id())):w[he].push(z.id()))})});var de=o(function(he){var z=T.get(he),se=void 0;b.get(he).forEach(function(le){g.getElementById(le).isParent()?se=S.get(le):se=le,w[z].push(se),w[T.get(se)].push(he)})},"_loop"),ne=!0,Te=!1,q=void 0;try{for(var Ve=b.keys()[Symbol.iterator](),pe;!(ne=(pe=Ve.next()).done);ne=!0){var Be=pe.value;de(Be)}}catch(W){Te=!0,q=W}finally{try{!ne&&Ve.return&&Ve.return()}finally{if(Te)throw q}}_=T.size;var Ye=void 0;if(_>2){G=_{var u=l(212),h=o(function(d){d&&d("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h}),140:(a=>{a.exports=t})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return e[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});var xy,m0,Iz=N(()=>{"use strict";nc();xy=o(t=>`${t}`,"wrapIcon"),m0={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:xy('')},server:{body:xy('')},disk:{body:xy('')},internet:{body:xy('')},cloud:{body:xy('')},unknown:AA,blank:{body:xy("")}}}});var N4e,M4e,I4e,O4e,P4e=N(()=>{"use strict";Xt();zo();nc();gr();Iz();PC();tr();N4e=o(async function(t,e,r){let n=r.getConfigField("padding"),i=r.getConfigField("iconSize"),a=i/2,s=i/6,l=s/2;await Promise.all(e.edges().map(async u=>{let{source:h,sourceDir:f,sourceArrow:d,sourceGroup:p,target:m,targetDir:g,targetArrow:y,targetGroup:v,label:x}=OC(u),{x:b,y:T}=u[0].sourceEndpoint(),{x:S,y:w}=u[0].midpoint(),{x:k,y:A}=u[0].targetEndpoint(),C=n+4;if(p&&(Ya(f)?b+=f==="L"?-C:C:T+=f==="T"?-C:C+18),v&&(Ya(g)?k+=g==="L"?-C:C:A+=g==="T"?-C:C+18),!p&&r.getNode(h)?.type==="junction"&&(Ya(f)?b+=f==="L"?a:-a:T+=f==="T"?a:-a),!v&&r.getNode(m)?.type==="junction"&&(Ya(g)?k+=g==="L"?a:-a:A+=g==="T"?a:-a),u[0]._private.rscratch){let R=t.insert("g");if(R.insert("path").attr("d",`M ${b},${T} L ${S},${w} L${k},${A} `).attr("class","edge").attr("id",xc(h,m,{prefix:"L"})),d){let I=Ya(f)?N4[f](b,s):b-l,L=nu(f)?N4[f](T,s):T-l;R.insert("polygon").attr("points",Sz[f](s)).attr("transform",`translate(${I},${L})`).attr("class","arrow")}if(y){let I=Ya(g)?N4[g](k,s):k-l,L=nu(g)?N4[g](A,s):A-l;R.insert("polygon").attr("points",Sz[g](s)).attr("transform",`translate(${I},${L})`).attr("class","arrow")}if(x){let I=M4(f,g)?"XY":Ya(f)?"X":"Y",L=0;I==="X"?L=Math.abs(b-k):I==="Y"?L=Math.abs(T-A)/1.5:L=Math.abs(b-k)/2;let E=R.append("g");if(await di(E,x,{useHtmlLabels:!1,width:L,classes:"architecture-service-label"},ge()),E.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),I==="X")E.attr("transform","translate("+S+", "+w+")");else if(I==="Y")E.attr("transform","translate("+S+", "+w+") rotate(-90)");else if(I==="XY"){let D=I4(f,g);if(D&&w4e(D)){let _=E.node().getBoundingClientRect(),[O,M]=E4e(D);E.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*O*M*45})`);let P=E.node().getBoundingClientRect();E.attr("transform",` - translate(${S}, ${w-_.height/2}) - translate(${O*P.width/2}, ${M*P.height/2}) - rotate(${-1*O*M*45}, 0, ${_.height/2}) - `)}}}}}))},"drawEdges"),M4e=o(async function(t,e,r){let i=r.getConfigField("padding")*.75,a=r.getConfigField("fontSize"),l=r.getConfigField("iconSize")/2;await Promise.all(e.nodes().map(async u=>{let h=td(u);if(h.type==="group"){let{h:f,w:d,x1:p,y1:m}=u.boundingBox(),g=t.append("rect");g.attr("id",`group-${h.id}`).attr("x",p+l).attr("y",m+l).attr("width",d).attr("height",f).attr("class","node-bkg");let y=t.append("g"),v=p,x=m;if(h.icon){let b=y.append("g");b.html(`${await _s(h.icon,{height:i,width:i,fallbackPrefix:m0.prefix})}`),b.attr("transform","translate("+(v+l+1)+", "+(x+l+1)+")"),v+=i,x+=a/2-1-2}if(h.label){let b=y.append("g");await di(b,h.label,{useHtmlLabels:!1,width:d,classes:"architecture-service-label"},ge()),b.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),b.attr("transform","translate("+(v+l+4)+", "+(x+l+2)+")")}r.setElementForId(h.id,g)}}))},"drawGroups"),I4e=o(async function(t,e,r){let n=ge();for(let i of r){let a=e.append("g"),s=t.getConfigField("iconSize");if(i.title){let f=a.append("g");await di(f,i.title,{useHtmlLabels:!1,width:s*1.5,classes:"architecture-service-label"},n),f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),f.attr("transform","translate("+s/2+", "+s+")")}let l=a.append("g");if(i.icon)l.html(`${await _s(i.icon,{height:s,width:s,fallbackPrefix:m0.prefix})}`);else if(i.iconText){l.html(`${await _s("blank",{height:s,width:s,fallbackPrefix:m0.prefix})}`);let p=l.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(sr(i.iconText,n)),m=parseInt(window.getComputedStyle(p.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;p.attr("style",`-webkit-line-clamp: ${Math.floor((s-2)/m)};`)}else l.append("path").attr("class","node-bkg").attr("id","node-"+i.id).attr("d",`M0 ${s} v${-s} q0,-5 5,-5 h${s} q5,0 5,5 v${s} H0 Z`);a.attr("id",`service-${i.id}`).attr("class","architecture-service");let{width:u,height:h}=a.node().getBBox();i.width=u,i.height=h,t.setElementForId(i.id,a)}return 0},"drawServices"),O4e=o(function(t,e,r){r.forEach(n=>{let i=e.append("g"),a=t.getConfigField("iconSize");i.append("g").append("rect").attr("id","node-"+n.id).attr("fill-opacity","0").attr("width",a).attr("height",a),i.attr("class","architecture-junction");let{width:l,height:u}=i._groups[0][0].getBBox();i.width=l,i.height=u,t.setElementForId(n.id,i)})},"drawJunctions")});function Dit(t,e,r){t.forEach(n=>{e.add({group:"nodes",data:{type:"service",id:n.id,icon:n.icon,label:n.title,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-service"})})}function Lit(t,e,r){t.forEach(n=>{e.add({group:"nodes",data:{type:"junction",id:n.id,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-junction"})})}function Rit(t,e){e.nodes().map(r=>{let n=td(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,t.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function Nit(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function Mit(t,e){t.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:f,title:d}=r,p=M4(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:d,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:f,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};e.add({group:"edges",data:m,classes:p})})}function Iit(t,e,r){let n=o((l,u)=>Object.entries(l).reduce((h,[f,d])=>{let p=0,m=Object.entries(d);if(m.length===1)return h[f]=m[0][1],h;for(let g=0;g{let u={},h={};return Object.entries(l).forEach(([f,[d,p]])=>{let m=t.getNode(f)?.in??"default";u[p]??={},u[p][m]??=[],u[p][m].push(f),h[d]??={},h[d][m]??=[],h[d][m].push(f)}),{horiz:Object.values(n(u,"horizontal")).filter(f=>f.length>1),vert:Object.values(n(h,"vertical")).filter(f=>f.length>1)}}),[a,s]=i.reduce(([l,u],{horiz:h,vert:f})=>[[...l,...h],[...u,...f]],[[],[]]);return{horizontal:a,vertical:s}}function Oit(t,e){let r=[],n=o(a=>`${a[0]},${a[1]}`,"posToStr"),i=o(a=>a.split(",").map(s=>parseInt(s)),"strToPos");return t.forEach(a=>{let s=Object.fromEntries(Object.entries(a).map(([f,d])=>[n(d),f])),l=[n([0,0])],u={},h={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;l.length>0;){let f=l.shift();if(f){u[f]=1;let d=s[f];if(d){let p=i(f);Object.entries(h).forEach(([m,g])=>{let y=n([p[0]+g[0],p[1]+g[1]]),v=s[y];v&&!u[y]&&(l.push(y),r.push({[Ez[m]]:v,[Ez[T4e(m)]]:d,gap:1.5*e.getConfigField("iconSize")}))})}}}}),r}function Pit(t,e,r,n,i,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=qe("body").append("div").attr("id","cy").attr("style","display:none"),h=Ko({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":`${i.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:`${i.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});u.remove(),Nit(r,h),Dit(t,h,i),Lit(e,h,i),Mit(n,h);let f=Iit(i,a,s),d=Oit(a,i),p=h.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(m){let[g,y]=m.connectedNodes(),{parent:v}=td(g),{parent:x}=td(y);return v===x?1.5*i.getConfigField("iconSize"):.5*i.getConfigField("iconSize")},edgeElasticity(m){let[g,y]=m.connectedNodes(),{parent:v}=td(g),{parent:x}=td(y);return v===x?.45:.001},alignmentConstraint:f,relativePlacementConstraint:d});p.one("layoutstop",()=>{function m(g,y,v,x){let b,T,{x:S,y:w}=g,{x:k,y:A}=y;T=(x-w+(S-v)*(w-A)/(S-k))/Math.sqrt(1+Math.pow((w-A)/(S-k),2)),b=Math.sqrt(Math.pow(x-w,2)+Math.pow(v-S,2)-Math.pow(T,2));let C=Math.sqrt(Math.pow(k-S,2)+Math.pow(A-w,2));b=b/C;let R=(k-S)*(x-w)-(A-w)*(v-S);switch(!0){case R>=0:R=1;break;case R<0:R=-1;break}let I=(k-S)*(v-S)+(A-w)*(x-w);switch(!0){case I>=0:I=1;break;case I<0:I=-1;break}return T=Math.abs(T)*R,b=b*I,{distances:T,weights:b}}o(m,"getSegmentWeights"),h.startBatch();for(let g of Object.values(h.edges()))if(g.data?.()){let{x:y,y:v}=g.source().position(),{x,y:b}=g.target().position();if(y!==x&&v!==b){let T=g.sourceEndpoint(),S=g.targetEndpoint(),{sourceDir:w}=OC(g),[k,A]=nu(w)?[T.x,S.y]:[S.x,T.y],{weights:C,distances:R}=m(T,S,k,A);g.style("segment-distances",R),g.style("segment-weights",C)}}h.endBatch(),p.run()}),p.run(),h.ready(m=>{X.info("Ready",m),l(h)})})}var B4e,Bit,F4e,$4e=N(()=>{"use strict";II();B4e=ja(R4e(),1);yr();pt();nc();tu();Ei();Iz();PC();P4e();O3([{name:m0.prefix,icons:m0}]);Ko.use(B4e.default);o(Dit,"addServices");o(Lit,"addJunctions");o(Rit,"positionNodes");o(Nit,"addGroups");o(Mit,"addEdges");o(Iit,"getAlignments");o(Oit,"getRelativeConstraints");o(Pit,"layoutArchitecture");Bit=o(async(t,e,r,n)=>{let i=n.db,a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),f=aa(e),d=f.append("g");d.attr("class","architecture-edges");let p=f.append("g");p.attr("class","architecture-services");let m=f.append("g");m.attr("class","architecture-groups"),await I4e(i,p,a),O4e(i,p,s);let g=await Pit(a,s,l,u,i,h);await N4e(d,g,i),await M4e(m,g,i),Rit(i,g),ic(void 0,f,i.getConfigField("padding"),i.getConfigField("useMaxWidth"))},"draw"),F4e={draw:Bit}});var z4e={};dr(z4e,{diagram:()=>Fit});var Fit,G4e=N(()=>{"use strict";_4e();Az();L4e();$4e();Fit={parser:_z,get db(){return new vy},renderer:F4e,styles:D4e}});var by,Oz=N(()=>{"use strict";La();qn();tr();$t();ci();by=class{constructor(){this.nodes=[];this.levels=new Map;this.outerNodes=[];this.classes=new Map;this.setAccTitle=Rr;this.getAccTitle=Mr;this.setDiagramTitle=$r;this.getDiagramTitle=Pr;this.getAccDescription=Or;this.setAccDescription=Ir}static{o(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let e=ur,r=Qt();return Vn({...e.treemap,...r.treemap??{}})}addNode(e,r){this.nodes.push(e),this.levels.set(e,r),r===0&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,r){let n=this.classes.get(e)??{id:e,styles:[],textStyles:[]},i=r.replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");i&&i.forEach(a=>{_2(a)&&(n?.textStyles?n.textStyles.push(a):n.textStyles=[a]),n?.styles?n.styles.push(a):n.styles=[a]}),this.classes.set(e,n)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){Sr(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}}});function H4e(t){if(!t.length)return[];let e=[],r=[];return t.forEach(n=>{let i={name:n.name,children:n.type==="Leaf"?void 0:[]};for(i.classSelector=n?.classSelector,n?.cssCompiledStyles&&(i.cssCompiledStyles=[n.cssCompiledStyles]),n.type==="Leaf"&&n.value!==void 0&&(i.value=n.value);r.length>0&&r[r.length-1].level>=n.level;)r.pop();if(r.length===0)e.push(i);else{let a=r[r.length-1].node;a.children?a.children.push(i):a.children=[i]}n.type!=="Leaf"&&r.push({node:i,level:n.level})}),e}var q4e=N(()=>{"use strict";o(H4e,"buildHierarchy")});var Vit,Uit,Pz,W4e=N(()=>{"use strict";Uf();pt();r0();q4e();Oz();Vit=o((t,e)=>{nl(t,e);let r=[];for(let a of t.TreemapRows??[])a.$type==="ClassDefStatement"&&e.addClass(a.className??"",a.styleText??"");for(let a of t.TreemapRows??[]){let s=a.item;if(!s)continue;let l=a.indent?parseInt(a.indent):0,u=Uit(s),h=s.classSelector?e.getStylesForClass(s.classSelector):[],f=h.length>0?h.join(";"):void 0,d={level:l,name:u,type:s.$type,value:s.value,classSelector:s.classSelector,cssCompiledStyles:f};r.push(d)}let n=H4e(r),i=o((a,s)=>{for(let l of a)e.addNode(l,s),l.children&&l.children.length>0&&i(l.children,s+1)},"addNodesRecursively");i(n,0)},"populate"),Uit=o(t=>t.name?String(t.name):"","getItemName"),Pz={parser:{yy:void 0},parse:o(async t=>{try{let r=await bs("treemap",t);X.debug("Treemap AST:",r);let n=Pz.parser?.yy;if(!(n instanceof by))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.");Vit(r,n)}catch(e){throw X.error("Error parsing treemap:",e),e}},"parse")}});var Hit,Ty,F4,qit,Wit,Y4e,X4e=N(()=>{"use strict";tu();Mf();Ei();yr();$t();qn();pt();Hit=10,Ty=10,F4=25,qit=o((t,e,r,n)=>{let i=n.db,a=i.getConfig(),s=a.padding??Hit,l=i.getDiagramTitle(),u=i.getRoot(),{themeVariables:h}=Qt();if(!u)return;let f=l?30:0,d=aa(e),p=a.nodeWidth?a.nodeWidth*Ty:960,m=a.nodeHeight?a.nodeHeight*Ty:500,g=p,y=m+f;d.attr("viewBox",`0 0 ${g} ${y}`),mn(d,y,g,a.useMaxWidth);let v;try{let _=a.valueFormat||",";if(_==="$0,0")v=o(O=>"$"+cc(",")(O),"valueFormat");else if(_.startsWith("$")&&_.includes(",")){let O=/\.\d+/.exec(_),M=O?O[0]:"";v=o(P=>"$"+cc(","+M)(P),"valueFormat")}else if(_.startsWith("$")){let O=_.substring(1);v=o(M=>"$"+cc(O||"")(M),"valueFormat")}else v=cc(_)}catch(_){X.error("Error creating format function:",_),v=cc(",")}let x=no().range(["transparent",h.cScale0,h.cScale1,h.cScale2,h.cScale3,h.cScale4,h.cScale5,h.cScale6,h.cScale7,h.cScale8,h.cScale9,h.cScale10,h.cScale11]),b=no().range(["transparent",h.cScalePeer0,h.cScalePeer1,h.cScalePeer2,h.cScalePeer3,h.cScalePeer4,h.cScalePeer5,h.cScalePeer6,h.cScalePeer7,h.cScalePeer8,h.cScalePeer9,h.cScalePeer10,h.cScalePeer11]),T=no().range([h.cScaleLabel0,h.cScaleLabel1,h.cScaleLabel2,h.cScaleLabel3,h.cScaleLabel4,h.cScaleLabel5,h.cScaleLabel6,h.cScaleLabel7,h.cScaleLabel8,h.cScaleLabel9,h.cScaleLabel10,h.cScaleLabel11]);l&&d.append("text").attr("x",g/2).attr("y",f/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(l);let S=d.append("g").attr("transform",`translate(0, ${f})`).attr("class","treemapContainer"),w=U0(u).sum(_=>_.value??0).sort((_,O)=>(O.value??0)-(_.value??0)),A=R5().size([p,m]).paddingTop(_=>_.children&&_.children.length>0?F4+Ty:0).paddingInner(s).paddingLeft(_=>_.children&&_.children.length>0?Ty:0).paddingRight(_=>_.children&&_.children.length>0?Ty:0).paddingBottom(_=>_.children&&_.children.length>0?Ty:0).round(!0)(w),C=A.descendants().filter(_=>_.children&&_.children.length>0),R=S.selectAll(".treemapSection").data(C).enter().append("g").attr("class","treemapSection").attr("transform",_=>`translate(${_.x0},${_.y0})`);R.append("rect").attr("width",_=>_.x1-_.x0).attr("height",F4).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",_=>_.depth===0?"display: none;":""),R.append("clipPath").attr("id",(_,O)=>`clip-section-${e}-${O}`).append("rect").attr("width",_=>Math.max(0,_.x1-_.x0-12)).attr("height",F4),R.append("rect").attr("width",_=>_.x1-_.x0).attr("height",_=>_.y1-_.y0).attr("class",(_,O)=>`treemapSection section${O}`).attr("fill",_=>x(_.data.name)).attr("fill-opacity",.6).attr("stroke",_=>b(_.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",_=>{if(_.depth===0)return"display: none;";let O=je({cssCompiledStyles:_.data.cssCompiledStyles});return O.nodeStyles+";"+O.borderStyles.join(";")}),R.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",F4/2).attr("dominant-baseline","middle").text(_=>_.depth===0?"":_.data.name).attr("font-weight","bold").attr("style",_=>{if(_.depth===0)return"display: none;";let O="dominant-baseline: middle; font-size: 12px; fill:"+T(_.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",M=je({cssCompiledStyles:_.data.cssCompiledStyles});return O+M.labelStyles.replace("color:","fill:")}).each(function(_){if(_.depth===0)return;let O=qe(this),M=_.data.name;O.text(M);let P=_.x1-_.x0,B=6,F;a.showValues!==!1&&_.value?F=P-10-30-10-B:F=P-B-6;let $=Math.max(15,F),U=O.node();if(U.getComputedTextLength()>$){let Y=M;for(;Y.length>0;){if(Y=M.substring(0,Y.length-1),Y.length===0){O.text("..."),U.getComputedTextLength()>$&&O.text("");break}if(O.text(Y+"..."),U.getComputedTextLength()<=$)break}}}),a.showValues!==!1&&R.append("text").attr("class","treemapSectionValue").attr("x",_=>_.x1-_.x0-10).attr("y",F4/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(_=>_.value?v(_.value):"").attr("font-style","italic").attr("style",_=>{if(_.depth===0)return"display: none;";let O="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+T(_.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",M=je({cssCompiledStyles:_.data.cssCompiledStyles});return O+M.labelStyles.replace("color:","fill:")});let I=A.leaves(),L=S.selectAll(".treemapLeafGroup").data(I).enter().append("g").attr("class",(_,O)=>`treemapNode treemapLeafGroup leaf${O}${_.data.classSelector?` ${_.data.classSelector}`:""}x`).attr("transform",_=>`translate(${_.x0},${_.y0})`);L.append("rect").attr("width",_=>_.x1-_.x0).attr("height",_=>_.y1-_.y0).attr("class","treemapLeaf").attr("fill",_=>_.parent?x(_.parent.data.name):x(_.data.name)).attr("style",_=>je({cssCompiledStyles:_.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",_=>_.parent?x(_.parent.data.name):x(_.data.name)).attr("stroke-width",3),L.append("clipPath").attr("id",(_,O)=>`clip-${e}-${O}`).append("rect").attr("width",_=>Math.max(0,_.x1-_.x0-4)).attr("height",_=>Math.max(0,_.y1-_.y0-4)),L.append("text").attr("class","treemapLabel").attr("x",_=>(_.x1-_.x0)/2).attr("y",_=>(_.y1-_.y0)/2).attr("style",_=>{let O="text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+T(_.data.name)+";",M=je({cssCompiledStyles:_.data.cssCompiledStyles});return O+M.labelStyles.replace("color:","fill:")}).attr("clip-path",(_,O)=>`url(#clip-${e}-${O})`).text(_=>_.data.name).each(function(_){let O=qe(this),M=_.x1-_.x0,P=_.y1-_.y0,B=O.node(),F=4,G=M-2*F,$=P-2*F;if(G<10||$<10){O.style("display","none");return}let U=parseInt(O.style("font-size"),10),j=8,te=28,Y=.6,oe=6,J=2;for(;B.getComputedTextLength()>G&&U>j;)U--,O.style("font-size",`${U}px`);let ue=Math.max(oe,Math.min(te,Math.round(U*Y))),re=U+J+ue;for(;re>$&&U>j&&(U--,ue=Math.max(oe,Math.min(te,Math.round(U*Y))),!(ue$;O.style("font-size",`${U}px`),(B.getComputedTextLength()>G||U(O.x1-O.x0)/2).attr("y",function(O){return(O.y1-O.y0)/2}).attr("style",O=>{let M="text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+T(O.data.name)+";",P=je({cssCompiledStyles:O.data.cssCompiledStyles});return M+P.labelStyles.replace("color:","fill:")}).attr("clip-path",(O,M)=>`url(#clip-${e}-${M})`).text(O=>O.value?v(O.value):"").each(function(O){let M=qe(this),P=this.parentNode;if(!P){M.style("display","none");return}let B=qe(P).select(".treemapLabel");if(B.empty()||B.style("display")==="none"){M.style("display","none");return}let F=parseFloat(B.style("font-size")),G=28,$=.6,U=6,j=2,te=Math.max(U,Math.min(G,Math.round(F*$)));M.style("font-size",`${te}px`);let oe=(O.y1-O.y0)/2+F/2+j;M.attr("y",oe);let J=O.x1-O.x0,ee=O.y1-O.y0-4,Z=J-8;M.node().getComputedTextLength()>Z||oe+te>ee||te{"use strict";tr();Yit={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelColor:"black",labelFontSize:"12px",valueFontSize:"10px",valueColor:"black",titleColor:"black",titleFontSize:"14px"},Xit=o(({treemap:t}={})=>{let e=Vn(Yit,t);return` - .treemapNode.section { - stroke: ${e.sectionStrokeColor}; - stroke-width: ${e.sectionStrokeWidth}; - fill: ${e.sectionFillColor}; - } - .treemapNode.leaf { - stroke: ${e.leafStrokeColor}; - stroke-width: ${e.leafStrokeWidth}; - fill: ${e.leafFillColor}; - } - .treemapLabel { - fill: ${e.labelColor}; - font-size: ${e.labelFontSize}; - } - .treemapValue { - fill: ${e.valueColor}; - font-size: ${e.valueFontSize}; - } - .treemapTitle { - fill: ${e.titleColor}; - font-size: ${e.titleFontSize}; - } - `},"getStyles"),j4e=Xit});var Q4e={};dr(Q4e,{diagram:()=>jit});var jit,Z4e=N(()=>{"use strict";Oz();W4e();X4e();K4e();jit={parser:Pz,get db(){return new by},renderer:Y4e,styles:j4e}});var Oat={};dr(Oat,{default:()=>Iat});nc();_A();vd();var O_e=o(t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),P_e=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(NQ(),RQ));return{id:"c4",diagram:t}},"loader"),B_e={id:"c4",detector:O_e,loader:P_e},MQ=B_e;var yfe="flowchart",rWe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),nWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(AE(),CE));return{id:yfe,diagram:t}},"loader"),iWe={id:yfe,detector:rWe,loader:nWe},vfe=iWe;var xfe="flowchart-v2",aWe=o((t,e)=>e?.flowchart?.defaultRenderer==="dagre-d3"?!1:(e?.flowchart?.defaultRenderer==="elk"&&(e.layout="elk"),/^\s*graph/.test(t)&&e?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)),"detector"),sWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(AE(),CE));return{id:xfe,diagram:t}},"loader"),oWe={id:xfe,detector:aWe,loader:sWe},bfe=oWe;var fWe=o(t=>/^\s*erDiagram/.test(t),"detector"),dWe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(_fe(),Afe));return{id:"er",diagram:t}},"loader"),pWe={id:"er",detector:fWe,loader:dWe},Dfe=pWe;var Pge="gitGraph",HKe=o(t=>/^\s*gitGraph/.test(t),"detector"),qKe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Oge(),Ige));return{id:Pge,diagram:t}},"loader"),WKe={id:Pge,detector:HKe,loader:qKe},Bge=WKe;var d1e="gantt",MQe=o(t=>/^\s*gantt/.test(t),"detector"),IQe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(f1e(),h1e));return{id:d1e,diagram:t}},"loader"),OQe={id:d1e,detector:MQe,loader:IQe},p1e=OQe;var k1e="info",GQe=o(t=>/^\s*info/.test(t),"detector"),VQe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(w1e(),T1e));return{id:k1e,diagram:t}},"loader"),E1e={id:k1e,detector:GQe,loader:VQe};var tZe=o(t=>/^\s*pie/.test(t),"detector"),rZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(M1e(),N1e));return{id:"pie",diagram:t}},"loader"),I1e={id:"pie",detector:tZe,loader:rZe};var Y1e="quadrantChart",bZe=o(t=>/^\s*quadrantChart/.test(t),"detector"),TZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(W1e(),q1e));return{id:Y1e,diagram:t}},"loader"),wZe={id:Y1e,detector:bZe,loader:TZe},X1e=wZe;var Tye="xychart",$Ze=o(t=>/^\s*xychart(-beta)?/.test(t),"detector"),zZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(bye(),xye));return{id:Tye,diagram:t}},"loader"),GZe={id:Tye,detector:$Ze,loader:zZe},wye=GZe;var Rye="requirement",qZe=o(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),WZe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Lye(),Dye));return{id:Rye,diagram:t}},"loader"),YZe={id:Rye,detector:qZe,loader:WZe},Nye=YZe;var Xye="sequence",IJe=o(t=>/^\s*sequenceDiagram/.test(t),"detector"),OJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Yye(),Wye));return{id:Xye,diagram:t}},"loader"),PJe={id:Xye,detector:IJe,loader:OJe},jye=PJe;var tve="class",VJe=o((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),UJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(eve(),Jye));return{id:tve,diagram:t}},"loader"),HJe={id:tve,detector:VJe,loader:UJe},rve=HJe;var ave="classDiagram",WJe=o((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),YJe=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ive(),nve));return{id:ave,diagram:t}},"loader"),XJe={id:ave,detector:WJe,loader:YJe},sve=XJe;var Fve="state",Tet=o((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),wet=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Bve(),Pve));return{id:Fve,diagram:t}},"loader"),ket={id:Fve,detector:Tet,loader:wet},$ve=ket;var Vve="stateDiagram",Cet=o((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),Aet=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Gve(),zve));return{id:Vve,diagram:t}},"loader"),_et={id:Vve,detector:Cet,loader:Aet},Uve=_et;var a2e="journey",jet=o(t=>/^\s*journey/.test(t),"detector"),Ket=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(i2e(),n2e));return{id:a2e,diagram:t}},"loader"),Qet={id:a2e,detector:jet,loader:Ket},s2e=Qet;pt();tu();Ei();var Zet=o((t,e,r)=>{X.debug(`rendering svg for syntax error -`);let n=aa(e),i=n.append("g");n.attr("viewBox","0 0 2412 512"),mn(n,100,512,!0),i.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"),i.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"),i.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"),i.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"),i.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"),i.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"),i.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"),i.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"),O$={draw:Zet},o2e=O$;var Jet={db:{},renderer:O$,parser:{parse:o(()=>{},"parse")}},l2e=Jet;var c2e="flowchart-elk",ett=o((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),ttt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(AE(),CE));return{id:c2e,diagram:t}},"loader"),rtt={id:c2e,detector:ett,loader:ttt},u2e=rtt;var P2e="timeline",Ttt=o(t=>/^\s*timeline/.test(t),"detector"),wtt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(O2e(),I2e));return{id:P2e,diagram:t}},"loader"),ktt={id:P2e,detector:Ttt,loader:wtt},B2e=ktt;var J2e="mindmap",Rtt=o(t=>/^\s*mindmap/.test(t),"detector"),Ntt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Z2e(),Q2e));return{id:J2e,diagram:t}},"loader"),Mtt={id:J2e,detector:Rtt,loader:Ntt},exe=Mtt;var fxe="kanban",jtt=o(t=>/^\s*kanban/.test(t),"detector"),Ktt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(hxe(),uxe));return{id:fxe,diagram:t}},"loader"),Qtt={id:fxe,detector:jtt,loader:Ktt},dxe=Qtt;var Xxe="sankey",brt=o(t=>/^\s*sankey(-beta)?/.test(t),"detector"),Trt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Yxe(),Wxe));return{id:Xxe,diagram:t}},"loader"),wrt={id:Xxe,detector:brt,loader:Trt},jxe=wrt;var nbe="packet",Rrt=o(t=>/^\s*packet(-beta)?/.test(t),"detector"),Nrt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(rbe(),tbe));return{id:nbe,diagram:t}},"loader"),ibe={id:nbe,detector:Rrt,loader:Nrt};var mbe="radar",ent=o(t=>/^\s*radar-beta/.test(t),"detector"),tnt=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(pbe(),dbe));return{id:mbe,diagram:t}},"loader"),gbe={id:mbe,detector:ent,loader:tnt};var x4e="block",wit=o(t=>/^\s*block(-beta)?/.test(t),"detector"),kit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(v4e(),y4e));return{id:x4e,diagram:t}},"loader"),Eit={id:x4e,detector:wit,loader:kit},b4e=Eit;var V4e="architecture",$it=o(t=>/^\s*architecture/.test(t),"detector"),zit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(G4e(),z4e));return{id:V4e,diagram:t}},"loader"),Git={id:V4e,detector:$it,loader:zit},U4e=Git;vd();Xt();var J4e="treemap",Kit=o(t=>/^\s*treemap/.test(t),"detector"),Qit=o(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Z4e(),Q4e));return{id:J4e,diagram:t}},"loader"),e3e={id:J4e,detector:Kit,loader:Qit};var t3e=!1,wy=o(()=>{t3e||(t3e=!0,xd("error",l2e,t=>t.toLowerCase().trim()==="error"),xd("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{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:o(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),ev(u2e,exe,U4e),ev(MQ,dxe,sve,rve,Dfe,p1e,E1e,I1e,Nye,jye,bfe,vfe,B2e,Bge,Uve,$ve,s2e,X1e,jxe,ibe,wye,b4e,gbe,e3e))},"addDiagrams");pt();vd();Xt();var r3e=o(async()=>{X.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(gu).map(async([r,{detector:n,loader:i}])=>{if(i)try{av(r)}catch{try{let{diagram:a,id:s}=await i();xd(s,a,n)}catch(a){throw X.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete gu[r],a}}}))).filter(r=>r.status==="rejected");if(e.length>0){X.error(`Failed to load ${e.length} external diagrams`);for(let r of e)X.error(r);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams");pt();yr();var BC="comm",FC="rule",$C="decl";var n3e="@import";var i3e="@namespace",a3e="@keyframes";var s3e="@layer";var Bz=Math.abs,$4=String.fromCharCode;function zC(t){return t.trim()}o(zC,"trim");function z4(t,e,r){return t.replace(e,r)}o(z4,"replace");function o3e(t,e,r){return t.indexOf(e,r)}o(o3e,"indexof");function rd(t,e){return t.charCodeAt(e)|0}o(rd,"charat");function nd(t,e,r){return t.slice(e,r)}o(nd,"substr");function wo(t){return t.length}o(wo,"strlen");function l3e(t){return t.length}o(l3e,"sizeof");function ky(t,e){return e.push(t),t}o(ky,"append");var GC=1,Ey=1,c3e=0,ll=0,Ri=0,Cy="";function VC(t,e,r,n,i,a,s,l){return{value:t,root:e,parent:r,type:n,props:i,children:a,line:GC,column:Ey,length:s,return:"",siblings:l}}o(VC,"node");function u3e(){return Ri}o(u3e,"char");function h3e(){return Ri=ll>0?rd(Cy,--ll):0,Ey--,Ri===10&&(Ey=1,GC--),Ri}o(h3e,"prev");function cl(){return Ri=ll2||Sy(Ri)>3?"":" "}o(p3e,"whitespace");function m3e(t,e){for(;--e&&cl()&&!(Ri<48||Ri>102||Ri>57&&Ri<65||Ri>70&&Ri<97););return UC(t,G4()+(e<6&&uh()==32&&cl()==32))}o(m3e,"escaping");function Fz(t){for(;cl();)switch(Ri){case t:return ll;case 34:case 39:t!==34&&t!==39&&Fz(Ri);break;case 40:t===41&&Fz(t);break;case 92:cl();break}return ll}o(Fz,"delimiter");function g3e(t,e){for(;cl()&&t+Ri!==57;)if(t+Ri===84&&uh()===47)break;return"/*"+UC(e,ll-1)+"*"+$4(t===47?t:cl())}o(g3e,"commenter");function y3e(t){for(;!Sy(uh());)cl();return UC(t,ll)}o(y3e,"identifier");function b3e(t){return d3e(qC("",null,null,null,[""],t=f3e(t),0,[0],t))}o(b3e,"compile");function qC(t,e,r,n,i,a,s,l,u){for(var h=0,f=0,d=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,T="",S=i,w=a,k=n,A=T;v;)switch(g=b,b=cl()){case 40:if(g!=108&&rd(A,d-1)==58){o3e(A+=z4(HC(b),"&","&\f"),"&\f",Bz(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:A+=HC(b);break;case 9:case 10:case 13:case 32:A+=p3e(g);break;case 92:A+=m3e(G4()-1,7);continue;case 47:switch(uh()){case 42:case 47:ky(Zit(g3e(cl(),G4()),e,r,u),u),(Sy(g||1)==5||Sy(uh()||1)==5)&&wo(A)&&nd(A,-1,void 0)!==" "&&(A+=" ");break;default:A+="/"}break;case 123*y:l[h++]=wo(A)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+f:x==-1&&(A=z4(A,/\f/g,"")),m>0&&(wo(A)-d||y===0&&g===47)&&ky(m>32?x3e(A+";",n,r,d-1,u):x3e(z4(A," ","")+";",n,r,d-2,u),u);break;case 59:A+=";";default:if(ky(k=v3e(A,e,r,h,f,i,l,T,S=[],w=[],d,a),a),b===123)if(f===0)qC(A,e,k,k,S,a,d,l,w);else{switch(p){case 99:if(rd(A,3)===110)break;case 108:if(rd(A,2)===97)break;default:f=0;case 100:case 109:case 115:}f?qC(t,k,k,n&&ky(v3e(t,k,k,0,0,i,l,T,i,S=[],d,w),w),i,w,d,l,n?S:w):qC(A,k,k,k,[""],w,0,l,w)}}h=f=m=0,y=x=1,T=A="",d=s;break;case 58:d=1+wo(A),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&h3e()==125)continue}switch(A+=$4(b),b*y){case 38:x=f>0?1:(A+="\f",-1);break;case 44:l[h++]=(wo(A)-1)*x,x=1;break;case 64:uh()===45&&(A+=HC(cl())),p=uh(),f=d=wo(T=A+=y3e(G4())),b++;break;case 45:g===45&&wo(A)==2&&(y=0)}}return a}o(qC,"parse");function v3e(t,e,r,n,i,a,s,l,u,h,f,d){for(var p=i-1,m=i===0?a:[""],g=l3e(m),y=0,v=0,x=0;y0?m[b]+" "+T:z4(T,/&\f/g,m[b])))&&(u[x++]=S);return VC(t,e,r,i===0?FC:l,u,h,f,d)}o(v3e,"ruleset");function Zit(t,e,r,n){return VC(t,e,r,BC,$4(u3e()),nd(t,2,-2),0,n)}o(Zit,"comment");function x3e(t,e,r,n,i){return VC(t,e,r,$C,nd(t,0,n),nd(t,n+1,-1),n,i)}o(x3e,"declaration");function WC(t,e){for(var r="",n=0;n{E3e.forEach(t=>{t()}),E3e=[]},"attachFunctions");pt();var C3e=o(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");F3();w2();function A3e(t){let e=t.match(B3);if(!e)return{text:t,metadata:{}};let r=Kh(e[1],{schema:jh})??{};r=typeof r=="object"&&!Array.isArray(r)?r:{};let n={};return r.displayMode&&(n.displayMode=r.displayMode.toString()),r.title&&(n.title=r.title.toString()),r.config&&(n.config=r.config),{text:t.slice(e[0].length),metadata:n}}o(A3e,"extractFrontMatter");tr();var eat=o(t=>t.replace(/\r\n?/g,` -`).replace(/<(\w+)([^>]*)>/g,(e,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),tat=o(t=>{let{text:e,metadata:r}=A3e(t),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:e}},"processFrontmatter"),rat=o(t=>{let e=qt.detectInit(t)??{},r=qt.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(e.wrap=!0),{text:bQ(t),directive:e}},"processDirectives");function $z(t){let e=eat(t),r=tat(e),n=rat(r.text),i=Vn(r.config,n.directive);return t=C3e(n.text),{code:t,title:r.title,config:i}}o($z,"preprocessDiagram");NA();e3();tr();function _3e(t){let e=new TextEncoder().encode(t),r=Array.from(e,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(_3e,"toBase64");var nat=5e4,iat="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",aat="sandbox",sat="loose",oat="http://www.w3.org/2000/svg",lat="http://www.w3.org/1999/xlink",cat="http://www.w3.org/1999/xhtml",uat="100%",hat="100%",fat="border:0;margin:0;",dat="margin:0",pat="allow-top-navigation-by-user-activation allow-popups",mat='The "iframe" tag is not supported by your browser.',gat=["foreignobject"],yat=["dominant-baseline"];function N3e(t){let e=$z(t);return By(),ZG(e.config??{}),e}o(N3e,"processAndSetConfigs");async function vat(t,e){wy();try{let{code:r,config:n}=N3e(t);return{diagramType:(await M3e(r)).type,config:n}}catch(r){if(e?.suppressErrors)return!1;throw r}}o(vat,"parse");var D3e=o((t,e,r=[])=>` -.${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),xat=o((t,e=new Map)=>{let r="";if(t.themeCSS!==void 0&&(r+=` -${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` -:root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(r+=` -:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){let s=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(l=>{mr(l.styles)||s.forEach(u=>{r+=D3e(l.id,u,l.styles)}),mr(l.textStyles)||(r+=D3e(l.id,"tspan",(l?.textStyles||[]).map(u=>u.replace("color","fill"))))})}return r},"createCssStyles"),bat=o((t,e,r,n)=>{let i=xat(t,r),a=aH(e,i,t.themeVariables);return WC(b3e(`${n}{${a}}`),T3e)},"createUserStyles"),Tat=o((t="",e,r)=>{let n=t;return!r&&!e&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=Ji(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),wat=o((t="",e)=>{let r=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":hat,n=_3e(`${t}`);return``},"putIntoIFrame"),L3e=o((t,e,r,n,i)=>{let a=t.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns",oat);return i&&s.attr("xmlns:xlink",i),s.append("g"),t},"appendDivSvgG");function R3e(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(R3e,"sandboxedIframe");var kat=o((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),Eat=o(async function(t,e,r){wy();let n=N3e(e);e=n.code;let i=Qt();X.debug(i),e.length>(i?.maxTextSize??nat)&&(e=iat);let a="#"+t,s="i"+t,l="#"+s,u="d"+t,h="#"+u,f=o(()=>{let D=qe(p?l:h).node();D&&"remove"in D&&D.remove()},"removeTempElements"),d=qe("body"),p=i.securityLevel===aat,m=i.securityLevel===sat,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let E=R3e(qe(r),s);d=qe(E.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=qe(r);L3e(d,t,u,`font-family: ${g}`,lat)}else{if(kat(document,t,u,s),p){let E=R3e(qe("body"),s);d=qe(E.nodes()[0].contentDocument.body),d.node().style.margin=0}else d=qe("body");L3e(d,t,u)}let y,v;try{y=await Ay.fromText(e,{title:n.title})}catch(E){if(i.suppressErrorRendering)throw f(),E;y=await Ay.fromText("error"),v=E}let x=d.select(h).node(),b=y.type,T=x.firstChild,S=T.firstChild,w=y.renderer.getClasses?.(e,y),k=bat(i,b,w,a),A=document.createElement("style");A.innerHTML=k,T.insertBefore(A,S);try{await y.renderer.draw(e,t,g4.version,y)}catch(E){throw i.suppressErrorRendering?f():o2e.draw(e,t,g4.version),E}let C=d.select(`${h} svg`),R=y.db.getAccTitle?.(),I=y.db.getAccDescription?.();Cat(b,C,R,I),d.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",cat);let L=d.select(h).node().innerHTML;if(X.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),L=Tat(L,p,vr(i.arrowMarkerAbsolute)),p){let E=d.select(h+" svg").node();L=wat(L,E)}else m||(L=yh.sanitize(L,{ADD_TAGS:gat,ADD_ATTR:yat,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(S3e(),v)throw v;return f(),{diagramType:b,svg:L,bindFunctions:y.db.bindFunctions}},"render");function Sat(t={}){let e=Rn({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),jG(e),e?.theme&&e.theme in So?e.themeVariables=So[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=So.default.getThemeVariables(e.themeVariables));let r=typeof e=="object"?C7(e):A7();Dy(r.logLevel),wy()}o(Sat,"initialize");var M3e=o((t,e={})=>{let{code:r}=$z(t);return Ay.fromText(r,e)},"getDiagramFromText");function Cat(t,e,r,n){w3e(e,t),k3e(e,r,n,e.attr("id"))}o(Cat,"addA11yInfo");var id=Object.freeze({render:Eat,parse:vat,getDiagramFromText:M3e,initialize:Sat,getConfig:Qt,setConfig:n3,getSiteConfig:A7,updateSiteConfig:KG,reset:o(()=>{By()},"reset"),globalReset:o(()=>{By(gh)},"globalReset"),defaultConfig:gh});Dy(Qt().logLevel);By(Qt());Nf();tr();var Aat=o((t,e,r)=>{X.warn(t),qL(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"),I3e=o(async function(t={querySelector:".mermaid"}){try{await _at(t)}catch(e){if(qL(e)&&X.error(e.str),hh.parseError&&hh.parseError(e),!t.suppressErrors)throw X.error("Use the suppressErrors option to suppress these errors"),e}},"run"),_at=o(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){let n=id.getConfig();X.debug(`${t?"":"No "}Callback function found`);let i;if(r)i=r;else if(e)i=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");X.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(X.debug("Start On Load: "+n?.startOnLoad),id.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new qt.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){X.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=P3(qt.entityDecode(s)).trim().replace(//gi,"
    ");let f=qt.detectInit(s);f&&X.debug("Detected early reinit: ",f);try{let{svg:d,bindFunctions:p}=await F3e(h,s,u);u.innerHTML=d,t&&await t(h),p&&p(u)}catch(d){Aat(d,l,hh.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),O3e=o(function(t){id.initialize(t)},"initialize"),Dat=o(async function(t,e,r){X.warn("mermaid.init is deprecated. Please use run instead."),t&&O3e(t);let n={postRenderCallback:r,querySelector:".mermaid"};typeof e=="string"?n.querySelector=e:e&&(e instanceof HTMLElement?n.nodes=[e]:n.nodes=e),await I3e(n)},"init"),Lat=o(async(t,{lazyLoad:e=!0}={})=>{wy(),ev(...t),e===!1&&await r3e()},"registerExternalDiagrams"),P3e=o(function(){if(hh.startOnLoad){let{startOnLoad:t}=id.getConfig();t&&hh.run().catch(e=>X.error("Mermaid failed to initialize",e))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",P3e,!1)}var Rat=o(function(t){hh.parseError=t},"setParseErrorHandler"),YC=[],zz=!1,B3e=o(async()=>{if(!zz){for(zz=!0;YC.length>0;){let t=YC.shift();if(t)try{await t()}catch(e){X.error("Error executing queue",e)}}zz=!1}},"executeQueue"),Nat=o(async(t,e)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{id.parse(t,e).then(l=>{a(l),r(l)},l=>{X.error("Error parsing",l),hh.parseError?.(l),s(l),n(l)})}),"performCall");YC.push(i),B3e().catch(n)}),"parse"),F3e=o((t,e,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{id.render(t,e,r).then(u=>{s(u),n(u)},u=>{X.error("Error parsing",u),hh.parseError?.(u),l(u),i(u)})}),"performCall");YC.push(a),B3e().catch(i)}),"render"),Mat=o(()=>Object.keys(gu).map(t=>({id:t})),"getRegisteredDiagramsMetadata"),hh={startOnLoad:!0,mermaidAPI:id,parse:Nat,render:F3e,init:Dat,run:I3e,registerExternalDiagrams:Lat,registerLayoutLoaders:zI,initialize:O3e,parseError:void 0,contentLoaded:P3e,setParseErrorHandler:Rat,detectType:_0,registerIconPacks:O3,getRegisteredDiagramsMetadata:Mat},Iat=hh;return Y3e(Oat);})(); -/*! Check if previously processed */ -/*! - * Wait for document loaded before starting the execution - */ -/*! Bundled license information: - -dompurify/dist/purify.es.mjs: - (*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE *) - -js-yaml/dist/js-yaml.mjs: - (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *) - -lodash-es/lodash.js: - (** - * @license - * Lodash (Custom Build) - * Build: `lodash modularize exports="es" -o ./` - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - *) - -cytoscape/dist/cytoscape.esm.mjs: - (*! - Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable - Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) - Licensed under The MIT License (http://opensource.org/licenses/MIT) - *) - (*! - Event object based on jQuery events, MIT license - - https://jquery.org/license/ - https://tldrlegal.com/license/mit-license - https://github.com/jquery/jquery/blob/master/src/event.js - *) - (*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License *) - (*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License *) -*/ -globalThis["mermaid"] = globalThis.__esbuild_esm_mermaid_nm["mermaid"].default; +(function () { + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/vendor/mermaid.min.js"; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/notes.js b/assets/scripts/notes.js index 3496ef4..2cfeaa9 100755 --- a/assets/scripts/notes.js +++ b/assets/scripts/notes.js @@ -1,148 +1,7 @@ (function () { - const wall = document.getElementById("notes-wall"); - const form = document.getElementById("notes-form"); - const authorInput = document.getElementById("note-author"); - const contentInput = document.getElementById("note-content"); - const authorFilter = document.getElementById("notes-author-filter"); - let notesCache = []; - - if (!wall) return; - - function escapeHtml(str) { - return str - .replace(/&/g, "&") - .replace(//g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - } - - function renderNote(note) { - const el = document.createElement("div"); - el.className = "note"; - - el.innerHTML = ` -
    - ${escapeHtml(note.author_name)} - -
    -
    - ${escapeHtml(note.content).replace(/\n/g, "
    ")} -
    - `; - - return el; - } - - function normaliseAuthor(author) { - return (author || "").trim(); - } - - function populateAuthorFilter(notes) { - if (!authorFilter) return; - - const previousValue = authorFilter.value; - const authors = Array.from( - new Set(notes.map(note => normaliseAuthor(note.author_name)).filter(Boolean)) - ).sort((a, b) => a.localeCompare(b, undefined, { sensitivity: "base" })); - - authorFilter.innerHTML = ''; - - authors.forEach(author => { - const option = document.createElement("option"); - option.value = author; - option.textContent = author; - authorFilter.appendChild(option); - }); - - authorFilter.value = authors.includes(previousValue) ? previousValue : ""; - } - - function renderNotes() { - wall.innerHTML = ""; - - const selectedAuthor = authorFilter ? authorFilter.value : ""; - const notes = selectedAuthor - ? notesCache.filter(note => normaliseAuthor(note.author_name) === selectedAuthor) - : notesCache; - - if (notesCache.length === 0) { - wall.innerHTML = "

    No notes yet.

    "; - return; - } - - if (notes.length === 0) { - wall.innerHTML = "

    No notes for this author.

    "; - return; - } - - notes.forEach(note => { - wall.appendChild(renderNote(note)); - }); - } - - async function loadNotes() { - wall.innerHTML = "

    Loading notes…

    "; - - try { - const res = await fetch("/api/notes"); - if (!res.ok) throw new Error("Failed to fetch notes"); - - const notes = await res.json(); - notesCache = notes; - populateAuthorFilter(notesCache); - renderNotes(); - } catch (err) { - console.error(err); - wall.innerHTML = "

    Could not load notes.

    "; - } - } - - async function submitNote(e) { - e.preventDefault(); - - const author = authorInput.value.trim(); - const content = contentInput.value.trim(); - - if (!author || !content) return; - - form.querySelector("button").disabled = true; - - try { - const res = await fetch("/api/notes", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - author_name: author, - content: content, - }), - }); - - if (!res.ok) { - const err = await res.json(); - throw new Error(err.detail || "Failed to post note"); - } - - contentInput.value = ""; - await loadNotes(); - } catch (err) { - alert(err.message); - } finally { - form.querySelector("button").disabled = false; - } - } - - if (form) { - form.addEventListener("submit", submitNote); - } - - if (authorFilter) { - authorFilter.addEventListener("change", renderNotes); - } - - loadNotes(); -})(); + "use strict"; + var script = document.createElement("script"); + script.src = "/assets/scripts/pages/notes.js"; + script.defer = true; + document.head.appendChild(script); +}()); diff --git a/assets/scripts/pages/ash-below-lake.js b/assets/scripts/pages/ash-below-lake.js new file mode 100644 index 0000000..5aa74cd --- /dev/null +++ b/assets/scripts/pages/ash-below-lake.js @@ -0,0 +1,1008 @@ +(function () { + const slot = "ash-below-the-lake"; + const fallbackKey = "play:rpg:ash-below-the-lake"; + const tile = 32; + const cols = 30; + const rows = 15; + const worldH = tile * rows; + const uiY = worldH; + const actions = ["Confront", "Listen", "Forget"]; + const areas = { + harbor: { + name: "Harbor Row", + act: "Act 1", + track: "harbor", + floor: ["#222c36", "#263541", "#304650"], + accent: "#e0a451", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 15], [29, 0, 1, 15], [3, 3, 5, 2], [12, 2, 4, 3], [20, 3, 6, 2], [5, 11, 7, 1], [17, 10, 5, 1]]), + exits: [{ x: 28, y: 7, to: "red", px: 1, py: 7 }], + props: [{ kind: "lake", x: 1, y: 11, w: 28, h: 3 }, { kind: "stall", x: 9, y: 5 }, { kind: "flowers", x: 23, y: 9 }], + start: { x: 3, y: 8 } + }, + red: { + name: "The Red Streets", + act: "Act 1", + track: "red", + floor: ["#2f1f2c", "#442237", "#5b283f"], + accent: "#db4f62", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 6], [0, 9, 1, 6], [29, 0, 1, 15], [4, 3, 4, 3], [12, 4, 3, 8], [20, 2, 5, 3], [22, 9, 4, 2]]), + exits: [{ x: 0, y: 7, to: "harbor", px: 28, py: 7 }, { x: 28, y: 12, to: "roots", px: 1, py: 12 }], + props: [{ kind: "sign", x: 9, y: 3 }, { kind: "stage", x: 17, y: 6 }, { kind: "poster", x: 26, y: 4 }], + start: { x: 2, y: 7 } + }, + roots: { + name: "The Roots", + act: "Act 2", + track: "roots", + floor: ["#182725", "#203832", "#2e493e"], + accent: "#66c7a2", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 11], [0, 13, 1, 2], [29, 0, 1, 15], [5, 2, 2, 10], [11, 5, 7, 1], [15, 8, 2, 5], [22, 3, 3, 9]]), + exits: [{ x: 0, y: 12, to: "red", px: 28, py: 12 }, { x: 28, y: 4, to: "chapel", px: 1, py: 4 }], + props: [{ kind: "archive", x: 8, y: 8 }, { kind: "root", x: 18, y: 3 }, { kind: "home", x: 25, y: 11 }], + start: { x: 2, y: 12 } + }, + chapel: { + name: "The Drowned Chapel", + act: "Act 3", + track: "chapel", + floor: ["#172232", "#1c3043", "#263b4f"], + accent: "#8bd3ff", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 3], [0, 6, 1, 9], [29, 0, 1, 15], [6, 4, 3, 7], [13, 2, 4, 3], [19, 4, 3, 7], [10, 12, 10, 1]]), + exits: [{ x: 0, y: 4, to: "roots", px: 28, py: 4 }, { x: 28, y: 10, to: "shore", px: 1, py: 10 }], + props: [{ kind: "pew", x: 10, y: 7 }, { kind: "pew", x: 16, y: 7 }, { kind: "glass", x: 14, y: 5 }], + start: { x: 2, y: 4 } + }, + shore: { + name: "The Hollow Shore", + act: "Final Act", + track: "shore", + floor: ["#111827", "#1b2440", "#211c33"], + accent: "#f1f5f9", + walls: rects([[0, 0, 30, 1], [0, 14, 30, 1], [0, 0, 1, 9], [0, 12, 1, 3], [29, 0, 1, 15], [7, 3, 3, 2], [16, 2, 2, 10], [22, 7, 4, 1]]), + exits: [{ x: 0, y: 10, to: "chapel", px: 28, py: 10 }], + props: [{ kind: "lake", x: 2, y: 10, w: 27, h: 4 }, { kind: "flowers", x: 5, y: 6 }, { kind: "rift", x: 24, y: 4 }], + start: { x: 2, y: 10 } + } + }; + const characters = { + ilyas: { name: "Ilyas", colors: ["#3d2b2f", "#e3b27f", "#334b7a", "#f2f0e6"] }, + mira: { name: "Mira", colors: ["#21191e", "#d98d70", "#b73550", "#f6d36f"] }, + ferryman: { name: "Ferryman", colors: ["#151719", "#dad9cd", "#56616d", "#0b0d10"] }, + cinder: { name: "Brother Cinder", colors: ["#1d1512", "#d59667", "#6b2e2f", "#f4c35c"] }, + sibling: { name: "Your Sibling", colors: ["#1d2531", "#bec8d8", "#52616f", "#dbeafe"] }, + vendor: { name: "Maribel", colors: ["#2a2023", "#d5a06f", "#3d7b65", "#ffd166"] }, + performer: { name: "Velvet Noon", colors: ["#2a1724", "#f2bd93", "#8f244d", "#ffe6a8"] }, + archivist: { name: "Memory Archivist", colors: ["#151f1d", "#b9ddc9", "#386b5c", "#dff7eb"] } + }; + const npcs = { + mira: { character: "mira", area: "harbor", x: 10, y: 8 }, + ferryman: { character: "ferryman", area: "harbor", x: 25, y: 10 }, + vendor: { character: "vendor", area: "harbor", x: 9, y: 6 }, + performer: { character: "performer", area: "red", x: 17, y: 8 }, + archivist: { character: "archivist", area: "roots", x: 9, y: 9 }, + cinder: { character: "cinder", area: "chapel", x: 15, y: 6 }, + sibling: { character: "sibling", area: "shore", x: 24, y: 8 } + }; + const items = { + letter: { name: "Wet Letter", area: "harbor", x: 5, y: 10 }, + bell: { name: "Brass Bell", area: "red", x: 27, y: 5 }, + photo: { name: "Blurred Photo", area: "roots", x: 13, y: 9 }, + cinderKey: { name: "Chapel Key", area: "chapel", x: 22, y: 12 } + }; + const encounters = { + first_erased: { + title: "First Erased Person", + area: "red", + x: 6, + y: 9, + hp: 18, + text: "A person-shaped absence blocks the alley. Their outline mouths a name no one else can hear.", + bullets: "drift" + }, + root_husk: { + title: "Root Husk", + area: "roots", + x: 21, + y: 9, + hp: 24, + text: "A house nobody remembers learned to walk. It wants its rooms back.", + bullets: "rain" + }, + chapel_memory: { + title: "Choir of Ash", + area: "chapel", + x: 11, + y: 10, + hp: 30, + text: "Voices rise from the drowned pews. Every note sounds like an apology.", + bullets: "spiral" + } + }; + + window.AshBelowLakeRpg = function init(root) { + const canvas = root.querySelector("[data-rpg-canvas]"); + const ctx = canvas.getContext("2d"); + const els = { + speaker: root.querySelector("[data-rpg-speaker]"), + line: root.querySelector("[data-rpg-line]"), + area: root.querySelector("[data-rpg-room]"), + route: root.querySelector("[data-rpg-route]"), + resolve: root.querySelector("[data-rpg-hearts]"), + journal: root.querySelector("[data-rpg-quests]"), + inventory: root.querySelector("[data-rpg-inventory]"), + status: root.querySelector("[data-rpg-status]") + }; + const ui = buildUi(root); + const audio = makeAudio(); + let state = freshState(); + let keys = new Set(); + let last = performance.now(); + let saveBusy = false; + let backendAvailable = true; + + bind(); + loadLocal(); + requestAnimationFrame(frame); + + function freshState() { + return { + started: false, + mode: "title", + area: "harbor", + player: { x: 3, y: 8, facing: "down", step: 0 }, + route: "Undecided", + resolve: 20, + toldName: null, + flags: {}, + inventory: [], + memories: [ + { id: "letter", text: "Your sibling's letter says: Don't let the lake remember your name.", stable: true }, + { id: "town", text: "Morrow's End smiles like a town in a postcard someone tried to burn.", stable: true } + ], + forgets: 0, + listens: 0, + confronts: 0, + companion: false, + battle: null, + ending: null, + dialogue: { speaker: "The Letter", line: "Don't let the lake remember your name." } + }; + } + + function buildUi(rootEl) { + const panel = rootEl.querySelector(".rpg-panel"); + const actionsWrap = document.createElement("div"); + actionsWrap.className = "ash-choicebar"; + actionsWrap.innerHTML = actions.map((name) => ``).join(""); + panel.insertBefore(actionsWrap, panel.querySelector(".rpg-list")); + const meter = document.createElement("div"); + meter.className = "ash-memory-meter"; + meter.innerHTML = "Lake Memory"; + panel.insertBefore(meter, actionsWrap); + const nameBox = document.createElement("form"); + nameBox.className = "ash-name-form"; + nameBox.innerHTML = ""; + panel.insertBefore(nameBox, meter); + return { + actionButtons: Array.from(actionsWrap.querySelectorAll("button")), + memoryFill: meter.querySelector("[data-ash-memory-fill]"), + nameForm: nameBox, + nameInput: nameBox.querySelector("[data-ash-name]") + }; + } + + function bind() { + root.querySelector("[data-rpg-start]").addEventListener("click", start); + root.querySelector("[data-rpg-save]").addEventListener("click", save); + root.querySelector("[data-rpg-load]").addEventListener("click", () => load(true)); + root.querySelector("[data-rpg-reset]").addEventListener("click", newGame); + root.querySelector("[data-rpg-sound]").addEventListener("click", () => { + audio.start(); + audio.setTrack(state.started ? areas[state.area].track : "title"); + els.status.textContent = audio.supported() ? "Sound on." : "This browser does not expose Web Audio."; + }); + root.querySelector("[data-rpg-act]").addEventListener("click", act); + root.querySelectorAll("[data-rpg-move]").forEach((button) => { + button.addEventListener("click", () => move(button.dataset.rpgMove)); + }); + ui.actionButtons.forEach((button) => button.addEventListener("click", () => chooseBattle(button.dataset.ashAction))); + ui.nameForm.addEventListener("submit", (event) => { + event.preventDefault(); + tellName(ui.nameInput.value.trim() || "Ilyas"); + }); + window.addEventListener("keydown", (event) => { + if (!root.isConnected || ["INPUT", "TEXTAREA"].includes(event.target.tagName)) return; + if (["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "w", "a", "s", "d", " ", "Enter", "Escape"].includes(event.key)) event.preventDefault(); + keys.add(event.key.toLowerCase()); + audio.start(); + if (event.key === " " || event.key === "Enter") act(); + if (event.key === "Escape" && state.mode === "battle") leaveBattle("You step back from the memory and let it breathe."); + }); + window.addEventListener("keyup", (event) => keys.delete(event.key.toLowerCase())); + } + + function start() { + audio.start(); + state.started = true; + state.mode = "world"; + state.dialogue = { speaker: "Ilyas", line: "The letter is damp, but the ink has not run. Morrow's End waits beyond the harbor lamps." }; + audio.setTrack(areas[state.area].track); + save(); + } + + async function newGame() { + state = freshState(); + localStorage.removeItem(fallbackKey); + if (backendAvailable) { + try { + const response = await fetch(`/api/play/rpg/save/${slot}`, { method: "DELETE" }); + if (response.status === 404) els.status.textContent = "New game started locally. There was no backend save to clear."; + } catch (_error) { + backendAvailable = false; + } + } + audio.setTrack("title"); + if (!els.status.textContent.includes("backend save to clear")) { + els.status.textContent = backendAvailable ? "New game started and local save cleared." : "New game started locally. Backend save endpoint is not reachable."; + } + renderHud(); + } + + async function save() { + localStorage.setItem(fallbackKey, JSON.stringify(state)); + if (saveBusy || !backendAvailable) { + els.status.textContent = backendAvailable ? "Save already running." : "Saved locally. Backend save endpoint is not available."; + return; + } + saveBusy = true; + try { + const response = await fetch(`/api/play/rpg/save/${slot}`, { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ payload: state }) + }); + if (response.status === 404) { + backendAvailable = false; + els.status.textContent = "Saved locally. Backend save endpoint is not deployed yet."; + } else { + els.status.textContent = response.ok ? "Saved to backend." : "Saved locally. Backend rejected the save."; + } + } catch (_error) { + backendAvailable = false; + els.status.textContent = "Saved locally. Backend save API was not reachable."; + } finally { + saveBusy = false; + } + } + + async function load(allowBackend) { + if (loadLocal("Loaded local save.")) return; + if (!allowBackend || !backendAvailable) { + els.status.textContent = backendAvailable ? "No local save found." : "No local save found. Backend save endpoint is not available."; + return; + } + try { + const response = await fetch(`/api/play/rpg/save/${slot}`); + if (response.status === 404) { + els.status.textContent = "No save file exists yet. Press Save after starting a game to create one."; + return; + } + if (!response.ok) { + els.status.textContent = "No local save found. Backend did not return a save."; + return; + } + const data = await response.json(); + state = normalize(data.payload); + localStorage.setItem(fallbackKey, JSON.stringify(state)); + els.status.textContent = "Loaded from backend."; + audio.setTrack(state.started ? areas[state.area].track : "title"); + } catch (_error) { + backendAvailable = false; + els.status.textContent = "No local save found. Backend save API was not reachable."; + } + } + + function loadLocal(message) { + const local = localStorage.getItem(fallbackKey); + if (local) { + state = normalize(JSON.parse(local)); + if (message) els.status.textContent = message; + audio.setTrack(state.started ? areas[state.area].track : "title"); + return true; + } + audio.setTrack(state.started ? areas[state.area].track : "title"); + return false; + } + + function normalize(candidate) { + const base = freshState(); + const next = Object.assign(base, candidate || {}); + next.player = Object.assign(base.player, (candidate && candidate.player) || {}); + next.flags = Object.assign({}, (candidate && candidate.flags) || {}); + next.inventory = Array.isArray(next.inventory) ? next.inventory.filter((id) => items[id]) : []; + next.memories = Array.isArray(next.memories) ? next.memories : base.memories; + next.area = areas[next.area] ? next.area : "harbor"; + next.dialogue = Object.assign(base.dialogue, (candidate && candidate.dialogue) || {}); + return next; + } + + function frame(now) { + const dt = Math.min(48, now - last); + last = now; + update(dt); + draw(now); + renderHud(); + requestAnimationFrame(frame); + } + + function update(dt) { + if (state.mode !== "world") return; + const dir = keyDirection(); + if (!dir) return; + state.player.step += dt; + if (state.player.step < 115) return; + state.player.step = 0; + move(dir); + } + + function keyDirection() { + if (keys.has("arrowup") || keys.has("w")) return "up"; + if (keys.has("arrowdown") || keys.has("s")) return "down"; + if (keys.has("arrowleft") || keys.has("a")) return "left"; + if (keys.has("arrowright") || keys.has("d")) return "right"; + return null; + } + + function move(direction) { + if (state.mode !== "world" || !state.started || state.ending) return; + const delta = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[direction]; + state.player.facing = direction; + const nx = state.player.x + delta[0]; + const ny = state.player.y + delta[1]; + const area = areas[state.area]; + const exit = area.exits.find((item) => item.x === nx && item.y === ny); + if (exit && canEnter(exit.to)) { + state.area = exit.to; + state.player.x = exit.px; + state.player.y = exit.py; + audio.setTrack(areas[state.area].track); + remember(`Entered ${areas[state.area].name}.`, true); + say("Morrow's End", areaEnterLine(state.area)); + save(); + return; + } + if (area.walls.has(`${nx},${ny}`) || npcAt(nx, ny) || nx < 0 || nx >= cols || ny < 0 || ny >= rows) return; + state.player.x = nx; + state.player.y = ny; + const found = itemAt(nx, ny); + if (found) take(found); + const encounter = encounterAt(nx, ny); + if (encounter && !state.flags[`encounter_${encounter}`]) startBattle(encounter); + } + + function canEnter(to) { + if (to === "chapel" && !state.flags.rootsTruth && state.forgets < 2) { + say("Ferryman", "The chapel is under the lake. It only opens for truth, or for forgetting."); + return false; + } + if (to === "shore" && !state.flags.cinderMet) { + say("Brother Cinder", "The shore is not a place. It is a decision. Hear me first."); + return false; + } + return true; + } + + function act() { + audio.start(); + if (!state.started) return start(); + if (state.mode === "battle") return chooseBattle("listen"); + if (state.ending) return; + const front = inFront(); + const npc = npcAt(front.x, front.y) || npcAt(state.player.x, state.player.y); + if (npc) return talk(npc); + const found = itemAt(state.player.x, state.player.y); + if (found) return take(found); + const special = propAt(front.x, front.y) || propAt(state.player.x, state.player.y); + if (special) return inspectProp(special); + if (state.area === "shore" && state.player.x > 22 && state.player.y > 8) return finalChoice(); + say("Ilyas", "The town holds its breath. Somewhere, water knocks against stone."); + } + + function inFront() { + const d = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[state.player.facing] || [0, 1]; + return { x: state.player.x + d[0], y: state.player.y + d[1] }; + } + + function npcAt(x, y) { + return Object.keys(npcs).find((id) => { + const npc = npcs[id]; + return npc.area === state.area && npc.x === x && npc.y === y && !forgottenNpc(id); + }); + } + + function itemAt(x, y) { + return Object.keys(items).find((id) => { + const item = items[id]; + return item.area === state.area && item.x === x && item.y === y && !state.inventory.includes(id); + }); + } + + function encounterAt(x, y) { + return Object.keys(encounters).find((id) => { + const e = encounters[id]; + return e.area === state.area && e.x === x && e.y === y; + }); + } + + function propAt(x, y) { + return areas[state.area].props.find((prop) => x >= prop.x && x < prop.x + (prop.w || 1) && y >= prop.y && y < prop.y + (prop.h || 1)); + } + + function take(id) { + state.inventory.push(id); + audio.sfx("item"); + if (id === "letter") remember("The wet letter refuses to dry.", true); + if (id === "photo") remember("A photo shows you beside someone whose face keeps changing.", true); + if (id === "cinderKey") state.flags.chapelKey = true; + say("Found", `${items[id].name} added to your bag.`); + save(); + } + + function talk(id) { + audio.sfx("talk"); + if (id === "mira") { + state.companion = true; + state.flags.metMira = true; + remember("Mira remembers what other people lose.", true); + say("Mira", state.forgets > 1 ? "You keep looking through people like windows. Don't do that to me, okay?" : "You look lost. Good. Everyone interesting does."); + } + if (id === "ferryman") { + remember("The Ferryman knows where you have been before you arrive.", state.forgets < 2); + say("Ferryman", state.toldName ? `${state.toldName} is a fine name to keep away from water.` : "Names are hooks. I would not throw yours into the lake."); + } + if (id === "vendor") say("Maribel", "Today's special: one jar of fog, two apologies, and a fish that predicts Thursday badly."); + if (id === "performer") { + remember("A performer advertised a show called YOUR MISSING YEARS.", state.forgets < 3); + say("Velvet Noon", "Clap if you remember me. Clap twice if you are pretending."); + } + if (id === "archivist") { + state.flags.rootsTruth = true; + remember("The lake feeds on suffering, but calls it mercy.", true); + say("Memory Archivist", "The archives are homes with the people removed. The lake calls that tidying."); + } + if (id === "cinder") { + state.flags.cinderMet = true; + remember("Brother Cinder believes forgetting pain is mercy.", true); + say("Brother Cinder", "I have seen grief make animals of gentle people. The lake did not begin as a hunger. It began as a kindness."); + } + if (id === "sibling") { + remember("Your sibling entered the lake willingly.", true); + say("Your Sibling", "I gave it my name because I was tired of carrying it. Please don't give it yours."); + finalChoice(); + } + save(); + } + + function inspectProp(prop) { + audio.sfx("talk"); + if (prop.kind === "lake") say("Black Lake", state.toldName ? `It almost says ${state.toldName}. Almost.` : "It reflects nothing. Not clouds. Not you."); + if (prop.kind === "stall") say("Market Sign", "Fresh eels. Older than regret. Discount if they remember your birthday."); + if (prop.kind === "flowers") say("Glowing Flowers", "They lean toward the water like they are listening."); + if (prop.kind === "sign") say("Advertisement", "TONIGHT: The Amazing Vanishing Audience. Refunds unavailable after erasure."); + if (prop.kind === "stage") say("Stage", "The curtain twitches though there is no wind indoors."); + if (prop.kind === "poster") say("Poster", "A smiling face has been scratched out. The scratch is smiling too."); + if (prop.kind === "archive") { + state.flags.rootsTruth = true; + remember("Some memory shelves are empty because nobody dared open them.", true); + say("Memory Archive", "A drawer opens by itself. Inside: houses, birthdays, funeral songs, a ticket stub from a train that never arrived."); + } + if (prop.kind === "root") say("Roots", "They pulse slowly under the town, carrying lake-water like blood."); + if (prop.kind === "home") say("Abandoned Home", "Every room is furnished except for the idea of a family."); + if (prop.kind === "pew") say("Drowned Pew", "The wood is wet. The prayer book is dry."); + if (prop.kind === "glass") say("Sunken Window", "Saints in blue glass lower their eyes toward the lake."); + if (prop.kind === "rift") finalChoice(); + save(); + } + + function tellName(name) { + state.toldName = name.slice(0, 18); + remember(`You told Morrow's End your name is ${state.toldName}.`, false); + say("Morrow's End", `The town repeats ${state.toldName} very softly. Too softly.`); + state.route = state.route === "Undecided" ? "Named" : state.route; + save(); + } + + function startBattle(id) { + const e = encounters[id]; + state.mode = "battle"; + state.battle = { + id, + hp: e.hp, + maxHp: e.hp, + soul: { x: 480, y: 382 }, + bullets: [], + t: 0, + grace: 0, + turn: 1, + message: e.text + }; + audio.setTrack("battle"); + audio.sfx("battle"); + say(e.title, e.text); + save(); + } + + function chooseBattle(action) { + if (state.mode !== "battle" || !state.battle) return; + const battle = state.battle; + if (action === "confront") { + battle.hp -= 9; + state.confronts += 1; + state.route = "Confronting"; + battle.message = "You refuse to move. The memory recoils from your shape."; + audio.sfx("hit"); + } + if (action === "listen") { + battle.hp -= 7; + state.listens += 1; + state.route = state.forgets === 0 ? "Carry" : "Listening"; + battle.message = "You listen until the ache becomes words. The attack softens."; + remember(`Listened to ${encounters[battle.id].title}.`, true); + audio.sfx("listen"); + } + if (action === "forget") { + battle.hp -= 18; + state.forgets += 1; + state.route = state.forgets >= 3 ? "Forgotten" : "Silence"; + battle.message = "You let the lake take the hard part. Something else goes with it."; + rewriteMemory(); + audio.sfx("forget"); + } + battle.turn += 1; + if (battle.hp <= 0) resolveBattle(action); + else say(encounters[battle.id].title, battle.message); + save(); + } + + function resolveBattle(action) { + const id = state.battle.id; + state.flags[`encounter_${id}`] = action; + if (id === "root_husk") state.flags.rootsTruth = true; + if (action === "forget" && state.forgets >= 3) return end("forgotten"); + const line = action === "listen" + ? "The memory steps aside, still hurting, but no longer alone." + : action === "forget" + ? "The memory becomes easy to pass. Behind you, a street sign loses a letter." + : "The memory breaks apart like ash under rain."; + leaveBattle(line); + } + + function leaveBattle(line) { + state.mode = "world"; + state.battle = null; + audio.setTrack(areas[state.area].track); + say("Afterimage", line); + save(); + } + + function finalChoice() { + if (state.forgets >= 3) return end("forgotten"); + if (state.forgets === 0 && state.listens >= 3 && state.flags.metMira) return end("rest"); + if (state.route === "Silence" || state.forgets > state.listens) return end("silence"); + end("carry"); + } + + function end(kind) { + state.ending = kind; + state.mode = "ending"; + state.route = kind === "rest" ? "True: Rest" : kind === "carry" ? "Carry" : kind === "silence" ? "Silence" : "Forgotten"; + audio.setTrack(kind === "forgotten" ? "void" : "ending"); + say("Ending", endingLine(kind)); + remember(endingLine(kind), kind !== "forgotten"); + save(); + } + + function endingLine(kind) { + if (kind === "silence") return "Silence: you join the lake. Morrow's End becomes peaceful, clean, and almost empty."; + if (kind === "carry") return "Carry: the lake breaks. Everyone remembers. The town survives with tears in every lit window."; + if (kind === "forgotten") return "Forgotten: the story continues politely around the space where Ilyas used to be."; + return "Rest: the lake is forgiven, not destroyed. Mira laughs once, real and afraid, as the shore finally reflects the sky."; + } + + function rewriteMemory() { + const mutable = state.memories.find((memory) => !memory.stable && !memory.erased) || state.memories.find((memory) => !memory.erased); + if (mutable) { + mutable.text = state.forgets > 2 ? "There was someone here. There was no one here. Both feel true." : mutable.text.replace(/[aeiou]/gi, "_"); + mutable.erased = state.forgets > 2; + } + if (state.forgets === 2) state.flags.vendorForgotten = true; + if (state.forgets >= 3) state.flags.performerForgotten = true; + } + + function forgottenNpc(id) { + return (id === "vendor" && state.flags.vendorForgotten) || (id === "performer" && state.flags.performerForgotten); + } + + function remember(text, stable) { + if (!state.memories.some((memory) => memory.text === text)) state.memories.push({ id: `m${Date.now()}`, text, stable: Boolean(stable) }); + if (state.memories.length > 8) state.memories.splice(2, 1); + } + + function say(speaker, line) { + state.dialogue = { speaker, line }; + } + + function areaEnterLine(area) { + if (area === "red") return "The Red Streets glow warmly, but the laughter arrives half a second late."; + if (area === "roots") return "The Roots smell like wet stone and bedrooms left untouched for years."; + if (area === "chapel") return "The Drowned Chapel rings with a bell under water."; + if (area === "shore") return "The Hollow Shore bends at the edges, as if the world has been folded too many times."; + return "Harbor Row keeps its lamps low and its names lower."; + } + + function draw(now) { + ctx.imageSmoothingEnabled = false; + if (!state.started || state.mode === "title") drawTitle(now); + else drawWorld(now); + if (state.mode === "battle") drawBattle(now); + if (state.mode === "ending") drawEnding(now); + drawVignette(now); + } + + function drawTitle(now) { + const g = ctx.createLinearGradient(0, 0, 0, canvas.height); + g.addColorStop(0, "#05070c"); + g.addColorStop(0.55, "#101b28"); + g.addColorStop(1, "#020306"); + ctx.fillStyle = g; + ctx.fillRect(0, 0, canvas.width, canvas.height); + drawLake(0, 345, 960, 195, now, 0.4); + ctx.fillStyle = "#f8efe0"; + ctx.font = "700 50px Georgia, serif"; + ctx.textAlign = "center"; + ctx.fillText("Ash Below the Lake", 480, 142); + ctx.font = "18px Georgia, serif"; + ctx.fillStyle = "#b9c6d4"; + ctx.fillText("A quiet town. A black lake. A name you should not give away.", 480, 178); + ctx.fillStyle = "#e0a451"; + ctx.font = "700 18px ui-monospace, monospace"; + ctx.fillText("Press Start or Space", 480, 246); + drawSprite("ilyas", 424, 288, 3, now); + drawSprite("mira", 500, 288, 3, now); + } + + function drawWorld(now) { + const area = areas[state.area]; + for (let y = 0; y < rows; y += 1) { + for (let x = 0; x < cols; x += 1) { + const wall = area.walls.has(`${x},${y}`); + const c = area.floor[(x + y) % area.floor.length]; + ctx.fillStyle = wall ? "#0b0d10" : c; + ctx.fillRect(x * tile, y * tile, tile, tile); + if (!wall) { + ctx.fillStyle = (x + y) % 2 === 0 ? "rgba(255,255,255,0.018)" : "rgba(0,0,0,0.035)"; + ctx.fillRect(x * tile, y * tile + 30, tile, 2); + } + } + } + area.exits.forEach((exit) => drawDoor(exit.x, exit.y, area.accent)); + area.props.forEach((prop) => drawProp(prop, now)); + Object.keys(items).forEach((id) => { + const item = items[id]; + if (item.area === state.area && !state.inventory.includes(id)) drawItem(id, item, now); + }); + Object.keys(encounters).forEach((id) => { + const e = encounters[id]; + if (e.area === state.area && !state.flags[`encounter_${id}`]) drawEncounter(e, now); + }); + Object.keys(npcs).forEach((id) => { + const npc = npcs[id]; + if (npc.area === state.area && !forgottenNpc(id)) drawSprite(npc.character, npc.x * tile, npc.y * tile - 12, 2, now); + }); + drawSprite("ilyas", state.player.x * tile, state.player.y * tile - 12, 2, now); + if (state.companion && state.area !== "chapel") { + const offset = state.player.facing === "left" ? 1 : -1; + drawSprite("mira", (state.player.x + offset) * tile, state.player.y * tile - 12, 2, now + 200); + } + drawTopBar(area); + } + + function drawTopBar(area) { + ctx.fillStyle = "rgba(3, 6, 10, 0.82)"; + ctx.fillRect(0, 0, canvas.width, 42); + ctx.fillStyle = area.accent; + ctx.font = "700 14px ui-monospace, monospace"; + ctx.textAlign = "left"; + ctx.fillText(`${area.act} / ${area.name}`, 18, 26); + ctx.textAlign = "right"; + ctx.fillStyle = "#f8efe0"; + ctx.fillText(`Resolve ${state.resolve} Lake ${state.forgets}`, 940, 26); + } + + function drawBattle(now) { + const battle = state.battle; + battle.t += 1; + updateBullets(battle, now); + ctx.fillStyle = "rgba(4, 5, 8, 0.88)"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.strokeStyle = "#f8efe0"; + ctx.lineWidth = 3; + ctx.strokeRect(296, 252, 368, 190); + ctx.fillStyle = "#f8efe0"; + ctx.font = "700 24px Georgia, serif"; + ctx.textAlign = "center"; + ctx.fillText(encounters[battle.id].title, 480, 82); + ctx.font = "16px ui-monospace, monospace"; + ctx.fillText(`Memory ${Math.max(0, battle.hp)} / ${battle.maxHp}`, 480, 116); + drawBattleEnemy(battle.id, now); + ctx.fillStyle = "#f35f5f"; + ctx.beginPath(); + ctx.moveTo(battle.soul.x, battle.soul.y - 8); + ctx.bezierCurveTo(battle.soul.x - 13, battle.soul.y - 17, battle.soul.x - 20, battle.soul.y + 4, battle.soul.x, battle.soul.y + 18); + ctx.bezierCurveTo(battle.soul.x + 20, battle.soul.y + 4, battle.soul.x + 13, battle.soul.y - 17, battle.soul.x, battle.soul.y - 8); + ctx.fill(); + ctx.fillStyle = "#dbeafe"; + battle.bullets.forEach((b) => { + ctx.beginPath(); + ctx.arc(b.x, b.y, b.r, 0, Math.PI * 2); + ctx.fill(); + }); + ctx.fillStyle = "#f8efe0"; + ctx.font = "15px Georgia, serif"; + wrapText(battle.message, 148, 480, 660, 22); + } + + function updateBullets(battle) { + const speed = state.forgets > 0 ? 1.15 : 1.55; + const move = keyDirection(); + if (move === "up") battle.soul.y -= 3.3; + if (move === "down") battle.soul.y += 3.3; + if (move === "left") battle.soul.x -= 3.3; + if (move === "right") battle.soul.x += 3.3; + battle.soul.x = clamp(battle.soul.x, 312, 648); + battle.soul.y = clamp(battle.soul.y, 270, 426); + if (battle.t % 26 === 0) { + if (encounters[battle.id].bullets === "rain") battle.bullets.push({ x: 315 + Math.random() * 330, y: 256, vx: 0, vy: speed * 2.4, r: 5 }); + else if (encounters[battle.id].bullets === "spiral") { + const a = battle.t / 14; + battle.bullets.push({ x: 480, y: 346, vx: Math.cos(a) * speed * 2, vy: Math.sin(a) * speed * 2, r: 5 }); + } else battle.bullets.push({ x: Math.random() > 0.5 ? 304 : 656, y: 275 + Math.random() * 130, vx: (Math.random() > 0.5 ? -1 : 1) * speed * 2, vy: Math.sin(battle.t) * 0.6, r: 5 }); + } + battle.bullets.forEach((b) => { + b.x += b.vx; + b.y += b.vy; + if (battle.grace <= 0 && Math.hypot(b.x - battle.soul.x, b.y - battle.soul.y) < b.r + 10) { + state.resolve = Math.max(0, state.resolve - 1); + battle.grace = 24; + audio.sfx("hurt"); + if (state.resolve <= 0) end("forgotten"); + } + }); + battle.grace -= 1; + battle.bullets = battle.bullets.filter((b) => b.x > 280 && b.x < 680 && b.y > 230 && b.y < 455); + } + + function renderHud() { + root.classList.toggle("is-lake-awake", state.forgets > 1); + root.classList.toggle("is-ending", Boolean(state.ending)); + els.speaker.textContent = state.dialogue.speaker; + els.line.textContent = state.dialogue.line; + els.area.textContent = areas[state.area].name; + els.route.textContent = state.route; + els.resolve.textContent = String(state.resolve); + ui.memoryFill.style.width = `${Math.min(100, state.forgets * 34)}%`; + els.inventory.innerHTML = state.inventory.length ? state.inventory.map((id) => `
  • ${items[id].name}
  • `).join("") : "
  • Empty
  • "; + els.journal.innerHTML = state.memories.map((memory) => `
  • ${memory.erased ? "[entry missing]" : memory.text}
  • `).join(""); + ui.actionButtons.forEach((button) => { + button.disabled = state.mode !== "battle"; + }); + } + + function drawProp(prop, now) { + const x = prop.x * tile; + const y = prop.y * tile; + if (prop.kind === "lake") return drawLake(x, y, (prop.w || 1) * tile, (prop.h || 1) * tile, now, 1); + if (prop.kind === "stall") { + ctx.fillStyle = "#7f2d3a"; ctx.fillRect(x, y + 8, 64, 34); + ctx.fillStyle = "#e0a451"; ctx.fillRect(x - 4, y, 72, 12); + } + if (prop.kind === "flowers") for (let i = 0; i < 6; i += 1) { ctx.fillStyle = `rgba(133, 255, 214, ${0.45 + Math.sin(now / 400 + i) * 0.2})`; ctx.fillRect(x + i * 8, y + 12 + (i % 2) * 8, 5, 5); } + if (prop.kind === "sign" || prop.kind === "poster") { ctx.fillStyle = "#12151d"; ctx.fillRect(x, y, 38, 32); ctx.fillStyle = "#f3b15d"; ctx.fillRect(x + 5, y + 6, 28, 3); } + if (prop.kind === "stage") { ctx.fillStyle = "#210d18"; ctx.fillRect(x, y + 10, 96, 46); ctx.fillStyle = "#d64d62"; ctx.fillRect(x + 8, y, 80, 14); } + if (prop.kind === "archive") { ctx.fillStyle = "#4b3a25"; ctx.fillRect(x, y, 58, 52); ctx.fillStyle = "#d8cba8"; for (let i = 0; i < 4; i += 1) ctx.fillRect(x + 8, y + 8 + i * 10, 42, 3); } + if (prop.kind === "root") { ctx.strokeStyle = "#6aa27d"; ctx.lineWidth = 5; ctx.beginPath(); ctx.moveTo(x, y + 28); ctx.bezierCurveTo(x + 26, y - 8, x + 52, y + 48, x + 80, y + 6); ctx.stroke(); } + if (prop.kind === "home") { ctx.fillStyle = "#263332"; ctx.fillRect(x, y, 54, 48); ctx.fillStyle = "#080a0c"; ctx.fillRect(x + 20, y + 18, 14, 30); } + if (prop.kind === "pew") { ctx.fillStyle = "#33251d"; ctx.fillRect(x, y + 10, 76, 20); } + if (prop.kind === "glass") { ctx.fillStyle = "rgba(139,211,255,0.55)"; ctx.fillRect(x, y, 52, 72); ctx.fillStyle = "rgba(255,255,255,0.3)"; ctx.fillRect(x + 23, y, 5, 72); } + if (prop.kind === "rift") { ctx.strokeStyle = `rgba(248,239,224,${0.5 + Math.sin(now / 200) * 0.3})`; ctx.lineWidth = 3; ctx.beginPath(); ctx.moveTo(x + 20, y); ctx.lineTo(x + 5, y + 22); ctx.lineTo(x + 27, y + 40); ctx.lineTo(x + 10, y + 70); ctx.stroke(); } + } + + function drawLake(x, y, w, h, now, alpha) { + const g = ctx.createLinearGradient(0, y, 0, y + h); + g.addColorStop(0, `rgba(7, 18, 30, ${0.7 * alpha})`); + g.addColorStop(1, `rgba(0, 0, 0, ${0.95 * alpha})`); + ctx.fillStyle = g; + ctx.fillRect(x, y, w, h); + ctx.strokeStyle = `rgba(114, 169, 191, ${0.2 * alpha})`; + for (let i = 0; i < 8; i += 1) { + ctx.beginPath(); + const yy = y + 12 + i * 17 + Math.sin(now / 700 + i) * 4; + ctx.moveTo(x, yy); + for (let xx = 0; xx < w; xx += 24) ctx.lineTo(x + xx, yy + Math.sin(now / 350 + xx / 35 + i) * 3); + ctx.stroke(); + } + } + + function drawDoor(x, y, color) { + ctx.fillStyle = color; + ctx.fillRect(x * tile + 7, y * tile + 4, 18, 26); + ctx.fillStyle = "#05070c"; + ctx.fillRect(x * tile + 19, y * tile + 17, 3, 3); + } + + function drawItem(id, item, now) { + const x = item.x * tile; + const y = item.y * tile + Math.sin(now / 220) * 2; + ctx.fillStyle = id === "bell" ? "#d6a24a" : id === "photo" ? "#dbeafe" : id === "cinderKey" ? "#f59e0b" : "#f8efe0"; + ctx.fillRect(x + 10, y + 10, 13, 13); + ctx.fillStyle = "rgba(255,255,255,0.45)"; + ctx.fillRect(x + 13, y + 7, 7, 5); + } + + function drawEncounter(e, now) { + const x = e.x * tile; + const y = e.y * tile; + ctx.fillStyle = `rgba(210, 225, 245, ${0.35 + Math.sin(now / 260) * 0.16})`; + ctx.fillRect(x + 8, y + 4, 16, 27); + ctx.clearRect(x + 12, y + 10, 3, 4); + ctx.clearRect(x + 19, y + 10, 3, 4); + } + + function drawSprite(id, x, y, scale, now) { + const c = characters[id].colors; + const bob = Math.sin(now / 260 + x) * 1.5; + const s = scale; + ctx.fillStyle = "rgba(0,0,0,0.28)"; + ctx.fillRect(x + 5 * s, y + 30 * s, 12 * s, 3 * s); + ctx.fillStyle = c[0]; ctx.fillRect(x + 7 * s, y + bob + 2 * s, 10 * s, 7 * s); + ctx.fillStyle = c[1]; ctx.fillRect(x + 6 * s, y + bob + 8 * s, 12 * s, 10 * s); + ctx.fillStyle = c[2]; ctx.fillRect(x + 5 * s, y + bob + 18 * s, 14 * s, 13 * s); + ctx.fillStyle = c[3]; ctx.fillRect(x + 8 * s, y + bob + 12 * s, 2 * s, 2 * s); ctx.fillRect(x + 14 * s, y + bob + 12 * s, 2 * s, 2 * s); + ctx.fillStyle = c[0]; ctx.fillRect(x + 4 * s, y + bob + 22 * s, 3 * s, 9 * s); ctx.fillRect(x + 17 * s, y + bob + 22 * s, 3 * s, 9 * s); + } + + function drawBattleEnemy(id, now) { + if (id === "first_erased") drawEncounter({ x: 14, y: 4 }, now); + if (id === "root_husk") { ctx.strokeStyle = "#79c89d"; ctx.lineWidth = 8; ctx.beginPath(); ctx.moveTo(440, 180); ctx.bezierCurveTo(470, 120, 510, 230, 540, 160); ctx.stroke(); } + if (id === "chapel_memory") { ctx.fillStyle = "rgba(139,211,255,0.5)"; for (let i = 0; i < 5; i += 1) ctx.fillRect(420 + i * 28, 150 + Math.sin(now / 300 + i) * 8, 16, 54); } + } + + function drawEnding(now) { + ctx.fillStyle = "rgba(0,0,0,0.72)"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = "#f8efe0"; + ctx.font = "700 42px Georgia, serif"; + ctx.textAlign = "center"; + ctx.fillText(state.route, 480 + Math.sin(now / 120) * (state.ending === "forgotten" ? 3 : 0), 202); + ctx.font = "18px Georgia, serif"; + wrapText(state.dialogue.line, 250, 250, 460, 28); + } + + function drawVignette(now) { + if (state.forgets > 0) { + ctx.fillStyle = `rgba(0,0,0,${0.06 + state.forgets * 0.05 + Math.sin(now / 800) * 0.02})`; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } + const g = ctx.createRadialGradient(480, 245, 120, 480, 245, 560); + g.addColorStop(0, "rgba(0,0,0,0)"); + g.addColorStop(1, "rgba(0,0,0,0.48)"); + ctx.fillStyle = g; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } + + function wrapText(text, x, y, maxWidth, lineHeight) { + ctx.textAlign = "left"; + const words = text.split(" "); + let line = ""; + for (const word of words) { + const test = `${line}${word} `; + if (ctx.measureText(test).width > maxWidth && line) { + ctx.fillText(line, x, y); + line = `${word} `; + y += lineHeight; + } else { + line = test; + } + } + ctx.fillText(line, x, y); + } + }; + + function makeAudio() { + let ctx = null; + let master = null; + let track = "title"; + let timer = null; + const patterns = { + title: [220, 277, 330, 277], + harbor: [262, 330, 392, 330], + red: [196, 233, 294, 349], + roots: [174, 220, 261, 220], + chapel: [147, 196, 247, 294], + shore: [110, 165, 220, 165], + battle: [330, 311, 294, 247], + ending: [262, 392, 440, 523], + void: [110, 98, 82, 73] + }; + function start() { + const Audio = window.AudioContext || window.webkitAudioContext; + if (!Audio) return; + if (ctx) { + if (ctx.state === "suspended") ctx.resume(); + return; + } + ctx = new Audio(); + master = ctx.createGain(); + master.gain.value = 0.14; + master.connect(ctx.destination); + if (ctx.state === "suspended") ctx.resume(); + loop(); + const notes = patterns[track] || patterns.title; + tone(notes[0], 0.22, "triangle", 0.9); + } + function loop() { + clearInterval(timer); + let i = 0; + timer = setInterval(() => { + if (!ctx) return; + const notes = patterns[track] || patterns.title; + tone(notes[i % notes.length], 0.28, track === "battle" ? "sawtooth" : "sine"); + if (track !== "battle") tone(notes[(i + 2) % notes.length] / 2, 0.7, "triangle", 0.45); + i += 1; + }, track === "battle" ? 230 : 520); + } + function tone(freq, dur, type, gainScale) { + const osc = ctx.createOscillator(); + const gain = ctx.createGain(); + osc.type = type; + osc.frequency.value = freq; + gain.gain.setValueAtTime(0, ctx.currentTime); + gain.gain.linearRampToValueAtTime(0.25 * (gainScale || 1), ctx.currentTime + 0.02); + gain.gain.exponentialRampToValueAtTime(0.001, ctx.currentTime + dur); + osc.connect(gain); + gain.connect(master); + osc.start(); + osc.stop(ctx.currentTime + dur + 0.03); + } + return { + start, + supported() { + return Boolean(window.AudioContext || window.webkitAudioContext); + }, + setTrack(next) { + track = next; + if (ctx && ctx.state === "suspended") ctx.resume(); + if (ctx) loop(); + if (ctx) tone((patterns[track] || patterns.title)[0], 0.16, track === "battle" ? "sawtooth" : "triangle", 0.65); + }, + sfx(kind) { + if (!ctx) return; + if (ctx.state === "suspended") ctx.resume(); + const map = { item: 660, talk: 440, battle: 130, hit: 180, listen: 523, forget: 96, hurt: 80 }; + tone(map[kind] || 330, kind === "forget" ? 0.8 : 0.18, kind === "forget" ? "sawtooth" : "square", kind === "hurt" ? 1.3 : 0.8); + } + }; + } + + function rects(sources) { + const set = new Set(); + sources.forEach(([x, y, w, h]) => { + for (let yy = y; yy < y + h; yy += 1) for (let xx = x; xx < x + w; xx += 1) set.add(`${xx},${yy}`); + }); + return set; + } + + function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); + } +})(); diff --git a/assets/scripts/pages/competency-status-board.js b/assets/scripts/pages/competency-status-board.js new file mode 100644 index 0000000..baf3db3 --- /dev/null +++ b/assets/scripts/pages/competency-status-board.js @@ -0,0 +1,240 @@ +const STATES = [ + { key: "completed", label: "Completed" }, + { key: "manager_review", label: "Manager Review" }, + { key: "in_progress", label: "In Progress" }, + { key: "not_started", label: "Not Started" }, + { key: "comments", label: "Comments" }, +]; + +const LEVELS = [ + { key: "graduate", label: "Graduate" }, + { key: "engineer", label: "Engineer" }, +]; + +let currentLevel = LEVELS[0].key; + +function isMobile() { + return window.matchMedia("(max-width: 600px)").matches; +} + +function renderLevelTabs() { + const board = document.getElementById("kanban-board"); + if (!board || document.getElementById("level-tabs")) return; + + const nav = document.createElement("div"); + nav.id = "level-tabs"; + + LEVELS.forEach(({ key, label }) => { + const btn = document.createElement("button"); + btn.textContent = label; + btn.dataset.level = key; + btn.className = "level-tab" + (key === currentLevel ? " active" : ""); + btn.addEventListener("click", () => { + currentLevel = key; + document.querySelectorAll(".level-tab").forEach(b => + b.classList.toggle("active", b.dataset.level === key) + ); + loadBoard(); + }); + nav.appendChild(btn); + }); + + board.insertAdjacentElement("beforebegin", nav); + + if (!document.getElementById("level-tab-styles")) { + const style = document.createElement("style"); + style.id = "level-tab-styles"; + style.textContent = ` + #level-tabs { + display: flex; + gap: 0.5em; + margin-bottom: 1em; + } + .level-tab { + padding: 0.4em 1.2em; + border: 1px solid #ccc; + background: none; + cursor: pointer; + border-radius: 4px; + font-size: 0.95em; + } + .level-tab.active { + background: #333; + color: #fff; + border-color: #333; + } + `; + document.head.appendChild(style); + } +} + +function populateMobileControls(items) { + if (!isMobile()) return; + + const panel = document.getElementById("mobile-move-panel"); + const itemSelect = document.getElementById("move-item"); + const fromSelect = document.getElementById("move-from"); + const toSelect = document.getElementById("move-to"); + + itemSelect.innerHTML = ""; + fromSelect.innerHTML = ""; + toSelect.innerHTML = ""; + + items.forEach((item) => { + const opt = document.createElement("option"); + opt.value = item.id; + opt.textContent = item.title; + opt.dataset.state = item.state; + itemSelect.appendChild(opt); + }); + + STATES.forEach((s) => { + fromSelect.appendChild(new Option(s.label, s.key)); + toSelect.appendChild(new Option(s.label, s.key)); + }); + + itemSelect.onchange = () => { + const selected = itemSelect.selectedOptions[0]; + if (selected?.dataset.state) { + fromSelect.value = selected.dataset.state; + } + }; +} + +const moveConfirmBtn = document.getElementById("move-confirm"); +if (moveConfirmBtn) { + moveConfirmBtn.addEventListener("click", async () => { + const itemId = document.getElementById("move-item").value; + const from = document.getElementById("move-from").value; + const to = document.getElementById("move-to").value; + + if (!itemId || !to) { + alert("Select an item and target column"); + return; + } + + if (from === to) { + alert("Item is already in that column"); + return; + } + + const res = await fetch(`/api/competencies/items/${itemId}/state`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ state: to }), + }); + + if (res.ok) { + loadBoard(); + } else { + alert("Failed to move competency"); + } + }); +} + +let draggedItemId = null; + +function countByState(items) { + return items.reduce((acc, item) => { + acc[item.state] = (acc[item.state] || 0) + 1; + return acc; + }, {}); +} + +async function updateProgress(items) { + const total = items.length; + const completed = items.filter(i => i.state === "completed").length; + const percent = total === 0 ? 0 : Math.round((completed / total) * 100); + + const fill = document.getElementById("progress-fill"); + const label = document.getElementById("progress-label"); + + if (fill) fill.style.width = `${percent}%`; + if (label) label.textContent = `${percent}% completed`; +} + +function createCard(item) { + const card = document.createElement("div"); + card.className = "kanban-card"; + card.draggable = true; + card.dataset.id = item.id; + card.textContent = item.title; + + card.addEventListener("dragstart", () => { + draggedItemId = item.id; + card.classList.add("dragging"); + }); + + card.addEventListener("dragend", () => { + draggedItemId = null; + card.classList.remove("dragging"); + }); + + return card; +} + +function createColumn(state, items, counts) { + const col = document.createElement("div"); + col.className = "kanban-column"; + col.dataset.state = state.key; + + const header = document.createElement("h3"); + header.innerHTML = ` + ${state.label} + ${counts[state.key] || 0} +`; + + const list = document.createElement("div"); + list.className = "kanban-list"; + + list.addEventListener("dragover", (e) => e.preventDefault()); + + list.addEventListener("drop", async () => { + if (!draggedItemId) return; + + const res = await fetch(`/api/competencies/items/${draggedItemId}/state`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ state: state.key }), + }); + + if (res.ok) { + loadBoard(); + } else { + alert("Failed to update state"); + } + }); + + items + .filter((i) => i.state === state.key) + .forEach((i) => list.appendChild(createCard(i))); + + col.appendChild(header); + col.appendChild(list); + + return col; +} + +function renderBoard(items) { + const board = document.getElementById("kanban-board"); + if (!board) return; + board.innerHTML = ""; + + const counts = countByState(items); + + STATES.forEach((state) => { + board.appendChild(createColumn(state, items, counts)); + }); +} + +async function loadBoard() { + const res = await fetch(`/api/competencies/items?group=${currentLevel}`); + const items = await res.json(); + + updateProgress(items); + renderBoard(items); + populateMobileControls(items); +} + +renderLevelTabs(); +loadBoard(); diff --git a/assets/scripts/pages/home-dashboard.js b/assets/scripts/pages/home-dashboard.js new file mode 100644 index 0000000..d636b68 --- /dev/null +++ b/assets/scripts/pages/home-dashboard.js @@ -0,0 +1,313 @@ +/* Home dashboard behaviour. All selectors are db-* scoped. */ + +(function () { + "use strict"; + + function updateGreeting() { + const el = document.getElementById("db-greeting"); + if (!el) return; + + const hour = new Date().getHours(); + if (hour < 5) el.textContent = "Late session"; + else if (hour < 12) el.textContent = "Good morning"; + else if (hour < 17) el.textContent = "Good afternoon"; + else if (hour < 21) el.textContent = "Good evening"; + else el.textContent = "Evening review"; + } + + function updateClock() { + const el = document.getElementById("db-clock"); + if (!el) return; + + el.textContent = new Intl.DateTimeFormat(undefined, { + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + hour12: false, + }).format(new Date()); + } + + function getIsoWeek(date) { + const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); + const dayNum = d.getUTCDay() || 7; + d.setUTCDate(d.getUTCDate() + 4 - dayNum); + const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1)); + return Math.ceil(((d - yearStart) / 86400000 + 1) / 7); + } + + function updateStats() { + const now = new Date(); + const year = now.getFullYear(); + const start = new Date(year, 0, 1); + const nextYear = new Date(year + 1, 0, 1); + const dayOfYear = Math.floor((now - start) / 86400000) + 1; + const daysInYear = Math.round((nextYear - start) / 86400000); + const daysLeft = Math.max(0, daysInYear - dayOfYear); + const month = new Intl.DateTimeFormat(undefined, { month: "short" }).format(now); + const pct = ((dayOfYear / daysInYear) * 100).toFixed(1); + + setText("db-stat-day", dayOfYear); + setText("db-stat-week", "W" + getIsoWeek(now)); + setText("db-stat-month", month); + setText("db-stat-left", daysLeft); + setText("db-year-pct", pct + "%"); + + const fill = document.getElementById("db-year-fill"); + if (fill) fill.style.width = pct + "%"; + } + + function setText(id, value) { + const el = document.getElementById(id); + if (el) el.textContent = value; + } + + function escHtml(str) { + return String(str) + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); + } + + function escAttr(str) { + return escHtml(str).replace(/'/g, "'"); + } + + function normaliseHref(href, prefix) { + if (!href || href.startsWith("http") || href.startsWith("#")) return null; + if (href.startsWith("/")) return href; + const base = (prefix || "").replace(/\/$/, ""); + if (!base || href.startsWith(base + "/")) return href; + return base + "/" + href; + } + + function isTagLink(a) { + const href = a.getAttribute("href") || ""; + return href.includes("/tags/") || Boolean(a.querySelector(".post-tag")); + } + + function extractLinks(doc, max, prefix) { + const items = []; + const seen = new Set(); + const links = doc.querySelectorAll("#content li a[href], .org-ul li a[href], ul li a[href]"); + + for (const a of links) { + if (isTagLink(a)) continue; + + const href = normaliseHref(a.getAttribute("href"), prefix); + const title = a.textContent.trim(); + if (!href || !title || seen.has(href)) continue; + + const li = a.closest("li"); + const dateMatch = li ? li.textContent.match(/\b\d{4}-\d{2}-\d{2}\b/) : null; + seen.add(href); + items.push({ href, title, date: dateMatch ? dateMatch[0] : null }); + if (items.length >= max) break; + } + + return items; + } + + function renderFeed(ulId, items) { + const ul = document.getElementById(ulId); + if (!ul || !items.length) return; + + ul.innerHTML = items + .map(({ href, title, date }) => ( + `
  • ` + + `` + + `${escHtml(title)}` + + (date ? `${escHtml(date)}` : "") + + `
  • ` + )) + .join(""); + } + + async function loadFeed(listUrl, ulId, max, prefix) { + try { + const resp = await fetch(listUrl, { credentials: "same-origin" }); + if (!resp.ok) return; + + const html = await resp.text(); + const doc = new DOMParser().parseFromString(html, "text/html"); + renderFeed(ulId, extractLinks(doc, max, prefix)); + } catch (_) { + /* Fallback links remain in the HTML. */ + } + } + + function commentSlug(comment) { + return comment.pageSlug || comment.page_slug || ""; + } + + function commentDate(comment) { + return comment.created_at || comment.createdAt || ""; + } + + function commentHref(page, comment) { + if (!page?.url) return null; + if (!comment.id) return page.url + "#comments"; + return page.url + "#comment-" + encodeURIComponent(comment.id); + } + + function formatCommentDate(value) { + const date = new Date(value); + if (Number.isNaN(date.getTime())) return ""; + + return new Intl.DateTimeFormat(undefined, { + month: "short", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + }).format(date); + } + + function commentExcerpt(content) { + const text = String(content || "").replace(/\s+/g, " ").trim(); + if (text.length <= 150) return text; + return text.slice(0, 147).trimEnd() + "..."; + } + + function renderRecentComments(comments, pageMap) { + const ul = document.getElementById("db-feed-comments"); + if (!ul) return; + + if (!comments.length) { + ul.innerHTML = ( + `
  • ` + + `` + + `
    ` + + `No comments yet.` + + `
    ` + + `
  • ` + ); + return; + } + + ul.innerHTML = comments.map((comment) => { + const slug = commentSlug(comment); + const page = pageMap.get(slug); + const title = page?.title || slug || "Unknown page"; + const href = commentHref(page, comment); + const author = comment.author || "Anonymous"; + const date = formatCommentDate(commentDate(comment)); + const pageLink = href + ? `${escHtml(title)}` + : `${escHtml(title)}`; + + return ( + `
  • ` + + `` + + `
    ` + + `
    ` + + `${escHtml(author)}` + + `on` + + pageLink + + (date ? `` : "") + + `
    ` + + `

    ${escHtml(commentExcerpt(comment.content))}

    ` + + `
    ` + + `
  • ` + ); + }).join(""); + } + + async function loadCommentPageMap() { + try { + const resp = await fetch("/assets/content/comment-pages.json", { credentials: "same-origin" }); + if (!resp.ok) return new Map(); + + const pages = await resp.json(); + return new Map( + pages + .filter((page) => page.slug && page.url) + .map((page) => [page.slug, page]) + ); + } catch (_) { + return new Map(); + } + } + + async function loadRecentComments() { + const ul = document.getElementById("db-feed-comments"); + if (!ul) return; + + const renderUnavailable = () => { + ul.innerHTML = ( + `
  • ` + + `` + + `
    ` + + `Recent comments are unavailable.` + + `
    ` + + `
  • ` + ); + }; + + try { + const [pageMap, resp] = await Promise.all([ + loadCommentPageMap(), + fetch("/api/comments", { credentials: "same-origin" }), + ]); + if (!resp.ok) { + renderUnavailable(); + return; + } + + const comments = await resp.json(); + const recent = comments + .filter((comment) => commentDate(comment)) + .sort((a, b) => new Date(commentDate(b)) - new Date(commentDate(a))) + .slice(0, 10); + + renderRecentComments(recent, pageMap); + } catch (_) { + renderUnavailable(); + } + } + + function initCommandFilter() { + const input = document.getElementById("db-command-search"); + const nav = document.getElementById("db-quicknav"); + if (!input || !nav) return; + + const items = Array.from(nav.querySelectorAll(".db-qn-item")); + const applyFilter = () => { + const query = input.value.trim().toLowerCase(); + items.forEach((item) => { + const haystack = [ + item.textContent, + item.getAttribute("href"), + item.dataset.keywords, + ].join(" ").toLowerCase(); + item.classList.toggle("is-hidden", Boolean(query && !haystack.includes(query))); + }); + }; + + input.addEventListener("input", applyFilter); + document.addEventListener("keydown", (event) => { + if (event.key === "/" && !/^(input|textarea|select)$/i.test(event.target.tagName)) { + event.preventDefault(); + input.focus(); + } + }); + } + + function init() { + updateGreeting(); + updateClock(); + updateStats(); + initCommandFilter(); + + setInterval(updateClock, 1000); + loadFeed("/blogs/blogs-list.html", "db-feed-blogs", 6, "/blogs"); + loadFeed("/posts/posts-list.html", "db-feed-posts", 6, "/posts"); + loadFeed("/recently-updated.html", "db-feed-recent", 6, ""); + loadRecentComments(); + } + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", init); + } else { + init(); + } +})(); diff --git a/assets/scripts/pages/notes.js b/assets/scripts/pages/notes.js new file mode 100644 index 0000000..3496ef4 --- /dev/null +++ b/assets/scripts/pages/notes.js @@ -0,0 +1,148 @@ +(function () { + const wall = document.getElementById("notes-wall"); + const form = document.getElementById("notes-form"); + const authorInput = document.getElementById("note-author"); + const contentInput = document.getElementById("note-content"); + const authorFilter = document.getElementById("notes-author-filter"); + let notesCache = []; + + if (!wall) return; + + function escapeHtml(str) { + return str + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); + } + + function renderNote(note) { + const el = document.createElement("div"); + el.className = "note"; + + el.innerHTML = ` +
    + ${escapeHtml(note.author_name)} + +
    +
    + ${escapeHtml(note.content).replace(/\n/g, "
    ")} +
    + `; + + return el; + } + + function normaliseAuthor(author) { + return (author || "").trim(); + } + + function populateAuthorFilter(notes) { + if (!authorFilter) return; + + const previousValue = authorFilter.value; + const authors = Array.from( + new Set(notes.map(note => normaliseAuthor(note.author_name)).filter(Boolean)) + ).sort((a, b) => a.localeCompare(b, undefined, { sensitivity: "base" })); + + authorFilter.innerHTML = ''; + + authors.forEach(author => { + const option = document.createElement("option"); + option.value = author; + option.textContent = author; + authorFilter.appendChild(option); + }); + + authorFilter.value = authors.includes(previousValue) ? previousValue : ""; + } + + function renderNotes() { + wall.innerHTML = ""; + + const selectedAuthor = authorFilter ? authorFilter.value : ""; + const notes = selectedAuthor + ? notesCache.filter(note => normaliseAuthor(note.author_name) === selectedAuthor) + : notesCache; + + if (notesCache.length === 0) { + wall.innerHTML = "

    No notes yet.

    "; + return; + } + + if (notes.length === 0) { + wall.innerHTML = "

    No notes for this author.

    "; + return; + } + + notes.forEach(note => { + wall.appendChild(renderNote(note)); + }); + } + + async function loadNotes() { + wall.innerHTML = "

    Loading notes…

    "; + + try { + const res = await fetch("/api/notes"); + if (!res.ok) throw new Error("Failed to fetch notes"); + + const notes = await res.json(); + notesCache = notes; + populateAuthorFilter(notesCache); + renderNotes(); + } catch (err) { + console.error(err); + wall.innerHTML = "

    Could not load notes.

    "; + } + } + + async function submitNote(e) { + e.preventDefault(); + + const author = authorInput.value.trim(); + const content = contentInput.value.trim(); + + if (!author || !content) return; + + form.querySelector("button").disabled = true; + + try { + const res = await fetch("/api/notes", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + author_name: author, + content: content, + }), + }); + + if (!res.ok) { + const err = await res.json(); + throw new Error(err.detail || "Failed to post note"); + } + + contentInput.value = ""; + await loadNotes(); + } catch (err) { + alert(err.message); + } finally { + form.querySelector("button").disabled = false; + } + } + + if (form) { + form.addEventListener("submit", submitNote); + } + + if (authorFilter) { + authorFilter.addEventListener("change", renderNotes); + } + + loadNotes(); +})(); diff --git a/assets/scripts/pages/play.js b/assets/scripts/pages/play.js new file mode 100644 index 0000000..90b15b1 --- /dev/null +++ b/assets/scripts/pages/play.js @@ -0,0 +1,866 @@ +(function () { + const $ = (sel, root = document) => root.querySelector(sel); + const $$ = (sel, root = document) => Array.from(root.querySelectorAll(sel)); + const shuffle = (items) => items.map((value) => ({ value, sort: Math.random() })).sort((a, b) => a.sort - b.sort).map((item) => item.value); + const quips = [ + "A margin note blinks, then pretends it did not.", + "Somewhere, a bookmark changes its mind.", + "The archive is pleased by unnecessary curiosity.", + "A tiny bell rings in a room you have not built yet.", + "The page remembers that you came here." + ]; + + document.addEventListener("DOMContentLoaded", () => { + const root = $(".play-root[data-play-page]"); + if (!root) return; + const page = root.dataset.playPage; + const inits = { hub, memory, constellation, poem, bookshelf, recipe, timeline, ink, terminal, study, sigil, rpg }; + if (inits[page]) inits[page](root); + }); + + function hub(root) { + const links = $$(".play-grid a", root); + const nodes = $$(".play-orbit__node", root); + const title = $("#play-hub-title", root); + const kind = $("#play-hub-kind", root); + const desc = $("#play-hub-desc", root); + const cta = $("#play-hub-link", root); + const whisper = document.createElement("p"); + let active = 0; + + whisper.className = "play-whisper"; + whisper.setAttribute("aria-live", "polite"); + $(".play-console__screen", root).appendChild(whisper); + + nodes.forEach((node, index) => { + const angle = (index / nodes.length) * Math.PI * 2 - Math.PI / 2; + node.style.left = `${50 + Math.cos(angle) * 43}%`; + node.style.top = `${50 + Math.sin(angle) * 43}%`; + node.addEventListener("click", () => setActive(index)); + }); + + function setActive(index) { + active = (index + links.length) % links.length; + const link = links[active]; + links.forEach((item, i) => item.classList.toggle("is-active", i === active)); + nodes.forEach((item, i) => item.classList.toggle("is-active", i === active)); + title.textContent = link.querySelector("strong").textContent; + kind.textContent = link.dataset.kind; + desc.textContent = link.dataset.desc; + cta.href = link.href; + whisper.textContent = quips[active % quips.length]; + } + + links.forEach((link, index) => { + link.addEventListener("mouseenter", () => setActive(index)); + link.addEventListener("focus", () => setActive(index)); + }); + $("[data-play-prev]", root).addEventListener("click", () => setActive(active - 1)); + $("[data-play-next]", root).addEventListener("click", () => setActive(active + 1)); + $("[data-play-random]", root).addEventListener("click", () => setActive(Math.floor(Math.random() * links.length))); + $(".play-orbit", root).addEventListener("dblclick", () => { + whisper.textContent = "You knocked twice. The cabinet knocked once back."; + root.classList.toggle("is-odd"); + }); + root.addEventListener("keydown", (event) => { + if (event.key === "ArrowLeft") setActive(active - 1); + if (event.key === "ArrowRight") setActive(active + 1); + }); + setActive(0); + } + + function memory(root) { + const symbols = ["Ink", "Lamp", "Tea", "Book", "Map", "Key"]; + const board = $("[data-memory-board]", root); + const turnsEl = $("[data-memory-turns]", root); + const matchesEl = $("[data-memory-matches]", root); + const messageEl = $("[data-memory-message]", root); + let open = []; + let turns = 0; + let matches = 0; + let deck = []; + + function render() { + board.innerHTML = ""; + open = []; + turns = 0; + matches = 0; + deck = shuffle([...symbols, ...symbols]); + turnsEl.textContent = "0"; + matchesEl.textContent = "0"; + messageEl.textContent = "Cards are shuffled."; + deck.forEach((symbol, index) => { + const card = document.createElement("button"); + card.type = "button"; + card.className = "memory-card"; + card.dataset.symbol = symbol; + card.textContent = "?"; + card.style.setProperty("--tilt", `${(index % 5) - 2}deg`); + card.setAttribute("aria-label", "Hidden card"); + card.addEventListener("click", () => flip(card)); + board.appendChild(card); + }); + } + + function flip(card) { + if (card.classList.contains("is-open") || card.classList.contains("is-matched") || open.length === 2) return; + card.classList.add("is-open"); + card.textContent = card.dataset.symbol; + card.setAttribute("aria-label", card.dataset.symbol); + open.push(card); + if (open.length !== 2) return; + turns += 1; + turnsEl.textContent = String(turns); + const [a, b] = open; + if (a.dataset.symbol === b.dataset.symbol) { + a.classList.add("is-matched"); + b.classList.add("is-matched"); + open = []; + matches += 1; + matchesEl.textContent = String(matches); + messageEl.textContent = matches === symbols.length ? `Cabinet solved in ${turns} turns.` : "A drawer clicks open."; + } else { + messageEl.textContent = "No match. The cabinet quietly re-files them."; + setTimeout(() => { + a.classList.remove("is-open"); + b.classList.remove("is-open"); + a.textContent = "?"; + b.textContent = "?"; + a.setAttribute("aria-label", "Hidden card"); + b.setAttribute("aria-label", "Hidden card"); + open = []; + }, 650); + } + } + + $("[data-memory-reset]", root).addEventListener("click", render); + $("[data-memory-peek]", root).addEventListener("click", () => { + const hidden = $$(".memory-card:not(.is-open):not(.is-matched)", root); + hidden.forEach((card) => { + card.textContent = card.dataset.symbol; + card.classList.add("is-peeking"); + }); + messageEl.textContent = "A very brief lapse in scholarly discipline."; + setTimeout(() => { + hidden.forEach((card) => { + if (!card.classList.contains("is-open") && !card.classList.contains("is-matched")) card.textContent = "?"; + card.classList.remove("is-peeking"); + }); + }, 900); + }); + render(); + } + + function constellation(root) { + const canvas = $("[data-star-canvas]", root); + const ctx = canvas.getContext("2d"); + const linesEl = $("[data-star-lines]", root); + const nameEl = document.createElement("strong"); + const stars = Array.from({ length: 18 }, () => ({ x: 50 + Math.random() * 800, y: 45 + Math.random() * 430 })); + const lines = []; + let selected = null; + nameEl.className = "play-live-note"; + linesEl.closest(".play-scorebar").appendChild(nameEl); + + function draw() { + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = "#18130f"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.strokeStyle = "rgba(219, 184, 104, 0.65)"; + ctx.lineWidth = 2; + lines.forEach(([a, b]) => { + ctx.beginPath(); + ctx.moveTo(stars[a].x, stars[a].y); + ctx.lineTo(stars[b].x, stars[b].y); + ctx.stroke(); + }); + stars.forEach((star, index) => { + ctx.beginPath(); + ctx.fillStyle = index === selected ? "#f6d889" : "#fff8e8"; + ctx.arc(star.x, star.y, index === selected ? 7 : 4, 0, Math.PI * 2); + ctx.fill(); + }); + linesEl.textContent = String(lines.length); + if (lines.length >= 3) nameEl.textContent = `Named: ${pick(["The Patient Spoon", "The South Window", "The Tired Comet", "The Fifth Errand"])}`; + } + + canvas.addEventListener("click", (event) => { + const rect = canvas.getBoundingClientRect(); + const x = ((event.clientX - rect.left) / rect.width) * canvas.width; + const y = ((event.clientY - rect.top) / rect.height) * canvas.height; + const hit = stars.findIndex((star) => Math.hypot(star.x - x, star.y - y) < 22); + if (hit < 0) return; + if (selected === null) selected = hit; + else if (selected !== hit) { + lines.push([selected, hit]); + selected = hit; + } + draw(); + }); + $("[data-star-reset]", root).addEventListener("click", () => { + lines.length = 0; + selected = null; + nameEl.textContent = ""; + draw(); + }); + draw(); + } + + function poem(root) { + const output = $("[data-poem-output]", root); + const a = ["In the margin", "By the kettle", "Under the desk lamp", "Between two errands", "After the house quiets"]; + const b = ["a careful thought", "an old joke", "a stubborn question", "a useful mistake", "a bright scrap"]; + const c = ["learns to wait.", "asks for a second reading.", "finds its proper shelf.", "becomes tomorrow's note.", "keeps the page warm."]; + let count = 0; + function make() { + count += 1; + output.innerHTML = `${pick(a)}
    ${pick(b)}
    ${pick(c)}`; + output.dataset.stamp = count % 5 === 0 ? "approved by the margin" : ""; + } + $("[data-poem-generate]", root).addEventListener("click", make); + make(); + } + + function bookshelf(root) { + const titles = ["Algebra at Breakfast", "Cabinet of Weather", "Domestic Orbits", "Evening Margins", "Household Engines", "Zettels and Tea"]; + const shelf = $("[data-bookshelf]", root); + const status = $("[data-bookshelf-status]", root); + let sortedOnce = false; + setupSortable(shelf, render, check); + $("[data-bookshelf-shuffle]", root).addEventListener("click", () => render(shuffle(titles))); + render(shuffle(titles)); + + function render(items) { + shelf.innerHTML = ""; + items.forEach((title) => { + const book = document.createElement("div"); + book.className = "book-spine"; + book.draggable = true; + book.dataset.value = title; + book.textContent = title; + shelf.appendChild(book); + }); + check(); + } + function check() { + const current = $$(".book-spine", shelf).map((book) => book.dataset.value); + const sorted = current.join("|") === titles.join("|"); + status.textContent = sorted ? "Shelf sorted. A secret pamphlet slides out." : "Unsorted"; + if (sorted && !sortedOnce) { + sortedOnce = true; + const pamphlet = document.createElement("div"); + pamphlet.className = "booklet"; + pamphlet.textContent = "Pamphlet: On the Correct Order of Small Things"; + shelf.appendChild(pamphlet); + } + } + } + + function recipe(root) { + const wheel = $("[data-recipe-spin]", root); + const result = $("[data-recipe-result]", root); + const groups = [ + ["Rice", "Flatbread", "Roast potatoes", "Noodles"], + ["Lemon chicken", "Spiced lentils", "Tomato eggs", "Pepper stew"], + ["Cucumber salad", "Mint yoghurt", "Pickled onions", "Charred greens"], + ["Serve with stories", "Eat outside", "Use the blue plates", "Make extra tea"] + ]; + let spin = 0; + let feast = 0; + wheel.addEventListener("click", () => { + spin += 540 + Math.floor(Math.random() * 540); + feast += 1; + wheel.style.transform = `rotate(${spin}deg)`; + result.innerHTML = groups.map((group) => `
  • ${pick(group)}
  • `).join("") + (feast % 4 === 0 ? "
  • Bonus: someone gets the last crispy bit.
  • " : ""); + }); + wheel.click(); + } + + function timeline(root) { + const items = [ + { year: "2022", text: "The personal web habit begins." }, + { year: "2025", text: "Org publishing becomes the main site engine." }, + { year: "2025", text: "Weekly reviews and career notes grow into a library." }, + { year: "2026", text: "Dashboards, services, and authoring tools join the site." }, + { year: "2026", text: "The play wing opens." } + ]; + const list = $("[data-timeline-list]", root); + const status = $("[data-timeline-status]", root); + const paradox = document.createElement("button"); + paradox.type = "button"; + paradox.textContent = "Paradox"; + $("[data-timeline-shuffle]", root).insertAdjacentElement("afterend", paradox); + setupSortable(list, render, check); + $("[data-timeline-shuffle]", root).addEventListener("click", () => render(shuffle(items))); + paradox.addEventListener("click", () => render([...items].reverse())); + render(shuffle(items)); + + function render(source) { + list.innerHTML = ""; + source.forEach((item, index) => { + const card = document.createElement("div"); + card.className = "timeline-card"; + card.draggable = true; + card.dataset.value = String(items.indexOf(item)); + card.innerHTML = `${item.year}${item.text}`; + list.appendChild(card); + }); + check(); + } + function check() { + const current = $$(".timeline-card", list).map((card) => Number(card.dataset.value)); + status.textContent = current.every((value, index) => value === index) ? "Timeline restored" : "Arrange the cards"; + } + } + + function ink(root) { + const canvas = $("[data-ink-canvas]", root); + const ctx = canvas.getContext("2d"); + const drops = []; + let moon = false; + function addDrop(x, y, heavy) { + drops.push({ x, y, r: heavy ? 18 : 8, life: heavy ? 1.8 : 1, hue: 28 + Math.random() * 35 }); + } + function pointer(event, heavy) { + const rect = canvas.getBoundingClientRect(); + addDrop(((event.clientX - rect.left) / rect.width) * canvas.width, ((event.clientY - rect.top) / rect.height) * canvas.height, heavy); + } + canvas.addEventListener("pointermove", (event) => pointer(event, false)); + canvas.addEventListener("click", (event) => pointer(event, true)); + canvas.addEventListener("dblclick", () => { + moon = !moon; + }); + function frame() { + ctx.fillStyle = "rgba(24, 19, 15, 0.16)"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + if (moon) { + ctx.beginPath(); + ctx.fillStyle = "rgba(246, 216, 137, 0.72)"; + ctx.arc(760, 88, 34, 0, Math.PI * 2); + ctx.fill(); + } + drops.forEach((drop) => { + drop.r += 0.7; + drop.life -= 0.012; + ctx.beginPath(); + ctx.strokeStyle = `hsla(${drop.hue}, 65%, 68%, ${Math.max(drop.life, 0)})`; + ctx.lineWidth = 2; + ctx.arc(drop.x, drop.y, drop.r, 0, Math.PI * 2); + ctx.stroke(); + }); + for (let i = drops.length - 1; i >= 0; i -= 1) if (drops[i].life <= 0) drops.splice(i, 1); + requestAnimationFrame(frame); + } + frame(); + } + + function terminal(root) { + const log = $("[data-terminal-log]", root); + const form = $("[data-terminal-form]", root); + const input = $("[data-terminal-input]", root); + let kindness = 0; + const responses = { + help: "Commands: help, look, map, open drawer, read note, brew tea, hum, knock, save, inventory, clear", + look: "A narrow archive room. A lamp hums. A drawer is labelled MAYBE IMPORTANT.", + map: "You are between the reading desk, the family shelf, and the door back to Play.", + "open drawer": "Inside: a brass key, a receipt, and a note folded twice.", + "read note": "The note says: keep the site useful, but leave a few doors ajar.", + "brew tea": "The room smells briefly of cardamom. Nothing else changes, which is enough.", + hum: "You hum four careful notes. Something behind the wall hums five back.", + knock: "Knock. Knock. ... A polite pause. Knock.", + save: "You save your place in the archive. The archive saves its place in you.", + inventory: "You are carrying: a brass key, a warm cup, and one unreasonable hope." + }; + function write(text) { + log.textContent += `${text}\n`; + log.scrollTop = log.scrollHeight; + } + form.addEventListener("submit", (event) => { + event.preventDefault(); + const cmd = input.value.trim().toLowerCase(); + if (!cmd) return; + input.value = ""; + if (cmd === "clear") { + log.textContent = ""; + return; + } + write(`> ${cmd}`); + if (cmd === "pet book") { + kindness += 1; + write(kindness > 2 ? "The book follows you for exactly three pages." : "The book accepts this with suspicious dignity."); + } else { + write(responses[cmd] || "The archive declines to understand that command."); + } + }); + write("Archive terminal ready. Type help. The cursor is listening."); + input.focus(); + } + + function study(root) { + const time = $("[data-study-time]", root); + const scene = $("[data-study-scene]", root); + let total = 300; + let left = total; + let timer = null; + const note = document.createElement("div"); + note.className = "play-live-note"; + note.textContent = "The lamp is cold."; + time.insertAdjacentElement("afterend", note); + function draw() { + const done = 1 - left / total; + scene.style.setProperty("--lamp", String(0.18 + done * 0.72)); + scene.style.setProperty("--glow", `${done * 70}px`); + const m = String(Math.floor(left / 60)).padStart(2, "0"); + const s = String(left % 60).padStart(2, "0"); + time.textContent = `${m}:${s}`; + if (left === 0) note.textContent = "Focus complete. The desk looks proud."; + else if (done > 0.66) note.textContent = "The page has warmed through."; + else if (done > 0.33) note.textContent = "The lamp has settled into its work."; + } + function start() { + if (timer) return; + timer = setInterval(() => { + left = Math.max(0, left - 1); + draw(); + if (left === 0) pause(); + }, 1000); + } + function pause() { + clearInterval(timer); + timer = null; + } + $("[data-study-start]", root).addEventListener("click", start); + $("[data-study-pause]", root).addEventListener("click", pause); + $("[data-study-reset]", root).addEventListener("click", () => { + pause(); + left = total; + draw(); + }); + draw(); + } + + function sigil(root) { + const canvas = $("[data-sigil-canvas]", root); + const ctx = canvas.getContext("2d"); + const initials = $("[data-sigil-initials]", root); + const motto = $("[data-sigil-motto]", root); + let wax = "#9c6b2f"; + const waxButton = document.createElement("button"); + waxButton.type = "button"; + waxButton.textContent = "New wax"; + $("[data-sigil-form]", root).appendChild(waxButton); + function draw() { + const text = (initials.value || "ZXH").toUpperCase(); + const phrase = motto.value || "Learn, make, remember"; + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = "#fbf7ec"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.translate(260, 260); + ctx.strokeStyle = wax; + ctx.lineWidth = 10; + ctx.beginPath(); + ctx.arc(0, 0, 190, 0, Math.PI * 2); + ctx.stroke(); + ctx.lineWidth = 2; + for (let i = 0; i < 12; i += 1) { + ctx.rotate(Math.PI / 6); + ctx.beginPath(); + ctx.moveTo(0, -150); + ctx.lineTo(0, -185); + ctx.stroke(); + } + ctx.rotate(-Math.PI * 2); + ctx.fillStyle = "#2a2118"; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.font = "900 94px Georgia, serif"; + ctx.fillText(text.slice(0, 4), 0, -10); + ctx.font = "700 22px Georgia, serif"; + ctx.fillText(phrase.slice(0, 34), 0, 88); + ctx.setTransform(1, 0, 0, 1, 0, 0); + } + waxButton.addEventListener("click", () => { + wax = pick(["#9c6b2f", "#8a3f3f", "#486b57", "#3e5f8a", "#5f4b8b"]); + draw(); + }); + $("[data-sigil-form]", root).addEventListener("submit", (event) => { + event.preventDefault(); + draw(); + }); + initials.addEventListener("input", draw); + motto.addEventListener("input", draw); + draw(); + } + + function rpg(root) { + if (window.AshBelowLakeRpg) return window.AshBelowLakeRpg(root); + const canvas = $("[data-rpg-canvas]", root); + const ctx = canvas.getContext("2d"); + const els = { + speaker: $("[data-rpg-speaker]", root), + line: $("[data-rpg-line]", root), + room: $("[data-rpg-room]", root), + route: $("[data-rpg-route]", root), + hearts: $("[data-rpg-hearts]", root), + quests: $("[data-rpg-quests]", root), + inventory: $("[data-rpg-inventory]", root), + status: $("[data-rpg-status]", root) + }; + const tile = 32; + const saveSlot = "hollow-archive"; + const fallbackKey = "play:rpg:hollow-archive"; + const items = { + lamp: { label: "Desk Lamp", room: "entrance", x: 10, y: 8, color: "#f2c94c" }, + page: { label: "Loose Page", room: "stacks", x: 18, y: 5, color: "#f7efe0" }, + key: { label: "Basement Key", room: "garden", x: 4, y: 11, color: "#d59b45" } + }; + const npcs = { + archivist: { name: "Archivist", room: "entrance", x: 6, y: 6, color: "#b98bff" }, + shade: { name: "Shy Shade", room: "stacks", x: 17, y: 9, color: "#6ed0d4" }, + gate: { name: "Iron Door", room: "garden", x: 19, y: 10, color: "#8a8f98" } + }; + const rooms = { + entrance: { + name: "Entrance", + floor: "#353029", + exits: [{ x: 22, y: 7, to: "stacks", px: 1, py: 7 }], + walls: rects([[0, 0, 24, 1], [0, 15, 24, 1], [0, 0, 1, 16], [23, 0, 1, 6], [23, 9, 1, 7], [8, 3, 1, 8], [14, 7, 5, 1]]) + }, + stacks: { + name: "Stacks", + floor: "#242d35", + exits: [{ x: 0, y: 7, to: "entrance", px: 22, py: 7 }, { x: 23, y: 12, to: "garden", px: 1, py: 12 }], + walls: rects([[0, 0, 24, 1], [0, 15, 24, 1], [0, 0, 1, 6], [0, 9, 1, 7], [23, 0, 1, 11], [23, 14, 1, 2], [4, 3, 2, 10], [10, 2, 2, 11], [16, 3, 2, 5]]) + }, + garden: { + name: "Moon Garden", + floor: "#21362e", + exits: [{ x: 0, y: 12, to: "stacks", px: 22, py: 12 }], + walls: rects([[0, 0, 24, 1], [0, 15, 24, 1], [0, 0, 1, 11], [0, 14, 1, 2], [23, 0, 1, 16], [7, 4, 10, 1], [7, 10, 1, 4], [13, 10, 1, 4]]) + } + }; + let state = freshState(); + let running = false; + + function freshState() { + return { + room: "entrance", + player: { x: 3, y: 7, facing: "down" }, + inventory: [], + flags: {}, + route: "Undecided", + hearts: 3, + ending: null, + message: { speaker: "Archivist", line: "The archive waits. Find the lamp, help the shade, then decide what to do with the locked door." } + }; + } + + function rects(sources) { + const set = new Set(); + sources.forEach(([x, y, w, h]) => { + for (let yy = y; yy < y + h; yy += 1) for (let xx = x; xx < x + w; xx += 1) set.add(`${xx},${yy}`); + }); + return set; + } + + function draw() { + const room = rooms[state.room]; + ctx.fillStyle = "#14110e"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + for (let y = 0; y < 16; y += 1) { + for (let x = 0; x < 24; x += 1) { + ctx.fillStyle = room.walls.has(`${x},${y}`) ? "#181716" : room.floor; + ctx.fillRect(x * tile, y * tile, tile, tile); + ctx.strokeStyle = "rgba(255,255,255,0.035)"; + ctx.strokeRect(x * tile, y * tile, tile, tile); + } + } + room.exits.forEach((exit) => drawGlyph(exit.x, exit.y, "#c48a41", "door")); + Object.entries(items).forEach(([id, item]) => { + if (item.room === state.room && !state.inventory.includes(id)) drawGlyph(item.x, item.y, item.color, "item"); + }); + Object.values(npcs).forEach((npc) => { + if (npc.room === state.room) drawGlyph(npc.x, npc.y, npc.color, npc.name === "Iron Door" ? "doorNpc" : "npc"); + }); + drawPlayer(); + renderHud(); + requestAnimationFrame(draw); + } + + function drawGlyph(x, y, color, kind) { + const px = x * tile; + const py = y * tile; + ctx.fillStyle = color; + if (kind === "item") { + ctx.fillRect(px + 10, py + 10, 12, 12); + ctx.fillStyle = "rgba(255,255,255,0.45)"; + ctx.fillRect(px + 13, py + 7, 6, 6); + } else if (kind === "door" || kind === "doorNpc") { + ctx.fillRect(px + 7, py + 4, 18, 25); + ctx.fillStyle = "#211812"; + ctx.fillRect(px + 20, py + 16, 3, 3); + } else { + ctx.beginPath(); + ctx.arc(px + 16, py + 12, 9, 0, Math.PI * 2); + ctx.fill(); + ctx.fillRect(px + 8, py + 20, 16, 8); + } + } + + function drawPlayer() { + const px = state.player.x * tile; + const py = state.player.y * tile; + ctx.fillStyle = "#f35f5f"; + ctx.beginPath(); + ctx.moveTo(px + 16, py + 7); + ctx.bezierCurveTo(px + 2, py + 2, px + 1, py + 22, px + 16, py + 28); + ctx.bezierCurveTo(px + 31, py + 22, px + 30, py + 2, px + 16, py + 7); + ctx.fill(); + ctx.fillStyle = "#fff8e8"; + ctx.fillRect(px + 11, py + 13, 4, 4); + ctx.fillRect(px + 18, py + 13, 4, 4); + } + + function renderHud() { + els.speaker.textContent = state.message.speaker; + els.line.textContent = state.ending ? endingLine() : state.message.line; + els.room.textContent = rooms[state.room].name; + els.route.textContent = state.route; + els.hearts.textContent = String(state.hearts); + els.inventory.innerHTML = state.inventory.length + ? state.inventory.map((id) => `
  • ${items[id].label}
  • `).join("") + : "
  • Empty
  • "; + const questRows = [ + ["Find a light", state.inventory.includes("lamp")], + ["Return the loose page to the shade", state.flags.shadeHelped], + ["Open, force, or leave the iron door", Boolean(state.ending)] + ]; + els.quests.innerHTML = questRows.map(([text, done]) => `
  • ${done ? "Done: " : ""}${text}
  • `).join(""); + } + + function move(dx, dy, facing) { + if (!running || state.ending) return; + state.player.facing = facing; + const nx = state.player.x + dx; + const ny = state.player.y + dy; + const room = rooms[state.room]; + const exit = room.exits.find((candidate) => candidate.x === nx && candidate.y === ny); + if (exit) { + state.room = exit.to; + state.player.x = exit.px; + state.player.y = exit.py; + say("Narrator", `You enter ${rooms[state.room].name}.`); + autosave(); + return; + } + if (nx < 0 || ny < 0 || nx > 23 || ny > 15 || room.walls.has(`${nx},${ny}`) || npcAt(nx, ny)) return; + state.player.x = nx; + state.player.y = ny; + const item = itemAt(nx, ny); + if (item) take(item); + } + + function act() { + if (!running) return start(); + if (state.ending) return; + const front = inFront(); + const npc = npcAt(front.x, front.y); + if (npc) talk(npc); + else { + const here = itemAt(state.player.x, state.player.y); + if (here) take(here); + else say("Narrator", "Dust moves in the light. Nothing asks to be changed here."); + } + autosave(); + } + + function inFront() { + const delta = { up: [0, -1], down: [0, 1], left: [-1, 0], right: [1, 0] }[state.player.facing] || [0, 1]; + return { x: state.player.x + delta[0], y: state.player.y + delta[1] }; + } + + function itemAt(x, y) { + return Object.keys(items).find((id) => { + const item = items[id]; + return item.room === state.room && item.x === x && item.y === y && !state.inventory.includes(id); + }); + } + + function npcAt(x, y) { + return Object.keys(npcs).find((id) => { + const npc = npcs[id]; + return npc.room === state.room && npc.x === x && npc.y === y; + }); + } + + function take(id) { + state.inventory.push(id); + if (id === "lamp") state.route = "Gentle"; + if (id === "key" && !state.flags.shadeHelped) state.route = "Power"; + say("Found", `${items[id].label} joined your inventory.`); + } + + function talk(id) { + if (id === "archivist") { + if (!state.inventory.includes("lamp")) say("Archivist", "Take the lamp from the lower desk. The stacks dislike being crossed in the dark."); + else if (!state.flags.shadeHelped) say("Archivist", "A loose page has gone missing. The quiet reader in the stacks knows where it belongs."); + else say("Archivist", "You have been kind to a forgotten page. The garden door will remember that."); + } + if (id === "shade") { + if (!state.inventory.includes("page")) say("Shy Shade", "I lost the page with my name on it. It fell somewhere nearby."); + else { + state.flags.shadeHelped = true; + state.inventory = state.inventory.filter((item) => item !== "page"); + state.route = "Mercy"; + say("Shy Shade", "You returned my page instead of keeping it. Take the honest route through the garden."); + } + } + if (id === "gate") { + if (state.flags.shadeHelped) end("mercy"); + else if (state.inventory.includes("key")) end("power"); + else end("quiet"); + } + } + + function end(kind) { + state.ending = kind; + state.route = kind === "mercy" ? "Mercy" : kind === "power" ? "Power" : "Quiet"; + say("Ending", endingLine()); + save(); + } + + function endingLine() { + if (state.ending === "mercy") return "Mercy ending: the iron door opens without a sound, and every returned page remembers your name."; + if (state.ending === "power") return "Power ending: the key turns, but the archive grows colder around the missing page."; + if (state.ending === "quiet") return "Quiet ending: you leave the locked door alone. Some mysteries stay intact."; + return state.message.line; + } + + function say(speaker, line) { + state.message = { speaker, line }; + } + + function start() { + running = true; + say("Archivist", "Walk the archive. Speak gently, or take what you need. The route will notice."); + els.status.textContent = "Started. Progress autosaves after room changes and actions."; + } + + async function save() { + localStorage.setItem(fallbackKey, JSON.stringify(state)); + try { + const response = await fetch(`/api/play/rpg/save/${saveSlot}`, { + method: "PUT", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ payload: state }) + }); + if (!response.ok) throw new Error(`Save failed: ${response.status}`); + els.status.textContent = "Saved to backend."; + } catch (_error) { + els.status.textContent = "Saved locally. Backend save API was not reachable."; + } + } + + async function load() { + try { + const response = await fetch(`/api/play/rpg/save/${saveSlot}`); + if (response.ok) { + const data = await response.json(); + state = normalizeState(data.payload); + running = true; + els.status.textContent = "Loaded from backend."; + return; + } + } catch (_error) { + /* Fall through to local save. */ + } + const local = localStorage.getItem(fallbackKey); + if (local) { + state = normalizeState(JSON.parse(local)); + running = true; + els.status.textContent = "Loaded local save."; + } else { + els.status.textContent = "No save found."; + } + } + + function normalizeState(candidate) { + return Object.assign(freshState(), candidate || {}, { + player: Object.assign(freshState().player, (candidate && candidate.player) || {}), + inventory: Array.isArray(candidate && candidate.inventory) ? candidate.inventory.filter((id) => items[id]) : [], + flags: Object.assign({}, (candidate && candidate.flags) || {}), + message: Object.assign(freshState().message, (candidate && candidate.message) || {}) + }); + } + + function autosave() { + save(); + } + + $("[data-rpg-start]", root).addEventListener("click", start); + $("[data-rpg-save]", root).addEventListener("click", save); + $("[data-rpg-load]", root).addEventListener("click", load); + $("[data-rpg-reset]", root).addEventListener("click", async () => { + state = freshState(); + running = false; + localStorage.removeItem(fallbackKey); + try { + await fetch(`/api/play/rpg/save/${saveSlot}`, { method: "DELETE" }); + els.status.textContent = "Reset and cleared backend save."; + } catch (_error) { + els.status.textContent = "Reset locally. Backend save API was not reachable."; + } + }); + $("[data-rpg-act]", root).addEventListener("click", act); + $$("[data-rpg-move]", root).forEach((button) => { + const moves = { up: [0, -1, "up"], down: [0, 1, "down"], left: [-1, 0, "left"], right: [1, 0, "right"] }; + button.addEventListener("click", () => move(...moves[button.dataset.rpgMove])); + }); + window.addEventListener("keydown", (event) => { + if (!root.isConnected) return; + const tag = event.target.tagName; + if (tag === "INPUT" || tag === "TEXTAREA") return; + const keys = { + ArrowUp: [0, -1, "up"], w: [0, -1, "up"], + ArrowDown: [0, 1, "down"], s: [0, 1, "down"], + ArrowLeft: [-1, 0, "left"], a: [-1, 0, "left"], + ArrowRight: [1, 0, "right"], d: [1, 0, "right"] + }; + if (keys[event.key]) { + event.preventDefault(); + move(...keys[event.key]); + } + if (event.key === " " || event.key === "Enter") { + event.preventDefault(); + act(); + } + }); + draw(); + load(); + } + + function setupSortable(container, _render, after) { + let dragged = null; + container.addEventListener("dragstart", (event) => { + dragged = event.target.closest("[draggable='true']"); + if (dragged) event.dataTransfer.effectAllowed = "move"; + }); + container.addEventListener("dragover", (event) => { + event.preventDefault(); + const target = event.target.closest("[draggable='true']"); + if (!dragged || !target || target === dragged) return; + const rect = target.getBoundingClientRect(); + const before = event.clientY < rect.top + rect.height / 2 || event.clientX < rect.left + rect.width / 2; + container.insertBefore(dragged, before ? target : target.nextSibling); + after(); + }); + container.addEventListener("dragend", () => { + dragged = null; + after(); + }); + } + + function pick(items) { + return items[Math.floor(Math.random() * items.length)]; + } +})(); diff --git a/assets/scripts/pages/sitemap-interactive.js b/assets/scripts/pages/sitemap-interactive.js new file mode 100644 index 0000000..1909082 --- /dev/null +++ b/assets/scripts/pages/sitemap-interactive.js @@ -0,0 +1,398 @@ +/** + * sitemap-interactive.js + * Drop into /assets/scripts/ — no .org changes required. + * + * Handles two page structures generated by org-publish: + * 1. FLAT LIST — a top-level
      (e.g. Sitemap) + * 2. OUTLINE —
      with

      /

      headings and + * nested
        (e.g. "2025 List", "Blogs List") + * + * Activated on any page whose

        matches SITEMAP_PATTERNS. + */ + +(function () { + "use strict"; + + const SITEMAP_PATTERNS = ["sitemap", "list"]; + + function init() { + const titleEl = document.querySelector("h1.title"); + if (!titleEl) return; + const title = titleEl.textContent.trim().toLowerCase(); + if (!SITEMAP_PATTERNS.some((p) => title.includes(p))) return; + + const contentDiv = document.getElementById("content"); + if (!contentDiv) return; + + const hasOutline = !!contentDiv.querySelector(".outline-2, .outline-3"); + const topUl = !hasOutline && contentDiv.querySelector("ul.org-ul"); + if (!hasOutline && !topUl) return; + + // ── Parsers ─────────────────────────────────────────────────────────── + + function parseLi(li) { + const link = li.querySelector(":scope > a"); + const childUl = li.querySelector(":scope > ul"); + const textNode = Array.from(li.childNodes).find( + (n) => n.nodeType === Node.TEXT_NODE && n.textContent.trim() + ); + const tags = Array.from(li.querySelectorAll(".post-tag")).map((t) => + t.textContent.trim() + ); + const dateEl = li.querySelector(".post-date"); + const date = dateEl ? dateEl.textContent.trim() : null; + + return { + label: link + ? link.textContent.trim() + : textNode + ? textNode.textContent.trim() + : li.childNodes[0]?.textContent?.trim() || "", + href: link ? link.getAttribute("href") : null, + tags, + date, + children: childUl ? parseUl(childUl) : [], + }; + } + + function parseUl(ul) { + return Array.from(ul.children) + .filter((li) => li.tagName === "LI") + .map(parseLi); + } + + function parseFlatList() { + return { tree: parseUl(topUl), replaceTarget: topUl, wrapOutline: false }; + } + + function parseOutline() { + const tree = []; + const outline2s = contentDiv.querySelectorAll(":scope .outline-2"); + + if (outline2s.length === 0) { + // Only outline-3 directly (flat month grouping without year wrapper) + contentDiv.querySelectorAll(":scope .outline-3").forEach((section) => { + const heading = section.querySelector("h3"); + const ul = section.querySelector("ul.org-ul"); + tree.push({ + label: heading ? heading.textContent.trim() : "Section", + href: null, tags: [], date: null, + children: ul ? parseUl(ul) : [], + }); + }); + } else { + outline2s.forEach((o2) => { + const h2 = o2.querySelector(":scope > div > h2, :scope > h2"); + const groupNode = { + label: h2 ? h2.textContent.trim() : "Group", + href: null, tags: [], date: null, + children: [], + }; + const outline3s = o2.querySelectorAll(".outline-3"); + if (outline3s.length > 0) { + outline3s.forEach((o3) => { + const h3 = o3.querySelector(":scope > div > h3, :scope > h3"); + const ul = o3.querySelector("ul.org-ul"); + groupNode.children.push({ + label: h3 ? h3.textContent.trim() : "Month", + href: null, tags: [], date: null, + children: ul ? parseUl(ul) : [], + }); + }); + } else { + const ul = o2.querySelector("ul.org-ul"); + if (ul) groupNode.children = parseUl(ul); + } + tree.push(groupNode); + }); + } + + return { tree, replaceTarget: null, wrapOutline: true }; + } + + const parsed = hasOutline ? parseOutline() : parseFlatList(); + const { tree } = parsed; + if (!tree.length) return; + + // ── Styles ──────────────────────────────────────────────────────────── + if (!document.getElementById("sm-styles")) { + const style = document.createElement("style"); + style.id = "sm-styles"; + style.textContent = ` + .sitemap-interactive { font-family: inherit; margin: 1.5rem 0; } + .sm-toolbar { + display: flex; align-items: center; gap: .6rem; + margin-bottom: 1rem; flex-wrap: wrap; + } + .sm-search { + flex: 1; min-width: 160px; padding: .35rem .7rem; + border: 1px solid var(--border, #444); border-radius: 4px; + background: var(--bg, transparent); color: inherit; font-size: .9rem; + } + .sm-search:focus { outline: 2px solid var(--accent, #7aa2f7); outline-offset: 1px; } + .sm-expand-all, .sm-collapse-all { + padding: .3rem .65rem; border: 1px solid var(--border, #444); + border-radius: 4px; background: transparent; color: inherit; + font-size: .8rem; cursor: pointer; opacity: .75; transition: opacity .15s; + } + .sm-expand-all:hover, .sm-collapse-all:hover { opacity: 1; } + + .sm-tree ul { list-style: none; margin: 0; padding: 0 0 0 1.4rem; } + .sm-tree > ul { padding-left: 0; } + .sm-tree li { margin: 0; } + .sm-node { + display: flex; align-items: center; gap: .4rem; + padding: .2rem .3rem; border-radius: 4px; + line-height: 1.5; transition: background .1s; flex-wrap: wrap; + } + .sm-node:hover { background: var(--hover-bg, rgba(122,162,247,.08)); } + .sm-node.sm-hidden { display: none; } + + .sm-toggle { + width: 1.2rem; height: 1.2rem; display: inline-flex; + align-items: center; justify-content: center; + cursor: pointer; border: none; background: none; color: inherit; + font-size: .7rem; opacity: .6; + transition: transform .18s, opacity .15s; + flex-shrink: 0; padding: 0; border-radius: 3px; + } + .sm-toggle:hover { opacity: 1; background: var(--hover-bg, rgba(122,162,247,.15)); } + .sm-toggle.open { transform: rotate(90deg); } + .sm-toggle-placeholder { width: 1.2rem; flex-shrink: 0; } + + .sm-icon { font-size: .8rem; opacity: .5; flex-shrink: 0; } + + .sm-label a { color: var(--link, inherit); text-decoration: none; font-size: .9rem; } + .sm-label a:hover { text-decoration: underline; } + .sm-label span { font-size: .9rem; font-weight: 600; opacity: .85; } + + .sm-badge { + font-size: .65rem; padding: .05rem .35rem; border-radius: 8px; + background: var(--badge-bg, rgba(122,162,247,.15)); + color: var(--badge-fg, #7aa2f7); opacity: .8; + } + .sm-date { font-size: .75rem; opacity: .45; margin-left: .2rem; } + .sm-tags { display: inline-flex; gap: .25rem; margin-left: .2rem; } + .sm-tag { + font-size: .65rem; padding: .05rem .3rem; border-radius: 8px; + background: var(--tag-bg, rgba(160,200,120,.15)); + color: var(--tag-fg, #9ece6a); opacity: .85; + } + + .sm-children { overflow: hidden; } + .sm-children.collapsed { display: none; } + .sm-label mark { + background: var(--mark-bg, rgba(255,200,50,.3)); + color: inherit; border-radius: 2px; padding: 0 1px; + } + .sm-count { font-size: .78rem; opacity: .45; margin-top: .8rem; } + `; + document.head.appendChild(style); + } + + // ── Widget scaffold ─────────────────────────────────────────────────── + const wrapper = document.createElement("div"); + wrapper.className = "sitemap-interactive"; + wrapper.innerHTML = ` +
        + + + +
        +
        +

        + `; + + const treeEl = wrapper.querySelector(".sm-tree"); + const searchEl = wrapper.querySelector(".sm-search"); + const countEl = wrapper.querySelector(".sm-count"); + + // ── Tree builder ────────────────────────────────────────────────────── + function countLeaves(nodes) { + let n = 0; + for (const node of nodes) { + if (!node.children || !node.children.length) n++; + else n += countLeaves(node.children); + } + return n; + } + + function buildTree(nodes) { + const ul = document.createElement("ul"); + for (const node of nodes) { + const li = document.createElement("li"); + const row = document.createElement("div"); + row.className = "sm-node"; + const hasChildren = node.children && node.children.length > 0; + + let childrenEl; + if (hasChildren) { + const toggle = document.createElement("button"); + toggle.className = "sm-toggle open"; + toggle.innerHTML = "▶"; + toggle.setAttribute("aria-expanded", "true"); + childrenEl = document.createElement("div"); + childrenEl.className = "sm-children"; + childrenEl.appendChild(buildTree(node.children)); + toggle.addEventListener("click", () => { + childrenEl.classList.toggle("collapsed"); + toggle.classList.toggle("open"); + toggle.setAttribute("aria-expanded", + String(!childrenEl.classList.contains("collapsed"))); + }); + row.appendChild(toggle); + } else { + const ph = document.createElement("span"); + ph.className = "sm-toggle-placeholder"; + row.appendChild(ph); + } + + const icon = document.createElement("span"); + icon.className = "sm-icon"; + icon.textContent = hasChildren ? "📂" : "📄"; + row.appendChild(icon); + + const labelEl = document.createElement("span"); + labelEl.className = "sm-label"; + if (node.href) { + const a = document.createElement("a"); + a.href = node.href; + a.textContent = node.label; + labelEl.appendChild(a); + } else { + const s = document.createElement("span"); + s.textContent = node.label; + labelEl.appendChild(s); + } + row.appendChild(labelEl); + + if (hasChildren) { + const badge = document.createElement("span"); + badge.className = "sm-badge"; + badge.textContent = countLeaves(node.children); + row.appendChild(badge); + } + + if (node.date) { + const dateSpan = document.createElement("span"); + dateSpan.className = "sm-date"; + dateSpan.textContent = node.date; + row.appendChild(dateSpan); + } + + if (node.tags && node.tags.length) { + const tagsEl = document.createElement("span"); + tagsEl.className = "sm-tags"; + node.tags.forEach((t) => { + const tag = document.createElement("span"); + tag.className = "sm-tag"; + tag.textContent = t; + tagsEl.appendChild(tag); + }); + row.appendChild(tagsEl); + } + + li.appendChild(row); + if (hasChildren) li.appendChild(childrenEl); + ul.appendChild(li); + } + return ul; + } + + treeEl.appendChild(buildTree(tree)); + + // ── Search / filter ─────────────────────────────────────────────────── + function escapeRe(s) { + return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + + function filterTree(q) { + const query = q.trim().toLowerCase(); + const re = query ? new RegExp(escapeRe(query), "gi") : null; + let visible = 0; + + function walk(ul) { + let anyVisible = false; + for (const li of ul.children) { + const row = li.querySelector(":scope > .sm-node"); + const childrenDiv = li.querySelector(":scope > .sm-children"); + const labelEl = row.querySelector(".sm-label"); + const target = labelEl.querySelector("a") || labelEl.querySelector("span"); + const text = target.dataset.orig || target.textContent; + target.dataset.orig = text; + + let selfMatch = false; + if (!query) { + target.innerHTML = ""; + target.textContent = text; + selfMatch = true; + } else if (text.toLowerCase().includes(query)) { + target.innerHTML = text.replace(re, (m) => `${m}`); + selfMatch = true; + } else { + target.innerHTML = ""; + target.textContent = text; + } + + let childVisible = false; + if (childrenDiv) { + childVisible = walk(childrenDiv.querySelector("ul")); + if (query) { + childrenDiv.classList.toggle("collapsed", !childVisible && !selfMatch); + const toggle = row.querySelector(".sm-toggle"); + if (toggle) toggle.classList.toggle("open", childVisible || selfMatch); + } + } + + const show = !query || selfMatch || childVisible; + row.classList.toggle("sm-hidden", !show); + if (show) { + anyVisible = true; + if (!childrenDiv) visible++; + } + } + return anyVisible; + } + + walk(treeEl.querySelector("ul")); + countEl.textContent = query + ? `${visible} page${visible !== 1 ? "s" : ""} matching "${query}"` + : ""; + } + + searchEl.addEventListener("input", (e) => filterTree(e.target.value)); + + wrapper.querySelector(".sm-expand-all").addEventListener("click", () => { + treeEl.querySelectorAll(".sm-children").forEach((el) => el.classList.remove("collapsed")); + treeEl.querySelectorAll(".sm-toggle").forEach((el) => { + el.classList.add("open"); + el.setAttribute("aria-expanded", "true"); + }); + }); + wrapper.querySelector(".sm-collapse-all").addEventListener("click", () => { + treeEl.querySelectorAll(".sm-children").forEach((el) => el.classList.add("collapsed")); + treeEl.querySelectorAll(".sm-toggle").forEach((el) => { + el.classList.remove("open"); + el.setAttribute("aria-expanded", "false"); + }); + }); + + // ── Inject into page ────────────────────────────────────────────────── + if (parsed.wrapOutline) { + // Hide original outline divs (direct children of content only) + contentDiv.querySelectorAll(":scope > .outline-2, :scope > .outline-3") + .forEach((el) => (el.style.display = "none")); + // Insert after title + optional intro

        + const insertAfter = contentDiv.querySelector(":scope > p") || titleEl; + insertAfter.insertAdjacentElement("afterend", wrapper); + } else { + parsed.replaceTarget.replaceWith(wrapper); + } + } + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", init); + } else { + init(); + } +})(); diff --git a/assets/scripts/pages/wird-tracker.js b/assets/scripts/pages/wird-tracker.js new file mode 100644 index 0000000..6e22b7c --- /dev/null +++ b/assets/scripts/pages/wird-tracker.js @@ -0,0 +1,1787 @@ +/* ============================================================ + wird-tracker.js (full replacement) + ============================================================ */ + +(function () { + "use strict"; + + const API = "/api/wird"; + + // type: "count" | "juz" | "min" | "rating" | "nafl" | "khatm" + const DAILY_WIRD = { + durood: { label: "Durood", type: "count", unit: "count", target: 300 }, + istighfar: { label: "Istighfar", type: "count", unit: "count", target: 200 }, + quran: { label: "Qurʾān", type: "juz", unit: "juz", target: 2 }, + muraqabah: { label: "Murāqabah", type: "min", unit: "min", target: 10 }, + wuqoof_qalbi: { label: "Wuqūf Qalbī", type: "rating", unit: "", target: 3 }, + Allah: { label: "Allah's Name", type: "count", unit: "count", target: 500 }, + }; + + // Nafl prayers — stored in wird_entries, value=1 when done + const NAFL_WIRD = { + salatul_tawbah: { label: "Ṣalāt al-Tawbah", type: "nafl", unit: "", target: 1, rakats: 2, desc: "2 rakʿāt · repentance", icon: "🤲" }, + salatul_hajaat: { label: "Ṣalāt al-Ḥājah", type: "nafl", unit: "", target: 1, rakats: 2, desc: "2 rakʿāt · need & supplication", icon: "🌙" }, + tahajjud: { label: "Tahajjud", type: "nafl", unit: "", target: 1, rakats: 0, desc: "night vigil", icon: "⭐" }, + }; + + const WIRD_META = { + ...DAILY_WIRD, + ...NAFL_WIRD, + shaykh_meeting: { label: "Meeting w/ Shaykh", type: "meeting", unit: "meeting", target: 1 }, + khatm: { label: "Khatm", type: "khatm", unit: "", target: 1 }, + motalah: { label: "Mutālaʿah", type: "motalah", unit: "min", target: 30 }, + }; + + const RATING_LABELS = { + 1: "distracted", 2: "scattered", 3: "present", 4: "attentive", 5: "absorbed", + }; + + const KHATM_TYPES = { + tilawah: "Tilāwah", + hifz: "Ḥifẓ", + tadabbur: "Tadabbur", + }; + + const MEETING_CYCLE_DAYS = 21; + const HEATMAP_WEEKS = 52; + + const $ = (sel, ctx = document) => ctx.querySelector(sel); + const $$ = (sel, ctx = document) => [...ctx.querySelectorAll(sel)]; + const isoDate = (d = new Date()) => d.toISOString().slice(0, 10); + + function daysBetween(a, b) { + return Math.round((new Date(b) - new Date(a)) / 86400000); + } + function addDays(iso, n) { + const d = new Date(iso); d.setDate(d.getDate() + n); return isoDate(d); + } + function fmtDisplay(iso) { + return new Date(iso + "T00:00:00").toLocaleDateString("en-GB", { + day: "numeric", month: "short", year: "numeric", + }); + } + + function fmtValue(type, val) { + const meta = WIRD_META[type]; + if (!meta) return val; + if (meta.type === "rating") return val ? `${RATING_LABELS[val] || val} (${val}/5)` : "—"; + if (meta.type === "meeting") return val >= 1 ? "✓ attended" : "✗ missed"; + if (meta.type === "nafl") return val >= 1 ? "✓ prayed" : "—"; + if (meta.type === "khatm") return val >= 1 ? "✓ completed" : "—"; + return `${Number(val).toLocaleString()} ${meta.unit}`; + } + + function statusClass(type, val) { + const meta = WIRD_META[type]; + if (!meta || !val || val <= 0) return ""; + if (meta.type === "rating") { + if (val >= 4) return "over"; + if (val >= 3) return "done"; + return "miss"; + } + if (val >= meta.target * 1.1) return "over"; + if (val >= meta.target) return "done"; + return "miss"; + } + + // ── Mutālaʿah (Study) ───────────────────────────────────── + + const MOTALAH_API = "/api/wird/motalah"; + const CALIBRE_API = "/api/calibre/books"; // see controller below + const MOTALAH_TARGET = 30; // daily target in minutes + + let motalahEntries = []; + let calibreBooks = []; + + async function loadMotalah() { + try { + const [mRes, bRes] = await Promise.all([ + fetch(MOTALAH_API), + fetch(CALIBRE_API), + ]); + if (mRes.ok) motalahEntries = await mRes.json(); + if (bRes.ok) calibreBooks = await bRes.json(); + } catch (e) { + console.warn("Mutalaah load error:", e); + } + } + + function renderMotalah() { + const today = isoDate(); + const todayM = motalahEntries.filter(e => e.date === today); + const todayMins = todayM.reduce((s, e) => s + Number(e.durationMinutes), 0); + + // streak + let streak = 0; + const now = new Date(); + for (let i = 0; i < 365; i++) { + const d = new Date(now); d.setDate(d.getDate() - i); + const iso = isoDate(d); + const mins = motalahEntries.filter(e => e.date === iso) + .reduce((s, e) => s + Number(e.durationMinutes), 0); + if (mins >= MOTALAH_TARGET) streak++; + else if (i > 0) break; + } + + // month total + const monthStart = today.slice(0, 7); + const monthMins = motalahEntries + .filter(e => e.date.startsWith(monthStart)) + .reduce((s, e) => s + Number(e.durationMinutes), 0); + const monthHrs = (monthMins / 60).toFixed(1); + + // unique books touched (all time) + const allBooks = new Set( + motalahEntries.flatMap(e => e.bookIds || []) + ); + + $("#motalah-today-mins").textContent = todayMins || "0"; + $("#motalah-streak").textContent = streak; + $("#motalah-total-hrs").textContent = monthHrs; + $("#motalah-books-count").textContent = allBooks.size; + + // sessions list (20 most recent) + const wrap = $("#motalah-sessions-wrap"); + const sorted = [...motalahEntries].sort((a, b) => b.date.localeCompare(a.date)).slice(0, 20); + + if (sorted.length === 0) { + wrap.innerHTML = `

        No study sessions logged yet.

        `; + return; + } + + wrap.innerHTML = sorted.map(e => { + const bookNames = (e.bookIds || []) + .map(id => { + const b = calibreBooks.find(b => String(b.id) === String(id)); + return b ? `${b.title}` : ""; + }).join(""); + + const note = e.notes + ? ` — ${e.notes}` + : ""; + + return ` +
        + ${e.date} + ${e.durationMinutes} min + ${bookNames || ""}${note} +
        + `; + }).join(""); + } + + // Modal + const motalahModal = $("#motalah-modal"); + const motalahForm = $("#motalah-form"); + const motalahDateEl = $("#motalah-date"); + const motalahDurEl = $("#motalah-duration"); + const motalahBooksEl = $("#motalah-books"); + const motalahNotesEl = $("#motalah-notes"); + + // ── Book search UI ──────────────────────────────────────── + // selectedBookIds: Set of ids currently picked in the modal + let selectedBookIds = new Set(); + + const bookSearchInput = document.getElementById("motalah-book-search"); + const bookSearchResults = document.getElementById("book-search-results"); + const selectedChipsWrap = document.getElementById("selected-books-chips"); + + function bookById(id) { + return calibreBooks.find(b => String(b.id) === String(id)); + } + + function renderSelectedChips() { + selectedChipsWrap.innerHTML = [...selectedBookIds].map(id => { + const b = bookById(id); + const label = b ? b.title : id; + return ` + ${label} + + `; + }).join(""); + + // Sync hidden select so the existing submit handler still works + motalahBooksEl.innerHTML = [...selectedBookIds] + .map(id => ``).join(""); + } + + function renderBookResults(query) { + const q = query.trim().toLowerCase(); + const sorted = [...calibreBooks].sort((a, b) => a.title.localeCompare(b.title)); + const filtered = q + ? sorted.filter(b => + b.title.toLowerCase().includes(q) || + (b.authors || "").toLowerCase().includes(q) + ) + : sorted; + + if (filtered.length === 0) { + bookSearchResults.innerHTML = `
        No books found
        `; + } else { + bookSearchResults.innerHTML = filtered.slice(0, 40).map(b => { + const sel = selectedBookIds.has(String(b.id)); + return `
        +
        ${sel ? "✓" : ""}
        + ${b.title} + ${b.authors ? `${b.authors}` : ""} +
        `; + }).join(""); + } + bookSearchResults.classList.add("open"); + } + + if (bookSearchInput) { + bookSearchInput.addEventListener("input", () => { + if (calibreBooks.length === 0) return; + renderBookResults(bookSearchInput.value); + }); + + bookSearchInput.addEventListener("focus", () => { + if (calibreBooks.length === 0) return; + renderBookResults(bookSearchInput.value); + }); + + bookSearchResults.addEventListener("mousedown", e => { + const item = e.target.closest(".book-result-item"); + if (!item) return; + e.preventDefault(); // prevent input blur before we register click + const id = String(item.dataset.id); + if (selectedBookIds.has(id)) { + selectedBookIds.delete(id); + } else { + selectedBookIds.add(id); + } + renderSelectedChips(); + renderBookResults(bookSearchInput.value); + }); + } + + if (selectedChipsWrap) { + selectedChipsWrap.addEventListener("click", e => { + const btn = e.target.closest("button[data-id]"); + if (!btn) return; + selectedBookIds.delete(String(btn.dataset.id)); + renderSelectedChips(); + // Refresh dropdown if open + if (bookSearchResults.classList.contains("open")) { + renderBookResults(bookSearchInput.value); + } + }); + } + + // Close dropdown on outside click + document.addEventListener("click", e => { + if (!e.target.closest(".book-search-wrap")) { + bookSearchResults.classList.remove("open"); + } + }); + + function populateBookSelect() { + // no-op — book search handles population dynamically + } + + function openMotalahModal() { + motalahForm.reset(); + motalahDateEl.value = isoDate(); + selectedBookIds = new Set(); + bookSearchInput.value = ""; + bookSearchResults.classList.remove("open"); + bookSearchResults.innerHTML = ""; + renderSelectedChips(); + motalahModal.showModal(); + } + if (motalahForm) { + motalahForm.addEventListener("submit", async e => { + e.preventDefault(); + const selectedBooks = [...selectedBookIds]; + const payload = { + date: motalahDateEl.value, + durationMinutes: parseInt(motalahDurEl.value), + bookIds: selectedBooks, + notes: motalahNotesEl.value.trim() || null, + }; + try { + const r = await fetch(MOTALAH_API, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + }); + if (!r.ok) throw new Error(await r.text()); + const saved = await r.json(); + motalahEntries.unshift(saved); + motalahModal.close(); + renderMotalah(); + } catch (err) { + alert("Error saving session: " + err.message); + } + }); + } + + $("#motalah-cancel").addEventListener("click", () => motalahModal.close()); + $("#log-motalah-btn").addEventListener("click", openMotalahModal); + + // ── State ──────────────────────────────────────────────── + let allEntries = []; + let todayMap = {}; + let meetingLog = []; + let chart = null; + + // ── Boot ───────────────────────────────────────────────── + document.addEventListener("DOMContentLoaded", async () => { + setTodayLabel(); + await Promise.all([loadAll(), loadMotalah()]); + renderToday(); + renderNafl(); + renderMeetingPanel(); + renderKhatm(); + renderHistory(); + renderChart(); + renderMotalah(); + renderSummary(); + renderHeatmap(); + bindControls(); + }); + + function setTodayLabel() { + $("#today-date").textContent = new Date().toLocaleDateString("en-GB", { + weekday: "long", day: "numeric", month: "long", year: "numeric", + }); + } + + async function loadAll() { + try { + const r = await fetch(`${API}/entries`); + if (!r.ok) throw new Error(r.status); + allEntries = await r.json(); + buildTodayMap(); + buildMeetingLog(); + } catch (e) { + console.error("Wird API error:", e); + } + } + + function buildTodayMap() { + const today = isoDate(); + todayMap = {}; + for (const e of allEntries) { + if (e.date !== today) continue; + if (WIRD_META[e.wirdType]?.type === "rating") { + const existing = todayMap[e.wirdType]; + if (!existing || e.createdAt > existing.createdAt) { + todayMap[e.wirdType] = Number(e.value); + } + } else { + todayMap[e.wirdType] = (todayMap[e.wirdType] || 0) + Number(e.value); + } + } + } + + function buildMeetingLog() { + meetingLog = allEntries + .filter(e => e.wirdType === "shaykh_meeting" && Number(e.value) >= 1) + .sort((a, b) => b.date.localeCompare(a.date)); + } + + async function postEntry(payload) { + const r = await fetch(`${API}/entries`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(payload), + }); + if (!r.ok) throw new Error(await r.text()); + return r.json(); + } + + async function deleteEntry(id) { + const r = await fetch(`${API}/entries/${id}`, { method: "DELETE" }); + if (!r.ok) throw new Error(await r.text()); + } + + // ════════════════════════════════════════════════════════ + // TODAY PANEL + // ════════════════════════════════════════════════════════ + + function renderToday() { + const wrap = $("#wird-cards"); + wrap.innerHTML = ""; + let done = 0; + const types = Object.keys(DAILY_WIRD); + + for (const type of types) { + const meta = DAILY_WIRD[type]; + const val = todayMap[type] || 0; + const cls = statusClass(type, val); + if (cls === "done" || cls === "over") done++; + + const card = document.createElement("div"); + card.className = `wird-card ${cls}`; + card.dataset.type = type; + + if (meta.type === "rating") { + card.innerHTML = buildRatingCard(meta, val); + } else { + const pct = Math.min((val / meta.target) * 100, 100); + card.innerHTML = ` +
        ${meta.label}
        +
        + ${fmtValue(type, val)} + / ${meta.target.toLocaleString()} ${meta.unit} +
        +
        +
        +
        + + `; + } + + card.querySelector(".card-log-btn").addEventListener("click", () => openModal(type)); + wrap.appendChild(card); + } + + const pct = Math.round((done / types.length) * 100); + $("#today-progress-fill").style.width = pct + "%"; + $("#today-progress-label").textContent = `${done} / ${types.length} complete`; + } + + function buildRatingCard(meta, val) { + const pips = [1, 2, 3, 4, 5].map(n => { + const filled = val >= n; + const isMin = n === meta.target; + return ``; + }).join(""); + const lbl = val ? `${RATING_LABELS[val]} (${val}/5)` : "not logged"; + return ` +
        ${meta.label}
        +
        ${pips}
        +
        ${lbl}
        + + `; + } + + // ════════════════════════════════════════════════════════ + // LOG MODAL (existing — unchanged logic) + // ════════════════════════════════════════════════════════ + + const modal = $("#log-modal"); + const form = $("#log-form"); + const typeEl = $("#log-type"); + const valEl = $("#log-value"); + const dateEl = $("#log-date"); + const notesEl = $("#log-notes"); + const ratingEl = $("#log-rating-value"); + + let selectedRating = 0; + $$("#modal-pips .modal-pip").forEach(btn => { + btn.addEventListener("click", () => { + selectedRating = parseInt(btn.dataset.val); + ratingEl.value = selectedRating; + $$("#modal-pips .modal-pip").forEach(b => { + b.classList.toggle("selected", parseInt(b.dataset.val) <= selectedRating); + }); + }); + }); + + function openModal(preType = null) { + form.reset(); + selectedRating = 0; + ratingEl.value = ""; + $$("#modal-pips .modal-pip").forEach(b => b.classList.remove("selected")); + dateEl.value = isoDate(); + if (preType) typeEl.value = preType; + updateModalFields(); + modal.showModal(); + } + + function openMeetingModal() { + form.reset(); + dateEl.value = isoDate(); + typeEl.value = "shaykh_meeting"; + updateModalFields(); + modal.showModal(); + } + + function updateModalFields() { + const type = typeEl.value; + const isRating = type === "wuqoof_qalbi"; + const isMeeting = type === "shaykh_meeting"; + $("#value-group").style.display = (!isRating && !isMeeting) ? "" : "none"; + $("#rating-group").style.display = isRating ? "" : "none"; + $("#shaykh-group").style.display = isMeeting ? "" : "none"; + if (!isRating && !isMeeting) { + const meta = DAILY_WIRD[type]; + if (meta) valEl.placeholder = `Target: ${meta.target} ${meta.unit}`; + } + } + + if (typeEl){ + typeEl.addEventListener("change", updateModalFields); + } + $("#modal-cancel").addEventListener("click", () => modal.close()); + + if (form){ + form.addEventListener("submit", async (e) => { + e.preventDefault(); + const type = typeEl.value; + const isRating = type === "wuqoof_qalbi"; + const isMtg = type === "shaykh_meeting"; + + if (isRating && !ratingEl.value) { alert("Please select a rating."); return; } + + const payload = { + wirdType: type, + date: dateEl.value, + value: isRating ? Number(ratingEl.value) : isMtg ? 1 : Number(valEl.value), + notes: notesEl.value.trim() || null, + }; + + try { + const saved = await postEntry(payload); + allEntries.push(saved); + buildTodayMap(); + buildMeetingLog(); + renderToday(); + renderNafl(); + renderMeetingPanel(); + renderHistory(); + renderChart(); + renderHeatmap(); + modal.close(); + } catch (err) { + alert("Could not save entry: " + err.message); + } + }); + } + // ════════════════════════════════════════════════════════ + // NAFL PRAYERS + // Stored in wird_entries: wirdType = "salatul_tawbah" | + // "salatul_hajaat" | "tahajjud", value = 1 when prayed. + // Toggle = delete existing today entry, or post new one. + // ════════════════════════════════════════════════════════ + + function renderNafl() { + const today = isoDate(); + + // Build a map of which nafl are done today and their entry id + const naflToday = {}; // { wirdType: { id, done: true } } + for (const e of allEntries) { + if (e.date !== today) continue; + if (!NAFL_WIRD[e.wirdType]) continue; + if (Number(e.value) >= 1) naflToday[e.wirdType] = e.id; + } + + const done = Object.keys(naflToday).length; + const total = Object.keys(NAFL_WIRD).length; + + // Render each card + for (const [type, meta] of Object.entries(NAFL_WIRD)) { + const card = document.getElementById(`nafl-${type}`); + if (!card) continue; + const isDone = !!naflToday[type]; + card.classList.toggle("nafl-done", isDone); + const btn = card.querySelector(".nafl-toggle"); + btn.textContent = isDone ? "✓ prayed" : "Mark as prayed"; + btn.dataset.type = type; + btn.dataset.entryId = naflToday[type] || ""; + } + + // Progress bar — track width = 120px for 3/3 + const barPx = Math.round((done / total) * 120); + $("#nafl-completion-bar").style.width = barPx + "px"; + $("#nafl-completion-label").textContent = `${done} / ${total} today`; + } + + // Single delegated listener on the nafl-cards container + $("#nafl-cards").addEventListener("click", async e => { + const btn = e.target.closest(".nafl-toggle"); + if (!btn) return; + + const type = btn.dataset.type; + const entryId = btn.dataset.entryId; + const today = isoDate(); + + btn.disabled = true; + try { + if (entryId) { + // Toggle OFF — delete + await deleteEntry(entryId); + allEntries = allEntries.filter(en => String(en.id) !== String(entryId)); + } else { + // Toggle ON — post + const saved = await postEntry({ wirdType: type, date: today, value: 1, notes: null }); + allEntries.push(saved); + } + buildTodayMap(); + renderNafl(); + renderHeatmap(); + } catch (err) { + alert("Could not update: " + err.message); + } finally { + btn.disabled = false; + } + }); + + // ════════════════════════════════════════════════════════ + // MEETING PANEL (unchanged) + // ════════════════════════════════════════════════════════ + + function renderMeetingPanel() { + const today = isoDate(); + const last = meetingLog[0] || null; + const lastDate = last ? last.date : null; + const nextDate = lastDate ? addDays(lastDate, MEETING_CYCLE_DAYS) : null; + const daysToNext = nextDate ? daysBetween(today, nextDate) : null; + + let statusHtml = ""; + if (!lastDate) { + statusHtml = `No meetings logged yet`; + } else if (daysToNext > 0) { + statusHtml = `Next due in ${daysToNext} day${daysToNext !== 1 ? "s" : ""} — ${fmtDisplay(nextDate)}`; + } else if (daysToNext === 0) { + statusHtml = `Due today`; + } else { + const ov = Math.abs(daysToNext); + statusHtml = `${ov} day${ov !== 1 ? "s" : ""} overdue — expected ${fmtDisplay(nextDate)}`; + } + + const cycles = buildCycleInsights(); + const cycleRows = cycles.map(c => ` + + ${fmtDisplay(c.start)} → ${fmtDisplay(c.end)} + ${c.met + ? `✓ met — ${fmtDisplay(c.metOn)}` + : c.ongoing + ? `ongoing` + : `✗ missed`} + + ${c.met ? `day ${c.dayOfCycle}` : "—"} + + `).join(""); + + $("#meeting-panel-body").innerHTML = ` +
        +
        + Last meeting + ${lastDate ? fmtDisplay(lastDate) : "—"} +
        +
        + Next expected + ${nextDate ? fmtDisplay(nextDate) : "—"} +
        +
        ${statusHtml}
        +
        +
        +

        3-week cycles

        + ${cycles.length === 0 + ? `

        Log at least one meeting to see cycle insights.

        ` + : ` + + ${cycleRows} +
        Cycle windowStatusWhen
        `} +
        + `; + } + + function buildCycleInsights() { + if (meetingLog.length === 0) return []; + const dates = [...meetingLog].reverse().map(e => e.date); + const today = isoDate(); + const cycles = []; + let start = dates[0]; + while (start <= today) { + const end = addDays(start, MEETING_CYCLE_DAYS - 1); + const hit = dates.find(d => d >= start && d <= end); + cycles.push({ + start, end, + met: !!hit, + metOn: hit || null, + dayOfCycle: hit ? daysBetween(start, hit) + 1 : null, + ongoing: end > today, + }); + start = addDays(end, 1); + } + return cycles.reverse(); + } + + // ════════════════════════════════════════════════════════ + // KHATM TRACKER + // Stored in wird_entries: wirdType="khatm", value=1. + // notes field carries JSON: {"type":"tilawah"} or plain text. + // ════════════════════════════════════════════════════════ + + function getKhatmEntries() { + return [...allEntries] + .filter(e => e.wirdType === "khatm" && Number(e.value) >= 1) + .sort((a, b) => a.date.localeCompare(b.date)); // asc for numbering + } + + function renderKhatm() { + const entries = getKhatmEntries(); + const total = entries.length; + + const thisYear = entries.filter( + e => e.date.startsWith(String(new Date().getFullYear())) + ).length; + + let avgDays = "—"; + if (entries.length >= 2) { + let gap = 0; + for (let i = 1; i < entries.length; i++) + gap += daysBetween(entries[i - 1].date, entries[i].date); + avgDays = Math.round(gap / (entries.length - 1)); + } + + const last = entries[entries.length - 1]; + + $("#khatm-total").textContent = total || "0"; + $("#khatm-this-year").textContent = thisYear || "0"; + $("#khatm-avg-days").textContent = avgDays; + $("#khatm-last").textContent = last ? fmtDisplay(last.date) : "—"; + + const listEl = $("#khatm-list"); + if (entries.length === 0) { + listEl.innerHTML = `

        No completions logged yet.

        `; + return; + } + + // Render newest first + const display = [...entries].reverse(); + listEl.innerHTML = display.map(e => { + const num = entries.findIndex(x => x.id === e.id) + 1; + const milestone = num % 10 === 0; + const prevEntry = entries[num - 2]; // ascending, so num-2 is previous + const gapTxt = prevEntry ? `+${daysBetween(prevEntry.date, e.date)}d` : "first"; + + // Parse recitation type out of notes if stored as JSON + let recType = "", noteText = e.notes || ""; + try { + const parsed = JSON.parse(e.notes); + recType = parsed.type || ""; + noteText = parsed.notes || ""; + } catch (_) { /* notes is plain text */ } + + const typeBadge = recType + ? `${KHATM_TYPES[recType] || recType}` + : ""; + const note = noteText + ? `${noteText}` + : ""; + + return ` +
        +
        ${num}
        + ${fmtDisplay(e.date)} + ${typeBadge} + ${gapTxt} + ${note} +
        + `; + }).join(""); + } + + // Khatm modal + const khatmModal = $("#khatm-modal"); + const khatmForm = $("#khatm-form"); + const khatmDateEl = $("#khatm-date"); + const khatmTypeEl = $("#khatm-recitation"); + const khatmNotesEl = $("#khatm-notes"); + + $("#log-khatm-btn").addEventListener("click", () => { + khatmForm.reset(); + khatmDateEl.value = isoDate(); + khatmModal.showModal(); + }); + $("#khatm-cancel").addEventListener("click", () => khatmModal.close()); + + khatmForm.addEventListener("submit", async e => { + e.preventDefault(); + // Pack recitation type + notes into the notes field as JSON + const recType = khatmTypeEl.value || ""; + const noteText = khatmNotesEl.value.trim(); + const notes = (recType || noteText) + ? JSON.stringify({ type: recType || undefined, notes: noteText || undefined }) + : null; + + try { + const saved = await postEntry({ + wirdType: "khatm", + date: khatmDateEl.value, + value: 1, + notes, + }); + allEntries.push(saved); + khatmModal.close(); + renderKhatm(); + renderHeatmap(); + } catch (err) { + alert("Error saving khatm: " + err.message); + } + }); + + // ════════════════════════════════════════════════════════ + // HISTORY TABLE (filter out nafl + khatm to keep it clean, + // or you can remove the filter if you want them shown) + // ════════════════════════════════════════════════════════ + + function renderHistory() { + const tbody = $("#history-body"); + tbody.innerHTML = ""; + + const HIDE_TYPES = new Set(["shaykh_meeting", ...Object.keys(NAFL_WIRD), "khatm"]); + const sorted = [...allEntries] + .filter(e => !HIDE_TYPES.has(e.wirdType)) + .sort((a, b) => b.date.localeCompare(a.date)) + .slice(0, 20); + + if (sorted.length === 0) { + tbody.innerHTML = `No entries yet.`; + return; + } + + for (const e of sorted) { + const meta = WIRD_META[e.wirdType] || {}; + const cls = statusClass(e.wirdType, e.value); + const badgeTxt = cls === "over" ? (meta.type === "rating" ? "flourishing" : "above") + : cls === "done" ? (meta.type === "rating" ? "present" : "met") + : cls === "miss" ? "below" + : "—"; + const tr = document.createElement("tr"); + tr.innerHTML = ` + ${e.date} + ${meta.label || e.wirdType} + ${fmtValue(e.wirdType, e.value)} + ${badgeTxt} + ${e.notes || ""} + `; + tbody.appendChild(tr); + } + } + + // ════════════════════════════════════════════════════════ + // TREND CHART (unchanged) + // ════════════════════════════════════════════════════════ + + function renderChart() { + const type = $("#trend-type").value; + const days = parseInt($("#trend-range").value); + const meta = WIRD_META[type]; + const isRating = meta.type === "rating"; + const now = new Date(); + const labels = []; + const vals = []; + + const isMotalah = type === "motalah"; + for (let i = days - 1; i >= 0; i--) { + const d = new Date(now); + d.setDate(d.getDate() - i); + const iso = isoDate(d); + labels.push(iso.slice(5)); + if (isMotalah) { + vals.push(motalahEntries.filter(e => e.date === iso) + .reduce((s, e) => s + Number(e.durationMinutes), 0)); + } else { + const dayEntries = allEntries.filter(e => e.date === iso && e.wirdType === type); + if (isRating) { + const last = dayEntries.sort((a, b) => a.createdAt > b.createdAt ? 1 : -1).pop(); + vals.push(last ? Number(last.value) : 0); + } else { + vals.push(dayEntries.reduce((s, e) => s + Number(e.value), 0)); + } + } + } + + const nonZero = vals.filter(v => v > 0); + const avg = nonZero.length + ? (isRating + ? (nonZero.reduce((a, b) => a + b, 0) / nonZero.length).toFixed(1) + : Math.round(nonZero.reduce((a, b) => a + b, 0) / nonZero.length)) + : 0; + const max = nonZero.length ? Math.max(...nonZero) : 0; + const streak = calcStreak(type); + + if (isRating) { + $("#trend-stats").innerHTML = ` +
        ${avg}avg rating
        +
        ${RATING_LABELS[max] || "—"}best day
        +
        ${streak}dstreak ≥ ${meta.target}
        +
        ${nonZero.length}days logged
        + `; + } else { + $("#trend-stats").innerHTML = ` +
        ${Number(avg).toLocaleString()}avg / day
        +
        ${Number(max).toLocaleString()}best day
        +
        ${streak}dcurrent streak
        +
        ${meta.target.toLocaleString()}daily target
        + `; + } + + const cs = getComputedStyle(document.documentElement); + const accent = cs.getPropertyValue("--wird-accent").trim() || "#7c5c3a"; + const gridColor = cs.getPropertyValue("--border").trim() || "#d7d7d7"; + const tickColor = cs.getPropertyValue("--muted").trim() || "#666"; + const ctx = $("#trend-chart").getContext("2d"); + if (chart) chart.destroy(); + + chart = new Chart(ctx, { + type: "line", + data: { + labels, + datasets: [ + { + label: meta.label, + data: vals, + borderColor: accent, + backgroundColor: accent + "22", + fill: true, tension: .35, pointRadius: 3, pointHoverRadius: 5, + }, + { + label: "Target", + data: vals.map(() => meta.target), + borderColor: "rgba(74,124,89,.5)", + borderDash: [5, 4], + pointRadius: 0, fill: false, tension: 0, + }, + ], + }, + options: { + responsive: true, + maintainAspectRatio: true, + plugins: { + legend: { display: false }, + tooltip: { + callbacks: { + label: ctx => { + const v = ctx.parsed.y; + if (isRating && ctx.datasetIndex === 0) + return `${meta.label}: ${RATING_LABELS[v] || v} (${v}/5)`; + return `${ctx.dataset.label}: ${v}`; + }, + }, + }, + }, + scales: { + x: { + grid: { color: gridColor + "22" }, + ticks: { color: tickColor, font: { family: "monospace", size: 10 }, maxTicksLimit: 10 }, + }, + y: { + grid: { color: gridColor + "22" }, + ticks: { + color: tickColor, + font: { family: "monospace", size: 10 }, + ...(isRating ? { + min: 0, max: 5, stepSize: 1, + callback: v => RATING_LABELS[v] || (v === 0 ? "" : v), + } : {}), + }, + beginAtZero: true, + ...(isRating ? { min: 0, max: 5 } : {}), + }, + }, + }, + }); + } + + function calcStreak(type) { + const meta = WIRD_META[type]; + let streak = 0; + const now = new Date(); + for (let i = 0; i < 365; i++) { + const d = new Date(now); + d.setDate(d.getDate() - i); + const iso = isoDate(d); + let total; + if (type === "motalah") { + total = motalahEntries.filter(e => e.date === iso) + .reduce((s, e) => s + Number(e.durationMinutes), 0); + } else { + const entries = allEntries.filter(e => e.date === iso && e.wirdType === type); + if (meta && meta.type === "rating") { + const last = entries.sort((a, b) => a.createdAt > b.createdAt ? 1 : -1).pop(); + total = last ? Number(last.value) : 0; + } else { + total = entries.reduce((s, e) => s + Number(e.value), 0); + } + } + const target = type === "motalah" ? MOTALAH_TARGET : (meta ? meta.target : 1); + if (total >= target) streak++; + else if (i > 0) break; + } + return streak; + } + + // ════════════════════════════════════════════════════════ + // HEATMAP + // Reads allEntries directly. No extra API call. + // ════════════════════════════════════════════════════════ + + function renderHeatmap() { + const type = $("#heatmap-type").value; + const today = new Date(); + const todayIso = isoDate(today); + + // Anchor: Sunday on or before today, then go back (HEATMAP_WEEKS-1) full weeks + const anchor = new Date(today); + anchor.setDate(anchor.getDate() - anchor.getDay()); + const startDate = new Date(anchor); + startDate.setDate(startDate.getDate() - (HEATMAP_WEEKS - 1) * 7); + + const scoreMap = buildHeatmapScores(type, isoDate(startDate), todayIso); + + // ── Month labels ────────────────────────────────────── + const monthLabelEl = $("#heatmap-month-labels"); + monthLabelEl.innerHTML = ""; + let lastMonth = null; + // 15px per col (12px cell + 3px gap); labels are position:absolute + for (let w = 0; w < HEATMAP_WEEKS; w++) { + const d = new Date(startDate); + d.setDate(d.getDate() + w * 7); + const mo = d.toLocaleDateString("en-GB", { month: "short" }); + if (mo !== lastMonth) { + const lbl = document.createElement("span"); + lbl.className = "hm-month-lbl"; + lbl.style.left = w * 15 + "px"; + lbl.textContent = mo; + monthLabelEl.appendChild(lbl); + lastMonth = mo; + } + } + + // ── Grid ───────────────────────────────────────────── + const gridEl = $("#heatmap-grid"); + gridEl.innerHTML = ""; + + // Day-of-week label column + const dowCol = document.createElement("div"); + dowCol.className = "hm-dow-col"; + ["", "Mon", "", "Wed", "", "Fri", ""].forEach(lbl => { + const el = document.createElement("div"); + el.className = "hm-dow-lbl"; + el.textContent = lbl; + dowCol.appendChild(el); + }); + gridEl.appendChild(dowCol); + + for (let w = 0; w < HEATMAP_WEEKS; w++) { + const col = document.createElement("div"); + col.className = "hm-col"; + for (let d = 0; d < 7; d++) { + const cellDate = new Date(startDate); + cellDate.setDate(cellDate.getDate() + w * 7 + d); + const iso = isoDate(cellDate); + + const cell = document.createElement("div"); + cell.className = "hm-cell"; + + if (iso > todayIso) { + cell.classList.add("hm-empty"); + } else { + const score = scoreMap[iso] || 0; + cell.dataset.level = scoreToLevel(score, type); + if (iso === todayIso) cell.classList.add("hm-today"); + cell.title = buildTooltip(iso, score, type); + } + col.appendChild(cell); + } + gridEl.appendChild(col); + } + + // ── Stats ───────────────────────────────────────────── + renderHeatmapStats(scoreMap, type, isoDate(startDate), todayIso); + } + + function buildHeatmapScores(type, startIso, endIso) { + // Returns { "2025-01-14": score } where score is a 0–1+ fraction + // (against the relevant target) so scoreToLevel() is consistent. + const map = {}; + + if (type === "__all__") { + // Fraction of DAILY_WIRD targets met each day + const dayCounts = {}; // { date: { type: total } } + for (const e of allEntries) { + if (e.date < startIso || e.date > endIso) continue; + if (!DAILY_WIRD[e.wirdType]) continue; + if (!dayCounts[e.date]) dayCounts[e.date] = {}; + const meta = DAILY_WIRD[e.wirdType]; + if (meta.type === "rating") { + dayCounts[e.date][e.wirdType] = Math.max( + dayCounts[e.date][e.wirdType] || 0, Number(e.value) + ); + } else { + dayCounts[e.date][e.wirdType] = (dayCounts[e.date][e.wirdType] || 0) + Number(e.value); + } + } + const total = Object.keys(DAILY_WIRD).length; + for (const [date, typeMap] of Object.entries(dayCounts)) { + let met = 0; + for (const [t, val] of Object.entries(typeMap)) { + if (val >= DAILY_WIRD[t].target) met++; + } + map[date] = met / total; + } + return map; + } + + // Nafl: fraction of 3 prayers done + if (type === "nafl") { + for (const e of allEntries) { + if (!NAFL_WIRD[e.wirdType]) continue; + if (e.date < startIso || e.date > endIso) continue; + if (Number(e.value) >= 1) map[e.date] = (map[e.date] || 0) + (1 / 3); + } + return map; + } + + // Khatm: binary + if (type === "khatm") { + for (const e of allEntries) { + if (e.wirdType !== "khatm") continue; + if (e.date < startIso || e.date > endIso) continue; + if (Number(e.value) >= 1) map[e.date] = 1; + } + return map; + } + + // Motalah: use motalahEntries, normalised against MOTALAH_TARGET + if (type === "motalah") { + for (const e of motalahEntries) { + if (e.date < startIso || e.date > endIso) continue; + map[e.date] = (map[e.date] || 0) + Number(e.durationMinutes); + } + for (const d of Object.keys(map)) map[d] = map[d] / MOTALAH_TARGET; + return map; + } + + // Single wird type — normalised against target + const meta = WIRD_META[type]; + for (const e of allEntries) { + if (e.wirdType !== type) continue; + if (e.date < startIso || e.date > endIso) continue; + if (meta && meta.type === "rating") { + map[e.date] = Math.max(map[e.date] || 0, Number(e.value)); + } else { + map[e.date] = (map[e.date] || 0) + Number(e.value); + } + } + if (meta && meta.target) { + for (const d of Object.keys(map)) map[d] = map[d] / meta.target; + } + return map; + } + + function scoreToLevel(score, type) { + if (type === "khatm") return score > 0 ? 4 : 0; + if (score <= 0) return 0; + if (score < 0.4) return 1; + if (score < 0.75) return 2; + if (score < 1.0) return 3; + return 4; // met or exceeded + } + + function buildTooltip(iso, score, type) { + const label = fmtDisplay(iso); + if (score <= 0) return `${label}: nothing logged`; + if (type === "__all__") return `${label}: ${Math.round(score * 100)}% of targets met`; + if (type === "nafl") return `${label}: ${Math.round(score * 3)} / 3 prayers`; + if (type === "khatm") return `${label}: khatm completed ✓`; + if (type === "motalah") return `${label}: ${Math.round(score * MOTALAH_TARGET)} min`; + const meta = WIRD_META[type]; + if (!meta) return label; + if (meta.type === "rating") { + const r = Math.round(score); + return `${label}: ${RATING_LABELS[r] || r}/5`; + } + const raw = score * (meta.target || 1); + return `${label}: ${Math.round(raw).toLocaleString()} ${meta.unit}`; + } + + // ============================================================ + // DAILY SUMMARY TABLE + // ============================================================ + + let summaryDays = 30; + let summaryFilter = "__all__"; + + function renderSummary() { + const wrap = document.getElementById("summary-table-wrap"); + if (!wrap) return; + + const today = isoDate(); + const cols = summaryFilter === "__all__" + ? Object.keys(DAILY_WIRD) + : [summaryFilter]; + + // Build date rows newest→oldest + const rows = []; + for (let i = 0; i < summaryDays; i++) { + const d = new Date(); + d.setDate(d.getDate() - i); + rows.push(isoDate(d)); + } + + // Pre-aggregate entries into { date: { type: val } } + const agg = {}; + for (const e of allEntries) { + if (!cols.includes(e.wirdType)) continue; + if (!agg[e.date]) agg[e.date] = {}; + const meta = DAILY_WIRD[e.wirdType]; + if (meta && meta.type === "rating") { + agg[e.date][e.wirdType] = Math.max( + agg[e.date][e.wirdType] || 0, Number(e.value) + ); + } else { + agg[e.date][e.wirdType] = (agg[e.date][e.wirdType] || 0) + Number(e.value); + } + } + + // Build header + const thCols = cols.map(t => { + const meta = DAILY_WIRD[t]; + const unitHint = meta.type === "rating" ? "/5" : meta.unit ? meta.unit : ""; + return ` + ${meta.label}
        + / ${meta.target}${unitHint} + `; + }).join(""); + + // Build body rows + const bodyRows = rows.map(dateIso => { + const isToday = dateIso === today; + const dayData = agg[dateIso] || {}; + + const displayDate = new Date(dateIso + "T00:00:00").toLocaleDateString("en-GB", { + weekday: "short", day: "numeric", month: "short" + }); + + const cells = cols.map(type => { + const meta = DAILY_WIRD[type]; + const val = dayData[type]; + + if (val === undefined || val === null) { + return `—`; + } + + const cls = statusClass(type, val); + const cellCls = cls === "over" ? "summary-cell-over" + : cls === "done" ? "summary-cell-done" + : cls === "miss" ? "summary-cell-miss" + : ""; + + let display; + if (meta.type === "rating") { + display = `${val}/5`; + } else { + display = Number(val).toLocaleString(); + } + + return `${display}`; + }).join(""); + + return ` + ${displayDate}${isToday ? " ·" : ""} + ${cells} + `; + }).join(""); + + // Footer: days target met per column + const footCells = cols.map(type => { + const meta = DAILY_WIRD[type]; + let metCount = 0; + for (const dateIso of rows) { + const val = (agg[dateIso] || {})[type]; + if (val !== undefined && val >= meta.target) metCount++; + } + const pct = Math.round((metCount / summaryDays) * 100); + const cls = pct >= 80 ? "summary-cell-done" : pct >= 50 ? "" : "summary-cell-miss"; + return `${metCount}d (${pct}%)`; + }).join(""); + + wrap.innerHTML = ` + + + + + ${thCols} + + + ${bodyRows} + + + + ${footCells} + + +
        Date
        days met
        + `; + } + + // Controls + document.querySelectorAll(".summary-preset").forEach(btn => { + btn.addEventListener("click", () => { + summaryDays = parseInt(btn.dataset.days); + document.querySelectorAll(".summary-preset").forEach(b => b.classList.remove("active")); + btn.classList.add("active"); + renderSummary(); + }); + }); + + const summaryFilterEl = document.getElementById("summary-filter"); + if (summaryFilterEl) { + summaryFilterEl.addEventListener("change", () => { + summaryFilter = summaryFilterEl.value; + renderSummary(); + }); + } + + function renderHeatmapStats(scoreMap, type, startIso, endIso) { + const el = $("#heatmap-stats"); + const daysLogged = Object.values(scoreMap).filter(v => v > 0).length; + const daysTarget = Object.values(scoreMap).filter(v => v >= 1).length; + + // Longest streak of any-activity + let longest = 0, cur = 0; + const s = new Date(startIso), e = new Date(endIso); + for (let d = new Date(s); d <= e; d.setDate(d.getDate() + 1)) { + if ((scoreMap[isoDate(d)] || 0) > 0) { cur++; longest = Math.max(longest, cur); } + else cur = 0; + } + + const chips = [ + { val: daysLogged, lbl: "days with activity" }, + { val: `${longest}d`, lbl: "longest streak" }, + ]; + if (type !== "khatm") { + chips.push({ val: daysTarget, lbl: type === "nafl" ? "days all prayers done" : "days target met" }); + } + + el.innerHTML = chips.map(c => + `
        + ${c.val} + ${c.lbl} +
        ` + ).join(""); + } + + // ════════════════════════════════════════════════════════ + // BIND CONTROLS + // ════════════════════════════════════════════════════════ + + function bindControls() { + $("#open-log-btn").addEventListener("click", () => openModal()); + $("#log-meeting-btn").addEventListener("click", openMeetingModal); + $("#trend-type").addEventListener("change", renderChart); + $("#trend-range").addEventListener("change", renderChart); + $("#heatmap-type").addEventListener("change", renderHeatmap); + } + /* ============================================================ + wird-export.js + Client-side PDF export for the Wird Tracker. + Depends on: jsPDF + jspdf-autotable (loaded via CDN). + All data is read from allEntries / motalahEntries already + held in memory by wird-tracker.js — no extra API calls. + + HOW TO INTEGRATE + ───────────────── + 1. Paste this block INSIDE the existing IIFE in + wird-tracker.js, just before the closing })(); + + 2. Add the HTML snippet (wird-export-html.html) to the + template and the CDN " (z/asset-url (format "assets/scripts/%s" f)))) - '("script.js" - "lunr.js" - "competency-status-board.js" - "notes.js" - "comments.js" - "bigger-picture.min.js" + '("ui/copy-buttons.js" + "ui/footnote-sidenotes.js" + "application/theme-switcher.js" + "ui/countdown.js" + "ui/toc-active-link.js" + "ui/mermaid-diagrams.js" + "vendor/lunr.js" + "pages/competency-status-board.js" + "pages/notes.js" + "features/comments.js" + "vendor/bigger-picture.min.js" "search.js" - "svg-pan-zoom.min.js" - "gallery-init.js" - "sitemap-interactive.js" - "wird-tracker.js" - "zhd.js" - "play.js" - "ash-below-lake.js" - "hidden-details.js") + "vendor/svg-pan-zoom.min.js" + "ui/gallery-init.js" + "pages/sitemap-interactive.js" + "pages/wird-tracker.js" + "pages/home-dashboard.js" + "pages/play.js" + "pages/ash-below-lake.js" + "features/hidden-details.js") "\n") (format "" - (z/asset-url "assets/scripts/mermaid.min.js"))) + (z/asset-url "assets/scripts/vendor/mermaid.min.js"))) "Shared HTML fragment injected into every page.") (defun z/sync-assets-to-output () diff --git a/posts/career/career-list.org b/posts/career/career-list.org index b1034b5..c6e9953 100755 --- a/posts/career/career-list.org +++ b/posts/career/career-list.org @@ -16,9 +16,9 @@ See the categories: @@html:Categories@@ - [[file:restful-api.org][Restful API]] @@html:@@ @@html:@@ @@html:@@ ** January 2026 -- [[file:database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:@@ @@html:@@ @@html:@@ - [[file:monitoring-and-logging.org][Monitoring and Logging]] @@html:@@ @@html:@@ @@html:@@ - [[file:pipelines.org][Pipelines and how they work (as well as CI/CD)]] @@html:@@ @@html:@@ @@html:@@ +- [[file:database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:@@ @@html:@@ @@html:@@ ** December 2025 - [[file:probation-objectives.org][Probation Objectives:]] @@html:@@ @@html:@@ @@html:@@ @@ -26,13 +26,13 @@ See the categories: @@html:Categories@@ ** November 2025 - [[file:airflow.org][Datamarts, Airflow and DAG's]] @@html:@@ @@html:@@ @@html:@@ - [[file:normalisation.org][Benefits of Normalisation]] @@html:@@ @@html:@@ @@html:@@ -- [[file:management-of-self.org][Management of self training]] @@html:@@ @@html:@@ @@html:@@ - [[file:wireframe-designs.org][Wireframe Designs]] @@html:@@ @@html:@@ @@html:@@ +- [[file:management-of-self.org][Management of self training]] @@html:@@ @@html:@@ @@html:@@ - [[file:requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] @@html:@@ @@html:@@ @@html:@@ - [[file:career-intro.org][Career Introduction]] @@html:@@ @@html:@@ - [[file:invest-principles.org][Invest Principles]] @@html:@@ @@html:@@ @@html:@@ -- [[file:retrospectives.org][Retrospectives]] @@html:@@ @@html:@@ @@html:@@ - [[file:lean.org][Lean]] @@html:@@ @@html:@@ @@html:@@ +- [[file:retrospectives.org][Retrospectives]] @@html:@@ @@html:@@ @@html:@@ ** October 2025 - [[file:owasp.org][OWASP Top Ten]] @@html:@@ @@html:@@ @@html:@@ diff --git a/posts/career/requirements-features.org b/posts/career/requirements-features.org index a951a84..bb9df1a 100755 --- a/posts/career/requirements-features.org +++ b/posts/career/requirements-features.org @@ -27,7 +27,7 @@ An epic is a high-level objective or initiative that’s too big to complete in ** Features - Definition: Distinct pieces of functionality that deliver value to users. - Scope: Larger than user stories but smaller than epics. -- Example: “User profile management” could be a feature encompassing login, profile editing, and avatar upload. +- Example: “User profile management” could be a feature encompassing login, profile editing, and profile image upload. ** User Stories - Definition: Short, simple descriptions of a feature told from the perspective of the user. @@ -38,7 +38,7 @@ An epic is a high-level objective or initiative that’s too big to complete in ** Tasks - Definition: Technical or operational steps needed to implement a user story. - Granularity: Smallest unit of work, often assigned to individual team members. -- Example: For a story like “User can upload avatar,” tasks might include: +- Example: For a story like “User can upload profile image,” tasks might include: - Create upload UI - Validate image format - Store image in database diff --git a/posts/posts-list.org b/posts/posts-list.org index 0fe3240..d29cec9 100755 --- a/posts/posts-list.org +++ b/posts/posts-list.org @@ -4,24 +4,24 @@ See the categories: @@html:Categories@@ * Posts: -- [[file:career/career-list.org][Career List]] @@html:@@ +- [[file:career/career-list.org][Career List]] @@html:@@ - [[file:career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/javascript.org][Understands the Javascript language]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/restful-api.org][Restful API]] @@html:@@ @@html:@@ @@html:@@ -- [[file:career/database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/monitoring-and-logging.org][Monitoring and Logging]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] @@html:@@ @@html:@@ @@html:@@ +- [[file:career/database-permissions.org][Database Permissions, Roles, and Accounts]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/probation-objectives.org][Probation Objectives:]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/airflow.org][Datamarts, Airflow and DAG's]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/normalisation.org][Benefits of Normalisation]] @@html:@@ @@html:@@ @@html:@@ -- [[file:career/management-of-self.org][Management of self training]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/wireframe-designs.org][Wireframe Designs]] @@html:@@ @@html:@@ @@html:@@ +- [[file:career/management-of-self.org][Management of self training]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/career-intro.org][Career Introduction]] @@html:@@ @@html:@@ - [[file:career/invest-principles.org][Invest Principles]] @@html:@@ @@html:@@ @@html:@@ -- [[file:career/retrospectives.org][Retrospectives]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/lean.org][Lean]] @@html:@@ @@html:@@ @@html:@@ +- [[file:career/retrospectives.org][Retrospectives]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/owasp.org][OWASP Top Ten]] @@html:@@ @@html:@@ @@html:@@ - [[file:career/solid-principles.org][SOLID Principles]] @@html:@@ @@html:@@ @@html:@@ - [[file:posts-intro.org][Posts Introduction]] @@html:@@ @@html:@@ \ No newline at end of file diff --git a/recently-updated.org b/recently-updated.org index 927bc26..668958d 100755 --- a/recently-updated.org +++ b/recently-updated.org @@ -2,8 +2,8 @@ #+OPTIONS: toc:nil num:nil * Recently Updated (top 26 files) +- [[file:home/guide/setup.org][Setup]] @@html:@@ - [[file:blogs/2026/06-june/cleaning-up-the-repos.org][Cleaning up the repos]] @@html:@@ -- [[file:home/guide/setup.org][Setup]] @@html:@@ - [[file:posts/career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] @@html:@@ - [[file:blogs/2026/05-may/31-05-week-review.org][[31-05-2026] - Weekly Review]] @@html:@@ - [[file:blogs/2026/05-may/working-on-eid-day-27-05-26.org][Working on Eid day]] @@html:@@ @@ -25,6 +25,6 @@ - [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] @@html:@@ - [[file:blogs/2026/05-may/10-05-week-review.org][[10-05-2026] - Weekly Review]] @@html:@@ - [[file:blogs/2026/05-may/authoring-service-09-05-26.org][Authoring Service]] @@html:@@ -- [[file:play/play.org][Play]] @@html:@@ - [[file:play/timeline.org][Timeline Tangle]] @@html:@@ - [[file:play/terminal.org][Archive Terminal]] @@html:@@ +- [[file:play/study.org][Study Lamp]] @@html:@@ diff --git a/sitemap.org b/sitemap.org index 4bd9299..4fbc639 100755 --- a/sitemap.org +++ b/sitemap.org @@ -6,292 +6,292 @@ flowchart TD root(["zxh"]) n1["Home"] root --> n1 - n2["Play"] + n2["Recently Updated"] root --> n2 - n4["Recently Updated"] - root --> n4 - n9{{"blogs"}} - root --> n9 - n10["Blogs Introduction"] - n9 --> n10 - n11["How to publish pages using Org Publish"] - n9 --> n11 - n12["Blogs List"] - n9 --> n12 - n13{{"home"}} - root --> n13 - n14["Countdown"] + n3{{"home"}} + root --> n3 + n4["Countdown"] + n3 --> n4 + n5["Backlog"] + n3 --> n5 + n6["Competency Status Board"] + n3 --> n6 + n7["Service"] + n3 --> n7 + n8["Notes"] + n3 --> n8 + n9["Wird Tracker"] + n3 --> n9 + n10["Contact"] + n3 --> n10 + n11["hidden-soul"] + n3 --> n11 + n12["Categories"] + n3 --> n12 + n13{{"guide"}} + n3 --> n13 + n14["Wird Tracker — Technical Guide"] n13 --> n14 - n15["Backlog"] + n15["Setup"] n13 --> n15 - n16["Competency Status Board"] - n13 --> n16 - n17["hidden-soul"] - n13 --> n17 - n18["Wird Tracker"] - n13 --> n18 - n19["Contact"] - n13 --> n19 - n20["Service"] - n13 --> n20 - n21["Notes"] - n13 --> n21 - n22["Categories"] - n13 --> n22 - n23{{"guide"}} - n13 --> n23 - n24["Wird Tracker — Technical Guide"] - n23 --> n24 - n25["Setup"] - n23 --> n25 - n26{{"lima"}} - root --> n26 - n27["Lima"] - n26 --> n27 - n28{{"tags"}} - root --> n28 - n29["Tag: review"] - n28 --> n29 - n30["Tag: life"] - n28 --> n30 - n31["Tag: introduction"] - n28 --> n31 - n32["Tag: learning"] - n28 --> n32 - n33["Tag: notes"] - n28 --> n33 - n34["Tag: review"] - n28 --> n34 - n35["Tag: website"] - n28 --> n35 - n36["Tag: update"] - n28 --> n36 - n37["Tag: life"] - n28 --> n37 - n38["Tag: education"] - n28 --> n38 - n39["Tag: insights"] - n28 --> n39 - n40["Tag: reading"] - n28 --> n40 - n41["Tag: emacs"] - n28 --> n41 - n42["Tag: maths"] - n28 --> n42 - n43{{"posts"}} - root --> n43 - n44["Posts Introduction"] - n43 --> n44 - n45["Posts List"] - n43 --> n45 - n46{{"career"}} - n43 --> n46 - n47["SOLID Principles"] - n46 --> n47 - n48["OWASP Top Ten"] - n46 --> n48 - n49["Retrospectives"] - n46 --> n49 - n50["Lean"] - n46 --> n50 - n51["Invest Principles"] - n46 --> n51 - n52["Career Introduction"] - n46 --> n52 - n53["Management of self training"] - n46 --> n53 - n54["Wireframe Designs"] - n46 --> n54 - n55["Requirements, features, user stories, tasks, walking skeletons"] - n46 --> n55 - n56["Benefits of Normalisation"] - n46 --> n56 - n57["Datamarts, Airflow and DAG's"] - n46 --> n57 - n58["Probation Objectives:"] - n46 --> n58 - n59["Database Permissions, Roles, and Accounts"] - n46 --> n59 - n60["Monitoring and Logging"] - n46 --> n60 - n61["Pipelines and how they work (as well as CI/CD)"] - n46 --> n61 - n62["Restful API"] - n46 --> n62 - n63["Understands the Javascript language"] - n46 --> n63 - n64["High Availability, Disaster Recovery and Business Continuity"] - n46 --> n64 - n65["Cross-Site Scripting (XSS)"] - n46 --> n65 - n66["Career List"] - n46 --> n66 - n67{{"play"}} - root --> n67 - n68["Sigil Press"] - n67 --> n68 - n69["Ash Below the Lake"] - n67 --> n69 + n16{{"tags"}} + root --> n16 + n17["Tag: review"] + n16 --> n17 + n18["Tag: life"] + n16 --> n18 + n19["Tag: learning"] + n16 --> n19 + n20["Tag: introduction"] + n16 --> n20 + n21["Tag: notes"] + n16 --> n21 + n22["Tag: review"] + n16 --> n22 + n23["Tag: website"] + n16 --> n23 + n24["Tag: update"] + n16 --> n24 + n25["Tag: life"] + n16 --> n25 + n26["Tag: emacs"] + n16 --> n26 + n27["Tag: education"] + n16 --> n27 + n28["Tag: reading"] + n16 --> n28 + n29["Tag: maths"] + n16 --> n29 + n30["Tag: insights"] + n16 --> n30 + n31{{"posts"}} + root --> n31 + n32["Posts Introduction"] + n31 --> n32 + n33["Posts List"] + n31 --> n33 + n34{{"career"}} + n31 --> n34 + n35["SOLID Principles"] + n34 --> n35 + n36["OWASP Top Ten"] + n34 --> n36 + n37["Lean"] + n34 --> n37 + n38["Retrospectives"] + n34 --> n38 + n39["Invest Principles"] + n34 --> n39 + n40["Career Introduction"] + n34 --> n40 + n41["Wireframe Designs"] + n34 --> n41 + n42["Management of self training"] + n34 --> n42 + n43["Requirements, features, user stories, tasks, walking skeletons"] + n34 --> n43 + n44["Benefits of Normalisation"] + n34 --> n44 + n45["Datamarts, Airflow and DAG's"] + n34 --> n45 + n46["Probation Objectives:"] + n34 --> n46 + n47["Monitoring and Logging"] + n34 --> n47 + n48["Pipelines and how they work (as well as CI/CD)"] + n34 --> n48 + n49["Database Permissions, Roles, and Accounts"] + n34 --> n49 + n50["Restful API"] + n34 --> n50 + n51["Understands the Javascript language"] + n34 --> n51 + n52["High Availability, Disaster Recovery and Business Continuity"] + n34 --> n52 + n53["Cross-Site Scripting (XSS)"] + n34 --> n53 + n54["Career List"] + n34 --> n54 + n55{{"blogs"}} + root --> n55 + n56["Blogs Introduction"] + n55 --> n56 + n57["How to publish pages using Org Publish"] + n55 --> n57 + n58["Blogs List"] + n55 --> n58 + n59{{"lima"}} + root --> n59 + n60["Lima"] + n59 --> n60 + n61{{"play"}} + root --> n61 + n62["Bookshelf Sort"] + n61 --> n62 + n63["Sigil Press"] + n61 --> n63 + n64["Memory Cabinet"] + n61 --> n64 + n65["Constellation Desk"] + n61 --> n65 + n66["Play"] + n61 --> n66 + n67["Study Lamp"] + n61 --> n67 + n68["Marginalia Machine"] + n61 --> n68 + n69["Ink Pond"] + n61 --> n69 n70["Timeline Tangle"] - n67 --> n70 - n71["Ink Pond"] - n67 --> n71 - n72["Supper Wheel"] - n67 --> n72 - n73["Bookshelf Sort"] - n67 --> n73 - n74["Constellation Desk"] - n67 --> n74 - n75["Memory Cabinet"] - n67 --> n75 - n76["Archive Terminal"] - n67 --> n76 - n77["Study Lamp"] - n67 --> n77 - n78["Marginalia Machine"] - n67 --> n78 - n79["The Rain Index"] - n67 --> n79 + n61 --> n70 + n71["Supper Wheel"] + n61 --> n71 + n72["Archive Terminal"] + n61 --> n72 + n73["Ash Below the Lake"] + n61 --> n73 + n74["The Rain Index"] + n61 --> n74 click n1 "index.html" "Home" - click n2 "play.html" "Play" - click n4 "recently-updated.html" "Recently Updated" - click n10 "blogs/blogs-intro.html" "Blogs Introduction" - click n11 "blogs/publish-pages.html" "How to publish pages using Org Publish" - click n12 "blogs/blogs-list.html" "Blogs List" - click n14 "home/countdown.html" "Countdown" - click n15 "home/backlog.html" "Backlog" - click n16 "home/status.html" "Competency Status Board" - click n17 "home/hidden-soul.html" "hidden-soul" - click n18 "home/wird-tracker.html" "Wird Tracker" - click n19 "home/contact.html" "Contact" - click n20 "home/services.html" "Service" - click n21 "home/notes.html" "Notes" - click n22 "home/categories.html" "Categories" - click n24 "home/guide/wird-tracker-guide.html" "Wird Tracker — Technical Guide" - click n25 "home/guide/setup.html" "Setup" - click n27 "lima/lima-list.html" "Lima" - click n29 "tags/review.sync-conflict-20260328-203248-VT6366A.html" "Tag: review" - click n30 "tags/life.sync-conflict-20260417-233423-VT6366A.html" "Tag: life" - click n31 "tags/introduction.html" "Tag: introduction" - click n32 "tags/learning.html" "Tag: learning" - click n33 "tags/notes.html" "Tag: notes" - click n34 "tags/review.html" "Tag: review" - click n35 "tags/website.html" "Tag: website" - click n36 "tags/update.html" "Tag: update" - click n37 "tags/life.html" "Tag: life" - click n38 "tags/education.html" "Tag: education" - click n39 "tags/insights.html" "Tag: insights" - click n40 "tags/reading.html" "Tag: reading" - click n41 "tags/emacs.html" "Tag: emacs" - click n42 "tags/maths.html" "Tag: maths" - click n44 "posts/posts-intro.html" "Posts Introduction" - click n45 "posts/posts-list.html" "Posts List" - click n47 "posts/career/solid-principles.html" "SOLID Principles" - click n48 "posts/career/owasp.html" "OWASP Top Ten" - click n49 "posts/career/retrospectives.html" "Retrospectives" - click n50 "posts/career/lean.html" "Lean" - click n51 "posts/career/invest-principles.html" "Invest Principles" - click n52 "posts/career/career-intro.html" "Career Introduction" - click n53 "posts/career/management-of-self.html" "Management of self training" - click n54 "posts/career/wireframe-designs.html" "Wireframe Designs" - click n55 "posts/career/requirements-features.html" "Requirements, features, user stories, tasks, walking skeletons" - click n56 "posts/career/normalisation.html" "Benefits of Normalisation" - click n57 "posts/career/airflow.html" "Datamarts, Airflow and DAG's" - click n58 "posts/career/probation-objectives.html" "Probation Objectives:" - click n59 "posts/career/database-permissions.html" "Database Permissions, Roles, and Accounts" - click n60 "posts/career/monitoring-and-logging.html" "Monitoring and Logging" - click n61 "posts/career/pipelines.html" "Pipelines and how they work (as well as CI/CD)" - click n62 "posts/career/restful-api.html" "Restful API" - click n63 "posts/career/javascript.html" "Understands the Javascript language" - click n64 "posts/career/ha-dr.html" "High Availability, Disaster Recovery and Business Continuity" - click n65 "posts/career/cross-site-scripting-xss.html" "Cross-Site Scripting (XSS)" - click n66 "posts/career/career-list.html" "Career List" - click n68 "play/sigil.html" "Sigil Press" - click n69 "play/rpg.html" "Ash Below the Lake" + click n2 "recently-updated.html" "Recently Updated" + click n4 "home/countdown.html" "Countdown" + click n5 "home/backlog.html" "Backlog" + click n6 "home/status.html" "Competency Status Board" + click n7 "home/services.html" "Service" + click n8 "home/notes.html" "Notes" + click n9 "home/wird-tracker.html" "Wird Tracker" + click n10 "home/contact.html" "Contact" + click n11 "home/hidden-soul.html" "hidden-soul" + click n12 "home/categories.html" "Categories" + click n14 "home/guide/wird-tracker-guide.html" "Wird Tracker — Technical Guide" + click n15 "home/guide/setup.html" "Setup" + click n17 "tags/review.sync-conflict-20260328-203248-VT6366A.html" "Tag: review" + click n18 "tags/life.sync-conflict-20260417-233423-VT6366A.html" "Tag: life" + click n19 "tags/learning.html" "Tag: learning" + click n20 "tags/introduction.html" "Tag: introduction" + click n21 "tags/notes.html" "Tag: notes" + click n22 "tags/review.html" "Tag: review" + click n23 "tags/website.html" "Tag: website" + click n24 "tags/update.html" "Tag: update" + click n25 "tags/life.html" "Tag: life" + click n26 "tags/emacs.html" "Tag: emacs" + click n27 "tags/education.html" "Tag: education" + click n28 "tags/reading.html" "Tag: reading" + click n29 "tags/maths.html" "Tag: maths" + click n30 "tags/insights.html" "Tag: insights" + click n32 "posts/posts-intro.html" "Posts Introduction" + click n33 "posts/posts-list.html" "Posts List" + click n35 "posts/career/solid-principles.html" "SOLID Principles" + click n36 "posts/career/owasp.html" "OWASP Top Ten" + click n37 "posts/career/lean.html" "Lean" + click n38 "posts/career/retrospectives.html" "Retrospectives" + click n39 "posts/career/invest-principles.html" "Invest Principles" + click n40 "posts/career/career-intro.html" "Career Introduction" + click n41 "posts/career/wireframe-designs.html" "Wireframe Designs" + click n42 "posts/career/management-of-self.html" "Management of self training" + click n43 "posts/career/requirements-features.html" "Requirements, features, user stories, tasks, walking skeletons" + click n44 "posts/career/normalisation.html" "Benefits of Normalisation" + click n45 "posts/career/airflow.html" "Datamarts, Airflow and DAG's" + click n46 "posts/career/probation-objectives.html" "Probation Objectives:" + click n47 "posts/career/monitoring-and-logging.html" "Monitoring and Logging" + click n48 "posts/career/pipelines.html" "Pipelines and how they work (as well as CI/CD)" + click n49 "posts/career/database-permissions.html" "Database Permissions, Roles, and Accounts" + click n50 "posts/career/restful-api.html" "Restful API" + click n51 "posts/career/javascript.html" "Understands the Javascript language" + click n52 "posts/career/ha-dr.html" "High Availability, Disaster Recovery and Business Continuity" + click n53 "posts/career/cross-site-scripting-xss.html" "Cross-Site Scripting (XSS)" + click n54 "posts/career/career-list.html" "Career List" + click n56 "blogs/blogs-intro.html" "Blogs Introduction" + click n57 "blogs/publish-pages.html" "How to publish pages using Org Publish" + click n58 "blogs/blogs-list.html" "Blogs List" + click n60 "lima/lima-list.html" "Lima" + click n62 "play/bookshelf.html" "Bookshelf Sort" + click n63 "play/sigil.html" "Sigil Press" + click n64 "play/memory.html" "Memory Cabinet" + click n65 "play/constellation.html" "Constellation Desk" + click n66 "play/play.html" "Play" + click n67 "play/study.html" "Study Lamp" + click n68 "play/poem.html" "Marginalia Machine" + click n69 "play/ink.html" "Ink Pond" click n70 "play/timeline.html" "Timeline Tangle" - click n71 "play/ink.html" "Ink Pond" - click n72 "play/recipe.html" "Supper Wheel" - click n73 "play/bookshelf.html" "Bookshelf Sort" - click n74 "play/constellation.html" "Constellation Desk" - click n75 "play/memory.html" "Memory Cabinet" - click n76 "play/terminal.html" "Archive Terminal" - click n77 "play/study.html" "Study Lamp" - click n78 "play/poem.html" "Marginalia Machine" - click n79 "play/the-rain-index.html" "The Rain Index" + click n71 "play/recipe.html" "Supper Wheel" + click n72 "play/terminal.html" "Archive Terminal" + click n73 "play/rpg.html" "Ash Below the Lake" + click n74 "play/the-rain-index.html" "The Rain Index" #+end_src * Pages - [[file:index.org][Home]] -- [[file:play/play.org][Play]] - [[file:recently-updated.org][Recently Updated]] -- blogs - - [[file:blogs/blogs-intro.org][Blogs Introduction]] - - [[file:blogs/publish-pages.org][How to publish pages using Org Publish]] - - [[file:blogs/blogs-list.org][Blogs List]] - home - [[file:home/countdown.org][Countdown]] - [[file:home/backlog.org][Backlog]] - [[file:home/status.org][Competency Status Board]] - - [[file:home/hidden-soul.org][hidden-soul]] - - [[file:home/wird-tracker.org][Wird Tracker]] - - [[file:home/contact.org][Contact]] - [[file:home/services.org][Service]] - [[file:home/notes.org][Notes]] + - [[file:home/wird-tracker.org][Wird Tracker]] + - [[file:home/contact.org][Contact]] + - [[file:home/hidden-soul.org][hidden-soul]] - [[file:home/categories.org][Categories]] - guide - [[file:home/guide/wird-tracker-guide.org][Wird Tracker — Technical Guide]] - [[file:home/guide/setup.org][Setup]] -- lima - - [[file:lima/lima-list.org][Lima]] - tags - [[file:tags/review.sync-conflict-20260328-203248-VT6366A.org][Tag: review]] - [[file:tags/life.sync-conflict-20260417-233423-VT6366A.org][Tag: life]] - - [[file:tags/introduction.org][Tag: introduction]] - [[file:tags/learning.org][Tag: learning]] + - [[file:tags/introduction.org][Tag: introduction]] - [[file:tags/notes.org][Tag: notes]] - [[file:tags/review.org][Tag: review]] - [[file:tags/website.org][Tag: website]] - [[file:tags/update.org][Tag: update]] - [[file:tags/life.org][Tag: life]] - - [[file:tags/education.org][Tag: education]] - - [[file:tags/insights.org][Tag: insights]] - - [[file:tags/reading.org][Tag: reading]] - [[file:tags/emacs.org][Tag: emacs]] + - [[file:tags/education.org][Tag: education]] + - [[file:tags/reading.org][Tag: reading]] - [[file:tags/maths.org][Tag: maths]] + - [[file:tags/insights.org][Tag: insights]] - posts - [[file:posts/posts-intro.org][Posts Introduction]] - [[file:posts/posts-list.org][Posts List]] - career - [[file:posts/career/solid-principles.org][SOLID Principles]] - [[file:posts/career/owasp.org][OWASP Top Ten]] - - [[file:posts/career/retrospectives.org][Retrospectives]] - [[file:posts/career/lean.org][Lean]] + - [[file:posts/career/retrospectives.org][Retrospectives]] - [[file:posts/career/invest-principles.org][Invest Principles]] - [[file:posts/career/career-intro.org][Career Introduction]] - - [[file:posts/career/management-of-self.org][Management of self training]] - [[file:posts/career/wireframe-designs.org][Wireframe Designs]] + - [[file:posts/career/management-of-self.org][Management of self training]] - [[file:posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] - [[file:posts/career/normalisation.org][Benefits of Normalisation]] - [[file:posts/career/airflow.org][Datamarts, Airflow and DAG's]] - [[file:posts/career/probation-objectives.org][Probation Objectives:]] - - [[file:posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:posts/career/monitoring-and-logging.org][Monitoring and Logging]] - [[file:posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] + - [[file:posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:posts/career/restful-api.org][Restful API]] - [[file:posts/career/javascript.org][Understands the Javascript language]] - [[file:posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] - [[file:posts/career/cross-site-scripting-xss.org][Cross-Site Scripting (XSS)]] - [[file:posts/career/career-list.org][Career List]] +- blogs + - [[file:blogs/blogs-intro.org][Blogs Introduction]] + - [[file:blogs/publish-pages.org][How to publish pages using Org Publish]] + - [[file:blogs/blogs-list.org][Blogs List]] +- lima + - [[file:lima/lima-list.org][Lima]] - play - - [[file:play/sigil.org][Sigil Press]] - - [[file:play/rpg.org][Ash Below the Lake]] - - [[file:play/timeline.org][Timeline Tangle]] - - [[file:play/ink.org][Ink Pond]] - - [[file:play/recipe.org][Supper Wheel]] - [[file:play/bookshelf.org][Bookshelf Sort]] - - [[file:play/constellation.org][Constellation Desk]] + - [[file:play/sigil.org][Sigil Press]] - [[file:play/memory.org][Memory Cabinet]] - - [[file:play/terminal.org][Archive Terminal]] + - [[file:play/constellation.org][Constellation Desk]] + - [[file:play/play.org][Play]] - [[file:play/study.org][Study Lamp]] - [[file:play/poem.org][Marginalia Machine]] - - [[file:play/the-rain-index.org][The Rain Index]] + - [[file:play/ink.org][Ink Pond]] + - [[file:play/timeline.org][Timeline Tangle]] + - [[file:play/recipe.org][Supper Wheel]] + - [[file:play/terminal.org][Archive Terminal]] + - [[file:play/rpg.org][Ash Below the Lake]] + - [[file:play/the-rain-index.org][The Rain Index]] \ No newline at end of file diff --git a/tags/learning.org b/tags/learning.org index 29d6739..e772ca6 100755 --- a/tags/learning.org +++ b/tags/learning.org @@ -6,16 +6,16 @@ - [[file:../posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] - [[file:../posts/career/javascript.org][Understands the Javascript language]] - [[file:../posts/career/restful-api.org][Restful API]] -- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:../posts/career/monitoring-and-logging.org][Monitoring and Logging]] - [[file:../posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] +- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:../posts/career/airflow.org][Datamarts, Airflow and DAG's]] - [[file:../posts/career/normalisation.org][Benefits of Normalisation]] -- [[file:../posts/career/management-of-self.org][Management of self training]] - [[file:../posts/career/wireframe-designs.org][Wireframe Designs]] +- [[file:../posts/career/management-of-self.org][Management of self training]] - [[file:../posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] - [[file:../posts/career/invest-principles.org][Invest Principles]] -- [[file:../posts/career/retrospectives.org][Retrospectives]] - [[file:../posts/career/lean.org][Lean]] +- [[file:../posts/career/retrospectives.org][Retrospectives]] - [[file:../posts/career/owasp.org][OWASP Top Ten]] - [[file:../posts/career/solid-principles.org][SOLID Principles]] diff --git a/tags/notes.org b/tags/notes.org index 4f5373c..2e41d11 100755 --- a/tags/notes.org +++ b/tags/notes.org @@ -6,17 +6,17 @@ - [[file:../posts/career/ha-dr.org][High Availability, Disaster Recovery and Business Continuity]] - [[file:../posts/career/javascript.org][Understands the Javascript language]] - [[file:../posts/career/restful-api.org][Restful API]] -- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:../posts/career/monitoring-and-logging.org][Monitoring and Logging]] - [[file:../posts/career/pipelines.org][Pipelines and how they work (as well as CI/CD)]] +- [[file:../posts/career/database-permissions.org][Database Permissions, Roles, and Accounts]] - [[file:../posts/career/probation-objectives.org][Probation Objectives:]] - [[file:../posts/career/airflow.org][Datamarts, Airflow and DAG's]] - [[file:../posts/career/normalisation.org][Benefits of Normalisation]] -- [[file:../posts/career/management-of-self.org][Management of self training]] - [[file:../posts/career/wireframe-designs.org][Wireframe Designs]] +- [[file:../posts/career/management-of-self.org][Management of self training]] - [[file:../posts/career/requirements-features.org][Requirements, features, user stories, tasks, walking skeletons]] - [[file:../posts/career/invest-principles.org][Invest Principles]] -- [[file:../posts/career/retrospectives.org][Retrospectives]] - [[file:../posts/career/lean.org][Lean]] +- [[file:../posts/career/retrospectives.org][Retrospectives]] - [[file:../posts/career/owasp.org][OWASP Top Ten]] - [[file:../posts/career/solid-principles.org][SOLID Principles]]