chalk-talk 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/assets/player.html +9 -1
- package/embed-mermaid.js +148 -147
- package/embed.js +9 -1
- package/markdown.d.ts +7 -0
- package/markdown.js +42 -0
- package/mount.d.ts +5 -0
- package/mount.global.js +316 -0
- package/mount.js +3 -0
- package/package.json +24 -6
- package/player.js +9 -1
- package/scripts/contract.mjs +1 -1
- package/scripts/mermaid.mjs +145 -144
package/mount.global.js
ADDED
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/*! chalk-talk (engine v0.247.0) — MIT; Rough.js (MIT); Caveat and Shantell Sans (SIL OFL) */
|
|
2
|
+
"use strict";(()=>{var jA=Object.create;var ac=Object.defineProperty;var XA=Object.getOwnPropertyDescriptor;var VA=Object.getOwnPropertyNames;var KA=Object.getPrototypeOf,ZA=Object.prototype.hasOwnProperty;var QA=(e,t,r)=>t in e?ac(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Ge=(e,t)=>()=>(e&&(t=e(e=0)),t);var O1=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Rt=(e,t)=>{for(var r in t)ac(e,r,{get:t[r],enumerable:!0})},JA=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of VA(t))!ZA.call(e,n)&&n!==r&&ac(e,n,{get:()=>t[n],enumerable:!(a=XA(t,n))||a.enumerable});return e};var D1=(e,t,r)=>(r=e!=null?jA(KA(e)):{},JA(t||!e||!e.__esModule?ac(r,"default",{value:e,enumerable:!0}):r,e));var le=(e,t,r)=>QA(e,typeof t!="symbol"?t+"":t,r);var ze,xe=Ge(()=>{ze={css:`/* One lesson (lesson.ts), wherever it is mounted: everything under .chalk-talk, so a page or a note keeps its own look.
|
|
3
|
+
The colours are variables a host can set (the Obsidian plugin maps them to its theme). */
|
|
4
|
+
.chalk-talk {
|
|
5
|
+
--ink: #242424;
|
|
6
|
+
--muted: #6b665c;
|
|
7
|
+
--line: #e0d8c6;
|
|
8
|
+
--card: #ffffff;
|
|
9
|
+
--paper: #fbf7ee;
|
|
10
|
+
--accent: #242424;
|
|
11
|
+
--on-accent: #ffffff;
|
|
12
|
+
--button-line: #cfc8b8;
|
|
13
|
+
--ok: #0e5a0b;
|
|
14
|
+
--ok-bg: #f1faf1;
|
|
15
|
+
--warn: #8a4b00;
|
|
16
|
+
--warn-bg: #fff6e5;
|
|
17
|
+
color: var(--ink);
|
|
18
|
+
font: 15px/1.5 'Shantell Sans', system-ui, sans-serif;
|
|
19
|
+
display: flex; flex-direction: column; gap: 14px;
|
|
20
|
+
}
|
|
21
|
+
.chalk-talk * { box-sizing: border-box; }
|
|
22
|
+
.chalk-talk:focus-visible { outline: 2px solid #2f5bea; outline-offset: 4px; border-radius: 10px; }
|
|
23
|
+
.chalk-talk .head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
|
|
24
|
+
.chalk-talk .eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
|
|
25
|
+
.chalk-talk h1 { margin: 0; font: 700 clamp(30px, 4vw, 44px)/1.1 'Caveat', cursive; color: var(--ink); }
|
|
26
|
+
.chalk-talk h2 { margin: 0 0 6px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
|
|
27
|
+
.chalk-talk button { font: inherit; font-size: 14px; color: var(--ink); background: var(--card); border: 1px solid var(--button-line); border-radius: 8px; padding: 7px 14px; cursor: pointer; box-shadow: none; height: auto; }
|
|
28
|
+
.chalk-talk button:hover:not(:disabled) { border-color: var(--ink); }
|
|
29
|
+
.chalk-talk button:disabled { opacity: .4; cursor: default; }
|
|
30
|
+
.chalk-talk button:focus-visible, .chalk-talk summary:focus-visible, .chalk-talk input:focus-visible { outline: 2px solid #2f5bea; outline-offset: 2px; }
|
|
31
|
+
.chalk-talk button.primary { background: var(--accent); color: var(--on-accent); border-color: var(--accent); font-weight: 700; }
|
|
32
|
+
.chalk-talk button.ghost { background: transparent; }
|
|
33
|
+
.chalk-talk button[hidden] { display: none; }
|
|
34
|
+
.chalk-talk .tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
|
|
35
|
+
.chalk-talk button[aria-pressed="true"] { background: var(--accent); color: var(--on-accent); border-color: var(--accent); }
|
|
36
|
+
.chalk-talk .downloads { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
|
|
37
|
+
.chalk-talk .top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
|
|
38
|
+
.chalk-talk .chapters { display: flex; flex-wrap: wrap; gap: 6px; flex: 1 1 auto; }
|
|
39
|
+
.chalk-talk .chapters button { border-radius: 999px; padding: 5px 12px; font-size: 13px; background: transparent; border: 1px dashed var(--button-line); color: var(--muted); }
|
|
40
|
+
.chalk-talk .chapters button.is-seen { background: var(--card); border: 1px solid var(--button-line); color: var(--ink); }
|
|
41
|
+
.chalk-talk .chapters button.is-on { background: var(--accent); border: 1px solid var(--accent); color: var(--on-accent); font-weight: 700; }
|
|
42
|
+
.chalk-talk .layout { display: flex; gap: 20px; align-items: flex-start; flex-wrap: wrap; }
|
|
43
|
+
.chalk-talk .board { flex: 1 1 640px; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
|
|
44
|
+
.chalk-talk .paper { position: relative; background: var(--paper); border: 1px solid var(--line); border-radius: 10px; padding: 8px; }
|
|
45
|
+
.chalk-talk .paper.is-board { background: #26372e; border-color: #1c2a23; }
|
|
46
|
+
.chalk-talk .paper svg { width: 100%; height: auto; display: block; }
|
|
47
|
+
.chalk-talk .bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; }
|
|
48
|
+
.chalk-talk .say { flex: 1 1 240px; min-width: 0; margin: 0; font-style: italic; color: var(--ink); opacity: .85; }
|
|
49
|
+
.chalk-talk .count { font-size: 13px; color: var(--muted); }
|
|
50
|
+
.chalk-talk aside { flex: 0 1 320px; min-width: 260px; display: flex; flex-direction: column; gap: 14px; }
|
|
51
|
+
.chalk-talk .card { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 14px; display: flex; flex-direction: column; gap: 10px; }
|
|
52
|
+
.chalk-talk .value { display: grid; grid-template-columns: 1fr auto; gap: 2px 8px; font-size: 14px; }
|
|
53
|
+
.chalk-talk .value b { font-size: 18px; }
|
|
54
|
+
.chalk-talk .value input { grid-column: 1 / -1; width: 100%; accent-color: var(--accent); }
|
|
55
|
+
.chalk-talk .switch { display: flex; align-items: center; gap: 8px; font-size: 14px; }
|
|
56
|
+
.chalk-talk .switch input { width: 18px; height: 18px; accent-color: var(--accent); }
|
|
57
|
+
.chalk-talk .learning p { margin: 0; font-size: 14px; }
|
|
58
|
+
.chalk-talk .learning summary { cursor: pointer; color: #1f4e9a; font-size: 14px; }
|
|
59
|
+
.chalk-talk .learning .caveat { color: var(--muted); font-size: 13px; }
|
|
60
|
+
.chalk-talk .check { font-size: 13px; line-height: 1.45; border-radius: 8px; padding: 10px 12px; color: var(--muted); border: 1px dashed var(--line); }
|
|
61
|
+
.chalk-talk .check.is-ok { color: var(--ok); background: var(--ok-bg); border: 1px solid #9fd89f; }
|
|
62
|
+
.chalk-talk .check.is-warn { color: var(--warn); background: var(--warn-bg); border: 1px solid #f1c27b; }
|
|
63
|
+
.chalk-talk .check ul { margin: 6px 0 0; padding-left: 18px; }
|
|
64
|
+
.chalk-talk .foot { margin: 0; font-size: 12px; color: var(--muted); }
|
|
65
|
+
@media (max-width: 720px) { .chalk-talk aside { flex-basis: 100%; } }
|
|
66
|
+
@media (prefers-reduced-motion: reduce) { .chalk-talk * { transition: none !important; } }
|
|
67
|
+
|
|
68
|
+
/* onda 3 */
|
|
69
|
+
.chalk-talk .ask { position: absolute; inset: auto 16px 16px 16px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; box-shadow: 0 6px 20px rgba(0,0,0,.15); }
|
|
70
|
+
.chalk-talk .ask[hidden] { display: none; }
|
|
71
|
+
.chalk-talk .ask p { margin: 0; flex: 1 1 240px; font-size: 18px; font-weight: 700; }
|
|
72
|
+
.chalk-talk .quiz[hidden] { display: none; }
|
|
73
|
+
.chalk-talk .quiz p { margin: 0; font-size: 14px; }
|
|
74
|
+
.chalk-talk .quiz .options { display: flex; flex-direction: column; gap: 6px; }
|
|
75
|
+
.chalk-talk .quiz .options button { text-align: left; }
|
|
76
|
+
.chalk-talk .quiz .options button.is-right { background: var(--ok-bg); border-color: #9fd89f; color: var(--ok); }
|
|
77
|
+
.chalk-talk .quiz .options button.is-wrong { background: var(--warn-bg); border-color: #f1c27b; color: var(--warn); }
|
|
78
|
+
.chalk-talk .quiz .why { color: var(--muted); }
|
|
79
|
+
.chalk-talk .quiz .why.is-right { color: var(--ok); }
|
|
80
|
+
.chalk-talk .transcript summary { cursor: pointer; font-size: 14px; font-weight: 700; }
|
|
81
|
+
.chalk-talk .transcript ol { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
|
|
82
|
+
.chalk-talk .transcript p { margin: 2px 0 0; }
|
|
83
|
+
|
|
84
|
+
/* the whole drawing, still: a picture of it, a PDF */
|
|
85
|
+
.chalk-talk.is-still .paper { border: 0; border-radius: 0; padding: 0; }
|
|
86
|
+
|
|
87
|
+
/* spec 2026-10-30 (Obsidian): the lesson inside a note \u2014 chapters and the two buttons on top, the bar below, the values
|
|
88
|
+
only when opened, nothing beside the paper */
|
|
89
|
+
.chalk-talk.is-compact { gap: 8px; font-size: 14px; }
|
|
90
|
+
.chalk-talk.is-compact .head { display: none; }
|
|
91
|
+
.chalk-talk.is-compact .layout { display: block; }
|
|
92
|
+
.chalk-talk.is-compact .board { gap: 8px; }
|
|
93
|
+
.chalk-talk.is-compact .bar { padding: 7px 9px; gap: 8px; }
|
|
94
|
+
.chalk-talk.is-compact .bar button, .chalk-talk.is-compact .top button { padding: 5px 11px; font-size: 13px; }
|
|
95
|
+
.chalk-talk.is-compact .count { display: none; }
|
|
96
|
+
.chalk-talk.is-compact aside { display: none; margin-top: 8px; min-width: 0; }
|
|
97
|
+
.chalk-talk.is-compact.show-values aside { display: flex; }
|
|
98
|
+
.chalk-talk.is-compact .say { flex-basis: 160px; }
|
|
99
|
+
|
|
100
|
+
/* spec 2026-10-30 (VS Code, docs): a block's mistake, and \xABExpand\xBB as a dialog over the page */
|
|
101
|
+
.chalk-talk-error { border: 1px solid #f1c27b; background: #fff6e5; color: #8a4b00; border-radius: 8px; padding: 10px 12px; font: 14px/1.45 system-ui, sans-serif; margin: 0.5em 0; }
|
|
102
|
+
.chalk-talk-error code { display: block; margin-top: 6px; color: #6b665c; }
|
|
103
|
+
.chalk-talk-block { margin: 0.75em 0; }
|
|
104
|
+
.chalk-talk-dialog { width: min(1280px, 94vw); max-width: none; max-height: 92vh; border: 0; border-radius: 12px; padding: 20px 20px 24px; background: #f3f1ec; color: #242424; }
|
|
105
|
+
.chalk-talk-dialog::backdrop { background: rgba(0, 0, 0, .45); }
|
|
106
|
+
.chalk-talk-close { position: sticky; top: 0; float: right; z-index: 1; font: 22px/1 system-ui, sans-serif; background: #fff; border: 1px solid #cfc8b8; border-radius: 8px; width: 36px; height: 36px; cursor: pointer; color: #242424; }
|
|
107
|
+
`,fonts:`@font-face{font-family:'Caveat';font-style:normal;font-weight:700;font-display:block;src:url(data:font/woff2;base64,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) format('woff2')}
|
|
108
|
+
@font-face{font-family:'Shantell Sans';font-style:normal;font-weight:400;font-display:block;src:url(data:font/woff2;base64,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) format('woff2')}
|
|
109
|
+
@font-face{font-family:'Shantell Sans';font-style:normal;font-weight:700;font-display:block;src:url(data:font/woff2;base64,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) format('woff2')}`}});function tE(e){let t=[],r=/\s*(\d+(?:\.\d+)?|\.\d+|[A-Za-z_][A-Za-z_0-9]*|>=|<=|==|!=|[-+*/^(),<>])/y,a=0;for(;a<e.length&&!/^\s*$/.test(e.slice(a));){r.lastIndex=a;let n=r.exec(e);if(!n)throw new Pa(`Unexpected character in "${e}" (position ${a})`);let i=n[1];/^[\d.]/.test(i)?t.push({kind:"num",value:parseFloat(i)}):/^[A-Za-z_]/.test(i)?t.push({kind:"id",value:i}):t.push({kind:"op",value:i}),a=r.lastIndex}return t}function rE(e,t){return new Tf(tE(e),t,e).parse()}function Et(e,t){let r=typeof e=="number"?e:rE(e,t);if(!Number.isFinite(r))throw new Pa(`Non-finite result in "${e}".`);return r}function nc(e,t,r=F1){if(!isFinite(e))return"?";let a=t===void 0?{maximumFractionDigits:2,minimumFractionDigits:0}:{maximumFractionDigits:t,minimumFractionDigits:t};return new Intl.NumberFormat(r,a).format(e)}function ga(e,t,r=F1){return e.replace(/\{([^{}:]+)(?::(\d))?\}/g,(a,n,i)=>nc(Et(n,t),i===void 0?void 0:Number(i),r))}var P1,z1,Cf,Pa,Tf,F1,Ml=Ge(()=>{xe();P1={sqrt:Math.sqrt,abs:Math.abs,sin:Math.sin,cos:Math.cos,tan:Math.tan,min:Math.min,max:Math.max,round:Math.round,floor:Math.floor,ceil:Math.ceil,pow:Math.pow,log:Math.log,exp:Math.exp},z1={pi:Math.PI,e:Math.E},Cf=["and","or","not"],Pa=class extends Error{};Tf=class{constructor(t,r,a){le(this,"i",0);le(this,"tokens");le(this,"scope");le(this,"src");this.tokens=t,this.scope=r,this.src=a}parse(){let t=this.or();if(this.i<this.tokens.length)throw new Pa(`Leftover input at the end of "${this.src}"`);return t}peekOp(...t){let r=this.tokens[this.i];return r&&r.kind==="op"&&t.includes(r.value)?r.value:null}expect(t){if(!this.peekOp(t))throw new Pa(`Expected "${t}" in "${this.src}"`);this.i++}word(t){let r=this.tokens[this.i];return!!r&&r.kind==="id"&&r.value===t}or(){let t=this.and();for(;this.word("or");){this.i++;let r=this.and();t=t!==0||r!==0?1:0}return t}and(){let t=this.not();for(;this.word("and");){this.i++;let r=this.not();t=t!==0&&r!==0?1:0}return t}not(){return this.word("not")?(this.i++,this.not()===0?1:0):this.compare()}compare(){let t=this.sum(),r=this.peekOp(">","<",">=","<=","==","!=");if(!r)return t;this.i++;let a=this.sum();return(r===">"?t>a:r==="<"?t<a:r===">="?t>=a:r==="<="?t<=a:r==="=="?t===a:t!==a)?1:0}sum(){let t=this.term(),r;for(;r=this.peekOp("+","-");){this.i++;let a=this.term();t=r==="+"?t+a:t-a}return t}term(){let t=this.unary(),r;for(;r=this.peekOp("*","/");){this.i++;let a=this.unary();t=r==="*"?t*a:t/a}return t}unary(){return this.peekOp("-")?(this.i++,-this.unary()):this.peekOp("+")?(this.i++,this.unary()):this.power()}power(){let t=this.primary();return this.peekOp("^")?(this.i++,Math.pow(t,this.unary())):t}primary(){let t=this.tokens[this.i];if(!t)throw new Pa(`Incomplete expression: "${this.src}"`);if(t.kind==="num")return this.i++,t.value;if(t.kind==="id"){if(this.i++,this.peekOp("(")){if(!Object.hasOwn(P1,t.value))throw new Pa(`Unknown function "${t.value}"`);let r=P1[t.value];this.i++;let a=[];if(!this.peekOp(")"))for(a.push(this.or());this.peekOp(",");)this.i++,a.push(this.or());return this.expect(")"),r(...a)}if(Cf.includes(t.value))throw new Pa(`"${t.value}" needs parentheses here, in "${this.src}"`);if(Object.hasOwn(this.scope,t.value))return this.scope[t.value];if(Object.hasOwn(z1,t.value))return z1[t.value];throw new Pa(`Unknown variable "${t.value}" in "${this.src}"`)}if(t.value==="("){this.i++;let r=this.or();return this.expect(")"),r}throw new Pa(`Unexpected symbol "${t.value}" in "${this.src}"`)}};F1="pt-BR"});function Y1(e){return[{kind:"polygon",points:[[-.15,-.72],[.15,-.72],[.19,-.38],[-.19,-.38]],fill:Ze.shirt,main:!0},{kind:"circle",c:[0,-.87],r:.11,fill:Ze.skin},...e,Ft([-.08,-.38],[-.1,0]),Ft([.08,-.38],[.1,0])]}function aE(e,t,r){let a=([n,i])=>[r+n*t,i*t];return e.map(n=>n.kind==="circle"?{...n,c:a(n.c),r:n.r*t}:{...n,points:n.points.map(a)})}function nE(){let e=[[-.28,-.3,.18],[-.06,-.45,.25],[.2,-.4,.21],[.37,-.27,.13]],t=[];for(let r=0;r<=24;r++){let a=-.46+.96*r/24,n=e.filter(([i,,l])=>Math.abs(a-i)<=l).map(([i,l,s])=>l-Math.sqrt(Math.max(0,s*s-(a-i)**2)));n.length&&t.push([a,Math.min(...n)])}return[...t,[.42,-.12],[-.4,-.12]]}function sE(e,t){let r=sc(e),a=r&&G1[r];if(!a)return[];let[n,i,l]=a,s=l/.11,o=(d,f)=>[n+d*s,i+f*s],c=[{kind:"circle",c:o(-.04,-.015),r:.012*s,fill:Ze.dark},{kind:"circle",c:o(.04,-.015),r:.012*s,fill:Ze.dark}],h={kind:"curve",points:[o(-.05,.03),o(0,.06),o(.05,.03)]};switch(t){case"happy":return[...c,h];case"sad":return[...c,{kind:"curve",points:[o(-.05,.065),o(0,.035),o(.05,.065)]}];case"surprised":return[...c,{kind:"circle",c:o(0,.05),r:.022*s}];case"worried":return[...c,{kind:"polyline",points:[o(-.05,.055),o(-.017,.04),o(.017,.065),o(.05,.05)]}];case"idea":return[...c,h,{kind:"circle",c:o(0,-.26),r:.07*s,fill:Ze.gold},{kind:"polygon",points:[o(-.03,-.19),o(.03,-.19),o(.03,-.16),o(-.03,-.16)],fill:Ze.metal},{kind:"polyline",points:[o(-.11,-.3),o(-.15,-.33)]},{kind:"polyline",points:[o(.11,-.3),o(.15,-.33)]},{kind:"polyline",points:[o(0,-.36),o(0,-.41)]}]}}function U1(e,t,r=_f,a=!1,n){let[i,l]=t,s=([c,h])=>[i+(a?-c:c)*r,l+h*r],o=sc(e);if(!o)throw new Error(`Unknown prop "${e}".`);return[...iE[o],...n?sE(o,n).map(c=>({...c,fine:!0})):[]].map(c=>c.kind==="circle"?{...c,c:s(c.c),r:c.r*r}:{...c,points:c.points.map(s)})}var vl,ic,sc,_f,W1,Ze,Nt,Ft,B1,iE,q1,G1,H1,lc=Ge(()=>{xe();vl=["person","person-pointing","person-sitting","house","car","bus","coin","phone","document","server","bank","cloud","queue","desk","computer","clock","lock","money-arrow","tree","school","hospital","factory","truck","cart","safe","bulb","gear","database","robot"],ic={pessoa:"person","pessoa-apontando":"person-pointing","pessoa-sentada":"person-sitting",casa:"house",carro:"car",onibus:"bus",moeda:"coin",celular:"phone",documento:"document",servidor:"server",banco:"bank",nuvem:"cloud",fila:"queue",mesa:"desk",computador:"computer",relogio:"clock",cadeado:"lock","seta-dinheiro":"money-arrow"},sc=e=>vl.includes(e)?e:typeof e=="string"&&Object.hasOwn(ic,e)?ic[e]:void 0,_f=80,W1=e=>sc(e)!==void 0,Ze={skin:"#E8C6A5",shirt:"#A9BCC3",wood:"#D8C29C",gold:"#F2C94C",paper:"#FFFFFF",screen:"#DCE8F0",device:"#5B6B7C",roof:"#D9785F",wall:"#F3E3C3",car:"#7FA7C9",bus:"#E9C46A",green:"#7DBE8A",dark:"#4A4A4A",metal:"#C9D3DD"},Nt=(e,t,r,a,n,i)=>({kind:"polygon",points:[[e,t],[e+r,t],[e+r,t+a],[e,t+a]],fill:n,main:i}),Ft=(...e)=>({kind:"polyline",points:e});B1=Y1([Ft([-.15,-.7],[-.25,-.42]),Ft([.15,-.7],[.25,-.42])]);iE={person:B1,"person-pointing":Y1([Ft([-.15,-.7],[-.25,-.42]),Ft([.15,-.69],[.47,-.73])]),"person-sitting":[Ft([-.3,-.8],[-.27,-.4]),Ft([-.32,-.4],[.2,-.4]),Ft([-.27,-.4],[-.27,0]),Ft([.16,-.4],[.16,0]),{kind:"polygon",points:[[-.22,-.77],[.04,-.77],[.06,-.44],[-.22,-.44]],fill:Ze.shirt,main:!0},{kind:"circle",c:[-.08,-.9],r:.1,fill:Ze.skin},Ft([-.1,-.44],[.3,-.44],[.32,0]),Ft([0,-.74],[.18,-.55],[.3,-.58])],house:[Nt(-.4,-.6,.8,.6,Ze.wall,!0),{kind:"polygon",points:[[-.5,-.58],[0,-1],[.5,-.58]],fill:Ze.roof},Nt(-.08,-.32,.16,.32,Ze.wood),Nt(.16,-.46,.16,.14,Ze.screen)],car:[{kind:"polygon",fill:Ze.car,main:!0,points:[[-.5,-.14],[-.5,-.32],[-.3,-.36],[-.18,-.56],[.2,-.56],[.32,-.36],[.5,-.32],[.5,-.14]]},{kind:"polygon",points:[[-.14,-.51],[.17,-.51],[.25,-.37],[-.22,-.37]],fill:Ze.screen},{kind:"circle",c:[-.28,-.12],r:.1,fill:Ze.dark},{kind:"circle",c:[.28,-.12],r:.1,fill:Ze.dark}],bus:[Nt(-.5,-.66,1,.52,Ze.bus,!0),...[-.42,-.21,0,.21].map(e=>Nt(e,-.6,.15,.16,Ze.screen)),Ft([-.5,-.3],[.5,-.3]),{kind:"circle",c:[-.3,-.12],r:.1,fill:Ze.dark},{kind:"circle",c:[.3,-.12],r:.1,fill:Ze.dark}],coin:[{kind:"circle",c:[0,-.42],r:.4,fill:Ze.gold,main:!0},{kind:"circle",c:[0,-.42],r:.3},{kind:"curve",points:[[.1,-.56],[-.08,-.57],[-.09,-.46],[.08,-.39],[.08,-.29],[-.11,-.28]]},Ft([0,-.64],[0,-.2])],phone:[Nt(-.26,-1,.52,1,Ze.device,!0),Nt(-.2,-.92,.4,.76,Ze.screen),{kind:"circle",c:[0,-.08],r:.035,fill:Ze.paper}],document:[{kind:"polygon",points:[[-.36,-1],[.16,-1],[.36,-.8],[.36,0],[-.36,0]],fill:Ze.paper,main:!0},Ft([.16,-1],[.16,-.8],[.36,-.8]),...[-.66,-.5,-.34,-.18].map(e=>Ft([-.22,e],[.22,e]))],server:[-1,-.66,-.32].flatMap(e=>[Nt(-.36,e,.72,.3,Ze.metal,!0),Ft([-.26,e+.15],[.06,e+.15]),{kind:"circle",c:[.22,e+.15],r:.035,fill:Ze.green}]),bank:[{kind:"polygon",points:[[-.5,-.74],[0,-1],[.5,-.74]],fill:Ze.wall,main:!0},Nt(-.45,-.74,.9,.08,Ze.wall),...[-.33,-.11,.11,.33].map(e=>Nt(e-.04,-.66,.08,.56,Ze.paper)),Nt(-.5,-.1,1,.1,Ze.wall)],cloud:[{kind:"polygon",points:nE(),fill:Ze.paper,main:!0}],queue:[-.32,0,.32].flatMap(e=>aE(B1,.7,e)),desk:[Nt(-.5,-.5,1,.07,Ze.wood,!0),Ft([-.42,-.43],[-.42,0]),Ft([.42,-.43],[.42,0])],computer:[Nt(-.45,-1,.9,.6,Ze.device,!0),Nt(-.39,-.94,.78,.48,Ze.screen),{kind:"polygon",points:[[-.06,-.4],[.06,-.4],[.1,-.1],[-.1,-.1]],fill:Ze.device},Nt(-.25,-.1,.5,.08,Ze.device)],clock:[{kind:"circle",c:[0,-.48],r:.45,fill:Ze.paper,main:!0},...[[0,-.9,0,-.82],[.42,-.48,.34,-.48],[0,-.06,0,-.14],[-.42,-.48,-.34,-.48]].map(([e,t,r,a])=>Ft([e,t],[r,a])),Ft([0,-.48],[0,-.78]),Ft([0,-.48],[.2,-.48])],lock:[{kind:"curve",points:[[-.22,-.52],[-.22,-.76],[0,-.96],[.22,-.76],[.22,-.52]]},Nt(-.36,-.54,.72,.54,Ze.bus,!0),{kind:"circle",c:[0,-.32],r:.06,fill:Ze.dark},Ft([0,-.28],[0,-.14])],"money-arrow":[{kind:"polygon",fill:Ze.green,main:!0,points:[[-.5,-.4],[.12,-.4],[.12,-.56],[.5,-.3],[.12,-.04],[.12,-.2],[-.5,-.2]]},{kind:"circle",c:[-.2,-.3],r:.16,fill:Ze.gold},Ft([-.2,-.4],[-.2,-.2])],tree:[Nt(-.07,-.36,.14,.36,Ze.wood),{kind:"circle",c:[0,-.64],r:.3,fill:Ze.green,main:!0}],school:[Nt(-.45,-.6,.9,.6,Ze.wall,!0),{kind:"polygon",points:[[-.5,-.6],[0,-.82],[.5,-.6]],fill:Ze.roof},Nt(-.08,-.28,.16,.28,Ze.wood),Nt(-.36,-.48,.16,.12,Ze.screen),Nt(.2,-.48,.16,.12,Ze.screen),Ft([0,-.82],[0,-1]),{kind:"polygon",points:[[0,-1],[.17,-.95],[0,-.9]],fill:Ze.roof}],hospital:[Nt(-.4,-.8,.8,.8,Ze.paper,!0),Nt(-.045,-.7,.09,.26,"#C8442C"),Nt(-.13,-.615,.26,.09,"#C8442C"),Nt(-.1,-.24,.2,.24,Ze.metal)],factory:[{kind:"polygon",points:[[-.5,0],[-.5,-.5],[-.25,-.65],[-.25,-.5],[0,-.65],[0,-.5],[.25,-.65],[.25,-.5],[.5,-.5],[.5,0]],fill:Ze.wall,main:!0},Nt(.3,-.95,.12,.3,Ze.dark),Nt(-.38,-.32,.16,.12,Ze.screen),Nt(-.08,-.32,.16,.12,Ze.screen),Nt(.22,-.32,.16,.12,Ze.screen)],truck:[Nt(-.5,-.62,.62,.46,Ze.metal,!0),{kind:"polygon",points:[[.12,-.16],[.12,-.5],[.34,-.5],[.48,-.32],[.48,-.16]],fill:Ze.bus},{kind:"polygon",points:[[.18,-.46],[.32,-.46],[.42,-.33],[.18,-.33]],fill:Ze.screen},{kind:"circle",c:[-.3,-.1],r:.1,fill:Ze.dark},{kind:"circle",c:[.3,-.1],r:.1,fill:Ze.dark}],cart:[Ft([-.48,-.78],[-.4,-.62]),{kind:"polygon",points:[[-.4,-.62],[.42,-.62],[.32,-.26],[-.3,-.26]],fill:Ze.metal,main:!0},Ft([-.3,-.26],[-.3,-.14],[.32,-.14]),{kind:"circle",c:[-.22,-.07],r:.06,fill:Ze.dark},{kind:"circle",c:[.24,-.07],r:.06,fill:Ze.dark}],safe:[Nt(-.4,-.82,.8,.82,Ze.device,!0),Nt(-.3,-.72,.6,.62,Ze.metal),{kind:"circle",c:[0,-.41],r:.13,fill:Ze.paper},Ft([0,-.41],[.08,-.47])],bulb:[{kind:"circle",c:[0,-.62],r:.3,fill:Ze.gold,main:!0},Nt(-.13,-.33,.26,.2,Ze.metal),{kind:"curve",points:[[-.09,-.52],[0,-.66],[.09,-.52]]},Ft([-.08,-.08],[.08,-.08])],gear:[{kind:"polygon",points:[[.42,-.5],[.296,-.378],[.297,-.203],[.122,-.204],[0,-.08],[-.122,-.204],[-.297,-.203],[-.296,-.378],[-.42,-.5],[-.296,-.622],[-.297,-.797],[-.122,-.796],[-0,-.92],[.122,-.796],[.297,-.797],[.296,-.622]],fill:Ze.metal,main:!0},{kind:"circle",c:[0,-.5],r:.12,fill:Ze.paper}],database:[{kind:"polygon",points:[[-.35,-.8],[.35,-.8],[.35,-.16],[-.35,-.16]],fill:Ze.screen,main:!0},{kind:"polygon",points:[[.35,-.8],[.303,-.755],[.175,-.722],[0,-.71],[-.175,-.722],[-.303,-.755],[-.35,-.8],[-.303,-.845],[-.175,-.878],[-0,-.89],[.175,-.878],[.303,-.845]],fill:Ze.metal},{kind:"curve",points:[[-.35,-.16],[0,-.06],[.35,-.16]]},{kind:"curve",points:[[-.35,-.58],[0,-.48],[.35,-.58]]},{kind:"curve",points:[[-.35,-.37],[0,-.27],[.35,-.37]]}],robot:[Ft([0,-.95],[0,-1]),Nt(-.22,-.95,.44,.3,Ze.metal),{kind:"circle",c:[-.09,-.81],r:.045,fill:Ze.screen},{kind:"circle",c:[.09,-.81],r:.045,fill:Ze.screen},Nt(-.28,-.62,.56,.42,Ze.metal,!0),Ft([-.28,-.55],[-.42,-.35]),Ft([.28,-.55],[.42,-.35]),Nt(-.2,-.2,.12,.2,Ze.device),Nt(.08,-.2,.12,.2,Ze.device)]},q1=["happy","sad","surprised","worried","idea"],G1={person:[0,-.87,.11],"person-pointing":[0,-.87,.11],"person-sitting":[-.08,-.9,.1]},H1=e=>{let t=sc(e);return!!t&&t in G1}});function xi(e){let t={};for(let[r,a]of Object.entries(e.params??{}))t[r]=a.value;for(let[r,a]of Object.entries(e.switches??{}))t[r]=a.on?1:0;return t}function Fr(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t}: expected an object.`)}function Jt(e,t){if(typeof e!="string"||!e.trim()||e.length>2e3)throw new Error(`${t}: expected text of 1 to 2000 characters.`)}function Yt(e,t,r=-1e4,a=1e4){if(typeof e!="number"||!Number.isFinite(e)||e<r||e>a)throw new Error(`${t}: expected a number between ${r} and ${a}.`)}function Jr(e,t){if(typeof e=="string"){if(Jt(e,t),e.length>300)throw new Error(`${t}: expression too long.`)}else Yt(e,t)}function Ur(e,t){if(!Array.isArray(e)||e.length!==2)throw new Error(`${t}: expected [x, y].`);e.forEach((r,a)=>Jr(r,`${t}[${a}]`))}function $n(e,t){e!==void 0&&Jt(e,t)}function Aa(e,t,r){if(e!==void 0&&(typeof e!="string"||!t.includes(e)))throw new Error(`${r}: choose one of ${t.join(", ")}.`)}function oc(e){if(!/^[A-Za-z_][A-Za-z_0-9]*$/.test(e)||["__proto__","constructor","prototype",...Cf].includes(e))throw new Error(`Invalid variable name: "${e}".`)}function cs(e,t,r,a){a&&e[t]===void 0&&(e[t]=[0,0]),Ur(e[t],`${r}.${t}`)}function cc(e,t,r,a,n=!1){if(Fr(e,t),++r.count>500)throw new Error(`${t}: a recipe draws at most 500 steps, counting those inside repeat and when.`);if(a){for(let s of["chapter","say","duration"])if(e[s]!==void 0)throw new Error(`${t}.${s}: put it on the ${a} step itself, not on a step inside it.`);if(e.type==="pause")throw new Error(`${t}: a pause cannot go inside ${a}.`);if(e.type==="repeat"&&a==="repeat")throw new Error(`${t}: a repeat cannot go inside another repeat.`);if(j1.includes(a)&&e.place!==void 0)throw new Error(`${t}.place: the ${a} places the steps inside it.`)}if(!lE.includes(e.type))throw new Error(`${t}: unknown type "${e.type}".`);for(let s of["id","say","chapter"])$n(e[s],`${t}.${s}`);if(e.duration!==void 0&&Yt(e.duration,`${t}.duration`,0,3e4),e.nudge!==void 0){if(["pause","move","link"].includes(e.type))throw new Error(`${t}.nudge: a ${e.type} has no place of its own to move.`);if(!Array.isArray(e.nudge)||e.nudge.length!==2)throw new Error(`${t}.nudge: use [dx, dy].`);e.nudge.forEach((s,o)=>Yt(s,`${t}.nudge[${o}]`,-900,900))}let i=a!==null&&j1.includes(a)||n;if(e.place!==void 0){if(!hs.includes(e.type))throw new Error(`${t}.place: only ${hs.join(", ")} can be placed.`);if(Fr(e.place,`${t}.place`),Jt(e.place.to,`${t}.place.to`),!Al(r,String(e.place.to)))throw new Error(`${t}.place.to: no earlier step has the id "${e.place.to}".`);if(!["below","above","left","right"].includes(e.place.side))throw new Error(`${t}.place.side: choose one of below, above, left, right.`);e.place.gap!==void 0&&Yt(e.place.gap,`${t}.place.gap`,-200,400),Aa(e.place.align,["center","start","end"],`${t}.place.align`)}let l=i||e.place!==void 0;if(e.style!==void 0){Fr(e.style,`${t}.style`);for(let s of["color","fill"]){let o=e.style[s];if(o!==void 0&&(typeof o!="string"||!/^(#[\da-f]{3,8}|[a-z]+)$/i.test(o)))throw new Error(`${t}.style.${s}: use a hex colour or a colour name, no URLs.`)}for(let s of["width","roughness","bowing"])e.style[s]!==void 0&&Yt(e.style[s],`${t}.style.${s}`,0,20);if(e.style.opacity!==void 0&&Yt(e.style.opacity,`${t}.style.opacity`,0,1),e.style.dashed!==void 0&&typeof e.style.dashed!="boolean")throw new Error(`${t}: dashed must be a boolean.`);Aa(e.style.fillStyle,["hachure","solid","zigzag","cross-hatch","dots"],`${t}.style.fillStyle`)}switch(e.type){case"line":case"arrow":case"highlight":Ur(e.from,`${t}.from`),Ur(e.to,`${t}.to`),e.thickness!==void 0&&Yt(e.thickness,`${t}.thickness`,1,200);break;case"polyline":case"polygon":case"curve":if(!Array.isArray(e.points)||e.points.length<(e.type==="polygon"?3:2)||e.points.length>500)throw new Error(`${t}: points needs ${e.type==="polygon"?3:2} to 500 points.`);e.points.forEach((s,o)=>Ur(s,`${t}.points[${o}]`));break;case"circle":case"ellipse":cs(e,"center",t,l);for(let s of e.type==="circle"?["r"]:["rx","ry"])Jr(e[s],`${t}.${s}`),typeof e[s]=="number"&&Yt(e[s],`${t}.${s}`,0);break;case"text":cs(e,"at",t,l),Jt(e.text,`${t}.text`),e.size!==void 0&&Yt(e.size,`${t}.size`,1,200),e.rotate!==void 0&&Yt(e.rotate,`${t}.rotate`,-360,360),Aa(e.font,["hand","body"],`${t}.font`),Aa(e.anchor,["start","middle","end"],`${t}.anchor`);break;case"card":cs(e,"at",t,l),Jr(e.w,`${t}.w`),Jr(e.h,`${t}.h`);for(let s of["w","h"])typeof e[s]=="number"&&Yt(e[s],`${t}.${s}`,40);if(Jt(e.title,`${t}.title`),e.lines!==void 0){if(!Array.isArray(e.lines)||e.lines.length>6)throw new Error(`${t}: at most 6 lines per card.`);e.lines.forEach((s,o)=>Jt(s,`${t}.lines[${o}]`))}break;case"plot":Jt(e.fn,`${t}.fn`),e.var!==void 0&&(Jt(e.var,`${t}.var`),oc(String(e.var))),Ur(e.domain,`${t}.domain`),Ur(e.range,`${t}.range`),Fr(e.box,`${t}.box`);for(let s of["x","y","w","h"])Jr(e.box[s],`${t}.box.${s}`);if(e.samples!==void 0&&(Yt(e.samples,`${t}.samples`,2,1e3),!Number.isInteger(e.samples)))throw new Error(`${t}: samples must be an integer.`);break;case"pause":Yt(e.ms,`${t}.ms`,0,3e4),$n(e.ask,`${t}.ask`);break;case"prop":if(!W1(e.name))throw new Error(`${t}.name: unknown prop "${String(e.name)}"; use one of ${vl.join(", ")}.`);if(cs(e,"at",t,l),e.size!==void 0&&(Jr(e.size,`${t}.size`),typeof e.size=="number"&&Yt(e.size,`${t}.size`,10,1e3)),$n(e.label,`${t}.label`),e.flip!==void 0&&typeof e.flip!="boolean")throw new Error(`${t}.flip: expected true or false.`);if(e.mood!==void 0){if(!H1(e.name))throw new Error(`${t}.mood: only a person (person, person-pointing, person-sitting) has a face.`);Aa(e.mood,q1,`${t}.mood`)}break;case"repeat":if(Jr(e.times,`${t}.times`),typeof e.times=="number"&&(Yt(e.times,`${t}.times`,0,oE),!Number.isInteger(e.times)))throw new Error(`${t}.times: expected a whole number.`);cc(e.step,`${t}.step`,r,"repeat",i);break;case"when":if(Jr(e.if,`${t}.if`),!Array.isArray(e.steps)||e.steps.length===0||e.steps.length>50)throw new Error(`${t}.steps: expected 1 to 50 steps.`);e.steps.forEach((s,o)=>cc(s,`${t}.steps[${o}]`,r,a??"when"));break;case"move":if(Jt(e.target,`${t}.target`),!Al(r,String(e.target)))throw new Error(`${t}.target: no earlier step has the id "${e.target}".`);Ur(e.to,`${t}.to`),Aa(e.along,["line","curve"],`${t}.along`),e.ms!==void 0&&Yt(e.ms,`${t}.ms`,200,5e3);break;case"link":for(let s of["from","to"])if(Jt(e[s],`${t}.${s}`),!Al(r,String(e[s])))throw new Error(`${t}.${s}: no earlier step has the id "${e[s]}".`);$n(e.label,`${t}.label`);break;case"counter":if(cs(e,"at",t,l),Jr(e.value,`${t}.value`),e.format!==void 0&&(Jt(e.format,`${t}.format`),!String(e.format).includes("{v")))throw new Error(`${t}.format: show the number as {v}, e.g. "R$ {v:0}".`);e.size!==void 0&&Yt(e.size,`${t}.size`,1,200),Aa(e.anchor,["start","middle","end"],`${t}.anchor`);break;case"row":case"column":case"grid":if(i)throw new Error(`${t}: a ${e.type} cannot go inside another ${a}.`);if(cs(e,"at",t,!1),e.gap!==void 0&&Yt(e.gap,`${t}.gap`,0,400),e.type==="grid"){if(Yt(e.columns,`${t}.columns`,1,12),!Number.isInteger(e.columns))throw new Error(`${t}.columns: expected a whole number.`)}else Aa(e.align,["center","start","end"],`${t}.align`);if(!Array.isArray(e.steps)||e.steps.length===0||e.steps.length>50)throw new Error(`${t}.steps: expected 1 to 50 steps.`);e.steps.forEach((s,o)=>{Fr(s,`${t}.steps[${o}]`);let c=s.type==="repeat"?s.step?.type:s.type;if(!hs.includes(c))throw new Error(`${t}.steps[${o}]: a ${e.type} holds only ${hs.join(", ")} (or a repeat of one).`);cc(s,`${t}.steps[${o}]`,r,e.type)});break;case"axis":case"timeline":if(Ur(e.from,`${t}.from`),Ur(e.to,`${t}.to`),Ur(e.domain,`${t}.domain`),e.type==="axis"){if(e.ticks!==void 0){if(Array.isArray(e.ticks)){if(e.ticks.length>30)throw new Error(`${t}.ticks: at most 30 marks.`);e.ticks.forEach((s,o)=>Yt(s,`${t}.ticks[${o}]`))}else if(Yt(e.ticks,`${t}.ticks`,0,30),!Number.isInteger(e.ticks))throw new Error(`${t}.ticks: expected a whole number.`)}if($n(e.label,`${t}.label`),e.format!==void 0&&(Jt(e.format,`${t}.format`),!String(e.format).includes("{v")))throw new Error(`${t}.format: show the number as {v}, e.g. "{v} km".`)}else{if(!Array.isArray(e.marks)||e.marks.length===0||e.marks.length>20)throw new Error(`${t}.marks: expected 1 to 20 marks.`);e.marks.forEach((s,o)=>{Fr(s,`${t}.marks[${o}]`),Jr(s.at,`${t}.marks[${o}].at`),$n(s.label,`${t}.marks[${o}].label`),$n(s.text,`${t}.marks[${o}].text`)})}break;case"balloon":if(Jt(e.to,`${t}.to`),!Al(r,String(e.to)))throw new Error(`${t}.to: no earlier step has the id "${e.to}".`);if(Jt(e.text,`${t}.text`),String(e.text).length>300)throw new Error(`${t}.text: keep a balloon under 300 characters.`);Aa(e.side,["below","above","left","right"],`${t}.side`),Aa(e.kind,["speech","thought"],`${t}.kind`),e.width!==void 0&&Yt(e.width,`${t}.width`,80,600),e.size!==void 0&&Yt(e.size,`${t}.size`,12,60);break;case"brace":if(Ur(e.from,`${t}.from`),Ur(e.to,`${t}.to`),$n(e.label,`${t}.label`),e.flip!==void 0&&typeof e.flip!="boolean")throw new Error(`${t}.flip: expected true or false.`);break;case"note":if(Ur(e.at,`${t}.at`),Jt(e.text,`${t}.text`),e.to===void 0==(e.point===void 0))throw new Error(`${t}: a note points either to an element (to) or to a point (point).`);if(e.to!==void 0){if(Jt(e.to,`${t}.to`),!Al(r,String(e.to)))throw new Error(`${t}.to: no earlier step has the id "${e.to}".`)}else Ur(e.point,`${t}.point`);e.size!==void 0&&Yt(e.size,`${t}.size`,12,60);break;case"table":if(Ur(e.at,`${t}.at`),!Array.isArray(e.rows)||e.rows.length===0||e.rows.length>12)throw new Error(`${t}.rows: expected 1 to 12 rows.`);if(e.rows.forEach((s,o)=>{if(!Array.isArray(s)||s.length===0||s.length>6)throw new Error(`${t}.rows[${o}]: expected 1 to 6 cells.`);s.forEach((c,h)=>{if(typeof c!="string"||c.length>120)throw new Error(`${t}.rows[${o}][${h}]: expected text of up to 120 characters.`)})}),e.header!==void 0&&typeof e.header!="boolean")throw new Error(`${t}.header: expected true or false.`);e.size!==void 0&&Yt(e.size,`${t}.size`,12,40);break;case"bars":Fr(e.box,`${t}.box`);for(let s of["x","y","w","h"])Jr(e.box[s],`${t}.box.${s}`);if(!Array.isArray(e.values)||e.values.length===0||e.values.length>12)throw new Error(`${t}.values: expected 1 to 12 values.`);if(e.values.forEach((s,o)=>Jr(s,`${t}.values[${o}]`)),e.labels!==void 0){if(!Array.isArray(e.labels)||e.labels.length>e.values.length)throw new Error(`${t}.labels: at most one label per value.`);e.labels.forEach((s,o)=>Jt(s,`${t}.labels[${o}]`))}if(e.max!==void 0&&Jr(e.max,`${t}.max`),e.format!==void 0&&(Jt(e.format,`${t}.format`),!String(e.format).includes("{v")))throw new Error(`${t}.format: show the number as {v}, e.g. "{v}%".`);break}typeof e.id=="string"&&(a==="repeat"?r.repeated:r.exact).add(e.id)}function hc(e){Fr(e,"The recipe");let t=e;Yt(t.width,"width",100,4e3),Yt(t.height,"height",100,4e3);for(let a of["id","title","category"])$n(t[a],a);if(t.locale!==void 0&&!(typeof t.locale=="string"&&/^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$/.test(t.locale)&&Intl.NumberFormat.supportedLocalesOf([t.locale]).length>0))throw new Error('locale: expected a language tag such as "en-US" or "pt-BR".');if(Aa(t.background,["dots","grid","plain"],"background"),Aa(t.theme,["paper","chalkboard"],"theme"),t.quiz!==void 0){if(Fr(t.quiz,"quiz"),Jt(t.quiz.question,"quiz.question"),!Array.isArray(t.quiz.options)||t.quiz.options.length<2||t.quiz.options.length>4)throw new Error("quiz.options: expected 2 to 4 options.");if(t.quiz.options.forEach((a,n)=>{if(Fr(a,`quiz.options[${n}]`),Jt(a.text,`quiz.options[${n}].text`),Jt(a.why,`quiz.options[${n}].why`),typeof a.right!="boolean")throw new Error(`quiz.options[${n}].right: expected true or false.`)}),t.quiz.options.filter(a=>a.right===!0).length!==1)throw new Error("quiz.options: exactly one option is right.")}if(t.learning!==void 0){Fr(t.learning,"learning");for(let a of["goal","question","answer","caveat"])Jt(t.learning[a],`learning.${a}`)}if(t.params!==void 0){Fr(t.params,"params");for(let[a,n]of Object.entries(t.params))if(oc(a),Fr(n,`params.${a}`),Jt(n.label,`params.${a}.label`),Yt(n.min,`${a}.min`),Yt(n.max,`${a}.max`),Yt(n.step,`${a}.step`,1e-6),Yt(n.value,`${a}.value`,n.min,n.max),n.max<=n.min)throw new Error(`${a}: max must be greater than min.`)}if(t.vars!==void 0){Fr(t.vars,"vars");for(let[a,n]of Object.entries(t.vars))oc(a),Jr(n,`vars.${a}`)}if(t.switches!==void 0){Fr(t.switches,"switches");let a=Object.entries(t.switches);if(a.length>8)throw new Error("switches: at most 8.");for(let[n,i]of a){if(oc(n),Object.hasOwn(t.params??{},n)||Object.hasOwn(t.vars??{},n))throw new Error(`switches.${n}: the name is already a param or a var.`);if(Fr(i,`switches.${n}`),Jt(i.label,`switches.${n}.label`),typeof i.on!="boolean")throw new Error(`switches.${n}.on: expected true or false.`)}}if(!Array.isArray(t.steps)||t.steps.length===0||t.steps.length>250)throw new Error("A recipe needs 1 to 250 steps.");let r={exact:new Set,repeated:new Set,count:0};return t.steps.forEach((a,n)=>cc(a,`Step ${n+1}`,r,null)),{...t,id:t.id??"pasted",title:t.title??"",background:t.background??"dots"}}function X1(e,t="Start"){let r=e.steps.flatMap((a,n)=>a.chapter?[{title:a.chapter,start:n}]:[]);return(!r.length||r[0].start!==0)&&r.unshift({title:t,start:0}),r.map((a,n)=>({...a,end:(r[n+1]?.start??e.steps.length)-1}))}var lE,hs,j1,oE,Al,ds=Ge(()=>{xe();Ml();lc();lE=["card","line","arrow","polyline","polygon","curve","circle","ellipse","plot","text","highlight","pause","prop","repeat","when","move","link","counter","row","column","grid","axis","timeline","balloon","brace","note","table","bars"],hs=["text","prop","card","counter","circle","ellipse"],j1=["row","column","grid"],oE=50;Al=(e,t)=>t.includes("{")||e.exact.has(t)||[...e.repeated].some(r=>t.startsWith(`${r}-`)&&/^\d+$/.test(t.slice(r.length+1)))});var Bg=O1(ou=>{xe();var Ig=Object.defineProperty,FE=e=>Ig(e,"__esModule",{value:!0}),BE=(e,t)=>{for(var r in t)Ig(e,r,{get:t[r],enumerable:!0})};FE(ou);BE(ou,{GIFEncoder:()=>zg,applyPalette:()=>VE,default:()=>iS,nearestColor:()=>JE,nearestColorIndex:()=>Dg,nearestColorIndexWithDistance:()=>Pg,prequantize:()=>XE,quantize:()=>UE,snapColorsToPalette:()=>QE});var WE={signature:"GIF",version:"89a",trailer:59,extensionIntroducer:33,applicationExtensionLabel:255,graphicControlExtensionLabel:249,imageSeparator:44,signatureSize:3,versionSize:3,globalColorTableFlagMask:128,colorResolutionMask:112,sortFlagMask:8,globalColorTableSizeMask:7,applicationIdentifierSize:8,applicationAuthCodeSize:3,disposalMethodMask:28,userInputFlagMask:2,transparentColorFlagMask:1,localColorTableFlagMask:128,interlaceFlagMask:64,idSortFlagMask:32,localColorTableSizeMask:7};function Ng(e=256){let t=0,r=new Uint8Array(e);return{get buffer(){return r.buffer},reset(){t=0},bytesView(){return r.subarray(0,t)},bytes(){return r.slice(0,t)},writeByte(n){a(t+1),r[t]=n,t++},writeBytes(n,i=0,l=n.length){a(t+l);for(let s=0;s<l;s++)r[t++]=n[s+i]},writeBytesView(n,i=0,l=n.byteLength){a(t+l),r.set(n.subarray(i,i+l),t),t+=l}};function a(n){var i=r.length;if(i>=n)return;var l=1024*1024;n=Math.max(n,i*(i<l?2:1.125)>>>0),i!=0&&(n=Math.max(n,256));let s=r;r=new Uint8Array(n),t>0&&r.set(s.subarray(0,t),0)}}var iu=12,Tg=5003,YE=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];function qE(e,t,r,a,n=Ng(512),i=new Uint8Array(256),l=new Int32Array(Tg),s=new Int32Array(Tg)){let o=l.length,c=Math.max(2,a);i.fill(0),s.fill(0),l.fill(-1);let h=0,d=0,f=c+1,g=f,p=!1,m=g,x=(1<<m)-1,y=1<<f-1,$=y+1,k=y+2,I=0,_=r[0],L=0;for(let q=o;q<65536;q*=2)++L;L=8-L,n.writeByte(c),W(y);let R=r.length;for(let q=1;q<R;q++)e:{let C=r[q],K=(C<<iu)+_,Q=C<<L^_;if(l[Q]===K){_=s[Q];break e}let G=Q===0?1:o-Q;for(;l[Q]>=0;)if(Q-=G,Q<0&&(Q+=o),l[Q]===K){_=s[Q];break e}W(_),_=C,k<1<<iu?(s[Q]=k++,l[Q]=K):(l.fill(-1),k=y+2,p=!0,W(y))}return W(_),W($),n.writeByte(0),n.bytesView();function W(q){for(h&=YE[d],d>0?h|=q<<d:h=q,d+=m;d>=8;)i[I++]=h&255,I>=254&&(n.writeByte(I),n.writeBytesView(i,0,I),I=0),h>>=8,d-=8;if((k>x||p)&&(p?(m=g,x=(1<<m)-1,p=!1):(++m,x=m===iu?1<<m:(1<<m)-1)),q==$){for(;d>0;)i[I++]=h&255,I>=254&&(n.writeByte(I),n.writeBytesView(i,0,I),I=0),h>>=8,d-=8;I>0&&(n.writeByte(I),n.writeBytesView(i,0,I),I=0)}}}var GE=qE;function Lg(e,t,r){return e<<8&63488|t<<2&992|r>>3}function Rg(e,t,r,a){return e>>4|t&240|(r&240)<<4|(a&240)<<8}function Og(e,t,r){return e>>4<<8|t&240|r>>4}function Sc(e,t,r){return e<t?t:e>r?r:e}function Il(e){return e*e}function Cg(e,t,r){var a=0,n=1e100;let i=e[t],l=i.cnt,s=i.ac,o=i.rc,c=i.gc,h=i.bc;for(var d=i.fw;d!=0;d=e[d].fw){let g=e[d],p=g.cnt,m=l*p/(l+p);if(!(m>=n)){var f=0;r&&(f+=m*Il(g.ac-s),f>=n)||(f+=m*Il(g.rc-o),!(f>=n)&&(f+=m*Il(g.gc-c),!(f>=n)&&(f+=m*Il(g.bc-h),!(f>=n)&&(n=f,a=d))))}}i.err=n,i.nn=a}function su(){return{ac:0,rc:0,gc:0,bc:0,cnt:0,nn:0,fw:0,bk:0,tm:0,mtm:0,err:0}}function HE(e,t){let r=t==="rgb444"?4096:65536,a=new Array(r),n=e.length;if(t==="rgba4444")for(let i=0;i<n;++i){let l=e[i],s=l>>24&255,o=l>>16&255,c=l>>8&255,h=l&255,d=Rg(h,c,o,s),f=d in a?a[d]:a[d]=su();f.rc+=h,f.gc+=c,f.bc+=o,f.ac+=s,f.cnt++}else if(t==="rgb444")for(let i=0;i<n;++i){let l=e[i],s=l>>16&255,o=l>>8&255,c=l&255,h=Og(c,o,s),d=h in a?a[h]:a[h]=su();d.rc+=c,d.gc+=o,d.bc+=s,d.cnt++}else for(let i=0;i<n;++i){let l=e[i],s=l>>16&255,o=l>>8&255,c=l&255,h=Lg(c,o,s),d=h in a?a[h]:a[h]=su();d.rc+=c,d.gc+=o,d.bc+=s,d.cnt++}return a}function UE(e,t,r={}){let{format:a="rgb565",clearAlpha:n=!0,clearAlphaColor:i=0,clearAlphaThreshold:l=0,oneBitAlpha:s=!1}=r;if(!e||!e.buffer)throw new Error("quantize() expected RGBA Uint8Array data");if(!(e instanceof Uint8Array)&&!(e instanceof Uint8ClampedArray))throw new Error("quantize() expected RGBA Uint8Array data");let o=new Uint32Array(e.buffer),c=r.useSqrt!==!1,h=a==="rgba4444",d=HE(o,a),f=d.length,g=f-1,p=new Uint32Array(f+1);for(var m=0,y=0;y<f;++y){let N=d[y];if(N!=null){var x=1/N.cnt;h&&(N.ac*=x),N.rc*=x,N.gc*=x,N.bc*=x,d[m++]=N}}Il(t)/m<.022&&(c=!1);for(var y=0;y<m-1;++y)d[y].fw=y+1,d[y+1].bk=y,c&&(d[y].cnt=Math.sqrt(d[y].cnt));c&&(d[y].cnt=Math.sqrt(d[y].cnt));var $,k,I;for(y=0;y<m;++y){Cg(d,y,!1);var _=d[y].err;for(k=++p[0];k>1&&(I=k>>1,!(d[$=p[I]].err<=_));k=I)p[k]=$;p[k]=y}var L=m-t;for(y=0;y<L;){for(var R;;){var W=p[1];if(R=d[W],R.tm>=R.mtm&&d[R.nn].mtm<=R.tm)break;R.mtm==g?W=p[1]=p[p[0]--]:(Cg(d,W,!1),R.tm=y);var _=d[W].err;for(k=1;(I=k+k)<=p[0]&&(I<p[0]&&d[p[I]].err>d[p[I+1]].err&&I++,!(_<=d[$=p[I]].err));k=I)p[k]=$;p[k]=W}var q=d[R.nn],C=R.cnt,K=q.cnt,x=1/(C+K);h&&(R.ac=x*(C*R.ac+K*q.ac)),R.rc=x*(C*R.rc+K*q.rc),R.gc=x*(C*R.gc+K*q.gc),R.bc=x*(C*R.bc+K*q.bc),R.cnt+=q.cnt,R.mtm=++y,d[q.bk].fw=q.fw,d[q.fw].bk=q.bk,q.mtm=g}let Q=[];var G=0;for(y=0;;++G){let Y=Sc(Math.round(d[y].rc),0,255),N=Sc(Math.round(d[y].gc),0,255),S=Sc(Math.round(d[y].bc),0,255),M=255;h&&(M=Sc(Math.round(d[y].ac),0,255),s&&(M=M<=(typeof s=="number"?s:127)?0:255),n&&M<=l&&(Y=N=S=i,M=0));let b=h?[Y,N,S,M]:[Y,N,S];if(jE(Q,b)||Q.push(b),(y=d[y].fw)==0)break}return Q}function jE(e,t){for(let r=0;r<e.length;r++){let a=e[r],n=a[0]===t[0]&&a[1]===t[1]&&a[2]===t[2],i=a.length>=4&&t.length>=4?a[3]===t[3]:!0;if(n&&i)return!0}return!1}function Cc(e,t){var r=0,a;for(a=0;a<e.length;a++){let n=e[a]-t[a];r+=n*n}return r}function Tc(e,t){return t>1?Math.round(e/t)*t:e}function XE(e,{roundRGB:t=5,roundAlpha:r=10,oneBitAlpha:a=null}={}){let n=new Uint32Array(e.buffer);for(let i=0;i<n.length;i++){let l=n[i],s=l>>24&255,o=l>>16&255,c=l>>8&255,h=l&255;s=Tc(s,r),a&&(s=s<=(typeof a=="number"?a:127)?0:255),h=Tc(h,t),c=Tc(c,t),o=Tc(o,t),n[i]=s<<24|o<<16|c<<8|h<<0}}function VE(e,t,r="rgb565"){if(!e||!e.buffer)throw new Error("quantize() expected RGBA Uint8Array data");if(!(e instanceof Uint8Array)&&!(e instanceof Uint8ClampedArray))throw new Error("quantize() expected RGBA Uint8Array data");if(t.length>256)throw new Error("applyPalette() only works with 256 colors or less");let a=new Uint32Array(e.buffer),n=a.length,i=r==="rgb444"?4096:65536,l=new Uint8Array(n),s=new Array(i),o=r==="rgba4444";if(r==="rgba4444")for(let c=0;c<n;c++){let h=a[c],d=h>>24&255,f=h>>16&255,g=h>>8&255,p=h&255,m=Rg(p,g,f,d),x=m in s?s[m]:s[m]=KE(p,g,f,d,t);l[c]=x}else{let c=r==="rgb444"?Og:Lg;for(let h=0;h<n;h++){let d=a[h],f=d>>16&255,g=d>>8&255,p=d&255,m=c(p,g,f),x=m in s?s[m]:s[m]=ZE(p,g,f,t);l[h]=x}}return l}function KE(e,t,r,a,n){let i=0,l=1e100;for(let s=0;s<n.length;s++){let o=n[s],c=o[3],h=Mi(c-a);if(h>l)continue;let d=o[0];if(h+=Mi(d-e),h>l)continue;let f=o[1];if(h+=Mi(f-t),h>l)continue;let g=o[2];h+=Mi(g-r),!(h>l)&&(l=h,i=s)}return i}function ZE(e,t,r,a){let n=0,i=1e100;for(let l=0;l<a.length;l++){let s=a[l],o=s[0],c=Mi(o-e);if(c>i)continue;let h=s[1];if(c+=Mi(h-t),c>i)continue;let d=s[2];c+=Mi(d-r),!(c>i)&&(i=c,n=l)}return n}function QE(e,t,r=5){if(!e.length||!t.length)return;let a=e.map(l=>l.slice(0,3)),n=r*r,i=e[0].length;for(let l=0;l<t.length;l++){let s=t[l];s.length<i?s=[s[0],s[1],s[2],255]:s.length>i?s=s.slice(0,3):s=s.slice();let o=Pg(a,s.slice(0,3),Cc),c=o[0],h=o[1];h>0&&h<=n&&(e[c]=s)}}function Mi(e){return e*e}function Dg(e,t,r=Cc){let a=1/0,n=-1;for(let i=0;i<e.length;i++){let l=e[i],s=r(t,l);s<a&&(a=s,n=i)}return n}function Pg(e,t,r=Cc){let a=1/0,n=-1;for(let i=0;i<e.length;i++){let l=e[i],s=r(t,l);s<a&&(a=s,n=i)}return[n,a]}function JE(e,t,r=Cc){return e[Dg(e,t,r)]}function zg(e={}){let{initialCapacity:t=4096,auto:r=!0}=e,a=Ng(t),n=5003,i=new Uint8Array(256),l=new Int32Array(n),s=new Int32Array(n),o=!1;return{reset(){a.reset(),o=!1},finish(){a.writeByte(WE.trailer)},bytes(){return a.bytes()},bytesView(){return a.bytesView()},get buffer(){return a.buffer},get stream(){return a},writeHeader:c,writeFrame(h,d,f,g={}){let{transparent:p=!1,transparentIndex:m=0,delay:x=0,palette:y=null,repeat:$=0,colorDepth:k=8,dispose:I=-1}=g,_=!1;if(r?o||(_=!0,c(),o=!0):_=!!g.first,d=Math.max(0,Math.floor(d)),f=Math.max(0,Math.floor(f)),_){if(!y)throw new Error("First frame must include a { palette } option");tS(a,d,f,y,k),_g(a,y),$>=0&&rS(a,$)}let L=Math.round(x/10);eS(a,I,L,p,m);let R=!!y&&!_;aS(a,d,f,R?y:null),R&&_g(a,y),nS(a,h,d,f,k,i,l,s)}};function c(){Fg(a,"GIF89a")}}function eS(e,t,r,a,n){e.writeByte(33),e.writeByte(249),e.writeByte(4),n<0&&(n=0,a=!1);var i,l;a?(i=1,l=2):(i=0,l=0),t>=0&&(l=t&7),l<<=2,e.writeByte(0|l|0|i),Hn(e,r),e.writeByte(n||0),e.writeByte(0)}function tS(e,t,r,a,n=8){let s=lu(a.length)-1,o=128|n-1<<4|0|s,c=0,h=0;Hn(e,t),Hn(e,r),e.writeBytes([o,c,h])}function rS(e,t){e.writeByte(33),e.writeByte(255),e.writeByte(11),Fg(e,"NETSCAPE2.0"),e.writeByte(3),e.writeByte(1),Hn(e,t),e.writeByte(0)}function _g(e,t){let r=1<<lu(t.length);for(let a=0;a<r;a++){let n=[0,0,0];a<t.length&&(n=t[a]),e.writeByte(n[0]),e.writeByte(n[1]),e.writeByte(n[2])}}function aS(e,t,r,a){if(e.writeByte(44),Hn(e,0),Hn(e,0),Hn(e,t),Hn(e,r),a){let l=lu(a.length)-1;e.writeByte(128|l)}else e.writeByte(0)}function nS(e,t,r,a,n=8,i,l,s){GE(r,a,t,n,e,i,l,s)}function Hn(e,t){e.writeByte(t&255),e.writeByte(t>>8&255)}function Fg(e,t){for(var r=0;r<t.length;r++)e.writeByte(t.charCodeAt(r))}function lu(e){return Math.max(Math.ceil(Math.log2(e)),1)}var iS=zg});var rn,Nl,_c,Mn=Ge(()=>{xe();rn="#ffffff",Nl="#1e1e1e",_c={flowchart:{curve:"linear"},maxEdges:500,maxTextSize:5e4}});var ta,vi=Ge(()=>{xe();Mn();ta=class{constructor({converter:t}){this.convert=(r,a)=>this.converter(r,{...a,fontSize:a.fontSize||20}),this.converter=t}}});var Br,vn,Pr,Ll=Ge(()=>{xe();(function(e){e.ROUND="round",e.STADIUM="stadium",e.DOUBLECIRCLE="doublecircle",e.CIRCLE="circle",e.DIAMOND="diamond",e.CYLINDER="cylinder"})(Br||(Br={}));(function(e){e.COLOR="color"})(vn||(vn={}));(function(e){e.FILL="fill",e.STROKE="stroke",e.STROKE_WIDTH="stroke-width",e.STROKE_DASHARRAY="stroke-dasharray"})(Pr||(Pr={}))});var Gg=O1(Ic=>{"use strict";xe();Object.defineProperty(Ic,"__esModule",{value:!0});Ic.removeMarkdown=void 0;var fS=function(e,t){t===void 0&&(t={listUnicodeChar:""}),t=t||{},t.listUnicodeChar=t.hasOwnProperty("listUnicodeChar")?t.listUnicodeChar:!1,t.stripListLeaders=t.hasOwnProperty("stripListLeaders")?t.stripListLeaders:!0,t.gfm=t.hasOwnProperty("gfm")?t.gfm:!0,t.useImgAltText=t.hasOwnProperty("useImgAltText")?t.useImgAltText:!0,t.preserveLinks=t.hasOwnProperty("preserveLinks")?t.preserveLinks:!1;var r=e||"";r=r.replace(/^(-\s*?|\*\s*?|_\s*?){3,}\s*$/gm,"");try{t.stripListLeaders&&(t.listUnicodeChar?r=r.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm,t.listUnicodeChar+" $1"):r=r.replace(/^([\s\t]*)([\*\-\+]|\d+\.)\s+/gm,"$1")),t.gfm&&(r=r.replace(/\n={2,}/g,`
|
|
110
|
+
`).replace(/~{3}.*\n/g,"").replace(/~~/g,"").replace(/`{3}.*\n/g,"")),t.preserveLinks&&(r=r.replace(/\[(.*?)\][\[\(](.*?)[\]\)]/g,"$1 ($2)")),r=r.replace(/<[^>]*>/g,"").replace(/^[=\-]{2,}\s*$/g,"").replace(/\[\^.+?\](\: .*?$)?/g,"").replace(/\s{0,2}\[.*?\]: .*?$/g,"").replace(/\!\[(.*?)\][\[\(].*?[\]\)]/g,t.useImgAltText?"$1":"").replace(/\[(.*?)\][\[\(].*?[\]\)]/g,"$1").replace(/^\s{0,3}>\s?/g,"").replace(/(^|\n)\s{0,3}>\s?/g,`
|
|
111
|
+
|
|
112
|
+
`).replace(/^\s{1,2}\[(.*?)\]: (\S+)( ".*?")?\s*$/g,"").replace(/^(\n)?\s{0,}#{1,6}\s+| {0,}(\n)?\s{0,}#{0,} {0,}(\n)?\s{0,}$/gm,"$1$2$3").replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g,"$2").replace(/([\*_]{1,3})(\S.*?\S{0,1})\1/g,"$2").replace(/(`{3,})(.*?)\1/gm,"$2").replace(/`(.+?)`/g,"$1").replace(/\n{2,}/g,`
|
|
113
|
+
|
|
114
|
+
`)}catch(a){return console.error(a),e}return r};Ic.removeMarkdown=fS});var Hg,uS,Ai,pS,an,gS,Ug,An,mS,Un,Rl,fu=Ge(()=>{xe();Ll();Hg=D1(Gg(),1),uS=e=>{let t="\uE000";for(;e.includes(t);)t+="\uE000";return(0,Hg.removeMarkdown)(e.replace(/\n/g,t)).replace(new RegExp(t,"g"),`
|
|
115
|
+
`)},pS=()=>{if(Ai!==void 0)return Ai;if(typeof document>"u")return Ai=null,Ai;try{Ai=document.createElement("canvas").getContext("2d")}catch{Ai=null}return Ai},an=(e,t)=>{let r=pS();return r?(r.font=`${t}px Excalifont, sans-serif`,r.measureText(e).width):e.length*t*.6},gS={arrow_circle:{endArrowhead:"circle"},arrow_cross:{endArrowhead:"bar"},arrow_open:{endArrowhead:null,startArrowhead:null},double_arrow_circle:{endArrowhead:"circle",startArrowhead:"circle"},double_arrow_cross:{endArrowhead:"bar",startArrowhead:"bar"},double_arrow_point:{endArrowhead:"arrow",startArrowhead:"arrow"}},Ug=e=>gS[e],An=e=>{let t=e.text;return e.labelType==="markdown"&&(t=uS(t)),mS(t)},mS=e=>{let t=/\s?(fa|fab):[a-zA-Z0-9-]+/g;return e.replace(t,"")},Un=e=>{let t={};return Object.keys(e).forEach(r=>{switch(r){case Pr.FILL:{t.backgroundColor=e[r],t.fillStyle="solid";break}case Pr.STROKE:{t.strokeColor=e[r];break}case Pr.STROKE_WIDTH:{t.strokeWidth=Number(e[r]?.split("px")[0]);break}case Pr.STROKE_DASHARRAY:{t.strokeStyle="dashed";break}}}),t},Rl=e=>{let t={};return Object.keys(e).forEach(r=>{switch(r){case vn.COLOR:{t.strokeColor=e[r];break}}}),t}});var Ol,ra,Sa,En,ws,$s=Ge(()=>{xe();Ol=(e,t)=>[e,t],ra=e=>{let t={type:"line",x:e.startX,y:e.startY,points:[Ol(0,0),Ol(e.endX-e.startX,e.endY-e.startY)],width:e.endX-e.startX,height:e.endY-e.startY,strokeStyle:e.strokeStyle||"solid",strokeColor:e.strokeColor||"#000",strokeWidth:e.strokeWidth||1};return e.groupId&&Object.assign(t,{groupIds:[e.groupId]}),e.id&&Object.assign(t,{id:e.id}),t},Sa=e=>{let t={type:"text",x:e.x,y:e.y,width:e.width,height:e.height,text:e.text||"",fontSize:e.fontSize,verticalAlign:"top",strokeColor:e.color};return e.textAlign&&Object.assign(t,{textAlign:e.textAlign}),e.groupId&&Object.assign(t,{groupIds:[e.groupId]}),e.id&&Object.assign(t,{id:e.id}),t},En=e=>{let t={text:e?.label?.text||"",fontSize:e?.label?.fontSize,textAlign:e.label?.textAlign,verticalAlign:e.label?.verticalAlign||"middle",strokeColor:e.label?.color||"#000",...e.groupId?{groupIds:[e.groupId]}:{}},r={};e.type==="rectangle"&&e.subtype==="activation"&&(r={backgroundColor:"#e9ecef",fillStyle:"solid"});let a={id:e.id,type:e.type,x:e.x,y:e.y,width:e.width,height:e.height,label:t,strokeStyle:e?.strokeStyle,strokeWidth:e?.strokeWidth,strokeColor:e?.strokeColor,backgroundColor:e?.bgColor,fillStyle:"solid",...r};return e.groupId&&Object.assign(a,{groupIds:[e.groupId]}),a},ws=e=>{let t={type:"arrow",x:e.startX,y:e.startY,points:e.points?.map(([r,a])=>Ol(r,a))||[Ol(0,0),Ol(e.endX-e.startX,e.endY-e.startY)],width:e.endX-e.startX,height:e.endY-e.startY,strokeStyle:e?.strokeStyle||"solid",endArrowhead:e?.endArrowhead||null,startArrowhead:e?.startArrowhead||null,label:{text:e?.label?.text||"",fontSize:16,textAlign:e?.label?.textAlign,verticalAlign:e?.label?.verticalAlign,...e?.label?.labelPosition!==void 0?{labelPosition:e.label.labelPosition}:{}},roundness:e.roundness===void 0?{type:2}:e.roundness,start:e.start,end:e.end};return e.groupId&&Object.assign(t,{groupIds:[e.groupId]}),t}});var yS,xS,Kg,bS,wS,Zg,Pl,$S,jg,Qg,Jg,uu,kS,Xg,Vg,MS,vS,AS,em,ES,Dl,SS,TS,CS,_S,tm,rm=Ge(()=>{xe();vi();fu();Ll();$s();Mn();yS=(e,t)=>[e,t],xS=32,Kg=.62,bS=12,wS=12,Zg=1.25,Pl=5,$S=8,jg=3*Math.PI/2,Qg=(e,t)=>{let r=Math.max(...e.split(`
|
|
116
|
+
`).map(a=>a.length));return Math.max(20,Math.ceil(r*t*Kg))},Jg=e=>({x:e.x??0,y:e.y??0,width:e.width||0,height:e.height||0}),uu=e=>{let{x:t,y:r,width:a,height:n}=Jg(e);return{x:t+a/2,y:r+n/2}},kS=(e,t)=>{let{x:r,y:a,width:n,height:i}=Jg(t);return e.x>=r&&e.x<=r+n&&e.y>=a&&e.y<=a+i},Xg=(e,t)=>{let r=uu(e),a=t.x-r.x,n=t.y-r.y,i=(e.width||0)/2,l=(e.height||0)/2,s=Math.min(a?i/Math.abs(a):Number.POSITIVE_INFINITY,n?l/Math.abs(n):Number.POSITIVE_INFINITY);return Number.isFinite(s)?{x:r.x+a*s,y:r.y+n*s}:r},Vg=(e,t,r,a)=>{let n=r==="start"?e:e.slice().reverse(),i=n.findIndex(s=>!kS(s,t));if(i===-1){let s=[...n];return s[0]=Xg(t,a),r==="start"?s:s.reverse()}let l=[Xg(t,n[i]),...n.slice(i)];return r==="start"?l:l.reverse()},MS=(e,t)=>new Map(e.subGraphs.map(r=>{let a=Qg(An(r),t),n=r.laneHeader?0:a+xS*2,i=Math.max(r.width,n),l=r.x-(i-r.width)/2;return[r.id,{x:l,width:i,leftExpansion:r.x-l,rightExpansion:l+i-(r.x+r.width)}]})),vS=(e,t)=>{let r=new Map;e.subGraphs.forEach(s=>{s.nodeIds.forEach(o=>r.set(o,s.id))});let a=[...Object.keys(e.vertices),...e.subGraphs.map(s=>s.id)],n=s=>{let o=new Set,c=s;for(;r.has(c)&&!o.has(c);)o.add(c),c=r.get(c);return c},i=new Map;a.forEach(s=>{let o=n(s),c=i.get(o)||[];c.push(s),i.set(o,c)});let l=new Map(a.map(s=>[s,0]));return e.subGraphs.forEach(s=>{if(r.has(s.id)||!An(s).includes(`
|
|
117
|
+
`))return;let o=t.get(s.id);if(!o||!o.leftExpansion&&!o.rightExpansion)return;let c=s.x+s.width/2;i.forEach((h,d)=>{if(d===s.id)return;let f=e.subGraphs.find(x=>x.id===d),g=e.vertices[d],m=(f?f.x+f.width/2:g?g.x+g.width/2:c)<c?-o.leftExpansion:o.rightExpansion;h.forEach(x=>l.set(x,(l.get(x)||0)+m))})}),l},AS=(e,t,r)=>Math.min(...r.map(a=>{let n=e.vertices[a];return n?n.y:e.subGraphs.find(i=>i.id===a&&i.id!==t)?.y??Number.POSITIVE_INFINITY})),em=(e,t)=>{let r=e.split(`
|
|
118
|
+
`).length;return r<2?0:Math.ceil(r*t*Zg+Pl*2)},ES=(e,t)=>{let r=[];return e.subGraphs.forEach(a=>{let n=a.laneHeader?0:em(An(a),t);if(!n)return;let i=AS(e,a.id,a.nodeIds);if(!Number.isFinite(i))return;let l=Math.ceil(n-(i-a.y));if(l<=0)return;let s=r.find(o=>Math.abs(o.y-i)<.5);if(s){s.y=Math.min(s.y,i),s.amount=Math.max(s.amount,l);return}r.push({y:i,amount:l})}),r.sort((a,n)=>a.y-n.y)},Dl=(e,t)=>e.reduce((r,a)=>a.y<=t?r+a.amount:r,0),SS=(e,t,r)=>{let a=new Map,n=new Map(e.subGraphs.map(l=>[l.id,l])),i=l=>{let s=a.get(l);if(s)return s;let o=n.get(l);if(!o)return null;let c=o.y+Dl(t,o.y),h=o.laneHeader?0:em(An(o),r),d=c+Math.max(o.height,h);o.nodeIds.forEach(g=>{let p=e.vertices[g];if(p){let x=p.y+Dl(t,p.y)+p.height;x>d&&(d=x+Pl*2);return}if(g===l)return;let m=i(g);m&&m.y+m.height>d&&(d=m.y+m.height+Pl*2)});let f={y:c,height:d-c};return a.set(l,f),f};return e.subGraphs.forEach(l=>i(l.id)),a},TS=(e,t,r,a)=>{let n=a||20;if(e!==Br.CYLINDER||!t)return n;let i=Math.max(20,r-bS);if(Qg(t,n)<=i)return n;let s=Math.max(...t.split(`
|
|
119
|
+
`).map(o=>o.length));return Math.max(wS,Math.floor(i/(s*Kg)))},CS=e=>({elbowed:!0,roundness:null,fixedSegments:e.slice(2,-1).map((t,r)=>({start:e[r+1],end:t,index:r+2}))}),_S=({width:e,height:t,vertical:r},a)=>{let n=r?{x:a.x,y:a.y,width:e,height:a.height}:{x:a.x,y:a.y,width:a.width,height:t},i=a.containerStyle.strokeColor??Nl,l=[ra({type:"line",startX:r?n.x+n.width:n.x,startY:r?n.y:n.y+n.height,endX:n.x+n.width,endY:n.y+n.height,strokeColor:i,strokeWidth:a.containerStyle.strokeWidth??2,strokeStyle:a.containerStyle.strokeStyle})];if(a.text){let[s,o]=r?[n.height,n.width]:[n.width,n.height];l.unshift({id:a.id,type:"rectangle",x:n.x+(n.width-s)/2,y:n.y+(n.height-o)/2,width:s,height:o,...r?{angle:jg}:{},strokeColor:"transparent",backgroundColor:"transparent",label:{text:a.text,fontSize:a.fontSize,strokeColor:i,...a.labelStyle,...r?{angle:jg}:{}}})}return l},tm=new ta({converter:(e,t)=>{let r=[],a=[],n=[],i=[],l=t.fontSize,s=l||20,o=ES(e,s),c=SS(e,o,s),h=MS(e,s),d=vS(e,h),f=new Set(e.subGraphs.map(p=>p.id)),g=new Set(e.subGraphs.filter(p=>{let m=h.get(p.id),x=c.get(p.id);return An(p).includes(`
|
|
120
|
+
`)&&m?.width!==p.width||x?.height!==p.height}).map(p=>p.id));return e.subGraphs.slice().reverse().forEach(p=>{let m=[],x=An(p),y=s,$=h.get(p.id)||{x:p.x,width:p.width},k=$.width,I=$.x+(d.get(p.id)||0),_=c.get(p.id)||p,L=Un(p.containerStyle),R=Rl(p.labelStyle),W={id:p.id,type:"rectangle",groupIds:m,x:I,y:_.y,width:k,height:_.height,...L};if(r.push(W),p.laneHeader)i.push(..._S(p.laneHeader,{id:`${p.id}__title`,x:I,y:_.y,width:k,height:_.height,text:x,fontSize:y,containerStyle:L,labelStyle:R}));else if(x){let q=L.strokeWidth??2,C=x.split(`
|
|
121
|
+
`),K=Math.min(k-q*2,Math.max(...C.map(Q=>an(Q,y)))+(Pl+$S)*2+2);i.push({id:`${p.id}__title`,type:"rectangle",groupIds:m,x:I+(k-K)/2,y:_.y+q+4,width:Math.max(1,K),height:C.length*y*Zg+Pl*2,strokeColor:"transparent",backgroundColor:L.backgroundColor??rn,fillStyle:"solid",roughness:0,label:{groupIds:m,text:x,fontSize:y,strokeColor:L.strokeColor??Nl,...R}})}}),Object.values(e.vertices).forEach(p=>{if(!p)return;let m=[],x=An(p),y=p.x+(d.get(p.id)||0),$=p.y+Dl(o,p.y),k=TS(p.type,x,p.width,l),I=Un(p.containerStyle),_=Rl(p.labelStyle),L={id:p.id,type:"rectangle",groupIds:m,x:y,y:$,width:p.width,height:p.height,strokeWidth:2,...p.type!==Br.DOUBLECIRCLE&&{label:{groupIds:m,text:x,fontSize:k,..._}},link:p.link||null,backgroundColor:rn,fillStyle:"solid",...I},R;switch(p.type){case Br.STADIUM:{L={...L,roundness:{type:3}};break}case Br.ROUND:{L={...L,roundness:{type:3}};break}case Br.DOUBLECIRCLE:{m.push(`doublecircle_${p.id}}`),R={type:"ellipse",groupIds:m,x:y+5,y:$+5,width:p.width-5*2,height:p.height-5*2,strokeWidth:2,roundness:{type:3},label:{groupIds:m,text:x,fontSize:k,..._}},L={...L,groupIds:m,type:"ellipse"};break}case Br.CIRCLE:{L.type="ellipse";break}case Br.DIAMOND:{L.type="diamond";break}}n.push(L),R&&n.push(R)}),e.edges.forEach(p=>{let m=[],{startX:x,startY:y,reflectionPoints:$}=p,k=d.get(p.start)||0,I=d.get(p.end)||0,_=$.map((Y,N)=>{let S=$.length>1?N/($.length-1):0;return{...Y,x:Y.x+k+(I-k)*S,y:Y.y+Dl(o,Y.y)}}),L=Ug(p.type||"arrow_point"),R=[...n,...r].find(Y=>Y.id===p.start),W=[...n,...r].find(Y=>Y.id===p.end);if(!R||!W)return;let q=f.has(p.start);g.has(p.start)&&(_=Vg(_,R,"start",uu(W))),g.has(p.end)&&(_=Vg(_,W,"end",uu(R)));let C=_.map(Y=>yS(Y.x-_[0].x,Y.y-_[0].y)),K=q?_[0].y:y+Dl(o,y),G={id:`${p.start}_${p.end}`,type:"arrow",groupIds:m,x:q?_[0].x:x+k,y:K,strokeWidth:p.stroke==="thick"?4:2,strokeStyle:p.stroke==="dotted"?"dashed":void 0,points:C,...p.text?{label:{text:An(p),fontSize:l,groupIds:m,...p.labelPosition!==void 0?{labelPosition:p.labelPosition}:{}}}:{},roundness:{type:2},...p.orthogonal?CS(C):{},...L,start:{id:R.id||""},end:{id:W.id||""}};a.push(G)}),{elements:[...r,...a,...i,...n]}}})});var Sr,Ei=Ge(()=>{xe();Sr=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,r)=>(r&=63,r<36?t+=r.toString(36):r<62?t+=(r-26).toString(36).toUpperCase():r>62?t+="-":t+="_",t),"")});var am,nm=Ge(()=>{xe();vi();Ei();am=new ta({converter:e=>{let t=Sr(),{width:r,height:a}=e,n={type:"image",x:0,y:0,width:r,height:a,status:"saved",fileId:t};return{files:{[t]:{id:t,mimeType:e.mimeType,dataURL:e.dataURL}},elements:[n]}}})});var ks,pu,IS,NS,LS,RS,OS,DS,im,sm=Ge(()=>{xe();Ei();vi();$s();ks=10,pu=16,IS=24,NS=4,LS=1.25,RS=e=>{if(!e)return!0;let t=e.trim().toLowerCase();return t==="transparent"||t==="none"||t==="rgba(0,0,0,0)"||t==="rgba(0, 0, 0, 0)"},OS=(e,t)=>{let r=Math.max(...e.split(`
|
|
122
|
+
`).map(a=>a.length));return Math.max(20,Math.round(r*t*.6))},DS=(e,t)=>Math.max(IS,e.split(`
|
|
123
|
+
`).length*t*LS),im=new ta({converter:e=>{let t=[],r=[],a=[];Object.values(e.nodes).forEach(i=>{!i||!i.length||i.forEach(l=>{let s;switch(l.type){case"line":s=ra(l);break;case"rectangle":case"ellipse":s=En(l);break;case"text":s=Sa(l);break;default:throw`unknown type ${l.type}`}l.type==="rectangle"&&l?.subtype==="activation"?r.push(s):l.type==="rectangle"&&l.subtype==="note"?a.push(s):t.push(s)})}),Object.values(e.lines).forEach(i=>{i&&t.push(ra(i))});let n=[];if(Object.values(e.arrows).forEach(i=>{i&&(t.push(ws(i)),i.sequenceNumber&&n.push(En(i.sequenceNumber)))}),t.push(...r),t.push(...a),t.push(...n),e.loops){let{lines:i,texts:l,nodes:s}=e.loops;i.forEach(o=>{t.push(ra(o))}),l.forEach(o=>{t.push(Sa(o))}),s.forEach(o=>{t.push(En(o))})}return e.groups&&e.groups.forEach(i=>{let{actorKeys:l,name:s}=i,o=s?DS(s,pu):0,c=s?OS(s,pu):0,h,d,f,g;if(i.bounds)({x:h,y:d,width:f,height:g}=i.bounds);else{if(!l.length)return;let m=t.filter(_=>{if(_.id){let L=_.id.indexOf("-"),R=_.id.substring(0,L);return l.includes(R)}return!1});if(!m.length)return;let x=1/0,y=1/0,$=0,k=0;if(m.forEach(_=>{_.x===void 0||_.y===void 0||_.width===void 0||_.height===void 0||(x=Math.min(x,_.x),y=Math.min(y,_.y),$=Math.max($,_.x+_.width),k=Math.max(k,_.y+_.height))}),!Number.isFinite(x)||!Number.isFinite(y)||!Number.isFinite($)||!Number.isFinite(k))return;let I=$-x+ks*2;f=Math.max(I,c+ks*2),h=x-ks-(f-I)/2,d=y-ks-o,g=k-y+ks*2+o}let p=En({type:"rectangle",x:h,y:d,width:f,height:g,bgColor:RS(i.fill)?void 0:i.fill,strokeColor:"#1f1f1f",strokeWidth:1,id:Sr()});if(t.unshift(p),s){let m=Sa({type:"text",id:Sr(),text:s,x:h+NS,y:d+ks,width:c,height:o,fontSize:pu,color:"#1f1f1f"});t.push(m)}}),{elements:t}}})});var lm,om=Ge(()=>{xe();Ei();$s();vi();Mn();lm=new ta({converter:e=>{let t=[];return Object.values(e.arrows).forEach(r=>{if(!r)return;let a=ws(r);t.push(a)}),e.nodes.forEach(r=>{!r||!r.length||r.forEach(a=>{let n;switch(a.type){case"line":n=ra(a);break;case"rectangle":case"ellipse":n=En({...a,bgColor:a.bgColor??rn});break;case"text":n=Sa(a);break;default:throw`unknown type ${a.type}`}t.push(n)})}),Object.values(e.lines).forEach(r=>{r&&t.push(ra(r))}),Object.values(e.text).forEach(r=>{let a=Sa(r);t.push(a)}),Object.values(e.namespaces).forEach(r=>{let a=Object.keys(r.classes),n=[...a],i=[...e.lines,...e.arrows,...e.text];a.forEach(s=>{let o=i.filter(c=>c.metadata&&c.metadata.classId===s).map(c=>c.id);o.length&&n.push(...o)});let l={type:"frame",id:Sr(),name:r.id,children:n};t.push(l)}),{elements:t}}})});var cm,hm=Ge(()=>{xe();$s();vi();Mn();cm=new ta({converter:e=>{let t=[];return e.arrows.forEach(r=>{t.push(ws(r))}),e.nodes.forEach(r=>{!r||!r.length||r.forEach(a=>{let n;switch(a.type){case"line":n=ra(a);break;case"rectangle":case"ellipse":n=En({...a,bgColor:a.bgColor??rn});break;case"text":n=Sa(a);break;default:throw`unknown type ${a.type}`}t.push(n)})}),e.lines.forEach(r=>{t.push(ra(r))}),e.text.forEach(r=>{t.push(Sa(r))}),{elements:t}}})});var Lc,gm,mm,PS,gu,ym,xm,bm,wm,$m,mu,km,zS,FS,BS,WS,YS,Mm,dm,fm,um,qS,GS,pm,HS,US,vm,Am=Ge(()=>{xe();vi();Mn();fu();$s();Lc=(e,t)=>[e,t],gm=16,mm=14,PS=1,gu="#000000",ym=5,xm=ym*2,bm=ym*2,wm=1.25,$m=new Set(["choice","fork","join","stateStart","stateEnd","divider"]),mu=e=>e.shape==="stateEnd"?[`state_end_group_${e.id}`]:void 0,km=e=>e.shape==="rectWithTitle"&&e.description.length?[e.text,...e.description].join(`
|
|
124
|
+
`):e.text,zS=(e,t,r)=>{if(an(e,t)<=r)return[e];let a=[],n="";for(let i of e){let l=`${n}${i}`;if(n&&an(l,t)>r){a.push(n),n=i;continue}n=l}return n&&a.push(n),a},FS=(e,t,r)=>{if(!e.trim()||an(e,t)<=r)return e;let a=e.split(/\s+/).filter(Boolean),n=[],i="";for(let l of a){let s=zS(l,t,r);for(let[o,c]of s.entries()){let d=i?`${i}${i&&o===0?" ":""}${c}`:c;if(an(d,t)<=r){i=d;continue}i&&n.push(i),i=c}s.length>1}return n.push(i),n.join(`
|
|
125
|
+
`)},BS=(e,t,r)=>{let n=e.map(s=>FS(s,t,r)).join(`
|
|
126
|
+
`).split(`
|
|
127
|
+
`),i=Math.max(...n.map(s=>an(s,t))),l=n.length*t*wm;return{width:i,height:l}},WS=(e,t,r,a,n)=>{let i=e.split(`
|
|
128
|
+
`);for(let l=n;l>=mm;l-=PS){let{height:s}=BS(i,l,t);if(s<=r)return l}return a},YS=e=>{let t=km(e),r=e.fontSize??gm;if(!t||$m.has(e.shape))return r;let a=Math.max(1,e.width-xm),n=Math.max(1,e.height-bm),i=t.split(`
|
|
129
|
+
`);return i.length>1&&Math.max(...i.map(s=>an(s,r)))<=a?r:WS(t,a,n,i.length===1?r:mm,r)},Mm=e=>{if($m.has(e.shape))return;let t=km(e);if(t)return{text:t,fontSize:YS(e),verticalAlign:e.shape==="rectWithTitle"||e.shape==="roundedWithTitle"?"top":"middle",...Rl(e.labelStyle)}},dm=(e,{withLabel:t=!0}={})=>{let r=Un(e.containerStyle),a=t?Mm(e):void 0,n=e.shape==="choice"?"diamond":e.shape==="stateStart"||e.shape==="stateEnd"?"ellipse":"rectangle",i=e.shape==="rect"||e.shape==="rectWithTitle"||e.shape==="roundedWithTitle",l=e.shape==="stateStart"||e.shape==="fork"||e.shape==="join",s=e.shape==="rect"||e.shape==="rectWithTitle"||e.shape==="choice"||e.shape==="note",o=r.backgroundColor||r.strokeColor||gu,c=r.strokeColor||r.backgroundColor||gu;return{id:e.id,type:n,...mu(e)?{groupIds:mu(e)}:{},x:e.x,y:e.y,width:e.width,height:e.height,...a?{label:a}:{},...s?{backgroundColor:rn,fillStyle:"solid"}:{},...r,...i?{roundness:{type:3}}:{},...l?{backgroundColor:o,strokeColor:c,fillStyle:"solid"}:{}}},fm=32,um=.25,qS=(e,t)=>{let r=Math.min(e,t);return r<=fm/um?r*um:fm},GS=e=>{let t=Mm(e);if(!t)return null;let r=Un(e.containerStyle),a=r.strokeWidth??2,n=t.fontSize??gm,i=t.text.split(`
|
|
130
|
+
`),l=e.dividerLine?.startY??e.y+i.length*n*wm+bm,s=Math.max(...i.map(c=>an(c,n)))+xm+2,o=Math.min(e.width-a*2,Math.max(e.width-qS(e.width,e.height)*2,s));return{id:`${e.id}__title`,type:"rectangle",x:e.x+(e.width-o)/2,y:e.y+a+4,width:o,height:Math.max(1,l-e.y-a-4),label:{strokeColor:r.strokeColor??Nl,...t,verticalAlign:"middle"},strokeColor:"transparent",backgroundColor:r.backgroundColor??rn,fillStyle:"solid",roughness:0}},pm=e=>{if(!e.dividerLine)return null;let t=Un(e.containerStyle);return{id:`${e.id}__divider`,type:"line",x:e.dividerLine.startX,y:e.dividerLine.startY,width:e.dividerLine.endX-e.dividerLine.startX,height:e.dividerLine.endY-e.dividerLine.startY,points:[Lc(0,0),Lc(e.dividerLine.endX-e.dividerLine.startX,e.dividerLine.endY-e.dividerLine.startY)],strokeColor:t.strokeColor||"#000",strokeWidth:t.strokeWidth||1}},HS=e=>{let t=Un(e.containerStyle),r=Math.max(2,Math.min(e.width,e.height)*.32),a=e.endInnerColor||t.strokeColor||t.backgroundColor||gu;return{id:`${e.id}__inner`,type:"ellipse",groupIds:mu(e),x:e.x+r,y:e.y+r,width:Math.max(1,e.width-r*2),height:Math.max(1,e.height-r*2),backgroundColor:a,strokeColor:a,fillStyle:"solid",strokeWidth:1}},US=e=>{let t=e.reflectionPoints.map((r,a,n)=>{let i=n[0];return a===0?Lc(0,0):Lc(r.x-i.x,r.y-i.y)});return{id:e.id,type:"arrow",x:e.startX,y:e.startY,width:e.endX-e.startX,height:e.endY-e.startY,points:t,strokeColor:e.strokeColor||"#000",strokeWidth:e.strokeWidth||2,strokeStyle:e.strokeStyle||"solid",endArrowhead:e.isNoteEdge?null:"triangle",roundness:{type:2},start:{id:e.start},end:{id:e.end},...e.text?{label:{text:e.text,fontSize:16,...e.labelPosition!==void 0?{labelPosition:e.labelPosition}:{}}}:{}}},vm=new ta({converter:e=>{let t=[],r=l=>{let s=dm(l);t.push(s);let o=pm(l);o&&t.push(o),l.shape==="stateEnd"&&t.push(HS(l))},a=e.nodes.filter(l=>l.isRenderable),n=l=>l.shape==="roundedWithTitle",i=a.filter(n);return i.forEach(l=>{t.push(dm(l,{withLabel:!1}))}),e.lines?.forEach(l=>{t.push(ra(l))}),e.edges.forEach(l=>{t.push(US(l))}),i.forEach(l=>{let s=GS(l);s&&t.push(s);let o=pm(l);o&&t.push(o)}),a.filter(l=>!n(l)).forEach(r),e.texts?.forEach(l=>{t.push(Sa(l))}),{elements:t}}})});var jS,Em,Sm,yu=Ge(()=>{xe();jS=e=>e.replace(/fl°°/g,"#").replace(/fl°/g,"&").replace(/¶ß/g,";"),Em=e=>{e=jS(e);let t=e.replace(/#(\d+);/g,"&#$1;").replace(/#([a-z]+);/g,"&$1;"),r=document.createElement("textarea");return r.innerHTML=t,r.value},Sm=(e,t=.5)=>{let r=[];return e.forEach(a=>{let n=r[r.length-1];if(!n){r.push(a);return}Math.hypot(a[0]-n[0],a[1]-n[1])<=t||r.push(a)}),r}});var XS,Tm,Cm=Ge(()=>{xe();rm();nm();sm();om();hm();Am();yu();XS=e=>({...e,elements:e.elements.map(t=>{if(!("points"in t)||!Array.isArray(t.points))return t;let r=t.points;if(r.length<2)return t;let a=Sm(r);return a.length===r.length?t:{...t,points:a}})}),Tm=(e,t={})=>{let r=(()=>{switch(e.type){case"graphImage":return am.convert(e,t);case"flowchart":return tm.convert(e,t);case"sequence":return im.convert(e,t);case"class":return lm.convert(e,t);case"erd":return cm.convert(e,t);case"state":return vm.convert(e,t);default:throw new Error(`graphToExcalidraw: unknown graph type "${e.type}, only flowcharts are supported!"`)}})();return XS(r)}});function Rc(e,t,r){t==="__proto__"?Object.defineProperty(e,t,{value:r,enumerable:!0,writable:!0,configurable:!0}):e[t]=r}function zl(e){return e===" "||e===" "||e===`
|
|
131
|
+
`||e==="\r"}function xu(e){let t=e[0],r,a;if(t==='"'||t==="'"){let i=1;for(;;){if(i>=e.length)return null;let l=e[i];if(t==='"'&&l==="\\")i+=2;else if(l===t){if(t==='"'||e[i+1]!=="'")break;i+=2}else i++}for(r=i+1,a=r;zl(e[a]);)a++;if(e[a]!==":")return null}else{if(t===void 0||t3.test(t)||t==="-"&&(e.length<2||zl(e[1])||e[1]===":"||e[1]==="#"))return null;for(a=1;a<e.length&&e[a]!==":"&&e[a]!=="#";)a++;if(e[a]!==":")return null;for(r=a;zl(e[r-1]);)r--}let n=a+1;if(n<e.length&&!zl(e[n]))return null;for(;zl(e[n]);)n++;return{key:e.slice(0,r),length:n}}function wu(e){let t=e.trim();if(t===""||t==="~"||t==="null"||t==="Null"||t==="NULL")return null;if(t==="true"||t==="True"||t==="TRUE")return!0;if(t==="false"||t==="False"||t==="FALSE")return!1;let r=t[0];if(r!=="-"&&r!=="+"&&r!=="."&&(r<"0"||r>"9"))return t;if(KS.test(t)||e3.test(t))return Number(t);if(ZS.test(t)||QS.test(t)||JS.test(t)){let a=t[0]==="-",n=Number(a||t[0]==="+"?t.slice(1):t);return a?-n:n}return/^[-+]?\.(?:inf|Inf|INF)$/.test(t)?t[0]==="-"?-1/0:1/0:/^\.(?:nan|NaN|NAN)$/.test(t)?NaN:t}function Fl(e){if(!e.includes(`
|
|
132
|
+
`))return e;let t=e.split(`
|
|
133
|
+
`),r=t.length-1;for(let a=0;a<=r;a++){let n=t[a],i=0,l=n.length;if(a>0)for(;i<l&&(n.charCodeAt(i)===32||n.charCodeAt(i)===9);)i++;if(a<r)for(;l>i&&(n.charCodeAt(l-1)===32||n.charCodeAt(l-1)===9);)l--;t[a]=n.slice(i,l)}return t.join(`
|
|
134
|
+
`).replace(/\n+/g,a=>a.length===1?" ":`
|
|
135
|
+
`.repeat(a.length-1))}function r3(e){if(!e.includes("\\"))return Fl(e);let t="",r=Fl(e.replace(/\\\n[ \t]*/g,""));for(let a=0;a<r.length;a++){let n=r[a];if(n!=="\\"){t+=n;continue}let i=r[++a];if(i==="x"||i==="u"||i==="U"){let l=i==="x"?2:i==="u"?4:8;t+=String.fromCodePoint(parseInt(r.slice(a+1,a+1+l),16)),a+=l}else if(i in _m)t+=_m[i];else throw new Error("YAML: unknown escape sequence")}return t}function Si(e,t,r){for(;t<e.length;){let a=e[t];if(a===" "||a===`
|
|
136
|
+
`||a===" "||a==="\r"||r&&a===",")t++;else if(a==="#"&&(t===0||/\s/.test(e[t-1]))){let n=e.indexOf(`
|
|
137
|
+
`,t);t=n===-1?e.length:n}else break}return t}function Im(e,t){if(!t)throw new Error("YAML: missed comma between flow collection entries");if(e===",")throw new Error("YAML: expected the node content, but found ','")}function vs(e,t,r,a=0){if(a>Nm)throw new Error("YAML: nesting is too deep");t=Si(e,t,!1);let n=e[t];if(n==="{"){let l={};t++;let s=!0;for(;;){if(t=Si(e,t,!1),t>=e.length)throw new Ms("YAML: unexpected end of the stream within a flow collection");if(e[t]==="}")return[l,t+1];Im(e[t],s);let o;[o,t]=vs(e,t,":,}",a+1),t=Si(e,t,!1);let c=null;e[t]===":"&&([c,t]=vs(e,t+1,",}",a+1)),Rc(l,String(o),c),t=Si(e,t,!1),s=e[t]===",",s&&t++}}if(n==="["){let l=[];t++;let s=!0;for(;;){if(t=Si(e,t,!1),t>=e.length)throw new Ms("YAML: unexpected end of the stream within a flow collection");if(e[t]==="]")return[l,t+1];Im(e[t],s);let o;[o,t]=vs(e,t,",]",a+1),l.push(o),t=Si(e,t,!1),s=e[t]===",",s&&t++}}if(n==='"'){let l=t+1;for(;l<e.length&&e[l]!=='"';)l+=e[l]==="\\"?2:1;if(l>=e.length)throw new Ms("YAML: unexpected end of the stream within a double quoted scalar");return[r3(e.slice(t+1,l)),l+1]}if(n==="'"){let l=t+1;for(;l<e.length;){if(e[l]==="'"){if(e[l+1]!=="'")break;l++}l++}if(l>=e.length)throw new Ms("YAML: unexpected end of the stream within a single quoted scalar");return[Fl(e.slice(t+1,l)).replace(/''/g,"'"),l+1]}let i=t;for(;i<e.length;){let l=e[i];if(r.includes(l)&&(l!==":"||i+1>=e.length||/[\s,[\]{}]/.test(e[i+1])))break;if(l==="#"&&i>t&&/\s/.test(e[i-1])){let s=e.indexOf(`
|
|
138
|
+
`,i);return[wu(Fl(e.slice(t,i).trim())),s===-1?e.length:s]}i++}return[wu(Fl(e.slice(t,i).trim())),i]}function Bl(e){let t="";for(let r=0;r<e.length;r++){let a=e[r];if(t)a==="\\"&&t==='"'?r++:a===t&&(t="");else if(a==='"'||a==="'")t=a;else if(a==="#"&&(r===0||e[r-1]===" "||e[r-1]===" "))return e.slice(0,r)}return e}function a3(e,t,r){let a=t[0]===">",n=t.includes("-")?"-":t.includes("+")?"+":"",i=/[1-9]/.exec(t),l=i?r+Number(i[0]):-1,s=[];for(;e.i<e.lines.length;){let h=e.lines[e.i];if(h.trim()===""){s.push(""),e.i++;continue}let d=h.length-h.trimStart().length;if(l===-1){if(d<=r)break;l=d}if(d<l)break;s.push(h.slice(l)),e.i++}let o=0;for(;s.length>0&&s[s.length-1]==="";)s.pop(),o++;let c;if(a){c="";for(let h=0;h<s.length;h++){let d=s[h];if(h>0){let f=s[h-1];d===""?c+=`
|
|
139
|
+
`:f!==""&&(c+=/^[ \t]/.test(f)||/^[ \t]/.test(d)?`
|
|
140
|
+
`:" ")}c+=d}}else c=s.join(`
|
|
141
|
+
`);return s.length===0?n==="+"?`
|
|
142
|
+
`.repeat(o):"":n==="-"?c:n==="+"?c+`
|
|
143
|
+
`.repeat(o+1):c+`
|
|
144
|
+
`}function bu(e,t,r){let a=t[0];if((a==="|"||a===">")&&/^[|>][-+0-9]*\s*(?:#.*)?$/.test(t))return a3(e,t,r);if(a==="{"||a==="["||a==='"'||a==="'"){let i=e.i,l=t,s=0,o=1;for(;;)try{let[c,h]=vs(l,0,""),d=0;for(let g=l.indexOf(`
|
|
145
|
+
`);g!==-1&&g<h;g=l.indexOf(`
|
|
146
|
+
`,g+1))d++;let f=l.indexOf(`
|
|
147
|
+
`,h);if(Bl(l.slice(h,f===-1?l.length:f)).trim()!=="")throw new Error("YAML: unexpected content after a value");return e.i=i+d,c}catch(c){if(!(c instanceof Ms))throw c;if(i+s>=e.lines.length)throw new Error(c.message);let h=e.lines.slice(i+s,i+s+o);l+=`
|
|
148
|
+
`+h.join(`
|
|
149
|
+
`),s+=h.length,o*=2}}let n=Bl(t).trim();for(;e.i<e.lines.length;){let i=e.lines[e.i];if(i.trim()===""){let s=e.i;for(;s<e.lines.length&&e.lines[s].trim()==="";)s++;if(s>=e.lines.length||e.lines[s].length-e.lines[s].trimStart().length<=r)break;n+=`
|
|
150
|
+
`.repeat(s-e.i),e.i=s;continue}if(i.length-i.trimStart().length<=r)break;let l=Bl(i).trim();n+=(n.endsWith(`
|
|
151
|
+
`)?"":" ")+l,e.i++}return wu(n)}function Oc(e,t,r=0){if(r>Nm)throw new Error("YAML: nesting is too deep");if(e.skipBlank(),e.i>=e.lines.length)return null;let a=e.indent();if(a<t)return null;let n=e.lines[e.i].slice(a);if(n==="-"||n.startsWith("- ")){let l=[];for(;e.i<e.lines.length&&(e.skipBlank(),!(e.i>=e.lines.length||e.indent()!==a));){let s=e.lines[e.i].slice(a);if(s!=="-"&&!s.startsWith("- "))break;let o=s.slice(1),c=o.length-o.trimStart().length+1,h=Bl(o).trim();h===""?(e.i++,l.push(Oc(e,a+1,r+1))):xu(h)!==null?(e.lines[e.i]=" ".repeat(a+c)+o.trimStart(),l.push(Oc(e,a+c,r+1))):(e.i++,l.push(bu(e,o.trim(),a)))}return l}if(xu(n)===null)return e.i++,bu(e,n.trim(),a-1);let i={};for(;e.i<e.lines.length&&(e.skipBlank(),!(e.i>=e.lines.length));){let l=e.indent();if(l<a)break;if(l>a)throw new Error("YAML: bad indentation of a mapping entry");let s=e.lines[e.i].slice(a),o=xu(s);if(!o)throw new Error("YAML: can not read a block mapping entry");let c=String(vs(o.key,0,"")[0]),h=s.slice(o.length);if(e.i++,Bl(h).trim()==="")if(e.skipBlank(),e.i<e.lines.length){let d=e.indent(),f=e.lines[e.i].slice(d),g=f==="-"||f.startsWith("- ");Rc(i,c,d>a||g&&d===a?Oc(e,g?a:a+1,r+1):null)}else Rc(i,c,null);else Rc(i,c,bu(e,h.trim(),a))}return i}function Ba(e){let t=e.trim();if(t[0]==="{"||t[0]==="[")try{let[n,i]=vs(t,0,"");if(Si(t,i,!1)===t.length)return n}catch(n){throw n instanceof Ms?new Error(n.message):n}let r=new VS(e),a=Oc(r,0);if(r.skipBlank(),r.i<r.lines.length&&r.lines[r.i].trim()!=="...")throw new Error("YAML: end of the stream or a document separator is expected");return a}var Ms,Nm,VS,KS,ZS,QS,JS,e3,t3,_m,As=Ge(()=>{xe();Ms=class{constructor(e){le(this,"message");this.message=e}},Nm=64;VS=class{constructor(e){le(this,"lines");le(this,"i",0);this.lines=(e.includes("\r")?e.replace(/\r\n?/g,`
|
|
152
|
+
`):e).split(`
|
|
153
|
+
`)}skipBlank(){for(;this.i<this.lines.length;){let e=this.lines[this.i].trim();if(e!==""&&e[0]!=="#"&&e!=="---")break;this.i++}}indent(){let e=this.lines[this.i],t=0;for(;t<e.length&&e[t]===" ";)t++;if(e[t]===" ")throw new Error("YAML: tabs are not allowed for indentation");return t}},KS=/^[-+]?(?:0|[1-9][0-9]*)$/,ZS=/^[-+]?0x[0-9a-fA-F]+$/,QS=/^[-+]?0o[0-7]+$/,JS=/^[-+]?0b[01]+$/,e3=/^[-+]?(?:[0-9][0-9]*(?:\.[0-9]*)?|\.[0-9]+)(?:[eE][-+]?[0-9]+)?$/,t3=/[\s#:,[\]{}&*!|>'"%@`]/;_m={0:"\0",a:"\x07",b:"\b",t:" ",n:`
|
|
154
|
+
`,v:"\v",f:"\f",r:"\r",e:"\x1B"," ":" ",'"':'"',"/":"/","\\":"\\",N:"\x85",_:"\xA0",L:"\u2028",P:"\u2029"}});function je(e){return e<128?e===32||e>=9&&e<=13:e===160||e===5760||e>=8192&&e<=8202||e===8232||e===8233||e===8239||e===8287||e===12288||e===65279}function Ta(e){return e===32||e===9}function Ti(e){return e===10||e===13||e===8232||e===8233}function mt(e){return e>=48&&e<=57}function Sn(e){return e>=65&&e<=90||e>=97&&e<=122}function Dc(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function et(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95}var or=Ge(()=>{xe()});function ql(e,t){let r=1,a=0;for(let s=e.indexOf(`
|
|
155
|
+
`);s!==-1&&s<t;s=e.indexOf(`
|
|
156
|
+
`,s+1))r++,a=s+1;let n=e.indexOf(`
|
|
157
|
+
`,t);n===-1&&(n=e.length);let i=t-a+1,l=e.slice(a,n);return{line:r,column:i,snippet:l+`
|
|
158
|
+
`+"-".repeat(i-1)+"^"}}function st(e,t,r,a,n=!1){let i=ql(t,r),l=n?`Lexical error on line ${i.line}. Unrecognized text.`:`Parse error on line ${i.line}:`,s=n?`${l}
|
|
159
|
+
${i.snippet}`:`${l}
|
|
160
|
+
${i.snippet}
|
|
161
|
+
${a}`;return new Ke(s,"syntax",{type:e,...i})}function i3(e){if(!Pc){Pc=new Map;for(let t of n3.split(",")){let r=t.indexOf(":");Pc.set(t.slice(0,r),String.fromCodePoint(Number(t.slice(r+1))))}}return Pc.get(e)}function Lm(e,t){return e>0&&e<=1114111&&(e<55296||e>57343)?String.fromCodePoint(e):t}function o3(e){let t="",r=0,a=e.indexOf(Rm);for(;a!==-1;){let n=e.indexOf("\xB6",a+2);if(n===-1)break;if(e[n+1]==="\xDF"){let i=e[a+2]==="\xB0";t+=e.slice(r,a)+(i?"&#":"&")+e.slice(a+(i?3:2),n)+";",r=n+2}a=e.indexOf(Rm,n+1)}return r===0?e:t+e.slice(r)}function Tt(e){return e.includes(l3)&&(e=o3(e)),e.includes("&")&&(e=e.replace(s3,(t,r,a,n)=>r?Lm(Number(r),t):a?Lm(parseInt(a,16),t):i3(n)??t)),e}function Fm(e,t){let r=Wl,a=Yl;Wl=e,Yl=new Map;try{return t()}finally{Wl=r,Yl=a}}function Ss(e){if(Wl===void 0)return"";let t=Yl.get(e);return t===void 0&&(t=Wl(e)??"",Yl.set(e,t)),t}function Bm(e,t){let r=nn,a=Es;nn=e,Es=new Map;try{return t()}finally{nn=r,Es=a}}function Wm(){return nn!==void 0}function Om(e){return Number.isFinite(e)&&e>0}function Ym(e,t){if(nn===void 0)return;let r=t+`
|
|
162
|
+
`+e;if(Es.has(r))return Es.get(r);let a=nn(e,t)??void 0,n=a&&Om(a.width)&&Om(a.height)&&typeof("svg"in a?a.svg:a.html)=="string"?a:void 0;return Es.set(r,n),n}function qm(e){if(nn===void 0)return e();let t=nn;nn=void 0;try{return e()}finally{nn=t}}function Dm(e){let t=new Uint16Array(95);for(let r=0;r<95;r++)t[r]=parseInt(e.substr(r*2,2),36);return t}function u3(e){return e>=4352&&e<=4447||e>=11904&&e<=42191||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65072&&e<=65103||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=55296&&e<=56319}function p3(e){return e>=768&&e<=879||e>=8203&&e<=8207||e>=56320&&e<=57343||e>=65024&&e<=65039||e===65279}function m3(){let e=globalThis;try{if(e.OffscreenCanvas)return new e.OffscreenCanvas(1,1).getContext("2d");if(e.document)return e.document.createElement("canvas").getContext("2d")}catch{return null}return null}function Pm(){let e=globalThis;return e.document?.fonts??e.fonts}function x3(e,t,r){try{return e?.check(t,r)??!0}catch{return!0}}function b3(e,t="monospace"){let r=m3();if(!r)return null;let a=new Map,n="",i=Pm()?.size;return{width(l,s,o){let c=Pm();c?.size!==i&&(i=c?.size,a.clear());let h=(o&2?"italic ":"")+(o&1?"bold ":"")+s+"px "+(o&4?t:e),d=a.get(h);d||a.set(h,d=new Map);let f=d.get(l);return f===void 0&&(h!==n&&(r.font=n=h),f=r.measureText(l).width,x3(c,h,l)&&(d.size>=y3&&d.clear(),d.set(l,f))),f}}}function rt(e="sans-serif",t="monospace"){let r=e+`
|
|
163
|
+
`+t,a=zm.get(r);return a||(a=b3(e,t)??g3,zm.set(r,a)),a}var Ke,n3,Pc,s3,Rm,l3,Wl,Yl,nn,Es,c3,h3,d3,f3,g3,y3,zm,kt=Ge(()=>{xe();Ke=class extends Error{constructor(t,r="syntax",a={}){super(t);le(this,"code");le(this,"type");le(this,"mermaidType");le(this,"line");le(this,"column");le(this,"snippet");this.name="PeleError",this.code=r,this.type=a.type??null,this.mermaidType=a.mermaidType??null,this.line=a.line??0,this.column=a.column??0,this.snippet=a.snippet??""}};n3="amp:38,lt:60,gt:62,quot:34,apos:39,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,sect:167,copy:169,laquo:171,not:172,reg:174,deg:176,plusmn:177,sup2:178,sup3:179,micro:181,para:182,middot:183,sup1:185,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,euro:8364,trade:8482,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,radic:8730,infin:8734,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830,check:10003,cross:10007,AMP:38,LT:60,GT:62,QUOT:34,lsqb:91,rsqb:93,lcub:123,rcub:125,verbar:124,VerticalLine:124,midast:42,DiacriticalGrave:96,Hat:94,UnderBar:95,equals:61,colon:58,semi:59,num:35,percnt:37,lpar:40,rpar:41,lbrack:91,rbrack:93,lbrace:123,rbrace:125,vert:124,sol:47,bsol:92,quest:63,excl:33,ast:42,plus:43,comma:44,period:46,dollar:36,commat:64,grave:96,hat:94,lowbar:95,tilde:126,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969";s3=/&(?:#(\d+)|#[xX]([0-9a-fA-F]+)|(\w+));/g,Rm="\uFB02\xB0",l3="\xB6\xDF";Yl=new Map;Es=new Map;c3="7q7q9vfgfgopij5b9999atg87q997q7qfgfgfgfgfgfgfgfgfgfg7q7qg8g8g8fgs7ijijk2k2ijgzlmk27qdwijfgn5k2lmijlmk2ijgzk2ijq8ijijgz7q7q7qd1fg99fgfgdwfgfg7qfgfg6666dw66n5fgfgfgfg99dw7qfgdwk2dwdwdw9a789ag8",h3="7q99d6fgfgopk26m9999atg87q997q7qfgfgfgfgfgfgfgfgfgfg9999g8g8g8gzr3k2k2k2k2ijgzlmk27qfgk2gzn5k2lmijlmk2ijgzk2ijq8ijijgz997q99g8fg99fggzfggzfg99gzgz7q7qfg7qopgzgzgzgzatfg99gzfglmfgfgdwat7satg8";g3={width(e,t,r){let a=(r&4)!==0,n=r&1?f3??(f3=Dm(h3)):d3??(d3=Dm(c3)),i=0;for(let l=0;l<e.length;l++){let s=e.charCodeAt(l);if(!(s<32))if(s<127)i+=a?600:n[s-32];else{if(p3(s))continue;u3(s)?i+=a?1200:1e3:i+=a?600:580}}return i*t/1e3}};y3=2e4;zm=new Map});function Hm(e){for(let[t,r,a]of $3)if(a.test(e))return{type:t,mermaidType:r};return null}function E3(e){return(e.includes("%%")?e.replace(k3,""):e).trimStart()}function zc(e){return e===`
|
|
164
|
+
`||e==="\r"}function $u(e){return e!==void 0&&/\s/.test(e)}function S3(e){let t=0;for(;t<e.length&&$u(e[t])&&!zc(e[t]);)t++;let r=e.slice(0,t);if(!e.startsWith("---",t))return;let a=[];for(let d=t+3;d<e.length&&$u(e[d]);d++)zc(e[d])&&a.push(d);if(a.length===0)return;let n=r+"---",i=d=>{if(!zc(e[d])||!e.startsWith(n,d+1))return-1;let f=-1;for(let g=d+1+n.length;g<e.length&&$u(e[g]);g++)zc(e[g])&&(f=g);return f},l=`
|
|
165
|
+
`+n,s=-1;for(let d=e.lastIndexOf(l);d>a[0];d=e.lastIndexOf(l,d-1))if(i(d)!==-1){s=d;break}if(s===-1)return;let o=a[0];for(let d of a)d<s&&(o=d);let c=o+1,h=c>0?c-1:0;for(let d=e.indexOf(l,h);d!==-1&&d<=s;d=e.indexOf(l,d+1)){if(d<c)continue;let f=i(d);if(f!==-1)return{indent:r,body:e.slice(c,d),length:f+1}}}function Ci(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fc(e,t){for(let r of Object.keys(t)){if(A3.has(r))continue;let a=t[r],n=e[r];Ci(a)&&Ci(n)?Fc(n,a):Ci(a)?e[r]=Fc({},a):e[r]=a}return e}function T3(e,t){if(!e.includes("%%{"))return e;let r=e.trim().replace(/'/g,'"');Ts.lastIndex=0;let a;for(;(a=Ts.exec(r))!==null;){a.index===Ts.lastIndex&&Ts.lastIndex++;let n=a[1]??a[2];if(n==="wrap")t.wrap=!0;else if((n==="init"||n==="initialize")&&a[4])try{let i=JSON.parse(a[4].trim());Ci(i)&&Fc(t,i)}catch{}}return Ts.lastIndex=0,e.replace(Ts,"")}function Um(e){let t=e.includes("\r")?e.replace(/\r\n?/g,`
|
|
166
|
+
`):e,r=t.includes("<")?t.lastIndexOf(">"):-1;r>0&&(t=t.slice(0,r+1).replace(M3,(s,o,c)=>"<"+o+c.replace(v3,"='$1'")+">")+t.slice(r+1));let a={},n,i=0,l=t.includes("---")?S3(t):void 0;if(l){let s=l.indent?l.body.split(`
|
|
167
|
+
`).map(c=>c.startsWith(l.indent)?c.slice(l.indent.length):c).join(`
|
|
168
|
+
`):l.body,o;try{o=Ba(s)}catch(c){throw new Ke(`Front matter is not valid YAML. ${c.message}`,"syntax")}if(Ci(o)&&(o.title&&(n=String(o.title)),Ci(o.config)&&Fc(a,o.config),o.displayMode)){let c=Ci(a.gantt)?a.gantt:a.gantt={};c.displayMode=String(o.displayMode)}for(let c=t.indexOf(`
|
|
169
|
+
`);c!==-1&&c<l.length;c=t.indexOf(`
|
|
170
|
+
`,c+1))i++;t=t.slice(l.length)}return t=T3(t,a),{text:E3(t),title:n,config:a,withComments:t,lineOffset:i}}function Gm(e,t){let r=e.indexOf(t);if(r===-1)return e;let a="",n=0;for(;r!==-1;){ku.lastIndex=r;let i=ku.test(e)?ku.lastIndex-1:e.length,l=!1,s=-1;for(let o=r+t.length;o<i;o++){let c=e.charCodeAt(o);if(c===58)l=!0;else if(c===35){if(l){s=o;break}}else je(c)&&(l=!1)}if(s!==-1){let o=e.lastIndexOf(";",i-1);o>s&&(a+=e.slice(n,o),n=o+1)}r=i>=e.length?-1:e.indexOf(t,i+1)}return n===0?e:a+e.slice(n)}function I3(e){return e.includes("#")?Gm(Gm(e,"style"),"classDef").replace(C3,t=>{let r=t.substring(1,t.length-1);return(_3.test(r)?"\uFB02\xB0\xB0":"\uFB02\xB0")+r+"\xB6\xDF"}):e}function jm(...e){for(let t of e)Mu.set(t.type,t)}function Xm(e){return Mu.has(e)}function Vm(e){try{return e()}catch(t){throw t instanceof RangeError?new Ke("Diagram is nested too deeply.","limit"):t}}function Km(e,t){try{return t()}catch(r){throw r instanceof RangeError?new Ke("Diagram is nested too deeply.","limit",e):(r instanceof Ke&&(r.type??(r.type=e.type),r.mermaidType??(r.mermaidType=e.mermaidType)),r)}}function Qm(e,t=N3,r=R3,a){if(e.length>t)throw new Ke(`Diagram source is longer than the limit of ${t} characters.`,"limit");let n=Um(e),i=Hm(n.text);if(i===null)throw new Ke("No diagram type detected for the given text.","unsupported-diagram");let l=Mu.get(i.type);if(l===void 0)throw new Ke(`Diagram type "${i.type}" is not supported yet.`,"unsupported-diagram",i);let s=a?{...a,...n.config}:n.config,o=l.keepComments?n.withComments:n.text,c=Km(i,()=>l.parse(I3(o)+`
|
|
171
|
+
`,s,n.title,n.lineOffset,{maxEdges:r}));return{...i,diagram:l,model:c,config:s}}function O3(e,t){if(typeof e=="string")return Qm(e,t.limit,t.maxEdges,t.config);let r=Zm.get(e);if(r===void 0)throw new TypeError("render() takes diagram text or a model that parse() returned.");return r}function vu(e){return Hm(Um(e).text)?.type??null}function Au(e,t={}){return Vm(()=>{let r=Qm(e,t.limit,t.maxEdges,t.config),a=r.model;return Object.defineProperty(a,"mermaidType",{value:r.mermaidType,enumerable:!0}),Zm.set(a,r),a})}function jn(e,t={}){return Vm(()=>{let{type:r,mermaidType:a,diagram:n,model:i,config:l}=O3(e,t),s=l[n.section??r],o=typeof s=="object"&&s!==null&&!Array.isArray(s)&&s.useMaxWidth===!1,c=t.responsive??!o,h=t.icons,d=h&&(p=>h(Tt(p))),f=Km({type:r,mermaidType:a},()=>Bm(n.math?t.math:void 0,()=>Fm(d,()=>n.render(i,l,{...t,responsive:c,icons:d})))),g=t.outputLimit??L3;if(f.svg.length>g)throw new Ke(`Diagram output is longer than the limit of ${g} characters.`,"limit",{type:r,mermaidType:a});for(let p of f.links)p.id=Tt(p.id);return{type:r,mermaidType:a,...f}})}var $3,k3,Ts,M3,v3,A3,C3,_3,ku,pz,Mu,N3,L3,R3,Zm,Jm=Ge(()=>{xe();As();or();kt();$3=[["flowchart","flowchart-elk",/^\s*flowchart-elk/],["mindmap","mindmap",/^\s*mindmap/],["architecture","architecture",/^\s*architecture/],["agentflow","agentflow",/^\s*agentflow-beta\b/],["c4","c4",/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/],["kanban","kanban",/^\s*kanban/],["class","classDiagram",/^\s*classDiagram/],["er","er",/^\s*erDiagram/],["gantt","gantt",/^\s*gantt/],["info","info",/^\s*info/],["pie","pie",/^\s*pie/],["requirement","requirement",/^\s*requirement(Diagram)?/],["sequence","sequence",/^\s*sequenceDiagram/],["swimlane","swimlane",/^\s*swimlane-beta\b/],["flowchart","flowchart-v2",/^\s*(graph|flowchart)/],["timeline","timeline",/^\s*timeline/],["gitGraph","gitGraph",/^\s*gitGraph/],["state","stateDiagram",/^\s*stateDiagram/],["journey","journey",/^\s*journey/],["quadrantChart","quadrantChart",/^\s*quadrantChart/],["sankey","sankey",/^\s*sankey(-beta)?/],["packet","packet",/^\s*packet(-beta)?/],["xychart","xychart",/^\s*xychart(-beta)?/],["block","block",/^\s*block(-beta)?/],["eventmodeling","eventmodeling",/^\s*eventmodeling/],["treeView","treeView",/^\s*treeView-beta/],["radar","radar",/^\s*radar-beta/],["ishikawa","ishikawa",/^\s*ishikawa(-beta)?\b/i],["treemap","treemap",/^\s*treemap/],["railroad","railroad",/^\s*railroad-beta/i],["railroad","railroadEbnf",/^\s*railroad-ebnf-beta/i],["railroad","railroadAbnf",/^\s*railroad-abnf-beta/i],["railroad","railroadPeg",/^\s*railroad-peg-beta/i],["venn","venn",/^\s*venn-beta/],["wardley","wardley",/^\s*wardley-beta/i],["cynefin","cynefin",/^\s*cynefin-beta(?:[\s:]|$)/],["usecase","usecase",/^\s*usecase-beta(?:\s|$)/]];k3=/^\s*%%(?!{)[^\n]+\n?/gm,Ts=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,M3=/<(\w+)([^>]*)>/g,v3=/="([^"]*)"/g,A3=new Set(["__proto__","constructor","prototype"]);C3=/#\w+;/g,_3=/^\+?\d+$/,ku=new RegExp("[\\n\\r\u2028\u2029]","g");pz=Math.random().toString(36).slice(2,7),Mu=new Map;N3=5e4,L3=4e6,R3=5e3;Zm=new WeakMap});function Wc(e){return Bc.has(e)}function Yc(e){return e===void 0?"rect":z3.get(e)??Bc.get(e)??"rect"}var D3,P3,z3,Bc,Eu=Ge(()=>{xe();D3=[["rect","proc","process","rectangle","squareRect"],["rounded","event","roundedRect"],["stadium","terminal","pill"],["fr-rect","subprocess","subproc","framed-rectangle","subroutine"],["cyl","db","database","cylinder"],["datastore","data-store"],["folder","directory"],["bucket"],["console"],["browser"],["person"],["circle","circ"],["bang"],["cloud"],["diam","decision","diamond","question"],["hex","hexagon","prepare"],["lean-r","lean-right","in-out","lean_right"],["lean-l","lean-left","out-in","lean_left"],["trap-b","priority","trapezoid-bottom","trapezoid"],["trap-t","manual","trapezoid-top","inv-trapezoid","inv_trapezoid"],["dbl-circ","double-circle","doublecircle"],["text"],["notch-rect","card","notched-rectangle"],["lin-rect","lined-rectangle","lined-process","lin-proc","shaded-process"],["sm-circ","start","small-circle","stateStart"],["fr-circ","stop","framed-circle","stateEnd"],["fork","join","forkJoin"],["hourglass","collate"],["brace","comment","brace-l"],["brace-r"],["braces"],["bolt","com-link","lightning-bolt"],["doc","document"],["delay","half-rounded-rectangle"],["h-cyl","das","horizontal-cylinder"],["lin-cyl","disk","lined-cylinder"],["curv-trap","curved-trapezoid","display"],["div-rect","div-proc","divided-rectangle","divided-process"],["tri","extract","triangle"],["win-pane","internal-storage","window-pane"],["f-circ","junction","filled-circle"],["notch-pent","loop-limit","notched-pentagon"],["flip-tri","manual-file","flipped-triangle"],["sl-rect","manual-input","sloped-rectangle"],["docs","documents","st-doc","stacked-document"],["st-rect","procs","processes","stacked-rectangle"],["bow-rect","stored-data","bow-tie-rectangle"],["cross-circ","summary","crossed-circle"],["tag-doc","tagged-document"],["tag-rect","tagged-rectangle","tag-proc","tagged-process"],["flag","paper-tape"],["odd","rect_left_inv_arrow"],["lin-doc","lined-document"]],P3=["state","choice","note","composite","rectWithTitle","labelRect","block_arrow","collapsedGroup","iconSquare","iconCircle","icon","iconRounded","imageSquare","anchor","kanbanItem","mindmapCircle","defaultMindmapNode","classBox","erBox","requirementBox","usecaseActor","usecaseActorHollow","usecaseActorAwesome","usecaseActorIcon","usecaseBusiness","usecaseEllipse","usecaseJsonTable"],z3=new Map([["square","rect"],["round","rounded"],["ellipse","ellipse"],["hexagon","hex"],["diamond","diam"]]),Bc=new Map;for(let e of D3)for(let t of e)Bc.set(t,e[0]);for(let e of P3)Bc.set(e,e)});function W3(){let e=F3.split(" "),t=new Uint16Array(e.length),r=0;for(let a=0;a<e.length;a+=2){let n=r+parseInt(e[a],36);r=n+parseInt(e[a+1],36),t[a]=n,t[a+1]=r}return t}function Cs(e){if(e<170||e>65500)return!1;let t=B3??(B3=W3()),r=0,a=(t.length>>1)-1;for(;r<=a;){let n=r+a>>1;if(e<t[n*2])a=n-1;else if(e>t[n*2+1])r=n+1;else return!0}return!1}var F3,B3,qc=Ge(()=>{xe();F3="4q 0 b 0 5 0 6 m 2 u 2 cp 5 b f 4 8 0 2 0 3m 4 2 1 3 3 9 0 2 2 2 0 2 j 2 2a 2 3u 9 4d a 11 3 0 8 12 21 q 6 2 1a 16 10 1 2 2q 2 0 g 1 8 1 b 2 3 0 h 0 2 t u 2g c 0 p w a 1 5 0 6 l 5 0 a 0 4 0 o o 20 0 2 a 2g 1h 4 0 j 0 8 9 g 6 2 6 6 7 3 1 3 l 2 6 2 0 4 3 4 0 h 0 e 1 2 2 f 1 k 5 5 1 3 l 2 6 2 1 2 1 2 1 w 3 2 0 k 2 h 8 2 2 2 l 2 6 2 1 2 4 4 0 j 0 g 1 10 7 3 1 3 l 2 6 2 1 2 4 4 0 v 1 2 2 g 0 i 0 2 5 4 2 2 3 4 1 2 0 2 1 4 1 4 2 4 b n 0 1h 7 2 2 2 m 2 9 2 4 4 0 r 1 7 1 10 7 2 2 2 m 2 9 2 4 4 0 x 0 2 1 g 1 j 7 2 2 2 14 3 0 h 0 i 1 p 5 6 h 4 n 2 8 2 0 3 6 1n 1b 2 1 d 6 1n 1 2 0 3 1 2 0 3 0 7 3 2 6 2 2 2 0 2 0 3 1 2 3 2 1 a 0 3 4 2 0 m 3 x 0 1s 7 2 z s 4 38 16 l 0 h 5 5 3 4 0 4 1 8 2 5 c d 0 i 11 2 0 6 0 3 16 2 98 2 3 3 6 2 0 2 3 3 14 2 3 3 w 2 3 3 6 2 0 2 3 3 e 2 1k 2 3 3 1u 12 f h 2c d h7 3 g 2 p 6 22 m c 2 3 f h f h f c 2 2 g 1f 10 0 5 0 1w 2f 9 14 2 0 6 1x b s 1g t 3 4 c 17 m 6 1l m a 1g 2b 0 2m 1a i 6 1k t e 1 b 17 r z 16 2 b z 30 3 2 3 4 1 a 5b 1t 7p 3 5 3 11 3 5 3 7 2 0 2 0 2 0 2 u 3 1g 2 6 2 0 4 2 2 6 4 3 3 5 5 c 6 2 2 6 39 0 e 0 h c 2u 0 5 0 3 9 2 0 4 4 7 0 2 0 2 0 2 3 2 a 3 3 6 4 5 0 1h 1 22k 1a 2 1a 2 3o 7 3 4 1 d 11 2 0 6 0 3 1j 8 0 h m a 6 2 6 2 6 2 6 2 6 2 6 2 6 2 6 29 0 d2 1 17 4 6 1 5 2d 7 2 2 2h 2 3 6 14 4 2l i q 1i f e9 52t 23 g5o 1g wc 1w 19 3 7g 4 f b 1 l 1a h o 9 1x 1e 8 3 2u 3 3 2 3 d a 26 9 2 2 2 3 2 m u 1f f 1d 1r 5 4 0 f r b m q s 8 1a t 0 1d 14 o 2 2 7 l m 4 0 6 1b 2 0 4 1 3 4 3 0 2 0 p 2 3 a 8 2 d 5 3 5 3 5 a 6 2 6 42 y u 8mb d m 5 1c 6it a5 3 2x 13 6 d 4 6 0 2 9 2 c 2 4 2 0 2 1 2 1 2 2z y a2 j 1r 3 1h 15 b 39 4 2 3q 11 p 7 p c 2g 4 5 3 5 3 5 3 2"});function Qe(e){return Y3.test(e)?e.replace(q3,t=>G3[t]??""):e}function Pe(e){return Qe(Tt(e))}function u(e){let t=Math.round(e*100);if(t===0)return"0";if(t>0){if(t<1e11){let r=Math.floor(t/100);return r+Cu[t-r*100]}}else if(t>-1e11){let r=-t,a=Math.floor(r/100);return"-"+a+Cu[r-a*100]}return String(t/100)}function Re(e,t,r,a,n){let i=e.lines;if(i.length===0)return"";let l=e.lineHeight,s=e.heights,o=e.size*.35,c=r-e.height/2,h=i.length===1&&i[0].length===1?i[0][0]:void 0;if(h&&h.icon===void 0&&h.math===void 0&&h.style===0)return`<text${a} x="${u(t)}" y="${u(c+l/2+o)}" text-anchor="middle">${Qe(h.text)}</text>`;let d=Tn(e),f=a,g;a=Wa(a,d);let p="",m="";for(let x=0;x<i.length;x++){let y=i[x],$=s?s[x]:l,k=c+$/2,I=k+o,_=!1;for(let L of y)(L.icon!==void 0||L.math)&&(_=!0);if(_){let L=t-e.widths[x]/2;for(let R of y){if(R.math){let W=`x="${u(L)}" y="${u(k-R.math.height/2)}" width="${u(R.math.width)}" height="${u(R.math.height)}"`;g??(g=K3(f)),m+=g.halo===void 0?Z3(R.math,W,e.size,g.attrs):`<rect ${W} rx="2" fill="${g.halo}"/>`}else if(R.icon!==void 0){let W=e.size*1.1,q=n?.(R.icon)??"";m+=`<svg class="pele-icon" data-icon="${Pe(R.icon)}" x="${u(L)}" y="${u(k-W/2)}" width="${u(W)}" height="${u(W)}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${q}</svg>`}else R.text!==""&&(p+=`<tspan x="${u(L)}" y="${u(I)}" text-anchor="start"${sn(R.style&~d)}>${Qe(R.text)}</tspan>`);L+=R.width}}else{for(let L=0;L<y.length;L++){let R=y[L],W=L===0?` x="${u(t)}" y="${u(I)}"`:"";p+=`<tspan${W}${sn(R.style&~d)}>${Qe(R.text)}</tspan>`}y.length===0&&(p+=`<tspan x="${u(t)}" y="${u(I)}"> </tspan>`)}c+=$}return`<text${a} text-anchor="middle" xml:space="preserve">${p}</text>${m}`}function K3(e){let t=j3.exec(e)?.[1]??"",r=(X3.exec(t)?.[1]??H3.exec(e)?.[1]??"").trim();if(r==="none")return{attrs:"",halo:U3.exec(e)?.[1]??"none"};let a=V3.exec(t)?.[1].trim();return{attrs:(r===""?"":` color="${r}"`)+(a?` opacity="${a}"`:"")}}function Z3(e,t,r,a){return"svg"in e?`<svg class="pele-math" ${t} overflow="visible"${a}>${e.svg}</svg>`:`<foreignObject class="pele-math" ${t} overflow="visible"${a}><div xmlns="http://www.w3.org/1999/xhtml" style="display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:${u(r)}px;line-height:normal;white-space:nowrap">${e.html}</div></foreignObject>`}function sn(e){return(e&1?ly:"")+(e&2?oy:"")}function Tn(e){let t=3,r=!1;for(let a of e.lines)for(let n of a)n.icon!==void 0||n.text===""||(t&=n.style,r=!0);return r?t:0}function Wa(e,t){return e+(t&1&&!e.includes(' font-weight="')?ly:"")+(t&2&&!e.includes(' font-style="')?oy:"")}function o4(e){let t=e.split(`
|
|
172
|
+
`),r=1/0;for(let a of t){if(a.trim()==="")continue;let n=a.length-a.trimStart().length;n<r&&(r=n)}return r===1/0||r===0?e:t.map(a=>a.slice(Math.min(r,a.length-a.trimStart().length))).join(`
|
|
173
|
+
`)}function Gc(e){return e!==void 0&&e.icon===void 0&&e.math===void 0}function Su(e,t,r){if(t!==""){if(Gl!==void 0&&hy.test(t)){let a=Gl,n=t.split(s4);for(let i=0;i<n.length;i++){if(i%2===0){n[i]!==""&&Tu(e,n[i],r);continue}let l=n[i].charCodeAt(0)-cy,s=a.math[l];s?e.push({text:"",style:r,math:s,width:s.width}):Tu(e,`$$${a.tex[l]}$$`,r)}return}Tu(e,t,r)}}function Tu(e,t,r){let a=Tt(t),n=e[e.length-1];Gc(n)&&n.style===r?n.text+=a:e.push({text:a,style:r,width:0})}function c4(e,t,r){if(!t.includes(":fa-")){Su(e,t,r);return}let a=0;ty.lastIndex=0;let n;for(;(n=ty.exec(t))!==null;){let i=`${n[1]}:fa-${n[2]}`;if(Su(e,t.slice(a,n.index),r),a=n.index+n[0].length,Ss(i)!=="")e.push({text:"",style:r,icon:i,width:0});else if(t[a]===" ")a++;else if(a===t.length){let l=e[e.length-1];Gc(l)&&(l.text=l.text.trimEnd())}}Su(e,t.slice(a),r)}function h4(e,t,r,a,n){let i=n,l=0,s="",o=0,c=t.length,h=()=>{c4(e,s,i),s=""};for(;o<c;){let d=t[o];if(d==="<"){ey.lastIndex=o;let f=ey.exec(t);if(f&&f.index===o){let g=f[1].toLowerCase(),p=t[o+1]==="/",m=g==="b"||g==="strong"?1:g==="i"||g==="em"?2:0;m&&(h(),n=p?n&~m|a&m:n|m,i=p?i&~m|a&m:i|m),o+=f[0].length;continue}}else if(r&&(d==="*"||d==="_")){let f=t[o+1]===d,g=f?1:2,p=f?2:1,m=(l&g)===0,x=o>0?t[o-1]:" ",y=o+p<c?t[o+p]:" ",$=m&&y.trim()!==""&&t.indexOf(f?d+d:d,o+p)!==-1,k=!m&&x.trim()!=="",I=d==="_"&&/\w/.test(x)&&/\w/.test(y);if(($||k)&&!I){h(),l=$?l|g:l&~g,i=$?i|g:i&~g|a&g,o+=p;continue}}s+=d,o++}return h(),n}function d4(e,t,r){let a=0;for(let n of e)n.width=n.icon!==void 0?r*1.25:n.math?n.math.width:t.width(n.text,r,n.style),a+=n.width;return a}function dy(e,t,r,a,n,i){let l=[],s=0,o=()=>{let c=l[l.length-1];if(Gc(c)){let h=c.text.trimEnd();if(h!==c.text){c.text=h;let d=t.width(h,r,c.style);s+=d-c.width,c.width=d}}n.push(l),i.push(s),l=[],s=0};for(let c of e){if(c.icon!==void 0||c.math){let h=c.math?c.math.width:r*1.25;s>0&&s+h>a&&o(),l.push({...c,width:h}),s+=h;continue}for(let h of c.text.match(a4)??[]){let d=h;s>0&&s+t.width(d.trimEnd(),r,c.style)>a&&(o(),d=d.trimStart());let f=l[l.length-1];if(Gc(f)&&f.style===c.style){f.text+=d,f.width=t.width(f.text,r,f.style),s=0;for(let g of l)s+=g.width}else{let g=t.width(d,r,c.style);l.push({text:d,style:c.style,width:g}),s+=g}}}(l.length>0||n.length===0)&&o()}function Be(e,t,r,a,n,i=0){if(e===void 0||e==="")return l4;let l=Math.round(a*Q3);if(Wm()&&e.includes("$$")&&!hy.test(e)){let s={tex:[],math:[]},o=e.replace(i4,(c,h)=>s.tex.length===n4?c:(s.tex.push(h),String.fromCharCode(cy+s.tex.length-1)));if(s.tex.length>0){for(let c of s.tex)s.math.push(Ym(Tt(c),a));return ay(o,t,r,a,n,i,l,s)}}if(!e4.test(e)&&!e.includes("&")&&!e.includes("\uFB02")){let s=e.trim(),o=r.width(s,a,i);if(o<=n||!(s.includes(" ")||r4.test(s)))return{lines:[[{text:s,style:i,width:o}]],widths:[o],width:o,height:l,size:a,lineHeight:l};let c=[],h=[];dy([{text:s,style:i,width:o}],r,a,n,c,h);let d=0;for(let f of h)f>d&&(d=f);return{lines:c,widths:h,width:d,height:c.length*l,size:a,lineHeight:l}}return ay(e,t,r,a,n,i,l)}function ay(e,t,r,a,n,i,l,s){let o=Gl;Gl=s;try{let c=f4(e,t,r,a,n,i,l);return s?Hl(c):c}finally{Gl=o}}function f4(e,t,r,a,n,i,l){let s=t?o4(e.replace(/\r\n?/g,`
|
|
174
|
+
`)).trim():e.trim(),o=[],c=[],h=0,d=i;for(let f of s.split(J3)){let g=[];d=h4(g,f.trim(),t,i,d);let p=d4(g,r,a);p>n?dy(g,r,a,n,o,c):(o.push(g),c.push(p))}for(let f of c)f>h&&(h=f);return{lines:o,widths:c,width:h,height:o.length*l,size:a,lineHeight:l}}function Hl(e){let t;for(let a=0;a<e.lines.length;a++){let n=e.lineHeight;for(let i of e.lines[a])i.math&&(n=Math.max(n,Math.ceil(i.math.height+e.size/4)));n!==e.lineHeight&&t===void 0&&(t=e.lines.map(()=>e.lineHeight)),t&&(t[a]=n)}if(t===void 0)return e.heights===void 0?e:{...e,heights:void 0,height:e.lines.length*e.lineHeight};let r=0;for(let a of t)r+=a;return{...e,heights:t,height:r}}function _s(e){for(let t of e)if(t.math)return!0;return!1}function ln(e,t){let r=e.heights;if(!r)return(t+.5)*e.lineHeight;let a=0;for(let n=0;n<t;n++)a+=r[n];return a+r[t]/2}function on(e,t){let r=e.widths[t],a=e.heights?e.heights[t]:e.lineHeight,n={lines:[e.lines[t]],widths:[r],width:r,height:a,size:e.size,lineHeight:e.lineHeight};return a!==e.lineHeight&&(n.heights=[a]),n}function gt(e){let t=e.indexOf(' style="');return t<0?e+ot:`${e.slice(0,t+8)}rx:var(--_r);${e.slice(t+8)}`}function iy(e,t){return e&&g4.test(e)?e:t}function m4(e,t,r){return`;--_fm:var(--pele-font-mono,${iy(r,"monospace")});font:${e}px sans-serif;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;font-family:var(--pele-font,${iy(t,"sans-serif")})`}function Ct(e){if(e.length===0)return sy;let t=new Map,r=new Map;for(let c of e){let h=c.indexOf(":");if(h<=0)continue;let d=c.slice(0,h).trim().toLowerCase(),f=c.slice(h+1).replace(/!important/gi,"").trim();f===""||b4.test(f)||(y4.has(d)&&t.set(d,f),x4.has(d)&&r.set(d==="color"?"fill":d,f))}if(t.size===0&&r.size===0)return sy;let a="",n="";for(let[c,h]of t)a+=`${c}:${h};`,c!=="fill"&&c!=="fill-opacity"&&(n+=`${c}:${h};`);let i="";for(let[c,h]of r)i+=`${c}:${h};`;let l=r.get("font-weight"),s=r.get("font-size"),o=s&&/^[\d.]+(px)?$/.test(s)?parseFloat(s):void 0;return{shape:a?` style="${Qe(a)}"`:"",line:n?` style="${Qe(n)}"`:"",text:i?` style="${Qe(i)}"`:"",stroke:t.get("stroke"),bold:l==="bold"||l==="bolder"||Number(l)>=600,italic:r.get("font-style")==="italic",fontSize:o!==void 0&&o>0&&o<=200?o:void 0}}function Dt(e){let t=e.replace(w4," ").trim();return t===""?"":" "+t}function pt(e){let t=(e%8+8)%8;return`var(--pele-series-${t+1},${$4[t]})`}function tt(e,t,r,a,n,i,l){let s=Qe(n.idPrefix??"pele"),o="",c="";i.accTitle&&(o+=`<title id="${s}-title">${Pe(i.accTitle)}</title>`,c+=` aria-labelledby="${s}-title"`),i.accDescr&&(o+=`<desc id="${s}-desc">${Pe(i.accDescr)}</desc>`,c+=` aria-describedby="${s}-desc"`);let h=n.responsive===!1?"":"max-width:100%;height:auto;",d=new Set;for(let[,g]of l.matchAll(M4))if(d.add(g),d.size===4)break;let f=d.has("r")?`;--_r:${p4}`:"";for(let[g,p]of k4)d.has(g)&&(f+=`;--_${g}:var(--pele-${p}-weight,bold)`);return`<svg xmlns="http://www.w3.org/2000/svg" class="pele pele-${e}" viewBox="0 0 ${t} ${r}" width="${t}" height="${r}" style="${h}${u4}${f}${Qe(m4(a,n.fontFamily,n.fontFamilyMono))}" fill="var(--_fg)" role="graphics-document document" aria-roledescription="${e}"${c}>`+o+l+"</svg>"}var Y3,q3,G3,Cu,H3,U3,j3,X3,V3,ly,oy,Q3,J3,ey,ty,e4,_u,ry,t4,r4,a4,cy,n4,i4,hy,s4,Gl,l4,u4,Ul,p4,ot,jl,ny,g4,y4,x4,b4,sy,w4,$4,k4,M4,yt=Ge(()=>{xe();kt();Y3=/[&<>"\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/,q3=/[&<>"]|[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]+/g,G3={"&":"&","<":"<",">":">",'"':"""};Cu=[];for(let e=0;e<100;e++)Cu.push(e===0?"":e%10===0?"."+e/10:"."+(e<10?"0"+e:e));H3=/ fill="([^"]*)"/,U3=/ stroke="([^"]*)"/,j3=/ style="([^"]*)"/,X3=/(?:^|;)\s*fill:([^;]*)/,V3=/(?:^|;)\s*opacity:([^;]*)/;ly=' font-weight="var(--_w)"',oy=' font-style="italic"';Q3=1.5,J3=/<br\s*\/?>|\\n|\n/gi,ey=/<\/?([a-zA-Z][\w-]*)(?:\s[^<>]*)?\/?>/y,ty=/(fa[bklrs]?):fa-([\w-]+)/g,e4=/[<\\\n*_]|fa[bklrs]?:fa-/,_u="\\u2e80-\\u9fff\\uf900-\\ufaff\\uff00-\\uff60",ry="\u3001\u3002\uFF0C\uFF0E\uFF1A\uFF1B\uFF01\uFF1F\uFF09\uFF3D\uFF5D\u300D\u300F\u3011\u3015\u3009\u300B\u3019\u3017\u30FC\u2026\u2025\u30FB\u309D\u309E\u3041\u3043\u3045\u3047\u3049\u3063\u3083\u3085\u3087\u308E\u30A1\u30A3\u30A5\u30A7\u30A9\u30C3\u30E3\u30E5\u30E7\u30EE,.:;!?)\\]}",t4="\uFF08\uFF3B\uFF5B\u300C\u300E\u3010\u3014\u3008\u300A\u3018\u3016([{",r4=new RegExp(`[${_u}]`),a4=new RegExp(`\\s*(?:[${t4}]*[${_u}][${ry}]*|[^\\s${_u}]+[${ry}]*)\\s*|\\s+`,"g"),cy=57344,n4=6400,i4=/\$\$(.+?)\$\$/g,hy=/[\ue000-\uf8ff]/,s4=/([\ue000-\uf8ff])/,l4={lines:[],widths:[],width:0,height:0,size:0,lineHeight:0};u4="--_bg:var(--pele-bg,#fff);--_fg:var(--pele-fg,#1f1f1f);--_m:var(--pele-muted,#6e6e6e);--_l:var(--pele-line,#1f1f1f);--_s:var(--pele-surface,#f3f3f3);--_a:var(--pele-surface-alt,#e6e6e6);--_b:var(--pele-border,#8a8a8a);--_c:var(--pele-accent,#5b7bd5);color:var(--_fg)",Ul="var(--_fm)",p4="var(--pele-radius,4px)",ot=' style="rx:var(--_r)"';jl="var(--pele-critical,#e45756)",ny=String.raw`(?:"[^"'\\\n<>{}();:@]*"|'[^"'\\\n<>{}();:@]*'|[\p{L}\p{N}_-][\p{L}\p{N}_ .-]*)`,g4=new RegExp(String.raw`^\s*${ny}(?:\s*,\s*${ny})*\s*$`,"u");y4=new Set(["fill","fill-opacity","stroke","stroke-width","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-opacity","opacity","rx","ry"]),x4=new Set(["color","font-size","font-family","font-weight","font-style","text-decoration","letter-spacing","word-spacing","opacity"]),b4=/url\s*\(|expression\s*\(|javascript:|[<>{};\\]|@import|image-set|\/\*/i,sy={shape:"",line:"",text:"",stroke:void 0,bold:!1,italic:!1,fontSize:void 0};w4=/[^\w-]+/g;$4=["#4c78a8","#f58518","#54a24b","#e45756","#72b7b2","#eeca3b","#b279a2","#9d755d"];k4=[["tw","title"],["hw","heading"],["w","bold"]],M4=/var\(--_(r|tw|hw|w)\)/g});function Ya(e,t){for(let r=0;r<t.length;r+=3){let a=Math.round(t[r+1]),n=e.get(a);n?n.push(t[r]):e.set(a,[t[r]])}}function Xn(e,t,r,a){if(t===0)return e.x;let n=e.y-e.h/2,i=e.x-e.w/2,l=t/2,s=[i+a-6+l,e.x,i+e.w-a+6-l],o=r.get(Math.round(n));if(o===void 0)return s[0];let c=s[0],h=-1;for(let d of s){let f=1/0;for(let g of o)g>i&&g<i+e.w&&(f=Math.min(f,Math.abs(g-d)-l));if(f>=6)return d;f>h+.5&&(h=f,c=d)}return c}function Hc(e,t,r,a){let n=t>0?a.get(Math.round(e.y-e.h/2)):void 0;if(n===void 0)return!1;let i=e.x-e.w/2;for(let l of n)if(l>i&&l<i+e.w&&Math.abs(l-r)<t/2+4)return!0;return!1}function Uc(e,t,r,a,n,i,l,s){let o=1;for(let h=i[l].parent;h>=0&&o<8;h=i[h].parent)o++;let c=`color-mix(in srgb,var(--_a) ${u(100*(1-.5**o))}%,var(--_bg))`;return`<g class="pele-cluster-title" data-id="${n}">`+Re(e,t,r,` fill="none" stroke="${c}" stroke-width="5" stroke-linejoin="round"`,s)+Re(e,t,r,a,s)+"</g>"}var Is=Ge(()=>{xe();yt()});function _i(e,t,r=0){return{w:e,h:t,kind:r,pin:0,hint:NaN,key:NaN,span:0,x:0,y:0,rank:0}}function Ii(e,t,r=1,a=0,n=0){return{tail:e,head:t,minlen:r,labelW:a,labelH:n,tailDx:0,headDx:0,tailFixed:!1,headFixed:!1,reversed:!1,points:[],labelX:0,labelY:0}}function Ls(e){return e===1||e===2}function by(e,t,r,a){for(let n=t+1;n<r;n++){let i=e[n],l=a[i],s=n-1;for(;s>=t&&(a[e[s]]>l||a[e[s]]===l&&e[s]>i);)e[s+1]=e[s],s--;e[s+1]=i}}function O4(e,t,r,a,n,i){let l=(c,h)=>r[c]<r[h]||r[c]===r[h]&&(n?a[c]>a[h]:a[c]<a[h]);for(let c=0;c<t;c+=8)for(let h=c+1,d=Math.min(t,c+8);h<d;h++){let f=e[h],g=h-1;for(;g>=c&&l(f,e[g]);)e[g+1]=e[g],g--;e[g+1]=f}let s=e,o=i;for(let c=8;c<t;c*=2){for(let d=0;d<t;d+=2*c){let f=Math.min(t,d+c),g=Math.min(t,d+2*c),p=d,m=f,x=d;for(;p<f&&m<g;)o[x++]=l(s[m],s[p])?s[m++]:s[p++];for(;p<f;)o[x++]=s[p++];for(;m<g;)o[x++]=s[m++]}let h=s;s=o,o=h}if(s!==e)for(let c=0;c<t;c++)e[c]=s[c]}function Vc(e,t,r){let a=e.length;if(a===0)return{width:0,height:0};let n=t.length;if(a===1&&n===0&&e[0].kind===0){let de=e[0];return de.rank=0,de.x=de.w/2,de.y=de.h/2,{width:de.w,height:de.h}}let i=1;if(n>0){let de=new Set;for(let Me of t){let _e=Math.min(Me.tail,Me.head),$e=Math.max(Me.tail,Me.head),ve=_e*a+$e;if(Me.labelW>0||de.has(ve)){i=2;break}de.add(ve)}}Vl(e,t),Kl(e,t,i);let l=new Int32Array(n),s=0;for(let de=0;de<n;de++){let Me=t[de];l[de]=Math.abs(e[Me.head].rank-e[Me.tail].rank),l[de]>1&&(s+=l[de]-1)}let o=new Uint8Array(n);if(s>fy){let de=[];for(let Me=0;Me<n;Me++)l[Me]>1&&de.push(Me);de.sort((Me,_e)=>l[_e]-l[Me]||Me-_e);for(let Me of de){if(s<=fy)break;o[Me]=1,s-=l[Me]-1}}let c=a+s,h=new Float64Array(c),d=new Float64Array(c),f=new Uint8Array(c),g=new Int32Array(c),p=0;for(let de=0;de<a;de++){let Me=e[de];h[de]=Me.w,d[de]=Me.h,f[de]=Me.kind,g[de]=Me.rank,Me.rank>p&&(p=Me.rank)}let m=0;for(let de=0;de<n;de++)o[de]||(m+=l[de]);let x=new Int32Array(m),y=new Int32Array(m),$=new Float64Array(m),k=new Float64Array(m),I=new Int32Array(n).fill(-1),_=new Uint8Array(p+1),L=new Int32Array(n).fill(-1),R=!1;for(let de=0;de<a;de++)e[de].span>0&&e[de].kind===0&&(R=!0);let W=R?new Uint8Array(m):void 0,q=R?new Uint8Array(m):void 0,C=new Int32Array(n).fill(-1),K=new Int32Array(n).fill(-1),Q=new Float64Array(c).fill(NaN);for(let de=0;de<a;de++)Q[de]=e[de].key;let G=!1;{let de=a,Me=0;for(let _e=0;_e<n;_e++){if(o[_e])continue;let $e=t[_e],ve=$e.reversed?$e.head:$e.tail,Le=$e.reversed?$e.tail:$e.head,qe=$e.reversed?$e.headDx:$e.tailDx,Fe=$e.reversed?$e.tailDx:$e.headDx;(qe!==0||Fe!==0)&&(G=!0);let V=g[ve],me=g[Le],ne=-1;$e.labelW>0&&(ne=V+(me-V>>1),i===2&&me-V>=4?(ne&1)===1&&(ne+=$e.reversed?1:-1):i===2&&!(ne&1)&&(ne+=$e.reversed?1:-1));let ke=ve;me-V>1&&(I[_e]=de),C[_e]=Me,W&&!($e.reversed?$e.headFixed:$e.tailFixed)&&(W[Me]=$e.reversed?2:1);for(let Ee=V+1;Ee<me;Ee++){let Ce=de++;g[Ce]=Ee,Q[Ce]=Q[ve]+(Q[Le]-Q[ve])*(Ee-V)/(me-V),Ee===ne?(h[Ce]=$e.labelW,d[Ce]=$e.labelH,f[Ce]=2,L[_e]=Ce,_[Ee]|=$e.reversed?2:1):f[Ce]=1,x[Me]=ke,y[Me]=Ce,$[Me]=ke===ve?qe:0,Me++,ke=Ce}x[Me]=ke,y[Me]=Le,$[Me]=ke===ve?qe:0,k[Me]=Fe,q&&!($e.reversed?$e.tailFixed:$e.headFixed)&&(q[Me]=$e.reversed?1:2),K[_e]=Me,Me++}}let Y;if(r.groups){let{of:de,parent:Me}=r.groups;Y=new Int32Array(c);for(let ve=0;ve<a;ve++)Y[ve]=de[ve];let _e=ve=>{let Le=0;for(;ve>=0;ve=Me[ve])Le++;return Le},$e=(ve,Le)=>{let qe=_e(ve),Fe=_e(Le);for(;qe>Fe;qe--)ve=Me[ve];for(;Fe>qe;Fe--)Le=Me[Le];for(;ve!==Le;)ve=Me[ve],Le=Me[Le];return ve};for(let ve=0;ve<n;ve++){if(I[ve]<0)continue;let Le=t[ve],qe=$e(de[Le.tail],de[Le.head]);for(let Fe=I[ve],V=Fe+l[ve]-1;Fe<V;Fe++)Y[Fe]=qe}}let N=new Int32Array(c+1),S=new Int32Array(c+1);for(let de=0;de<m;de++)N[x[de]+1]++,S[y[de]+1]++;for(let de=0;de<c;de++)N[de+1]+=N[de],S[de+1]+=S[de];let M=new Int32Array(m),b=new Int32Array(m);{let de=N.slice(0,c),Me=S.slice(0,c);for(let _e=0;_e<m;_e++)M[de[x[_e]]++]=_e,b[Me[y[_e]]++]=_e}let E=new Int32Array(p+2);for(let de=0;de<c;de++)E[g[de]+1]++;for(let de=0;de<=p;de++)E[de+1]+=E[de];let w=new Int32Array(c),T=new Int32Array(c);{let de=new Int32Array(c),Me=E.slice(0,p+1);for(let ve=0;ve<c;ve++)de[Me[g[ve]]++]=ve;for(let ve=0;ve<=p;ve++)Me[ve]=E[ve];let _e=new Uint8Array(c),$e=[];for(let ve=0;ve<c;ve++)if(!_e[de[ve]])for($e.push(de[ve]);$e.length>0;){let Le=$e.pop();if(!_e[Le]){_e[Le]=1,w[Me[g[Le]]++]=Le;for(let qe=N[Le+1]-1;qe>=N[Le];qe--){let Fe=y[M[qe]];_e[Fe]||$e.push(Fe)}}}}let A=(de,Me)=>{let _e=E[de],$e=E[de+1];if($e-_e<2)return!1;for(let qe=_e;qe<$e;qe++)if(Number.isNaN(Me(w[qe])))return!1;let ve=Array.from(w.subarray(_e,$e)),Le=new Map;return ve.forEach((qe,Fe)=>Le.set(qe,Fe)),ve.sort((qe,Fe)=>Me(qe)-Me(Fe)||Le.get(qe)-Le.get(Fe)),w.set(ve,_e),!0};for(let de=0;de<=p;de++)A(de,Me=>Q[Me]);let v=!1;for(let de=0;de<a;de++)e[de].pin!==0&&(v=!0);if(v)for(let de=0;de<=p;de++){let Me=Array.from(w.subarray(E[de],E[de+1])),_e=new Map;Me.forEach((ve,Le)=>_e.set(ve,Le));let $e=ve=>ve<a?e[ve].pin:0;Me.sort((ve,Le)=>$e(ve)-$e(Le)||_e.get(ve)-_e.get(Le)),w.set(Me,E[de])}let D=new Uint8Array(p+1),z=de=>de<a&&(e[de].kind===3||e[de].kind===4)?e[de].hint:NaN;for(let de of[0,p])A(de,z)&&(D[de]=1);let H=()=>{for(let de=0;de<=p;de++){let Me=E[de];for(let _e=Me,$e=E[de+1];_e<$e;_e++)T[w[_e]]=_e-Me}};H();let P={n:c,real:a,maxRank:p,W:h,KIND:f,RANK:g,EF:x,ET:y,EFD:$,ETD:k,succStart:N,succE:M,predStart:S,predE:b,layerStart:E,order:w,pos:T,offsets:G,fixed:D,GRP:Y,groupParent:r.groups?.parent},O=0,F=0;if(m>0&&p>0&&([O,F]=H4(P,e),H()),r.orderOnly){let de=wy(P,r);for(let Me=0;Me<a;Me++)e[Me].x=de[Me];for(let Me=0;Me<n;Me++){let _e=t[Me],$e=_e.reversed?_e.head:_e.tail,ve=_e.reversed?_e.tail:_e.head,Le=[g[$e],de[$e]];if(!o[Me]&&I[Me]>=0)for(let qe=I[Me],Fe=qe+l[Me]-1;qe<Fe;qe++)Le.push(g[qe],de[qe]);Le.push(g[ve],de[ve]),_e.points=Le}return{width:0,height:0,crossings:O,declared:F}}W&&q&&D4(P,e,W,q);let U=wy(P,r),j=W4(P);if(W&&q){let de=P4(P,W,q);z4(P,e,U,de,r,j),F4(P,e,U,W,q,de,j),B4(P,U,j,r);for(let Me=0;Me<n;Me++){if(o[Me])continue;let _e=t[Me],$e=$[C[Me]],ve=k[K[Me]];_e.tailDx=_e.reversed?ve:$e,_e.headDx=_e.reversed?$e:ve}}let J=new Uint8Array(c);j&&!r.tracks&&q4(P,U,j,I,l,r.apart?0:r.edgeSep,J),r.tracks||G4(P,U,I,l,r.edgeSep,J);let Z=new Int32Array(n+1),B=r.tracks||W&&!r.straight?{from:[],to:[],rank:[],lower:[],track:[],levels:[],wide:[]}:void 0,X=new Int32Array(p+1);if(B){for(let de=0;de<n;de++){if(Z[de]=B.from.length,o[de])continue;let Me=I[de],_e=!1;for(let Le=Me,qe=Me<0?Me:Me+l[de]-1;Le<qe;Le++){let Fe=j!==void 0&&j[g[Le]]===1;!r.tracks&&Fe!==(J[Le]===1)&&(_e=!0)}if(_e)continue;let $e=U[x[C[de]]]+$[C[de]],ve=g[x[C[de]]];for(let Le=Me,qe=Me<0?Me:Me+l[de]-1;Le<qe;Le++)j&&j[g[Le]]||(B.from.push($e),B.to.push(U[Le]),B.rank.push(ve),B.lower.push(Le),$e=U[Le],ve=g[Le]);B.from.push($e),B.to.push(U[y[K[de]]]+k[K[de]]),B.rank.push(ve),B.lower.push(-1)}Z[n]=B.from.length}let te=(de,Me)=>{let _e=!1;for(let $e=E[de];$e<E[de+1];$e++){let ve=f[w[$e]];if(ve===Me)_e=!0;else if(ve!==1)return!1}return _e},se=te(0,3)?i:0,ce=te(p,4)?i:0,ae=new Float64Array(p+1);for(let de=0;de<m;de++){let Me=Math.abs(U[x[de]]+$[de]-U[y[de]]-k[de]);Me>ae[g[x[de]]]&&(ae[g[x[de]]]=Me)}let ie=new Float64Array(p+1),ee=new Float64Array(p+1),re=de=>(de<se||de>=p-ce?r.portSep:r.rankSep)/i,fe=new Float64Array(p+1);for(let de=0;de<p;de++)fe[de]=B?re(de):Math.max(re(de),Math.min(py*r.rankSep/i,ae[de]*A4));let ye=new Uint8Array(p+1).fill(1);for(let de=0;de<a;de++)ye[g[de]]=0;for(let de=1;de<p;de++){if(r.tracks||!ye[de]||_[de]!==1&&_[de]!==2)continue;let Me=Math.min((r.headRoom??0)/2,fe[_[de]===1?de-1:de]/2);fe[de-1]+=_[de]===1?-Me:Me,fe[de]+=_[de]===1?Me:-Me}let oe=de=>f[de]===1&&ye[g[de]]&&!r.tracks?(ee[g[de]]-ie[g[de]])/4:0,we=r.tracks?E4:_4,ue=r.tracks?S4:gy,ge=r.tracks?T4:gy,Ae=new Int32Array(p+1);if(B){let de=new Float64Array(p+1);for(let _e=0;_e<p;_e++){if(j&&j[_e])continue;let $e=_e+1;for(de[_e]=fe[_e];$e<p&&j&&j[$e];)de[_e]+=fe[$e++];Ae[_e]=$e}for(let _e=0;_e<B.from.length;_e++)B.wide.push(Math.abs(B.from[_e]-B.to[_e])>C4*de[B.rank[_e]]?1:0);let Me=new Float64Array(p+1);Y4(B,X,!r.tracks,de,Me);for(let _e=0;_e<p;_e++)X[_e]>0?fe[_e]+=Math.max(0,2*we+(X[_e]-1)*ue-de[_e]):Me[_e]>0&&(fe[_e]+=Math.max(0,Math.min(py*r.rankSep,Me[_e])-de[_e]))}let Te=0;for(let de=0;de<=p;de++){let Me=0;for(let _e=E[de];_e<E[de+1];_e++)d[w[_e]]>Me&&(Me=d[w[_e]]);ie[de]=Te,ee[de]=Te+Me,Te+=Me+fe[de]}let he=Te,pe=(de,Me=B.track[de])=>{let _e=B.rank[de],$e=ee[_e],ve=ie[Ae[_e]],Le=r.tracks?X[_e]:B.levels[de],qe=Le>1?Math.min(ge,(ve-$e-2*we)/(Le-1)):0;return($e+ve)/2+(Me-(Le-1)/2)*qe},be=1/0,Ne=-1/0;for(let de=0;de<c;de++){let Me=h[de]/2;U[de]-Me<be&&(be=U[de]-Me),U[de]+Me>Ne&&(Ne=U[de]+Me)}let Oe=new Uint8Array(p+1),Ye=new Uint8Array(p+1);for(let de=0;de<a;de++)f[de]!==0||!W||(S[de+1]>S[de]&&(Oe[g[de]]=1),N[de+1]>N[de]&&(Ye[g[de]]=1));for(let de=0;de<a;de++){let Me=e[de],_e=Me.rank;Me.x=U[de]-be,f[de]===0&&Ye[_e]&&!Oe[_e]?Me.y=ee[_e]-Me.h/2:f[de]===0&&Oe[_e]&&!Ye[_e]?Me.y=ie[_e]+Me.h/2:Me.y=(ie[_e]+ee[_e])/2}for(let de=0;de<n;de++){let Me=t[de],_e=e[Me.reversed?Me.head:Me.tail],$e=e[Me.reversed?Me.tail:Me.head],ve=[_e.x+(Me.reversed?Me.headDx:Me.tailDx),_e.y+_e.h/2],Le=I[de];if(B&&Z[de+1]>Z[de])for(let Fe=Z[de];Fe<Z[de+1];Fe++){if(B.track[Fe]>=0&&(r.tracks||B.wide[Fe]===1)){let me=pe(Fe);ve.push(B.from[Fe]-be,me,B.to[Fe]-be,me)}else B.track[Fe]>0&&ve.push(B.from[Fe]-be,pe(Fe,B.track[Fe]-1));let V=B.lower[Fe];V<0||(ve.push(U[V]-be,ie[g[V]]+oe(V)),ee[g[V]]>ie[g[V]]&&ve.push(U[V]-be,ee[g[V]]-oe(V)))}else if(Le>=0)for(let Fe=Le,V=Le+l[de]-1;Fe<V;Fe++){if(J[Fe])continue;let me=U[Fe]-be,ne=ie[g[Fe]],ke=ee[g[Fe]];ve.push(me,ne+oe(Fe)),ke>ne&&ve.push(me,ke-oe(Fe))}if(ve.push($e.x+(Me.reversed?Me.tailDx:Me.headDx),$e.y-$e.h/2),Me.reversed)for(let Fe=0,V=ve.length-2;Fe<V;Fe+=2,V-=2){let me=ve[Fe],ne=ve[Fe+1];ve[Fe]=ve[V],ve[Fe+1]=ve[V+1],ve[V]=me,ve[V+1]=ne}Me.points=ve;let qe=L[de];qe>=0?(Me.labelX=U[qe]-be,Me.labelY=(ie[g[qe]]+ee[g[qe]])/2):Me.labelW>0&&(Me.labelX=(ve[0]+ve[ve.length-2])/2,Me.labelY=(ve[1]+ve[ve.length-1])/2)}return{width:Ne-be,height:he}}function Vl(e,t){let r=e.length,a=t.length,n=new Int32Array(r+1);for(let c=0;c<a;c++){let h=t[c];h.reversed=e[h.head].kind===3||e[h.tail].kind===4,h.reversed||n[h.tail+1]++}for(let c=0;c<r;c++)n[c+1]+=n[c];let i=new Int32Array(n[r]);{let c=n.slice(0,r);for(let h=0;h<a;h++)t[h].reversed||(i[c[t[h].tail]++]=h)}let l=new Uint8Array(r),s=n.slice(0,r),o=[];for(let c=0;c<r;c++)if(l[c]===0)for(o.push(c),l[c]=1;o.length>0;){let h=o[o.length-1];if(s[h]<n[h+1]){let d=t[i[s[h]++]],f=d.head;l[f]===1?d.reversed=!0:l[f]===0&&(l[f]=1,o.push(f))}else l[h]=2,o.pop()}}function Kl(e,t,r){let a=e.length,n=t.length,i=new Int32Array(n),l=new Int32Array(n),s=new Int32Array(n),o=new Int32Array(a+1),c=new Int32Array(a+1);for(let k=0;k<n;k++){let I=t[k],_=I.reversed?I.head:I.tail,L=I.reversed?I.tail:I.head;i[k]=_,l[k]=L,s[k]=Math.max(1,I.minlen)*r,o[_+1]++,c[L+1]++}for(let k=0;k<a;k++)o[k+1]+=o[k],c[k+1]+=c[k];let h=new Int32Array(n),d=new Int32Array(n);{let k=o.slice(0,a),I=c.slice(0,a);for(let _=0;_<n;_++)h[k[i[_]]++]=_,d[I[l[_]]++]=_}let f=new Int32Array(a),g=new Int32Array(a);for(let k=0;k<a;k++)g[k]=c[k+1]-c[k];let p=new Int32Array(a),m=0;for(let k=0;k<a;k++)g[k]===0&&(p[m++]=k);for(let k=0;k<m;k++){let I=p[k];for(let _=o[I];_<o[I+1];_++){let L=h[_],R=l[L];f[I]+s[L]>f[R]&&(f[R]=f[I]+s[L]),--g[R]===0&&(p[m++]=R)}}for(let k=0;k<8;k++){let I=!1;for(let _=m-1;_>=0;_--){let L=p[_],R=c[L+1]-c[L],W=o[L+1]-o[L];if(R===0&&W===0)continue;let q=-1/0,C=1/0;for(let Q=c[L];Q<c[L+1];Q++){let G=d[Q];q=Math.max(q,f[i[G]]+s[G])}for(let Q=o[L];Q<o[L+1];Q++){let G=h[Q];C=Math.min(C,f[l[G]]-s[G])}let K=f[L];W>R&&C!==1/0?K=C:R>W&&q!==-1/0&&(K=q),K!==f[L]&&(f[L]=K,I=!0)}if(!I)break}let x=1/0,y=-1/0,$=!1;for(let k=0;k<a;k++){let I=e[k].kind;I===3&&($=!0),!(I===3||I===4)&&(f[k]<x&&(x=f[k]),f[k]>y&&(y=f[k]))}x===1/0&&(x=0,y=0);for(let k=0;k<a;k++)e[k].kind===3?f[k]=x-r:e[k].kind===4&&(f[k]=y+r);$&&(x-=r);for(let k=0;k<a;k++)e[k].rank=f[k]-x}function $y(e,t,r,a,n,i,l){let s=r===0?e.predStart:e.succStart,o=r===0?e.predE:e.succE,c=r===0?e.EF:e.ET,h=e.pos;for(let p=s[t];p<s[t+1];p++)n[o[p]]!==0&&i.push(o[p]);if(i.length<2)return 0;i.sort((p,m)=>h[c[p]]-h[c[m]]||p-m);let d=p=>{let m=0;l[0]=0;for(let x=1;x<i.length;x++){let y=n[i[x]]===n[i[x-1]];l[x]=p(y&&n[i[x]]===1,y),m+=l[x]}return m},f=d(()=>1);if(a/f<uy&&(f=d(p=>p?.5:1)),a/f<uy&&(f=d((p,m)=>m?0:1)),f===0)return 0;let g=Math.min(Lu,a/f);for(let p=1;p<i.length;p++)l[p]*=g;return f*g}function D4(e,t,r,a){let{real:n,W:i,EFD:l,ETD:s}=e;for(let o=0;o<n;o++){let c=Math.min(t[o].span,i[o]);if(!(c<=0||t[o].kind!==0))for(let h=0;h<2;h++){let d=[],f=[],g=$y(e,o,h,c,h===0?a:r,d,f);if(g===0)continue;let p=h===0?s:l,m=-g/2;for(let x=0;x<d.length;x++)m+=f[x],p[d[x]]=m}}}function Xc(e,t,r,a){if(!t)return r;let{KIND:n,RANK:i,EF:l,ET:s,succStart:o,succE:c,predStart:h,predE:d}=e;for(let f=0;f<1e5;f++){let g=a===0?l[r]:s[r];if(n[g]!==1||!t[i[g]])break;r=a===0?d[h[g]]:c[o[g]]}return r}function P4(e,t,r){let a=[new Int32Array(e.n),new Int32Array(e.n)];for(let n=0;n<e.EF.length;n++)r[n]!==0&&a[0][e.ET[n]]++,t[n]!==0&&a[1][e.EF[n]]++;return a}function Zl(e,t){return Math.max(.25,Math.min(.5,4*Math.abs(t)/(Math.abs(e)||1)))}function z4(e,t,r,a,n,i){let l=n.edgeSep,{n:s,real:o,maxRank:c,KIND:h,RANK:d,W:f,EF:g,ET:p,EFD:m,ETD:x,succStart:y,succE:$,predStart:k,predE:I,layerStart:_,order:L,pos:R}=e,W=Y=>h[Y]===2||h[Y]===1&&!(i!==void 0&&i[d[Y]]===1),q=(Y,N)=>{let S=N===0?g[Y]:p[Y];return[N===0?r[S]+m[Y]:r[S]+x[Y],S<o&&t[S].kind===0?a[1-N][S]:0]},C=Y=>{let N=_[d[Y]],S=N+R[Y],M=b=>f[b]/2+f[Y]/2+(h[b]===0?n.nodeSep/2+l/2:h[b]===h[Y]?l:l/2);return[S>N?r[L[S-1]]+M(L[S-1]):-1/0,S+1<_[d[Y]+1]?r[L[S+1]]-M(L[S+1]):1/0]},K=(Y,N,S,M,b)=>{let E=(N[1]!==S[1]?N[1]<S[1]:Math.abs(N[0]-Y)<=Math.abs(S[0]-Y))?[N[0],S[0]]:[S[0],N[0]];return E.find(w=>w>=M&&w<=b)??Math.max(M,Math.min(b,E[0]))},Q=new Uint8Array(s),G=[];for(let Y=1;Y<c;Y++)for(let N=_[Y];N<_[Y+1];N++){if(!W(L[N])||Q[L[N]])continue;let S=L[N];for(;Ls(h[g[I[k[S]]]]);)S=g[I[k[S]]];let M=S,b=-1/0,E=1/0;G.length=0;for(let w=S;Ls(h[w]);w=p[$[y[w]]]){if(M=w,!W(w))continue;Q[w]=1,G.push(w);let[T,A]=C(w);T>b&&(b=T),A<E&&(E=A)}if(b<=E){let w=K(r[G[0]],q(I[k[S]],0),q($[y[M]],1),b,E);for(let T of G)r[T]=w;continue}for(let w of G){let[T,A]=C(w);T>A||(r[w]=K(r[w],q(Xc(e,i,I[k[w]],0),0),q(Xc(e,i,$[y[w]],1),1),T,A))}}}function F4(e,t,r,a,n,i,l){let{real:s,W:o,EF:c,ET:h,EFD:d,ETD:f,succStart:g,succE:p,predStart:m,predE:x,pos:y}=e,$=(I,_,L,R,W)=>{if(i[_][L]<2)return 0;I=Xc(e,l,I,_);let q=_===0?c[I]:h[I],C=_===0?r[q]+d[I]:r[q]+f[I];if(W&&Math.abs(C-r[L])<=R/2+cn)return Math.max(-R/2,Math.min(R/2,C-r[L]));let K=C,Q=0;q<s&&t[q].kind===0&&(_===0?a:n)[I]!==0&&i[1-_][q]>=2&&(Q=Math.max(0,Math.min(t[q].span,o[q])),Q>0&&(K=r[q]));let G=Math.max(r[L]-R/2,K-Q/2),Y=Math.min(r[L]+R/2,K+Q/2);if(G>Y+cn){let S=Math.max(0,R/2-R4);return Math.max(-S,Math.min(S,C-r[L]))}let N=(r[L]*Q+K*R)/(Q+R);return Math.max(G,Math.min(Y,N))-r[L]},k=[];for(let I=0;I<s;I++){let _=Math.min(t[I].span,o[I]);if(!(_<=0||t[I].kind!==0))for(let L=0;L<2;L++){let R=L===0?c:h,W=L===0?m:g,q=L===0?x:p,C=[],K=[];if($y(e,I,L,_,L===0?n:a,C,K),C.length===0)continue;C.length===1&&(K[0]=0);let Q=[];for(let G=W[I];G<W[I+1];G++)Q.push(q[G]);Q.sort((G,Y)=>y[R[G]]-y[R[Y]]||G-Y),k.push({v:I,side:L,span:_,ids:C,room:K,all:Q})}}for(let I=0,_=!0;_&&I<6;I++){_=!1;for(let{v:L,side:R,span:W,ids:q,room:C,all:K}of k){let Q=R===0?n:a,G=R===0?f:d,Y=0,N=-W/2;for(let S=0;S<=K.length;S++){let M=S<K.length&&Q[K[S]]===0;if(S<K.length&&!M)continue;let b=0;for(let w=S-1;w>=0&&Q[K[w]]!==0;w--)b++;let E=M?G[K[S]]-Lu:W/2;if(b>0){let w=[],T=[],A=0;for(let z=0;z<b;z++){z>0&&(A+=C[Y+z]),w.push($(q[Y+z],R,L,W,I>0)-A),T.push(1);let H=z>0&&C[Y+z]===0;for(;w.length>1&&(H||w[w.length-2]/T[T.length-2]>w[w.length-1]/T[T.length-1]);){H=!1;let P=w.pop(),O=T.pop();w[w.length-1]+=P,T[T.length-1]+=O}}let v=A,D=0;A=0;for(let z=0;z<w.length;z++){let H=E-v<N?(N+E-v)/2:Math.max(N,Math.min(E-v,w[z]/T[z]));for(let P=0;P<T[z];P++,D++)D>0&&(A+=C[Y+D]),Math.abs(G[q[Y+D]]-H-A)>.01&&(_=!0),G[q[Y+D]]=H+A}Y+=b}M&&(N=G[K[S]]+Lu)}}}}function B4(e,t,r,a){let{n,KIND:i,RANK:l,EF:s,ET:o,EFD:c,ETD:h,layerStart:d,order:f,pos:g}=e,p=C=>r!==void 0&&i[C]===1&&r[l[C]]===1,m=[],x=[],y=[],$=[];for(let C=0;C<s.length;C++){if(p(s[C]))continue;let K=Xc(e,r,C,1);m.push(s[C]),x.push(o[K]),y.push(c[C]),$.push(h[K])}let k=C=>t[x[C]]+$[C]-t[m[C]]-y[C],I=new Int32Array(n),_=[];for(let C=0;C<n;C++)I[C]=C,_.push([C]);let L=(C,K)=>{let Q=I[C],G=I[K];if(Q!==G){_[Q].length<_[G].length&&([Q,G]=[G,Q]);for(let Y of _[G])I[Y]=Q,_[Q].push(Y);_[G]=[]}},R=[];for(let C=0;C<m.length;C++){let K=Math.abs(k(C));K<.01?L(m[C],x[C]):K<=yy&&R.push(C)}if(R.length===0)return;R.sort((C,K)=>Math.abs(k(C))-Math.abs(k(K))||C-K);let W=C=>ky(e,a,C),q=(C,K)=>{for(let Q of _[C]){let G=d[l[Q]],Y=d[l[Q]+1],N=G+g[Q];if(N>G&&I[f[N-1]]!==C&&t[Q]+K-t[f[N-1]]<W(Q)+W(f[N-1])-.01||N+1<Y&&I[f[N+1]]!==C&&t[f[N+1]]-t[Q]-K<W(Q)+W(f[N+1])-.01)return!1}return!0};for(let C of R){let K=k(C);if(Math.abs(K)<.01){L(m[C],x[C]);continue}if(Math.abs(K)>yy||I[m[C]]===I[x[C]])continue;let Q=I[m[C]],G=I[x[C]],Y=_[Q].length<=_[G].length?Q:G;for(let N of[Y,Y===Q?G:Q]){let S=N===Q?K:-K;if(q(N,S)){for(let M of _[N])t[M]+=S;L(m[C],x[C]);break}}}}function W4(e){let{maxRank:t,KIND:r,layerStart:a,order:n}=e,i=new Uint8Array(t+1),l=!1;for(let s=1;s<t;s++){let o=a[s+1]>a[s];for(let c=a[s];o&&c<a[s+1];c++)r[n[c]]!==1&&(o=!1);o&&(i[s]=1,l=!0)}return l?i:void 0}function Y4(e,t,r,a,n){let{from:i,to:l,rank:s,track:o,levels:c,wide:h}=e,d=i.length,f=new Map;for(let C=0;C<d;C++){if(o.push(-1),c.push(0),Math.abs(i[C]-l[C])<cn)continue;let K=f.get(s[C]);K?K.push(C):f.set(s[C],[C])}if(f.size===0)return;let g=new Float64Array(d),p=new Float64Array(d);for(let C=0;C<d;C++)g[C]=Math.min(i[C],l[C]),p[C]=Math.max(i[C],l[C]);let m=(C,K)=>C>=g[K]-cn&&C<=p[K]+cn?1:0,x=(C,K)=>Math.abs(i[C]-i[K])<cn||Math.abs(l[C]-l[K])<cn,y=(C,K)=>g[C]<p[K]-cn&&g[K]<p[C]-cn,$=(C,K)=>y(C,K)&&!x(C,K),k=(C,K)=>y(C,K)||m(l[C],K)+m(i[K],C)+m(l[K],C)+m(i[C],K)>0,I=(C,K)=>m(l[C],K)+m(i[K],C),_=C=>{let K=C.map((G,Y)=>Y).sort((G,Y)=>g[C[G]]-g[C[Y]]),Q=[];for(let G=0;G<K.length;G++){let Y=K[G],N=p[C[Y]]+4*cn;for(let S=G+1;S<K.length&&g[C[K[S]]]<=N;S++){let M=K[S];Q.push(Math.min(Y,M),Math.max(Y,M))}}return Q},L=C=>{C.sort((D,z)=>p[z]-g[z]-(p[D]-g[D])||g[D]-g[z]||D-z);let K=C.length,Q=[],G=C.map((D,z)=>z),Y=D=>{for(;G[D]!==D;)D=G[D]=G[G[D]];return D},N=K<=xy,S=N?_(C):[],M=N?C.map(()=>[]):[];for(let D=0;D<S.length;D+=2){let z=S[D],H=S[D+1];$(C[z],C[H])&&(M[z].push(H),M[H].push(z))}let b=C.map((D,z)=>z);if(N){let D=new Int32Array(K),z=[];for(let P=0;P<K;P++)Q.push([]),z.push([]);for(let P=0;P<S.length;P+=2){let O=S[P],F=S[P+1],U=C[O],j=C[F];if(!k(U,j))continue;G[Y(O)]=Y(F);let J=I(U,j),Z=I(j,U);if(J===Z)continue;let B=J<Z?O:F,X=J<Z?F:O;Q[X].push(B),z[B].push(X),D[X]++}let H=new Uint8Array(K);b=[];for(let P=0;P<K;P++){let O=-1;for(let F=0;F<K&&!(!H[F]&&((O<0||D[F]<D[O])&&(O=F),D[F]===0));F++);H[O]=1,b.push(O);for(let F of z[O])D[F]--}}let E=new Set,w=[],T=0;for(let D of b){let z=C[D],H=0;for(let P of Q[D]??[])o[C[P]]>=H&&(H=o[C[P]]+1);if(N){E.clear();for(let P of M[D])E.add(o[C[P]]);for(;E.has(H);)H++}else{for(;w[H]?.some(P=>$(z,P));)H++;(w[H]??(w[H]=[])).push(z)}o[z]=H,H>=T&&(T=H+1)}let A=new Int32Array(K).fill(T),v=new Int32Array(K).fill(-1);for(let D=0;D<K;D++){let z=Y(D);A[z]=Math.min(A[z],o[C[D]]),v[z]=Math.max(v[z],o[C[D]])}for(let D=0;D<K;D++){let z=Y(D);c[C[D]]=v[z]-A[z]+1,r&&(o[C[D]]-=A[z])}return T},R=(C,K,Q)=>{let G=Zl(l[C]-i[C],K);for(let Y=0;Y<=Ns;Y++){let N=Y/Ns,S=1-N;Q[2*Y]=i[C]+(l[C]-i[C])*N*N*(3-2*N),Q[2*Y+1]=K*(3*G*N*S*S+3*(1-G)*N*N*S+N*N*N)}},W=(C,K,Q)=>{let G=Q*Q*1.000000001;for(let Y=0;Y<=Ns;Y++){let N=C[2*Y],S=C[2*Y+1];for(let M=0;M<Ns;M++){let b=K[2*M+2]-K[2*M],E=K[2*M+3]-K[2*M+1],w=Math.max(0,Math.min(1,((N-K[2*M])*b+(S-K[2*M+1])*E)/(b*b+E*E||1))),T=N-K[2*M]-w*b,A=S-K[2*M+1]-w*E;if(T*T+A*A<G&&Math.hypot(T,A)<Q)return!0}}return!1},q=(C,K,Q,G)=>{let Y=Math.max(Q/2,Q-2*I4);return R(C,Y,Iu),R(K,Y,Nu),W(Iu,Nu,G)||W(Nu,Iu,G)};for(let[C,K]of f){if(!r){t[C]=L(K);continue}if(K.length>xy)continue;let Q=K.filter(w=>h[w]===1);L(Q);let G=new Set(Q.filter(w=>c[w]>1)),Y=_(K);for(let w=0;w<Y.length;w+=2){let T=K[Y[w]],A=K[Y[w+1]];G.has(T)&&G.has(A)||!$(T,A)||i[T]<l[T]!=i[A]<l[A]||q(T,A,a[C],h[T]===1||h[A]===1?N4:L4)&&G.add(T).add(A)}for(let w of Q)o[w]=-1,c[w]=0;if(G.size===0)continue;let N=0,S=0,M=new Set;for(let w=0;w<Y.length;w+=2){let T=K[Y[w]],A=K[Y[w+1]];if(G.has(T)&&G.has(A)){if(!y(T,A))continue;i[T]<l[T]!=i[A]<l[A]?N++:x(T,A)||S++}else(G.has(T)||G.has(A))&&k(T,A)&&M.add(T).add(A)}if(N>S){for(let w of K)(p[w]-g[w])*my>n[C]&&(n[C]=(p[w]-g[w])*my);continue}let b=K.filter(w=>G.has(w)||h[w]!==1&&M.has(w));L(b);let E=0;for(let w of b)c[w]>E&&(E=c[w]);t[C]=E}}function q4(e,t,r,a,n,i,l){let{maxRank:s,EF:o,ET:c,EFD:h,ETD:d,succStart:f,succE:g,predStart:p,predE:m,layerStart:x,order:y}=e,$=new Float64Array(t.length),k=new Float64Array(t.length),I=new Float64Array(t.length);for(let L=0;L<a.length;L++){let R=a[L];if(R<0)continue;let W=R+n[L]-1,q=e.RANK[R];for(let C=R;C<W;C++){if(!r[q+C-R])continue;let K=C;for(;K+1<W&&r[q+K+1-R];)K++;let Q=m[p[C]],G=g[f[K]],Y=t[o[Q]]+h[Q],N=t[c[G]]+d[G],S=K-C+2;for(let M=C;M<=K;M++)$[M]=Y+(N-Y)*(M-C+1)/S,k[M]=Y,I[M]=N;C=K}}let _=[];for(let L=1;L<s;L++){if(!r[L])continue;let R=x[L],W=x[L+1],q=Array.from(y.subarray(R,W)).sort((C,K)=>k[C]-k[K]||I[C]-I[K]||C-K);for(let C=0;C<q.length;){_.length=0;let K=C;for(;K<q.length&&Math.abs(k[q[K]]-k[q[C]])<1&&Math.abs(I[q[K]]-I[q[C]])<1;K++)_.push(q[K]);_.sort((Q,G)=>e.pos[Q]-e.pos[G]);for(let Q=0;Q<_.length;Q++){let G=_[Q];t[G]=$[G]+(Q-(_.length-1)/2)*i,(_.length===1||i===0)&&(l[G]=1)}C=K}}}function G4(e,t,r,a,n,i){let{maxRank:l,W:s,KIND:o,RANK:c,EF:h,ET:d,EFD:f,ETD:g,succStart:p,succE:m,predStart:x,predE:y,layerStart:$,order:k}=e,I=new Uint8Array(l+1),_=!1;for(let L=1;L<l;L++){let R=!1,W=!1;for(let q=$[L];q<$[L+1];q++){let C=o[k[q]];C===2?R=!0:C!==1&&(W=!0)}R&&!W&&(I[L]=1,_=!0)}if(_)for(let L=0;L<r.length;L++){let R=r[L];if(!(R<0))for(let W=R,q=R+a[L]-1;W<q;W++){if(o[W]!==1||!I[c[W]])continue;let C=W,K=W;for(;C>R&&i[C-1];)C--;for(;K+1<q&&i[K+1];)K++;let Q=y[x[C]],G=m[p[K]],Y=t[h[Q]]+f[Q],N=t[d[G]]+g[G],S=Math.min(Y,N)-n,M=Math.max(Y,N)+n,b=!0,E=c[W];for(let T=$[E];b&&T<$[E+1];T++){let A=k[T];o[A]===2&&t[A]+s[A]/2>S&&t[A]-s[A]/2<M&&(b=!1)}if(!b)continue;i[W]=1;let w=K-C+2;for(let T=C;T<=K;T++)t[T]=Y+(N-Y)*(T-C+1)/w}}}function H4(e,t){let{n:r,real:a,maxRank:n,W:i,EF:l,ET:s,EFD:o,ETD:c,succStart:h,succE:d,predStart:f,predE:g,layerStart:p,order:m,pos:x,offsets:y,fixed:$,GRP:k,groupParent:I}=e,_=0;for(let ae=0;ae<=n;ae++)_=Math.max(_,p[ae+1]-p[ae]);if(_<2)return[0,0];let L=y?new Int32Array(l.length):void 0,R=new Int32Array(L?l.length:0),W=new Int32Array(L?r:0),q=L?d.slice():d,C=new Uint8Array(L?r:0);if(L){let ae=g.slice(),ie=(ee,re,fe,ye)=>{for(let oe=re+1;oe<fe;oe++)if(ye[ee[oe]]!==ye[ee[re]])return ee.subarray(re,fe).sort((we,ue)=>ye[we]-ye[ue]),!0;return!1};for(let ee=0;ee<r;ee++){if(W[ee]=1,ie(ae,f[ee],f[ee+1],c))for(let re=f[ee]+1;re<f[ee+1];re++)c[ae[re]]!==c[ae[re-1]]&&W[ee]++,R[ae[re]]=W[ee]-1;ie(q,h[ee],h[ee+1],o)&&(C[ee]=1)}}let K=1;for(;K<(L?_+l.length:_);)K<<=1;let Q=new Int32Array(2*K),G=new Int32Array(l.length),Y=()=>{let ae=0;for(let ie=0;ie<n;ie++){let ee=p[ie+2]-p[ie+1];if(L){let ye=0;for(let oe=p[ie+1];oe<p[ie+2];oe++){let we=m[oe];for(let ue=f[we];ue<f[we+1];ue++)L[g[ue]]=ye+R[g[ue]];ye+=W[we]}ee=ye}if(ee<2)continue;let re=0;for(let ye=p[ie];ye<p[ie+1];ye++){let oe=m[ye],we=h[oe],ue=h[oe+1],ge=re;for(let Te=we;Te<ue;Te++)G[re++]=L?L[q[Te]]:x[s[d[Te]]];let Ae=re-ge;if(!(Ae<2))if(L&&C[oe])for(let Te=ge+1;Te<re;Te++){let he=G[Te],pe=o[q[we+Te-ge]],be=Te-1;for(;be>=ge&&o[q[we+be-ge]]===pe&&G[be]>he;)G[be+1]=G[be],be--;G[be+1]=he}else if(Ae<=12)for(let Te=ge+1;Te<re;Te++){let he=G[Te],pe=Te-1;for(;pe>=ge&&G[pe]>he;)G[pe+1]=G[pe],pe--;G[pe+1]=he}else G.subarray(ge,re).sort()}if(re<2)continue;let fe=1;for(;fe<ee;)fe<<=1;Q.fill(0,0,2*fe);for(let ye=0;ye<re;ye++){let oe=G[ye]+fe;for(Q[oe]++;oe>1;)!(oe&1)&&(ae+=Q[oe+1]),oe>>=1,Q[oe]++}}return ae},N=Y(),S=new Float64Array(r),M=new Int32Array(_),b=new Int32Array(_),E=I?I.length:0,w=new Int32Array(E);for(let ae=0;ae<E;ae++)for(let ie=ae;ie>=0;ie=I[ie])w[ae]++;let T=new Float64Array(E),A=new Int32Array(E),v=new Int32Array(E),D=(ae,ie)=>{let ee=p[ae],re=p[ae+1];for(let ue=ee;ue<re;ue++)for(let ge=k[m[ue]];ge>=0;ge=I[ge])T[ge]=0,A[ge]=0;for(let ue=ee;ue<re;ue++){let ge=m[ue];for(let Ae=k[ge];Ae>=0;Ae=I[Ae])A[Ae]===0&&(v[Ae]=ue),T[Ae]+=ie[ge],A[Ae]++}let fe=ue=>ue>=r?T[ue-r]/A[ue-r]:ie[ue],ye=ue=>ue>=r?v[ue-r]:ee+x[ue],oe=(ue,ge)=>{let Ae=ue,Te=ge,he=k[ue],pe=k[ge],be=he<0?0:w[he],Ne=pe<0?0:w[pe];for(;be>Ne;be--)Ae=r+he,he=I[he];for(;Ne>be;Ne--)Te=r+pe,pe=I[pe];for(;he!==pe;)Ae=r+he,he=I[he],Te=r+pe,pe=I[pe];return fe(Ae)-fe(Te)||ye(Ae)-ye(Te)},we=Array.from(m.subarray(ee,re)).sort(oe);m.set(we,ee);for(let ue=ee;ue<re;ue++)x[m[ue]]=ue-ee};if(k){let ae=new Float64Array(r);for(let ie=0;ie<=n;ie++){for(let ee=p[ie];ee<p[ie+1];ee++)ae[m[ee]]=ee-p[ie];D(ie,ae)}}let z=k?Y():N;if(z===0)return[0,N];let H=m.slice(),P=Math.min(z,N),O=(ae,ie)=>{let ee=ae?f:h,re=ae?g:d,fe=ae?l:s,ye=ae?o:c;for(let oe=1;oe<=n;oe++){let we=ae?oe:n-oe;if($[we])continue;let ue=p[we],ge=p[we+1],Ae=0;for(let he=ue;he<ge;he++){let pe=m[he],be=pe<a?t[pe].pin:0;if(be!==0){S[pe]=be*1e9,M[Ae++]=pe;continue}let Ne=ee[pe],Oe=ee[pe+1];if(Ne===Oe){if(k){let de=ae?p[we]-p[we-1]:p[we+2]-p[we+1];S[pe]=(he-ue)*de/(ge-ue);continue}S[pe]=-1;continue}let Ye=0;for(let de=Ne;de<Oe;de++){let Me=fe[re[de]];Ye+=x[Me],y&&i[Me]>0&&(Ye+=ye[re[de]]/i[Me])}S[pe]=Ye/(Oe-Ne),M[Ae++]=pe}if(k){D(we,S);continue}if(Ae<2)continue;O4(M,Ae,S,x,ie,b);let Te=0;for(let he=ue;he<ge;he++)S[m[he]]!==-1&&(m[he]=M[Te++]);for(let he=ue;he<ge;he++)x[m[he]]=he-ue}},F=()=>{let ae=0;for(let ie=0;ie<=n;ie++)for(let ee=p[ie];ee<p[ie+1];ee++)if(!(m[ee]>=a))for(let re=ee+1;re<p[ie+1];re++)m[re]<m[ee]&&ae++;return ae},U=()=>{for(let ae=0;ae<=n;ae++)for(let ie=p[ae];ie<p[ae+1];ie++)x[m[ie]]=ie-p[ae]},j=ae=>ae<a?t[ae].pin:0,J=(ae,ie)=>{let ee=ie?l[ae]:s[ae];return y&&i[ee]>0?x[ee]+(ie?o[ae]:c[ae])/i[ee]:x[ee]},Z=(ae,ie)=>{let ee=0;for(let re=f[ae];re<f[ae+1];re++){let fe=J(g[re],!0);for(let ye=f[ie];ye<f[ie+1];ye++)fe>J(g[ye],!0)&&ee++}for(let re=h[ae];re<h[ae+1];re++){let fe=J(d[re],!1);for(let ye=h[ie];ye<h[ie+1];ye++)fe>J(d[ye],!1)&&ee++}return ee},B=()=>{for(let ae=0;ae<8;ae++){let ie=!1;for(let ee=0;ee<=n;ee++){if($[ee])continue;let re=p[ee];for(let fe=re;fe+1<p[ee+1];fe++){let ye=m[fe],oe=m[fe+1];j(ye)!==j(oe)||k&&k[ye]!==k[oe]||Z(oe,ye)>=Z(ye,oe)||(m[fe]=oe,m[fe+1]=ye,x[oe]=fe-re,x[ye]=fe+1-re,ie=!0)}}if(!ie)break}},X=m.slice(),te=r<=600,se=H,ce=1/0;for(let ae=0;ae<(te?2:1);ae++){ae>0&&(m.set(X),U());let ie=P,ee=X.slice();for(let fe=0,ye=0;ye<4&&fe<v4;fe++,ye++){O((fe+ae)%2===0,fe%4>=2);let oe=Y();if(oe<ie&&(ie=oe,ee.set(m),ye=0,oe===0))break}if(m.set(ee),te&&ie>0){U(),B();let fe=Y();fe<ie&&(ie=fe,ee.set(m))}let re=te?F():0;(ae===0||ie<z||ie===z&&re<ce)&&(z=ie,se=ee,ce=re)}if(m.set(se),U(),H.set(se),k&&(z=Y()),!te)return[z,N];for(let ae=0;ae<a;ae++)if(t[ae].pin!==0)return[z,N];if(ce===0||$[0]||$[n])return[z,N];for(let ae=0;ae<=n;ae++)m.subarray(p[ae],p[ae+1]).reverse();return U(),(Y()>z||F()>=ce)&&m.set(H),[z,N]}function ky(e,t,r){return e.W[r]/2+(e.KIND[r]===0?t.nodeSep:t.edgeSep)/2}function wy(e,t){let{n:r,maxRank:a,W:n,KIND:i,EF:l,ET:s,EFD:o,ETD:c,succStart:h,succE:d,predStart:f,predE:g,layerStart:p,order:m,pos:x}=e,y=l.length,$=new Float64Array(r);for(let v=0;v<r;v++)$[v]=ky(e,t,v);let k=new Int32Array(y);for(let v=0;v<y;v++)k[v]=x[s[v]];for(let v=0;v<r;v++)h[v+1]-h[v]>1&&by(d,h[v],h[v+1],k);for(let v=0;v<y;v++)k[v]=x[l[v]];for(let v=0;v<r;v++)f[v+1]-f[v]>1&&by(g,f[v],f[v+1],k);let I=new Uint8Array(y);for(let v=1;v<=a;v++){let D=p[v]-p[v-1],z=p[v],H=p[v+1],P=0,O=z;for(let F=z;F<H;F++){let U=m[F],j=-1;if(Ls(i[U])){let Z=l[g[f[U]]];Ls(i[Z])&&(j=Z)}let J=j>=0?x[j]:D;if(j>=0||F===H-1){for(let Z=O;Z<=F;Z++){let B=m[Z],X=Ls(i[B]);for(let te=f[B];te<f[B+1];te++){let se=g[te],ce=x[l[se]];(ce<P||J<ce)&&!(X&&Ls(i[l[se]]))&&(I[se]=1)}}O=F+1,P=J}}}let _=[],L=new Int32Array(r),R=new Int32Array(r),W=new Float64Array(r),q=new Int32Array(r),C=new Int32Array(r),K=new Float64Array(r),Q=new Int32Array(r),G=new Int32Array(r+1),Y=new Int32Array(r),N=new Int32Array(r),S=new Int32Array(r),M=new Float64Array(r);for(let v=0;v<4;v++){let D=v<2,z=(v&1)===1,H=D?f:h,P=D?g:d,O=D?l:s,F=D?c:o,U=D?o:c;for(let B=0;B<r;B++)L[B]=B,R[B]=B,W[B]=0,Q[B]=0,G[B+1]=0,M[B]=0;for(let B=0;B<=a;B++){let X=D?B:a-B,te=p[X],se=p[X+1],ce=D?X-1:X+1,ae=ce>=0&&ce<=a?p[ce+1]-p[ce]-1:0,ie=-1;for(let ee=z?se-1:te;z?ee>=te:ee<se;z?ee--:ee++){let re=m[ee],fe=H[re],ye=H[re+1]-fe;if(ye===0)continue;let oe=fe+(ye-1>>1),we=fe+(ye>>1);for(let ue=0;ue<2&&!(ue===1&&oe===we);ue++){let ge=P[ue===0!==z?oe:we],Ae=O[ge],Te=z?ae-x[Ae]:x[Ae];R[re]===re&&ie<Te&&I[ge]===0&&(R[Ae]=re,R[re]=L[re]=L[Ae],W[re]=W[Ae]+U[ge]-F[ge],ie=Te)}}}let j=0;for(let B=0;B<=a;B++){let X=p[B],te=p[B+1];for(let se=X+1;se<te;se++){let ce=z?m[se]:m[se-1],ae=z?m[se-1]:m[se],ie=$[ce]+$[ae];q[j]=L[ce],C[j]=L[ae],K[j]=z?ie-W[ce]+W[ae]:ie+W[ce]-W[ae],Q[L[ae]]++,G[L[ce]+1]++,j++}}for(let B=0;B<r;B++)G[B+1]+=G[B];for(let B=0;B<r;B++)N[B]=G[B];for(let B=0;B<j;B++)Y[N[q[B]]++]=B;let J=0;for(let B=0;B<r;B++)L[B]===B&&Q[B]===0&&(S[J++]=B);for(let B=0;B<J;B++){let X=S[B];for(let te=G[X];te<G[X+1];te++){let se=Y[te],ce=C[se];M[X]+K[se]>M[ce]&&(M[ce]=M[X]+K[se]),--Q[ce]===0&&(S[J++]=ce)}}for(let B=J-1;B>=0;B--){let X=S[B],te=1/0;for(let se=G[X];se<G[X+1];se++){let ce=Y[se],ae=M[C[ce]]-K[ce];ae<te&&(te=ae)}te!==1/0&&te>M[X]&&(M[X]=te)}let Z=new Float64Array(r);for(let B=0;B<r;B++)Z[B]=(z?-M[L[B]]:M[L[B]])+W[B];_.push(Z)}let b=0,E=1/0,w=[],T=[];for(let v=0;v<4;v++){let D=1/0,z=-1/0,H=_[v];for(let P=0;P<r;P++){let O=n[P]/2;H[P]-O<D&&(D=H[P]-O),H[P]+O>z&&(z=H[P]+O)}w.push(D),T.push(z),z-D<E&&(E=z-D,b=v)}for(let v=0;v<4;v++){let D=v&1?T[b]-T[v]:w[b]-w[v];if(D!==0){let z=_[v];for(let H=0;H<r;H++)z[H]+=D}}let A=new Float64Array(r);for(let v=0;v<r;v++){let D=_[0][v],z=_[1][v],H=_[2][v],P=_[3][v],O;D>z&&(O=D,D=z,z=O),H>P&&(O=H,H=P,P=O),D>H&&(O=D,D=H,H=O),z>P&&(O=z,z=P,P=O),z>H&&(O=z,z=H,H=O),A[v]=(z+H)/2}return A}function Kc(){let e=new Map;return{add(t,r,a){let n=xt(a);r>=0&&n>0&&n+Xl>(e.get(t*4+r)??0)&&e.set(t*4+r,n+Xl)},of:(t,r)=>r>=0?e.get(t*4+r)??0:0}}function Xr(e,t,r,a,n=r>0?r+Xl:0,i=a>0?a+Xl:0){let l=t==="linear",s=t==="step"||t==="stepBefore"||t==="stepAfter",o=[],c=[],h=[],d=(b,E,w,T)=>Math.abs(b-w)<.01&&Math.abs(E-T)<.01;for(let b=0;b<e.length;b+=3){let E=e[b],w=e[b+1],T=e[b+2],A=o.length-1;if(s&&A>=0&&Math.abs(E-o[A])>=.01&&Math.abs(w-c[A])>=.01){let v=o[A],D=c[A],z=t==="stepBefore"?D:t==="stepAfter"?w:(D+w)/2,H=t==="stepBefore"?v:t==="stepAfter"?E:(v+E)/2,P=T===0?[v,z,E,z]:[H,D,H,w];for(let O=0;O<4;O+=2)d(P[O],P[O+1],v,D)||d(P[O],P[O+1],E,w)||(o.push(P[O]),c.push(P[O+1]),h.push(T))}o.push(E),c.push(w),h.push(T)}let f=o.length-1,g=b=>Math.abs(o[b]-o[b-1])<.01||Math.abs(c[b]-c[b-1])<.01,p=b=>l||g(b),m=(b,E,w)=>{if(!p(Math.max(b,E)))return w===0?[0,Math.sign(c[E]-c[b])||1]:[Math.sign(o[E]-o[b])||1,0];let T=o[E]-o[b],A=c[E]-c[b],v=Math.hypot(T,A)||1;return[T/v,A/v]},[x,y]=m(0,1,h[1]),[$,k]=m(f-1,f,h[f]),I=o[0],_=c[0],L=o[f],R=c[f];o[0]+=x*r,c[0]+=y*r,o[f]-=$*a,c[f]-=k*a;let W=b=>Math.abs(o[b]-o[b-1])+Math.abs(c[b]-c[b-1]),q=b=>!l&&b>0&&b<f&&g(b)&&g(b+1)&&W(b)>=.01&&W(b+1)>=.01&&Math.abs(o[b]-o[b-1])<.01!=Math.abs(o[b+1]-o[b])<.01,C=(b,E,w)=>Math.abs(o[b]-o[b-1])*Math.abs(E)+Math.abs(c[b]-c[b-1])*Math.abs(w),K=(b,E,w)=>{let T=Math.min(Math.max(0,b-Xl-E),w/4);return T+Math.min(b-E-T,(w-T)/4)},Q=i>a&&(!p(f)||q(f-1))?K(i,a,C(f,$,k)):0,G=n>r&&(!p(1)||q(1))?K(n,r,C(1,x,y)):0;Q>=1&&(o.splice(f,0,o[f]-$*Q),c.splice(f,0,c[f]-k*Q),h.splice(f,0,h[f]),f++),G>=1&&(o.splice(1,0,o[0]+x*G),c.splice(1,0,c[0]+y*G),h.splice(1,0,h[1]),f++);let Y=`M${u(o[0])},${u(c[0])}`,N=o[0],S=c[0],M=(b,E)=>{d(b,E,N,S)||(Y+=`L${u(b)},${u(E)}`,N=b,S=E)};for(let b=1;b<=f;b++){let E=o[b],w=c[b];if(!p(b)){let P=h[b]===0,O=P?w-S:E-N,F=Math.abs(O)*Zl(P?E-N:w-S,O),U=P?0:Math.sign(O)*F,j=P?Math.sign(O)*F:0;Y+=`C${u(N+U)},${u(S+j)} ${u(E-U)},${u(w-j)} ${u(E)},${u(w)}`,N=E,S=w;continue}if(!q(b)){if(b<f&&g(b)&&g(b+1)&&(E-o[b-1])*(o[b+1]-E)+(w-c[b-1])*(c[b+1]-w)>0)continue;M(E,w);continue}let T=q(b-1)?W(b)/2:W(b),A=q(b+1)?W(b+1)/2:W(b+1);s&&(T=A=Math.min(U4,T,A));let[v,D]=m(b-1,b,h[b]),[z,H]=m(b,b+1,h[b+1]);M(E-v*T,w-D*T),N=E+z*A,S=w+H*A,s?Y+=`Q${u(E)},${u(w)} ${u(N)},${u(S)}`:Y+=`C${u(E-v*T*(1-jc))},${u(w-D*T*(1-jc))} ${u(E+z*A*(1-jc))},${u(w+H*A*(1-jc))} ${u(N)},${u(S)}`}return{d:Y,sx:I,sy:_,sdx:-x,sdy:-y,ex:L,ey:R,edx:$,edy:k}}function xt(e){return e==="arrow_point"?Xt-1:e==="arrow_circle"?Xt:e==="arrow_cross"?4:0}function Mt(e,t,r,a,n,i){let l=-n,s=a;if(e==="arrow_point"){let o=t-a*Xt,c=r-n*Xt,h=Xt*.42;return`<path class="pele-marker" d="M${u(t)},${u(r)}L${u(o+l*h)},${u(c+s*h)}L${u(o-l*h)},${u(c-s*h)}Z" fill="${i}" stroke="none"/>`}if(e==="arrow_circle")return`<circle class="pele-marker" cx="${u(t-a*4)}" cy="${u(r-n*4)}" r="3.5" fill="${i}" stroke="none"/>`;if(e==="arrow_cross"){let o=t-a*4,c=r-n*4,h=3.5,d=(a+l)*h,f=(n+s)*h,g=(a-l)*h,p=(n-s)*h;return`<path class="pele-marker" d="M${u(o-d)},${u(c-f)}L${u(o+d)},${u(c+f)}M${u(o-g)},${u(c-p)}L${u(o+g)},${u(c+p)}"/>`}return""}function Tr(e,t,r,a,n,i){let l=t.width+8,s=t.height;return`<g class="pele-edge-label" data-id="${Pe(e)}"><rect x="${u(r-l/2)}" y="${u(a-s/2)}" width="${u(l)}" height="${u(s)}" rx="3" fill="var(--_bg)"/>`+Re(t,r,a,n,i)+"</g>"}function Zc(e,t,r,a,n,i,l,s){let o=(n?t:r)/2,c=Math.min(o-4,8+a*6),h=i+a*8,d=Math.hypot(h,c)||1,f=(m,x)=>n?`${u(e.x+x)},${u(e.y+r/2+m)}`:`${u(e.x+t/2+m)},${u(e.y+x)}`,g=h/d*l,p=c/d*l;return n?(s.labelX=e.x,s.labelY=e.y+r/2+h+4+s.labelH/2):(s.labelX=e.x+t/2+h+4+s.labelW/2,s.labelY=e.y),{d:`M${f(0,-c)}C${f(h,-c*2)} ${f(h,c*2)} ${f(g,c+p)}`,sx:n?e.x-c:e.x+t/2,sy:n?e.y+r/2:e.y-c,sdx:n?0:-1,sdy:n?-1:0,ex:n?e.x+c:e.x+t/2,ey:n?e.y+r/2:e.y+c,edx:n?-c/d:-h/d,edy:n?-h/d:-c/d}}var v4,fy,Lu,uy,A4,py,E4,S4,T4,C4,_4,gy,I4,N4,L4,my,cn,yy,R4,xy,Ns,Iu,Nu,Xt,U4,jc,Xl,$r=Ge(()=>{xe();yt();v4=24,fy=2e4,Lu=16,uy=8,A4=.125,py=3,E4=18,S4=10,T4=14,C4=2,_4=28,gy=12,I4=12,N4=8,L4=4,my=.5,cn=.5,yy=12,R4=40,xy=400,Ns=16,Iu=new Float64Array(2*Ns+2),Nu=new Float64Array(2*Ns+2);Xt=8,U4=12,jc=.62,Xl=6});function Cr(e){return e==="BT"||e==="LR"||e==="RL"?e:"TB"}function My(e,t,r,a){let n=[];for(let s of e)n.push(s.x,s.y,s.w,s.h);let i=[];for(let s of t)i.push(s.labelX,s.labelY);let l=[];for(let s of r){l.push(s.x,s.y);for(let o of s.ports)l.push(o.px,o.py)}return{nodes:n,routes:t.map(s=>s.route),labels:i,levels:l,total:a}}function vy(e,t,r,a){t.forEach((i,l)=>{i.x=e.nodes[4*l],i.y=e.nodes[4*l+1],i.w=e.nodes[4*l+2],i.h=e.nodes[4*l+3]}),r.forEach((i,l)=>{i.route=e.routes[l],i.labelX=e.labels[2*l],i.labelY=e.labels[2*l+1]});let n=0;for(let i of a){i.x=e.levels[n++],i.y=e.levels[n++];for(let l of i.ports)l.px=e.levels[n++],l.py=e.levels[n++]}return e.total}function eT(e){return e.tracks?1:e.straight?2:0}function Jc(e,t,r=0){let a=0;for(let N of t)N.src!==N.dst&&N.route.length>3&&(a+=(N.route.length/3-1)*Q4);let n=new Float64Array(a),i=new Float64Array(a),l=new Float64Array(a),s=new Float64Array(a),o=new Float64Array(a),c=new Float64Array(a),h=new Int32Array(a),d=new Uint8Array(a),f=0,g=1/0,p=-1/0,m=NaN,x=NaN,y=NaN,$=NaN,k=(N,S,M,b,E,w)=>{let T=f-1;M===y&&b===$&&(w===b&&x===b||E===M&&m===M)&&h[T]===N&&d[T]===S&&(M-m)*(E-M)+(b-x)*(w-b)>0&&(f--,M=m,b=x),m=M,x=b,y=E,$=w,d[f]=S,n[f]=Math.min(M,E),l[f]=Math.max(M,E),i[f]=M<=E?b:w,s[f]=M<=E?w:b,o[f]=Math.min(b,w),c[f]=Math.max(b,w),o[f]<g&&(g=o[f]),c[f]>p&&(p=c[f]),h[f++]=N};for(let N=0;N<t.length;N++){let S=t[N];if(S.src===S.dst)continue;let M=S.route,b=v=>Math.abs(M[v]-M[v-3])<.01||Math.abs(M[v+1]-M[v-2])<.01,E=v=>Math.abs(M[v]-M[v-3])+Math.abs(M[v+1]-M[v-2]),w=v=>r===0&&v>0&&v<M.length-3&&b(v)&&b(v+3)&&E(v)>=.01&&E(v+3)>=.01&&Math.abs(M[v]-M[v-3])<.01!=Math.abs(M[v+3]-M[v])<.01,T=M[0],A=M[1];for(let v=3;v<M.length;v+=3){let D=(v===3?1:0)|(v===M.length-3?2:0),z=T,H=A,P=M[v],O=M[v+1];if(T=P,A=O,b(v)||r===2){if(!w(v)){k(N,D,z,H,P,O);continue}let Z=w(v-3)?E(v)/2:E(v),B=w(v+3)?E(v+3)/2:E(v+3),X=(P-M[v-3])/E(v),te=(O-M[v-2])/E(v),se=(M[v+3]-P)/E(v+3),ce=(M[v+4]-O)/E(v+3),ae=P-X*Z,ie=O-te*Z;k(N,D,z,H,ae,ie);let ee=P-X*Z*(1-Qc),re=O-te*Z*(1-Qc),fe=P+se*B*(1-Qc),ye=O+ce*B*(1-Qc);T=P+se*B,A=O+ce*B;let oe=D|(v+3===M.length-3?2:0),we=ae,ue=ie;for(let ge=1;ge<=Ou;ge++){let Ae=ge/Ou,Te=1-Ae,he=Te*Te*Te*ae+3*Te*Te*Ae*ee+3*Te*Ae*Ae*fe+Ae*Ae*Ae*T,pe=Te*Te*Te*ie+3*Te*Te*Ae*re+3*Te*Ae*Ae*ye+Ae*Ae*Ae*A;k(N,oe,we,ue,he,pe),we=he,ue=pe}continue}if(r===1){let Z=M[v+2]===0,B=Z?z:(z+P)/2,X=Z?(H+O)/2:H;k(N,D,z,H,B,X),k(N,D,B,X,Z?P:B,Z?X:O),k(N,D,Z?P:B,Z?X:O,P,O);continue}let F=M[v+2]===0,U=F?Zl(P-z,O-H):Zl(O-H,P-z),j=z,J=H;for(let Z=1;Z<=Ru;Z++){let B=Z/Ru,X=1-B,te=B*B*(3-2*B),se=3*U*B*X*X+3*(1-U)*B*B*X+B*B*B,ce=z+(P-z)*(F?te:se),ae=H+(O-H)*(F?se:te);k(N,D,j,J,ce,ae),j=ce,J=ae}}}let I=p>g?Math.round(Math.sqrt(f)):1,_=p>g?I/(p-g):0,L=N=>Math.min(I-1,Math.floor((N-g)*_)),R=new Int32Array(f),W=new Int32Array(I+1);for(let N=0;N<f;N++){R[N]=L(o[N]);for(let S=R[N],M=L(c[N]);S<=M;S++)W[S+1]++}for(let N=0;N<I;N++)W[N+1]+=W[N];let q=W.slice(0,I),C=new Int32Array(W[I]);for(let N=0;N<f;N++)for(let S=R[N],M=L(c[N]);S<=M;S++)C[q[S]++]=N;let K=new Float64Array(t.length*8),Q=(N,S,M,b)=>Math.abs(N[S]-N[M])<Rs&&Math.abs(N[S]-N[b])<Rs||Math.abs(N[S+1]-N[M+1])<Rs&&Math.abs(N[S+1]-N[b+1])<Rs;for(let N=0;N<t.length;N++){let S=t[N].route;if(S.length<6)continue;let M=3;for(;M+3<S.length&&Q(S,0,M,M+3);)M+=3;let b=S.length-3,E=b-3;for(;E>=3&&Q(S,b,E,E-3);)E-=3;K.set([S[0],S[1],S[M],S[M+1],S[E],S[E+1],S[b],S[b+1]],N*8)}let G=(N,S,M,b)=>{let E=N*8+(S===1?0:4),w=K[E],T=K[E+1],A=K[E+2]-w,v=K[E+3]-T,D=A*A+v*v,z=D>0?Math.max(0,Math.min(1,((M-w)*A+(b-T)*v)/D)):0;return Math.hypot(M-w-z*A,b-T-z*v)<Rs},Y=0;for(let N=0;N<I;N++){let S=W[N+1];if(S-W[N]>J4)C.subarray(W[N],S).sort((M,b)=>n[M]-n[b]||M-b);else for(let M=W[N]+1;M<S;M++){let b=C[M],E=M;for(;E>W[N]&&n[C[E-1]]>n[b];E--)C[E]=C[E-1];C[E]=b}for(let M=W[N];M<S;M++){let b=C[M],E=l[b]-n[b],w=s[b]-i[b],T=R[b]===N;for(let A=M+1;A<S;A++){let v=C[A];if(n[v]>l[b])break;if(c[v]<o[b]||o[v]>c[b]||h[b]===h[v]||!T&&R[v]!==N)continue;let D=E*(i[v]-i[b])-w*(n[v]-n[b]),z=E*(s[v]-i[b])-w*(l[v]-n[b]);if(D>0==z>0)continue;let H=l[v]-n[v],P=s[v]-i[v],O=H*(i[b]-i[v])-P*(n[b]-n[v]),F=H*(s[b]-i[v])-P*(l[b]-n[v]);if(O>0==F>0)continue;let U=t[h[b]],j=t[h[v]],J=O/(O-F),Z=n[b]+J*E,B=i[b]+J*w,X=(te,se,ce)=>(d[b]&se)!==0&&(d[v]&ce)!==0||Math.abs(Z-e[te].x)<e[te].w/2+Ay&&Math.abs(B-e[te].y)<e[te].h/2+Ay||G(h[b],se,Z,B)&&G(h[v],ce,Z,B);U.src===j.src&&X(U.src,1,1)||U.src===j.dst&&X(U.src,1,2)||U.dst===j.src&&X(U.dst,2,1)||U.dst===j.dst&&X(U.dst,2,2)||Y++}}}return Y}function Vn(e,t,r,a){for(let n of e)n.x+=r,n.y+=a;for(let n of t){for(let i=0;i<n.route.length;i+=3)n.route[i]+=r,n.route[i+1]+=a;n.labelX+=r,n.labelY+=a}}function Kt(e,t,r=-1){return{w:e,h:t,parent:r,isGroup:!1,dir:void 0,padX:0,padTop:0,padBottom:0,minW:0,seq:0,span:0,x:0,y:0}}function eh(e){return e==="TB"?0:e==="BT"?2:e==="LR"?3:1}function Ql(e){return e+2&3}function aa(e,t,r,a){let n=e.length,i=new Map,l=[],s=(S,M)=>{let b={id:S,dir:M,items:[],edges:[],ports:[],portOf:new Map,routes:new Map,x:0,y:0};return i.set(S,b),b},o=s(-1,r),c=[];for(let S=0;S<n;S++)c.push([]);let h=[];for(let S=0;S<n;S++){let M=e[S].parent;M>=0&&M<n&&M!==S&&e[M].isGroup?c[M].push(S):(e[S].parent=-1,h.push(S))}o.items=h,l.push(o);let d=new Int32Array(n),f=new Uint8Array(n),g=S=>{for(let M=S;M<l.length;M++){let b=l[M];for(let E of b.items)if(f[E]=1,d[E]=b.id<0?0:d[b.id]+1,e[E].isGroup){let w=s(E,e[E].dir??b.dir);w.items=c[E],l.push(w)}}};g(0);for(let S=0;S<n;S++){if(f[S])continue;let M=e[S].parent;if(c[M]=c[M].filter(b=>b!==S),e[S].parent=-1,o.items.push(S),f[S]=1,d[S]=0,e[S].isGroup){let b=l.length,E=s(S,e[S].dir??r);E.items=c[S],l.push(E),g(b)}}for(let S=l.length-1;S>0;S--){let M=l[S],b=1/0;for(let E of M.items)e[E].seq<b&&(b=e[E].seq);b!==1/0&&(e[M.id].seq=b)}for(let S of l)S.items.sort((M,b)=>e[M].seq-e[b].seq||M-b);let p=0;for(let S of t){let M=S.src,b=S.dst,E=0;for(;d[M]>d[b];E++)M=e[M].parent;for(;d[b]>d[M];E++)b=e[b].parent;for(;M!==b&&e[M].parent!==e[b].parent;E+=2)M=e[M].parent,b=e[b].parent;M!==b&&(p+E>j4?(S.src=M,S.dst=b):p+=E)}let m=[],x=[];for(let S=0;S<t.length;S++){let M=t[S];if(M.route=[],M.src===M.dst){m.push(S);continue}let b=M.src,E=M.dst,w=[],T=[];for(;d[b]>d[E];)w.push(b),b=e[b].parent;for(;d[E]>d[b];)T.push(E),E=e[E].parent;if(b===E){x.push(S);continue}for(;e[b].parent!==e[E].parent;)w.push(b),T.push(E),b=e[b].parent,E=e[E].parent;i.get(e[b].parent).edges.push({e:S,a:b,b:E});for(let[A,v]of[[w,!0],[T,!1]])for(let D of A){let z=i.get(e[D].parent),H={e:S,inner:D,out:v,side:0,hint:NaN,px:0,py:0,route:[]};z.ports.push(H),z.portOf.set(S*2+(v?0:1),H)}}let y=new Int32Array(n),$=(S,M,b)=>(b?M.src:M.dst)!==S,k=(S,M)=>{let b=S.dir==="TB"||S.dir==="BT",E=eh(S.dir),w=[],T=[];S.items.forEach((z,H)=>{y[z]=H;let P=e[z],O=M?_i(b?P.w:P.h,b?P.h:P.w):_i(0,0);O.span=P.isGroup?Math.min(P.span,O.w-2*P.padX):P.span,O.key=L?_[z]:NaN,w.push(O)});let A=(z,H,P)=>e[z].isGroup&&$(z,t[H],P),v=(z,H,P)=>{if(!M||!e[z].isGroup||!$(z,t[H],P))return 0;let O=i.get(z).portOf.get(H*2+(P?0:1));return b?O.px-e[z].w/2:O.py-e[z].h/2};for(let z of S.edges){let H=t[z.e],P=Ii(y[z.a],y[z.b],H.minlen);M&&(P.labelW=b?H.labelW:H.labelH,P.labelH=b?H.labelH:H.labelW,P.tailDx=v(z.a,z.e,!0),P.headDx=v(z.b,z.e,!1),P.tailFixed=A(z.a,z.e,!0),P.headFixed=A(z.b,z.e,!1)),T.push(P)}let D=new Int32Array(S.ports.length).fill(-1);return S.ports.forEach((z,H)=>{if(z.side===E||z.side===Ql(E)){let P=w.length,O=_i(0,0,z.side===E?3:4);O.key=L?_[z.out?t[z.e].dst:t[z.e].src]:NaN,O.hint=Number.isNaN(z.hint)&&L&&W?W(S,z):z.hint,w.push(O),D[H]=P;let F=z.out?Ii(y[z.inner],P):Ii(P,y[z.inner]);z.out?(F.tailDx=v(z.inner,z.e,!0),F.tailFixed=A(z.inner,z.e,!0)):(F.headDx=v(z.inner,z.e,!1),F.headFixed=A(z.inner,z.e,!1)),T.push(F)}else w[y[z.inner]].pin=z.side===0||z.side===3?-1:1}),{lnodes:w,ledges:T,dummies:D}},I=p>1&&p<=X4&&t.length<=V4,_=new Float64Array(n).fill(NaN),L=!1,R=0,W,q=l.length>1&&I;for(let S of l)S.dir!==r&&(q=!1);if(q){let S=r==="TB"||r==="BT",M=new Int32Array(n).fill(-1),b=new Int32Array(n).fill(-1),E=[],w=[],T=[];for(let O=0;O<n;O++)e[O].isGroup&&(b[O]=T.length,T.push(-1));for(let O=0;O<n;O++){let F=e[O].parent;e[O].isGroup?T[b[O]]=F>=0?b[F]:-1:(M[O]=E.length,E.push(_i(S?e[O].w:e[O].h,S?e[O].h:e[O].w)),w.push(F>=0?b[F]:-1))}let A=[],v=new Int32Array(t.length).fill(-1);t.forEach((O,F)=>{O.src===O.dst||M[O.src]<0||M[O.dst]<0||(v[F]=A.length,A.push(Ii(M[O.src],M[O.dst],O.minlen,S?O.labelW:O.labelH,S?O.labelH:O.labelW)))});let D=Vc(E,A,{...a,groups:{of:Int32Array.from(w),parent:Int32Array.from(T)},orderOnly:!0});R=Math.min(D.crossings??0,D.declared??0);let z=new Float64Array(n),H=new Int32Array(n),P=new Int32Array(n).fill(-1);for(let O=0;O<n;O++)if(!(M[O]<0)){_[O]=E[M[O]].x;for(let F=e[O].parent;F>=0;F=e[F].parent)z[F]+=_[O],H[F]++,P[F]=Math.max(P[F],E[M[O]].rank)}for(let O=0;O<n;O++)H[O]>0&&(_[O]=z[O]/H[O]);W=(O,F)=>{let U=v[F.e];if(U<0||O.id<0||!F.out||F.side!==Ql(eh(O.dir)))return NaN;let j=A[U].points,J=_[t[F.e].src],Z=0;for(let B=0;B<j.length;B+=2)j[B]===P[O.id]&&(J=j[B+1]),j[B]===P[O.id]+1&&(Z=j[B+1]);return J+Z*1e-6}}let C=new Map,K=(S,M,b)=>{if(!I)return{lnodes:M,ledges:b,size:Vc(M,b,a)};let E=[];for(let A of M)E.push(A.w,A.h,A.kind,A.pin,A.hint,A.key,A.span);for(let A of b)E.push(A.tail,A.head,A.minlen,A.labelW,A.labelH,A.tailDx,A.headDx,+A.tailFixed,+A.headFixed);let w=C.get(S.id);w||C.set(S.id,w=[]);for(let A of w){let v=A.given.length===E.length;for(let D=0;v&&D<E.length;D++)v=Object.is(A.given[D],E[D]);if(v)return A}let T={given:E,lnodes:M,ledges:b,size:Vc(M,b,a)};return w.push(T),T},Q={width:0,height:0},G=()=>{for(let M of l){for(let A of M.ports)e[A.inner].isGroup&&$(A.inner,t[A.e],A.out)&&(i.get(A.inner).portOf.get(A.e*2+(A.out?0:1)).side=A.side);if(M.edges.length===0)continue;let b=!1;for(let A of M.edges){let v=t[A.e];(e[A.a].isGroup&&v.src!==A.a||e[A.b].isGroup&&v.dst!==A.b)&&(b=!0)}if(!b)continue;let{lnodes:E,ledges:w}=k(M,!1);Vl(E,w),Kl(E,w,1);let T=eh(M.dir);M.edges.forEach((A,v)=>{let D=t[A.e],z=!w[v].reversed;e[A.a].isGroup&&D.src!==A.a&&(i.get(A.a).portOf.get(A.e*2).side=z?Ql(T):T),e[A.b].isGroup&&D.dst!==A.b&&(i.get(A.b).portOf.get(A.e*2+1).side=z?T:Ql(T))})}for(let M=l.length-1;M>=0;M--){let b=l[M],E=b.id>=0?e[b.id]:void 0,w=b.dir==="TB"||b.dir==="BT",T=b.dir==="BT"||b.dir==="RL",A=k(b,!0),{lnodes:v,ledges:D,size:z}=K(b,A.lnodes,A.ledges),H=A.dummies,P=w?z.width:z.height,O=w?z.height:z.width,F=E?E.padX:0,U=E?E.padTop:0,j=Math.max(P+2*F,E?E.minW:0),J=O+U+(E?E.padBottom:0),Z=(j-P)/2,B=U,X=(ie,ee)=>Z+(w?ie:T?z.height-ee:ee),te=(ie,ee)=>B+(w?T?z.height-ee:ee:ie),se=w?0:1,ce=ie=>{let ee=[];for(let re=0;re<ie.length;re+=2)ee.push(X(ie[re],ie[re+1]),te(ie[re],ie[re+1]),se);return ee};b.items.forEach((ie,ee)=>{e[ie].x=X(v[ee].x,v[ee].y),e[ie].y=te(v[ee].x,v[ee].y)}),b.edges.forEach((ie,ee)=>{let re=D[ee];b.routes.set(ie.e,ce(re.points));let fe=t[ie.e];fe.labelW>0&&(fe.labelX=X(re.labelX,re.labelY),fe.labelY=te(re.labelX,re.labelY))});let ae=b.edges.length;b.ports.forEach((ie,ee)=>{let re=e[ie.inner];if(H[ee]>=0){let ge=ce(D[ae++].points),Ae=ie.out?ge.length-3:0,Te=ge[Ae],he=ge[Ae+1];ie.side===0?he=0:ie.side===2?he=J:ie.side===3?Te=0:Te=j,ie.out?ge.push(Te,he,se):ge.unshift(Te,he,se),ie.px=Te,ie.py=he,ie.route=ge;return}let fe=re.x,ye=re.y;if(re.isGroup&&$(ie.inner,t[ie.e],ie.out)){let ge=i.get(ie.inner).portOf.get(ie.e*2+(ie.out?0:1));fe+=ge.px-re.w/2,ye+=ge.py-re.h/2}else ie.side===0?ye-=re.h/2:ie.side===2?ye+=re.h/2:ie.side===3?fe-=re.w/2:fe+=re.w/2;let oe=fe,we=ye;ie.side===0?we=0:ie.side===2?we=J:ie.side===3?oe=0:oe=j;let ue=ie.side===0||ie.side===2?0:1;ie.px=oe,ie.py=we,ie.route=ie.out?[fe,ye,ue,oe,we,ue]:[oe,we,ue,fe,ye,ue]}),E?(E.w=j,E.h=J):Q={width:j,height:J}}for(let M of l){let b=M.x,E=M.y;for(let w of M.items){let T=e[w];if(T.x+=b,T.y+=E,T.isGroup){let A=i.get(w);A.x=T.x-T.w/2,A.y=T.y-T.h/2}}}let S=(M,b,E,w)=>{for(let T=0;T<b.length;T+=3){let A=b[T]+E,v=b[T+1]+w,D=M.length;D>=3&&Math.abs(M[D-3]-A)<.01&&Math.abs(M[D-2]-v)<.01||M.push(A,v,b[T+2])}};for(let M of l)for(let b of M.edges){let E=t[b.e],w=[],T=[];for(let v=E.src;e[v].parent!==M.id;v=e[v].parent)T.push(i.get(e[v].parent));for(let v of T)S(w,v.portOf.get(b.e*2).route,v.x,v.y);S(w,M.routes.get(b.e),M.x,M.y);let A=[];for(let v=E.dst;e[v].parent!==M.id;v=e[v].parent)A.push(i.get(e[v].parent));for(let v=A.length-1;v>=0;v--)S(w,A[v].portOf.get(b.e*2+1).route,A[v].x,A[v].y);E.route=w,E.labelW>0&&(E.labelX+=M.x,E.labelY+=M.y)}},Y=eT(a);L=q,G();let N=-1;if(q&&(N=Jc(e,t,Y),N>R*K4+Z4)){let S=My(e,t,l,Q);L=!1,G();let M=Jc(e,t,Y);M>=N?(L=!0,Q=vy(S,e,t,l)):N=M}if(L===q&&I){let S=!1;for(let M of l){if(M.id<0)continue;let b=e[M.id],E=M.dir==="TB"||M.dir==="BT",w=Ql(eh(M.dir)),T=[];for(let A of M.ports){if(A.side!==w)continue;let v=t[A.e].route,D=M.x+A.px,z=M.y+A.py,H=-1;for(let F=0;F<v.length&&(H<0||A.out);F+=3)Math.abs(v[F]-D)<.01&&Math.abs(v[F+1]-z)<.01&&(H=F);if(H<0)continue;let P=E?0:1,O=A.out?H+3:H-3;for(;O>=0&&O<v.length&&Math.abs(v[O+P]-v[H+P])<Rs;)O+=A.out?3:-3;O<0||O>=v.length||(A.hint=v[O+P]-(E?b.x-b.w/2:b.y-b.h/2),T.push([E?A.px:A.py,A.hint]))}T.sort((A,v)=>A[0]-v[0]);for(let A=1;A<T.length;A++)T[A-1][1]>T[A][1]&&(S=!0)}if(S){let M=N>=0?N:Jc(e,t,Y),b=M>0?My(e,t,l,Q):void 0;b&&(G(),Jc(e,t,Y)>=M&&(Q=vy(b,e,t,l)))}}for(let S of x){let M=t[S],b=e[M.src],E=e[M.dst];M.route=[b.x,b.y,0,E.x,E.y,0],M.labelX=(b.x+E.x)/2,M.labelY=(b.y+E.y)/2}for(let S of m){let M=t[S],b=e[M.src];M.labelX=b.x+b.w/2+28+M.labelW/2,M.labelY=b.y}return Q}var j4,X4,V4,K4,Z4,Ay,Rs,Ru,Ou,Q4,Qc,J4,Kn=Ge(()=>{xe();$r();j4=4e4,X4=400,V4=500,K4=1.5,Z4=4;Ay=24,Rs=.5,Ru=3,Ou=2,Q4=Math.max(3,Ru,Ou+1),Qc=.62,J4=128});function zr(e,t,r,a){return qm(()=>Be(e,!1,t,r,a,1))}function th(e,t,r,a,n,i,l){let s=zr(e,t,r,4e3);if(s.height===0)return{width:n,height:i,content:l};let o=s.height+12,c=Math.max(n,Math.ceil(s.width+2*a));return{width:c,height:Math.ceil(i+o),content:Re(s,c/2,a+s.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g transform="translate(${u((c-n)/2)},${u(o)})">${l}</g>`}}var qa=Ge(()=>{xe();yt();kt()});function Cy(e){try{return decodeURIComponent(e)}catch{return e}}function Ga(e){if(!e)return Jl;let t=Cy(e.trim()),r,a=0;do{if(++a>32)return Jl;t=t.replace(Du,"").replace(Ey,(o,c)=>String.fromCharCode(c)).replace(Sy,"").replace(Du,"").replace(Ty,"").trim(),t=Cy(t),r=t.match(Du)||t.match(Ey)||t.match(Sy)||t.match(Ty)}while(r&&r.length>0);if(!t)return Jl;if(t[0]==="."||t[0]==="/")return t;let n=t.trimStart(),i=n.match(rT);if(!i)return t;let l=i[0].toLowerCase().trim();if(tT.test(l))return Jl;let s=n.replace(/\\/g,"/");if(l==="mailto:"||l.includes("://"))return s;if(l==="http:"||l==="https:"){let o;try{o=new URL(s)}catch{return Jl}return o.protocol=o.protocol.toLowerCase(),o.hostname=o.hostname.toLowerCase(),o.toString()}return s}function Ha(e){return Ga(Tt(e))}function _y(e,t){if(sT.test(e))return;let r=iT.exec(e);return!r||t.includes(r[1].toLowerCase())?e:void 0}function Cn(e,t){return t.links===!1?void 0:_y(e,t.linkSchemes??aT)}function Iy(e,t){return t.images===!1?void 0:_y(e,t.imageSchemes??nT)}function Ca(e,t,r,a,n,i=""){let l=Cn(t,n);return l===void 0?e:(a.push({id:r,href:l,internal:!1}),`<a href="${Qe(l)}"${i}${_n(n)}>${e}</a>`)}function _n(e){let t=e.linkRel??"noopener";return t?` rel="${Qe(t)}"`:""}var Jl,tT,Ey,Sy,Du,rT,Ty,aT,nT,iT,sT,In=Ge(()=>{xe();yt();kt();Jl="about:blank",tT=/^([^\w]*)(javascript|data|vbscript)/im,Ey=/&#(\w+)(^\w|;)?/g,Sy=/&(newline|tab);/gi,Du=/[\u0000-\u001F\u007F-\u009F -]/gim,rT=/^.+(:|:)/gim,Ty=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;aT=["http","https","mailto","tel"],nT=["http","https"],iT=/^([a-z][a-z0-9+.-]*):/i,sT=/^[\\/]{2}/});function ih(e,t,r){let a=Math.min(1,Math.abs(e)/t);return r*(1-Math.sqrt(1-a*a))}function Ly(e,t,r){let a=Math.max(1.6*e+40,80),n=(t+10)/(1-(e+8)/a),i=n/2-10-t/2;return{w:a,h:n,dy:r?-i:i}}function Os(e,t){return`<path d="${e}"${t}/>`}function Vr(e,t){let r="";for(let a=0;a<e.length;a+=2)r+=(a?" ":"")+u(e[a])+","+u(e[a+1]);return`<polygon points="${r}"${t}/>`}function Wr(e,t,r,a=""){return`<rect x="${u(-e/2)}" y="${u(-t/2)}" width="${u(e)}" height="${u(t)}"${a}${r}/>`}function ah(e,t,r,a){let n=t/2,i=6*r;return`<path d="M${u(e)},${u(-n)}q${u(i)},0 ${u(i)},6V-6q0,6 ${u(i)},6q${u(-i)},0 ${u(-i)},6V${u(n-6)}q0,6 ${u(-i)},6" fill="none"${a}/>`}function nh(e,t,r){let a=e/2,n=-t/2,i=t/2-10,l=e/4;return`<path d="M${u(-a)},${u(n)}H${u(a)}V${u(i)}q${u(-l)},-12 ${u(-2*l)},0t${u(-2*l)},0Z"${r}/>`}function Zn(e,t,r){return(ro.get(e)??Oy).size(t,r)}function Ua(e,t,r,a,n){return(ro.get(e)??Oy).draw(t,r,a,n)}function Nn(e,t,r,a,n=0){return ro.get(e)?.inset?.(t,r,a,n)??0}function Dy(e,t,r,a){return Math.max(0,ro.get(e)?.span?.(t,r,a)??0)}function Py(e){return ro.get(e)?.noLabel!==!0}function _a(e,t,r){let a=e[t]-r.x,n=e[t+1]-r.y;return Math.abs(Math.abs(n)-r.h/2)<.5?n<0?0:2:Math.abs(Math.abs(a)-r.w/2)<.5?a<0?3:1:-1}function Oi(e,t,r,a){if(a.isGroup)return;let n=_a(e,t,a);if(n===0||n===2){let i=Nn(r.shape,r.w,r.h,n,e[t]-a.x)+(a.h-r.h)/2;e[t+1]+=n===0?i:-i}else if(n>=0){let i=Nn(r.shape,r.w,r.h,n,e[t+1]-a.y)+(a.w-r.w)/2;e[t]+=n===3?i:-i}}var bt,vt,Ds,xa,eo,Ni,Li,Ny,Ri,rh,to,Ry,Oy,ro,Qn=Ge(()=>{xe();yt();bt=18,vt=12,Ds=12,xa=(e,t,r)=>(r?t:e)-2*Ds,eo=e=>(t,r,a)=>a?0:t-2*e(r)-2*Ds;Ni=(e,t,r,a)=>r&1?ih(a,t/2,e/2):ih(a,e/2,t/2),Li=(e,t,r)=>(r?t:e)*.6,Ny=(e,t,r,a)=>r&1?0:ih(a,e/2,Math.min(12,Math.max(6,e/14))),Ri=(e,t)=>()=>({w:e,h:t,dy:0});rh=(e,t,r)=>r&1?t/8:0,to=(e,t)=>({w:Math.max(e+2*bt,2*bt+12),h:t+2*vt,dy:0});Ry={rect:{size:to,span:xa,draw:(e,t,r)=>Wr(e,t,gt(r))},rounded:{size:to,span:xa,draw:(e,t,r)=>Wr(e,t,r,` rx="${u(Math.min(12,t/2))}"`)},stadium:{inset:(e,t,r,a)=>r&1?ih(a,t/2,t/2):0,span:(e,t,r)=>r?t*.6:e-t,size:(e,t)=>{let r=t+2*vt;return{w:e+r*.5+2*bt-8,h:r,dy:0}},draw:(e,t,r)=>Wr(e,t,r,` rx="${u(t/2)}"`)},"fr-rect":{span:xa,size:(e,t)=>({w:e+2*bt+16,h:t+2*vt,dy:0}),draw:(e,t,r,a)=>{let n=e/2-8;return Wr(e,t,gt(r))+`<path d="M${u(-n)},${u(-t/2)}V${u(t/2)}M${u(n)},${u(-t/2)}V${u(t/2)}" fill="none"${a}/>`}},cyl:{inset:Ny,span:(e,t,r)=>r?t-2*Ds-12:e*.6,size:(e,t)=>{let r=Math.max(e+2*bt,56),a=Math.min(12,Math.max(6,r/14));return{w:r,h:t+2*vt+2*a,dy:a/2}},draw:(e,t,r,a)=>{let n=e/2,i=Math.min(12,Math.max(6,e/14)),l=-t/2+i,s=t/2-i;return`<path d="M${u(-n)},${u(l)}A${u(n)},${u(i)} 0 0 1 ${u(n)},${u(l)}V${u(s)}A${u(n)},${u(i)} 0 0 1 ${u(-n)},${u(s)}Z"${r}/><path d="M${u(-n)},${u(l)}A${u(n)},${u(i)} 0 0 0 ${u(n)},${u(l)}" fill="none"${a}/>`}},circle:{inset:Ni,span:Li,size:(e,t)=>{let r=Math.max(Math.sqrt(e*e+t*t)+16,44);return{w:r,h:r,dy:0}},draw:(e,t,r)=>`<circle r="${u(e/2)}"${r}/>`},"dbl-circ":{inset:Ni,span:Li,size:(e,t)=>{let r=Math.max(Math.sqrt(e*e+t*t)+26,54);return{w:r,h:r,dy:0}},draw:(e,t,r,a)=>`<circle r="${u(e/2)}"${r}/><circle r="${u(e/2-5)}" fill="none"${a}/>`},ellipse:{inset:Ni,span:Li,size:(e,t)=>({w:e*1.3+2*bt,h:t*1.2+2*vt,dy:0}),draw:(e,t,r)=>`<ellipse rx="${u(e/2)}" ry="${u(t/2)}"${r}/>`},diam:{inset:(e,t,r,a)=>r&1?Math.abs(a)*e/t:Math.abs(a)*t/e,span:(e,t,r)=>(r?t:e)*.6,size:(e,t)=>{let r=e+16,a=t+8;return{w:r+1.6*a,h:r/1.6+a,dy:0}},draw:(e,t,r)=>Vr([0,-t/2,e/2,0,0,t/2,-e/2,0],r)},hex:{inset:(e,t,r,a)=>r&1?Math.abs(a)/2:0,span:(e,t,r)=>r?t*.5:e-t/2-Ds,size:(e,t)=>{let r=t+2*vt;return{w:e+2*bt+r/2,h:r,dy:0}},draw:(e,t,r)=>{let a=t/4;return Vr([-e/2+a,-t/2,e/2-a,-t/2,e/2,0,e/2-a,t/2,-e/2+a,t/2,-e/2,0],r)}},odd:{inset:(e,t,r)=>r===3?t/4:0,span:eo(()=>0),size:(e,t)=>{let r=t+2*vt;return{w:e+2*bt+r/4,h:r,dy:0}},draw:(e,t,r)=>{let a=t/4;return Vr([-e/2,-t/2,e/2,-t/2,e/2,t/2,-e/2,t/2,-e/2+a,0],r)}},"lean-r":{inset:rh,span:eo(e=>e/4),size:(e,t)=>{let r=t+2*vt;return{w:e+2*bt+r/2,h:r,dy:0}},draw:(e,t,r)=>{let a=t/4;return Vr([-e/2+a,-t/2,e/2,-t/2,e/2-a,t/2,-e/2,t/2],r)}},"lean-l":{inset:rh,span:eo(e=>e/4),size:(e,t)=>{let r=t+2*vt;return{w:e+2*bt+r/2,h:r,dy:0}},draw:(e,t,r)=>{let a=t/4;return Vr([-e/2,-t/2,e/2-a,-t/2,e/2,t/2,-e/2+a,t/2],r)}},"trap-b":{inset:rh,span:eo(e=>e/4),size:(e,t)=>{let r=t+2*vt;return{w:e+2*bt+r/2,h:r,dy:0}},draw:(e,t,r)=>{let a=t/4;return Vr([-e/2+a,-t/2,e/2-a,-t/2,e/2,t/2,-e/2,t/2],r)}},"trap-t":{inset:rh,span:eo(e=>e/4),size:(e,t)=>{let r=t+2*vt;return{w:e+2*bt+r/2,h:r,dy:0}},draw:(e,t,r)=>{let a=t/4;return Vr([-e/2,-t/2,e/2,-t/2,e/2-a,t/2,-e/2+a,t/2],r)}},text:{span:xa,size:(e,t)=>({w:e+8,h:t+8,dy:0}),draw:(e,t)=>Wr(e,t,' fill="none" stroke="none"')},"sm-circ":{noLabel:!0,inset:Ni,span:Li,size:Ri(14,14),draw:(e,t,r)=>`<circle r="${u(e/2)}"${r}/>`},"f-circ":{noLabel:!0,inset:Ni,span:Li,size:Ri(14,14),draw:(e,t,r,a)=>`<circle r="${u(e/2)}" fill="var(--_l)"${a}/>`},"fr-circ":{noLabel:!0,inset:Ni,span:Li,size:Ri(18,18),draw:(e,t,r,a)=>`<circle r="${u(e/2)}"${r}/><circle r="${u(e/2-4)}" fill="var(--_l)"${a}/>`},fork:{noLabel:!0,span:(e,t,r)=>(r?t:e)-8,size:Ri(72,8),draw:(e,t,r,a)=>Wr(e,t,` fill="var(--_l)"${a}`,' rx="2"')},"notch-rect":{size:to,span:xa,draw:(e,t,r)=>Vr([-e/2+10,-t/2,e/2,-t/2,e/2,t/2,-e/2,t/2,-e/2,-t/2+10],r)},"lin-rect":{span:xa,size:(e,t)=>({w:e+2*bt+8,h:t+2*vt,dy:0}),draw:(e,t,r,a)=>Wr(e,t,gt(r))+`<path d="M${u(-e/2+8)},${u(-t/2)}V${u(t/2)}" fill="none"${a}/>`},"div-rect":{span:xa,size:(e,t)=>({w:e+2*bt,h:t+2*vt+8,dy:4}),draw:(e,t,r,a)=>Wr(e,t,gt(r))+`<path d="M${u(-e/2)},${u(-t/2+8)}H${u(e/2)}" fill="none"${a}/>`},"win-pane":{span:xa,size:(e,t)=>({w:e+2*bt+8,h:t+2*vt+8,dy:4}),draw:(e,t,r,a)=>Wr(e,t,gt(r))+`<path d="M${u(-e/2+8)},${u(-t/2)}V${u(t/2)}M${u(-e/2)},${u(-t/2+8)}H${u(e/2)}" fill="none"${a}/>`},tri:{inset:(e,t,r)=>r&1?e/4:0,size:(e,t)=>Ly(e,t,!1),draw:(e,t,r)=>Vr([0,-t/2,e/2,t/2,-e/2,t/2],r)},"flip-tri":{inset:(e,t,r)=>r&1?e/4:0,size:(e,t)=>Ly(e,t,!0),draw:(e,t,r)=>Vr([-e/2,-t/2,e/2,-t/2,0,t/2],r)},"sl-rect":{inset:(e,t,r)=>r===0?5:0,size:(e,t)=>({w:e+2*bt,h:t+2*vt+10,dy:5}),draw:(e,t,r)=>Vr([-e/2,-t/2+10,e/2,-t/2,e/2,t/2,-e/2,t/2],r)},"notch-pent":{span:xa,size:(e,t)=>({w:e+2*bt,h:t+2*vt,dy:0}),draw:(e,t,r)=>Vr([-e/2+10,-t/2,e/2-10,-t/2,e/2,-t/2+10,e/2,t/2,-e/2,t/2,-e/2,-t/2+10],r)},hourglass:{noLabel:!0,inset:(e,t,r)=>r&1?e/2:0,size:Ri(32,40),draw:(e,t,r)=>Vr([-e/2,-t/2,e/2,-t/2,-e/2,t/2,e/2,t/2],r)},delay:{size:(e,t)=>{let r=t+2*vt;return{w:e+2*bt+r/4,h:r,dy:0}},draw:(e,t,r)=>{let a=t/2;return`<path d="M${u(-e/2)},${u(-a)}H${u(e/2-a)}A${u(a)},${u(a)} 0 0 1 ${u(e/2-a)},${u(a)}H${u(-e/2)}Z"${r}/>`}},"h-cyl":{size:(e,t)=>{let r=t+2*vt,a=Math.min(12,r/4);return{w:e+2*bt+2*a,h:r,dy:0}},draw:(e,t,r,a)=>{let n=t/2,i=Math.min(12,t/4),l=-e/2+i,s=e/2-i;return`<path d="M${u(l)},${u(-n)}H${u(s)}A${u(i)},${u(n)} 0 0 1 ${u(s)},${u(n)}H${u(l)}A${u(i)},${u(n)} 0 0 1 ${u(l)},${u(-n)}Z"${r}/><path d="M${u(s)},${u(-n)}A${u(i)},${u(n)} 0 0 0 ${u(s)},${u(n)}" fill="none"${a}/>`}},"cross-circ":{noLabel:!0,inset:Ni,span:Li,size:Ri(44,44),draw:(e,t,r,a)=>{let n=e/2,i=n*Math.SQRT1_2;return`<circle r="${u(n)}"${r}/><path d="M${u(-i)},${u(-i)}L${u(i)},${u(i)}M${u(i)},${u(-i)}L${u(-i)},${u(i)}" fill="none"${a}/>`}},"st-rect":{span:(e,t,r)=>(r?t:e)-2*Ds-8,size:(e,t)=>({w:e+2*bt+8,h:t+2*vt+8,dy:4}),draw:(e,t,r)=>{let a=e-8,n=t-8,i="";for(let l=0;l<3;l++){let s=-e/2+(2-l)*4,o=-t/2+l*4;i+=`<rect x="${u(s)}" y="${u(o)}" width="${u(a)}" height="${u(n)}"${gt(r)}/>`}return i}},doc:{inset:(e,t,r)=>r===2?10:0,size:(e,t)=>({w:e+2*bt,h:t+2*vt+10,dy:-5}),draw:(e,t,r)=>nh(e,t,r)},flag:{inset:(e,t,r)=>r&1?0:8,size:(e,t)=>({w:e+2*bt,h:t+2*vt+16,dy:0}),draw:(e,t,r)=>{let a=e/2,n=t/2-8,i=e/4;return`<path d="M${u(-a)},${u(-n)}q${u(i)},-10 ${u(2*i)},0t${u(2*i)},0V${u(n)}q${u(-i)},10 ${u(-2*i)},0t${u(-2*i)},0Z"${r}/>`}},datastore:{size:to,span:xa,draw:(e,t,r,a)=>Wr(e,t,r.replace('stroke="var(--_b)"','stroke="none"'))+`<path d="M${u(-e/2)},${u(-t/2)}H${u(e/2)}M${u(-e/2)},${u(t/2)}H${u(e/2)}" fill="none"${a}/>`},folder:{size:(e,t)=>({w:Math.max(e+2*bt,64),h:t+2*vt+8,dy:4}),draw:(e,t,r)=>{let a=e/2,n=t/2,i=Math.min(e*.4,48);return Os(`M${u(-a)},${u(-n)}H${u(-a+i)}L${u(-a+i+8)},${u(-n+8)}H${u(a)}V${u(n)}H${u(-a)}Z`,r)}},bucket:{size:(e,t)=>({w:e+2*bt+20,h:t+2*vt+10,dy:3}),inset:(e,t,r)=>r&1?t/12:0,draw:(e,t,r,a)=>{let n=e/2,i=t/2,l=5,s=t/6;return Os(`M${u(-n)},${u(-i+l)}A${u(n)},${u(l)} 0 0 1 ${u(n)},${u(-i+l)}L${u(n-s)},${u(i-l)}A${u(n-s)},${u(l)} 0 0 1 ${u(-n+s)},${u(i-l)}Z`,r)+`<path d="M${u(-n)},${u(-i+l)}A${u(n)},${u(l)} 0 0 0 ${u(n)},${u(-i+l)}" fill="none"${a}/>`}},console:{span:xa,size:(e,t)=>({w:Math.max(e+2*bt,72),h:t+2*vt+12,dy:6}),draw:(e,t,r,a)=>Wr(e,t,gt(r))+`<path d="M${u(-e/2)},${u(-t/2+12)}H${u(e/2)}M${u(-e/2+7)},${u(-t/2+4)}l3,2.5l-3,2.5M${u(-e/2+13)},${u(-t/2+9)}h4" fill="none"${a}/>`},browser:{span:xa,size:(e,t)=>({w:Math.max(e+2*bt,72),h:t+2*vt+12,dy:6}),draw:(e,t,r,a)=>{let n="";for(let i=0;i<3;i++)n+=`<circle cx="${u(-e/2+8+i*7)}" cy="${u(-t/2+6)}" r="1.5" fill="none"${a}/>`;return Wr(e,t,gt(r))+`<path d="M${u(-e/2)},${u(-t/2+12)}H${u(e/2)}" fill="none"${a}/>`+n}},person:{size:(e,t)=>({w:Math.max(e+2*bt,56),h:t+2*vt+26,dy:13}),draw:(e,t,r)=>{let a=-t/2;return`<rect x="${u(-e/2)}" y="${u(a+26)}" width="${u(e)}" height="${u(t-26)}" rx="12"${r}/><circle cy="${u(a+14)}" r="13"${r}/>`}},bang:{size:(e,t)=>({w:e+2*bt+28,h:t+2*vt+24,dy:0}),inset:()=>3,draw:(e,t,r)=>{let a=[];for(let n=0;n<28;n++){let i=Math.PI*n/14-Math.PI/2,l=n%2===0?1:.82;a.push(Math.cos(i)*(e/2)*l,Math.sin(i)*(t/2)*l)}return Vr(a,r)}},cloud:{size:(e,t)=>({w:e+2*bt+32,h:t+2*vt+24,dy:0}),inset:(e,t,r)=>r&1?2:1,draw:(e,t,r)=>{let a=e/2,n=t/2,i=n*.55;return Os(`M${u(-a+i)},${u(n)}A${u(i)},${u(i)} 0 0 1 ${u(-a+i*.6)},${u(-n*.1)}A${u(a*.42)},${u(n*.7)} 0 0 1 ${u(-a*.1)},${u(-n*.72)}A${u(a*.4)},${u(n*.62)} 0 0 1 ${u(a*.62)},${u(-n*.42)}A${u(i*1.05)},${u(i*1.05)} 0 0 1 ${u(a-i)},${u(n)}Z`,r)}},brace:{size:(e,t)=>({w:e+2*bt+12,h:t+2*vt,dy:0}),draw:(e,t,r,a)=>Wr(e,t,' fill="none" stroke="none"')+ah(-e/2+12,t,-1,a)},"brace-r":{size:(e,t)=>({w:e+2*bt+12,h:t+2*vt,dy:0}),draw:(e,t,r,a)=>Wr(e,t,' fill="none" stroke="none"')+ah(e/2-12,t,1,a)},braces:{size:(e,t)=>({w:e+2*bt+24,h:t+2*vt,dy:0}),draw:(e,t,r,a)=>Wr(e,t,' fill="none" stroke="none"')+ah(-e/2+12,t,-1,a)+ah(e/2-12,t,1,a)},bolt:{noLabel:!0,size:Ri(36,56),inset:(e,t,r)=>r&1?e/4:0,draw:(e,t,r)=>Vr([e*.15,-t/2,-e/2,t*.08,-e*.05,t*.08,-e*.15,t/2,e/2,-t*.08,e*.05,-t*.08],r)},"lin-cyl":{inset:Ny,span:(e,t,r)=>r?t-2*Ds-20:e*.6,size:(e,t)=>{let r=Math.max(e+2*bt,56),a=Math.min(12,Math.max(6,r/14));return{w:r,h:t+2*vt+2*a+8,dy:a/2+4}},draw:(e,t,r,a)=>{let n=e/2,i=Math.min(12,Math.max(6,e/14)),l=-t/2+i,s=t/2-i,o=c=>`M${u(-n)},${u(c)}A${u(n)},${u(i)} 0 0 0 ${u(n)},${u(c)}`;return Os(`M${u(-n)},${u(l)}A${u(n)},${u(i)} 0 0 1 ${u(n)},${u(l)}V${u(s)}A${u(n)},${u(i)} 0 0 1 ${u(-n)},${u(s)}Z`,r)+`<path d="${o(l)}${o(l+8)}" fill="none"${a}/>`}},"curv-trap":{size:(e,t)=>{let r=t+2*vt;return{w:e+2*bt+r*.6,h:r,dy:0}},draw:(e,t,r)=>{let a=e/2,n=t/2,i=t*.3;return Os(`M${u(-a+i)},${u(-n)}H${u(a-i)}A${u(i)},${u(n)} 0 0 1 ${u(a-i)},${u(n)}H${u(-a+i)}L${u(-a)},0Z`,r)}},docs:{size:(e,t)=>({w:e+2*bt+8,h:t+2*vt+18,dy:-1}),inset:(e,t,r)=>r===2?10:0,draw:(e,t,r)=>{let a="";for(let n=0;n<3;n++)a+=`<g transform="translate(${(1-n)*4},${(n-1)*4})">${nh(e-8,t-8,r)}</g>`;return a}},"bow-rect":{size:(e,t)=>{let r=t+2*vt;return{w:e+2*bt+r*.4,h:r,dy:0}},inset:(e,t,r)=>r===1?t*.2:0,draw:(e,t,r)=>{let a=e/2,n=t/2,i=t*.2;return Os(`M${u(-a+i)},${u(-n)}H${u(a)}A${u(i)},${u(n)} 0 0 0 ${u(a)},${u(n)}H${u(-a+i)}A${u(i)},${u(n)} 0 0 1 ${u(-a+i)},${u(-n)}Z`,r)}},"tag-rect":{size:to,span:xa,draw:(e,t,r,a)=>Wr(e,t,gt(r))+`<path d="M${u(e/2-12)},${u(t/2)}L${u(e/2)},${u(t/2-12)}" fill="none"${a}/>`},"tag-doc":{size:(e,t)=>({w:e+2*bt,h:t+2*vt+10,dy:-5}),inset:(e,t,r)=>r===2?10:0,draw:(e,t,r,a)=>nh(e,t,r)+`<path d="M${u(e/2-12)},${u(t/2-14)}L${u(e/2)},${u(t/2-26)}" fill="none"${a}/>`},"lin-doc":{size:(e,t)=>({w:e+2*bt+8,h:t+2*vt+10,dy:-5}),inset:(e,t,r)=>r===2?10:0,draw:(e,t,r,a)=>nh(e,t,r)+`<path d="M${u(-e/2+8)},${u(-t/2)}V${u(t/2-6)}" fill="none"${a}/>`},collapsedGroup:{size:(e,t)=>({w:e+2*bt+8,h:t+2*vt+8,dy:-2}),draw:(e,t,r)=>`<rect x="${u(-e/2+6)}" y="${u(-t/2+8)}" width="${u(e-12)}" height="${u(t-8)}"${gt(r)}/><rect x="${u(-e/2)}" y="${u(-t/2)}" width="${u(e)}" height="${u(t-4)}"${gt(r)}/>`}};Oy=Ry.rect,ro=new Map(Object.entries(Ry))});function Jn(e,t,r,a){let n=a(t,!1),i=e.maxWidth;if(i===void 0||!(i>0)||n.width<=i)return n;let l=Math.min(r,t),s=t;n=a(s,!0);for(let o=0;o<3&&n.width>i&&s>l;o++)s=Math.max(l,s-(n.width-i)),n=a(s,!0);return n}function Pt(e){let t=e.maxWidth;return t!==void 0&&t>0?Math.max(80,t-2*(e.padding??8)):4e3}function ei(e,t,r,a=0){let n=e.maxWidth;return n===void 0||!(n>0)?t:Math.max(Math.min(r,t),Math.min(t,n-a))}function jt(e,t){let r=t(!1),a=e.maxWidth;if(e.autoDirection===!1||a===void 0||!(a>0)||r.width<=a)return r;let n=e.directionBreakpoint;if(a>=(n!==void 0&&n>0?n:lT))return r;let i=t(!0);return i.width<r.width?i:r}function na(e){return e==="LR"||e==="RL"}function Yr(e,t){let r=t(!1),a=e.maxWidth;if(a===void 0||!(a>0)||r.width<=a)return r;let n=t(!0);return n.width<r.width?n:r}var lT,Gt=Ge(()=>{xe();lT=640});function Pu(e){return e==="markdown"||e==="string"||e==="text"?e:"markdown"}function zy(e){return e.startsWith('"')&&e.endsWith('"')?e.substring(1,e.length-1):e}function oT(e,t){let r=0;for(let a=0;a<t.length;a++)t[a]===e&&r++;return r}function cT(e){let t=e.trim(),r="arrow_open";switch(t[0]){case"<":r="arrow_point",t=t.slice(1);break;case"x":r="arrow_cross",t=t.slice(1);break;case"o":r="arrow_circle",t=t.slice(1);break}let a="normal";return t.includes("=")&&(a="thick"),t.includes(".")&&(a="dotted"),{type:r,stroke:a}}function hT(e){let t=e.trim(),r=t.slice(0,-1),a="arrow_open";switch(t.slice(-1)){case"x":a="arrow_cross",t.startsWith("x")&&(a="double_"+a,r=r.slice(1));break;case">":a="arrow_point",t.startsWith("<")&&(a="double_"+a,r=r.slice(1));break;case"o":a="arrow_circle",t.startsWith("o")&&(a="double_"+a,r=r.slice(1));break}let n="normal",i=r.length-1;r.startsWith("=")&&(n="thick"),r.startsWith("~")&&(n="invisible");let l=oT(".",r);return l&&(n="dotted",i=l),{type:a,stroke:n,length:i}}function CT(e){let t=e.length,r=[],a=[],n=[],i=[],l=0,s=0,o=!0,c=e.indexOf("direction"),h=e.indexOf("@"),d=-1,f=0,g=0,p=-1,m=-1,x=-1,y=(S,M,b)=>{r.push(S),a.push(e.slice(M,b)),n.push(M),s=b},$=S=>{i.push(l),l=S},k=()=>{i.length>0&&(l=i.pop())},I=(S,M)=>(S.lastIndex=M,S.test(e)?S.lastIndex:-1),_=S=>e.startsWith(S,s)&&!et(e.charCodeAt(s+S.length)),L=S=>{let M=S;if(S>=m&&S<=x)M=x;else if(je(e.charCodeAt(S))){for(;M<t&&je(e.charCodeAt(M));)M++;m=S,x=M}let b=e.charCodeAt(M);return b===120||b===111||b===60?e.charCodeAt(M+1):b},R=S=>{let M=S;if(S>=m&&S<=x)M=x;else if(je(e.charCodeAt(S))){for(;M<t&&je(e.charCodeAt(M));)M++;m=S,x=M}return e.charCodeAt(M)===126},W=()=>{e.charCodeAt(s+1)===96?($(2),s+=2):($(1),s++)},q=()=>{if(!R(s))return!1;let S=I(Yy,s);return S<0?!1:(y(40,s,S),!0)},C=S=>{let M=e.charCodeAt(s+1);return S===40?(M===45?($(8),y(45,s,s+2)):M===91?($(7),y(47,s,s+2)):M===40&&e.charCodeAt(s+2)===40?($(7),y(55,s,s+3)):($(7),y(69,s,s+1)),!0):S===91?(M===91?($(7),y(49,s,s+2)):M===40?($(7),y(53,s,s+2)):M===47?($(9),y(58,s,s+2)):M===92?($(9),y(59,s,s+2)):($(7),y(71,s,s+1)),!0):S===124?($(7),y(67,s,s+1),!0):S===123?($(7),y(73,s,s+1),!0):!1},K=S=>{o&&(o=!1,$(6)),y(20,s,s+S)},Q=()=>{let S=s;for(;S<t;){let M=e.charCodeAt(S);if(M<128&&Uy[M]===1)S++;else if(M===45&&S+1<t){let b=e.charCodeAt(S+1);if(b===62||b===45||b===46)break;S++}else break}return S===s?!1:(y(64,s,S),!0)},G=S=>{let M=L(s),b;if(M===45){if((b=I(By,s))>=0)return y(40,s,b),!0;if((b=I(kT,s))>=0)return $(10),y(41,s,b),!0;if((b=I(Fu,s))>=0)return y(40,s,b),!0;if((b=I(vT,s))>=0)return $(12),y(41,s,b),!0}else if(M===61){if((b=I(Wy,s))>=0)return y(40,s,b),!0;if((b=I(MT,s))>=0)return $(11),y(41,s,b),!0}else if(M===46&&(b=I(Fu,s))>=0)return y(40,s,b),!0;return S!==45&&S!==61&&S!==46&&q()},Y=S=>{let M;switch(S){case 97:if(e.startsWith("acc",s)){if((M=I(fT,s))>=0)return $(3),y(2,s,M),!0;if((M=I(uT,s))>=0)return $(4),y(4,s,M),!0;if((M=I(pT,s))>=0)return $(5),s=M,!0}break;case 64:if(e.charCodeAt(s+1)===123)return $(16),r.push(7),a.push(""),n.push(s),s+=2,!0;break;case 99:if((M=I(gT,s))>=0)return $(14),s=M,!0;if(_("classDef"))return y(16,s,s+8),!0;if(_("class"))return y(17,s,s+5),!0;if((M=I(mT,s))>=0)return $(13),s=M,!0;break;case 34:return W(),!0;case 115:if(_("style"))return y(12,s,s+5),!0;if(_("swimlane-beta"))return K(13),!0;if(_("subgraph"))return y(21,s,s+8),!0;break;case 100:if(_("default"))return y(13,s,s+7),!0;break;case 108:if(_("linkStyle"))return y(14,s,s+9),!0;break;case 105:if(_("interpolate"))return y(15,s,s+11),!0;break;case 104:if(e.startsWith("href",s)&&je(e.charCodeAt(s+4)))return y(18,s,s+5),!0;break;case 102:if(_("flowchart-elk"))return K(13),!0;if(_("flowchart"))return K(9),!0;break;case 103:if(_("graph"))return K(5),!0;break;case 101:if(_("end")){for(M=s+3;M<t&&je(e.charCodeAt(M));)M++;return y(22,s,M),!0}break;case 95:if(_("_self"))return y(23,s,s+5),!0;if(_("_blank"))return y(23,s,s+6),!0;if(_("_parent"))return y(23,s,s+7),!0;if(_("_top"))return y(23,s,s+4),!0;break}if(c!==-1&&s>=f&&(c<s&&(c=e.indexOf("direction",s)),c!==-1&&(d<s&&(zu.lastIndex=s,d=zu.test(e)?zu.lastIndex-1:t),c<d))){for(let b=0;b<5;b++)if((M=I($T[b],s))>=0)return y(26+b,s,M),!0;f=d}if(h!==-1&&S!==34&&!je(S)){if(s>=g){h<s&&(h=e.indexOf("@",s));let b=s;for(;b<t;){let E=e.charCodeAt(b);if(E===34||je(E))break;b++}if(g=b,p=-1,h!==-1&&h<b)for(let E=Math.min(b,t-1)-1;E>=h;E--){if(e.charCodeAt(E)!==64)continue;let w=e.charCodeAt(E+1);if(w!==123&&w!==34){p=E;break}}}if(p>s)return y(31,s,p+1),!0}if(S>=48&&S<=57){let b=s+1;for(;b<t;){let E=e.charCodeAt(b);if(E<48||E>57)break;b++}return y(32,s,b),!0}switch(S){case 35:return y(33,s,s+1),!0;case 58:return e.charCodeAt(s+1)===58&&e.charCodeAt(s+2)===58?y(34,s,s+3):y(35,s,s+1),!0;case 38:return y(36,s,s+1),!0;case 59:return y(37,s,s+1),!0;case 44:return y(38,s,s+1),!0;case 42:return y(39,s,s+1),!0;case 120:case 111:return G(S)||Q();case 60:return G(S)||y(60,s,s+1),!0;case 45:return G(S)||Q()||y(65,s,s+1),!0;case 61:return G(S);case 46:return G(S)||Q();case 126:return q();case 40:return C(S);case 91:return e.charCodeAt(s+1)===124?(y(50,s,s+2),!0):C(S);case 124:case 123:return C(S);case 62:return $(7),y(51,s,s+1),!0;case 94:return y(61,s,s+1),!0;case 92:return e.charCodeAt(s+1)===124?(y(62,s,s+2),!0):Q();case 118:return et(e.charCodeAt(s+1))?Q():(y(63,s,s+1),!0)}return je(S)?G(S)?!0:(M=I(AT,s))>=0?(y(74,s,M),!0):(M=I(ET,s))>=0?(y(75,s,M),!0):!1:S<128?Q():Cs(S)?(y(66,s,s+1),!0):!1},N=(S,M,b,E)=>{if(S===34)return W(),!0;let w=L(s);if(w===b||w===E){let A=I(M,s);if(A>=0)return k(),y(40,s,A),!0}if(S===b&&(b!==45||e.charCodeAt(s+1)===45))return!1;let T=s+1;for(;T<t;){let A=e.charCodeAt(T);if(A===34)break;if(A===b){if(b!==45||e.charCodeAt(T+1)===45)break}else if(A===120||A===111||A===60||A===E||je(A)){let v=L(T);if((v===b||v===E)&&I(M,T)>=0)break}T++}return y(42,s,T),!0};e:for(;;){if(s>=t){let b=-1;switch(l){case 0:b=76;break;case 3:b=3;break;case 4:b=5;break;case 5:b=6;break;case 13:b=19;break;case 14:b=8;break;case 15:b=9;break}b!==-1&&y(b,t,t);break}let S=e.charCodeAt(s),M=!0;switch(l){case 0:M=Y(S);break;case 1:if(S===34)e.charCodeAt(s+1)===96?($(2),s+=2):(k(),s++);else{let b=e.indexOf('"',s);y(11,s,b===-1?t:b)}break;case 2:if(S===96)e.charCodeAt(s+1)===34?(k(),s+=2):M=!1;else if(S===34)W();else{let b=s+1;for(;b<t;){let E=e.charCodeAt(b);if(E===96||E===34)break;b++}y(10,s,b)}break;case 3:case 4:{let b=e.indexOf(`
|
|
175
|
+
`,s);b===-1&&(b=t);let E=l===3?3:5;k(),y(E,s,b);break}case 5:if(S===125)k(),s++;else{let b=e.indexOf("}",s);b===-1&&(b=t),y(6,s,b)}break;case 6:{let b;S===34?W():(b=I(yT,s))>=0?(k(),y(24,s,b)):(b=I(xT,s))>=0||(b=I(bT,s))>=0||(b=I(wT,s))>=0?(k(),y(25,s,b)):M=q()||C(S);break}case 7:{let b=e.charCodeAt(s+1);switch(S){case 34:W();break;case 40:case 91:case 123:C(S);break;case 93:k(),b===41?y(46,s,s+2):b===93?y(48,s,s+2):y(70,s,s+1);break;case 41:k(),b===93?y(52,s,s+2):b===41&&e.charCodeAt(s+2)===41?y(54,s,s+3):y(68,s,s+1);break;case 124:k(),y(67,s,s+1);break;case 125:k(),y(72,s,s+1);break;default:{if((S===126||je(S))&&q())break;let E=s+1;for(;E<t;){let w=e.charCodeAt(E);if(w===91||w===93||w===40||w===41||w===123||w===125||w===124||w===34)break;E++}y(44,s,E)}}break}case 8:{let b=e.charCodeAt(s+1);if(S===34)W();else{if((S===126||je(S))&&q())break;if((S===45||S===47||S===41)&&b===41)k(),y(43,s,s+2);else if(S===40||S===91||S===123)C(S);else if(S===41||S===93||S===125)M=!1;else{let E=s+1;for(;E<t;){let w=e.charCodeAt(E);if(w===34||w===40||w===41||w===91||w===93||w===123||w===125||(w===45||w===47)&&e.charCodeAt(E+1)===41||(w===126||je(w))&&R(E)&&I(Yy,E)>=0)break;E++}y(44,s,E)}}break}case 9:{let b=e.charCodeAt(s+1);if(S===34){W();break}if((S===126||je(S))&&q())break;switch(S){case 40:b===45||b===91||b===40&&e.charCodeAt(s+2)===40?C(S):b===93?(k(),y(56,s,s+2)):C(S);break;case 91:case 123:C(S);break;case 92:b===93?(k(),y(56,s,s+2)):y(44,s,s+1);break;case 47:b===93?(k(),y(57,s,s+2)):y(44,s,s+1);break;case 93:case 41:b===93?(k(),y(56,s,s+2)):M=!1;break;case 125:M=!1;break;default:{if((S===63||S===61)&&b===93){k(),y(56,s,s+2);break}let E=s+1;for(;E<t;){let w=e.charCodeAt(E);if(w===92||w===91||w===93||w===40||w===41||w===123||w===125||w===47)break;E++}y(44,s,E)}}break}case 10:M=N(S,By,45,-1);break;case 11:M=N(S,Wy,61,-1);break;case 12:M=N(S,Fu,46,45);break;case 13:if(S===34)W();else if(je(S))k(),s++;else{let b=s+1;for(;b<t&&!je(e.charCodeAt(b));)b++;y(19,s,b)}break;case 14:if(S===40){let b=I(ST,s);k(),b>=0?s=b:($(15),s++)}else{let b=e.indexOf("(",s);b===-1&&(b=t),y(8,s,b)}break;case 15:if(S===41)k(),s++;else{let b=e.indexOf(")",s);b===-1&&(b=t),y(9,s,b)}break;case 16:if(S===34)$(17),y(7,s,s+1);else if(S===125)k(),s++;else if(S===94)M=!1;else{let b=s+1;for(;b<t;){let E=e.charCodeAt(b);if(E===125||E===94||E===34)break;b++}y(7,s,b)}break;case 17:if(S===34)k(),y(7,s,s+1);else{let b=e.indexOf('"',s);b===-1&&(b=t),r.push(7),a.push(e.slice(s,b).replace(TT,"<br/>")),n.push(s),s=b}break}if(!M)return r.push(1),a.push(""),n.push(s),{types:r,texts:a,starts:n};continue e}return r.push(0),a.push(""),n.push(t),{types:r,texts:a,starts:n}}function IT(e,t){let r=e.includes("}")?e.replace(_T,`}
|
|
176
|
+
`):e,{types:a,texts:n,starts:i}=CT(r),l=0,s,o=N=>{let S=a[l];throw S===1?st("flowchart",r,i[l],"",!0):st("flowchart",r,i[l],`Expecting ${N}, got '${Fy[S]}'`)},c=(N,S="")=>(a[l]!==N&&o(`'${Fy[N]}'${S?", "+S:""}`),n[l++]),h=()=>{let N=a[l];N!==74&&N!==37&&N!==76&&o("'SEMI', 'NEWLINE', 'EOF'"),l++},d=()=>{sh[a[l]]===0&&o("'NODE_STRING'");let N=n[l++];for(;sh[a[l]]===1;)N+=n[l++];return N},f=()=>{qu[a[l]]===0&&o("'NODE_STRING'");let N=n[l++];for(;qu[a[l]]===1;)N+=n[l++];return N},g=()=>{let N=a[l],S;if(N===11)S="string";else if(N===10)S="markdown";else if(N===44||N===60||N===51||N===66)S="text";else return o(`${qy}, 'TAGEND', 'STR', 'MD_STR'`);let M=n[l++];for(;;){let b=a[l];if(b!==44&&b!==60&&b!==51&&b!==66)break;M+=n[l++]}return{text:M,type:S}},p=N=>{c(N,qy)},m=()=>{let N=a[l],S;if(N===11)S="string";else if(N===10)S="markdown";else if(N===42||N===66)S="text";else return o("'EDGE_TEXT', 'STR', 'MD_STR'");let M=n[l++];for(;a[l]===42||a[l]===66;)M+=n[l++];return{text:M,type:S}},x=()=>{let N=a[l],S;if(N===11)S="text";else if(N===10)S="markdown";else if(Gu[N]===1)S="text";else return o("'NODE_STRING', 'STR', 'MD_STR'");let M=n[l++];for(;Gu[a[l]]===1;)M+=n[l++];return{text:M,type:S}},y=()=>{let N=n[l++];for(;a[l]===7;)N+=n[l++];return N},$=()=>{let N=d(),S;switch(a[l]){case 71:l++,S=g(),p(70),t.addVertex(N,S,"square");break;case 55:l++,S=g(),p(54),t.addVertex(N,S,"doublecircle");break;case 69:l++,a[l]===69?(l++,S=g(),p(68),c(68),t.addVertex(N,S,"circle")):(S=g(),p(68),t.addVertex(N,S,"round"));break;case 45:l++,S=g(),p(43),t.addVertex(N,S,"ellipse");break;case 47:l++,S=g(),p(46),t.addVertex(N,S,"stadium");break;case 49:l++,S=g(),p(48),t.addVertex(N,S,"subroutine");break;case 50:{l++;let M=c(64);c(35);let b=c(64);c(67),S=g(),p(70),t.addVertex(N,S,"rect",void 0,void 0,void 0,{[M]:b});break}case 53:l++,S=g(),p(52),t.addVertex(N,S,"cylinder");break;case 73:l++,a[l]===73?(l++,S=g(),p(72),c(72),t.addVertex(N,S,"hexagon")):(S=g(),p(72),t.addVertex(N,S,"diamond"));break;case 51:l++,S=g(),p(70),t.addVertex(N,S,"odd");break;case 58:l++,S=g(),a[l]===57?(l++,t.addVertex(N,S,"lean_right")):(p(56),t.addVertex(N,S,"trapezoid"));break;case 59:l++,S=g(),a[l]===56?(l++,t.addVertex(N,S,"lean_left")):(p(57),t.addVertex(N,S,"inv_trapezoid"));break;default:t.addVertex(N)}return N},k=()=>{let N=$();return a[l]===34&&(l++,t.setClass(N,d())),N},I=()=>{let N=[k()];for(s=void 0;;){let S=a[l]===7?y():void 0;if(a[l]!==75)return s=S,N;do l++;while(a[l]===75);if(a[l]!==36)return S!==void 0&&o("'AMP'"),N;l++,a[l]!==75&&o("'SPACE'");do l++;while(a[l]===75);let M=k();S!==void 0&&t.addVertex(N[N.length-1],void 0,void 0,void 0,void 0,void 0,void 0,S),N.push(M)}},_=()=>{let N;if(a[l]===31&&(N=n[l++]),a[l]===40){let S=t.destructLink(n[l++]);return N!==void 0&&(S.id=N),a[l]===67&&(l++,S.text=g(),p(67),a[l]===75&&l++),S}if(a[l]===41){let S=n[l++],M=m(),b=c(40,"'EDGE_TEXT'"),E=t.destructLink(b,S);return E.text=M,N!==void 0&&(E.id=N),E}return o("'LINK', 'START_LINK'")},L=N=>{let S=I();s!==void 0&&t.addVertex(S[S.length-1],void 0,void 0,void 0,void 0,void 0,void 0,s);let M=S;for(;;){let b=a[l];if(b!==40&&b!==41&&b!==31)return M;let E=_(),w=I();s!==void 0&&t.addVertex(w[w.length-1],void 0,void 0,void 0,void 0,void 0,void 0,s),t.addLink(S,w,E),N&&(M=w.concat(M)),S=w}},R=()=>{Hu[a[l]]===0&&o("'NODE_STRING', 'NUM', 'COLON', 'BRKT'");let N=n[l++];for(;Hu[a[l]]===1;)N+=n[l++];return N},W=()=>{let N=[R()];for(;a[l]===38;)l++,N.push(R());return N},q=()=>{l++,c(75);let N;if(a[l]===13)N=[n[l++]];else for(N=[c(32,"'DEFAULT'")];a[l]===38;)l++,N.push(c(32));if(c(75),a[l]!==15){t.updateLink(N,W());return}l++,c(75);let S=f();if(a[l]===75){l++;let M=W();t.updateLinkInterpolate(N,S),t.updateLink(N,M)}else t.updateLinkInterpolate(N,S)},C=(N,S)=>{if(a[l]!==75){t.setLink(N,S);return}if(l++,a[l]===23){t.setLink(N,S,n[l++]);return}let M=c(11,"'LINK_TARGET'");a[l]===75?(l++,t.setLink(N,S,c(23))):t.setLink(N,S),t.setTooltip(N,M)},K=()=>{let N=n[l++];switch(a[l]){case 8:{let S=n[l++],M=a[l]===9,b=M?n[l++]:void 0,E;a[l]===75&&(l++,E=c(11)),M?t.setClickEvent(N,S,b):t.setClickEvent(N,S),E!==void 0&&t.setTooltip(N,E);return}case 18:l++,C(N,c(11));return;case 11:C(N,n[l++]);return;default:{let S=f();if(a[l]===75){l++;let M=c(11);t.setClickEvent(N,S),t.setTooltip(N,M)}else t.setClickEvent(N,S)}}},Q=()=>{l++;let N=a[l];if(N===74||N===37||N===76)return l++,{id:void 0,title:void 0,list:[],collect:!1};c(75,"'SEMI', 'NEWLINE', 'EOF'");let S=x(),M=S;return a[l]===71&&(l++,M=g(),p(70)),N=a[l],N!==74&&N!==37&&N!==76&&o("'SEMI', 'NEWLINE', 'EOF', 'SQS'"),l++,{id:S,title:M,list:[],collect:!1}},G=N=>{let S=a[l];switch(S){case 12:{l++,c(75);let M=d();return c(75),t.addVertex(M,void 0,void 0,W()),h(),ao}case 14:return q(),h(),ao;case 16:{l++,c(75);let M=d();return c(75),t.addClass(M,W()),h(),ao}case 17:{l++,c(75);let M=d();return c(75),t.setClass(M,d()),h(),ao}case 19:return K(),h(),ao;case 26:case 27:case 28:case 29:case 30:return l++,{stmt:"dir",value:NT[S-26]};case 2:{l++;let M=c(3).trim();return t.setAccTitle(M),M}case 4:{l++;let M=c(5).trim();return t.setAccDescription(M),M}case 6:{let M=n[l++].trim();return t.setAccDescription(M),M}default:{sh[S]===0&&o(Gy);let M=L(N);return h(),M}}},Y=()=>{let N=[],S=[],M=!1;for(;;){let b=a[l];if(b===0)break;if(b===22){let E=N.pop();if(E===void 0)break;l++;let w=t.addSubGraph(E.id,S,E.title);S=E.list,M=E.collect,M&&S.push(w)}else if(b===37||b===74||b===75||b===76)M&&S.push(n[l]),l++;else if(b===21){let E=Q();E.list=S,E.collect=M,N.push(E),S=[],M=!0}else{let E=G(M);M&&(!Array.isArray(E)||E.length>0)&&S.push(E)}}N.length>0&&o("'end'")};for(;a[l]===75||a[l]===74;)l++;if(c(20,"'SPACE', 'NEWLINE'"),a[l]===24)l++,t.setDirection("TB");else{let N=c(25,"'NODIR'"),S=a[l];if(S===75){do l++;while(a[l]===75);S=a[l],S!==74&&o("'NEWLINE', 'SPACE'")}else S!==37&&S!==74&&o("'SEMI', 'NEWLINE', 'SPACE'");l++,t.setDirection(N)}Y(),a[l]!==0&&o(Gy)}function LT(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";default:return e.type}}function RT(e){switch(e){case"arrow_point":case"arrow_circle":case"arrow_cross":return["none",e];case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":{let t=e.replace("double_","");return[t,t]}}return["none","arrow_point"]}function OT(e,t){let r=[],a=[],n=e.subgraphs,i=k=>{let I=[];for(let _ of k){let L=e.classes.get(_);if(L!==void 0){for(let R of L.styles)I.push(R.trim());for(let R of L.textStyles)I.push(R.trim())}}return I},l=new Map;for(let k of n)for(let I of k.nodes)e.subgraph(I)&&l.set(I,k.id);let s=new Map,o=new Map;for(let k of n){let I=l.get(k.id);if(I===void 0)continue;let _=o.get(I);_?_.push(k.id):o.set(I,[k.id])}let c=0;for(let k of n){if(l.has(k.id))continue;let I=[k.id];for(;I.length>0;){let _=I.pop();if(s.has(_))continue;s.set(_,c++);let L=o.get(_);if(L)for(let R=L.length-1;R>=0;R--)I.push(L[R])}}let h=k=>e.subgraph(k)?.metadata?.view==="collapsed",d=!1;for(let k of n)k.metadata?.view==="collapsed"&&(d=!0);let f=new Map,g=k=>{let I=[],_=new Set,L=k;for(;L!==void 0&&!f.has(L)&&!_.has(L);)_.add(L),I.push(L),L=l.get(L);let R=L!==void 0?f.get(L):void 0;for(let W=I.length-1;W>=0;W--)R===void 0&&h(I[W])&&(R=I[W]),f.set(I[W],R);return R},p=new Set,m=new Map;for(let k of d?n:[]){let I=g(k.id);if(I!==void 0){k.id!==I&&(p.add(k.id),m.set(k.id,I));for(let _ of k.nodes)_!==I&&(p.add(_),m.set(_,I))}}let x=new Map,y=new Set;for(let k=n.length-1;k>=0;k--){let I=n[k];if(!p.has(I.id)){I.nodes.length>0&&y.add(I.id);for(let _ of I.nodes)x.set(_,I.id)}}let $=new Map;for(let k=n.length-1;k>=0;k--){let I=n[k];if(p.has(I.id))continue;let _=I.metadata?.view==="collapsed",L={id:I.id,label:I.title,labelType:I.labelType,parentId:x.get(I.id),cssStyles:[],cssCompiledStyles:i(I.classes),cssClasses:I.classes.join(" "),shape:_?"collapsedGroup":"rect",dir:I.dir,isGroup:!_,colorIndex:s.get(I.id)};_||(L.metadata=I.metadata),r.push(L),$.set(I.id,L)}for(let k of e.nodes.values()){if(p.has(k.id))continue;let I=$.get(k.id);if(I){I.cssStyles=k.styles,I.cssCompiledStyles=i(k.classes),I.cssClasses=k.classes.join(" ");continue}let _=y.has(k.id),L={id:k.id,label:k.text,labelType:k.labelType,parentId:x.get(k.id),cssStyles:k.styles,cssCompiledStyles:i(["default","node",...k.classes]),cssClasses:"default "+k.classes.join(" "),dir:k.dir,link:k.link,linkTarget:k.linkTarget,tooltip:e.tooltips.get(k.id),icon:k.icon,pos:k.pos,img:k.img,assetWidth:k.assetWidth,assetHeight:k.assetHeight,constraint:k.constraint,isGroup:_,shape:_?"rect":LT(k)};r.push(L)}return e.edges.forEach((k,I)=>{let _=m.get(k.start)??k.start,L=m.get(k.end)??k.end;if(_===L&&(m.has(k.start)||m.has(k.end)))return;let[R,W]=RT(k.type),q=[...e.defaultEdgeStyle??[]];k.style&&q.push(...k.style);let C=k.stroke==="invisible"||k.type==="arrow_open";a.push({id:k.id||`L_${_}_${L}_${I}`,isUserDefinedId:k.isUserDefinedId,start:_,end:L,type:k.type??"normal",label:k.text,labelType:k.labelType,thickness:k.stroke,pattern:k.stroke,minlen:k.length,classes:k.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:C?"none":R,arrowTypeEnd:C?"none":W,cssCompiledStyles:i(k.classes),style:q,animate:k.animate,animation:k.animation,curve:k.interpolate||e.defaultInterpolate||t})}),{nodes:r,edges:a}}function Yu(e,t,r){let a=e[t];return typeof a=="number"&&a>0?Math.min(a,2e3):r}function no(e,t){return e!==void 0&&e>0&&e<=4e3?e:t}function Uu(e,t,r,a){let n=i=>Yr(r,l=>BT(e,t,r,a,i,l));return na(e.direction)?jt(r,n):n(!1)}function BT(e,t,r,a,n,i){let l=i?12:Hy,s=a?t[a.type]:void 0,o=typeof s=="object"&&s!==null&&!Array.isArray(s)?s:t.flowchart??{},c=OT(e,typeof o.curve=="string"?o.curve:void 0);a?.prepare(c);let h=r.fontSize??16,d=Math.round(h*.875),f=r.measurer??rt(r.fontFamily),g=Math.min(Yu(o,"wrappingWidth",200),a&&i?100:1/0),p=r.padding??8,m=r.icons,x=new Map,y=[],$=[];c.nodes.forEach((P,O)=>x.set(P.id,O));for(let P of c.nodes){let O=Ct(P.cssStyles.length>0?P.cssCompiledStyles.concat(P.cssStyles):P.cssCompiledStyles),F=(O.bold?1:0)|(O.italic?2:0),U=P.labelType==="markdown",j=O.fontSize??h,J,Z;if(P.isGroup){let B=Be(P.label,U,f,j,a&&i?Math.max(80,Pt(r)/2):4e3,F);J={node:P,style:O,label:B,shape:"group",w:0,h:0,dy:0,loops:0},Z=Kt(0,0),Z.isGroup=!0,Z.dir=P.dir?Cr(P.dir):void 0,Z.padX=l,Z.padTop=B.height>0?B.height+16:Hy,Z.padBottom=l,Z.minW=B.width+2*l-12}else{let B=Yc(P.shape),X=P.img||P.icon||Py(B)?P.label:void 0,te=Be(X,U,f,j,g,F),se,ce,ae=0;if(P.img||P.icon){let ie=P.img?80:48,ee=no(P.assetWidth,ie),re=no(P.assetHeight,ie);se=Math.max(ee,te.width+8),ce=re+(te.height>0?te.height+6:0),ae=P.pos==="t"?-re/2:re/2,te.height===0&&(ae=0)}else{let ie=Zn(B,te.width,te.height);se=ie.w,ce=ie.h,ae=ie.dy}J={node:P,style:O,label:te,shape:B,w:se,h:ce,dy:ae,loops:0},Z=Kt(se,ce)}Z.seq=y.length,y.push(J),$.push(Z)}c.nodes.forEach((P,O)=>{$[O].parent=P.parentId!==void 0?x.get(P.parentId)??-1:-1});let k=n?"TB":Cr(e.direction),I=P=>{let O;for(let F=$[P].parent,U=0;F>=0&&O===void 0&&U<1e4;F=$[F].parent,U++)O=$[F].dir;return O??(O=k),O==="LR"||O==="RL"};y.forEach((P,O)=>{P.node.isGroup?$[O].span=1/0:!P.node.img&&!P.node.icon&&($[O].span=Dy(P.shape,P.w,P.h,I(O)))});let _=[],L=[],R=[];for(let P of c.edges){let O=x.get(P.start),F=x.get(P.end);if(O===void 0||F===void 0)continue;let U=Be(P.label,P.labelType==="markdown",f,d,g);O===F&&(y[O].loops++,I(O)?$[O].h+=2*(Bu+(U.height>0?U.height+8:0)):$[O].w+=2*(Bu+(U.width>0?U.width+12:0))),R.push(P),L.push(U),_.push({src:O,dst:F,minlen:P.minlen??1,labelW:U.width>0?U.width+12:0,labelH:U.height>0?U.height+4:0,route:[],labelX:0,labelY:0})}let W={nodeSep:Yu(o,"nodeSpacing",DT)*(i?.5:1),edgeSep:PT,rankSep:Yu(o,"rankSpacing",zT)*(i?.75:1),portSep:20,tracks:typeof o.curve=="string"&&/^step/.test(o.curve),straight:o.curve==="linear",headRoom:xt("arrow_point")},q=a?a.layout($,_,k,W,i):aa($,_,k,W),C=zr(e.title,f,h,i?Pt(r):4e3),K=C.height>0?C.height+12:0,Q=Math.max(q.width,C.width),G=p+(Q-q.width)/2,Y=p+K;Vn($,_,G,Y);let N=Math.ceil(Q+2*p),S=Math.ceil(q.height+K+2*p),M=[],b=new Map,E=!1;for(let P of $)P.isGroup&&(E=!0);if(E)for(let P of _)Ya(b,P.route);let w="",T="",A="";for(let P=0;P<y.length;P++){let O=y[P],F=$[P],U=O.node,j=F.x,J=F.y,Z=Dt(U.cssClasses.replace(/^default\s?/,"")),B=Pe(U.id);if(F.isGroup&&a?.drawGroup&&F.parent<0){w+=a.drawGroup(F,O.label,O.style,Z,B,k,m);continue}if(F.isGroup){let ie=Xn(F,O.label.width,b,l),ee=J-F.h/2+8+O.label.height/2,re=` class="pele-cluster-label" fill="var(--_m)"${O.style.text}`,fe=Hc(F,O.label.width,ie,b);fe&&(T+=Uc(O.label,ie,ee,re,B,$,P,m)),w+=`<g class="pele-cluster${Z}" data-id="${B}"><rect x="${u(j-F.w/2)}" y="${u(J-F.h/2)}" width="${u(F.w)}" height="${u(F.h)}" fill="var(--_a)" fill-opacity="0.5" stroke="var(--_b)"${gt(O.style.shape)}/>`+(fe?"":Re(O.label,ie,ee,re,m))+"</g>";continue}let X=O.w,te=O.h,se;if(U.img){let ie=no(U.assetWidth,80),ee=no(U.assetHeight,80),re=O.label.height>0?U.pos==="t"?te/2-ee:-te/2:-ee/2,fe=Iy(Ha(U.img),r);se=fe===void 0?"":`<image href="${Qe(fe)}" x="${u(-ie/2)}" y="${u(re)}" width="${u(ie)}" height="${u(ee)}" preserveAspectRatio="${U.constraint==="on"?"xMidYMid meet":"none"}"/>`}else if(U.icon){let ie=no(U.assetHeight,48),ee=O.label.height>0?U.pos==="t"?te/2-ie:-te/2:-ie/2,re=U.shape==="icon"?"":U.shape==="iconCircle"?`<circle cy="${u(ee+ie/2)}" r="${u(ie/2)}"${Wu}${O.style.shape}/>`:`<rect x="${u(-ie/2)}" y="${u(ee)}" width="${u(ie)}" height="${u(ie)}" rx="${U.shape==="iconRounded"?8:0}"${Wu}${O.style.shape}/>`,fe=ie*.6;se=re+`<svg class="pele-icon" data-icon="${Pe(U.icon)}" x="${u(-fe/2)}" y="${u(ee+(ie-fe)/2)}" width="${u(fe)}" height="${u(fe)}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${m?.(U.icon)??""}</svg>`}else se=Ua(O.shape,X,te,Wu+O.style.shape,FT+O.style.line);let ce=Re(O.label,0,O.dy,` class="pele-label"${O.style.text}`,m);if(/ internal-link(?: |$)/.test(Z+" ")&&U.label&&r.links!==!1){let ie=Tt(U.label),ee=Cn(Ga(ie),r)!==void 0,re=Qe(ie);ce=`<a class="internal-link"${ee?` href="${re}"${_n(r)}`:""} data-href="${re}">${ce}</a>`,M.push({id:U.id,href:ie,internal:!0})}let ae=se+ce;U.tooltip&&(ae=`<title>${Pe(U.tooltip)}</title>`+ae),U.link&&(ae=Ca(ae,U.link,U.id,M,r,U.linkTarget?` target="${Qe(U.linkTarget)}"`:"")),A+=`<g class="pele-node pele-shape-${O.shape}${Z}" data-id="${B}" transform="translate(${u(j)},${u(J)})">${ae}</g>`}let v=Kc();for(let P=0;P<_.length;P++){let O=_[P];O.src===O.dst||R[P].thickness==="invisible"||O.route.length<6||(v.add(O.src,_a(O.route,0,$[O.src]),R[P].arrowTypeStart),v.add(O.dst,_a(O.route,O.route.length-3,$[O.dst]),R[P].arrowTypeEnd))}let D="",z="",H=new Map;for(let P=0;P<_.length;P++){let O=_[P],F=R[P],U=L[P],j=F.style.length>0||F.cssCompiledStyles.length>0?Ct(F.cssCompiledStyles.concat(F.style)):void 0;if(F.thickness!=="invisible"){let J=F.arrowTypeStart,Z=F.arrowTypeEnd,B;if(O.src===O.dst){let ce=y[O.src],ae=H.get(O.src)??0;H.set(O.src,ae+1),B=Zc($[O.src],ce.w,ce.h,ae,I(O.src),Bu,xt(Z),O)}else{let ce=O.route.slice(),ae=v.of(O.src,_a(ce,0,$[O.src])),ie=v.of(O.dst,_a(ce,ce.length-3,$[O.dst]));Oi(ce,0,y[O.src],$[O.src]),Oi(ce,ce.length-3,y[O.dst],$[O.dst]),B=Xr(ce,F.curve,xt(J),xt(Z),ae,ie)}let X=j?.stroke&&F.thickness!=="invisible"?Qe(j.stroke):"var(--_l)",te="";F.thickness==="thick"?te+=' stroke-width="2.5"':F.thickness==="dotted"&&(te+=' stroke-dasharray="3 4"');let se=Dt(F.classes.replace(/edge-thickness-normal|edge-pattern-solid|flowchart-link/g,""));D+=`<g class="pele-edge${se}" data-id="${Pe(F.id)}"${j?.line??""}><path d="${B.d}"${te}/>`+Mt(J,B.sx,B.sy,B.sdx,B.sdy,X)+Mt(Z,B.ex,B.ey,B.edx,B.edy,X)+"</g>"}if(U.width>0){let J=O.labelX,Z=O.labelY;z+=Tr(F.id,U,J,Z,j?.text??"",m)}}return{svg:tt(a?.type??"flowchart",N,S,h,r,e,Re(C,N/2,p+C.height/2,' class="pele-title" font-weight="var(--_tw)"')+(w?`<g class="pele-clusters">${w}</g>`:"")+(D?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${D}</g>`:"")+(T?`<g class="pele-cluster-titles">${T}</g>`:"")+(z?`<g class="pele-edge-labels" font-size="${d}">${z}</g>`:"")+`<g class="pele-nodes">${A}</g>`),width:N,height:S,links:M}}var dT,Fy,Uy,fT,uT,pT,gT,mT,yT,xT,bT,wT,$T,zu,By,kT,Wy,MT,Fu,vT,Yy,AT,ET,ST,TT,sh,qu,Gu,Hu,qy,ao,_T,NT,Gy,DT,PT,zT,Hy,Bu,Wu,FT,lh,ju=Ge(()=>{xe();Eu();As();qc();Is();Kn();qa();In();Qn();or();Gt();$r();yt();kt();dT=class{constructor(e={}){le(this,"type","flowchart");le(this,"direction");le(this,"nodes",new Map);le(this,"edges",[]);le(this,"subgraphs",[]);le(this,"classes",new Map);le(this,"tooltips",new Map);le(this,"defaultEdgeStyle");le(this,"defaultInterpolate");le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"subgraphLookup",new Map);le(this,"members",new Set);le(this,"edgeById",new Map);le(this,"pairCount",new Map);le(this,"subCount",0);le(this,"options");this.options=e}addVertex(e,t,r,a,n,i,l,s){if(!e||e.trim().length===0)return;let o;if(s!==void 0){let g=s.includes(`
|
|
177
|
+
`)?s+`
|
|
178
|
+
`:`{
|
|
179
|
+
`+s+`
|
|
180
|
+
}`,p;try{p=Ba(g)}catch(m){throw new Ke(`Metadata of "${e}" is not valid YAML. ${m.message}`,"syntax",{type:"flowchart"})}o=p!==null&&typeof p=="object"&&!Array.isArray(p)?p:void 0}let c=this.subgraphLookup.get(e);if(c&&o){c.metadata={...c.metadata,...o};return}let h=this.edgeById.get(e);if(h){o?.animate!==void 0&&(h.animate=o.animate),o?.animation!==void 0&&(h.animation=o.animation),o?.curve!==void 0&&(h.interpolate=o.curve);return}let d=this.nodes.get(e);if(d===void 0&&(t===void 0&&r===void 0&&a!==void 0&&a!==null&&this.options.warn?.(`Style applied to unknown node "${e}". This may indicate a typo. The node will be created automatically.`),d={id:e,labelType:"text",styles:[],classes:[]},this.nodes.set(e,d)),t!==void 0?(d.labelType=t.type,d.text=zy(t.text.trim())):d.text===void 0&&(d.text=e),r!==void 0&&(d.type=r),a!=null)for(let g of a)d.styles.push(g);if(n!=null)for(let g of n)d.classes.push(g);if(i!==void 0&&(d.dir=i),d.props===void 0?d.props=l??{}:l!==void 0&&Object.assign(d.props,l),o===void 0)return;if(o.shape){let g=String(o.shape);if(g!==g.toLowerCase()||g.includes("_"))throw new Ke(`No such shape: ${g}. Shape names should be lowercase.`,"semantic",{type:"flowchart"});if(!Wc(g))throw new Ke(`No such shape: ${g}.`,"semantic",{type:"flowchart"});d.type=g}let f=typeof o.label=="string"?o.label:void 0;o.label&&(d.text=String(o.label),d.labelType=Pu(o.labelType)),o.icon&&(d.icon=String(o.icon),!f?.trim()&&d.text===e&&(d.text="")),o.form&&(d.form=String(o.form)),o.pos&&(d.pos=String(o.pos)),o.img&&(d.img=String(o.img),!f?.trim()&&d.text===e&&(d.text="")),o.constraint&&(d.constraint=String(o.constraint)),o.w&&(d.assetWidth=Number(o.w)),o.h&&(d.assetHeight=Number(o.h))}addSingleLink(e,t,r,a){let n={start:e,end:t,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.defaultInterpolate},i=r?.text;i!==void 0&&(n.text=zy(i.text.trim()),n.labelType=Pu(i.type)),r!==void 0&&(n.type=r.type,n.stroke=r.stroke,n.length=r.length>10?10:r.length);let l=e+"\0"+t,s=this.pairCount.get(l)??0;a&&!this.edgeById.has(a)?(n.id=a,n.isUserDefinedId=!0):n.id=`L_${e}_${t}_${s===0?0:s+1}`;let o=this.options.maxEdges;if(o!==void 0&&this.edges.length>=o)throw new Ke(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${o}.`,"limit",{type:"flowchart"});this.edges.push(n),this.pairCount.set(l,s+1),this.edgeById.has(n.id)||this.edgeById.set(n.id,n)}addLink(e,t,r){let a=typeof r?.id=="string"?r.id.replace("@",""):void 0,n=e[e.length-1],i=t[0];for(let l of e)for(let s of t)this.addSingleLink(l,s,r,l===n&&s===i?a:void 0)}updateLinkInterpolate(e,t){for(let r of e)r==="default"?this.defaultInterpolate=t:this.edgeAt(r).interpolate=t}updateLink(e,t){for(let r of e){if(r==="default"){this.defaultEdgeStyle=t;continue}let a=this.edgeAt(r);a.style=t,t.length>0&&!t.some(n=>n?.startsWith("fill"))&&t.push("fill:none")}}edgeAt(e){let t=this.edges[Number(e)];if(t===void 0)throw new Ke(`The index ${e} 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.)`,"semantic",{type:"flowchart"});return t}addClass(e,t){let r=t.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");for(let a of e.split(",")){let n=this.classes.get(a);n===void 0&&(n={id:a,styles:[],textStyles:[]},this.classes.set(a,n));for(let i of r)i.includes("color")&&n.textStyles.push(i.replace("fill","bgFill")),n.styles.push(i)}}setDirection(e){let t=e.trim();t.includes("<")&&(t="RL"),t.includes("^")&&(t="BT"),t.includes(">")&&(t="LR"),t.includes("v")&&(t="TB"),t==="TD"&&(t="TB"),this.direction=t}setClass(e,t){for(let r of e.split(","))this.nodes.get(r)?.classes.push(t),this.edgeById.get(r)?.classes.push(t),this.subgraphLookup.get(r)?.classes.push(t)}setTooltip(e,t){if(t!==void 0)for(let r of e.split(","))this.tooltips.set(r,t)}setLink(e,t,r){let a=t.trim();for(let n of e.split(",")){let i=this.nodes.get(n);i!==void 0&&(i.link=a?Ha(a):void 0,i.linkTarget=r)}this.setClass(e,"clickable")}setClickEvent(e,t,r){this.setClass(e,"clickable")}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
181
|
+
`)}addSubGraph(e,t,r){let a=e?.text.trim(),n=r?.text??"";e!==void 0&&e===r&&/\s/.test(n)&&(a=void 0);let i=new Set,l=[],s;for(let d of t)if(typeof d=="string")d.trim()!==""&&!i.has(d)&&(i.add(d),l.push(d));else if(Array.isArray(d))for(let f of d)f.trim()!==""&&!i.has(f)&&(i.add(f),l.push(f));else s=d.value;s??(s=this.options.inheritDir?this.direction??this.options.direction:void 0),a??(a="subGraph"+this.subCount),n=n||"",this.subCount++;let o={id:a,nodes:l,title:n.trim(),classes:[],dir:s,labelType:Pu(r?.type)},c=this.members;o.nodes=l.filter(d=>!c.has(d)&&d!==a);for(let d of o.nodes)c.add(d);let h=this.subgraphLookup.get(a);if(h)for(let d of o.nodes)h.nodes.push(d);else this.subgraphs.push(o);return this.subgraphLookup.set(a,h??o),a}exists(e,t){for(let r of e)if(r.nodes.includes(t))return!0;return!1}makeUniq(e,t){let r=new Set;for(let a of t)for(let n of a.nodes)r.add(n);return{nodes:e.nodes.filter(a=>!r.has(a))}}destructLink(e,t){let r=hT(e);if(!t)return r;let a=cT(t);if(a.stroke!==r.stroke)return{type:"INVALID",stroke:"INVALID"};if(a.type==="arrow_open")a.type=r.type;else{if(a.type!==r.type)return{type:"INVALID",stroke:"INVALID"};a.type="double_"+a.type}return a.type==="double_arrow"&&(a.type="double_arrow_point"),a.length=r.length,a}subgraph(e){return this.subgraphLookup.get(e)}},Fy=["$end","INVALID","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","SHAPE_DATA","CALLBACKNAME","CALLBACKARGS","MD_STR","STR","STYLE","DEFAULT","LINKSTYLE","INTERPOLATE","CLASSDEF","CLASS","HREF","CLICK","GRAPH","subgraph","end","LINK_TARGET","NODIR","DIR","direction_tb","direction_bt","direction_rl","direction_lr","direction_td","LINK_ID","NUM","BRKT","STYLE_SEPARATOR","COLON","AMP","SEMI","COMMA","MULT","LINK","START_LINK","EDGE_TEXT","-)","TEXT","(-","STADIUMEND","STADIUMSTART","SUBROUTINEEND","SUBROUTINESTART","VERTEX_WITH_PROPS_START","TAGEND","CYLINDEREND","CYLINDERSTART","DOUBLECIRCLEEND","DOUBLECIRCLESTART","TRAPEND","INVTRAPEND","TRAPSTART","INVTRAPSTART","TAGSTART","UP","SEP","DOWN","NODE_STRING","MINUS","UNICODE_TEXT","PIPE","PE","PS","SQE","SQS","DIAMOND_STOP","DIAMOND_START","NEWLINE","SPACE","EOF"],Uy=new Uint8Array(128);for(let e of"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"#$%&'*+.`?\\_/")Uy[e.charCodeAt(0)]=1;fT=/accTitle\s*:\s*/y,uT=/accDescr\s*:\s*/y,pT=/accDescr\s*\{\s*/y,gT=/call\s+/y,mT=/click\s+/y,yT=/(?:\r?\n)*\s*\n/y,xT=/\s*(?:LR|RL|TB|BT|TD|BR)\b/y,bT=/\s*[<>^]/y,wT=/\s*v\b/y,$T=[/.*direction\s+TB[^\n]*/y,/.*direction\s+BT[^\n]*/y,/.*direction\s+RL[^\n]*/y,/.*direction\s+LR[^\n]*/y,/.*direction\s+TD[^\n]*/y],zu=/[\n\r\u2028\u2029]/g,By=/\s*[xo<]?--+[-xo>]\s*/y,kT=/\s*[xo<]?--\s*/y,Wy=/\s*[xo<]?==+[=xo>]\s*/y,MT=/\s*[xo<]?==\s*/y,Fu=/\s*[xo<]?-?\.+-[xo>]?\s*/y,vT=/\s*[xo<]?-\.\s*/y,Yy=/\s*~~~+\s*/y,AT=/(?:\r?\n)+/y,ET=/[^\S\n\r]+/y,ST=/\(\s*\)/y,TT=/\n\s*/g;sh=new Uint8Array(77);for(let e of[32,64,63,65,13,38,35,36,33,39,66])sh[e]=1;qu=new Uint8Array(77);for(let e of[32,66,64,25,63,65,38,35,36,33,39])qu[e]=1;Gu=new Uint8Array(77);for(let e of[32,64,75,65,36,66,35,39,33,12,14,16,17,19,20,25,21,22,63,61,41])Gu[e]=1;Hu=new Uint8Array(77);for(let e of[32,64,35,75,33,12])Hu[e]=1;qy="'UNICODE_TEXT', 'TEXT', 'TAGSTART'",ao=[],_T=/}\s*\n/g;NT=["TB","BT","RL","LR","TD"],Gy="'SEMI', 'NEWLINE', 'SPACE', 'EOF', 'subgraph', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'STYLE', 'LINKSTYLE', 'CLASSDEF', 'CLASS', 'CLICK', 'NODE_STRING'";DT=40,PT=16,zT=48,Hy=20,Bu=26,Wu=' fill="var(--_s)" stroke="var(--_b)"',FT=' stroke="var(--_b)"';lh={type:"flowchart",math:!0,parse(e,t,r,a,n){let i=t.flowchart??{},l=new dT({inheritDir:i.inheritDir===!0,maxEdges:n.maxEdges});return r&&(l.title=r),IT(e,l),l},render:Uu}});var jy={};Rt(jy,{flowchart:()=>lh});var Xy=Ge(()=>{xe();ju()});function WT(e){let t=e.map((n,i)=>i),r=[];for(let n=0;n<128;n++){let i=String.fromCharCode(n);r.push(t.filter(l=>{let{pattern:s,first:o}=e[l];return typeof s=="string"?s[0]===i:o===void 0||o.includes(i)}))}let a={starting:r,every:t,longer:e.map(n=>n.longer?.map(i=>e.indexOf(i)))};return Vy.set(e,a),a}function er(e,t,r){let a=[],n=[],i=[],l=new Uint8Array(t.length),{starting:s,every:o,longer:c}=Vy.get(t)??WT(t),h=[],d=e.length,f=(p,m)=>{if(l[p])return-1;let x=t[p];if(x.match!==void 0)return x.match(e,m);if(x.scanner!==void 0)return(h[p]??(h[p]=x.scanner()))(e,m);let y=x.pattern;return typeof y=="string"?e.startsWith(y,m)?m+y.length:-1:(y.lastIndex=m,y.test(e)?y.lastIndex:(x.opener!==void 0&&(x.opener.lastIndex=m,x.opener.test(e)&&(l[p]=1)),-1))},g=0;e:for(;g<d;){let p=e.charCodeAt(g);for(let m of p<128?s[p]:o){let x=f(m,g);if(x<=g)continue;let y=m,$=c[m];if($!==void 0)for(let k of $){let I=f(k,g);if(I>x){y=k,x=I;break}}t[y].hidden||(a.push(y),n.push(g),i.push(x)),g=x;continue e}throw st(r,e,g,"",!0)}return a.push(-1),n.push(d),i.push(d),{kinds:a,starts:n,ends:i,src:e}}function gr(e){return{name:e,pattern:new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(?:(?=%%)|(?!\\S))","y"),first:e[0]}}function Xu(e){return e.trim().replace(/[\t ]{2,}/gm," ")}function rr(e){return Xu(GT.exec(e)[1])}function ar(e){return Xu(qT.exec(e)[1])}function nr(e){let t=YT.exec(e);return t[1]!==void 0?Xu(t[1]):t[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,`
|
|
182
|
+
`)}function _r(e){if(!e.includes("\\"))return e.slice(1,-1);let t="";for(let r=1;r<e.length-1;r++){let a=e[r];if(a==="\\"){let n=e[++r];t+=HT.get(n)??n}else t+=a}return t}var Vy,kr,cr,hr,ia,qr,Gr,tr,ur,pr,YT,qT,GT,HT,ir,sa=Ge(()=>{xe();kt();Vy=new WeakMap;kr={name:"ACC_DESCR",pattern:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/y,first:" a"},cr={name:"ACC_TITLE",pattern:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/y,first:" a"},hr={name:"TITLE",pattern:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/y,first:" t"},ia={name:"STRING",pattern:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/y,first:`"'`},qr={name:"NEWLINE",pattern:/\r?\n/y,first:`\r
|
|
183
|
+
`},Gr={name:"WHITESPACE",pattern:/[\t ]+/y,hidden:!0,first:" "},tr={name:"YAML",pattern:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/y,hidden:!0,opener:/---[\t ]*\r?\n/y,first:"-"},ur={name:"DIRECTIVE",pattern:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/y,hidden:!0,opener:/[\t ]*%%{/y,first:" %"},pr={name:"SINGLE_LINE_COMMENT",pattern:/[\t ]*%%[^\n\r]*/y,first:" %",hidden:!0};YT=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,qT=/accTitle[\t ]*:([^\n\r]*)/,GT=/title([\t ][^\n\r]*|)/;HT=new Map([["b","\b"],["f","\f"],["n",`
|
|
184
|
+
`],["r","\r"],["t"," "],["v","\v"],["0","\0"]]);ir=class{constructor(e,t,r){le(this,"tokens");le(this,"types");le(this,"diagram");le(this,"i",0);le(this,"kinds");this.tokens=e,this.types=t,this.diagram=r,this.kinds=e.kinds}get kind(){return this.kinds[this.i]}text(e=this.i){return this.tokens.src.slice(this.tokens.starts[e],this.tokens.ends[e])}take(){return this.text(this.i++)}accept(e){return this.kinds[this.i]!==e?!1:(this.i++,!0)}expect(e){return this.kinds[this.i]!==e&&this.fail(`token of type '${this.types[e].name}'`),this.take()}fail(e){let t=this.kind===-1?"end of input":`\`${this.text()}\``;throw st(this.diagram,this.tokens.src,this.tokens.starts[this.i],`Expecting ${e} but found ${t}.`)}}});function UT(e,t){let r=new Map;for(let{label:a,value:n}of e.sections){if(n<0)throw new Ke(`"${a}" has invalid value: ${n}. Negative values are not allowed in pie charts. All slice values must be >= 0.`,"semantic",{type:"pie"});r.has(a)||r.set(a,n)}return{type:"pie",title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,""):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
185
|
+
`):void 0,showData:e.showData,sections:r}}function Ky(e,t){let r=t;for(let a=e.charCodeAt(r);a>=48&&a<=57;a=e.charCodeAt(r))r++;return r}function jT(){let e=0,t=0,r=-1;return(a,n)=>{let i=a.charCodeAt(n)===45?n+1:n;if((i<e||i>=t)&&(e=i,t=Ky(a,i),r=-1,t>i&&a.charCodeAt(t)===46)){let l=Ky(a,t+1),s=l-t-1;s>0&&a.charCodeAt(l)!==46?r=l:s>1&&(r=l-1)}return t===i?-1:r>=0?r:a.charCodeAt(i)===48?a.charCodeAt(i+1)===46?-1:i+1:a.charCodeAt(t)!==46?t:t-1>i?t-1:-1}}function XT(e){let t=new ir(er(e,Zy,"pie"),Zy,"pie"),r={$type:"Pie",showData:!1,sections:[]},a=()=>{if(t.kind!==-1)for(t.kind!==8&&t.fail("a line break or the end of input");t.kind===8;)t.i++};for(;t.kind===8;)t.i++;for(t.expect(1),r.showData=t.accept(0);t.kind!==-1;)switch(t.kind){case 8:t.i++;break;case 4:r.accDescr=nr(t.take()),a();break;case 5:r.accTitle=ar(t.take()),a();break;case 6:r.title=rr(t.take()),a();break;case 7:{let n=_r(t.take());t.expect(2);let i=Number(t.expect(3));r.sections.push({$type:"PieSection",label:n,value:i}),a();break}default:t.fail("a section, a title, or a line break")}return r}function Zu(e,t){return e.pie?.[t]}function Ps(e,t){return`${u(Math.sin(e)*t)},${u(-Math.cos(e)*t)}`}function KT(e,t,r,a){if(t-e>=Math.PI*2-1e-9){let i=(l,s)=>`M0,${u(-l)}A${u(l)},${u(l)} 0 1 ${s} 0,${u(l)}A${u(l)},${u(l)} 0 1 ${s} 0,${u(-l)}Z`;return i(r,1)+(a>0?i(a,0):"")}let n=t-e>Math.PI?1:0;return a<=0?`M0,0L${Ps(e,r)}A${u(r)},${u(r)} 0 ${n} 1 ${Ps(t,r)}Z`:`M${Ps(e,r)}A${u(r)},${u(r)} 0 ${n} 1 ${Ps(t,r)}L${Ps(t,a)}A${u(a)},${u(a)} 0 ${n} 0 ${Ps(e,a)}Z`}function ZT(e,t,r){return Jn(r,VT*2,140,(a,n)=>QT(e,t,r,a/2,n))}function QT(e,t,r,a,n){let i=r.fontSize??16,l=Math.round(i*.875),s=r.measurer??rt(r.fontFamily),o=r.padding??8,c=Zu(t,"textPosition"),h=typeof c=="number"&&c>=0&&c<=1?c:.75,d=Zu(t,"donutHole"),f=typeof d=="number"&&d>0&&d<=.9?d*a:0,g=String(Zu(t,"legendPosition")??"right"),p=n&&(g==="left"||g==="right")?"bottom":g,m=[...e.sections],x=0;for(let[,U]of m)x+=U;let y=m.map(([U,j])=>Be(e.showData?`${U} [${j}]`:U,!1,s,l,4e3)),$=0;for(let U of y)$=Math.max($,U.width);$+=y.length>0?io+8:0;let k=y.length*Vu,I=Be(e.title,!1,s,i,Pt(r),1),_=I.height>0?I.height+16:0,L=m.map(([,U])=>{let j=x>0?U/x:0;return j*100>=1&&(j*100).toFixed(0)!=="0"?j:0}),R=L.map(U=>U===0||U>=.5?!1:2*a*h*Math.sin(U*Math.PI)<s.width((U*100).toFixed(0)+"%",l,0)+6),W=R.includes(!0)?Qy:0,q=p==="left"||p==="right"||p==="center"?p:"",C=p==="top"||p==="bottom",K=(a+W)*2,Q=K,G=K;q==="left"||q==="right"?(Q+=$>0?Ku+$:0,G=Math.max(G,k)):C&&(Q=Math.max(Q,$),G+=k>0?20+k:0),Q=Math.max(Q,I.width);let Y=o+(q==="left"?$+Ku+K/2:q==="right"?K/2:Q/2),N=o+_,S=N+(p==="top"?k+20+K/2:C?K/2:G/2),M="",b="",E="",w=0,T=a+Qy/2,A=[],v=(U,j,J)=>A.every(Z=>Math.abs(U-Z.x)>=(J+Z.width)/2+2||Math.abs(j-Z.y)>=l+2);m.forEach(([U],j)=>{let J=L[j];if(J===0)return;let Z=w+J*Math.PI*2;M+=`<path class="pele-slice" data-id="${Pe(U)}" d="${KT(w,Z,a,f)}" fill="${pt(j)}"/>`;let B=(w+Z)/2,X=(J*100).toFixed(0)+"%";if(R[j]){let te=s.width(X,l,0),se=B;for(let ie=0;ie<360&&!v(Math.sin(se)*T,-Math.cos(se)*T,te);ie++)se+=2/T;let ce=Math.sin(se)*T,ae=-Math.cos(se)*T;A.push({x:ce,y:ae,width:te}),E+=`<text x="${u(ce)}" y="${u(ae+l*.35)}">${X}</text>`}else{let te=a*h;b+=`<text x="${u(Math.sin(B)*te)}" y="${u(-Math.cos(B)*te+l*.35)}">${X}</text>`}w=Z}),M===""&&(M=`<circle class="pele-slice" r="${a}" fill="none" stroke="var(--_b)"/>`);let D="",z,H;q==="right"?(z=Y+K/2+Ku,H=N+(G-k)/2):q==="left"?(z=o,H=N+(G-k)/2):q==="center"?(z=Y-$/2,H=S-k/2):(z=o+(Q-$)/2,H=p==="top"?N:N+K+20),y.forEach((U,j)=>{let J=H+j*Vu+Vu/2;D+=`<g class="pele-legend-item" data-id="${Pe(m[j][0])}"><rect x="${u(z)}" y="${u(J-io/2)}" width="${io}" height="${io}" rx="2" fill="${pt(j)}"/>`+Re(U,z+io+8+U.width/2,J,"")+"</g>"});let P=Math.ceil(Q+2*o),O=Math.ceil(G+_+2*o),F=Re(I,P/2,o+I.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g class="pele-slices" transform="translate(${u(Y)},${u(S)})" stroke="var(--_bg)" stroke-width="1" stroke-linejoin="round">${M}</g>`+(b?`<g class="pele-slice-labels" transform="translate(${u(Y)},${u(S)})" font-size="${l}" text-anchor="middle" fill="var(--_bg)">${b}</g>`:"")+(E?`<g class="pele-slice-labels" transform="translate(${u(Y)},${u(S)})" font-size="${l}" text-anchor="middle">${E}</g>`:"")+(D?`<g class="pele-legend" font-size="${l}">${D}</g>`:"");return{svg:tt("pie",P,O,i,r,e,F),width:P,height:O,links:[]}}var Zy,VT,io,Vu,Ku,Qy,Jy,e2=Ge(()=>{xe();Gt();sa();yt();kt();Zy=[gr("showData"),gr("pie"),{name:":",pattern:":"},{name:"NUMBER_PIE",pattern:/(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/y,scanner:jT,first:"-0123456789"},kr,cr,hr,ia,qr,Gr,tr,ur,pr];VT=120,io=12,Vu=26,Ku=32,Qy=28;Jy={type:"pie",parse:(e,t,r)=>UT(XT(e),r),render:ZT}});var t2={};Rt(t2,{pie:()=>Jy});var r2=Ge(()=>{xe();e2()});function Qu(e){let t=0;for(let r=e.indexOf("~");r!==-1;r=e.indexOf("~",r+1))t++;return t}function JT(e){let t=Qu(e);if(t<=1)return e;let r=t%2!==0&&e.startsWith("~"),a=e.split(""),n=[];for(let i=r?1:0;i<a.length;i++)a[i]==="~"&&n.push(i);for(let i=0,l=n.length-1;i<l;i++,l--)a[n[i]]="<",a[n[l]]=">";return a.join("")}function Di(e){if(!e.includes("~"))return e;let t=e.split(/(,)/),r=[];for(let a=0;a<t.length;a++){let n=t[a];n===","&&a>0&&a+1<t.length&&Qu(t[a-1])===1&&Qu(t[a+1])===1&&(n=t[a-1]+","+t[a+1],a++,r.pop()),r.push(JT(n))}return r.join("")}var Ju=Ge(()=>{xe()});function eC(e){return e==="markdown"||e==="string"||e==="text"?e:"markdown"}function n2(e,t){return e<128?(ja[e]&t)!==0:e>=192||e===181}function sC(e){let t=e.length,r=[],a=[],n=[],i=0,l=0,s=-2,o=0,c=-1,h=-2,d=-1,f=-1,g=-1,p=(G,Y,N)=>{r.push(G),a.push(e.slice(Y,N)),n.push(Y),l=N},m=(G,Y)=>(G.lastIndex=Y,G.test(e)?G.lastIndex:-1),x=G=>{for(let Y=0;Y<G.length;Y++){let N=G.charCodeAt(Y),S=e.charCodeAt(l+Y);if(S!==N&&(N<97||N>122||(S|32)!==N))return!1}return!0},y=G=>x(G)&&!et(e.charCodeAt(l+G.length)),$=G=>{let Y=e.charCodeAt(G);return Y>=65&&Y<=90?Y+32:Y},k=G=>(tp.lastIndex=G,tp.test(e)?tp.lastIndex-1:t),I=G=>{for(;mt(e.charCodeAt(G));)G++;return G},_=()=>{if(s===-1||s<l&&(ep.lastIndex=l,s=ep.test(e)?ep.lastIndex-9:-1,s===-1)||l<o||(c<l&&(c=k(l)),s>=c))return!1;for(let G=0;G<4;G++){let Y=m(iC[G],l);if(Y>=0)return p(18+G,l,Y),!0}return o=c,!1},L=()=>{let G=e.indexOf('"',l+1);if(G===-1){p(45,l,l+1);return}let Y=G>l+1;for(let N=l+1;Y&&N<G;N++){let S=e.charCodeAt(N);(S===37||S===92||S===13||S===10||S===11||S===8)&&(Y=!1)}p(Y?31:44,l,G+1)},R=G=>{let Y=e.charCodeAt(l+1);if(Y===43&&(G===49||G===48)){p(G===49?39:38,l,l+2);return}let N=I(l+1);if(e.charCodeAt(N)===46&&mt(e.charCodeAt(N+1))){p(32,l,I(N+2));return}if(G===49){if(je(Y)){let S=l+2;for(;je(e.charCodeAt(S));)S++;let M=e.charCodeAt(S);if(et(M)||M===34||M===39){p(40,l,l+1);return}}else if(Y===45||Y===46){let S=e.charCodeAt(l+2);if(S===45||S===46){p(40,l,l+1);return}}if(!et(Y)){p(33,l,l+1);return}}p(29,l,N)},W=G=>{let Y=e.charCodeAt(l+1);switch(G){case 101:if(y("erdiagram"))p(2,l,l+9);else if(y("end")){let N=l+3;for(;je(e.charCodeAt(N));)N++;p(16,l,N)}else return!1;return!0;case 115:if(y("style"))i=6,p(27,l,l+5);else if(y("subgraph"))p(17,l,l+8);else return!1;return!0;case 99:if(y("classdef"))i=6,p(22,l,l+8);else if(y("class"))p(26,l,l+5);else return!1;return!0;case 111:if(y("one or zero"))p(37,l,l+11);else if(y("one or more")||y("one or many"))p(39,l,l+11);else if(y("one"))p(40,l,l+3);else if(y("only one"))p(40,l,l+8);else if(Y===124)p(37,l,l+2);else if(Y===123)p(38,l,l+2);else if(y("optionally to"))p(42,l,l+13);else return!1;return!0;case 122:if(y("zero or one"))p(37,l,l+11);else if(y("zero or more")||y("zero or many"))p(38,l,l+12);else return!1;return!0;case 109:if(x("many(0)"))p(38,l,l+7);else if(x("many(1)"))p(39,l,l+7);else if(y("many"))p(38,l,l+4);else return!1;return!0;case 116:return y("to")?(p(43,l,l+2),!0):!1;case 117:return Y!==46&&Y!==45&&Y!==124?!1:(p(41,l,l+1),!0);case 124:if($(l+1)===111&&!et(e.charCodeAt(l+2)))p(37,l,l+2);else if(Y===124)p(40,l,l+2);else if(Y===123)p(39,l,l+2);else return!1;return!0;case 125:if($(l+1)===111&&!et(e.charCodeAt(l+2)))p(38,l,l+2);else if(Y===124)p(39,l,l+2);else return!1;return!0;case 46:return Y!==46&&Y!==45?!1:(p(42,l,l+2),!0);case 45:if(Y===45)p(43,l,l+2);else if(Y===46)p(42,l,l+2);else return!1;return!0}return!1},q=G=>{let Y;if((G===97||G===65)&&x("acc")){if((Y=m(rC,l))>=0){i=3,p(11,l,Y);return}if((Y=m(aC,l))>=0){i=4,p(13,l,Y);return}if((Y=m(nC,l))>=0){i=5,l=Y;return}}if(!_()){switch(G){case 32:case 9:case 13:Y=l+1;for(let N=e.charCodeAt(Y);N===32||N===9||N===13;N=e.charCodeAt(Y))Y++;l=Y;return;case 10:for(Y=l+1;e.charCodeAt(Y)===10;)Y++;p(4,l,Y);return;case 34:L();return;case 123:i=1,p(7,l,l+1);return;case 35:p(30,l,l+1);return;case 44:p(25,l,l+1);return;case 58:e.charCodeAt(l+1)===58&&e.charCodeAt(l+2)===58?p(6,l,l+3):p(5,l,l+1);return;case 91:p(9,l,l+1);return;case 93:p(10,l,l+1);return}if(mt(G)){R(G);return}if(!W(G>=65&&G<=90?G+32:G)){if(G>=128||ja[G]&oo){Y=l+1;for(let N=e.charCodeAt(Y);N>=128||ja[N]&oo;N=e.charCodeAt(Y))Y++;p(23,l,Y);return}p(45,l,l+1)}}},C=()=>{if(h===-1||h<l&&(h=e.indexOf("~",l),h===-1))return!1;if(g<l){let Y=l;for(;Y<t&&!je(e.charCodeAt(Y));)Y++;g=Y}if(h>=g||(d<l&&(d=k(l),f=e.lastIndexOf("~",d-1)),f<=h))return!1;let G=f+1;for(;G<t&&!je(e.charCodeAt(G));)G++;return p(34,l,G),!0},K=G=>{if(je(G)){for(l++;je(e.charCodeAt(l));)l++;return}let Y=G|32;if((Y===112||Y===102||Y===117)&&(e.charCodeAt(l+1)|32)===107&&!et(e.charCodeAt(l+2))){p(35,l,l+2);return}if(!C()){if(n2(G,op)){let N=l+1;for(;N<t&&n2(e.charCodeAt(N),co);)N++;p(34,l,N);return}if(G===96){i=2,l++;return}if(G===34){let N=e.indexOf('"',l+1);if(N!==-1){p(36,l,N+1);return}}else if(G===125){i=0,p(8,l,l+1);return}p(45,l,l+1)}};for(;l<t;){let G=e.charCodeAt(l),Y;switch(i){case 0:q(G);break;case 1:K(G);break;case 2:G===96?(i=1,l++):(Y=e.indexOf("`",l),p(34,l,Y===-1?t:Y));break;case 3:case 4:Y=e.indexOf(`
|
|
186
|
+
`,l),p(i===3?12:14,l,Y===-1?t:Y),i=0;break;case 5:G===125?(i=0,l++):(Y=e.indexOf("}",l),p(15,l,Y===-1?t:Y));break;case 6:if(G===10){for(Y=l+1;e.charCodeAt(Y)===10;)Y++;i=0,p(4,l,Y)}else if(je(G))for(l++;je(e.charCodeAt(l));)l++;else if(G===58)p(5,l,l+1);else if(G===44)p(25,l,l+1);else if(G===35)p(30,l,l+1);else if(G===59)p(28,l,l+1);else if(G>=128||ja[G]&hh){Y=l+1;for(let N=e.charCodeAt(Y);N>=128||ja[N]&hh;N=e.charCodeAt(Y))Y++;p(24,l,Y)}else return r.push(1),a.push(""),n.push(l),{types:r,texts:a,starts:n};break}}let Q=i===0?3:i===3?12:i===4?14:i===5?15:-1;return Q!==-1&&(r.push(Q),a.push(""),n.push(t)),r.push(0),a.push(""),n.push(t),{types:r,texts:a,starts:n}}function cC(e,t){let{types:r,texts:a,starts:n}=sC(e),i=0,l=R=>{let W=r[i];throw W===1?st("er",e,n[i],"",!0):st("er",e,n[i],`Expecting ${R}, got '${W===45?a[i]:a2[W]}'`)},s=R=>(r[i]!==R&&l(`'${a2[R]}'`),a[i++]),o=()=>{let R=r[i];R!==4&&R!==28&&R!==3&&l("'EOF', 'NEWLINE', 'SEMI'"),i++},c=R=>R===23||R===31||R===29||R===32||R===33,h=()=>{let R=r[i];c(R)||l(g2);let W=a[i++];return R===31?W.slice(1,-1):W},d=()=>{let R=[];for(;;){let W=r[i];if(W!==23&&W!==24&&l("'UNICODE_TEXT', 'STYLE_TEXT'"),R.push(a[i++]),r[i]!==25)return R;i++}},f=R=>R===24||R===29||R===5||R===30,g=()=>{let R=[];for(;;){f(r[i])||l("'STYLE_TEXT', 'COLON', 'NUM', 'BRKT'");let W=a[i++];for(;f(r[i]);)W+=a[i++];if(R.push(W),r[i]!==25)return R;i++}},p=()=>{let R=rp.get(r[i++]),W=r[i];W!==43&&W!==42&&l("'NON_IDENTIFYING', 'IDENTIFYING'");let q=W===43?"IDENTIFYING":"NON_IDENTIFYING";i++;let C=rp.get(r[i]);return C===void 0?l(oC):(i++,{cardA:C,relType:q,cardB:R})},m=()=>{let R=r[i];R!==44&&R!==31&&R!==23&&l("'UNICODE_TEXT', 'ENTITY_NAME', 'WORD'");let W=a[i++];return R===23?W:W.slice(1,-1)},x=R=>r[i]===45&&a[i]===R,y=()=>{let R=[];do{let W=s(34);x("?")&&(W+=a[i++]),r[i]!==34&&l(W.endsWith("?")?"'ATTRIBUTE_WORD'":"'ATTRIBUTE_WORD', '?'");let q={type:W,name:a[i++]};if(r[i]===35){let C=[a[i++]];for(;x(",");)i++,C.push(s(35));q.keys=C}r[i]===36&&(q.comment=a[i++].slice(1,-1)),R.push(q)}while(r[i]!==8);return R.reverse()},$=()=>{if(r[i]!==7)return;if(i++,r[i]===8){i++;return}let R=y();return i++,R},k=()=>{let R=h(),W=r[i];if(W===9){i++;let K=h();s(10);let Q;r[i]===6&&(i++,Q=d());let G=$();return t.addEntity(R,K),G&&t.addAttributes(R,G),Q&&t.setClass([R],Q),[R]}let q;if(W===6&&(i++,q=d(),W=r[i]),rp.has(W)){let K=p(),Q=h(),G;r[i]===6&&(i++,G=d()),s(5);let Y=m();return t.addEntity(R),t.addEntity(Q),t.addRelationship(R,Y,Q,K),q&&t.setClass([R],q),G&&t.setClass([Q],G),[R,Q]}let C=$();return t.addEntity(R),C&&t.addAttributes(R,C),q&&t.setClass([R],q),[R]};s(2);let I=[{id:"",title:"",list:[]}],_=I[0],L=!1;for(;;){let R=r[i];switch(R){case 4:i++;break;case 3:i++,L&&l(`'END', ${oh}`);return;case 16:{L||l(oh),i++;let W=t.addSubGraph({text:_.id},_.list,{text:_.title});I.pop(),_=I[I.length-1],L=I.length>1,L&&_.list.push(W);break}case 17:{i++;let W=h(),q=W;if(r[i]===9){for(i++,q=h();c(r[i]);)q+=" "+h();s(10)}o(),_={id:W,title:q,list:[]},I.push(_),L=!0;break}case 11:{i++;let W=s(12).trim();t.setAccTitle(W),L&&_.list.push(W);break}case 13:{i++;let W=s(14).trim();t.setAccDescription(W),L&&_.list.push(W);break}case 15:{let W=a[i++].trim();t.setAccDescription(W),L&&_.list.push(W);break}case 18:case 19:case 20:case 21:{i++;let W=lC[R-18];L?_.list.push({stmt:"dir",value:W}):t.setDirection(W);break}case 22:{let W=a[i++],q=d(),C=g();o(),t.addClass(q,C),L&&_.list.push(W);break}case 26:{let W=a[i++],q=d();t.setClass(q,d()),L&&_.list.push(W);break}case 27:{let W=a[i++],q=d(),C=g();o(),t.addCssStyles(q,C),L&&_.list.push(W);break}default:{c(R)||l(L?`'END', ${oh}`:oh);let W=k();if(L)for(let q of W)_.list.push(q)}}}}function dC(e){let t=[],r=[],a=e.subgraphs,n=o=>{let c=[];for(let h of o){let d=e.classes.get(h);if(d!==void 0){for(let f of d.styles)c.push(f.trim());for(let f of d.textStyles)c.push(f.trim())}}return c},i=new Map,l=new Set;for(let o=a.length-1;o>=0;o--){let c=a[o];l.add(c.id);for(let h of c.nodes)i.set(h,c.id)}for(let o=a.length-1;o>=0;o--){let c=a[o];t.push({id:c.id,label:c.title,alias:"",attributes:hC,isGroup:!0,parentId:i.get(c.id),cssStyles:c.cssStyles,cssCompiledStyles:n(c.classes),cssClasses:c.classes.join(" "),dir:c.dir,labelType:c.labelType})}let s=new Map;for(let[o,c]of e.entities){if(l.has(o)){s.set(c.id,o);continue}t.push({id:c.id,label:c.label,alias:c.alias,attributes:c.attributes,isGroup:!1,parentId:i.get(o),cssStyles:c.cssStyles,cssCompiledStyles:n(c.cssClasses.split(" ")),cssClasses:c.cssClasses,dir:void 0,labelType:"markdown"})}return e.relationships.forEach((o,c)=>{r.push({id:`id_${o.entityA}_${o.entityB}_${c}`,start:s.get(o.entityA)??o.entityA,end:s.get(o.entityB)??o.entityB,label:o.roleA,arrowTypeStart:o.relSpec.cardB.toLowerCase(),arrowTypeEnd:o.relSpec.cardA.toLowerCase(),pattern:o.relSpec.relType==="IDENTIFYING"?"solid":"dashed"})}),{nodes:t,edges:r}}function zs(e,t,r,a,n){let i=(h,d)=>u(t-a*h-n*d)+","+u(r-n*h+a*d),l=h=>`M${i(h,-i2)}L${i(h,i2)}`,s=`M${i(0,-s2)}L${i(ap,0)}L${i(0,s2)}`,o=h=>`<circle class="pele-marker" cx="${u(t-a*h)}" cy="${u(r-n*h)}" r="${l2}" fill="var(--_bg)"/>`,c=h=>`<path class="pele-marker" d="${h}"/>`;switch(e){case"only_one":return c(l(6)+l(10));case"zero_or_one":return c(l(6))+o(13.5);case"one_or_more":return c(s+l(ap+3.5));case"zero_or_more":return c(s)+o(ap+l2+.5);case"md_parent":return`<path class="pele-marker" d="M${i(0,0)}L${i(6,4)}L${i(12,0)}L${i(6,-4)}Z" fill="var(--_bg)"/>`}return""}function f2(e,t,r){let a=e.er?.[t];return typeof a=="number"&&a>0?Math.min(a,2e3):r}function ch(e,t,r,a,n){let i=e.lines;if(i.length===0)return"";let l=i.length===1&&i[0].length===1?i[0][0]:void 0;if(l&&l.icon===void 0&&l.math===void 0&&l.style===0)return`<text${a} x="${u(t)}" y="${u(r)}">${Qe(l.text)}</text>`;let s=Tn(e),o=e.size*.35,c=r-o-e.lineHeight/2,h="",d="";for(let f=0;f<i.length;f++){let g=i[f],p=c+ln(e,f);if(_s(g)){d+=Re(on(e,f),t+e.widths[f]/2,p,a,n);continue}r=p+o;let m=!1;for(let $ of g)$.icon!==void 0&&(m=!0);let x=t,y=!1;for(let $ of g){if($.icon!==void 0){let k=e.size*1.1;d+=`<svg class="pele-icon" data-icon="${Pe($.icon)}" x="${u(x)}" y="${u(r-e.size*.35-k/2)}" width="${u(k)}" height="${u(k)}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${n?.($.icon)??""}</svg>`}else if($.text!==""){let k=m||!y?` x="${u(x)}" y="${u(r)}"`:"";h+=`<tspan${k}${sn($.style&~s)}>${Qe($.text)}</tspan>`,y=!0}x+=$.width}}return`<text${Wa(a,s)} xml:space="preserve">${h}</text>${d}`}function lp(e){let t=Di(e);return t===e?e:t.replace(/</g,"<").replace(/>/g,">")}function kC(e,t,r){return na(e.direction)?jt(r,a=>u2(e,t,r,a)):u2(e,t,r,!1)}function u2(e,t,r,a){let n=dC(e),i=r.fontSize??16,l=Math.round(i*.875),s=r.measurer??rt(r.fontFamily),o=r.padding??8,c=r.icons,h=new Map,d=[],f=[];n.nodes.forEach((E,w)=>h.set(E.id,w));let g=[],p=[],m=[],x=new Map,y=[];for(let E of n.edges){let w=h.get(E.start),T=h.get(E.end);if(w===void 0||T===void 0)continue;let A=Be(E.label,!0,s,l,200),v;if(w===T){v={label:A,band:0,at:0};let D=x.get(w);D?D.push(v):x.set(w,[v])}y.push(v),m.push(E),p.push(A),g.push({src:w,dst:T,minlen:1,labelW:A.width>0?A.width+12:0,labelH:A.height>0?A.height+4:0,route:[],labelX:0,labelY:0})}let $=E=>{let w=E;for(let T=0;T<n.nodes.length;T++){let A=n.nodes[w].parentId,v=A===void 0?void 0:h.get(A);if(v===void 0)break;let D=n.nodes[v].dir;if(D)return D==="LR"||D==="RL";w=v}return e.direction==="LR"||e.direction==="RL"};for(let E=0;E<n.nodes.length;E++){let w=n.nodes[E],T=Ct(w.cssStyles.length>0?w.cssCompiledStyles.concat(w.cssStyles):w.cssCompiledStyles),A=(T.bold?1:0)|(T.italic?2:0),v=T.fontSize??i,D=T.fontSize??l,z=T.fontSize??Math.round(i*.75),H=w.isGroup?Be(w.label,!0,s,v,4e3,A):Be(w.alias||w.label,!0,s,v,240,A),P=x.get(E)??bC,O=P.length>0&&!w.isGroup&&$(E),F={node:w,style:T,label:H,w:0,h:0,headH:0,rows:[],cols:[],rowSize:D,keySize:z,below:O},U=0,j=0;for(let B of P)B.band=Math.max(gC,O?B.label.width+12:B.label.height+6),j+=B.band,U=Math.max(U,O?B.label.height:B.label.width);let J=Math.max(o2,O?j+8:0),Z;if(w.isGroup)Z=Kt(0,0),Z.isGroup=!0,Z.dir=w.dir?Cr(w.dir):void 0,Z.padX=so,Z.padTop=F.label.height>0?F.label.height+16:so,Z.padBottom=so,Z.minW=Math.max(F.label.width+2*so-12,o2);else{let B=Math.max(H.height,Math.round(v*1.5));if(w.attributes.length===0)F.w=Math.max(H.width+2*c2,J),F.h=Math.max(B+2*mC,O?0:j+8);else{let te=Math.round(D*1.5),se=[0,0,0,0];for(let re of w.attributes){let fe=[Be(lp(re.type),!0,s,D,sp,A),Be(lp(re.name),!0,s,D,sp,A),Be(re.keys.join(", "),!1,s,z,sp,A),Be(lp(re.comment),!0,s,D,xC,A)],ye=te;for(let oe=0;oe<4;oe++)fe[oe].width>se[oe]&&(se[oe]=fe[oe].width),fe[oe].height>ye&&(ye=fe[oe].height);F.rows.push({cells:fe,h:ye+ip}),F.h+=ye+ip}let ce=0,ae=0;for(let re of se)re!==0&&(ae+=re+(ce>0?h2:0),ce++);F.w=Math.max(ae+2*np,H.width+2*c2,J);let ie=ce>0?(F.w-ae-2*np)/ce:0,ee=np;for(let re of se)F.cols.push(ee),re>0&&(ee+=re+ie+h2);F.headH=B+2*yC,F.h+=F.headH}let X=P.length>0?2*(Ln+lo*.75+10+U):0;Z=O?Kt(F.w,F.h+X):Kt(F.w+X,F.h)}Z.seq=d.length,d.push(F),f.push(Z)}n.nodes.forEach((E,w)=>{f[w].parent=E.parentId!==void 0?h.get(E.parentId)??-1:-1});let k=aa(f,g,a?"TB":Cr(e.direction),{nodeSep:f2(t,"nodeSpacing",fC),edgeSep:uC,rankSep:f2(t,"rankSpacing",pC),portSep:24});vC(g,f,d);let I=k.width;for(let[E,w]of x){let T=f[E];if(!T.isGroup)continue;let A=0;for(let v of w)A=Math.max(A,v.label.width);I=Math.max(I,T.x+T.w/2+Ln+lo*.75+10+A)}let _=zr(e.title,s,i,4e3),L=_.height>0?_.height+12:0,R=Math.max(I,_.width),W=o+(R-I)/2,q=o+L;Vn(f,g,W,q);let C=Math.ceil(R+2*o),K=Math.ceil(k.height+L+2*o),Q=[],G=new Map,Y=!1;for(let E of f)E.isGroup&&(Y=!0);if(Y)for(let E of g)Ya(G,E.route);let N="",S="";for(let E=0;E<d.length;E++){let w=d[E],T=f[E],A=w.node,v=Dt(A.cssClasses.replace(/^default\s?/,""));if(T.isGroup){w.w=T.w,w.h=T.h;let Z=T.x-T.w/2,B=T.y-T.h/2,X=Xn(T,w.label.width,G,so);N+=`<g class="pele-cluster${v}" data-id="${Pe(A.id)}"><rect x="${u(Z)}" y="${u(B)}" width="${u(T.w)}" height="${u(T.h)}" fill="var(--_a)" fill-opacity="0.5" stroke="var(--_b)"${gt(w.style.shape)}/>`+Re(w.label,X,B+8+w.label.height/2,` class="pele-cluster-label" fill="var(--_m)"${w.style.text}`,c)+"</g>";continue}let D=w.w,z=w.h,H=-D/2,P=-z/2,O=w.style.text,F=`x="${u(H)}" y="${u(P)}" width="${u(D)}" height="${u(z)}"`,U=Re(w.label,0,w.rows.length>0?P+w.headH/2:0,` class="pele-label"${O}`,c),j=Tt(A.alias||A.label);if(/ internal-link(?: |$)/.test(v+" ")&&U!==""&&r.links!==!1){let Z=Cn(Ga(j),r)!==void 0,B=Qe(j);U=`<a class="internal-link"${Z?` href="${B}"${_n(r)}`:""} data-href="${B}">${U}</a>`,Q.push({id:A.label,href:j,internal:!0})}let J;if(w.rows.length===0)J=`<rect ${F}${gt(d2+w.style.shape)}/>`+U;else{let Z=Math.round(w.rowSize*1.5),B=w.style.stroke?Qe(w.style.stroke):"var(--_b)",X="",te="",se=P+w.headH;for(let ae=0;ae<w.rows.length;ae++){let ie=w.rows[ae];if(ae%2===0){let we=`x="${u(H)}" width="${u(D)}"`;ae===w.rows.length-1?X+=`<rect ${we} y="${u(se)}" height="${u(ie.h)}"${ot}/><rect ${we} y="${u(se)}" height="${u(ie.h/2)}"/>`:X+=`<rect ${we} y="${u(se)}" height="${u(ie.h)}"/>`}let ee=se+ip/2+Z/2+w.rowSize*.35,[re,fe,ye,oe]=ie.cells;te+=ch(re,H+w.cols[0],ee,` class="pele-er-type" fill="var(--_m)"${O}`,c)+ch(fe,H+w.cols[1],ee,` class="pele-er-name"${O}`,c)+ch(ye,H+w.cols[2],ee,` class="pele-er-keys" font-size="${w.keySize}" fill="var(--_m)"${O}`,c)+ch(oe,H+w.cols[3],ee,` class="pele-er-comment" fill="var(--_m)"${O}`,c),se+=ie.h}let ce=u(P+w.headH);J=`<rect ${F}${gt(d2+w.style.shape)}/><g class="pele-er-stripes" fill="var(--_bg)"${w.style.shape.includes("fill:")?' opacity="0.6"':""}>${X}</g><path class="pele-er-divider" d="M${u(H)},${ce}H${u(H+D)}" stroke="${B}"/><rect ${F} fill="none" stroke="var(--_b)"${gt(w.style.line)}/>`+U+`<g class="pele-er-attributes" font-size="${w.rowSize}">${te}</g>`}S+=`<g class="pele-node pele-entity${v}" data-id="${Pe(A.label)}" transform="translate(${u(T.x)},${u(T.y)})">${J}</g>`}for(let[E,w]of x){let T=d[E],A=0;for(let z of w)A+=z.band;let v=Math.min(1,Math.max((T.below?T.w:T.h)-8,0)/A),D=-A*v/2;for(let z of w)z.band*=v,z.at=D+z.band/2,D+=z.band}let M="",b="";for(let E=0;E<g.length;E++){let w=g[E],T=m[E],A=p[E],v,D,z,H=y[E];if(H){let O=f[w.src],F=d[w.src],U=Math.max(Math.min(H.band/2-6,13),1),j=Ln+lo*.75+6;if(F.below){let J=O.x+H.at,Z=O.y+F.h/2,B=u(Z+Ln),X=u(Z+Ln+lo);v=`M${u(J-U)},${u(Z)}V${B}C${u(J-U)},${X} ${u(J+U)},${X} ${u(J+U)},${B}V${u(Z)}`,D=zs(T.arrowTypeStart,J-U,Z,0,-1),z=zs(T.arrowTypeEnd,J+U,Z,0,-1),w.labelX=J,w.labelY=Z+j+A.height/2}else{let J=O.x+F.w/2,Z=O.y+H.at,B=u(J+Ln),X=u(J+Ln+lo);v=`M${u(J)},${u(Z-U)}H${B}C${X},${u(Z-U)} ${X},${u(Z+U)} ${B},${u(Z+U)}H${u(J)}`,D=zs(T.arrowTypeStart,J,Z-U,-1,0),z=zs(T.arrowTypeEnd,J,Z+U,-1,0),w.labelX=J+j+A.width/2,w.labelY=Z}}else{let O=MC(w.route);if(O.length<6)continue;p2(O,0,d[w.src],f[w.src]),p2(O,O.length-3,d[w.dst],f[w.dst]);let F=Math.abs(O[O.length-3]-O[0]),U=Math.abs(O[O.length-2]-O[1]),j=O.length===6&&(F<.01||U<.01||Math.hypot(F,U)<=3*Ln)?0:Ln,J=Xr(O,void 0,j,j);v=j>0?`M${u(J.sx)},${u(J.sy)}L${J.d.slice(1)}L${u(J.ex)},${u(J.ey)}`:J.d,D=zs(T.arrowTypeStart,J.sx,J.sy,J.sdx,J.sdy),z=zs(T.arrowTypeEnd,J.ex,J.ey,J.edx,J.edy)}let P=T.pattern==="dashed";if(M+=`<g class="pele-edge pele-er-${P?"non-identifying":"identifying"}" data-id="${Pe(T.id)}"><path d="${v}"${P?' stroke-dasharray="4 3"':""}/>`+D+z+"</g>",A.width>0){let O=w.labelX,F=w.labelY;b+=Tr(T.id,A,O,F,"",c)}}return{svg:tt("er",C,K,i,r,e,Re(_,C/2,o+_.height/2,' class="pele-title" font-weight="var(--_tw)"')+(N?`<g class="pele-clusters">${N}</g>`:"")+(M?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${M}</g>`:"")+(b?`<g class="pele-edge-labels" font-size="${l}">${b}</g>`:"")+`<g class="pele-nodes">${S}</g>`),width:C,height:K,links:Q}}function MC(e){let t=e.slice(0,3);for(let r=3;r<e.length;r+=3){let a=t.length-3,n=i=>Math.abs(t[a+i]-e[r+i])<.01&&Math.abs(e[r+i]-e[r+3+i])<.01;r+3<e.length&&(n(0)||n(1))||t.push(e[r],e[r+1],e[r+2])}return t}function vC(e,t,r){let a=new Map,n=(i,l,s,o)=>{let c=t[i],h=l[s]-c.x,d=l[s+1]-c.y,f;if(Math.abs(Math.abs(d)-c.h/2)<.5)f=d<0?0:2;else if(Math.abs(Math.abs(h)-c.w/2)<.5)f=h<0?3:1;else return;let g=i*4+f,p={route:l,at:s,toward:l[o+(f&1?1:0)]},m=a.get(g);m?m.push(p):a.set(g,[p])};for(let i of e){let l=i.route.length-3;i.src===i.dst||l<3||(n(i.src,i.route,0,3),n(i.dst,i.route,l,l-3))}for(let[i,l]of a){if(l.length<2)continue;let s=i>>2,o=(i&1)===1,c=t[s].isGroup?t[s]:r[s],h=o?c.h:c.w,d=Math.max(Math.min(wC,(h-2*$C)/(l.length-1)),0),f=o?t[s].y:t[s].x;l.sort((g,p)=>g.toward-p.toward);for(let g=0;g<l.length;g++)l[g].route[l[g].at+(o?1:0)]=f+(g-(l.length-1)/2)*d}}function p2(e,t,r,a){if(a.isGroup)return;let n=e[t]-a.x,i=e[t+1]-a.y;a.w!==r.w&&Math.abs(Math.abs(n)-a.w/2)<.5&&(e[t]-=Math.sign(n)*(a.w-r.w)/2),a.h!==r.h&&Math.abs(Math.abs(i)-a.h/2)<.5&&(e[t+1]-=Math.sign(i)*(a.h-r.h)/2)}var tC,a2,oo,hh,op,co,ja,rC,aC,nC,iC,ep,tp,rp,lC,g2,oC,oh,hC,Ln,i2,s2,ap,l2,fC,uC,pC,so,lo,gC,o2,c2,mC,yC,np,h2,ip,xC,sp,bC,wC,$C,d2,m2,y2=Ge(()=>{xe();Ju();Is();Kn();qa();In();or();Gt();$r();yt();kt();tC=class{constructor(){le(this,"type","er");le(this,"direction","TB");le(this,"entities",new Map);le(this,"relationships",[]);le(this,"classes",new Map);le(this,"subgraphs",[]);le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"subgraphLookup",new Map);le(this,"claimed",new Set)}addEntity(e,t=""){let r=this.entities.get(e);return r===void 0?(r={id:`entity-${e}-${this.entities.size}`,label:e,alias:t,attributes:[],cssClasses:"default",cssStyles:[]},this.entities.set(e,r)):!r.alias&&t&&(r.alias=t),r}addAttributes(e,t){let r=this.addEntity(e);for(let a=t.length-1;a>=0;a--){let n=t[a];n.keys??(n.keys=[]),n.comment??(n.comment=""),r.attributes.push(n)}}addRelationship(e,t,r,a){let n=this.subgraphLookup.has(e)?e:this.addEntity(e).id,i=this.subgraphLookup.has(r)?r:this.addEntity(r).id;this.relationships.push({entityA:n,roleA:t,entityB:i,relSpec:a})}setDirection(e){this.direction=e}addCssStyles(e,t){if(t)for(let r of e){let a=this.entities.get(r);if(a)for(let i of t)a.cssStyles.push(i);let n=this.subgraphLookup.get(r);if(n)for(let i of t)n.cssStyles.push(i)}}addClass(e,t){for(let r of e){let a=this.classes.get(r);if(a===void 0&&(a={id:r,styles:[],textStyles:[]},this.classes.set(r,a)),!!t)for(let n of t)n.includes("color")&&a.textStyles.push(n.replace("fill","bgFill")),a.styles.push(n)}}setClass(e,t){for(let r of e){let a=this.entities.get(r);if(a)for(let i of t)a.cssClasses+=" "+i;let n=this.subgraphLookup.get(r);if(n)for(let i of t)n.classes.push(i)}}addSubGraph(e,t,r){let a=e.text.trim(),n=new Set,i=[],l;for(let o of t.flat()){if(typeof o!="string"){o?.stmt==="dir"&&(l=o.value);continue}let c=o.trim();c===""||n.has(c)||(n.add(c),this.claimed.has(o)||i.push(o))}for(let o of i)this.claimed.add(o);let s={id:a,nodes:i,title:(r.text||"").trim(),classes:[],cssStyles:[],dir:l,labelType:eC(r.type)};return this.subgraphs.push(s),this.subgraphLookup.set(a,s),a}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
187
|
+
`)}},a2=["$end","INVALID","ER_DIAGRAM","EOF","NEWLINE","COLON","STYLE_SEPARATOR","BLOCK_START","BLOCK_STOP","SQS","SQE","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","END","SUBGRAPH","direction_tb","direction_bt","direction_rl","direction_lr","CLASSDEF","UNICODE_TEXT","STYLE_TEXT","COMMA","CLASS","STYLE","SEMI","NUM","BRKT","ENTITY_NAME","DECIMAL_NUM","ENTITY_ONE","ATTRIBUTE_WORD","ATTRIBUTE_KEY","COMMENT","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","MD_PARENT","NON_IDENTIFYING","IDENTIFYING","WORD","CHAR"],oo=1,hh=2,op=4,co=8,ja=new Uint8Array(128);for(let e=0;e<128;e++){let t=e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95,r=t&&(e<48||e>57);t&&(ja[e]|=oo|hh|co),r&&(ja[e]|=op)}for(let e of"-*")ja[e.charCodeAt(0)]|=oo|hh|co;ja[46]|=oo|co;ja[42]|=op;for(let e of"[](),")ja[e.charCodeAt(0)]|=co;rC=/accTitle\s*:\s*/iy,aC=/accDescr\s*:\s*/iy,nC=/accDescr\s*\{\s*/iy,iC=[/.*direction\s+TB[^\n]*/iy,/.*direction\s+BT[^\n]*/iy,/.*direction\s+RL[^\n]*/iy,/.*direction\s+LR[^\n]*/iy],ep=/direction/gi,tp=/[\n\r\u2028\u2029]/g;rp=new Map([[37,"ZERO_OR_ONE"],[38,"ZERO_OR_MORE"],[39,"ONE_OR_MORE"],[40,"ONLY_ONE"],[41,"MD_PARENT"]]),lC=["TB","BT","RL","LR"],g2="'UNICODE_TEXT', 'NUM', 'ENTITY_NAME', 'DECIMAL_NUM', 'ENTITY_ONE'",oC="'ZERO_OR_ONE', 'ZERO_OR_MORE', 'ONE_OR_MORE', 'ONLY_ONE', 'MD_PARENT'",oh="'EOF', 'NEWLINE', 'title', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'SUBGRAPH', 'direction_tb', 'direction_bt', 'direction_rl', 'direction_lr', 'CLASSDEF', 'CLASS', 'STYLE', "+g2;hC=[];Ln=18,i2=5,s2=6,ap=10,l2=3.5;fC=48,uC=20,pC=64,so=20,lo=28,gC=38,o2=96,c2=18,mC=12,yC=9,np=12,h2=16,ip=9,xC=260,sp=1e6,bC=[],wC=18,$C=14,d2=' fill="var(--_s)" stroke="var(--_b)"';m2={type:"er",math:!0,parse(e,t,r){let a=new tC;return r&&(a.title=r),cC(e,a),a},render:kC}});var x2={};Rt(x2,{er:()=>m2});var b2=Ge(()=>{xe();y2()});function w2(e,t){return e===5?t?"KANBAN":"MINDMAP":AC[e]}function dh(e,t){switch(e){case"[":return ti.RECT;case"(":return t===")"?ti.ROUNDED_RECT:ti.CLOUD;case"((":return ti.CIRCLE;case")":return ti.CLOUD;case"))":return ti.BANG;case"{{":return ti.HEXAGON;default:return ti.DEFAULT}}function $2(e,t,r){for(let a=0;a<r.length;a++)if((e.charCodeAt(t+a)|32)!==r.charCodeAt(a))return!1;return!0}function LC(e,t){let r=e.length,a=[],n=[],i=[],l=t?"kanban":"mindmap",s=t?TC:SC,o=0,c=0,h=-1,d=(m,x,y)=>{a.push(m),n.push(x),i.push(c),c=y},f=(m,x,y)=>{d(m,e.slice(c,x),x),o=y},g=(m,x)=>(m.lastIndex=x,m.test(e)?m.lastIndex:-1),p=m=>{let x=e.indexOf(m,c);return x===-1?r:x};for(;c<r;){let m=e.charCodeAt(c),x=e.charCodeAt(c+1),y;if(o===0){let $=m<=32||m>=160?Math.max(g(EC,c),c):c;if(t&&m===64&&x===123)d(13,"",c+2),o=6;else if(e.charCodeAt($)===37&&e.charCodeAt($+1)===37)f(2,g(cp,$),0);else if($>c)h<c&&(h=p(`
|
|
188
|
+
`)),h>=$?f(6,$,0):(y=e.lastIndexOf(`
|
|
189
|
+
`,$-1))>c?f(2,y+1,0):f(3,c+1,0);else if($2(e,c,l)&&!et(e.charCodeAt(c+l.length)))f(5,c+l.length,0);else if(m===58&&x===58&&e.charCodeAt(c+2)===58)c+=3,o=1;else if(m===58&&x===58&&$2(e,c+2,"icon")&&e.charCodeAt(c+6)===40)c+=7,o=2;else if(m===45&&x===41||m===40&&(x===45||x===40)||(m===41||m===123)&&x===m)f(9,c+2,3);else if(m===41||m===40||m===91)f(9,c+1,3);else if((y=g(s,c))!==-1)f(10,y,0);else break}else if(o===3)m===34?(o=x===96?5:4,c+=x===96?2:1):m===41||m===40?f(12,x===m||m===40&&x===45?c+2:c+1,0):m===93?f(12,c+1,0):m===125&&x===125||m===45&&x===41?f(12,c+2,0):f(11,g(m===125?cp:CC,c),3);else if(o===4)m===34?(c++,o=3):f(11,p('"'),4);else if(o===5)if(m===96&&x===34)c+=2,o=3;else if((y=g(_C,c))!==-1)f(11,y,5);else break;else if(o===1)if((y=g(cp,c))!==-1)f(8,y,0);else if(m===10)c++,o=0;else break;else if(o===2)m===41?(c++,o=0):f(7,p(")"),2);else if(o===6)if(m===34)f(13,c+1,7);else if(m===125)c++,o=0;else if((y=g(IC,c))!==-1)f(13,y,6);else break;else m===34?f(13,c+1,6):(y=p('"'),d(13,e.slice(c,y).replace(NC,"<br/>"),y))}return c<r?d(1,"",c):(o===0&&d(4,"",r),d(0,"",r)),{types:a,texts:n,starts:i}}function Fs(e){return e===2||e===3||e===4}function fh(e,t,r){let a=r?"kanban":"mindmap",{types:n,texts:i,starts:l}=LC(e,r),s=r?", 'SHAPE_DATA'":"",o=0,c=f=>{let g=n[o];throw g===1?st(a,e,l[o],"",!0):st(a,e,l[o],`Expecting ${f}, got '${w2(g,r)}'`)},h=`'${w2(5,r)}'`;if(n[o]===2){for(o++;n[o]===2||n[o]===3;)o++;n[o]!==5&&c(`'SPACELINE', 'NL', ${h}`)}else n[o]!==5&&c(`'SPACELINE', ${h}`);o++;let d="'SPACELINE', 'NL', 'SPACELIST', 'ICON', 'CLASS', 'NODE_DSTART', 'NODE_ID'";for(n[o]===3&&(o++,d="'SPACELINE', 'SPACELIST', 'ICON', 'CLASS', 'NODE_DSTART', 'NODE_ID'");;){let f=n[o],g=0,p=f===6;if(p&&(g=i[o++].length,f=n[o]),f===10||f===9){let m,x,y=0;if(f===10&&(m=i[o++]),n[o]===9){let $=i[o++];n[o]!==11&&c("'NODE_DESCR'"),x=i[o++],n[o]!==12&&c("'NODE_DEND'");let k=i[o++];!Fs(n[o])&&n[o]!==13&&c(Pi+s),y=t.getType($,k)}else!Fs(n[o])&&n[o]!==13&&c(Pi+", 'NODE_DSTART'"+s),x=m;if(n[o]===13){let $=i[o++];for(;n[o]===13;)$+=i[o++];Fs(n[o])||c(Pi+s),t.addNode(g,m??x,x,y,$)}else t.addNode(g,m??x,x,y)}else if(f===7||f===8){let m=i[o++];Fs(n[o])||c(Pi),t.decorateNode(f===7?{icon:m}:{class:m})}else p?Fs(f)||c(Pi+", 'ICON', 'CLASS', 'NODE_DSTART', 'NODE_ID'"):f===2?Fs(n[++o])||c(Pi):c(d);for(o++;n[o]===3||n[o]===4;)o++;if(n[o]===0)return;k2[n[o]]===0&&c(Pi+", 'SPACELIST', 'ICON', 'CLASS', 'NODE_DSTART', 'NODE_ID'")}}function ho(e,t,r,a,n){return`<svg class="pele-icon" data-icon="${Pe(e)}" x="${u(t)}" y="${u(r)}" width="${u(a)}" height="${u(a)}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${n?.(e)??""}</svg>`}var AC,ti,EC,cp,SC,TC,CC,_C,IC,NC,Pi,k2,hp=Ge(()=>{xe();or();yt();kt();AC=["1","INVALID","SPACELINE","NL","EOF","","SPACELIST","ICON","CLASS","NODE_DSTART","NODE_ID","NODE_DESCR","NODE_DEND","SHAPE_DATA"];ti={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6};EC=/\s+/y,cp=/.+/y,SC=/[^([\n){}]+/y,TC=/[^([\n){}@]+/y,CC=/[^)\](}]+/y,_C=/[^`"]+/y,IC=/[^}^"]+/y,NC=/\n\s*/g;Pi="'SPACELINE', 'NL', 'EOF'",k2=new Uint8Array(14);for(let e of[2,6,7,8,9,10])k2[e]=1});function DC(e,t){fh(e,t,!1)}function GC(e,t,r,a){if(e.lines.length<2)return Re(e,t+e.width/2,r,' class="pele-label"',a);let n="",i=r-e.height/2;for(let l=0;l<e.lines.length;l++)n+=Re(on(e,l),t+e.widths[l]/2,i+ln(e,l),' class="pele-label"',a);return n}function HC(e,t,r){return jt(r,a=>UC(e,t,r,a))}function UC(e,t,r,a){let n=r.fontSize??16,i=r.measurer??rt(r.fontFamily),l=r.padding??8,s=r.icons,o=t.mindmap?.maxNodeWidth,c=typeof o=="number"&&o>0?Math.min(o,2e3):200,h=n*1.25,d=e.nodes,f=d.length,g=new Int32Array(f),p=new Int32Array(f);for(let Z=0;Z<f;Z++)for(let B of d[Z].children)g[B.id]=Z,p[B.id]=p[Z]+1;let m=a&&r.maxWidth!==void 0&&r.maxWidth>0?r.maxWidth-2*l:1/0,x=new Array(f),y=new Array(f),$=new Float64Array(f),k=new Float64Array(f),I=new Float64Array(f),_=new Float64Array(f),L=new Uint8Array(f);for(let Z=0;Z<f;Z++){let B=d[Z];L[Z]=B.icon!==void 0&&Ss(B.icon)!==""?1:0;let X=Math.min(c,Math.max(72,m-p[Z]*fp-2*A2-(L[Z]?h+dp:0))),te=x[Z]=Be(B.descr,!0,i,n,X),se=te.width+(L[Z]?h+(te.width>0?dp:0):0),ce=Math.max(te.height,Math.round(n*1.5)),ae=PC[B.type]||(Z===0?M2:"");if(a&&Z===0&&ae!=="rect"&&ae!=="rounded"&&(ae=M2),y[Z]=ae,ae===""){let ie=B.children.length>0;$[Z]=se+2*(ie?YC:A2),k[Z]=ce+(ie?6:0),_[Z]=k[Z]/2}else{let ie=Zn(ae,se,ce);$[Z]=ie.w,k[Z]=ie.h,I[Z]=ie.dy,_[Z]=ie.h/2}}let R=new Float64Array(f),W=new Float64Array(f),q=new Float64Array(f),C=new Float64Array(f),K=0,Q=(Z,B,X,te)=>{let se=0,ce=0;for(let ee=B;ee<X;ee++){let re=Z[ee].id;W[re]=se,ce=Z[ee].children.length>0||ee+1<X&&Z[ee+1].children.length>0?Math.max(te,BC):te,se+=R[re]+ce}K=se-ce;let ae=Z[B].id,ie=Z[X-1].id;return(W[ae]+q[ae]+_[ae]+W[ie]+q[ie]+_[ie])/2};for(let Z=f-1;Z>0;Z--){let B=d[Z].children;if(B.length===0){R[Z]=k[Z];continue}let X=Q(B,0,B.length,FC)-_[Z],te=Math.min(0,X);R[Z]=Math.max(K,X+k[Z])-te,q[Z]=X-te,C[Z]=-te}let G=new Float64Array(f),Y=new Float64Array(f),N=new Float64Array(f),S=new Int8Array(f),M=new Float64Array(f);if(a){let Z=0;for(let B=0;B<f;B++)B>0&&g[B]===0&&(Z+=T2),G[B]=p[B]*fp+$[B]/2,Y[B]=Z,Z+=k[B]+T2}else if(f>0){let Z=d[0].children,B=Z.length,X=0;for(let ae of Z)X+=R[ae.id];let te=B,se=1/0,ce=0;for(let ae=1;ae<B;ae++){ce+=R[Z[ae-1].id];let ie=Math.abs(2*ce-X+(2*ae-B)*v2);ie<se&&(se=ie,te=ae)}for(let ae=0,ie=te,ee=1;ae<B;ae=ie,ie=B,ee=-1){let re=Q(Z,ae,ie,v2);for(let fe=ae;fe<ie;fe++){let ye=Z[fe].id;N[ye]=W[ye]-re,S[ye]=ee}}Y[0]=-k[0]/2;for(let ae=0;ae<f;ae++){ae>0&&(Y[ae]=N[ae]+q[ae]);for(let ie of d[ae].children){let ee=ie.id;ae>0&&(S[ee]=S[ae],N[ee]=N[ae]+C[ae]+W[ee]),G[ee]=G[ae]+S[ee]*($[ae]/2+(ae>0?zC:WC)+$[ee]/2)}}}let b=0,E=0,w=0,T=0,A="",v="",D="",z="",H=Z=>{D!==""&&(A+=`<g class="pele-branch pele-section-${Z??0}"><g class="pele-edges" fill="none" stroke="${z}" stroke-width="1.5">${v}</g>${D}</g>`,v=D="")};for(let Z=1;Z<=f;Z++){let B=Z%f,X=d[B],te=y[B],se=x[B],ce=G[B],ae=Y[B];if(b=Math.min(b,ce-$[B]/2),E=Math.max(E,ce+$[B]/2),w=Math.min(w,ae),T=Math.max(T,ae+k[B]),(B===0||g[B]===0)&&H(d[Z-1].section),B>0&&a){g[B]===0&&(z=pt(X.section??0));let oe=g[B],we=oe===0?Math.min(Math.max(E2,k[0]/2),fp-S2):E2,ue=G[oe]-$[oe]/2+Math.min(we,$[oe]/2),ge=M[oe]||Y[oe]+k[oe],Ae=ce-$[B]/2+(te?Nn(te,$[B],k[B],3):0),Te=ae+_[B],he=Math.max(0,Math.min(S2,Ae-ue,Te-ge));M[oe]=Te-he,v+=`<path class="pele-edge" d="M${u(ue)},${u(ge)}V${u(Te-he)}Q${u(ue)},${u(Te)} ${u(ue+he)},${u(Te)}H${u(Ae)}"/>`}else if(B>0){g[B]===0&&(z=pt(X.section??0));let oe=g[B],we=S[B],ue=we>0?1:3,ge=G[oe]+we*($[oe]/2-(y[oe]?Nn(y[oe],$[oe],k[oe],ue):0)),Ae=Y[oe]+_[oe],Te=ce-we*$[B]/2+(te?we*Nn(te,$[B],k[B],4-ue):0),he=ae+_[B],pe=u((ge+Te)/2);v+=`<path class="pele-edge" d="M${u(ge)},${u(Ae)}C${pe},${u(Ae)} ${pe},${u(he)} ${u(Te)},${u(he)}"/>`}let ie=!te&&X.children.length>0,ee=` fill="${z}" fill-opacity="${qC}" stroke="${z}"`,re="";te?re=B>0?Ua(te,$[B],k[B],ee,` stroke="${z}"`):Ua(te,$[B],k[B],' fill="var(--_s)" stroke="var(--_b)"',' stroke="var(--_b)"'):ie&&(re=`<rect x="${u(-$[B]/2)}" y="${u(-k[B]/2)}" width="${u($[B])}" height="${u(k[B])}" rx="${u(k[B]/2)}"${ee}/>`);let fe=0;X.icon&&L[B]&&(fe=(h+(se.width>0?dp:0))/2,re+=ho(X.icon,-fe-se.width/2,I[B]-h/2,h,s));let ye=`<g class="pele-node pele-shape-${te||(ie?"branch":"text")}${B>0?"":" pele-root"}${Dt(X.class??"")}" data-id="${Pe(X.nodeId)}" transform="translate(${u(ce)},${u(ae+k[B]/2)})">`+re+(a&&!te?GC(se,fe-se.width/2,I[B],s):Re(se,fe,I[B],' class="pele-label"',s))+"</g>";B>0?D+=ye:A+=ye}let P=zr(e.title,i,n,Pt(r)),O=P.height>0?P.height+16:0,F=Math.max(E-b,P.width),U=Math.ceil(F+2*l),j=Math.ceil(T-w+O+2*l),J=Re(P,U/2,l+P.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g transform="translate(${u(l-b+(F-E+b)/2)},${u(l+O-w)})">${A}</g>`;return{svg:tt("mindmap",U,j,n,r,{},J),width:U,height:j,links:[]}}var RC,OC,PC,M2,zC,FC,BC,WC,v2,A2,YC,qC,dp,fp,E2,S2,T2,C2,_2=Ge(()=>{xe();hp();qa();Qn();Gt();yt();kt();RC=11,OC=class{constructor(){le(this,"type","mindmap");le(this,"title");le(this,"nodes",[]);le(this,"getType",dh);le(this,"baseLevel",0);le(this,"open",[])}addNode(e,t,r,a){let n=this.nodes.length===0;n&&(this.baseLevel=e),e-=this.baseLevel;let i=this.open,l=i.length;for(;l>0&&i[l-1].level>=e;)l--;let s=i[l-1];if(!s&&!n)throw new Ke(`There can be only one root. No parent could be found for ("${r}")`,"semantic",{type:"mindmap"});let o={id:this.nodes.length,nodeId:t,level:e,descr:r,type:a,children:[],isRoot:n};s&&(o.section=s.isRoot?s.children.length%RC:s.section,s.children.push(o)),i.length=l,i.push(o),this.nodes.push(o)}decorateNode(e){let t=this.nodes[this.nodes.length-1];!e||!t||(e.icon&&(t.icon=e.icon),e.class&&(t.class=e.class))}};PC=["","rounded","rect","circle","cloud","bang","hex"],M2="stadium",zC=36,FC=8,BC=18,WC=52,v2=28,A2=6,YC=12,qC=.22,dp=6,fp=28,E2=12,S2=8,T2=10;C2={type:"mindmap",math:!0,parse(e,t,r){let a=new OC;return a.title=r,DC(e,a),a},render:HC}});var I2={};Rt(I2,{mindmap:()=>C2});var N2=Ge(()=>{xe();_2()});function XC(e,t){fh(e,t,!0)}function uh(e,t,r,a,n,i=0){let l=Be(e,t,r,a,n,i);if(l.width<=n)return l;let s=[],o=[],c=0,h=[],d=0,f=()=>{s.push(h),o.push(d),c=Math.max(c,d),h=[],d=0};for(let p=0;p<l.lines.length;p++){if(l.widths[p]<=n){h=l.lines[p],d=l.widths[p],f();continue}for(let m of l.lines[p]){if(m.icon!==void 0||m.math){d>0&&d+m.width>n&&f(),h.push(m),d+=m.width;continue}let x="",y=d;for(let $ of m.text){let k=r.width($,a,m.style);d>0&&d+k>n&&(x&&h.push({text:x,style:m.style,width:d-y}),f(),x="",y=0),x+=$,d+=k}x&&h.push({text:x,style:m.style,width:d-y})}f()}let g={...l,lines:s,widths:o,width:c,height:s.length*l.lineHeight};return l.heights?Hl(g):g}function uo(e,t,r,a,n,i=!1){let l="";for(let s=0;s<e.lines.length;s++){let o=e.lines[s],c=r+ln(e,s);if(o.length===1&&o[0].icon===void 0&&o[0].math===void 0)l+=`<text${Wa(a,o[0].style)} x="${u(t)}" y="${u(c+e.size*.35)}"${i?' text-anchor="end"':""}>${Qe(o[0].text)}</text>`;else{let h=e.widths[s];l+=Re(on(e,s),t+(i?-h:h)/2,c,a,n)}}return l}function ZC(e,t,r){let a=r.fontSize??16,n=Math.round(a*.875),i=Math.round(a*1.5),l=Math.round(n*1.5),s=r.measurer??rt(r.fontFamily),o=r.padding??8,c=r.icons,h=t.kanban??{},d=h.sectionWidth,f=n*1.25,g=0,p=(O,F,U)=>{if(!(!O||!O.includes("$$")))for(let j of Be(O,!0,s,F,1/0).lines)for(let J of j)J.math&&(g=Math.max(g,J.math.width+U))};for(let O of e.sections){let F=s.width(String(O.items.length),n,0);p(O.label,a,2*dn+8+F+12+(Bs(O.icon)?f+fo:0));for(let U of O.items){let j=2*(dn+Xa);p(U.label,n,j+(Bs(U.icon)?f+fo:0)),p(U.ticket,n,j),p(U.assigned,n,j)}}let m=Math.max(typeof d=="number"&&d>0?Math.min(Math.max(d,80),2e3):200,Math.ceil(g)),x=r.maxWidth!==void 0&&r.maxWidth>0?r.maxWidth-2*o:1/0,y=e.sections.length,$=y*(m+hn)-hn<=x,k=$?Math.max(y,1):Math.max(1,Math.floor((x+hn)/(m+hn))),I=$?m:Math.max(Math.min(m,x),Math.min(Math.floor((x+hn)/k)-hn,m*2),Math.ceil(g)),_=typeof h.ticketBaseUrl=="string"?h.ticketBaseUrl:"",L=I-2*dn,R=L-2*Xa,W=[],q=e.sections,C=[],K=[],Q=[],G=i,Y=[];for(let O of q){let F=s.width(String(O.items.length),n,0),U=F+12+(Bs(O.icon)?f+fo:0),j=uh(O.label,!0,s,a,L-8-U,1);G=Math.max(G,j.height),K.push(F),C.push(j);let J=[],Z=0;for(let B of O.items){let X=uh(B.label,!0,s,n,R-(Bs(B.icon)?f+fo:0)),te=uh(B.ticket,!1,s,n,R),se=uh(B.assigned,!1,s,n,R),ce=te.width+se.width+8>R?te.height+se.height:Math.max(te.height,se.height),ae=2*Xa+Math.max(X.height,l)+(ce?VC+ce:0);J.push({item:B,label:X,ticket:te,assigned:se,meta:ce,height:ae}),Z+=ae+up}Q.push(J),Y.push(Z)}G+=2*dn;let N=[],S=[];for(let O=0,F=0;O<q.length;O+=k){let U=up;for(let j=O;j<Math.min(O+k,q.length);j++)U=Math.max(U,Y[j]);S.push(F),N.push(G+U),F+=G+U+hn}let M=N.length>0?S[S.length-1]+N[N.length-1]:0,b=zr(e.title,s,a,Pt(r)),E=b.height>0?b.height+16:0,w=Math.max(Math.min(q.length,k)*(I+hn)-hn,0),T=Math.max(w,b.width),A=o+(T-w)/2,v=I-dn-4,D="";for(let O=0;O<q.length;O++){let F=q[O],U=Math.floor(O/k),j=`<rect width="${I}" height="${u(N[U])}" fill="var(--_s)"${ot}/>`+uo(C[O],dn+4,dn,' class="pele-cluster-label" font-weight="var(--_hw)"',c)+`<text class="pele-count" x="${v}" y="${u(dn+i/2+n*.35)}" text-anchor="end" font-size="${n}" fill="var(--_m)">${F.items.length}</text>`;Bs(F.icon)&&(j+=ho(F.icon,v-K[O]-fo-f,dn+(i-f)/2,f,c));let J=G;for(let Z of Q[O]){let B=Z.item,X=(B.priority??"").trim().toLowerCase(),te=KC.get(X),se=`<rect width="${L}" height="${u(Z.height)}" fill="var(--_bg)" stroke="var(--_b)"${ot}/>`;te!==void 0&&(se+=`<path class="pele-priority" d="M2.5,5V${u(Z.height-5)}" fill="none" ${te} stroke-width="3" stroke-linecap="round"/>`),se+=uo(Z.label,Xa,Xa,' class="pele-label"',c),Bs(B.icon)&&(se+=ho(B.icon,L-Xa-f,Xa+(l-f)/2,f,c));let ce=Z.height-Xa;if(B.ticket){let ae=ce-Z.meta,ie=_?Cn(Ha(_.replace("#TICKET#",()=>B.ticket)),r):void 0;ie===void 0?se+=uo(Z.ticket,Xa,ae,' class="pele-ticket" fill="var(--_m)"',c):(se+=`<a href="${Qe(ie)}" target="_blank"${_n(r)}>`+uo(Z.ticket,Xa,ae,' class="pele-ticket" fill="var(--_c)"',c)+"</a>",W.push({id:B.id,href:ie,internal:!1}))}B.assigned&&(se+=uo(Z.assigned,L-Xa,ce-Z.assigned.height,' class="pele-assigned" fill="var(--_m)"',c,!0)),j+=`<g class="pele-node pele-card${te===void 0?"":" pele-priority-"+X.replace(" ","-")}${Dt(B.cssClasses??"")}" data-id="${Pe(B.id)}" transform="translate(${dn},${u(J)})" font-size="${n}">${se}</g>`,J+=Z.height+up}D+=`<g class="pele-cluster pele-column${Dt(F.cssClasses??"")}" data-id="${Pe(F.id)}" transform="translate(${u(A+O%k*(I+hn))},${u(o+E+S[U])})">${j}</g>`}let z=Math.ceil(T+2*o),H=Math.ceil(M+E+2*o),P=Re(b,z/2,o+b.height/2,' class="pele-title" font-weight="var(--_tw)"')+D;return{svg:tt("kanban",z,H,a,r,{},P),width:z,height:H,links:W}}var jC,hn,dn,Xa,up,VC,fo,KC,Bs,L2,R2=Ge(()=>{xe();hp();As();qa();In();Gt();yt();kt();jC=class{constructor(){le(this,"type","kanban");le(this,"title");le(this,"sections",[]);le(this,"getType",dh);le(this,"last");le(this,"sectionLevel",0);le(this,"misplaced")}addNode(e,t,r,a,n){let i={id:t,level:e,label:r};if(n!==void 0){let s=n.includes(`
|
|
190
|
+
`)?n+`
|
|
191
|
+
`:`{
|
|
192
|
+
`+n+`
|
|
193
|
+
}`,o;try{o=Ba(s)}catch(c){throw new Ke(`Metadata of "${i.id}" is not valid YAML. ${c.message}`,"syntax",{type:"kanban"})}if(o!==null&&typeof o=="object"&&!Array.isArray(o)){let c=o.shape?String(o.shape):"";if(c!==c.toLowerCase()||c.includes("_"))throw new Ke(`No such shape: ${c}. Shape names should be lowercase.`,"semantic",{type:"kanban"});o.label&&(i.label=String(o.label)),o.icon&&(i.icon=String(o.icon)),o.assigned&&(i.assigned=String(o.assigned)),o.ticket&&(i.ticket=String(o.ticket)),o.priority&&(i.priority=String(o.priority))}}if(this.misplaced)throw new Ke(`Items without section detected, found section ("${this.misplaced.label}")`,"semantic",{type:"kanban"});let l=this.sections;if(l.length===0&&(this.sectionLevel=e),this.last=i,e===this.sectionLevel){let s=i;s.items=[],l.push(s)}else l[l.length-1].items.push(i),e<this.sectionLevel&&(this.misplaced=i)}decorateNode(e){let t=this.last;!e||!t||(e.icon&&(t.icon=e.icon),e.class&&(t.cssClasses=e.class))}};hn=12,dn=8,Xa=10,up=8,VC=4,fo=6,KC=new Map([["very high",`stroke="${jl}"`],["high",`stroke="${jl}" opacity="0.5"`],["low",'stroke="var(--_m)" opacity="0.5"'],["very low",'stroke="var(--_m)"']]);Bs=e=>!!e&&Ss(e)!=="";L2={type:"kanban",math:!0,parse(e,t,r){let a=new jC;return a.title=r,XC(e,a),a},render:ZC}});var O2={};Rt(O2,{kanban:()=>L2});var D2=Ge(()=>{xe();R2()});function Ws(e,t){let r=e.indexOf(`
|
|
194
|
+
`,t);return r===-1?e.length:r}function Ia(e,t,r){for(let a=0;a<r.length;a++)if((e.charCodeAt(t+a)|32)!==r.charCodeAt(a))return!1;return!0}function ph(e,t){let r=e.length,a=t;for(;a<r;){let n=e.charCodeAt(a);if(n===37&&e.charCodeAt(a+1)!==123)a=Ws(e,a);else if(n!==125&&e.charCodeAt(a+1)===37&&e.charCodeAt(a+2)===37)a=Ws(e,a+3);else{if(n===10)return a;if(je(n))do a++;while(a<r&&je(e.charCodeAt(a)));else if(n===35)a=Ws(e,a);else return a}}return a}function pp(e,t){let r=t;for(;je(e.charCodeAt(r));)r++;return r}function gh(e,t,r,a){let n=Ia(e,t,"accdescr");if(!n&&!Ia(e,t,"acctitle"))return t;let i=e.length,l=pp(e,t+8),s=e.charCodeAt(l),o=(c,h,d)=>{r.types.push(c),r.texts.push(e.slice(h,d)),r.starts.push(h)};if(s===58){l=pp(e,l+1);let c=Ws(e,l);return o(n?a+2:a,t,l),o(n?a+3:a+1,l,c),c}if(!n||s!==123)return t;for(l=pp(e,l+1);e.charCodeAt(l)!==125;){let c=e.indexOf("}",l);if(c===-1&&(c=i),o(a+4,l,c),l===i)return i;l=c}return l+1}var gp=Ge(()=>{xe();or()});function Va(e,t,r,a,n=0){let i=e;return i!==void 0&&(i.includes("<")&&(i=i.replace(QC,"<")),i.includes(":fa-")&&(i=i.replace(JC,":fa-"))),Be(i,!1,t,r,a,n)}function la(e,t,r,a,n=0){let i=Va(e,t,r,a,n);if(e===void 0||i.width<=a)return i;let l="",s=0;for(let o of e.match(e_)??[]){if(o.trim()===""||o.length>2&&o[0]==="<")s=0;else{let c=t.width(o.length>2?"x":o,r,n);s>0&&s+c>a&&(l+=`
|
|
195
|
+
`,s=0),s+=c}l+=o}return Va(l,t,r,a,n)}var QC,JC,e_,mh=Ge(()=>{xe();yt();QC=/<(?!br\s*\/?>)/gi,JC=/:fa-/g,e_=/<br\s*\/?>|fl°°?\w+¶ß|&#?\w+;|[\ud800-\udbff][\udc00-\udfff]|[\s\S]/gi});function a_(e){let t=e.length,r=[],a=[],n=[],i={types:r,texts:a,starts:n},l=0,s=(o,c)=>{r.push(o),a.push(e.slice(l,c)),n.push(l),l=c};for(;l=ph(e,l),!(l>=t);){let o=e.charCodeAt(l),c=l+1;if(o===10){for(;e.charCodeAt(c)===10;)c++;s(3,c);continue}if(Ia(e,l,"timeline")){for(c=l+8;e.charCodeAt(c)===32||e.charCodeAt(c)===9;)c++;let h=Ia(e,c,"lr");if(c>l+8&&(h||Ia(e,c,"td"))&&!et(e.charCodeAt(c+2))){s(h?5:6,c+2);continue}if(!et(e.charCodeAt(l+8))){s(4,l+8);continue}}if(Ia(e,l,"title")&&je(e.charCodeAt(l+5))&&l+6<t&&e.charCodeAt(l+6)!==10){s(7,Ws(e,l+6));continue}if(c=gh(e,l,i,8),c!==l){l=c;continue}if(Ia(e,l,"section")&&je(e.charCodeAt(l+7))){for(c=l+8;c<t&&e.charCodeAt(c)!==58&&e.charCodeAt(c)!==10;)c++;if(c>l+8){s(13,c);continue}}if(o!==58){c=l+1;for(let h=e.charCodeAt(c);c<t&&h!==35&&h!==58&&h!==10;h=e.charCodeAt(++c));s(14,c);continue}if(je(e.charCodeAt(l+1))){for(c=l+2;c<t;c++){let h=e.charCodeAt(c);if(h===10||h===58&&je(e.charCodeAt(c+1)))break}if(c>l+2){s(15,c);continue}}s(2,l+1)}return(n.length===0||n[n.length-1]<t)&&s(1,t),s(0,t),i}function i_(e,t){let{types:r,texts:a,starts:n}=a_(e),i=(s,o)=>{let c=r[s]===0?"1":r_[r[s]];throw st("timeline",e,n[s],`Expecting ${o}, got '${c}'`)},l=r[0];l!==4&&l!==5&&l!==6&&i(0,"'timeline', 'timeline_lr', 'timeline_td'"),l!==4&&t.setDirection(l===5?"LR":"TD");for(let s=1;;s++){let o=a[s];switch(r[s]){case 3:break;case 7:t.getCommonDb().setDiagramTitle(o.substring(6));break;case 8:t.getCommonDb().setAccTitle(a[++s].trim());break;case 10:t.getCommonDb().setAccDescription(a[++s].trim());break;case 12:t.getCommonDb().setAccDescription(o.trim());break;case 13:t.addSection(o.substring(8));break;case 14:t.addTask(o,0,"");break;case 15:t.addEvent(o.substring(2));break;case 1:return;default:i(s,n_)}}}function yp(e,t,r,a,n){return`<rect x="${u(e)}" y="${u(t)}" width="${u(r)}" height="${u(a)}"${gt(n)}/>`}function c_(e,t,r){return e.direction==="TD"?B2(e,t,r,!0):jt(r,a=>B2(e,t,r,a))}function B2(e,t,r,a){let n=r.fontSize??16,i=Math.round(n*.875),l=r.measurer??rt(r.fontFamily),s=r.padding??8,o=t.timeline?.disableMulticolor!==!0,c=e.periods,h=e.sections.length>0,d=e.sections.map((X,te)=>({section:te,periods:[]})),f={section:-1,periods:[]};c.forEach((X,te)=>(d[X.sectionIndex]??f).periods.push(te)),f.periods.length>0&&d.unshift(f);let g=a&&r.maxWidth!==void 0&&r.maxWidth>0?r.maxWidth-2*s:1/0,p=Ys+xh*2+4*yh,m=Math.min(s_,Math.max(80,Math.round((g-p)*.38))),x=Math.min(o_,Math.max(110,g-p-m)),y=m,$=()=>a?x:y,k=c.map(X=>Va(X.text,l,n,y)),I=c.map(X=>X.events.map(te=>Va(te,l,i,$()))),_=0;for(let X of k)_=Math.max(_,X.width);if(!a)for(let X of I)for(let te of X)_=Math.max(_,te.width);let L=_>y;if(a)for(let X of I)for(let te of X)L||(L=te.width>x);L&&(y=Math.min(Math.max(Math.ceil(_),m),g===1/0?l_:m),k=c.map(X=>la(X.text,l,n,y)),I=c.map(X=>X.events.map(te=>la(te,l,i,$()))));let R=Math.round(n*1.5),W=y+2*yh,q=$()+2*yh,C=X=>Math.max(X.height,R)+2*P2,K=X=>Math.max(X.height,Math.round(i*1.5))+2*P2,Q=(X,te)=>X.section>=0?pt(X.section):h?"var(--_m)":pt(o?te:0),G=!1;for(let X of I)X.length>0&&(G=!0);let Y=0;for(let X of d)Y+=Math.max(X.periods.length,1);let N=W+zi,S=c.length>0,M=a?W+(G?Ys+xh*2+q:S?Ys+bh:0):Y>0?Y*N-zi+(S?bh+Xt:0):0,b=la(e.title,l,n,Math.max(M,320),1),E=b.height>0?b.height+16:0,w=Math.max(M,b.width),T=s+(w-M)/2,A=s+E,v=(X,te)=>la(e.sections[X.section],l,n,te-2*yh,1),D=(X,te,se,ce,ae,ie)=>yp(se,ce,ae,ie,` fill="${pt(X.section)}"`)+Re(te,se+ae/2,ce+ie/2,' font-weight="var(--_hw)"'+z2),z=(X,te,se,ce,ae)=>yp(se,ce,W,ae,` fill="${te}"`)+Re(k[X],se+W/2,ce+ae/2,z2),H=(X,te,se,ce,ae)=>'<g class="pele-node pele-event">'+yp(se,ce,q,ae,` fill="${te}" fill-opacity="0.16"`)+Re(X,se+q/2,ce+ae/2,` font-size="${i}"`)+"</g>",P=(X,te,se)=>`<circle class="pele-dot" cx="${u(X)}" cy="${u(te)}" r="4" fill="${se}" stroke="var(--_bg)" stroke-width="2"/>`,O=X=>X.section>=0?`<g class="pele-cluster pele-section" data-id="${Pe(e.sections[X.section].trim())}">`:"",F=X=>`<g class="pele-node pele-period" data-id="${Pe(c[X].text.trim())}">`,U="",j;if(a){let X=T+W+Ys,te=X+xh,se=te+xh,ce=A;for(let ae of d){if(U+=O(ae),ae.section>=0){let ie=v(ae,M),ee=C(ie);U+=D(ae,ie,T,ce,M,ee),ce+=ee+mp+4}for(let ie of ae.periods){let ee=Q(ae,ie),re=C(k[ie]),fe=I[ie].length>0?K(I[ie][0]):re,ye=ce+Math.max(re,fe)/2,oe=`M${u(T+W)},${u(ye)}H${u(X)}`,we="",ue=ye-fe/2,ge=ye;for(let Ae of I[ie]){let Te=K(Ae);ge=ue+Te/2,oe+=`M${u(te)},${u(ge)}H${u(se)}`,we+=H(Ae,ee,se,ue,Te),ue+=Te+po}we&&(oe+=`M${u(X)},${u(ye)}H${u(te)}V${u(ge)}`),U+=F(ie)+z(ie,ee,T,ye-re/2,re)+`<path class="pele-edge" d="${oe}"${F2}/>`+P(X,ye,ee)+we+"</g>",ce=Math.max(ye+re/2,ue-po)+zi}ae.periods.length===0&&(ce+=zi-mp-4),ae.section>=0&&(U+="</g>")}if(d.length>0&&(ce-=zi),S){let ae=ce+bh+Xt;U=`<path class="pele-axis" d="M${u(X)},${u(A)}V${u(ae-Xt+1)}" fill="none" stroke="var(--_l)"/>`+Mt("arrow_point",X,ae,0,1,"var(--_l)")+U,ce=ae}j=ce+s}else{let X=0,te=d.map(fe=>{if(fe.section<0)return;let ye=v(fe,Math.max(fe.periods.length,1)*N-zi);return X=Math.max(X,C(ye)),ye}),se=0;for(let fe of k)se=Math.max(se,C(fe));let ce=A+(h?X+mp:0),ae=ce+se+(se>0?Ys:0),ie=ae+Ys,ee=S?ae+bh:A+X,re=0;if(d.forEach((fe,ye)=>{let oe=Math.max(fe.periods.length,1),we=T+re*N;U+=O(fe);let ue=te[ye];ue&&(U+=D(fe,ue,we,A,oe*N-zi,X)),fe.periods.forEach((ge,Ae)=>{let Te=Q(fe,ge),he=we+Ae*N,pe=he+W/2,be=`M${u(pe)},${u(ce+se)}V${u(I[ge].length>0?ie:ae)}`,Ne="",Oe=ie;for(let Ye of I[ge]){let de=K(Ye);Oe>ie&&(be+=`M${u(pe)},${u(Oe-po)}V${u(Oe)}`),Ne+=H(Ye,Te,he,Oe,de),Oe+=de+po}ee=Math.max(ee,Oe-po),U+=F(ge)+z(ge,Te,he,ce,se)+`<path class="pele-edge" d="${be}"${F2}/>`+P(pe,ae,Te)+Ne+"</g>"}),fe.section>=0&&(U+="</g>"),re+=oe}),S){let fe=T+M;U=`<path class="pele-axis" d="M${u(T)},${u(ae)}H${u(fe-Xt+1)}" fill="none" stroke="var(--_l)"/>`+Mt("arrow_point",fe,ae,1,0,"var(--_l)")+U}j=ee+s}let J=Math.ceil(w+2*s),Z=Math.ceil(Math.max(j,s*2)),B=Re(b,J/2,s+b.height/2,' class="pele-title" font-weight="var(--_tw)"')+U;return{svg:tt("timeline",J,Z,n,r,e,B),width:J,height:Z,links:[]}}var t_,r_,n_,yh,P2,s_,l_,o_,zi,Ys,xh,po,mp,bh,z2,F2,W2,Y2=Ge(()=>{xe();gp();mh();or();Gt();$r();yt();kt();t_=class{constructor(){le(this,"type","timeline");le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"direction","LR");le(this,"sections",[]);le(this,"periods",[]);le(this,"currentSection","")}getCommonDb(){return this}setDiagramTitle(e){this.title=e}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
196
|
+
`)}setDirection(e){this.direction=e}addSection(e){this.currentSection=e,this.sections.push(e)}addTask(e,t,r){this.periods.push({text:e,events:r?[r]:[],section:this.currentSection,sectionIndex:this.sections.length-1})}addEvent(e){let t=this.periods[this.periods.length-1];if(!t)throw new Ke("An event needs a time period before it.","semantic",{type:"timeline"});t.events.push(e)}},r_=["$end","EOF","INVALID","NEWLINE","timeline","timeline_lr","timeline_td","title","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","section","period","event"];n_="'EOF', 'SPACE', 'NEWLINE', 'title', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'section', 'period', 'event'";yh=12,P2=8,s_=152,l_=216,o_=264,zi=20,Ys=20,xh=14,po=8,mp=8,bh=12,z2=' fill="var(--_bg)"',F2=' fill="none" stroke="var(--_b)"';W2={type:"timeline",parse(e,t,r){let a=new t_;return a.title=r,i_(e,a),a},render:c_}});var q2={};Rt(q2,{timeline:()=>W2});var G2=Ge(()=>{xe();Y2()});function wp(e){let t=new Set;for(let r of e)for(let a of r.people)t.add(a);return[...t].sort()}function wh(e,t,r){let a=e.length,n=t;for(;n<a;n++){let i=e.charCodeAt(n);if(i===35||i===10||i===59||r&&i===58)break}return n}function f_(e){let t=e.length,r=[],a=[],n=[],i={types:r,texts:a,starts:n},l=0,s=(o,c)=>{r.push(o),a.push(e.slice(l,c)),n.push(l),l=c};for(;l=ph(e,l),!(l>=t);){let o=e.charCodeAt(l),c=l+1;if(o===10){for(;e.charCodeAt(c)===10;)c++;s(3,c);continue}if(Ia(e,l,"journey")&&!et(e.charCodeAt(l+7))){s(4,l+7);continue}if(Ia(e,l,"title")&&je(e.charCodeAt(l+5))&&(c=wh(e,l+6,!1),c>l+6)){s(5,c);continue}if(c=gh(e,l,i,6),c!==l){l=c;continue}if(Ia(e,l,"section")&&je(e.charCodeAt(l+7))&&(c=wh(e,l+8,!0),c>l+8)){s(11,c);continue}o===58?(c=wh(e,l+1,!1),s(c>l+1?13:14,c>l+1?c:l+1)):o===59?s(2,l+1):s(12,wh(e,l+1,!0))}return(n.length===0||n[n.length-1]<t)&&s(1,t),s(0,t),i}function p_(e,t){let{types:r,texts:a,starts:n}=f_(e),i=(l,s)=>{let o=r[l]===0?"1":d_[r[l]];throw st("journey",e,n[l],`Expecting ${s}, got '${o}'`)};r[0]!==4&&i(0,"'journey'");for(let l=1;;l++){let s=a[l];switch(r[l]){case 3:break;case 5:t.setDiagramTitle(s.substring(6));break;case 6:t.setAccTitle(a[++l].trim());break;case 8:t.setAccDescription(a[++l].trim());break;case 10:t.setAccDescription(s.trim());break;case 11:t.addSection(s.substring(8));break;case 12:r[++l]!==13&&i(l,"'taskData'"),t.addTask(s,a[l]);break;case 1:return;default:i(l,u_)}}}function U2(e,t,r){return`<g class="pele-face pele-face-${r}" transform="translate(${u(e)},${u(t)})"><circle r="${qs}" fill="var(--_bg)" stroke="var(--_l)"/><g fill="var(--_l)">${b_}</g><path d="${w_[r]}" fill="none" stroke="var(--_l)" stroke-linecap="round"/></g>`}function $_(e,t,r){return jt(r,a=>k_(e,t,r,a))}function k_(e,t,r,a){let n=r.fontSize??16,i=Math.round(n*.875),l=Math.round(n*.75),s=r.measurer??rt(r.fontFamily),o=r.padding??8;if(a)return M_(e,r);let c=e.tasks,h=c.length,d=wp(c).filter(F=>F!==""),f=new Map;d.forEach((F,U)=>f.set(F,U));let g=g_,p=c.map(F=>Va(F.task,s,i,g)),m=0;for(let F of p)m=Math.max(m,F.width);m>g&&(g=Math.min(Math.ceil(m),m_),p=c.map(F=>la(F.task,s,i,g)));let x=g+2*kh,y=x+$h,$=h>0?h*y-$h:0,k=Math.round(i*1.5),I=Math.max($,240),_=[],L=0,R=0,W=0;for(let F of d){let U=la(F,s,i,I-2*fn-6),j=2*fn+6+U.width;W>0&&W+j>I&&(W=0,R+=4);let J=W>0?_[_.length-1].y:R,Z=Math.max(U.height,k);_.push({name:F,label:U,x:W,y:J,h:Z}),W+=j,L=Math.max(L,W),R=Math.max(R,J+Z),W+=x_}let q=h>0?xp+$:0,C=la(e.title,s,n,Math.max(q,320),1),K=C.height>0?C.height+16:0,Q=Math.max(q,C.width,h>0?xp+L:0),G=o+(Q-q)/2+xp,Y=o+K,N=[],S=0;for(let F=0;F<h;){let U=F+1;for(;U<h&&c[U].section===c[F].section;)U++;let j;c[F].section!==""&&(j=la(c[F].section,s,i,(U-F)*y-$h-2*kh,1),S=Math.max(S,Math.max(j.height,k)+2*H2)),N.push({start:F,count:U-F,label:j}),F=U}let M=k;for(let F of p)M=Math.max(M,F.height);let b=d.length>0?2*fn+6:0,E=M+b+2*ri,w=Y+(S>0?S+H2:0),T=w+E+qs+16,A=T+4*bp,v=G+$,D="",z=Y;if(h>0){let F="",U="";for(let X=5;X>=1;X--){let te=T+(5-X)*bp;F+=`M${u(G-6)},${u(te)}H${u(v)}`,U+=`<text x="${u(G-12)}" y="${u(te+l*.35)}">${X}</text>`}D+=`<path class="pele-grid" d="${F}" fill="none" stroke="var(--_a)"/><g class="pele-scale" font-size="${l}" text-anchor="end" fill="var(--_m)">${U}</g>`;let j="",J="",Z="",B=[];c.forEach((X,te)=>{let se=G+te*y,ce=se+x/2,ae=X.score,ie=Number.isNaN(ae)?3:Math.min(5,Math.max(1,ae)),ee=T+(5-ie)*bp;j+=`${te===0?"M":"L"}${u(ce)},${u(ee)}`,J+=`M${u(ce)},${u(w+E)}V${u(ee-qs)}`,Z+=U2(ce,ee,ae>3?"happy":ae<3?"sad":"neutral");let re="",fe=X.people.filter(oe=>oe!==""),ye=Math.min(y_,(x-2*kh-2*fn)/Math.max(fe.length-1,1));fe.forEach((oe,we)=>{re+=`<circle class="pele-actor" cx="${u(ce+(we-(fe.length-1)/2)*ye)}" cy="${u(w+E-ri-fn)}" r="${fn}" fill="${pt(f.get(oe)??0)}" stroke="var(--_s)"><title>${Pe(oe)}</title></circle>`}),B.push(`<g class="pele-node pele-task" data-id="${Pe(X.task.trim())}"><rect x="${u(se)}" y="${u(w)}" width="${u(x)}" height="${u(E)}" fill="var(--_s)" stroke="var(--_b)"${ot}/>`+Re(p[te],ce,w+ri+M/2,` font-size="${i}"`)+re+"</g>")}),D+=`<path class="pele-stems" d="${J}" fill="none" stroke="var(--_b)" stroke-dasharray="2 3"/>`+(h>1?`<path class="pele-edge" d="${j}" fill="none" stroke="var(--_l)" stroke-linejoin="round"/>`:"")+Z;for(let X of N){let te=B.slice(X.start,X.start+X.count).join("");if(!X.label){D+=te;continue}let se=G+X.start*y,ce=X.count*y-$h;D+=`<g class="pele-cluster pele-section" data-id="${Pe(c[X.start].section.trim())}"><rect x="${u(se)}" y="${u(Y)}" width="${u(ce)}" height="${u(S)}" fill="var(--_a)"${ot}/>`+Re(X.label,se+ce/2,Y+S/2,` font-size="${i}" font-weight="var(--_hw)"`)+te+"</g>"}if(z=A+qs,_.length>0){let X=G+($-L)/2,te=z+16,se="";for(let ce of _){let ae=te+ce.y+ce.h/2;se+=`<g class="pele-legend-item" data-id="${Pe(ce.name)}"><circle cx="${u(X+ce.x+fn)}" cy="${u(ae)}" r="${fn}" fill="${pt(f.get(ce.name)??0)}"/>`+Re(ce.label,X+ce.x+2*fn+6+ce.label.width/2,ae,"")+"</g>"}D+=`<g class="pele-legend" font-size="${i}">${se}</g>`,z=te+R}}let H=Math.ceil(Q+2*o),P=Math.ceil(Math.max(z,o)+o),O=Re(C,o+Q/2,o+C.height/2,' class="pele-title" font-weight="var(--_tw)"')+D;return{svg:tt("journey",H,P,n,r,e,O),width:H,height:P,links:[]}}function M_(e,t){let r=t.fontSize??16,a=Math.round(r*.875),n=t.measurer??rt(t.fontFamily),i=t.padding??8,l=Math.max(140,(t.maxWidth??320)-2*i),s=la(e.title,n,r,l,1),o=wp(e.tasks).filter(y=>y!==""),c=new Map(o.map((y,$)=>[y,$])),h=i+(s.height?s.height+16:0),d,f="",g=s.width;e.tasks.forEach((y,$)=>{if(y.section!==d){d=y.section;let C=la(d,n,r,l-16,1);C.height&&(f+=Re(C,i+8+C.width/2,h+C.height/2,' class="pele-cluster-label" font-weight="var(--_hw)"'),g=Math.max(g,C.width+16),h+=C.height+8)}let k=la(y.task,n,a,l-72),I=y.people.filter(C=>C!=="").map(C=>({name:C,label:la(C,n,a,l-44)})),_=Math.max(k.height,42),L=2*ri+_;for(let C of I)L+=Math.max(16,C.label.height)+4;let R=Math.max(l,k.width+72);f+=`<g class="pele-node pele-journey-step" data-id="${$}"><rect x="${u(i)}" y="${u(h)}" width="${u(R)}" height="${u(L)}" fill="var(--_s)" stroke="var(--_b)"${ot}/>`,f+=Re(k,i+kh+k.width/2,h+ri+k.height/2,' class="pele-label"');let W=i+R-28;f+=U2(W,h+ri+qs,y.score>3?"happy":y.score<3?"sad":"neutral"),Number.isNaN(y.score)||(f+=`<text class="pele-journey-score" x="${u(W)}" y="${u(h+ri+2*qs+a)}" font-size="${a}" text-anchor="middle">${u(Math.min(5,Math.max(1,y.score)))}</text>`);let q=h+ri+_+4;for(let C of I){let K=Math.max(16,C.label.height);f+=`<circle class="pele-actor" cx="${u(i+16)}" cy="${u(q+K/2)}" r="${fn}" fill="${pt(c.get(C.name))}"/>`+Re(C.label,i+28+C.label.width/2,q+K/2,` class="pele-journey-actor" font-size="${a}"`),q+=K+4}f+="</g>",h+=L,$+1<e.tasks.length&&(f+=`<path class="pele-edge" d="M${u(i+R/2)},${u(h)}v16" fill="none" stroke="var(--_l)"/>`),h+=16,g=Math.max(g,R)});let p=Math.ceil(g+2*i),m=Math.ceil(Math.max(i+s.height,h-(e.tasks.length?16:0))+i),x=Re(s,p/2,i+s.height/2,' class="pele-title" font-weight="var(--_tw)"')+f;return{svg:tt("journey",p,m,r,t,e,x),width:p,height:m,links:[]}}var h_,d_,u_,kh,ri,g_,m_,$h,H2,xp,bp,qs,fn,y_,x_,b_,w_,j2,X2=Ge(()=>{xe();gp();mh();or();Gt();yt();kt();h_=class{constructor(){le(this,"type","journey");le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"sections",[]);le(this,"tasks",[]);le(this,"currentSection","")}setDiagramTitle(e){this.title=e}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
197
|
+
`)}addSection(e){this.currentSection=e,this.sections.push(e)}addTask(e,t){let r=t.substring(1).split(":"),a=r.length===1?[]:r[1].split(",").map(n=>n.trim());this.tasks.push({task:e,score:Number(r[0]),people:a,section:this.currentSection})}getActors(){return wp(this.tasks)}},d_=["$end","EOF","INVALID","NEWLINE","journey","title","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","section","taskName","taskData",":"];u_="'EOF', 'SPACE', 'NEWLINE', 'title', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'section', 'taskName'";kh=10,ri=8,g_=124,m_=200,$h=12,H2=6,xp=24,bp=26,qs=11,fn=5,y_=13,x_=20,b_='<circle cx="-3.6" cy="-2.8" r="1.3"/><circle cx="3.6" cy="-2.8" r="1.3"/>',w_={happy:"M-5,2A6,6 0 0 0 5,2",neutral:"M-4.5,4.5H4.5",sad:"M-5,6.5A6,6 0 0 1 5,6.5"};j2={type:"journey",parse(e,t,r){let a=new h_;return a.title=r,p_(e,a),a},render:$_}});var V2={};Rt(V2,{journey:()=>j2});var K2=Ge(()=>{xe();X2()});function Z2(e){return e==="#"||e==="+"||e==="~"||e==="-"}function ai(e){let t=e.indexOf("~");if(t<=0)return{className:e,type:""};let r=e.indexOf("~",t+1);return{className:e.slice(0,t),type:e.slice(t+1,r===-1?e.length:r)}}function J2(e){let t=e.charCodeAt(0);return ai(t>=48&&t<=57?A_+e:e).className}function C_(e){let t=e.length,r=[],a=[],n=[],i=[],l=0,s=0,o=e.indexOf("direction"),c=-1,h=0,d=(L,R,W)=>(r.push(L),a.push(e.slice(R,W)),n.push(R),s=W,!0),f=L=>{i.push(l),l=L},g=()=>{i.length>0&&(l=i.pop())},p=L=>e.startsWith(L,s)&&!et(e.charCodeAt(s+L.length)),m=L=>{for(;L<t&&je(e.charCodeAt(L));)L++;return L},x=L=>{let R=e.indexOf(L,s);return R===-1?t:R},y=L=>{let R=s,W=-1;for(let q=e.charCodeAt(R);R<t&&je(q);q=e.charCodeAt(++R))q===10&&(W=R);if(W<0){s=R;return}L&&g(),d(3,s,W+1)},$=L=>{switch(L){case 99:if(p("cssClass"))return d(48,s,s+8);if(p("callback"))return d(40,s,s+8);if(p("click"))return d(43,s,s+5);break;case 108:if(p("link"))return d(41,s,s+4);break;case 110:if(p("note for"))return d(24,s,s+8);if(p("note"))return d(25,s,s+4);break;case 60:if(e.charCodeAt(s+1)===60)return d(20,s,s+2);break;case 62:if(e.charCodeAt(s+1)===62)return d(21,s,s+2);break;case 104:if(p("href"))return d(46,s,s+4);break}return!1},k=L=>{if($(L))return!0;let R=e.charCodeAt(s+1);switch(L){case 34:return f(1),s++,!0;case 126:return f(3),s++,!0;case 96:return f(2),s++,!0;case 95:if(p("_self"))return d(42,s,s+5);if(p("_blank"))return d(42,s,s+6);if(p("_parent"))return d(42,s,s+7);if(p("_top"))return d(42,s,s+4);break;case 60:return R===124?d(34,s,s+2):d(36,s,s+1);case 124:return R===62&&d(34,s,s+2);case 62:return d(36,s,s+1);case 42:return d(35,s,s+1);case 111:if(!et(R))return d(33,s,s+1);break;case 40:return R===41&&d(37,s,s+2);case 45:return R===45?d(38,s,s+2):d(52,s,s+1);case 46:return R===46?d(39,s,s+2):d(8,s,s+1);case 58:{let W=s+1;for(;W<t;){let q=e.charCodeAt(W);if(q===58||q===10||q===59)break;W++}return W>s+1?d(10,s,W):R===58&&e.charCodeAt(s+2)===58&&d(19,s,s+3)}case 43:return d(58,s,s+1);case 37:return d(51,s,s+1);case 61:return d(59,s,s+1);case 91:return d(5,s,s+1);case 93:return d(7,s,s+1);case 33:case 35:case 36:case 38:case 39:case 44:case 63:case 92:case 47:return d(60,s,s+1)}if(et(L)){let W=s+1;for(;et(e.charCodeAt(W));)W++;return d(27,s,W)}return Cs(L)&&d(53,s,s+1)},I=()=>{if(o===-1||s<h||(o<s&&(o=e.indexOf("direction",s)),o===-1)||(c<s&&($p.lastIndex=s,c=$p.test(e)?$p.lastIndex-1:t),o>=c))return!1;for(let L=0;L<4;L++){let R=T_[L];if(R.lastIndex=s,R.test(e))return d(29+L,s,R.lastIndex)}return h=c,!1},_=L=>{if(I())return!0;if(je(L))return y(!1),!0;switch(L){case 37:if(e.charCodeAt(s+1)===37){let R=x(`
|
|
198
|
+
`);for(;R<t&&(e.charCodeAt(R)===10||e.charCodeAt(R)===13);)R++;return s=R,!0}break;case 97:{let R=e.startsWith("accTitle",s);if(!R&&!e.startsWith("accDescr",s))break;let W=m(s+8),q=e.charCodeAt(W);if(q===58)return d(R?11:13,s,m(W+1)),f(R?6:7),!0;if(q===123&&!R)return s=m(W+1),f(8),!0;break}case 99:if(p("classDiagram-v2"))return d(2,s,s+15);if(p("classDiagram"))return d(2,s,s+12);if(e.startsWith("call",s)&&je(e.charCodeAt(s+4)))return s=m(s+4),f(4),!0;if(p("classDef"))return d(26,s,s+8);if(p("class"))return f(9),d(22,s,s+5);break;case 91:if(e.startsWith("*]",s+1))return d(55,s,s+3);break;case 115:if(p("style"))return d(47,s,s+5);break;case 110:if(p("namespace"))return f(11),d(18,s,s+9);break;case 44:return d(28,s,s+1);case 35:return d(50,s,s+1)}return k(L)||L===58&&d(49,s,s+1)};for(;;){if(s>=t){r.push(S_[l]),a.push(""),n.push(t);break}let L=e.charCodeAt(s),R=!0;switch(l){case 0:R=_(L);break;case 9:je(L)?y(!0):L===125?(g(),g(),d(17,s,s+1)):L===123?(f(10),d(16,s,s+1)):R=k(L);break;case 10:if(L===34)f(1),s++;else if(L===125)g(),d(17,s,s+1);else if(L===91&&e.startsWith("*]",s+1))d(55,s,s+3);else if(L===123)d(57,s,s+1);else if(L===10)s++;else{let W=s+1;for(;W<t;){let q=e.charCodeAt(W);if(q===123||q===125||q===10)break;W++}d(23,s,W)}break;case 11:je(L)?y(!0):L===123?(f(12),d(16,s,s+1)):L===125?g():L===110&&p("namespace")?(f(11),d(18,s,s+9)):R=k(L);break;case 12:je(L)?y(!1):L===125?(g(),d(17,s,s+1)):L===110&&p("namespace")?(f(11),d(18,s,s+9)):L===91&&e.startsWith("*]",s+1)?d(55,s,s+3):L===99&&p("class")?(f(9),d(22,s,s+5)):R=k(L);break;case 1:L===34?(g(),s++):d(6,s,x('"'));break;case 3:if(L===34)f(1),s++;else{if($(L))break;L===126?(g(),s++):d(9,s,x("~"))}break;case 2:if(L===34)f(1),s++;else{if($(L))break;L===126?(f(3),s++):L===96?(g(),s++):d(54,s,x("`"))}break;case 4:if(L===40){let W=m(s+1);g(),e.charCodeAt(W)===41?s=W+1:(f(5),s++)}else d(44,s,x("("));break;case 5:L===41?(g(),s++):d(45,s,x(")"));break;case 6:case 7:d(l===6?12:14,s,x(`
|
|
199
|
+
`)),g();break;case 8:L===125?(g(),s++):d(15,s,x("}"));break}if(!R)return r.push(1),a.push(""),n.push(s),{types:r,texts:a,starts:n}}return r.push(0),a.push(""),n.push(t),{types:r,texts:a,starts:n}}function I_(e,t){let{types:r,texts:a,starts:n}=C_(e),i=0,l=L=>{let R=r[i];throw R===1?st("class",e,n[i],"",!0):st("class",e,n[i],`Expecting ${L}, got '${ex[R]}'`)},s=L=>(r[i]!==L&&l(`'${ex[L]}'`),a[i++]),o=()=>(Sh[r[i]]===0&&l("'UNICODE_TEXT', 'NUM', 'ALPHA', 'MINUS'"),a[i++]),c=L=>{let R="";for(;;){if(r[i]===54){R+=a[i++];break}Sh[r[i]]===0&&l(__),R+=a[i++];let W=r[i];if(W===8)R+=".",i++;else if(Sh[W]===0&&W!==54)break}return L&&r[i]===9&&(R+="~"+a[i++]+"~"),R},h=()=>{i++;let L=s(6);return s(7),L},d=()=>{r[i]!==23&&l("'STRUCT_STOP', 'MEMBER'");let L=[];for(;r[i]===23;)L.push(a[i++]);return s(17),L.reverse()},f=()=>{i++;let L=c(!0);switch(t.addClass(L),r[i]===5&&t.setClassLabel(L,h()),r[i]){case 19:{i++;let R=o();t.setCssClass(L,R),r[i]===16&&(i++,t.addMembers(L,d()));break}case 16:i++,r[i]===17?i++:t.addMembers(L,d());break;case 20:{i++;let R=o();s(21),t.addAnnotation(L,R),r[i]===16&&(i++,r[i]===17?i++:t.addMembers(L,d()));break}}return L},g=()=>{if(r[i++]===25)return t.addNote(s(6));let L=c(!0);return t.addNote(s(6),L)},p=()=>{let L=[];for(;;){i++;let R=c(!1),W=r[i]===5?t.addNamespace(R,h()):t.addNamespace(R);s(16),r[i]===3&&i++,L.push({id:W,classes:[],notes:[]});let q=!0;for(;q;){let C=L[L.length-1],K=r[i];if(K===18)break;for(K===22?C.classes.push(f()):K===25||K===24?C.notes.push(g()):l("'NAMESPACE', 'CLASS', 'NOTE_FOR', 'NOTE'");;){if(r[i]===3){let G=r[i+1];if(G===18||G===22||G===25||G===24){i++;break}i++}s(17);let Q=L.pop();if(t.addClassesToNamespace(Q.id,Q.classes,Q.notes),t.popNamespace(),L.length===0){q=!1;break}}}if(L.length===0)return}},m=()=>{let L=Bi[r[i]];return L===0?"none":(i++,L-1)},x=()=>{let L=c(!0),R=r[i];if(R===10){t.addMember(L,t.cleanupLabel(a[i++]));return}let W="none";if(R===6)W=a[i++],R=r[i];else if(Bi[R]===0&&R!==38&&R!==39)return;let q=m();R=r[i],R!==38&&R!==39&&l("'AGGREGATION', 'EXTENSION', 'COMPOSITION', 'DEPENDENCY', 'LOLLIPOP', 'LINE', 'DOTTED_LINE'"),i++;let C=m(),K=r[i]===6?a[i++]:"none",Q=c(!0),G={id1:L,id2:Q,relation:{type1:q,type2:C,lineType:R===38?0:1},relationTitle1:W,relationTitle2:K};r[i]===10&&(G.title=t.cleanupLabel(a[i++])),t.addRelation(G)},y=()=>{let L=[];for(;;){vp[r[i]]===0&&l("'ALPHA', 'NUM', 'COLON', 'UNIT', 'SPACE', 'BRKT', 'STYLE', 'PCT', 'LABEL'");let R=a[i++];for(;vp[r[i]]===1;)R+=a[i++];if(L.push(R),r[i]!==28)return L;i++}},$=L=>{r[i]===6&&t.setTooltip(L,a[i++])},k=L=>{let R=s(6),W=r[i]===6?a[i++]:void 0;r[i]===42?t.setLink(L,R,a[i++]):t.setLink(L,R),W!==void 0&&t.setTooltip(L,W)},I=()=>{let L=r[i];switch(L){case 53:case 27:case 52:case 54:x();return;case 18:p();return;case 22:f();return;case 23:i++;return;case 20:{i++;let R=o();s(21),t.addAnnotation(c(!0),R);return}case 40:{i++;let R=c(!0);t.setClickEvent(R,s(6)),$(R);return}case 41:i++,k(c(!0));return;case 43:{i++;let R=c(!0);if(r[i]===46){i++,k(R);return}let W=s(44);r[i]===45?t.setClickEvent(R,W,a[i++]):t.setClickEvent(R,W),$(R);return}case 47:{i++;let R=s(27);t.setCssStyle(R,y());return}case 48:{i++;let R=s(6);t.setCssClass(R,s(27));return}case 25:case 24:g();return;case 26:{i++;let R=[s(27)];for(;r[i]===28;)i++,R.push(s(27));t.defineClass(R,y());return}case 29:case 30:case 31:case 32:i++,t.setDirection(L===29?"TB":L===30?"BT":L===31?"RL":"LR");return;case 11:i++,t.setAccTitle(s(12).trim());return;case 13:i++,t.setAccDescription(s(14).trim());return;case 15:t.setAccDescription(a[i++].trim());return}l("'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'NAMESPACE', 'ANNOTATION_START', 'CLASS', 'MEMBER', 'NOTE_FOR', 'NOTE', 'CLASSDEF', 'direction_tb', 'CALLBACK', 'LINK', 'CLICK', 'STYLE', 'CSSCLASS', 'ALPHA', 'MINUS', 'BQUOTE_STR'")},_=r[i]===2;for(_&&(i++,s(3));I(),!(r[i]!==3||(i++,r[i]===4||r[i]===0)););_&&s(4),s(0)}function tx(e){return typeof e=="number"&&N_[e]||"none"}function L_(e,t=!0){let r=[],a=[],n=new Map,i=new Map,l=new Map,s=new Map,o=f=>{if(t||f===void 0)return f;let g=[],p=f,m;for(;p;){if(s.has(p)){m=s.get(p);break}let x=e.namespaces.get(p);if(x===void 0)break;if(x.explicit){m=p;break}g.push(p),p=x.parent}for(let x of g)s.set(x,m);return m},c=f=>f===void 0?-1:n.get(f)??-1;for(let f of e.namespaces.values())!t&&!f.explicit||(n.set(f.id,r.length),r.push({id:f.id,label:t?f.label:f.id,isGroup:!0,shape:"rect",parentId:t?f.parent:void 0,parent:-1}));for(let f of r)f.parent=c(f.parentId);let h=0;for(let f of e.classes.values()){let g=o(f.parent);i.set(f.id,r.length),r.push({id:f.id,label:f.label,isGroup:!1,shape:"classBox",parentId:g,parent:c(g),classNode:f,colorIndex:h++})}for(let f of e.notes.values()){let g=o(f.parent),p=f.class===void 0?void 0:i.get(f.class);p!==void 0&&a.push({id:`edgeNote${f.index}`,start:f.id,end:r[p].id,source:r.length,target:p,label:void 0,arrowTypeStart:"none",arrowTypeEnd:"none",startLabelRight:"",endLabelLeft:"",pattern:"dotted",classes:"relation"}),r.push({id:f.id,label:f.text,isGroup:!1,shape:"note",parentId:g,parent:c(g)})}for(let f of e.interfaces){let g=i.get(f.classId);l.set(f.id,r.length),r.push({id:f.id,label:f.label,isGroup:!1,shape:"interface",parentId:void 0,parent:g===void 0?-1:r[g].parent})}let d=0;for(let f of e.relations){d++;let{type1:g,type2:p}=f.relation,m=g===yo.LOLLIPOP&&p==="none"?l:i,x=m===i&&p===yo.LOLLIPOP&&g==="none"?l:i;a.push({id:`id_${f.id1}_${f.id2}_${d}`,start:f.id1,end:f.id2,source:m.get(f.id1)??-1,target:x.get(f.id2)??-1,label:f.title,arrowTypeStart:tx(g),arrowTypeEnd:tx(p),startLabelRight:f.relationTitle1==="none"?"":f.relationTitle1,endLabelLeft:f.relationTitle2==="none"?"":f.relationTitle2,pattern:f.relation.lineType===1?"dashed":"solid",classes:"relation"})}return{nodes:r,edges:a}}function rx(e){switch(e){case"extension":return Ap;case"composition":case"aggregation":return mo;case"lollipop":return 2*Th;case"dependency":return xt("arrow_point")}return 0}function ax(e,t,r,a,n,i){let l=-n,s=a;switch(e){case"extension":{let o=t-a*Ap,c=r-n*Ap;return`<path class="pele-marker" d="M${u(t)},${u(r)}L${u(o+l*go)},${u(c+s*go)}L${u(o-l*go)},${u(c-s*go)}Z" stroke-linejoin="round"/>`}case"composition":case"aggregation":{let o=t-a*mo/2,c=r-n*mo/2,h=go-1;return`<path class="pele-marker" d="M${u(t)},${u(r)}L${u(o+l*h)},${u(c+s*h)}L${u(t-a*mo)},${u(r-n*mo)}L${u(o-l*h)},${u(c-s*h)}Z" stroke-linejoin="round"${e==="composition"?` fill="${i}"`:""}/>`}case"lollipop":return`<circle class="pele-marker" cx="${u(t-a*Th)}" cy="${u(r-n*Th)}" r="${Th}"/>`;case"dependency":return Mt("arrow_point",t,r,a,n,i)}return""}function lx(e,t,r){let a=e[t];return typeof a=="number"&&a>0?Math.min(a,2e3):r}function ox(e,t,r){let a=Tt(e.getDisplayDetails().displayText).trim();return{text:a,width:t.width(a,r,e.classifier==="*"?2:0),classifier:e.classifier}}function F_(e,t,r){let a=n=>Yr(r,i=>B_(e,t,r,n,i));return na(e.direction)?jt(r,a):a(!1)}function B_(e,t,r,a,n){let i=t.class??{},l=L_(e,i.hierarchicalNamespaces!==!1),s=i.hideEmptyMembersBox===!0,o=r.fontSize??16,c=Math.round(o*.875),h=Math.round(o*.8),d=Math.round(h*1.4),f=r.measurer??rt(r.fontFamily),g=r.padding??8,p=(he,pe)=>{if(!he.includes("$$"))return;let be=Be(he,!1,f,pe,4e3);return be.lines.some(_s)?be:void 0},m=he=>he?p(he,h)?.width??f.width(Tt(he),h,0):0,x=a?"TB":Cr(e.direction),y=new Map,$=new Map,k=new Map,I=he=>{let pe=y.get(he);if(pe===void 0){let be=Ct([he]);pe=be.shape===""&&be.text===""?"":he.slice(0,he.indexOf(":")).trim().toLowerCase(),y.set(he,pe)}pe!==""&&k.set(pe,he)},_=he=>{k.clear();let pe=$.get(he.cssClasses);if(pe===void 0){for(let be of he.cssClasses.split(" ")){let Ne=e.styleClasses.get(be);if(Ne)for(let Oe of Ne.styles)for(let Ye of Oe.split(","))I(Ye)}pe=[...k],$.set(he.cssClasses,pe)}else for(let[be,Ne]of pe)k.set(be,Ne);for(let be of he.styles)I(be);return Ct(k.size===0?Eh:[...k.values()])},L=new Int32Array(l.nodes.length);for(let he of l.nodes)he.parent>=0&&L[he.parent]++;let R=new Uint8Array(l.nodes.length);for(let he of l.edges){if(he.source<0||he.target<0)continue;let pe=l.nodes[he.source].parent,be=l.nodes[he.target].parent;if(pe!==be){for(let Ne=pe;Ne>=0&&R[Ne]===0;Ne=l.nodes[Ne].parent)R[Ne]=1;for(let Ne=be;Ne>=0&&R[Ne]===0;Ne=l.nodes[Ne].parent)R[Ne]=1}}let W=[],q=[];l.nodes.forEach((he,pe)=>{let be,Ne;if(he.isGroup){let Oe=Be(he.label,!1,f,o,4e3);be=C(he,Oe,0,0,o),L[pe]>0?(Ne=Kt(0,0),Ne.isGroup=!0,Ne.padX=Fi,Ne.padTop=Oe.height>0?Oe.height+16:Fi,Ne.padBottom=Fi,Ne.minW=Oe.width+2*Fi-12+(R[pe]===1&&!n?Math.min(Oe.width+24,240):0)):(be.w=Math.max(Oe.width+2*Fi,80),be.h=Oe.height+2*Fi,Ne=Kt(be.w,be.h))}else if(he.classNode)be=K(he,he.classNode),Ne=Kt(be.w,be.h);else if(he.shape==="note"){let Oe=Be(he.label,!0,f,c,260);be=C(he,Oe,Math.max(Oe.width+2*kp,40),Oe.height+2*Mh,c),Ne=Kt(be.w,be.h)}else{let Oe=Be(he.label,!1,f,c,200);be=C(he,Oe,Math.max(Oe.width,12)+4,Math.max(Oe.height,12),c),Ne=Kt(be.w,be.h)}Ne.parent=he.parent,Ne.seq=pe,W.push(be),q.push(Ne)});function C(he,pe,be,Ne,Oe){return{node:he,style:Ct(Eh),label:pe,w:be,h:Ne,loops:0,annotations:Eh,attributes:Ah,methods:Ah,titleH:0,attributesH:0,fontSize:Oe}}function K(he,pe){let be=_(pe),Ne=be.fontSize??o,Oe=Math.round(Ne*.875),Ye=Math.round(Oe*1.5),de=pe.type?"<"+Di(pe.type).replace(/</g,"<").replace(/>/g,">")+">":"",Me=Be(pe.label+de,!1,f,Ne,4e3,1|(be.italic?2:0)),_e=pe.annotations.length>0?pe.annotations.map(ke=>p(`\xAB${ke.trim()}\xBB`,h)??`\xAB${Tt(ke).trim()}\xBB`):Eh,$e=pe.members.length>0?pe.members.map(ke=>ox(ke,f,Oe)):Ah,ve=pe.methods.length>0?pe.methods.map(ke=>ox(ke,f,Oe)):Ah,Le=Me.width,qe=0;for(let ke of _e)Le=Math.max(Le,typeof ke=="string"?f.width(ke,h,0):ke.width),qe+=typeof ke=="string"?d:Math.max(d,ke.height);for(let ke of $e)Le=Math.max(Le,ke.width);for(let ke of ve)Le=Math.max(Le,ke.width);let Fe=!(s&&$e.length===0&&ve.length===0),V=ke=>Fe?ke>0?2*sx+ke*Ye:D_:0,me=2*Mh+qe+Math.max(Me.height,Math.round(Ne*1.5)),ne=V($e.length);return{node:he,style:be,label:Me,w:Math.max(Le+2*kp,P_),h:me+ne+V(ve.length),loops:0,annotations:_e,attributes:$e,methods:ve,titleH:me,attributesH:ne,fontSize:Ne}}let Q=[],G=[],Y=[],N=[],S=[],M=new Float64Array(W.length*4),b=(he,pe,be)=>{M[he*4+pe]++,be>M[he*4+pe+1]&&(M[he*4+pe+1]=be)};for(let he of l.edges){if(he.source<0||he.target<0)continue;let pe=Be(he.label,!0,f,c,200),be=m(he.startLabelRight),Ne=m(he.endLabelLeft);he.source===he.target?(W[he.source].loops++,q[he.source].w+=2*(ix+(pe.width>0?pe.width+12:0))):(b(he.source,0,be),b(he.target,2,Ne)),N.push(be),S.push(Ne),G.push(he),Y.push(pe),Q.push({src:he.source,dst:he.target,minlen:1,labelW:pe.width>0?pe.width+12:0,labelH:pe.height>0?pe.height+4:0,route:[],labelX:0,labelY:0})}if(x==="TB"||x==="BT")for(let he=0;he<W.length;he++){if(!W[he].node.classNode)continue;let pe=0;for(let be=0;be<4;be+=2){let Ne=M[he*4+be],Oe=M[he*4+be+1];Ne>1&&(pe=Math.max(pe,(Ne-1)*(Oe>0?Oe+24:14)+24))}pe=Math.min(pe,480),pe>W[he].w&&(q[he].w+=pe-W[he].w,W[he].w=pe)}let E=!1;for(let he=0;he<G.length&&!E;he++)E=N[he]>0||S[he]>0;let w=0;if(x==="TB"||x==="BT"){let he=pe=>pe?Math.max(d,p(pe,h)?.height??0):0;for(let pe of G)w=Math.max(w,he(pe.startLabelRight)+he(pe.endLabelLeft)-2*d)}let T=aa(q,Q,x,{nodeSep:lx(i,"nodeSpacing",R_),edgeSep:O_,rankSep:lx(i,"rankSpacing",E?nx+16:nx)+w,portSep:20,apart:!0}),A=new Map,v=[],D=(he,pe,be,Ne,Oe)=>{let Ye=he.route,de=q[be],Me=_a(Ye,pe,de);if(Me<0)return;let _e=(de.w-W[be].w)/2;Me===1?Ye[pe]-=_e:Me===3&&(Ye[pe]+=_e);let $e=Me&1,ve=Ye[(pe===0?3:pe-3)+$e],Le=ve-Ye[pe+$e],qe={route:Ye,at:pe,toward:ve,order:Oe,room:Ne,side:Me,after:$e?Le>0:Le>=0},Fe=be*4+Me,V=A.get(Fe);return V?V.push(qe):A.set(Fe,[qe]),qe},z=[],H=[];for(let he=0;he<Q.length;he++){let pe=Q[he],be=pe.src!==pe.dst&&pe.route.length>=6;z.push(be?D(pe,0,pe.src,N[he],he):void 0),H.push(be?D(pe,pe.route.length-3,pe.dst,S[he],he):void 0)}let P=(he,pe,be)=>{for(let Ne=q[he].parent,Oe=0;Ne>=0&&Oe<1e4;Ne=q[Ne].parent,Oe++){let Ye=q[Ne],de=Math.abs(pe-Ye.x),Me=Math.abs(be-Ye.y);if(Math.abs(Me-Ye.h/2)<.5&&de<=Ye.w/2+.5||Math.abs(de-Ye.w/2)<.5&&Me<=Ye.h/2+.5)return!0}return!1},O=[];for(let[he,pe]of A){if(pe.length<2)continue;let be=he>>2,Ne=he&1,Oe=Ne?W[be].h:W[be].w;pe.sort((_e,$e)=>_e.toward-$e.toward||_e.order-$e.order);let Ye=0;for(let _e=0;_e+1<pe.length;_e++){let $e=pe[_e],ve=pe[_e+1],Le=Ne?20:24;$e.room>0&&$e.after&&(Le+=Ne?d+6:$e.room),ve.room>0&&!ve.after&&(Le+=Ne?d+6:ve.room),O[_e]=Le,Ye+=Le}let de=Math.min(1,(Oe-24)/Ye);if(de<=0)continue;let Me=(Ne?q[be].y:q[be].x)-Ye*de/2;for(let _e=0;_e<pe.length;_e++){let{route:$e,at:ve}=pe[_e],Le=ve===0?3:-3,qe=ve+Le,Fe=-1;for(let V=qe;V>=0&&V<$e.length&&Math.abs($e[V+Ne]-$e[qe+Ne])<.5;V+=Le)if(P(be,$e[V],$e[V+1])){Fe=V;break}if(Fe>=0&&Math.abs($e[qe+Ne]-Me)<=24)for(let V=qe;V!==Fe+Le;V+=Le)$e[V+Ne]=Me;$e[ve+Ne]=Me,Me+=O[_e]*de}}let F=(he,pe,be,Ne)=>{if(pe===void 0||be<=0)return;let Oe=pe.side&1,Ye=Ne?0:he.length-3,de=Ye+1-Oe,Me=Math.abs(he[(Ne?3:Ye-3)+1-Oe]-he[de]),_e=Math.min(Oe?be+10:d+6,Me*.35);if(_e<4)return;let $e=[he[Ye],he[Ye+1],he[Ye+2]];$e[1-Oe]+=(pe.side===0||pe.side===3?-1:1)*_e,he.splice(Ne?3:Ye,0,$e[0],$e[1],$e[2])};for(let he=0;he<Q.length;he++)F(Q[he].route,z[he],N[he],!0),F(Q[he].route,H[he],S[he],!1);let U=0,j=0,J=T.width,Z=T.height,B=(he,pe,be,Ne,Oe,Ye)=>{if(!he)return;let de=p(he,h),Me=de?Math.max(d,de.height):d,_e=be,$e=Ne;Oe&1?(_e+=(Oe===3?-1:1)*(5+pe/2),$e+=(Ye?1:-1)*(7+Me/2)):(_e+=(Ye?1:-1)*(9+pe/2),$e+=(Oe===0?-1:1)*(3+Me/2)),v.push({text:Tt(he),math:de,x:_e,y:$e}),U=Math.min(U,_e-pe/2),J=Math.max(J,_e+pe/2),j=Math.min(j,$e-Me/2),Z=Math.max(Z,$e+Me/2)},X=new Map,te=new Int32Array(Q.length);for(let he=0;he<Q.length;he++){let pe=Q[he],be=G[he],Ne=pe.route;if(pe.src===pe.dst){let Oe=X.get(pe.src)??0;X.set(pe.src,Oe+1),te[he]=Oe;let Ye=q[pe.src],de=W[pe.src],Me=Ye.x+de.w/2,_e=Math.min(de.h/2-4,8+Oe*6);B(be.startLabelRight,N[he],Me,Ye.y-_e,1,!1),B(be.endLabelLeft,S[he],Me,Ye.y+_e,1,!0)}else if(Ne.length>=6){let Oe=Ne.length-3,Ye=z[he],de=H[he];B(be.startLabelRight,N[he],Ne[0],Ne[1],Ye?Ye.side:2,Ye?Ye.after:!0),B(be.endLabelLeft,S[he],Ne[Oe],Ne[Oe+1],de?de.side:0,de?de.after:!0)}}let se=g-U,ce=g-j,ae=Math.ceil(J-U+2*g),ie=Math.ceil(Z-j+2*g),ee=[],re=new Map;if(l.nodes.length>0&&l.nodes[0].isGroup)for(let he of Q)Ya(re,he.route);let fe="",ye="",oe="";for(let he=0;he<W.length;he++){let pe=W[he],be=q[he],Ne=pe.node,Oe=be.x+se,Ye=be.y+ce,de=Pe(Ne.id),Me=be.isGroup?be.w:pe.w,_e=be.isGroup?be.h:pe.h;if(Ne.isGroup){let ve=be.isGroup?Xn(be,pe.label.width,re,Fi):be.x,Le=Ye-_e/2+8+pe.label.height/2,qe=' class="pele-cluster-label" fill="var(--_m)"',Fe=be.isGroup&&Hc(be,pe.label.width,ve,re);Fe&&(ye+=Uc(pe.label,ve+se,Le,qe,de,l.nodes,he)),fe+=`<g class="pele-cluster pele-namespace" data-id="${de}"><rect x="${u(Oe-Me/2)}" y="${u(Ye-_e/2)}" width="${u(Me)}" height="${u(_e)}" fill="var(--_a)" fill-opacity="0.5" stroke="var(--_b)"${ot}/>`+(Fe?"":Re(pe.label,ve+se,Le,qe))+"</g>";continue}let $e=` transform="translate(${u(Oe)},${u(Ye)})"`;if(Ne.classNode)oe+=we(pe,Ne.classNode,de,$e);else if(Ne.shape==="note"){let ve=Me/2,Le=-_e/2;oe+=`<g class="pele-node pele-note" data-id="${de}"${$e}><path d="M${u(-ve)},${u(Le)}H${u(ve-vh)}L${u(ve)},${u(Le+vh)}V${u(-Le)}H${u(-ve)}Z" fill="var(--_a)" stroke="var(--_b)" stroke-linejoin="round"/><path d="M${u(ve-vh)},${u(Le)}V${u(Le+vh)}H${u(ve)}" fill="none" stroke="var(--_b)" stroke-linejoin="round"/>`+Re(pe.label,0,0,` class="pele-label" font-size="${c}"`,r.icons)+"</g>"}else oe+=`<g class="pele-node pele-interface" data-id="${de}"${$e}>`+Re(pe.label,0,0,` class="pele-label" font-size="${c}"`,r.icons)+"</g>"}function we(he,pe,be,Ne){let{w:Oe,h:Ye,style:de}=he,Me=-Oe/2,_e=-Ye/2,$e=Math.round(he.fontSize*.875),ve=Math.round($e*1.5),Le=`<rect x="${u(Me)}" y="${u(_e)}" width="${u(Oe)}" height="${u(Ye)}" fill="var(--_s)" stroke="var(--_b)"${gt(de.shape)}/>`,qe=_e+he.titleH,Fe=qe+he.attributesH;if(Ye>he.titleH){let ke=de.stroke?` style="stroke:${Qe(de.stroke)}"`:"";Le+=`<path class="pele-divider" d="M${u(Me)},${u(qe)}H${u(-Me)}M${u(Me)},${u(Fe)}H${u(-Me)}" fill="none" stroke="var(--_b)"${ke}/>`}let V=_e+Mh;for(let ke of he.annotations)if(typeof ke=="string")Le+=`<text class="pele-annotation" x="0" y="${u(V+d/2+h*.35)}" text-anchor="middle" font-size="${h}" fill="var(--_m)">${Qe(ke)}</text>`,V+=d;else{let Ee=Math.max(d,ke.height);Le+=Re(ke,0,V+Ee/2,` class="pele-annotation" font-size="${h}" fill="var(--_m)"`,r.icons),V+=Ee}let me=he.fontSize===o?"":` font-size="${u(he.fontSize)}"`;Le+=Re(he.label,0,(V+qe-Mh)/2,` class="pele-label"${me} font-weight="var(--_hw)"${de.text}`,r.icons);let ne=(ke,Ee,Ce)=>{let De="",Ie=Ce+sx+ve/2+$e*.35;for(let He of ke){let Se=He.classifier==="$"?` pele-static"${de.text?de.text.slice(0,-1)+'text-decoration:underline"':' style="text-decoration:underline"'}`:He.classifier==="*"?` pele-abstract" font-style="italic"${de.text}`:`"${de.text}`;De+=`<text class="pele-member pele-${Ee}${Se} x="${u(Me+kp)}" y="${u(Ie)}">${Qe(He.text)}</text>`,Ie+=ve}return De};return(he.attributes.length>0||he.methods.length>0)&&(Le+=`<g class="pele-members" font-size="${$e}">${ne(he.attributes,"attribute",qe)}${ne(he.methods,"method",Fe)}</g>`),pe.tooltip&&(Le=`<title>${Pe(pe.tooltip)}</title>`+Le),pe.link&&(Le=Ca(Le,pe.link,pe.id,ee,r,pe.linkTarget&&z_.has(pe.linkTarget)?` target="${pe.linkTarget}"`:"")),`<g class="pele-node pele-class${Dt(pe.cssClasses.replace(/^default\s?/,""))}" data-id="${be}"${Ne}>${Le}</g>`}let ue="",ge="";for(let he=0;he<Q.length;he++){let pe=Q[he],be=G[he],Ne=Y[he],Oe=be.arrowTypeStart,Ye=be.arrowTypeEnd,de=rx(Oe),Me=rx(Ye),_e;if(pe.src===pe.dst){let ve=q[pe.src],Le=W[pe.src],qe=te[he],Fe=ve.x+se+Le.w/2,V=ve.y+ce,me=Math.min(Le.h/2-4,8+qe*6),ne=ix+qe*8;_e={d:`M${u(Fe+de)},${u(V-me)}C${u(Fe+ne+de)},${u(V-me)} ${u(Fe+ne+Me)},${u(V+me)} ${u(Fe+Me)},${u(V+me)}`,sx:Fe,sy:V-me,sdx:-1,sdy:0,ex:Fe,ey:V+me,edx:-1,edy:0},pe.labelX=ve.x+Le.w/2+ne+4+pe.labelW/2,pe.labelY=ve.y}else{let ve=pe.route;for(let Le=0;Le<ve.length;Le+=3)ve[Le]+=se,ve[Le+1]+=ce;_e=Xr(ve,void 0,de,Me)}let $e=be.pattern==="dashed"?' stroke-dasharray="6 4"':be.pattern==="dotted"?' stroke-dasharray="2 4"':"";if(ue+=`<g class="pele-edge${be.pattern==="dotted"?" pele-note-edge":" pele-relation"}" data-id="${Pe(be.id)}"><path d="${_e.d}"${$e}/>`+ax(Oe,_e.sx,_e.sy,_e.sdx,_e.sdy,Mp)+ax(Ye,_e.ex,_e.ey,_e.edx,_e.edy,Mp)+"</g>",Ne.width>0){let ve=pe.labelX+se,Le=pe.labelY+ce;ge+=Tr(be.id,Ne,ve,Le,"",r.icons)}}let Ae="";for(let he of v)Ae+=he.math?Re(he.math,he.x+se,he.y+ce,' class="pele-cardinality"',r.icons):`<text class="pele-cardinality" x="${u(he.x+se)}" y="${u(he.y+ce+h*.35)}" text-anchor="middle">${Qe(he.text)}</text>`;let Te=th(e.title,f,o,g,ae,ie,(fe?`<g class="pele-clusters">${fe}</g>`:"")+(ue?`<g class="pele-edges" fill="none" stroke="${Mp}" stroke-linecap="round">${ue}</g>`:"")+(ye?`<g class="pele-cluster-titles">${ye}</g>`:"")+(ge?`<g class="pele-edge-labels" font-size="${c}">${ge}</g>`:"")+(Ae?`<g class="pele-cardinalities" font-size="${h}" fill="var(--_m)">${Ae}</g>`:"")+`<g class="pele-nodes">${oe}</g>`);return{svg:tt("class",Te.width,Te.height,o,r,e,Te.content),width:Te.width,height:Te.height,links:ee}}var Q2,v_,yo,A_,E_,ex,S_,T_,$p,Ep,Sh,vp,Bi,__,N_,Ap,mo,go,Th,R_,O_,nx,Fi,ix,kp,Mh,sx,D_,P_,vh,Mp,z_,Ah,Eh,cx,hx=Ge(()=>{xe();Ju();qc();Is();Kn();qa();In();Qn();or();Gt();$r();yt();kt();Q2=class{constructor(e,t){le(this,"id","");le(this,"memberType");le(this,"visibility","");le(this,"classifier","");le(this,"parameters","");le(this,"returnType","");this.memberType=t,(t!=="method"||!this.parseMethod(e))&&this.parseAttribute(e),this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim()}parseMethod(e){let t=e.length;for(let r=0;r<t;){let a=r;for(;a<t&&!Ti(e.charCodeAt(a));)a++;let n=a-1;for(;n>r&&e.charCodeAt(n)!==41;)n--;let i=n-1;for(;i>r&&e.charCodeAt(i)!==40;)i--;if(i>r){let l=e[r],s=Z2(l)&&i>r+1;s&&(this.visibility=l),this.id=e.slice(s?r+1:r,i),this.parameters=e.slice(i+1,n).trim();let o=n+1,c="";if(o<t){let d=e[o];(d==="$"||d==="*"||d.trim()==="")&&(c=d.trim(),o++)}let h=o;for(;h<t&&!Ti(e.charCodeAt(h));)h++;if(this.returnType=e.slice(o,h).trim(),c===""){let d=this.returnType.slice(-1);(d==="$"||d==="*")&&(c=d,this.returnType=this.returnType.slice(0,-1))}return this.classifier=c,!0}r=a+1}return this.memberType="attribute",!1}parseAttribute(e){let t=e.slice(0,1),r=e.slice(-1);Z2(t)&&(this.visibility=t),(r==="$"||r==="*")&&(this.classifier=r),this.id=e.substring(this.visibility===""?0:1,this.classifier===""?e.length:e.length-1)}getDisplayDetails(){let e=this.visibility+Di(this.id);return this.memberType==="method"&&(e+=`(${Di(this.parameters.trim())})`,this.returnType&&(e+=" : "+Di(this.returnType))),{displayText:e.trim(),cssStyle:this.parseClassifier()}}parseClassifier(){return this.classifier==="*"?"font-style:italic;":this.classifier==="$"?"text-decoration:underline;":""}},v_={LINE:0,DOTTED_LINE:1},yo={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},A_="classId-";E_=class{constructor(){le(this,"type","class");le(this,"lineType",v_);le(this,"relationType",yo);le(this,"direction","TB");le(this,"classes",new Map);le(this,"relations",[]);le(this,"notes",new Map);le(this,"namespaces",new Map);le(this,"interfaces",[]);le(this,"styleClasses",new Map);le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"namespaceStack",[]);le(this,"withCssClass",new Map)}addClass(e){let{className:t,type:r}=ai(e);if(this.classes.has(t))return;let a={id:t,type:r,label:t,cssClasses:"default",methods:[],members:[],annotations:[],styles:[]};this.classes.set(t,a),this.tag(a,"default")}tag(e,t){let r=this.withCssClass.get(t);r?r.add(e):this.withCssClass.set(t,new Set([e]))}ensure(e){return this.addClass(e),this.classes.get(ai(e).className)}setClassLabel(e,t){this.ensure(e).label=t}addRelation(e){let{type1:t,type2:r}=e.relation;t===yo.LOLLIPOP&&r==="none"?(this.addClass(e.id2),e.id1=this.addInterface(e.id1,e.id2)):r===yo.LOLLIPOP&&t==="none"?(this.addClass(e.id1),e.id2=this.addInterface(e.id2,e.id1)):(this.addClass(e.id1),this.addClass(e.id2)),e.id1=ai(e.id1).className,e.id2=ai(e.id2).className,e.relationTitle1=e.relationTitle1.trim(),e.relationTitle2=e.relationTitle2.trim(),this.relations.push(e)}addInterface(e,t){let r=`interface${this.interfaces.length}`;return this.interfaces.push({id:r,label:e,classId:t}),r}addAnnotation(e,t){this.ensure(e).annotations.push(t)}addMember(e,t){let r=this.ensure(e);if(typeof t!="string")return;let a=t.trim();if(a.startsWith("<<")&&a.endsWith(">>"))r.annotations.push(a.substring(2,a.length-2));else if(a.indexOf(")")>0){let n=new Q2(a,"method");(n.memberType==="method"?r.methods:r.members).push(n)}else a&&r.members.push(new Q2(a,"attribute"))}addMembers(e,t){if(Array.isArray(t)){t.reverse();for(let r of t)this.addMember(e,r)}}addNote(e,t){let r=this.notes.size,a=`note${r}`;return this.notes.set(a,{id:a,class:t,text:e,index:r}),a}cleanupLabel(e){return(e.startsWith(":")?e.substring(1):e).trim()}setCssClass(e,t){for(let r of e.split(",")){let a=this.classes.get(J2(r));if(a!==void 0){a.cssClasses+=" "+t;for(let n of t.split(" "))this.tag(a,n)}}}defineClass(e,t){for(let r of e){let a=this.styleClasses.get(r);if(a===void 0&&(a={id:r,styles:[],textStyles:[]},this.styleClasses.set(r,a)),!t)continue;for(let l of t)l.includes("color")&&a.textStyles.push(l.replace("fill","bgFill")),a.styles.push(l);let n=this.withCssClass.get(r);if(n===void 0)continue;let i=t.flatMap(l=>l.split(","));for(let l of n)for(let s of i)l.styles.push(s)}}setTooltip(e,t){if(t!==void 0)for(let r of e.split(",")){let a=this.classes.get(ai(r).className);a&&(a.tooltip=t)}}setLink(e,t,r){let a=Tt(t).trim();for(let n of e.split(",")){let i=this.classes.get(J2(n));i&&(i.link=a?Ga(a):void 0,i.linkTarget=typeof r=="string"?r:"_blank")}this.setCssClass(e,"clickable")}setClickEvent(e,t,r){for(let a of e.split(",")){let n=this.classes.get(ai(a).className);n&&(n.haveCallback=!0)}this.setCssClass(e,"clickable")}setDirection(e){this.direction=e}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
200
|
+
`)}addNamespace(e,t){let r=this.namespaceStack[this.namespaceStack.length-1],a=r?`${r}.${e}`:e;this.namespaceStack.push(a);let n=this.namespaces.get(a);if(n)return n.explicit=!0,t&&(n.label=t),a;let i=r||void 0,l=r?r.length+1:0;for(;;){let s=a.indexOf(".",l),o=s===-1,c=o?a:a.slice(0,s),h=this.namespaces.get(c);if(h===void 0){let f=a.slice(l,o?a.length:s);h={id:c,label:o&&t?t:f,classes:new Map,notes:new Map,children:new Map,parent:i,explicit:o},this.namespaces.set(c,h)}else o&&(h.explicit=!0);let d=i?this.namespaces.get(i):void 0;if(d&&(d.children.has(c)||d.children.set(c,h),h.parent??(h.parent=i)),o)return a;i=c,l=s+1}}popNamespace(){this.namespaceStack.pop()}addClassesToNamespace(e,t,r){let a=this.namespaces.get(e);if(a!==void 0){for(let n of t){let{className:i}=ai(n),l=this.classes.get(i);l!==void 0&&(l.parent=e,a.classes.set(i,l))}for(let n of r){let i=this.notes.get(n);i!==void 0&&(i.parent=e,a.notes.set(n,i))}}}setCssStyle(e,t){let r=this.classes.get(e);if(!(!t||!r))for(let a of t)for(let n of a.split(","))r.styles.push(n)}},ex=["$end","INVALID","CLASS_DIAGRAM","NEWLINE","EOF","SQS","STR","SQE","DOT","GENERICTYPE","LABEL","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","STRUCT_START","STRUCT_STOP","NAMESPACE","STYLE_SEPARATOR","ANNOTATION_START","ANNOTATION_END","CLASS","MEMBER","NOTE_FOR","NOTE","CLASSDEF","ALPHA","COMMA","direction_tb","direction_bt","direction_rl","direction_lr","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","LOLLIPOP","LINE","DOTTED_LINE","CALLBACK","LINK","LINK_TARGET","CLICK","CALLBACK_NAME","CALLBACK_ARGS","HREF","STYLE","CSSCLASS","COLON","BRKT","PCT","MINUS","UNICODE_TEXT","BQUOTE_STR","EDGE_STATE","EOF_IN_STRUCT","OPEN_IN_STRUCT","PLUS","EQUALS","PUNCTUATION"],S_=[4,6,4,9,44,45,12,14,15,4,56,4,56],T_=[/.*direction\s+TB[^\n]*/y,/.*direction\s+BT[^\n]*/y,/.*direction\s+RL[^\n]*/y,/.*direction\s+LR[^\n]*/y],$p=/[\n\r\u2028\u2029]/g;Ep=61,Sh=new Uint8Array(Ep);for(let e of[53,27,52])Sh[e]=1;vp=new Uint8Array(Ep);for(let e of[27,49,50,47,51,10])vp[e]=1;Bi=new Uint8Array(Ep);Bi[33]=1;Bi[34]=2;Bi[35]=3;Bi[36]=4;Bi[37]=5;__="'UNICODE_TEXT', 'NUM', 'ALPHA', 'MINUS', 'BQUOTE_STR'";N_=["aggregation","extension","composition","dependency","lollipop"];Ap=12,mo=16,go=6,Th=5;R_=40,O_=16,nx=56,Fi=20,ix=26,kp=12,Mh=8,sx=6,D_=10,P_=64,vh=8,Mp="var(--_l)",z_=new Set(["_self","_blank","_parent","_top"]);Ah=[],Eh=[];cx={type:"class",math:!0,parse(e,t,r){let a=new E_;return r&&(a.title=r),I_(e,a),a},render:F_}});var dx={};Rt(dx,{classDiagram:()=>cx});var fx=Ge(()=>{xe();hx()});function Ir(e,t,r){for(let a=0;a<r.length;a++){let n=e.charCodeAt(t+a),i=r.charCodeAt(a);if(n!==i&&!(i>=97&&i<=122&&n===i-32))return!1}return!0}var Sp=Ge(()=>{xe()});function Ch(e,t,r){return new Ke(`value for ${e} ${t} is invalid, please use a valid ${r}`,"semantic",{type:"quadrantChart"})}function q_(e){let t=e.trim(),r=t.indexOf(":");if(r===-1)return[t,"undefined"];let a=t.slice(r+1).trimStart(),n=a.indexOf(":");return[t.slice(0,r).trimEnd(),n===-1?a:a.slice(0,n).trimEnd()]}function px(e){let t={};for(let r of e){let[a,n]=q_(r);if(a==="radius"){if(!W_.test(n))throw Ch(a,n,"number");t.radius=parseInt(n)}else if(a==="color"){if(!ux.test(n))throw Ch(a,n,"hex code");t.color=n}else if(a==="stroke-color"){if(!ux.test(n))throw Ch(a,n,"hex code");t.strokeColor=n}else if(a==="stroke-width"){if(!Y_.test(n))throw Ch(a,n,"number of pixels (eg. 10px)");t.strokeWidth=n}else throw new Ke(`style named ${a} is not supported.`,"semantic",{type:"quadrantChart"})}return t}function Rn(e){return{text:e.text.trim(),type:e.type}}function H_(e){let t=e.length,r=[],a=[],n=[],i=[],l=0,s=0,o=0,c=0,h=0,d=0,f=0,g=0,p=0,m=0,x=(R,W,q)=>{r.push(R),a.push(e.slice(W,q)),n.push(W),s=q},y=R=>{i.push(l),l=R},$=()=>{i.length>0&&(l=i.pop())},k=R=>{let W=e.indexOf(`
|
|
201
|
+
`,R);return W===-1?t:W},I=R=>{for(;e.charCodeAt(R)===32;)R++;return R},_=R=>{for(;R<t&&je(e.charCodeAt(R));)R++;return R},L=R=>{let W=e.charCodeAt(R);if(W===49)return R+1;if(W!==48)return-1;let q=R+1;if(q<t&&!Ti(e.charCodeAt(q))&&mt(e.charCodeAt(q+1)))for(q+=2;mt(e.charCodeAt(q));)q++;return q};e:for(;s<t;){let R=e.charCodeAt(s),W=e.charCodeAt(s+1);switch(l){case 0:break;case 1:case 2:case 3:x(Tp[l],s,k(s)),$();continue;case 4:if(R===125)s++,$();else{let N=e.indexOf("}",s);x(9,s,N===-1?t:N)}continue;case 5:if(R===34)s++,$();else{let N=e.indexOf('"',s);x(19,s,N===-1?t:N)}continue;case 6:if(R===96&&W===34){s+=2,$();continue}if(R!==96&&R!==34){let N=s+1;for(let S=e.charCodeAt(N);N<t&&S!==96&&S!==34;S=e.charCodeAt(++N));x(18,s,N);continue}break e;case 7:if(et(R)){let N=s+1;for(;et(e.charCodeAt(N));)N++;x(20,s,N),$();continue}break e;case 8:{let N=L(s);if(N!==-1){x(22,s,N),y(9);continue}let S=_(s);if(e.charCodeAt(S)===93){s=I(S+1),$();continue}break e}case 9:{let N=_(s);if(e.charCodeAt(N)===44){s=_(N+1),l=10;continue}break e}case 10:{let N=L(s);if(N!==-1){x(23,s,N),$();continue}break e}}if(R===37&&W===37){s=k(s+2);continue}if(R!==125&&W===37&&e.charCodeAt(s+2)===37){s=k(s+3);continue}if(R===10||R===13){let N=s+1;for(let S=e.charCodeAt(N);S===10||S===13;S=e.charCodeAt(++N));x(2,s,N);continue}let q=R|32;if(q===116&&Ir(e,s,"title")&&!et(e.charCodeAt(s+5))){x(3,s,s+5),y(1);continue}if(q===97&&Ir(e,s,"acc")){let N=Ir(e,s+3,"descr");if(N||Ir(e,s+3,"title")){let S=_(s+8),M=e.charCodeAt(S);if(M===58){x(N?7:5,s,_(S+1)),y(N?3:2);continue}if(M===123&&N){s=_(S+1),y(4);continue}}}let C=s;R===32&&((s<o||s>=c)&&(o=s,c=I(s)),C=c);let K=e.charCodeAt(C),Q=K|32,G=0,Y=0;if(Q===120&&Ir(e,C,"x-axis"))G=10,Y=C+6;else if(Q===121&&Ir(e,C,"y-axis"))G=11,Y=C+6;else if(K===45){if(C<h||C>=d)for(h=C,d=C;e.charCodeAt(d)===45;)d++;d-C>=2&&e.charCodeAt(d)===62&&(G=12,Y=d+1)}else if(Q===113&&Ir(e,C,"quadrant")){let N=e.charCodeAt(C+9);e.charCodeAt(C+8)===45&&N>=49&&N<=52?(G=13+N-49,Y=C+10):Ir(e,C+8,"chart")&&(G=24,Y=C+13)}if(G!==0){x(G,s,I(Y));continue}if(q===99&&Ir(e,s,"classdef")&&!et(e.charCodeAt(s+8))){x(17,s,s+8);continue}if(R===34){W===96?(s+=2,y(6)):(s++,y(5));continue}if(R===58&&W===58&&e.charCodeAt(s+2)===58){s+=3,y(7);continue}if(R===58||je(R)){let N=s;if(R!==58&&((s<f||s>=g)&&(f=s,g=_(s)),N=g),e.charCodeAt(N)===58&&((N+1<p||N+1>=m)&&(p=N+1,m=_(N+1)),e.charCodeAt(m)===91)){x(21,s,_(m+1)),y(8);continue}}if(Sn(R)){let N=s+1;for(;Sn(e.charCodeAt(N));)N++;x(25,s,N);continue}if(R>=128){let N=s+1;for(;e.charCodeAt(N)>=128;)N++;x(26,s,N);continue}if(mt(R)){let N=s+1;for(;mt(e.charCodeAt(N));)N++;x(37,s,N);continue}if(_p[R]!==0){x(_p[R],s,s+1);continue}break}return s<t?(r.push(1),a.push(""),n.push(s),{types:r,texts:a,starts:n}):(l<Tp.length&&(r.push(Tp[l]),a.push(""),n.push(t)),r.push(0),a.push(""),n.push(t),{types:r,texts:a,starts:n})}function _h(...e){let t=new Uint8Array(42);for(let r of e)t[r]=1;return t}function X_(e,t){let{types:r,texts:a,starts:n}=H_(e),i=0,l=d=>{let f=r[i];throw f===1?st("quadrantChart",e,n[i],"",!0):st("quadrantChart",e,n[i],`Expecting ${d}, got '${gx[f]}'`)},s=d=>(r[i]!==d&&l(`'${gx[d]}'`),a[i++]),o=d=>d===19||d===18||mx[d]===1,c=()=>{let d=r[i];o(d)||l(j_);let f=a[i++];for(;mx[r[i]]===1||r[i]===38||r[i]===36;)f+=a[i++];return{text:f,type:d===18?"markdown":"text"}},h=()=>{let d=[];for(;;){Cp[r[i]]===0&&l("'ALPHA', 'NUM', 'COLON', 'SPACE', 'BRKT', 'MINUS'");let f=a[i++];for(;Cp[r[i]]===1;)f+=a[i++];if(d.push(f.trim()),r[i]!==29)return d;i++}};for(;xx[r[i]]===1||r[i]===38;)i++;for(s(24);r[i]!==0;){for(;r[i]===38;)i++;let d=r[i];switch(d){case 17:{i++,s(38),yx[r[i]]===0&&l("'ALPHA', 'NUM', 'UNICODE_TEXT'");let f=a[i++];for(;yx[r[i]]===1;)f+=a[i++];s(38),t.addClass(f,h());break}case 10:case 11:{i++;let f=c(),g;r[i]===12&&(i++,o(r[i])?g=c():f.text+=" \u27F6 "),d===10?(t.setXAxisLeftText(f),g&&t.setXAxisRightText(g)):(t.setYAxisBottomText(f),g&&t.setYAxisTopText(g));break}case 13:case 14:case 15:case 16:i++,t[U_[d-13]](c());break;case 3:i++,t.setDiagramTitle(s(4).trim());break;case 5:i++,t.setAccTitle(s(6).trim());break;case 7:i++,t.setAccDescription(s(8).trim());break;case 9:t.setAccDescription(a[i++].trim());break;default:if(o(d)){let f=c(),g=r[i]===20?a[i++]:"";s(21);let p=s(22),m=s(23);t.addPoint(f,g,p,m,Cp[r[i]]===1?h():[])}}xx[r[i]]===0&&l("'NEWLINE', 'SEMI', 'EOF'"),i++}}function Ip(e,t){return e.quadrantChart?.[t]}function On(e,t,r,a){let n=Ip(e,t);return typeof n=="number"&&n>=0?Math.min(n,a):r}function wx(e){return e.startsWith("#")?e:"#"+e}function K_(e,t,r){let a=r.fontSize??16,n=Math.round(a*.875),i=Math.round(a*.75),l=r.measurer??rt(r.fontFamily),s=Math.round(Math.max(100,On(t,"chartWidth",500,4e3))),o=Math.round(ei(r,s,280)),c=Math.round(Math.max(100,On(t,"chartHeight",500,4e3))*o/s),h=On(t,"quadrantPadding",r.padding??8,200),d=On(t,"xAxisLabelPadding",5,200),f=On(t,"yAxisLabelPadding",5,200),g=e.points.length>0,p=(X,te,se)=>Be(X?.text,X?.type==="markdown",l,te,Math.max(se,40)),m=Be(e.title,!1,l,a,Math.max(o-2*h,40),1),x=On(t,"titlePadding",10,200),y=m.height>0?m.height+x:0,$=!!(e.xAxisLeft?.text||e.xAxisRight?.text),k=!!(e.yAxisBottom?.text||e.yAxisTop?.text),I=g||Ip(t,"xAxisPosition")==="bottom",_=Ip(t,"yAxisPosition")==="right",L=o-2*h,R=p(e.xAxisLeft,n,e.xAxisRight?L/2-16:L),W=p(e.xAxisRight,n,L/2-16),q=Math.max(R.height,W.height),C=$?q+d:0,K=c-2*h-y-C,Q=p(e.yAxisBottom,n,e.yAxisTop?K/2-16:K),G=p(e.yAxisTop,n,K/2-16),Y=Math.max(Q.height,G.height),N=k?Y+f:0,S=h+(_?0:N),M=h+y+(I?0:C),b=Math.max(0,L-N),E=Math.max(0,K),w=Math.max(0,(b-bx)/2),T=Math.max(0,(E-bx)/2),A=[S+w,M,S+b-w,M+E,S,M+T,S+b,M+E-T],v=(X,te,se,ce,ae)=>{for(let ie=X;ie<A.length;ie+=4)if(te<A[ie+2]&&ce>A[ie]&&se<A[ie+3]&&ae>A[ie+1])return!1;return!0},D=On(t,"quadrantTextTopPadding",5,200),z="";for(let X=0;X<4;X++){let te=X===0||X===3?S+b-w:S,se=X<2?M:M+E-T,ce=p(e.quadrants[X],a,w-16),ae=te+w/2,ie=g?se+D+ce.height/2:se+T/2;A.push(ae-ce.width/2,ie-ce.height/2,ae+ce.width/2,ie+ce.height/2),z+=`<g class="pele-quadrant" data-id="${X+1}"><rect x="${u(te)}" y="${u(se)}" width="${u(w)}" height="${u(T)}"${ot}/>`+Re(ce,ae,ie,' class="pele-label" fill="var(--_fg)" stroke="none"')+"</g>"}let H="";if($){let X=I?M+E+d+q/2:M-d-q/2;H+=Re(R,W.height>0?S+b/4:S+R.width/2,X,"")+Re(W,S+b*3/4,X,"")}if(k){let X=_?S+b+f+Y/2:S-f-Y/2,te=(se,ce)=>se.height>0?`<g transform="translate(${u(X)},${u(ce)}) rotate(-90)">${Re(se,0,0,"")}</g>`:"";H+=te(Q,G.height>0?M+E*3/4:M+E-Q.width/2)+te(G,M+E/4)}let P=On(t,"pointRadius",5,200),O=On(t,"pointTextPadding",5,200),F=pt(0),U=[],j=[];for(let X of e.points){if(!(X.x>=0&&X.x<=1&&X.y>=0&&X.y<=1))continue;let te=e.classes.get(X.className),se=Math.min(X.radius??te?.radius??P,2e3),ce=X.color??te?.color,ae=X.strokeColor??te?.strokeColor,ie=X.strokeWidth??te?.strokeWidth,ee=[];ce&&ee.push("fill:"+wx(ce)),ie&&(ae&&ee.push("stroke:"+wx(ae)),ee.push("stroke-width:"+ie));let re=S+X.x*b,fe=M+(1-X.y)*E;U.push({cx:re,cy:fe,reach:se+(ie?Math.min(parseInt(ie),400)/2:0),text:p(X.text,i,200)}),j.push(`<circle class="pele-point${Dt(X.className)}" data-id="${Pe(X.text.text)}" cx="${u(re)}" cy="${u(fe)}" r="${u(se)}"${ie&&!ae?` stroke="${F}"`:""}${Ct(ee).shape}/>`)}let J=U.length<=V_;if(J)for(let{cx:X,cy:te,reach:se}of U)A.push(X-se,te-se,X+se,te+se);let Z="";for(let{cx:X,cy:te,reach:se,text:ce}of U){let ae=ce.width/2,ie=ce.size*.6+(ce.height-ce.lineHeight)/2,ee=se+O,re=[X,te+ee+ie,X,te-ee-ie,X+ee+ae,te,X-ee-ae,te],fe=X,ye=re[1],oe=!1;for(let we=0;we<16;we+=2){let ue=we%8,ge=ue<4&&ce.width<b?Math.min(Math.max(re[ue],S+ae),S+b-ae):re[ue],Ae=re[ue+1];if(ge-ae<S||ge+ae>S+b||Ae-ie<M||Ae+ie>M+E)continue;let Te=!J||v(we<8?0:8,ge-ae,Ae-ie,ge+ae,Ae+ie);if((!oe||Te)&&(fe=ge,ye=Ae,oe=!0),Te)break}J&&A.push(fe-ae,ye-ie,fe+ae,ye+ie),Z+=Re(ce,fe,ye,' class="pele-label"')}let B=Re(m,o/2,x/2+m.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g class="pele-quadrants" fill="var(--_s)" stroke="var(--_b)">${z}</g>`+(H?`<g class="pele-axis-labels" font-size="${n}" fill="var(--_m)">${H}</g>`:"")+(U.length>0?`<g class="pele-points" fill="${F}">${j.reverse().join("")}</g><g class="pele-point-labels" font-size="${i}">${Z}</g>`:"");return{svg:tt("quadrantChart",o,c,a,r,e,B),width:o,height:c,links:[]}}var W_,ux,Y_,G_,gx,Tp,_p,mx,yx,Cp,xx,U_,j_,bx,V_,$x,kx=Ge(()=>{xe();Sp();or();Gt();yt();kt();W_=/^\d+$/,ux=/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/,Y_=/^\d+px$/;G_=class{constructor(){le(this,"type","quadrantChart");le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"quadrants",[void 0,void 0,void 0,void 0]);le(this,"xAxisLeft");le(this,"xAxisRight");le(this,"yAxisBottom");le(this,"yAxisTop");le(this,"points",[]);le(this,"classes",new Map)}setQuadrant1Text(e){this.quadrants[0]=Rn(e)}setQuadrant2Text(e){this.quadrants[1]=Rn(e)}setQuadrant3Text(e){this.quadrants[2]=Rn(e)}setQuadrant4Text(e){this.quadrants[3]=Rn(e)}setXAxisLeftText(e){this.xAxisLeft=Rn(e)}setXAxisRightText(e){this.xAxisRight=Rn(e)}setYAxisBottomText(e){this.yAxisBottom=Rn(e)}setYAxisTopText(e){this.yAxisTop=Rn(e)}addPoint(e,t,r,a,n){this.points.push({x:Number(r),y:Number(a),text:Rn(e),className:t,...px(n)})}addClass(e,t){this.classes.set(e,px(t))}setDiagramTitle(e){this.title=e}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
202
|
+
`)}},gx=["$end","INVALID","NEWLINE","title","title_value","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","X-AXIS","Y-AXIS","AXIS-TEXT-DELIMITER","QUADRANT_1","QUADRANT_2","QUADRANT_3","QUADRANT_4","CLASSDEF","MD_STR","STR","class_name","point_start","point_x","point_y","QUADRANT","ALPHA","UNICODE_TEXT","COLON","PLUS","COMMA","EQUALS","MULT","BRKT","UNDERSCORE","DOT","AMP","MINUS","NUM","SPACE","SEMI","PUNCTUATION","EOF"],Tp=[41,4,6,8,9,19],_p=new Uint8Array(128);for(let[e,t]of[[":",27],["+",28],[",",29],["=",30],["*",31],["#",32],["_",33],[".",34],["&",35],["-",36],[" \v\f",38],[";",39],["!$%'`?\\/",40]])for(let r=0;r<e.length;r++)_p[e.charCodeAt(r)]=t;mx=_h(40,35,37,25,29,28,30,31,34,32,33,26),yx=_h(25,37,36,29,27,35,32,31,26),Cp=_h(25,37,27,38,32,36),xx=_h(2,39,41),U_=["setQuadrant1Text","setQuadrant2Text","setQuadrant3Text","setQuadrant4Text"],j_="'STR', 'MD_STR', 'ALPHA', 'NUM', 'UNICODE_TEXT', 'PUNCTUATION'";bx=4,V_=300;$x={type:"quadrantChart",parse(e,t,r){let a=new G_;return a.title=r,X_(e,a),a},render:K_}});var Mx={};Rt(Mx,{quadrantChart:()=>$x});var vx=Ge(()=>{xe();kx()});function Q_(e){let t=e.length,r=[],a=[],n=[],i=[],l=0,s=0,o=(m,x,y)=>{r.push(m),a.push(e.slice(x,y)),n.push(x),s=y},c=m=>{i.push(l),l=m},h=()=>{i.length>0&&(l=i.pop())},d=m=>{let x=e.indexOf(`
|
|
203
|
+
`,m);return x===-1?t:x},f=m=>{for(;m<t&&je(e.charCodeAt(m));)m++;return m},g=m=>{for(;mt(e.charCodeAt(m));)m++;return m},p=m=>Ir(e,s,m)&&!et(e.charCodeAt(s+m.length));for(;s<t;){let m=e.charCodeAt(s);if(l===5){if(m===34)s++,h();else{let y=e.indexOf('"',s);o(19,s,y===-1?t:y)}continue}if(l===6||l===7){o(Ex[l],s,d(s)),h();continue}if(l===8){if(m===125)s++,h();else{let y=e.indexOf("}",s);o(8,s,y===-1?t:y)}continue}let x=e.charCodeAt(s+1);if(m===37&&x===37){s=d(s+2);continue}if(m!==125&&x===37&&e.charCodeAt(s+2)===37){s=d(s+3);continue}if(m===10||m===13){if((l===1||l===3)&&(m===10||x===10)){o(2,s,m===10?s+1:s+2),h();continue}let y=s+1;for(let $=e.charCodeAt(y);$===10||$===13;$=e.charCodeAt(++y));o(2,s,y);continue}switch(m|32){case 116:if(p("title")){o(3,s,s+5);continue}break;case 97:if(Ir(e,s,"acc")){let y=Ir(e,s+3,"descr");if(y||Ir(e,s+3,"title")){let $=f(s+8),k=e.charCodeAt($);if(k===58){o(y?6:4,s,f($+1)),c(y?7:6);continue}if(k===123&&y){s=f($+1),c(8);continue}}}break;case 120:if(p("xychart-beta")){o(9,s,s+12);continue}if(p("xychart")){o(9,s,s+7);continue}if(p("x-axis")){o(11,s,s+6),c(1);continue}break;case 121:if(p("y-axis")){o(12,s,s+6),c(1);continue}break;case 118:if(Ir(e,s,"vertical")){o(10,s,s+8);continue}break;case 104:if(Ir(e,s,"horizontal")){o(10,s,s+10);continue}break;case 108:if(p("line")){o(14,s,s+4),c(3);continue}break;case 98:if(p("bar")){o(15,s,s+3),c(3);continue}break}if(m===91){l===1?c(2):l===3&&c(4),o(17,s,s+1);continue}if(m===93){(l===4||l===2)&&h(),o(18,s,s+1);continue}if(l===1&&m===45&&x===45&&e.charCodeAt(s+2)===62){o(13,s,s+3);continue}if(l===1||l===4){let y=m===43||m===45?s+1:s,$=e.charCodeAt(y),k=-1;if(mt($)?(k=g(y+1),e.charCodeAt(k)===46&&mt(e.charCodeAt(k+1))&&(k=g(k+2))):$===46&&mt(e.charCodeAt(y+1))&&(k=g(y+2)),k!==-1){o(16,s,k);continue}}if(m===96&&Ir(e,s,Sx)){s+=Sx.length,h();continue}if(m===34){s++,c(5);continue}if(Sn(m)){let y=s+1;for(;Sn(e.charCodeAt(y));)y++;o(20,s,y);continue}if(mt(m)){o(31,s,g(s+1));continue}if(je(m)){s=f(s+1);continue}if(m<128&&Lp[m]!==0){o(Lp[m],s,s+1);continue}break}return s<t?(r.push(1),a.push(""),n.push(s),{types:r,texts:a,starts:n}):(r.push(Ex[l]),a.push(""),n.push(t),r.push(0),a.push(""),n.push(t),{types:r,texts:a,starts:n})}function Px(...e){let t=new Uint8Array(34);for(let r of e)t[r]=1;return t}function J_(e,t){let{types:r,texts:a,starts:n}=Q_(e),i=0,l=f=>{let g=r[i];throw g===1?st("xychart",e,n[i],"",!0):st("xychart",e,n[i],`Expecting ${f}, got '${Ax[g]}'`)},s=f=>(r[i]!==f&&l(`'${Ax[f]}'`),a[i++]),o=f=>f===19||Tx[f]===1,c=()=>{o(r[i])||l("'STR', 'ALPHA', 'NUM'");let f=a[i++];if(r[i-1]!==19)for(;Tx[r[i]]===1;)f+=a[i++];return{text:f,type:"text"}},h=()=>{let f=Number(s(16));return s(13),[f,Number(s(16))]},d=()=>{let f=[];for(s(17);;){let g=Number(s(16));if(f.push({value:g,label:r[i]===19?a[i++]:""}),r[i]!==23)break;i++}return s(18),f};for(;;)if(Cx[r[i]]===1)i++;else{if(r[i]!==9)break;r[++i]===10&&t.setOrientation(a[i++])}for(;r[i]!==0;){let f=r[i++];switch(f){case 3:t.setDiagramTitle(c().text.trim());break;case 11:case 12:{let g=o(r[i])?c():void 0;if(f===11&&r[i]===17){let p=[];do i++,p.push(c());while(r[i]===23);s(18),t.setXAxisBand(p)}else if(r[i]===16||g===void 0){let[p,m]=h();f===11?t.setXAxisRangeData(p,m):t.setYAxisRangeData(p,m)}f===11?t.setXAxisTitle(g??{type:"text",text:""}):t.setYAxisTitle(g??{type:"text",text:""});break}case 14:case 15:{let g=r[i]===17?{text:"",type:"text"}:c(),p=d();f===14?t.setLineData(g,p):t.setBarData(g,p);break}case 4:t.setAccTitle(s(5).trim());break;case 6:t.setAccDescription(s(7).trim());break;case 8:t.setAccDescription(a[i-1].trim());break;default:i--,l("'title', 'X_AXIS', 'Y_AXIS', 'LINE', 'BAR', 'acc_title', 'acc_descr', 'acc_descr_multiline_value'")}for(;Cx[r[i]]===1;)i++}}function _x(e,t){let r=e/Math.max(t,1),a=Math.floor(Math.log10(r)),n=r/10**a,i=n>=7.07?10:n>=3.16?5:n>=1.41?2:1;return a<0?-(10**-a)/i:i*10**a}function Nh(e,t){return e>0?t/e:t*-e}function xo(e,t){return e>0?t*e:t/-e}function Ix(e,t,r){let a=Math.round(Nh(r,e));xo(r,a)<e&&a++;let n=Math.round(Nh(r,t));xo(r,n)>t&&n--;let i=[];for(let l=a;l<=n&&i.length<100;l++)i.push(xo(r,l));return i}function Np(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{}}function Na(e,t,r=!0){let a=e[t];return typeof a=="boolean"?a:r}function Dx(e,t){return typeof e=="number"&&e>0?Math.round(Math.min(Math.max(e,100),4e3)):t}function ni(e){return typeof e=="number"&&isFinite(e)?Math.min(Math.max(e,-Ox),Ox):void 0}function e5(e){let t=0;for(let r of e)t=Math.max(t,r.label.width);return t}function Ih(e,t,r,a){let n=e.lines.length===1?e.lines[0]:void 0;return n&&n.length===1&&n[0].icon===void 0&&n[0].style===0?`<text x="${u(t)}" y="${u(r+e.size*.35)}" text-anchor="${a}">${Qe(n[0].text)}</text>`:Re(e,t+(a==="start"?e.width/2:a==="end"?-e.width/2:0),r,"")}function t5(e,t,r){if(e.plots.length===0)throw new Ke("No Plot to render, please provide a plot with some data","semantic",{type:"xychart"});let a=Np(t.xyChart),n=r.fontSize??16,i=Math.round(n*.875),l=Math.round(n*.75),s=r.measurer??rt(r.fontFamily),o=r.padding??8,c=Dx(a.width,700),h=ei(r,c,240),d=Math.round(Dx(a.height,500)*Math.max(.6,h/c)),f=(e.orientation??a.chartOrientation)==="horizontal",g=Na(a,"showDataLabel",!1),p=e.xAxis,m=e.plots,x=(Se,Xe,Ve)=>Be(Se,!1,s,Xe,Ve),y=x("0",i,4e3).height,$=x("0",l,4e3).height,k=Be(Na(a,"showTitle")?e.title:void 0,!1,s,n,h-2*o,1),I=k.height>0?k.height+12:0,_=[],L=0;Na(a,"showLegend")&&m.forEach((Se,Xe)=>{if(Se.title==="")return;let Ve=x(Se.title,i,h*.3);_.push({index:Xe,label:Ve}),L=Math.max(L,Ve.width+Gs+8)});let R=_.length>0?L+Rx:0,W=m.filter(Se=>Se.type==="bar").length,q=e.yAxis.min,C=e.yAxis.max,K=e.hasSetYAxis&&isFinite(q)&&isFinite(C)&&q!==C;if(K)q=ni(q),C=ni(C);else{q=1/0,C=-1/0;for(let Se of m)for(let[,Xe]of Se.data){let Ve=ni(Xe);Ve!==void 0&&(Ve<q&&(q=Ve),Ve>C&&(C=Ve))}q>C&&(q=C=0),W>0&&(q=Math.min(q,0),C=Math.max(C,0)),q===C&&(q===0?C=1:(q-=Math.abs(q)/2,C+=Math.abs(C)/2))}let Q=(Se,Xe)=>{let Ve=_x(Math.abs(C-q),Math.max(2,Math.min(10,Math.floor(Se/Xe))));return K||(q=xo(Ve,Math.floor(Nh(Ve,q)+1e-9)),C=xo(Ve,Math.ceil(Nh(Ve,C)-1e-9))),Ix(Math.min(q,C),Math.max(q,C),Ve).map(nt=>({at:(nt-q)/(C-q),label:x(String(nt),i,4e3)}))},G=1;if(p.type==="band")G=Math.max(p.categories.length,1);else for(let Se of m)G=Math.max(G,Se.data.length);let Y=1/G,N=p.type==="band"||W>0?Y/2:0,S=ni(p.type==="linear"?p.min:void 0),M=ni(p.type==="linear"?p.max:void 0),b=S!==void 0&&M!==void 0&&S!==M,E=(Se,Xe)=>p.type==="band"?(Se+.5)*Y:N+(Xe>1?Se/(Xe-1):b?0:.5)*(1-2*N),w=Np(a.xAxis),T=Np(a.yAxis),A=f?w:T,v=f?T:w,D=x(Na(A,"showTitle")?f?p.title:e.yAxis.title:void 0,i,d*.8),z=x(Na(v,"showTitle")?f?e.yAxis.title:p.title:void 0,i,h*.8),H=Na(A,"showTick")?Nx:0,P=Na(v,"showTick")?Nx:0,O=Na(A,"showLabel"),F=Na(v,"showLabel"),U=f?h*.3:Math.max(48,(h-2*o-64-R)*Y-8),j=p.type==="band"&&Na(w,"showLabel")?p.categories.map(Se=>x(Se,i,U)):[],J=0,Z=0;for(let Se of j)J=Math.max(J,Se.width),Z=Math.max(Z,Se.height);let B=Se=>{let Xe=[];if(p.type==="band"){let Ve=j.length===0?8:f?Z:J+12,nt=Math.max(1,Math.ceil(Ve/(Se*Y)));for(let ft=0;ft<p.categories.length;ft+=nt)Xe.push({at:(ft+.5)*Y,label:j[ft]??x(void 0,i,0)})}else if(b){let Ve=_x(Math.abs(M-S),Math.max(2,Math.min(10,Math.floor(Se/(f?32:80)))));for(let nt of Ix(Math.min(S,M),Math.max(S,M),Ve))Xe.push({at:N+(nt-S)/(M-S)*(1-2*N),label:x(String(nt),i,4e3)})}else S!==void 0&&Xe.push({at:.5,label:x(String(S),i,4e3)});return Xe},X=0,te=0;for(let Se of m){for(let Xe of Se.pointLabels??[])X=Math.max(X,s.width(Xe,l,0));if(g&&f&&Se.type==="bar")for(let[,Xe]of Se.data)te=Math.max(te,s.width(String(ni(Xe)??""),l,0))}let se=F?f||p.type!=="band"?y:Z:0,ce=P+(se>0?se+4:0)+(z.height>0?z.height+4:0),ae=f?0:X>0||g?$+4:O?y/2:0,ie=o+I+ae,ee=Math.max(1,d-o-ce-ie),re=ie+ee,fe=f?B(ee):Q(ee,56),ye=O?e5(fe):0,oe=o+(D.height>0?D.height+6:0)+(ye>0?ye+6:0)+H,we=Math.max(X>0?X+12:0,te>0?te+8:0),ue=f?Math.min(h*.25,we):0,ge=Math.max(1,h-o-oe-R-ue),Ae=f?Q(ge,80):B(ge);if(F&&R+ue===0){let Se=0;for(let Xe of Ae)Se=Math.max(Se,Xe.at*ge+Xe.label.width/2-ge);ge=Math.max(1,ge-Se)}let Te=oe+ge,he=(Se,Xe)=>f?oe+Xe*ge:oe+Se*ge,pe=(Se,Xe)=>f?ie+Se*ee:re-Xe*ee,be=Se=>(Se-q)/(C-q),Ne=Se=>Math.min(Math.max(Se,0),1),Oe=Se=>f?`M${u(he(0,Se))},${u(ie)}V${u(re)}`:`M${u(oe)},${u(pe(0,Se))}H${u(Te)}`,Ye="";for(let Se of f?Ae:fe)Ye+=Oe(Se.at);let de="",Me="";Na(A,"showAxisLine")&&(de+=`M${u(oe)},${u(ie)}V${u(re)}`),Na(v,"showAxisLine")&&(de+=`M${u(oe)},${u(re)}H${u(Te)}`);for(let Se of fe){let Xe=f?ie+Se.at*ee:re-Se.at*ee;H&&(de+=`M${u(oe)},${u(Xe)}h${-H}`),O&&(Me+=Ih(Se.label,oe-H-6,Xe,"end"))}for(let Se of Ae){let Xe=oe+Se.at*ge;P&&(de+=`M${u(Xe)},${u(re)}v${P}`),F&&(Me+=Ih(Se.label,Xe,re+P+4+Se.label.height/2,"middle"))}let _e=(f?ee:ge)*Y,$e=_e*.7/Math.max(W,1),ve=W>1?Math.min(2,$e*.2):0,Le=Ne(be(0));W>0&&Le>0&&Le<1&&(de+=Oe(Le));let qe="",Fe="",V="",me="",ne=0;m.forEach((Se,Xe)=>{let Ve=pt(Xe),nt=Se.title?` data-id="${Pe(Se.title)}"`:"",ft=p.type==="band"?Math.min(Se.data.length,G):Se.data.length;if(Se.type==="bar"){let At=(ne++-(W-1)/2)*$e-($e-ve)/2,Ht="";for(let Ue=0;Ue<ft;Ue++){let ut=ni(Se.data[Ue][1]);if(ut===void 0)continue;let wt=E(Ue,ft),dt=Ne(be(ut)),lr=Math.min(Le,dt),It=Math.max(Le,dt),Je=f?he(wt,lr):he(wt,0)+At,$t=f?pe(wt,0)+At:pe(wt,It),Wt=f?(It-lr)*ge:$e-ve,zt=f?$e-ve:(It-lr)*ee;if(Ht+=`<rect x="${u(Je)}" y="${u($t)}" width="${u(Wt)}" height="${u(zt)}"/>`,!g)continue;let dr=String(ut),pa=s.width(dr,l,0),Da=dt>=Le?1:-1,wl=Je+Wt/2,$l=$t+zt/2,kl="middle";if(f){if(zt<l)continue;wl=(Da>0?Je+Wt:Je)+Da*6,kl=Da>0?"start":"end"}else{if(pa+2>_e/W)continue;$l=(Da>0?$t:$t+zt)-Da*($/2+2)}V+=`<text x="${u(wl)}" y="${u($l+l*.35)}" text-anchor="${kl}">${dr}</text>`}qe+=`<g class="pele-series pele-bars"${nt} fill="${Ve}">${Ht}</g>`;return}let at="",ht="",ct=!1,Ut=0,Lt=NaN;for(let At=0;At<ft;At++){let Ht=ni(Se.data[At][1]);if(Ht===void 0){Lt=NaN;continue}let Ue=E(At,ft),ut=be(Ht),wt=ut>=0&&ut<=1;if(Lt!==Lt)wt&&(at+=`M${u(he(Ue,ut))},${u(pe(Ue,ut))}`),ct=wt;else{let Je=ut-Lt,$t=0,Wt=1;if(Je!==0){let zt=-Lt/Je,dr=(1-Lt)/Je;$t=Math.max($t,Math.min(zt,dr)),Wt=Math.min(Wt,Math.max(zt,dr))}else wt||($t=2);if($t<=Wt){let zt=Ut+(Ue-Ut)*$t,dr=Lt+Je*$t,pa=Ut+(Ue-Ut)*Wt,Da=Lt+Je*Wt;(!ct||$t>0)&&(at+=`M${u(he(zt,dr))},${u(pe(zt,dr))}`),at+=`L${u(he(pa,Da))},${u(pe(pa,Da))}`}ct=wt}if(Ut=Ue,Lt=ut,!wt)continue;let dt=he(Ue,ut),lr=pe(Ue,ut);_e>=12&&(ht+=`<circle cx="${u(dt)}" cy="${u(lr)}" r="3"/>`);let It=x(Se.pointLabels?.[At],l,4e3);if(It.height>0){let Je=It.width/2;me+=f?Ih(It,dt+10,lr,"start"):Ih(It,Math.max(Math.min(dt,Te-Je),oe+Je),lr-6-It.height/2,"middle")}}Fe+=`<g class="pele-series pele-line"${nt} fill="${Ve}">`+(at?`<path d="${at}" fill="none" stroke="${Ve}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>`:"")+ht+"</g>"});let ke="";D.height>0&&(ke+=`<g transform="translate(${u(o+D.height/2)},${u(ie+ee/2)}) rotate(-90)">${Re(D,0,0,"")}</g>`),ke+=Re(z,oe+ge/2,d-o-z.height/2,"");let Ee="",Ce=0;for(let Se of _)Ce+=Math.max(Lx,Se.label.height+6);let De=ie+Math.max(0,(ee-Ce)/2),Ie=Te+ue+Rx;for(let{index:Se,label:Xe}of _){let Ve=Math.max(Lx,Xe.height+6);if(De+Ve>d)break;let nt=De+Ve/2,ft=pt(Se);Ee+=`<g class="pele-legend-item" data-id="${Pe(m[Se].title)}">`+(m[Se].type==="bar"?`<rect x="${u(Ie)}" y="${u(nt-Gs/2)}" width="${Gs}" height="${Gs}" rx="2" fill="${ft}"/>`:`<path d="M${u(Ie)},${u(nt)}h${Gs}" stroke="${ft}" stroke-width="2" stroke-linecap="round"/>`)+Re(Xe,Ie+Gs+8+Xe.width/2,nt,"")+"</g>",De+=Ve}let He=Re(k,h/2,o+k.height/2,' class="pele-title" font-weight="var(--_tw)"')+(Ye?`<path class="pele-grid" d="${Ye}" stroke="var(--_a)"/>`:"")+`<g class="pele-plot">${qe}${Fe}</g>`+(de?`<path class="pele-axis" d="${de}" fill="none" stroke="var(--_b)"/>`:"")+(Me?`<g class="pele-axis-labels" font-size="${i}" fill="var(--_m)">${Me}</g>`:"")+(ke?`<g class="pele-axis-titles" font-size="${i}">${ke}</g>`:"")+(V?`<g class="pele-data-labels" font-size="${l}">${V}</g>`:"")+(me?`<g class="pele-point-labels" font-size="${l}">${me}</g>`:"")+(Ee?`<g class="pele-legend" font-size="${i}">${Ee}</g>`:"");return{svg:tt("xychart",h,d,n,r,e,He),width:h,height:d,links:[]}}var Z_,Ax,Ex,Sx,Lp,Tx,Cx,Nx,Gs,Lx,Rx,Ox,zx,Fx=Ge(()=>{xe();Sp();or();Gt();yt();kt();Z_=class{constructor(){le(this,"type","xychart");le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"orientation");le(this,"xAxis",{type:"band",title:"",categories:[]});le(this,"yAxis",{type:"linear",title:"",min:1/0,max:-1/0});le(this,"hasSetXAxis",!1);le(this,"hasSetYAxis",!1);le(this,"plots",[])}setOrientation(e){this.orientation=e==="horizontal"?"horizontal":"vertical"}setXAxisTitle(e){this.xAxis.title=e.text.trim()}setXAxisRangeData(e,t){this.xAxis={type:"linear",title:this.xAxis.title,min:e,max:t},this.hasSetXAxis=!0}setXAxisBand(e){this.xAxis={type:"band",title:this.xAxis.title,categories:e.map(t=>t.text.trim())},this.hasSetXAxis=!0}setYAxisTitle(e){this.yAxis.title=e.text.trim()}setYAxisRangeData(e,t){this.yAxis={type:"linear",title:this.yAxis.title,min:e,max:t},this.hasSetYAxis=!0}plotData(e){if(e.length===0)return[];this.hasSetXAxis||this.setXAxisRangeData(1,e.length);let t=this.xAxis;if(t.type==="band"&&e.length>t.categories.length&&(e=e.slice(0,t.categories.length)),!this.hasSetYAxis){let{min:a,max:n}=this.yAxis;for(let i of e)i<a&&(a=i),i>n&&(n=i);this.yAxis={type:"linear",title:this.yAxis.title,min:a,max:n}}if(t.type==="band")return t.categories.map((a,n)=>[a,e[n]]);if(e.length===1)return[[`${t.min}`,e[0]]];let r=(t.max-t.min)/(e.length-1);return e.map((a,n)=>[`${t.min+n*r}`,a])}addPlot(e,t,r){let a={type:e,title:t.text.trim(),data:this.plotData(r.map(n=>n.value))};e==="line"&&r.some(n=>n.label.trim()!=="")&&(a.pointLabels=r.map(n=>n.label.trim())),this.plots.push(a)}setLineData(e,t){this.addPlot("line",e,t)}setBarData(e,t){this.addPlot("bar",e,t)}setDiagramTitle(e){this.title=e}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
204
|
+
`)}},Ax=["$end","INVALID","NEWLINE","title","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","XYCHART","CHART_ORIENTATION","X_AXIS","Y_AXIS","ARROW_DELIMITER","LINE","BAR","NUMBER_WITH_DECIMAL","SQUARE_BRACES_START","SQUARE_BRACES_END","STR","ALPHA","COLON","PLUS","COMMA","EQUALS","MULT","BRKT","UNDERSCORE","DOT","AMP","MINUS","NUM","SEMI","EOF"],Ex=[33,33,33,33,33,19,5,7,8],Sx="`)"+" ".repeat(36)+'{ this.pushstate(md_string); }\n<md_string>(?:(?!`").)+'+" ".repeat(18)+"{ return md_str; }\n<md_string>(?:`",Lp=new Uint8Array(128);for(let[e,t]of[[":",21],["+",22],[",",23],["=",24],["*",25],["#",26],["_",27],[".",28],["&",29],["-",30],[";",32]])Lp[e.charCodeAt(0)]=t;Tx=Px(29,31,20,22,24,25,28,26,30,27),Cx=Px(2,32,33);Nx=4,Gs=12,Lx=26,Rx=24,Ox=1e300;zx={type:"xychart",section:"xyChart",parse(e,t,r){let a=new Z_;return a.title=r,J_(e,a),a},render:t5}});var Bx={};Rt(Bx,{xychart:()=>zx});var Wx=Ge(()=>{xe();Fx()});function r5(e){let t="TB";for(let r of e)typeof r!="string"&&r.stmt==="dir"&&(t=r.value);return t}function a5(e,t,r){let a=[],n=[],i=new Map,l=new Map,s=new Map,o=0,c=0,h=g=>{if(!g.id||g.id==="</join></fork>"||g.id==="</choice>")return;if(g.cssClasses){let m;for(let x of g.cssClasses.split(" ")){let y=r.get(x);if(y){m??(m=g.cssCompiledStyles.slice());for(let $ of y.styles)m.push($)}}m&&(g.cssCompiledStyles=m)}let p=i.get(g.id);if(p){let m=g.parentId??p.parentId;Object.assign(p,g),m!==void 0&&(p.parentId=m)}else i.set(g.id,g),a.push(g)},d=(g,p,m)=>{let x=p.id;if(x==="root")return;let y=t.get(x),$=y?.classes?.join(" ")??"",k=y?.styles??[],I=l.get(x);if(!I){let G="rect";p.start===!0?G="stateStart":p.start===!1&&(G="stateEnd"),p.type!=="default"&&(G=p.type),I={shape:G,description:x,cssClasses:`${$} statediagram-state`,cssStyles:k,type:void 0,dir:void 0,colorIndex:void 0},l.set(x,I)}if(p.description&&(Array.isArray(I.description)?(I.shape="rectWithTitle",I.description=I.description.concat(p.description)):I.description.length>0?(I.shape="rectWithTitle",I.description=I.description===x?[p.description].flat():[I.description,p.description].flat()):(I.shape="rect",I.description=Array.isArray(p.description)?p.description.slice():p.description)),I.description.length===1&&I.shape==="rectWithTitle"&&(I.shape=I.type==="group"?"roundedWithTitle":"rect"),!I.type&&p.doc){if(I.type="group",I.dir=r5(p.doc),I.shape=p.type==="divider"?"divider":"roundedWithTitle",I.shape==="divider"&&g?.id!==void 0&&s.has(g.id))I.colorIndex=s.get(g.id);else{let G=c++;I.colorIndex=$.trim()!==""||k.length>0?void 0:G}s.set(x,I.colorIndex),I.cssClasses=`${I.cssClasses} statediagram-cluster ${m?"statediagram-cluster-alt":""}`}let _=I.description,L={id:x,shape:I.shape,label:Array.isArray(_)?_[0]:_,description:Array.isArray(_)?_.slice(1):[],cssClasses:I.cssClasses,cssCompiledStyles:[],cssStyles:I.cssStyles,type:I.type,isGroup:I.type==="group",dir:I.dir,colorIndex:I.colorIndex};L.shape==="divider"&&(L.label=""),g&&g.id!=="root"&&(L.parentId=g.id);let R=p.note;if(!R){h(L);return}let W=(G,Y,N,S)=>({id:G,shape:Y,label:R.text,description:[],cssClasses:N,cssCompiledStyles:[],cssStyles:[],type:S?"group":"node",isGroup:S,dir:void 0,position:R.position}),q=W(`${x}----note-${o++}`,"note","statediagram-note",!1);q.parentId=`${x}----parent`,q.noteFor=x,h(W(q.parentId,"noteGroup",I.cssClasses,!0)),h(q),h(L);let C=R.position==="left of",K=C?q.id:x,Q=C?x:q.id;n.push({id:`${K}-${Q}`,start:K,end:Q,label:"",classes:"transition note-edge",pattern:"dashed"})},f=[{item:void 0,doc:e,at:0,alt:!0}];for(;f.length>0;){let g=f[f.length-1];if(g.at>=g.doc.length){f.pop();continue}let p=g.doc[g.at++];typeof p!="string"&&(p.stmt==="state"?(d(g.item,p,g.alt),p.doc&&f.push({item:p,doc:p.doc,at:0,alt:!g.alt})):p.stmt==="relation"&&(d(g.item,p.state1,g.alt),d(g.item,p.state2,g.alt),n.push({id:`edge${o++}`,start:p.state1.id,end:p.state2.id,label:p.description??"",classes:"transition"})))}for(let g of a)if(g.isGroup&&g.description.length>0)throw new Ke(`Group nodes can only have label. Remove the additional description for node [${g.id}]`,"semantic",{type:"state"});return{nodes:a,edges:n}}function bo(e,t){let r=0,a=-2;return n=>{if(a===-2||n<r||a!==-1&&n>a){e.lastIndex=n;let i=e.exec(t);a=i?i.index:-1,r=n}return a}}function h5(e){let t=e.length,r=[],a=[],n=[],i=[],l=0,s=0,o,c=bo(i5,e),h=bo(s5,e),d=bo(l5,e),f=bo(o5,e),g=bo(c5,e),p=-1,m=-1,x=[-1,-1,-1,-1],y=[0,0,0,0],$=-1,k=-1,I=[-1,-1,-1,-1,-1,-1],_=(b,E,w)=>{r.push(b),a.push(e.slice(E,w)),n.push(E),s=w},L=(b,E,w,T)=>{r.push(b),a.push(E),n.push(w),s=T},R=b=>{i.push(l),l=b},W=()=>{i.length>0&&(l=i.pop())},q=(b,E)=>{for(let w=0;w<b.length;w++){let T=b.charCodeAt(w),A=e.charCodeAt(E+w);if(A!==T&&!(T>=97&&T<=122&&A===T-32))return!1}return!0},C=b=>{let E=b;for(;E<t&&je(e.charCodeAt(E));)E++;return E},K=b=>{let E=b;for(;E<t&&et(e.charCodeAt(E));)E++;return E},Q=b=>{let E=e.indexOf(`
|
|
205
|
+
`,b);return E===-1?t:E},G=b=>{let E=d(b);return E===-1?t:E},Y=b=>{if(b<p||b>m){let E=c(b),w=E===-1?t:G(b);p=b,m=w,x[0]=x[1]=x[2]=x[3]=-1;for(let T=E;T!==-1&&T<w;T=c(T+1)){let A=C(T+9);if(A===T+9)continue;let v=q("tb",A)?0:q("bt",A)?1:q("rl",A)?2:q("lr",A)?3:-1;v!==-1&&(x[v]=T,y[v]=A+2)}}for(let E=0;E<4;E++)if(x[E]>=b)return E;return-1},N=b=>{if(b<$||b>k){let E=h(b),w=E===-1?t:G(b);$=b,k=w,I.fill(-1);for(let T=E;T!==-1&&T<w;T=h(T+1)){let A=e.charCodeAt(T+2)|32;I[(e.charCodeAt(T)===60?0:3)+(A===102?0:A===106?1:2)]=T}}for(let E=0;E<6;E++)if(I[E]>=b)return E;return-1},S=(b,E)=>{let w=f(b);return w===-1||w+2>E?(_(14,b,E),!0):w===b?(s=E,!1):(_(14,b,w),!0)},M=b=>(r.push(b),a.push(""),n.push(s),{types:r,texts:a,starts:n,error:o});for(;;){if(s>=t){switch(l){case 0:_(2,t,t);break;case 6:_(22,t,t);break;case 7:_(24,t,t);break;case 8:_(25,t,t);break;case 10:_(32,t,t);break;case 12:_(39,t,t);break;case 14:_(36,t,t);break;case 3:_(12,t,t);break;case 18:_(20,t,t);break;case 4:case 19:_(14,t,t);break}return M(0)}let b=e.charCodeAt(s);switch(l){case 0:case 1:{let E=l===0,w=b|32;if(E){if(w===99&&q("click",s)&&!et(e.charCodeAt(s+5))){_(26,s,s+5);continue}if(w===104&&q("href",s)&&!et(e.charCodeAt(s+4))){_(28,s,s+4);continue}if(b===34){let v=e.indexOf('"',s+1);if(v!==-1){_(27,s,v+1);continue}}if(w===100&&q("default",s)&&!et(e.charCodeAt(s+7))){_(33,s,s+7);continue}let A=Y(s);if(A!==-1){_(40+A,s,Q(y[A]));continue}if(b===10){let v=s+1;for(;e.charCodeAt(v)===10;)v++;_(2,s,v);continue}if(je(b)){s=C(s);continue}}else if(b!==10&&je(b)){let A=s+1;for(;A<t&&e.charCodeAt(A)!==10&&je(e.charCodeAt(A));)A++;s=A;continue}if(b===35||b===37&&e.charCodeAt(s+1)===37&&e.charCodeAt(s+2)!==123){s=Q(s);continue}if(w===115){if(E&&q("scale",s)){let A=C(s+5);if(A>s+5){_(7,s,A),R(5);continue}}if(q("style",s)){let A=C(s+5);if(A>s+5){_(34,s,A),R(13);continue}}if(q("state",s)){let A=C(s+5);if(A>s+5){s=A,R(2);continue}if(E&&q("diagram",s+5)){let v=q("-v2",s+12)?s+15:s+12;if(A=C(v),A>v){_(3,s,A);continue}}}}else if(w===99){if(q("class",s)){let A=q("def",s+5),v=A?s+8:s+5,D=C(v);if(D>v){_(A?29:37,s,D),R(A?9:11);continue}}}else if(w===97&&E&&(q("acctitle",s)||q("accdescr",s))){let A=(e.charCodeAt(s+3)|32)===116,v=C(s+8),D=e.charCodeAt(v);if(D===58){_(A?21:23,s,C(v+1)),R(A?6:7);continue}if(D===123&&!A){s=C(v+1),R(8);continue}}if(E){if(b===123){_(10,s,s+1),R(1);continue}}else{let A=Y(s);if(A!==-1){_(40+A,s,Q(y[A]));continue}if(b===125){_(11,s,s+1),W();continue}if(b===10){s++;continue}}if(w===110&&q("note",s)){let A=C(s+4);if(A>s+4){_(19,s,A),R(15);continue}}if(E&&w===104&&q("hide empty description",s)&&!et(e.charCodeAt(s+22))){_(6,s,s+22);continue}if(b===91&&e.charCodeAt(s+1)===42&&e.charCodeAt(s+2)===93){_(44,s,s+3);continue}let T=s;for(;T<t;){let A=e.charCodeAt(T);if(A===58||A===45||A===123||je(A))break;T++}if(T>s){S(s,T);continue}if(b===58){for(T=s+1;T<t;){let A=e.charCodeAt(T);if(A===10||A===59)break;if(A===58){let v=e.charCodeAt(T+1);if(T+1>=t||v===58||v===10||v===59)break;T++}T++}if(T>s+1){L(4,e.slice(s,T).trim(),s,T);continue}if(e.charCodeAt(s+1)===58&&e.charCodeAt(s+2)===58){_(45,s,s+3);continue}}else if(b===45&&e.charCodeAt(s+1)===45){if(e.charCodeAt(s+2)===62){_(5,s,s+3);continue}if(!E){_(18,s,s+2);continue}}if(!E)return M(1);_(48,s,s+1);continue}case 2:{if(b!==10&&je(b)){let A=s+1;for(;A<t&&e.charCodeAt(A)!==10&&je(e.charCodeAt(A));)A++;s=A;continue}if(b===35||b===37&&e.charCodeAt(s+1)===37&&e.charCodeAt(s+2)!==123){s=Q(s);continue}let E=N(s);if(E!==-1){let A=I[E],v=E===2||E===5;L(v?17:E%3===0?15:16,e.slice(s,A).trim(),s,A+(v?10:8)),W();continue}if(b===34){s++,R(3);continue}let w=b===10?C(s):s;if(q("as",w)){let A=C(w+2);if(A>w+2){_(13,s,A),R(4);continue}}if(b===10){s++,W();continue}if(b===123){_(10,s,s+1),W(),R(1);continue}if(et(b)){let A=K(s),v=C(A);if(v>A&&et(e.charCodeAt(v))){let D=g(v+1);if(D!==-1&&D<G(v))return o=`Error: State name must be a single word. Found: "${e.slice(s,D+1).trim()}"`,M(1)}}let T=s+1;for(;T<t;){let A=e.charCodeAt(T);if(A===123||je(A))break;T++}_(9,s,T);continue}case 3:{if(b===34){s++,W();continue}let E=e.indexOf('"',s);_(12,s,E===-1?t:E);continue}case 4:{let E=s;for(;E<t;){let w=e.charCodeAt(E);if(w===10||w===123)break;E++}S(s,E)&&W();continue}case 5:{if(b>=48&&b<=57){let w=s+1;for(;w<t&&e.charCodeAt(w)>=48&&e.charCodeAt(w)<=57;)w++;_(8,s,w);continue}let E=C(s);if(E>s&&q("width",E)&&!et(e.charCodeAt(E+5))){s=E+5,W();continue}return M(1)}case 6:_(22,s,Q(s)),W();continue;case 7:_(24,s,Q(s)),W();continue;case 8:{if(b===125){s++,W();continue}let E=e.indexOf("}",s);_(25,s,E===-1?t:E);continue}case 9:{let E=q("default",s)&&C(s+7)>s+7,w=E?s+7:K(s),T=C(w);if(w===s||T===w)return M(1);_(E?31:30,s,T),W(),R(10);continue}case 10:_(32,s,Q(s)),W();continue;case 11:{let E=K(s);if(E===s)return M(1);for(;e.charCodeAt(E)===44;){let w=C(E+1),T=K(w);if(T===w)break;E=T}_(38,s,E),W(),R(12);continue}case 12:_(39,s,Q(s)),W();continue;case 13:{let E=s;for(;E<t&&(et(e.charCodeAt(E))||e.charCodeAt(E)===44);)E++;let w=C(E);if(E===s||w===E)return M(1);_(35,s,w),W(),R(14);continue}case 14:_(36,s,Q(s)),W();continue;case 15:{if(q("left of",s)&&!et(e.charCodeAt(s+7))){_(46,s,s+7),W(),R(16);continue}if(q("right of",s)&&!et(e.charCodeAt(s+8))){_(47,s,s+8),W(),R(16);continue}if(b===34){s++,W(),R(18);continue}return M(1)}case 16:{let E=C(s),w=E;for(;w<t;){let T=e.charCodeAt(w);if(T===58||T===45||je(T))break;w++}if(w===E)return M(1);S(s,w)&&(W(),R(17));continue}case 17:{let E=C(s);if(e.charCodeAt(E)===58){let A=E+1;for(;A<t;){let v=e.charCodeAt(A);if(v===58||v===10||v===59)break;A++}if(A>E+1){L(20,e.slice(s+2,A).trim(),s,A),W();continue}}let w=e.indexOf(`
|
|
206
|
+
`,s),T=-1;for(;w!==-1&&(T=C(w),!(q("end note",T)&&!et(e.charCodeAt(T+8))));)w=e.indexOf(`
|
|
207
|
+
`,T);if(w===-1)return M(1);L(20,e.slice(s,T).trim(),s,T+8),W();continue}case 18:{let E=C(s);if(q("as",E)){_(13,s,C(E+2)),W(),R(19);continue}if(b===34){s++;continue}let w=e.indexOf('"',s);_(20,s,w===-1?t:w);continue}case 19:S(s,Q(s))&&W();continue}}}function f5(e,t){let{types:r,texts:a,starts:n,error:i}=h5(e),l=0,s=p=>{let m=r[l];throw m===1?i!==void 0?new Ke(i,"syntax",{type:"state",...ql(e,n[l])}):st("state",e,n[l],"",!0):st("state",e,n[l],`Expecting ${p}, got '${Yx[m]}'`)},o=p=>(r[l]!==p&&s(`'${Yx[p]}'`),a[l++]),c=()=>{let p=r[l];p!==14&&p!==44&&s("'ID', 'EDGE_STATE'");let m=a[l++].trim();return r[l]!==45?{stmt:"state",id:m,type:"default",description:""}:(l++,{stmt:"state",id:m,classes:[o(14).trim()],type:"default",description:""})};for(;r[l]===2;)l++;r[l]!==3&&s("'NL', 'SD'"),l++;let h=[],d=[],f=p=>{p!=="nl"&&h.push(p)},g=(p,m)=>{l++;let x=[];h.push({stmt:"state",id:p,type:"default",description:m,doc:x}),d.push(h),h=x};for(;;){let p=r[l];switch(p){case 2:l++;break;case 14:case 44:{let m=c();if(r[l]===4)m.description=t.trimColon(a[l++]),f(m);else if(r[l]===5){l++;let x=c();r[l]===4?f({stmt:"relation",state1:m,state2:x,description:t.trimColon(a[l++])}):f({stmt:"relation",state1:m,state2:x})}else f(m);break}case 6:f(a[l++]);break;case 7:l++,o(8),f(a[l-2]);break;case 9:r[l+1]===10?g(a[l++],""):f(a[l++]);break;case 12:{let m=a[l++];o(13);let x=o(14);if(r[l]===10)g(x,m);else if(x.includes(":")){let y=x.split(":");f({stmt:"state",id:y[0],type:"default",description:[m.trim(),y[1]]})}else f({stmt:"state",id:x,type:"default",description:m.trim()});break}case 15:f({stmt:"state",id:a[l++],type:"fork"});break;case 16:f({stmt:"state",id:a[l++],type:"join"});break;case 17:f({stmt:"state",id:a[l++],type:"choice"});break;case 18:l++,f({stmt:"state",id:t.getDividerId(),type:"divider"});break;case 19:{let m=a[l++];if(r[l]===46||r[l]===47){let x=a[l++].trim(),y=o(14).trim();f({stmt:"state",id:y,note:{position:x,text:o(20).trim()}})}else r[l]!==20&&s("'NOTE_TEXT', 'left_of', 'right_of'"),l++,o(13),o(14),f(m);break}case 40:case 41:case 42:case 43:{let m=d5[p-40];l++,t.setDirection(m),f({stmt:"dir",value:m});break}case 21:{l++;let m=o(22).trim();t.setAccTitle(m),f(m);break}case 23:{l++;let m=o(24).trim();t.setAccDescription(m),f(m);break}case 25:{let m=a[l++].trim();t.setAccDescription(m),f(m);break}case 26:{l++;let m=c(),x,y="";r[l]===28?(l++,x=o(27)):(r[l]!==27&&s("'STRING', 'HREF'"),x=a[l++],y=o(27)),o(2),f({stmt:"click",id:m,url:x,tooltip:y});break}case 29:{l++;let m=o(30).trim();f({stmt:"classDef",id:m,classes:o(32).trim()});break}case 34:{l++;let m=o(35).trim();f({stmt:"style",id:m,styleClass:o(36).trim()});break}case 37:{l++;let m=o(38).trim();f({stmt:"applyClass",id:m,styleClass:o(39).trim()});break}case 11:d.length===0&&s(`'$end', ${Lh}`),l++,h=d.pop();break;case 0:return d.length>0&&s(`'STRUCT_STOP', ${Lh}`),t.setRootDoc(h),h;default:s(d.length>0?`'STRUCT_STOP', ${Lh}`:`'$end', ${Lh}`)}}}function jx(e){return e==="TB"||e==="BT"}function Pp(e,t,r){let a=e.state?.[t];return typeof a=="number"&&a>0?Math.min(a,2e3):r}function Xx(e){let t=0,r=e.length;for(;t<r&&e.charCodeAt(t)===34;)t++;for(;r>t&&e.charCodeAt(r-1)===34;)r--;return e.slice(t,r)}function Vx(e,t,r){return e<t?t:e>r?r:e}function Oh(e,t,r,a,n){return`<rect x="${u(e)}" y="${u(t)}" width="${u(r)}" height="${u(a)}"${n}/>`}function Dh(e,t,r,a){let n=Kt(0,0);return n.isGroup=!0,n.dir=e,n.padX=t,n.padTop=r,n.padBottom=a,n}function $5(e,t,r){return na(e.direction)?jt(r,a=>Kx(e,t,r,a)):Kx(e,t,r,!1)}function Kx(e,t,r,a){let n=e.graph,i=r.fontSize??16,l=Math.round(i*.875),s=r.measurer??rt(r.fontFamily),o=Pp(t,"wrappingWidth",200),c=r.padding??8,h=r.icons,d=a?"TB":Cr(e.direction),f=Be(void 0,!1,s,i,0),g=(ee,re,fe,ye=0)=>Be(ee,!0,s,re,fe,ye),p=new Map,m=[],x=[],y=(ee,re,fe)=>(m.push({node:ee,kind:re,style:void 0,label:f,lines:[],w:0,h:0,titleH:0}),fe&&x.push(fe),m.length-1);for(let ee of n.nodes){if(ee.shape==="noteGroup")continue;let re=ee.isGroup?ee.shape==="divider"?9:8:b5.get(ee.shape)??0;p.set(ee.id,y(ee,re,void 0))}let $=m.length,k=[];for(let ee=0;ee<$;ee++){let re=m[ee].node.parentId,fe=re===void 0?void 0:p.get(re);k.push(fe!==void 0&&fe!==ee&&m[fe].node.isGroup?fe:-1)}{let ee=[];for(let ue=0;ue<$;ue++)ee.push([]);let re=[],fe=new Uint8Array($);for(let ue=0;ue<$;ue++)k[ue]===-1?(fe[ue]=1,re.push(ue)):ee[k[ue]].push(ue);let ye=0,oe=()=>{for(;ye<re.length;ye++)for(let ue of ee[re[ye]])fe[ue]||(fe[ue]=1,re.push(ue))};oe();let we=new Int32Array($).fill(-1);for(let ue=0;ue<$;ue++){if(fe[ue])continue;let ge=ue;for(;we[ge]!==ue;)we[ge]=ue,ge=k[ge];k[ge]=-1,fe[ge]=1,re.push(ge),oe()}}let I=new Int32Array($).fill(-1);for(let ee=0;ee<$;ee++){let re=m[ee].node.noteFor,fe=re===void 0?void 0:p.get(re);fe!==void 0&&(I[ee]=fe,k[ee]=k[fe])}let _=ee=>Cr(m[ee].node.dir),L=ee=>jx(k[ee]===-1?d:_(k[ee])),R=new Int32Array($),W=new Uint8Array($),q=new Array($).fill(1/0),C=0,K=new Int32Array(2*$);for(let ee of n.edges){let re=p.get(ee.start),fe=p.get(ee.end);if(!(re===void 0||fe===void 0)){if(ee.pattern==="dashed"){W[m[re].kind===7?fe:re]=1;continue}R[re]=Math.max(R[re],++K[2*re]),R[fe]=Math.max(R[fe],++K[2*fe+1]),q[re]===1/0&&(q[re]=C++),q[fe]===1/0&&(q[fe]=C++)}}for(let ee=0;ee<$;ee++){let re=m[ee],fe=re.node,ye=Ct(fe.cssStyles.length>0?fe.cssCompiledStyles.concat(fe.cssStyles):fe.cssCompiledStyles),oe=(ye.bold?1:0)|(ye.italic?2:0),we=ye.fontSize??i;re.style=ye;let ue;switch(re.kind){case 8:re.label=g(fe.label,we,4e3,oe),re.titleH=re.label.height>0?re.label.height+12:0,ue=Dh(_(ee),Hs,re.titleH+Hs,Hs),ue.minW=re.label.width+2*Hs;break;case 9:ue=Dh(_(ee),Rp,Rp,Rp);break;case 2:re.w=re.h=14;break;case 3:re.w=re.h=18;break;case 4:re.w=re.h=30;break;case 5:case 6:{let ge=Vx(40*R[ee]+16,72,320);re.w=L(ee)?ge:Hx,re.h=L(ee)?Hx:ge;break}case 10:break;case 7:re.label=g(fe.label,l,Math.max(o,y5)),re.w=re.label.width+24,re.h=re.label.height+16;break;default:{re.label=g(fe.label,we,o,oe);let ge=re.label.width,Ae=re.label.height+2*qx;if(re.kind===1){Ae+=14;for(let Te of fe.description){let he=g(Te===""?" ":Te,l,o,oe);re.lines.push(he),he.width>ge&&(ge=he.width),Ae+=he.height}}re.w=Math.max(ge+2*m5,56),re.h=Ae}}ue??(ue=Kt(re.w,re.h)),(re.kind===0||re.kind===1)&&(ue.span=(L(ee)?re.w:re.h)-24),x.push(ue)}let Q=[],G=[],Y=[],N=new Int32Array($),S=new Float64Array($),M=new Float64Array($),b=new Map,E=(ee,re)=>{if(!x[ee].isGroup)return!1;for(let fe=k[re];fe!==-1;fe=k[fe])if(fe===ee)return!0;return!1},w=(ee,re)=>(b.set(Q.length,ee),q.push(re?-1:1/0),y(void 0,10,Kt(0,0,ee)));for(let ee of n.edges){let re=p.get(ee.start),fe=p.get(ee.end);if(re===void 0||fe===void 0)continue;let ye=g(ee.label,l,o),oe=ye.width>0?ye.width+12:0;re===fe?(N[re]++,S[re]=Math.max(S[re],oe),M[re]+=ye.height):E(re,fe)?re=w(re,!0):E(fe,re)&&(fe=w(fe,!1)),Y.push(ee),G.push(ye),Q.push({src:re,dst:fe,minlen:1,labelW:oe,labelH:ye.height>0?ye.height+4:0,route:[],labelX:0,labelY:0})}for(let ee=0;ee<$;ee++){if(I[ee]!==-1)continue;let re=x[ee],fe=0;if(N[ee]>0){let oe=Op+(N[ee]-1)*8;fe=L(ee)?oe+S[ee]:oe*.75+4+M[ee],re.isGroup||(L(ee)?(re.w+=2*fe,re.h=Math.max(re.h,M[ee])):(re.h+=2*fe,re.w=Math.max(re.w,S[ee])),fe=0)}if(!W[ee]&&fe===0){re.parent=k[ee];continue}let ye=L(ee)?Dh("LR",fe,0,0):Dh("TB",0,fe,fe);ye.parent=k[ee],q.push(q[ee]),x[ee].parent=y(void 0,10,ye)}for(let ee=0;ee<$;ee++)I[ee]!==-1&&(x[ee].parent=x[I[ee]].parent);{let ee=[];for(let ue=0;ue<x.length;ue++)ee.push([]);let re=[];for(let ue=0;ue<x.length;ue++){let ge=x[ue].parent;ge>=0?ee[ge].push(ue):re.push(ue)}let fe=ue=>m[ue].kind===2?0:1,ye=(ue,ge)=>fe(ue)-fe(ge)||(q[ue]===q[ge]?0:q[ue]<q[ge]?-1:1)||ue-ge,oe=0,we=re.sort(ye).reverse();for(;we.length>0;){let ue=we.pop();x[ue].seq=oe++;let ge=ee[ue].sort(ye);for(let Ae=ge.length-1;Ae>=0;Ae--)we.push(ge[Ae])}}let T=aa(x,Q,d,{nodeSep:Pp(t,"nodeSpacing",u5),edgeSep:p5,rankSep:Pp(t,"rankSpacing",g5),portSep:20,headRoom:xt("arrow_point")}),A=Math.ceil(T.width+2*c),v=Math.ceil(T.height+2*c),D=[],z=new Map;for(let ee of Q){let re=ee.route;for(let fe=3;fe<re.length-3;fe+=3){let ye=Math.round(re[fe+1]),oe=z.get(ye);oe?oe.push(re[fe]):z.set(ye,[re[fe]])}}let H=[];for(let ee=0;ee<x.length;ee++)H.push([]);let P=[];for(let ee=0;ee<x.length;ee++){let re=x[ee].parent;re>=0?H[re].push(ee):P.push(ee)}let O=P.slice();for(let ee=0;ee<P.length;ee++)for(let re of H[P[ee]])P.push(re);let F="",U="",j="",J="",Z=(ee,re,fe,ye,oe)=>{let we=ee.filter(Ae=>m[Ae].kind===9);if(we.length<2)return;let ue=(Ae,Te)=>Te?x[Ae].x-x[Ae].w/2:x[Ae].y-x[Ae].h/2,ge=(Ae,Te)=>Te?x[Ae].x+x[Ae].w/2:x[Ae].y+x[Ae].h/2;for(let Ae of[!0,!1]){let Te=we.slice().sort((pe,be)=>ue(pe,Ae)-ue(be,Ae)||pe-be),he=!0;for(let pe=1;pe<Te.length;pe++)ge(Te[pe-1],Ae)>ue(Te[pe],Ae)+.5&&(he=!1);if(he){for(let pe=1;pe<Te.length;pe++){let be=u((ge(Te[pe-1],Ae)+ue(Te[pe],Ae))/2+c);U+=`<path class="pele-divider" d="M${Ae?`${be},${u(fe)}V${u(oe)}`:`${u(re)},${be}H${u(ye)}`}"/>`}return}}for(let Ae of we){let Te=x[Ae];U+=Oh(Te.x-Te.w/2+c,Te.y-Te.h/2+c,Te.w,Te.h,` class="pele-divider" rx="${Dp}"`)}};Z(O,c/2,c/2,A-c/2,v-c/2);for(let ee of P){let re=m[ee],fe=re.node,ye=re.style;if(fe===void 0||ye===void 0||re.kind>=9)continue;let oe=x[ee],we=oe.x+c,ue=oe.y+c,ge=re.w,Ae=re.h,Te=` class="pele-label"${ye.text}`,he;switch(re.kind){case 8:{let Ne=we-oe.w/2,Oe=ue-oe.h/2;he=Oh(Ne,Oe,oe.w,oe.h,` rx="${Dp}" fill="var(--_a)" fill-opacity="0.5" stroke="var(--_b)"${ye.shape}`),re.titleH>0&&(he+=`<path d="M${u(Ne)},${u(Oe+re.titleH)}H${u(Ne+oe.w)}"${Rh}${ye.line}/>`+Re(re.label,k5(oe,re.label.width,z)+c,Oe+re.titleH/2,` class="pele-cluster-label"${ye.text}`,h)),Z(H[ee],Ne,Oe+re.titleH,Ne+oe.w,Oe+oe.h);break}case 2:he=`<circle r="7" fill="var(--_l)"${ye.shape}/>`;break;case 3:he=`<circle r="8.5" fill="var(--_bg)" stroke="var(--_l)"${ye.line}/><circle r="5" fill="var(--_l)"${ye.shape}/>`;break;case 4:he=`<polygon points="0,${u(-Ae/2)} ${u(ge/2)},0 0,${u(Ae/2)} ${u(-ge/2)},0"${Ux}${ye.shape}/>`;break;case 5:case 6:he=Oh(-ge/2,-Ae/2,ge,Ae,` rx="2" fill="var(--_l)"${ye.shape}`);break;case 7:{let Ne=u(ge/2),Oe=u(Ae/2),Ye=u(ge/2-Gx),de=u(Gx-Ae/2);he=`<path d="M-${Ne},-${Oe}H${Ye}L${Ne},${de}V${Oe}H-${Ne}Z" fill="var(--_bg)" stroke="var(--_b)"/><path d="M${Ye},-${Oe}V${de}H${Ne}"${Rh}/>`+Re(re.label,0,0,` class="pele-label" font-size="${l}" fill="var(--_m)"`,h);break}default:{if(he=Oh(-ge/2,-Ae/2,ge,Ae,` rx="${u(Math.min(Dp,Ae/2))}"${Ux}${ye.shape}`),re.kind===0){he+=Re(re.label,0,0,Te,h);break}let Ne=qx-Ae/2+re.label.height;he+=`<path d="M${u(-ge/2)},${u(Ne+6)}H${u(ge/2)}"${Rh}${ye.line}/>`+Re(re.label,0,Ne-re.label.height/2,Te,h),Ne+=14;for(let Oe of re.lines)he+=Re(Oe,0,Ne+Oe.height/2,` class="pele-state-description" font-size="${l}"${ye.text}`,h),Ne+=Oe.height}}let pe=e.links.get(fe.id);if(pe){let Ne=Tt(Xx(pe.tooltip));Ne&&(he=`<title>${Qe(Ne)}</title>`+he),he=Ca(he,Ha(Xx(pe.url)),fe.id,D,r,' target="_blank"')}let be=`<g class="${w5[re.kind]}${Dt(fe.cssClasses.replace(x5,""))}" data-id="${Pe(fe.id)}"`;re.kind===8?F+=`${be}>${he}</g>`:re.kind===7?J+=`${be} transform="translate(${u(we)},${u(ue)})">${he}</g>`:j+=`${be} transform="translate(${u(we)},${u(ue)})">${he}</g>`}let B=(ee,re,fe)=>{let ye=x[fe];if(ye.isGroup)return;let oe=m[fe],we=oe.kind===5||oe.kind===6,ue=re===0?3:re-3;for(let ge of[1,0]){let Ae=ge?ye.h:ye.w,Te=ge?oe.h:oe.w,he=ge?oe.w:oe.h,pe=(ge?ye.y:ye.x)+c,be=(ge?ye.x:ye.y)+c,Ne=ee[re+ge]-pe;if(!(Math.abs(Math.abs(Ne)-Ae/2)>=.5)){ee[re+ge]-=Math.sign(Ne)*(Ae-Te)/2,we&&he>Te&&(ee[re+1-ge]=Vx(ee[ue+1-ge],be-he/2+6,be+he/2-6));return}}},X=Kc();for(let ee=0;ee<Q.length;ee++){let re=Q[ee];re.src===re.dst||re.route.length<6||Y[ee].pattern==="dashed"||X.add(re.dst,_a(re.route,re.route.length-3,x[re.dst]),"arrow_point")}let te="",se="",ce=new Int32Array($),ae=new Float64Array($);for(let ee=0;ee<Q.length;ee++){let re=Q[ee],fe=Y[ee],ye=G[ee],oe=fe.pattern==="dashed",we=oe?"none":"arrow_point",ue;if(re.src===re.dst){let ge=x[re.src],Ae=m[re.src],Te=ce[re.src]++,he=L(re.src),pe=ge.isGroup?ge.w:Ae.w,be=ge.isGroup?ge.h:Ae.h,Ne=(he?pe:be)/2,Oe=Math.max(Math.min((he?be:pe)/2-4,8+Te*6),2),Ye=Op+Te*8,de=xt(we)/(Math.hypot(Ye,Oe)||1),Me=(Fe,V)=>ge.x+c+(he?Ne+Fe:-V),_e=(Fe,V)=>ge.y+c+(he?V:Ne+Fe),$e=(Fe,V)=>`${u(Me(Fe,V))},${u(_e(Fe,V))}`;ue={d:`M${$e(0,-Oe)}C${$e(Ye,-2*Oe)} ${$e(Ye,2*Oe)} ${$e(Ye*de,Oe+Oe*de)}`,sx:0,sy:0,sdx:0,sdy:0,ex:Me(0,Oe),ey:_e(0,Oe),edx:Me(-Ye,-Oe)-Me(0,0),edy:_e(-Ye,-Oe)-_e(0,0)};let ve=Math.hypot(ue.edx,ue.edy)||1;ue.edx/=ve,ue.edy/=ve;let Le=Op+(N[re.src]-1)*8,qe=ae[re.src]+ye.height/2;ae[re.src]+=ye.height,re.labelX=he?ge.x+Ne+Le+4+re.labelW/2:ge.x,re.labelY=he?ge.y-M[re.src]/2+qe:ge.y+Ne+Le*.75+4+qe}else{let ge=re.route.slice(),Ae=X.of(re.src,_a(ge,0,x[re.src])),Te=X.of(re.dst,_a(ge,ge.length-3,x[re.dst]));for(let pe=0;pe<ge.length;pe+=3)ge[pe]+=c,ge[pe+1]+=c;B(ge,0,re.src),B(ge,ge.length-3,re.dst);let he=b.get(ee);if(he!==void 0&&ge.length>=6){let pe=x[he],be=m[re.src].kind===10,Ne=be?0:ge.length-3,Oe=(pe.dir==="TB"||pe.dir==="LR")===be,Ye=jx(pe.dir)?[ge[Ne],pe.y+c+(Oe?m[he].titleH-pe.h/2:pe.h/2),0]:[pe.x+c+(Oe?-pe.w/2:pe.w/2),ge[Ne+1],1];ge=be?Ye.concat(ge):ge.concat(Ye)}ue=Xr(ge,void 0,0,xt(we),Ae,Te)}if(te+=`<g class="pele-edge ${oe?'pele-note-edge" stroke="var(--_b)" stroke-dasharray="3 4':"pele-transition"}" data-id="${Pe(fe.id)}"><path d="${ue.d}"/>`+Mt(we,ue.ex,ue.ey,ue.edx,ue.edy,"var(--_l)")+"</g>",ye.width>0){let ge=re.labelX+c,Ae=re.labelY+c;se+=Tr(fe.id,ye,ge,Ae,"",h)}}let ie=th(e.title,s,i,c,A,v,(F?`<g class="pele-clusters">${F}</g>`:"")+(U?`<g class="pele-dividers" stroke-dasharray="4 4"${Rh}>${U}</g>`:"")+(te?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${te}</g>`:"")+(se?`<g class="pele-edge-labels" font-size="${l}">${se}</g>`:"")+`<g class="pele-nodes">${j}${J}</g>`);return{svg:tt("state",ie.width,ie.height,i,r,e,ie.content),width:ie.width,height:ie.height,links:D}}function k5(e,t,r){let a=r.get(Math.round(e.y-e.h/2));if(a===void 0||t===0)return e.x;let n=e.x-e.w/2,i=t/2,l=e.x,s=-1;for(let o of[e.x,n+Hs+i,n+e.w-Hs-i]){let c=1/0;for(let h of a)h>n&&h<n+e.w&&(c=Math.min(c,Math.abs(h-o)-i));if(c>=6)return o;c>s+.5&&(s=c,l=o)}return l}var n5,Yx,i5,s5,l5,o5,c5,d5,Lh,u5,p5,g5,Hs,Rp,m5,qx,Op,Gx,y5,Dp,Hx,Ux,Rh,x5,b5,w5,Zx,Qx=Ge(()=>{xe();Kn();qa();In();Qn();or();Gt();$r();yt();kt();n5=class{constructor(){le(this,"type","state");le(this,"rootDoc",[]);le(this,"states",new Map);le(this,"relations",[]);le(this,"classes",new Map);le(this,"links",new Map);le(this,"graph",{nodes:[],edges:[]});le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"dividerCount",0)}get direction(){let e="TB";for(let t of this.rootDoc)typeof t!="string"&&t.stmt==="dir"&&(e=t.value);return e}setRootDoc(e){this.rootDoc=e,this.translate(),this.extract(e)}extract(e){this.states=new Map,this.relations=[],this.classes=new Map;let t=Array.isArray(e)?e:e.doc;for(let r of t)if(typeof r!="string")switch(r.stmt){case"state":this.addState(r.id.trim(),r.type,r.doc,r.description,r.note);break;case"relation":this.addRelation(r.state1,r.state2,r.description);break;case"classDef":this.addStyleClass(r.id.trim(),r.classes);break;case"style":{let a=r.styleClass.split(",").map(n=>n.replace(/;/g,"").trim());for(let n of this.named(r.id.trim()))n.styles=a.slice();break}case"applyClass":this.setCssClass(r.id.trim(),r.styleClass);break;case"click":this.addLink(typeof r.id=="string"?r.id:r.id.id,r.url,r.tooltip);break}this.graph=a5(t,this.states,this.classes)}translate(){let e=[["root",{stmt:"root",id:"root",doc:this.rootDoc},!0]];for(;e.length>0;){let[t,r,a]=e.pop();if(typeof r=="string")continue;if(r.stmt==="relation"){e.push([t,r.state2,!1],[t,r.state1,!0]);continue}if(r.stmt==="state")r.id==="[*]"?(r.id=t+(a?"_start":"_end"),r.start=a):r.id=r.id.trim();else if(r.stmt!=="root")continue;if(!r.doc)continue;let n=[],i=[];for(let l of r.doc)typeof l!="string"&&l.stmt==="state"&&l.type==="divider"&&!l.doc?(n.push({...l,doc:i}),i=[]):i.push(l);n.length>0&&(i.length>0&&n.push({stmt:"state",id:this.getDividerId(),type:"divider",doc:i}),r.doc=n);for(let l=r.doc.length-1;l>=0;l--)e.push([r.id,r.doc[l],!0])}}addState(e,t="default",r,a,n,i){let l=e.trim(),s=this.states.get(l);if(s?(s.doc||(s.doc=r),s.type||(s.type=t)):(s={stmt:"state",id:l,descriptions:[],type:t,doc:r,note:n,classes:[],styles:[],textStyles:[]},this.states.set(l,s)),a)for(let o of Array.isArray(a)?a:[a])this.addDescription(l,o.trim());if(n&&(s.note=n),i)for(let o of i)this.setCssClass(l,o.trim())}getState(e){return this.states.get(e)}addLink(e,t,r){this.links.set(e,{url:t,tooltip:r})}addRelation(e,t,r=""){for(let a of[e,t])this.addState(a.id,a.type,a.doc,a.description,a.note,a.classes);this.relations.push({id1:e.id.trim(),id2:t.id.trim(),relationTitle:r})}addDescription(e,t){this.states.get(e)?.descriptions?.push(t.startsWith(":")?t.replace(":","").trim():t)}getDividerId(){return`divider-id-${++this.dividerCount}`}addStyleClass(e,t=""){let r=this.classes.get(e);if(r||(r={id:e,styles:[],textStyles:[]},this.classes.set(e,r)),!!t)for(let a of t.split(",")){let n=a.replace(";","").trim();a.includes("color")&&r.textStyles.push(n.replace("fill","bgFill").replace("color","fill")),r.styles.push(n)}}setCssClass(e,t){for(let r of this.named(e))r.classes?.push(t)}getDirection(){for(let e of this.rootDoc)if(typeof e!="string"&&e.stmt==="dir")return e.value;return"TB"}setDirection(e){for(let t of this.rootDoc)if(typeof t!="string"&&t.stmt==="dir"){t.value=e;return}this.rootDoc.unshift({stmt:"dir",value:e})}trimColon(e){return e.startsWith(":")?e.slice(1).trim():e.trim()}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
208
|
+
`)}named(e){let t=[];for(let r of e.split(",")){let a=this.states.get(r);a||(this.addState(r),a=this.states.get(r.trim())),a&&t.push(a)}return t}},Yx=["$end","INVALID","NL","SD","DESCR","-->","HIDE_EMPTY","scale","WIDTH","COMPOSIT_STATE","STRUCT_START","STRUCT_STOP","STATE_DESCR","AS","ID","FORK","JOIN","CHOICE","CONCURRENT","note","NOTE_TEXT","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","CLICK","STRING","HREF","classDef","CLASSDEF_ID","DEFAULT_CLASSDEF_ID","CLASSDEF_STYLEOPTS","DEFAULT","style","STYLE_IDS","STYLEDEF_STYLEOPTS","class","CLASSENTITY_IDS","STYLECLASS","direction_tb","direction_bt","direction_rl","direction_lr","EDGE_STATE","STYLE_SEPARATOR","left_of","right_of","INVALID"],i5=/direction/gi,s5=/<<(?:fork|join|choice)>>|\[\[(?:fork|join|choice)\]\]/gi,l5=/[\n\r\u2028\u2029]/g,o5=/%%/g,c5=/\{/g;d5=["TB","BT","RL","LR"],Lh="'NL', 'ID', 'HIDE_EMPTY', 'scale', 'COMPOSIT_STATE', 'STATE_DESCR', 'FORK', 'JOIN', 'CHOICE', 'CONCURRENT', 'note', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'CLICK', 'classDef', 'style', 'class', 'direction_tb', 'direction_bt', 'direction_rl', 'direction_lr', 'EDGE_STATE'";u5=40,p5=16,g5=44,Hs=16,Rp=10,m5=16,qx=10,Op=26,Gx=8,y5=320,Dp=10,Hx=8,Ux=' fill="var(--_s)" stroke="var(--_b)"',Rh=' fill="none" stroke="var(--_b)"',x5=/(?:^| )statediagram-(?:state|cluster-alt|cluster|note)(?= |$)/g,b5=new Map([["rectWithTitle",1],["stateStart",2],["stateEnd",3],["choice",4],["fork",5],["join",6],["note",7],["divider",10]]),w5=["pele-node pele-state","pele-node pele-state","pele-node pele-state-start","pele-node pele-state-end","pele-node pele-state-choice","pele-node pele-state-fork","pele-node pele-state-join","pele-note","pele-cluster pele-state-composite"];Zx={type:"state",math:!0,parse(e,t,r){let a=new n5;return r&&(a.title=r),f5(e,a),a},render:$5}});var Jx={};Rt(Jx,{state:()=>Zx});var eb=Ge(()=>{xe();Qx()});function ko(e){return!Number.isNaN(e.getTime())}function ba(e,t){let r=String(e);return r.length>=t?r:"0".repeat(t-r.length)+r}function pb(e){let t=["th","st","nd","rd"],r=e%100;return e+(t[(r-20)%10]||t[r]||t[0])}function Yp(e){let t=-Math.round(e.getTimezoneOffset()/15)*15;return t===0?0:t}function tb(e){let t=Yp(e),r=Math.abs(t);return(t>=0?"+":"-")+ba(Math.floor(r/60),2)+":"+ba(r%60,2)}function gb(e){return e.getDay()||7}function si(e,t){let r=new Date(e);return r.setDate(r.getDate()+t),r}function M5(e){let t=new Date(e.getFullYear(),e.getMonth()+1,0);return t.setHours(23,59,59,999),t.getDate()}function rb(e,t){let r=new Date(e);return r.setDate(1),t(r),r.setDate(Math.min(e.getDate(),M5(r))),r}function mb(e,t,r){switch(r){case"M":return rb(e,a=>a.setMonth(e.getMonth()+t));case"y":return rb(e,a=>a.setFullYear(e.getFullYear()+t));case"d":return si(e,Math.round(t));case"w":return si(e,Math.round(7*t));case"h":return new Date(e.getTime()+t*36e5);case"m":return new Date(e.getTime()+t*6e4);case"s":return new Date(e.getTime()+t*1e3);default:return new Date(e.getTime()+t)}}function yb(e){return si(e,4-gb(e))}function ab(e){let t=yb(e),r=new Date(t.getFullYear(),0,1),a=gb(r),n=si(r,4-a+(a>4?7:0)),i=(Yp(n)-Yp(t))*6e4,l=(t.getTime()-n.getTime()-i)/6048e5;return(l<0?Math.ceil(l)||0:Math.floor(l))+1}function xb(e,t){if(!ko(e))return"Invalid Date";let r=t||E5;if(r==="YYYY-MM-DD")return bb(e);let a=!1,n=r.replace(v5,l=>{switch(l){case"Q":return String(Math.ceil((e.getMonth()+1)/3));case"Do":return"["+pb(e.getDate())+"]";case"GGGG":return String(yb(e).getFullYear());case"W":return String(ab(e));case"WW":return ba(ab(e),2);case"k":return String(e.getHours()||24);case"kk":return ba(e.getHours()||24,2);case"X":return String(Math.floor(e.getTime()/1e3));case"x":return String(e.getTime());case"gggg":case"wo":case"w":case"ww":case"z":case"zzz":return a=!0,l;default:return l}});if(a)return;let i=e.getHours();return n.replace(A5,(l,s)=>{if(s)return s;switch(l){case"YY":return String(e.getFullYear()).slice(-2);case"YYYY":return ba(e.getFullYear(),4);case"M":return String(e.getMonth()+1);case"MM":return ba(e.getMonth()+1,2);case"MMM":return Xs[e.getMonth()].slice(0,3);case"MMMM":return Xs[e.getMonth()];case"D":return String(e.getDate());case"DD":return ba(e.getDate(),2);case"d":return String(e.getDay());case"dd":return Yi[e.getDay()].slice(0,2);case"ddd":return Yi[e.getDay()].slice(0,3);case"dddd":return Yi[e.getDay()];case"H":return String(i);case"HH":return ba(i,2);case"h":return String(i%12||12);case"hh":return ba(i%12||12,2);case"a":return i<12?"am":"pm";case"A":return i<12?"AM":"PM";case"m":return String(e.getMinutes());case"mm":return ba(e.getMinutes(),2);case"s":return String(e.getSeconds());case"ss":return ba(e.getSeconds(),2);case"SSS":return ba(e.getMilliseconds(),3);case"Z":return tb(e);default:return tb(e).replace(":","")}})}function bb(e){let t=e.getFullYear(),r=e.getMonth()+1,a=e.getDate();return(t>=1e3&&t<=9999?t:ba(t,4))+(r<10?"-0":"-")+r+(a<10?"-0":"-")+a}function Hr(e){return(t,r)=>(t[e]=+r,!0)}function lb(e){return(t,r)=>{let a=e.indexOf(r)+1;return a<1?!1:(t.month=a%12||a,!0)}}function L5(e){if(e===ob)return Ph;if(ob=e,Ph=null,/[Ll]/.test(e.replace(T5,"")))return null;let t=e.match(S5);return t?(Ph=t.map(r=>N5.get(r)??r.replace(/^\[|\]$/g,"")),Ph):null}function R5(e,t,r){if(t==="x"||t==="X")return new Date((t==="X"?1e3:1)*Number(e));let a=L5(t);if(!a)return;let n={},i=e,l=0;for(let p of a){if(typeof p=="string"){l+=p.length;continue}let m=p.re.exec(i.slice(l));if(!m||!p.read(n,m[0]))return;i=i.replace(m[0],"")}n.afternoon!==void 0&&n.hours!==void 0&&(n.afternoon?n.hours<12&&(n.hours+=12):n.hours===12&&(n.hours=0));let s=n.dayGiven||n.day?n.day:!n.year&&!n.month?r.getDate():1,o=n.year||r.getFullYear(),c=0;n.year&&!n.month||(c=n.month>0?n.month-1:r.getMonth());let h=n.hours||0,d=n.minutes||0,f=n.seconds||0,g=n.milliseconds||0;if(n.offset!==void 0)return new Date(Date.UTC(o,c,s,h,d,f,g+n.offset*6e4));if(!n.week)return new Date(o,c,s,h,d,f,g)}function O5(e,t,r){let a=R5(e,t,r);return a&&ko(a)&&xb(a,t)===e?a:void 0}function wb(e){let t=e===void 0?NaN:+e;return Number.isFinite(t)?t:Date.now()}function X5(e){let t=B5.exec(e.trim());return t?[Number.parseFloat(t[1]),t[2]]:[NaN,"ms"]}function cb(e,t){let r=new Set(e);for(let a of t.toLowerCase().split(W5))a!==""&&r.add(a);return[...r]}function lI(e){let t=e.length,r=[],a=[],n=[],i=0,l=0,s=(d,f,g)=>{r.push(d),a.push(e.slice(f,g)),n.push(f),l=g},o=d=>(d.lastIndex=l,d.test(e)?d.lastIndex:-1),c=(d,f)=>{let g=e.indexOf(d,f);return g===-1?t:g},h=d=>{let f;switch(d|32){case 97:if((f=o(Z5))>=0)return i=1,s(3,l,f),!0;if((f=o(Q5))>=0)return i=2,s(5,l,f),!0;if((f=o(J5))>=0)return i=3,l=f,!0;break;case 104:if((f=o(eI))>=0)return i=4,l=f,!0;break;case 99:if((f=o(tI))>=0)return i=5,l=f,!0;if((f=o(rI))>=0)return i=7,l=f,!0;break;case 119:{zp.lastIndex=l;let p=zp.exec(e);if(p)return s(22+nI.indexOf(p[1].toLowerCase()),l,zp.lastIndex),!0;if(Fp.lastIndex=l,p=Fp.exec(e),p)return s(p[1]!==void 0?29:30,l,Fp.lastIndex),!0;break}}let g=sI.get(d|32);if(g){for(let[p,m]of g)if((f=o(p))>=0)return s(m,l,f),!0}return!1};for(;;){if(l>=t){let f=38;switch(i){case 1:f=4;break;case 2:f=6;break;case 3:f=7;break;case 4:f=9;break;case 5:f=10;break;case 6:f=11;break;case 7:f=12;break}s(f,t,t);break}let d=e.charCodeAt(l);switch(i){case 0:{let f=e.charCodeAt(l+1);if(d===37)if(f!==37){let g=c(`
|
|
209
|
+
`,l+1);for(;e.charCodeAt(g)===10;)g++;l=g}else{if(e.charCodeAt(l+2)===123)return s(2,l,l+3),s(1,l,l),{types:r,texts:a,starts:n};l=c(`
|
|
210
|
+
`,l+2)}else if(d!==125&&f===37)l=c(`
|
|
211
|
+
`,l+2);else if(d===10){let g=l+1;for(;e.charCodeAt(g)===10;)g++;s(8,l,g)}else if(je(d))for(l++;l<t&&je(e.charCodeAt(l));)l++;else{if(h(d))break;if(d>=48&&d<=57&&o(iI)>=0)s(31,l,l+10);else if(d!==58){let g=l+1;for(;g<t;){let p=e.charCodeAt(g);if(p===58||p===10)break;g++}s(35,l,g)}else{let g=l+1;for(;g<t;){let p=e.charCodeAt(g);if(p===35||p===10||p===59)break;g++}s(g>l+1?36:37,l,g)}}break}case 1:case 2:{let f=i===1?4:6;i=0,s(f,l,c(`
|
|
212
|
+
`,l));break}case 3:d===125?(i=0,l++):s(7,l,c("}",l));break;case 4:d===34?(i=0,l++):s(9,l,c('"',l));break;case 5:if(d===40){let f=o(aI);f>=0?(i=0,l=f):(i=6,l++)}else s(10,l,c("(",l));break;case 6:d===41?(i=0,l++):s(11,l,c(")",l));break;case 7:if(je(d))i=0,l++;else{let f=l+1;for(;f<t&&!je(e.charCodeAt(f));)f++;s(12,l,f)}break}}return r.push(0),a.push(""),n.push(t),{types:r,texts:a,starts:n}}function cI(e,t){let{types:r,texts:a,starts:n}=lI(e),i=0,l=o=>{let c=r[i];throw st("gantt",e,n[i],`Expecting ${o}, got '${c===0?"1":K5[c]}'`)},s=(o="")=>{Yh[r[i]]!==1&&l(hb+o)};for(r[i]!==13&&l("'gantt'"),i++;;){let o=r[i],c=a[i];switch(Yh[o]!==1&&l(hb),i++,o){case 38:if(r[i]===0)return;s();break;case 8:break;case 14:s(),t.setDateFormat(c.slice(11));break;case 15:s(),t.enableInclusiveEndDates();break;case 16:s(),t.TopAxis();break;case 17:s(),t.setAxisFormat(c.slice(11));break;case 18:s(),t.setTickInterval(c.slice(13));break;case 20:s(),t.setExcludes(c.slice(9));break;case 19:s(),t.setIncludes(c.slice(9));break;case 21:s(),t.setTodayMarker(c.slice(12));break;case 29:s(),t.setWeekend("friday");break;case 30:s(),t.setWeekend("saturday");break;case 32:s(),t.setDiagramTitle(c.slice(6));break;case 3:{r[i]!==4&&l("'acc_title_value'");let h=a[i++];s(),t.setAccTitle(h.trim());break}case 5:{r[i]!==6&&l("'acc_descr_value'");let h=a[i++];s(),t.setAccDescription(h.trim());break}case 7:s(),t.setAccDescription(c.trim());break;case 34:s(),t.addSection(c.slice(8));break;case 35:{r[i]!==36&&l("'taskData'");let h=a[i++];s(),t.addTask(c,h);break}case 12:{let h,d=null,f;r[i]===10?(h=a[i++],r[i]===11&&(d=a[i++]),r[i]===9?(f=a[i++],s()):s(d===null?", 'callbackargs', 'href'":", 'href'")):r[i]===9?(f=a[i++],r[i]===10?(h=a[i++],r[i]===11?(d=a[i++],s()):s(", 'callbackargs'")):s(", 'callbackname'")):l("'callbackname', 'href'"),h!==void 0&&t.setClickEvent(c,h,d),f!==void 0&&t.setLink(c,f);break}default:s(),t.setWeekday(oI[o-22])}}}function zh(e){e.setHours(0,0,0,0)}function Hh(e){return{floor(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),zh(t)},offset:(t,r)=>t.setDate(t.getDate()+r*7),cycle:1/0,ms:vo}}function Gh(e,t,r){return Math.floor((+t-+e-(t.getTimezoneOffset()-e.getTimezoneOffset())*Pn)/r)}function hI(e,t){return(e%t+t)%t}function Fh(e,t,r){let a=e==="week"?Hh(r):Mo[e];if(t<=1)return a;if(e==="millisecond")return{...a,floor:l=>l.setTime(Math.floor(+l/t)*t),offset:(l,s)=>l.setTime(+l+s*t)};if(e==="year")return{...a,floor(l){l.setFullYear(Math.floor(l.getFullYear()/t)*t),a.floor(l)},offset:(l,s)=>l.setFullYear(l.getFullYear()+s*t)};if(e==="week"){let l=new Date(0);return a.floor(l),{...a,floor(s){a.floor(s),a.offset(s,-hI(Gh(l,s,vo),t))},offset:(s,o)=>a.offset(s,o*t)}}let n=a.field,i=l=>n(l)%t===0;return{...a,floor(l){for(a.floor(l);Number.isFinite(+l)&&!i(l);a.floor(l))l.setTime(+l-1)},offset(l,s){for(let o=0;o<s&&Number.isFinite(+l);o++)do a.offset(l,1);while(Number.isFinite(+l)&&!i(l))}}}function $b(e,t,r,a){let n=new Date(t-1);e.floor(n),e.offset(n,1),e.floor(n);let i=[],l=-1/0;for(;+n<=r&&+n>l;){if(i.length>=a)return;l=+n,i.push(l),e.offset(n,1),e.floor(n)}return i}function db(e,t,r){let a=(t-e)/Math.max(0,r),n=Math.floor(Math.log10(a)),i=a/Math.pow(10,n),l=i>=Math.sqrt(50)?10:i>=Math.sqrt(10)?5:i>=Math.SQRT2?2:1;return Math.pow(10,n)*l}function dI(e,t,r){let a=(t-e)/r,n=0;for(;n<Us.length&&Us[n][2]<=a;)n++;let i;if(n===Us.length)i=Fh("year",Math.max(1,db(e/qh,t/qh,r)),0);else if(n===0)i=Fh("millisecond",Math.max(db(e,t,r),1),0);else{let[l,s]=Us[a/Us[n-1][2]<Us[n][2]/a?n-1:n];i=Fh(l,s,0)}return $b(i,e,t,4*r+8)??[]}function pI(e,t,r,a,n){let i=fI.exec(e);if(!i)return;let l=parseInt(i[1],10),s=i[2],o=Fh(s,l,Math.max(0,uI.indexOf(t)));if(!((a-r)/(Math.min(l,o.cycle)*o.ms)>n))return $b(o,r,a,n)}function Nr(e,t,r){let a=e<0?"-":"",n=String(a?-e:e);return a+(n.length<r?t.repeat(r-n.length)+n:n)}function ii(e,t){let r=new Date(+e);return t.floor(r),r}function fb(e,t){let r=Hh(t),a=ii(e,Mo.year);return Gh(ii(new Date(+a-1),r),ii(e,r),vo)}function Bp(e){let t=Hh(4),r=e.getDay(),a=ii(r>=4||r===0?e:new Date(+e-1),t);return r>=4||r===0||(t.offset(a,1),t.floor(a)),a}function Bh(e,t){let r="",a=0,n=e.length;for(let i=0;i<n;i++){if(e.charCodeAt(i)!==37)continue;r+=e.slice(a,i);let l=e.charAt(++i),s=gI.get(l);s!==void 0?l=e.charAt(++i):s=l==="e"?" ":"0",r+=mI(l,t,s),a=i+1}return r+e.slice(a)}function mI(e,t,r){switch(e){case"a":return Yi[t.getDay()].slice(0,3);case"A":return Yi[t.getDay()];case"b":return Xs[t.getMonth()].slice(0,3);case"B":return Xs[t.getMonth()];case"c":return Bh("%x, %X",t);case"d":case"e":return Nr(t.getDate(),r,2);case"f":return Nr(t.getMilliseconds(),r,3)+"000";case"g":return Nr(Bp(t).getFullYear()%100,r,2);case"G":return Nr(Bp(t).getFullYear()%1e4,r,4);case"H":return Nr(t.getHours(),r,2);case"I":return Nr(t.getHours()%12||12,r,2);case"j":return Nr(1+Gh(ii(t,Mo.year),ii(t,Mo.day),qi),r,3);case"L":return Nr(t.getMilliseconds(),r,3);case"m":return Nr(t.getMonth()+1,r,2);case"M":return Nr(t.getMinutes(),r,2);case"p":return t.getHours()>=12?"PM":"AM";case"q":return String(1+Math.floor(t.getMonth()/3));case"Q":return String(+t);case"s":return String(Math.floor(+t/1e3));case"S":return Nr(t.getSeconds(),r,2);case"u":return String(t.getDay()||7);case"U":return Nr(fb(t,0),r,2);case"V":{let a=Bp(t),n=ii(a,Mo.year),i=ii(n,Hh(4));return Nr(Gh(i,a,vo)+(n.getDay()===4?1:0),r,2)}case"w":return String(t.getDay());case"W":return Nr(fb(t,1),r,2);case"x":return Bh("%-m/%-d/%Y",t);case"X":return Bh("%-I:%M:%S %p",t);case"y":return Nr(t.getFullYear()%100,r,2);case"Y":return Nr(t.getFullYear()%1e4,r,4);case"Z":{let a=t.getTimezoneOffset(),n=Math.abs(a);return(a>0?"-":"+")+Nr(Math.floor(n/60),"0",2)+Nr(n%60,"0",2)}case"%":return"%";default:return e}}function un(e,t,r,a){let n=e.gantt?.[t];return typeof n=="number"&&Number.isFinite(n)?Math.min(a,Math.max(r,n)):void 0}function Wp(e,t){let r=e.gantt?.[t];return typeof r=="string"?r:void 0}function wI(e,t){return e.gantt?.[t]===!0}function ub(e,t,r){let a=Be(e.replace(bI," "),!1,t,r,4e3);return a.lines.length<=1?a:{...a,lines:[a.lines[0]],widths:[a.widths[0]],width:a.widths[0],height:a.lineHeight}}function Wh(e){return Number.isFinite(+e.startTime)&&Number.isFinite(+e.endTime)}function $I(e,t,r){let a=e.filter(Wh).sort((l,s)=>+l.startTime-+s.startTime||l.order-s.order),n=[];for(let l of a){let s=+l.startTime,o=0;for(;o<n.length&&s<n[o];)o++;n[o]=+l.endTime,r.set(l,t+o)}let i=n.length;for(let l of e)r.has(l)||r.set(l,t+i++);return Math.max(i,1)}function kI(e,t,r){let a=r.fontSize??16,n=r.measurer??rt(r.fontFamily),i=r.padding??8,l=wb(r.now),s=un(t,"fontSize",4,72)??Math.round(a*.8125),o=un(t,"sectionFontSize",4,72)??s,c=Math.round(a*.75),h=un(t,"barHeight",4,400)??Math.round(s*1.85),d=un(t,"barGap",0,400)??Math.round(h/4),f=h+d,g=Math.round(un(t,"numberSectionStyles",1,1e3)??4),p=e.displayMode==="compact",m=e.topAxis||wI(t,"topAxis"),x=e.getTasks(l),y=x.filter($e=>!$e.vert),$=x.filter($e=>$e.vert&&Wh($e)),k=new Map;for(let $e of y)k.has($e.section)||k.set($e.section,k.size);let I=new Map,_=[];if(p){let $e=new Map;for(let ve of y){let Le=$e.get(ve.section);Le?Le.push(ve):$e.set(ve.section,[ve])}for(let[ve,Le]of $e){let qe=$I(Le,_.length,I);for(let Fe=0;Fe<qe;Fe++)_.push(ve)}}else for(let $e of y)I.set($e,_.length),_.push($e.section);let L=_.length,R=1/0,W=-1/0;for(let $e of x)Wh($e)&&(R=Math.min(R,+$e.startTime),W=Math.max(W,+$e.endTime));let q=R<=W,C=Be(e.title,!1,n,a,4e3,1),K=C.height>0?C.height+16:0;if(!q){let $e=Math.ceil(Math.max(C.width,1)+2*i),ve=Math.ceil(Math.max(C.height,1)+2*i),Le=Re(C,$e/2,i+C.height/2,' class="pele-title" font-weight="var(--_tw)"');return{svg:tt("gantt",$e,ve,a,r,e,Le),width:$e,height:ve,links:[]}}let Q=new Map,G=0;for(let $e of k.keys()){let ve=Be($e,!1,n,o,180);Q.set($e,ve),G=Math.max(G,ve.width)}let Y=e.axisFormat||(e.dateFormat==="D"?"%d":Wp(t,"axisFormat")??"%Y-%m-%d"),N=$e=>Bh(Y,new Date($e)),S=Math.max(n.width(N(R),c,0),n.width(N(W),c,0)),M=i+(un(t,"leftPadding",0,2e3)??Math.max(G>0?G+24:0,S/2)),b=un(t,"rightPadding",0,2e3)??Math.max(16,S/2),E=ei(r,un(t,"useWidth",100,2e4)??yI,280),w=Math.max(xI,E-M-b-i),T=M+w,A=W>R?w/(W-R):0,v=$e=>A===0?M+w/2:M+($e-R)*A,D=Math.round(c*1.75),z=un(t,"topPadding",0,2e3),H=un(t,"gridLineStartPadding",0,2e3),P=i+K+(m?D:0),O=Math.max(P,z??0),F=z!==void 0&&H!==void 0?Math.max(0,Math.min(z-H,O-P)):0,U=Math.max(L,1)*f,j=O+U,J=[],Z=T+b;for(let $e of y){let ve=ub($e.task,n,s),Le=I.get($e);if(!Wh($e)){let ne=M+js+ve.width/2;Z=Math.max(Z,ne+ve.width/2),J.push({task:$e,label:ve,row:Le,x0:NaN,x1:NaN,labelX:ne,inside:!1});continue}let qe=v(+$e.startTime),Fe=Math.max(v(+($e.renderEndTime??$e.endTime)),qe+($e.milestone?0:2));if($e.milestone){let ne=qe+(v(+$e.endTime)-qe)/2;qe=ne-h/2,Fe=ne+h/2}let V=!$e.milestone&&ve.width+2*js<=Fe-qe,me=(qe+Fe)/2;if(!V){let ne=Fe+js+ve.width<=T+b,ke=qe-js-ve.width>=M;me=ne||!ke?Fe+js+ve.width/2:qe-js-ve.width/2,Z=Math.max(Z,me+ve.width/2)}J.push({task:$e,label:ve,row:Le,x0:qe,x1:Fe,labelX:me,inside:V})}let B=e.tickInterval||Wp(t,"tickInterval")||"",X=e.weekday??Wp(t,"weekday")??"sunday",te=Math.max(2,Math.min(10,Math.floor(w/(S+24)))),se=pI(B,X,R,W,Math.ceil(w/3))??dI(R,W,te),ce="",ae="",ie="",ee=-1/0,re="",fe=j+D/2+2,ye=O-F-D/2-2;for(let $e of se){let ve=v($e);ce+=`M${u(ve)},${u(O-F)}V${u(j)}`;let Le=N($e),qe=n.width(Le,c,0);if(ve-qe/2<ee+8||Le===re)continue;ee=ve+qe/2,re=Le,Z=Math.max(Z,ee);let Fe=`text-anchor="middle">${Qe(Le)}</text>`;ae+=`<text x="${u(ve)}" y="${u(fe+c*.35)}" ${Fe}`,m&&(ie+=`<text x="${u(ve)}" y="${u(ye+c*.35)}" ${Fe}`)}let oe="",we="",ue=[],ge=j+D+4,Ae=Math.round(s*1.5);for(let $e of[...$].sort((ve,Le)=>+ve.startTime-+Le.startTime)){let ve=v(+$e.startTime),Le=ub($e.task,n,s),qe=Math.max(i+Le.width/2,ve),Fe=0;for(;Fe<ue.length&&qe-Le.width/2<ue[Fe]+8;)Fe++;ue[Fe]=qe+Le.width/2,Z=Math.max(Z,ue[Fe]),oe+=`<path class="pele-vert" data-id="${Pe($e.id)}" d="M${u(ve)},${u(O-F)}V${u(j)}"/>`,we+=Re(Le,qe,ge+Fe*Ae+Ae/2,` class="pele-vert-label" data-id="${Pe($e.id)}"`)}let Te=Math.ceil(Math.max(Z,i+C.width)+i),he=Math.ceil(j+D+(ue.length>0?4+ue.length*Ae:0)+i),pe="",be="";for(let $e=0;$e<L;){let ve=_[$e],Le=$e+1;for(;Le<L&&_[Le]===ve;)Le++;let qe=k.get(ve)%g,Fe=O+$e*f,V=(Le-$e)*f;(k.size>1||ve!=="")&&(pe+=`<rect class="pele-section pele-section-${qe}" x="0" y="${u(Fe)}" width="${Te}" height="${u(V)}" fill="${qe%2===0?"var(--_s)":"none"}"/>`);let me=Q.get(ve);be+=Re(me,i+8+me.width/2,Fe+V/2,` class="pele-section-label" data-id="${Pe(ve)}"`,r.icons),$e=Le}let Ne="";if((e.excludes.length>0||e.includes.length>0)&&+mb(new Date(R),6,"y")>W){let $e,ve,Le=()=>{if(!$e||!ve)return;let qe=new Date($e);qe.setHours(0,0,0,0);let Fe=new Date(ve);Fe.setHours(23,59,59,999);let V=Math.max(M,v(+qe)),me=Math.min(T,v(+Fe));me>V&&(Ne+=`<rect x="${u(V)}" y="${u(O)}" width="${u(me-V)}" height="${u(U)}"/>`),$e=ve=void 0};for(let qe=new Date(R);+qe<=W;qe=si(qe,1))e.isInvalidDate(qe)?($e??($e=qe),ve=qe):Le();Le()}let Oe=[],Ye="";for(let $e of J){let ve=$e.task,Le=O+$e.row*f+f/2,qe=ve.active?"active":ve.done?"done":"",Fe="pele-task";qe&&(Fe+=" pele-"+qe),ve.crit&&(Fe+=" pele-crit"),ve.milestone&&(Fe+=" pele-milestone"),ve.classes.includes("clickable")&&(Fe+=" pele-clickable");let V="",me="";if(Number.isNaN($e.x0))Fe+=" pele-unscheduled",me=' fill="var(--_m)"';else{let Ee=ve.crit?jl:"var(--_c)",Ce=qe==="done"?'fill="var(--_a)"':qe==="active"?`fill="${Ee}" fill-opacity="0.25"`:`fill="${Ee}"`,De=`stroke="${qe==="done"&&!ve.crit?"var(--_b)":Ee}"`;if(ve.milestone){let Ie=($e.x0+$e.x1)/2,He=h/2;V=`<path d="M${u(Ie)},${u(Le-He)}L${u(Ie+He)},${u(Le)}L${u(Ie)},${u(Le+He)}L${u(Ie-He)},${u(Le)}Z" ${Ce} ${De} stroke-linejoin="round"/>`}else V=`<rect x="${u($e.x0)}" y="${u(Le-h/2)}" width="${u($e.x1-$e.x0)}" height="${u(h)}" ${Ce} ${De}${ot}/>`;$e.inside?me=qe===""?' fill="var(--_bg)"':"":qe==="done"&&(me=' fill="var(--_m)"')}let ne=V+Re($e.label,$e.labelX,Le,` class="pele-label"${me}`),ke=e.links.get(ve.id);ke!==void 0&&(ne=Ca(ne,ke,ve.id,Oe,r)),Ye+=`<g class="${Fe}" data-id="${Pe(ve.id)}">${ne}</g>`}let de="";if(e.todayMarker!=="off"&&l>=R&&l<=W&&W>R){let $e=v(l),ve=O-F,Le=e.todayMarker?Ct(e.todayMarker.split(",")).line:"";de=`<g class="pele-today"><path d="M${u($e)},${u(ve)}V${u(j)}" fill="none" stroke="var(--_c)" stroke-width="2"${Le}/>`+(Le?"":`<path d="M${u($e-4)},${u(ve-5)}H${u($e+4)}L${u($e)},${u(ve+1)}Z" fill="var(--_c)"/>`)+"</g>"}let Me=`M${u(M)},${u(j)}H${u(T)}`+(m?`M${u(M)},${u(O-F)}H${u(T)}`:""),_e=Re(C,Te/2,i+C.height/2,' class="pele-title" font-weight="var(--_tw)"')+(pe?`<g class="pele-sections">${pe}</g>`:"")+(Ne?`<g class="pele-excluded" fill="var(--_a)">${Ne}</g>`:"")+`<g class="pele-grid" fill="none"><path d="${ce}" stroke="var(--_b)" stroke-dasharray="1 3"/><path d="${Me}" stroke="var(--_b)"/></g>`+(oe?`<g class="pele-verts" fill="none" stroke="var(--_l)" stroke-width="1.5" stroke-dasharray="4 3">${oe}</g>`:"")+de+`<g class="pele-tasks" font-size="${u(s)}">${Ye}</g><g class="pele-section-labels" font-size="${u(o)}">${be}</g><g class="pele-axis" font-size="${c}" fill="var(--_m)">${ae}${ie}</g>`+(we?`<g class="pele-vert-labels" font-size="${u(s)}">${we}</g>`:"");return{svg:tt("gantt",Te,he,a,r,e,_e),width:Te,height:he,links:Oe}}var Xs,Yi,v5,A5,E5,S5,T5,nb,wo,C5,_5,Ka,I5,ib,$o,sb,N5,ob,Ph,D5,P5,z5,F5,B5,W5,Y5,q5,G5,H5,U5,j5,V5,K5,Z5,Q5,J5,eI,tI,rI,aI,zp,nI,Fp,iI,sI,oI,hb,Yh,Dn,Pn,Wi,qi,vo,qp,qh,Mo,Us,fI,uI,gI,yI,xI,js,bI,kb,Mb=Ge(()=>{xe();In();or();Gt();yt();kt();Xs=["January","February","March","April","May","June","July","August","September","October","November","December"],Yi=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];v5=/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,A5=/\[([^\]]+)]|YYYY|YY|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,E5="YYYY-MM-DDTHH:mm:ssZ";S5=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,T5=/\[[^\]]+]/g,nb=/\d/,wo=/\d\d/,C5=/\d{3}/,_5=/\d{4}/,Ka=/\d\d?/,I5=/[+-]?\d+/,ib=/[+-]\d\d:?(\d\d)?|Z/,$o=/\d*[^-_:/,()\s\d]+/;sb=(e,t)=>{if(t==="Z")return e.offset=0,!0;let r=t.match(/([+-]|\d\d)/g),a=+r[1]*60+(+r[2]||0);return e.offset=a===0?0:r[0]==="+"?-a:a,!0};N5=new Map([["A",{re:$o,read:(e,t)=>(e.afternoon=t==="PM",!0)}],["a",{re:$o,read:(e,t)=>(e.afternoon=t==="pm",!0)}],["Q",{re:nb,read:(e,t)=>(e.month=(+t-1)*3+1,!0)}],["S",{re:nb,read:(e,t)=>(e.milliseconds=+t*100,!0)}],["SS",{re:wo,read:(e,t)=>(e.milliseconds=+t*10,!0)}],["SSS",{re:C5,read:(e,t)=>(e.milliseconds=+t,!0)}],["s",{re:Ka,read:Hr("seconds")}],["ss",{re:Ka,read:Hr("seconds")}],["m",{re:Ka,read:Hr("minutes")}],["mm",{re:Ka,read:Hr("minutes")}],["H",{re:Ka,read:Hr("hours")}],["h",{re:Ka,read:Hr("hours")}],["HH",{re:Ka,read:Hr("hours")}],["hh",{re:Ka,read:Hr("hours")}],["D",{re:Ka,read:Hr("day")}],["DD",{re:wo,read:Hr("day")}],["Do",{re:$o,read:(e,t)=>{let r=t.match(/\d+/);if(!r)return!1;e.day=+r[0],e.dayGiven=!0;for(let a=1;a<=31;a++)pb(a)===t&&(e.day=a);return!0}}],["w",{re:Ka,read:Hr("week")}],["ww",{re:wo,read:Hr("week")}],["M",{re:Ka,read:Hr("month")}],["MM",{re:wo,read:Hr("month")}],["MMM",{re:$o,read:lb(Xs.map(e=>e.slice(0,3)))}],["MMMM",{re:$o,read:lb(Xs)}],["Y",{re:I5,read:Hr("year")}],["YY",{re:wo,read:(e,t)=>(e.year=+t+(+t>68?1900:2e3),!0)}],["YYYY",{re:_5,read:Hr("year")}],["Z",{re:ib,read:sb}],["ZZ",{re:ib,read:sb}]]),Ph=null;D5=/^[YMDHhmsSZXx\-/.:, T]*$/,P5=/^\s*(active|done|crit|milestone|vert)\s*$/,z5=/^after\s+([\d\w- ]+)/,F5=/^until\s+([\d\w- ]+)/,B5=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/,W5=/[\s,]+/,Y5=/^\d+$/,q5=new Set(Yi.map(e=>e.toLowerCase())),G5=4e8,H5=400,U5=200,j5=400;V5=class{constructor(e={}){le(this,"type","gantt");le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"dateFormat","");le(this,"axisFormat","");le(this,"tickInterval");le(this,"todayMarker","");le(this,"includes",[]);le(this,"excludes",[]);le(this,"inclusiveEndDates",!1);le(this,"topAxis",!1);le(this,"displayMode","");le(this,"weekday");le(this,"weekend","saturday");le(this,"sections",[]);le(this,"links",new Map);le(this,"tasks",[]);le(this,"byId",new Map);le(this,"currentSection","");le(this,"taskCount",0);le(this,"lastOrder",0);le(this,"lastTaskId");le(this,"options");le(this,"now",0);le(this,"work",0);le(this,"includeSet",new Set);le(this,"excludeSet",new Set);le(this,"excludedDays",[]);le(this,"datedTokens",!1);this.options=e}setDateFormat(e){this.dateFormat=e}enableInclusiveEndDates(){this.inclusiveEndDates=!0}TopAxis(){this.topAxis=!0}setAxisFormat(e){this.axisFormat=e}setTickInterval(e){this.tickInterval=e}setTodayMarker(e){this.todayMarker=e}setIncludes(e){this.includes=cb(this.includes,e)}setExcludes(e){this.excludes=cb(this.excludes,e)}setWeekday(e){this.weekday=e}setWeekend(e){this.weekend=e}setDiagramTitle(e){this.title=e}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
213
|
+
`)}addSection(e){this.currentSection=e,this.sections.push(e)}addTask(e,t){let r=(t.startsWith(":")?t.slice(1):t).split(","),a={id:"",task:e,section:this.currentSection,startTime:void 0,endTime:void 0,renderEndTime:null,manualEndTime:!1,processed:!1,active:!1,done:!1,crit:!1,milestone:!1,vert:!1,order:-1,classes:[],prevTaskId:this.lastTaskId,raw:{data:t,start:void 0,end:""}},n;for(;r.length>0&&(n=P5.exec(r[0]))!==null;)a[n[1]]=!0,r.shift();if(r.length===0)throw new Ke(`Task "${e.trim()}" needs a duration or an end date.`,"semantic",{type:"gantt"});if(r.length>3)throw new Ke(`Task "${e.trim()}" has too many fields. A task takes an id, a start, and an end or duration.`,"semantic",{type:"gantt"});for(let i=0;i<r.length;i++)r[i]=r[i].trim();r.length===3?a.id=r[0]:(this.taskCount++,a.id="task"+this.taskCount),r.length>1&&(a.raw.start=r[r.length-2]),a.raw.end=r[r.length-1],a.vert||(a.order=this.lastOrder++),this.tasks.push(a),this.lastTaskId=a.id,this.byId.set(a.id,a)}setLink(e,t){let r=Ha(t);for(let a of e.split(","))this.byId.has(a)&&this.links.set(a,r);this.setClass(e,"clickable")}setClickEvent(e,t,r){this.setClass(e,"clickable")}setClass(e,t){for(let r of e.split(","))this.byId.get(r)?.classes.push(t)}getTasks(e){this.now=wb(e),this.work=0,this.includeSet=new Set(this.includes),this.excludeSet=new Set(this.excludes);let t=this.weekend==="friday"?5:this.weekend==="saturday"?6:NaN,r=this.excludeSet.has("weekends");this.excludedDays=Yi.map((n,i)=>{let l=i||7;return r&&(l===t||l===t+1)||this.excludeSet.has(n.toLowerCase())}),this.datedTokens=this.includes.length>0||!D5.test(this.dateFormat.trim());for(let n of this.excludes)n!=="weekends"&&!q5.has(n)&&(this.datedTokens=!0);for(let n of this.tasks)n.startTime=n.endTime=void 0,n.renderEndTime=null,n.processed=n.manualEndTime=!1;let a=this.compileTasks();for(let n=0;!a&&n<10;n++)a=this.compileTasks();return this.tasks}isInvalidDate(e){let t=this.excludedDays[e.getDay()];if(!this.datedTokens)return t;let r=this.dateFormat.trim(),a=bb(e),n=a;this.spend(U5),r!=="YYYY-MM-DD"&&(this.spend(j5+r.length*8),n=xb(e,r));let i=l=>l.has(a)||n!==void 0&&l.has(n);return i(this.includeSet)?!1:t||i(this.excludeSet)}spend(e){if(this.work+=e,this.work>G5)throw new Ke("The gantt chart takes too much work to schedule.","limit",{type:"gantt"})}parse(e,t){return this.spend((t.length+1)*(e.length+1)),O5(e,t,new Date(this.now))}today(){let e=new Date(this.now);return e.setHours(0,0,0,0),e}warn(e){this.options.warn&&this.options.warn(e())}compileTasks(){let e=!0;for(let t of this.tasks)this.compileTask(t),e=e&&t.processed;return e}compileTask(e){let t=e.raw.start;if(t===void 0){let r=e.prevTaskId===void 0?void 0:this.byId.get(e.prevTaskId);e.startTime=r?r.endTime:this.today()}else{let r=this.getStartDate(t);r&&(e.startTime=r)}e.startTime&&(e.endTime=this.getEndDate(e.startTime,e.raw.end),e.endTime&&(e.processed=!0,e.manualEndTime=this.parse(e.raw.end,"YYYY-MM-DD")!==void 0,this.checkTaskDates(e)))}references(e,t){let r=[],a;for(let n of t.split(" ")){if(n==="")continue;let i=this.byId.get(n);i?r.push(i):(a??(a=[])).push(n)}if(a){let n=a;this.warn(()=>`Gantt: "${e}" refers to task ids that do not exist: ${n.join(", ")}.`)}return r}getStartDate(e){let t=e.trim(),r=this.dateFormat.trim();if((r==="x"||r==="X")&&Y5.test(t))return this.checked(new Date(Number(t)),t);let a=z5.exec(t);if(a!==null){let l=this.references("after",a[1]),s;for(let o of l)(!s||o.endTime>s.endTime)&&(s=o);return s?s.endTime:this.today()}let n=this.parse(t,r);if(n)return n;let i=new Date(t);if(!ko(i)||i.getFullYear()<-1e4||i.getFullYear()>1e4)throw new Ke("Invalid date:"+t,"semantic",{type:"gantt"});return i}checked(e,t){if(!ko(e))throw new Ke("Invalid date:"+t,"semantic",{type:"gantt"});return e}getEndDate(e,t){let r=t.trim(),a=F5.exec(r);if(a!==null){let c=this.references("until",a[1]),h;for(let d of c)(!h||d.startTime<h.startTime)&&(h=d);return h?h.startTime:this.today()}let n=this.dateFormat.trim(),i=this.parse(r,n);if(i)return this.inclusiveEndDates?si(i,1):i;let[l,s]=X5(r);if(Number.isNaN(l))return this.warn(()=>`Gantt: "${r}" is neither a date in the "${n}" format nor a duration such as "3d", so the task gets no duration.`),new Date(e);let o=mb(e,l,s);return ko(o)?o:new Date(e)}checkTaskDates(e){if(this.excludes.length===0||e.manualEndTime)return;let t=si(e.startTime,1),r=new Date(e.endTime),a=+si(r,1e4),n=!1,i=null;for(;+t<=+r;){if(this.spend(H5),n||(i=+r),n=this.isInvalidDate(t),n&&(r.setDate(r.getDate()+1),+r>a))throw new Ke("Failed to find a valid date that was not excluded by `excludes` after 10,000 iterations.","semantic",{type:"gantt"});t.setDate(t.getDate()+1)}e.endTime=r,e.renderEndTime=i===null?null:new Date(i)}},K5=["$end","INVALID","open_directive","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","NL","href","callbackname","callbackargs","click","gantt","dateFormat","inclusiveEndDates","topAxis","axisFormat","tickInterval","includes","excludes","todayMarker","weekday_monday","weekday_tuesday","weekday_wednesday","weekday_thursday","weekday_friday","weekday_saturday","weekday_sunday","weekend_friday","weekend_saturday","date","title","accDescription","section","taskTxt","taskData",":","EOF"],Z5=/accTitle\s*:\s*/iy,Q5=/accDescr\s*:\s*/iy,J5=/accDescr\s*\{\s*/iy,eI=/href\s+"/iy,tI=/call\s+/iy,rI=/click\s+/iy,aI=/\(\s*\)/y,zp=/weekday\s+(monday|tuesday|wednesday|thursday|friday|saturday|sunday)\b/iy,nI=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],Fp=/weekend\s+(?:(friday)|saturday)\b/iy,iI=/\d\d\d\d-\d\d-\d\d\b/y,sI=new Map([[97,[[/axisFormat\s[^#\n;]+/iy,17],[/accDescription\s[^#\n;]+/iy,33]]],[103,[[/gantt\b/iy,13]]],[100,[[/dateFormat\s[^#\n;]+/iy,14]]],[105,[[/inclusiveEndDates\b/iy,15],[/includes\s[^#\n;]+/iy,19]]],[116,[[/topAxis\b/iy,16],[/tickInterval\s[^#\n;]+/iy,18],[/todayMarker\s[^\n;]+/iy,21],[/title\s[^\n]+/iy,32]]],[101,[[/excludes\s[^#\n;]+/iy,20]]],[115,[[/section\s[^\n]+/iy,34]]]]);oI=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],hb="'EOF', 'SPACE', 'NL', 'weekday_monday', 'weekday_tuesday', 'weekday_wednesday', 'weekday_thursday', 'weekday_friday', 'weekday_saturday', 'weekday_sunday', 'weekend_friday', 'weekend_saturday', 'dateFormat', 'inclusiveEndDates', 'topAxis', 'axisFormat', 'tickInterval', 'excludes', 'includes', 'todayMarker', 'title', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'section', 'taskTxt', 'click'",Yh=new Uint8Array(39);for(let e=22;e<=30;e++)Yh[e]=1;for(let e of[38,8,14,15,16,17,18,20,19,21,32,3,5,7,34,35,12])Yh[e]=1;Dn=1e3,Pn=60*Dn,Wi=60*Pn,qi=24*Wi,vo=7*qi,qp=30*qi,qh=365*qi;Mo={millisecond:{floor:()=>{},offset:(e,t)=>e.setTime(+e+t),cycle:1/0,ms:1},second:{floor:e=>e.setTime(+e-e.getMilliseconds()),offset:(e,t)=>e.setTime(+e+t*Dn),field:e=>e.getUTCSeconds(),cycle:60,ms:Dn},minute:{floor:e=>e.setTime(+e-e.getMilliseconds()-e.getSeconds()*Dn),offset:(e,t)=>e.setTime(+e+t*Pn),field:e=>e.getMinutes(),cycle:60,ms:Pn},hour:{floor:e=>e.setTime(+e-e.getMilliseconds()-e.getSeconds()*Dn-e.getMinutes()*Pn),offset:(e,t)=>e.setTime(+e+t*Wi),field:e=>e.getHours(),cycle:24,ms:Wi},day:{floor:zh,offset:(e,t)=>e.setDate(e.getDate()+t),field:e=>e.getDate()-1,cycle:31,ms:qi},month:{floor(e){e.setDate(1),zh(e)},offset:(e,t)=>e.setMonth(e.getMonth()+t),field:e=>e.getMonth(),cycle:12,ms:qp},year:{floor(e){e.setMonth(0,1),zh(e)},offset:(e,t)=>e.setFullYear(e.getFullYear()+t),cycle:1/0,ms:qh}};Us=[["second",1,Dn],["second",5,5*Dn],["second",15,15*Dn],["second",30,30*Dn],["minute",1,Pn],["minute",5,5*Pn],["minute",15,15*Pn],["minute",30,30*Pn],["hour",1,Wi],["hour",3,3*Wi],["hour",6,6*Wi],["hour",12,12*Wi],["day",1,qi],["day",2,2*qi],["week",1,vo],["month",1,qp],["month",3,3*qp],["year",1,qh]];fI=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/,uI=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];gI=new Map([["-",""],["_"," "],["0","0"]]);yI=800,xI=240,js=8,bI=/<br\s*\/?>/gi;kb={type:"gantt",parse(e,t,r){let a=new V5;r&&(a.title=r);let n=t.gantt?.displayMode;return typeof n=="string"&&(a.displayMode=n),cI(e,a),a},render:kI}});var vb={};Rt(vb,{gantt:()=>kb});var Ab=Ge(()=>{xe();Mb()});function pn(e){throw new Ke(e,"semantic",{type:"architecture"})}function vI(e,t){e.accDescr&&(t.accDescr=e.accDescr.replace(/\n\s+/g,`
|
|
214
|
+
`)),e.accTitle&&(t.accTitle=e.accTitle.replace(/^\s+/g,"")),e.title&&(t.title=e.title);for(let r of e.groups)t.addGroup(r);for(let r of e.services)t.addService(r);for(let r of e.junctions)t.addJunction(r);for(let r of e.edges)t.addEdge(r);for(let r of e.alignments)t.addLayoutHint({direction:r.direction,members:[...r.members]})}function li(e){return{name:e,pattern:e,longer:[Lb]}}function Gp(e){let t=e.slice(1,-1).trim();return(t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))&&(t=t.slice(1,-1).replace(/\\"/g,'"').replace(/\\'/g,"'")),t.trim()}function AI(e){let t=new ir(er(e,Eb,"architecture"),Eb,"architecture"),r={$type:"Architecture",groups:[],services:[],junctions:[],edges:[],alignments:[]},a=i=>t.kinds[t.i]===i,n=()=>{if(t.kind!==-1)for(t.kind!==19&&t.fail("a line break or the end of input");t.kind===19;)t.i++};for(;t.kind===19;)t.i++;for(t.expect(0);t.kind!==-1;){switch(t.kind){case 19:t.i++;continue;case 14:r.accDescr=nr(t.take());break;case 15:r.accTitle=ar(t.take());break;case 16:r.title=rr(t.take());break;case 4:{t.i++;let i={$type:"Group",id:t.expect(18)};a(24)&&(i.icon=t.take().slice(1,-1)),a(25)&&(i.title=Gp(t.take())),t.accept(8)&&(i.in=t.expect(18)),r.groups.push(i);break}case 2:{t.i++;let i={$type:"Service",id:t.expect(18)};a(17)?i.iconText=_r(t.take()):a(24)&&(i.icon=t.take().slice(1,-1)),a(25)&&(i.title=Gp(t.take())),t.accept(8)&&(i.in=t.expect(18)),r.services.push(i);break}case 1:{t.i++;let i={$type:"Junction",id:t.expect(18)};t.accept(8)&&(i.in=t.expect(18)),r.junctions.push(i);break}case 18:{let i=t.take(),l=t.accept(12);t.expect(9);let s=t.expect(11),o=t.accept(13),c;t.accept(7)||(a(10)||t.fail("'--' or '-'"),t.i++,c=Gp(t.expect(25)),t.expect(10));let h=t.accept(13),d=t.expect(11);t.expect(9);let f=t.expect(18),g=t.accept(12);r.edges.push({$type:"Edge",lhsId:i,lhsGroup:l,lhsDir:s,lhsInto:o,title:c,rhsInto:h,rhsDir:d,rhsId:f,rhsGroup:g});break}case 5:{t.i++,!a(6)&&!a(3)&&t.fail("'row' or 'column'");let i=t.take(),l=[t.expect(18),t.expect(18)];for(;a(18);)l.push(t.take());r.alignments.push({$type:"Alignment",direction:i,members:l});break}default:t.fail("a group, a service, a junction, an edge, an alignment, a title, or a line break")}n()}return r}function SI(e){let t=EI.get(e);return t===void 0?"":`<path d="${t}" stroke="var(--_fg)" stroke-width="1.5"/>`}function Xh(e){return e==="L"?0:e==="R"?1:e==="T"?2:3}function TI(e,t,r,a){let n=e.length,i=t.length,l=i,s=new Map,o=new Map,c=new Int32Array(n+i).fill(l),h=new Int32Array(i+1),d=[];for(let j=0;j<=i;j++)d.push([]);t.forEach((j,J)=>{o.set(j.id,J);let Z=j.in===void 0?void 0:o.get(j.in);Z!==void 0&&Z!==J?(c[n+J]=Z,h[J]=h[Z]+1):h[J]=1}),e.forEach((j,J)=>{s.set(j.id,J);let Z=j.in===void 0?void 0:o.get(j.in);Z!==void 0&&(c[J]=Z),d[c[J]].push(J)});for(let j=0;j<i;j++)d[c[n+j]].push(n+j);let f=[],g=[],p=[],m=[],x=[],y=[],$=new Array(n+i),k=new Array(n+i),I=(j,J,Z,B,X)=>{if(j===J)return;let te=j,se=J,ce=c[j],ae=c[J];for(;ce!==ae;)h[ce]>=h[ae]?(te=n+ce,ce=c[te]):(se=n+ae,ae=c[se]);let ie=f.length;f.push(j),g.push(J),p.push(Z),m.push(B),x.push(te),y.push(se),(X[te]??(X[te]=[])).push(ie),(X[se]??(X[se]=[])).push(ie)};for(let j of a){let J=j.direction==="row";for(let Z=1;Z<j.members.length;Z++){let B=s.get(j.members[Z-1]),X=s.get(j.members[Z]);B!==void 0&&X!==void 0&&I(B,X,J?1:3,J?0:2,$)}}for(let j of[!1,!0])for(let J of r){if(J.lhsDir===J.rhsDir!==j)continue;let Z=s.get(J.lhsId),B=s.get(J.rhsId);Z!==void 0&&B!==void 0&&I(Z,B,Xh(J.lhsDir),Xh(J.rhsDir),k)}let _=new Int32Array(n+i),L=new Int32Array(n+i),R=new Int32Array(n+i).fill(1),W=new Int32Array(n+i).fill(1),q=new Uint8Array(n+i),C=[],K=new Map,Q=[],G=new Map,Y=0,N=0,S=0,M=(j,J)=>{N=0,S=0;for(let Z=j;Z!==J;Z=n+c[Z])N+=_[Z],S+=L[Z]},b=(j,J,Z)=>{if(_[j]=J,L[j]=Z,q[j]=1,C.push(j),R[j]*W[j]>Sb){Q.push(j);return}for(let B=Z;B<Z+W[j];B++)for(let X=J;X<J+R[j];X++)K.set((X+jh)*Tb+B+jh,j)},E=(j,J,Z,B,X)=>_[j]<J+B&&J<_[j]+R[j]&&L[j]<Z+X&&Z<L[j]+W[j],w=(j,J,Z,B)=>{if(Z*B>Sb){for(let X=Y;X<C.length;X++)if(E(C[X],j,J,Z,B))return C[X];return-1}for(let X=J;X<J+B;X++)for(let te=j;te<j+Z;te++){let se=K.get((te+jh)*Tb+X+jh);if(se!==void 0)return se}for(let X of Q)if(E(X,j,J,Z,B))return X;return-1},T=(j,J,Z,B,X,te)=>{let se=`${j},${J},${Z},${B},${X},${te}`,ce=G.get(se)??0;for(;;){let ae=w(j+ce*X,J+ce*te,Z,B);if(ae<0)break;ce=X>0?_[ae]+R[ae]-j:X<0?j+Z-_[ae]:te>0?L[ae]+W[ae]-J:J+B-L[ae]}return G.set(se,ce),ce},A=(j,J)=>{let Z=x[J]===j,B=Z?y[J]:x[J];if(q[B])return;let X=Z?p[J]:m[J],te=Z?m[J]:p[J];M(Z?f[J]:g[J],j);let se=N,ce=S;M(Z?g[J]:f[J],B);let ae=Ao[X],ie=Uh[X],ee=0,re=0,fe=Ao[X]+Ao[te]===0&&Uh[X]+Uh[te]===0;X===te?(ae=Ao[X]===0?1:0,ie=1-ae):fe||(ee=-Ao[te],re=-Uh[te]);let ye,oe;if(ae!==0?(ye=ae>0?_[j]+R[j]:_[j]-R[B],oe=L[j]+ce+re-S):(oe=ie>0?L[j]+W[j]:L[j]-W[B],ye=_[j]+se+ee-N),fe){let we=k[B];if(we!==void 0&&we.length>1){let pe=[];for(let be of we){let Ne=y[be]===B,Oe=Ne?x[be]:y[be];if(!q[Oe]||(Ne?p[be]:m[be])!==X||(Ne?m[be]:p[be])!==te)continue;M(Ne?f[be]:g[be],Oe);let Ye=ae!==0?L[Oe]+S:_[Oe]+N;M(Ne?g[be]:f[be],B),pe.push(Ye-(ae!==0?S:N))}pe.length>1&&(pe.sort((be,Ne)=>be-Ne),ae!==0?oe=pe[pe.length-1>>1]:ye=pe[pe.length-1>>1])}let ue=ae===0?1:0,ge=1-ue,Ae=T(ye,oe,R[B],W[B],ue,ge),Te=Ae===0?0:T(ye,oe,R[B],W[B],-ue,-ge),he=Ae<=Te?Ae:-Te;ye+=ue*he,oe+=ge*he}else{let we=T(ye,oe,R[B],W[B],ae,ie);ye+=ae*we,oe+=ie*we}b(B,ye,oe)},v=j=>{let J=d[j];if(J.length===0)return;C.length=0;let Z=[];for(let we of J){if(q[we])continue;Y=C.length,Z.push(Y),K.clear(),Q.length=0,G.clear(),b(we,0,0);let ue=Y,ge=Y,Ae=0;for(;;){if(ue<C.length){let he=C[ue++],pe=$[he];if(pe!==void 0)for(let be of pe)A(he,be);continue}if(ge>=C.length)break;let Te=k[C[ge]];if(Te===void 0||Ae>=Te.length){ge++,Ae=0;continue}A(C[ge],Te[Ae++])}}Z.push(C.length);let B=Z.length-1,X=new Array(B),te=new Array(B),se=new Array(B),ce=new Array(B),ae=0,ie=0;for(let we=0;we<B;we++){let ue=1/0,ge=1/0,Ae=-1/0,Te=-1/0;for(let he=Z[we];he<Z[we+1];he++){let pe=C[he];ue=Math.min(ue,_[pe]),ge=Math.min(ge,L[pe]),Ae=Math.max(Ae,_[pe]+R[pe]),Te=Math.max(Te,L[pe]+W[pe])}X[we]=ue,te[we]=ge,se[we]=Ae-ue,ce[we]=Te-ge,ae+=se[we]*ce[we],ie=Math.max(ie,se[we])}let ee=Math.max(ie,Math.ceil(Math.sqrt(ae*2))),re=0,fe=0,ye=0,oe=0;for(let we=0;we<B;we++){re>0&&re+se[we]>ee&&(fe+=ye,re=0,ye=0);for(let ue=Z[we];ue<Z[we+1];ue++)_[C[ue]]+=re-X[we],L[C[ue]]+=fe-te[we];re+=se[we],ye=Math.max(ye,ce[we]),oe=Math.max(oe,re)}j<i&&(R[n+j]=oe,W[n+j]=fe+ye)};for(let j=i-1;j>=0;j--)v(j);v(l);let D=new Int32Array(i),z=new Int32Array(i),H=new Int32Array(i),P=new Uint8Array(i);for(let j=0;j<i;j++){let J=c[n+j];H[j]=J===l?-1:J,D[j]=_[n+j]+(J===l?0:D[J]),z[j]=L[n+j]+(J===l?0:z[J]),d[j].length===0&&(P[j]=1)}let O=new Int32Array(n),F=new Int32Array(n),U=new Int32Array(n);for(let j=0;j<n;j++){let J=c[j];U[j]=J===l?-1:J,O[j]=_[j]+(J===l?0:D[J]),F[j]=L[j]+(J===l?0:z[J])}return{col:O,row:F,groupCol:D,groupRow:z,groupCols:R.slice(n),groupRows:W.slice(n),groupParent:H,groupEmpty:P,nodeParent:U}}function Hp(e,t,r,a,n){let i=e.architecture,l=i!==null&&typeof i=="object"&&!Array.isArray(i)?i[t]:void 0;return typeof l=="number"&&Number.isFinite(l)?Math.min(n,Math.max(a,l)):r}function Ib(e){let t=new Map;for(let r of e.sort((a,n)=>a-n))t.has(r)||t.set(r,t.size);return t}function Nb(e,t,r,a,n){return`<svg class="pele-icon" data-icon="${Pe(e)}" x="${u(t)}" y="${u(r)}" width="${u(a)}" height="${u(a)}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${n?.(e)??SI(e)}</svg>`}function NI(e,t,r,a){let n=e.lines.length>r;if(!n&&e.width<=t)return e;let i=a.width("\u2026",e.size,0),l=[],s=[],o=0;for(let c=0;c<Math.min(r,e.lines.length);c++){let h=e.lines[c].map(f=>({...f})),d=e.widths[c];if(d>t||n&&c===r-1)for(;;){let f=h[h.length-1];if(f===void 0){h.push({text:"\u2026",style:0,width:i}),d=i;break}let g=d-f.width;if(f.icon===void 0&&g+i<t){let p=0,m=f.text.length;for(;p<m;){let y=p+m+1>>1;g+a.width(f.text.slice(0,y),e.size,f.style)+i<=t?p=y:m=y-1}let x=p>0?f.text.charCodeAt(p-1):0;x>=55296&&x<=56319&&p--,f.text=f.text.slice(0,p).trimEnd()+"\u2026",f.width=a.width(f.text,e.size,f.style),d=g+f.width;break}h.pop(),d=g}l.push(h),s.push(d),o=Math.max(o,d)}return{...e,lines:l,widths:s,width:o,height:l.length*e.lineHeight}}function LI(e,t){let{x:r,y:a,dx:n,dy:i}=e,{x:l,y:s,dx:o,dy:c}=t,h=r+n*Kr,d=a+i*Kr,f=l+o*Kr,g=s+c*Kr;if(n*o+i*c===0){let y=n!==0?l:r,$=n!==0?a:s;return(y-r)*n+($-a)*i>0&&(y-l)*o+($-s)*c>0?[r,a,y,$,l,s]:n!==0?[r,a,h,d,h,g,f,g,l,s]:[r,a,h,d,f,d,f,g,l,s]}let p=n!==0,m=p?s-a:l-r;if(n===-o&&i===-c){if((l-r)*n+(s-a)*i>0){if(Math.abs(m)<.5)return[r,a,l,s];if(p){let I=n>0?e.x1:t.x1,_=n>0?t.x0:e.x0,L=I<_?(I+_)/2:(r+l)/2;return[r,a,L,a,L,s,l,s]}let y=i>0?e.y1:t.y1,$=i>0?t.y0:e.y0,k=y<$?(y+$)/2:(a+s)/2;return[r,a,r,k,l,k,l,s]}}else if(Math.abs(m)>=1){if(p){let $=n>0?Math.max(r,l)+Kr:Math.min(r,l)-Kr;return[r,a,$,a,$,s,l,s]}let y=i>0?Math.max(a,s)+Kr:Math.min(a,s)-Kr;return[r,a,r,y,l,y,l,s]}if(p){let y=e.y1+Kr<=t.y0?(e.y1+t.y0)/2:t.y1+Kr<=e.y0?(t.y1+e.y0)/2:Math.max(e.y1,t.y1)+Kr;return[r,a,h,a,h,y,f,y,f,s,l,s]}let x=e.x1+Kr<=t.x0?(e.x1+t.x0)/2:t.x1+Kr<=e.x0?(t.x1+e.x0)/2:Math.max(e.x1,t.x1)+Kr;return[r,a,r,d,x,d,x,g,l,g,l,s]}function RI(e){let t=[e[0],e[1]];for(let r=2;r<e.length;r+=2){let a=e[r],n=e[r+1],i=t.length,l=Math.abs(a-t[i-2])<.01,s=Math.abs(n-t[i-1])<.01;l&&s||(i>=4&&(l&&Math.abs(t[i-4]-t[i-2])<.01||s&&Math.abs(t[i-3]-t[i-1])<.01)?(t[i-2]=a,t[i-1]=n):t.push(a,n))}return t}function OI(e,t,r){let a=e.length/2,n=new Array(a),i=new Array(a);for(let o=0;o<a;o++)n[o]=e[o*2],i[o]=e[o*2+1];let l=(o,c,h)=>{let d=Math.hypot(n[c]-n[o],i[c]-i[o]),f=Math.min(h,Math.max(0,d-1));d>0&&f>0&&(n[o]+=(n[c]-n[o])/d*f,i[o]+=(i[c]-i[o])/d*f)};l(0,1,t),l(a-1,a-2,r);let s=`M${u(n[0])},${u(i[0])}`;for(let o=1;o<a-1;o++){let c=Math.hypot(n[o]-n[o-1],i[o]-i[o-1]),h=Math.hypot(n[o+1]-n[o],i[o+1]-i[o]),d=Math.min(CI,c/2,h/2);if(d<.5){s+=`L${u(n[o])},${u(i[o])}`;continue}let f=n[o]-(n[o]-n[o-1])/c*d,g=i[o]-(i[o]-i[o-1])/c*d,p=n[o]+(n[o+1]-n[o])/h*d,m=i[o]+(i[o+1]-i[o])/h*d;s+=`L${u(f)},${u(g)}Q${u(n[o])},${u(i[o])} ${u(p)},${u(m)}`}return s+`L${u(n[a-1])},${u(i[a-1])}`}function DI(e,t,r){return Yr(r,a=>PI(e,t,r,a))}function PI(e,t,r,a){let n=Hp(t,"iconSize",48,8,512),i=Hp(t,"fontSize",r.fontSize??16,4,128),l=Math.min(Hp(t,"padding",20,0,256),a?12:1/0),s=Math.round(i*.875),o=r.measurer??rt(r.fontFamily),c=r.padding??8,h=r.icons,d=n/2,f=[...e.nodes.values()],g=[...e.groups.values()],p=f.length,m=g.length,x=TI(f,g,e.edges,e.layoutHints),y=new Map;f.forEach((ne,ke)=>y.set(ne.id,ke));let $=new Array(p),k=new Float64Array(p),I=new Float64Array(p),_=a?Math.max(n,64):Math.max(n*2.25,96);for(let ne=0;ne<p;ne++){let ke=f[ne],Ee=Be(ke.type==="service"?ke.title:void 0,!0,o,i,_);$[ne]=Ee,k[ne]=Math.max(n,2*Math.ceil(Ee.width/2)),I[ne]=n+(Ee.height>0?Cb+Ee.height:0)}let L=[],R=[];for(let ne=0;ne<p;ne++)L.push(x.col[ne]),R.push(x.row[ne]);for(let ne=0;ne<m;ne++)x.groupEmpty[ne]&&(L.push(x.groupCol[ne]),R.push(x.groupRow[ne]));let W=Ib(L),q=Ib(R),C=W.size,K=q.size,Q=new Float64Array(C),G=new Float64Array(K),Y=a?Math.max(24,2*Kr):Math.max(40,Math.round(n*.75)),N=new Float64Array(C).fill(Y),S=new Float64Array(K).fill(Y),M=new Int32Array(p),b=new Int32Array(p);for(let ne=0;ne<p;ne++){let ke=M[ne]=W.get(x.col[ne]),Ee=b[ne]=q.get(x.row[ne]);Q[ke]=Math.max(Q[ke],k[ne]),G[Ee]=Math.max(G[Ee],I[ne])}for(let ne=0;ne<m;ne++){if(!x.groupEmpty[ne])continue;let ke=W.get(x.groupCol[ne]),Ee=q.get(x.groupRow[ne]);Q[ke]=Math.max(Q[ke],n),G[Ee]=Math.max(G[Ee],d)}let E=e.edges.length,w=new Array(E),T=new Int32Array(E*2);for(let ne=0;ne<E;ne++){let ke=e.edges[ne],Ee=T[ne*2]=y.get(ke.lhsId)??-1,Ce=T[ne*2+1]=y.get(ke.rhsId)??-1,De=Be(ke.title,!0,o,s,160);if(w[ne]=De,!(De.width===0||Ee<0||Ce<0)){if(M[Ee]!==M[Ce]){let Ie=Math.min(M[Ee],M[Ce]);N[Ie]=Math.max(N[Ie],Math.ceil(De.width)+28)}else if(Q[M[Ee]]=Math.max(Q[M[Ee]],2*Math.ceil(De.width/2)+8),b[Ee]!==b[Ce]){let Ie=Math.min(b[Ee],b[Ce]);S[Ie]=Math.max(S[Ie],Math.ceil(De.height)+24)}}}let A=new Array(m),v=new Int32Array(m),D=new Int32Array(m),z=new Int32Array(m),H=new Int32Array(m),P=new Float64Array(m),O=new Float64Array(m),F=new Float64Array(m),U=new Float64Array(m),j=new Float64Array(m),J=new Float64Array(m),Z=new Float64Array(C),B=new Float64Array(C),X=new Float64Array(K),te=new Float64Array(K),se=Math.round(i*1.25);for(let ne=0;ne<m;ne++){v[ne]=W.get(x.groupCol[ne]),D[ne]=W.get(x.groupCol[ne]+x.groupCols[ne]-1),z[ne]=q.get(x.groupRow[ne]),H[ne]=q.get(x.groupRow[ne]+x.groupRows[ne]-1);let ke=Be(g[ne].title,!0,o,i,a?Math.max(80,Pt(r)/2):320);A[ne]=ke;let Ee=g[ne].icon?se:0;j[ne]=ke.width+Ee+(ke.width>0&&Ee>0?6:0),J[ne]=Math.max(ke.height,Ee)}for(let ne=m-1;ne>=0;ne--){let ke=l+P[ne],Ee=l+O[ne],Ce=(J[ne]>0?Math.max(l,J[ne]+12):l)+F[ne],De=l+U[ne];if(j[ne]>0){let He=ke+Ee;for(let Se=v[ne];Se<=D[ne];Se++)He+=Q[Se]+(Se<D[ne]?B[Se]+N[Se]+Z[Se+1]:0);j[ne]+20>He&&(Ee+=Math.ceil(j[ne]+20-He))}P[ne]=ke,O[ne]=Ee,F[ne]=Ce,U[ne]=De,Z[v[ne]]=Math.max(Z[v[ne]],ke),B[D[ne]]=Math.max(B[D[ne]],Ee),X[z[ne]]=Math.max(X[z[ne]],Ce),te[H[ne]]=Math.max(te[H[ne]],De);let Ie=x.groupParent[ne];Ie<0||(v[Ie]===v[ne]&&(P[Ie]=Math.max(P[Ie],ke)),D[Ie]===D[ne]&&(O[Ie]=Math.max(O[Ie],Ee)),z[Ie]===z[ne]&&(F[Ie]=Math.max(F[Ie],Ce)),H[Ie]===H[ne]&&(U[Ie]=Math.max(U[Ie],De)))}let ce=new Float64Array(C),ae=new Float64Array(K),ie=0;for(let ne=0;ne<C;ne++)ce[ne]=ie+Z[ne],ie=ce[ne]+Q[ne]+B[ne]+(ne<C-1?N[ne]:0);let ee=0;for(let ne=0;ne<K;ne++)ae[ne]=ee+X[ne],ee=ae[ne]+G[ne]+te[ne]+(ne<K-1?S[ne]:0);let re=0,fe=0,ye=ie,oe=ee,we=ne=>ce[v[ne]]-P[ne],ue=ne=>ce[D[ne]]+Q[D[ne]]+O[ne],ge=ne=>ae[z[ne]]-F[ne],Ae=ne=>ae[H[ne]]+G[H[ne]]+U[ne],Te=ne=>ce[M[ne]]+Q[M[ne]]/2,he=(ne,ke,Ee)=>{let Ce=_I[ke],De=II[ke],Ie=Te(ne),He=ae[b[ne]],Se={x:Ie,y:He+d,dx:Ce,dy:De,x0:Ie-k[ne]/2,y0:He,x1:Ie+k[ne]/2,y1:He+I[ne],gap:0,wire:!1};f[ne].type==="junction"?(Se.x0=Se.x1=Ie,Se.y0=Se.y1=Se.y,Se.gap=_b):Ce!==0?Se.x=Ie+Ce*d:Se.y=De<0?He:He+I[ne]+($[ne].height>0?2:0);let Xe=Ee?x.nodeParent[ne]:-1;return Xe>=0&&(Se.x0=we(Xe),Se.x1=ue(Xe),Se.y0=ge(Xe),Se.y1=Ae(Xe),Se.gap=0,Se.wire=f[ne].type==="junction",Ce!==0?Se.x=Ce<0?Se.x0:Se.x1:Se.y=De<0?Se.y0:Se.y1),Se},pe="",be="",Ne=[],Oe=xt("arrow_point");for(let ne=0;ne<E;ne++){let ke=e.edges[ne],Ee=T[ne*2],Ce=T[ne*2+1];if(Ee<0||Ce<0)continue;let De=he(Ee,Xh(ke.lhsDir),ke.lhsGroup),Ie=he(Ce,Xh(ke.rhsDir),ke.rhsGroup);De.x===Ie.x&&De.y===Ie.y&&De.dx===Ie.dx&&(De.x-=8*Math.abs(De.dy),De.y-=8*Math.abs(De.dx),Ie.x+=8*Math.abs(De.dy),Ie.y+=8*Math.abs(De.dx));let He=LI(De,Ie);De.wire&&He.unshift(Te(Ee),ae[b[Ee]]+d),Ie.wire&&He.push(Te(Ce),ae[b[Ce]]+d);let Se=RI(He);if(Se.length<4)continue;let Xe=Pe(`${ke.lhsId}-${ke.rhsId}`);pe+=`<g class="pele-edge" data-id="${Xe}"><path d="${OI(Se,ke.lhsInto&&!De.wire?Oe+De.gap:0,ke.rhsInto&&!Ie.wire?Oe+Ie.gap:0)}"/>`+(ke.lhsInto?Mt("arrow_point",De.x+De.dx*De.gap,De.y+De.dy*De.gap,-De.dx,-De.dy,"var(--_l)"):"")+(ke.rhsInto?Mt("arrow_point",Ie.x+Ie.dx*Ie.gap,Ie.y+Ie.dy*Ie.gap,-Ie.dx,-Ie.dy,"var(--_l)"):"")+"</g>";let Ve=-1,nt=-1,ft=-1,at=-1,ht=w[ne];for(let ct=0;ct<Se.length;ct+=2)re=Math.min(re,Se[ct]-4),ye=Math.max(ye,Se[ct]+4),fe=Math.min(fe,Se[ct+1]-4),oe=Math.max(oe,Se[ct+1]+4);for(let ct=0;ct+3<Se.length;ct+=2){let Ut=Math.abs(Se[ct+1]-Se[ct+3])<.01,Lt=Math.abs(Se[ct]-Se[ct+2])+Math.abs(Se[ct+1]-Se[ct+3]);Ut||Ne.push(Se[ct],Math.min(Se[ct+1],Se[ct+3]),Math.max(Se[ct+1],Se[ct+3])),Lt>nt&&(Ve=ct,nt=Lt),Ut&&Lt>at&&(ft=ct,at=Lt)}if(ht.width>0){let ct=at>=ht.width+8?ft:Ve,Ut=(Se[ct]+Se[ct+2])/2,Lt=(Se[ct+1]+Se[ct+3])/2,At=ht.width+8,Ht=Math.abs(Se[ct]-Se[ct+2])<.01;for(let Ue of[De,Ie])Ut+At/2<=Ue.x0||Ut-At/2>=Ue.x1||Lt+ht.height/2<=Ue.y0||Lt-ht.height/2>=Ue.y1||(Ht?Ut=Ut>=(Ue.x0+Ue.x1)/2?Ue.x1+At/2+4:Ue.x0-At/2-4:Lt=Lt>=(Ue.y0+Ue.y1)/2?Ue.y1+ht.height/2+4:Ue.y0-ht.height/2-4);re=Math.min(re,Ut-At/2),ye=Math.max(ye,Ut+At/2),fe=Math.min(fe,Lt-ht.height/2),oe=Math.max(oe,Lt+ht.height/2),be+=Tr(`${ke.lhsId}-${ke.rhsId}`,ht,Ut,Lt,"",h)}}let Ye="";for(let ne=0;ne<m;ne++){let ke=g[ne],Ee=we(ne),Ce=ge(ne),De=ue(ne)-Ee,Ie=A[ne],He="";if(j[ne]>0){let Se=Ce+J[ne]+12,Xe=[];for(let at=0;at<Ne.length;at+=3)Ne[at+1]<Se&&Ne[at+2]>Ce&&Ne[at]>Ee&&Ne[at]<Ee+De&&Xe.push(Ne[at]);Xe.sort((at,ht)=>at-ht),Xe.push(Ee+De-4);let Ve=Ee+10;for(let at of Xe){if(at-6-Ve>=j[ne])break;Ve=Math.max(Ve,at+6)}Ve+j[ne]>Ee+De-4&&(Ve=Ee+10);let nt=Ce+6+J[ne]/2,ft=Ve;ke.icon&&(He+=Nb(ke.icon,Ve,nt-se/2,se,h),ft+=se+6),He+=Re(Ie,ft+Ie.width/2,nt,' class="pele-cluster-label" fill="var(--_m)"',h)}Ye+=`<g class="pele-cluster" data-id="${Pe(ke.id)}"><rect x="${u(Ee)}" y="${u(Ce)}" width="${u(De)}" height="${u(Ae(ne)-Ce)}" fill="var(--_a)" fill-opacity="0.5" stroke="var(--_b)"${ot}/>`+He+"</g>"}let de="",Me=n*.5,_e=Math.max(6,Math.round(i*.75));for(let ne=0;ne<p;ne++){let ke=f[ne],Ee=`data-id="${Pe(ke.id)}" transform="translate(${u(Te(ne))},${u(ae[b[ne]])})"`;if(ke.type==="junction"){de+=`<g class="pele-node pele-junction" ${Ee}><circle cy="${u(d)}" r="${_b}" fill="var(--_l)"/></g>`;continue}let Ce="";if(ke.icon)Ce=Nb(ke.icon,-Me/2,(n-Me)/2,Me,h);else if(ke.iconText){let De=Be(ke.iconText,!1,o,_e,n-8),Ie=Math.max(1,Math.floor((n-4)/(De.lineHeight||1)));Ce=Re(NI(De,n-8,Ie,o),0,d,` class="pele-icon-text" font-size="${_e}"`,h)}de+=`<g class="pele-node pele-service" ${Ee}><rect x="${u(-d)}" width="${u(n)}" height="${u(n)}" fill="var(--_s)" stroke="var(--_b)"${ot}/>`+Ce+Re($[ne],0,n+Cb+$[ne].height/2,' class="pele-label"',h)+"</g>"}let $e=Be(e.title,!1,o,i,a?Pt(r):4e3,1),ve=$e.height>0?$e.height+12:0,Le=Math.ceil(Math.max(ye-re,$e.width)+2*c),qe=Math.ceil(oe-fe+ve+2*c),Fe=Math.round((Le-(ye-re))/2-re),V=Math.round(c+ve-fe),me=(Ye?`<g class="pele-clusters">${Ye}</g>`:"")+(pe?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round" stroke-linejoin="round">${pe}</g>`:"")+(be?`<g class="pele-edge-labels" font-size="${s}">${be}</g>`:"")+(de?`<g class="pele-nodes">${de}</g>`:"");return{svg:tt("architecture",Le,qe,i,r,e,Re($e,Le/2,c+$e.height/2,' class="pele-title" font-weight="var(--_tw)"')+(me?`<g transform="translate(${Fe},${V})">${me}</g>`:"")),width:Le,height:qe,links:[]}}var MI,Lb,Eb,EI,Ao,Uh,Sb,jh,Tb,Kr,CI,Cb,_b,_I,II,Rb,Ob=Ge(()=>{xe();Gt();sa();$r();yt();kt();MI=class{constructor(){le(this,"type","architecture");le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"nodes",new Map);le(this,"groups",new Map);le(this,"edges",[]);le(this,"layoutHints",[]);le(this,"registered",new Map)}register(e,t,r){this.registered.has(t)&&pn(`The ${e} id [${t}] is already in use by another ${this.registered.get(t)}`),r!==void 0&&(t===r&&pn(`The ${e} [${t}] cannot be placed within itself`),this.registered.has(r)||pn(`The ${e} [${t}]'s parent does not exist. Please make sure the parent is created before this ${e}`),this.registered.get(r)==="node"&&pn(`The ${e} [${t}]'s parent is not a group`)),this.registered.set(t,e==="group"?"group":"node")}addService({id:e,icon:t,iconText:r,title:a,in:n}){this.register("service",e,n),this.nodes.set(e,{id:e,type:"service",icon:t,iconText:r,title:a,in:n})}addJunction({id:e,in:t}){this.register("junction",e,t),this.nodes.set(e,{id:e,type:"junction",in:t})}addGroup({id:e,icon:t,title:r,in:a}){this.register("group",e,a),this.groups.set(e,{id:e,icon:t,title:r,in:a})}addEdge({lhsId:e,rhsId:t,lhsDir:r,rhsDir:a,lhsInto:n,rhsInto:i,lhsGroup:l,rhsGroup:s,title:o}){let c=[["left",e,l],["right",t,s]];for(let[d,f]of c)this.registered.has(f)||pn(`The ${d}-hand id [${f}] does not yet exist. Please create the service/group before declaring an edge to it.`);for(let[d,f]of c)this.nodes.has(f)||pn(`The ${d}-hand id [${f}] is a group. Add {group} to a service inside it instead.`);let h=this.nodes.get(e).in;if(h!==void 0&&h===this.nodes.get(t).in)for(let[d,f,g]of c)g&&pn(`The ${d}-hand id [${f}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);this.edges.push({lhsId:e,lhsDir:r,lhsInto:n,lhsGroup:l,rhsId:t,rhsDir:a,rhsInto:i,rhsGroup:s,title:o})}addLayoutHint(e){e.members.length<2&&pn(`An align directive requires at least two members; got ${e.members.length}`);let t=new Set;for(let r of e.members)this.registered.get(r)!=="node"&&pn(`align ${e.direction} references [${r}], which is not a service or junction`),t.has(r)&&pn(`align ${e.direction} lists [${r}] more than once`),t.add(r);this.layoutHints.push(e)}};Lb={name:"ID",pattern:/[\w]([-\w]*\w)?/y};Eb=[li("architecture-beta"),li("junction"),li("service"),li("column"),li("group"),li("align"),li("row"),{name:"--",pattern:"--",longer:[tr]},li("in"),{name:":",pattern:":"},{name:"-",pattern:"-",longer:[tr]},{name:"ARROW_DIRECTION",pattern:/L|R|T|B/y},{name:"ARROW_GROUP",pattern:/\{group\}/y},{name:"ARROW_INTO",pattern:/<|>/y},kr,cr,hr,ia,Lb,qr,Gr,tr,ur,pr,{name:"ARCH_ICON",pattern:/\([\w-:]+\)/y},{name:"ARCH_TITLE",pattern:/\[(?:"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|[^\[\]\r\n]+)\]/y}];EI=new Map([["database","M4 6a8 3 0 1 0 16 0a8 3 0 1 0-16 0M4 6v12a8 3 0 0 0 16 0V6M4 12a8 3 0 0 0 16 0"],["server","M3 4h18v7H3zM3 13h18v7H3zM7 7.5h.01M7 16.5h.01M11 7.5h6M11 16.5h6"],["disk","M5 3h14v18H5zM12 6.5a4 4 0 1 0 0 8a4 4 0 1 0 0-8M12 10.5h.01M8 18h3"],["internet","M3 12a9 9 0 1 0 18 0a9 9 0 1 0-18 0M3 12h18M12 3a13 13 0 0 0 0 18M12 3a13 13 0 0 1 0 18"],["cloud","M7 18a4 4 0 0 1-.5-7.97A6 6 0 0 1 18 9.5a4.25 4.25 0 0 1-.5 8.5z"]]);Ao=[-1,1,0,0],Uh=[0,0,-1,1];Sb=64,jh=2**25,Tb=2**26;Kr=12,CI=6,Cb=4,_b=3,_I=[-1,1,0,0],II=[0,0,-1,1];Rb={type:"architecture",parse(e,t,r){let a=new MI;return r&&(a.title=r),vI(AI(e),a),a},render:DI}});var Db={};Rt(Db,{architecture:()=>Rb});var Pb=Ge(()=>{xe();Ob()});function HI(e){let t=e.length,r=[],a=[],n=[],i=[],l=0,s=0,o=[[],[],[],[]],c=[[],[],[],[]],h=[0,0,0,0],d=!1,f=-1;Kh.lastIndex=0;for(let L=Kh.exec(e);L!==null;L=Kh.exec(e)){let R=L[1]!==void 0?0:L[2]!==void 0?1:L[3]!==void 0?2:3;o[R].push(L.index),c[R].push(Kh.lastIndex),d=!0}let g=(L,R,W)=>{r.push(L),a.push(e.slice(R,W)),n.push(R),s=W},p=L=>{i.push(l),l=L},m=()=>{i.length>0&&(l=i.pop())},x=(L,R)=>(L.lastIndex=R,L.test(e)?L.lastIndex:-1),y=L=>{let R=e.indexOf(`
|
|
215
|
+
`,L);return R===-1?t:R},$=()=>{if(f<s){jp.lastIndex=s,f=jp.test(e)?jp.lastIndex-1:t;for(let L=0;L<4;L++){let R=o[L],W=h[L];for(;W<R.length&&R[W]<=f;)W++;h[L]=W}}for(let L=0;L<4;L++){let R=h[L]-1;if(R>=0&&o[L][R]>=s)return g(8+L,s,y(c[L][R])),!0}return!1},k=L=>{let R=L|32;if(R===116&&e.slice(s+1,s+5).toLowerCase()==="itle"&&je(e.charCodeAt(s+5))){let W=s+6;for(;W<t;){let q=e.charCodeAt(W);if(q===35||q===10||q===59)break;W++}if(W>s+6)return g(2,s,W),!0}if(R===97&&(e.charCodeAt(s+1)|32)===99&&(e.charCodeAt(s+2)|32)===99){let W;if((W=x(WI,s))>=0)return p(3),g(3,s,W),!0;if((W=x(YI,s))>=0)return p(4),g(5,s,W),!0;if((W=x(qI,s))>=0)return p(5),s=W,!0}if(d&&!Ti(L)&&$())return!0;if(L===10||L===13&&e.charCodeAt(s+1)===10){let W=s;for(;W<t;){let q=e.charCodeAt(W);if(q===10)W++;else if(q===13&&e.charCodeAt(W+1)===10)W+=2;else break}return g(12,s,W),!0}if(je(L)){for(s++;s<t&&je(e.charCodeAt(s));)s++;return!0}if(L===35||L===37)return s=y(s),!0;if(et(L)){let W=s+1;for(;W<t&&et(e.charCodeAt(W));)W++;if(W-s<=GI){let q=BI.get(e.slice(s,W).toLowerCase());if(q!==void 0)return(q===46||q===47||q===48)&&p(2),g(q,s,W),!0}for(;W<t;){let q=e.charCodeAt(W);if(q<128&&Gb[q]===1)break;W++}return r.push(59),a.push(e.slice(s,W).trim()),n.push(s),s=W,!0}switch(L){case 123:return g(15,s,s+1),!0;case 125:return g(16,s,s+1),!0;case 58:return e.charCodeAt(s+1)===58&&e.charCodeAt(s+2)===58?g(17,s,s+3):g(18,s,s+1),!0;case 60:return e.charCodeAt(s+1)!==45?!1:(g(55,s,s+2),!0);case 45:return e.charCodeAt(s+1)===62?g(56,s,s+2):g(57,s,s+1),!0;case 34:return p(1),s++,!0;case 44:return g(60,s,s+1),!0}return!1},I=L=>{if(et(L)){let R=s+1;for(;R<t&&et(e.charCodeAt(R));)R++;return g(49,s,R),!0}switch(L){case 58:return g(50,s,s+1),!0;case 59:return g(51,s,s+1),!0;case 37:return g(52,s,s+1),!0;case 45:return g(53,s,s+1),!0;case 35:return g(54,s,s+1),!0;case 32:return s++,!0;case 34:return p(1),s++,!0;case 10:return m(),s++,!0;case 44:return g(60,s,s+1),!0}return!1};for(;s<t;){let L=e.charCodeAt(s),R=!0;switch(l){case 0:R=k(L);break;case 2:R=I(L);break;case 1:if(L===34)m(),s++;else{let W=e.indexOf('"',s);g(58,s,W===-1?t:W)}break;case 3:m(),g(4,s,y(s));break;case 4:m(),g(6,s,y(s));break;case 5:if(L===125)m(),s++;else{let W=e.indexOf("}",s);g(7,s,W===-1?t:W)}break}if(!R)return r.push(1),a.push(""),n.push(s),{types:r,texts:a,starts:n}}let _=l===0?13:l===1?58:l===3?4:l===4?6:l===5?7:-1;return _!==-1&&g(_,t,t),g(0,t,t),{types:r,texts:a,starts:n}}function Fb(e){return e===49||e===50||e===54||e===53||e===51}function jI(e,t){let{types:r,texts:a,starts:n}=HI(e),i=0,l=[],s=[],o=(y,$=y,...k)=>{let I=r[i];if(I===1)throw st("requirement",e,n[i],"",!0);for(let L=$;L>=y;L--)k.unshift(L);let _=k.map(L=>`'${zb[L]}'`).join(", ");throw st("requirement",e,n[i],`Expecting ${_}, got '${zb[I]}'`)},c=y=>(r[i]!==y&&o(y),a[i++]),h=(y,$)=>{let k=r[i];return(k<y||k>$)&&o(y,$),i++,UI[k-23]},d=()=>{let y=r[i];return y!==59&&y!==58&&o(58,59),a[i++]},f=()=>{let y=r[i];if(y===3)i++,t.setAccTitle(c(4).trim());else if(y===5)i++,t.setAccDescription(c(6).trim());else if(y===7)t.setAccDescription(a[i++].trim());else return!1;return!0},g=()=>{let y=[];for(;;){let $=r[i];if($!==49&&$!==59&&$!==58&&o(58,59,49),y.push(a[i++]),r[i]!==60)return y;i++}},p=()=>{let y=[];for(;;){Fb(r[i])||o(49,51,53,54);let $=a[i++];for(;Fb(r[i]);)$+=a[i++];if(y.push($),r[i]!==60)return y;i++}},m=()=>{let y;return r[i]===17?(i++,y=g(),c(15)):r[i]===15?i++:o(15,15,17),c(12),y},x=y=>{for(l.length=0,s.length=0;;){let $=r[i];if($===16){i++;break}if($===12){i++;continue}(y?$<19||$>22:$!==44&&$!==45)&&(y&&o(19,22,12,16),o(44,45,12,16)),i++,c(18),s.push($===21?h(29,31):$===22?h(32,35):d()),l.push($),c(12)}for(let $=l.length-1;$>=0;$--){let k=s[$];switch(l[$]){case 19:t.setNewReqId(k);break;case 20:t.setNewReqText(k);break;case 21:t.setNewReqRisk(k);break;case 22:t.setNewReqVerifyMethod(k);break;case 44:t.setNewElementType(k);break;default:t.setNewElementDocRef(k)}}};for(;f();)r[i]===12&&i++;for(r[i]!==14&&o(14,14,3,5,7),i++,c(12);;){let y=r[i];if(y===13)return;if(y===12)i++;else{if(f())continue;if(y>=8&&y<=11)i++,t.setDirection(y===8?"TB":y===9?"BT":y===10?"RL":"LR");else if(y>=23&&y<=28){let $=h(23,28),k=d(),I=m();x(!0),t.addRequirement(k,$),I&&t.setClass([k],I)}else if(y===36){i++;let $=d(),k=m();x(!1),t.addElement($),k&&t.setClass([$],k)}else if(y===46){i++;let $=g();t.setCssStyle($,p())}else if(y===47){i++;let $=g();t.defineClass($,p())}else if(y===48){i++;let $=g();t.setClass($,g())}else if(y===59||y===58){let $=a[i++],k=r[i];if(k===17)i++,t.setClass([$],g());else if(k===55||k===57){i++;let I=h(37,43);c(k===57?56:57);let _=d();k===57?t.addRelationship(I,$,_):t.addRelationship(I,_,$)}else o(17,17,55,57)}else o(12,13,3,5,7,8,9,10,11,23,24,25,26,27,28,36,47,48,46,59,58)}}}function XI(e){let t=[];for(let n of e.requirements.values())t.push({id:n.name,requirement:n,element:void 0,cssStyles:n.cssStyles,cssClasses:n.classes.join(" ")});for(let n of e.elements.values())t.push({id:n.name,requirement:void 0,element:n,cssStyles:n.cssStyles,cssClasses:n.classes.join(" ")});let r=n=>e.requirements.has(n)||e.elements.has(n)?n:void 0,a=e.relations.map((n,i)=>({id:`${n.src}-${n.dst}-${i}`,start:r(n.src),end:r(n.dst),type:n.type,contains:n.type===oi.CONTAINS}));return{nodes:t,edges:a,direction:e.direction}}function Jh(e,t,r){if(t===0||e.lines.length===0)return e;let a=0,n=[],i=e.lines.map(l=>{let s=0,o=l.map(c=>{let h=c.style|t,d=c.icon!==void 0||c.math?c.width:r.width(c.text,e.size,h);return s+=d,{...c,style:h,width:d}});return n.push(s),s>a&&(a=s),o});return{...e,lines:i,widths:n,width:a}}function Yb(e,t,r,a){let n=Tn(e),i="",l="";for(let s=0;s<e.lines.length;s++){let o=e.lines[s],c=r+ln(e,s);if(_s(o)){l+=Re(on(e,s),t+e.widths[s]/2,c,a);continue}let h=c+e.size*.35,d=!0;for(let f of o)f.icon!==void 0||f.text===""||(i+=`<tspan${d?` x="${u(t)}" y="${u(h)}"`:""}${sn(f.style&~n)}>${Qe(f.text)}</tspan>`,d=!1)}return(i===""?"":`<text${Wa(a,n)} text-anchor="start" xml:space="preserve">${i}</text>`)+l}function a6(e,t,r,a){let n=Hb,i=e-r*n,l=t-a*n;return`<circle class="pele-marker" cx="${u(i)}" cy="${u(l)}" r="${n}"/><path class="pele-marker" d="M${u(i-r*n)},${u(l-a*n)}L${u(i+r*n)},${u(l+a*n)}M${u(i+a*n)},${u(l-r*n)}L${u(i-a*n)},${u(l+r*n)}"/>`}function n6(e,t,r,a){let n=e-r*Wb,i=t-a*Wb;return`<path class="pele-marker" d="M${u(n-a*Qh)},${u(i+r*Qh)}L${u(e)},${u(t)}L${u(n+a*Qh)},${u(i-r*Qh)}" stroke-linejoin="round"/>`}function i6(e,t,r){let a=new Map;for(let n of t){let i=n.route;if(!(n.src===n.dst||i.length<6))for(let l of[0,i.length-3]){let s=l===0?n.src:n.dst,o=e[s],c=i[l]-o.x,h=i[l+1]-o.y,d=l===0?3:l-3,f;if(Math.abs(Math.abs(h)-o.h/2)<.5)f=h<0?0:2;else if(Math.abs(Math.abs(c)-o.w/2)<.5)f=c<0?3:1;else continue;let g=s*4+f,p={route:i,at:l,toward:i[f%2===0?d:d+1]},m=a.get(g);m?m.push(p):a.set(g,[p])}}for(let[n,i]of a){if(i.length<2)continue;let l=n>>2,s=n%2===1,o=(s?r[l].h:r[l].w)-2*r6,c=Math.max(0,Math.min(t6,o/(i.length-1)));i.sort((h,d)=>h.toward-d.toward);for(let h=0;h<i.length;h++){let d=(h-(i.length-1)/2)*c;s?i[h].route[i[h].at+1]=e[l].y+d:i[h].route[i[h].at]=e[l].x+d}}}function s6(e,t,r){return na(e.direction)?jt(r,a=>qb(e,t,r,a)):qb(e,t,r,!1)}function qb(e,t,r,a){let n=XI(e),i=r.fontSize??16,l=Math.round(i*.875),s=r.measurer??rt(r.fontFamily),o=r.padding??8,c=new Map,h=[],d=[];for(let G of n.nodes){let Y=Ct(G.cssStyles),N=(Y.bold?1:0)|(Y.italic?2:0),S=Y.fontSize??i,M=Y.fontSize??l,b=G.requirement,E=G.element,w=Jh(Be(`\xAB${b?b.type:"Element"}\xBB`,!1,s,M,4e3),N,s),T=Jh(Be(G.id,!0,s,S,JI),N|1,s),A=b?[["ID",b.requirementId],["Text",b.text],["Risk",b.risk],["Verification",b.verifyMethod]]:[["Type",E.type],["Doc Ref",E.docRef]],v=[],D=0,z=0,H=0;for(let[U,j]of A){if(!j)continue;let J=Jh(Be(U,!1,s,M,4e3),N,s),Z=Jh(Be(j,!0,s,M,e6),N,s),B=Math.max(J.height,Z.height);v.push({key:J,value:Z,height:B}),D=Math.max(D,J.width),z=Math.max(z,Z.width),H+=B+Xp}v.length>0&&(H+=2*Eo-Xp);let P=2*Eo+w.height+T.height,O=Math.max(QI,Math.max(w.width,T.width)+2*Zh,v.length>0?D+Bb+z+2*Zh:0);c.has(G.id)||c.set(G.id,h.length);let F=Kt(O,P+H);F.seq=h.length,h.push({node:G,style:Y,kind:w,name:T,rows:v,keyWidth:D,headHeight:P,w:O,h:P+H}),d.push(F)}let f=a?"TB":Cr(n.direction),g=f==="LR"||f==="RL",p=[],m=[],x=[];for(let G of n.edges){let Y=G.start===void 0?void 0:c.get(G.start),N=G.end===void 0?void 0:c.get(G.end);if(Y===void 0||N===void 0)continue;let S=Be(`\xAB${G.type}\xBB`,!1,s,l,4e3);Y===N&&(g?d[Y].h+=2*(Vp+S.height+8):d[Y].w+=2*(Vp+S.width+12)),x.push(G),m.push(S),p.push({src:Y,dst:N,minlen:1,labelW:S.width+12,labelH:S.height+4,route:[],labelX:0,labelY:0})}let y=aa(d,p,f,{nodeSep:VI,edgeSep:KI,rankSep:ZI,portSep:20});i6(d,p,h);let $=zr(e.title,s,i,4e3),k=$.height>0?$.height+12:0,I=Math.max(y.width,$.width),_=o+(I-y.width)/2,L=o+k,R=Math.ceil(I+2*o),W=Math.ceil(y.height+k+2*o),q="";for(let G=0;G<h.length;G++){let Y=h[G],{w:N,h:S,style:M}=Y,b=-N/2,E=-S/2,w=`<rect x="${u(b)}" y="${u(E)}" width="${u(N)}" height="${u(S)}" fill="var(--_s)" stroke="var(--_b)"${gt(M.shape)}/>`+Re(Y.kind,0,E+Eo+Y.kind.height/2,` class="pele-stereotype" font-size="${Y.kind.size}" fill="var(--_m)"${M.text}`)+Re(Y.name,0,E+Eo+Y.kind.height+Y.name.height/2,` class="pele-label" font-size="${Y.name.size}" font-weight="var(--_hw)"${M.text}`);if(Y.rows.length>0){let T=E+Y.headHeight;w+=`<path class="pele-divider" d="M${u(b)},${u(T)}H${u(-b)}" stroke="var(--_b)"${M.line}/>`;let A=T+Eo,v="";for(let D of Y.rows)v+=Yb(D.key,b+Zh,A,` class="pele-field" fill="var(--_m)"${M.text}`)+Yb(D.value,b+Zh+Y.keyWidth+Bb,A,` class="pele-value"${M.text}`),A+=D.height+Xp;w+=`<g class="pele-fields" font-size="${Y.rows[0].key.size}">${v}</g>`}q+=`<g class="pele-node ${Y.node.requirement?"pele-requirement":"pele-element"}${Dt(Y.node.cssClasses.replace(/^default\s?/,""))}" data-id="${Pe(Y.node.id)}" transform="translate(${u(d[G].x+_)},${u(d[G].y+L)})">${w}</g>`}let C="",K="",Q=new Map;for(let G=0;G<p.length;G++){let Y=p[G],N=x[G],S=m[G],M=N.contains?2*Hb:0,b,E=Y.labelX+_,w=Y.labelY+L;if(Y.src===Y.dst){let T=h[Y.src],A=d[Y.src].x+_,v=d[Y.src].y+L,D=Q.get(Y.src)??0;Q.set(Y.src,D+1);let z=(g?T.w:T.h)/2,H=Math.min(z-4,12+D*6),P=Vp+D*8,O=(U,j)=>g?`${u(A+j)},${u(v+T.h/2+U)}`:`${u(A+T.w/2+U)},${u(v+j)}`,F=P/.75;b={d:`M${O(M,-H)}C${O(F,-H)} ${O(F,H)} ${O(0,H)}`,sx:g?A-H:A+T.w/2,sy:g?v+T.h/2:v-H,sdx:g?0:-1,sdy:g?-1:0,ex:g?A+H:A+T.w/2,ey:g?v+T.h/2:v+H,edx:g?0:-1,edy:g?-1:0},g?(E=A,w=v+T.h/2+P+4+Y.labelH/2):(E=A+T.w/2+P+4+Y.labelW/2,w=v)}else{let T=Y.route.slice();for(let A=0;A<T.length;A+=3)T[A]+=_,T[A+1]+=L;b=Xr(T,void 0,M,0)}C+=`<g class="pele-edge pele-relationship-${N.contains?"contains":"arrow"}" data-id="${Pe(N.id)}"><path d="${b.d}"${N.contains?"":' stroke-dasharray="5 4"'}/>`+(N.contains?a6(b.sx,b.sy,b.sdx,b.sdy):n6(b.ex,b.ey,b.edx,b.edy))+"</g>",K+=Tr(N.id,S,E,w,"")}return{svg:tt("requirement",R,W,i,r,e,Re($,R/2,o+$.height/2,' class="pele-title" font-weight="var(--_tw)"')+(C?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${C}</g>`:"")+(K?`<g class="pele-edge-labels" font-size="${l}" fill="var(--_m)">${K}</g>`:"")+`<g class="pele-nodes">${q}</g>`),width:R,height:W,links:[]}}var Vs,Up,Vh,oi,zI,FI,zb,BI,WI,YI,qI,Kh,jp,GI,Gb,UI,VI,KI,ZI,Zh,Eo,Xp,Bb,QI,JI,e6,Vp,Hb,Wb,Qh,t6,r6,Ub,jb=Ge(()=>{xe();Kn();qa();or();Gt();$r();yt();kt();Vs={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},Up={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},Vh={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},oi={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},zI=1e6,FI=class{constructor(){le(this,"type","requirement");le(this,"direction","TB");le(this,"requirements",new Map);le(this,"elements",new Map);le(this,"relations",[]);le(this,"classes",new Map);le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"newId","");le(this,"newText","");le(this,"newRisk","");le(this,"newVerifyMethod","");le(this,"newElementType","");le(this,"newDocRef","");le(this,"styleCopies",0)}copy(e,t){if(this.styleCopies+=t.length,this.styleCopies>zI)throw new Ke("Requirement diagram applies too many style declarations.","limit",{type:"requirement"});for(let r of t)e.push(r)}setDirection(e){this.direction=e}addRequirement(e,t){let r=this.requirements.get(e);return r===void 0&&(r={name:e,type:t,requirementId:this.newId,text:this.newText,risk:this.newRisk,verifyMethod:this.newVerifyMethod,cssStyles:[],classes:["default"]},this.requirements.set(e,r)),this.newId=this.newText=this.newRisk=this.newVerifyMethod="",r}setNewReqId(e){this.newId=e}setNewReqText(e){this.newText=e}setNewReqRisk(e){this.newRisk=e}setNewReqVerifyMethod(e){this.newVerifyMethod=e}addElement(e){let t=this.elements.get(e);return t===void 0&&(t={name:e,type:this.newElementType,docRef:this.newDocRef,cssStyles:[],classes:["default"]},this.elements.set(e,t)),this.newElementType=this.newDocRef="",t}setNewElementType(e){this.newElementType=e}setNewElementDocRef(e){this.newDocRef=e}addRelationship(e,t,r){this.relations.push({type:e,src:t,dst:r})}node(e){return this.requirements.get(e)??this.elements.get(e)}setCssStyle(e,t){for(let r of e){let a=this.node(r);if(!t||!a)return;for(let n of t)this.copy(a.cssStyles,n.includes(",")?n.split(","):[n])}}setClass(e,t){for(let r of e){let a=this.node(r);if(a)for(let n of t){a.classes.push(n);let i=this.classes.get(n)?.styles;i&&this.copy(a.cssStyles,i)}}}defineClass(e,t){for(let r of e){let a=this.classes.get(r);a===void 0&&(a={id:r,styles:[],textStyles:[]},this.classes.set(r,a));for(let i of t)i.includes("color")&&a.textStyles.push(i.replace("fill","bgFill")),a.styles.push(i);let n=t.flatMap(i=>i.split(","));for(let i of this.requirements.values())i.classes.includes(r)&&this.copy(i.cssStyles,n);for(let i of this.elements.values())i.classes.includes(r)&&this.copy(i.cssStyles,n)}}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
216
|
+
`)}},zb=["$end","INVALID","title","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","direction_tb","direction_bt","direction_rl","direction_lr","NEWLINE","EOF","RD","STRUCT_START","STRUCT_STOP","STYLE_SEPARATOR","COLONSEP","ID","TEXT","RISK","VERIFYMTHD","REQUIREMENT","FUNCTIONAL_REQUIREMENT","INTERFACE_REQUIREMENT","PERFORMANCE_REQUIREMENT","PHYSICAL_REQUIREMENT","DESIGN_CONSTRAINT","LOW_RISK","MED_RISK","HIGH_RISK","VERIFY_ANALYSIS","VERIFY_DEMONSTRATION","VERIFY_INSPECTION","VERIFY_TEST","ELEMENT","CONTAINS","COPIES","DERIVES","SATISFIES","VERIFIES","REFINES","TRACES","TYPE","DOCREF","STYLE","CLASSDEF","CLASS","ALPHA","COLON","SEMICOLON","PERCENT","MINUS","BRKT","END_ARROW_L","END_ARROW_R","LINE","qString","unqString","COMMA"],BI=new Map([["requirementdiagram",14],["id",19],["text",20],["risk",21],["verifymethod",22],["requirement",23],["functionalrequirement",24],["interfacerequirement",25],["performancerequirement",26],["physicalrequirement",27],["designconstraint",28],["low",29],["medium",30],["high",31],["analysis",32],["demonstration",33],["inspection",34],["test",35],["element",36],["contains",37],["copies",38],["derives",39],["satisfies",40],["verifies",41],["refines",42],["traces",43],["type",44],["docref",45],["style",46],["classdef",47],["class",48]]),WI=/accTitle\s*:\s*/iy,YI=/accDescr\s*:\s*/iy,qI=/accDescr\s*\{\s*/iy,Kh=/direction\s+(?:(TB)|(BT)|(RL)|LR)/gi,jp=/[\n\r\u2028\u2029]/g,GI=22,Gb=new Uint8Array(128);for(let e of`:,\r
|
|
217
|
+
{<>-=`)Gb[e.charCodeAt(0)]=1;UI=[Vs.REQUIREMENT,Vs.FUNCTIONAL_REQUIREMENT,Vs.INTERFACE_REQUIREMENT,Vs.PERFORMANCE_REQUIREMENT,Vs.PHYSICAL_REQUIREMENT,Vs.DESIGN_CONSTRAINT,Up.LOW_RISK,Up.MED_RISK,Up.HIGH_RISK,Vh.VERIFY_ANALYSIS,Vh.VERIFY_DEMONSTRATION,Vh.VERIFY_INSPECTION,Vh.VERIFY_TEST,"",oi.CONTAINS,oi.COPIES,oi.DERIVES,oi.SATISFIES,oi.VERIFIES,oi.REFINES,oi.TRACES];VI=40,KI=16,ZI=56,Zh=14,Eo=10,Xp=2,Bb=12,QI=120,JI=280,e6=240,Vp=26,Hb=6,Wb=9,Qh=4.5,t6=28,r6=14;Ub={type:"requirement",math:!0,parse(e,t,r){let a=new FI;return r&&(a.title=r),jI(e,a),a},render:s6}});var Xb={};Rt(Xb,{requirement:()=>Ub});var Vb=Ge(()=>{xe();jb()});function Kb(e){return e>=32&&e<=126&&e!==34&&e!==44}function o6(e){let t=e.length,r=[],a=[],n=[],i=[],l=0,s=0,o=(h,d,f)=>{r.push(h),a.push(e.slice(d,f)),n.push(d),s=f},c=h=>e.slice(s,s+h.length).toLowerCase()===h&&!et(e.charCodeAt(s+h.length));for(;s<t;){let h=e.charCodeAt(s),d=s,f=s;if(l===2){if(h===34&&e.charCodeAt(s+1)!==34){i.length>0&&(l=i.pop()),o(5,s,s+1);continue}for(;f<t;){let g=e.charCodeAt(f);if(Kb(g)||g===44||g===13||g===10)f++;else if(g===34&&e.charCodeAt(f+1)===34)f+=2;else break}o(7,s,f)}else{if(l===0&&(h|32)===115){let g=c("sankey-beta")?11:c("sankey")?6:0;if(g>0){i.push(l),l=1,o(2,s,s+g);continue}}if(h===10||h===13&&e.charCodeAt(s+1)===10){o(3,s,h===10?s+1:s+2);continue}if(h===44){o(4,s,s+1);continue}if(h===34){i.push(l),l=2,o(5,s,s+1);continue}for(;f<t&&Kb(e.charCodeAt(f));)f++;o(6,s,f)}if(f===d)return o(1,s,s),{types:r,texts:a,starts:n}}return o(l===2?7:8,t,t),o(0,t,t),{types:r,texts:a,starts:n}}function Zb(e){return e===10||e===13?!1:e<128?e===32||e===9||e===11||e===12:e===160||e===5760||e>=8192&&e<=8202||e===8232||e===8233||e===8239||e===8287||e===12288||e===65279}function h6(e){let t=0,r=e.length;for(;t<r&&Zb(e.charCodeAt(t));)t++;for(;r>t&&Zb(e.charCodeAt(r-1));)r--;return e.slice(t,r).replace(c6,`
|
|
218
|
+
`).trim()}function d6(e,t){let{types:r,texts:a,starts:n}=o6(e),i=0,l=h=>{let d=r[i],f=d===1?Kp[r[i-1]]:Kp[d];throw st("sankey",e,n[i],`Expecting ${h}, got '${f}'`)},s=(h,d="")=>{r[i]!==h&&l(`'${Kp[h]}'${d}`),i++},o=()=>{if(r[i]===6)return a[i++];r[i]!==5&&l("'DQUOTE', 'NON_ESCAPED_TEXT'"),i++,r[i]!==7&&l("'ESCAPED_TEXT'");let h=a[i++];return s(5),h},c=()=>o().trim().replaceAll('""','"');for(s(2),s(3);;){let h=c();s(4,", 'NEWLINE', 'EOF'");let d=c();s(4,", 'NEWLINE', 'EOF'");let f=o(),g=t.findOrCreateNode(h),p=t.findOrCreateNode(d);if(t.addLink(g,p,parseFloat(f.trim())),r[i]!==3)break;i++}r[i]===8&&i++,r[i]!==0&&l("'NEWLINE', 'EOF'")}function Zp(e,t){if(e.length>8){e.sort(t);return}for(let r=1;r<e.length;r++){let a=e[r],n=r-1;for(;n>=0&&t(e[n],a)>0;)e[n+1]=e[n],n--;e[n+1]=a}}function u6(e,t){let r=e.nodes.length,a=e.links.map(M=>({source:M.source.index,target:M.target.index,value:Number.isFinite(M.value)&&M.value>0?M.value:0,thickness:0,sourceY:0,targetY:0})),n=[],i=[];for(let M=0;M<r;M++)n.push([]),i.push([]);a.forEach((M,b)=>{n[M.source].push(b),i[M.target].push(b)});let l=new Int32Array(r),s=new Int32Array(r),o=[];for(let M=0;M<r;M++)s[M]=i[M].length,s[M]===0&&o.push(M);for(let M=0;M<o.length;M++){let b=o[M];for(let E of n[b]){let w=a[E].target;l[w]<l[b]+1&&(l[w]=l[b]+1),--s[w]===0&&o.push(w)}}if(o.length<r){let M=0;for(;s[M]===0;)M++;let b=new Uint8Array(r);for(;b[M]===0;){b[M]=1;for(let E of i[M])if(s[a[E].source]>0){M=a[E].source;break}}throw new Ke(`Sankey diagrams cannot have circular links, and "${e.nodes[M].id}" is part of one.`,"semantic",{type:"sankey"})}let c=1;for(let M=0;M<r;M++)l[M]+1>c&&(c=l[M]+1);let h=new Int32Array(r);for(let M=r-1;M>=0;M--){let b=o[M];for(let E of n[b])h[b]<h[a[E].target]+1&&(h[b]=h[a[E].target]+1)}let d=0;for(let M of a)M.value>d&&(d=M.value);let f=d>0?1/d:0,g=[],p=new Float64Array(r),m=[];for(let M=0;M<c;M++)m.push([]);let x=c>1?(t.width-t.nodeWidth)/(c-1):0;for(let M=0;M<r;M++){let b;if(t.alignment==="left")b=l[M];else if(t.alignment==="right")b=c-1-h[M];else if(t.alignment==="center"){if(b=l[M],i[M].length===0&&n[M].length>0){b=c;for(let v of n[M])l[a[v].target]-1<b&&(b=l[a[v].target]-1)}}else b=n[M].length>0?l[M]:c-1;let E=0,w=0,T=0,A=0;for(let v of i[M])E+=a[v].value*f,T+=a[v].value;for(let v of n[M])w+=a[v].value*f,A+=a[v].value;p[M]=Math.max(E,w),g.push({layer:b,value:Math.max(T,A),x:b*x,y:0,height:0}),m[b].push(M)}let y=1;for(let M of m)M.length>y&&(y=M.length);let $=y>1?Math.min(t.nodePadding,t.height/(y-1)):t.nodePadding,k=1/0;for(let M of m){let b=0;for(let E of M)b+=p[E];b>0&&(k=Math.min(k,(t.height-(M.length-1)*$)/b))}(!Number.isFinite(k)||k<0)&&(k=0);let I=Math.max(0,t.labelHeight-$),_=M=>{for(let b of m){let E=(b.length-1)*$;for(let w of b)E+=Math.max(p[w]*M,I);if(E>t.height+1e-6)return!1}return!0};if(I>0&&!_(k))if(_(0)){let M=0;for(let b=0;b<40;b++){let E=(M+k)/2;_(E)?M=E:k=E}k=M}else I=0;let L=new Float64Array(r);for(let M of a)M.thickness=M.value*f*k;for(let M of m){let b=0;for(let w of M)g[w].height=p[w]*k,L[w]=Math.max(0,I-g[w].height)/2,g[w].y=b+L[w],b+=g[w].height+2*L[w]+$;let E=(t.height-b+$)/(M.length+1);M.forEach((w,T)=>g[w].y+=E*(T+1))}let R=M=>g[M].y+g[M].height/2,W=new Float64Array(a.length),q=new Float64Array(a.length),C=(M,b)=>R(a[M].target)-R(a[b].target)||M-b,K=(M,b)=>R(a[M].source)-R(a[b].source)||M-b,Q=(M,b)=>R(M)-R(b)||M-b,G=M=>{let b=0;Zp(n[M],C);for(let E of n[M])W[E]=b+a[E].thickness/2,b+=a[E].thickness},Y=M=>{let b=0;Zp(i[M],K);for(let E of i[M])q[E]=b+a[E].thickness/2,b+=a[E].thickness},N=()=>{for(let M=0;M<r;M++)G(M),Y(M)},S=(M,b,E)=>{for(let T of M){let A=E?i[T]:n[T];if(A.length===0)continue;E?Y(T):G(T);let v=0,D=0,z=0;for(let P of A){let O=E?g[a[P].source].y+W[P]-q[P]:g[a[P].target].y+q[P]-W[P];v+=O*a[P].thickness,D+=a[P].thickness,z+=R(E?a[P].source:a[P].target)-g[T].height/2}let H=D>0?v/D:z/A.length;g[T].y+=(H-g[T].y)*b}Zp(M,Q);let w=0;for(let T of M)g[T].y-L[T]<w&&(g[T].y=w+L[T]),w=g[T].y+g[T].height+L[T]+$;w=t.height;for(let T=M.length-1;T>=0;T--){let A=M[T];g[A].y+g[A].height+L[A]>w&&(g[A].y=w-g[A].height-L[A]),w=g[A].y-L[A]-$}};N();for(let M=0;M<f6;M++){let b=Math.pow(.99,M);for(let E=c-2;E>=0;E--)S(m[E],b,!1);N();for(let E=1;E<c;E++)S(m[E],b,!0);N()}for(let M=0;M<a.length;M++)a[M].sourceY=g[a[M].source].y+W[M],a[M].targetY=g[a[M].target].y+q[M];return{nodes:g,links:a}}function rw(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ed(e,t,r,a,n){let i=e[t];return typeof i=="number"&&i>=a?Math.min(i,n):r}function Jb(e,t){let r=e[t];return typeof r=="string"||typeof r=="number"&&Number.isFinite(r)?String(r):""}function ew(e){return Math.abs(e)<1e15?Math.round(e*100)/100:e}function tw(e){return typeof e=="string"?Ct([`fill:${e}`]).shape:""}function g6(e,t,r){let a=rw(t.sankey)?t.sankey:{};return Jn(r,ed(a,"width",600,1,1e4),160,n=>m6(e,a,r,n))}function m6(e,t,r,a){let n=r.fontSize??16,i=Math.round(n*.875),l=r.measurer??rt(r.fontFamily),s=r.padding??8,o=ed(t,"height",400,1,1e4),c=Math.min(ed(t,"nodeWidth",10,1,200),a),h=t.showValues!==!1,d=Jb(t,"prefix"),f=Jb(t,"suffix"),g=t.labelStyle==="outlined",p=t.nodeAlignment==="left"||t.nodeAlignment==="right"||t.nodeAlignment==="center"?t.nodeAlignment:"justify",m=typeof t.linkColor=="string"?t.linkColor:"gradient",{nodes:x,links:y}=u6(e,{width:a,height:o,nodeWidth:c,nodePadding:ed(t,"nodePadding",12,0,200)+(h?p6:0),labelHeight:i*1.15,alignment:p}),$=new Map;if(rw(t.nodeColors))for(let[T,A]of Object.entries(t.nodeColors)){let v=tw(A);v&&$.set(T,v)}let k=T=>$.get(e.nodes[T].id)??"",I=0,_=0;x.forEach(T=>{T.value>_&&(_=T.value,I=T.layer)});let L=0,R=a,W=0,q=o,C="",K="";x.forEach((T,A)=>{let v=e.nodes[A].id,D=Math.max(T.height,1);K+=`<rect class="pele-sankey-node" data-id="${Pe(v)}" x="${u(T.x)}" y="${u(T.y)}" width="${u(c)}" height="${u(D)}" rx="${u(Math.min(2,D/2))}" fill="${pt(A)}"${k(A)}/>`;let z=h?`${d}${ew(T.value)}${f}`:"",H=g?T.layer>=I:T.x<a/2,P=l.width(z?`${v} ${z}`:v,i,0),O=H?T.x+c+Qb:T.x-Qb,F=T.y+T.height/2;L=Math.min(L,H?O:O-P),R=Math.max(R,H?O+P:O),W=Math.min(W,F-i*.75),q=Math.max(q,F+i*.75);let U=` x="${u(O)}" y="${u(F+i*.35)}" text-anchor="${H?"start":"end"}"`,j=Qe(v)+(z?` <tspan class="pele-sankey-value" fill="var(--_m)">${Qe(z)}</tspan>`:"");C+=`<g class="pele-label" data-id="${Pe(v)}">`+(g?`<text${U} fill="none" stroke="var(--_bg)" stroke-width="3" stroke-linejoin="round">${Qe(v)}${z?" "+Qe(z):""}</text>`:"")+`<text${U}>${j}</text></g>`});let Q=m==="gradient"||m==="source"||m==="target"?"":tw(m),G="";for(let T of y){let A=m==="target"?T.target:T.source,v=Math.max(T.thickness,1)/2,D=x[T.source].x+c,z=x[T.target].x,H=u((D+z)/2),P=Pe(e.nodes[T.source].id),O=Pe(e.nodes[T.target].id);G+=`<path class="pele-sankey-link" data-id="${P}->${O}" d="M${u(D)},${u(T.sourceY-v)}C${H},${u(T.sourceY-v)} ${H},${u(T.targetY-v)} ${u(z)},${u(T.targetY-v)}L${u(z)},${u(T.targetY+v)}C${H},${u(T.targetY+v)} ${H},${u(T.sourceY+v)} ${u(D)},${u(T.sourceY+v)}Z" fill="${pt(A)}"${Q||k(A)}><title>${P} \u2192 ${O}: ${Pe(d)}${ew(T.value)}${Pe(f)}</title></path>`}let Y=Be(e.title,!1,l,n,Pt(r),1),N=Y.height>0?Y.height+12:0,S=Math.max(R-L,Y.width),M=s-L+(S-(R-L))/2,b=s+N-W,E=Math.ceil(S+2*s),w=Math.ceil(q-W+N+2*s);return{svg:tt("sankey",E,w,n,r,e,Re(Y,E/2,s+Y.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g transform="translate(${u(M)},${u(b)})"><g class="pele-sankey-links" fill-opacity="0.4">${G}</g><g class="pele-sankey-nodes">${K}</g><g class="pele-labels" font-size="${i}">${C}</g></g>`),width:E,height:w,links:[]}}var l6,Kp,c6,f6,Qb,p6,aw,nw=Ge(()=>{xe();or();Gt();yt();kt();l6=class{constructor(){le(this,"type","sankey");le(this,"nodes",[]);le(this,"links",[]);le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"lookup",new Map)}findOrCreateNode(e){let t=this.lookup.get(e);return t===void 0&&(t={id:e,index:this.nodes.length},this.lookup.set(e,t),this.nodes.push(t)),t}addLink(e,t,r){this.links.push({source:e,target:t,value:r})}},Kp=["$end","STUCK","SANKEY","NEWLINE","COMMA","DQUOTE","NON_ESCAPED_TEXT","ESCAPED_TEXT","EOF"];c6=/[\n\r]+/g;f6=6;Qb=6,p6=15;aw={type:"sankey",parse(e,t,r){let a=new l6;return r&&(a.title=r),d6(h6(e),a),a},render:g6}});var iw={};Rt(iw,{sankey:()=>aw});var sw=Ge(()=>{xe();nw()});function So(e,t,r,a,n,i=0){if(e===""||t<=0)return;let l=n.width(e,r,i);if(l<=t)return{text:e,size:r,width:l};let s=Math.max(a,Math.floor(r*t/l));for(;s>=a;){if(l=n.width(e,s,i),l<=t)return{text:e,size:s,width:l};s--}let o=Array.from(e),c=0,h=o.length-1;for(;c<h;){let f=c+h+1>>1;n.width(o.slice(0,f).join("").trimEnd()+"\u2026",a,i)<=t?c=f:h=f-1}if(c===0)return;let d=o.slice(0,c).join("").trimEnd()+"\u2026";return l=n.width(d,a,i),l<=t?{text:d,size:a,width:l}:void 0}var Qp=Ge(()=>{xe()});function Gi(e,t,r,a,n=0){let i=[];for(let c of e.split(`
|
|
219
|
+
`)){let h=Array.from(c);h.length===0&&i.push("");let d=0;for(;d<h.length;){let f=$=>t.width(h.slice(d,d+$).join(""),r,n)<=a,g=1;for(;g<h.length-d&&f(g);)g=Math.min(h.length-d,g*2);let p=1;for(;p<g;){let $=Math.ceil((p+g)/2);f($)?p=$:g=$-1}let m=p,x=d+m<h.length;if(x&&!Jp.test(h[d+m])){for(let $=m-1;$>0;$--)if(Jp.test(h[d+$])){m=$+1;break}}let y=h.slice(d,d+m).join("");for(i.push(x&&y.trimEnd()||y),d+=m;x&&d<h.length&&Jp.test(h[d]);)d++}}e===""&&(i.length=0);let l=i.map(c=>t.width(c,r,n)),s=0;for(let c of l)s=Math.max(s,c);let o=Math.round(r*1.5);return{lines:i.map((c,h)=>[{text:c,style:n,width:l[h]}]),widths:l,width:s,height:i.length*o,size:r,lineHeight:o}}function Hi(e,t,r){if(e.width<=r)return e;let a=[],n=[];for(let s=0;s<e.lines.length;s++){if(e.widths[s]<=r){a.push(e.lines[s]),n.push(e.widths[s]);continue}let o=[],c=0,h=()=>{a.push(o),n.push(c),o=[],c=0};for(let d of e.lines[s]){if(d.icon!==void 0||d.math){o.length&&c+d.width>r&&h(),o.push(d),c+=d.width;continue}for(let f of Array.from(d.text)){let g=o[o.length-1],p=g&&g.icon===void 0&&g.math===void 0&&g.style===d.style,m=t.width(p?g.text+f:f,e.size,d.style)-(p?g.width:0);o.length&&c+m>r&&(h(),g=void 0,m=t.width(f,e.size,d.style)),g&&g.icon===void 0&&g.math===void 0&&g.style===d.style?(g.text+=f,g.width+=m):o.push({text:f,style:d.style,width:m}),c+=m}}(o.length||!e.lines[s].length)&&h()}let i=0;for(let s of n)i=Math.max(i,s);let l={...e,lines:a,widths:n,width:i,height:a.length*e.lineHeight};return e.heights?Hl(l):l}function zn(e,t,r,a){let n=Tn(e),i="<text"+Wa(a,n),l="";for(let s=0;s<e.lines.length;s++){let o=e.lines[s],c=r+(s+.5)*e.lineHeight;if(o.some(d=>d.icon!==void 0)){let d=e.widths[s];l+=Re({...e,lines:[o],widths:[d],width:d,height:e.lineHeight},t+d/2,c,a);continue}let h="";for(let d of o){let f=sn(d.style&~n);h+=f?`<tspan${f}>${Qe(d.text)}</tspan>`:Qe(d.text)}h!==""&&(l+=`${i} x="${u(t)}" y="${u(c+e.size*.35)}" text-anchor="start" xml:space="preserve">${h}</text>`)}return l}var Jp,Ui=Ge(()=>{xe();yt();Jp=/\s/});function To(e,t,r,a,n){let i=e.packet?.[t];return typeof i=="number"&&i>=a?Math.min(i,n):r}function e0(e){return new Ke(e,"semantic",{type:"packet"})}function x6(e,t,r){let a=Math.floor(To(t,"bitsPerRow",32,1,4096)),n=[],i=-1,l=[],s=1;for(let o of e.blocks){let{start:c,end:h,bits:d}=o;if(c!==void 0&&h!==void 0&&h<c)throw e0(`Packet block ${c} - ${h} is invalid. End must be greater than start.`);if(c??(c=i+1),c!==i+1)throw e0(`Packet block ${c} - ${h??c} is not contiguous. It should start from ${i+1}.`);if(d===0)throw e0(`Packet block ${c} is invalid. Cannot have a zero bit field.`);for(h??(h=c+(d??1)-1),d??(d=h-c+1),i=h;l.length<=a+1&&n.length<y6;){let f=s*a-1;if(h<=f){l.push({start:c,end:h,bits:d,label:o.label}),h===f&&(n.push(l),l=[],s++);break}l.push({start:c,end:f,bits:f-c,label:o.label}),n.push(l),l=[],s++,c=f+1,d=h-c}}return l.length>0&&n.push(l),{type:"packet",title:e.title||r,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,""):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
220
|
+
`):void 0,bitsPerRow:a,rows:n}}function b6(e){let t=new ir(er(e,lw,"packet"),lw,"packet"),r={$type:"Packet",blocks:[]},a=()=>{if(t.kind!==-1)for(t.kind!==10&&t.fail("a line break or the end of input");t.kind===10;)t.i++};for(;t.kind===10;)t.i++;for(t.accept(0)||t.expect(1);t.kind!==-1;)switch(t.kind){case 10:t.i++;break;case 5:r.accDescr=nr(t.take()),a();break;case 6:r.accTitle=ar(t.take()),a();break;case 7:r.title=rr(t.take()),a();break;case 8:case 3:{let n={$type:"PacketBlock",label:""};t.accept(3)?n.bits=Number(t.expect(8)):(n.start=Number(t.take()),t.accept(2)&&(n.end=Number(t.expect(8)))),t.expect(4),n.label=_r(t.expect(9)),r.blocks.push(n),a();break}default:t.fail("a field, a title, or a line break")}return r}function w6(e,t,r){return jt(r,a=>$6(e,t,r,a))}function $6(e,t,r,a){let n=r.fontSize??16,i=Math.round(n*.875),l=Math.round(n*.625),s=r.measurer??rt(r.fontFamily),o=r.padding??8,c=t.packet??{},h=To(t,"rowHeight",32,1,400),d=To(t,"bitWidth",32,1,400),f=To(t,"paddingX",5,0,400),g=To(t,"paddingY",5,0,400),p=c.showBits!==!1,m=c.bitOrder==="descending",x=e.bitsPerRow,y=e.rows;if(a){let E=Math.max(1,Math.floor(((r.maxWidth??320)-2*o)/Math.min(d,18)));x=Math.min(x,Math.max(8,2**Math.floor(Math.log2(E))));let w=e.rows[e.rows.length-1],T=w?.[w.length-1]?.end??0;Math.ceil((T+1)/x)>1e4&&(x=e.bitsPerRow),d=Math.min(d,Math.max(18,((r.maxWidth??320)-2*o)/x));let A=D=>D.bits===D.end-D.start,v=[];for(let D of e.rows)for(let z of D){let H=v[v.length-1];H&&A(H)&&A(z)&&H.label===z.label&&z.start===H.end+1&&z.start%e.bitsPerRow===0?(H.end=z.end,H.bits=H.end-H.start):v.push({...z})}y=[];for(let D of v)for(let z=D.start;z<=D.end;){let H=Math.min(D.end,(Math.floor(z/x)+1)*x-1),P=Math.floor(z/x);(y[P]??(y[P]=[])).push({...D,start:z,end:H}),z=H+1}}let $=new Map;if(a)for(let E of y)for(let w of E){let T=Math.max(1,(w.end-w.start+1)*d-Math.min(f,d-1)-6),A=Gi(Tt(w.label).trim(),s,i,T);$.set(w,A)}let k=p?l+4:0,I=y.map(E=>{let w=h;if(a)for(let T of E)w=Math.max(w,$.get(T).height+10);return w}),_=[],L=0;for(let E of I)_.push(L),L+=k+E+g;y.length&&(L-=g);let R=Math.min(f,d-1),W=y.length>0?x*d-R:0,q=Be(e.title,!1,s,n,a?Pt(r):4e3,1),C=q.height>0?q.height+(L>0?12:0):0,K=new Map,Q=(E,w)=>{let T=K.get(E);return T||K.set(E,T=new Map),T.has(w)||T.set(w,So(Tt(E).trim(),w,i,Math.round(n*.5),s)),T.get(w)},G=o+Math.max(0,(q.width-W)/2),Y="",N="";y.forEach((E,w)=>{let T=o+_[w]+k,A=I[w];for(let v of E){let D=v.end-v.start+1,z=v.start%x,H=G+(m?x-z-D:z)*d,P=D*d-R,O=a?void 0:Q(v.label,P-6);if(Y+=`<g class="pele-node" data-id="${v.start}-${v.end}"><rect x="${u(H)}" y="${u(T)}" width="${u(P)}" height="${u(A)}" fill="var(--_s)" stroke="var(--_b)"${ot}/>`+(a?Re($.get(v),H+P/2,T+A/2,""):O&&O.size<=A?`<text x="${u(H+P/2)}" y="${u(T+A/2+O.size*.35)}"${O.size===i?"":` font-size="${u(O.size)}"`}>${Qe(O.text)}</text>`:"")+"</g>",!p)continue;let F=m?v.end:v.start,U=m?v.start:v.end;D===1?N+=`<text x="${u(H+P/2)}" y="${u(T-4)}" text-anchor="middle">${F}</text>`:N+=`<text x="${u(H)}" y="${u(T-4)}">${F}</text><text x="${u(H+P)}" y="${u(T-4)}" text-anchor="end">${U}</text>`}});let S=Math.ceil(Math.max(W,q.width)+2*o),M=Math.ceil(L+C+2*o),b=(Y?`<g class="pele-packet-fields" font-size="${i}" text-anchor="middle">${Y}</g>`:"")+(N?`<g class="pele-packet-bits" font-size="${l}" fill="var(--_m)">${N}</g>`:"")+Re(q,S/2,M-o-q.height/2,' class="pele-title" font-weight="var(--_tw)"');return{svg:tt("packet",S,M,n,r,e,b),width:S,height:M,links:[]}}var y6,lw,ow,cw=Ge(()=>{xe();Qp();Ui();Gt();sa();yt();kt();y6=1e4;lw=[{name:"packet-beta",pattern:"packet-beta"},gr("packet"),{name:"-",pattern:"-",longer:[tr]},{name:"+",pattern:"+"},{name:":",pattern:":"},kr,cr,hr,{name:"INT",pattern:/0|[1-9][0-9]*(?!\.)/y},ia,qr,Gr,tr,ur,pr];ow={type:"packet",parse:(e,t,r)=>x6(b6(e),t,r),render:w6}});var hw={};Rt(hw,{packet:()=>ow});var dw=Ge(()=>{xe();cw()});function uw(e){return new Ke(e,"semantic",{type:"radar"})}function k6(e,t){let r=e.axes.map(i=>({name:i.name,label:i.label??i.name})),a=e.curves.map(i=>{let l;if(i.entries[0].axis===void 0)l=i.entries.map(s=>s.value);else{if(r.length===0)throw uw("Axes must be populated before curves for reference entries");let s=new Map;for(let o of i.entries)o.axis!==void 0&&!s.has(o.axis.$refText)&&s.set(o.axis.$refText,o.value);l=r.map(o=>{let c=s.get(o.name);if(c===void 0)throw uw("Missing entry for axis "+o.label);return c})}return{name:i.name,label:i.label??i.name,entries:l}}),n={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"};for(let i of e.options)i.name==="showLegend"?n.showLegend=i.value:i.name==="graticule"?n.graticule=i.value:n[i.name]=i.value;return n.ticks>fw&&(n.ticks=fw),{type:"radar",title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,""):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
221
|
+
`):void 0,axes:r,curves:a,options:n}}function pw(e,t){let r=t;for(let a=e.charCodeAt(r);a>=48&&a<=57;a=e.charCodeAt(r))r++;return r}function M6(e,t){(t<n0||t>=td)&&(n0=t,td=pw(e,t));let r=td;if(r===t)return-1;let a=e.charCodeAt(r)===46;if(a){let n=pw(e,r+1),i=n-r-1;if(i>0&&e.charCodeAt(n)!==46)return n;if(i>1)return n-1}return e.charCodeAt(t)===48?t+1:a?r-1>t?r-1:-1:r}function v6(e,t){return r0.lastIndex=t,r0.test(e)&&(rd===-2&&(rd=e.lastIndexOf("}")),r0.lastIndex>rd)?-1:(t0.lastIndex=t,t0.test(e)?t0.lastIndex:-1)}function A6(e){return n0=td=0,rd=-2,er(e,yw,"radar")}function E6(e){let t=new ir(A6(e),yw,"radar"),r={$type:"Radar",axes:[],curves:[],options:[]},a=()=>{for(;t.kind===23;)t.i++},n=()=>{t.kind!==-1&&(t.kind!==23&&t.fail("a line break or the end of input"),a())},i=()=>{if(!t.accept(11))return;let d=_r(t.expect(21));return t.expect(12),d},l=d=>{if(!d)return{$type:"Entry",value:Number(t.expect(20))};let f={$refText:t.expect(22)};return t.accept(9),{$type:"Entry",axis:f,value:Number(t.expect(20))}},s=()=>{let d=t.expect(22),f=i(),g={$type:"Curve",name:d,entries:[]};f!==void 0&&(g.label=f),t.expect(13),a(),t.kind!==20&&t.kind!==22&&t.fail("a number or an axis name");let p=t.kind===22;for(g.entries.push(l(p));t.accept(10);)a(),g.entries.push(l(p));return a(),t.expect(14),g},o=()=>{let d={$type:"Axis",name:t.expect(22)},f=i();return f!==void 0&&(d.label=f),d},c=()=>{let d=t.kind,f=t.take(),g;return d===2?g=t.expect(16)==="true":d===3?g=t.expect(15):g=Number(t.expect(20)),{$type:"Option",name:f,value:g}},h=()=>t.kind===2||t.kind===5||t.kind===7||t.kind===8||t.kind===3;for(a(),t.accept(0)||(t.expect(1),t.accept(9)),a();t.kind!==-1;)switch(t.kind){case 23:t.i++;break;case 17:r.accDescr=nr(t.take()),n();break;case 18:r.accTitle=ar(t.take()),n();break;case 19:r.title=rr(t.take()),n();break;case 6:t.i++;do r.axes.push(o());while(t.accept(10));break;case 4:t.i++;do r.curves.push(s());while(t.accept(10));break;default:for(h()||t.fail("an axis, a curve, an option, a title, or a line break"),r.options.push(c());t.accept(10);)h()||t.fail("an option"),r.options.push(c())}return r}function Fn(e,t,r,a,n){let i=e.radar?.[t];return typeof i=="number"&&i>=a?Math.min(i,n):r}function S6(e,t,r,a){let n=Math.min(Math.max(e,t),r);return a*(n-t)/(r-t)}function T6(e,t){let r=e.length,a=`M${u(e[0].x)},${u(e[0].y)}`;for(let n=0;n<r;n++){let i=e[(n-1+r)%r],l=e[n],s=e[(n+1)%r],o=e[(n+2)%r];a+=` C${u(l.x+(s.x-i.x)*t)},${u(l.y+(s.y-i.y)*t)} ${u(s.x-(o.x-l.x)*t)},${u(s.y-(o.y-l.y)*t)} ${u(s.x)},${u(s.y)}`}return a+" Z"}function mw(e){let t="";for(let r of e)t+=(t?" ":"")+u(r.x)+","+u(r.y);return t}function C6(e,t,r){let a=Fn(t,"width",320,1,4e3);return Jn(r,a,160,(n,i)=>_6(e,t,r,n,Fn(t,"height",320,1,4e3)*n/a,i))}function _6(e,t,r,a,n,i){let l=r.fontSize??16,s=Math.round(l*.875),o=r.measurer??rt(r.fontFamily),c=r.padding??8,h=Fn(t,"axisScaleFactor",1,0,10),d=Fn(t,"axisLabelFactor",1.05,0,10),f=Fn(t,"curveTension",.17,0,1),g=Math.min(a,n)/2,{axes:p,curves:m}=e,{ticks:x,graticule:y,min:$}=e.options,k=p.length,I=p.map((P,O)=>{let F=2*Math.PI*O/k-Math.PI/2;return{x:Math.cos(F),y:Math.sin(F)}}),_=e.options.max;if(_===null){_=-1/0;for(let P of m)for(let O of P.entries)O>_&&(_=O)}let L=-a/2-Fn(t,"marginLeft",16,0,2e3),R=a/2+Fn(t,"marginRight",16,0,2e3),W=-n/2-Fn(t,"marginTop",16,0,2e3),q=n/2+Fn(t,"marginBottom",16,0,2e3),C="";for(let P=0;P<x;P++){let O=Math.min(g,g*(P+1)/x);y==="circle"?C+=`<circle r="${u(O)}"/>`:C+=`<polygon points="${mw(I.map(F=>({x:F.x*O,y:F.y*O})))}"/>`}let K="",Q="";I.forEach((P,O)=>{let F=g*h;K+=`M0,0L${u(P.x*F)},${u(P.y*F)}`;let U=Be(p[O].label,!1,o,s,4e3),j=g*d+6,J=P.x*j+(P.x>.01?U.width/2:P.x<-.01?-U.width/2:0),Z=P.y*j+(P.y>.01?U.height/2:P.y<-.01?-U.height/2:0);Q+=`<g class="pele-axis-label" data-id="${Pe(p[O].name)}">${Re(U,J,Z,"")}</g>`,L=Math.min(L,J-U.width/2),R=Math.max(R,J+U.width/2),W=Math.min(W,Z-U.height/2),q=Math.max(q,Z+U.height/2)});let G="";m.forEach((P,O)=>{if(P.entries.length!==k)return;let F=P.entries.map((J,Z)=>{let B=S6(J,$,_,g),X=Number.isFinite(B)?B:0;return{x:I[Z].x*X,y:I[Z].y*X}}),U=pt(O),j=` class="pele-curve" data-id="${Pe(P.name)}" fill="${U}" stroke="${U}"`;G+=y==="circle"?`<path${j} d="${T6(F,f)}"/>`:`<polygon${j} points="${mw(F)}"/>`});let Y=e.options.showLegend?m.map(P=>Be(P.label,!1,o,s,4e3)):[],N=0;for(let P of Y)N=Math.max(N,P.width);let S=Y.length*a0,M=i?-(Ks+8+N)/2:R+gw,b=i?q+gw/2:-S/2;Y.length>0&&i?(L=Math.min(L,M),R=Math.max(R,-M),q=b+S):Y.length>0&&(R=M+Ks+8+N,W=Math.min(W,-S/2),q=Math.max(q,S/2));let E="";Y.forEach((P,O)=>{let F=b+O*a0+a0/2,U=pt(O);E+=`<g class="pele-legend-item" data-id="${Pe(m[O].name)}"><rect x="${u(M)}" y="${u(F-Ks/2)}" width="${Ks}" height="${Ks}" rx="2" fill="${U}" fill-opacity="0.4" stroke="${U}"/>`+Re(P,M+Ks+8+P.width/2,F,"")+"</g>"});let w=Be(e.title,!1,o,l,Pt(r),1),T=w.height>0?w.height+8:0,A=Math.max(R-L,w.width),v=Math.ceil(A+2*c),D=Math.ceil(q-W+T+2*c),z=`translate(${u(c+(A-(R-L))/2-L)},${u(c+T-W)})`,H=Re(w,v/2,c+w.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g transform="${z}">`+(C?`<g class="pele-graticule" fill="none" stroke="var(--_a)">${C}</g>`:"")+(K?`<path class="pele-axes" d="${K}" fill="none" stroke="var(--_b)"/>`:"")+(G?`<g class="pele-curves" fill-opacity="0.2" stroke-width="1.5" stroke-linejoin="round">${G}</g>`:"")+(Q?`<g class="pele-axis-labels" font-size="${s}">${Q}</g>`:"")+(E?`<g class="pele-legend" font-size="${s}">${E}</g>`:"")+"</g>";return{svg:tt("radar",v,D,l,r,e,H),width:v,height:D,links:[]}}var fw,n0,td,t0,r0,rd,i0,ji,Xi,yw,Ks,a0,gw,xw,bw=Ge(()=>{xe();Gt();sa();yt();kt();fw=32;n0=0,td=0;t0=kr.pattern,r0=/[\t ]*accDescr\s*{/y,rd=-2;i0={name:"ID",pattern:/[\w]([-\w]*\w)?/y},ji=e=>({name:e,pattern:e,longer:[i0]}),Xi=e=>({name:e,pattern:e}),yw=[Xi("radar-beta:"),{...gr("radar-beta"),longer:[i0]},ji("showLegend"),ji("graticule"),ji("curve"),ji("ticks"),ji("axis"),ji("max"),ji("min"),Xi(":"),Xi(","),Xi("["),Xi("]"),Xi("{"),Xi("}"),{name:"GRATICULE",pattern:/circle|polygon/y},{name:"BOOLEAN",pattern:/true|false/y},{...kr,match:v6},cr,hr,{name:"NUMBER",pattern:/(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/y,match:M6},ia,i0,qr,Gr,tr,ur,pr];Ks=12,a0=26,gw=24;xw={type:"radar",parse:(e,t,r)=>k6(E6(e),r),render:C6}});var ww={};Rt(ww,{radar:()=>xw});var $w=Ge(()=>{xe();bw()});function I6(e){let t=[],r=[];for(let a of e){let n=a.type==="Leaf",i={name:a.name,children:n?void 0:[]};for(i.classSelector=a.classSelector,a.cssCompiledStyles&&(i.cssCompiledStyles=a.cssCompiledStyles),n&&a.value!==void 0&&(i.value=a.value);r.length>0&&r[r.length-1].level>=a.level;)r.pop();r.length===0?t.push(i):r[r.length-1].node.children.push(i),n||r.push({node:i,level:a.level})}return t}function N6(e,t){let r=new Map;for(let n of e.TreemapRows){if(n.$type!=="ClassDefStatement")continue;let i=r.get(n.className);i||r.set(n.className,i=[]);let l=(n.styleText??"").replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",");for(let s of l.split(";"))i.push(s)}let a=[];for(let n of e.TreemapRows){if(n.$type!=="TreemapRow")continue;let i=n.item,l=i.classSelector?r.get(i.classSelector):void 0;a.push({level:n.indent??0,name:i.name,type:i.$type,value:i.$type==="Leaf"?i.value:void 0,classSelector:i.classSelector,cssCompiledStyles:l&&l.length>0?l:void 0})}return{type:"treemap",title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,""):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
222
|
+
`):void 0,roots:I6(a),classes:r}}function R6(e){let t=new ir(er(e,kw,"treemap"),kw,"treemap"),r=t.kinds,a={$type:"Treemap",TreemapRows:[]},n=()=>t.accept(5)?t.expect(12):void 0;for(t.expect(3);t.kind!==-1;){let i=t.kind;if(i===0){a.accDescr=nr(t.take());continue}if(i===1){a.accTitle=ar(t.take());continue}if(i===2){a.title=rr(t.take());continue}i!==8&&i!==14&&i!==4&&t.fail("a node, a class definition, or a title");let l=i===8?t.take().length:void 0;if(t.kind===4){let f=L6.exec(t.take()),g={$type:"ClassDefStatement",className:f[1]};f[2]&&(g.styleText=f[2]),l!==void 0&&(g.indent=l),a.TreemapRows.push(g);continue}let s=t.expect(14).slice(1,-1),o=r[t.i]===8?t.i+1:t.i,c;r[o]===6||r[o]===7?(t.i=o+1,t.accept(8),c={$type:"Leaf",name:s,value:parseFloat(t.expect(13).replace(/,/g,""))}):c={$type:"Section",name:s};let h=n();h!==void 0&&(c.classSelector=h);let d={$type:"TreemapRow",item:c};l!==void 0&&(d.indent=l),a.TreemapRows.push(d)}return a}function vw(e){let t="";for(let r=e.length;r>0;r-=3)t=e.slice(Math.max(0,r-3),r)+(t?","+t:"");return t}function O6(e){let t=Mw.exec(e==="$0,0"?"$,":e)??Mw.exec(","),r=t[1]==="+",a=t[3]!==void 0,n=t[4]===void 0?void 0:Math.min(Number(t[4]),20),i=t[6]??"";return l=>{let s=Math.abs(l),o,c="";if(i==="f"?o=s.toFixed(n??6):i==="%"?(o=(s*100).toFixed(n??6),c="%"):i==="d"?o=Math.round(s).toFixed(0):i==="e"?o=s.toExponential(n??6):o=String(Number(s.toPrecision(Math.max(1,n??12)))),t[5]&&o.includes(".")&&!o.includes("e")&&(o=o.replace(/\.?0+$/,"")),a&&!o.includes("e")){let h=o.indexOf(".");o=h===-1?vw(o):vw(o.slice(0,h))+o.slice(h)}return(l<0?"-":r?"+":"")+(t[2]??"")+o+c}}function Aw(e,t,r){let a=e.children===void 0&&Number.isFinite(e.value)&&e.value>0?e.value:0;return{node:e,parent:t,series:r,value:a,children:[],x:0,y:0,w:0,h:0}}function D6(e,t,r,a,n,i,l){let s=t,o=0;for(;o<e.length;){let c=n*i/s,h=Math.min(n,i),d=e[o].value*c,f=d,g=Math.max(h*h*f/(d*d),d*d/(h*h*f)),p=o+1;for(;p<e.length;){let y=e[p].value*c,$=d+y,k=Math.max(h*h*f/($*$),$*$/(h*h*y));if(k>g)break;g=k,d=$,p++}let m=d/h,x=0;for(let y=o;y<p;y++){let $=e[y],k=y===p-1?h-x:$.value*c/m,I=n>=i?r:r+x,_=n>=i?a+x:a,L=Math.round(I+l/2),R=Math.round(_+l/2);$.x=L,$.y=R,$.w=Math.round(I+(n>=i?m:k)-l/2)-L,$.h=Math.round(_+(n>=i?k:m)-l/2)-R,x+=k,s-=$.value}n>=i?(r+=m,n-=m):(a+=m,i-=m),o=p}}function P6(e,t,r,a){let n=e.map((d,f)=>Aw(d,void 0,f)),i=n.slice();for(let d=0;d<i.length;d++){let f=i[d];for(let g of f.node.children??[]){let p=Aw(g,f,f.series);f.children.push(p),i.push(p)}}for(let d=i.length-1;d>=0;d--){let f=i[d];f.parent&&(f.parent.value+=f.value)}let{gap:l,header:s,side:o}=a,c=[],h=(d,f,g,p,m)=>{if(p<=0||m<=0)return;let x=d.filter($=>$.value>0).sort(($,k)=>k.value-$.value),y=0;for(let $ of x)y+=$.value;if(!(x.length===0||!Number.isFinite(y))){D6(x,y,f-l/2,g-l/2,p+l,m+l,l);for(let $ of x)$.w>0&&$.h>0&&c.push($)}};h(n,0,0,t,r);for(let d=0;d<c.length;d++){let f=c[d];f.children.length>0&&h(f.children,f.x+o,f.y+s,f.w-2*o,f.h-s-o)}return c}function id(e,t,r,a,n){let i=e.treemap?.[t];return typeof i=="number"&&i>=a?Math.min(i,n):r}function z6(e,t,r){let a=r.fontSize??16,n=Math.round(a*.875),i=Math.round(a*.75),l=Math.round(a*.5625),s=r.measurer??rt(r.fontFamily),o=t.treemap??{},c=r.padding??id(t,"diagramPadding",8,0,2e3),h=Math.round(ei(r,id(t,"nodeWidth",64,1,400)*10,200,2*c)),d=Math.round(id(t,"nodeHeight",40,1,400)*10),f=o.showValues!==!1,g=O6(typeof o.valueFormat=="string"?o.valueFormat:","),p=P6(e.roots,h,d,{gap:id(t,"padding",4,0,200),header:s0,side:ad}),m=Be(e.title,!1,s,a,Pt(r),1),x=m.height>0?m.height+8:0,y=c+Math.max(0,(m.width-h)/2),$=c+x,k="",I="";for(let W of p){let q=W.node,C=Ct(q.cssCompiledStyles??[]),K=pt(W.series),Q=y+W.x,G=$+W.y,Y=Tt(q.name).trim(),N=f?g(W.value):"",S=`data-id="${Pe(q.name)}">`,M=`<rect x="${u(Q)}" y="${u(G)}" width="${u(W.w)}" height="${u(W.h)}" fill="${K}"`;if(q.children!==void 0){let A="";if(W.h>=s0){let D=W.w-2*ad-4,z=N?s.width(N,i,0):0,H=z>0&&D-z-12>=3*n,P=So(Y,H?D-z-12:D,n,n,s,1),O=G+s0/2+1;P&&(A+=`<text x="${u(Q+ad+2)}" y="${u(O+n*.35)}" font-weight="var(--_hw)"${C.text}>${Qe(P.text)}</text>`),H&&(A+=`<text class="pele-value" x="${u(Q+W.w-ad-2)}" y="${u(O+i*.35)}" font-size="${i}" text-anchor="end" fill="var(--_m)"${C.text}>${Qe(N)}</text>`)}let v=/[";]fill:/.test(C.shape)?"":' fill-opacity="0.12"';k+=`<g class="pele-node pele-section${Dt(q.classSelector??"")}" ${S}${M}${gt(`${v} stroke="${K}"${C.shape}`)}/>${A}</g>`;continue}let b="",E=W.w-8,w=Math.min(a,Math.floor((W.h-4)/nd)),T=w>=l?So(Y,E,w,l,s):void 0;if(T){let A=u(Q+W.w/2),v=G+W.h/2,D=Math.max(l,Math.round(T.size*.8)),z=(T.size+D)*nd;if(N&&z<=W.h-4&&s.width(N,D,0)<=E){let H=v-z/2+T.size*nd/2,P=v+z/2-D*nd/2;b=`<text x="${A}" y="${u(H+T.size*.35)}" font-size="${u(T.size)}"${C.text}>${Qe(T.text)}</text><text class="pele-value" x="${A}" y="${u(P+D*.35)}" font-size="${u(D)}"${C.text}>${Qe(N)}</text>`}else b=`<text x="${A}" y="${u(v+T.size*.35)}" font-size="${u(T.size)}"${C.text}>${Qe(T.text)}</text>`}I+=`<g class="pele-node pele-leaf${Dt(q.classSelector??"")}" ${S}${M}${gt(C.shape)}/>${b}</g>`}let _=Math.ceil(Math.max(h,m.width)+2*c),L=Math.ceil(d+x+2*c),R=Re(m,_/2,c+m.height/2,' class="pele-title" font-weight="var(--_tw)"')+(k?`<g class="pele-sections" font-size="${n}">${k}</g>`:"")+(I?`<g class="pele-leaves" text-anchor="middle" fill="var(--_bg)">${I}</g>`:"");return{svg:tt("treemap",_,L,a,r,e,R),width:_,height:L,links:[]}}var kw,L6,Mw,s0,ad,nd,Ew,Sw=Ge(()=>{xe();Qp();Gt();sa();yt();kt();kw=[kr,cr,hr,{name:"TREEMAP_KEYWORD",pattern:/treemap-beta|treemap/y},{name:"CLASS_DEF",pattern:/classDef\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\s+([^;\r\n]*))?(?:;)?/y},{name:"STYLE_SEPARATOR",pattern:/:::/y},{name:"SEPARATOR",pattern:/:/y},{name:"COMMA",pattern:/,/y},{name:"INDENTATION",pattern:/[ \t]{1,}/y},{name:"WS",pattern:/[ \t]+/y,hidden:!0},{name:"ML_COMMENT",pattern:/\%\%[^\n]*/y,hidden:!0},{name:"NL",pattern:/\r?\n/y,hidden:!0},{name:"ID2",pattern:/[a-zA-Z_][a-zA-Z0-9_]*/y},{name:"NUMBER2",pattern:/[0-9_\.\,]+/y},{name:"STRING2",pattern:/"[^"]*"|'[^']*'/y}],L6=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/;Mw=/^(?:.?[<>=^])?([-+( ])?(\$)?0?\d*(,)?(?:\.(\d+))?(~)?([a-zA-Z%])?$/;s0=28,ad=6,nd=1.25;Ew={type:"treemap",parse:(e,t,r)=>N6(R6(e),r),render:z6}});var Tw={};Rt(Tw,{treemap:()=>Ew});var Cw=Ge(()=>{xe();Sw()});function F6(e,t){return{type:"info",title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,""):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
223
|
+
`):void 0}}function B6(e){let t=new ir(er(e,_w,"info"),_w,"info"),r={$type:"Info"};for(;t.kind===5;)t.i++;for(t.expect(1);t.kind===5;)t.i++;if(t.accept(0))for(;t.kind===5;)t.i++;for(;t.kind!==-1;){let a=t.kind;if(a===2?r.accDescr=nr(t.take()):a===3?r.accTitle=ar(t.take()):a===4?r.title=rr(t.take()):t.fail("a title or the end of input"),t.kind===-1)break;for(t.kind!==5&&t.fail("a line break or the end of input");t.kind===5;)t.i++}return r}function Y6(e,t,r){let a=r.fontSize??16,n=r.measurer??rt(r.fontFamily),i=r.padding??8,l=Be(e.title,!1,n,a,4e3,1),s=l.height>0?l.height+8:0,o=Be(`Pele v${W6}`,!1,n,a,4e3),c=Math.ceil(Math.max(l.width,o.width)+2*i),h=Math.ceil(s+o.height+2*i),d=Re(l,c/2,i+l.height/2,' class="pele-title" font-weight="var(--_tw)"')+Re(o,c/2,i+s+o.height/2,' class="pele-version" fill="var(--_m)"');return{svg:tt("info",c,h,a,r,e,d),width:c,height:h,links:[]}}var _w,W6,Iw,Nw=Ge(()=>{xe();sa();yt();kt();_w=[gr("showInfo"),gr("info"),kr,cr,hr,qr,Gr,tr,ur,pr];W6="1.8.0";Iw={type:"info",parse:(e,t,r)=>F6(B6(e),r),render:Y6}});var Lw={};Rt(Lw,{info:()=>Iw});var Rw=Ge(()=>{xe();Nw()});function Uw(e){if(e.toLowerCase()==="none")return 4;let t=G6.exec(e);return t?t[1]===void 0?1:t[1]==="%"?2:3:0}function H6(e,t){let r=Uw(e);return r===1||r===2||t&&r===4}function U6(e){let t=e.startsWith("hsl"),r=e.indexOf("("),a=e.slice(0,r);if(a!=="rgb"&&a!=="rgba"&&a!=="hsl"&&a!=="hsla"||e.length>120||e.indexOf(")")!==e.length-1)return!1;let n=e.slice(r+1,-1).trim(),i,l,s=n.includes(",");if(s)i=n.split(",").map(c=>c.trim()),i.length===4&&(l=i.pop());else{let c=n.split("/");if(c.length>2)return!1;i=c[0].trim().split(/\s+/),c.length===2&&(l=c[1].trim())}if(i.length!==3||l!==void 0&&!H6(l,!s))return!1;let o=i.map(Uw);if(s)return t?(o[0]===1||o[0]===3)&&o[1]===2&&o[2]===2:(o[0]===1||o[0]===2)&&o[1]===o[0]&&o[2]===o[0];for(let c=0;c<3;c++){let h=o[c];if(!(h===1||h===4||(t&&c===0?h===3:h===2)))return!1}return!0}function j6(e){return e.includes("(")?U6(e):(Ow??(Ow=new Set(q6.split(" "))),Ow.has(e.toLowerCase()))}function Co(e){throw new Ke(e,"semantic",{type:"sequence"})}function Pw(e){let t=e.trim(),r=X6.test(t)?!0:V6.test(t)?!1:void 0;return{text:(r===void 0?t:t.replace(K6,"")).trim(),wrap:r}}function J6(e){let t=Z6.exec(e);if(t){let a=e.lastIndexOf(")");if(a>=t[0].length)return Dw.test(e.slice(t[0].length))?void 0:[e.slice(0,a+1),e.slice(a+1)]}if(Dw.test(e))return;let r=Q6.exec(e)[0];return[r,e.slice(r.length)]}function zw(e){return typeof e=="string"?[...e].map((t,r)=>[String(r),t]):e!==null&&typeof e=="object"?Object.entries(e):[]}function tN(e){let t=e.length,r=[],a=[],n=[],i=[],l=0,s=0,o=-1,c=(b,E,w)=>{r.push(b),a.push(e.slice(E,w)),n.push(E),s=w},h=(b,E,w,T)=>{r.push(b),a.push(T),n.push(E),s=w},d=b=>{i.push(l),l=b},f=()=>{i.length>0&&(l=i.pop())},g=b=>(o<b&&(o=e.indexOf(`
|
|
224
|
+
`,b),o===-1&&(o=t)),o),p=(b,E)=>{let w=e.charCodeAt(b);return w<128?(jw[w]&E)!==0:E===4||E===32?!je(w):!0},m=(b,E)=>{for(let w=0;w<E.length;w++){let T=E.charCodeAt(w),A=e.charCodeAt(b+w);if(T>=97&&T<=122?(A|32)!==T:A!==T)return!1}return!0},x=b=>m(s,b)&&!et(e.charCodeAt(s+b.length)),y=b=>{for(;b<t&&je(e.charCodeAt(b));)b++;return b},$=()=>{let b=s;for(;b<t;){let E=e.charCodeAt(b);if(E===10||!je(E))break;b++}return b===s?!1:(s=b,!0)},k=b=>{for(;b<t&&p(b,16);)b++;return b},I=(b,E,w)=>{c(b,s,s+E),d(w)},_=(b,E,w=-1)=>x(b)?(c(E,s,s+b.length),w>=0&&d(w),!0):!1,L=(b,E)=>{if(!m(s,b))return!1;let w=s+b.length,T=e.charCodeAt(w);if(T!==32&&T!==9)return!1;for(;T===32||T===9;)T=e.charCodeAt(++w);return w>=t||!p(w,32)?!1:(c(E,s,s+b.length),!0)},R=b=>{let E=e.charCodeAt(b),w=e.charCodeAt(b+1);if(E===45){if(w===120||w===88||w===41||w===92||w===47||w===45)return!0;let T=e.charCodeAt(b+2);return w===124&&(T===92||T===47)}return E===47||E===92?(w===124||w===E)&&e.charCodeAt(b+2)===45:E===40&&w===41},W=()=>{let b=s+1;for(;b<t&&p(b,1);)b++;for(;b<t&&!R(b);){let E=b;for(;e.charCodeAt(E)===45;)E++;if(E>=t||!p(E,2))break;for(E++;E<t&&p(E,2);)E++;b=E}h(48,s,b,e.slice(s,b).trim())},q=()=>{let b=s;for(;mt(e.charCodeAt(b));)b++;let E=b>s;if(e.charCodeAt(b)===46&&mt(e.charCodeAt(b+1))){let T=mt(e.charCodeAt(b+2))?b+3:b+2,A=e.charCodeAt(T);if(A===32||A===10)return c(10,s,T),!0}let w=e.charCodeAt(b);return E&&(w===32||w===10)?(c(10,s,b),!0):!1},C=()=>{let b=e.charCodeAt(s+1),E=e.charCodeAt(s+2);if(b===62)c(E===62?55:53,s,s+(E===62?3:2));else if(b===120||b===88)c(59,s,s+2);else if(b===41)c(61,s,s+2);else if(b===124&&E===92)c(63,s,s+3);else if(b===124&&E===47)c(64,s,s+3);else if(b===92&&E===92)c(65,s,s+3);else if(b===47&&E===47)c(66,s,s+3);else if(b===45){let w=e.charCodeAt(s+3);E===62?c(w===62?57:54,s,s+(w===62?4:3)):E===120||E===88?c(60,s,s+3):E===41?c(62,s,s+3):E===124&&w===92?c(67,s,s+4):E===124&&w===47?c(68,s,s+4):E===92&&w===92?c(69,s,s+4):E===47&&w===47?c(70,s,s+4):c(46,s,s+1)}else c(46,s,s+1)},K=b=>{let E=e.charCodeAt(s+1);if(E!==124&&E!==b||e.charCodeAt(s+2)!==45)return!1;let w=e.charCodeAt(s+3)===45,T=b===47,A;return E===124?w?A=T?75:76:A=T?71:72:w?A=T?77:78:A=T?73:74,c(A,s,s+(w?4:3)),!0},Q=()=>{if(!m(s,"title"))return!1;let b=s+5,E=e.charCodeAt(b)===58;return E&&b++,!je(e.charCodeAt(b))||b+1>=t||!p(b+1,16)?!1:(c(E?15:14,s,k(b+1)),!0)},G=()=>{let b=m(s,"accdescr");if(!b&&!m(s,"acctitle"))return!1;let E=y(s+8),w=e.charCodeAt(E);return w===58?(c(b?18:16,s,y(E+1)),d(b?6:5),!0):b&&w===123?(s=y(E+1),d(7),!0):!1},Y=b=>{switch(b|32){case 97:return _("actor",34,1)||_("alt",24,3)||_("and",30,3)||_("activate",12,1)||G()||_("autonumber",9);case 98:return _("box",6,3)||_("break",28,3);case 99:return _("create",5)||_("critical",27,3);case 100:return _("destroy",35,1)||L("details",41)||_("deactivate",13,1);case 101:return _("else",31,3)||_("end",8);case 108:return _("loop",21,3)||_("left of",43)||L("links",38)||L("link",39);case 110:return _("note",36);case 111:return _("opt",23,3)||_("option",29,3)||_("over",37)||_("off",11);case 112:return _("participant",32,1)||_("par",25,3)||_("par_over",26,3)||L("properties",40);case 114:return _("rect",22,3)||_("right of",44);case 115:return _("sequencediagram",4);case 116:return Q();default:return!1}},N=()=>{let b=e.charCodeAt(s);if(b===10){let E=s+1;for(;e.charCodeAt(E)===10;)E++;c(3,s,E);return}if(je(b)){s=y(s+1);return}if(b===35||b===37&&e.charCodeAt(s+1)!==123){s=g(s);return}if(b!==125&&e.charCodeAt(s+1)===37&&e.charCodeAt(s+2)===37){s=g(s);return}if(!((mt(b)||b===46)&&q())&&!(b<128&&(b|32)>=97&&(b|32)<=122&&Y(b)))if(b===44)c(42,s,s+1);else if(b===59)c(3,s,s+1);else if(p(s,1))W();else if(b===45)C();else if(b===60&&e.startsWith("<<->>",s))c(56,s,s+5);else if(b===60&&e.startsWith("<<-->>",s))c(58,s,s+6);else{if((b===47||b===92)&&K(b))return;b===58?c(52,s,k(s+1)):b===43?c(45,s,s+1):b===40&&e.charCodeAt(s+1)===41?c(47,s,s+2):c(2,s,s+1)}},S=()=>{if($())return!0;let b=e.charCodeAt(s);if(b===35)return s=g(s),!0;if(b===64&&e.charCodeAt(s+1)===123)return I(49,2,4),!0;let E=s;for(;E<t&&p(E,4);)E++;if(E>s){let T=y(E);if(e.charCodeAt(T)===64&&e.charCodeAt(T+1)===123)return c(48,s,E),!0;if(T>E&&m(T,"as")&&je(e.charCodeAt(T+2)))return c(48,s,E),d(2),!0}let w=E;for(;w<t&&p(w,8);)w++;if(w>s){let T=e.charCodeAt(w),A=w;if(w<t&&T!==10&&T!==59)for(A--;A>s&&e.charCodeAt(A)!==35;)A--;if(A>s)return h(48,s,A,e.slice(s,A).trim()),f(),!0}if(e.charCodeAt(w)===60)return c(2,s,g(s)),f(),!0;if(b!==10){let T=g(s);return h(2,s,T,e.slice(s,T).trim()),f(),!0}return!1},M=()=>{switch(l){case 0:return N(),!0;case 1:return S();case 2:return $()?!0:e.charCodeAt(s)===35?(s=g(s),!0):(f(),f(),x("as")?I(33,2,3):c(3,s,s),!0);case 3:return $()?!0:e.charCodeAt(s)===35?(s=g(s),!0):(c(7,s,k(s)),f(),!0);case 4:if(e.charCodeAt(s)!==125){let b=e.indexOf("}",s);return b===-1&&(b=t),c(50,s,b),!0}else{let b=y(s+1),E=b>s+1&&m(b,"as")&&je(e.charCodeAt(b+2));return c(51,s,s+1),f(),E?d(2):f(),!0}case 5:case 6:return c(l===5?17:19,s,g(s)),f(),!0;default:if(e.charCodeAt(s)===125)s++,f();else{let b=e.indexOf("}",s);b===-1&&(b=t),c(20,s,b)}return!0}};for(;s<t;)if(!M())return r.push(1),a.push(""),n.push(s),{types:r,texts:a,starts:n};return l===0||l===2?c(3,t,t):l===3?c(7,t,t):l===5?c(17,t,t):l===6?c(19,t,t):l===7&&c(20,t,t),r.push(0),a.push(""),n.push(t),{types:r,texts:a,starts:n}}function aN(e,t){let{types:r,texts:a,starts:n}=tN(e),i=0,l=k=>{let I=r[i];throw I===1?st("sequence",e,n[i],"",!0):st("sequence",e,n[i],`Expecting ${k}, got '${Fw[I]}'`)},s=k=>(r[i]!==k&&l(`'${Fw[k]}'`),a[i++]),o=()=>{let k=r[i];return k!==48&&k!==39&&l("'ACTOR'"),{type:"addParticipant",actor:a[i++]}},c=()=>t.parseMessage(s(52).trim().substring(1)),h=()=>{let k=r[i++];if(k===35){let _=o();return s(3),_.type="destroyParticipant",_}let I=o();if(r[i]===49&&r[i-1]===48){i++;let _=s(50);s(51),I.config=_.trim()}if(I.draw=k===32?"participant":"actor",r[i]===33){i++;let _=s(7);s(3),I.description=t.parseMessage(_)}else r[i]===3?i++:l("'AS', 'NEWLINE'");return I},d=k=>{let I=!1;r[i]===47&&(I=!0,i++);let _=Vt[r[i]];_<0&&l(rN),i++;let L=r[i];(L===47||!I&&(L===45||L===46))&&i++;let R=o(),W=c(),q={type:"addMessage",from:k.actor,to:R.actor,signalType:_,msg:W},C=[k,R,q];if(I){let K=L===47;q.activate=K,q.centralConnection=K?61:60,K&&C.push({type:"centralConnection",signalType:59,actor:R.actor}),C.push({type:"centralConnectionReverse",signalType:60,actor:k.actor})}else L===45?(q.activate=!0,C.push({type:"activeStart",signalType:17,actor:R.actor})):L===46?C.push({type:"activeEnd",signalType:18,actor:k.actor}):L===47&&(q.activate=!0,q.centralConnection=59,C.push({type:"centralConnection",signalType:59,actor:R.actor}));return C},f=k=>{i++;let I=o();return[I,{type:k,actor:I.actor,text:c()}]},g=()=>{i++;let k=r[i];if(k===37){i++;let L=o(),R=L,W=[L.actor,L.actor];if(r[i]===42){i++;let q=o();R=[L,q],W=[L.actor,q.actor]}return[R,{type:"addNote",placement:2,actor:W,text:c()}]}k!==43&&k!==44&&l("'over', 'left_of', 'right_of'"),i++;let I=o();return[I,{type:"addNote",placement:k===43?0:1,actor:I.actor,text:c()}]},p=()=>{i++;let k={type:"sequenceIndex",sequenceVisible:!0,signalType:26};return r[i]===10?(k.sequenceIndex=Number(a[i++]),k.sequenceIndexStep=r[i]===10?Number(a[i++]):1):r[i]===11&&(i++,k.sequenceVisible=!1),r[i]!==3&&l("'NEWLINE', 'NUM', 'off'"),i++,k},m=(k,I,_,L)=>{let R=k.list,W=k.sections;if(W)for(let q=W.length-2;q>=0;q-=2){let C={type:I,signalType:L};C[_]=t.parseMessage(W[q+1]),R=W[q].concat([C,R])}return R},x=k=>{let I=k.text,_=k.list;switch(k.kind){case 1:_[0]={type:"boxStart",boxData:t.parseBoxData(I)},_.push({type:"boxEnd",boxText:I});break;case 2:_[0]={type:"loopStart",loopText:t.parseMessage(I),signalType:10},_.push({type:"loopEnd",loopText:I,signalType:11});break;case 3:_[0]={type:"rectStart",color:t.parseMessage(I),signalType:22},_.push({type:"rectEnd",color:t.parseMessage(I),signalType:23});break;case 4:_[0]={type:"optStart",optText:t.parseMessage(I),signalType:15},_.push({type:"optEnd",optText:t.parseMessage(I),signalType:16});break;case 5:_[0]={type:"breakStart",breakText:t.parseMessage(I),signalType:30},_.push({type:"breakEnd",optText:t.parseMessage(I),signalType:31});break;case 6:_=m(k,"else","altText",13),_[0]={type:"altStart",altText:t.parseMessage(I),signalType:12},_.push({type:"altEnd",signalType:14});break;case 7:_=m(k,"and","parText",20),_[0]={type:"parStart",parText:t.parseMessage(I),signalType:k.startType},_.push({type:"parEnd",signalType:21});break;default:_=m(k,"option","optionText",28),_[0]={type:"criticalStart",criticalText:t.parseMessage(I),signalType:27},_.push({type:"criticalEnd",signalType:29})}return _};for(;r[i]===3;)i++;s(4);let y=[],$={kind:0,text:"",startType:0,list:[],sections:void 0};for(;;){let k=r[i],I=$.list;if($.kind===1){if(k===32||k===34||k===35)I.push(h());else if(k===3)I.push([]),i++;else if(k===8){i++;let _=x($);$=y.pop(),$.list.push(_)}else l("'end', 'NEWLINE', 'participant', 'participant_actor', 'destroy'");continue}switch(k){case 3:case 2:I.push([]),i++;break;case 32:case 34:case 35:I.push(h());break;case 5:{i++;let _=r[i];_!==32&&_!==34&&_!==35&&l("'participant', 'participant_actor', 'destroy'");let L=h();L.type="createParticipant",I.push(L);break}case 48:I.push(d(o())),s(3);break;case 39:{let _=r[i+1];I.push(_===48||_===39?f("addALink"):d(o())),s(3);break}case 38:I.push(f("addLinks")),s(3);break;case 40:I.push(f("addProperties")),s(3);break;case 41:I.push(f("addDetails")),s(3);break;case 36:I.push(g()),s(3);break;case 9:I.push(p());break;case 12:case 13:{i++;let _=o();s(3),I.push(k===12?{type:"activeStart",signalType:17,actor:_.actor}:{type:"activeEnd",signalType:18,actor:_.actor});break}case 14:case 15:{let _=a[i++].substring(k===14?6:7);t.setDiagramTitle(_),I.push(_);break}case 16:{i++;let _=s(17).trim();t.setAccTitle(_),I.push(_);break}case 18:{i++;let _=s(19).trim();t.setAccDescription(_),I.push(_);break}case 20:{let _=a[i++].trim();t.setAccDescription(_),I.push(_);break}case 21:case 22:case 23:case 28:case 24:case 25:case 26:case 27:case 6:{i++;let _=s(7);y.push($),$={kind:gn[k],text:_,startType:k===26?32:19,list:[[]],sections:void 0};break}case 31:case 30:case 29:{$.kind!==(k===31?6:k===30?7:8)&&l("'end'"),i++;let _=s(7);($.sections??($.sections=[])).push(I,_),$.list=[];break}case 8:{$.kind===0&&l("'NEWLINE', 'EOF'"),i++;let _=x($);$=y.pop(),$.list.push(_);break}case 0:$.kind!==0&&l("'end'"),t.apply(I);return;default:l("'NEWLINE', 'ACTOR', 'participant', 'note', 'end'")}}}function oN(e){return sN.has(e)?e:"participant"}function c0(e){return lN.has(e)}function cN(e,t,r,a,n=nN){if(c0(e))return{w:Math.max(40,t.width+8),h:Xw+(t.height>0?Vw+t.height:0)};let i=e==="collections"?Zi:e==="queue"?2*Ki:0;return{w:Math.max(r,t.width+2*n)+i,h:Math.max(a,t.height+2*iN)+(e==="collections"?Zi:0)}}function hN(e,t,r){let a=u(t),n=i=>u(r+i);switch(e){case"actor":return`<circle cx="${a}" cy="${n(7)}" r="6"${Bn}/><path d="M${a},${n(13)}V${n(24)}M${u(t-10)},${n(17)}H${u(t+10)}M${u(t-8)},${n(34)}L${a},${n(24)}L${u(t+8)},${n(34)}"${Js}/>`;case"boundary":return`<path d="M${u(t-19)},${n(6)}V${n(28)}M${u(t-19)},${n(17)}H${u(t-8)}"${Js}/><circle cx="${u(t+3)}" cy="${n(17)}" r="11"${Bn}/>`;case"control":return`<circle cx="${a}" cy="${n(21)}" r="11"${Bn}/><path d="M${u(t+5)},${n(5)}L${u(t-1)},${n(10)}L${u(t+5)},${n(15)}"${Js}/>`;case"entity":return`<circle cx="${a}" cy="${n(15)}" r="11"${Bn}/><path d="M${u(t-11)},${n(30)}H${u(t+11)}"${Js}/>`;default:{let i=u(t-14),l=u(t+14);return`<path d="M${i},${n(7)}V${n(27)}A14,5 0 0 0 ${l},${n(27)}V${n(7)}A14,5 0 0 0 ${i},${n(7)}Z"${Bn}/><path d="M${i},${n(7)}A14,5 0 0 0 ${l},${n(7)}"${Js}/>`}}}function dN(e,t,r,a,n,i){let{w:l,h:s}=a,o=' class="pele-label"';if(c0(e))return hN(e,t,r)+Re(n,t,r+Xw+Vw+n.height/2,o,i);let c=t-l/2;if(e==="collections"){let h=l-Zi,d=s-Zi,f=`<rect x="${u(c+Zi)}" y="${u(r)}" width="${u(h)}" height="${u(d)}"${Bn}${ot}/>`,g=`<rect x="${u(c)}" y="${u(r+Zi)}" width="${u(h)}" height="${u(d)}"${Bn}${ot}/>`;return f+g+Re(n,c+h/2,r+Zi+d/2,o,i)}if(e==="queue"){let h=u(c+Ki),d=u(c+l-Ki),f=u(r+s),g=u(s/2);return`<path d="M${h},${u(r)}H${d}A${Ki},${g} 0 0 1 ${d},${f}H${h}A${Ki},${g} 0 0 1 ${h},${u(r)}Z"${Bn}/><path d="M${d},${u(r)}A${Ki},${g} 0 0 0 ${d},${f}"${Js}/>`+Re(n,t-Ki/2,r+s/2,o,i)}return`<rect x="${u(c)}" y="${u(r)}" width="${u(l)}" height="${u(s)}"${Bn}${ot}/>`+Re(n,t,r+s/2,o,i)}function Lr(e,t,r,a=1,n=!1){h0[e]={dotted:t,head:r,atStart:a!==1,atEnd:a!==0,bottom:n}}function o0(e){return e!==void 0&&h0[e]!==void 0}function xN(e,t){let r=new Array(e.length),a=new Array(e.length),n=1,i=1,l=!1;for(let s=0;s<e.length;s++){let o=e[s];if(r[s]=NaN,a[s]=!1,o.type===26){let c=o.message;n=c.start||n,i=c.step||i,l=c.visible}else o0(o.type)&&(r[s]=n,a[s]=l||t,n=Math.round((n+i)*100)/100)}return{index:r,shown:a,visible:l}}function Vi(e,t,r){let a=e[t];return typeof a=="number"&&a>=0&&a<=2e3?a:r}function Hw(e,t,r,a,n){let i=u(e-r*Xt);return n?`<path class="pele-marker" d="M${u(e)},${u(t)}L${i},${u(t+a*5)}"/>`:`<path class="pele-marker" d="M${u(e)},${u(t)}L${i},${u(t+a*4.5)}V${u(t)}Z" fill="var(--_l)" stroke="none"/>`}function od(e,t,r,a,n){switch(e){case 1:return Mt("arrow_point",t,r,a,0,"var(--_l)");case 2:return Mt("arrow_cross",t,r,a,0,"var(--_l)");case 3:return`<path class="pele-marker" d="M${u(t-a*Xt)},${u(r-4.5)}L${u(t)},${u(r)}L${u(t-a*Xt)},${u(r+4.5)}" stroke-linejoin="round"/>`;case 4:return Hw(t,r,a,n,!1);case 5:return Hw(t,r,a,n,!0);default:return""}}function bN(e){return e===1?Xt-1:e===2?4:0}function wN(e,t,r){return Yr(r,a=>$N(e,t,r,a))}function $N(e,t,r,a){let n=t.sequence??{},i=r.fontSize??16,l=Math.round(i*.875),s=Math.round(i*.75),o=r.measurer??rt(r.fontFamily),c=r.icons,h=r.padding??8,d=n.mirrorActors!==!1,f=n.rightAngles===!0,g=Math.min(Vi(n,"actorMargin",40),a?8:1/0),p=Math.min(Vi(n,"width",64),a?48:1/0),m=Vi(n,"height",Math.round(i*1.5)+20),x=Math.min(Vi(n,"width",160),a?Math.max(32,((r.maxWidth??320)-2*h)/Math.max(1,e.actors.size)-g-24):1/0),y=Math.max(4,14+Vi(n,"messageMargin",35)-35),$=Math.min(Vi(n,"noteMargin",10),a?6:1/0),k=Math.min(Vi(n,"boxMargin",10),a?6:1/0),I=n.messageAlign==="left"?-1:n.messageAlign==="right"?1:0,_=a?6:uN,L=a?8:gN,R=a?12:mN,W=a?6:yN,q=e.messages,C=q.length,K=xN(q,n.showSequenceNumbers===!0),Q=(V,me,ne,ke=x,Ee=0)=>{let Ce=Be(V,!1,o,me,a||ne?ke:1/0,Ee);return a?Hi(Ce,o,Math.max(120,ke)):Ce},G;if(n.hideUnusedParticipants===!0){G=new Set;for(let V of q)G.add(V.from).add(V.to)}let Y=new Int32Array(C+1);Y[C]=-1;for(let V=C-1;V>=0;V--)Y[V]=o0(q[V].type)?V:Y[V+1];let N=[],S=new Map;for(let[V,me]of e.actors){if(G&&!G.has(V))continue;let ne=oN(me.type),ke=Q(me.description,i,me.wrap),Ee=e.createdActors.get(V),Ce=e.destroyedActors.get(V),De=Ee===void 0?-1:Y[Math.min(Ee,C)];De>=0&&q[De].to!==V&&(De=-1);let Ie=Ce===void 0?-1:Y[Math.min(Ce,C)];Ie>=0&&q[Ie].to!==V&&q[Ie].from!==V&&(Ie=-1),S.set(V,N.length),N.push({id:V,actor:me,kind:ne,label:ke,size:cN(ne,ke,p,m,a?8:void 0),x:0,createAt:De,destroyAt:Ie,top:0,lifeStart:0,lifeEnd:-1,activations:[]})}let M=N.length-1,b=new Map,E=(V,me,ne)=>{if(V<0||me>M)return;let ke=V*N.length+me;(b.get(ke)??0)<ne&&b.set(ke,ne)},w=V=>K.shown[V]?Math.max(ld,o.width(String(K.index[V]),s,0)+8):0,T=new Array(C);for(let V=0;V<C;V++){let me=q[V],ne=me.from===void 0?void 0:S.get(me.from),ke=me.to===void 0?void 0:S.get(me.to);if(!(ne===void 0||ke===void 0||typeof me.message!="string")){if(me.type===2){let Ee=Q(me.message,l,me.wrap),Ce=Ee.width+2*$;me.placement===0?E(ne-1,ne,Ce+2*Zs+Za):me.placement===1?E(ne,ne+1,Ce+2*Zs+Za):ne===ke?(E(ne-1,ne,Ce/2+Zs),E(ne,ne+1,Ce/2+Zs)):E(Math.min(ne,ke),Math.max(ne,ke),Ce-2*L),T[V]={kind:2,a:ne,b:ke,label:Ee,x:0,w:Ce}}else if(o0(me.type)){let Ee=Q(me.message,l,me.wrap),Ce=w(V);if(ne===ke)E(ne,ne+1,l0+8+Ee.width+16+Za+Ce),T[V]={kind:1,a:ne,b:ke,label:Ee,x:0,w:0};else{let De=N[ke].createAt===V?N[ke].size.w/2:0,Ie=me.centralConnection?4*Qs:0;E(Math.min(ne,ke),Math.max(ne,ke),(a?Math.min(Ee.width,Math.max(16,x-16)):Ee.width)+2*_+Za+Ce+De+Ie),T[V]={kind:0,a:ne,b:ke,label:Ee,x:0,w:0}}}}}let A=[];for(let V=0;V<=M;V++){let me=N[V].actor.box,ne=A[A.length-1];me&&ne&&ne.box===me&&ne.last===V-1?ne.last=V:me&&A.push({box:me,first:V,last:V,title:Q(me.name,l,me.wrap),grow:0})}let v=new Array(Math.max(M,0));for(let V=0;V<M;V++){let me=N[V],ne=N[V+1],ke=me.actor.box!==ne.actor.box?(me.actor.box?k:0)+(ne.actor.box?k:0):0;v[V]=Math.max(me.size.w/2+ne.size.w/2+g+ke,b.get(V*N.length+V+1)??0)}let D=[];for(let[V,me]of b){let ne=Math.floor(V/N.length),ke=V%N.length;ke-ne>1&&D.push([ne,ke,me])}D.sort((V,me)=>V[1]-V[0]-(me[1]-me[0])||V[0]-me[0]);for(let[V,me,ne]of D){let ke=0;for(let Ce=V;Ce<me;Ce++)ke+=v[Ce];if(ke>=ne)continue;let Ee=(ne-ke)/(me-V);for(let Ce=V;Ce<me;Ce++)v[Ce]+=Ee}let z=()=>{for(let V=1;V<=M;V++)N[V].x=N[V-1].x+v[V-1]};z();for(let V of A){let me=N[V.last].x+N[V.last].size.w/2-(N[V.first].x-N[V.first].size.w/2);V.grow=Math.max(0,(V.title.width-me)/2),V.grow!==0&&(V.first>0&&(v[V.first-1]+=V.grow),V.last<M&&(v[V.last]+=V.grow))}z();let H=1/0,P=-1/0,O=(V,me)=>{V<H&&(H=V),me>P&&(P=me)};for(let V of N)O(V.x-V.size.w/2,V.x+V.size.w/2);for(let V of A)O(N[V.first].x-N[V.first].size.w/2-k-V.grow,N[V.last].x+N[V.last].size.w/2+k+V.grow);let F=new Array(C),U=[],j=()=>M<0?[0,120]:[N[0].x-R,N[M].x+R];for(let V=0;V<C;V++){let me=q[V],ne=me.type,ke=ne===void 0?void 0:fN.get(ne),Ee=T[V];if(ke!==void 0){let Ce={kind:ke,x0:1/0,x1:-1/0,top:0,title:Gw,tabW:0,fill:ke==="rect"&&typeof me.message=="string"?me.message:"",dividers:[V],dividerY:[],dividerLabels:[]};F[V]=Ce,U.push(Ce)}else if(ne===13||ne===20||ne===28)U[U.length-1]?.dividers.push(V);else if(ne===11||ne===14||ne===16||ne===21||ne===29||ne===31||ne===23){let Ce=U.pop();if(!Ce)continue;if(F[V]=Ce,Ce.x0>Ce.x1&&([Ce.x0,Ce.x1]=j()),Ce.kind!=="rect"){Ce.tabW=o.width(Ce.kind,s,1)+14;for(let Ie=0;Ie<Ce.dividers.length;Ie++){let He=q[Ce.dividers[Ie]].message,Se=Ie===0?Ce.tabW+8:0,Xe=Ce.x1-Ce.x0-16-Se,Ve=He?Q(`[${He}]`,l,!0,Math.max(Xe,a?Math.min(Yw,x):Yw)):Gw;Ve.width>Xe&&(Ce.x1+=Ve.width-Xe),Ie===0?Ce.title=Ve:Ce.dividerLabels.push(Ve)}}O(Ce.x0,Ce.x1);let De=U[U.length-1];De&&(De.x0=Math.min(De.x0,Ce.x0-W),De.x1=Math.max(De.x1,Ce.x1+W))}else if(Ee){let Ce=N[Ee.a],De=N[Ee.b],Ie,He;if(Ee.kind===2){if(me.placement===0)Ee.x=Ce.x-Zs-Ee.w;else if(me.placement===1)Ee.x=Ce.x+Zs;else if(Ee.a===Ee.b)Ee.x=Ce.x-Ee.w/2;else{let Xe=Math.min(Ce.x,De.x)-L,Ve=Math.max(Ce.x,De.x)+L;(a||me.wrap)&&(Ee.label=Q(me.message,l,!0,Math.max(x,Ve-Xe-2*$))),Ee.w=Math.max(Ve-Xe,Ee.label.width+2*$),Ee.x=(Xe+Ve-Ee.w)/2}Ie=Ee.x,He=Ee.x+Ee.w}else Ee.kind===1?(Ie=Ce.x,He=Ce.x+Za+l0+8+Ee.label.width+w(V)):(Ie=Math.min(Ce.x,De.x),He=Math.max(Ce.x,De.x),(a||me.wrap)&&(Ee.label=Q(me.message,l,!0,Math.max(x,He-Ie-2*_-Za))),De.createAt===V&&(De.x>Ce.x?He+=De.size.w/2:Ie-=De.size.w/2));O(Ie,He);let Se=U[U.length-1];Se&&(Se.x0=Math.min(Se.x0,Ie-R),Se.x1=Math.max(Se.x1,He+R))}}let J=0;for(let V of A)J=Math.max(J,V.title.height);let Z=A.length>0?k+(J>0?J+4:0):0,B=0;for(let V of N)V.createAt<0&&(B=Math.max(B,V.size.h));let X=Z+B;for(let V of N)V.top=X-V.size.h,V.lifeStart=X;let te=N.map(V=>V.x),se=(V,me)=>{let ne=0,ke=te.length;for(;ne<ke;){let Ee=ne+ke>>1;te[Ee]<=V?ne=Ee+1:ke=Ee}return ne<te.length&&te[ne]<me},ce=(V,me,ne,ke)=>{if(V.width===0)return"";let Ee=me-V.width/2;return(se(Ee,Ee+V.width)?`<rect x="${u(Ee-3)}" y="${u(ne-V.height/2+2)}" width="${u(V.width+6)}" height="${u(V.height-4)}" rx="3" fill="var(--_bg)" stroke="none"/>`:"")+Re(V,me,ne,ke,c)},ae=(V,me=0)=>V.activations.length+me>0?V.x-Za/2:V.x,ie=(V,me=0)=>{let ne=V.activations.length+me;return ne>0?V.x+Za/2+(ne-1)*Ww:V.x},ee=[],re=[],fe="",ye="",oe="",we="",ue="",ge="",Ae=(V,me)=>{let ne=V.activations.pop(),ke=Math.max(me,ne+pN),Ee=V.x-Za/2+V.activations.length*Ww;return O(Ee,Ee+Za),re.push(`<rect class="pele-activation" data-id="${Pe(V.id)}" x="${u(Ee)}" y="${u(ne)}" width="${Za}" height="${u(ke-ne)}" rx="2"/>`),ke},Te=(V,me)=>{let ne=V.x,ke=me+16;return V.lifeEnd=ke,ge+=`<path class="pele-destroy" data-id="${Pe(V.id)}" d="M${u(ne-6)},${u(ke-6)}L${u(ne+6)},${u(ke+6)}M${u(ne+6)},${u(ke-6)}L${u(ne-6)},${u(ke+6)}"/>`,ke+6},he=(V,me,ne)=>{let ke=V.actor.properties.get("class");return`<g class="pele-node pele-actor pele-actor-${V.kind}${ne?" pele-actor-footer":""}${typeof ke=="string"?Dt(ke):""}" data-id="${Pe(V.id)}">`+dN(V.kind,V.x,me,V.size,V.label,c)+"</g>"},pe=(V,me,ne,ke)=>`<g class="pele-sequence-number"><rect x="${u(me-ke/2)}" y="${u(ne-ld/2)}" width="${u(ke)}" height="${ld}" rx="${ld/2}" fill="var(--_l)" stroke="none"/><text x="${u(me)}" y="${u(ne+s*.35)}" text-anchor="middle" font-size="${s}" fill="var(--_bg)" stroke="none">${Qe(String(K.index[V]))}</text></g>`,be=X+6,Ne=[];for(let V=0;V<C;V++){let me=q[V],ne=me.type,ke=T[V],Ee=F[V];if(ne===17){let Ce=me.from===void 0?void 0:S.get(me.from);Ce!==void 0&&N[Ce].activations.push(be)}else if(ne===18){let Ce=me.from===void 0?void 0:S.get(me.from);Ce!==void 0&&N[Ce].activations.length>0&&(be=Math.max(be,Ae(N[Ce],be)))}else if(Ee&&Ee.dividers[0]===V)Ne.push(Ee),Ee.kind==="rect"?(Ee.top=be+8,be=Ee.top):(Ee.top=be+12,be=Ee.top+Math.max(sd,Ee.title.height+2));else if(Ee){Ne.pop();let Ce=be+12,De=u(Ee.x0),Ie=u(Ee.x1-Ee.x0);if(Ee.kind==="rect"){let He=Ee.fill?Ct([`fill:${Ee.fill}`]).shape:"";ee.push(`<rect class="pele-rect" x="${De}" y="${u(Ee.top)}" width="${Ie}" height="${u(Ce-Ee.top)}"${gt((He?"":' fill-opacity="0.5"')+He)}/>`)}else{let He=`<rect x="${De}" y="${u(Ee.top)}" width="${Ie}" height="${u(Ce-Ee.top)}" fill="none"${ot}/>`;for(let Se=0;Se<Ee.dividerY.length;Se++){let Xe=Ee.dividerY[Se],Ve=Ee.dividerLabels[Se];He+=`<path d="M${De},${u(Xe)}H${u(Ee.x1)}"${qw}/>`+ce(Ve,Ee.x0+8+Ve.width/2,Xe+2+Ve.height/2,' class="pele-frame-label" fill="var(--_m)" stroke="none"')}He+=`<rect x="${De}" y="${u(Ee.top)}" width="${u(Ee.tabW)}" height="${sd}" fill="var(--_s)"${ot}/><text class="pele-frame-kind" x="${u(Ee.x0+Ee.tabW/2)}" y="${u(Ee.top+sd/2+s*.35)}" text-anchor="middle" font-size="${s}" font-weight="var(--_hw)" fill="var(--_m)" stroke="none">${Ee.kind}</text>`+ce(Ee.title,Ee.x0+Ee.tabW+8+Ee.title.width/2,Ee.top+Math.max(sd,Ee.title.height)/2,' class="pele-frame-label" fill="var(--_m)" stroke="none"'),fe+=`<g class="pele-frame pele-frame-${Ee.kind}">${He}</g>`}be=Ce}else if(ne===13||ne===20||ne===28){let Ce=Ne[Ne.length-1];if(Ce){let De=Ce.dividerLabels[Ce.dividerY.length];Ce.dividerY.push(be+12),be+=12+(De.height>0?De.height:0)}}else if(ke&&ke.kind===2){let Ce=N[ke.a],De=ke.label.height+2*Math.max(4,$-4),Ie=be+10,He=ke.x;me.placement===1?He+=ie(Ce)-Ce.x:me.placement===0&&(He+=ae(Ce)-Ce.x),O(He,He+ke.w),we+=`<g class="pele-note" data-id="i${Pe(me.id)}"><rect x="${u(He)}" y="${u(Ie)}" width="${u(ke.w)}" height="${u(De)}"${ot}/>`+Re(ke.label,He+ke.w/2,Ie+De/2,' class="pele-label" stroke="none" fill="var(--_fg)"',c)+"</g>",be=Ie+De}else if(ke){let Ce=h0[ne],De=N[ke.a],Ie=N[ke.b],He=ke.label,Se=w(V),Xe=0;for(let Ue=V+1;Ue<C;Ue++){let ut=q[Ue].type;if(ut===17)q[Ue].from===me.to&&Xe++;else if(ut!==18&&ut!==59&&ut!==60)break}let Ve=Ce.bottom?1:-1,nt=Ce.dotted?qw:"",ft=me.centralConnection,at=ft===59||ft===61,ht=ft===60||ft===61,ct=(Ue,ut)=>`<circle class="pele-central" cx="${u(Ue)}" cy="${u(ut)}" r="${Qs}" fill="var(--_l)" stroke="none"/>`,Ut=Ce.atStart&&!Ce.atEnd,Lt=bN(Ce.head),At="",Ht;if(ke.kind===1){let Ue=be+y+Math.max(0,(He.height-Bw)/2),ut=Ue+Bw,wt=ht?De.x+Qs:ie(De),dt=at?De.x+Qs:ie(De,Xe),lr=Math.max(wt,dt)+l0+Se/2;ht&&(At+=ct(De.x,Ue)),at&&(At+=ct(De.x,ut)),Se>0&&(At+=pe(V,Ut?dt:wt,Ut?ut:Ue,Se),Ut?dt+=Se/2:wt+=Se/2);let It=(Ce.atStart?od(Ce.head,wt,Ue,-1,Ve):"")+(Ce.atEnd?od(Ce.head,dt,ut,-1,-Ve):""),Je=u(wt+(Ce.atStart?Lt:0)),$t=u(dt+(Ce.atEnd?Lt:0));At=`<path d="${f?`M${Je},${u(Ue)}H${u(lr)}V${u(ut)}H${$t}`:`M${Je},${u(Ue)}H${u(lr-6)}A6,6 0 0 1 ${u(lr)},${u(Ue+6)}V${u(ut-6)}A6,6 0 0 1 ${u(lr-6)},${u(ut)}H${$t}`}"${nt}/>`+It+At,O(De.x,lr+8+He.width),He.width>0&&(oe+=`<g class="pele-edge-label" data-id="i${Pe(me.id)}">${Re(He,lr+8+He.width/2,(Ue+ut)/2,"",c)}</g>`),Ht=Math.max(ut,(Ue+ut)/2+He.height/2)}else{let Ue=Ie.x>De.x?1:-1,ut=Ie.createAt===V;Ht=be+y+Math.max(He.height>0?He.height+2:6,ut?Ie.size.h/2-y+6:0);let wt=Ue>0?ie(De):ae(De),dt=Ue>0?ae(Ie,Xe):ie(Ie,Xe);if(ut&&(Ie.top=Ht-Ie.size.h/2,Ie.lifeStart=Ie.top+Ie.size.h,dt=Ie.x-Ue*(c0(Ie.kind)?18:Ie.size.w/2+1)),ht&&(At+=ct(De.x,Ht),wt=De.x+Ue*Qs),at&&(At+=ct(Ie.x,Ht),dt=Ie.x-Ue*Qs),Se>0)if(Ut){let $t=at?dt-Ue*(Se/2+2):dt;At+=pe(V,$t,Ht,Se),dt=$t-Ue*Se/2}else{let $t=ht?wt+Ue*(Se/2+2):wt;At+=pe(V,$t,Ht,Se),wt=$t+Ue*Se/2}let lr=(Ce.atStart?od(Ce.head,wt,Ht,-Ue,Ve*Ue):"")+(Ce.atEnd?od(Ce.head,dt,Ht,Ue,Ve*Ue):""),It=wt+(Ce.atStart?Ue*Lt:0),Je=dt-(Ce.atEnd?Ue*Lt:0);if(At=`<path d="M${u(It)},${u(Ht)}H${u(Je)}"${nt}/>`+lr+At,He.width>0){let $t=Math.min(wt,dt),Wt=Math.max(wt,dt),zt=I<0?$t+_+He.width/2:I>0?Wt-_-He.width/2:($t+Wt)/2;O(zt-He.width/2,zt+He.width/2),oe+=`<g class="pele-edge-label" data-id="i${Pe(me.id)}">${ce(He,zt,Ht-4-He.height/2,"")}</g>`}ut&&(be=Ht+Ie.size.h/2-6)}ye+=`<g class="pele-edge pele-message" data-id="i${Pe(me.id)}">${At}</g>`,be=Math.max(be,Ht),De.destroyAt===V&&(be=Math.max(be,Te(De,Ht))),Ie.destroyAt===V&&Ie!==De&&(be=Math.max(be,Te(Ie,Ht)))}}be+=20;for(let V of N)for(;V.activations.length>0;)Ae(V,be);let Oe=be;if(d){let V=0;for(let me of N)me.lifeEnd>=0||(V=Math.max(V,me.size.h),ue+=he(me,be,!0));Oe=be+V}let Ye="";for(let V of N){ue+=he(V,V.top,!1);let me=V.lifeEnd>=0?V.lifeEnd:be;me>V.lifeStart&&(Ye+=`<path class="pele-lifeline" data-id="${Pe(V.id)}" d="M${u(V.x)},${u(V.lifeStart)}V${u(me)}"/>`)}let de="";for(let V of A){let me=N[V.first].x-N[V.first].size.w/2-k-V.grow,ne=N[V.last].x+N[V.last].size.w/2+k+V.grow,ke=V.box.fill==="transparent"?"":Ct([`fill:${V.box.fill}`]).shape;de+=`<g class="pele-cluster pele-box"${V.box.name?` data-id="${Pe(V.box.name)}"`:""}><rect x="${u(me)}" y="0" width="${u(ne-me)}" height="${u(Oe+k)}" fill="var(--_a)" stroke="var(--_b)"${gt((ke?"":' fill-opacity="0.5"')+ke)}/>`+Re(V.title,(me+ne)/2,k/2+2+V.title.height/2,' class="pele-cluster-label" fill="var(--_m)"',c)+"</g>"}A.length>0&&(Oe+=k);let Me=0,_e="",$e=Pt(r),ve=zr(e.title,o,i,a?$e:1/0),Le=a?Hi(ve,o,Math.max(120,$e)):ve;if(H>P&&O(0,Math.max(Le.width,40)),Le.width>0){let V=(H+P)/2;O(V-Le.width/2,V+Le.width/2),Me=-Le.height-12,_e=Re(Le,V,Me+Le.height/2,' class="pele-title" font-weight="var(--_tw)"',c)}let qe=Math.ceil(P-H+2*h),Fe=Math.ceil(Oe-Me+2*h);return{svg:tt("sequence",qe,Fe,i,r,e,`<g transform="translate(${u(h-H)},${u(h-Me)})">`+_e+(de?`<g class="pele-boxes" font-size="${l}">${de}</g>`:"")+(ee.length>0?`<g class="pele-rects" fill="var(--_a)">${ee.reverse().join("")}</g>`:"")+(Ye?`<g class="pele-lifelines" fill="none" stroke="var(--_b)">${Ye}</g>`:"")+(re.length>0?`<g class="pele-activations" fill="var(--_s)" stroke="var(--_b)">${re.reverse().join("")}</g>`:"")+(fe?`<g class="pele-frames" font-size="${l}" stroke="var(--_b)">${fe}</g>`:"")+(ye?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${ye}</g>`:"")+(ge?`<g class="pele-destroys" fill="none" stroke="var(--_l)" stroke-width="1.5" stroke-linecap="round">${ge}</g>`:"")+(oe?`<g class="pele-edge-labels" font-size="${l}">${oe}</g>`:"")+(we?`<g class="pele-notes" font-size="${l}" fill="var(--_a)" stroke="var(--_b)">${we}</g>`:"")+(ue?`<g class="pele-nodes">${ue}</g>`:"")+"</g>"),width:qe,height:Fe,links:[]}}var q6,Ow,G6,X6,V6,K6,Z6,Dw,Q6,eN,Fw,jw,Vt,gn,rN,nN,iN,Xw,Vw,Zi,Ki,Bn,Js,sN,lN,h0,fN,uN,l0,Bw,Za,Ww,pN,Zs,gN,mN,yN,sd,Yw,ld,Qs,qw,Gw,Kw,Zw=Ge(()=>{xe();As();Ui();qa();or();Gt();$r();yt();kt();q6="aliceblue antiquewhite aqua aquamarine azure beige bisque black blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkgrey darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkslategrey darkturquoise darkviolet deeppink deepskyblue dimgray dimgrey dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray green greenyellow grey honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrodyellow lightgray lightgreen lightgrey lightpink lightsalmon lightseagreen lightskyblue lightslategray lightslategrey lightsteelblue lightyellow lime limegreen linen magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray slategrey snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen transparent currentcolor inherit initial unset revert accentcolor accentcolortext activetext buttonborder buttonface buttontext canvas canvastext field fieldtext graytext highlight highlighttext linktext mark marktext selecteditem selecteditemtext visitedtext activeborder activecaption appworkspace background buttonhighlight buttonshadow captiontext inactiveborder inactivecaption inactivecaptiontext infobackground infotext menu menutext scrollbar threeddarkshadow threedface threedhighlight threedlightshadow threedshadow window windowframe windowtext",G6=/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?(%|deg|grad|rad|turn)?$/i;X6=/^:?wrap:/,V6=/^:?nowrap:/,K6=/^:?(?:no)?wrap:/,Z6=/^(?:rgba?|hsla?)\s*\(/,Dw=/[\r\u2028\u2029]/,Q6=/^\w*/;eN=class{constructor(e={}){le(this,"type","sequence");le(this,"actors",new Map);le(this,"createdActors",new Map);le(this,"destroyedActors",new Map);le(this,"boxes",[]);le(this,"messages",[]);le(this,"notes",[]);le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"prevActor");le(this,"currentBox");le(this,"lastCreated");le(this,"lastDestroyed");le(this,"wrapEnabled");le(this,"sequenceWrap");le(this,"active",new Map);this.wrapEnabled=e.wrap,this.sequenceWrap=e.sequenceWrap??!1}autoWrap(){return this.wrapEnabled??this.sequenceWrap}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
225
|
+
`)}setDiagramTitle(e){this.title=e}parseMessage(e){return Pw(e)}parseBoxData(e){let t=J6(e),r=t?.[0]?t[0].trim():"transparent",a=t?.[1]?t[1].trim():void 0;if(j6(r)||(r="transparent",a=e.trim()),a===void 0)return{text:void 0,color:r,wrap:void 0};let{text:n,wrap:i}=Pw(a);return{text:n||void 0,color:r,wrap:i}}addBox(e){this.currentBox={name:e.text,wrap:e.wrap??this.autoWrap(),fill:e.color,actorKeys:[]},this.boxes.push(this.currentBox)}addActor(e,t,r,a,n){let i=this.currentBox,l;if(n!==void 0){let h;try{h=Ba(n.includes(`
|
|
226
|
+
`)?n+`
|
|
227
|
+
`:`{
|
|
228
|
+
`+n+`
|
|
229
|
+
}`)}catch(d){throw new Ke(`Config of participant "${e}" is not valid YAML. ${d.message}`,"syntax",{type:"sequence"})}h!==null&&typeof h=="object"&&!Array.isArray(h)&&(l=h)}let s=l&&Object.prototype.hasOwnProperty.call(l,"type")?l.type:void 0,o=l&&Object.prototype.hasOwnProperty.call(l,"alias")?l.alias:void 0;s!=null&&(a=String(s)),o&&(!r||r.text===t)&&(r={text:String(o),wrap:r?.wrap,type:a});let c=this.actors.get(e);if(!(c&&(this.currentBox&&c.box&&this.currentBox!==c.box&&Co(`A same participant should only be defined in one Box: ${c.name} can't be in '${c.box.name}' and in '${this.currentBox.name}' at the same time.`),i=c.box?c.box:this.currentBox,c.box=i,t===c.name&&r==null))){if((r?.text==null||a==null)&&(r={text:t,type:a}),this.actors.set(e,{box:i,name:t,description:r.text,wrap:r.wrap??this.autoWrap(),prevActor:this.prevActor,links:new Map,properties:new Map,type:a??"participant"}),this.prevActor){let h=this.actors.get(this.prevActor);h&&(h.nextActor=e)}this.currentBox&&this.currentBox.actorKeys.push(e),this.prevActor=e}}addMessage(e,t,r,a){this.messages.push({id:String(this.messages.length),from:e,to:t,message:r.text,wrap:r.wrap??this.autoWrap(),answer:a})}addSignal(e,t,r,a,n=!1,i){if(a===18){let l=e?this.active.get(e)??0:0;l<1&&Co(`Trying to inactivate an inactive participant (${e})`),this.active.set(e,l-1)}else a===17&&e&&this.active.set(e,(this.active.get(e)??0)+1);return this.messages.push({id:String(this.messages.length),from:e,to:t,message:r?.text??"",wrap:r?.wrap??this.autoWrap(),type:a,activate:n,centralConnection:i??0}),!0}addNote(e,t,r){let a=r.wrap??this.autoWrap(),n={actor:e,placement:t,message:r.text,wrap:a},i=typeof e=="string"?[e,e]:e;this.notes.push(n),this.messages.push({id:String(this.messages.length),from:i[0],to:i[1],message:r.text,wrap:a,type:2,placement:t})}addLinks(e,t){let r=this.actors.get(e);if(r)try{let a=JSON.parse(t.text);for(let[n,i]of zw(a))r.links.set(n,i)}catch{return}}addALink(e,t){let r=this.actors.get(e);if(!r)return;let a=t.text.indexOf("@");r.links.set(t.text.slice(0,a-1).trim(),t.text.slice(a+1).trim())}addProperties(e,t){let r=this.actors.get(e);if(r)try{let a=JSON.parse(t.text);for(let[n,i]of zw(a))r.properties.set(n,i)}catch{return}}addDetails(e,t){let r=this.actors.get(e);r&&(r.details=t.text)}apply(e){let t=[],r=[],a=e;for(;;){a!==void 0&&(Array.isArray(a)?(t.push(a),r.push(0)):typeof a!="string"&&this.applyOne(a));let n=t.length-1;if(n<0)return;let i=t[n];r[n]<i.length?a=i[r[n]++]:(t.pop(),r.pop(),a=void 0)}}applyOne(e){let t=e.actor;switch(e.type){case"sequenceIndex":this.messages.push({id:String(this.messages.length),from:void 0,to:void 0,message:{start:e.sequenceIndex,step:e.sequenceIndexStep,visible:e.sequenceVisible===!0},wrap:!1,type:e.signalType});break;case"addParticipant":this.addActor(t,t,e.description,e.draw,e.config);break;case"createParticipant":this.actors.has(t)&&Co("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.lastCreated=t,this.addActor(t,t,e.description,e.draw,e.config),this.createdActors.set(t,this.messages.length);break;case"destroyParticipant":this.lastDestroyed=t,this.destroyedActors.set(t,this.messages.length);break;case"activeStart":case"activeEnd":case"centralConnection":case"centralConnectionReverse":this.addSignal(t,void 0,void 0,e.signalType);break;case"addNote":this.addNote(e.actor,e.placement,e.text);break;case"addLinks":this.addLinks(t,e.text);break;case"addALink":this.addALink(t,e.text);break;case"addProperties":this.addProperties(t,e.text);break;case"addDetails":this.addDetails(t,e.text);break;case"addMessage":this.lastCreated?(e.to!==this.lastCreated&&Co(`The created participant ${this.lastCreated} does not have an associated creating message after its declaration. Please check the sequence diagram.`),this.lastCreated=void 0):this.lastDestroyed&&(e.to!==this.lastDestroyed&&e.from!==this.lastDestroyed&&Co(`The destroyed participant ${this.lastDestroyed} does not have an associated destroying message after its declaration. Please check the sequence diagram.`),this.lastDestroyed=void 0),this.addSignal(e.from,e.to,e.msg,e.signalType,e.activate,e.centralConnection);break;case"boxStart":this.addBox(e.boxData);break;case"boxEnd":this.currentBox=void 0;break;case"loopStart":this.addSignal(void 0,void 0,e.loopText,e.signalType);break;case"rectStart":this.addSignal(void 0,void 0,e.color,e.signalType);break;case"optStart":this.addSignal(void 0,void 0,e.optText,e.signalType);break;case"altStart":case"else":this.addSignal(void 0,void 0,e.altText,e.signalType);break;case"parStart":case"and":this.addSignal(void 0,void 0,e.parText,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"breakStart":this.addSignal(void 0,void 0,e.breakText,e.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":this.addSignal(void 0,void 0,void 0,e.signalType);break}}},Fw=["$end","INVALID","INVALID","NEWLINE","SD","create","box","restOfLine","end","autonumber","NUM","off","activate","deactivate","title","legacy_title","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","loop","rect","opt","alt","par","par_over","critical","break","option","and","else","participant","AS","participant_actor","destroy","note","over","links","link","properties","details",",","left_of","right_of","+","-","()","ACTOR","CONFIG_START","CONFIG_CONTENT","CONFIG_END","TXT","SOLID_OPEN_ARROW","DOTTED_OPEN_ARROW","SOLID_ARROW","BIDIRECTIONAL_SOLID_ARROW","DOTTED_ARROW","BIDIRECTIONAL_DOTTED_ARROW","SOLID_CROSS","DOTTED_CROSS","SOLID_POINT","DOTTED_POINT","SOLID_ARROW_TOP","SOLID_ARROW_BOTTOM","STICK_ARROW_TOP","STICK_ARROW_BOTTOM","SOLID_ARROW_TOP_DOTTED","SOLID_ARROW_BOTTOM_DOTTED","STICK_ARROW_TOP_DOTTED","STICK_ARROW_BOTTOM_DOTTED","SOLID_ARROW_TOP_REVERSE","SOLID_ARROW_BOTTOM_REVERSE","STICK_ARROW_TOP_REVERSE","STICK_ARROW_BOTTOM_REVERSE","SOLID_ARROW_TOP_REVERSE_DOTTED","SOLID_ARROW_BOTTOM_REVERSE_DOTTED","STICK_ARROW_TOP_REVERSE_DOTTED","STICK_ARROW_BOTTOM_REVERSE_DOTTED"],jw=new Uint8Array(128);for(let e=0;e<128;e++){let t=String.fromCharCode(e),r=e===32||e>=9&&e<=13,a=0;`/\\+()<->:
|
|
230
|
+
,;`.includes(t)||(a|=1),`+<->:
|
|
231
|
+
,;`.includes(t)||(a|=2),`<>:
|
|
232
|
+
,;@`.includes(t)||(a|=8|(r?0:4)),`#
|
|
233
|
+
;`.includes(t)||(a|=16),!`/\\+()<>:
|
|
234
|
+
,;-`.includes(t)&&!r&&(a|=32),jw[e]=a}Vt=new Int8Array(79).fill(-1);Vt[53]=5;Vt[54]=6;Vt[55]=0;Vt[57]=1;Vt[56]=33;Vt[58]=34;Vt[59]=3;Vt[60]=4;Vt[61]=24;Vt[62]=25;Vt[63]=41;Vt[64]=42;Vt[65]=43;Vt[66]=44;Vt[67]=51;Vt[68]=52;Vt[69]=53;Vt[70]=54;Vt[71]=45;Vt[72]=46;Vt[73]=47;Vt[74]=48;Vt[75]=55;Vt[76]=56;Vt[77]=57;Vt[78]=58;gn=new Int8Array(79).fill(-1);gn[21]=2;gn[22]=3;gn[23]=4;gn[28]=5;gn[24]=6;gn[25]=7;gn[26]=7;gn[27]=8;gn[6]=1;rN="'SOLID_OPEN_ARROW', 'DOTTED_OPEN_ARROW', 'SOLID_ARROW', 'DOTTED_ARROW', 'SOLID_CROSS', 'DOTTED_CROSS', 'SOLID_POINT', 'DOTTED_POINT'";nN=16,iN=10,Xw=34,Vw=4,Zi=5,Ki=6,Bn=' fill="var(--_s)" stroke="var(--_b)"',Js=' fill="none" stroke="var(--_b)"',sN=new Set(["participant","actor","boundary","control","entity","database","collections","queue"]),lN=new Set(["actor","boundary","control","entity","database"]);h0=[];Lr(0,!1,1);Lr(1,!0,1);Lr(3,!1,2);Lr(4,!0,2);Lr(5,!1,0);Lr(6,!0,0);Lr(24,!1,3);Lr(25,!0,3);Lr(33,!1,1,2);Lr(34,!0,1,2);for(let e of[!1,!0]){let t=e?10:0;Lr(41+t,e,4),Lr(42+t,e,4,1,!0),Lr(43+t,e,5),Lr(44+t,e,5,1,!0),Lr(45+t,e,4,0),Lr(46+t,e,4,0,!0),Lr(47+t,e,5,0),Lr(48+t,e,5,0,!0)}fN=new Map([[10,"loop"],[12,"alt"],[15,"opt"],[19,"par"],[32,"par"],[27,"critical"],[30,"break"],[22,"rect"]]),uN=12,l0=28,Bw=22,Za=10,Ww=4,pN=14,Zs=10,gN=16,mN=20,yN=10,sd=20,Yw=240,ld=16,Qs=4,qw=' stroke-dasharray="4 4"';Gw={lines:[],widths:[],width:0,height:0,size:0,lineHeight:0};Kw={type:"sequence",math:!0,parse(e,t,r){let a=t.sequence??{},n=new eN({wrap:typeof t.wrap=="boolean"?t.wrap:void 0,sequenceWrap:a.wrap===!0});return r&&n.setDiagramTitle(r),aN(e,n),n},render:wN}});var Qw={};Rt(Qw,{sequence:()=>Kw});var Jw=Ge(()=>{xe();Zw()});function oa(e){throw new Ke(e,"semantic",{type:"gitGraph"})}function e$(e){return e==="REVERSE"?Mr.REVERSE:e==="HIGHLIGHT"?Mr.HIGHLIGHT:Mr.NORMAL}function kN(e,t){e.dir&&t.setDirection(e.dir);for(let r of e.statements)MN(r,t)}function MN(e,t){switch(e.$type){case"Commit":t.commit({id:e.id,msg:e.message??"",type:e.type!==void 0?e$(e.type):Mr.NORMAL,tags:e.tags??void 0});break;case"Branch":t.branch({name:e.name,order:e.order??0});break;case"Merge":t.merge({branch:e.branch,id:e.id??"",type:e.type!==void 0?e$(e.type):void 0,tags:e.tags??void 0});break;case"Checkout":t.checkout(e.branch);break;case"CherryPicking":t.cherryPick({id:e.id,targetId:"",tags:e.tags?.length===0?void 0:e.tags,parent:e.parent});break}}function vN(e,t,r){let a=t.gitGraph,n=typeof a?.mainBranchName=="string"?a.mainBranchName:"main",i=typeof a?.mainBranchOrder=="number"?a.mainBranchOrder:0,l=new Map,s=new Map([[n,null]]),o=new Map([[n,i]]),c=[],h=null,d=n,f="LR",g=0,p=()=>{for(let $=g+1;;$+=2654435761){let k=`${g}-${(Math.imul($,2654435761)>>>0).toString(16).padStart(8,"0").slice(0,7)}`;if(!l.has(k))return k}},m=$=>{h=$,l.set($.id,$),s.set(d,$.id)},x=$=>{s.has($)||oa(`Trying to checkout branch which is not yet created. (Help try using "branch ${$}")`),d=$;let k=s.get($);h=k?l.get(k)??null:null};kN(e,{setDirection($){f=$},commit({msg:$,id:k,type:I,tags:_}){let L={id:k||p(),message:$,seq:g++,type:I??Mr.NORMAL,tags:_?[..._]:[],parents:h===null?[]:[h.id],branch:d};l.has(L.id)&&c.push(`Commit ID ${L.id} already exists`),m(L)},branch({name:$,order:k}){s.has($)&&oa(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${$}")`),s.set($,h!==null?h.id:null),o.set($,k),x($)},merge({branch:$,id:k,type:I,tags:_}){let L=s.get(d),R=s.get($),W=L?l.get(L):void 0,q=R?l.get(R):void 0;W&&q&&W.branch===$&&oa(`Cannot merge branch '${$}' into itself.`),d===$&&oa('Incorrect usage of "merge". Cannot merge a branch to itself'),W===void 0&&oa(`Incorrect usage of "merge". Current branch (${d})has no commits`),s.has($)||oa(`Incorrect usage of "merge". Branch to be merged (${$}) does not exist`),q===void 0&&oa(`Incorrect usage of "merge". Branch to be merged (${$}) has no commits`),W===q&&oa('Incorrect usage of "merge". Both branches have same head'),k&&l.has(k)&&oa(`Incorrect usage of "merge". Commit with id:${k} already exists, use different custom id`),m({id:k||p(),message:`merged branch ${$} into ${d}`,seq:g++,parents:h===null?[]:[h.id,R||""],branch:d,type:Mr.MERGE,customType:I,customId:!!k,tags:_?[..._]:[]})},cherryPick({id:$,targetId:k,tags:I,parent:_}){let L=$?l.get($):void 0;if(L===void 0&&oa('Incorrect usage of "cherryPick". Source commit id should exist and provided'),_&&!L.parents.includes(_)&&oa("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit."),L.type===Mr.MERGE&&!_&&oa("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified."),k&&l.has(k))return;L.branch===d&&oa('Incorrect usage of "cherryPick". Source commit is already on current branch');let R=s.get(d);(!R||!l.has(R))&&oa(`Incorrect usage of "cherry-pick". Current branch (${d})has no commits`),m({id:p(),message:`cherry-picked ${L.message} into ${d}`,seq:g++,parents:h===null?[]:[h.id,L.id],branch:d,type:Mr.CHERRY_PICK,tags:I?I.filter(Boolean):[`cherry-pick:${L.id}${L.type===Mr.MERGE?`|parent:${_}`:""}`]})},checkout:x});let y=[...o].map(([$,k],I)=>({name:$,order:k??parseFloat(`0.${I}`)})).sort(($,k)=>$.order-k.order).map($=>$.name);return{type:"gitGraph",title:e.title||r,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,""):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
235
|
+
`):void 0,direction:f,commits:l,branches:s,lanes:y,currentBranch:d,head:h,warnings:c}}function La(e){return{name:e,pattern:e,longer:l$}}function AN(e){let t=new ir(er(e,t$,"gitGraph"),t$,"gitGraph"),r={$type:"GitGraph",statements:[]},a=()=>{if(t.kind!==-1)for(t.kind!==26&&t.fail("a line break or the end of input");t.kind===26;)t.i++},n=()=>t.kind===31?t.take():t.kind===25?_r(t.take()):t.fail("a branch name"),i=()=>_r(t.expect(25)),l=()=>(t.kind!==8&&t.kind!==5&&t.kind!==2&&t.fail("NORMAL, REVERSE, or HIGHLIGHT"),t.take());for(;t.kind===26;)t.i++;if(!t.accept(1)){t.expect(3);let s=t.kinds[t.i+1];(t.kind===17||t.kind===18||t.kind===19)&&s===20?(r.$type="Direction",r.dir=t.take(),t.i++):t.accept(20)}for(;t.kind!==-1;)switch(t.kind){case 26:t.i++;break;case 21:r.accDescr=nr(t.take()),a();break;case 22:r.accTitle=ar(t.take()),a();break;case 23:r.title=rr(t.take()),a();break;case 7:{t.i++;let s={$type:"Commit",tags:[]};for(;;)if(t.accept(16))s.id=i();else if(t.accept(15))s.tags.push(i());else if(t.accept(12))s.type=l();else if(t.accept(14)||t.kinds[t.i]===25)s.message=i();else break;a(),r.statements.push(s);break}case 9:{t.i++;let s={$type:"Branch",name:n()};t.accept(10)&&(s.order=parseInt(t.expect(24))),a(),r.statements.push(s);break}case 13:{t.i++;let s={$type:"Merge",branch:n(),tags:[]};for(;;)if(t.accept(16))s.id=i();else if(t.accept(15))s.tags.push(i());else if(t.accept(12))s.type=l();else break;a(),r.statements.push(s);break}case 4:case 11:{t.i++;let s={$type:"Checkout",branch:n()};a(),r.statements.push(s);break}case 0:{t.i++;let s={$type:"CherryPicking",tags:[]};for(;;)if(t.accept(16))s.id=i();else if(t.accept(15))s.tags.push(i());else if(t.accept(6))s.parent=i();else break;a(),r.statements.push(s);break}default:t.fail("a statement, a title, or a line break")}return r}function dd(e,t,r){let a=e.gitGraph?.[t];return typeof a=="boolean"?a:r}function n$(e){return Io+4+e.width+6}function TN(e,t,r,a){let n=`cx="${u(t)}" cy="${u(r)}"`;if(e===Mr.HIGHLIGHT)return`<rect x="${u(t-mr-1)}" y="${u(r-mr-1)}" width="${2*mr+2}" height="${2*mr+2}" rx="2" fill="${a}"/>`;if(e===Mr.MERGE)return`<circle ${n} r="${mr-1}" fill="var(--_bg)" stroke="${a}" stroke-width="2"/><circle ${n} r="2.5" fill="${a}"/>`;let i=`<circle ${n} r="${mr}" fill="${a}"/>`;return e===Mr.REVERSE?i+`<path d="M${u(t-3)},${u(r-3)}l6,6M${u(t-3)},${u(r+3)}l6,-6" fill="none" stroke="var(--_bg)" stroke-width="1.5" stroke-linecap="round"/>`:e===Mr.CHERRY_PICK?i+`<path d="M${u(t-2.6)},${u(r+1)}L${u(t+.8)},${u(r-4.2)}L${u(t+2.6)},${u(r+1)}" fill="none" stroke="var(--_bg)" stroke-linejoin="round"/><circle cx="${u(t-2.6)}" cy="${u(r+2.2)}" r="1.8" fill="var(--_bg)"/><circle cx="${u(t+2.6)}" cy="${u(r+2.2)}" r="1.8" fill="var(--_bg)"/>`:i}function CN(e,t,r){return e.direction!=="LR"?i$(e,t,r,e.direction):jt(r,a=>i$(e,t,r,a?"TB":"LR"))}function i$(e,t,r,a){let n=r.fontSize??16,i=Math.round(n*.75),l=r.measurer??rt(r.fontFamily),s=r.padding??8,o=dd(t,"showBranches",!0),c=dd(t,"showCommitLabel",!0),h=dd(t,"rotateCommitLabel",!0),d=dd(t,"parallelCommits",!1),f=a!=="LR",g=a==="BT",p=new Map;e.lanes.forEach((B,X)=>p.set(B,X));let m=e.lanes.length,x=Math.round(n*.875),y=e.lanes.map(B=>Va(o?B:"",l,x,4e3)),$=[],k=new Map;for(let B of[...e.commits.values()].sort((X,te)=>X.seq-te.seq)){let X=c&&B.type!==Mr.CHERRY_PICK&&(B.type!==Mr.MERGE||B.customId===!0),te=[];for(let ce of B.tags){let ae=Va(ce,l,i,4e3);ae.lines.length>0&&te.push(ae)}let se={commit:B,index:$.length,lane:p.get(B.branch)??0,m:0,label:X?Va(B.id,l,i,4e3):void 0,tags:te};$.push(se),k.set(B.id,se)}let I=new Float64Array($.length),_=new Float64Array($.length),L=new Float64Array(m).fill(mr),R=new Float64Array(m).fill(mr);$.forEach((B,X)=>{let{label:te,tags:se}=B,ce=0,ae=0;for(let oe of se){let we=n$(oe);f?(ce=Math.max(ce,oe.height),ae+=we+4):(ce=Math.max(ce,we),ae+=oe.height+3)}let ie=0,ee=0;te!==void 0&&te.lines.length>0&&(h?ee=3+d0*(te.width+te.height):(ie=f?te.height:te.width,ee=6+(f?te.width:te.height))),I[X]=Math.max(mr,ce/2,ie/2),_[X]=ce/2;let re=mr+(se.length>0?r$+ae:0),fe=mr+ee,ye=B.lane;L[ye]=Math.max(L[ye],f?fe:re),R[ye]=Math.max(R[ye],f?re:fe)});let W=new Float64Array($.length);f||$.forEach((B,X)=>{if(_[X]!==0)for(let te of B.commit.parents){let se=k.get(te);se!==void 0&&se.lane<B.lane&&(W[X]=_[X]+4)}});let q=(B,X)=>Math.max(EN,I[B]+I[X]+hd,W[X]>0?I[B]+cd+W[X]:0);$.forEach((B,X)=>{if(!d){B.m=X===0?0:$[X-1].m+q(X-1,X);return}let te=0;for(let se of B.commit.parents){let ce=k.get(se);ce===void 0||ce.index>=X||(te=Math.max(te,ce.m+q(ce.index,X)))}B.m=te});let C=0;for(let B of $)C=Math.max(C,B.m);let K=new Float64Array(m);for(let B=0;B<m;B++){let X=y[B],te=X.lines.length===0?0:f?X.width/2+8:X.height/2+2;L[B]=Math.max(L[B],te),R[B]=Math.max(R[B],te),B>0&&(K[B]=K[B-1]+Math.max(SN,R[B-1]+L[B]+hd))}let Q=(B,X)=>f?X:B,G=(B,X)=>f?g?-B:B:X,Y=(B,X)=>`${u(Q(B,X))},${u(G(B,X))}`,N=1/0,S=1/0,M=-1/0,b=-1/0,E=(B,X,te,se)=>{B<N&&(N=B),X<S&&(S=X),te>M&&(M=te),se>b&&(b=se)},w="";if(o)for(let B=0;B<m;B++){let X=y[B],te=pt(B),se=K[B],ce=X.width+16,ae=X.height+4,ie=X.lines.length===0?-Qi:-Qi-(f?ae:ce),ee=Q(ie+(f?ae:ce)/2,se),re=G(ie+(f?ae:ce)/2,se);E(Q(-Qi,se),G(-Qi,se),Q(-Qi,se),G(-Qi,se)),E(Q(C+_o,se),G(C+_o,se),Q(C+_o,se),G(C+_o,se)),w+=`<g class="pele-branch" data-id="${Pe(e.lanes[B])}"><path class="pele-lane" d="M${Y(-Qi,se)}L${Y(C+_o,se)}" stroke="${te}" stroke-dasharray="2 4"/>`,X.lines.length>0&&(E(ee-ce/2,re-ae/2,ee+ce/2,re+ae/2),w+=`<rect x="${u(ee-ce/2)}" y="${u(re-ae/2)}" width="${u(ce)}" height="${u(ae)}" fill="${te}"${ot}/>`+Re(X,ee,re,' class="pele-label" fill="var(--_bg)"')),w+="</g>"}let T=Array.from({length:m},()=>[]);for(let B of $)T[B.lane].push(B.m);if(d)for(let B of T)B.sort((X,te)=>X-te);let A=(B,X,te)=>{let se=T[B],ce=0,ae=se.length;for(;ce<ae;){let ie=ce+ae>>1;se[ie]<=X?ce=ie+1:ae=ie}return ce<se.length&&se[ce]<te},v="",D="";for(let B of $){let{commit:X}=B,te=K[B.lane],se=B.m;for(let ce=0;ce<X.parents.length;ce++){let ae=k.get(X.parents[ce]);if(ae===void 0||ae===B)continue;let ie=K[ae.lane],ee=ae.m;if(ae.lane===B.lane){D+=`<path class="pele-edge" d="M${Y(ee,ie)}L${Y(se,te)}" stroke="${pt(B.lane)}"/>`;continue}let re=ce>0&&X.type===Mr.MERGE,fe=ce>0&&!re,ye=`M${Y(ee,ie)}`;if(se<=ee){let oe=(ee+se)/2;ye+=`C${Y(oe,ie)} ${Y(oe,te)} ${Y(se,te)}`}else if(!re&&!A(B.lane,ee,se)){let oe=Math.min(cd,se-ee);ye+=`C${Y(ee+oe/2,ie)} ${Y(ee+oe/2,te)} ${Y(ee+oe,te)}L${Y(se,te)}`}else{let oe=ae.lane<B.lane&&se-W[B.index]>ee?se-W[B.index]:se,we=Math.min(cd,oe-ee),ue=ie;(!re||A(ae.lane,ee,se))&&(ue=ie>te?te+R[B.lane]+hd/2:te-L[B.lane]-hd/2,we=Math.min(cd,(oe-ee)/2),ye+=`C${Y(ee+we/2,ie)} ${Y(ee+we/2,ue)} ${Y(ee+we,ue)}`),ye+=`L${Y(oe-we,ue)}C${Y(oe-we/2,ue)} ${Y(oe-we/2,te)} ${Y(oe,te)}`,oe<se&&(ye+=`L${Y(se,te)}`)}v+=`<path class="pele-edge${re?" pele-edge-merge":fe?" pele-edge-cherry-pick":""}" d="${ye}" stroke="${pt(re?ae.lane:B.lane)}"${fe?' stroke-dasharray="4 3"':""}/>`}}let z="";for(let B of $){let{commit:X,label:te,tags:se}=B,ce=Q(B.m,K[B.lane]),ae=G(B.m,K[B.lane]),ie=X.customType??X.type;E(ce-mr-1,ae-mr-1,ce+mr+1,ae+mr+1);let ee=X.type<Mr.MERGE&&X.message!==""?`<title>${Pe(X.message)}</title>`:"";if(ee+=TN(ie,ce,ae,pt(B.lane)),te!==void 0&&te.lines.length>0){let ye=te.width,oe=te.height,we=(ue,ge)=>`<rect x="${u(ue-ye/2-2)}" y="${u(ge-oe/2+2)}" width="${u(ye+4)}" height="${u(oe-4)}" rx="3" fill="var(--_bg)"/>`;if(h){let ue=d0*oe/2,ge=f?ce-mr-3-ue:ce+3,Ae=f?ae:ae+mr+3+ue,Te=d0*ye+ue;E(ge-Te,g?Ae-Te:Ae-ue,ge+ue,g?Ae+ue:Ae+Te),ee+=`<g class="pele-commit-label" transform="rotate(${g?45:-45} ${u(ge)} ${u(Ae)})">`+we(ge-ye/2,Ae)+Re(te,ge-ye/2,Ae,"")+"</g>"}else{let ue=f?ce-mr-6-ye/2:ce,ge=f?ae:ae+mr+6+oe/2;E(ue-ye/2,ge-oe/2,ue+ye/2,ge+oe/2),ee+=`<g class="pele-commit-label">${we(ue,ge)}${Re(te,ue,ge,"")}</g>`}}let re=mr+r$;for(let ye=f?0:se.length-1;ye>=0&&ye<se.length;ye+=f?1:-1){let oe=se[ye],we=n$(oe),ue=oe.height,ge=f?ce+re:ce-we/2,Ae=f?ae:ae-re-ue/2;re+=f?we+4:ue+3,E(ge,Ae-ue/2,ge+we,Ae+ue/2),ee+=`<g class="pele-tag"><path d="M${u(ge)},${u(Ae)}L${u(ge+Io)},${u(Ae-ue/2)}H${u(ge+we)}V${u(Ae+ue/2)}H${u(ge+Io)}Z" fill="var(--_s)" stroke="var(--_b)" stroke-linejoin="round"/><circle cx="${u(ge+Io)}" cy="${u(Ae)}" r="1.5" fill="var(--_b)"/>`+Re(oe,ge+Io+4+oe.width/2,Ae,' fill="var(--_fg)"')+"</g>"}let fe=X.type===Mr.MERGE&&ie!==Mr.MERGE?" pele-commit-merge":"";z+=`<g class="pele-commit pele-commit-${a$[ie]??a$[0]}${fe}" data-id="${Pe(X.id)}">${ee}</g>`}N>M&&E(0,0,0,0);let H=Be(e.title,!1,l,n,4e3,1),P=H.height>0?H.height+16:0,O=Math.max(M-N,H.width),F=Math.ceil(O+2*s),U=Math.ceil(b-S+P+2*s),j=s-N+(O-(M-N))/2,J=s+P-S,Z=Re(H,F/2,s+H.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g transform="translate(${u(j)},${u(J)})">`+(w?`<g class="pele-branches" fill="none" font-size="${x}">${w}</g>`:"")+(v||D?`<g class="pele-edges" fill="none" stroke-width="2" stroke-linecap="round">${v}${D}</g>`:"")+(z?`<g class="pele-commits" font-size="${i}" fill="var(--_m)">${z}</g>`:"")+"</g>";return{svg:tt("gitGraph",F,U,n,r,e,Z),width:F,height:U,links:[]}}var Mr,s$,l$,t$,mr,EN,SN,cd,hd,Qi,_o,Io,r$,d0,a$,o$,c$=Ge(()=>{xe();mh();Gt();sa();yt();kt();Mr={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4};s$={name:"REFERENCE",pattern:/\w([-\./\w]*[-\w])?/y},l$=[s$];t$=[La("cherry-pick"),{name:"gitGraph:",pattern:"gitGraph:"},La("HIGHLIGHT"),{...gr("gitGraph"),longer:l$},La("checkout"),La("REVERSE"),{name:"parent:",pattern:"parent:"},La("commit"),La("NORMAL"),La("branch"),{name:"order:",pattern:"order:"},La("switch"),{name:"type:",pattern:"type:"},La("merge"),{name:"msg:",pattern:"msg:"},{name:"tag:",pattern:"tag:"},{name:"id:",pattern:"id:"},La("LR"),La("TB"),La("BT"),{name:":",pattern:":"},{...kr,opener:/[\t ]*accDescr\s*{/y},cr,hr,{name:"INT",pattern:/0|[1-9][0-9]*(?!\.)/y},ia,qr,Gr,tr,ur,pr,s$];mr=7,EN=44,SN=44,cd=36,hd=8,Qi=20,_o=20,Io=7,r$=6,d0=Math.SQRT1_2,a$=["normal","reverse","highlight","merge","cherry-pick"];o$={type:"gitGraph",parse:(e,t,r)=>vN(AN(e),t,r),render:CN}});var h$={};Rt(h$,{gitGraph:()=>o$});var d$=Ge(()=>{xe();c$()});function Lo(e,t){let{key:r,value:a}=t;"from"in e&&(r==="offsetX"||r==="offsetY")?e[r]=parseInt(a):("from"in e?IN:_N).has(r)?e[r]=a:(e.extra??(e.extra=new Map)).set(r,a)}function sr(e,t,r){r!==void 0&&(typeof r=="string"?e[t]=r:Lo(e,r))}function el(e,t,r){r===void 0?e[t]??(e[t]=""):sr(e,t,r)}function f$(e,t){e.labelAttr=void 0,typeof t=="object"?(e.label="",e.labelAttr=t,Lo(e,t)):e.label=t??""}function RN(e){let t=e.length,r=[],a=[],n=[],i=0,l=9,s=0,o=!1,c=-2,h=-1,d=0,f=(x,y,$)=>{r.push(x),a.push(y),n.push($),s=$},g=x=>{for(;x<t&&je(e.charCodeAt(x));)x++;return x},p=(x,y)=>{let $=e.indexOf(x,y);return $===-1?t:$},m=(x,y)=>{let $=s+x.length;if(!e.startsWith(x,s)||!je(e.charCodeAt($)))return!1;let k=++$;for(;$<t;){let I=e.charCodeAt($);if(I===35||I===10||I===59)break;$++}return $===k?!1:(f(y,s,$),!0)};for(;;){if(o){f(0,t,t);break}s>=t&&(o=!0);let x=e.charCodeAt(s);if(i===0){if(s>=t){f(64,t,t);continue}if(c!==-1&&s>=d&&(c<s&&(c=e.indexOf("direction",s)),c!==-1&&(h<s&&(u0.lastIndex=s,h=u0.test(e)?u0.lastIndex-1:t),c<h))){let y=!1;for(let $=0;$<4&&!y;$++)f0[$].lastIndex=s,f0[$].test(e)&&(f(2+$,s,f0[$].lastIndex),y=!0);if(y)continue;d=h}if(x===116&&m("title",6))continue;if(x===97){if(m("accDescription",7))continue;let y=e.startsWith("accTitle",s);if(y||e.startsWith("accDescr",s)){let $=g(s+8),k=e.charCodeAt($);if(k===58){f(y?8:10,s,g($+1)),l=y?9:11,i=7;continue}if(k===123&&!y){s=g($+1),i=8;continue}}}if(x===37&&e.charCodeAt(s+1)===37){let y=p(`
|
|
236
|
+
`,s+2);for(;y<t&&(e.charCodeAt(y)===10||e.charCodeAt(y)===13);)y++;s=y;continue}if(je(x)){let y=s,$=-1;for(;y<t;){let k=e.charCodeAt(y);if(!je(k))break;k===10&&($=y),y++}$!==-1?f(13,s,$+1):s=y;continue}if(x===123){f(62,s,s+1);continue}if(x===125){f(63,s,s+1);continue}if(et(x)){let y=s+1;for(;y<t&&et(e.charCodeAt(y));)y++;let $=y-s<=19?LN.get(e.slice(s,y)):void 0;if($!==void 0){$>18&&(i=1),f($,s,y);continue}}f(1,s,s);break}if(i===1){if(s>=t)f(57,t,t);else if(x===40){let y=s+1;for(;e.charCodeAt(y)===32;)y++;e.charCodeAt(y)===44?f(58,s,y+1):s++,i=2}else if(x===41)s++,i=0;else{f(1,s,s);break}continue}if(i===2){if(s>=t)continue;if(x===41)s++,i=0;else if(x===44)e.charCodeAt(s+1)===44?f(58,s,s+2):s++;else{let y=s;for(;e.charCodeAt(y)===32;)y++;let $=e.charCodeAt(y);$===34?e.charCodeAt(y+1)===34?f(58,s,y+2):(s=y+1,i=3):$===36?(s=y+1,i=4):f(59,s,p(",",s))}continue}if(i===3){x===34?(s++,i=2):f(59,s,p('"',s));continue}if(i===4){f(60,s,p("=",s)),i=5;continue}if(i===5){if(s>=t)continue;let y=s+1;if(x===61)for(;e.charCodeAt(y)===32;)y++;if(x!==61||e.charCodeAt(y)!==34){f(1,s,s);break}s=y+1,i=6;continue}if(i===6){if(s>=t)continue;x===34?(s++,i=2):f(61,s,p('"',s));continue}if(i===7){f(l,s,p(`
|
|
237
|
+
`,s)),i=0;continue}x===125?(s++,i=0):f(12,s,p("}",s))}return{types:r,starts:a,ends:n}}function FN(e){return e===6||e===7||e===8||e===10||e===12}function p$(e){return e>=19&&e<=56}function BN(e,t){let{types:r,starts:a,ends:n}=RN(e),i=0,l=m=>e.slice(a[m],n[m]),s=m=>{let x=r[i];throw x===1?st("c4",e,a[i],"",!0):st("c4",e,a[i],`Expecting ${m}, got '${u$[x]}'`)},o=m=>{r[i]!==m&&s(`'${u$[m]}'`),i++},c=()=>{let m=[];for(;;){let x=r[i];if(x===59)m.push(l(i++).trim());else if(x===58)m.push(""),i++;else if(x===60)i++,r[i]!==61&&s("'STR_VALUE'"),m.push({key:l(i-1).trim(),value:l(i).trim()}),i++;else break}return m.length===0&&s(zN),m},h=m=>{m===6?t.setTitle(l(i++).substring(6)):m===7?t.setAccDescription(l(i++).substring(15)):m===12?t.setAccDescription(l(i++).trim()):(i++,m===8?(r[i]!==9&&s("'acc_title_value'"),t.setTitle(l(i++).trim())):(r[i]!==11&&s("'acc_descr_value'"),t.setAccDescription(l(i++).trim())))},d=m=>{i++;let x=c();if(m<=26)t.addPersonOrSystem(p0[m-19],x);else if(m<=32)t.addContainer(p0[m-19],x);else if(m<=38)t.addComponent(p0[m-19],x);else{if(m<=45)return m===39?x.splice(2,0,"ENTERPRISE"):m===40?x.splice(2,0,"SYSTEM"):m===42&&x.splice(2,0,"CONTAINER"),m>=43?t.addDeploymentNode(DN[m-43],x):m===42?t.addContainerBoundary(x):t.addPersonOrSystemBoundary(x),r[i]===62?(i++,o(13)):r[i]===13?(i++,o(62),r[i]===13&&i++):s("'NEWLINE', 'LBRACE'"),!0;m<=53?(m===53&&x.splice(0,1),t.addRel(ON[m-46],x)):m===54?t.updateElStyle("update_el_style",x):m===55?t.updateRelStyle("update_rel_style",x):t.updateLayoutConfig("update_layout_config",x)}return!1},f=r[i];(f<14||f>18)&&s(PN),i++,o(13);let g=0,p=0;for(;;){let m=r[i];if(p===3||p===4){if(m===13){i++,p=2;continue}if(p===3&&p$(m)){p=1;continue}}else if(p$(m)){d(m)?(g++,p=1):p=4;continue}else if(FN(m)&&p!==1){h(m),p=3;continue}else p!==2&&s("'title', 'accDescription', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'PERSON', 'REL'");if(g>0)m!==63&&s("'NEWLINE', 'RBRACE'"),i++,t.popBoundaryParseStack(),g--,p=4;else{m!==64&&s("'NEWLINE', 'EOF'"),i++,o(0),t.setC4Type(l(0));return}}}function Ji(e,t,r,a,n,i,l,s){let o=0,c=1;if(l===0){if(n<e||n>r)return 1/0}else{let h=(e-n)/l,d=(r-n)/l;o=Math.max(o,Math.min(h,d)),c=Math.min(c,Math.max(h,d))}if(s===0){if(i<t||i>a)return 1/0}else{let h=(t-i)/s,d=(a-i)/s;o=Math.max(o,Math.min(h,d)),c=Math.min(c,Math.max(h,d))}return o<=c?o:1/0}function No(e,t,r,a,n,i,l,s){let o=l/r,c=s/a,h=(n-e)/r,d=(i-t)/a,f=o*o+c*c,g=2*(o*h+c*d),p=h*h+d*d-1,m=g*g-4*f*p;if(f===0||m<0)return 1/0;let x=(-g-Math.sqrt(m))/(2*f);return x>=0&&x<=1?x:p<=0?0:1/0}function wa(e,t,r,a,n){let{x:i,y:l,w:s,h:o}=e,c=a-t,h=n-r;if(e.form==="person")return Math.min(Ji(i,l+M0,i+s,l+o,t,r,c,h),No(i+s/2,l+14,13,13,t,r,c,h));if(e.form==="cyl"){let d=k$(s);return Math.min(Ji(i,l+d,i+s,l+o-d,t,r,c,h),No(i+s/2,l+d,s/2,d,t,r,c,h),No(i+s/2,l+o-d,s/2,d,t,r,c,h))}if(e.form==="h-cyl"){let d=M$(o);return Math.min(Ji(i+d,l,i+s-d,l+o,t,r,c,h),No(i+d,l+o/2,d,o/2,t,r,c,h),No(i+s-d,l+o/2,d,o/2,t,r,c,h))}return Ji(i,l,i+s,l+o,t,r,c,h)}function v$(e,t,r,a,n){for(let i=2;i<e.length;i+=2){let l=e[i-2],s=e[i-1];if(Ji(t,r,a,n,l,s,e[i]-l,e[i+1]-s)<=1)return!0}return!1}function yd(e,t){return e.x<=t.x&&e.y<=t.y&&e.x+e.w>=t.x+t.w&&e.y+e.h>=t.y+t.h}function qN(e,t,r){let a=e.x+e.w/2,n=e.y+e.h/2,i=t.x+t.w/2,l=t.y+t.h/2,s=yd(e,t);if(s||yd(t,e)){let _=s?e:t,L=s?t:e,R=L.x+L.w/2,W=L.y+L.h/2,q=L.x-_.x,C=_.x+_.w-L.x-L.w,K=L.y-_.y,Q=_.y+_.h-L.y-L.h,G=Math.min(q,C,K,Q),Y=G===q?_.x:G===C?_.x+_.w:R,N=G===q||G===C?W:G===Q?_.y+_.h:_.y,S=Math.min(wa(L,Y,N,R,W),1),M=Y+(R-Y)*S,b=N+(W-N)*S;return s?[Y,N,M,b]:[M,b,Y,N]}let o=a,c=n,h=i,d=l,f=Math.max(e.x,t.x),g=Math.min(e.x+e.w,t.x+t.w),p=Math.max(e.y,t.y),m=Math.min(e.y+e.h,t.y+t.h);f<g?o=h=(f+g)/2:p<m&&(c=d=(p+m)/2);let x=Math.hypot(h-o,d-c)||1,y=-(d-c)/x*r,$=(h-o)/x*r,k=wa(e,h+y,d+$,o+y,c+$),I=wa(t,o+y,c+$,h+y,d+$);return k<=1&&I<=1?(o+=y,c+=$,h+=y,d+=$):(o=a,c=n,h=i,d=l,k=Math.min(wa(e,h,d,o,c),1),I=Math.min(wa(t,o,c,h,d),1)),[h+(o-h)*k,d+(c-d)*k,o+(h-o)*I,c+(d-c)*I]}function UN(e,t,r){let a=e.length,n=Math.sign(e[2]-e[0]),i=Math.sign(e[3]-e[1]),l=`M${u(e[0]+n*t)},${u(e[1]+i*t)}`;for(let c=2;c<a-2;c+=2){let h=e[c],d=e[c+1],f=Math.sign(h-e[c-2]),g=Math.sign(d-e[c-1]),p=Math.sign(e[c+2]-h),m=Math.sign(e[c+3]-d),x=Math.min(WN,Math.abs(h-e[c-2]+d-e[c-1])/2,Math.abs(e[c+2]-h+e[c+3]-d)/2);l+=`${f?"H"+u(h-f*x):"V"+u(d-g*x)}Q${u(h)},${u(d)} ${u(h+p*x)},${u(d+m*x)}`}let s=Math.sign(e[a-2]-e[a-4]),o=Math.sign(e[a-1]-e[a-3]);return l+(s?"H"+u(e[a-2]-s*r):"V"+u(e[a-1]-o*r))}function A$(e,t,r,a){for(let n of t)if(n!==r&&n!==a&&v$(e,n.x,n.y,n.x+n.w,n.y+n.h))return!1;return!0}function E$(e,t,r,a,n){let i=e.length;return{d:UN(e,r,a),sx:e[0],sy:e[1],sdx:-Math.sign(e[2]-e[0]),sdy:-Math.sign(e[3]-e[1]),ex:e[i-2],ey:e[i-1],edx:Math.sign(e[i-2]-e[i-4]),edy:Math.sign(e[i-1]-e[i-3]),x0:e[t],y0:e[t+1],x1:e[t+2],y1:e[t+3],nx:0,ny:0,lean:0,room:md,...n,points:e}}function m$(e,t){let r=[],a=(e+t)/2,n=Math.max($$,(t-e)/4);for(let i=0;i<9;i++){let l=a+(i&1?1:-1)*Math.ceil(i/2)*n;l>=e+w0&&l<=t-w0&&r.push(l)}return r}function jN(e,t,r,a,n,i){let l=e.x+e.w/2,s=e.y+e.h/2,o=t.x+t.w/2,c=t.y+t.h/2,h,d=(m,x,y)=>{if(!A$(m,r,e,t))return;for(let k=2;k<m.length;k+=2){let I=m[k]===m[k-2];if(!a.free(I,I?m[k]:m[k+1],I?m[k-1]:m[k-2],I?m[k+1]:m[k]))return}let $=a.crossings(m)*1e6;for(let k=2;k<m.length;k+=2)$+=Math.abs(m[k]-m[k-2])+Math.abs(m[k+1]-m[k-1]);(!h||$<h.cost)&&(h={points:m,cost:$,upright:x,sides:y})};if(e.x+e.w<=t.x||t.x+t.w<=e.x){let m=o>l,x=Math.sign(c-s),y=m?[1,0]:[0,1],$=m$(m?e.x+e.w:t.x+t.w,m?t.x:e.x);e:for(let k of a.ports(e,y[0],s+x*e.h/4,e.y+8,e.y+e.h-8))for(let I of a.ports(t,y[1],c-x*t.h/4,t.y+8,t.y+t.h-8))for(let _ of $){let L=_+(l-_)*Math.min(wa(e,_,k,l,k),1),R=_+(o-_)*Math.min(wa(t,_,I,o,I),1),W=h;if(d([L,k,_,k,_,I,R,I],!0,y),h!==W)break e}}if(e.y+e.h<=t.y||t.y+t.h<=e.y){let m=c>s,x=Math.sign(o-l),y=m?[3,2]:[2,3],$=m$(m?e.y+e.h:t.y+t.h,m?t.y:e.y);e:for(let k of a.ports(e,y[0],l+x*e.w/4,e.x+8,e.x+e.w-8))for(let I of a.ports(t,y[1],o-x*t.w/4,t.x+8,t.x+t.w-8))for(let _ of $){let L=_+(s-_)*Math.min(wa(e,k,_,k,s),1),R=_+(c-_)*Math.min(wa(t,I,_,I,c),1),W=h;if(d([k,L,k,_,I,_,I,R],!1,y),h!==W)break e}}if(!h)return;let{points:f,upright:g,sides:p}=h;return a.take(f),a.claim(e,p[0],g?f[1]:f[0]),a.claim(t,p[1],g?f[7]:f[6]),E$(f,2,n,i,{room:g?b0:md})}function XN(e,t,r,a,n,i,l){if(e===t){let x=Math.min(e.h/2-4,10),y=Math.hypot(tl,x),$=e.x+e.w,k=e.y+e.h/2,I=tl/y,_=x/y;return{d:`M${u($+I*i)},${u(k-x-_*i)}C${u($+tl)},${u(k-x*2)} ${u($+tl)},${u(k+x*2)} ${u($+I*l)},${u(k+x+_*l)}`,sx:$,sy:k-x,sdx:-I,sdy:_,ex:$,ey:k+x,edx:-I,edy:-_,x0:$+tl+4,y0:k,x1:$+tl+4,y1:k,nx:1,ny:0,lean:0,room:64,points:[]}}let[s,o,c,h]=qN(e,t,r),d=s===c,f=!1;if(a&&!yd(e,t)&&!yd(t,e))for(let x of a)x!==e&&x!==t&&Ji(x.x,x.y,x.x+x.w,x.y+x.h,s,o,c-s,h-o)<=1&&(f=!0);if(a&&f&&!d&&o!==h){let x=jN(e,t,a,n,i,l);if(x)return x;n.squeezed++}if(a&&f&&(d||o===h)){let x=v=>{let D=v?-1/0:1/0,z=H=>{let P=d?H.x:H.y;D=v?Math.max(D,P+(d?H.w:H.h)):Math.min(D,P)};z(e),z(t);for(let H of a)H!==e&&H!==t&&Ji(H.x,H.y,H.x+H.w,H.y+H.h,s,o,c-s,h-o)<=1&&z(H);return D},y=d?Math.min(e.y,t.y):Math.min(e.x,t.x),$=d?Math.max(e.y+e.h,t.y+t.h):Math.max(e.x+e.w,t.x+t.w),k=(v,D)=>{for(let z of a){if(z===e||z===t)continue;let H=d?z.y<$&&z.y+z.h>y:z.x<$&&z.x+z.w>y,P=d?z.x:z.y,O=P+(d?z.w:z.h);if(H&&(v?O>D:P<D))return!1}return!0},I=e.x+e.w/2,_=e.y+e.h/2,L=t.x+t.w/2,R=t.y+t.h/2,W=Math.sign(d?R-_:L-I),q=v=>{let D=x(v),z=v?1:-1,H=d?v?1:0:v?3:2,P=d?n.ports(e,H,_+W*e.h/4,e.y+8,e.y+e.h-8)[0]:n.ports(e,H,I+W*e.w/4,e.x+8,e.x+e.w-8)[0],O=d?n.ports(t,H,R-W*t.h/4,t.y+8,t.y+t.h-8)[0]:n.ports(t,H,L-W*t.w/4,t.x+8,t.x+t.w-8)[0],F=j=>{if(d){let B=j+(I-j)*Math.min(wa(e,j,P,I,P),1),X=j+(L-j)*Math.min(wa(t,j,O,L,O),1);return[B,P,j,P,j,O,X,O]}let J=j+(_-j)*Math.min(wa(e,P,j,P,_),1),Z=j+(R-j)*Math.min(wa(t,O,j,O,R),1);return[P,J,P,j,O,j,O,Z]},U=F(D+z*Oo);for(let j=0;j<=4;j++){let J=D+z*(Oo+j*$$),Z=F(J);if(A$(Z,a,e,t)&&(U=Z,n.free(d,J,P,O)))return{points:U,side:H,p0:P,p1:O,step:j}}return{points:U,side:H,p0:P,p1:O,step:5}},C=d?h>o:c<s,K=k(C,x(C)),Q=k(!C,x(!C)),G=q(C),Y=K===Q?q(!C):void 0,N=v=>n.crossings(v.points)*8+v.step,S=Q&&!K||Y&&N(Y)<N(G)?!C:C,{points:M,side:b,p0:E,p1:w,step:T}=S===C?G:Y??q(!C),A=S?1:-1;return T>4&&n.squeezed++,n.take(M),n.claim(e,b,E),n.claim(t,b,w),E$(M,2,i,l,d?{nx:A,lean:YN,room:b0}:{room:md})}let g=Math.hypot(c-s,h-o)||1,p=(c-s)/g,m=(h-o)/g;return(d||o===h)&&n.take([s,o,c,h]),{d:`M${u(s+p*i)},${u(o+m*i)}L${u(c-p*l)},${u(h-m*l)}`,sx:s,sy:o,sdx:-p,sdy:-m,ex:c,ey:h,edx:p,edy:m,x0:s,y0:o,x1:c,y1:h,nx:r?-m:0,ny:r?p:0,lean:0,room:Math.abs(p)>Math.abs(m)?b0:md,points:[s,o,c,h]}}function JN(e){let t=g0.get((e.shape??"").toLowerCase())??g0.get((e.sprite??"").toLowerCase());if(t)return t;if(e.tags)for(let a of e.tags.split(",")){let n=g0.get(a.trim().toLowerCase());if(n)return n}let r=e.kind;return r.endsWith("person")?"person":r.endsWith("_db")?"cyl":r.endsWith("_queue")?"h-cyl":"rect"}function eL(e,t,r,a,n=$0){let i=JN(e),l=i==="h-cyl"?36:0,s=i==="person"?M0:i==="cyl"?24:0,o=n-2*y$-l,c=[Be("\xAB"+e.kind.replace(/_/g," ")+"\xBB",!1,t,a-1,o),Be(e.label,!1,t,r,o,1),Be(e.techn?`[${e.techn}]`:void 0,!1,t,a,o),Be(e.descr,!1,t,a,o)],h=0,d=c[3].height>0?4:0;for(let f of c)h=Math.max(h,f.width),d+=f.height;return{shape:e,form:i,labels:c,textH:d,x:0,y:0,w:Math.max(n,h+2*y$+l),h:Math.max(VN,d+2*KN+s)}}function b$(e,t,r,a,n){let i=0,l=0;for(let s=0;s<e.length;s+=t){let o=Math.min(e.length,s+t),c=0,h=0;for(let d=s;d<o;d++)h=Math.max(h,e[d].h);for(let d=s;d<o;d++){let f=e[d];f.x=c,f.y=l,n&&(f.h=h),c+=f.w+r}i=Math.max(i,c-r),l+=h+a}return[i,e.length>0?l-a:0]}function tL(e,t,r,a,n,i){let l=n===void 0?x$:12,s=new Map;for(let m of e.boundaries){let x=n===void 0?4e3:Math.max(80,n-2*Ro-2*x$*2),y=m.parent?[Be(m.label,!1,t,r,x,1),Be(m.type?`[${m.type}]`:void 0,!1,t,a,x),Be(m.descr,!1,t,a,x)]:[],$=0,k=0;for(let I of y)$+=I.height,k=Math.max(k,I.width);s.set(m,{boundary:m,kids:[],nodes:[],labels:y,head:$>0?$+k0+6+Oo:l,headW:k,headX:Ro,x:0,y:0,w:0,h:0,form:"rect"})}let o=s.get(e.boundaries[0]);for(let m of s.values()){let x=m.boundary.parent;x&&s.get(x)?.kids.push(m)}let c=[o],h=new Map([[o.boundary,0]]);for(let m=0;m<c.length;m++)for(let x of c[m].kids)h.set(x.boundary,h.get(c[m].boundary)+1),c.push(x);for(let m of e.shapes)if(m.parent){let x=h.get(m.parent)??0,y=n===void 0?$0:Math.max(100,Math.min($0,n-2*x*l-32));s.get(m.parent)?.nodes.push(eL(m,t,r,a,y))}let d=Math.max(1,e.shapeInRow),f=Math.max(1,e.boundaryInRow),g=new Map;for(let m=c.length-1;m>=0;m--){let x=c[m],y=n===void 0?ZN:i,$=(q,C,K)=>{if(n===void 0)return C;let Q=1;for(let G of q)Q=Math.max(Q,G.w);return Math.max(1,Math.min(C,Math.floor((n+K-2*l)/(Q+K))))},[k,I]=b$(x.nodes,$(x.nodes,d,y),y,QN,!0),[_,L]=b$(x.kids,$(x.kids,f,fd),fd,fd,!1),R=I>0&&L>0?fd:0,W=x===o?0:l;g.set(x,I+R),x.w=Math.max(k,_,x.headW+2*Ro-2*W)+2*W,x.h=(W&&x.head)+I+R+L+W}let p=new Map;for(let m of c){let x=m.x+(m===o?0:l),y=m.y+(m===o?0:m.head);for(let $ of m.nodes)$.x+=x,$.y+=y,p.set($.shape,$);for(let $ of m.kids)$.x+=x,$.y+=y+g.get(m);m!==o&&p.set(m.boundary,m)}return{order:c,boxes:p}}function pd(e,t,r){let a=[];return e&&a.push("fill:"+e),t&&a.push("stroke:"+t),r&&a.push("color:"+r),Ct(a)}function y0(e,t,r,a,n){return t?Ca(e,Ga(t.includes("\xB6\xDF")?t.replace(/\ufb02\u00b0\u00b0?/g,"#").replace(/\u00b6\u00df/g,";"):t),r,a,n):e}function iL(e,t,r){return Yr(r,a=>{if(!a)return x0(e,t,r,!1)[0];let[n,i]=x0(e,t,r,!0,gd);for(let l=gd+m0;i>0&&l<=gd+3*m0;l+=m0){let[s,o]=x0(e,t,r,!0,l);o<i&&([n,i]=[s,o])}return n})}function x0(e,t,r,a,n=gd){let i=r.fontSize??16,l=Math.round(i*.8125),s=r.measurer??rt(r.fontFamily),o=r.padding??8,c=[],{order:h,boxes:d}=tL(e,s,i,l,a?Math.max(80,(r.maxWidth??320)-2*o):void 0,n),f=h[0],g=0,p=0,m=f.w,x=f.h,y=(v,D,z,H)=>{g=Math.min(g,v),p=Math.min(p,D),m=Math.max(m,z),x=Math.max(x,H)},$=[],k=new Map;for(let v of e.rels){let D=v.fromAttr?void 0:e.getC4Shape(v.from),z=v.toAttr?void 0:e.getC4Shape(v.to),H=D&&d.get(D),P=z&&d.get(z);if(!H||!P)throw new Ke(`C4 rel "${v.from}" -> "${v.to}" references an unknown shape or boundary`,"semantic",{type:"c4"});$.push(H,P);let O=k.get(H);O||k.set(H,O=new Set),O.add(P)}let I=[],_=[];for(let v of h)for(let D of v.nodes)I.push(D),_.push(D.x+ud,D.y+ud,D.x+D.w-ud,D.y+D.h-ud);let L=e.rels.length*(I.length+h.length+3*e.rels.length)<=nL,R=(v,D,z,H)=>{let P=0;for(let O=0;O<_.length;O+=4){let F=Math.min(z,_[O+2])-Math.max(v,_[O]);if(F<=0)continue;let U=Math.min(H,_[O+3])-Math.max(D,_[O+1]);U>0&&(P+=F*U)}return P},W=v=>v?Math.max(-w$,Math.min(w$,v)):0,q="",C=xt("arrow_point"),K=new HN;for(let v of h)v!==f&&K.frame(v);let Q=e.rels.map((v,D)=>{let z=$[D*2],H=$[D*2+1],P=pd(void 0,v.lineColor,void 0),O=P.stroke?Qe(P.stroke):"var(--_l)",F=v.type==="birel"||v.type==="rel_b",U=v.type!=="rel_b",j=z!==H&&k.get(H)?.has(z)===!0,J=XN(z,H,j?rL:0,L?I:void 0,K,F?C:0,U?C:0);return y(Math.min(J.x0,J.x1),Math.min(J.y0,J.y1),Math.max(J.x0,J.x1),Math.max(J.y0,J.y1)),F&&L&&_.push(J.sx-Xt,J.sy-Xt,J.sx+Xt,J.sy+Xt),U&&L&&_.push(J.ex-Xt,J.ey-Xt,J.ex+Xt,J.ey+Xt),q+=`<g class="pele-edge" data-id="${Pe(v.from+"-"+v.to)}"${P.line}><path d="${J.d}"/>`+(F?Mt("arrow_point",J.sx,J.sy,J.sdx,J.sdy,O):"")+(U?Mt("arrow_point",J.ex,J.ey,J.edx,J.edy,O):"")+"</g>",J});for(let v of h){if(!L||v.headW===0)continue;let D=v.y+k0,z=v.y+v.head-Oo,H=1/0;for(let P of[Ro,(v.w-v.headW)/2,v.w-Ro-v.headW]){let O=0;for(let F of Q)v$(F.points,v.x+P-4,D,v.x+P+v.headW+4,z)&&O++;if(O<H&&(H=O,v.headX=P),O===0)break}_.push(v.x+v.headX-4,D,v.x+v.headX+v.headW+4,z)}let G="";e.rels.forEach((v,D)=>{let z=Q[D],H=v.from+"-"+v.to,P=pd(void 0,void 0,v.textColor),O=(e.c4Type==="C4Dynamic"?D+1+": ":"")+v.label,F=Be(O,!1,s,l,z.room),U=Be(v.techn?`[${v.techn}]`:void 0,!1,s,l,z.room,2),j=Math.max(F.width,U.width)+8,J=F.height+U.height;if(J===0)return;let Z=Math.abs(z.nx)*(j/2)+Math.abs(z.ny)*(J/2)+2,B=z.lean?Math.max(0,Math.min(z.lean,Z-14)):Z,X=z.nx*B+(a?0:W(v.offsetX)),te=z.ny*B+(a?0:W(v.offsetY)),se=.5;if(L){let ie=1/0,ee=X!==z.nx*B||te!==z.ny*B;for(let re=0;re<(ee?2:1)&&ie>0;re++){let fe=re?z.nx*B:X,ye=re?z.ny*B:te;for(let oe of aL){let we=z.x0+(z.x1-z.x0)*oe+fe,ue=z.y0+(z.y1-z.y0)*oe+ye,ge=R(we-j/2,ue-J/2,we+j/2,ue+J/2);if(ge<ie&&(ie=ge,se=oe,X=fe,te=ye),ge===0)break}}}let ce=z.x0+(z.x1-z.x0)*se+X,ae=z.y0+(z.y1-z.y0)*se+te-J/2;L&&_.push(ce-j/2,ae,ce+j/2,ae+J),y(ce-j/2,ae,ce+j/2,ae+J),G+=`<g class="pele-edge-label" data-id="${Pe(H)}">`+(v.descr?`<title>${Pe(v.descr)}</title>`:"")+`<rect x="${u(ce-j/2)}" y="${u(ae)}" width="${u(j)}" height="${u(J)}" rx="3" fill="var(--_bg)"/>`+y0(Re(F,ce,ae+F.height/2,P.text)+Re(U,ce,ae+F.height+U.height/2,` class="pele-c4-techn" fill="var(--_m)"${P.text}`),v.link,H,c,r)+"</g>"});let Y="",N="";for(let v of h){if(v!==f){let D=v.boundary,z=pd(D.bgColor,D.borderColor,D.fontColor),H=v.x+v.headX,P=v.y+k0,O=zn(v.labels[0],H,P,` class="pele-cluster-label" font-weight="var(--_hw)"${z.text}`);P+=v.labels[0].height,O+=zn(v.labels[1],H,P,` class="pele-c4-type" font-size="${l}" fill="var(--_m)"${z.text}`),P+=v.labels[1].height,O+=zn(v.labels[2],H,P,` class="pele-c4-descr" font-size="${l}" fill="var(--_m)"${z.text}`),Y+=`<g class="pele-cluster pele-c4-${D.nodeType?"node":"boundary"}" data-id="${Pe(D.alias)}"><rect x="${u(v.x)}" y="${u(v.y)}" width="${u(v.w)}" height="${u(v.h)}" fill="none" stroke="var(--_b)"${D.nodeType?"":' stroke-dasharray="6 4"'}${gt(z.shape)}/>`+y0(O,D.link,D.alias,c,r)+"</g>"}for(let D of v.nodes){let z=D.shape,H=z.kind.startsWith("external"),P=pd(z.bgColor,z.borderColor,z.fontColor),O=' stroke="var(--_b)"'+(H?' stroke-dasharray="4 3"':""),{w:F,h:U,form:j,labels:J}=D,Z=j==="h-cyl"?-M$(U)/2:0,B=j==="person"?M0/2:j==="cyl"?k$(F)/2:0,X=` fill="var(--_m)"${P.text}`,te=B-D.textH/2,se=Re(J[0],Z,te+J[0].height/2,` class="pele-c4-type" font-size="${l-1}"${X}`);te+=J[0].height,se+=Re(J[1],Z,te+J[1].height/2,` class="pele-label" font-weight="var(--_hw)"${P.text}`),te+=J[1].height,se+=Re(J[2],Z,te+J[2].height/2,` class="pele-c4-techn" font-size="${l}"${X}`),te+=J[2].height+4,se+=Re(J[3],Z,te+J[3].height/2,` class="pele-c4-descr" font-size="${l}"${P.text}`),N+=`<g class="pele-node pele-shape-${j} pele-c4-${z.kind}${H?" pele-c4-external":""}" data-id="${Pe(z.alias)}" transform="translate(${u(D.x+F/2)},${u(D.y+U/2)})">`+y0(Ua(j,F,U,` fill="var(${H?"--_bg":"--_s"})"${O}${P.shape}`,O+P.line)+se,z.link,z.alias,c,r)+"</g>"}}let S=Be(e.title,!1,s,i,a?Pt(r):4e3,1),M=S.height>0?S.height+12:0,b=Math.max(m-g,S.width),E=Math.ceil(b+2*o),w=Math.ceil(x-p+M+2*o),T=o-g+(b-(m-g))/2,A=o+M-p;return[{svg:tt("c4",E,w,i,r,e,Re(S,E/2,o+S.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g transform="translate(${u(T)},${u(A)})">`+(Y?`<g class="pele-clusters">${Y}</g>`:"")+(q?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${q}</g>`:"")+(N?`<g class="pele-nodes">${N}</g>`:"")+(G?`<g class="pele-edge-labels" font-size="${l}">${G}</g>`:"")+"</g>"),width:E,height:w,links:c},K.squeezed]}var _N,IN,NN,u$,LN,f0,u0,p0,ON,DN,PN,zN,tl,Oo,$$,WN,YN,b0,md,M0,k$,M$,w0,GN,g$,HN,$0,VN,y$,KN,ZN,QN,x$,fd,Ro,k0,g0,rL,gd,m0,w$,ud,aL,nL,S$,T$=Ge(()=>{xe();Ui();In();Qn();or();Gt();$r();yt();kt();_N=new Set(["label","type","descr","techn","sprite","tags","link","bgColor","fontColor","borderColor","shadowing","shape","legendText","legendSprite"]),IN=new Set(["label","descr","techn","sprite","tags","link","textColor","lineColor"]);NN=class{constructor(){le(this,"type","c4");le(this,"c4Type");le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"shapes",[]);le(this,"boundaries",[{alias:"global",label:"global",type:"global",parent:void 0}]);le(this,"rels",[]);le(this,"shapeInRow",4);le(this,"boundaryInRow",2);le(this,"shapeIndex",new Map);le(this,"boundaryIndex",new Map);le(this,"relIndex",new Map);le(this,"current",this.boundaries[0]);le(this,"stack",[])}setC4Type(e){this.c4Type=e}setTitle(e){this.title=e}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
238
|
+
`)}element(e,t,r,a){let n=typeof r=="string"?t.get(r):void 0;return n===void 0&&(n={alias:"",label:"",parent:void 0},e.push(n),typeof r=="string"?(n.alias=r,t.set(r,n)):(n.aliasAttr=r,Lo(n,r))),f$(n,a),n}addPersonOrSystem(e,t){let r=this.element(this.shapes,this.shapeIndex,t[0],t[1]);el(r,"descr",t[2]),this.finishShape(r,e,t,3)}addContainer(e,t){let r=this.element(this.shapes,this.shapeIndex,t[0],t[1]);el(r,"techn",t[2]),el(r,"descr",t[3]),this.finishShape(r,e,t,4)}addComponent(e,t){this.addContainer(e,t)}finishShape(e,t,r,a){sr(e,"sprite",r[a]),sr(e,"tags",r[a+1]),sr(e,"link",r[a+2]),e.kind=t,e.parent=this.current}boundary(e,t){let r=this.element(this.boundaries,this.boundaryIndex,e[0],e[1]);return e[2]===void 0?r.type=t:sr(r,"type",e[2]),r}open(e){e.parent=this.current,this.stack.push(this.current),this.current=e}addPersonOrSystemBoundary(e,t="system"){let r=this.boundary(e,t);sr(r,"tags",e[3]),sr(r,"link",e[4]),this.open(r)}addContainerBoundary(e){this.addPersonOrSystemBoundary(e,"container")}addDeploymentNode(e,t){let r=this.boundary(t,"node");el(r,"descr",t[3]),sr(r,"sprite",t[4]),sr(r,"tags",t[5]),sr(r,"link",t[6]),r.nodeType=e,this.open(r)}popBoundaryParseStack(){this.current=this.stack.pop()??this.boundaries[0]}addRel(e,t){let r=t[0],a=t[1];if(r===void 0||a===void 0||t[2]===void 0)return;let n=typeof r=="string"&&typeof a=="string",i=n?this.relIndex.get(r)?.get(a):void 0;if(i===void 0){if(i={type:e,from:"",to:"",label:""},this.rels.push(i),n){let l=this.relIndex.get(r);l===void 0&&this.relIndex.set(r,l=new Map),l.set(a,i)}typeof r=="string"?i.from=r:i.fromAttr=r,typeof a=="string"?i.to=a:i.toAttr=a}i.type=e,f$(i,t[2]),el(i,"techn",t[3]),el(i,"descr",t[4]),sr(i,"sprite",t[5]),sr(i,"tags",t[6]),sr(i,"link",t[7])}getC4Shape(e){return this.shapeIndex.get(e)??this.boundaryIndex.get(e)}updateElStyle(e,t){let r=typeof t[0]=="string"?this.getC4Shape(t[0]):void 0;r!==void 0&&(sr(r,"bgColor",t[1]),sr(r,"fontColor",t[2]),sr(r,"borderColor",t[3]),sr(r,"shadowing",t[4]),sr(r,"shape",t[5]),sr(r,"sprite",t[6]),sr(r,"techn",t[7]),sr(r,"legendText",t[8]),sr(r,"legendSprite",t[9]))}updateRelStyle(e,t){let r=t[0],a=t[1],n=typeof r=="string"&&typeof a=="string"?this.relIndex.get(r)?.get(a):void 0;if(n===void 0)return;sr(n,"textColor",t[2]),sr(n,"lineColor",t[3]);let i=t[4],l=t[5];typeof i=="string"?n.offsetX=parseInt(i):i!==void 0&&Lo(n,i),typeof l=="string"?n.offsetY=parseInt(l):l!==void 0&&Lo(n,l)}updateLayoutConfig(e,t){let r=i=>i===void 0?NaN:parseInt(typeof i=="string"?i:i.value),a=r(t[0]),n=r(t[1]);a>=1&&(this.shapeInRow=a),n>=1&&(this.boundaryInRow=n)}},u$=["$end","INVALID","direction_tb","direction_bt","direction_rl","direction_lr","title","accDescription","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","NEWLINE","C4_CONTEXT","C4_CONTAINER","C4_COMPONENT","C4_DYNAMIC","C4_DEPLOYMENT","PERSON","PERSON_EXT","SYSTEM","SYSTEM_DB","SYSTEM_QUEUE","SYSTEM_EXT","SYSTEM_EXT_DB","SYSTEM_EXT_QUEUE","CONTAINER","CONTAINER_DB","CONTAINER_QUEUE","CONTAINER_EXT","CONTAINER_EXT_DB","CONTAINER_EXT_QUEUE","COMPONENT","COMPONENT_DB","COMPONENT_QUEUE","COMPONENT_EXT","COMPONENT_EXT_DB","COMPONENT_EXT_QUEUE","ENTERPRISE_BOUNDARY","SYSTEM_BOUNDARY","BOUNDARY","CONTAINER_BOUNDARY","NODE","NODE_L","NODE_R","REL","BIREL","REL_U","REL_D","REL_L","REL_R","REL_B","REL_INDEX","UPDATE_EL_STYLE","UPDATE_REL_STYLE","UPDATE_LAYOUT_CONFIG","EOF_IN_STRUCT","ATTRIBUTE_EMPTY","STR","STR_KEY","STR_VALUE","LBRACE","RBRACE","EOF"],LN=new Map([["C4Context",14],["C4Container",15],["C4Component",16],["C4Dynamic",17],["C4Deployment",18],["Person",19],["Person_Ext",20],["System",21],["SystemDb",22],["SystemQueue",23],["System_Ext",24],["SystemDb_Ext",25],["SystemQueue_Ext",26],["Container",27],["ContainerDb",28],["ContainerQueue",29],["Container_Ext",30],["ContainerDb_Ext",31],["ContainerQueue_Ext",32],["Component",33],["ComponentDb",34],["ComponentQueue",35],["Component_Ext",36],["ComponentDb_Ext",37],["ComponentQueue_Ext",38],["Enterprise_Boundary",39],["System_Boundary",40],["Boundary",41],["Container_Boundary",42],["Deployment_Node",43],["Node",43],["Node_L",44],["Node_R",45],["Rel",46],["BiRel",47],["Rel_Up",48],["Rel_U",48],["Rel_Down",49],["Rel_D",49],["Rel_Left",50],["Rel_L",50],["Rel_Right",51],["Rel_R",51],["Rel_Back",52],["RelIndex",53],["UpdateElementStyle",54],["UpdateRelStyle",55],["UpdateLayoutConfig",56]]),f0=[/.*direction\s+TB[^\n]*/y,/.*direction\s+BT[^\n]*/y,/.*direction\s+RL[^\n]*/y,/.*direction\s+LR[^\n]*/y],u0=/[\n\r\u2028\u2029]/g;p0=["person","external_person","system","system_db","system_queue","external_system","external_system_db","external_system_queue","container","container_db","container_queue","external_container","external_container_db","external_container_queue","component","component_db","component_queue","external_component","external_component_db","external_component_queue"],ON=["rel","birel","rel_u","rel_d","rel_l","rel_r","rel_b","rel"],DN=["node","nodeL","nodeR"],PN="'direction_tb', 'direction_bt', 'direction_rl', 'direction_lr', 'C4_CONTEXT', 'C4_CONTAINER', 'C4_COMPONENT', 'C4_DYNAMIC', 'C4_DEPLOYMENT'",zN="'STR', 'STR_KEY', 'ATTRIBUTE', 'ATTRIBUTE_EMPTY'";tl=28,Oo=20,$$=7,WN=8,YN=30,b0=88,md=160,M0=26,k$=e=>Math.min(12,Math.max(6,e/14)),M$=e=>Math.min(12,e/4);w0=6,GN=3,g$=12,HN=class{constructor(){le(this,"upright",[]);le(this,"level",[]);le(this,"frames",[[],[]]);le(this,"taken",new Map);le(this,"squeezed",0)}free(e,t,r,a){let n=Math.min(r,a),i=Math.max(r,a),l=(s,o)=>{for(let c=0;c<s.length;c+=3)if(Math.abs(s[c]-t)<o&&s[c+1]<i&&s[c+2]>n)return!0;return!1};return!l(e?this.upright:this.level,w0)&&!l(this.frames[e?0:1],GN)}crossings(e){let t=0;for(let r=2;r<e.length;r+=2){let a=e[r]===e[r-2],n=a?e[r]:e[r+1],i=Math.min(a?e[r-1]:e[r-2],a?e[r+1]:e[r]),l=Math.max(a?e[r-1]:e[r-2],a?e[r+1]:e[r]),s=a?this.level:this.upright;for(let o=0;o<s.length;o+=3)s[o]>i&&s[o]<l&&s[o+1]<n&&s[o+2]>n&&t++}return t}frame(e){this.frames[0].push(e.x,e.y,e.y+e.h,e.x+e.w,e.y,e.y+e.h),this.frames[1].push(e.y,e.x,e.x+e.w,e.y+e.h,e.x,e.x+e.w)}take(e){for(let t=2;t<e.length;t+=2)e[t]===e[t-2]?this.upright.push(e[t],Math.min(e[t-1],e[t+1]),Math.max(e[t-1],e[t+1])):e[t+1]===e[t-1]&&this.level.push(e[t+1],Math.min(e[t-2],e[t]),Math.max(e[t-2],e[t]))}ports(e,t,r,a,n){let i=this.taken.get(e)??[],l=[];for(let s=0;s<9&&l.length<4;s++){let o=r+(s&1?1:-1)*Math.ceil(s/2)*g$;if(o<a||o>n)continue;let c=!0;for(let h=0;h<i.length;h+=2)i[h]===t&&Math.abs(i[h+1]-o)<g$&&(c=!1);c&&l.push(o)}return l.length?l:[r]}claim(e,t,r){let a=this.taken.get(e);a?a.push(t,r):this.taken.set(e,[t,r])}};$0=216,VN=64,y$=14,KN=12,ZN=100,QN=88,x$=Oo+8,fd=48,Ro=16,k0=10,g0=new Map([["person","person"],["box","rect"],["rounded","rect"],["component","rect"],["cylinder","cyl"],["database","cyl"],["db","cyl"],["queue","h-cyl"],["pipe","h-cyl"]]);rL=7,gd=36,m0=24,w$=2e3,ud=8,aL=[.5,.4,.6,.3,.7,.2,.8],nL=2e6;S$={type:"c4",parse(e,t,r){let a=new NN;return r&&(a.title=r),BN(e,a),a},render:iL}});var C$={};Rt(C$,{c4:()=>S$});var _$=Ge(()=>{xe();T$()});function sL(e){switch(e){case"[]":return"square";case"()":return"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 lL(e){switch(e.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}function oL(e){switch(e.trim().charAt(0)){case"x":return"arrow_cross";case"o":return"arrow_circle";case"<":return"arrow_point";default:return"arrow_open"}}function cL(e){return e.includes("==")?"thick":"normal"}function hL(e){return e.includes(".-")?"dotted":"solid"}function N$(e,t){let r=e.flat(),a=-1;for(let n of r)if(n.type==="column-setting"){a=n.columns??-1;break}return{list:r,at:0,parent:t,children:[],columns:a}}function uL(e){let t=e.length,r=[],a=[],n=[],i=[],l=0,s=0,o=(q,C,K)=>(r.push(q),a.push(C),n.push(s),s=K,!0),c=(q,C)=>o(q,e.slice(s,C),C),h=q=>{i.push(l),l=q},d=()=>{i.length>0&&(l=i.pop())},f=q=>{for(;q<t&&je(e.charCodeAt(q));)q++;return q},g=q=>{for(;q<t;){let C=e.charCodeAt(q);if(C<48||C>57)break;q++}return q},p=q=>{for(;q<t&&et(e.charCodeAt(q));)q++;return q},m=q=>e.startsWith(q,s)&&!et(e.charCodeAt(s+q.length)),x=()=>(e.charCodeAt(s+1)===96?(h(2),s+=2):(h(1),s++),!0),y=q=>{if(e.charCodeAt(q)!==46)return-1;do q++;while(e.charCodeAt(q)===46);if(e.charCodeAt(q)!==45)return-1;let C=e.charCodeAt(q+1);return C===120||C===111||C===62?q+2:q+1},$=q=>{let C=e.charCodeAt(q);(C===120||C===111||C===60)&&q++;let K=e.charCodeAt(q);if(K===46)return y(q);if(K!==45&&K!==61)return-1;let Q=q+1;for(;e.charCodeAt(Q)===K;)Q++;if(Q-q===1)return K===45?y(Q):-1;let G=e.charCodeAt(Q);return G===120||G===111||G===62?Q+1:Q-q>=3?Q:-1},k=()=>{let q=$(s);if(q>=0)return c(33,f(q));let C=e.charCodeAt(s)===60?s+1:s,K=e.charCodeAt(C),Q=e.charCodeAt(C+1);return K===45&&(Q===45||Q===46)||K===61&&Q===61?(h(6),c(34,f(C+2))):!1},I=q=>{let C=e.indexOf(`
|
|
239
|
+
`,s);return C===-1&&(C=t),d(),c(q,C)},_=(q,C)=>{let K=p(s);if(K===s)return!1;for(;e.charCodeAt(K)===44;){let Q=f(K+1),G=p(Q);if(G===Q)break;K=G}return l=C,c(q,K)},L=q=>{if(je(q))return s=f(s+1),!0;let C;switch(q){case 98:if(e.startsWith("block",s)){if(m("block-beta"))return c(2,s+10);if(e.charCodeAt(s+5)===58)return c(3,s+6);if(!et(e.charCodeAt(s+5)))return c(2,s+5)}break;case 99:if(e.startsWith("columns",s)){if(C=f(s+7),C>s+7){if(e.startsWith("auto",C)&&!et(e.charCodeAt(C+4)))return o(4,"-1",C+4);let K=g(C);if(K>C)return o(4,e.slice(C,K),K)}}else if(e.startsWith("class",s)){let K=e.startsWith("Def",s+5),Q=K?s+8:s+5;if(C=f(Q),C>Q)return h(K?7:9),c(K?11:15,C)}break;case 34:return x();case 115:if(e.startsWith("space",s)){if(e.charCodeAt(s+5)===58){let K=g(s+6);if(K>s+6)return o(7,e.slice(s+6,K),K)}if(!et(e.charCodeAt(s+5)))return o(7,"1",s+5)}else if(e.startsWith("style",s)&&(C=f(s+5),C>s+5))return h(11),c(18,C);break;case 100:if(m("default"))return c(8,s+7);break;case 108:if(m("linkStyle"))return c(9,s+9);break;case 105:if(m("interpolate"))return c(10,s+11);break;case 97:if(e.startsWith("accTitle",s)){if(C=f(s+8),e.charCodeAt(C)===58)return h(13),c(21,f(C+1))}else if(e.startsWith("accDescr",s)){C=f(s+8);let K=e.charCodeAt(C);if(K===58)return h(14),c(23,f(C+1));if(K===123)return h(15),s=f(C+1),!0}break;case 101:if(m("end"))return c(26,f(s+3));break;case 45:return e.charCodeAt(s+1)===41?(h(3),c(27,s+2)):k();case 61:return k();case 60:return e.charCodeAt(s+1)===91?(h(4),c(29,s+2)):k();case 40:{let K=e.charCodeAt(s+1),Q=K===45||K===91?2:K===40?e.charCodeAt(s+2)===40?3:2:1;return h(3),c(27,s+Q)}case 41:case 123:return h(3),c(27,e.charCodeAt(s+1)===q?s+2:s+1);case 62:return h(3),c(27,s+1);case 91:{let K=e.charCodeAt(s+1);return h(3),c(27,K===91||K===124||K===40||K===92||K===47?s+2:s+1)}case 58:{let K=g(s+1);return K>s+1?o(36,e.slice(s+1,K),K):!1}}for(C=s;C<t;){let K=e.charCodeAt(C);if(K<128?B$[K]===1:je(K))break;C++}return C>s&&c(32,C)},R=q=>{let C=e.charCodeAt(s+1),K=0;switch(q){case 34:return x();case 40:K=C===45?2:C===40?e.charCodeAt(s+2)===40?3:2:1;break;case 41:K=C===41?e.charCodeAt(s+2)===41?3:2:C===93?2:1;break;case 125:K=C===125?2:1;break;case 45:K=C===41?2:0;break;case 93:K=C===93||C===41||C===62?2:1;break;case 92:case 47:K=C===93?2:0;break}return K===0?!1:(d(),c(28,s+K))},W=q=>{if(q===41)return d(),d(),o(30,"]>",f(s+1));let C=f(q===44?s+1:s);for(let K of fL)if(e.startsWith(K,C)){let Q=f(C+K.length);return o(31,e.slice(q===44?C:s,Q),Q)}return!1};for(;;){if(s>=t){let K=-1;switch(l){case 0:K=37;break;case 1:K=6;break;case 8:K=14;break;case 10:K=17;break;case 12:K=20;break;case 13:K=22;break;case 14:K=24;break;case 15:K=25;break}s=t,K!==-1&&o(K,"",t);break}let q=e.charCodeAt(s),C=!0;switch(l){case 0:C=L(q);break;case 1:if(q===34)d(),s++;else{let K=e.indexOf('"',s);c(6,K===-1?t:K)}break;case 2:if(q===96)C=e.charCodeAt(s+1)===34,C&&(d(),s+=2);else if(q===34)C=!1;else{let K=s+1;for(;K<t;){let Q=e.charCodeAt(K);if(Q===96||Q===34)break;K++}c(5,K)}break;case 3:C=R(q);break;case 4:if(q===34)x();else if(q===93&&e.charCodeAt(s+1)===62){let K=f(s+2);C=e.charCodeAt(K)===40,C&&(h(5),s=K+1)}else C=!1;break;case 5:C=W(q);break;case 6:if(q===34)e.charCodeAt(s+1)===96?x():(c(35,s+1),h(1));else{let K=$(f(s));C=K>=0,C&&(d(),c(33,f(K)))}break;case 7:{let K=12,Q=e.startsWith("DEFAULT",s)?s+7:s,G=f(Q);(Q===s||G===Q)&&(K=13,Q=p(s),G=f(Q)),C=Q>s&&G>Q,C&&(l=8,c(K,G));break}case 8:I(14);break;case 9:C=_(16,10);break;case 10:I(17);break;case 11:C=_(19,12);break;case 12:I(20);break;case 13:I(22);break;case 14:I(24);break;case 15:if(q===125)d(),s++;else{let K=e.indexOf("}",s);c(25,K===-1?t:K)}break}if(!C)return r.push(1),a.push(""),n.push(s),{types:r,texts:a,starts:n}}return r.push(0),a.push(""),n.push(t),{types:r,texts:a,starts:n}}function R$(e){let t=e[e.length-1];return Array.isArray(t)?(e.pop(),e.concat(t)):e}function pL(e,t){let{types:r,texts:a,starts:n}=uL(e),i=0,l=f=>{let g=r[i];throw g===1?st("block",e,n[i],"",!0):st("block",e,n[i],`Expecting ${f}, got '${L$[g]}'`)},s=f=>(r[i]!==f&&l(`'${L$[f]}'`),a[i++]),o=()=>{let f=s(32);if(r[i]===27){let g=a[i++],p=s(6);return{id:f,label:p,typeStr:g+s(28)}}if(r[i]===29){let g=a[i++],p=s(6),m=[s(31)];for(;r[i]===31;)m.push(a[i++]);return{id:f,label:p,typeStr:g+s(30),directions:m}}return{id:f}},c=()=>{let f=o(),g=r[i]===36?parseInt(a[i++],10):1,p={id:f.id,label:f.label,type:t.typeStr2Type(f.typeStr),directions:f.directions,widthInColumns:g},m;for(;r[i]===33||r[i]===34;){let x="";r[i++]===34&&(s(35),x=s(6),s(33));let y=a[i-1],$=o(),k=t.edgeStrToEdgeData(y),I=t.edgeStrToEdgeStartData(y),_=t.edgeStrToThickness(y),L=t.edgeStrToPattern(y);m??(m=[{id:p.id,label:p.label,type:p.type,directions:p.directions}]),p={id:$.id,label:$.label,type:t.typeStr2Type($.typeStr),directions:$.directions},m.push({id:m[m.length-1].id+"-"+$.id,start:m[m.length-1].id,end:$.id,label:x,type:"edge",thickness:_,pattern:L,directions:$.directions,arrowTypeEnd:k,arrowTypeStart:I},p)}return m??p};s(2);let h=[],d=[];for(;;)switch(r[i]){case 32:d.push(c());break;case 4:d.push({type:"column-setting",columns:parseInt(a[i++],10)});break;case 7:{let f=parseInt(a[i++],10);d.push({id:t.generateId(),type:"space",label:"",width:f,children:[]});break}case 2:i++,h.push({list:d,header:void 0}),d=[];break;case 3:i++,r[i]!==32&&l("'NODE_ID'"),h.push({list:d,header:c()}),d=[];break;case 26:{let f=h.pop();if(f===void 0||d.length===0)return l(Do);i++;let g=t.generateId(),p=R$(d);d=f.list,d.push(f.header===void 0?{id:g,type:"composite",label:"",children:p}:{...f.header,type:"composite",children:p});break}case 11:{i++;let f=s(13).trim();d.push({type:"classDef",id:f,css:s(14).trim()});break}case 15:{i++;let f=s(16).trim();d.push({type:"applyClass",id:f,styleClass:s(17).trim()});break}case 18:{i++;let f=s(19).trim();d.push({type:"applyStyles",id:f,stylesStr:s(20).trim()});break}case 37:h.length>0&&l(Do+", 'end'"),d.length===0&&l(Do),t.setHierarchy(R$(d));return;default:l(d.length===0?Do:Do+(h.length>0?", 'end'":", 'EOF'"))}}function gL(e){let t=0;if(e)for(let r of e)switch(r.trim()){case"right":t|=mn;break;case"left":t|=yn;break;case"up":t|=xn;break;case"down":t|=bn;break;case"x":t|=mn|yn;break;case"y":t|=xn|bn;break}return t}function bd(e){return e!==0&&!(e&(xn|bn))?"x":e!==0&&!(e&(mn|yn))?"y":""}function O$(e,t,r){let a=bd(e),n=ci(e,yn)-ci(e,mn),i=ci(e,xn)-ci(e,bn);if(a==="x"){let l=Math.max(r+8,14)+2*nl,s=Math.min(l/2,xd);return{w:Math.max(t+12,16)+s*(e===(mn|yn)?2:1),h:l,dx:n*s/2,dy:0}}if(a==="y"){let l=Math.max(t+16,14)+2*nl,s=Math.min(l/2,xd);return{w:l,h:Math.max(r+8,16)+s*(e===(xn|bn)?2:1),dx:0,dy:i*s/2}}return{w:Math.max(t+16,24)+hi*(ci(e,yn)+ci(e,mn)),h:Math.max(r+8,24)+hi*(ci(e,xn)+ci(e,bn)),dx:n*hi/2,dy:i*hi/2}}function mL(e,t,r,a){let n=bd(e),i=t/2,l=r/2,s;if(n==="x"){let c=Math.min(l,xd),h=l-nl,d=e&yn?-i+c:-i,f=e&mn?i-c:i;s=[d,-h,f,-h],e&mn&&s.push(f,-l,i,0,f,l),s.push(f,h,d,h),e&yn&&s.push(d,l,-i,0,d,-l)}else if(n==="y"){let c=Math.min(i,xd),h=i-nl,d=e&xn?-l+c:-l,f=e&bn?l-c:l;s=[h,d,h,f],e&bn&&s.push(i,f,0,l,-i,f),s.push(-h,f,-h,d),e&xn&&s.push(-i,d,0,-l,i,d)}else{let c=e&yn?-i+hi:-i,h=e&mn?i-hi:i,d=e&xn?-l+hi:-l,f=e&bn?l-hi:l,g=(c+h)/2,p=(d+f)/2,m=Math.min(10,(h-c)/2),x=Math.min(10,(f-d)/2);s=[c,d],e&xn&&s.push(g-m,d,g,-l,g+m,d),s.push(h,d),e&mn&&s.push(h,p-x,i,p,h,p+x),s.push(h,f),e&bn&&s.push(g+m,f,g,l,g-m,f),s.push(c,f),e&yn&&s.push(c,p+x,-i,p,c,p-x)}let o="";for(let c=0;c<s.length;c+=2)o+=(c?" ":"")+u(s[c])+","+u(s[c+1]);return`<polygon points="${o}" stroke-linejoin="round"${a}/>`}function xL(e,t){if(e===0||!Number.isInteger(e))throw new Ke("Columns must be an integer !== 0.","semantic",{type:"block"});if(t<0||!Number.isInteger(t))throw new Ke("Position must be a non-negative integer."+t,"semantic",{type:"block"});return e<0?{px:t,py:0}:{px:t%e,py:Math.floor(t/e)}}function bL(e,t,r){let a=e.columns,n=[],i=0,l=0,s=0,o=0;for(let h of e.children){let{px:d,py:f}=xL(a,i),g=h.span>=1?Math.min(h.span,yL):1;if(a>0&&g>a-d&&(g=a-d),h.span=g,h.col=d,h.row=f,i+=g,d+g>l&&(l=d+g),f===n.length&&n.push(0),h.children.length===0?n[f]=-1:n[f]>=0&&h.nh>n[f]&&(n[f]=h.nh),h.space)continue;let p=(h.nw-t*(g-1))/g;p>s&&(s=p),h.nh>o&&(o=h.nh)}let c=(n.length-1)*t;for(let h=0;h<n.length;h++)n[h]<0&&(n[h]=o),c+=n[h];e.cols=l,e.heights=n,e.nw=Math.max(e.nw,l*s+(l-1)*t+2*r),e.nh=c+2*r+e.head}function wL(e,t,r){let{cols:a,heights:n}=e,i=n.length,l=(e.w-2*r-(a-1)*t)/a,s=e.h-2*r-e.head-(i-1)*t,o=0;for(let p of n)o+=p;let c=o>0?s/o:0,h=o>0?0:s/i,d=e.x-e.w/2+r,f=e.y-e.h/2+r+e.head,g=0;for(let p of e.children){for(;g<p.row;g++)f+=n[g]*c+h+t;p.w=l*p.span+t*(p.span-1),p.h=n[g]*c+h,p.x=d+p.col*(l+t)+p.w/2,p.y=f+p.h/2}}function $L(e,t){let r=[e];for(let a=0;a<r.length;a++)for(let n of r[a].children)r.push(n);for(let a=r.length-1;a>=0;a--){let n=r[a];n.children.length>0&&bL(n,t,a===0?0:t)}e.w=e.nw,e.h=e.nh,e.x=e.w/2,e.y=e.h/2;for(let a=0;a<r.length;a++){let n=r[a];n.children.length>0&&wL(n,t,a===0?0:t)}return{width:e.w,height:e.h}}function wd(e){return e.kind===0&&(e.shape==="circle"||e.shape==="dbl-circ")}function rl(e,t,r){let a=e.bw/2,n=e.bh/2,i=Math.abs(t-e.x),l=n;return wd(e)?l=Math.sqrt(Math.max(a*a-i*i,0)):e.kind===0&&e.shape==="diam"?l=n*Math.max(1-i/a,0):e.kind===0?l=n-Nn(e.shape,e.bw,e.bh,r>0?2:0):e.kind===1&&bd(e.mask)==="x"&&(l=n-nl),e.y+r*l}function al(e,t,r){let a=e.bw/2,n=e.bh/2,i=Math.abs(t-e.y),l=a;return wd(e)?l=Math.sqrt(Math.max(n*n-i*i,0)):e.kind===0&&e.shape==="diam"?l=a*Math.max(1-i/n,0):e.kind===0?l=a-Nn(e.shape,e.bw,e.bh,r>0?1:3):e.kind===1&&bd(e.mask)==="y"&&(l=a-nl),e.x+r*l}function F$(e,t,r,a){let n=t-e.x,i=r-e.y,l=e.bw/2,s=e.bh/2,o;wd(e)?o=l/(Math.hypot(n,i)||1):e.kind===0&&e.shape==="diam"?o=1/(Math.abs(n)/l+Math.abs(i)/s||1):o=Math.min(n===0?1/0:l/Math.abs(n),i===0?1/0:s/Math.abs(i)),o===1/0&&(o=0),a.push(e.x+n*o,e.y+i*o)}function NL(e,t,r,a,n){let i=n.x-n.bw/2+1,l=n.x+n.bw/2-1,s=n.y-n.bh/2+1,o=n.y+n.bh/2-1;if(e<i&&r<i||e>l&&r>l||t<s&&a<s||t>o&&a>o)return!1;if(e===r||t===a)return!0;let c=r-e,h=a-t,d=(g,p)=>Math.sign(c*(p-t)-h*(g-e)),f=d(i,s);return f===0||d(l,s)!==f||d(l,o)!==f||d(i,o)!==f}function v0(e,t,r,a){let n=0;for(let i of a)if(!(i===t||i===r)){for(let l=0;l+3<e.length;l+=2)if(NL(e[l],e[l+1],e[l+2],e[l+3],i)){n++;break}}return n}function LL(e,t,r,a){let n=e.x-e.bw/2,i=e.x+e.bw/2,l=e.y-e.bh/2,s=e.y+e.bh/2,o=t.x-t.bw/2,c=t.x+t.bw/2,h=t.y-t.bh/2,d=t.y+t.bh/2,f=Math.max(n,o),g=Math.min(i,c),p=Math.max(l,h),m=Math.min(s,d),x=g-f>6,y=m-p>6;if(x&&y){let Q=e.bw*e.bh<=t.bw*t.bh?e:t,G=Q===e?t:e,Y=Q.y-Q.bh/2-(G.y-G.bh/2),N=G.y+G.bh/2-(Q.y+Q.bh/2),S=Q.x-Q.bw/2-(G.x-G.bw/2),M=G.x+G.bw/2-(Q.x+Q.bw/2),b=Math.min(Y,N,S,M),E;return b===N?E=[Q.x,rl(Q,Q.x,1),Q.x,G.y+G.bh/2]:b===Y?E=[Q.x,rl(Q,Q.x,-1),Q.x,G.y-G.bh/2]:b===M?E=[al(Q,Q.y,1),Q.y,G.x+G.bw/2,Q.y]:E=[al(Q,Q.y,-1),Q.y,G.x-G.bw/2,Q.y],Q===e?E:[E[2],E[3],E[0],E[1]]}if(x){let Q=Math.min(6,(g-f)/2),G=Math.min(Math.max((f+g)/2+r,f+Q),g-Q),Y=t.y>e.y?1:-1;return[G,rl(e,G,Y),G,rl(t,G,-Y)]}if(y){let Q=Math.min(6,(m-p)/2),G=Math.min(Math.max((p+m)/2+r,p+Q),m-Q),Y=t.x>e.x?1:-1;return[al(e,G,Y),G,al(t,G,-Y),G]}let $=t.x>e.x?1:-1,k=t.y>e.y?1:-1,I=[al(e,e.y,$),e.y,t.x,e.y,t.x,rl(t,t.x,-k)],_=[e.x,rl(e,e.x,k),e.x,t.y,al(t,t.y,-$),t.y],L=Math.abs(t.x-e.x)>=Math.abs(t.y-e.y),R=L?I:_;if(a===void 0)return R;let W=v0(R,e,t,a);if(W===0)return R;let q=L?_:I,C=v0(q,e,t,a);if(C<W&&(R=q,W=C),W===0)return R;let K=[];return F$(e,t.x,t.y,K),F$(t,e.x,e.y,K),v0(K,e,t,a)<W?K:R}function RL(e,t,r){let a=e.length,n=e[0],i=e[1],l=e[a-2],s=e[a-1],o=e[2]-n,c=e[3]-i,h=Math.hypot(o,c);o/=h||1,c/=h||1;let d=l-e[a-4],f=s-e[a-3],g=Math.hypot(d,f);if(d/=g||1,f/=g||1,a===4&&t+r>h){let m=h/(t+r);t*=m,r*=m}t=Math.min(t,h),r=Math.min(r,g);let p=`M${u(n+o*t)},${u(i+c*t)}`;if(a===6){let m=Math.max(0,Math.min(ML,h-t,g-r));p+=`L${u(e[2]-o*m)},${u(e[3]-c*m)}Q${u(e[2])},${u(e[3])} ${u(e[2]+d*m)},${u(e[3]+f*m)}`}return p+=`L${u(l-d*r)},${u(s-f*r)}`,{d:p,sx:n,sy:i,sdx:-o,sdy:-c,ex:l,ey:s,edx:d,edy:f}}function W$(e,t){let r=e.bw/2,a=e.bh/2,n=Math.max(1,Math.min(10+5*(t-1),r,a));if(wd(e)){let i=e.x+r*Math.SQRT1_2,l=e.y-r*Math.SQRT1_2,s=2*Math.asin(Math.min(1,n/(2*r))),o=c=>Math.atan2(e.y-r*Math.sin(c)-l,e.x+r*Math.cos(c)-i);return[i,l,n,o(Math.PI/4+s),o(Math.PI/4-s)]}if(e.kind===0&&e.shape==="diam"){let i=Math.atan2(a,r);return[e.x+r/2,e.y-a/2,n,i+Math.PI,i]}return[e.x+r,e.y-a,n,Math.PI,Math.PI/2]}function OL(e,t,r,a){let[n,i,l,s,o]=W$(e,t),c=s+r/l,h=o-a/l,d=(h-c)%(2*Math.PI);d<=0&&(d+=2*Math.PI);let f=n+l*Math.cos(c),g=i+l*Math.sin(c),p=n+l*Math.cos(h),m=i+l*Math.sin(h),x=n+l*Math.cos(s),y=i+l*Math.sin(s),$=n+l*Math.cos(o),k=i+l*Math.sin(o),I=Math.hypot(x-f,y-g),_=Math.hypot($-p,k-m);return{d:`M${u(f)},${u(g)}A${u(l)},${u(l)} 0 ${d>Math.PI?1:0} 1 ${u(p)},${u(m)}`,sx:x,sy:y,sdx:I>0?(x-f)/I:Math.sin(s),sdy:I>0?(y-g)/I:-Math.cos(s),ex:$,ey:k,edx:_>0?($-p)/_:-Math.sin(o),edy:_>0?(k-m)/_:Math.cos(o)}}function PL(e,t,r,a,n,i,l){if(l===void 0)return .5;for(let s of DL){let o=e[t]+(e[t+2]-e[t])*s,c=e[t+1]+(e[t+3]-e[t+1])*s,h=!0;for(let d of l)if(d!==n&&d!==i&&Math.abs(o-d.x)<(r+d.bw)/2&&Math.abs(c-d.y)<(a+d.bh)/2){h=!1;break}if(h)return s}return .5}function zL(e,t,r){return Yr(r,a=>FL(e,t,r,a))}function FL(e,t,r,a){let n=r.fontSize??16,i=Math.round(n*.875),l=r.measurer??rt(r.fontFamily),s=r.padding??8,o=r.icons,c=t.block?.padding,h=Math.min(typeof c=="number"&&c>=0?Math.min(c,200):kL,a?6:1/0),d=a?80:D$,f=H=>{let P=[],O=F=>{for(let U of F)for(let j of U.split(";"))P.push(j)};for(let F of H.classes&&H.classes.length>0?H.classes:SL){let U=e.classes.get(F);U&&O(U.styles)}return H.styles&&O(H.styles),Ct(P)},g=(H,P)=>{let O=H.type,F=O==="space"?Ct(z$):f(H),U=(F.bold?1:0)|(F.italic?2:0),j=F.fontSize??n,J=0,Z="",B,X=0,te=0,se=0,ce=0,ae=0,ie=0;if(O==="space")J=3,B=Be(void 0,!1,l,j,d);else if(O==="composite")J=2,B=Be(H.label,!1,l,j,a?Pt(r):4e3,U),se=B.height>0?B.height+4:0,X=B.width+2*h,te=se+2*h;else if(O==="block_arrow"){J=1,B=Be(H.label,!1,l,j,d,U);let ee=!0;for(let fe of B.lines)for(let ye of fe)(ye.icon!==void 0||ye.text.trim()!=="")&&(ee=!1);ce=gL(H.directions);let re=ee?O$(ce,0,0):O$(ce,B.width,B.height);X=re.w,te=re.h,ae=re.dx,ie=re.dy}else{Z=CL.get(O??"")??"rect",B=Be(H.label,!1,l,j,d,U);let ee=Zn(Z,B.width,B.height);X=ee.w,te=Z==="cyl"?Math.max(ee.h,B.height+40):ee.h,ie=ee.dy}return{children:[],columns:J===2?H.columns??-1:-1,span:J===3?1:H.widthInColumns??1,space:J===3,head:se,nw:X,nh:te,col:0,row:0,cols:0,heights:EL,x:0,y:0,w:0,h:0,block:H,kind:J,index:P,shape:Z,label:B,style:F,mask:ce,dx:ae,dy:ie,bw:0,bh:0}},p=g(e.root,0);p.nw=0,p.nh=0;let m=[p],x=new Map;for(let H=0;H<m.length;H++){let P=m[H];if(P.kind===2)for(let O of P.block.children??AL){let F=g(O,m.length);P.children.push(F),m.push(F),F.kind!==3&&x.set(O.id,F)}}let y=$L(p,h),$=[];for(let H of m)H.kind===0&&_L.has(H.shape)?(H.bw=H.nw,H.bh=H.nh):H.kind===1?(H.bw=H.span>1?H.w:H.nw,H.bh=H.nh):(H.bw=H.w,H.bh=H.kind===0&&IL.has(H.shape)?H.nh:H.h),H.kind===0&&H.shape==="cyl"&&(H.dy=Math.min(12,Math.max(6,H.bw/14))/2),(H.kind===0||H.kind===1)&&$.push(H);let k=new Map,I=new Set,_=[],L=[];for(let H of e.edges){let P=x.get(H.start??""),O=x.get(H.end??"");if(P===void 0||O===void 0)continue;let F=Math.min(P.index,O.index)*m.length+Math.max(P.index,O.index);k.set(F,(k.get(F)??0)+1),H.label&&I.add(F),_.push([P,O]),L.push(H)}let R=L.length*$.length<=TL?$:void 0,W=new Map,q=[],C=0,K=0,Q=y.width,G=y.height,Y=(H,P,O,F)=>{H-O/2<C&&(C=H-O/2),H+O/2>Q&&(Q=H+O/2),P-F/2<K&&(K=P-F/2),P+F/2>G&&(G=P+F/2)};for(let H=0;H<L.length;H++){let[P,O]=_[H],F=Math.min(P.index,O.index)*m.length+Math.max(P.index,O.index),U=k.get(F)??1,j=W.get(F)??0;W.set(F,j+1);let J=Be(L[H].label,!1,l,i,D$),Z,B,X;if(P===O){let[te,se,ce]=W$(P,j+1);Z=[],Y(te,se,2*ce+2,2*ce+2),B=te+ce+6+J.width/2,X=se-ce/2}else{let te=I.has(F)?Math.round(i*1.5)+2:14;Z=LL(P,O,(j-(U-1)/2)*te,R);let se=Z.length,ce=Math.abs(Z[2]-Z[0])+Math.abs(Z[3]-Z[1]),ae=Math.abs(Z[se-2]-Z[se-4])+Math.abs(Z[se-1]-Z[se-3]),ie=se===6&&ae>ce?2:0,ee=J.width>0?PL(Z,ie,J.width+8,J.height,P,O,R):.5;B=Z[ie]+(Z[ie+2]-Z[ie])*ee,X=Z[ie+1]+(Z[ie+3]-Z[ie+1])*ee}J.width>0&&Y(B,X,J.width+8,J.height),q.push({edge:L[H],points:Z,loop:P===O?j+1:0,label:J,lx:B,ly:X})}let N=zr(e.title,l,n,a?Pt(r):4e3),S=N.height>0?N.height+12:0,M=Math.max(Q-C,N.width),b=s-C+(M-(Q-C))/2,E=s+S-K;for(let H of m)H.x+=b,H.y+=E;let w=Math.ceil(M+2*s),T=Math.ceil(G-K+S+2*s),A="",v="";for(let H=1;H<m.length;H++){let P=m[H];if(P.kind===3)continue;let O=Dt((P.block.classes??z$).join(" ")),F=Pe(P.block.id);if(P.kind===2){let j=P.y-P.h/2;A+=`<g class="pele-cluster${O}" data-id="${F}"><rect x="${u(P.x-P.w/2)}" y="${u(j)}" width="${u(P.w)}" height="${u(P.h)}" fill="var(--_a)" fill-opacity="0.5" stroke="var(--_b)"${gt(P.style.shape)}/>`+Re(P.label,P.x,j+(P.head+h)/2+2,` class="pele-cluster-label" fill="var(--_m)"${P.style.text}`,o)+"</g>";continue}let U=P.kind===1;v+=`<g class="pele-node pele-shape-${U?"block-arrow":P.shape}${O}" data-id="${F}" transform="translate(${u(P.x)},${u(P.y)})">`+(U?mL(P.mask,P.bw,P.bh,P$+P.style.shape):Ua(P.shape,P.bw,P.bh,P$+P.style.shape,vL+P.style.line))+Re(P.label,P.dx,P.dy,` class="pele-label"${P.style.text}`,o)+"</g>"}let D="",z="";for(let H=0;H<q.length;H++){let{edge:P,points:O,loop:F,label:U}=q[H],j=P.arrowTypeStart??"",J=P.arrowTypeEnd??"",Z;if(F>0)Z=OL(_[H][0],F,xt(j),xt(J));else{for(let X=0;X<O.length;X+=2)O[X]+=b,O[X+1]+=E;Z=RL(O,xt(j),xt(J))}let B=Pe(P.id);if(D+=`<g class="pele-edge" data-id="${B}"><path d="${Z.d}"${P.thickness==="thick"?' stroke-width="2.5"':""}${P.pattern==="dotted"?' stroke-dasharray="3 4"':""}/>`+Mt(j,Z.sx,Z.sy,Z.sdx,Z.sdy,"var(--_l)")+Mt(J,Z.ex,Z.ey,Z.edx,Z.edy,"var(--_l)")+"</g>",U.width>0){let X=q[H].lx+b,te=q[H].ly+E;z+=Tr(P.id,U,X,te,"",o)}}return{svg:tt("block",w,T,n,r,e,Re(N,w/2,s+N.height/2,' class="pele-title" font-weight="var(--_tw)"')+(A?`<g class="pele-clusters">${A}</g>`:"")+(D?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${D}</g>`:"")+`<g class="pele-nodes">${v}</g>`+(z?`<g class="pele-edge-labels" font-size="${i}">${z}</g>`:"")),width:w,height:T,links:[]}}var I$,dL,L$,fL,B$,Do,mn,yn,xn,bn,nl,xd,hi,ci,yL,kL,D$,ML,P$,vL,z$,AL,EL,SL,TL,CL,_L,IL,DL,Y$,q$=Ge(()=>{xe();qa();Qn();or();Gt();$r();yt();kt();I$=1e5;dL=class{constructor(e={}){le(this,"type","block");le(this,"title");le(this,"root",{id:"root",type:"composite",children:[],columns:-1});le(this,"blocks",[]);le(this,"edges",[]);le(this,"classes",new Map);le(this,"byId",new Map);le(this,"typeStr2Type",sL);le(this,"edgeStrToEdgeData",lL);le(this,"edgeStrToEdgeStartData",oL);le(this,"edgeStrToThickness",cL);le(this,"edgeStrToPattern",hL);le(this,"warn");le(this,"pending",new Set);le(this,"edgeCount",new Map);le(this,"ids",0);le(this,"colors",0);le(this,"spaces",0);this.warn=e.warn}generateId(){return"id-"+ ++this.ids}addStyleClass(e,t=""){let r=this.classes.get(e);r||(r={id:e,styles:[],textStyles:[]},this.classes.set(e,r));for(let a of t.split(",")){let n=a.indexOf(";"),i=(n===-1?a:a.slice(0,n)+a.slice(n+1)).trim();a.includes("color")&&r.textStyles.push(i.replace("fill","bgFill").replace("color","fill")),r.styles.push(i)}}addStyle2Node(e,t=""){this.named(e).styles=t.split(",")}setCssClass(e,t){var r;for(let a of e.split(","))((r=this.named(a.trim())).classes??(r.classes=[])).push(t)}named(e){let t=this.byId.get(e);return t===void 0&&(t={id:e,type:"na",children:[]},this.byId.set(e,t),this.pending.add(e)),t}setHierarchy(e){let t=[N$(e,this.root)];for(;t.length>0;){let r=t[t.length-1];if(r.at===r.list.length){r.parent.children=r.children,t.pop();continue}let a=r.list[r.at++];switch(r.columns>0&&a.type!=="column-setting"&&typeof a.widthInColumns=="number"&&a.widthInColumns>r.columns&&this.warn?.(`Block ${a.id} width ${a.widthInColumns} exceeds configured column width ${r.columns}`),a.type){case"classDef":this.addStyleClass(a.id,a.css);continue;case"applyClass":this.setCssClass(a.id,a.styleClass??"");continue;case"applyStyles":a.stylesStr&&this.addStyle2Node(a.id,a.stylesStr);continue;case"column-setting":r.parent.columns=a.columns??-1;continue;case"edge":{let s=(this.edgeCount.get(a.id)??0)+1;this.edgeCount.set(a.id,s),a.id=s+"-"+a.id,this.edges.push(a);continue}}a.id??(a.id=this.generateId()),a.label||(a.label=a.type==="composite"?"":a.id);let n=this.byId.get(a.id),i=n===void 0||this.pending.delete(a.id);i?(n&&(a.classes=n.classes,a.styles=n.styles),a.type==="composite"&&(a.colorIndex=this.colors++),this.byId.set(a.id,a)):(a.type!=="na"&&(n.type=a.type),a.label!==a.id&&(n.label=a.label));let l=a.children;if(a.children=[],a.type==="space"){let s=a.width??1;if(!(s<=I$-this.spaces))throw new Ke(`A block diagram can hold at most ${I$} space blocks.`,"limit",{type:"block"});this.spaces+=Math.max(s,0);for(let o=0;o<s;o++){let c={...a,id:a.id+"-"+o,children:[]};this.byId.set(c.id,c),r.children.push(c)}}else i&&r.children.push(a);l&&l.length>0&&t.push(N$(l,a))}this.blocks=this.root.children??[]}},L$=["$end","INVALID","BLOCK_DIAGRAM_KEY","id-block","COLUMNS","MD_STR","STR","SPACE_BLOCK","DEFAULT","LINKSTYLE","INTERPOLATE","classDef","DEFAULT_CLASSDEF_ID","CLASSDEF_ID","CLASSDEF_STYLEOPTS","class","CLASSENTITY_IDS","STYLECLASS","style","STYLE_ENTITY_IDS","STYLE_DEFINITION_DATA","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","end","NODE_DSTART","NODE_DEND","BLOCK_ARROW_START","BLOCK_ARROW_END","DIR","NODE_ID","LINK","START_LINK","LINK_LABEL","SIZE","EOF"],fL=["right","left","x","y","up","down"],B$=new Uint8Array(128);for(let e of[9,10,11,12,13,32,40,41,45,58,60,61,62,91,123,125])B$[e]=1;Do="'NODE_ID', 'COLUMNS', 'SPACE_BLOCK', 'BLOCK_DIAGRAM_KEY', 'id-block', 'classDef', 'class', 'style'";mn=1,yn=2,xn=4,bn=8,nl=7,xd=20,hi=12;ci=(e,t)=>e&t?1:0;yL=1e3;kL=12,D$=200,ML=8,P$=' fill="var(--_s)" stroke="var(--_b)"',vL=' stroke="var(--_b)"',z$=[],AL=[],EL=[],SL=["default"],TL=2e6,CL=new Map([["square","rect"],["round","rounded"],["circle","circle"],["doublecircle","dbl-circ"],["diamond","diam"],["hexagon","hex"],["stadium","stadium"],["subroutine","fr-rect"],["cylinder","cyl"],["rect_left_inv_arrow","odd"],["lean_right","lean-r"],["lean_left","lean-l"],["trapezoid","trap-b"],["inv_trapezoid","trap-t"]]),_L=new Set(["circle","dbl-circ","diam"]),IL=new Set(["stadium","hex","odd","lean-r","lean-l","trap-b","trap-t"]);DL=[.5,.3,.7,.15,.85];Y$={type:"block",math:!0,parse(e,t,r){let a=new dL;return a.title=r,pL(e,a),a},render:zL}});var G$={};Rt(G$,{block:()=>Y$});var H$=Ge(()=>{xe();q$()});function nk(e){return e===32||e>=9&&e<=13||e>127&&/\s/.test(String.fromCharCode(e))}function BL(){let e=1/0;return(t,r)=>{if(!t.startsWith("accDescr",r))return-1;let a=t.length,n=r+8;for(;n<a&&(t.charCodeAt(n)===32||t.charCodeAt(n)===9);)n++;if(t.charCodeAt(n)===58){for(n++;n<a;n++){let l=t.charCodeAt(n);if(l===10||l===13||l===37&&t.charCodeAt(n+1)===37)break}return n}for(;n<a&&nk(t.charCodeAt(n));)n++;if(t.charCodeAt(n)!==123||n>=e)return-1;let i=t.indexOf("}",n+1);return i===-1&&(e=n),i+1||-1}}function St(e,t){return{name:e,pattern:e,longer:t}}function Td(e,t){return{...gr(e),longer:[t]}}function I0(e){return{name:e,pattern:/[A-Z_a-z][\w-]*/y,first:ik+"_"}}function N0(e){return{name:e,pattern:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/y,first:`"'`}}function Cd(e){return[{name:e+"_WHITESPACE",pattern:/[\t \r\n]+/y,hidden:!0,first:` \r
|
|
240
|
+
`},{...tr,name:e+"_YAML",first:"-"},{...ur,name:e+"_DIRECTIVE",first:" %"},{...pr,name:e+"_SINGLE_LINE_COMMENT",first:" %"}]}function sl(e){if(!e.includes("\\"))return e.slice(1,-1);let t=e.length-1,r="";for(let a=1;a<t;a++){let n=e[a];n==="\\"&&a+1<t?(n=e[++a],r+=n==="n"?`
|
|
241
|
+
`:n==="r"?"\r":n==="t"?" ":n):r+=n}return r}function _d(e,t,r,a,n,i){let l=new ir(er(e,t,"railroad"),t,"railroad"),s={$type:r,rules:[]};for(l.expect(0);;){let o=l.kind;if(o===a){let c=rr(l.take()),h=c[0];s.title=(h==='"'||h==="'")&&c.endsWith(h)?n(c):c}else if(o===a+1)s.accTitle=ar(l.take());else if(o===a+2)s.accDescr=nr(l.take());else break}for(;l.kind!==-1;)s.rules.push(i(l));return s}function C0(e){let t=e,r=t.element??t.primary??t.suffix,a=t.alternatives??t.elements??(r?[r]:sk);if(t.base){a=[t.base];for(let n of t.postfixes)n.except&&a.push(n.except)}return a}function Nd(e){return e.length===1?e[0]:{type:"sequence",elements:e}}function Ld(e){return e.length===1?e[0]:{type:"choice",alternatives:e}}function Rd(e,t){return e.rules.map(r=>({name:r.name,definition:lk(r.definition,C0,t)}))}function lk(e,t,r){let a=[e],n=[t(e)],i=[[]];for(;;){let l=a.length-1,s=i[l];if(s.length<n[l].length){let o=n[l][s.length];a.push(o),n.push(t(o)),i.push([])}else{let o=r(a[l],s);if(l===0)return o;a.pop(),n.pop(),i.pop(),i[l-1].push(o)}}}function V$(e,t,r,a){let n={$type:"AbnfConcatenation",elements:[]};return t.alternatives.push(n),{alternation:t,concatenation:n,node:e,close:r,repeat:a}}function WL(e){let t=[],r=V$(void 0,{$type:"AbnfAlternation",alternatives:[]},-2,void 0);for(;;){let a=e.kind===14||e.kind===15?e.take():void 0,n,i=e.kind;switch(i){case 12:n={$type:"AbnfStringLiteral",value:e.take().slice(1,-1)};break;case 13:n={$type:"AbnfNumVal",value:e.take()};break;case 11:n={$type:"AbnfRuleName",name:e.take()};break;case 4:case 6:{e.i++;let l={$type:"AbnfAlternation",alternatives:[]};t.push(r),r=V$({$type:i===4?"AbnfGroup":"AbnfOptionalGroup",element:l},l,i+1,a);continue}default:e.fail("a string, a number, a name, or an opening bracket")}for(;;){r.concatenation.elements.push(a===void 0?{$type:"AbnfElement",primary:n}:{$type:"AbnfElement",repeat:a,primary:n});let l=e.kind;if(l===r.close){e.i++,n=r.node,a=r.repeat,r=t.pop();continue}if(l===3)e.i++,r.concatenation={$type:"AbnfConcatenation",elements:[]},r.alternation.alternatives.push(r.concatenation);else if(l!==12&&l!==13&&l!==11&&l!==4&&l!==6&&l!==14&&l!==15){if(t.length===0)return r.alternation;e.fail(`token of type '${ok[r.close].name}'`)}break}}}function YL(e){return _d(e,ok,"RailroadAbnf",8,t=>t.slice(1,-1),t=>{let r=t.expect(11);t.expect(1);let a=WL(t);return t.expect(2),{$type:"AbnfRule",name:r,definition:a}})}function qL(e,t){switch(e.$type){case"AbnfAlternation":return Ld(t);case"AbnfConcatenation":return Nd(t);case"AbnfElement":{let r=e.repeat;if(!r)return t[0];let a=r.indexOf("*"),n=a===-1,i=a>0||n?parseInt(r,10):0,l=n?i:a<r.length-1?parseInt(r.slice(a+1),10):1/0;return i===0&&l===1?il(t[0]):zo(t[0],i,l)}case"AbnfStringLiteral":case"AbnfNumVal":return Po(e.value);case"AbnfRuleName":return Id(e.name);case"AbnfGroup":return t[0];case"AbnfOptionalGroup":return il(t[0])}}function HL(e,t){if(e.charCodeAt(t)!==63)return-1;let r=!1;for(let a=t+1;a<e.length;a++){let n=e.charCodeAt(a);if(n===63)return r?a+1:-1;if(n===59)return-1;r||(r=!nk(n))}return-1}function ek(e,t,r,a){let n={$type:"EbnfSequence",elements:[]};return t.alternatives.push(n),{choice:t,sequence:n,term:void 0,node:e,close:r,except:a}}function jL(e){let t=[],r=ek(void 0,{$type:"EbnfChoice",alternatives:[]},-2,!1),a=!1;for(;;){let n,i=e.kind;switch(i){case 20:n={$type:"EbnfTerminal",value:sl(e.take())};break;case 19:n={$type:"EbnfNonTerminal",name:e.take()};break;case 21:n={$type:"EbnfSpecial",text:e.take().slice(1,-1).trim()};break;case 6:case 8:case 10:{e.i++;let l={$type:"EbnfChoice",alternatives:[]};t.push(r),r=ek({$type:UL[i-6>>1],element:l},l,i+1,a),a=!1;continue}default:e.fail("a terminal, a name, or an opening bracket")}for(;;){a?(r.term.postfixes.push({$type:"EbnfExceptionPostfix",except:n}),a=!1):(r.term={$type:"EbnfTerm",base:n,postfixes:[]},r.sequence.elements.push(r.term));let l=r.term.postfixes;for(;;){let o=e.kind;if(o===12)l.push({$type:"EbnfOptionalPostfix",operator:e.take()});else if(o===13)l.push({$type:"EbnfZeroOrMorePostfix",operator:e.take()});else if(o===14)l.push({$type:"EbnfOneOrMorePostfix",operator:e.take()});else break}let s=e.kind;if(s===r.close){e.i++,n=r.node,a=r.except,r=t.pop();continue}if(s===15)e.i++,a=!0;else if(s===5)e.i++;else if(s===4)e.i++,r.sequence={$type:"EbnfSequence",elements:[]},r.choice.alternatives.push(r.sequence);else if(s!==20&&s!==19&&s!==21&&s!==6&&s!==8&&s!==10){if(t.length===0)return r.choice;e.fail(`token of type '${ck[r.close].name}'`)}break}}}function XL(e){return _d(e,ck,"RailroadEbnf",16,sl,t=>{let r=t.expect(19);t.accept(2)||t.expect(1);let a={$type:"EbnfRule",name:r,definition:jL(t)};return t.expect(3),a})}function VL(e,t){switch(e.$type){case"EbnfChoice":return Ld(t);case"EbnfSequence":return Nd(t);case"EbnfTerm":{let r=t[0],a=1;for(let n of e.postfixes)n.$type==="EbnfOptionalPostfix"?r=il(r):n.$type==="EbnfExceptionPostfix"?r={type:"sequence",elements:[r,Po("-"),t[a++]]}:r=zo(r,n.$type==="EbnfOneOrMorePostfix"?1:0);return r}case"EbnfTerminal":return Po(e.value);case"EbnfNonTerminal":return Id(e.name);case"EbnfSpecial":return Md(e.text);case"EbnfGroup":return t[0];case"EbnfOptional":return il(t[0]);case"EbnfRepetition":return zo(t[0],0)}}function A0(e){e.i++,e.expect(11);let t=sl(e.expect(18));return e.expect(13),t}function E0(e){return{$type:e,element:void 0}}function QL(e){let t=[];for(;;){let r;switch(e.kind){case 6:r={$type:"RailroadTerminalExpr",value:A0(e)};break;case 1:r={$type:"RailroadNonTerminalExpr",name:A0(e)};break;case 7:r={$type:"RailroadSpecialExpr",text:A0(e)};break;case 4:r={$type:"RailroadSequenceExpr",elements:[]};break;case 8:r={$type:"RailroadChoiceExpr",alternatives:[]};break;case 5:r=E0("RailroadOptionalExpr");break;case 3:r=E0("RailroadOneOrMoreExpr");break;case 2:r=E0("RailroadZeroOrMoreExpr");break;default:e.fail("an expression")}if("elements"in r||"alternatives"in r||"element"in r){e.i++,e.expect(11),t.push(r);continue}for(;;){let a=t[t.length-1];if(a===void 0)return r;if("element"in a)a.element=r;else if(("elements"in a?a.elements:a.alternatives).push(r),e.accept(12))break;e.expect(13),t.pop(),r=a}}}function JL(e){return _d(e,ZL,"Railroad",14,sl,t=>{let r=t.expect(17);t.expect(9);let a=QL(t);return t.expect(10),{$type:"RailroadRule",name:r,definition:a}})}function eR(e,t){switch(e.$type){case"RailroadTerminalExpr":return Po(e.value);case"RailroadNonTerminalExpr":return Id(e.name);case"RailroadSpecialExpr":return Md(e.text);case"RailroadSequenceExpr":return Nd(t);case"RailroadChoiceExpr":return Ld(t);case"RailroadOptionalExpr":return il(t[0]);default:return zo(t[0],e.$type==="RailroadOneOrMoreExpr"?1:0)}}function rk(e,t,r){let a={$type:"PegSequence",elements:[]};return t.alternatives.push(a),{choice:t,sequence:a,node:e,operator:r}}function aR(e){let t=[],r=rk(void 0,{$type:"PegOrderedChoice",alternatives:[]},void 0);for(;;){let a=e.kind===4||e.kind===5?e.take():void 0,n;switch(e.kind){case 16:n={$type:"PegLiteral",value:sl(e.take())};break;case 15:n={$type:"PegIdentifier",name:e.take()};break;case 11:n={$type:"PegAny",dot:e.take()};break;case 9:{e.i++;let i={$type:"PegOrderedChoice",alternatives:[]};t.push(r),r=rk({$type:"PegGroup",element:i},i,a);continue}default:e.fail("a literal, a name, a dot, or an opening parenthesis")}for(;;){let i={$type:"PegSuffix",primary:n};(e.kind===6||e.kind===7||e.kind===8)&&(i.operator=e.take()),r.sequence.elements.push(a===void 0?{$type:"PegPrefix",suffix:i}:{$type:"PegPrefix",operator:a,suffix:i});let l=e.kind;if(l===10&&t.length>0){e.i++,n=r.node,a=r.operator,r=t.pop();continue}if(l===3)e.i++,r.sequence={$type:"PegSequence",elements:[]},r.choice.alternatives.push(r.sequence);else if(l!==4&&l!==5&&l!==16&&l!==15&&l!==11&&l!==9){if(t.length===0)return r.choice;e.fail("token of type ')'")}break}}}function nR(e){return _d(e,rR,"RailroadPeg",12,sl,t=>{let r=t.expect(15);t.expect(1);let a={$type:"PegRule",name:r,definition:aR(t)};return t.expect(2),a})}function iR(e){switch(e.type){case"terminal":return`"${e.value}"`;case"nonterminal":return e.name;case"special":return e.text;default:return"(...)"}}function sR(e,t){let r=t[0];switch(e.$type){case"PegOrderedChoice":return Ld(t);case"PegSequence":return Nd(t);case"PegPrefix":return e.operator?Md(e.operator+iR(r)):r;case"PegSuffix":return e.operator?e.operator==="?"?il(r):zo(r,e.operator==="+"?1:0):r;case"PegLiteral":return Po(e.value);case"PegIdentifier":return Id(e.name);case"PegAny":return Md(e.dot);case"PegGroup":return r}}function hR(e){let t=cR.exec(e);if(t===null)return;let r=t[1]?.toLowerCase();return r==="ebnf-"?"ebnf":r==="abnf-"?"abnf":r==="peg-"?"peg":"railroad"}function dR(e,t){switch(t){case"ebnf":{let r=XL(e);return[r,KL(r)]}case"abnf":{let r=YL(e);return[r,GL(r)]}case"peg":{let r=nR(e);return[r,lR(r)]}default:{let r=JL(e);return[r,tR(r)]}}}function fR(e,t,r){let[a,n]=dR(t,r);e.notation=r,a.accDescr&&e.setAccDescription(a.accDescr),a.accTitle&&e.setAccTitle(a.accTitle),a.title&&e.setTitle(a.title);for(let i of n)e.addRule(i)}function uR(e,t){let r=hR(e);if(r===void 0)throw new Ke("No railroad diagram keyword found.","syntax",{type:"railroad"});let a=new oR;return t&&(a.title=t),fR(a,e,r),a}function es(e,t,r,a){let n=e.railroad?.[t];return typeof n=="number"&&n>=0?Math.min(n,a):r}function kd(e){return(e.includes("\xB6\xDF")?Tt(e.replace(/&/g,"&")):e).replace(mR,t=>t===`
|
|
242
|
+
`?"\\n":t==="\r"?"\\r":"\\t")}function $d(e,t){for(let r=t,a=e.length-1;r<a;r++,a--){let n=e[r];e[r]=e[a],e[a]=n}}function L0(e){return Math.ceil(e/2)*2}function T0(e,t,r,a,n){let i=n.height/2,l=Math.max(L0(n.measurer.width(t,n.size,a)+2*n.padding),n.height);return{kind:e,width:l,up:i,down:i,kids:sk,text:t,id:r,reach:0}}function yR(e,t){if(t===1/0&&e<=1)return"";let r=a=>Number.isFinite(a)?String(a):"\u221E";return e===t?r(e)+"\xD7":t===1/0?"\u2265"+r(e)+"\xD7":e===0?"\u2264"+r(t)+"\xD7":r(e)+"\u2013"+r(t)+"\xD7"}function hk(e,t,r,a){return Math.max(e+t.down+a.sep+r.up,2*a.arc)}function ak(e,t){let r=Math.max(e.up+t.sep,2*t.arc);return{kind:5,width:e.width+4*t.arc,up:r,down:e.down,kids:[e],text:"",id:"",reach:r}}function xR(e,t,r=1/0){let a=new Map,n=[[e,r]];for(let i=0;r!==1/0&&i<n.length;i++){let[l,s]=n[i];a.set(l,s);let o=l.type==="choice"||l.type==="optional"?4*t.arc:l.type==="repetition"?(l.min===0?6:2)*t.arc:l.type==="sequence"?6*t.arc:0;for(let c of C0(l))n.push([c,Math.max(40,s-o)])}return lk(e,C0,(i,l)=>{let s=a.get(i)??1/0;switch(i.type){case"terminal":{let o=kd(i.value);return T0(0,/^ +$/.test(o)?"\u2423".repeat(o.length):o,"",4,t)}case"nonterminal":return T0(1,kd(i.name),i.name,0,t);case"special":return T0(2,"? "+kd(i.text)+" ?","",2,t);case"sequence":{let o=Math.max(0,l.length-1)*t.gap,c=0,h=0;for(let $ of l)o+=$.width,c=Math.max(c,$.up),h=Math.max(h,$.down);let d={kind:3,width:o,up:c,down:h,kids:l,text:"",id:"",reach:0};if(o<=s||l.length<2)return d;let f=[],g=[],p=0,m=()=>{let $=0,k=0;for(let I of g)$=Math.max($,I.up),k=Math.max(k,I.down);f.push({kind:3,width:p,up:$,down:k,kids:g,text:"",id:"",reach:0}),g=[],p=0};for(let $ of l)g.length&&p+t.gap+$.width>Math.max(40,s-6*t.arc)&&m(),p+=(g.length?t.gap:0)+$.width,g.push($);if(m(),f.length<2)return d;let x=0,y=0;for(let $=0;$<f.length;$++)x=Math.max(x,f[$].width),$&&(y+=f[$-1].down+Math.max(t.sep,2*t.arc)+f[$].up);return{kind:7,width:x+6*t.arc,up:f[0].up,down:y+f[f.length-1].down,kids:f,text:"",id:"",reach:0}}case"choice":{let o=0,c=0;for(let d=0;d<l.length;d++)o=Math.max(o,l[d].width),d>0&&(c=hk(c,l[d-1],l[d],t));let h=l[l.length-1];return{kind:4,width:o+4*t.arc,up:l.length>0?l[0].up:0,down:h?c+h.down:0,kids:l,text:"",id:"",reach:0}}case"optional":return ak(l[0],t);case"repetition":{let{min:o,max:c}=i,h=l[0];if(o===1&&c===1)return h;let d=yR(o,c),f=Math.max(h.down+t.sep,2*t.arc),g=d===""?0:L0(t.measurer.width(d,vd,0)),p={kind:6,width:Math.max(h.width,g)+2*t.arc,up:h.up,down:f+(d===""?Qa/2+1:vd+6),kids:[h],text:d,id:"",reach:f};return o===0?ak(p,t):p}}})}function bR(e,t,r){return Yr(r,a=>wR(e,t,r,a))}function wR(e,t,r,a){let n=r.fontSize??16,i=es(t,"fontSize",0,200),l=i||Math.round(n*.875),s=i||n,o=es(t,"padding",-1,200),c=Math.round(l*1.5),h={measurer:r.measurer??rt(r.fontFamily,r.fontFamilyMono),size:l,padding:o<0?12:o,height:L0(c+(o<0?9:2*o)),gap:Math.min(es(t,"horizontalSeparation",16,500),a?12:1/0),sep:es(t,"verticalSeparation",10,500),arc:Math.min(es(t,"arcRadius",10,200),a?6:1/0)},d=t.railroad?.showMarkers===!1?0:es(t,"markerRadius",4,50),f=es(t,"strokeWidth",0,20),g=f>0?` stroke-width="${u(f)}"`:"",p=r.padding??8,{arc:m}=h,x=u(m),y=(z,H,P)=>`a${x},${x} 0 0 ${z} ${H}${x},${P}${x}`,$=y(1,"",""),k=y(0,"",""),I=y(0,"","-"),_=y(1,"","-"),L=y(0,"-",""),R=y(0,"-","-"),W=Be(e.title,!1,h.measurer,n,a?Pt(r):4e3,1),q=W.height>0?W.height+16:0,C=Math.round(s*1.5),K=l*.35,Q=h.height/2,G="",Y="",N="",S=(z,H,P)=>{P>z&&(G+=`M${u(z)},${u(H)}H${u(P)}`)},M=(z,H,P)=>{let O=[z],F=[H,P];for(;O.length>0;){let U=O.pop(),j=F.pop(),J=F.pop(),Z=U.kids,B=J+U.width;switch(U.kind){case 3:{let X=B;for(let te=Z.length-1;te>=0;te--)X-=Z[te].width,O.push(Z[te]),F.push(X,j),te>0&&S(X-h.gap,j,X),X-=h.gap;break}case 7:{let X=J+2*m,te=O.length,se=0;S(J,j,X);for(let ce=0;ce<Z.length;ce++){let ae=Z[ce],ie=j+se;if(O.push(ae),F.push(ie,X),ce+1<Z.length){let ee=Z[ce+1],re=se+ae.down+Math.max(h.sep,2*m)+ee.up,fe=j+se+ae.down+Math.max(h.sep,2*m)/2;G+=`M${u(X+ae.width)},${u(ie)}H${u(B-2*m)}V${u(fe)}H${u(J+m)}V${u(j+re)}H${u(X)}`,Y+=`M${u(X-Qa)},${u(j+re-Qa/2)}l${Qa},${Qa/2}l${-Qa},${Qa/2}z`,se=re}else G+=`M${u(X+ae.width)},${u(ie)}H${u(B-m)}V${u(j)}H${u(B)}`}$d(O,te),$d(F,2*te);break}case 4:{let X=U.width-4*m,te=J+m,se=B-m,ce=O.length,ae=0;for(let ie=0;ie<Z.length;ie++){let ee=Z[ie];ie>0&&(ae=hk(ae,Z[ie-1],ee,h));let re=j+ae,fe=J+2*m+(X-ee.width)/2,ye=ie===Z.length-1;ie===0?(S(J,j,fe),S(fe+ee.width,j,B)):G+=(ye?`M${u(J)},${u(j)}${$}V${u(re-m)}`:`M${u(te)},${u(re-m)}`)+k+(fe>te+m?`H${u(fe)}`:"")+`M${u(fe+ee.width)},${u(re)}`+(fe>te+m?`H${u(se-m)}`:"")+I+(ye?`V${u(j+m)}${_}`:""),O.push(ee),F.push(re,fe)}$d(O,ce),$d(F,2*ce);break}case 5:{let X=Z[0],te=J+2*m;S(J,j,te),S(te+X.width,j,B),G+=`M${u(J)},${u(j)}${I}V${u(j-U.reach+m)}${_}H${u(B-2*m)}${$}V${u(j-m)}${k}`,O.push(X),F.push(te,j);break}case 6:{let X=Z[0],te=J+(U.width-X.width)/2,se=j+U.reach,ce=J+U.width/2;S(J,j,te),S(te+X.width,j,B),G+=`M${u(J+m)},${u(j)}${L}V${u(se-m)}${k}H${u(B-m)}${I}V${u(j+m)}${R}`,Y+=`M${u(ce-Qa/2)},${u(se)}l${Qa},${-Qa/2}v${Qa}z`,U.text!==""&&(N+=`<text class="pele-edge-label pele-count" x="${u(ce)}" y="${u(se+vd+3)}" font-size="${vd}" fill="var(--_m)">${Qe(U.text)}</text>`),O.push(X),F.push(te,j);break}default:{let X=U.text,te=X.startsWith(" ")||X.endsWith(" ")||X.includes(" ")?' xml:space="preserve"':"",se=`<rect x="${u(J)}" y="${u(j-Q)}" width="${u(U.width)}" height="${u(h.height)}"`,ce=`<text x="${u(J+U.width/2)}" y="${u(j+K)}"${te}`;U.kind===0?N+=`<g class="pele-node pele-terminal">${se} rx="${u(Q)}" fill="var(--_s)" stroke="var(--_b)"${g}/>${ce} font-family="${Ul}">${Qe(X)}</text></g>`:U.kind===1?N+=`<g class="pele-node pele-nonterminal" data-id="${Pe(U.id)}">${se} fill="var(--_bg)" stroke="var(--_b)"${g}${ot}/>${ce}>${Qe(X)}</text></g>`:N+=`<g class="pele-node pele-special">${se} fill="var(--_bg)" stroke="var(--_b)" stroke-dasharray="4 3"${g}${ot}/>${ce} font-style="italic"><tspan fill="var(--_m)">? </tspan>${Qe(X.slice(2,-2))}<tspan fill="var(--_m)"> ?</tspan></text></g>`}}}},b="",E=W.width,w=p+q,T=p+W.height;for(let z of e.rules){let H=xR(z.definition,h,a?Math.max(80,(r.maxWidth??320)-2*p-4*d-2*S0-1):1/0),P=kd(z.name),O=w+C+pR+H.up,F=p+2*d,U=F+S0,j=U+H.width+S0;G="",Y="",N="",S(F,O,U),S(U+H.width,O,j),M(H,U,O);let J=d>0?`<circle class="pele-marker pele-start" cx="${u(p+d)}" cy="${u(O)}" r="${u(d)}" fill="var(--_l)"/><circle class="pele-marker pele-end" cx="${u(j+d)}" cy="${u(O)}" r="${u(d)}" fill="var(--_l)"/>`:"";b+=`<g class="pele-rule" data-id="${Pe(z.name)}"><text class="pele-rule-name" x="${u(p)}" y="${u(w+C/2+s*.35)}" font-size="${u(s)}" font-weight="var(--_hw)" text-anchor="start">${Qe(P)}</text><path class="pele-edge pele-track" d="${G}" fill="none" stroke="var(--_l)"${g}/>`+(Y?`<path class="pele-marker" d="${Y}" fill="var(--_l)"/>`:"")+J+N+"</g>",E=Math.max(E,j+2*d-p,h.measurer.width(P,s,1)),T=O+H.down,w=T+h.sep+gR}let A=Math.ceil(E+2*p),v=Math.ceil(T+p),D=Re(W,A/2,p+W.height/2,' class="pele-title" font-weight="var(--_tw)"')+(b?`<g class="pele-rules" transform="translate(0.5,0.5)" font-size="${u(l)}" text-anchor="middle">${b}</g>`:"");return{svg:tt("railroad",A,v,n,r,e,D),width:A,height:v,links:[]}}var ik,Ad,Ed,Sd,sk,Po,Id,Md,il,zo,U$,j$,X$,ok,GL,K$,Z$,Q$,J$,ck,UL,KL,_0,di,ZL,tR,tk,rR,lR,oR,cR,S0,pR,gR,vd,Qa,mR,dk,fk=Ge(()=>{xe();Gt();sa();yt();kt();ik="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ad={name:"TITLE",pattern:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/y,first:"t"},Ed={name:"ACC_TITLE",pattern:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/y,first:"a"},Sd={name:"ACC_DESCR",pattern:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/y,first:"a",scanner:BL};sk=[];Po=e=>({type:"terminal",value:e}),Id=e=>({type:"nonterminal",name:e}),Md=e=>({type:"special",text:e}),il=e=>({type:"optional",element:e}),zo=(e,t,r=1/0)=>({type:"repetition",element:e,min:t,max:r});U$="0123456789",j$={name:"ABNF_RULENAME",pattern:/[A-Za-z][A-Za-z0-9-]*/y,first:ik},X$={name:"ABNF_COMMENT",pattern:/;[^\n\r]*/y,hidden:!0,first:";"},ok=[Td("railroad-abnf-beta",j$),St("="),St(";",[X$]),St("/"),St("("),St(")"),St("["),St("]"),Ad,Ed,Sd,j$,{name:"ABNF_STRING",pattern:/"[^"]*"/y,first:'"'},{name:"ABNF_NUMVAL",pattern:/%[xXdDbB][0-9A-Fa-f]+(?:-[0-9A-Fa-f]+|\.[0-9A-Fa-f]+)*/y,first:"%"},{name:"ABNF_REPEAT",pattern:/[0-9]*\*[0-9]*/y,first:U$+"*"},{name:"ABNF_EXACT_REPEAT",pattern:/[0-9]+/y,first:U$},...Cd("ABNF"),X$];GL=e=>Rd(e,qL);K$=I0("EBNF_ID"),Z$={name:"EBNF_SPECIAL_SEQUENCE",pattern:/\?(?=[^?;]*[^?\s;][^?;]*\?)[^?;]*\?/y,first:"?",scanner:()=>HL},Q$=Cd("EBNF"),J$={name:"EBNF_ISO_COMMENT",pattern:/\(\*[\s\S]*?\*\)/y,hidden:!0,first:"(",opener:/\(\*/y},ck=[Td("railroad-ebnf-beta",K$),St("::="),St("="),St(";"),St("|"),St(","),St("(",[J$]),St(")"),St("["),St("]"),St("{"),St("}"),St("?",[Z$]),St("*"),St("+"),St("-",[Q$[1]]),Ad,Ed,Sd,K$,N0("EBNF_STRING"),Z$,...Q$,{name:"EBNF_BLOCK_COMMENT",pattern:/\/\*[\s\S]*?\*\//y,hidden:!0,first:"/",opener:/\/\*/y},J$];UL=["EbnfGroup","EbnfOptional","EbnfRepetition"];KL=e=>Rd(e,VL),_0=I0("RR_ID"),di=e=>St(e,[_0]),ZL=[Td("railroad-beta",_0),di("nonterminal"),di("zeroOrMore"),di("oneOrMore"),di("sequence"),di("optional"),di("terminal"),di("special"),di("choice"),St("="),St(";"),St("("),St(","),St(")"),Ad,Ed,Sd,_0,N0("RR_STRING"),...Cd("RR"),{name:"RR_BLOCK_COMMENT",pattern:/\/\*[\s\S]*?\*\//y,hidden:!0,first:"/",opener:/\/\*/y}];tR=e=>Rd(e,eR),tk=I0("PEG_ID"),rR=[Td("railroad-peg-beta",tk),St("<-"),St(";"),St("/"),St("&"),St("!"),St("?"),St("*"),St("+"),St("("),St(")"),St("."),Ad,Ed,Sd,tk,N0("PEG_STRING"),...Cd("PEG"),{name:"PEG_LINE_COMMENT",pattern:/#[^\n\r]*/y,hidden:!0,first:"#"}];lR=e=>Rd(e,sR),oR=class{constructor(){le(this,"type","railroad");le(this,"notation","railroad");le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"rules",[]);le(this,"byName",new Map)}setTitle(e){this.title=e}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
243
|
+
`)}addRule(e){this.rules.push(e),this.byName.set(e.name,e)}getRule(e){return this.byName.get(e)}},cR=/^\s*railroad-(ebnf-|abnf-|peg-)?beta/i;S0=12,pR=6,gR=18,vd=12,Qa=7;mR=/[\n\r\t]/g;dk={type:"railroad",parse:(e,t,r)=>uR(e,r),render:bR}});var uk={};Rt(uk,{railroad:()=>dk});var pk=Ge(()=>{xe();fk()});function zd(e){return e&&($R.get(e)??e)}function vR(e){return Wc(e)||e==="constructor"}function AR(e,t){for(let r of e)r.isGroup||((!r.shape||r.shape==="squareRect"||r.shape==="rect")&&(r.shape=Fo),kR.has(r.shape)?(t.emitError("SHAPE_REMOVED",`shape "${r.shape}" was removed in v0.8.1, using "${Fo}"`,{nodeId:r.id}),r.shape=Fo):MR.has(r.shape)||(t.emitWarning("SHAPE_UNSUPPORTED",`shape "${r.shape}" is not supported, using "${Fo}"`,{nodeId:r.id}),r.shape=Fo))}function TR(e){return SR.has(e.type)}function R0(e){return e==="markdown"||e==="string"||e==="text"?e:"markdown"}function gk(e){return e.startsWith('"')&&e.endsWith('"')?e.substring(1,e.length-1):e}function B0(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function CR(e){let t=n=>Array.isArray(n)?[]:B0(n)?{}:n,r=t(e),a=[[e,r]];for(;a.length>0;){let[n,i]=a.pop();if(Array.isArray(n))for(let l of n){let s=t(l);i.push(s),typeof l=="object"&&l!==null&&a.push([l,s])}else if(B0(n))for(let l of Object.keys(n)){if(l==="__proto__"||l==="constructor"||l==="prototype")continue;let s=n[l],o=t(s);i[l]=o,typeof s=="object"&&s!==null&&a.push([s,o])}}return r}function Od(e,t){return Object.assign(e??{},t)}function NR(e){let t=!1,r=!1,a=0,n,i=[];for(let l of e.split(`
|
|
244
|
+
`)){if(n!==void 0){let h=l.length-l.trimStart().length;if(l.trim()===""||h>n){i.push(l);continue}n=void 0}let s=-1;for(let h=0;h<l.length;h++){let d=l[h];if(r)d==="\\"?h++:d==='"'&&(r=!1);else if(t)d==="'"&&(t=!1);else if(d==='"')r=!0;else if(d==="'")t=!0;else if(d==="#"&&(h===0||l[h-1]===" "||l[h-1]===" ")){s=h;break}else d==="["||d==="{"?a++:(d==="]"||d==="}")&&(a=Math.max(0,a-1))}if(t||r||a>0){i.push(l);continue}let o=s>=0?l.slice(0,s):l,c=s>=0?l.slice(s):"";if(_R.test(o)){n=l.length-l.trimStart().length,i.push(l);continue}i.push(o.replace(IR,"$1")+c)}return i.join(`
|
|
245
|
+
`)}function LR(e,t){if(e==="arrow_point"&&t==="normal")return"sequence";if(e==="arrow_cross"&&t==="normal")return"failure";if(e==="arrow_open"&&t==="dotted")return"reference"}function RR(e){let t=e.trim(),r=t.slice(0,-1),a="arrow_open";switch(t.slice(-1)){case"x":a="arrow_cross";break;case">":a="arrow_point";break;case"-":case".":r=t;break}let n="normal",i=r.length-1,l=0;for(let s=0;s<r.length;s++)r[s]==="."&&l++;return l>0&&(n="dotted",i=l),{type:a,stroke:n,length:i}}function mk(e){if(!e)return;let t={},r=!1;for(let a of Object.keys(e))ER.has(a)||(t[a]=e[a],r=!0);return r?t:void 0}function XR(e){let t=e.length,r=[],a=[],n=[],i=[],l=[],s=0,o=0,c=1,h=0,d=!0,f=e.indexOf("direction"),g=e.indexOf("@"),p=-1,m=0,x=0,y=-1,$=-1,k=-1,I=-1,_=-1,L=-1,R=-1,W=P=>{let O=-1;for(let F=o;F<P;F++){let U=e.charCodeAt(F);U===10?(c++,O=F):U===13&&(F+1<P&&e.charCodeAt(F+1)===10&&F++,c++,O=F)}if(O<0)h+=P-o;else{let F=O+1;for(;F<P;){let U=e.charCodeAt(F);if(U===8232||U===8233)break;F++}h=F-O-1}o=P},q=(P,O)=>{r.push(P),a.push(e.slice(o,O)),n.push(o),i.push(c,h),W(O),i.push(c,h)},C=(P,O)=>{r.push(P),a.push(e.slice(o,O)),n.push(o),i.push(c,h),h+=O-o,o=O,i.push(c,h)},K=(P,O)=>{r.push(P),a.push(e.slice(o,O)),n.push(o),i.push(c,h);for(let F=o;F<O;F++){let U=e.charCodeAt(F);U===10||U===13?(c++,h=0):h++}o=O,i.push(c,h)},Q=(P,O,F)=>{r.push(P),a.push(O),n.push(o),i.push(c,h),W(F),i.push(c,h)},G=P=>{l.push(s),s=P},Y=()=>{l.length>0&&(s=l.pop())},N=(P,O)=>(P.lastIndex=O,P.test(e)?P.lastIndex:-1),S=P=>e.startsWith(P,o)&&!et(e.charCodeAt(o+P.length)),M=P=>{if(P>=$&&P<=k)return k;let O=P;for(;O<t&&je(e.charCodeAt(O));)O++;return $=P,k=O,O},b=P=>{if(P>=I&&P<=_)return _;let O=P;for(;O<t;){let F=e.charCodeAt(O);if(F!==32&&F!==9)break;O++}return I=P,_=O,O},E=P=>{let O=M(P);if(O===R||e.charCodeAt(O)!==45||e.charCodeAt(O+1)!==45)return-1;let F=O+2;for(;e.charCodeAt(F)===45;)F++;let U=e.charCodeAt(F);return U===120||U===62?M(F+1):(R=O,-1)},w=()=>{let P=M(o);if(P===L||e.charCodeAt(P)!==45)return!1;let O=e.charCodeAt(P+1),F=P+2;if(O===45){for(;e.charCodeAt(F)===45;)F++;let U=e.charCodeAt(F);return U===120||U===62?q(42,M(F+1)):(G(10),q(43,M(P+2))),!0}if(O===46){for(;e.charCodeAt(F)===46;)F++;if(e.charCodeAt(F)===45)return q(42,M(F+1)),!0}return L=P,!1},T=P=>{if(e.charCodeAt(P)!==37||e.charCodeAt(P+1)!==37||e.charCodeAt(P+2)===123)return-1;let O=e.indexOf(`
|
|
246
|
+
`,P+2);return O===-1?t:O},A=()=>{e.charCodeAt(o+1)===96?(G(2),W(o+2)):(G(1),W(o+1))},v=P=>{let O=e.charCodeAt(o+1);return P===40?(O===45?(G(8),C(47,o+2)):O===91?(G(7),C(49,o+2)):O===40&&e.charCodeAt(o+2)===40?(G(7),C(57,o+3)):(G(7),C(72,o+1)),!0):P===91?(O===91?(G(7),C(51,o+2)):O===40?(G(7),C(55,o+2)):O===47?(G(9),C(60,o+2)):O===92?(G(9),C(61,o+2)):(G(7),C(74,o+1)),!0):P===124?(G(7),C(70,o+1),!0):P===123?(G(7),C(76,o+1),!0):!1},D=()=>{let P=o;for(;P<t;){let O=e.charCodeAt(P);if(O<128&&Mk[O]===1)P++;else if(O===45&&P+1<t){let F=e.charCodeAt(P+1);if(F===62||F===45||F===46)break;P++}else break}return P===o?!1:(C(67,P),!0)},z=P=>{let O=P;for(;O<t;){let F=e.charCodeAt(O);if(F!==32&&F!==9)break;O++}return O},H=P=>{let O;switch(P){case 97:if(e.startsWith("acc",o)){if((O=N(DR,o))>=0)return G(3),q(2,O),!0;if((O=N(PR,o))>=0)return G(4),q(4,O),!0;if((O=N(zR,o))>=0)return G(5),W(O),!0}if(S("agentflow-beta"))return d&&(d=!1,G(6)),C(20,o+14),!0;break;case 64:if(e.charCodeAt(o+1)===123)return G(14),Q(7,"",o+2),!0;break;case 99:if((O=N(FR,o))>=0)return G(12),W(O),!0;if(S("classDef"))return C(16,o+8),!0;if(S("class"))return C(17,o+5),!0;if((O=N(BR,o))>=0)return G(11),W(O),!0;if(S("connector"))return C(22,o+9),!0;break;case 34:return A(),!0;case 115:if(S("style"))return C(12,o+5),!0;break;case 100:if(S("default"))return C(13,o+7),!0;break;case 108:if(S("linkStyle"))return C(14,o+9),!0;break;case 105:if(S("interpolate"))return C(15,o+11),!0;break;case 104:if(e.startsWith("href",o)&&je(e.charCodeAt(o+4)))return q(18,o+5),!0;break;case 102:if(S("flow"))return C(21,o+4),!0;break;case 103:if(S("global"))return C(23,z(o+6)),!0;break;case 101:if(S("end"))return C(24,z(o+3)),!0;break;case 95:if(S("_self"))return C(25,o+5),!0;if(S("_blank"))return C(25,o+6),!0;if(S("_parent"))return C(25,o+7),!0;if(S("_top"))return C(25,o+4),!0;break}if(f!==-1&&o>=m&&(f<o&&(f=e.indexOf("direction",o)),f!==-1&&(p<o&&(O0.lastIndex=o,p=O0.test(e)?O0.lastIndex-1:t),f<p))){for(let F=0;F<5;F++)if((O=N(HR[F],o))>=0)return q(28+F,O),!0;m=p}if(g!==-1&&P!==34&&!je(P)){if(o>=x){g<o&&(g=e.indexOf("@",o));let F=o;for(;F<t;){let U=e.charCodeAt(F);if(U===34||je(U))break;F++}if(x=F,y=-1,g!==-1&&g<F)for(let U=Math.min(F,t-1)-1;U>=g;U--){if(e.charCodeAt(U)!==64)continue;let j=e.charCodeAt(U+1);if(j!==123&&j!==34){y=U;break}}}if(y>o)return C(33,y+1),!0}if(P>=48&&P<=57){let F=o+1;for(;F<t;){let U=e.charCodeAt(F);if(U<48||U>57)break;F++}return C(34,F),!0}switch(P){case 35:return C(35,o+1),!0;case 58:return e.charCodeAt(o+1)===58&&e.charCodeAt(o+2)===58?C(36,o+3):C(37,o+1),!0;case 38:return C(38,o+1),!0;case 59:return C(39,o+1),!0;case 44:return C(40,o+1),!0;case 42:return C(41,o+1),!0;case 60:return C(62,o+1),!0;case 45:return w()||D()||C(68,o+1),!0;case 40:return v(P);case 91:return e.charCodeAt(o+1)===124?(C(52,o+2),!0):v(P);case 124:case 123:return v(P);case 62:return G(7),C(53,o+1),!0;case 94:return C(63,o+1),!0;case 92:return e.charCodeAt(o+1)===124?(C(64,o+2),!0):D();case 118:return et(e.charCodeAt(o+1))?D():(C(65,o+1),!0);case 37:return(O=T(o))>=0?(q(66,O),!0):D()}if(je(P)){if(w())return!0;if((P===32||P===9)&&(O=T(b(o)))>=0)return q(66,O),!0;for(O=o;;){let F=e.charCodeAt(O);if(F===10)O++;else if(F===13&&e.charCodeAt(O+1)===10)O+=2;else break}return O>o?q(77,O):q(78,o+1),!0}return P<128?D():Cs(P)?(C(69,o+1),!0):!1};e:for(;;){if(o>=t){let F=-1;switch(s){case 0:F=79;break;case 3:F=3;break;case 4:F=5;break;case 5:F=6;break;case 11:F=19;break;case 12:F=8;break;case 13:F=9;break}F!==-1&&C(F,t);break}let P=e.charCodeAt(o),O=!0;switch(s){case 0:O=H(P);break;case 1:if(P===34)e.charCodeAt(o+1)===96?(G(2),W(o+2)):(Y(),W(o+1));else{let F=e.indexOf('"',o);q(11,F===-1?t:F)}break;case 2:if(P===96)e.charCodeAt(o+1)===34?(Y(),W(o+2)):O=!1;else if(P===34)A();else{let F=o+1;for(;F<t;){let U=e.charCodeAt(F);if(U===96||U===34)break;F++}q(10,F)}break;case 3:case 4:{let F=e.indexOf(`
|
|
247
|
+
`,o);F===-1&&(F=t);let U=s===3?3:5;Y(),q(U,F);break}case 5:if(P===125)Y(),W(o+1);else{let F=e.indexOf("}",o);F===-1&&(F=t),q(6,F)}break;case 6:{let F;P===34?A():(F=N(WR,o))>=0?(Y(),q(26,F)):(F=N(YR,o))>=0||(F=N(qR,o))>=0||(F=N(GR,o))>=0?(Y(),q(27,F)):O=v(P);break}case 7:{let F=e.charCodeAt(o+1);switch(P){case 34:A();break;case 40:case 91:case 123:v(P);break;case 93:Y(),F===41?C(48,o+2):F===93?C(50,o+2):C(73,o+1);break;case 41:Y(),F===93?C(54,o+2):F===41&&e.charCodeAt(o+2)===41?C(56,o+3):C(71,o+1);break;case 124:Y(),C(70,o+1);break;case 125:Y(),C(75,o+1);break;case 37:{let U=T(o);U>=0?W(U):O=!1;break}default:{let U=o+1;for(;U<t;){let j=e.charCodeAt(U);if(j===91||j===93||j===40||j===41||j===123||j===125||j===124||j===34||j===37)break;U++}q(46,U)}}break}case 8:{let F=e.charCodeAt(o+1),U;if(P===34)A();else if(P===37&&(U=T(o))>=0)W(U);else if((P===45||P===47||P===41)&&F===41)Y(),C(45,o+2);else if(P===40||P===91||P===123)v(P);else if(P===41||P===93||P===125)O=!1;else{let j=o+1;for(;j<t;){let J=e.charCodeAt(j);if(J===34||J===40||J===41||J===91||J===93||J===123||J===125||(J===45||J===47)&&e.charCodeAt(j+1)===41||J===37&&e.charCodeAt(j+1)===37&&e.charCodeAt(j+2)!==123)break;j++}K(46,j)}break}case 9:{let F=e.charCodeAt(o+1);if(P===34){A();break}switch(P){case 40:F===45||F===91||F===40&&e.charCodeAt(o+2)===40?v(P):F===93?(Y(),C(58,o+2)):v(P);break;case 91:case 123:v(P);break;case 92:F===93?(Y(),C(58,o+2)):C(46,o+1);break;case 47:F===93?(Y(),C(59,o+2)):C(46,o+1);break;case 93:case 41:F===93?(Y(),C(58,o+2)):O=!1;break;case 125:O=!1;break;case 37:{let U=T(o);U>=0?W(U):O=!1;break}default:{if((P===63||P===61)&&F===93){Y(),C(58,o+2);break}let U=o+1;for(;U<t;){let j=e.charCodeAt(U);if(j===92||j===91||j===93||j===40||j===41||j===123||j===125||j===47||j===37)break;U++}q(46,U)}}break}case 10:{if(P===34){A();break}let F=E(o);if(F>=0){Y(),q(42,F);break}if(P===45&&e.charCodeAt(o+1)===45){O=!1;break}let U=o+1;for(;U<t;){let j=e.charCodeAt(U);if(j===34)break;if(j===45){if(e.charCodeAt(U+1)===45)break}else if(je(j)&&E(U)>=0)break;U++}K(44,U);break}case 11:if(P===34)A();else if(je(P))Y(),W(o+1);else{let F=o+1;for(;F<t&&!je(e.charCodeAt(F));)F++;C(19,F)}break;case 12:if(P===40){let F=N(UR,o);Y(),F>=0?W(F):(G(13),W(o+1))}else{let F=e.indexOf("(",o);F===-1&&(F=t),q(8,F)}break;case 13:if(P===41)Y(),W(o+1);else{let F=e.indexOf(")",o);F===-1&&(F=t),q(9,F)}break;case 14:if(P===34)G(15),C(7,o+1);else if(P===125)Y(),W(o+1);else if(P===94)O=!1;else{let F=o+1;for(;F<t;){let U=e.charCodeAt(F);if(U===125||U===94||U===34)break;F++}q(7,F)}break;case 15:if(P===34)Y(),C(7,o+1);else{let F=e.indexOf('"',o);F===-1&&(F=t),Q(7,e.slice(o,F).replace(jR,"<br/>"),F)}break}if(!O)return r.push(1),a.push(""),n.push(o),i.push(c,h,c,h),{types:r,texts:a,starts:n,locs:i};continue e}return r.push(0),a.push(""),n.push(t),i.push(c,h,c,h),{types:r,texts:a,starts:n,locs:i}}function KR(e,t,r=!1){let a=!r&&e.includes("}")?e.replace(VR,`}
|
|
248
|
+
`):e,{types:n,texts:i,starts:l,locs:s}=XR(a),o=0,c,h=0,d=0,f=A=>{let v=n[o];throw v===1?st("agentflow",a,l[o],"",!0):st("agentflow",a,l[o],`Expecting ${A}, got '${yk[v]}'`)},g=(A,v)=>({first_line:s[4*A],first_column:s[4*A+1],last_line:s[4*v+2],last_column:s[4*v+3]}),p=(A,v="")=>(n[o]!==A&&f(`'${yk[A]}'${v?", "+v:""}`),i[o++]),m=()=>{Bd[n[o]]===0&&f(D0),o++},x=()=>{Fd[n[o]]===0&&f("'NODE_STRING'");let A=i[o++];for(;Fd[n[o]]===1;)A+=i[o++];return A},y=()=>{W0[n[o]]===0&&f("'NODE_STRING'");let A=i[o++];for(;W0[n[o]]===1;)A+=i[o++];return A},$=()=>{let A=n[o],v;if(A===11)v="string";else if(A===10)v="markdown";else if(A===46||A===62||A===53||A===69)v="text";else return f(`${xk}, 'TAGEND', 'STR', 'MD_STR'`);let D=i[o++];for(;;){let z=n[o];if(z!==46&&z!==62&&z!==53&&z!==69)break;D+=i[o++]}return{text:D,type:v}},k=A=>{p(A,xk)},I=()=>{let A=n[o],v;if(A===11)v="string";else if(A===10)v="markdown";else if(A===44||A===69)v="text";else return f("'EDGE_TEXT', 'STR', 'MD_STR'");let D=i[o++];for(;n[o]===44||n[o]===69;)D+=i[o++];return{text:D,type:v}},_=()=>{let A=n[o],v;if(A===11)v="text";else if(A===10)v="markdown";else if(Y0[A]===1)v="text";else return f("'NODE_STRING', 'STR', 'MD_STR'");let D=i[o++];for(;Y0[n[o]]===1;)D+=i[o++];return{text:D,type:v}},L=()=>{h=o;let A=i[o++];for(;n[o]===7;)A+=i[o++];return d=o-1,A},R=(A,v,D,z)=>{let H=g(D,z);t.addVertex(A,void 0,void 0,void 0,void 0,void 0,void 0,v,H),t.extendVertexMapping(A,H)},W=(A,v)=>{v.data!==void 0&&t.addVertex(A,void 0,void 0,void 0,void 0,void 0,void 0,v.data,g(v.dataFrom,v.dataTo))},q=()=>{let A=o,v=x(),D,z,H;switch(n[o]){case 74:o++,D=$(),k(73),z="square";break;case 57:o++,D=$(),k(56),z="doublecircle";break;case 72:o++,n[o]===72?(o++,D=$(),k(71),p(71),z="circle"):(D=$(),k(71),z="round");break;case 47:o++,D=$(),k(45),z="ellipse";break;case 49:o++,D=$(),k(48),z="stadium";break;case 51:o++,D=$(),k(50),z="subroutine";break;case 52:{o++;let P=p(67);p(37);let O=p(67);p(70),D=$(),k(73),z="rect",H={[P]:O};break}case 55:o++,D=$(),k(54),z="cylinder";break;case 76:o++,n[o]===76?(o++,D=$(),k(75),p(75),z="hexagon"):(D=$(),k(75),z="diamond");break;case 53:o++,D=$(),k(73),z="odd";break;case 60:o++,D=$(),n[o]===59?(o++,z="lean_right"):(k(58),z="trapezoid");break;case 61:o++,D=$(),n[o]===58?(o++,z="lean_left"):(k(59),z="inv_trapezoid");break}return H!==void 0?t.addVertex(v,D,z,void 0,void 0,void 0,H):z!==void 0?t.addVertex(v,D,z):t.addVertex(v),t.addVertexMapping(v,D,z,g(A,o-1)),v},C=()=>{let A=q();return n[o]===36&&(o++,t.setClass(A,x())),A},K=()=>{let A=[C()];for(c=void 0;;){let v=n[o]===7?L():void 0,D=h,z=d;if(n[o]!==78)return c=v,A;do o++;while(n[o]===78);if(n[o]!==38)return v!==void 0&&f("'AMP'"),A;o++,n[o]!==78&&f("'SPACE'");do o++;while(n[o]===78);let H=C();v!==void 0&&R(A[A.length-1],v,D,z),A.push(H)}},Q=()=>{let A;if(n[o]===33&&(A=i[o++]),n[o]===42){let v=t.destructLink(i[o++]);return A!==void 0&&(v.id=A),n[o]===70&&(o++,v.text=$(),k(70),n[o]===78&&o++),v}if(n[o]===43){let v=i[o++],D=I(),z=p(42,"'EDGE_TEXT'"),H=t.destructLink(z,v);return H.text=D,A!==void 0&&(H.id=A),H}return f("'LINK', 'START_LINK'")},G=()=>{let A=o,v=K();c!==void 0&&R(v[v.length-1],c,h,d);let D=v;for(;;){let z=n[o];if(z!==42&&z!==43&&z!==33)return D;let H=Q(),P=K();c!==void 0&&R(P[P.length-1],c,h,d),t.addLink(v,P,H),t.addEdgeMapping(v,P,H,g(A,o-1)),D=P.concat(D),v=P}},Y=()=>{q0[n[o]]===0&&f("'NODE_STRING', 'NUM', 'COLON', 'BRKT'");let A=i[o++];for(;q0[n[o]]===1;)A+=i[o++];return A},N=()=>{let A=[Y()];for(;n[o]===40;)o++,A.push(Y());return A},S=()=>{o++,p(78);let A;if(n[o]===13)A=[i[o++]];else for(A=[p(34,"'DEFAULT'")];n[o]===40;)o++,A.push(p(34));if(p(78),n[o]!==15){t.updateLink(A,N());return}o++,p(78);let v=y();if(n[o]===78){o++;let D=N();t.updateLinkInterpolate(A,v),t.updateLink(A,D)}else t.updateLinkInterpolate(A,v)},M=(A,v)=>{if(n[o]!==78){t.setLink(A,v);return}if(o++,n[o]===25){t.setLink(A,v,i[o++]);return}let D=p(11,"'LINK_TARGET'");n[o]===78?(o++,t.setLink(A,v,p(25))):t.setLink(A,v),t.setTooltip(A,D)},b=()=>{let A=i[o++];switch(n[o]){case 8:{let v=i[o++],D=n[o]===9,z=D?i[o++]:void 0,H;n[o]===78&&(o++,H=p(11)),D?t.setClickEvent(A,v,z):t.setClickEvent(A,v),H!==void 0&&t.setTooltip(A,H);return}case 18:o++,M(A,p(11));return;case 11:M(A,i[o++]);return;default:{let v=y();if(n[o]===78){o++;let D=p(11);t.setClickEvent(A,v),t.setTooltip(A,D)}else t.setClickEvent(A,v)}}},E=A=>{p(78,D0);let v=_(),D={text:"",type:"text"};n[o]===74&&(o++,D=$(),k(73));let z=n[o]===7?L():void 0;return Bd[n[o]]===0&&f(`${D0}, 'SHAPE_DATA'`),{global:!1,at:A,id:v,title:D,data:z,dataFrom:h,dataTo:d,list:[],collect:!1}},w=()=>{let A=n[o];switch(A){case 12:{o++,p(78);let v=x();return p(78),t.addVertex(v,void 0,void 0,N()),m(),Bo}case 14:return S(),m(),Bo;case 16:{o++,p(78);let v=x();return p(78),t.addClass(v,N()),m(),Bo}case 17:{o++,p(78);let v=x();return p(78),t.setClass(v,x()),m(),Bo}case 19:return b(),m(),Bo;case 22:{let v=E(o++),D=o++,z=t.addConnector(v.id,v.title);return W(z,v),t.addConnectorMapping(v.id,v.title,g(v.at,v.at),g(D,D)),z}case 28:case 29:case 30:case 31:case 32:return o++,{stmt:"dir",value:ZR[A-28]};case 2:{o++;let v=p(3).trim();return t.setAccTitle(v),v}case 4:{o++;let v=p(5).trim();return t.setAccDescription(v),v}case 6:{let v=i[o++].trim();return t.setAccDescription(v),v}default:{Fd[A]===0&&f(bk);let v=G();return m(),v}}},T=()=>{let A=[],v=[],D=!1;for(;;){let z=n[o];if(z===0)break;if(z===24){let H=A.pop();if(H===void 0)break;let P=o++;if(H.global){t.addGlobal(v),v=H.list,D=H.collect;continue}let O=t.addSubGraph(H.id,v,H.title,"flow");W(O,H),t.addSubgraphMapping(H.id,H.title,g(H.at,H.at),g(P,P)),v=H.list,D=H.collect,D&&v.push(O)}else if(z===39||z===77||z===78||z===79)D&&v.push(i[o]),o++;else if(z===66)o++;else if(z===21||z===23){let H=o++,P;z===23||Bd[n[o]]===1?(P={global:z===23,at:H,id:void 0,title:void 0,data:void 0,dataFrom:0,dataTo:0,list:v,collect:D},m()):(P=E(H),P.list=v,P.collect=D,o++),A.push(P),v=[],D=!0}else{let H=w();D&&(!Array.isArray(H)||H.length>0)&&v.push(H)}}A.length>0&&f("'end'")};for(;n[o]===78||n[o]===77||n[o]===66;)o++;if(p(20,"'SPACE', 'NEWLINE', 'COMMENT'"),n[o]===26)o++,t.setDirection("TB");else{let A=p(27,"'NODIR'"),v=n[o];if(v===78){do o++;while(n[o]===78);v=n[o],v!==77&&f("'NEWLINE', 'SPACE'")}else v!==39&&v!==77&&v!==66&&f("'COMMENT', 'SEMI', 'NEWLINE', 'SPACE'");o++,t.setDirection(A)}T(),n[o]!==0&&f(bk)}function eO(e,t,r,a){let n=r.size;for(let i of e){if(i.isGroup||i.shape==="collapsedGroup"){i.colorIndex=JR(r.get(i.id)??n++,a);continue}let l=t(i.id);l&&ll.has(l)&&(i.kind=l)}}function tO(e,t,r){let a=[],n=[],i=e.subgraphs,l=y=>{let $=[];for(let k of y){let I=e.classes.get(k);I?.styles&&($=[...$,...I.styles].map(_=>_.trim())),I?.textStyles&&($=[...$,...I.textStyles].map(_=>_.trim()))}return $},s=new Set,o=new Map,c=new Set;for(let y of i){if(y.metadata?.view!=="collapsed"||s.has(y.id))continue;let $=[y.id];for(;$.length>0;){let k=e.subgraph($.pop())?.nodes;if(k!==void 0)for(let I of k)I===y.id||s.has(I)||(s.add(I),o.set(I,y.id),c.has(I)||$.push(I))}c.add(y.id)}let h=new Map;for(let y of s){let $=[y],k=o.get(y);for(;;){let I=h.get(k),_=I??o.get(k);if(_===void 0||(I===void 0&&$.push(k),k=_,I!==void 0))break}for(let I of $)h.set(I,k)}let d=new Map;i.forEach((y,$)=>d.set(y.id,$));let f=new Map,g=(y,$,k)=>{let I=d.get(y);if(I===void 0||I<k)return!1;let _=$;for(let L=0;_!==void 0&&L<=i.length;L++){if(_===y)return!0;_=f.get(_)}return!1};for(let y=i.length-1;y>=0;y--){let $=i[y];if(!s.has($.id))for(let k of $.nodes){if(g(k,$.id,y)){e.emitWarning("CONTAINMENT_VIOLATION",`Container "${$.id}" cannot contain "${k}" because "${k}" already contains it. The nesting that would close the loop is dropped.`,{nodeId:k});continue}f.set(k,$.id)}}let p=new Map;for(let y=i.length-1;y>=0;y--){let $=i[y];if(s.has($.id))continue;let k=$.metadata?.view==="collapsed",I={id:$.id,label:$.title,labelType:$.labelType,parentId:f.get($.id),cssStyles:[],cssCompiledStyles:l($.classes),cssClasses:$.classes.join(" "),shape:k?"collapsedGroup":"flowGroup",dir:$.dir,isGroup:!k,metadata:k?{...$.metadata,containerType:$.type}:$.metadata};a.push(I),p.set($.id,I)}for(let y of e.nodes.values()){if(s.has(y.id))continue;let $=p.get(y.id);if($){$.cssStyles=y.styles,$.cssCompiledStyles=l(y.classes),$.cssClasses=y.classes.join(" ");continue}let k=zd(y.type),I={id:y.id,label:y.text,labelType:y.labelType,parentId:f.get(y.id),cssStyles:y.styles,cssCompiledStyles:l(["default","node",...y.classes]),cssClasses:"default "+y.classes.join(" "),dir:y.dir,link:y.link,linkTarget:y.linkTarget,tooltip:e.tooltips.get(y.id),metadata:y.metadata,isGroup:!1,shape:k==="square"||k===void 0?"squareRect":k};a.push(I),p.set(y.id,I)}e.edges.forEach((y,$)=>{let k=h.get(y.start)??y.start,I=h.get(y.end)??y.end;if(k===I&&y.start!==y.end)return;let _=[...e.defaultEdgeStyle??[]];y.style&&_.push(...y.style);let L=y.type==="arrow_open"?"none":y.type==="arrow_cross"||y.type==="arrow_point"?y.type:"arrow_point";n.push({id:y.id||`L_${k}_${I}_${$}`,isUserDefinedId:y.isUserDefinedId,start:k,end:I,type:y.type??"normal",label:y.text,labelType:y.labelType,thickness:y.stroke,pattern:y.stroke,minlen:y.length,classes:"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:"none",arrowTypeEnd:L,cssCompiledStyles:l(y.classes),style:_,animate:y.animate,animation:y.animation,curve:y.interpolate||e.defaultInterpolate||r,metadata:y.metadata})}),AR(a,e);let m=new Map;for(let y of i){let $=f.get(y.id);if($===void 0)continue;let k=m.get($);k?k.push(y.id):m.set($,[y.id])}let x=new Map;for(let y of i){if(f.get(y.id)!==void 0)continue;let $=[y.id];for(;$.length>0;){let k=$.pop();if(x.has(k))continue;x.set(k,x.size);let I=m.get(k);if(I)for(let _=I.length-1;_>=0;_--)$.push(I[_])}}return eO(a,y=>{if(e.connectors.has(y))return"connector";let $=e.nodes.get(y);return $?e.vertexKind($):void 0},x,t),{nodes:a,edges:n}}function Ak(e,t){let r=$k.get(e);if(r===void 0){let a=t.flowchart?.curve;r=tO(e,rO,typeof a=="string"?a:void 0),$k.set(e,r)}return r}function Pd(e,t,r){let a=e.agentflow?.[t];return typeof a=="number"&&a>0?Math.min(a,2e3):r}function z0(e,t,r){let a=pt(e);return` fill="${a}"${lO.test(r.shape)?"":` fill-opacity="${t}"`} stroke="${a}"`}function oO(e,t,r){return na(e.direction)?jt(r,a=>kk(e,t,r,a)):kk(e,t,r,!1)}function kk(e,t,r,a){let n=Ak(e,t),i=r.fontSize??16,l=Math.round(i*.875),s=r.measurer??rt(r.fontFamily),o=Pd(t,"wrappingWidth",120),c=Pd(t,"minNodeWidth",120),h=r.padding??8,d=r.icons,f=new Map,g=[],p=[];n.nodes.forEach((F,U)=>f.set(F.id,U));for(let F of n.nodes){let U=F.cssStyles.length>0?F.cssCompiledStyles.concat(F.cssStyles):F.cssCompiledStyles,j=Ct(U),J=(j.bold?1:0)|(j.italic?2:0),Z=F.labelType==="markdown",B=j.fontSize??i,X,te;if(F.isGroup){let se=Be(F.label,Z,s,B,4e3,J);X={node:F,style:j,label:se,shape:"group",w:0,h:0,dy:0,loops:0},te=Kt(0,0),te.isGroup=!0,te.dir=F.dir?Cr(F.dir):void 0,te.padX=Wo,te.padTop=se.height>0?se.height+16:Wo,te.padBottom=Wo,te.minW=se.width+2*Wo-12}else if(F.shape==="collapsedGroup"){let se=Be(F.label,Z,s,B,o,J),ce=Math.max(se.width,c)+2*bt,ae=se.height+2*vt+Dd;X={node:F,style:j,label:se,shape:wk,w:ce,h:ae,dy:-Dd/2,loops:0},te=Kt(ce,ae)}else{let se=Yc(F.shape),ce=Be(F.label,Z,s,B,o,J),ae=Zn(se,se==="diam"?ce.width:Math.max(ce.width,c),ce.height);X={node:F,style:j,label:ce,shape:se,w:ae.w,h:ae.h,dy:ae.dy,loops:0},te=Kt(ae.w,ae.h)}te.seq=g.length,g.push(X),p.push(te)}n.nodes.forEach((F,U)=>{p[U].parent=F.parentId!==void 0?f.get(F.parentId)??-1:-1});let m=a?"TB":Cr(e.direction),x=F=>{let U;for(let j=p[F].parent,J=0;j>=0&&U===void 0&&J<1e4;j=p[j].parent,J++)U=p[j].dir;return U??m},y=F=>{let U=x(F);return U==="LR"||U==="RL"},$=new Int32Array(p.length).fill(-1);for(let F=0;F<p.length;F++){let U=[],j=F;for(;j>=0&&$[j]<0&&U.length<=p.length;)U.push(j),j=p[j].parent;let J=j>=0?$[j]+1:0;for(let Z=U.length-1;Z>=0;Z--)$[U[Z]]=J++}let k=(F,U)=>{let j=U;for(let J=$[U];J>$[F];J--)j=p[j].parent;return j===F&&U!==F},I=[],_=[],L=[],R=[];for(let F of n.edges){let U=f.get(F.start),j=f.get(F.end);if(U===void 0||j===void 0)continue;let J=Be(F.label,F.labelType==="markdown",s,l,o);if(k(U,j)||k(j,U)){R.push({edge:F,label:J,src:U,dst:j});continue}U===j&&(g[U].loops++,y(U)?p[U].h+=2*(P0+(J.height>0?J.height+8:0)):p[U].w+=2*(P0+(J.width>0?J.width+12:0))),L.push(F),_.push(J),I.push({src:U,dst:j,minlen:F.minlen??1,labelW:J.width>0?J.width+12:0,labelH:J.height>0?J.height+4:0,route:[],labelX:0,labelY:0})}let W=aa(p,I,m,{nodeSep:Pd(t,"nodeSpacing",aO),edgeSep:nO,rankSep:Pd(t,"rankSpacing",iO),portSep:20}),q=Be(e.title,!1,s,i,4e3,1),C=q.height>0?q.height+12:0,K=Math.max(W.width,q.width),Q=h+(K-W.width)/2,G=h+C;Vn(p,I,Q,G);let Y=Math.ceil(K+2*h),N=Math.ceil(W.height+C+2*h),S=[],M=[],b=[],E=[],w=R.length*p.length<2e6;for(let{edge:F,src:U,dst:j}of R){let J=k(j,U),Z=J?j:U,B=J?U:j,X=p[Z],te=p[B],se=sO[X.dir??x(Z)],ce=J?se:se+2&3,ae=fe=>{let ye=(fe&1)===0,oe=fe===0||fe===3?-1:1,we=ye?te.x:te.x+oe*te.w/2,ue=ye?te.y+oe*te.h/2:te.y,ge=ye?te.x:X.x+oe*X.w/2,Ae=ye?X.y+oe*X.h/2:te.y,Te=ye?0:1;return J?[we,ue,Te,ge,Ae,Te]:[ge,Ae,Te,we,ue,Te]},ie=fe=>{for(let ye=0;ye<p.length;ye++){let oe=p[ye];if(ye!==B&&!oe.isGroup&&oe.x+oe.w/2>Math.min(fe[0],fe[3])-1&&oe.x-oe.w/2<Math.max(fe[0],fe[3])+1&&oe.y+oe.h/2>Math.min(fe[1],fe[4])-1&&oe.y-oe.h/2<Math.max(fe[1],fe[4])+1)return!0}return!1},ee=ae(ce);if(w&&ie(ee))for(let fe of[ce+1&3,ce+3&3,ce+2&3]){let ye=ae(fe);if(!ie(ye)){ee=ye;break}}E.push(ee),b.push((ee[0]+ee[3])/2,(ee[1]+ee[4])/2);let re=ee.slice();Oi(re,J?0:3,g[B],te),M.push(Xr(re,"linear",0,xt(F.arrowTypeEnd)))}let T=new Map,A=!1;for(let F of p)F.isGroup&&(A=!0);if(A){for(let F of I)Ya(T,F.route);for(let F of E)Ya(T,F)}let v="",D="";for(let F=0;F<g.length;F++){let U=g[F],j=p[F],J=U.node,Z=j.x,B=j.y,X=Dt(J.cssClasses.replace(/^default\s?/,"")),te=Pe(J.id);if(j.isGroup){let fe=Xn(j,U.label.width,T,Wo);v+=`<g class="pele-cluster pele-flow${X}" data-id="${te}"><rect x="${u(Z-j.w/2)}" y="${u(B-j.h/2)}" width="${u(j.w)}" height="${u(j.h)}"${gt(z0(J.colorIndex??ll.size,"0.06",U.style)+U.style.shape)}/>`+Re(U.label,fe,B-j.h/2+8+U.label.height/2,` class="pele-cluster-label" fill="var(--_m)"${U.style.text}`,d)+"</g>";continue}let se=U.w,ce=U.h,ae="",ie;if(U.shape===wk){let fe=pt(J.colorIndex??ll.size),ye=ce/2-Dd-2,oe=ye+(Dd+2)/2;ie=`<rect x="${u(-se/2)}" y="${u(-ce/2)}" width="${u(se)}" height="${u(ce)}"${gt(z0(J.colorIndex??ll.size,"0.06",U.style)+U.style.shape)}/><path d="M${u(-se/2+10)},${u(ye)}H${u(se/2-10)}" fill="none" stroke="${fe}" stroke-dasharray="3 3"${U.style.line}/><path class="pele-collapsed-mark" d="${F0(-9,oe)}${F0(0,oe)}${F0(9,oe)}" fill="${fe}" stroke="none"/>`}else{let fe=ll.get(J.kind??"task")??1;ae=` pele-kind-${J.kind??"task"}`,ie=Ua(U.shape,se,ce,z0(fe,"0.14",U.style)+U.style.shape,` stroke="${pt(fe)}"`+U.style.line)}let ee=Re(U.label,0,U.dy,` class="pele-label"${U.style.text}`,d);if(/ internal-link(?: |$)/.test(X+" ")&&J.label&&r.links!==!1){let fe=Tt(J.label),ye=Cn(Ga(fe),r)!==void 0,oe=Qe(fe);ee=`<a class="internal-link"${ye?` href="${oe}"${_n(r)}`:""} data-href="${oe}">${ee}</a>`,S.push({id:J.id,href:fe,internal:!0})}let re=ie+ee;J.tooltip&&(re=`<title>${Pe(J.tooltip)}</title>`+re),J.link&&(re=Ca(re,J.link,J.id,S,r,J.linkTarget?` target="${Qe(J.linkTarget)}"`:"")),D+=`<g class="pele-node pele-shape-${U.shape}${ae}${X}" data-id="${te}" transform="translate(${u(Z)},${u(B)})">${re}</g>`}let z="",H="",P=(F,U,j,J,Z)=>{let B=F.style.length>0||F.cssCompiledStyles.length>0?Ct(F.cssCompiledStyles.concat(F.style)):void 0,X=F.arrowTypeEnd,te=B?.stroke?Qe(B.stroke):"var(--_l)",se=F.thickness==="dotted"?"reference":X==="arrow_cross"?"failure":"sequence",ce=Dt(F.classes.replace(/edge-thickness-normal|edge-pattern-solid|flowchart-link/g,""));z+=`<g class="pele-edge pele-edge-${se}${ce}" data-id="${Pe(F.id)}"${B?.line??""}><path d="${j.d}"${F.thickness==="dotted"?' stroke-dasharray="3 4"':""}/>`+Mt(X,j.ex,j.ey,j.edx,j.edy,te)+"</g>",U.width>0&&(H+=Tr(F.id,U,J,Z,B?.text??"",d))},O=new Map;for(let F=0;F<I.length;F++){let U=I[F],j=L[F],J=_[F],Z=j.arrowTypeEnd,B;if(U.src===U.dst){let X=g[U.src],te=O.get(U.src)??0;O.set(U.src,te+1),B=Zc(p[U.src],X.w,X.h,te,y(U.src),P0,xt(Z),U)}else{let X=U.route.slice();Oi(X,0,g[U.src],p[U.src]),Oi(X,X.length-3,g[U.dst],p[U.dst]),B=Xr(X,j.curve,0,xt(Z))}P(j,J,B,U.labelX,U.labelY)}return R.forEach((F,U)=>P(F.edge,F.label,M[U],b[2*U],b[2*U+1])),{svg:tt("agentflow",Y,N,i,r,e,Re(q,Y/2,h+q.height/2,' class="pele-title" font-weight="var(--_tw)"')+(v?`<g class="pele-clusters">${v}</g>`:"")+(z?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${z}</g>`:"")+(H?`<g class="pele-edge-labels" font-size="${l}">${H}</g>`:"")+`<g class="pele-nodes">${D}</g>`),width:Y,height:N,links:S}}function F0(e,t){return`M${u(e-1.75)},${u(t)}a1.75,1.75 0 1 0 3.5,0a1.75,1.75 0 1 0 -3.5,0Z`}var $R,kR,MR,Fo,ER,SR,_R,IR,OR,yk,Mk,DR,PR,zR,FR,BR,WR,YR,qR,GR,HR,O0,UR,jR,Fd,W0,Y0,q0,Bd,xk,D0,Bo,VR,ZR,bk,ll,vk,QR,JR,rO,aO,nO,iO,Wo,P0,Dd,wk,sO,$k,lO,Ek,Sk=Ge(()=>{xe();Eu();As();qc();Is();Kn();In();Qn();or();Gt();$r();yt();kt();$R=new Map([["task","roundedRect"],["tool","subroutine"],["input","lean-right"],["decision","diamond"],["refdoc","lin-doc"],["action","hexagon"],["round","rect"]]),kR=new Set(["doc","stadium","terminal","circle","trapezoid","inv_trapezoid","inv-trapezoid","doublecircle","double-circle","typeDeclaration","procs","lean_left","lean-left","in-out","cylinder","ellipse","odd","tag-rect","tagged-rectangle","delay","half-rounded-rectangle","lin-rect","lined-rectangle","win-pane","window-pane","curv-trap","curved-trapezoid"]),MR=new Set(["roundedRect","subroutine","subprocess","subproc","framed-rectangle","lean-right","diamond","lin-doc","lined-document","hexagon","hex","connector","collapsedGroup"]),Fo="roundedRect";ER=new Set(["shape","view","icon","img","form","pos","w","h","class","style","labelType"]),SR=new Set(["subroutine","subprocess","subproc","framed-rectangle","tool"]);_R=/:\s*[>|][\d+-]*\s*$/,IR=/,([\t ]*)$/;OR=class{constructor(e={}){le(this,"type","agentflow");le(this,"direction");le(this,"nodes",new Map);le(this,"edges",[]);le(this,"subgraphs",[]);le(this,"connectors",new Map);le(this,"classes",new Map);le(this,"tooltips",new Map);le(this,"defaultEdgeStyle");le(this,"defaultInterpolate");le(this,"mappings",[]);le(this,"diagnostics",[]);le(this,"title");le(this,"accTitle");le(this,"accDescr");le(this,"lineOffset");le(this,"subgraphLookup",new Map);le(this,"globalNodes",new Set);le(this,"members",new Set);le(this,"edgeById",new Map);le(this,"pairCount",new Map);le(this,"subCount",0);le(this,"bareMappings",new Set);le(this,"firstMapping",new Map);le(this,"reported",new Map);le(this,"options");this.options=e,this.lineOffset=e.lineOffset??0}metadata(e,t,r){let a=t.includes(`
|
|
249
|
+
`),n;try{n=Ba(a?t+`
|
|
250
|
+
`:`{
|
|
251
|
+
`+t+`
|
|
252
|
+
}`)}catch(i){let l=a?NR(t):t,s;if(l!==t)try{s=Ba(l+`
|
|
253
|
+
`)}catch{s=void 0}if(s===void 0){let o=r?` (${r.first_line+this.lineOffset}:${r.first_column+1})`:"";throw new Ke(`Metadata of "${e}" is not valid YAML. ${i.message}${o}`,"syntax",{type:"agentflow",line:r?r.first_line+this.lineOffset:0,column:r?r.first_column+1:0})}n=s}return CR(n??{})}shapeError(e,t){return new Ke(e,"semantic",{type:"agentflow",line:t?t.first_line+this.lineOffset:0,column:t?t.first_column+1:0})}addVertex(e,t,r,a,n,i,l={},s,o){if(!e||e.trim().length===0)return;let c,h,d;s!==void 0&&(c=this.metadata(e,s,o),B0(c)&&(h=c,typeof c.shape=="string"&&(d=c.shape,c.shape=zd(c.shape))));let f=this.subgraphLookup.get(e);if(f&&c){f.metadata=Od(f.metadata,c);return}let g=this.connectors.get(e);if(g&&c){g.metadata=Od(g.metadata,c);return}if(e==="connectors")return;let p=this.edgeById.get(e);if(p){h?.animate!==void 0&&(p.animate=h.animate),h?.animation!==void 0&&(p.animation=h.animation),h?.curve!==void 0&&(p.interpolate=h.curve),c&&(p.metadata=Od(p.metadata,c));return}let m=this.nodes.get(e);if(m===void 0&&(m={id:e,labelType:"text",styles:[],classes:[]},this.nodes.set(e,m)),t!==void 0?(m.labelType=t.type,m.text=gk(t.text.trim())):m.text===void 0&&(m.text=e),r!==void 0&&(m.type=r),a!=null)for(let x of a)m.styles.push(x);if(n!=null)for(let x of n)m.classes.push(x);if(i!==void 0&&(m.dir=i),m.props===void 0?m.props=l:l!==void 0&&Object.assign(m.props,l),!!c&&(m.metadata=Od(m.metadata,c),h!==void 0)){if(h.shape){let x=d??h.shape;if(typeof x!="string")throw this.shapeError(`No such shape: ${JSON.stringify(x)}.`,o);if(x!==x.toLowerCase()||x.includes("_"))throw this.shapeError(`No such shape: ${x}. Shape names should be lowercase.`,o);let y=h.shape;if(!vR(y))throw this.shapeError(`No such shape: ${y}.`,o);m.type=y}h.label&&(m.text=String(h.label),m.labelType=R0(h.labelType))}}addSingleLink(e,t,r,a){let n={start:e,end:t,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.defaultInterpolate},i=r?.text;i!==void 0&&(n.text=gk(i.text.trim()),n.labelType=R0(i.type)),r!==void 0&&(n.type=r.type,n.stroke=r.stroke,n.length=r.length>10?10:r.length,r.edgeSemantic&&(n.edgeSemantic=r.edgeSemantic));let l=e+"\0"+t,s=this.pairCount.get(l)??0;a&&!this.edgeById.has(a)?(n.id=a,n.isUserDefinedId=!0):n.id=`L_${e}_${t}_${s===0?0:s+1}`;let o=this.options.maxEdges;if(o!==void 0&&this.edges.length>=o)throw new Ke(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${o}.`,"limit",{type:"agentflow"});this.edges.push(n),this.pairCount.set(l,s+1),this.edgeById.has(n.id)||this.edgeById.set(n.id,n)}addLink(e,t,r){let a=typeof r?.id=="string"?r.id.replace("@",""):void 0,n=e[e.length-1],i=t[0];for(let l of e)for(let s of t)this.addSingleLink(l,s,r,l===n&&s===i?a:void 0)}updateLinkInterpolate(e,t){for(let r of e)r==="default"?this.defaultInterpolate=t:this.edgeAt(r).interpolate=t}updateLink(e,t){for(let r of e){if(r==="default"){this.defaultEdgeStyle=t;continue}let a=this.edgeAt(r);a.style=t,t.length>0&&!t.some(n=>n?.startsWith("fill"))&&t.push("fill:none")}}edgeAt(e){let t=this.edges[Number(e)];if(t===void 0)throw new Ke(`The index ${e} 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.)`,"semantic",{type:"agentflow"});return t}addClass(e,t){let r=t.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");for(let a of e.split(",")){let n=this.classes.get(a);n===void 0&&(n={id:a,styles:[],textStyles:[]},this.classes.set(a,n));for(let i of r)i.includes("color")&&n.textStyles.push(i.replace("fill","bgFill")),n.styles.push(i)}}setDirection(e){let t=e.trim();t.includes("<")&&(t="RL"),t.includes("^")&&(t="BT"),t.includes(">")&&(t="LR"),t.includes("v")&&(t="TB"),t==="TD"&&(t="TB"),this.direction=t}setClass(e,t){for(let r of e.split(","))this.nodes.get(r)?.classes.push(t),this.edgeById.get(r)?.classes.push(t),this.subgraphLookup.get(r)?.classes.push(t)}setTooltip(e,t){if(t!==void 0)for(let r of e.split(","))this.tooltips.set(r,t)}setLink(e,t,r){let a=t.trim();for(let n of e.split(",")){let i=this.nodes.get(n);i!==void 0&&(i.link=a?Ha(a):void 0,i.linkTarget=r)}this.setClass(e,"clickable")}setClickEvent(e,t,r){this.setClass(e,"clickable")}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,"")}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
254
|
+
`)}addSubGraph(e,t,r,a){let n=e?.text?.trim(),i=r?.text||"";e!==void 0&&e===r&&/\s/.test(i)&&(n=void 0);let l=new Set,s=[],o;for(let g of t)if(typeof g=="string")g.trim()!==""&&!l.has(g)&&(l.add(g),s.push(g));else if(Array.isArray(g))for(let p of g)p.trim()!==""&&!l.has(p)&&(l.add(p),s.push(p));else o=g.value;o??(o=this.options.inheritDir?this.direction??this.options.direction:void 0),n??(n="subGraph"+this.subCount),this.subCount++;let c=this.members,h=s.filter(g=>g!==n&&!this.globalNodes.has(g)&&!c.has(g));for(let g of h)c.add(g);let d=this.subgraphLookup.get(n);if(d){for(let g of h)d.nodes.push(g);return i.trim()&&(d.title=i.trim()),o&&(d.dir=o),n}let f={id:n,nodes:h,title:i.trim(),classes:[],dir:o,labelType:R0(r?.type),type:"flow"};return this.subgraphs.push(f),this.subgraphLookup.set(n,f),n}addGlobal(e){let t=!1,r=a=>{let n=a.trim();n!==""&&(this.globalNodes.add(n),this.members.delete(n)&&(t=!0))};for(let a of e)if(typeof a=="string")r(a);else if(Array.isArray(a))for(let n of a)r(n);if(t)for(let a of this.subgraphs)a.nodes=a.nodes.filter(n=>!this.globalNodes.has(n))}addConnector(e,t){let r=e?.text?.trim();if(!r)return"";let a=t?.text?.trim()??"",n=this.connectors.get(r);if(n)a.length>0&&(n.text=a);else{let i={id:r,labelType:"text",styles:[],classes:[],isConnector:!0,text:a.length>0?a:r};this.connectors.set(r,i),this.nodes.set(r,i)}return r}destructLink(e,t){let r=RR(e);return t&&(t.includes(".")?"dotted":"normal")!==r.stroke?{type:"INVALID",stroke:"INVALID"}:{...r,edgeSemantic:LR(r.type,r.stroke)}}subgraph(e){return this.subgraphLookup.get(e)}vertexKind(e){if(TR(e))return"tool";let t=zd(e.type);return t==="hexagon"||t==="hex"?"action":t==="lean-right"||t==="lean_right"?"input":t==="lin-doc"||t==="lined-document"?"refdoc":t==="diamond"?"decision":"task"}semanticModel(){let e=[],t=[];for(let[i,l]of this.nodes){if(this.subgraphLookup.has(i))continue;let s=mk(l.metadata);if(l.isConnector){let h={id:i};l.text!==void 0&&l.text!==i&&(h.title=l.text),s&&(h.metadata=s),t.push(h);continue}let o={id:i};l.text!==void 0&&(o.label=l.text);let c=zd(l.type);c!==void 0&&(o.shape=c),o.vertexKind=this.vertexKind(l),s&&(o.metadata=s),e.push(o)}let r=this.edges.map(i=>{let l={start:i.start,end:i.end};return i.id!==void 0&&(l.id=i.id),i.text.length>0&&(l.label=i.text),i.type!==void 0&&(l.type=i.type),i.stroke!==void 0&&(l.stroke=i.stroke),i.edgeSemantic!==void 0&&(l.edgeSemantic=i.edgeSemantic),i.length!==void 0&&(l.length=i.length),i.metadata&&Object.keys(i.metadata).length>0&&(l.metadata={...i.metadata}),l}),a=this.subgraphs.map(i=>{let l={id:i.id,nodes:[...i.nodes],type:i.type,title:i.title};i.dir!==void 0&&(l.direction=i.dir);let s=mk(i.metadata);return s&&(l.metadata=s),l}),n={vertices:e,edges:r,subGraphs:a,connectors:t,diagnostics:this.diagnostics};return this.direction!==void 0&&(n.direction=this.direction),n}position(e){let t=e?.first_line??0,r=e?.first_column??0;return{startLine:t+this.lineOffset,startColumn:r,endLine:(e?.last_line??t)+this.lineOffset,endColumn:e?.last_column??r,startIndex:0,endIndex:0}}pushMapping(e,t,r){let a={id:e,type:t,position:r};return this.mappings.push(a),this.firstMapping.has(e)||this.firstMapping.set(e,a),a}addVertexMapping(e,t,r,a){if(!e)return;let n=this.pushMapping(e,"vertex",this.position(a));r==null&&this.bareMappings.add(n)}extendVertexMapping(e,t){if(!e||!t)return;let r=this.position(t);for(let a=this.mappings.length-1;a>=0;a--){let n=this.mappings[a];if(n.type!=="vertex"||n.id!==e)continue;this.bareMappings.delete(n)&&(n.type="attachment");let i=n.position;(r.endLine>i.endLine||r.endLine===i.endLine&&r.endColumn>i.endColumn)&&(i.endLine=r.endLine,i.endColumn=r.endColumn);return}this.pushMapping(e,"attachment",r)}addEdgeMapping(e,t,r,a){let n=Array.isArray(t)?t.filter(i=>typeof i=="string"&&i!==""):[];this.pushMapping(n.length>0?n.join(">"):"edge","edge",this.position(a))}blockMapping(e,t,r,a){if(!e)return;let n=this.position(r),i=a?this.position(a):n;this.pushMapping(e,t,{startLine:n.startLine,startColumn:n.startColumn,endLine:i.endLine,endColumn:i.endColumn,startIndex:0,endIndex:0})}addSubgraphMapping(e,t,r,a){let n=typeof e=="string"?e:e?.text;this.blockMapping(n??"","subgraph",r,a)}addConnectorMapping(e,t,r,a){this.blockMapping(e?.text?.trim()??"","connector",r,a)}emit(e,t,r,a){let n=a?.nodeId??a?.edgeId,i={id:e,severity:t,message:r};a?.nodeId?i.nodeId=a.nodeId:a?.edgeId&&(i.edgeId=a.edgeId);let l=n?this.firstMapping.get(n):void 0;l&&(i.position=l.position);let s=n??"",o=this.reported.get(s);if(o===void 0)this.reported.set(s,[i]);else{for(let c of o)if(c.id===e&&c.severity===t&&c.message===r&&c.nodeId===i.nodeId&&c.edgeId===i.edgeId)return;o.push(i)}this.diagnostics.push(i),this.options.log?.(t,`agentflow[${e}]: ${r}`)}emitWarning(e,t,r){this.emit(e,"warning",t,r)}emitError(e,t,r){this.emit(e,"error",t,r)}},yk=["$end","INVALID","acc_title","acc_title_value","acc_descr","acc_descr_value","acc_descr_multiline_value","SHAPE_DATA","CALLBACKNAME","CALLBACKARGS","MD_STR","STR","STYLE","DEFAULT","LINKSTYLE","INTERPOLATE","CLASSDEF","CLASS","HREF","CLICK","GRAPH","flow","connector","global","end","LINK_TARGET","NODIR","DIR","direction_tb","direction_bt","direction_rl","direction_lr","direction_td","LINK_ID","NUM","BRKT","STYLE_SEPARATOR","COLON","AMP","SEMI","COMMA","MULT","LINK","START_LINK","EDGE_TEXT","-)","TEXT","(-","STADIUMEND","STADIUMSTART","SUBROUTINEEND","SUBROUTINESTART","VERTEX_WITH_PROPS_START","TAGEND","CYLINDEREND","CYLINDERSTART","DOUBLECIRCLEEND","DOUBLECIRCLESTART","TRAPEND","INVTRAPEND","TRAPSTART","INVTRAPSTART","TAGSTART","UP","SEP","DOWN","COMMENT","NODE_STRING","MINUS","UNICODE_TEXT","PIPE","PE","PS","SQE","SQS","DIAMOND_STOP","DIAMOND_START","NEWLINE","SPACE","EOF"],Mk=new Uint8Array(128);for(let e of"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"#$%&'*+.`?\\_/")Mk[e.charCodeAt(0)]=1;DR=/accTitle\s*:\s*/y,PR=/accDescr\s*:\s*/y,zR=/accDescr\s*\{\s*/y,FR=/call\s+/y,BR=/click\s+/y,WR=/(?:\r?\n)*\s*\n/y,YR=/\s*(?:LR|RL|TB|BT|TD|BR)\b/y,qR=/\s*[<>^]/y,GR=/\s*v\b/y,HR=[/.*direction\s+TB[^\n]*/y,/.*direction\s+BT[^\n]*/y,/.*direction\s+RL[^\n]*/y,/.*direction\s+LR[^\n]*/y,/.*direction\s+TD[^\n]*/y],O0=/[\n\r\u2028\u2029]/g,UR=/\(\s*\)/y,jR=/\n\s*/g;Fd=new Uint8Array(80);for(let e of[34,67,65,68,13,40,37,38,35,41,69])Fd[e]=1;W0=new Uint8Array(80);for(let e of[34,69,67,27,65,68,40,37,38,35,41])W0[e]=1;Y0=new Uint8Array(80);for(let e of[34,67,78,68,38,69,37,41,35,12,14,16,17,19,20,27,21,22,23,24,65,63,43])Y0[e]=1;q0=new Uint8Array(80);for(let e of[34,67,37,78,35,12])q0[e]=1;Bd=new Uint8Array(80);for(let e of[77,39,79,66])Bd[e]=1;xk="'UNICODE_TEXT', 'TEXT', 'TAGSTART'",D0="'COMMENT', 'SEMI', 'NEWLINE', 'EOF'",Bo=[],VR=/}[^\S\n]*\n/g;ZR=["TB","BT","RL","LR","TD"],bk="'COMMENT', 'SEMI', 'NEWLINE', 'SPACE', 'EOF', 'flow', 'global', 'connector', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'STYLE', 'LINKSTYLE', 'CLASSDEF', 'CLASS', 'CLICK', 'NODE_STRING'",ll=new Map([["tool",0],["task",1],["decision",2],["input",3],["refdoc",4],["connector",5],["action",6]]),vk=ll.size,QR=e=>Math.max(1,e-vk),JR=(e,t)=>{let r=vk+e%QR(t);return t>0?r%t:r};rO=8,aO=40,nO=16,iO=48,Wo=20,P0=26,Dd=14,wk="collapsed",sO={TB:2,RL:3,BT:0,LR:1},$k=new WeakMap;lO=/[";]fill:/;Ek={type:"agentflow",keepComments:!0,parse(e,t,r,a,n){let i=t.flowchart??{},l=new OR({inheritDir:i.inheritDir===!0,direction:typeof t.direction=="string"?t.direction:void 0,lineOffset:a,maxEdges:n.maxEdges});return r&&(l.title=r),KR(e,l),Ak(l,t),l},render:oO}});var Tk={};Rt(Tk,{agentflow:()=>Ek});var Ck=Ge(()=>{xe();Sk()});function cO(){let e=!1;return(t,r)=>{G0.lastIndex=r;let a=G0.exec(t);if(a===null)return-1;let n=G0.lastIndex;if(a[1]===void 0)return n;if(e)return-1;let i=t.indexOf("}",n);return e=i===-1,i+1||-1}}function ol(e="ACC_DESCR"){return{...kr,name:e,scanner:cO}}var G0,Wd=Ge(()=>{xe();sa();G0=/[\t ]*accDescr(?:[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)|\s*({))/y});function gO(e){return e.some(t=>j0.test(t))}function mO(e){for(let t of e){let r=Pk.exec(t);if(r?.index&&r.index>0)return r.index}return 4}function Ik(e,t){return e.replace(/\bline\s+(\d+)\b/gi,(r,a)=>{let n=t.get(parseInt(a,10));return n?`line ${n}`:r})}function Nk(e,t){throw new Ke(`Line ${e}: ${t}`,"syntax",{type:"treeView",line:e})}function yO(e){let t=new Map;if(!j0.test(e))return{text:e,lineMap:t};let r=e.split(`
|
|
255
|
+
`),a=-1;for(let c=0;c<r.length;c++)if(r[c].trim()==="treeView-beta"){a=c;break}if(a===-1)return{text:e,lineMap:t};let n=c=>c.trim()===""||uO.test(c)||fO.test(c),i=[];for(let c=a+1;c<r.length;c++){let h=r[c];n(h)||_k.test(h)||i.push(h.replace(/\t/g," "))}if(!gO(i))return{text:e,lineMap:t};let l=mO(i),s=[],o=(c,h)=>{s.push(c),t.set(s.length,h+1)};for(let c=0;c<=a;c++)o(r[c],c);for(let c=a+1;c<r.length;c++){let h=r[c];if(n(h)){o(h,c);continue}if(_k.test(h))continue;let d=h.replace(/\t/g," "),f=Pk.exec(d);if(f){let g=Math.round(f.index/l)+1,p=f.index+1;for(;p<d.length&&hO.test(d[p]);)p++;for(;p<d.length&&d[p]===" ";)p++;let m=d.slice(p).trimEnd();m||Nk(c+1,"Empty node \u2014 expected a filename or directory name after the box-drawing prefix"),o(pO.repeat(g)+m,c)}else{if(dO.test(d))continue;j0.test(d)?o(h,c):/^\s+/.test(d)?Nk(c+1,"Unexpected indentation without box-drawing characters. In box-drawing format, use \u251C\u2500\u2500 or \u2514\u2500\u2500 prefixes for indented nodes."):o(h,c)}}return{text:s.join(`
|
|
256
|
+
`),lineMap:t}}function xO(e,t){if(e.startsWith("##",t)||e.startsWith("icon(",t))return!0;if(!e.startsWith(":::",t))return!1;let r=t+3;for(;Ta(e.charCodeAt(r));)r++;let a=e.charCodeAt(r);return a>=65&&a<=90||a>=97&&a<=122||a===95}function bO(e,t){let r=e.charCodeAt(t);if(Ta(r)||r===10||r===13||r===34||r===39||e.startsWith(":::",t)||e.startsWith("icon(",t)||e.startsWith("##",t))return-1;let a=e.length,n=t+1;for(;n<a;){let i=e.charCodeAt(n);if(i===10||i===13)break;if(Ta(i)){let l=n+1;for(;Ta(e.charCodeAt(l));)l++;if(xO(e,l))break;n=l}else n++}return n}function zk(e){let t=e.length;for(;t>0&&Ta(e.charCodeAt(t-1));)t--;return t===e.length?e:e.slice(0,t)}function H0(e,t){switch(e){case"INDENTATION":return t?.length||0;case"QUOTED_NAME":return t.substring(1,t.length-1);case"BARE_NAME":return zk(t);case"CLASS_ANNOTATION":return t.trim().substring(3).trim();case"ICON_ANNOTATION":{let r=t.trim();return r.substring(5,r.length-1)}case"DESC_ANNOTATION":return t.trim().substring(2).trim();default:return}}function wO(e){let t=new ir(er(e,Rk,"treeView"),Rk,"treeView"),r={$type:"TreeView",nodes:[]};for(t.expect(0);;)if(t.kind===1)r.accDescr=nr(t.take());else if(t.kind===2)r.accTitle=ar(t.take());else if(t.kind===3)r.title=rr(t.take());else break;for(;t.kind!==-1;){let a={$type:"TreeNode",name:""};if(t.kind===7&&(a.indent=t.take().length),t.kind===8){let n=t.take();a.name=n.substring(1,n.length-1)}else t.kind===12?a.name=zk(t.take()):t.fail("a name");for(;;)if(t.kind===4)a.classAnnotation=H0("CLASS_ANNOTATION",t.take());else if(t.kind===5)a.iconAnnotation=H0("ICON_ANNOTATION",t.take());else if(t.kind===6)a.descAnnotation=H0("DESC_ANNOTATION",t.take());else break;r.nodes.push(a)}return r}function kO(e,t){for(let r of e.nodes){let a=typeof r.indent=="number"?r.indent:0,n=r.name,i=n.endsWith("/");i&&(n=n.slice(0,-1));let l=r.iconAnnotation;t.addNode(a,n,i?"directory":"file",r.classAnnotation||void 0,l!==void 0?l||"none":void 0,r.descAnnotation||void 0)}}function MO(e){let{text:t,lineMap:r}=yO(e);try{return wO(t)}catch(a){if(r.size===0||!(a instanceof Ke))throw a;let n=a.message.indexOf(`
|
|
257
|
+
`),i=n===-1?Ik(a.message,r):Ik(a.message.slice(0,n),r)+a.message.slice(n);throw new Ke(i,a.code,{type:a.type,line:r.get(a.line)??a.line,column:a.column,snippet:a.snippet})}}function vO(e,t){let r=new $O;return kO(e,r),{type:"treeView",title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,""):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
258
|
+
`):void 0,root:r.root,count:r.count}}function U0(e,t){if(e===void 0||!Object.prototype.hasOwnProperty.call(e,t))return;let r=e[t];return typeof r=="string"?r:void 0}function AO(e,t){let r=U0(t?.filenameIcons,e);if(r)return r;let a=e.lastIndexOf(".");if(a>0){let n=e.substring(a).toLowerCase();return U0(t?.extensionIcons,n)??U0(t?.extensionIcons,n.slice(1))}}function Ok(e,t){return e.includes(":")?e:X0.has(e)||!t?`${Gd}:${e}`:`${t}:${e}`}function Dk(e,t){if(e.icon!=="none"){if(e.icon)return Ok(e.icon,t.defaultIconPack);if(t.showIcons){if(e.nodeType==="file"){let r=AO(e.name,t);if(r==="none")return;if(r)return Ok(r,t.defaultIconPack)}return`${Gd}:${e.nodeType==="directory"?"folder":"file"}`}}}function EO(e){let t=a=>typeof a=="object"&&a!==null&&!Array.isArray(a)?a:void 0,r=t(e.treeView)??{};return{showIcons:!!r.showIcons,defaultIconPack:typeof r.defaultIconPack=="string"?r.defaultIconPack:"",filenameIcons:t(r.filenameIcons),extensionIcons:t(r.extensionIcons)}}function qd(e,t,r,a,n){let i=e.treeView?.[t];return typeof i=="number"&&i>=a&&i<=n?i:r}function IO(e){return{paddingX:qd(e,"paddingX",5,0,100),paddingY:qd(e,"paddingY",2,0,100),rowIndent:qd(e,"rowIndent",15,0,400),lineThickness:qd(e,"lineThickness",1,.25,12)}}function NO(e,t,r){return Yr(r,a=>LO(e,t,r,a))}function LO(e,t,r,a){let n=r.fontSize??16,i=r.measurer??rt(r.fontFamily),l=r.padding??8,s=EO(t),{paddingX:o,paddingY:c,rowIndent:h,lineThickness:d}=IO(t),f=0,g=e.root.children.map(T=>[T,0]);for(let T=0;a&&T<g.length;T++){let[A,v]=g[T];f=Math.max(f,v);for(let D of A.children)g.push([D,v+1])}let p=a?Math.min(h+o,Math.max(2,((r.maxWidth??320)-120)/Math.max(1,f))):h+o,m=Math.round(n*1.5)+2*c,x=n,y=Be(e.title,!1,i,n,a?Pt(r):4e3,1),$=y.height>0?y.height+12:0,k=T=>T.some(A=>Dk(A,s)!==void 0),I=[],_=new Map,L=[],R=(T,A)=>{let v=k(T);for(let D=T.length-1;D>=0;D--)L.push([T[D],A,v])};R(e.root.children,0);let W=0,q=!1,C=0;for(;L.length>0;){let[T,A,v]=L.pop(),D=A*p,z=Tt(T.name),H=D+(v?x+SO:0),P=Math.max(40,(r.maxWidth??320)-2*l-2*Yd-H),O=a?Gi(z,i,n,P,T.nodeType==="directory"?1:0):void 0,F=a&&T.description?Gi(Tt(T.description),i,n,P,2):void 0,U=O?O.width:i.width(z,n,T.nodeType==="directory"?1:0);H+U>W&&(W=H+U);let j=T.cssClass!==void 0&&T.cssClass.split(/\s+/).includes("highlight");j&&(q=!0);let J=a?Math.max(m,(O?.height??0)+(F?.height??0)+2*c):m,Z=C+(a?c+Math.max(x,O?.height??0)/2:J/2),B={node:T,x:D,cy:Z,icon:Dk(T,s),text:z,labelX:H,highlighted:j,label:O,description:F,top:C,height:J};C+=J,I.push(B),_.set(T,B),R(T.children,A+1)}let K=W+TO,Q=W;for(let T of I){let A=T.node.description;if(!A)continue;let v=T.description?T.description.width:i.width(Tt(A),n,2);Q=Math.max(Q,(a?T.labelX:K)+v)}Q=Math.max(Q,y.width);let G=l+(q?Yd:0),Y=l+$,N=Math.ceil(Q+2*G),S=Math.ceil(Y+C+l),M="";for(let T of I){let A=T.node.children;if(A.length===0)continue;let v=G+T.x+CO,D=Math.max(v,G+T.x+p-o),z=Y+_.get(A[A.length-1]).cy,H=Math.min(_O,D-v),P=`M${u(v)},${u(Y+T.top+T.height-2)}V${u(z-H)}`;H>0&&(P+=`Q${u(v)},${u(z)} ${u(v+H)},${u(z)}H${u(D)}`);for(let O=0;O<A.length-1&&D>v;O++)P+=`M${u(v)},${u(Y+_.get(A[O]).cy)}H${u(D)}`;M+=`<path d="${P}"/>`}let b=n*.35,E="";for(let T of I){let A=T.node,v=Y+T.cy,D=A.nodeType==="directory",z="";if(T.highlighted){let H=G+T.x-Yd;z+=`<rect class="pele-tree-highlight" x="${u(H)}" y="${u(Y+T.top+1)}" width="${u(N-G+Yd-H)}" height="${u(T.height-2)}" fill="var(--_c)" fill-opacity="0.14"${ot}/>`}if(T.icon!==void 0){let H=T.icon.startsWith(Gd+":")?T.icon.slice(Gd.length+1):"",P=X0.get(H)??X0.get(D?"folder":"file"),O=r.icons?.(T.icon)??`<path d="${P}" stroke="var(--_m)" stroke-width="1.5"/>`;z+=`<svg class="pele-icon" data-icon="${Pe(T.icon)}" x="${u(G+T.x)}" y="${u(v-x/2)}" width="${u(x)}" height="${u(x)}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${O}</svg>`}T.label?z+=zn(T.label,G+T.labelX,Y+T.top+c,` class="pele-label"${D?' font-weight="var(--_hw)"':""}`):T.text!==""&&(z+=`<text class="pele-label" x="${u(G+T.labelX)}" y="${u(v+b)}"${D?' font-weight="var(--_hw)"':""} xml:space="preserve">${Qe(T.text)}</text>`),T.description?z+=zn(T.description,G+T.labelX,Y+T.top+c+(T.label?.height??0),' class="pele-tree-description" font-style="italic" fill="var(--_m)"'):A.description&&(z+=`<text class="pele-tree-description" x="${u(G+K)}" y="${u(v+b)}" font-style="italic" fill="var(--_m)" xml:space="preserve">${Qe(Tt(A.description))}</text>`),E+=`<g class="pele-node pele-tree-${D?"dir":"file"}${Dt(A.cssClass??"")}" data-id="${Pe(A.name)}">${z}</g>`}let w=Re(y,N/2,l+y.height/2,' class="pele-title" font-weight="var(--_tw)"')+(M?`<g class="pele-tree-guides" fill="none" stroke="var(--_b)" stroke-width="${u(d)}">${M}</g>`:"")+E;return{svg:tt("treeView",N,S,n,r,e,w),width:N,height:S,links:[]}}var j0,Pk,hO,_k,dO,fO,uO,pO,Lk,Rk,$O,Gd,X0,SO,TO,CO,_O,Yd,Fk,Bk=Ge(()=>{xe();Wd();Ui();or();Gt();sa();yt();kt();j0=/[─━│┃└┗├┣]/,Pk=/[└┗├┣]/,hO=/[─━]/,_k=/^[\s│┃]+$/,dO=/^[\s─━│┃└┗├┣]+$/,fO=/^\s*(title[\t ]|accTitle[\t ]*:|accDescr[\t ]*[:{])/,uO=/^\s*%%/,pO=" ";Lk={name:"BARE_NAME",pattern:/(?!:::|icon\(|##)[^ \t\n\r"'](?:(?![ \t]+:::[ \t]*[A-Za-z_]|[ \t]+icon\(|[ \t]+##)[^\n\r])*/y,match:bO},Rk=[{...gr("treeView-beta"),longer:[Lk]},ol(),cr,hr,{name:"CLASS_ANNOTATION",pattern:/[ \t]+:::[ \t]*[A-Za-z_][\w-]*/y},{name:"ICON_ANNOTATION",pattern:/[ \t]+icon\([\w-]*(?::[\w-]+)?\)/y},{name:"DESC_ANNOTATION",pattern:/[ \t]+##[^\n\r]*/y},{name:"INDENTATION",pattern:/[ \t]{1,}/y},{name:"QUOTED_NAME",pattern:/"[^"]*"|'[^']*'/y},{name:"WS",pattern:/[ \t]+/y,hidden:!0},{name:"ML_COMMENT",pattern:/\%\%[^\n]*/y,hidden:!0},{name:"NL",pattern:/\r?\n/y,hidden:!0},Lk];$O=class{constructor(){le(this,"count",1);le(this,"root",{id:0,level:-1,name:"/",nodeType:"directory",children:[]});le(this,"stack",[this.root])}addNode(e,t,r,a,n,i){let l=this.stack;for(;e<=l[l.length-1].level;)l.pop();let s={id:this.count++,level:e,name:t,nodeType:r,icon:n,cssClass:a,description:i,children:[]};l[l.length-1].children.push(s),l.push(s)}};Gd="mermaid-treeview",X0=new Map([["folder","M3 6.5A1.5 1.5 0 0 1 4.5 5h4.6l2.4 2.5h8A1.5 1.5 0 0 1 21 9v9a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 18z"],["file","M6.5 3h7L19 8.5v11a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 5 19.5v-15A1.5 1.5 0 0 1 6.5 3zM13.5 3v5.5H19"]]);SO=6,TO=16,CO=7,_O=4,Yd=4;Fk={type:"treeView",parse:(e,t,r)=>vO(MO(e),r),render:NO}});var Wk={};Rt(Wk,{treeView:()=>Fk});var Yk=Ge(()=>{xe();Bk()});function OO(e,t){let r=new RO;return r.setDomains(e.domains),r.setTransitions(e.transitions),{type:"cynefin",title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,""):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
259
|
+
`):void 0,domains:r.domains,transitions:r.transitions}}function DO(e){let t=new ir(er(e,qk,"cynefin"),qk,"cynefin"),r={$type:"Cynefin",domains:[],transitions:[]},a=()=>{for(;t.kinds[t.i]===9;)t.i++},n=()=>{t.kind!==-1&&(t.kind!==9&&t.fail("a line break or the end of input"),a())};for(a(),t.kind!==1&&t.kind!==0&&t.fail("'cynefin-beta'"),t.i++;t.kind!==-1;)switch(t.kind){case 9:t.i++;break;case 5:r.accDescr=nr(t.take()),n();break;case 6:r.accTitle=ar(t.take()),n();break;case 7:r.title=rr(t.take()),n();break;case 4:{let i=t.take();if(t.accept(2)){let s={$type:"Transition",from:i,to:t.expect(4)};t.accept(3)&&(s.label=_r(t.expect(8))),n(),r.transitions.push(s);break}let l={$type:"DomainBlock",domain:i,items:[]};for(a();t.kinds[t.i]===8;)l.items.push({$type:"DomainItem",label:_r(t.take())}),a();r.domains.push(l);break}default:t.fail("a domain, a transition, a title, or a line break")}return r}function Gk(e){let t=e+1831565813|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function PO(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t}function zO(e,t){return typeof e=="number"&&Number.isFinite(e)&&e!==0?e:PO(t)}function V0(e,t,r,a,n,i){let l=(t-e)/i.segments,s=[],o=[];for(let h=0;h<=i.segments;h++){let d=h===0&&i.pinStart||h===i.segments&&i.pinEnd;s.push(e+h*l),o.push(d?r:r+Gk(a+h*i.pointStep)*n*2-n)}let c=i.vertical?[o[0],s[0]]:[s[0],o[0]];for(let h=0;h<i.segments;h++){let d=(s[h]+s[h+1])/2,f=n*1.5*(h%2===0?1:-1)*Gk(a+h*i.controlStep+i.controlShift);i.vertical?c.push(o[h]+f,d,o[h+1]-f,d,o[h+1],s[h+1]):c.push(d,o[h]+f,d,o[h+1]-f,s[h+1],o[h+1])}return c}function BO(e,t,r,a){let n=r-t;return[e,t,e+a,t+n*.2,e-a*1.5,t+n*.55,e+a*.5,t+n*.75,e-a,t+n*.85,e+a*.3,t+n*.95,e,r]}function Yo(e){let t="";for(let r=2;r<e.length;r+=6)t+=`C${u(e[r])},${u(e[r+1])} ${u(e[r+2])},${u(e[r+3])} ${u(e[r+4])},${u(e[r+5])}`;return t}function Hd(e){let t="";for(let r=e.length-6;r>=2;r-=6)t+=`C${u(e[r+2])},${u(e[r+3])} ${u(e[r])},${u(e[r+1])} ${u(e[r-2])},${u(e[r-1])}`;return t}function Ud(e){return`M${u(e[0])},${u(e[1])}${Yo(e)}`}function WO(e,t,r,a){let n=`${u(r)},${u(a)}`;return`M${u(e-r)},${u(t)}A${n} 0 1,1 ${u(e+r)},${u(t)}A${n} 0 1,1 ${u(e-r)},${u(t)}Z`}function Vd(e,t,r,a,n){let i=e.cynefin?.[t];return typeof i=="number"&&i>=a&&i<=n?i:r}function UO(e,t,r){let a=r.fontSize??16,n=Math.round(a*.8125),i=Math.round(a*.875),l=r.measurer??rt(r.fontFamily),s=r.padding??8,o=r.icons,c=t.cynefin?.showDomainDescriptions!==!1,h=Vd(t,"boundaryAmplitude",8,0,50),d=zO(Vd(t,"seed",0,-1e15,1e15),r.idPrefix??"pele"),f=Math.round(i*1.5),g=(B,X)=>{let te=Be(B,!1,l,i,jk);return{text:B,label:te,w:te.width+2*GO,h:Math.max(te.height,f)+2*HO,overflow:X}},p=B=>{let X=qO.get(B),te=Be(X[0],!1,l,a,4e3,1),se=[];if(c)for(let fe of[X[1],X[2]])fe&&se.push(Be(fe,!1,l,n,4e3,2));let ce=e.domains.get(B)?.items??[],ae=B==="confusion"&&ce.length>Uk?Uk:ce.length,ie=[];for(let fe=0;fe<ae;fe++)ie.push(g(ce[fe].label,!1));ae<ce.length&&ie.push(g(`+${ce.length-ae} more`,!0));let ee=te.width,re=te.height;for(let fe of se)ee=Math.max(ee,fe.width),re+=fe.height;ie.length>0&&(re+=Xk-jd);for(let fe of ie)ee=Math.max(ee,fe.w),re+=jd+fe.h;return{name:B,title:te,subtitles:se,badges:ie,w:ee,h:re,cx:0,cy:0}},m=K0.map(([B])=>p(B)),x=p("confusion"),y=Math.max(88,x.w*.71+8),$=Math.max(64,x.h*.71+6),k=Vd(t,"width",640,100,1e4)/2,I=Vd(t,"height",440,100,1e4)/2;for(let B of m)k=Math.max(k,B.w+2*Vk),I=Math.max(I,B.h+2*Vk);for(let B of m){let X=(k-B.w)/2,te=(I-B.h)/2;if((X/(y+Xd))**2+(te/($+Xd))**2>=1)continue;let se=B.w+2*(y+Xd),ce=B.h+2*($+Xd);se*I<=k*ce?k=Math.max(k,se):I=Math.max(I,ce)}let _=Be(e.title,!1,l,a,4e3,1),L=_.height>0?_.height+12:0,R=2*k,W=2*I,q=s,C=s+L,K=q+k,Q=C+I,G=q+R,Y=C+W,N=V0(C,Q,K,d,h,{...FO,segments:4,pinEnd:!0}),S=V0(q,K,Q,d+100,h,{...Hk,segments:4,pinEnd:!0}),M=V0(K,G,Q,d+200,h,{...Hk,segments:4,pinStart:!0}),b=BO(K,Q,Y,R*.03),E=(B,X)=>X?`${u(B[B.length-2])},${u(B[B.length-1])}`:`${u(B[0])},${u(B[1])}`,w=new Map([["complex",`M${u(q)},${u(C)}L${E(N,!1)}${Yo(N)}${Hd(S)}Z`],["complicated",`M${E(N,!1)}L${u(G)},${u(C)}L${E(M,!0)}${Hd(M)}${Hd(N)}Z`],["chaotic",`M${E(S,!1)}${Yo(S)}${Yo(b)}L${u(q)},${u(Y)}Z`],["clear",`M${E(M,!1)}${Yo(M)}L${u(G)},${u(Y)}L${E(b,!0)}${Hd(b)}Z`]]),T="";for(let[B,,,X]of K0)T+=`<path class="pele-cynefin-region" data-id="${B}" d="${w.get(B)}" fill="${pt(X)}" fill-opacity="0.14"/>`;let A=`<g class="pele-cynefin-boundaries" fill="none" stroke="var(--_b)" stroke-dasharray="6 3"><path d="${Ud(N)}"/><path d="${Ud(S)}"/><path d="${Ud(M)}"/><path class="pele-cynefin-cliff" d="${Ud(b)}" stroke="var(--_l)" stroke-width="2" stroke-dasharray="none" stroke-linecap="round"/></g>`,v=WO(K,Q,y,$),D=`<path d="${v}" fill="var(--_bg)"/><path class="pele-cynefin-region" data-id="confusion" d="${v}" fill="${pt(YO)}" fill-opacity="0.18" stroke="var(--_b)" stroke-dasharray="4 2"/>`,z=B=>{let X=B.cy-B.h/2,te=Re(B.title,B.cx,X+B.title.height/2,' class="pele-label" font-weight="var(--_hw)"');X+=B.title.height;for(let se of B.subtitles)te+=Re(se,B.cx,X+se.height/2,` class="pele-cynefin-subtitle" font-size="${n}" font-style="italic" fill="var(--_m)"`),X+=se.height;X+=Xk-jd;for(let se of B.badges)X+=jd,te+=`<g class="pele-node${se.overflow?" pele-cynefin-overflow":""}"${se.overflow?"":` data-id="${Pe(se.text)}"`}><rect x="${u(B.cx-se.w/2)}" y="${u(X)}" width="${u(se.w)}" height="${u(se.h)}" fill="var(--_bg)" stroke="var(--_b)"${se.overflow?' stroke-dasharray="3 2"':""}${ot}/>`+Re(se.label,B.cx,X+se.h/2,` class="pele-label" font-size="${i}"${se.overflow?' fill="var(--_m)"':""}`,o)+"</g>",X+=se.h;return`<g class="pele-cynefin-domain" data-id="${B.name}">${te}</g>`},H=new Map,P="";K0.forEach(([B,X,te],se)=>{let ce=m[se];ce.cx=q+k*(X+.5),ce.cy=C+I*(te+.5),H.set(B,ce),P+=z(ce)}),x.cx=K,x.cy=Q,H.set("confusion",x),P+=z(x);let O=(B,X,te)=>B===x?((X-K)/(y+4))**2+((te-Q)/($+4))**2<=1:Math.abs(X-B.cx)<=B.w/2+8&&Math.abs(te-B.cy)<=B.h/2+8,F="",U=new Map;for(let B of e.transitions){let X=H.get(B.from),te=H.get(B.to);if(!X||!te||X===te)continue;let se=B.from<B.to?`${B.from} ${B.to}`:`${B.to} ${B.from}`,ce=U.get(se)??0;U.set(se,ce+1);let ae=te.cx-X.cx,ie=te.cy-X.cy,ee=Math.hypot(ae,ie)||1,re=(X.cx+te.cx)/2,fe=(X.cy+te.cy)/2,ye=-ie*(re-K)+ae*(fe-Q)>=0?1:-1,oe=-ie/ee*ye,we=ae/ee*ye,ue=(X!==x&&te!==x&&Math.abs(ae)>1&&Math.abs(ie)>1?2*(Math.hypot(y*oe,$*we)+16):ee*.15)+ce*56,ge=re+oe*ue,Ae=fe+we*ue,Te=ke=>{let Ee=1-ke;return[Ee*Ee*X.cx+2*Ee*ke*ge+ke*ke*te.cx,Ee*Ee*X.cy+2*Ee*ke*Ae+ke*ke*te.cy]},he=(ke,Ee,Ce,De)=>{for(let Ie=0;Ie<16;Ie++){let He=(Ee+Ce)/2;O(ke,...Te(He))===De?Ee=He:Ce=He}return(Ee+Ce)/2},pe=48,be=1;for(;be<=pe&&O(X,...Te(be/pe));)be++;if(be>pe)continue;let Ne=he(X,(be-1)/pe,be/pe,!0);for(;be<=pe&&!O(te,...Te(be/pe));)be++;let Oe=be>pe?1:he(te,(be-1)/pe,be/pe,!1),[Ye,de]=Te(Ne),[Me,_e]=Te(Oe),$e=(ke,Ee,Ce)=>(1-Ne)*(1-Oe)*ke+((1-Ne)*Oe+Ne*(1-Oe))*Ee+Ne*Oe*Ce,ve=$e(X.cx,ge,te.cx),Le=$e(X.cy,Ae,te.cy),qe=Math.hypot(Me-ve,_e-Le)||1,Fe=(Me-ve)/qe,V=(_e-Le)/qe,me=Mt("arrow_point",Me,_e,Fe,V,"var(--_l)");Me-=Fe*xt("arrow_point"),_e-=V*xt("arrow_point");let ne="";if(B.label){let ke=Be(B.label,!1,l,n,jk),[Ee,Ce]=Te((Ne+Oe)/2),De=Math.abs(oe)*ke.width/2+Math.abs(we)*ke.height/2+6,Ie=ke.width/2+4,He=Math.min(Math.max(Ee+oe*De,q+Ie),Math.max(G-Ie,q+Ie));ne=Re(ke,He,Ce+we*De,` class="pele-edge-label" font-size="${n}"`,o)}F+=`<g class="pele-edge" data-id="${B.from}-${B.to}"><path d="M${u(Ye)},${u(de)}Q${u(ve)},${u(Le)} ${u(Me)},${u(_e)}" fill="none" stroke="var(--_l)"/>`+me+ne+"</g>"}let j=Math.ceil(Math.max(R,_.width)+2*s),J=Math.ceil(W+L+2*s),Z=Re(_,q+R/2,s+_.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g class="pele-cynefin-regions">${T}</g>`+A+D+P+(F?`<g class="pele-edges">${F}</g>`:"");return{svg:tt("cynefin",j,J,a,r,e,Z),width:j,height:J,links:[]}}var RO,qk,FO,Hk,K0,YO,qO,Uk,jk,GO,HO,jd,Xk,Vk,Xd,Kk,Zk=Ge(()=>{xe();sa();$r();yt();kt();RO=class{constructor(){le(this,"domains",new Map);le(this,"transitions",[])}setDomains(e){if(e)for(let t of e){let r=t.domain;this.domains.set(r,{name:r,items:(t.items??[]).map(a=>({label:a.label}))})}}setTransitions(e){e&&(this.transitions=e.filter(t=>t.from!==t.to).map(t=>({from:t.from,to:t.to,label:t.label||void 0})))}};qk=[{name:"cynefin-beta:",pattern:"cynefin-beta:"},gr("cynefin-beta"),{name:"-->",pattern:"-->"},{name:":",pattern:":"},{name:"DOMAIN_NAME",pattern:/complex|complicated|clear|chaotic|confusion/y},kr,cr,hr,ia,qr,Gr,tr,ur,pr];FO={segments:7,vertical:!0,pointStep:17,controlStep:31,controlShift:7},Hk={segments:7,vertical:!1,pointStep:23,controlStep:37,controlShift:11};K0=[["complex",0,0,0],["complicated",1,0,1],["chaotic",0,1,3],["clear",1,1,2]],YO=4,qO=new Map([["complex",["Complex","Probe \u2192 Sense \u2192 Respond","Emergent Practices"]],["complicated",["Complicated","Sense \u2192 Analyse \u2192 Respond","Good Practices"]],["clear",["Clear","Sense \u2192 Categorise \u2192 Respond","Best Practices"]],["chaotic",["Chaotic","Act \u2192 Sense \u2192 Respond","Novel Practices"]],["confusion",["Confusion","","Disorder"]]]),Uk=3,jk=200,GO=10,HO=4,jd=6,Xk=10,Vk=20,Xd=10;Kk={type:"cynefin",parse:(e,t,r)=>OO(DO(e),r),render:UO}});var Qk={};Rt(Qk,{cynefin:()=>Kk});var Jk=Ge(()=>{xe();Zk()});function Zd(e,t){let r=e<=1?e*100:e;if(r<0||r>100)throw new Ke(`${t} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${e}`,"semantic",{type:"wardley"});return r}function ts(e,t,r){return{x:Zd(t,`${r} evolution`),y:Zd(e,`${r} visibility`)}}function eM(e){return e==="+<>"?"bidirectional":e==="+<"?"backward":e==="+>"?"forward":void 0}function XO(e){if(!e?.startsWith("+"))return{};let t=e.indexOf("'",2),r=e[1]==="'"&&t!==-1?e.slice(2,t):void 0;return e.includes("<>")?{flow:"bidirectional",label:r}:e.includes("<")?{flow:"backward",label:r}:e.includes(">")?{flow:"forward",label:r}:{label:r}}function tM(e){return e?[(e.negX?-1:1)*e.offsetX,(e.negY?-1:1)*e.offsetY]:[void 0,void 0]}function VO(e,t){e.size&&t.setSize(e.size.width,e.size.height),e.evolution&&t.setAxes({stages:e.evolution.stages.map(r=>r.secondName?`${r.name.trim()} / ${r.secondName.trim()}`:r.name.trim()),stageBoundaries:e.evolution.stages.filter(r=>r.boundary!==void 0).map(r=>r.boundary)});for(let r of e.anchors){let a=ts(r.visibility,r.evolution,`Anchor "${r.name}"`);t.addNode({id:r.name,label:r.name,x:a.x,y:a.y,className:"anchor"})}for(let r of e.components){let a=ts(r.visibility,r.evolution,`Component "${r.name}"`),[n,i]=tM(r.label);t.addNode({id:r.name,label:r.name,x:a.x,y:a.y,className:"component",labelOffsetX:n,labelOffsetY:i,inertia:r.inertia,sourceStrategy:r.decorator?.strategy})}for(let r of e.notes){let a=ts(r.visibility,r.evolution,`Note "${r.text}"`);t.addNote({text:r.text,x:a.x,y:a.y})}for(let r of e.pipelines){let a=t.getNode(r.parent);if(!a||typeof a.y!="number")throw new Ke(`Pipeline "${r.parent}" must reference an existing component with coordinates.`,"semantic",{type:"wardley"});let n=a.y;t.startPipeline(r.parent);for(let i of r.components){let l=`${r.parent}_${i.name}`,[s,o]=tM(i.label),c=Zd(i.evolution,`Pipeline component "${i.name}" evolution`);t.addNode({id:l,label:i.name,x:c,y:n,className:"pipeline-component",labelOffsetX:s,labelOffsetY:o,inertia:void 0,sourceStrategy:void 0}),t.addPipelineComponent(r.parent,l)}}for(let r of e.links){let a=!!r.arrow&&(r.arrow.includes("-.->")||r.arrow.includes(".-.")),n=XO(r.arrow),i=eM(r.fromPort)??eM(r.toPort)??n.flow;t.addLink({source:t.resolveNodeId(r.from),target:t.resolveNodeId(r.to),dashed:a,label:n.label??r.linkLabel,flow:i})}for(let r of e.evolves){let a=t.getNode(r.component);a?.y!==void 0&&t.addTrend({nodeId:r.component,targetX:Zd(r.target,`Evolve target for "${r.component}"`),targetY:a.y})}if(e.annotations.length>0){let r=ts(e.annotations[0].x,e.annotations[0].y,"Annotations box");t.setAnnotationsBox(r.x,r.y)}for(let r of e.annotation){let a=ts(r.x,r.y,`Annotation ${r.number}`);t.addAnnotation({number:r.number,coordinates:[{x:a.x,y:a.y}],text:r.text})}for(let r of e.accelerators){let a=ts(r.x,r.y,`Accelerator "${r.name}"`);t.addAccelerator({name:r.name,x:a.x,y:a.y})}for(let r of e.deaccelerators){let a=ts(r.x,r.y,`Deaccelerator "${r.name}"`);t.addDeaccelerator({name:r.name,x:a.x,y:a.y})}}function KO(e,t){let r=new jO;return VO(e,r),{type:"wardley",title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,""):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
260
|
+
`):void 0,...r.build()}}function rM(e,t){let r=t;for(let a=e.charCodeAt(r);a>=48&&a<=57;a=e.charCodeAt(r))r++;return r}function ZO(){let e=0,t=0;return(r,a)=>{if((a<e||a>=t)&&(e=a,t=rM(r,a)),t===a||r.charCodeAt(t)!==46)return-1;let n=rM(r,t+1);return n>t+1?n:-1}}function QO(e){let t=new ir(er(e,iM,"wardley"),iM,"wardley"),r={$type:"Wardley",anchors:[],components:[],links:[],evolves:[],pipelines:[],notes:[],annotations:[],annotation:[],accelerators:[],deaccelerators:[]},a=g=>t.kinds[t.i]===g,n=()=>a(36)||a(37)||a(30),i=()=>a(36)?_r(t.take()):a(37)||a(30)?t.take():t.fail("a name"),l=()=>Number(t.expect(10)),s=()=>parseInt(t.expect(35)),o=()=>a(10)?Number(t.take()):parseInt(t.expect(35)),c=()=>{if(!a(-1))for(a(38)||t.fail("a line break or the end of input");a(38);)t.i++},h=g=>{t.expect(0);let p=g();t.expect(1);let m=g();return t.expect(2),[p,m]},d=()=>{t.expect(21),t.expect(0);let g=t.accept(7),p=s();t.expect(1);let m=t.accept(7),x=s();return t.expect(2),{$type:"Label",negX:g,offsetX:p,negY:m,offsetY:x}},f=()=>{let g={$type:"EvolutionStage",name:i()};return t.accept(3)&&(g.boundary=l()),t.accept(4)&&(g.secondName=i()),g};for(;a(38);)t.i++;for(t.expect(16);!a(-1);)switch(t.kind){case 38:t.i++;break;case 32:r.accDescr=nr(t.take()),c();break;case 33:r.accTitle=ar(t.take()),c();break;case 34:r.title=rr(t.take()),c();break;case 17:{t.i++;let[g,p]=h(s);c(),r.size={$type:"Size",width:g,height:p};break}case 18:{t.i++;let g=[f()];for(t.expect(11),g.push(f());t.accept(11);)g.push(f());c(),r.evolution={$type:"Evolution",stages:g};break}case 19:{t.i++;let g=i(),[p,m]=h(l);c(),r.anchors.push({$type:"Anchor",name:g,visibility:p,evolution:m});break}case 20:{t.i++;let g={$type:"Component",name:i(),visibility:0,evolution:0,inertia:!1};[g.visibility,g.evolution]=h(l),a(21)&&(g.label=d()),a(5)&&t.kinds[t.i+1]===15&&(t.i++,g.decorator={$type:"Decorator",strategy:t.take()},t.expect(6)),t.accept(22)?g.inertia=!0:t.accept(5)&&(t.expect(22),t.expect(6),g.inertia=!0),c(),r.components.push(g);break}case 23:{t.i++;let g=i(),p=l();c(),r.evolves.push({$type:"Evolve",component:g,target:p});break}case 24:{t.i++;let g=i();for(t.expect(8),t.expect(38);a(38);)t.i++;let p=[];do{t.expect(20);let m={$type:"PipelineComponent",name:i(),evolution:0};t.expect(0),m.evolution=l(),t.expect(2),a(21)&&(m.label=d()),c(),p.push(m)}while(a(20));t.expect(9),c(),r.pipelines.push({$type:"Pipeline",parent:g,components:p});break}case 25:{t.i++;let g=_r(t.expect(36)),[p,m]=h(l);c(),r.notes.push({$type:"Note",text:g,visibility:p,evolution:m});break}case 26:{t.i++;let[g,p]=h(o);c(),r.annotations.push({$type:"Annotations",x:g,y:p});break}case 27:{t.i++;let g=s();t.expect(1);let[p,m]=h(o),x=_r(t.expect(36));c(),r.annotation.push({$type:"Annotation",number:g,x:p,y:m,text:x});break}case 28:case 29:{let g=t.kind===29;t.i++;let p=i(),[m,x]=h(l);c(),g?r.deaccelerators.push({$type:"Deaccelerator",name:p,x:m,y:x}):r.accelerators.push({$type:"Accelerator",name:p,x:m,y:x});break}default:{n()||t.fail("a statement");let g={$type:"Link",from:i(),to:""};a(12)&&(g.fromPort=t.take()),(a(13)||a(11))&&(g.arrow=t.take()),g.to=i(),a(12)&&(g.toPort=t.take()),a(14)&&(g.linkLabel=t.take().substring(1).trim()),c(),r.links.push(g)}}return r}function aD(e,t,r,a,n){let i=e["wardley-beta"]?.[t];return typeof i=="number"&&i>=a&&i<=n?i:r}function cl(e,t,r){return e<t?t:e>r?r:e}function lM(e,t,r,a){let n=Tn(e),i="",l=r;for(let s of e.lines){let o=!0;for(let c of s){if(c.icon!==void 0)continue;let h=sn(c.style&~n);i+=`<tspan${o?` x="${u(t)}" y="${u(l)}"`:""}${h}>${Qe(c.text)}</tspan>`,o=!1}l+=e.lineHeight}return i===""?"":`<text${Wa(a,n)} xml:space="preserve">${i}</text>`}function oM(e,t,r,a){let n=typeof t=="number"&&Number.isFinite(t)?t:aD(e,r,a,1,1e6);return cl(n,200,1e4)-2*eD}function nD(e,t,r){let a=oM(t,e.size?.width,"width",900);return Jn(r,a,160,(n,i)=>iD(e,t,r,n,a,i))}function iD(e,t,r,a,n,i){let l=r.fontSize??16,s=Math.round(l*.8125),o=Math.round(l*.6875),c=r.measurer??rt(r.fontFamily),h=r.padding??8,d=oM(t,e.size?.height,"height",600)*Math.max(.75,a/n),f=t["wardley-beta"]?.showGrid===!0,g=0,p=0,m=a,x=d,y=(oe,we,ue,ge)=>{oe<g&&(g=oe),we<p&&(p=we),ue>m&&(m=ue),ge>x&&(x=ge)},$=(oe,we,ue,ge)=>(y(we-oe.width/2,ue-oe.height/2,we+oe.width/2,ue+oe.height/2),Re(oe,we,ue,ge,r.icons)),k=(oe,we,ue,ge)=>(y(we,ue-oe.size,we+oe.width,ue-oe.size+oe.height+4),lM(oe,we,ue,ge)),I=(oe,we,ue=i?Math.max(64,Math.min(120,a/2)):4e3,ge=0)=>Be(oe,!1,c,we,ue,ge),_=oe=>oe/100*a,L=oe=>d-oe/100*d,R=e.axes.stages&&e.axes.stages.length>0?e.axes.stages:JO,W=e.axes.stageBoundaries,q=W!==void 0&&W.length===R.length,C="",K="",Q=d,G=0;if(R.forEach((oe,we)=>{let ue=q?G:we/R.length,ge=q?cl(W[we],0,1):(we+1)/R.length;G=ge,we>0&&(C+=`<path class="pele-wardley-stage" d="M${u(ue*a)},0V${u(d)}" stroke="var(--_b)" stroke-dasharray="4 4"/>`);let Ae=I(oe,s,Math.max(48,Math.abs(ge-ue)*a-12));K+=$(Ae,(ue+ge)/2*a,d+8+Ae.height/2,` class="pele-wardley-stage-label" font-size="${s}" fill="var(--_m)"`),Q=Math.max(Q,d+8+Ae.height)}),f)for(let oe=1;oe<4;oe++)C+=`<path class="pele-wardley-grid" d="M${u(a*oe/4)},0V${u(d)}M0,${u(d*oe/4)}H${u(a)}" stroke="var(--_b)" stroke-dasharray="2 6"/>`;C+=`<path class="pele-wardley-axis" d="M0,0V${u(d)}H${u(a)}" stroke="${$a}"/>`;let Y=I(e.axes.xLabel??"Evolution",s),N=I(e.axes.yLabel??"Visibility",s),S=` class="pele-wardley-axis-label" font-size="${s}" font-weight="var(--_hw)"`,M=$(Y,a/2,Q+6+Y.height/2,S)+Re(N,-16,d/2,`${S} transform="rotate(-90 -16 ${u(d/2)})"`);y(-16-N.height/2,0,0,0);let b=Q+6+Y.height+10,E=new Map;for(let oe of e.nodes)E.set(oe.id,{x:_(oe.x),y:L(oe.y),node:oe});let w="",T=new Map;for(let oe of e.pipelines){T.set(oe.nodeId,new Set(oe.componentIds));let we=[];for(let pe of oe.componentIds){let be=E.get(pe);be&&we.push(be)}if(we.length===0)continue;we.sort((pe,be)=>pe.x-be.x);let ue=we[0].x,ge=we[we.length-1].x,Ae=we[0].y,Te=Ae-2*Zt,he=E.get(oe.nodeId);he&&(he.x=(ue+ge)/2,he.y=Te-rs/6),y(ue-Kd,Te,ge+Kd,Te+4*Zt),w+=`<g class="pele-wardley-pipeline" data-id="${Pe(oe.nodeId)}"><rect x="${u(ue-Kd)}" y="${u(Te)}" width="${u(ge-ue+2*Kd)}" height="${u(4*Zt)}" fill="var(--_s)" stroke="var(--_b)"${ot}/>`+(we.length>1?`<path d="M${u(ue)},${u(Ae)}H${u(ge)}" stroke="${$a}" stroke-dasharray="4 4"/>`:"")+"</g>"}let A=new Map,v=(oe,we,ue)=>{let ge=oe.node;if(ge.className==="anchor"){let Ae=A.get(ge);return Ae||A.set(ge,Ae=I(ge.label,s,i?Math.max(64,a/2):4e3,1)),1/Math.hypot(we/(Ae.width/2+5),ue/(s*.8))}return ge.isPipelineParent?rs/Math.SQRT2:ge.sourceStrategy?2*Zt:Zt},D=new Map,z=(oe,we,ue)=>{Math.abs(we)<.25||Math.abs(ue)<.25||D.set(oe,(D.get(oe)??0)|(we>0?ue<0?1:2:ue<0?4:8))},H="";for(let oe of e.links){let we=E.get(oe.source),ue=E.get(oe.target);if(!we||!ue||we===ue||T.get(oe.target)?.has(oe.source))continue;let ge=ue.x-we.x,Ae=ue.y-we.y,Te=Math.hypot(ge,Ae);if(Te<.01)continue;let he=ge/Te,pe=Ae/Te,be=v(we,he,pe),Ne=v(ue,he,pe);if(be+Ne>=Te)continue;z(we,he,pe),z(ue,-he,-pe);let Oe=we.x+he*be,Ye=we.y+pe*be,de=ue.x-he*Ne,Me=ue.y-pe*Ne,_e="";(oe.flow==="forward"||oe.flow==="bidirectional")&&(_e+=Mt("arrow_point",de,Me,he,pe,$a),de-=he*xt("arrow_point"),Me-=pe*xt("arrow_point")),(oe.flow==="backward"||oe.flow==="bidirectional")&&(_e+=Mt("arrow_point",Oe,Ye,-he,-pe,$a),Oe+=he*xt("arrow_point"),Ye+=pe*xt("arrow_point"));let $e="";if(oe.label){let ve=I(oe.label,o+1,200),Le=he>=0?1:-1,qe=pe*Le,Fe=-he*Le,V=5+Math.abs(qe)*ve.width/2+Math.abs(Fe)*ve.height/2;$e=$(ve,(we.x+ue.x)/2+qe*V,(we.y+ue.y)/2+Fe*V,` class="pele-edge-label" font-size="${o+1}" fill="var(--_m)"`)}H+=`<g class="pele-edge${oe.dashed?" pele-wardley-dashed":""}" data-id="${Pe(oe.source)}-${Pe(oe.target)}"><path d="M${u(Oe)},${u(Ye)}L${u(de)},${u(Me)}" stroke="${$a}"${oe.dashed?' stroke-dasharray="6 6"':""}/>`+_e+$e+"</g>"}let P="";for(let oe of e.trends){let we=E.get(oe.nodeId);if(!we)continue;let ue=_(oe.targetX),ge=L(oe.targetY),Ae=ue-we.x,Te=ge-we.y,he=Math.hypot(Ae,Te),pe="",be=he>0?v(we,Ae/he,Te/he):0;if(he>be+Zt+4){let Ne=Ae/he,Oe=Te/he,Ye=ue-Ne*(Zt+2),de=ge-Oe*(Zt+2);pe=`<path d="M${u(we.x+Ne*be)},${u(we.y+Oe*be)}L${u(Ye-Ne*xt("arrow_point"))},${u(de-Oe*xt("arrow_point"))}" stroke="${Z0}" stroke-dasharray="4 4"/>`+Mt("arrow_point",Ye,de,Ne,Oe,Z0)}y(ue-Zt,ge-Zt,ue+Zt,ge+Zt),P+=`<g class="pele-wardley-trend" data-id="${Pe(oe.nodeId)}">${pe}<circle cx="${u(ue)}" cy="${u(ge)}" r="${Zt}" fill="var(--_bg)" stroke="${Z0}"/></g>`}let O="",F=1.2*Zt,U=.7*Zt;for(let oe of E.values()){let we=oe.node,{x:ue,y:ge}=oe,Ae=we.className==="anchor",Te=we.sourceStrategy,he="";if(Te){let Oe=Te==="outsource"?"var(--_m)":Te==="buy"?"var(--_a)":Te==="build"?"var(--_s)":"var(--_bg)";he+=`<circle class="pele-wardley-${Te}" cx="${u(ue)}" cy="${u(ge)}" r="${2*Zt}" fill="${Oe}" stroke="${$a}"/>`}if(Te==="market"){let Oe=F*Math.cos(Math.PI/6),Ye=ge+F*Math.sin(Math.PI/6);he+=`<path d="M${u(ue)},${u(ge-F)}L${u(ue-Oe)},${u(Ye)}H${u(ue+Oe)}Z" fill="none" stroke="${$a}"/>`;for(let[de,Me]of[[ue,ge-F],[ue-Oe,Ye],[ue+Oe,Ye]])he+=`<circle cx="${u(de)}" cy="${u(Me)}" r="${u(U)}" fill="var(--_bg)" stroke="${$a}"/>`}else we.isPipelineParent?he+=`<rect x="${u(ue-rs/2)}" y="${u(ge-rs/2)}" width="${rs}" height="${rs}" fill="var(--_bg)" stroke="${$a}"/>`:Ae||(he+=`<circle cx="${u(ue)}" cy="${u(ge)}" r="${Zt}" fill="var(--_bg)" stroke="${$a}"/>`);if(we.inertia===!0){let Oe=(we.isPipelineParent?rs/2:Zt)+10+(Te?Zt+4:0);he+=`<rect class="pele-wardley-inertia" x="${u(ue+Oe)}" y="${u(ge-Zt)}" width="4" height="${2*Zt}" fill="${$a}"/>`}let pe=we.labelOffsetX===void 0?void 0:cl(we.labelOffsetX,-5e3,5e3),be=we.labelOffsetY===void 0?void 0:cl(we.labelOffsetY,-5e3,5e3),Ne;if(Ae){let Oe=A.get(we)??I(we.label,s,i?Math.max(64,a/2):4e3,1);Ne=$(Oe,ue+(pe??0),ge+(be??-3),` class="pele-label" font-size="${s}" font-weight="var(--_hw)"`)}else{let Oe=I(we.label,s),Ye=` class="pele-label" font-size="${s}"`,de=tD+(Te?10:0);if(pe!==void 0||be!==void 0)Ne=k(Oe,ue+(pe??de),ge+(be??-de),Ye);else if(we.inPipeline)Ne=$(Oe,ue,ge+2*Zt+4+Oe.height/2,Ye);else{let Me=D.get(oe)??0,_e=Me&1?Me&2?Me&4?Me&8?1:8:4:2:1,$e=_e===1||_e===2,ve=_e===1||_e===4;Ne=k(Oe,$e?ue+de:ue-de-Oe.width,ve?ge-de:ge+de+s*.75,Ye)}}y(ue-2*Zt,ge-2*Zt,ue+2*Zt+20,ge+2*Zt),O+=`<g class="pele-node pele-wardley-${Ae?"anchor":we.isPipelineParent?"pipeline-parent":we.inPipeline?"pipeline-component":"component"}" data-id="${Pe(we.id)}">${he}${Ne}</g>`}let j="";for(let oe of e.annotations){let we=I(String(oe.number),o,4e3,1),ue="";for(let ge of oe.coordinates){let Ae=_(ge.x),Te=L(ge.y),he=Math.max(10,we.width/2+4);y(Ae-he,Te-he,Ae+he,Te+he),ue+=`<circle cx="${u(Ae)}" cy="${u(Te)}" r="${u(he)}" fill="var(--_bg)" stroke="${$a}"/>`+Re(we,Ae,Te,` font-size="${o}" font-weight="var(--_hw)"`)}j+=`<g class="pele-wardley-annotation" data-id="${Pe(String(oe.number))}">${ue}</g>`}let J=e.annotations.filter(oe=>oe.text).sort((oe,we)=>oe.number-we.number);if(J.length>0){let oe=J.map(be=>I(`${be.number}. ${be.text}`,s,i?Math.max(80,a-20):320)),we=0,ue=0;for(let be of oe)we=Math.max(we,be.width),ue+=be.height;we+=20,ue+=14;let ge=e.annotationsBox,Ae=ge?cl(_(ge.x),0,Math.max(0,a-we)):0,Te=ge?cl(L(ge.y),0,Math.max(0,d-ue)):b;y(Ae,Te,Ae+we,Te+ue);let he="",pe=Te+7;for(let be of oe)he+=lM(be,Ae+10,pe+be.lineHeight/2+s*.35,` font-size="${s}"`),pe+=be.height;j+=`<g class="pele-wardley-annotations"><rect x="${u(Ae)}" y="${u(Te)}" width="${u(we)}" height="${u(ue)}" fill="var(--_bg)" stroke="var(--_b)"${ot}/>${he}</g>`}let Z="";for(let oe of e.notes)Z+=k(I(oe.text,s,Math.min(360,a*.6),1),_(oe.x),L(oe.y),` class="pele-wardley-note" font-size="${s}" font-weight="var(--_hw)"`);let B="",X=(oe,we,ue,ge)=>{let Ae=_(we),Te=L(ue),he=rD/2,pe=ge?Ae+qo:Ae,be=ge?Ae:Ae+qo,Ne=ge?Ae+qo-sM:Ae+sM,Oe=`M${u(be)},${u(Te-he)}H${u(Ne)}V${u(Te-he-8)}L${u(pe)},${u(Te)}L${u(Ne)},${u(Te+he+8)}V${u(Te+he)}H${u(be)}Z`;y(Ae,Te-he-8,Ae+qo,Te+he+8),B+=`<g class="pele-wardley-${ge?"accelerator":"deaccelerator"}" data-id="${Pe(oe)}"><path d="${Oe}" fill="var(--_s)" stroke="${$a}"/>`+$(I(oe,o+1,160,1),Ae+qo/2,Te+he+8+12,` font-size="${o+1}" font-weight="var(--_hw)"`)+"</g>"};for(let oe of e.accelerators)X(oe.name,oe.x,oe.y,!0);for(let oe of e.deaccelerators)X(oe.name,oe.x,oe.y,!1);let te=Be(e.title,!1,c,l,i?Math.max(80,a):4e3,1),se=te.height>0?te.height+12:0,ce=Math.min(g,a/2-te.width/2),ae=Math.max(m,a/2+te.width/2),ie=h-ce,ee=h+se-p,re=Math.ceil(ae-ce+2*h),fe=Math.ceil(x-p+se+2*h),ye=Re(te,ie+a/2,h+te.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g transform="translate(${u(ie)},${u(ee)})"><g class="pele-wardley-frame" fill="none">${C}</g>`+K+M+w+(H?`<g class="pele-edges" fill="none">${H}</g>`:"")+(P?`<g class="pele-wardley-trends" fill="none">${P}</g>`:"")+O+j+Z+B+"</g>";return{svg:tt("wardley",re,fe,l,r,e,ye),width:re,height:fe,links:[]}}var jO,aM,nM,ca,iM,JO,eD,Zt,rs,tD,Kd,qo,rD,sM,Z0,$a,cM,hM=Ge(()=>{xe();Wd();Gt();sa();$r();yt();kt();jO=class{constructor(){le(this,"nodes",new Map);le(this,"labels");le(this,"links",[]);le(this,"trends",new Map);le(this,"pipelines",new Map);le(this,"annotations",[]);le(this,"notes",[]);le(this,"accelerators",[]);le(this,"deaccelerators",[]);le(this,"annotationsBox");le(this,"axes",{});le(this,"size")}addNode(e){let t=this.nodes.get(e.id)??{id:e.id,label:e.label};this.nodes.set(e.id,{...t,...e,className:e.className??t.className,labelOffsetX:e.labelOffsetX??t.labelOffsetX,labelOffsetY:e.labelOffsetY??t.labelOffsetY}),this.labels=void 0}addLink(e){this.links.push(e)}addTrend(e){this.trends.set(e.nodeId,e)}startPipeline(e){this.pipelines.set(e,{nodeId:e,componentIds:[]});let t=this.nodes.get(e);t&&(t.isPipelineParent=!0)}addPipelineComponent(e,t){this.pipelines.get(e)?.componentIds.push(t);let r=this.nodes.get(t);r&&(r.inPipeline=!0)}addAnnotation(e){this.annotations.push(e)}addNote(e){this.notes.push(e)}addAccelerator(e){this.accelerators.push(e)}addDeaccelerator(e){this.deaccelerators.push(e)}setAnnotationsBox(e,t){this.annotationsBox={x:e,y:t}}setAxes(e){this.axes={...this.axes,...e}}setSize(e,t){this.size={width:e,height:t}}getNode(e){return this.nodes.get(e)}resolveNodeId(e){if(this.nodes.has(e))return e;if(!this.labels){this.labels=new Map;for(let[t,r]of this.nodes)this.labels.has(r.label)||this.labels.set(r.label,t)}return this.labels.get(e)??e}build(){let e=[];for(let t of this.nodes.values()){if(typeof t.x!="number"||typeof t.y!="number")throw new Ke(`Node "${t.label}" is missing coordinates`,"semantic",{type:"wardley"});e.push(t)}return{nodes:e,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}};aM={name:"ARROW",pattern:/->/y,first:"-"},nM={name:"LINK_ARROW",pattern:/-->|-\.->|>|\+'[^']*'<>|\+'[^']*'<|\+'[^']*'>/y,first:"->+"},ca=(e,t)=>({name:e,pattern:new RegExp(t,"y"),first:t[0]}),iM=[{name:"[",pattern:"["},{name:",",pattern:","},{name:"]",pattern:"]"},{name:"@",pattern:"@"},{name:"/",pattern:"/"},{name:"(",pattern:"("},{name:")",pattern:")"},{name:"-",pattern:"-",longer:[aM,nM,tr]},{name:"{",pattern:"{"},{name:"}",pattern:"}"},{name:"WARDLEY_NUMBER",pattern:/[0-9]+\.[0-9]+/y,first:"0123456789",scanner:ZO},aM,{name:"LINK_PORT",pattern:/\+<>|\+>|\+</y,first:"+"},nM,{name:"LINK_LABEL",pattern:/;[^\n\r]+/y,first:";"},{name:"STRATEGY",pattern:/build|buy|outsource|market/y,first:"bom"},ca("KW_WARDLEY","wardley-beta"),ca("KW_SIZE","size"),ca("KW_EVOLUTION","evolution"),ca("KW_ANCHOR","anchor"),ca("KW_COMPONENT","component"),ca("KW_LABEL","label"),ca("KW_INERTIA","inertia"),ca("KW_EVOLVE","evolve"),ca("KW_PIPELINE","pipeline"),ca("KW_NOTE","note"),ca("KW_ANNOTATIONS","annotations"),ca("KW_ANNOTATION","annotation"),ca("KW_ACCELERATOR","accelerator"),ca("KW_DEACCELERATOR","deaccelerator"),{name:"NAME_WITH_SPACES",pattern:/(?!title\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/y,first:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"},{name:"WS",pattern:/[ \t]+/y,hidden:!0,first:" "},ol(),cr,hr,{name:"INT",pattern:/0|[1-9][0-9]*(?!\.)/y,first:"0123456789"},ia,{name:"ID",pattern:/[\w]([-\w]*\w)?/y,first:"_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"},qr,Gr,tr,ur,pr];JO=["Genesis","Custom Built","Product","Commodity"],eD=48,Zt=6,rs=10,tD=8,Kd=15,qo=60,rD=30,sM=20,Z0="var(--_c)",$a="var(--_l)";cM={type:"wardley",section:"wardley-beta",parse:(e,t,r)=>KO(QO(e),r),render:nD}});var dM={};Rt(dM,{wardley:()=>cM});var fM=Ge(()=>{xe();hM()});function oD(e){return e==="ui"||e==="processor"?"trigger":e==="event"?"stream":"state"}function Q0(e){let t=e.indexOf("{"),r=e.lastIndexOf("}"),a=(t!==-1&&r>t?e.slice(t+1,r):t===-1&&e.length>=2?e.slice(1,-1):"").replace(/\r/g,"").split(`
|
|
261
|
+
`);for(;a.length>0&&a[0].trim()==="";)a.shift();for(;a.length>0&&a[a.length-1].trim()==="";)a.pop();let n=1/0;for(let i of a)i.trim()!==""&&(n=Math.min(n,i.length-i.trimStart().length));return a.map(i=>i.slice(Math.min(n,i.length)).trimEnd()).join(`
|
|
262
|
+
`)}function cD(e,t){let r=new Set;for(let d of e.frames){if(r.has(d.name)){let f=ql(e.$source,d.$offset).line;throw new Ke(`Duplicate event modeling frame ID "${d.name}" on line ${f}`,"semantic",{type:"eventmodeling",line:f})}r.add(d.name)}let a=new Map;for(let d of e.dataEntities)a.has(d.name)||a.set(d.name,d.dataBlockValue);let n=new Map,i=new Map,l=(d,f)=>{let g=oD(d),p=f===void 0?g:`${g} ${f}`,m=n.get(p);if(!m){let[x,y,$]=lD.get(g),k=x;f!==void 0&&(k=i.get(g)??x+1,i.set(g,k+1)),m={index:k,label:f===void 0?y:$+f,group:g,namespace:f},n.set(p,m)}return m},s=[],o=new Map,c=[];e.frames.forEach((d,f)=>{let g=d.entityIdentifier.split("."),p=g.length===2?g[0]:void 0,m=sD.get(d.modelEntityType)??"event",x=d.dataInlineValue===void 0?void 0:Q0(d.dataInlineValue);if(d.dataReference){let $=a.get(d.dataReference.$refText);$!==void 0&&(x=Q0($))}let y={id:d.name,kind:m,entity:d.entityIdentifier,name:g.length===2?g[1]:d.entityIdentifier,namespace:p,reset:d.$type==="EmResetFrame",lane:l(m,p),data:x,dataType:d.dataType};if(s.push(y),o.set(y.id,y),d.sourceFrames.length>0){let $=new Set(d.sourceFrames.map(k=>k.$refText));for(let k of s)$.has(k.id)&&c.push({source:k,target:y})}else if(f>0&&!y.reset){for(let $=f-1;$>=0;$--)if(s[$].lane!==y.lane){c.push({source:s[$],target:y});break}}});let h=d=>d.map(f=>f.entityIdentifier.$refText);return{type:"eventmodeling",title:e.title&&rr(e.title)||t,accTitle:e.accTitle?ar(e.accTitle).replace(/^\s+/g,""):void 0,accDescr:e.accDescr?nr(e.accDescr).replace(/\n\s+/g,`
|
|
263
|
+
`):void 0,boxes:s,lanes:[...n.values()].sort((d,f)=>d.index-f.index),relations:c,notes:e.noteEntities.map(d=>({frame:d.sourceFrame.$refText,text:Q0(d.dataBlockValue),dataType:d.dataType})),specifications:e.gwtEntities.map(d=>({frame:d.sourceFrame.$refText,given:h(d.givenStatements),when:h(d.whenStatements),then:h(d.thenStatements)})),entities:e.modelEntities.map(d=>d.name)}}function uD(e){let t=new ir(er(e,r1,"eventmodeling"),r1,"eventmodeling"),r={$type:"EventModel",modelEntities:[],frames:[],dataEntities:[],noteEntities:[],gwtEntities:[],$source:e},a=o=>t.kinds[t.i]===o,n=(o,c)=>o.has(t.kinds[t.i])?t.take():t.fail(c),i=()=>{let o=t.expect(qt.id);for(;t.accept(qt.dot);)o+="."+t.expect(qt.id);return o},l=()=>{if(!t.accept(qt.tick))return;let o=n(fD,"a data type");return t.expect(qt.tick),o},s=()=>{let o=[];do n(J0,"an entity type"),o.push({$type:"EmGwtStatement",entityIdentifier:{$refText:t.expect(qt.id)}});while(J0.has(t.kinds[t.i]));return o};for(t.expect(qt.keyword);!a(-1);){let o=t.kinds[t.i];if(o===qt.accDescr)r.accDescr=t.take();else if(o===qt.accTitle)r.accTitle=t.take();else if(o===qt.title)r.title=t.take();else if(o===qt.entity)t.i++,r.modelEntities.push({$type:"EmModelEntity",name:i()});else if(uM.has(o)||dD.has(o)){let c={$type:uM.has(o)?"EmTimeFrame":"EmResetFrame",name:"",modelEntityType:"",entityIdentifier:"",sourceFrames:[],$offset:t.tokens.starts[t.i]};for(t.i++,c.name=t.expect(qt.frameId),c.modelEntityType=n(J0,"an entity type"),c.entityIdentifier=i();t.accept(qt.arrow);)c.sourceFrames.push({$refText:t.expect(qt.frameId)});if(t.accept(qt.open)&&(c.dataReference={$refText:t.expect(qt.id)},t.expect(qt.close)),a(qt.tick)||a(qt.inline)){let h=l();h!==void 0&&(c.dataType=h),c.dataInlineValue=t.expect(qt.inline)}r.frames.push(c)}else if(o===qt.data){t.i++;let c={$type:"EmDataEntity",name:t.expect(qt.id),dataBlockValue:""},h=l();h!==void 0&&(c.dataType=h),c.dataBlockValue=t.expect(qt.block),r.dataEntities.push(c)}else if(o===qt.note){t.i++;let c={$type:"EmNoteEntity",sourceFrame:{$refText:t.expect(qt.frameId)},dataBlockValue:""},h=l();h!==void 0&&(c.dataType=h),c.dataBlockValue=t.expect(qt.block),r.noteEntities.push(c)}else if(o===qt.gwt){t.i++;let c={$type:"EmGwt",sourceFrame:{$refText:t.expect(qt.frameId)},givenStatements:[],whenStatements:[],thenStatements:[]};t.expect(qt.given),c.givenStatements=s(),t.accept(qt.when)&&(c.whenStatements=s()),t.expect(qt.then),c.thenStatements=s(),r.gwtEntities.push(c)}else t.fail("a frame, an entity, a data block, a note, or a specification")}return r}function e1(e,t){let r=[];for(let a of Tt(e).split(`
|
|
264
|
+
`)){if(a.length<=t){r.push(a);continue}for(let n=0;n<a.length;n+=t)r.push(a.slice(n,n+t))}return r}function Jd(e,t,r,a,n){let i="";for(let l=0;l<e.length;l++)e[l]!==""&&(i+=`<tspan x="${u(t)}" y="${u(r+l*a)}">${Qe(e[l])}</tspan>`);return i===""?"":`<text${n} xml:space="preserve">${i}</text>`}function yD(e,t,r){return jt(r,a=>xD(e,t,r,a))}function xD(e,t,r,a){if(a)return $D(e,r);let n=r.fontSize??16,i=Math.round(n*.875),l=Math.round(n*.8125),s=Math.round(n*.75),o=Math.round(s*1.4),c=Math.round(l*1.5),h=r.measurer??rt(r.fontFamily,r.fontFamilyMono),d=r.padding??8,f=(A,v,D)=>{let z=0;for(let H of A)z=Math.max(z,h.width(H,v,D));return z},g=new Map,p=0;for(let A of e.lanes){let v=Be(A.label,!1,h,l,4e3,1);p=Math.max(p,v.width),g.set(A,{lane:A,label:v,right:-1/0,y:0,h:0})}p+=2*Qd;let m=[],x=new Map,y;for(let A of e.boxes){let v=g.get(A.lane),D=Be(A.name,!1,h,i,4e3,1),z=A.data?e1(A.data,mD):[],H=Math.max(pD,Math.max(D.width,f(z,s,4))+2*Rr),P=2*ka+D.height+(z.length>0?6+z.length*o:0),O=0;if(y){let U=y.x+Math.max(y.w/2,y.w-gD);O=y.box.lane===A.lane?v.right+pM:Math.max(U,v.right+pM)}let F={box:A,name:D,data:z,x:O,y:0,w:H,h:P};v.right=O+H,v.h=Math.max(v.h,P),m.push(F),x.set(A,F),y=F}let $=0;for(let A of m)$=Math.max($,A.x+A.w);let k=p+$+Qd,I=Be(e.title,!1,h,n,4e3,1),_=I.height>0?I.height+12:0,L=d,R=d+_,W=R,q="";for(let A of g.values())A.y=W,A.h+=2*Qd,q+=`<g class="pele-cluster pele-em-lane" data-id="${Pe(A.lane.label)}"><rect x="${u(L)}" y="${u(W)}" width="${u(k)}" height="${u(A.h)}" fill="var(--_s)"${ot}/>`+Re(A.label,L+Qd+A.label.width/2,W+A.h/2,` class="pele-cluster-label" font-size="${l}" font-weight="var(--_hw)" fill="var(--_m)"`)+"</g>",W+=A.h+gM;let C=g.size>0?W-gM:R,K="";for(let A of m){let v=g.get(A.box.lane);A.x+=L+p,A.y=v.y+(v.h-A.h)/2;let D=xM.get(A.box.kind),z=`x="${u(A.x)}" y="${u(A.y)}" width="${u(A.w)}" height="${u(A.h)}"`,H=D===void 0?`<rect ${z} fill="var(--_bg)" stroke="var(--_b)"${ot}/>`:`<rect ${z} fill="var(--_bg)"${ot}/><rect ${z} fill="${pt(D)}" fill-opacity="0.22" stroke="${pt(D)}"${ot}/>`,P=A.y+ka+A.name.height/2,O=Re(A.name,A.x+A.w/2,P,` class="pele-label" font-size="${i}" font-weight="var(--_hw)"`)+Jd(A.data,A.x+Rr,A.y+ka+A.name.height+6+o/2+s*.35,o,` class="pele-em-data" font-family="${Ul}" font-size="${s}"`);K+=`<g class="pele-node pele-em-${A.box.kind}${A.box.reset?" pele-em-reset":""}" data-id="${Pe(A.box.id)}">${H}${O}</g>`}let Q="",G=xt("arrow_point");for(let A of e.relations){let v=x.get(A.source),D=x.get(A.target);if(!v||!D||v===D)continue;let z,H;if(v.box.lane===D.box.lane){let P=D.x>=v.x,O=P?v.x+v.w:v.x,F=P?D.x:D.x+D.w,U=v.y+v.h/2,j=D.y+D.h/2,J=F>=O?1:-1;z=`M${u(O)},${u(U)}L${u(F-J*G)},${u(j)}`,H=Mt("arrow_point",F,j,J,0,"var(--_l)")}else{let P=D.y>v.y,O=Math.max(v.x,D.x),F=Math.min(v.x+v.w,D.x+D.w),U=ce=>Math.min(24,ce/4),j=F-O>=16?(O+F)/2:D.x>v.x?v.x+v.w-U(v.w):v.x+U(v.w),J=F-O>=16?j:D.x>v.x?D.x+U(D.w):D.x+D.w-U(D.w),Z=P?v.y+v.h:v.y,B=P?D.y:D.y+D.h,X=P?1:-1,te=B-X*G,se=(Z+te)/2;z=j===J?`M${u(j)},${u(Z)}V${u(te)}`:`M${u(j)},${u(Z)}C${u(j)},${u(se)} ${u(J)},${u(se)} ${u(J)},${u(te)}`,H=Mt("arrow_point",J,B,0,X,"var(--_l)")}Q+=`<g class="pele-edge" data-id="${Pe(A.source.id)}-${Pe(A.target.id)}"><path d="${z}" fill="none" stroke="var(--_l)"/>${H}</g>`}let Y=new Map;for(let A of e.boxes)Y.set(A.id,A.name);let N="",S=0,M=(A,v,D,z)=>{let H=Be(`${v} \xB7 ${D}${Y.has(D)?" "+Y.get(D):""}`,!1,h,l,4e3,1),P=Math.max(H.width,f(z,l,0))+2*Rr,O=2*ka+H.height+z.length*c,F=C+(N===""&&g.size===0?0:bM);N+=`<g class="pele-em-${A}" data-id="${Pe(D)}"><rect x="${u(L)}" y="${u(F)}" width="${u(P)}" height="${u(O)}" fill="var(--_bg)" stroke="var(--_b)"${ot}/>`+Re(H,L+Rr+H.width/2,F+ka+H.height/2,` font-size="${l}" font-weight="var(--_hw)"`)+Jd(z,L+Rr,F+ka+H.height+c/2+l*.35,c,` font-size="${l}"`)+"</g>",C=F+O,S=Math.max(S,P)};for(let A of e.notes)M("note","Note",A.frame,e1(A.text,mM));for(let A of e.specifications){let v=[`Given ${A.given.join(", ")}`];A.when.length>0&&v.push(`When ${A.when.join(", ")}`),v.push(`Then ${A.then.join(", ")}`),M("specification","Given / When / Then",A.frame,v.flatMap(D=>e1(D,mM)))}let b=Math.max(g.size>0?k:0,S,I.width),E=Math.ceil(b+2*d),w=Math.ceil(C+d),T=Re(I,E/2,d+I.height/2,' class="pele-title" font-weight="var(--_tw)"')+q+Q+K+N;return{svg:tt("eventmodeling",E,w,n,r,e,T),width:E,height:w,links:[]}}function $D(e,t){let r=t.fontSize??16,a=Math.round(r*.875),n=Math.round(r*.75),i=t.padding??8,l=t.measurer??rt(t.fontFamily,t.fontFamilyMono),s=Math.max(160,(t.maxWidth??320)-2*i),o=new Map(e.boxes.map((Y,N)=>[Y,N])),c=new Map,h=new Set;for(let Y of e.relations){let N=o.get(Y.source),S=o.get(Y.target);if(N===void 0||S===void 0||N===S)continue;if(Math.abs(N-S)<2){h.add(e.boxes[Math.max(N,S)]);continue}let M=c.get(Y.target);M?(M[0]=Math.min(M[0],N),M[1]=Math.max(M[1],N)):c.set(Y.target,[Math.min(N,S),Math.max(N,S)])}let d=new Map,f=[];for(let[Y,[N,S]]of[...c].sort((M,b)=>M[1][0]-b[1][0])){let M=f.findIndex(b=>b<N);M<0&&(M=f.length),f[M]=S,d.set(Y,M)}let g=24+yM*Math.max(0,f.length-1),p=Math.max(bD,s-g),m=p-2*Rr,x=Be(e.title,!1,l,r,s,1),y=i+(x.height?x.height+12:0),$=i+x.height,k=Math.max(x.width,p+g),I="",_="",L="",R=new Map,W=(Y,N,S=0)=>Gi(Tt(Y),l,N,m,S);e.boxes.forEach((Y,N)=>{let S=h.has(Y)?m-wD:m,M=Hi(Be(Y.lane.label,!1,l,a,S,1),l,S),b=Be(Y.name,!1,l,a,m-36,1),E=Y.data?W(Y.data,n,4):void 0,w=Math.max(p,M.width+2*Rr,b.width+2*Rr+36,(E?.width??0)+2*Rr),T=M.height+12,A=2*ka+b.height+(E?E.height+6:0),v=xM.get(Y.kind),D=y+T,z=`x="${u(i)}" y="${u(D)}" width="${u(w)}" height="${u(A)}"`;I+=`<g class="pele-cluster pele-em-lane" data-id="${Pe(Y.lane.label)}">`+zn(M,i+Rr,y,` class="pele-cluster-label" font-size="${a}" font-weight="var(--_hw)" fill="var(--_m)"`)+`<g class="pele-node pele-em-${Y.kind}${Y.reset?" pele-em-reset":""}" data-id="${Pe(Y.id)}"><rect ${z} fill="var(--_bg)" stroke="var(--_b)"${ot}/>`+(v===void 0?"":`<rect ${z} fill="${pt(v)}" fill-opacity="0.22" stroke="${pt(v)}"${ot}/>`)+Re(b,i+Rr+b.width/2,D+ka+b.height/2,` class="pele-label" font-size="${a}" font-weight="var(--_hw)"`)+`<text class="pele-em-frame" x="${u(i+w-Rr)}" y="${u(D+ka+a)}" text-anchor="end" font-size="${n}" fill="var(--_m)">${Qe(Y.id)}</text>`+(E?Jd(E.lines.map(H=>H.map(P=>P.text).join("")),i+Rr,D+ka+b.height+6+E.lineHeight/2+n*.35,E.lineHeight,` class="pele-em-data" font-family="${Ul}" font-size="${n}"`):"")+"</g></g>",R.set(Y,{y:D,h:A,w,index:N,lane:M.width}),k=Math.max(k,w+g),$=D+A,y=$+28});for(let Y of e.relations){let N=R.get(Y.source),S=R.get(Y.target);if(!N||!S||N===S)continue;let M=S.y>N.y,b=M?1:-1,E=M?N.y+N.h:N.y,w=M?S.y:S.y+S.h,T,A;if(Math.abs(N.index-S.index)===1){let v=i+Math.max(Math.min(N.w,S.w)/2,Rr+(M?S:N).lane+16);T=`M${u(v)},${u(E)}V${u(w-b*xt("arrow_point"))}`,A=Mt("arrow_point",v,w,0,b,"var(--_l)")}else{let v=i+k-g+12+yM*(d.get(Y.target)??0),D=N.y+N.h/2-5,z=S.y+S.h/2+5;T=`M${u(i+N.w)},${u(D)}H${u(v)}V${u(z)}H${u(i+S.w+xt("arrow_point"))}`,A=Mt("arrow_point",i+S.w,z,-1,0,"var(--_l)")}_+=`<g class="pele-edge" data-id="${Pe(Y.source.id)}-${Pe(Y.target.id)}"><path d="${T}" fill="none" stroke="var(--_l)"/>${A}</g>`}let q=new Map(e.boxes.map(Y=>[Y.id,Y.name])),C=(Y,N,S,M)=>{let b=Be(`${N} \xB7 ${S}${q.has(S)?" "+q.get(S):""}`,!1,l,a,m,1),E=W(M,a),w=Math.max(p,b.width+2*Rr,E.width+2*Rr),T=2*ka+b.height+E.height;L+=`<g class="pele-em-${Y}" data-id="${Pe(S)}"><rect x="${u(i)}" y="${u(y)}" width="${u(w)}" height="${u(T)}" fill="var(--_bg)" stroke="var(--_b)"${ot}/>`+Re(b,i+Rr+b.width/2,y+ka+b.height/2,` font-size="${a}" font-weight="var(--_hw)"`)+Jd(E.lines.map(A=>A.map(v=>v.text).join("")),i+Rr,y+ka+b.height+E.lineHeight/2+a*.35,E.lineHeight,` font-size="${a}"`)+"</g>",$=y+T,y=$+bM,k=Math.max(k,w)};for(let Y of e.notes)C("note","Note",Y.frame,Y.text);for(let Y of e.specifications){let N=[`Given ${Y.given.join(", ")}`];Y.when.length&&N.push(`When ${Y.when.join(", ")}`),N.push(`Then ${Y.then.join(", ")}`),C("specification","Given / When / Then",Y.frame,N.join(`
|
|
265
|
+
`))}let K=Math.ceil(k+2*i),Q=Math.ceil($+i),G=Re(x,K/2,i+x.height/2,' class="pele-title" font-weight="var(--_tw)"')+_+I+L;return{svg:tt("eventmodeling",K,Q,r,t,e,G),width:K,height:Q,links:[]}}var sD,lD,t1,hl,Go,hD,r1,yr,ef,qt,uM,dD,J0,fD,xM,Rr,ka,pD,pM,gD,Qd,gM,mD,mM,bM,yM,bD,wD,wM,$M=Ge(()=>{xe();Wd();Ui();Gt();sa();$r();yt();kt();sD=new Map([["ui","ui"],["pcr","processor"],["processor","processor"],["rmo","readmodel"],["readmodel","readmodel"],["cmd","command"],["command","command"],["evt","event"],["event","event"]]),lD=new Map([["trigger",[0,"UI/Automation","UI/A: "]],["state",[100,"Command/Read Model","C/RM: "]],["stream",[200,"Events","Stream: "]]]);t1={name:"EM_ID",pattern:/[_a-zA-Z][\w_]*/y},hl=e=>({name:e,pattern:e,longer:[t1]}),Go=e=>({name:e,pattern:e}),hD=["resetframe","readmodel","processor","timeframe","command","entity","event","jsobj","figma","given","json","salt","html","text","data","note","when","then","rmo","cmd","evt","pcr","uri"],r1=[{...gr("eventmodeling"),longer:[t1]},...hD.map(hl),Go("->>"),hl("gwt"),hl("ui"),hl("md"),hl("tf"),Go("[["),Go("]]"),hl("rf"),Go("`"),Go("."),t1,{name:"EM_FID",pattern:/\d{1,3}/y},{name:"EM_DATA_INLINE",pattern:/\{(.*)\}|"(.*)"|'(.*)'/y},{name:"EM_DATA_BLOCK",pattern:/\{[\t ]*\r?\n(?:[\S\s]*?\r?\n)?\}(?:\r?\n|(?!\S))/y},ol("EM_ACC_DESCR"),{...cr,name:"EM_ACC_TITLE"},{...hr,name:"EM_TITLE"},{name:"EM_WS",pattern:/\s+/y,hidden:!0},{...tr,name:"EM_YAML"},{...ur,name:"EM_DIRECTIVE"},{...pr,name:"EM_SINGLE_LINE_COMMENT"},{name:"EM_ML_COMMENT",pattern:/\/\*[\s\S]*?\*\//y,hidden:!0},{name:"EM_SL_COMMENT",pattern:/\/\/[^\n\r]*/y,hidden:!0}],yr=e=>r1.findIndex(t=>t.name===e),ef=e=>new Set(e.map(yr)),qt={keyword:0,arrow:yr("->>"),open:yr("[["),close:yr("]]"),tick:yr("`"),dot:yr("."),id:yr("EM_ID"),frameId:yr("EM_FID"),inline:yr("EM_DATA_INLINE"),block:yr("EM_DATA_BLOCK"),accDescr:yr("EM_ACC_DESCR"),accTitle:yr("EM_ACC_TITLE"),title:yr("EM_TITLE"),entity:yr("entity"),data:yr("data"),note:yr("note"),gwt:yr("gwt"),given:yr("given"),when:yr("when"),then:yr("then")},uM=ef(["tf","timeframe"]),dD=ef(["rf","resetframe"]),J0=ef(["rmo","readmodel","ui","cmd","command","evt","event","pcr","processor"]),fD=ef(["json","jsobj","figma","salt","uri","md","html","text"]);xM=new Map([["command",0],["event",1],["readmodel",2],["processor",6]]),Rr=12,ka=10,pD=96,pM=16,gD=80,Qd=12,gM=8,mD=48,mM=80,bM=8;yM=8,bD=120,wD=20;wM={type:"eventmodeling",keepComments:!0,parse:(e,t,r)=>cD(uD(e),r),render:yD}});var kM={};Rt(kM,{eventmodeling:()=>wM});var MM=Ge(()=>{xe();$M()});function tf(e){return e<128&&(ui[e]&Qo)!==0}function a1(e,t,r){for(let a=0;a<r.length;a++)if((e.charCodeAt(t+a)|32)!==r.charCodeAt(a))return!1;return!0}function kD(e,t,r){switch(r){case 97:return e.startsWith("actor",t)?2:0;case 115:return e.startsWith("systemBoundary",t)?3:e.startsWith("style",t)?16:0;case 101:return e.startsWith("end",t)?4:a1(e,t,"extend")?18:0;case 69:return a1(e,t,"extend")?18:0;case 100:return e.startsWith("direction",t)?5:0;case 84:return e.startsWith("TD",t)?6:e.startsWith("TB",t)?7:0;case 66:return e.startsWith("BT",t)?8:0;case 76:return e.startsWith("LR",t)?9:0;case 82:return e.startsWith("RL",t)?10:0;case 110:return e.startsWith("note",t)?11:0;case 102:return e.startsWith("for",t)?12:e.startsWith("false",t)?20:0;case 106:return e.startsWith("json",t)?13:0;case 99:return e.startsWith("classDef",t)?14:e.startsWith("class",t)?15:0;case 105:case 73:return a1(e,t,"include")?17:0;case 116:return e.startsWith("true",t)?19:0;case 117:return e.startsWith("usecase-beta",t)?1:0;default:return 0}}function Jo(e,t){let r=1,a=0;for(let n=0;n<t;n++){let i=e.charCodeAt(n);i!==10&&i!==13||(i===13&&n+1<t&&e.charCodeAt(n+1)===10&&n++,r++,a=n+1)}return[r,t-a+1]}function MD(e,t,r){let[a,n]=Jo(e,t);return`line ${a}, column ${n} [${t},${r})`}function YM(e,t,r){for(let a=t+1;a<e.length;a++){let n=e.charCodeAt(a);if(n===r)return a+1;if(n===10||n===13)return-1}return-1}function vD(e,t){let r=e.charCodeAt(t);return r!==34&&r!==39?!0:r===34&&e.charCodeAt(t+1)===96||YM(e,t,r)!==-1}function AM(e,t,r){let[a,n]=Jo(e,t);return new Ke(`Error lexing usecase diagram: unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${r} characters. at line ${a}, column ${n} [${t},${t+r})`,"syntax",{type:"usecase",line:a,column:n})}function AD(e){let t=[],r=[],a=[],n=e.length,i=0,l=!0,s=!1;for(;i<n;){let o=e.charCodeAt(i);if(o===32||o===9){i++;continue}let c,h=i+1,d=!1;if(o<128&&ui[o]&Qo){if(c=0,o===97&&l&&e.startsWith("acc",i)){let f=e.startsWith("Descr",i+3);if(f||e.startsWith("Title",i+3)){let g=i+8;for(;Ta(e.charCodeAt(g));)g++;let p=e.charCodeAt(g);if(p===58)for(c=f?42:41,h=g+1;h<n&&e.charCodeAt(h)!==10&&e.charCodeAt(h)!==13;)h++;else if(p===123&&f&&!s){let m=e.indexOf("}",g+1);m===-1?s=!0:(c=40,h=m+1)}}}else if(o===106&&e.startsWith("json",i)&&Ta(e.charCodeAt(i+4))){let f=i+5;for(;Ta(e.charCodeAt(f));)f++;let g=f;for(;tf(e.charCodeAt(f));)f++;if(f>g){for(;Ta(e.charCodeAt(f));)f++;if(e.charCodeAt(f)===64){for(f++;Ta(e.charCodeAt(f));)f++;if(e.charCodeAt(f)===123){t.push(43),r.push(i),a.push(f),i=f;let p=0,m=!1,x=!1,y=f;for(;y<n;y++){let $=e.charCodeAt(y);if(m)x?x=!1:$===92?x=!0:$===34&&(m=!1);else if($===34)m=!0;else if($===123)p++;else if($===125&&--p===0)break}t.push(y<n?44:45),r.push(f),i=y<n?y+1:n,a.push(i),l=!1;continue}}}}if(c===0){for(;h<n&&tf(e.charCodeAt(h));)h++;let f=kD(e,i,o);if(f!==0)f===1||h-i===vM[f]?(c=f,h=i+vM[f]):c=21;else if((o===111||o===120)&&e.charCodeAt(i+1)===45&&e.charCodeAt(i+2)===45)c=o===111?56:58,h=i+3;else if(mt(o)){let g=i+1;for(;mt(e.charCodeAt(g));)g++;if(e.charCodeAt(g)===46&&mt(e.charCodeAt(g+1))){for(c=22,h=g+2;mt(e.charCodeAt(h));)h++;for(;Sn(e.charCodeAt(h));)h++}else c=21}else for(c=21;e.charCodeAt(h)===45&&tf(e.charCodeAt(h+1));)for(c=27,h+=2;tf(e.charCodeAt(h));)h++}}else if(o===10)c=39,d=!0;else if(o===13)c=39,d=!0,e.charCodeAt(h)===10&&h++;else if(o===34||o===39){if(o===34&&e.charCodeAt(i+1)===96){let f=e.indexOf('`"',i+2);c=f===-1?37:36,h=f===-1?n:f+2}else if(c=35,h=YM(e,i,o),h===-1){let f=i+1;for(;f<n&&!vD(e,f);)f++;throw AM(e,i,f-i)}}else if(o===37)if(l&&e.charCodeAt(h)===37)for(c=38;h<n&&e.charCodeAt(h)!==10&&e.charCodeAt(h)!==13;)h++;else c=31;else if(o===45)if(e.charCodeAt(h)!==45)c=29;else{for(;e.charCodeAt(h)===45;)h++;let f=e.charCodeAt(h),g=h-i===2;g&&f===124&&e.charCodeAt(h+1)===62?(c=46,h+=2):f===62?(c=53,h++):g&&(f===111||f===120)?(c=f===111?55:57,h++):c=59}else if(o===46){let f=e.charCodeAt(h);if(f===46&&e.charCodeAt(h+1)===62)c=47,h+=2;else if(mt(f)){for(c=22;mt(e.charCodeAt(h));)h++;for(;Sn(e.charCodeAt(h));)h++}else c=30}else if(o===60)if(e.charCodeAt(h)===60){if(t.push(48),r.push(i),a.push(i+2),l=!1,i+=2,i>=n)break;if(e.charCodeAt(i)===62&&e.charCodeAt(i+1)===62)c=49,h=i+2;else{let f=i,g=!1;for(;f<n;f++){let p=e.charCodeAt(f);if(p===10||p===13)break;if(p===62&&e.charCodeAt(f+1)===62){g=!0;break}}if(g&&e.slice(i,f).trim()!=="")t.push(50),r.push(i),a.push(f),c=49,i=f,h=f+2;else{for(;f<n&&e.charCodeAt(f)!==10&&e.charCodeAt(f)!==13;)f++;if(f===i){for(;f<n&&(e.charCodeAt(f)===10||e.charCodeAt(f)===13);)f++;throw AM(e,i,f-i)}c=51,h=f}}}else if(e.charCodeAt(h)===45&&e.charCodeAt(h+1)===45)for(c=54,h+=2;e.charCodeAt(h)===45;)h++;else c=33;else if(o===58)e.charCodeAt(h)===58&&e.charCodeAt(h+1)===58?(c=52,h+=2):c=25;else if(o===64)e.charCodeAt(h)===123?(c=60,h++):c=23;else if(o===123)c=61;else if(o===125)c=62;else if(o===91)c=63;else if(o===93)c=64;else if(o===40)c=65;else if(o===41)c=66;else if(o===44)c=24;else if(o===35){for(;Dc(e.charCodeAt(h));)h++;c=h>i+1?26:32}else if(o===92)e.charCodeAt(h)===44?(c=28,h++):c=33;else if(o<127&&o>32)c=ui[o]&WM?32:33;else for(c=34;h<n;){let f=e.charCodeAt(h);if(f>=32&&f<127||f===9||f===10||f===13)break;h++}t.push(c),r.push(i),a.push(h),i=h,l=d}for(let o=0;o<3;o++)t.push(0),r.push(n),a.push(n);return{types:t,starts:r,ends:a}}function ED(){return{type:"usecase",actors:new Map,useCases:new Map,systemBoundaries:new Map,relationships:[],notes:new Map,jsonNodes:new Map,classDefs:new Map,direction:"LR",title:void 0,accTitle:"",accDescr:"",accDescription:"",source:"",headerSpan:[0,0],statements:[]}}function SD(){return{elements:[],boundaries:[],jsons:[],relationships:[],notes:[],metadata:[],classes:[],styles:[],classDefs:[],direction:void 0,accTitle:"",accDescription:""}}function n1(e,t){if(t.length===0)return;let r=new Set(e);for(let a of t)r.has(a)||(r.add(a),e.push(a))}function TD(e){let t=new Set(["actor","usecase","boundary","edge"]);for(let{key:r,value:a}of e)if(r==="icon")t.clear(),t.add("actor");else if(r==="animate"||r==="animation")t.clear(),t.add("edge");else if(r==="type")t.clear(),a==="rect"||a==="package"?t.add("boundary"):(a==="normal"||a==="hollow"||a==="awesome")&&t.add("actor");else if(r==="business")t.delete("boundary"),t.delete("edge");else return;return t.size===1?[...t][0]:void 0}function CD(e,t,r,a,n){let i=ED(),{actors:l,useCases:s,systemBoundaries:o}=i,c=new Map,h=new Map,d=new Map,f=new Map,g=new Map,p=w=>MD(e,w[0],w[1]),m=(w,T)=>{let[A,v]=Jo(e,T[0]);return new Ke(w,"semantic",{type:"usecase",line:A,column:v})},x=(w,T)=>{throw m(`${w} at ${p(T)}`,T)},y=(w,T,A,v,D)=>{let z=H=>H===void 0?"":` (label "${H}")`;throw m(`${w} at ${p(T)}${z(v)}; previous declaration at ${p(A)}${z(D)}`,T)},$=(w,T,A)=>x(`Metadata property '${A.key}' is invalid for ${T} '${w}'`,A.keySpan),k=(w,T)=>{let A=g.get(w);(A===void 0||T<A)&&g.set(w,T)},I=w=>[...w].sort((T,A)=>(g.get(T.id)??0)-(g.get(A.id)??0)),_=(w,T)=>{c.set(w.id,{kind:T,span:w.span,generated:w.generated,label:w.label.text})},L=(w,T)=>{let A=c.get(w.id);if(!A)return;let v=w.generated?w.label.text:void 0,D=A.generated?A.label:void 0;A.kind!==T&&y(`ID '${w.id}' is declared as both ${A.kind} and ${T}`,w.span,A.span,v,D),(A.generated||w.generated)&&y(`Generated ID '${w.id}' collides with another declaration`,w.span,A.span,v,D)},R=(w,T,A)=>{let v=c.get(w);v&&y(`ID '${w}' is declared more than once (${v.kind} and ${T})`,A,v.span,void 0,v.generated?v.label:void 0),c.set(w,{kind:T,span:A,generated:!1})},W=(w,T,A)=>{let{key:v,value:D}=T,z=H=>{!A&&H!==void 0&&H!==D&&y(`Actor '${w.id}' has conflicting ${v} metadata`,T.keySpan,w.span)};v==="type"&&(D==="normal"||D==="hollow"||D==="awesome")?(z(w.actorType),w.actorType=D):v==="icon"&&typeof D=="string"?(z(w.icon),w.icon=D):v==="business"&&typeof D=="boolean"?(z(w.business),w.business=D):$(w.id,"actor",T)},q=(w,T,A)=>{for(let v of T??[])w.kind==="actor"?W(w,v,A):v.key==="business"&&typeof v.value=="boolean"?(!A&&w.business!==void 0&&w.business!==v.value&&y(`Use case '${w.id}' has conflicting business metadata`,v.keySpan,w.span),w.business=v.value):$(w.id,"usecase",v)},C=w=>{let T;if(w.kind==="actor"){s.delete(w.id);let A={id:w.id,label:w.label.text,labelType:w.label.type,business:w.business??!1,classes:[...w.classes],type:w.icon?"icon":w.actorType??"normal",styles:l.get(w.id)?.styles??[]};w.icon&&(A.icon=w.icon),l.set(w.id,A),T=A}else l.delete(w.id),T={id:w.id,label:w.label.text,labelType:w.label.type,business:w.business??!1,classes:[...w.classes],shape:w.shape??"ellipse",styles:s.get(w.id)?.styles??[]},s.set(w.id,T);w.stereotype&&(T.stereotype=w.stereotype),w.parent?.id&&(T.parentId=w.parent.id)},K=w=>{L(w,w.kind);let T=w.parent?.id?w.parent:void 0,A=h.get(w.id);if(!A){let v={kind:w.kind,id:w.id,label:w.label,span:w.span,generated:w.generated,classes:[...w.classes],parent:T,shape:w.shape,stereotype:w.stereotype,stereotypeSpan:w.stereotype?w.span:void 0};q(v,w.metadata,!1),h.set(w.id,v),_(w,w.kind);return}(A.label.text!==w.label.text||A.label.type!==w.label.type)&&y(`ID '${w.id}' has conflicting labels`,w.span,A.span),w.shape&&A.shape&&w.shape!==A.shape&&y(`Use case '${w.id}' has conflicting shapes`,w.span,A.span),T&&A.parent?.id&&T.id!==A.parent.id&&y(`Element '${w.id}' belongs to more than one system boundary`,T.span,A.parent.span),w.stereotype&&A.stereotype&&w.stereotype!==A.stereotype&&y(`Element '${w.id}' has conflicting stereotypes`,w.span,A.stereotypeSpan??A.span),A.shape??(A.shape=w.shape),A.parent??(A.parent=w.parent),A.stereotype??(A.stereotype=w.stereotype),A.stereotypeSpan??(A.stereotypeSpan=w.stereotype?w.span:void 0),n1(A.classes,w.classes),q(A,w.metadata,!1)},Q=w=>{L(w,"boundary");let T=d.get(w.id);if(T){(T.label.text!==w.label.text||T.label.type!==w.label.type)&&y(`Boundary '${w.id}' has conflicting titles`,w.span,T.span),n1(T.classes,w.classes);return}d.set(w.id,{...w,classes:[...w.classes],members:[]}),_(w,"boundary")},G=w=>{w.classed&&!w.declares&&x(`Relationship endpoint '${w.id}' uses ::: without declaring the node`,w.span);let T=c.get(w.id);return T?T.kind:(h.set(w.id,{...w,kind:"usecase",shape:"ellipse",classes:[]}),_(w,"usecase"),k(w.id,w.span[0]),"usecase")},Y=(w,T)=>{let A=c.get(w)?.kind;return(A==="actor"?l.get(w):A==="usecase"?s.get(w):A==="boundary"?o.get(w):A==="json"?i.jsonNodes.get(w):f.get(w))??x(`Class/style target '${w}' is unresolved or anonymous`,T)},N=[];for(let{source:w,target:T}of t.relationships)k(w.id,w.span[0]),k(T.id,T.span[0]);for(let w of t.elements)k(w.id,w.span[0]),N.push({offset:w.span[0],run:()=>K(w)});for(let w of t.boundaries)k(w.id,w.span[0]),N.push({offset:w.span[0],run:()=>Q(w)});for(let w of t.jsons)k(w.id,w.span[0]),N.push({offset:w.span[0],run:()=>R(w.id,"json",w.span)});for(let{id:w,idSpan:T}of t.relationships)w&&T&&N.push({offset:T[0],run:()=>R(w,"edge",T)});N.sort((w,T)=>w.offset-T.offset);for(let w of N)w.run();for(let w of I(h.values()))C(w);for(let w of I(d.values()))o.set(w.id,{id:w.id,label:w.label.text,labelType:w.label.type,type:"rect",members:[],classes:[],styles:[]});for(let w of I(t.jsons))i.jsonNodes.set(w.id,{id:w.id,value:w.value,propertyOrder:w.propertyOrder,classes:[...w.classes],styles:[]});let S=0;for(let w of t.relationships){let{source:T,target:A,type:v}=w,D=G(T),z=G(A),H=F=>F==="actor"||F==="usecase"||F==="json";H(D)||y(`Relationship source '${T.id}' cannot be ${D}`,T.span,c.get(T.id).span),H(z)||y(`Relationship target '${A.id}' cannot be ${z}`,A.span,c.get(A.id).span),(v==="include"||v==="extend")&&(D!=="usecase"||z!=="usecase")&&x(`${v} relationship requires use-case endpoints`,w.span),v==="generalization"&&(D==="json"||D!==z)&&x("Generalization requires actor-to-actor or use-case-to-use-case endpoints",w.span),v==="association"&&(D==="json"||z==="json")&&w.arrowType>2&&x(`JSON relationship '${T.id}' to '${A.id}' permits only point, reversed-point, or markerless solid association`,w.span);let P=w.id??`edge-${S++}`,O={id:P,explicitId:!!w.id,source:T.id,target:A.id,type:v,arrowType:w.arrowType,minlen:w.minlen,classes:[],styles:[],animate:!1};w.label&&(O.label=w.label.text,O.labelType=w.label.type),i.relationships.push(O),f.set(P,O)}let M=new Map(l),b=new Map(s);l.clear(),s.clear();for(let w of I(h.values())){let T=M.get(w.id),A=b.get(w.id);T?l.set(w.id,T):A?s.set(w.id,A):C(w)}for(let{target:w,span:T,properties:A,statement:v}of t.metadata){let D=c.get(w);if(!D){let O=TD(A);return x(`Metadata target '${w}' is unresolved${O?` (metadata implies ${O})`:""}`,T)}let z=D.kind;z==="actor"||z==="usecase"?q(h.get(w),A,!0):z==="edge"&&(v.kind="edgeMetadata",v.edges=[{id:w,span:v.span,idSpan:T,metadata:v.metadata}],delete v.nodes);let H=d.get(w),P=f.get(w);for(let O of z==="actor"||z==="usecase"?[]:A){let{key:F,value:U}=O;z==="boundary"&&H&&F==="type"&&(U==="rect"||U==="package")?H.type=U:z==="edge"&&P&&F==="animate"&&typeof U=="boolean"?P.animate=U:z==="edge"&&P&&F==="animation"&&(U==="fast"||U==="slow")?(P.animation=U,P.animate=!0):$(w,z,O)}}for(let w of i.relationships)w.animation&&(w.animate=!0);for(let w of h.values())w.kind==="actor"?(w.icon&&w.actorType&&w.actorType!=="normal"&&x(`Actor '${w.id}' cannot combine icon with type '${w.actorType}'`,w.span),w.business&&(w.icon||w.actorType==="awesome")&&x(`Business actor '${w.id}' must use normal or hollow geometry`,w.span)):w.shape==="rect"&&w.business&&x(`Rectangular use case '${w.id}' cannot be a business use case`,w.span),C(w);for(let w of[...t.elements].sort((T,A)=>T.span[0]-A.span[0])){if(!w.parent?.id)continue;let T=d.get(w.parent.id).members;T.includes(w.id)||T.push(w.id)}for(let w of d.values()){let T=o.get(w.id);T.type=w.type??"rect",T.members=w.members,T.classes=[...w.classes]}let E=0;for(let w of t.notes){let T=c.get(w.target);if(!T)return x(`Note target '${w.target}' is unresolved`,w.span);T.kind!=="actor"&&T.kind!=="usecase"&&y(`Note target '${w.target}' must be an actor or use case, not ${T.kind}`,w.span,T.span);let A=`note-${E++}`;i.notes.set(A,{id:A,target:w.target,label:w.label.text,labelType:w.label.type})}for(let w of t.classDefs)for(let T of w.ids)i.classDefs.set(T,{id:T,styles:[...w.styles]});for(let w of t.classes)for(let T of w.targets)n1(Y(T.id,T.span).classes,w.classes);for(let w of t.styles)Y(w.target,w.span).styles.push(...w.styles);return i.direction=t.direction??i.direction,i.title=n,i.accTitle=t.accTitle,i.accDescription=t.accDescription,i.accDescr=t.accDescription.replace(/\n\s+/g,`
|
|
266
|
+
`),i.source=e,i.headerSpan=r,i.statements=a,i}function EM(e){let t=new Map,r=[],a=[],n=e.length,i=0,l="",s=0,o=()=>{for(;i<n;){let f=e.charCodeAt(i);if(f!==32&&f!==9&&f!==10&&f!==13)return;i++}},c=f=>{i++;let g="";for(;i<n;){let p=i,m=e[i++];if(m==='"')return g;if(m.charCodeAt(0)<32)throw new ha(p);if(m!=="\\"){f&&(g+=m);continue}let x=i,y=e[i++],$;if(y==='"'||y==="\\"||y==="/")$=y;else if(y==="b")$="\b";else if(y==="f")$="\f";else if(y==="n")$=`
|
|
267
|
+
`;else if(y==="r")$="\r";else if(y==="t")$=" ";else if(y==="u"){let k=e.slice(i,i+4);if(!/^[\dA-Fa-f]{4}$/.test(k))throw new ha(i);$=String.fromCharCode(parseInt(k,16)),i+=4}else throw new ha(x);f&&(g+=$)}throw new ha(i)},h=f=>{for(let g=0;g<f.length;g++)if(e[i+g]!==f[g])throw new ha(i+g);i+=f.length},d=()=>{if(e.charCodeAt(i)===45&&i++,e.charCodeAt(i)===48)i++;else if(mt(e.charCodeAt(i)))for(;mt(e.charCodeAt(i));)i++;else throw new ha(i);if(e.charCodeAt(i)===46){if(i++,!mt(e.charCodeAt(i)))throw new ha(i);for(;mt(e.charCodeAt(i));)i++}if((e.charCodeAt(i)|32)===101){if(i++,(e.charCodeAt(i)===43||e.charCodeAt(i)===45)&&i++,!mt(e.charCodeAt(i)))throw new ha(i);for(;mt(e.charCodeAt(i));)i++}};for(o();;)if(s===0){o();let f=e.charCodeAt(i);if(s=2,f===123){i++;let g=[];t.set(l,g),r.push(l),o(),e.charCodeAt(i)===125?i++:(a.push({object:!0,pointer:l,keys:g,ranges:new Map,key:"",from:0,index:0}),s=1)}else if(f===91)i++,o(),e.charCodeAt(i)===93?i++:(a.push({object:!1,pointer:l,keys:[],ranges:new Map,key:"",from:0,index:0}),l+="/0",s=0);else if(f===34)c(!1);else if(f===116)h("true");else if(f===102)h("false");else if(f===110)h("null");else if(f===45||mt(f))d();else throw new ha(i)}else if(s===1){let f=a[a.length-1];if(e.charCodeAt(i)!==34)throw new ha(i);let g=c(!0),p=f.ranges.get(g);if(p===void 0)f.keys.push(g);else for(let m=p[0];m<p[1];m++)t.delete(r[m]);if(f.key=g,f.from=r.length,o(),e.charCodeAt(i)!==58)throw new ha(i);i++,l=`${f.pointer}/${g.replaceAll("~","~0").replaceAll("/","~1")}`,s=0}else{let f=a[a.length-1];if(f===void 0)break;f.object?f.ranges.set(f.key,[f.from,r.length]):f.index++,o();let g=e.charCodeAt(i);if(g===(f.object?125:93))i++,a.pop();else{if(g!==44)throw new ha(i);i++,o(),l=`${f.pointer}/${f.index}`,s=f.object?1:0}}if(o(),i!==n)throw new ha(i);return t}function d1(e,t,r,a){let n=Math.min(Math.max(t,0),e.length);for(let i=0;i<n;i++){let l=e.charCodeAt(i);l===13?(r++,a=1):l===10?(i===0||e.charCodeAt(i-1)!==13)&&(r++,a=1):a++}return[r,a]}function _D(e,t,r,a){let n=/\bposition (\d+)\b/.exec(e);if(n)return d1(t,parseInt(n[1],10),r,a);let i=/\bline (\d+) column (\d+)\b/.exec(e);if(i){let l=parseInt(i[1],10),s=parseInt(i[2],10);return[r+l-1,l===1?a+s-1:s]}if(/unexpected end|end of json input/i.test(e))return d1(t,t.length,r,a)}function SM(e,t,r){return new Ke(`${e} (line ${t}, column ${r})`,"syntax",{type:"usecase",line:t,column:r})}function ID(e,t){let r;try{r=JSON.parse(e)}catch(a){let n=a instanceof Error?a.message:String(a),[i,l]=t(),s=_D(n,e,i,l);if(!s){let o=0;try{EM(e)}catch(c){c instanceof ha&&(o=c.offset)}s=d1(e,o,i,l)}throw SM(`Invalid JSON: ${n}`,s[0],s[1])}if(typeof r!="object"||r===null||Array.isArray(r)){let[a,n]=t();throw SM("JSON value must have an object root",a,n)}return{value:r,propertyOrder:EM(e)}}function is(e,t){for(let r of e.split("|"))if(r==="WORD")for(let a=1;a<=21;a++)en[a]|=t;else en[BM.indexOf(r)]|=t}function xr(e){return da.slice(Dr[e],Zr[e])}function Ma(e){return[Dr[e],Zr[e]]}function uf(e){let[t,r]=Jo(da,Dr[We]);throw new Ke(`Error parsing usecase diagram: ${e} at line ${t}, column ${r} [${Dr[We]},${Zr[We]})`,"syntax",{type:"usecase",line:t,column:r})}function JM(e){uf(`Expecting token of type --> ${e} <-- but found --> '${xr(We)}' <--`)}function vr(e){return it[We]!==e&&JM(BM[e]),We++}function Ra(e){let t=e.split("|").map((r,a)=>` ${a+1}. [${r}]`);uf(`Expecting: one of these possible Token sequences:
|
|
268
|
+
${t.join(`
|
|
269
|
+
`)}
|
|
270
|
+
but found: '${xr(We)}'`)}function TM(){let e=ff.split("|"),t=e.flatMap(n=>["NEWLINE","IDENTIFIER","PLAIN_STRING","RBRACE"].map(i=>`${n}, METADATA_START, ${i}`)),r=`STEREOTYPE_START|CLASS_SEPARATOR|IDENTIFIER|${df}|NEWLINE|EOF`.split("|"),a=e.flatMap((n,i)=>(i===0?["LPAREN","LBRACKET",...r]:r).map(l=>`${n}, ${l}`));return[XM,...t,...a,...t].join("|")}function CM(e){return e>=1&&e<=21}function _M(e){return e>=1&&e<=34}function ns(){KM=Zr[We-1],it[We]===39?We++:it[We]!==0&&Ra("NEWLINE|EOF")}function Zo(e){let t=it[e]===36?2:it[e]===35?1:0;return[Dr[e]+t,Zr[e]-t]}function u1(e){let t=Zo(e);return{text:da.slice(t[0],t[1]),type:it[e]===36?"markdown":"text",span:t}}function ev(e){return e.replace(/\W/g,"_")}function Xo(){let e=it[We];if(e===35||e===36)return u1(We++);_M(e)||Ra(ND);let t=We;for(;_M(it[We]);)We++;let r=[Dr[t],Zr[We-1]];return{text:da.slice(r[0],r[1]),type:"text",span:r}}function as(e){return e===21||e===35}function IM(){let e=We;as(it[We])||Ra("IDENTIFIER|PLAIN_STRING"),We++,vr(25);let t=We,r=it[We];!as(r)&&r!==19&&r!==20&&Ra("IDENTIFIER|PLAIN_STRING|TRUE|FALSE"),We++;let a=Zo(e),n=Zo(t);return{key:da.slice(a[0],a[1]),value:r===19?!0:r===20?!1:da.slice(n[0],n[1]),span:[Dr[e],Zr[t]],keySpan:a,valueSpan:n}}function RD(){let e=it[We],t=it[We+1],r=it[We+2];return e===24?as(t)||t===39&&(r===39||as(r)):e!==39?!1:t===24||as(t)||t===39&&(r===39||r===24||as(r))}function m1(){vr(60);let e=[];for(;it[We]===39;)We++;if(as(it[We])){for(e.push(IM());RD();){if(it[We]===24)We++;else{for(;it[We]===39;)We++;it[We]===24&&We++}for(;it[We]===39;)We++;e.push(IM())}for(it[We]===24&&We++;it[We]===39;)We++}return vr(62),e}function y1(e){return e.map(({key:t,span:r,keySpan:a,valueSpan:n})=>({key:t,span:r,keySpan:a,valueSpan:n}))}function x1(e,t){do{We++;let r=vr(21);e.push(xr(r)),t.push(Ma(r))}while(it[We]===24)}function tv(e){let t=We,r=it[We],a={id:"",label:void 0,span:Zo(t),generated:r!==21,classes:[],classSpans:[],explicit:!1,nodeSpan:[0,0]};if(r===21){We++,a.id=xr(t);let n=it[We];n===65||e&&n===63?(We++,a.label=Xo(),vr(n===65?66:64),a.shape=n===65?"ellipse":"rect"):a.label=u1(t)}else r===35||r===36?(We++,a.label=u1(t),a.id=ev(a.label.text)):Ra(ff);return a}function hf(e){let t=We,r=tv(!e);if(e&&(r.shape=void 0),it[We]===60&&(r.metadata=m1()),it[We]===48){We++;let a=vr(50);vr(49),r.stereotype=xr(a).trim(),r.stereotypeSpan=Ma(a)}return it[We]===52&&x1(r.classes,r.classSpans),r.explicit=!!(r.shape||r.metadata||r.stereotype),r.nodeSpan=[Dr[t],Zr[We-1]],r}function b1(e,t){return{id:e.id,kind:t,label:e.label,span:e.span,generated:e.generated,parent:cf,shape:e.shape,metadata:e.metadata,stereotype:e.stereotype,classes:e.classes}}function NM(e,t){return{id:e.id,label:e.label,span:e.span,generated:e.generated,declares:t,classed:e.classes.length>0}}function w1(e,t){let r={id:e.id,span:e.nodeSpan,idSpan:e.span,labelSpan:e.label.span};return t&&(r.defines=!0),e.stereotypeSpan&&(r.stereotypeSpan=e.stereotypeSpan),e.metadata&&(r.metadata=y1(e.metadata)),e.classSpans.length>0&&(r.classSpans=e.classSpans),r}function i1(e){if(it[We]<1||it[We]>36)return!1;for(let t=We+1;;t++){let r=it[t];if(r===59||en[r]&e)return!0;if(r<1||r>36)return!1}}function Ho(e){let t=Zr[e]-Dr[e]-(it[e]===59?0:1);return Math.max(1,t-1)}function rv(){let e=We,t={type:"association",arrowType:0,minlen:1,target:void 0,span:[0,0]};it[We]===21&&it[We+1]===23&&(t.explicitId=xr(We),t.explicitIdSpan=Ma(We),We+=2);let r=We,a=it[We++];if(a===47)vr(25),it[We]!==17&&it[We]!==18&&Ra("INCLUDE|EXTEND"),t.type=it[We]===17?"include":"extend",t.label={text:t.type,type:"text",span:Ma(We)},We++;else if(a===46)t.type="generalization";else if(a===53)t.minlen=Ho(r);else if(a===54)t.arrowType=1,Zr[r]-Dr[r]===3&&i1(0)?(t.label=Xo(),t.minlen=Ho(vr(59))):t.minlen=Ho(r);else if(a===59)if(t.arrowType=2,Zr[r]-Dr[r]===2&&i1(UM)){t.label=Xo();let n=it[We];n===53?t.arrowType=0:n===55?t.arrowType=3:n===57?t.arrowType=4:n!==59&&Ra("FORWARD_SOLID|MARKERLESS_SOLID|FORWARD_CIRCLE|FORWARD_CROSS"),(t.arrowType===0||t.arrowType===2)&&(t.minlen=Ho(We)),We++}else t.minlen=Ho(r);else a===55?t.arrowType=3:a===57?t.arrowType=4:a===56||a===58?(t.arrowType=a===56?5:6,i1(0)&&(t.label=Xo(),vr(59))):(We--,Ra(df));return t.target=hf(!1),t.span=[Dr[e],Zr[We-1]],t}function Ja(e){return{kind:e,span:[0,0]}}function av(e,t,r,a){let n=r.target;n.explicit&&Or.elements.push(b1(n,"usecase")),Or.relationships.push({source:NM(e,t),target:NM(n,n.explicit),span:r.span,id:r.explicitId,idSpan:r.explicitIdSpan,type:r.type,arrowType:r.arrowType,label:r.label,minlen:r.minlen}),a.push(w1(n,n.explicit));let i=Ja("edge");return i.nodes=a,i.edges=[{id:r.explicitId??`edge-${ZM++}`,span:i.span}],r.explicitIdSpan&&(i.edges[0].idSpan=r.explicitIdSpan),r.label&&(i.edges[0].labelSpan=r.label.span),i}function nv(e){let t=Ja("node");return t.nodes=e,t}function iv(e){We++;let t=[hf(!0)],r;if(it[We]===24)do We++,t.push(hf(!0));while(it[We]===24);else e&&en[it[We]]&g1&&(r=rv());ns();for(let n of t)Or.elements.push(b1(n,"actor"));let a=t.map(n=>w1(n,!0));return r?av(t[0],!0,r,a):nv(a)}function sv(e){let t=hf(!1),r=e&&en[it[We]]&g1?rv():void 0;ns(),r||(t.explicit=!0,t.shape??(t.shape="ellipse")),t.explicit&&Or.elements.push(b1(t,"usecase"));let a=[w1(t,t.explicit)];return r?av(t,t.explicit,r,a):nv(a)}function OD(){We++;let e=tv(!0),t={id:e.id,label:e.label,span:e.span,generated:e.generated,classes:e.classes},r=it[We]===60?m1():void 0;it[We]===52&&x1(e.classes,e.classSpans),ns(),Or.boundaries.push(t),cf=t;let a=[];for(;en[it[We]]&HM;)a.push(lv(!1));cf=void 0;let n=vr(4);ns();let i=Ja("group");return i.group=t.id,i.idSpan=t.span,i.titleSpan=t.label.span,i.endSpan=Ma(n),i.classSpans=e.classSpans,a.length>0&&(i.children=a),r&&(i.metadata=y1(r),Or.metadata.push({target:t.id,span:t.span,properties:r,statement:i})),i}function LM(){let e=We,t=it[We];for(CM(t)||t===27?We++:t===59?(We++,CM(it[We])||JM("WORD"),We++):Ra("WORD|CSS_IDENTIFIER|MARKERLESS_SOLID"),vr(25),(en[it[We]]&f1)===0&&uf(`Expecting: expecting at least one iteration which starts with one of these possible Token sequences::
|
|
271
|
+
<[${VM.replaceAll("|","] ,[")}]>
|
|
272
|
+
but found: '${xr(We)}'`);en[it[We]]&f1;)We++;return da.slice(Dr[e],Zr[We-1]).replaceAll("\\,",",")}function RM(){let e=[LM()];for(;it[We]===24;)We++,e.push(LM());return e}function s1(){let e=[vr(21)];for(;it[We]===24;)We++,e.push(vr(21));return e}function rf(e){let t=Zo(e);return{id:xr(e),span:t,idSpan:t}}function DD(){let e=We,t=it[We],r;if(t===41||t===42||t===40){We++;let a=xr(e);t===40?Or.accDescription=a.slice(a.indexOf("{")+1,a.lastIndexOf("}")).trim():t===42?Or.accDescription=a.slice(a.indexOf(":")+1).trim():Or.accTitle=a.slice(a.indexOf(":")+1).trim(),r=Ja(t===41?"accTitle":"accDescr")}else if(t===5){We++;let a=it[We];(a<6||a>10)&&Ra("TD|TB|BT|LR|RL"),Or.direction=a===6?"TB":xr(We),We++,r=Ja("direction")}else{if(t===2)return iv(!0);if(t===3)return OD();if(t===11){We++,vr(12);let a=vr(21),n=Xo();Or.notes.push({target:xr(a),span:Ma(a),label:n}),r=Ja("note"),r.ref=`note-${QM++}`,r.refSpan=n.span,r.nodes=[rf(a)]}else if(t===43){We++;let a=vr(44),n=[],i=[];it[We]===52&&x1(n,i);let l=Dr[e]+4;for(;da.charCodeAt(l)===32||da.charCodeAt(l)===9;)l++;let s=l;for(;/\w/.test(da.charAt(s));)s++;let o={id:da.slice(l,s),value:{},propertyOrder:new Map,span:[l,s],classes:n};Or.jsons.push(o),lf.push([o,a]),r=Ja("json"),r.nodes=[{id:o.id,span:o.span,idSpan:o.span,defines:!0,classSpans:i}],r.classSpans=i}else if(t===14){We++;let a=s1();Or.classDefs.push({ids:a.map(xr),styles:RM()}),r=Ja("classDef"),r.ref=xr(a[0]),r.refSpan=Ma(a[0])}else if(t===15){We++;let a=s1(),n=s1();Or.classes.push({targets:a.map(i=>({id:xr(i),span:Ma(i)})),classes:n.map(xr)}),r=Ja("classAssign"),r.ref=xr(n[0]),r.refSpan=Ma(n[0]),r.nodes=a.map(rf)}else if(t===16){We++;let a=vr(21);Or.styles.push({target:xr(a),span:Ma(a),styles:RM()}),r=Ja("style"),r.nodes=[rf(a)]}else{let a=it[We+1];if(a===60){!(en[it[We+2]]&jM)&&Ra(TM()),We++;let n=rf(e);t!==21&&(n.id=ev(da.slice(n.span[0],n.span[1])));let i=m1();r=Ja("metadata"),r.nodes=[n],r.metadata=y1(i),Or.metadata.push({target:n.id,span:n.span,properties:i,statement:r})}else return(!(en[a]&GM||t===21&&(a===65||a===63))||t===21&&LD.has(xr(e).toLowerCase()))&&Ra(TM()),sv(!0)}}return ns(),r}function lv(e){let t=We,r=it[We];if(r===39)return We++,{kind:"blank",span:Ma(t)};if(r===38)return We++,ns(),{kind:"comment",span:Ma(t)};let a=e?DD():r===2?iv(!1):sv(!1);if(a.span=[Dr[t],KM],a.edges)for(let n of a.edges)n.span=a.span;return a}function PD(e,t){da=e,{types:it,starts:Dr,ends:Zr}=AD(e),We=0,Or=SD(),cf=void 0,lf=[],ZM=0,QM=0;try{let r=vr(1);ns();let a=[];for(;en[it[We]]&qM;)a.push(lv(!0));it[We]!==0&&uf(`Redundant input, expecting EOF but found: ${xr(We)}`);for(let[n,i]of lf){let l=ID(xr(i),()=>Jo(e,Dr[i]));n.value=l.value,n.propertyOrder=l.propertyOrder}return CD(e,Or,Ma(r),a,t)}finally{da="",it=Dr=Zr=lf=[]}}function OM(e){return typeof e=="string"?e:e===null?"null":String(e)}function FD(e){let t=[],r=[[e.value,"",""]],a=[];for(;r.length>0;){let[n,i,l]=r.pop();if(a.length=0,Array.isArray(n))n.length===0?t.push({key:i,accessibleKey:i,value:"[]"}):n.every(s=>s===null||typeof s!="object")?n.forEach((s,o)=>t.push({key:o===0?i:"",accessibleKey:i,value:OM(s)})):n.forEach((s,o)=>a.push([s,`${i}[${o}]`,`${l}/${o}`]));else if(n!==null&&typeof n=="object"){let s=n,o=e.propertyOrder.get(l)??Object.keys(s);o.length===0&&t.push({key:i,accessibleKey:i,value:"{}"});for(let c of o)a.push([Object.prototype.hasOwnProperty.call(s,c)?s[c]:void 0,i?`${i}.${c}`:c,`${l}/${c.replaceAll("~","~0").replaceAll("/","~1")}`])}else t.push({key:i,accessibleKey:i,value:OM(n)});for(let s=a.length-1;s>=0;s--)r.push(a[s])}return t}function Uo(...e){return e.filter(Boolean).join(" ")}function BD(e){return e.type==="generalization"?["none","extension"]:e.type!=="association"?l1[0]:l1[e.arrowType]??l1[2]}function WD(e){let t=[],r=[],a=n=>{let i=new Map;for(let l of["default",...n]){let s=e.classDefs.get(l);if(s)for(let o of s.styles){let c=o.trim(),h=c.indexOf(":"),d=(h===-1?c:c.slice(0,h)).trim();d&&i.set(d,c)}}return[...i.values()]};for(let n of e.actors.values())t.push({id:n.id,label:n.label,labelType:n.labelType,shape:zD[n.type],isGroup:!1,padding:10,cssClasses:Uo("default","usecase-actor",`usecase-actor-${n.type}`,n.business&&"usecase-business",...n.classes),cssStyles:[...n.styles],cssCompiledStyles:a(n.classes),actorType:n.type,business:n.business,icon:n.icon||void 0,stereotype:n.stereotype||void 0,parentId:n.parentId||void 0});for(let n of e.useCases.values()){let i=n.shape==="ellipse";t.push({id:n.id,label:n.label,labelType:n.labelType,shape:i?n.business?"usecaseBusiness":"usecaseEllipse":"rect",isGroup:!1,padding:i?20:10,cssClasses:Uo("default","usecase-element",`usecase-${n.shape}`,n.business&&"usecase-business",...n.classes),cssStyles:[...n.styles],cssCompiledStyles:a(n.classes),business:n.business,stereotype:n.stereotype||void 0,parentId:n.parentId||void 0})}for(let n of e.notes.values())t.push({id:n.id,label:n.label,labelType:n.labelType,shape:"note",isGroup:!1,padding:10,cssClasses:"default usecase-note",cssStyles:[],cssCompiledStyles:a([]),noteTarget:n.target});for(let n of e.jsonNodes.values())t.push({id:n.id,label:n.id,labelType:"text",shape:"usecaseJsonTable",isGroup:!1,padding:10,cssClasses:Uo("default","usecase-json-table",...n.classes),cssStyles:[...n.styles],cssCompiledStyles:a(n.classes),jsonRows:FD(n)});for(let n of e.systemBoundaries.values())t.push({id:n.id,label:n.label,labelType:n.labelType,shape:"usecaseSystemBoundary",isGroup:!0,padding:20,cssClasses:Uo("default","system-boundary",`system-boundary-${n.type}`,...n.classes),cssStyles:[...n.styles],cssCompiledStyles:a(n.classes),boundaryType:n.type});for(let n of e.relationships){let i=n.type==="include"||n.type==="extend",[l,s]=BD(n),o=n.animate||n.animation!==void 0,c={id:n.id,start:n.source,end:n.target,relationshipType:n.type,pattern:i?"dotted":"solid",arrowTypeStart:l,arrowTypeEnd:s,classes:Uo("default","relationship",`relationship-${n.type}`,...n.classes,o&&`edge-animation-${n.animation??"fast"}`),style:[...n.styles],cssCompiledStyles:a(n.classes),animate:n.animate,animation:n.animation,minlen:n.minlen,explicitId:n.explicitId,internal:!1};i?(c.label=n.type,c.labelType="text"):n.type==="association"&&(n.label&&(c.label=n.label),n.labelType&&(c.labelType=n.labelType)),r.push(c)}for(let n of e.notes.values())r.push({id:`${n.id}-edge`,start:n.id,end:n.target,relationshipType:"note",pattern:"dotted",arrowTypeStart:"none",arrowTypeEnd:"none",classes:"default relationship relationship-note",style:[],cssCompiledStyles:a([]),animate:!1,minlen:1,explicitId:!1,internal:!0});return{nodes:t,edges:r}}function PM(e,t,r){let a=e.usecase?.[t];return typeof a=="number"&&a>0?Math.min(a,2e3):r}function UD(e){return e.replace(/[&<>\\]/g,t=>`&#${t.charCodeAt(0)};`)}function fi(e,t,r,a,n,i=0){return Be(e&&!t?UD(e):e,t,r,a,n,i)}function p1(e,t,r,a){let n=r===1||r===2?1:-1,i=r===1||r===3,l=(i?e.w:e.h)/2,s=0;if(e.kind===0)i?(l=$1/2+3,s=(Vo-e.h)/2):l+=2;else if(e.kind===1){let o=(i?e.h:e.w)/2;l*=Math.sqrt(Math.max(1-(a/o)**2,0))}return i?[t.x+n*l,t.y+s+a]:[t.x+a,t.y+n*l]}function ov(e,t){let r=t===1||t===3;if(e.kind===0)return r?Vo*.5:$1*.6;let a=r?e.h:e.w;return e.kind===1?a*.6:a-16}function jD(e,t,r){let a=new Map,n=(i,l,s,o)=>{let c=t[i];if(c.isGroup)return;let h=l[s]-c.x,d=l[s+1]-c.y,f;if(Math.abs(Math.abs(d)-c.h/2)<.5)f=d<0?0:2;else if(Math.abs(Math.abs(h)-c.w/2)<.5)f=h<0?3:1;else return;let g=i*4+f,p={route:l,at:s,toward:l[o+(f&1?1:0)]},m=a.get(g);m?m.push(p):a.set(g,[p])};for(let i of e){let l=i.route.length-3;i.src===i.dst||l<3||(n(i.src,i.route,0,3),n(i.dst,i.route,l,l-3))}for(let[i,l]of a){let s=i>>2,o=i&3,c=r[s],h=l.length>1?Math.min(HD,ov(c,o)/(l.length-1)):0;l.sort((d,f)=>d.toward-f.toward);for(let d=0;d<l.length;d++){let[f,g]=p1(c,t[s],o,(d-(l.length-1)/2)*h);l[d].route[l[d].at]=f,l[d].route[l[d].at+1]=g}}}function XD(e,t,r,a,n){let i=e-r*of,l=t-a*of,s=of*.5;return`<path class="pele-marker" d="M${u(e)},${u(t)}L${u(i-a*s)},${u(l+r*s)}L${u(i+a*s)},${u(l-r*s)}Z" fill="var(--_bg)" stroke="${n}" stroke-linejoin="round"/>`}function sf(e){return e==="extension"?of:xt(e)}function zM(e,t,r,a,n,i){return e==="extension"?XD(t,r,a,n,i):Mt(e,t,r,a,n,i)}function VD(e,t){let r=e.node,a=e.style.shape,n=` fill="none" stroke="var(--_b)"${e.style.line}`,i=-21,l=9,s;return r.actorType==="hollow"?(l=8,s=`<circle cy="-21" r="8" fill="var(--_bg)" stroke="var(--_b)"${a}/><path d="M-20,-9H20V0H5.5L20,15.5L12,25.5L0,12L-12,25.5L-20,15.5L-5.5,0H-20Z" fill="var(--_bg)" stroke="var(--_b)" stroke-linejoin="round"${a}/>`):r.actorType==="awesome"?s=`<path d="M0,-30A11,11 0 1 1 0,-8A11,11 0 1 1 0,-30ZM-20,25C-20,9 -12,-3 0,-3C12,-3 20,9 20,25C20,28 18,30 15,30H-15C-18,30 -20,28 -20,25Z" fill="var(--_b)"${a}/>`:r.actorType==="icon"?(i=-14,l=12,s=`<rect x="-22" y="-26" width="44" height="44"${gt(Ko+a)}/><svg class="pele-icon" data-icon="${Pe(r.icon??"")}" x="-14" y="-18" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${t?.(r.icon??"")??""}</svg>`):s=`<circle cy="-21" r="9"${Ko}${a}/><path d="M0,-12V10M-14,-3H14M0,10L-12,30M0,10L12,30"${n}/>`,r.business&&(s+=`<path class="pele-business" d="M${u(.12*l)},${u(i+.99*l)}L${u(.92*l)},${u(i-.39*l)}"${n}/>`),s}function KD(e,t,r){return na(e.direction)?jt(r,a=>FM(e,t,r,a)):FM(e,t,r,!1)}function FM(e,t,r,a){let n=WD(e),i=r.fontSize??16,l=Math.round(i*.875),s=Math.round(i*.8125),o=r.measurer??rt(r.fontFamily),c=r.padding??8,h=r.icons,d=a?"TB":Cr(e.direction),f=d==="LR"||d==="RL",g=new Map,p=[],m=[];n.nodes.forEach((M,b)=>g.set(M.id,b));for(let M of n.nodes){let b=Ct(M.cssStyles.length>0?M.cssCompiledStyles.concat(M.cssStyles):M.cssCompiledStyles),E=(b.bold?1:0)|(b.italic?2:0),w=b.fontSize??i,T=M.labelType==="markdown",A=fi(M.stereotype&&`\xAB${M.stereotype}\xBB`,!1,o,s,200,E),v={node:M,kind:2,style:b,label:A,stereotype:A,w:0,h:0,rows:[],keyW:0,headH:0,loops:0},D;if(M.isGroup){v.kind=4,v.label=fi(M.label,T,o,w,4e3,E);let z=v.label.height;D=Kt(0,0),D.isGroup=!0,D.padX=af,D.padBottom=af,D.padTop=M.boundaryType==="package"?z+2*c1+16:z>0?z+16:af,D.minW=v.label.width+2*af}else{if(M.jsonRows){v.kind=3,v.label=fi(M.label,!1,o,w,4e3,E|1);let z=0;for(let H of M.jsonRows){let P=fi(H.key,!1,o,l,4e3,E),O=fi(H.value,!1,o,l,260,E);v.rows.push([P,O]),v.keyW=Math.max(v.keyW,P.width),z=Math.max(z,O.width),v.h+=Math.max(P.height,O.height,Math.round(l*1.5))+h1}v.keyW>0&&(v.keyW+=2*jo),v.headH=Math.max(v.label.height,Math.round(w*1.5))+h1,v.w=Math.max(v.label.width+2*jo,v.rows.length>0?v.keyW+z+2*jo:0,72),v.h+=v.headH}else if(M.actorType)v.kind=0,v.label=fi(M.label,T,o,w,140,E),v.w=Math.max($1,v.label.width,A.width),v.h=Vo+DM+A.height+v.label.height;else{v.label=fi(M.label,T,o,M.shape==="note"?l:w,180,E);let z=Math.max(v.label.width,A.width),H=v.label.height+A.height;M.shape==="usecaseEllipse"||M.shape==="usecaseBusiness"?(v.kind=1,v.w=Math.max(z+2*M.padding+(M.business?16:4),88),v.h=Math.max(H+28,48)):M.shape==="note"?(v.w=z+2*M.padding+6,v.h=H+18):(v.w=Math.max(z+2*M.padding+12,80),v.h=Math.max(H+24,44))}D=Kt(v.w,v.h)}D.seq=p.length,p.push(v),m.push(D)}n.nodes.forEach((M,b)=>{m[b].parent=M.parentId!==void 0?g.get(M.parentId)??-1:-1});let x=[],y=[],$=[];for(let M of n.edges){let b=g.get(M.start),E=g.get(M.end);if(b===void 0||E===void 0)continue;let w=M.relationshipType==="include"||M.relationshipType==="extend",T=fi(w?`\xAB${M.label}\xBB`:M.label,M.labelType==="markdown",o,l,200);b===E&&(p[b].loops++,f?m[b].h+=2*(o1+(T.height>0?T.height+8:0)):m[b].w+=2*(o1+(T.width>0?T.width+12:0))),$.push(M),y.push(T),x.push({src:b,dst:E,minlen:M.minlen,labelW:T.width>0?T.width+12:0,labelH:T.height>0?T.height+4:0,route:[],labelX:0,labelY:0})}let k=aa(m,x,d,{nodeSep:PM(t,"nodeSpacing",YD),edgeSep:qD,rankSep:PM(t,"rankSpacing",GD),portSep:20}),I=zr(e.title,o,i,4e3),_=I.height>0?I.height+12:0,L=Math.max(k.width,I.width),R=c+(L-k.width)/2,W=c+_;Vn(m,x,R,W);let q=Math.ceil(L+2*c),C=Math.ceil(k.height+_+2*c),K=new Map;for(let M of x)Ya(K,M.route);jD(x,m,p);let Q="",G="";for(let M=0;M<p.length;M++){let b=p[M],E=m[M],w=b.node,T=Dt(w.cssClasses.replace(/^default\s?/,"")),A=Pe(w.id),v=b.style.text,D=b.style.shape,z=b.w,H=b.h;if(b.kind===4){let F=E.x-E.w/2,U=E.y-E.h/2,j=` fill="var(--_a)" fill-opacity="0.5" stroke="var(--_b)"${D}`,J=` class="pele-cluster-label" fill="var(--_m)"${v}`,Z;if(w.boundaryType==="package"){let B=Math.min(b.label.width+2*c1+8,E.w),X=b.label.height+2*c1;Z=`<rect class="pele-boundary-tab" x="${u(F)}" y="${u(U)}" width="${u(B)}" height="${u(X)}"${j}/><rect x="${u(F)}" y="${u(U+X)}" width="${u(E.w)}" height="${u(E.h-X)}"${j}/>`+Re(b.label,F+B/2,U+X/2,J,h)}else Z=`<rect x="${u(F)}" y="${u(U)}" width="${u(E.w)}" height="${u(E.h)}"${gt(j)}/>`+Re(b.label,ZD(E,b.label.width,K),U+8+b.label.height/2,J,h);Q+=`<g class="pele-cluster pele-boundary${T}" data-id="${A}">${Z}</g>`;continue}let P,O;if(b.kind===0){O="pele-actor";let F=-H/2,U=F+Vo+DM+b.stereotype.height/2;P=`<g class="pele-actor-figure" transform="translate(0,${u(F+Vo/2)})">${VD(b,h)}</g>`+Re(b.stereotype,0,U,` class="pele-stereotype" font-size="${s}" fill="var(--_m)"`,h)+Re(b.label,0,H/2-b.label.height/2,` class="pele-label"${v}`,h)}else if(b.kind===3){O="pele-json";let F=-z/2,U=-H/2+b.headH,j="",J=`M${u(F)},${u(U)}H${u(F+z)}`;b.keyW>0&&(J+=`M${u(F+b.keyW)},${u(U)}V${u(H/2)}`);for(let[Z,B]of b.rows){let X=Math.max(Z.height,B.height,Math.round(l*1.5))+h1;j+=Re(Z,F+jo+Z.width/2,U+X/2,' class="pele-json-key" fill="var(--_m)"',h)+QD(B,F+b.keyW+jo,U+X/2,` class="pele-json-value"${v}`,h),U+=X}P=`<rect x="${u(F)}" y="${u(-H/2)}" width="${u(z)}" height="${u(H)}"${gt(Ko+D)}/><path class="pele-json-lines" d="${J}" fill="none" stroke="var(--_b)"${b.style.line}/>`+Re(b.label,0,-H/2+b.headH/2,` class="pele-label" font-weight="var(--_hw)"${v}`,h)+`<g font-size="${l}">${j}</g>`}else{let F=b.stereotype.height/2,U;if(b.kind===1){if(O="pele-usecase",U=`<ellipse rx="${u(z/2)}" ry="${u(H/2)}"${Ko}${D}/>`,w.business){let j=z/2-15,J=z/2-5,Z=B=>H/2*Math.sqrt(1-(B/(z/2))**2);U+=`<path class="pele-business" d="M${u(j)},${u(Z(j))}L${u(J)},${u(-Z(J))}" fill="none" stroke="var(--_b)"${b.style.line}/>`}}else if(w.shape==="note"){O="pele-note";let j=z/2,J=H/2;U=`<path d="M${u(-j)},${u(-J)}H${u(j-nf)}L${u(j)},${u(nf-J)}V${u(J)}H${u(-j)}Z" fill="var(--_a)" stroke="var(--_b)" stroke-linejoin="round"${D}/><path d="M${u(j-nf)},${u(-J)}V${u(nf-J)}H${u(j)}" fill="none" stroke="var(--_b)" stroke-linejoin="round"${b.style.line}/>`}else O="pele-usecase",U=`<rect x="${u(-z/2)}" y="${u(-H/2)}" width="${u(z)}" height="${u(H)}"${gt(Ko+D)}/>`;P=U+Re(b.stereotype,0,-b.label.height/2,` class="pele-stereotype" font-size="${s}" fill="var(--_m)"`,h)+Re(b.label,0,F,` class="pele-label"${w.shape==="note"?` font-size="${l}"`:""}${v}`,h)}G+=`<g class="pele-node ${O}${T}" data-id="${A}" transform="translate(${u(E.x)},${u(E.y)})">${P}</g>`}let Y="",N="",S=new Map;for(let M=0;M<x.length;M++){let b=x[M],E=$[M],w=y[M],T=E.style.length>0||E.cssCompiledStyles.length>0?Ct(E.cssCompiledStyles.concat(E.style)):void 0,A=E.arrowTypeStart,v=E.arrowTypeEnd,D;if(b.src===b.dst){let P=m[b.src],O=p[b.src],F=S.get(b.src)??0;S.set(b.src,F+1);let U=f?2:1,j=Math.min(ov(O,U)/2,8+F*6),J=o1+F*8,[Z,B]=p1(O,P,U,-j),[X,te]=p1(O,P,U,j),se=Math.hypot(J,j)||1,ce=f?j/se:J/se,ae=f?J/se:j/se,ie=sf(A),ee=sf(v),re=(ue,ge,Ae,Te)=>f?`${u(ue+Ae*j*(Te?1:0))},${u(ge+Te)}`:`${u(ue+Te)},${u(ge+Ae*j*(Te?1:0))}`,fe=f?Z-ce*ie:Z+ce*ie,ye=f?B+ae*ie:B-ae*ie,oe=X+ce*ee,we=te+ae*ee;D={d:`M${u(fe)},${u(ye)}C${re(Z,B,-1,J)} ${re(X,te,1,J)} ${u(oe)},${u(we)}`,sx:Z,sy:B,sdx:f?ce:-ce,sdy:f?-ae:ae,ex:X,ey:te,edx:-ce,edy:-ae},f?(b.labelX=P.x,b.labelY=Math.max(B,te)+J*.75+6+w.height/2):(b.labelX=Math.max(Z,X)+J*.75+8+w.width/2,b.labelY=P.y)}else{if(b.route.length<6)continue;D=Xr(b.route,void 0,sf(A),sf(v))}let z=T?.stroke?Qe(T.stroke):"var(--_l)",H=E.internal?"2 3":E.pattern==="dotted"?"5 4":E.animate?"9 5":"";if(Y+=`<g class="pele-edge pele-${E.relationshipType}${Dt(E.classes.replace(/^default relationship relationship-\S+\s?/,""))}" data-id="${Pe(E.id)}"${T?.line??""}><path d="${D.d}"${H?` stroke-dasharray="${H}"`:""}/>`+zM(A,D.sx,D.sy,D.sdx,D.sdy,z)+zM(v,D.ex,D.ey,D.edx,D.edy,z)+"</g>",w.width>0){let P=b.labelX,O=b.labelY,F=E.relationshipType==="include"||E.relationshipType==="extend";N+=Tr(E.id,w,P,O,(F?' fill="var(--_m)"':"")+(T?.text??""),h)}}return{svg:tt("usecase",q,C,i,r,e,Re(I,q/2,c+I.height/2,' class="pele-title" font-weight="var(--_tw)"')+(Q?`<g class="pele-clusters">${Q}</g>`:"")+(Y?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${Y}</g>`:"")+(N?`<g class="pele-edge-labels" font-size="${l}">${N}</g>`:"")+`<g class="pele-nodes">${G}</g>`),width:q,height:C,links:[]}}function ZD(e,t,r){let a=r.get(Math.round(e.y-e.h/2));if(t===0||a===void 0)return e.x;let n=e.x-e.w/2+6,i=e.x+e.w/2-6,l=a.filter(f=>f>n&&f<i).sort((f,g)=>f-g);l.push(i);let s=t/2+6,o=e.x,c=1/0,h=0,d=n;for(let f of l){if(f-d>=2*s){let g=Math.min(Math.max(e.x,d+s),f-s);Math.abs(g-e.x)<c&&(c=Math.abs(g-e.x),o=g)}else c===1/0&&f-d>h&&(h=f-d,o=(d+f)/2);d=f}return o}function QD(e,t,r,a,n){if(e.lines.length<2)return Re(e,t+e.width/2,r,a,n);let i="";for(let l=0;l<e.lines.length;l++)i+=Re(on(e,l),t+e.widths[l]/2,r-e.height/2+ln(e,l),a,n);return i}var BM,Qo,WM,ui,vM,ha,qM,g1,f1,GM,HM,UM,jM,df,ff,ND,XM,VM,en,LD,da,it,Dr,Zr,We,KM,Or,cf,lf,ZM,QM,zD,l1,YD,qD,GD,af,o1,$1,Vo,DM,c1,jo,h1,nf,of,HD,Ko,cv,hv=Ge(()=>{xe();Is();Kn();qa();or();Gt();$r();yt();kt();BM="EOF USECASE ACTOR SYSTEM_BOUNDARY END DIRECTION TD TB BT LR RL NOTE FOR JSON CLASS_DEF CLASS STYLE INCLUDE EXTEND TRUE FALSE IDENTIFIER NUMBER AT COMMA COLON HASH_COLOR CSS_IDENTIFIER CSS_ESCAPED_COMMA DASH DOT PERCENT CSS_PUNCTUATION LABEL_PUNCTUATION LABEL_SYMBOL PLAIN_STRING MARKDOWN_STRING UNCLOSED_MARKDOWN_STRING COMMENT NEWLINE ACC_DESCR_BLOCK ACC_TITLE_LINE ACC_DESCR_LINE JSON_DECLARATION_START JSON_OBJECT_LITERAL UNCLOSED_JSON_OBJECT_LITERAL GENERALIZATION DEPENDENCY_ARROW STEREOTYPE_START STEREOTYPE_END STEREOTYPE_TEXT UNCLOSED_STEREOTYPE_TEXT CLASS_SEPARATOR FORWARD_SOLID BACKWARD_SOLID FORWARD_CIRCLE BACKWARD_CIRCLE FORWARD_CROSS BACKWARD_CROSS MARKERLESS_SOLID METADATA_START LBRACE RBRACE LBRACKET RBRACKET LPAREN RPAREN".split(" "),Qo=1,WM=2,ui=new Uint8Array(128);for(let e=48;e<=57;e++)ui[e]=Qo;for(let e=65;e<=90;e++)ui[e]=ui[e+32]=Qo;ui[95]=Qo;for(let e of"!#$&*+/=?^|~")ui[e.charCodeAt(0)]=WM;vM=[0,12,5,14,3,9,2,2,2,2,2,4,3,4,8,5,5,7,6,4,5];ha=class extends Error{constructor(t){super("Invalid JSON token");le(this,"offset");this.offset=t}};qM=1,g1=2,f1=4,GM=8,HM=16,UM=32,jM=64,df="DEPENDENCY_ARROW|GENERALIZATION|FORWARD_SOLID|BACKWARD_SOLID|MARKERLESS_SOLID|FORWARD_CIRCLE|BACKWARD_CIRCLE|FORWARD_CROSS|BACKWARD_CROSS",ff="IDENTIFIER|PLAIN_STRING|MARKDOWN_STRING",ND="PLAIN_STRING|MARKDOWN_STRING|LABEL_TEXT",XM="ACC_TITLE_LINE|ACC_DESCR_LINE|ACC_DESCR_BLOCK|DIRECTION|ACTOR|SYSTEM_BOUNDARY|NOTE|JSON_DECLARATION_START|CLASS_DEF|CLASS|STYLE",VM="WORD|PLAIN_STRING|NUMBER|HASH_COLOR|CSS_IDENTIFIER|CSS_ESCAPED_COMMA|DASH|DOT|PERCENT|CSS_PUNCTUATION|COLON|LPAREN|RPAREN|LBRACKET|RBRACKET|LBRACE|RBRACE|AT|MARKERLESS_SOLID",en=new Uint8Array(67);is(`NEWLINE|COMMENT|${XM}|${ff}`,qM);is(`IDENTIFIER|${df}`,g1);is(VM,f1);is(`STEREOTYPE_START|CLASS_SEPARATOR|IDENTIFIER|${df}|NEWLINE|EOF`,GM);is(`NEWLINE|COMMENT|ACTOR|${ff}`,HM);is("FORWARD_SOLID|MARKERLESS_SOLID|FORWARD_CIRCLE|FORWARD_CROSS",UM);is("NEWLINE|IDENTIFIER|PLAIN_STRING|RBRACE",jM);LD=new Set(["allowmixing","newpage","package","rectangle","skinparam"]),da="",it=[],Dr=[],Zr=[],We=0,KM=0,lf=[],ZM=0,QM=0;zD={normal:"usecaseActor",hollow:"usecaseActorHollow",awesome:"usecaseActorAwesome",icon:"usecaseActorIcon"},l1=[["none","arrow_point"],["arrow_point","none"],["none","none"],["none","arrow_circle"],["none","arrow_cross"],["arrow_circle","none"],["arrow_cross","none"]];YD=32,qD=16,GD=72,af=20,o1=26,$1=40,Vo=60,DM=6,c1=6,jo=10,h1=8,nf=9,of=12,HD=14,Ko=' fill="var(--_s)" stroke="var(--_b)"';cv={type:"usecase",math:!0,parse:(e,t,r)=>PD(e,r),render:KD}});var dv={};Rt(dv,{usecase:()=>cv});var fv=Ge(()=>{xe();hv()});function ss(e){let t=e.trim();return t.length>=2&&t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1):t}function k1(e){return e.map(ss).sort()}function n8(e,t){let r=new t8(e,t),a=-1,n=()=>a===-1?a=r.next():a,i=g=>{throw n()===1?st("venn",e,r.start,"",!0):st("venn",e,r.start,`Expecting ${g}, got '${uv[a]}'`)},l=()=>(a=-1,r.text),s=g=>(n()!==g&&i(`'${uv[g]}'`),l()),o=()=>(n()!==16&&a!==17&&i("'IDENTIFIER', 'STRING'"),l()),c=()=>{let g=[o()];for(;n()===18;)l(),g.push(o());return g},h=(g,p)=>{let m=n()===11?l():void 0,x;if(n()===19&&(l(),x=parseFloat(s(12))),p){if(g.length<2)throw new Ke("union requires multiple identifiers","semantic",{type:"venn"});t.validateUnionIdentifiers(g)}t.addSubsetData(g,m,x),t.setIndentMode(!0)},d=g=>{let p=n();p!==16&&p!==17&&p!==12&&i("'NUMERIC', 'IDENTIFIER', 'STRING'");let m=l(),x=p!==12&&n()===11?l():void 0;t.addTextData(g(),m,x)},f=()=>{let g=c(),p=[];for(;;){let m=s(16);s(19);let x;if(n()===17)x=l();else{let y=[];for(;n()===16||a>=12&&a<=15;)y.push(l());y.length===0&&i(a8),x=y.join(" ")}if(p.push([m,x]),n()!==18)break;l()}t.addStyleData(g,p)};for(;n()===3;)l();for(s(4);;){let g=n();if(g===2)return;if((g<3||g>10||g===4)&&i(r8),l(),g===5)t.setDiagramTitle(r.text.slice(6));else if(g===6)h([o()],!1);else if(g===7)h(c(),!0);else if(g===8){let p=c();d(()=>p)}else g===9?d(()=>{let p=t.getCurrentSets();if(!p)throw new Ke("text requires set","semantic",{type:"venn"});return p}):g===10&&f()}}function i8(e){let t=new Set,r=new Map;for(let n of e)t.add(JSON.stringify([...n.sets].sort())),n.sets.length===1&&r.set(n.sets[0],n.size);let a=[];for(let n of e){if(n.sets.length<3)continue;let i=[...n.sets].sort();for(let l=0;l<i.length-1;l++)for(let s=l+1;s<i.length;s++){let o=[i[l],i[s]],c=JSON.stringify(o);if(t.has(c))continue;t.add(c);let h=r.get(o[0]),d=r.get(o[1]);a.push({sets:o,size:h!==void 0&&d!==void 0?Math.min(h,d)/4:2.5,label:""})}}return a.length>0?[...e,...a]:e}function s8(e,t,r){if(r>=e+t)return 0;let a=Math.min(e,t);if(r<=Math.abs(e-t))return Math.PI*a*a;let n=e*e*Math.acos((r*r+e*e-t*t)/(2*r*e)),i=t*t*Math.acos((r*r+t*t-e*e)/(2*r*t)),l=.5*Math.sqrt(Math.max((-r+e+t)*(r+e-t)*(r-e+t)*(r+e+t),0));return n+i-l}function l8(e,t,r){let a=Math.abs(e-t),n=e+t;if(!(r>0))return n;if(r>=Math.PI*Math.min(e,t)**2)return a;for(let i=0;i<48;i++){let l=(a+n)/2;s8(e,t,l)>r?a=l:n=l}return(a+n)/2}function pv(e,t,r,a,n,i){let l=1/0;for(let s of t){let o=e[s],c=a-o.x,h=n-o.y,d=o.r-Math.sqrt(c*c+h*h);if(d<l){if(d<i)return d;l=d}}for(let s of r){let o=e[s],c=a-o.x,h=n-o.y,d=Math.sqrt(c*c+h*h)-o.r;if(d<l){if(d<i)return d;l=d}}return l}function v1(e,t,r){let a=0,n=0,i=e[t[0]];for(let p of t){let m=e[p];a+=m.x/t.length,n+=m.y/t.length,m.r<i.r&&(i=m)}let l=i.r,s=a,o=n,c=pv(e,t,r,s,o,-1/0),h=0,d=(p,m)=>{let x=pv(e,t,r,p,m,c-l*1e-9);if(!(x>c-l*1e-9))return!1;let y=Math.hypot(p-a,m-n);return x>c+l*1e-9||y<h-l*1e-9?(c=x,h=y,s=p,o=m,!0):!1},f=10;for(let p=-f;p<=f;p++)for(let m=-f;m<=f;m++)m*m+p*p<=f*f&&d(i.x+m*l/f,i.y+p*l/f);let g=l/f;for(let p=0;p<40&&g>l*1e-6;p++){let m=!1;for(let x=0;x<8;x++){let y=x*pf/8;d(s+Math.cos(y)*g,o+Math.sin(y)*g)&&(m=!0)}m||(g/=2)}return{x:s,y:o,margin:c}}function o8(e){let t=new Map;for(let x of e)for(let y of x.sets)t.has(y)||t.set(y,10);for(let x of e)x.sets.length===1&&t.set(x.sets[0],x.size);let r=new Map,a=[],n=0;for(let x of t.values())Number.isFinite(x)&&x>n&&(n=x);n===0&&(n=10);let i=Math.sqrt(n/Math.PI);for(let[x,y]of t){r.set(x,a.length);let $=Number.isFinite(y)&&y>0?Math.sqrt(y/Math.PI):0;a.push({id:x,x:0,y:0,r:Math.max($,i*.3)})}let l=a.length;if(l<2)return a;let s=new Map;for(let x of i8(e)){if(x.sets.length!==2)continue;let y=r.get(x.sets[0]),$=r.get(x.sets[1]);y!==$&&s.set(Math.min(y,$)*l+Math.max(y,$),x.size)}let o=new Map;for(let[x,y]of s)o.set(x,l8(a[Math.floor(x/l)].r,a[x%l].r,y));let c=i*.15,h=(x,y)=>o.get(x*l+y)??a[x].r+a[y].r+c;if(l===2)return a[1].x=h(0,1),a;if(l===3){let x=h(0,1),y=h(0,2),$=h(1,2),k=e.some(I=>new Set(I.sets).size===3);for(let I=0;I<40;I++){let _=x>0?(x*x+y*y-$*$)/(2*x):0;if(a[1].x=x,a[2].x=Math.max(-y,Math.min(y,_)),a[2].y=Math.sqrt(Math.max(y*y-_*_,0)),!k||v1(a,[0,1,2],[]).margin>i*.12)break;x*=.94,y*=.94,$*=.94}return a}let d=0;for(let x of a)d+=2*x.r+c;let f=Math.min(300,Math.floor(3e6/(l*l)));if(l<=64){let x=d/pf;a.forEach((y,$)=>{let k=$*pf/l-Math.PI/2;y.x=Math.cos(k)*x,y.y=Math.sin(k)*x})}else{let x=Math.ceil(Math.sqrt(l)),y=2*i+c;a.forEach(($,k)=>{$.x=k%x*y,$.y=Math.floor(k/x)*y})}let g=new Float64Array(l),p=new Float64Array(l),m=new Int32Array(l);for(let x=0;x<f;x++){g.fill(0),p.fill(0),m.fill(0);for(let y=0;y<l;y++)for(let $=y+1;$<l;$++){let k=o.get(y*l+$),I=a[y].r+a[$].r+c,_=a[$].x-a[y].x,L=a[$].y-a[y].y,R=Math.hypot(_,L);if(k===void 0&&R>=I)continue;R<1e-9&&(_=Math.cos(y+$),L=Math.sin(y+$),R=1);let W=(R-(k??I))/2/R;g[y]+=_*W,p[y]+=L*W,g[$]-=_*W,p[$]-=L*W,m[y]++,m[$]++}for(let y=0;y<l;y++)m[y]!==0&&(a[y].x+=g[y]/m[y],a[y].y+=p[y]/m[y])}return a}function c8(e,t){let r=o=>`M${t(o.x-o.r)},${t(o.y)}A${t(o.r)},${t(o.r)} 0 1 1 ${t(o.x+o.r)},${t(o.y)}A${t(o.r)},${t(o.r)} 0 1 1 ${t(o.x-o.r)},${t(o.y)}Z`;if(e.length===1)return r(e[0]);let a=(o,c,h,d)=>{for(let f of e)if(f!==h&&f!==d&&Math.hypot(o-f.x,c-f.y)>f.r*(1+1e-9))return!1;return!0},n=[];for(let o=0;o<e.length;o++)for(let c=o+1;c<e.length;c++){let h=e[o],d=e[c],f=Math.hypot(d.x-h.x,d.y-h.y);if(f>=h.r+d.r||f<=Math.abs(h.r-d.r)||f===0)continue;let g=(h.r*h.r-d.r*d.r+f*f)/(2*f),p=Math.sqrt(Math.max(h.r*h.r-g*g,0)),m=h.x+(d.x-h.x)*g/f,x=h.y+(d.y-h.y)*g/f;for(let y of[1,-1]){let $=m+y*p*(d.y-h.y)/f,k=x-y*p*(d.x-h.x)/f;a($,k,h,d)&&n.push({x:$,y:k,a:h,b:d})}}if(n.length<2){let o=e[0];for(let c of e)c.r<o.r&&(o=c);for(let c of e)if(c!==o&&Math.hypot(c.x-o.x,c.y-o.y)+o.r>c.r*(1+1e-9))return"";return r(o)}let i=0,l=0;for(let o of n)i+=o.x/n.length,l+=o.y/n.length;n.sort((o,c)=>Math.atan2(o.y-l,o.x-i)-Math.atan2(c.y-l,c.x-i));let s="";for(let o=0;o<n.length;o++){let c=n[o],h=n[(o+1)%n.length];o===0&&(s=`M${t(c.x)},${t(c.y)}`);let d,f=0,g=1/0;for(let p of[c.a,c.b]){if(p!==h.a&&p!==h.b)continue;let m=Math.atan2(c.y-p.y,c.x-p.x),x=Math.atan2(h.y-p.y,h.x-p.x)-m;x<=0&&(x+=pf);let y=p.x+p.r*Math.cos(m+x/2),$=p.y+p.r*Math.sin(m+x/2),k=Math.hypot(y-(c.x+h.x)/2,$-(c.y+h.y)/2);k<g&&(g=k,d=p,f=x>Math.PI?1:0)}d===void 0?s+=`L${t(h.x)},${t(h.y)}`:s+=`A${t(d.r)},${t(d.r)} 0 ${f} 1 ${t(h.x)},${t(h.y)}`}return s+"Z"}function M1(e){return e.length===1?e[0]:JSON.stringify(e)}function f8(e,t,r){let a=r.fontSize??16,n=Math.round(a*.875),i=Math.round(a*.8125),l=r.measurer??rt(r.fontFamily),s=r.padding??8,o=o8(e.subsets),c=new Map;o.forEach((M,b)=>c.set(M.id,b));let h=new Map;for(let{targets:M,styles:b}of e.styles){let E=M1(M),w=h.get(E);w||h.set(E,w=new Map);for(let[T,A]of b)w.set(T,A)}let d=M=>{let b=h.get(M);if(!b)return gv;let E=[];for(let[w,T]of b)E.push(`${w}:${T}`);return Ct(E)},f=o.map(()=>[]);for(let M=0;M<o.length;M++)for(let b=M+1;b<o.length;b++)Math.hypot(o[M].x-o[b].x,o[M].y-o[b].y)<o[M].r+o[b].r&&(f[M].push(b),f[b].push(M));let g=new Map;for(let M of e.subsets)g.set(M1(M.sets),M);let p=new Map;for(let[M,b]of g){let E=[...new Set(b.sets)],w=E.map(O=>c.get(O)),T=new Set(w),A=w[0];for(let O of w)o[O].r<o[A].r&&(A=O);let v=d(M),D=b.label??(b.sets.length===1?b.sets[0]:void 0),z=(v.bold?1:0)|(v.italic?2:0),H=v1(o,w,f[A].filter(O=>!T.has(O)));H.margin<o[A].r*.2&&(H=v1(o,w,[]));let P={sets:E,inside:w,spot:H,lines:[],style:v};if(D){let O=E.length===1?a:n;P.lines.push({id:void 0,raw:D,size:O,base:z,label:Be(D,!1,l,O,4e3,z)})}p.set(M,P)}for(let M of e.textNodes){let b=M.label??M.id;p.get(M1(M.sets))?.lines.push({id:M.id,raw:b,size:i,base:0,label:Be(b,!1,l,i,4e3)})}let m=0;for(let M of o)M.r>m&&(m=M.r);let x=m>0?h8/m:1,y=1;for(let M of p.values()){if(M.spot.margin<=0)continue;let b=0,E=0;for(let T of M.lines)b=Math.max(b,T.label.width),E+=T.label.height;let w=Math.hypot(b,E)/2+4;y=Math.max(y,Math.min(w/(M.spot.margin*x),d8))}x*=y;for(let M of p.values()){let b=Math.max(M.spot.margin*x*1.8,72);for(let E of M.lines)E.label.width>b&&(E.label=Be(E.raw,!1,l,E.size,b,E.base))}let $=1/0,k=1/0,I=-1/0,_=-1/0;for(let M of o)$=Math.min($,(M.x-M.r)*x),k=Math.min(k,(M.y-M.r)*x),I=Math.max(I,(M.x+M.r)*x),_=Math.max(_,(M.y+M.r)*x);for(let M of p.values()){let b=0,E=0;for(let w of M.lines)b=Math.max(b,w.label.width),E+=w.label.height;$=Math.min($,M.spot.x*x-b/2),I=Math.max(I,M.spot.x*x+b/2),k=Math.min(k,M.spot.y*x-E/2),_=Math.max(_,M.spot.y*x+E/2)}o.length===0&&($=k=I=_=0);let L=Be(e.title&&ss(e.title),!1,l,a,4e3,1),R=L.height>0?L.height+12:0,W=Math.max(I-$,L.width),q=s+(W-(I-$))/2-$,C=s+R-k,K=Math.ceil(W+2*s),Q=Math.ceil(_-k+R+2*s),G=o.map(M=>({id:M.id,x:M.x*x+q,y:M.y*x+C,r:M.r*x})),Y="";G.forEach((M,b)=>{let E=pt(b),w=p.get(M.id)?.style??gv;Y+=`<circle class="pele-venn-set" data-id="${Pe(M.id)}" cx="${u(M.x)}" cy="${u(M.y)}" r="${u(M.r)}" fill="${E}" fill-opacity="0.2" stroke="${E}"${w.shape}/>`});let N="",S="";for(let M of p.values()){let b=Pe(M.sets.join("|"));if(M.sets.length>1&&M.style.shape!==""){let v=c8(M.inside.map(D=>G[D]),u);v!==""&&(N+=`<path class="pele-venn-overlap" data-id="${b}" d="${v}" fill="none"${M.style.shape}/>`)}let E=0;for(let v of M.lines)E+=v.label.height;if(E===0)continue;let w=M.spot.x*x+q,T=M.spot.y*x+C-E/2,A="";for(let v of M.lines){let D=v.id===void 0?` class="pele-label"${v.size===a?"":` font-size="${v.size}"`}${M.style.text}`:` class="pele-venn-text" data-id="${Pe(v.id)}" font-size="${i}" fill="var(--_m)"${d(v.id).text}`;A+=Re(v.label,w,T+v.label.height/2,D),T+=v.label.height}S+=`<g class="pele-venn-region" data-id="${b}">${A}</g>`}return{svg:tt("venn",K,Q,a,r,{},Re(L,K/2,s+L.height/2,' class="pele-title" font-weight="var(--_tw)"')+`<g class="pele-venn-sets">${Y}</g>`+(N?`<g class="pele-venn-overlaps">${N}</g>`:"")+(S?`<g class="pele-venn-labels">${S}</g>`:"")),width:K,height:Q,links:[]}}var JD,uv,e8,t8,r8,a8,pf,h8,d8,gv,mv,yv=Ge(()=>{xe();or();yt();kt();JD=class{constructor(){le(this,"type","venn");le(this,"title");le(this,"subsets",[]);le(this,"textNodes",[]);le(this,"styles",[]);le(this,"known",new Set);le(this,"current");le(this,"indent",!1)}setDiagramTitle(e){this.title=e}addSubsetData(e,t,r){let a=k1(e);this.current=a,a.length===1&&this.known.add(a[0]),this.subsets.push({sets:a,size:r??10/e.length**2,label:t?ss(t):void 0})}addTextData(e,t,r){this.textNodes.push({sets:k1(e),id:ss(t),label:r?ss(r):void 0})}addStyleData(e,t){let r=new Map;for(let[a,n]of t)r.set(a,n&&ss(n));this.styles.push({targets:k1(e),styles:r})}validateUnionIdentifiers(e){let t=e.map(ss).filter(r=>!this.known.has(r));if(t.length>0)throw new Ke(`unknown set identifier: ${t.join(", ")}`,"semantic",{type:"venn"})}getCurrentSets(){return this.current}getIndentMode(){return this.indent}setIndentMode(e){this.indent=e}},uv=["$end","INVALID","EOF","NEWLINE","VENN","TITLE","SET","UNION","TEXT","INDENT_TEXT","STYLE","BRACKET_LABEL","NUMERIC","HEXCOLOR","RGBCOLOR","RGBACOLOR","IDENTIFIER","STRING","COMMA","COLON"],e8=[["venn-beta",4],["set",6],["union",7],["text",8],["style",10]],t8=class{constructor(e,t){le(this,"src");le(this,"host");le(this,"text","");le(this,"start",0);le(this,"at",0);le(this,"lineStart",!1);le(this,"ended",!1);this.src=e,this.host=t}word(e,t){let r=this.src;for(let a=0;a<t.length;a++){let n=r.charCodeAt(e+a),i=t.charCodeAt(a);if(n!==i&&(n+32!==i||n<65||n>90))return!1}return!0}keyword(e,t){return this.word(e,t)&&!et(this.src.charCodeAt(e+t.length))}color(e,t){let r=this.src,a=e+1;for(let n=0;n<t;n++){for(;je(r.charCodeAt(a));)a++;let i=a;for(;mt(r.charCodeAt(a))||r.charCodeAt(a)===46;)a++;if(a===i)return-1;for(;je(r.charCodeAt(a));)a++;if(r.charCodeAt(a)!==(n===t-1?41:44))return-1;a++}return a}lineEnd(e){let t=this.src.indexOf(`
|
|
273
|
+
`,e);return t===-1?this.src.length:t}next(){let e=this.src,t=e.length;for(;;){let r=this.at;if(this.start=r,this.text="",r>=t)return this.ended?0:(this.ended=!0,2);let a=e.charCodeAt(r);if(a===37&&e.charCodeAt(r+1)===37&&e.charCodeAt(r+2)!==123||a!==125&&e.charCodeAt(r+1)===37&&e.charCodeAt(r+2)===37){this.at=this.lineEnd(r+2);continue}if(this.lineStart){if(a===32||a===9){let n=r+1;for(;e.charCodeAt(n)===32||e.charCodeAt(n)===9;)n++;if(this.at=n,this.keyword(n,"text")&&this.host.getIndentMode())return this.at=n+4,this.lineStart=!1,this.text=e.slice(r,n),9;continue}a!==10&&a!==13&&(this.host.setIndentMode(!1),this.lineStart=!1)}if(a===10||a===13){for(r++;e.charCodeAt(r)===10||e.charCodeAt(r)===13;)r++;return this.lineStart=!0,this.token(3,r)}if(a===37&&e.charCodeAt(r+1)===37){this.at=this.lineEnd(r);continue}if(a===32||a===9){for(r++;e.charCodeAt(r)===32||e.charCodeAt(r)===9;)r++;this.at=r;continue}if((a|32)>=97&&(a|32)<=122||a===95){if(this.word(r,"title")&&je(e.charCodeAt(r+5))){let n=r+6;for(;n<t;){let i=e.charCodeAt(n);if(i===35||i===10||i===59)break;n++}if(n>r+6)return this.token(5,n)}for(let[n,i]of e8)if(this.keyword(r,n))return this.token(i,r+n.length);if(this.word(r,"rgb")){let n=(e.charCodeAt(r+3)|32)===97,i=r+(n?4:3),l=e.charCodeAt(i)===40?this.color(i,n?4:3):-1;if(l!==-1)return this.token(n?15:14,l)}for(r++;et(e.charCodeAt(r))||e.charCodeAt(r)===45;)r++;return this.token(16,r)}if(a===91){if(e.charCodeAt(r+1)===34){let i=e.indexOf('"',r+2);return i===-1||e.charCodeAt(i+1)!==93?1:(this.at=i+2,this.text=e.slice(r+2,i),11)}let n=r+1;for(;n<t&&e.charCodeAt(n)!==93&&e.charCodeAt(n)!==34;)n++;return n===r+1||e.charCodeAt(n)!==93?1:(this.at=n+1,this.text=e.slice(r+1,n).trim(),11)}if(mt(a)||a===46||a===43||a===45){(a===43||a===45)&&r++;let n=r;for(;mt(e.charCodeAt(r));)r++;if(r>n){if(e.charCodeAt(r)===46&&mt(e.charCodeAt(r+1)))for(r+=2;mt(e.charCodeAt(r));)r++}else if(e.charCodeAt(r)===46&&mt(e.charCodeAt(r+1)))for(r+=2;mt(e.charCodeAt(r));)r++;else return 1;return this.token(12,r)}if(a===35){let n=r+1;for(;n<r+9&&Dc(e.charCodeAt(n));)n++;return n>=r+4?this.token(13,n):1}if(a===34){let n=e.indexOf('"',r+1);return n===-1?1:this.token(17,n+1)}return a===44?this.token(18,r+1):a===58?this.token(19,r+1):1}}token(e,t){return this.text=this.src.slice(this.at,t),this.at=t,e}},r8="'EOF', 'NEWLINE', 'TITLE', 'SET', 'UNION', 'TEXT', 'INDENT_TEXT', 'STYLE'",a8="'NUMERIC', 'IDENTIFIER', 'STRING', 'HEXCOLOR', 'RGBCOLOR', 'RGBACOLOR'";pf=Math.PI*2;h8=100,d8=1.6,gv=Ct([]);mv={type:"venn",parse(e,t,r){let a=new JD;return r&&(a.title=r),n8(e,a),a},render:f8}});var xv={};Rt(xv,{venn:()=>mv});var bv=Ge(()=>{xe();yv()});function g8(e,t){let r="ishikawa-beta",a=0;for(;a<13;){let n=e.charCodeAt(t+a),i=r.charCodeAt(a);if(n!==i&&(n+32!==i||n<65||n>90))break;a++}return a===13&&!et(e.charCodeAt(t+13))?13:a>=8&&!et(e.charCodeAt(t+8))?8:0}function m8(e){let t=[],r=[],a=[],n=e.length,i=0;for(;i<n;){let l=i,s=-1;for(;l<n&&je(e.charCodeAt(l));)e.charCodeAt(l)===10&&(s=l),l++;let o,c;if(e.charCodeAt(l)===37&&e.charCodeAt(l+1)===37)for(o=2,c=l+2;c<n;){let h=e.charCodeAt(c);if(h===10||h===13||h===8232||h===8233)break;c++}else if(l===i){let h=g8(e,i);h>0?(o=4,c=i+h):(o=6,c=e.indexOf(`
|
|
274
|
+
`,i),c===-1&&(c=n))}else s>i?(o=2,c=s+1):s===i?(o=3,c=i+1):(o=5,c=l);t.push(o),r.push(i),a.push(c),i=c}return t.push(1,0),r.push(n,n),a.push(n,n),{types:t,starts:r,ends:a}}function y8(e,t){let{types:r,starts:a,ends:n}=m8(e),i=0,l=s=>{throw st("ishikawa",e,a[i],`Expecting ${s}, got '${p8[r[i]]}'`)};if(r[i]===2){for(i++;r[i]===2||r[i]===3;)i++;r[i]!==4&&l("'SPACELINE', 'NL', 'ISHIKAWA'")}else r[i]!==4&&l("'SPACELINE', 'ISHIKAWA'");for(i++,r[i]===3&&i++;;){let s=r[i];if(s===6||s===5&&r[i+1]===6){let o=s===6?i:i+1;i=o+1,r[i]!==2&&r[i]!==3&&r[i]!==1&&l(A1),t.addNode(s===6?0:n[o-1]-a[o-1],e.slice(a[o],n[o]).trim())}else s===2||s===5?(i++,r[i]!==2&&r[i]!==3&&r[i]!==1&&l(s===5?`${A1}, 'TEXT'`:A1)):l("'SPACELINE', 'SPACELIST', 'TEXT'");for(i++;r[i]===3||r[i]===1;)i++;if(r[i]===0)return}}function E8(e,t,r,a,n){let i=Be(e.text,!1,r,a,180),l=Math.round(n*1.5),s=[],o=[],c=[],h=(p,m,x)=>{let y=p.length;for(let $=y-1;$>=0;$--)c.push({node:p[t?y-1-$:$],depth:m,parent:x,slot:$,bone:-1})};for(h(e.children,2,-1);c.length>0;){let p=c.pop();if(p.bone!==-1){o.push(p.bone);continue}let m=s.length;s.push({label:Be(p.node.text,!1,r,n,200),depth:p.depth,parent:p.parent,slot:p.slot,kids:p.node.children.length,rise:0,at:0,textEnd:0}),p.depth%2===0?o.push(m):(p.bone=m,c.push(p)),h(p.node.children,p.depth+1,m)}let d=x8;for(let p of o){let m=Math.max(s[p].label.height,l)+b8;s[p].rise=d+m/2,d+=m}let f=i.width+2*v8,g=f/2;for(let p of s){let m=p.parent===-1?void 0:s[p.parent];p.depth%2===0?(p.at=m?m.at:0,p.textEnd=p.at-(p.kids>0?(p.kids+1)*wv:$8)-E1):(p.at=m.at-(m.kids-p.slot)*wv,p.textEnd=p.at-E1),g=Math.max(g,p.label.width-p.textEnd)}return{node:e,label:i,boxW:f,boxH:i.height+2*A8,bones:s,rise:d+w8,reach:g}}function S8(e,t,r){return jt(r,a=>T8(e,t,r,a))}function T8(e,t,r,a){let n=r.fontSize??16,i=Math.round(n*.875),l=r.measurer??rt(r.fontFamily),s=r.padding??8;if(a)return C8(e,r);let o=e.root,c=Be(e.title,!1,l,n,4e3,1),h=c.height>0?c.height+12:0,d="",f=0,g=0,p=0,m=0;if(o){let _=Be(o.text,!1,l,n,200,1),L=Math.max(_.height+24,48),R=_.width+24+L/2,W=o.children.map((Y,N)=>E8(Y,N%2===0,l,n,i));for(let Y of W)Y.rise=Math.max(Y.rise,L/2+14);let q=[],C=-$v;for(let Y=0;Y<W.length;Y+=2){if(Y>0){let N=0;for(let S=0;S<2;S++){let M=W[Y-2+S],b=W[Y+S];M&&(N=Math.max(N,M.reach+(b?b.boxW/2:0)))}C-=N+k8}q.push(C,C)}let K=W.length>0?C-M8:-$v;g=R,f=K,p=-L/2,m=L/2;let Q="";W.forEach((Y,N)=>{let S=N%2===0?-1:1,M=q[N],b=(z,H)=>M+z-H*mf,E=b(0,Y.rise),w=S*Y.rise,T=Xt-1,A=`M${u(M-mf/gf*T)},${u(S*T/gf)}L${u(E)},${u(w)}`,v="";for(let z of Y.bones){let H=S*z.rise;if(z.depth%2===0)A+=`M${u(b(z.at,z.rise))},${u(H)}H${u(b(z.textEnd+E1,z.rise))}`;else{let O=Y.bones[z.parent].rise;A+=`M${u(b(z.at,O))},${u(S*O)}L${u(b(z.at,z.rise))},${u(H)}`}let P=b(z.textEnd,z.rise);v+=Re(z.label,P-z.label.width/2,H,z.depth>2?' fill="var(--_m)"':""),f=Math.min(f,P-z.label.width)}let D=w+S*(Y.boxH/2);f=Math.min(f,E-Y.boxW/2),g=Math.max(g,E+Y.boxW/2),p=Math.min(p,D-Y.boxH/2),m=Math.max(m,D+Y.boxH/2),Q+=`<g class="pele-ishikawa-category" data-id="${Pe(Y.node.text)}"><path class="pele-ishikawa-bones" d="${A}" fill="none" stroke="var(--_l)"/>`+Mt("arrow_point",M,0,mf/gf,-S/gf,"var(--_l)")+`<rect x="${u(E-Y.boxW/2)}" y="${u(D-Y.boxH/2)}" width="${u(Y.boxW)}" height="${u(Y.boxH)}" fill="var(--_s)" stroke="var(--_b)"${ot}/>`+Re(Y.label,E,D,' class="pele-label"')+(v?`<g class="pele-ishikawa-causes" font-size="${i}">${v}</g>`:"")+"</g>"});let G=L/2;d=`<path class="pele-ishikawa-spine" d="M${u(K)},0H${u(-(Xt-1))}" fill="none" stroke="var(--_l)"/>`+Mt("arrow_point",0,0,1,0,"var(--_l)")+Q+`<g class="pele-ishikawa-head" data-id="${Pe(o.text)}"><path d="M0,${u(-G)}H${u(R-G)}A${u(G)},${u(G)} 0 0 1 ${u(R-G)},${u(G)}H0Z" fill="var(--_s)" stroke="var(--_b)" stroke-linejoin="round"/>`+Re(_,12+_.width/2,0,' class="pele-label" font-weight="var(--_hw)"')+"</g>"}let x=Math.max(g-f,c.width),y=Math.ceil(x+2*s),$=Math.ceil(m-p+h+2*s),k=s+(x-(g-f))/2-f,I=s+h-p;return{svg:tt("ishikawa",y,$,n,r,{},Re(c,y/2,s+c.height/2,' class="pele-title" font-weight="var(--_tw)"')+(d?`<g transform="translate(${u(k)},${u(I)})">${d}</g>`:"")),width:y,height:$,links:[]}}function C8(e,t){let r=t.fontSize??16,a=Math.round(r*.875),n=t.measurer??rt(t.fontFamily),i=t.padding??8,l=Math.max(140,(t.maxWidth??320)-2*i),s=Be(e.title,!1,n,r,Pt(t),1),o=[],c=e.root?[{node:e.root,depth:0,parent:-1}]:[],h=0;for(;c.length;){let k=c.pop(),I=o.length;o.push({...k,x:0,y:0,w:0,h:0}),h=Math.max(h,k.depth);for(let _=k.node.children.length-1;_>=0;_--)c.push({node:k.node.children[_],depth:k.depth+1,parent:I})}let d=Math.min(20,Math.max(2,(l-120)/Math.max(1,h))),f=i+(s.height?s.height+12:0),g=s.width,p="",m="";for(let k of o){k.x=i+k.depth*d;let I=Math.max(60,l-k.depth*d-20);k.label=Hi(Be(k.node.text,!1,n,k.depth<2?r:a,I,k.depth<2?1:0),n,I),k.w=k.label.width+20,k.h=k.label.height+12,k.y=f,f+=k.h+12,g=Math.max(g,k.x-i+k.w);let _=k.depth<2;if(p+=`<g class="pele-node ${k.depth===0?"pele-ishikawa-head":k.depth===1?"pele-ishikawa-category":"pele-ishikawa-cause"}" data-id="${Pe(k.node.text)}">`+(_?`<rect x="${u(k.x)}" y="${u(k.y)}" width="${u(k.w)}" height="${u(k.h)}" rx="${k.depth===0?12:4}" fill="var(--_s)" stroke="var(--_b)"/>`:"")+Re(k.label,k.x+k.w/2,k.y+k.h/2,` class="pele-label"${k.depth<2?' font-weight="var(--_hw)"':""}${k.depth>1?` font-size="${a}"`:""}`)+"</g>",k.parent>=0){let L=o[k.parent],R=L.x+d/2;m+=`<path class="pele-edge" d="M${u(R)},${u(L.y+L.h)}V${u(k.y+k.h/2)}H${u(k.x)}" fill="none" stroke="var(--_b)"/>`}}let x=Math.ceil(g+2*i),y=Math.ceil(Math.max(i+s.height,f-12)+i),$=Re(s,x/2,i+s.height/2,' class="pele-title" font-weight="var(--_tw)"')+m+p;return{svg:tt("ishikawa",x,y,r,t,{},$),width:x,height:y,links:[]}}var u8,p8,A1,mf,gf,x8,b8,w8,wv,$8,E1,k8,$v,M8,v8,A8,kv,Mv=Ge(()=>{xe();Ui();or();Gt();$r();yt();kt();u8=class{constructor(){le(this,"type","ishikawa");le(this,"title");le(this,"root");le(this,"stack",[]);le(this,"baseLevel")}addNode(e,t){let r={text:t,children:[]};if(!this.root){this.root=r,this.stack=[{level:0,node:r}];return}this.baseLevel??(this.baseLevel=e);let a=Math.max(e-this.baseLevel+1,1),n=this.stack;for(;n.length>1&&n[n.length-1].level>=a;)n.pop();n[n.length-1].node.children.push(r),n.push({level:a,node:r})}},p8=["$end","EOF","SPACELINE","NL","ISHIKAWA","SPACELIST","TEXT"];A1="'SPACELINE', 'NL', 'EOF'";mf=.5,gf=Math.hypot(mf,1),x8=14,b8=6,w8=8,wv=22,$8=18,E1=5,k8=26,$v=34,M8=28,v8=10,A8=5;kv={type:"ishikawa",parse(e,t,r){let a=new u8;return a.title=r,y8(e,a),a},render:S8}});var vv={};Rt(vv,{ishikawa:()=>kv});var Av=Ge(()=>{xe();Mv()});function D8(e,t,r,a,n=I8){let i=e.length;if(i===0)return{width:0,height:0};let l=r==="LR"||r==="RL",s=r==="BT"||r==="RL",o=[];for(let G=i-1;G>=0;G--)e[G].parent<0&&e[G].isGroup&&o.push(G);let c=Math.max(1,o.length),h=new Int32Array(i).fill(-1);o.forEach((G,Y)=>h[G]=Y);let d=new Uint8Array(i);for(let G=0;G<i;G++)e[G].parent>=0&&(d[e[G].parent]=1);let f=new Float64Array(c).fill(n),g=n,p=G=>{let Y=G,N=n;for(let M=0;e[Y].parent>=0&&M<Ev;M++)Y=e[Y].parent,h[Y]<0&&(N+=Math.max(e[Y].padX,e[Y].padTop,e[Y].padBottom));let S=Math.max(0,h[Y]);return N>f[S]&&(f[S]=N),N>g&&(g=N),S},m=new Int32Array(i).fill(-1),x=[];for(let G=0;G<i;G++)h[G]>=0||(!e[G].isGroup||!d[G])&&(m[G]=x.length,x.push(G));let y=G=>l?G.w:G.h,$=G=>l?G.h:G.w,k=x.map(G=>_i($(e[G]),y(e[G]))),I=[],_=[],L=1;{let G=new Set;for(let Y=0;Y<t.length;Y++){let N=t[Y],S=m[N.src],M=m[N.dst];if(S<0||M<0||S===M)continue;let b=Math.min(S,M)*x.length+Math.max(S,M);(N.labelW>0||G.has(b))&&(L=2),G.add(b),I.push(Ii(S,M,N.minlen,l?N.labelH:N.labelW,l?N.labelW:N.labelH)),_.push(Y)}}Vl(k,I),Kl(k,I,L);let R=I.length,W=Int32Array.from(x,p),q=(G,Y)=>{let N=f.map((V,me)=>Y[me]?Math.max(V,Cv):V),S=new Uint8Array(c),M=0,b=new Int32Array(R);for(let V=0;V<R;V++)b[V]=Math.abs(k[I[V].head].rank-k[I[V].tail].rank),G[V]||(M+=b[V]-1);let E=M>L8,w=x.length+(E?0:M),T=new Int32Array(w),A=new Int32Array(w),v=new Float64Array(w),D=new Float64Array(w),z=new Uint8Array(w),H=0;for(let V=0;V<x.length;V++)T[V]=k[V].rank,A[V]=W[V],v[V]=k[V].w,D[V]=k[V].h,T[V]>H&&(H=T[V]);let P=new Int32Array(R).fill(-1),O=new Int32Array(R).fill(-1),F=[];{let V=x.length;for(let me=0;me<R;me++){let ne=I[me],ke=ne.reversed?ne.head:ne.tail,Ee=ne.reversed?ne.tail:ne.head;if(E||b[me]<2||G[me]){F.push(ke,Ee);continue}let Ce=T[ke],De=T[Ee],Ie=-1;ne.labelW>0&&(Ie=Ce+(De-Ce>>1),L===2&&!(Ie&1)&&Ie--),P[me]=V;let He=ke;for(let Se=Ce+1;Se<De;Se++){let Xe=V++;T[Xe]=Se,A[Xe]=A[ke]+Math.round((A[Ee]-A[ke])*(Se-Ce)/(De-Ce)),z[Xe]=1,Se===Ie&&(v[Xe]=ne.labelW,D[Xe]=ne.labelH,O[me]=Xe),F.push(He,Xe),He=Xe}F.push(He,Ee)}}let U=new Int32Array(w+1),j=new Int32Array(w+1);for(let V=0;V<F.length;V+=2)j[F[V]+1]++,U[F[V+1]+1]++;for(let V=0;V<w;V++)U[V+1]+=U[V],j[V+1]+=j[V];let J=new Int32Array(F.length/2),Z=new Int32Array(F.length/2);{let V=U.slice(0,w),me=j.slice(0,w);for(let ne=0;ne<F.length;ne+=2)Z[me[F[ne]]++]=F[ne+1],J[V[F[ne+1]]++]=F[ne]}let B=[];for(let V=0;V<=H;V++)B.push([]);for(let V=0;V<w;V++)B[T[V]].push(V);let X=new Float64Array(w),te=new Float64Array(w),se=V=>{V.sort((me,ne)=>A[me]-A[ne]||te[me]-te[ne]||me-ne);for(let me=0;me<V.length;me++)X[V[me]]=me};for(let V of B){for(let me=0;me<V.length;me++)te[V[me]]=me;se(V)}for(let V=0;V<N8&&H>0;V++){let me=(V&1)===0;for(let ne=1;ne<=H;ne++){let ke=B[me?ne:H-ne],Ee=me?U:j,Ce=me?J:Z;for(let De of ke){let Ie=0,He=Ee[De+1]-Ee[De];for(let Se=Ee[De];Se<Ee[De+1];Se++)Ie+=X[Ce[Se]];te[De]=He>0?Ie/He:X[De]}se(ke)}}let ce=(V,me)=>z[V]||z[me]?a.edgeSep:a.nodeSep,ae=(V,me)=>{let ne=0;for(;ne<V.length;){let ke=ne;for(;ke+1<V.length&&A[V[ke+1]]===A[V[ne]];)ke++;me(V,ne,ke),ne=ke+1}},ie=(V,me,ne)=>{let ke=v[V[me]];for(let Ee=me;Ee<ne;Ee++)ke+=ce(V[Ee],V[Ee+1])+v[V[Ee+1]];return ke},ee=new Float64Array(c),re=o.length>0?_8:0;for(let V=0;V<o.length;V++){let me=e[o[V]];ee[V]=Math.max(0,me.minW-2*N[V]),me.padTop>re&&(re=me.padTop)}for(let V of B)ae(V,(me,ne,ke)=>{let Ee=ie(V,ne,ke);Ee>ee[A[V[ne]]]&&(ee[A[V[ne]]]=Ee)});let fe=new Float64Array(c+1);for(let V=0;V<c;V++)fe[V+1]=fe[V]+ee[V]+2*N[V];let ye=new Float64Array(w),oe=new Float64Array(w),we=(V,me,ne)=>{let ke=A[V[me]],Ee=(fe[ke]+N[ke]+(fe[ke+1]-N[ke])-ie(V,me,ne))/2;for(let Ce=me;Ce<=ne;Ce++)ye[V[Ce]]=Ee+v[V[Ce]]/2,Ce<ne&&(Ee+=v[V[Ce]]+ce(V[Ce],V[Ce+1]))},ue=(V,me,ne)=>{let ke=A[V[me]],Ee=fe[ke]+N[ke];for(let De=me;De<=ne;De++){let Ie=V[De];ye[Ie]=Math.max(oe[Ie],Ee+v[Ie]/2),De<ne&&(Ee=ye[Ie]+v[Ie]/2+ce(Ie,V[De+1]))}let Ce=fe[ke+1]-N[ke];for(let De=ne;De>=me;De--){let Ie=V[De];ye[Ie]=Math.min(ye[Ie],Ce-v[Ie]/2),De>me&&(Ce=ye[Ie]-v[Ie]/2-ce(V[De-1],Ie))}};for(let V of B)ae(V,we);for(let V=0;V<4&&H>0;V++){let me=(V&1)===0;for(let ne=1;ne<=H;ne++){let ke=B[me?ne:H-ne],Ee=me?U:j,Ce=me?J:Z;for(let De of ke){let Ie=0,He=0;for(let Se=Ee[De];Se<Ee[De+1];Se++)A[Ce[Se]]===A[De]&&(Ie+=ye[Ce[Se]],He++);oe[De]=He>0?Ie/He:ye[De]}ae(ke,ue)}}let ge=new Float64Array(H+1),Ae=new Float64Array(H+1),Te=new Float64Array(H+1).fill(a.rankSep/L);if(G.some(V=>V===1)){let V=a.rankSep/L;Te.fill(V/O8);for(let me=0;me<R;me++){let ne=I[me],ke=ne.reversed?ne.head:ne.tail,Ee=ne.reversed?ne.tail:ne.head;if(G[me]){if(ne.labelH<=0||b[me]>L)continue;let De=Math.min(V,(ne.labelH+2*T1-Math.min(D[ke],D[Ee])/2)/b[me]);for(let Ie=T[ke];Ie<T[Ee];Ie++)De>Te[Ie]&&(Te[Ie]=De);continue}let Ce=P[me];if(Ce<0||b[me]<=L*ne.minlen){for(let De=T[ke];De<T[Ee];De++)Te[De]=V;continue}for(let De=Ce-1;De<Ce+b[me]-1;De++){let Ie=De<Ce?ke:De,He=De+1<Ce+b[me]-1?De+1:Ee;(A[Ie]!==A[He]||Math.abs(ye[Ie]-ye[He])>=.5)&&(Te[T[Ie]]=V)}}}let he=re+g;for(let V=0;V<=H;V++){let me=0;for(let ne of B[V])D[ne]>me&&(me=D[ne]);ge[V]=he,Ae[V]=he+me,he+=me+(V===H?0:Te[V])}let pe=he+g,be=fe[c],Ne=V=>s?re+pe-V:V,Oe=(V,me)=>l?Ne(me):V,Ye=(V,me)=>l?V:Ne(me),de=l?1:0;for(let V=0;V<x.length;V++){let me=e[x[V]],ne=(ge[T[V]]+Ae[T[V]])/2;me.x=Oe(ye[V],ne),me.y=Ye(ye[V],ne)}for(let V=0;V<o.length;V++){let me=e[o[V]],ne=(fe[V]+fe[V+1])/2,ke=fe[V+1]-fe[V];me.x=l?pe/2:ne,me.y=l?ne:pe/2,me.w=l?pe:ke,me.h=l?ke:pe,me.padTop=re}let Me=new Int32Array(i),_e=[];for(let V=0;V<i;V++){if(!e[V].isGroup||h[V]>=0||m[V]>=0)continue;let me=0;for(let ne=e[V].parent;ne>=0&&me<Ev;ne=e[ne].parent)me++;Me[V]=me,_e.push(V)}_e.sort((V,me)=>Me[me]-Me[V]||V-me);let $e=new Float64Array(i*4);for(let V=0;V<i;V++)$e[V*4]=1/0,$e[V*4+1]=1/0,$e[V*4+2]=-1/0,$e[V*4+3]=-1/0;let ve=(V,me)=>{me.x-me.w/2<$e[V*4]&&($e[V*4]=me.x-me.w/2),me.y-me.h/2<$e[V*4+1]&&($e[V*4+1]=me.y-me.h/2),me.x+me.w/2>$e[V*4+2]&&($e[V*4+2]=me.x+me.w/2),me.y+me.h/2>$e[V*4+3]&&($e[V*4+3]=me.y+me.h/2)};for(let V of x)e[V].parent>=0&&h[e[V].parent]<0&&ve(e[V].parent,e[V]);for(let V of _e){let me=e[V];if($e[V*4]===1/0)continue;let ne=Math.max($e[V*4+2]-$e[V*4]+2*me.padX,me.minW);me.x=($e[V*4]+$e[V*4+2])/2,me.w=ne,me.y=($e[V*4+1]-me.padTop+$e[V*4+3]+me.padBottom)/2,me.h=$e[V*4+3]-$e[V*4+1]+me.padTop+me.padBottom,me.parent>=0&&h[me.parent]<0&&ve(me.parent,me)}for(let V of t)V.route=[];for(let V=0;V<R;V++){let me=I[V],ne=t[_[V]],ke=me.reversed?me.head:me.tail,Ee=me.reversed?me.tail:me.head,Ce=[ye[ke],Ae[T[ke]]-(Ae[T[ke]]-ge[T[ke]]-D[ke])/2],De=P[V];if(De>=0)for(let Se=De;Se<De+b[V]-1;Se++)Ce.push(ye[Se],ge[T[Se]]),Ae[T[Se]]>ge[T[Se]]&&Ce.push(ye[Se],Ae[T[Se]]);Ce.push(ye[Ee],ge[T[Ee]]+(Ae[T[Ee]]-ge[T[Ee]]-D[Ee])/2);let Ie=[];for(let Se=0;Se<Ce.length;Se+=2)Ie.push(Oe(Ce[Se],Ce[Se+1]),Ye(Ce[Se],Ce[Se+1]),de);if(me.reversed)for(let Se=0,Xe=Ie.length-3;Se<Xe;Se+=3,Xe-=3)for(let Ve=0;Ve<2;Ve++){let nt=Ie[Se+Ve];Ie[Se+Ve]=Ie[Xe+Ve],Ie[Xe+Ve]=nt}ne.route=Ie;let He=O[V];if(He>=0){let Se=(ge[T[He]]+Ae[T[He]])/2;ne.labelX=Oe(ye[He],Se),ne.labelY=Ye(ye[He],Se)}else ne.labelX=(Ie[0]+Ie[Ie.length-3])/2,ne.labelY=(Ie[1]+Ie[Ie.length-2])/2}for(let V of t){if(V.route.length>0||V.src===V.dst)continue;let me=e[V.src],ne=e[V.dst],[ke,Ee]=Iv(me,ne),[Ce,De]=Iv(ne,me),Ie=Math.abs(Ce-ke)>Math.abs(De-Ee)?1:0;V.route=[ke,Ee,Ie,Ce,De,Ie],V.labelX=(ke+Ce)/2,V.labelY=(Ee+De)/2}let Le=new Uint8Array(R),qe=t.reduce((V,me)=>V+me.route.length/3,0),Fe=R*(x.length+t.length+qe);if(Fe<=S1){let V=Ie=>(ge[T[Ie]]+Ae[T[Ie]])/2,me=t.map(Ie=>[l?Ie.labelY:Ie.labelX,Ne(l?Ie.labelX:Ie.labelY)]),ne=(Ie,He,Se,Xe,Ve,nt,ft,at)=>Se>Ve-ft/2&&Ie<Ve+ft/2&&Xe>nt-at/2&&He<nt+at/2,ke=(Ie,He,Se,Xe,Ve,nt,ft)=>{for(let at=0;at<x.length;at++)if(at!==Ve&&at!==nt&&ne(Ie,He,Se,Xe,ye[at],V(at),v[at]+8,D[at]+8))return!1;for(let at=0;at<t.length;at++){let ht=t[at];if(at!==ft&&ht.labelW>0&&ht.src!==ht.dst&&ne(Ie,He,Se,Xe,me[at][0],me[at][1],l?ht.labelH:ht.labelW,l?ht.labelW:ht.labelH))return!1}return!0},Ee=(Ie,He,Se,Xe,Ve)=>{let nt=0;for(let ft=0;ft<t.length;ft++){if(ft===Ve)continue;let at=t[ft].route;for(let ht=3;ht<at.length;ht+=3)if(Math.max(at[ht-3],at[ht])>Ie&&Math.min(at[ht-3],at[ht])<Se&&Math.max(at[ht-2],at[ht+1])>He&&Math.min(at[ht-2],at[ht+1])<Xe){nt++;break}}return nt},Ce=(Ie,He,Se)=>{let Xe=0;for(let Ve=0;Ve<t.length;Ve++){let nt=t[Ve].route;if(Ve===Se||nt.length===0)continue;let ft=nt.length-3;(Math.abs(nt[0]-Ie)<1&&Math.abs(nt[1]-He)<1||Math.abs(nt[ft]-Ie)<1&&Math.abs(nt[ft+1]-He)<1)&&Xe++}return Xe},De=(Ie,He,Se,Xe,Ve)=>{let nt=Math.abs(Se-Ie)<.5,ft=nt?Math.min(He,Xe):Math.min(Ie,Se),at=nt?Math.max(He,Xe):Math.max(Ie,Se),ht=nt?Ie:He;for(let ct=0;ct<t.length;ct++){let Ut=t[ct];if(ct===Ve||Ut.src===t[Ve].src||Ut.dst===t[Ve].dst)continue;let Lt=Ut.route;for(let At=3;At<Lt.length;At+=3){let Ht=Lt[At-3+(nt?0:1)],Ue=Lt[At+(nt?0:1)];if(Math.abs(Ht-ht)>=Sv||Math.abs(Ue-ht)>=Sv)continue;let ut=Lt[At-3+(nt?1:0)],wt=Lt[At+(nt?1:0)];if(Math.min(at,Math.max(ut,wt))-Math.max(ft,Math.min(ut,wt))>1)return!0}}return!1};for(let Ie=0;Ie<R;Ie++){let He=I[Ie],Se=_[Ie],Xe=t[Se],Ve=He.tail,nt=He.head;if(A[Ve]===A[nt]||Math.abs(ye[nt]-ye[Ve])<1)continue;let ft=ye[Ve],at=ye[nt],ht=V(Ve),ct=V(nt),Ut=Math.sign(at-ft),Lt=Math.sign(ct-ht),At=(Ue,ut)=>{for(let Je=2;Je<Ue.length;Je+=2)if(!ke(Math.min(Ue[Je-2],Ue[Je])-ut,Math.min(Ue[Je-1],Ue[Je+1])-ut,Math.max(Ue[Je-2],Ue[Je])+ut,Math.max(Ue[Je-1],Ue[Je+1])+ut,Ve,nt,Se)||De(Oe(Ue[Je-2],Ue[Je-1]),Ye(Ue[Je-2],Ue[Je-1]),Oe(Ue[Je],Ue[Je+1]),Ye(Ue[Je],Ue[Je+1]),Se))return!1;let wt=0,dt=0,lr=-1;if(Xe.labelW>0){let Je=He.labelW,$t=He.labelH;for(let Wt=2;Wt<Ue.length;Wt+=2){let zt=(Ue[Wt-2]+Ue[Wt])/2,dr=(Ue[Wt-1]+Ue[Wt+1])/2,pa=Math.abs(Ue[Wt]-Ue[Wt-2]),Da=Math.abs(Ue[Wt+1]-Ue[Wt-1]),wl=pa+Da;if(wl<=lr||(pa>0?pa<Je+8:Da<$t+8)||zt-Je/2<0||zt+Je/2>be||dr-$t/2<0||dr+$t/2>pe||!ke(zt-Je/2,dr-$t/2,zt+Je/2,dr+$t/2,-1,-1,Se))continue;let $l=Oe(zt,dr),kl=Ye(zt,dr);Ee($l-Xe.labelW/2,kl-Xe.labelH/2,$l+Xe.labelW/2,kl+Xe.labelH/2,Se)>0||(wt=zt,dt=dr,lr=wl)}if(lr<0)return!1}let It=[Ue[0],Ue[1]];for(let Je=2;Je<Ue.length;Je+=2){let $t=Ue[Je]-Ue[Je-2],Wt=Ue[Je+1]-Ue[Je-1],zt=Math.abs($t)+Math.abs(Wt),dr=Je>2?T1:0,pa=Je+2<Ue.length?T1:0;zt>dr+pa+1&&(dr&&It.push(Ue[Je-2]+$t/zt*dr,Ue[Je-1]+Wt/zt*dr),pa&&It.push(Ue[Je]-$t/zt*pa,Ue[Je+1]-Wt/zt*pa)),It.push(Ue[Je],Ue[Je+1])}Xe.route=[];for(let Je=0;Je<It.length;Je+=2){let $t=Je===0?It[0]!==It[2]:It[Je]!==It[Je-2];Xe.route.push(Oe(It[Je],It[Je+1]),Ye(It[Je],It[Je+1]),$t?1-de:de)}return Xe.labelW>0&&(Xe.labelX=Oe(wt,dt),Xe.labelY=Ye(wt,dt),me[Se]=[wt,dt]),Le[Ie]=1,!0};if(At([ft+Ut*v[Ve]/2,ht,at,ht,at,ct-Lt*D[nt]/2],2)||At([ft,ht+Lt*D[Ve]/2,ft,ct,at-Ut*v[nt]/2,ct],2)||Fe>S1/Tv)continue;let Ht=[];for(let Ue of A[Ve]<A[nt]?[A[nt],A[Ve]]:[A[Ve],A[nt]]){let ut=Math.max(N[Ue]-_v,Math.min(N[Ue]/2,Cv-_v));for(let wt of[fe[Ue]+ut,fe[Ue+1]-ut]){if(Math.abs(wt-ft)<v[Ve]/2+4||Math.abs(wt-at)<v[nt]/2+4)continue;let dt=[ft+Math.sign(wt-ft)*v[Ve]/2,ht,wt,ht,wt,ct,at+Math.sign(wt-at)*v[nt]/2,ct],lr=(Ce(Oe(dt[0],dt[1]),Ye(dt[0],dt[1]),Se)+Ce(Oe(dt[6],dt[7]),Ye(dt[6],dt[7]),Se))*1e6;for(let It=2;It<dt.length;It+=2){let Je=Oe(dt[It-2],dt[It-1]),$t=Ye(dt[It-2],dt[It-1]),Wt=Oe(dt[It],dt[It+1]),zt=Ye(dt[It],dt[It+1]);lr+=Ee(Math.min(Je,Wt),Math.min($t,zt),Math.max(Je,Wt),Math.max($t,zt),Se)*1e6+Math.abs(Wt-Je)+Math.abs(zt-$t)}Ht.push({pts:dt,cost:lr,lane:Ue})}}Ht.sort((Ue,ut)=>Ue.cost-ut.cost);for(let Ue of Ht)if(At(Ue.pts,1)){S[Ue.lane]=1;break}}}return{width:l?pe:be,height:l?be:pe,routed:Le,margins:S,work:Fe}},C=new Uint8Array(R),K=new Uint8Array(c),Q=q(C,K);for(let G=0;G<R8&&Q.work<=S1/Tv;G++){let Y=G===0?Q.routed:C.map((N,S)=>N&Q.routed[S]);if(Y.every((N,S)=>N===C[S])&&Q.margins.every((N,S)=>N===K[S]))break;C=Y,K=Q.margins,Q=q(C,K)}return C.some((G,Y)=>G&&!Q.routed[Y])&&(Q=q(new Uint8Array(R),new Uint8Array(c))),{width:Q.width,height:Q.height}}function Iv(e,t){let r=t.x-e.x,a=t.y-e.y,n=Math.max(e.w/2,.5),i=Math.max(e.h/2,.5);if(Math.abs(r)<n&&Math.abs(a)<i){let s=n-Math.abs(r),o=i-Math.abs(a);return s<o?[e.x+(r<0?-n:n),t.y]:[t.x,e.y+(a<0?-i:i)]}let l=Math.min(r!==0?n/Math.abs(r):1/0,a!==0?i/Math.abs(a):1/0);return[e.x+r*l,e.y+a*l]}function P8(e){let t=!1;for(let r of e.nodes)r.isGroup?r.dir=void 0:r.parentId===void 0&&(t=!0);if(t){for(let r of e.nodes)!r.isGroup&&r.parentId===void 0&&(r.parentId=Nv);e.nodes.push({id:Nv,label:void 0,labelType:"text",shape:"rect",isGroup:!0,parentId:void 0,cssStyles:[],cssCompiledStyles:[],cssClasses:"",dir:void 0})}}function z8(e,t,r,a,n,i,l){let s=e.x-e.w/2,o=e.y-e.h/2,c=i==="LR"||i==="RL",h=c?s+e.padTop/2:e.x,d=c?e.y:o+e.padTop/2,f=Re(t,h,d,` class="pele-cluster-label" fill="var(--_m)"${r.text}`,l);return`<g class="pele-cluster pele-lane${a}" data-id="${n}"><rect x="${u(s)}" y="${u(o)}" width="${u(e.w)}" height="${u(e.h)}" fill="none" stroke="var(--_b)"/><rect x="${u(s)}" y="${u(o)}" width="${u(c?e.padTop:e.w)}" height="${u(c?e.h:e.padTop)}" fill="var(--_a)" stroke="var(--_b)"${r.shape}/>`+(c&&f?`<g transform="rotate(-90 ${u(h)} ${u(d)})">${f}</g>`:f)+"</g>"}var _8,I8,N8,L8,Ev,S1,Sv,R8,Tv,T1,Cv,_v,O8,Nv,F8,Lv,Rv=Ge(()=>{xe();ju();$r();yt();_8=34,I8=24,N8=8,L8=2e4,Ev=1e4,S1=2e6,Sv=4,R8=3,Tv=8,T1=20,Cv=20,_v=14,O8=3;Nv="__swimlane_default__";F8={type:"swimlane",prepare:P8,layout:(e,t,r,a,n)=>D8(e,t,r,a,n?12:void 0),drawGroup:z8},Lv={type:"swimlane",math:!0,parse:lh.parse,render:(e,t,r)=>Uu(e,t,r,F8)}});var Ov={};Rt(Ov,{swimlane:()=>Lv});var Dv=Ge(()=>{xe();Rv()});function Pv(e){if(e===null)return Promise.resolve(!1);if(Xm(e))return Promise.resolve(!0);let t=C1.get(e);if(t===void 0){let r=B8.get(e);if(r===void 0)return Promise.resolve(!1);t=r().then(a=>(jm(a),!0),a=>{throw C1.delete(e),a}),C1.set(e,t)}return t}var B8,C1,zv=Ge(()=>{xe();Jm();kt();B8=new Map([["flowchart",()=>Promise.resolve().then(()=>(Xy(),jy)).then(e=>e.flowchart)],["pie",()=>Promise.resolve().then(()=>(r2(),t2)).then(e=>e.pie)],["er",()=>Promise.resolve().then(()=>(b2(),x2)).then(e=>e.er)],["mindmap",()=>Promise.resolve().then(()=>(N2(),I2)).then(e=>e.mindmap)],["kanban",()=>Promise.resolve().then(()=>(D2(),O2)).then(e=>e.kanban)],["timeline",()=>Promise.resolve().then(()=>(G2(),q2)).then(e=>e.timeline)],["journey",()=>Promise.resolve().then(()=>(K2(),V2)).then(e=>e.journey)],["class",()=>Promise.resolve().then(()=>(fx(),dx)).then(e=>e.classDiagram)],["quadrantChart",()=>Promise.resolve().then(()=>(vx(),Mx)).then(e=>e.quadrantChart)],["xychart",()=>Promise.resolve().then(()=>(Wx(),Bx)).then(e=>e.xychart)],["state",()=>Promise.resolve().then(()=>(eb(),Jx)).then(e=>e.state)],["gantt",()=>Promise.resolve().then(()=>(Ab(),vb)).then(e=>e.gantt)],["architecture",()=>Promise.resolve().then(()=>(Pb(),Db)).then(e=>e.architecture)],["requirement",()=>Promise.resolve().then(()=>(Vb(),Xb)).then(e=>e.requirement)],["sankey",()=>Promise.resolve().then(()=>(sw(),iw)).then(e=>e.sankey)],["packet",()=>Promise.resolve().then(()=>(dw(),hw)).then(e=>e.packet)],["radar",()=>Promise.resolve().then(()=>($w(),ww)).then(e=>e.radar)],["treemap",()=>Promise.resolve().then(()=>(Cw(),Tw)).then(e=>e.treemap)],["info",()=>Promise.resolve().then(()=>(Rw(),Lw)).then(e=>e.info)],["sequence",()=>Promise.resolve().then(()=>(Jw(),Qw)).then(e=>e.sequence)],["gitGraph",()=>Promise.resolve().then(()=>(d$(),h$)).then(e=>e.gitGraph)],["c4",()=>Promise.resolve().then(()=>(_$(),C$)).then(e=>e.c4)],["block",()=>Promise.resolve().then(()=>(H$(),G$)).then(e=>e.block)],["railroad",()=>Promise.resolve().then(()=>(pk(),uk)).then(e=>e.railroad)],["agentflow",()=>Promise.resolve().then(()=>(Ck(),Tk)).then(e=>e.agentflow)],["treeView",()=>Promise.resolve().then(()=>(Yk(),Wk)).then(e=>e.treeView)],["cynefin",()=>Promise.resolve().then(()=>(Jk(),Qk)).then(e=>e.cynefin)],["wardley",()=>Promise.resolve().then(()=>(fM(),dM)).then(e=>e.wardley)],["eventmodeling",()=>Promise.resolve().then(()=>(MM(),kM)).then(e=>e.eventmodeling)],["usecase",()=>Promise.resolve().then(()=>(fv(),dv)).then(e=>e.usecase)],["venn",()=>Promise.resolve().then(()=>(bv(),xv)).then(e=>e.venn)],["ishikawa",()=>Promise.resolve().then(()=>(Av(),vv)).then(e=>e.ishikawa)],["swimlane",()=>Promise.resolve().then(()=>(Dv(),Ov)).then(e=>e.swimlane)]]),C1=new Map});var Fv,W8,Y8,q8,G8,fa,Bv,dl=Ge(()=>{xe();yu();Fv=/<br\s*\/?>/gi,W8=/\\+n/g,Y8=(e,t)=>e.replace(W8,r=>{let a=r.length-1,n="\\".repeat(Math.floor(a/2));return a%2?`${n}${t}`:`${n}n`}),q8=e=>Y8(e.replace(Fv,`
|
|
275
|
+
`),`
|
|
276
|
+
`),G8=/<\/?(?:a|abbr|b|big|cite|code|del|em|font|i|ins|kbd|mark|q|s|samp|small|span|strike|strong|sub|sup|tt|u|var)(?:\s[^<>]*)?\/?>/g,fa=e=>Em(q8(e).replace(G8,"")),Bv=async(e,t)=>{try{return await t(e)}catch(r){let a=e.replace(Fv,"\\n");if(a===e)throw r;try{return await t(a)}catch{throw r}}}});var Wv,H8,ec,yf,_1=Ge(()=>{xe();Wv=e=>e.replace(/\s*!important\s*$/i,"").trim(),H8=(e,t)=>{let r=t;for(;r<e.length&&/\s/.test(e[r]);)r+=1;let a=r;for(;r<e.length&&/[a-z-]/i.test(e[r]);)r+=1;if(r===a)return!1;for(;r<e.length&&/\s/.test(e[r]);)r+=1;return e[r]===":"},ec=e=>{let t=[],r=0;for(;r<e.length;){for(;r<e.length&&/[\s;,]/.test(e[r]);)r+=1;if(r>=e.length)break;let a=r;for(;r<e.length&&e[r]!==":"&&!(e[r]===";"||e[r]===",");)r+=1;if(r>=e.length||e[r]!==":")break;let n=e.substring(a,r).trim().toLowerCase();r+=1;let i=r,l=0,s=null;for(;r<e.length;){let c=e[r];if(s){c===s&&e[r-1]!=="\\"&&(s=null),r+=1;continue}if(c==='"'||c==="'"){s=c,r+=1;continue}if(c==="("){l+=1,r+=1;continue}if(c===")"){l=Math.max(0,l-1),r+=1;continue}if(l===0&&(c===";"||c===","||/\s/.test(c)&&H8(e,r)))break;r+=1}let o=Wv(e.substring(i,r));n&&o&&t.push({property:n,value:o}),r<e.length&&(e[r]===";"||e[r]===",")&&(r+=1)}return t},yf=e=>{let t=Wv(e);if(!t)return!1;if(typeof CSS<"u"&&typeof CSS.supports=="function")return CSS.supports("color",t);if(typeof document<"u"){let r=document.createElement("div");return r.style.color="",r.style.color=t,r.style.color!==""}return!1}});var fl,fr,U8,ul,va,j8,xf,Uv,Yv,X8,jv,Xv,V8,Ar,pi,pl,qv,bf,wf,gl,K8,Gv,I1,Hv,Z8,$f,Vv,Oa,ua,Q8,J8,Kv,e7,br,wn,gi=Ge(()=>{xe();_1();fl=e=>{let t=new DOMParser().parseFromString(e,"image/svg+xml").documentElement;if(t.tagName!=="svg")throw new Error("Pele returned an invalid SVG");return t},fr=(e,t)=>{let r=new Map;return e.querySelectorAll(t).forEach(a=>{let n=a.getAttribute("data-id");n!==null&&!r.has(n)&&r.set(n,a)}),r},U8=/translate\(\s*([^\s,)]+)(?:[\s,]+([^\s,)]+))?\s*\)/,ul=(e,t)=>{let r={x:0,y:0};for(let a=e;a&&a!==t;a=a.parentElement){let n=a.getAttribute("transform")?.match(U8);n&&(r.x+=Number(n[1])||0,r.y+=Number(n[2])||0)}return r},va=(e,t)=>Number(e.getAttribute(t))||0,j8=/[a-zA-Z]|-?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/gi,xf=e=>{let t=e.match(j8)||[],r=[],a=0,n="",i={x:0,y:0},l={x:0,y:0},s=c=>c!==void 0&&/^[a-zA-Z]$/.test(c),o=()=>Number(t[a++]);for(;a<t.length;){if(s(t[a]))n=t[a++];else if(!n||n.toUpperCase()==="Z")break;let c=n===n.toLowerCase(),h=(g,p)=>c?{x:i.x+g,y:i.y+p}:{x:g,y:p},d,f;switch(n.toUpperCase()){case"M":case"L":case"T":d=[h(o(),o())];break;case"H":{let g=o();d=[{x:c?i.x+g:g,y:i.y}];break}case"V":{let g=o();d=[{x:i.x,y:c?i.y+g:g}];break}case"C":d=[h(o(),o()),h(o(),o()),h(o(),o())];break;case"S":case"Q":d=[h(o(),o()),h(o(),o())];break;case"A":{f={rx:o(),ry:o(),rotation:o(),largeArc:o()!==0,sweep:o()!==0},d=[h(o(),o())];break}case"Z":d=[l];break;default:throw new Error(`Unsupported SVG path command "${n}"`)}if(d.some(g=>!Number.isFinite(g.x)||!Number.isFinite(g.y)))break;r.push({command:n.toUpperCase(),points:d,...f?{arc:f}:{}}),i=d[d.length-1],n.toUpperCase()==="M"&&(l=i,n=c?"l":"L")}return r},Uv=e=>{if(!e.length)return null;let t=e.map(i=>i.x),r=e.map(i=>i.y),a=Math.min(...t),n=Math.min(...r);return{x:a,y:n,width:Math.max(...t)-a,height:Math.max(...r)-n}},Yv=24,X8=(e,t,{rx:r,ry:a,rotation:n,largeArc:i,sweep:l})=>{if(!r||!a)return[];let s=n*Math.PI/180,o=Math.cos(s),c=Math.sin(s),h=(e.x-t.x)/2,d=(e.y-t.y)/2,f=o*h+c*d,g=-c*h+o*d,p=f*f/(r*r)+g*g/(a*a),m=Math.max(1,Math.sqrt(p));r=Math.abs(r)*m,a=Math.abs(a)*m;let x=(i!==l?1:-1)*Math.sqrt(Math.max(0,(r*r*a*a-r*r*g*g-a*a*f*f)/(r*r*g*g+a*a*f*f))),y=x*r*g/a,$=-x*a*f/r,k=o*y-c*$+(e.x+t.x)/2,I=c*y+o*$+(e.y+t.y)/2,_=(W,q)=>Math.atan2(q,W),L=_((f-y)/r,(g-$)/a),R=_((-f-y)/r,(-g-$)/a)-L;return l&&R<0?R+=Math.PI*2:!l&&R>0&&(R-=Math.PI*2),Array.from({length:Yv+1},(W,q)=>{let C=L+R*q/Yv;return{x:k+r*o*Math.cos(C)-a*c*Math.sin(C),y:I+r*c*Math.cos(C)+a*o*Math.sin(C)}})},jv=e=>{switch(e.tagName.toLowerCase()){case"rect":case"image":{let t=va(e,"x"),r=va(e,"y");return[{x:t,y:r},{x:t+va(e,"width"),y:r+va(e,"height")}]}case"circle":case"ellipse":{let t=va(e,"cx"),r=va(e,"cy"),a=va(e,e.hasAttribute("r")?"r":"rx"),n=va(e,e.hasAttribute("r")?"r":"ry");return[{x:t-a,y:r-n},{x:t+a,y:r+n}]}case"polygon":case"polyline":{let t=(e.getAttribute("points")||"").split(/[\s,]+/).filter(Boolean).map(Number),r=[];for(let a=0;a+1<t.length;a+=2)r.push({x:t[a],y:t[a+1]});return r}case"path":{let t={x:0,y:0};return xf(e.getAttribute("d")||"").flatMap(({points:r,arc:a})=>{let n=t;return t=r[r.length-1],a?[...X8(n,t,a),...r]:r})}default:return[]}},Xv="rect, circle, ellipse, polygon, polyline, path, image",V8=new Set(Xv.split(", ")),Ar=(e,t)=>{let a=(V8.has(e.tagName.toLowerCase())?[e]:Array.from(e.querySelectorAll(Xv))).flatMap(n=>{let i=ul(n,t);return jv(n).map(l=>({x:l.x+i.x,y:l.y+i.y}))});return Uv(a)},pi=(e,t)=>{let r=ul(e,t),a={x:0,y:0};return xf(e.getAttribute("d")||"").flatMap(({command:n,points:i})=>{let l=a;if(a=i[i.length-1],n==="Q")return i;if(n==="C"){let[s,o,c]=i;return[{x:(l.x+3*s.x+3*o.x+c.x)/8,y:(l.y+3*s.y+3*o.y+c.y)/8},c]}return[a]}).map(n=>({x:n.x+r.x,y:n.y+r.y}))},pl=(e,t=.5)=>{let r=e.filter((a,n)=>n===0||Math.hypot(a.x-e[n-1].x,a.y-e[n-1].y)>t);return r.filter((a,n)=>{if(n===0||n===r.length-1)return!0;let i=r[n-1],l=r[n+1],s=(a.x-i.x)*(l.y-i.y)-(a.y-i.y)*(l.x-i.x),o=Math.hypot(l.x-i.x,l.y-i.y);return!o||Math.abs(s)/o>t})},qv=(e,t)=>{let r=e[e.length-1],a=e[e.length-2],n=r.x-a.x,i=r.y-a.y,l=Math.hypot(n,i),s=Math.abs(n)<.5;if(l>=t||!l||!s&&Math.abs(i)>=.5)return e;let o=g=>s?(r.y-g.y)*Math.sign(i):(r.x-g.x)*Math.sign(n),c=-1;for(let g=e.length-2;g>0;g--){let p=e[g-1],m=e[g];if(Math.hypot(m.x-p.x,m.y-p.y)<t)continue;if(s?Math.abs(m.x-p.x)<.5:Math.abs(m.y-p.y)<.5){c=g;break}if(o(p)>=t+4){c=g-1;break}}if(c<0)return e;let h=o(e[c]),d=Math.min(t,h-4);if(d<=l)return e;let f=(h-d)/(h-l);return e.map((g,p)=>{if(p<=c||p===e.length-1)return g;let m=d+(o(g)-l)*f;return s?{x:g.x,y:r.y-Math.sign(i)*m}:{x:r.x-Math.sign(n)*m,y:g.y}})},bf=(e,t=30)=>e.length<3?e:qv(qv(e,t).slice().reverse(),t).reverse(),wf=(e,t=3)=>{let r=[...e];for(let a=0;a<e.length*8;a++){let n=r.slice(1).map((f,g)=>Math.hypot(f.x-r[g].x,f.y-r[g].y)),i=n.findIndex((f,g)=>g>0&&Math.min(f,n[g-1])>1&&Math.max(f,n[g-1])>t*Math.min(f,n[g-1]));if(i===-1)break;let l=n[i]>n[i-1],s=r[i],o=r[l?i+1:i-1],c=n[l?i:i-1],d=2*n[l?i-1:i]/c;r.splice(l?i+1:i,0,{x:s.x+(o.x-s.x)*d,y:s.y+(o.y-s.y)*d})}return r},gl=(e,t)=>{let r=0,a={distance:1/0,length:0};for(let n=1;n<e.length;n++){let i=e[n-1],l=e[n].x-i.x,s=e[n].y-i.y,o=Math.hypot(l,s),c=o?Math.min(1,Math.max(0,((t.x-i.x)*l+(t.y-i.y)*s)/o**2)):0,h=Math.hypot(i.x+c*l-t.x,i.y+c*s-t.y);h<a.distance&&(a={distance:h,length:r+c*o}),r+=o}return r?a.length/r:.5},K8=(e,t)=>{let r=ul(e,t),a=e.tagName.toLowerCase()==="circle";return{points:(a?[{x:va(e,"cx"),y:va(e,"cy")}]:jv(e)).map(i=>({x:i.x+r.x,y:i.y+r.y})),radius:a?va(e,"r"):0}},Gv=(e,t,r)=>{let a=Math.hypot(e.x-t.x,e.y-t.y);if(!a||!r.length)return e;let n={x:(e.x-t.x)/a,y:(e.y-t.y)/a},i=Math.max(0,...r.flatMap(({points:l,radius:s})=>l.map(o=>(o.x-e.x)*n.x+(o.y-e.y)*n.y+s)));return{x:e.x+n.x*i,y:e.y+n.y*i}},I1=(e,t,r)=>{let a=[],n=[];if(!e.length)return{startMarkers:a,endMarkers:n};let i=e[0],l=e[e.length-1];return t.forEach(s=>{let o=K8(s,r),c=Uv(o.points);if(!c)return;let h=c.x+c.width/2,d=c.y+c.height/2,f=Math.hypot(h-i.x,d-i.y),g=Math.hypot(h-l.x,d-l.y);(f<g?a:n).push(o)}),{startMarkers:a,endMarkers:n}},Hv=(e,t,r)=>{let a={x:t.x-e.x,y:t.y-e.y},n={x:r.x-t.x,y:r.y-t.y};return Math.abs(a.x*n.y-a.y*n.x)<.01*Math.hypot(a.x,a.y)&&a.x*n.x+a.y*n.y<0},Z8=e=>{let t=e;for(;t.length>2&&Hv(t[t.length-3],t[t.length-2],t.at(-1));)t=[...t.slice(0,-2),t.at(-1)];for(;t.length>2&&Hv(t[2],t[1],t[0]);)t=[t[0],...t.slice(2)];return t},$f=(e,t,r)=>{if(e.length<2||!t.length)return e;let a=Z8(e),n=a[0],i=a[a.length-1],{startMarkers:l,endMarkers:s}=I1(a,t,r),o=[...a];return o[0]=Gv(n,a[1],l),o[o.length-1]=Gv(i,a[a.length-2],s),o},Vv=e=>`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(e)))}`,Oa=(e,t,r)=>{for(let a=e;a&&a!==t;a=a.parentElement){let n=Number(a.getAttribute("font-size"));if(n)return n}return r},ua=e=>{if(!e)return[];let t=Array.from(e.querySelectorAll("tspan"));return t.length?t.reduce((r,a)=>((a.hasAttribute("y")||!r.length)&&r.push(""),r[r.length-1]+=a.textContent||"",r),[]):[e.textContent||""]},Q8=.35,J8=1.25,Kv=(e,t,r)=>{let a=ul(e,t),n=Oa(e,t,r),i=[e,...Array.from(e.querySelectorAll("tspan"))].filter(f=>f.hasAttribute("y")),l=i.map(f=>va(f,"y")),s=i.length?va(i[0],"x"):0,o=ua(e),c=l.length?(Math.min(...l)+Math.max(...l))/2-Q8*n:0,h=o.length*n*J8,d=e.getAttribute("text-anchor");return{text:o.join(`
|
|
277
|
+
`),x:s+a.x,y:c-h/2+a.y,height:h,fontSize:n,textAlign:d==="middle"?"center":d==="end"?"right":"left"}},e7=e=>!/\bvar\(/i.test(e)&&yf(e),br=(e,t)=>{let r=wn(e,t);return r&&e7(r)?r:void 0},wn=(e,t)=>ec(e?.getAttribute("style")||"").find(r=>r.property===t)?.value});var mi,Wn,Qr,kf,tn,yi,Zv,Mf,ls,vf,ml,yl=Ge(()=>{xe();gi();mi=(e,t)=>{let r=ua(t),a=n=>n.replace(/\s+/g," ").trim();return r.length>e.split(`
|
|
278
|
+
`).length&&a(r.join(" "))===a(e)?r.join(`
|
|
279
|
+
`):e},Wn=(e,t)=>(e.getAttribute("class")||"").split(/\s+/).includes(t),Qr=(e,t,r,a={})=>{let{text:n,x:i,y:l,height:s,fontSize:o,textAlign:c}=Kv(e,t,r);return{type:"text",text:n,x:i,y:l,height:s,fontSize:o,textAlign:c,color:br(e,"fill"),...a}},kf=(e,t,r={})=>({type:"line",startX:e.x,startY:e.y,endX:t.x,endY:t.y,...r}),tn=(e,t,r={})=>{let a=ul(e,t),n=[],i;return xf(e.getAttribute("d")||"").forEach(({command:l,points:s})=>{let o=s[s.length-1];l!=="M"&&i&&n.push(kf({x:i.x+a.x,y:i.y+a.y},{x:o.x+a.x,y:o.y+a.y},r)),i=o}),n},yi=(e,t)=>{let r=Array.from(e.children).find(s=>s.tagName.toLowerCase()==="path"&&!Wn(s,"pele-marker"));if(!r)return;let a=Array.from(e.querySelectorAll(".pele-marker")),n=pi(r,t),{startMarkers:i,endMarkers:l}=I1(n,a,t);return{line:r,route:pl($f(n,a,t)),hasStartMarker:i.length>0,hasEndMarker:l.length>0}},Zv=(e,t)=>Math.hypot(Math.max(t.x-e.x,0,e.x-(t.x+t.width)),Math.max(t.y-e.y,0,e.y-(t.y+t.height))),Mf=(e,t,r)=>{let a=t??r;if(!a||e.length<2)return e;let n=Zv(e[0],a),i=Zv(e[e.length-1],a);return(t?n>i:n<i)?[...e].reverse():e},ls=(e,t={})=>{let[r]=e,a=e[e.length-1];return{type:"arrow",startX:r.x,startY:r.y,endX:a.x,endY:a.y,points:e.map(n=>[n.x-r.x,n.y-r.y]),...t}},vf=(e,t,r)=>{let a=t&&Ar(t,r);return a?gl(e,{x:a.x+a.width/2,y:a.y+a.height/2}):void 0},ml=e=>({x:e.x,y:e.y,width:e.width??0,height:e.height??0})});var tA,rA,aA,nA,iA,sA,t7,r7,Qv,a7,lA,Jv,n7,i7,s7,l7,o7,c7,h7,eA,d7,oA,cA=Ge(()=>{xe();Ll();_1();dl();yl();gi();tA="rect, circle, ellipse, polygon, path",rA=5,aA=1.25,nA=e=>!/\bvar\(/i.test(e)&&yf(e),iA=e=>{let t={};return ec(e?.getAttribute("style")||"").forEach(({property:r,value:a})=>{switch(r){case Pr.FILL:case Pr.STROKE:nA(a)&&(t[r]=a);break;case Pr.STROKE_WIDTH:case Pr.STROKE_DASHARRAY:t[r]=a;break}}),t},sA=e=>{let t={};return ec(e?.getAttribute("style")||"").forEach(({property:r,value:a})=>{(r==="fill"||r===vn.COLOR)&&nA(a)&&(t[vn.COLOR]=a)}),t},t7=(e,t,r)=>{let a=Ar(t,r);if(a)return{id:e.id,type:e.type,labelType:e.labelType,text:e.type===Br.DIAMOND?fa(e.text??e.id):mi(fa(e.text??e.id),t.querySelector(".pele-label")),...a,link:t.querySelector("a[href]")?.getAttribute("href")||void 0,containerStyle:iA(t.querySelector(tA)),labelStyle:sA(t.querySelector(".pele-label"))}},r7=(e,t)=>Math.abs(t.x-(e.x+e.width/2))/(e.width/2)+Math.abs(t.y-(e.y+e.height/2))/(e.height/2),Qv=(e,t)=>Math.hypot((t.x-(e.x+e.width/2))/(e.width/2),(t.y-(e.y+e.height/2))/(e.height/2)),a7=5,lA={[Br.DIAMOND]:{ratio:2,inset:0,getDistance:r7},[Br.CIRCLE]:{ratio:Math.SQRT2,inset:0,getDistance:Qv},[Br.DOUBLECIRCLE]:{ratio:Math.SQRT2,inset:a7*2,getDistance:Qv}},Jv=4,n7=1.35,i7=.02,s7=1/4,l7=(e,t,r)=>{let a=[];for(let n of e.split(`
|
|
280
|
+
`)){let i=[],l="",s=0;for(let o of n.split(" ").filter(Boolean)){let c=l?`${l} ${o}`:o,h=r(c);if(h===null)return null;if(h<=t){l=c,s=h;continue}let d=r(o)??1/0;if(d>t)return null;l&&i.push(s),l=o,s=d}i.push(s),a.push(i)}return a},o7=(e,{fontSize:t,measureText:r})=>{if(!e.text||!r||r(e.text)===null)return e;let a=rA*2,n=t*aA,i=(h,{withoutOrphans:d=!1}={})=>{let f=Math.round(e.width*h/2)-a-1,g=Math.round(e.height*h/2)-a,p=l7(e.text,f,r);return!!p&&p.flat().length*n<=g&&(!d||p.every(m=>m.length<2||m[m.length-1]>=f*s7))},l=(h,d)=>{for(let f=1;f<=h;f+=i7)if(i(f,d))return f;return null},s=l(n7,{withoutOrphans:!0})??l(Jv)??Jv,o=e.width*s,c=e.height*s;return{...e,x:e.x-(o-e.width)/2,y:e.y-(c-e.height)/2,width:o,height:c}},c7=(e,t,r)=>{if(e.type===Br.DIAMOND)return o7(e,r);let{fontSize:a,measureText:n}=r,i=lA[e.type];if(!i||!t.length)return e;let l=t.map(g=>n?.(g)??null);if(l.some(g=>g===null))return e;let s=rA*2,o=Math.max(...l),c=t.length*a*aA,h=Math.max(e.width,e.height,i.ratio*(o+s+1)+i.inset,i.ratio*(c+s+1)+i.inset),d=h,f=h;return{...e,x:e.x-(d-e.width)/2,y:e.y-(f-e.height)/2,width:d,height:f}},h7=(e,t,r,a)=>{let n=Ar(t,a);if(!n)return;let i=Wn(t,"pele-lane")?Array.from(t.children).filter(s=>s.tagName.toLowerCase()==="rect")[1]:void 0,l=i&&Ar(i,a);return{id:e.id,nodeIds:e.nodes,text:fa(e.title),labelType:e.labelType,...n,containerStyle:iA(t.querySelector(tA)),labelStyle:sA(t.querySelector(".pele-cluster-label")||r?.querySelector(".pele-cluster-label")||null),...l?{laneHeader:{...l,vertical:l.height>=n.height-1}}:{}}},eA=(e,t)=>{let r=lA[t.type];if(!r)return e;let a=e.findIndex((o,c)=>c>0&&r.getDistance(t,o)>1.01);if(a===-1)return e;let n=e[a],i=t.x+t.width/2,l=t.y+t.height/2,s=1/r.getDistance(t,n);return[{x:i+(n.x-i)*s,y:l+(n.y-l)*s},...e.slice(a)]},d7=(e,t,r,a,n,{inSwimlanes:i=!1}={})=>{let s=Array.from(t.querySelectorAll("path")).find(m=>!m.getAttribute("class")?.includes("pele-marker"));if(!s)return;let o=$f(pi(s,a),Array.from(t.querySelectorAll(".pele-marker")),a),c=n[e.start];c&&(o=eA(o,c));let h=n[e.end];if(h&&(o=eA(o.reverse(),h).reverse()),o=pl(o),o.length<2)return;let d=i&&o.every((m,x)=>x===0||Math.abs(m.x-o[x-1].x)<.5||Math.abs(m.y-o[x-1].y)<.5),f=o[0],g=o[o.length-1],p=r&&Ar(r,a);return{id:e.id,start:e.start,end:e.end,type:e.type,text:mi(fa(e.text),r?.querySelector("text")??null),labelType:e.labelType,stroke:e.stroke,startX:f.x,startY:f.y,endX:g.x,endY:g.y,reflectionPoints:d?o:wf(o),...d?{orthogonal:d}:{},...e.text&&p?{labelPosition:gl(o,{x:p.x+p.width/2,y:p.y+p.height/2})}:{}}},oA=(e,t,r)=>{let a=fr(t,"g.pele-node[data-id]"),n=fr(t,"g.pele-edge[data-id]"),i=fr(t,"g.pele-edge-label[data-id]"),l=fr(t,"g.pele-cluster[data-id]"),s=fr(t,"g.pele-cluster-title[data-id]"),o={};e.nodes.forEach((p,m)=>{let x=a.get(m),y=x&&t7(p,x,t);y&&(o[m]=c7(y,ua(x.querySelector(".pele-label")),r))});let c=new Map;e.subgraphs.forEach(p=>p.nodes.forEach(m=>c.set(m,p.id)));let h=(p,m)=>{let x=new Set;for(let y=c.get(p);y!==void 0&&!x.has(y);y=c.get(y)){if(y===m)return!0;x.add(y)}return!1},d=e.mermaidType==="swimlane",f=e.edges.flatMap(p=>{if(h(p.start,p.end)||h(p.end,p.start))return[];let m=p.id!==void 0&&n.get(p.id),x=m&&d7(p,m,i.get(p.id)??void 0,t,o,{inSwimlanes:d});return x?[x]:[]});return{type:"flowchart",subGraphs:e.subgraphs.flatMap(p=>{let m=l.get(p.id),x=m&&h7(p,m,s.get(p.id)||null,t);return x?[x]:[]}),vertices:o,edges:f}}});var f7,hA,u7,p7,N1,dA,g7,m7,Af,y7,xl,x7,b7,w7,uA,$7,k7,fA,M7,pA,gA=Ge(()=>{xe();Ei();dl();yl();gi();f7="#999",hA="#adb5bd",u7="#e9ecef",p7="#e9ecef",N1=14,dA=28,g7=2*5+4,m7="#ffffff",Af=16,y7=1.25,xl=Ar,x7=(e,t,r)=>{let a=Ar(e,t);if(!a)return[];let{x:n,y:i,width:l,height:s}=a,o=[{x:n,y:i},{x:n+l,y:i},{x:n+l,y:i+s},{x:n,y:i+s}];return o.map((c,h)=>kf(c,o[(h+1)%o.length],r))},b7=(e,t,r)=>{let a=[];return t.querySelectorAll("g.pele-node.pele-actor[data-id]").forEach(n=>{let i=n.getAttribute("data-id"),l=Wn(n,"pele-actor-footer")?"bottom":"top",s=`${i}-${l}`,o=n.querySelector(".pele-label");if(Wn(n,"pele-actor-actor")){let f=Sr(),g=[];Array.from(n.children).forEach(p=>{let m=`${s}-${g.length}`;switch(p.tagName.toLowerCase()){case"circle":{let x=xl(p,t);x&&g.push({type:"ellipse",id:m,...x,groupId:f});break}case"path":case"line":g.push(...tn(p,t,{groupId:f}).map((x,y)=>({...x,id:`${m}-${y}`})));break;case"text":g.push(Qr(p,t,r.fontSize,{id:m,groupId:f}));break}}),a.push(g);return}let c=xl(n,t);if(!c)return;let h=n.querySelector("rect, path, polygon, circle"),d=e.actors.get(i);a.push([{type:"rectangle",id:s,...c,label:{text:mi(fa(d?.description??i),o),fontSize:o?Oa(o,t,r.fontSize):r.fontSize},bgColor:h?br(h,"fill"):void 0,strokeColor:h?br(h,"stroke"):void 0,subtype:"actor"}])}),a},w7=e=>Array.from(e.querySelectorAll("path.pele-lifeline")).flatMap(t=>{let r=pi(t,e);return r.length<2?[]:[kf(r[0],r[r.length-1],{strokeColor:f7,strokeWidth:1})]}),uA=e=>typeof e.message=="string"?fa(e.message):"",$7=(e,t,r)=>{let a=new Map(e.messages.map(s=>[`i${s.id}`,s])),n=fr(t,"g.pele-edge-label[data-id]"),i=[],l=[];return fr(t,"g.pele-edge.pele-message[data-id]").forEach((s,o)=>{let c=a.get(o),h=yi(s,t);if(!c||!h||h.route.length<2)return;let d=c.from!==void 0&&c.from===c.to&&n.get(o)?.querySelector("text");if(d){let k=Qr(d,t,r.fontSize),{height:I=0}=k,_=I*Af/k.fontSize;l.push({...k,fontSize:Af,y:k.y+(I-_)/2,height:_})}let f=d?"":uA(c),g=f?f.split(`
|
|
281
|
+
`).length*Af*y7/2:0,p=h.route.map(k=>({x:k.x,y:k.y-g})),m=ls(p,{label:f?{text:f}:void 0,strokeStyle:h.line.hasAttribute("stroke-dasharray")?"dotted":"solid",startArrowhead:h.hasStartMarker?"arrow":null,endArrowhead:h.hasEndMarker?"arrow":null}),x=s.querySelector(".pele-sequence-number"),y=x?.querySelector("rect, circle"),$=y&&Ar(y,t);if(x&&$){let k=x.textContent||"",I=dA,_=r.measureText?.(k,N1)??k.length*N1*.7,L=Math.max(dA,_+g7);m.sequenceNumber={type:"rectangle",x:$.x+$.width/2-L/2,y:$.y+$.height/2-g-I/2,width:L,height:I,label:{text:k,fontSize:N1},bgColor:p7,subtype:"sequence"}}i.push(m)}),{arrows:i,texts:l}},k7=(e,t,r)=>{let a=new Map(e.messages.map(n=>[`i${n.id}`,n]));return Array.from(fr(t,"g.pele-note[data-id]")).flatMap(([n,i])=>{let l=i.querySelector("rect"),s=l&&xl(l,t),o=a.get(n);if(!l||!s)return[];let c=i.querySelector(".pele-label");return[{type:"rectangle",...s,label:{text:o?mi(uA(o),c):c?.textContent||"",fontSize:c?Oa(c,t,r.fontSize):r.fontSize},bgColor:br(l,"fill")??m7,strokeStyle:"dashed",subtype:"note"}]})},fA=(e,t,r)=>Array.from(e.querySelectorAll(t)).flatMap(a=>{let n=xl(a,e);return n?[{type:"rectangle",...n,label:{text:"",fontSize:Af},...r==="highlight"?{bgColor:br(a,"fill"),strokeColor:"transparent"}:{},subtype:r}]:[]}),M7=(e,t)=>{let r=[],a=[],n=[],i={strokeStyle:"dotted",strokeColor:hA,strokeWidth:2};return e.querySelectorAll("g.pele-frame").forEach(l=>{let s=Array.from(l.children).find(d=>d.tagName.toLowerCase()==="rect"&&d.getAttribute("fill")==="none");s&&r.push(...x7(s,e,i)),Array.from(l.children).filter(d=>d.tagName.toLowerCase()==="path"&&d.hasAttribute("stroke-dasharray")).forEach(d=>r.push(...tn(d,e,i)));let o=l.querySelector(".pele-frame-kind"),c=o?.previousElementSibling,h=c&&xl(c,e);o&&h&&n.push({type:"rectangle",x:h.x,y:h.y,height:h.height,label:{text:o.textContent||"",fontSize:Oa(o,e,t.fontSize)},strokeColor:hA,bgColor:u7}),l.querySelectorAll(".pele-frame-label").forEach(d=>a.push(Qr(d,e,t.fontSize)))}),{lines:r,texts:a,nodes:n}},pA=(e,t,r)=>{let a=b7(e,t,r),n=Array.from(t.querySelectorAll("g.pele-box")),i=Array.from(t.querySelectorAll("path.pele-destroy")).flatMap(s=>tn(s,t)),l=$7(e,t,r);return{type:"sequence",nodes:[fA(t,"rect.pele-rect","highlight"),...a,k7(e,t,r),fA(t,"rect.pele-activation","activation"),i,l.texts],lines:w7(t),arrows:l.arrows,loops:M7(t,r),groups:e.boxes.map((s,o)=>{let c=n[o]?.querySelector("rect"),h=c&&xl(c,t);return{name:fa(s.name??""),actorKeys:s.actorKeys,fill:s.fill,...h?{bounds:h}:{}}})}}});var v7,A7,E7,S7,T7,mA,yA=Ge(()=>{xe();Ei();dl();yl();gi();v7={0:"diamond_outline",1:"triangle_outline",2:"diamond",3:"arrow",4:"circle_outline"},A7=1,E7=(e,t,r)=>{let a=e.getAttribute("data-id"),n=e.querySelector("rect"),i=n&&Ar(n,t);if(!n||!i)return;let l=Sr(),s={classId:a},o=br(n,"stroke"),c=parseFloat(wn(n,"stroke-width")||""),h=wn(n,"stroke-dasharray")?"dashed":void 0,d=e.querySelector(".pele-label"),f=Array.from(e.querySelectorAll(".pele-annotation")),g=f.length?[...f,...d?[d]:[]].map(y=>Qr(y,t,r.fontSize,{id:Sr(),groupId:l,metadata:s})):[],p={type:"rectangle",id:a,groupId:l,metadata:s,...i,label:f.length?void 0:{text:ua(d).join(`
|
|
282
|
+
`),fontSize:d?Oa(d,t,r.fontSize):r.fontSize,color:br(d,"fill"),verticalAlign:"top"},bgColor:br(n,"fill"),strokeColor:o,strokeWidth:Number.isFinite(c)?c:void 0,strokeStyle:h},m=Array.from(e.querySelectorAll(".pele-divider")).flatMap(y=>tn(y,t).map($=>({...$,id:Sr(),strokeColor:o,strokeWidth:p.strokeWidth,strokeStyle:h,groupId:l,metadata:s}))),x=[...g,...Array.from(e.querySelectorAll(".pele-member")).map(y=>Qr(y,t,r.fontSize,{id:Sr(),groupId:l,metadata:s}))];return{container:p,lines:m,text:x}},S7=(e,t,r,a)=>{let n=fr(t,"g.pele-edge-label[data-id]"),i=[],l=new Map(Array.from(fr(t,"g.pele-edge.pele-relation[data-id]")).map(([o,c])=>[o.match(/_(\d+)$/)?.[1],c]).filter(([o])=>o!==void 0));return{arrows:e.relations.flatMap((o,c)=>{let h=l.get(String(c+1)),d=h&&yi(h,t),f=r.get(o.id1),g=r.get(o.id2);if(!h||!d||d.route.length<2||!f&&!g)return[];let p=o.id1===o.id2,m=p?d.route:Mf(d.route,f&&ml(f),g&&ml(g)),x=I=>I==="none"?null:v7[I]??"arrow",y=o.title?fa(o.title):"",$=n.get(h.getAttribute("data-id")),k=p&&$?.querySelector("text");return k&&i.push(Qr(k,t,a.fontSize)),[ls(m,{label:y&&!k?{text:y,labelPosition:vf(m,$,t)}:void 0,strokeStyle:o.relation.lineType===A7?"dotted":"solid",startArrowhead:x(o.relation.type1),endArrowhead:x(o.relation.type2),...f?{start:{type:"rectangle",id:o.id1}}:{},...g?{end:{type:"rectangle",id:o.id2}}:{},...m.length>2&&!p?{roundness:null}:{}})]}),labels:i}},T7=(e,t,r)=>{let a=[],n=[],i=fr(t,"g.pele-note-edge[data-id]");return fr(t,"g.pele-node.pele-note[data-id]").forEach((l,s)=>{let o=Ar(l,t),c=e.notes.get(s);if(!o)return;let h=l.querySelector(".pele-label");a.push({type:"rectangle",id:s,...o,label:{text:c?mi(fa(c.text),h):ua(h).join(`
|
|
283
|
+
`),fontSize:h?Oa(h,t,r.fontSize):r.fontSize},strokeStyle:"dashed",subtype:"note"});let f=i.get(`edgeNote${s.replace(/^note/,"")}`)?.querySelector("path"),g=f&&pl(pi(f,t));!c?.class||!g||g.length<2||n.push(ls(g,{strokeStyle:"dotted",startArrowhead:null,endArrowhead:null,start:{type:"rectangle",id:s},end:{type:"rectangle",id:c.class}}))}),{notes:a,connectors:n}},mA=(e,t,r)=>{let a=[],n=[],i=[],l=new Map;t.querySelectorAll("g.pele-node.pele-interface .pele-label").forEach(d=>i.push(Qr(d,t,r.fontSize))),t.querySelectorAll("g.pele-node.pele-class[data-id]").forEach(d=>{let f=E7(d,t,r);f&&(a.push(f.container),n.push(...f.lines),i.push(...f.text),l.set(f.container.id,f.container))});let{arrows:s,labels:o}=S7(e,t,l,r),{notes:c,connectors:h}=T7(e,t,r);return t.querySelectorAll(".pele-cardinality").forEach(d=>i.push(Qr(d,t,r.fontSize))),i.push(...o),{type:"class",nodes:[a,c],lines:n,arrows:[...s,...h],text:i,namespaces:Array.from(e.namespaces.values()).map(d=>({id:d.id,classes:Object.fromEntries(d.classes)}))}}});var xA,C7,_7,bA,wA=Ge(()=>{xe();Ei();dl();yl();gi();xA={ONLY_ONE:"cardinality_exactly_one",ZERO_OR_ONE:"cardinality_zero_or_one",ZERO_OR_MORE:"cardinality_zero_or_many",ONE_OR_MORE:"cardinality_one_or_many",MD_PARENT:"cardinality_one"},C7=(e,t,r,a)=>{let n=Array.from(t.children).find(x=>x.tagName.toLowerCase()==="rect"),i=n&&Ar(n,r);if(!n||!i)return;let l=e.attributes.length>0,s=l?Sr():void 0,o={entityId:e.id,entityLabel:e.label,entityAlias:e.alias},c=br(n,"stroke"),h=parseFloat(wn(n,"stroke-width")||""),d=wn(n,"stroke-dasharray")?"dashed":void 0,f=Array.from(t.children).find(x=>(x.getAttribute("class")||"").includes("pele-label")),g={type:"rectangle",id:e.id,groupId:s,metadata:o,...i,label:{text:ua(f??null).join(`
|
|
284
|
+
`),fontSize:f?Oa(f,r,a.fontSize):a.fontSize,color:br(f,"fill"),textAlign:"center",verticalAlign:l?"top":"middle"},bgColor:br(n,"fill"),strokeColor:c,strokeWidth:Number.isFinite(h)?h:void 0,strokeStyle:d},p=Array.from(t.querySelectorAll(".pele-er-divider")).flatMap(x=>tn(x,r).map(y=>({...y,id:Sr(),strokeColor:c,strokeWidth:g.strokeWidth,strokeStyle:d,groupId:s,metadata:{entityId:e.id}}))),m=Array.from(t.querySelectorAll(".pele-er-attributes text")).map(x=>Qr(x,r,a.fontSize,{id:Sr(),groupId:s,metadata:{entityId:e.id}}));return{container:g,lines:p,text:m}},_7=(e,t,r,a)=>{let n=fr(t,"g.pele-edge-label[data-id]"),i=[],l=new Map(Array.from(fr(t,"g.pele-edges > g.pele-edge[data-id]")).map(([o,c])=>[o.match(/_(\d+)$/)?.[1],c]).filter(([o])=>o!==void 0));return{arrows:e.relationships.flatMap((o,c)=>{let h=l.get(String(c)),d=h&&yi(h,t),f=r.get(o.entityA),g=r.get(o.entityB);if(!h||!d||d.route.length<2||!f||!g)return[];let p=o.entityA===o.entityB,m=p?d.route:bf(Mf(d.route,ml(f),ml(g))),x=fa(o.roleA||""),y=n.get(h.getAttribute("data-id")),$=p&&y?.querySelector("text");return $&&i.push(Qr($,t,a.fontSize)),[ls(m,{label:x&&!$?{text:x,textAlign:"center",labelPosition:vf(m,y,t)}:void 0,strokeStyle:o.relSpec.relType==="NON_IDENTIFYING"?"dashed":"solid",startArrowhead:xA[o.relSpec.cardB]??null,endArrowhead:xA[o.relSpec.cardA]??null,start:{type:"rectangle",id:o.entityA},end:{type:"rectangle",id:o.entityB},...m.length>2&&!p?{roundness:null}:{}})]}),labels:i}},bA=(e,t,r)=>{let a=[],n=[],i=[],l=new Map,s=fr(t,"g.pele-node.pele-entity[data-id]");e.entities.forEach((h,d)=>{let f=s.get(d),g=f&&C7(h,f,t,r);g&&(a.push(g.container),n.push(...g.lines),i.push(...g.text),l.set(h.id,g.container))});let{arrows:o,labels:c}=_7(e,t,l,r);return{type:"erd",nodes:[a],lines:n,arrows:o,text:[...i,...c]}}});var I7,N7,L7,R7,$A,O7,kA,MA,vA=Ge(()=>{xe();Ll();yl();gi();I7=[["pele-state-start","stateStart"],["pele-state-end","stateEnd"],["pele-state-choice","choice"],["pele-state-fork","fork"],["pele-state-join","join"],["pele-note","note"]],N7=e=>{let t={},r=br(e,"fill"),a=br(e,"stroke"),n=wn(e,"stroke-width"),i=wn(e,"stroke-dasharray");return r&&(t[Pr.FILL]=r),a&&(t[Pr.STROKE]=a),n&&(t[Pr.STROKE_WIDTH]=n),i&&(t[Pr.STROKE_DASHARRAY]=i),t},L7=e=>{let t={},r=br(e,"fill");return r&&(t[vn.COLOR]=r),t},R7=(e,t)=>{let r=Array.from(e.children).find(n=>n.tagName.toLowerCase()==="path"&&!n.getAttribute("class")&&n.getAttribute("fill")==="none"),[a]=r?tn(r,t):[];return a?{startX:a.startX,startY:a.startY,endX:a.endX,endY:a.endY}:void 0},$A=(e,t,r,a)=>{let n=e.getAttribute("data-id"),i=e.querySelector("rect, circle, polygon, path"),l=Ar(e,t);if(n===null||!l)return;let s=e.querySelectorAll(".pele-state-description"),o=r?"roundedWithTitle":I7.find(([h])=>Wn(e,h))?.[1]??(s.length?"rectWithTitle":"rect"),c=e.querySelector(".pele-label, .pele-cluster-label");return{fontSize:c?Oa(c,t,a):a,id:n,shape:o,text:ua(c).join(`
|
|
285
|
+
`),description:Array.from(s).flatMap(ua),...l,containerStyle:N7(i),labelStyle:L7(c),dividerLine:o==="rectWithTitle"||o==="roundedWithTitle"?R7(e,t):void 0,isRenderable:!0}},O7=(e,t)=>{let r=t.x+t.width,a=t.y+t.height;return e.x>=t.x&&e.x<=r&&e.y>=t.y&&e.y<=a?Math.min(e.x-t.x,r-e.x,e.y-t.y,a-e.y):Math.hypot(Math.max(t.x-e.x,0,e.x-r),Math.max(t.y-e.y,0,e.y-a))},kA=(e,t)=>t.reduce((r,a)=>{let n=O7(e,a);return!r||n<r.distance-.5||n<r.distance+.5&&a.width*a.height<r.node.width*r.node.height?{node:a,distance:n}:r},void 0)?.node,MA=(e,t,r)=>{let a=Array.from(t.querySelectorAll("g.pele-cluster.pele-state-composite[data-id]")).flatMap(h=>$A(h,t,!0,r.fontSize)??[]),n=Array.from(t.querySelectorAll("g.pele-nodes > g.pele-node[data-id], g.pele-nodes > g.pele-note[data-id]")).flatMap(h=>$A(h,t,!1,r.fontSize)??[]),i=[...a,...n],l=fr(t,"g.pele-edge-label[data-id]"),s=[],o=Array.from(t.querySelectorAll("g.pele-edges > g.pele-edge[data-id]")).flatMap(h=>{let d=h.getAttribute("data-id"),f=yi(h,t);if(!f||f.route.length<2)return[];let g=bf(f.route),p=kA(g[0],i),m=kA(g[g.length-1],i);if(!p||!m)return[];let x=l.get(d)?.querySelector("text"),y=p===m;x&&y&&s.push(Qr(x,t,r.fontSize));let $=Wn(h,"pele-note-edge"),k=g[0],I=g[g.length-1],_=x&&!y?Ar(l.get(d),t):null;return[{id:d,start:p.id,end:m.id,text:x&&!y?ua(x).join(`
|
|
286
|
+
`):"",startX:k.x,startY:k.y,endX:I.x,endY:I.y,reflectionPoints:wf(g),strokeColor:br(h,"stroke"),strokeStyle:$?"dashed":void 0,isNoteEdge:$,..._?{labelPosition:gl(g,{x:_.x+_.width/2,y:_.y+_.height/2})}:{}}]}),c=Array.from(t.querySelectorAll("path.pele-divider")).flatMap(h=>tn(h,t,{strokeStyle:"dashed"}));return{type:"state",nodes:i,edges:o,lines:c,texts:s}}});var EA,bl,AA,Sf,Ef,SA,L1,D7,tc,P7,z7,F7,B7,TA,CA=Ge(()=>{xe();zv();Mn();dl();cA();gA();yA();wA();vA();gi();EA="Excalifont, Xiaolai, sans-serif, Segoe UI Emoji",AA=(e,t)=>{if(bl===void 0)try{bl=typeof OffscreenCanvas<"u"?new OffscreenCanvas(1,1).getContext("2d"):typeof document<"u"?document.createElement("canvas").getContext("2d"):null}catch{bl=null}return bl?(bl.font=`${t}px ${EA}`,bl.measureText(e).width):null},Sf=1.5,Ef=(e,t)=>({nodeSpacing:e*Sf,rankSpacing:t*Sf}),SA=e=>({flowchart:{curve:e.curve??_c.flowchart.curve,...Ef(40,48)},class:Ef(40,56),er:Ef(48,64),state:Ef(40,44),sequence:{actorMargin:40*Sf,messageMargin:35*Sf}}),L1=e=>({fontSize:e.fontSize??20,responsive:!1,autoDirection:!1,config:SA(e)}),D7=new Set(["flowchart","sequence","class","er","state"]),tc=(e,t)=>D7.has(e.type)?{...L1(t),fontFamily:EA}:L1(t),P7=(e,t)=>{if(!(e instanceof Ke)||e.code!=="syntax"||e.snippet.split(`
|
|
287
|
+
`)[0].trim())return e;let r=t.split(/\r?\n/),a=r.length-1;for(;a>=0&&!r[a].trim();)a--;let n=e.line-1-(r.length-1-a);if(a<0||n<1)return e;let i=r[a],l=`${i}
|
|
288
|
+
${"-".repeat(i.length)}^`;return e.message=e.message.replace(`on line ${e.line}`,`on line ${n}`).replace(e.snippet,l),e.line=n,e.column=i.length+1,e.snippet=l,e},z7=async e=>{let t=null;try{t=vu(e)}catch{}await Pv(t)},F7=async(e,t)=>{try{return await z7(e),await Bv(e,async r=>Au(r,{limit:t.maxTextSize??_c.maxTextSize,maxEdges:t.maxEdges??_c.maxEdges,config:SA(t)}))}catch(r){throw P7(r,e)}},B7=(e,t)=>{let{svg:r,width:a,height:n}=jn(e,L1(t));return{type:"graphImage",mimeType:"image/svg+xml",dataURL:Vv(r),width:a,height:n}},TA=async(e,t={})=>{let r=await F7(e,t);try{switch(r.type){case"flowchart":{let{svg:a}=jn(r,tc(r,t)),n=t.fontSize??20;return oA(r,fl(a),{fontSize:n,measureText:i=>AA(i,n)})}case"sequence":{let{svg:a}=jn(r,tc(r,t));return pA(r,fl(a),{fontSize:t.fontSize??20,measureText:AA})}case"class":{let{svg:a}=jn(r,tc(r,t));return mA(r,fl(a),{fontSize:t.fontSize??20})}case"er":{let{svg:a}=jn(r,tc(r,t));return bA(r,fl(a),{fontSize:t.fontSize??20})}case"state":{let{svg:a}=jn(r,tc(r,t));return MA(r,fl(a),{fontSize:t.fontSize??20})}}}catch(a){console.error("Error processing Pele diagram:",a)}return B7(r,t)}});var _A,IA=Ge(()=>{xe();Mn();CA();_A=(e,t={})=>TA(e,{fontSize:parseInt(t.themeVariables?.fontSize??"")||20,maxEdges:t.maxEdges,maxTextSize:t.maxTextSize,curve:t.flowchart?.curve})});var NA,LA=Ge(()=>{xe();Mn();Cm();IA();NA=async(e,t)=>{let r=parseInt(t?.themeVariables?.fontSize??"")||20,a=await _A(e,t);return Tm(a,{fontSize:r})}});function zA(e){return e.replace(PA,"").split(/\r?\n/).map(r=>r.trim()).find(r=>r&&!r.startsWith("%%"))?.split(/\s+/)[0]??""}function Y7(e){let t=new Map,r,a=0,n={},i=W7[DA[zA(e)]??"flowchart"],l=e.match(PA);l&&(r=l[1].match(/^\s*title:\s*(.+)$/m)?.[1]?.trim());for(let s of e.slice(l?.[0].length??0).split(/\r?\n/)){let o=s.trim(),c=o.match(/^%%\s*([#>]|title\b)\s*(.*)$/);if(c){c[1]==="#"?n.chapter=c[2].trim():c[1]===">"?n.say=c[2].trim():r=c[2].trim();continue}if(o.startsWith("%%"))continue;let h=(o.match(i)??[]).length;h&&(n.chapter||n.say)&&(t.set(a,n),n={}),a+=h}return{notes:t,title:r}}function q7(e){let t=new Map,r=e.replace(/^---\s*\n[\s\S]*?\n---[^\n]*\n?/,"").split(/\r?\n/).filter(n=>!n.trim().startsWith("%%")).join(`
|
|
289
|
+
`),a=/(?:^|[\s&;>|])([A-Za-z0-9_][\w-]*)\s*(@\{[^}]*\}|\(\(\(|\(\[|\[\(|\[\[|\(\(|\{\{|\[\/|\[\\|>|\(|\[|\{)/gm;for(let n of r.matchAll(a)){let[,i,l]=n;if(/^(flowchart|graph|subgraph|end|click|style|classDef|class|linkStyle|direction)$/.test(i))continue;let s;if(l.startsWith("@"))s=FA[l.match(/shape:\s*([\w-]+)/)?.[1]??""];else if(l==="[/"||l==="[\\"){let c=r.slice((n.index??0)+n[0].length).match(/([/\\])\]/)?.[1];s=l==="[/"?c==="\\"?"trap-b":"lean-r":c==="/"?"trap-t":"lean-l"}else s={"(((":"double","([":"stadium","[(":"cylinder","[[":"subroutine","((":"circle","{{":"hexagon",">":"flag","(":"rounded","[":"rect","{":"diamond"}[l];s&&t.set(i,s)}return t}function G7(e,t,r,a,n){let[i,l,s]=[t+a,r+n,r+n/2],o=(d,f,g,p,m,x,y=7)=>Array.from({length:y+1},($,k)=>{let I=(m+(x-m)*k/y)*Math.PI/180;return[_t(d+g*Math.cos(I)),_t(f+p*Math.sin(I))]}),c=[[t,r],[i,r],[i,l],[t,l]],h=Math.min(n*.35,a*.2);switch(e){case"stadium":{let d=n/2;return{outline:[...o(t+d,s,d,d,90,270),...o(i-d,s,d,d,-90,90)],inner:[]}}case"rounded":{let d=Math.min(n,a)*.22;return{outline:[...o(t+d,r+d,d,d,180,270,3),...o(i-d,r+d,d,d,270,360,3),...o(i-d,l-d,d,d,0,90,3),...o(t+d,l-d,d,d,90,180,3)],inner:[]}}case"cylinder":{let d=Math.min(n*.14,12);return{outline:[...o(t+a/2,l-d,a/2,d,180,0,9),...o(t+a/2,r+d,a/2,d,0,-180,9)],inner:[o(t+a/2,r+d,a/2,d,180,0,9)]}}case"hexagon":return{outline:[[t+h,r],[i-h,r],[i,s],[i-h,l],[t+h,l],[t,s]],inner:[]};case"lean-r":return{outline:[[t+h,r],[i,r],[i-h,l],[t,l]],inner:[]};case"lean-l":return{outline:[[t,r],[i-h,r],[i,l],[t+h,l]],inner:[]};case"trap-b":return{outline:[[t+h,r],[i-h,r],[i,l],[t,l]],inner:[]};case"trap-t":return{outline:[[t,r],[i,r],[i-h,l],[t+h,l]],inner:[]};case"flag":return{outline:[[t,r],[i,r],[i,l],[t,l],[t+n/3,s]],inner:[]};case"subroutine":{let d=Math.min(10,a*.08);return{outline:c,inner:[[[t+d,r],[t+d,l]],[[i-d,r],[i-d,l]]]}}case"diamond":return{outline:[[t+a/2,r],[i,s],[t+a/2,l],[t,s]],inner:[]};default:return{outline:c,inner:[]}}}async function BA(e,t,r={}){let a=zA(e),n=DA[a],i=()=>new Error(`chalk-talk draws Mermaid flowchart, sequence, class, state and ER diagrams; not \xAB${a}\xBB yet.`);if(!n)throw i();let l=(await t(e)).elements;if(l.some(D=>D.type==="image"))throw i();let{notes:s,title:o}=Y7(e),c=n==="flowchart"?q7(e):new Map,h=l.filter(D=>D.type==="arrow"),d=new Map(l.filter(D=>D.id?.endsWith("__title")).map(D=>[D.id.slice(0,-7),os(D)])),f=l.filter(D=>D.type!=="arrow"&&!D.id?.endsWith("__title")),g=f.filter(D=>D.type==="rectangle"||D.type==="ellipse"||D.type==="diamond");if(!g.length)throw new Error("This Mermaid diagram has no shapes chalk-talk can draw.");let p=D=>D.points?.length?D.points.map(z=>[D.x+z[0],D.y+z[1]]):[[D.x,D.y],[D.x+(D.width??0),D.y+(D.height??0)]],m=[...f,...h].flatMap(p),x=m.map(D=>D[0]),y=m.map(D=>D[1]),[$,k,I,_]=[Math.min(...x),Math.max(...x),Math.min(...y),Math.max(...y)],L=o?100:50,R=Math.min((R1-120)/Math.max(1,k-$),(720-L-50)/Math.max(1,_-I),2.4),W=Math.round(Math.max(300,Math.min(720,(_-I)*R+L+50))),q=(R1-(k-$)*R)/2-$*R,C=(D,z)=>[_t(q+D*R),_t(L+(z-I)*R)],K=Math.round(Math.max(18,Math.min(30,15*R))),Q=D=>D.strokeStyle==="dashed"||D.strokeStyle==="dotted"?{style:{dashed:!0}}:{},G=[];o&&G.push({type:"text",at:[40,60],text:o,size:36});let Y=new Set,N=g.filter(D=>D.id&&d.has(D.id)),S=D=>{let[z,H]=C(D.x,D.y),[P,O]=[_t((D.width??0)*R),_t((D.height??0)*R)],F=D.id?{id:OA(D.id)}:{},U=os(D),j=D.id&&c.get(D.id)||(D.type==="ellipse"?"circle":D.type==="diamond"?"diamond":"rect"),J=(se,ce={})=>({type:"ellipse",center:[_t(z+P/2),_t(H+O/2)],rx:_t(P/2-se),ry:_t(O/2-se),...ce}),Z;if(P<2||O<2)Z=[];else if(j==="circle")Z=[J(0,{...F,...Q(D)})];else if(j==="double")Z=[J(0,F),J(Math.min(5,P/8))];else{let{outline:se,inner:ce}=G7(j,z,H,P,O),ae=se.map(([ee,re])=>[_t(ee),_t(re)]),ie=ee=>ee.map(([re,fe])=>[_t(re),_t(fe)]);Z=[RA.has(j)?{type:"curve",points:[...ae,ae[0]],...F}:{type:"polygon",points:ae,...F,...Q(D)},...ce.map(ee=>RA.has(j)?{type:"curve",points:ie(ee)}:{type:"polyline",points:ie(ee)})]}if(!U)return Z;let B=j==="cylinder"?Math.min(O*.14,12)/2:0;if(!Z.length)return[{type:"text",at:[_t(z+6),_t(H+K*.9)],text:U,size:Math.round(K*.75),anchor:"start"}];let X=K,te=typeof D.label=="object"&&D.label.verticalAlign==="top"?H+6*R+X*.9:H+O/2+B+X*.35;return[...Z,{type:"text",at:[_t(z+P/2),_t(te)],text:U,size:X,anchor:"middle"}]},M=D=>{let z=(D.points??[]).map(U=>C(D.x+U[0],D.y+U[1]));if(z.length<2)return[];let H=U=>U?.startsWith("cardinality_")?H7[U]??"":void 0;if(H(D.startArrowhead)!==void 0||H(D.endArrowhead)!==void 0){let U=Math.round(K*.75),j=(J,Z,B)=>{if(!B)return[];let[X,te]=[Z[0]-J[0],Z[1]-J[1]],se=Math.hypot(X,te)||1,[ce,ae]=[X/se,te/se],[ie,ee]=[ae,-ce],re=Math.abs(ie)<.3?"middle":ie>0?"start":"end";return[{type:"text",at:[_t(J[0]+ce*U*1.3+ie*U*.5),_t(J[1]+ae*U*1.3+ee*U*.9+U*.35)],text:B,size:U,anchor:re}]};return[{type:"polyline",points:z,...Q(D)},...j(z[0],z[1],H(D.startArrowhead)??""),...j(z[z.length-1],z[z.length-2],H(D.endArrowhead)??""),...b(z,os(D))]}let P=D.endArrowhead===void 0?"arrow":D.endArrowhead;!P&&D.startArrowhead&&(z=[...z].reverse());let O=[];return!!(P||D.startArrowhead)?(z.length>2&&O.push({type:"polyline",points:z.slice(0,-1),...Q(D)}),O.push({type:"arrow",from:z[z.length-2],to:z[z.length-1],...Q(D)})):O.push({type:"polyline",points:z,...Q(D)}),[...O,...b(z,os(D))]},b=(D,z)=>{let H=[];if(z){let P=Math.round(K*.8),O=X=>{let[te,se]=[Math.abs(D[X+1][0]-D[X][0]),Math.abs(D[X+1][1]-D[X][1])];return Math.hypot(te,se)*(Math.min(te,se)<2?2:1)},F=0;for(let X=1;X<D.length-1;X++)O(X)>O(F)&&(F=X);let[U,j]=[D[F],D[F+1]],[J,Z]=[(U[0]+j[0])/2,(U[1]+j[1])/2],B=Math.abs(j[0]-U[0])>=Math.abs(j[1]-U[1]);H.push(B?{type:"text",at:[_t(J),_t(Z-P*.55)],text:z,size:P,anchor:"middle"}:{type:"text",at:[_t(J+P*.5),_t(Z+P*.35)],text:z,size:P,anchor:"start"})}return H},E=D=>{if(!D||Y.has(D))return[];if(Y.add(D),D.type==="arrow")return M(D);if(D.type==="line"){let O=(D.points??[]).map(F=>C(D.x+F[0],D.y+F[1]));return O.length>=2?[{type:"polyline",points:O,...Q(D)}]:[]}if(D.type==="text"){let O=D.text??os(D);if(!O.trim())return[];let F=Math.round(Math.max(14,Math.min(K,(D.fontSize??16)*R*.95))),[U,j]=C(D.x,D.y),J=(D.width??0)*R,[Z,B]=D.textAlign==="left"?[U,"start"]:D.textAlign==="right"?[U+J,"end"]:[U+J/2,"middle"];return[{type:"text",at:[_t(Z),_t(j+(D.height??0)*R/2+F*.35)],text:O,size:F,anchor:B}]}let z=S(D),[H,P]=[D.x+(D.width??0),D.y+(D.height??0)];for(let O of f){if(Y.has(O)||O.type!=="line"&&O.type!=="text")continue;p(O).every(([U,j])=>U>=D.x-1&&U<=H+1&&j>=D.y-1&&j<=P+1)&&z.push(...E(O))}return z},w=D=>D?g.find(z=>z.id===D):void 0;for(let D of N){let[z,H]=C(D.x,D.y),[P,O]=[_t((D.width??0)*R),_t((D.height??0)*R)];Y.add(D),G.push({type:"polygon",points:[[z,H],[_t(z+P),H],[_t(z+P),_t(H+O)],[z,_t(H+O)]],id:OA(D.id),style:{dashed:!0,color:"#8C8578"}}),d.get(D.id)&&G.push({type:"text",at:[_t(z+10),_t(H+K+6)],text:d.get(D.id),size:Math.round(K*.85),style:{color:"#5E5A52"}})}let T=G.length,A=(D,z)=>{let H=s.get(z);H&&D.length&&Object.assign(D[0],H.chapter?{chapter:H.chapter}:{},H.say?{say:H.say}:{}),G.push(...D)};if(n==="sequence"){let D=g.filter(Z=>((Z.width??0)*R<2||(Z.height??0)*R<2)&&os(Z)).flatMap(S),H=[...h.flatMap(Z=>b((Z.points??[]).map(B=>C(Z.x+B[0],Z.y+B[1])),os(Z))),...D].map(Z=>{let[B,X]=Z.at,[te,se]=[Z.size,String(Z.text).length],ce=se*te*.48,ae=Z.anchor==="middle"?B-ce/2:Z.anchor==="end"?B-ce:B;return{x0:ae-4,x1:ae+ce+4,y0:X-te*.9,y1:X+te*.3}}),P=h.map(Z=>C(Z.x,Z.y)[1]).sort((Z,B)=>Z-B),O=[];for(let Z of f.filter(B=>B.type==="line"&&(B.points?.length??0)===2&&Math.abs(B.width??0)<1)){let[[B,X],[,te]]=(Z.points??[]).map(ee=>C(Z.x+ee[0],Z.y+ee[1]));Y.add(Z);let[se,ce]=[Math.min(X,te),Math.max(X,te)],ae=H.filter(ee=>B>ee.x0&&B<ee.x1).map(ee=>[ee.y0,ee.y1]).sort((ee,re)=>ee[0]-re[0]),ie=[se,...P.filter(ee=>ee>se+1&&ee<ce-1),ce];for(let ee=0;ee<ie.length-1;ee++){let re=[],fe=ie[ee];for(let[ye,oe]of ae)oe<=fe||ye>=ie[ee+1]||(ye>fe&&re.push([fe,ye]),fe=Math.max(fe,oe));fe<ie[ee+1]&&re.push([fe,ie[ee+1]]),O.push({y:ie[ee],steps:re.map(([ye,oe])=>({type:"polyline",points:[[_t(B),_t(ye)],[_t(B),_t(oe)]],...Q(Z)}))})}}let F=Z=>C(0,Math.min(Z.y,Z.y+(Z.height??0)))[1],U=[...[...f,...h].filter(Z=>!Y.has(Z)).map(Z=>({y:F(Z),x:Z.x,element:Z})),...O.map(Z=>({y:Z.y+.01,x:0,steps:Z.steps}))].sort((Z,B)=>Z.y-B.y||Z.x-B.x),j=0,J=T;for(let Z of U){if(Z.steps){G.push(...Z.steps);continue}let B=Z.element;if(Y.has(B))continue;if(B.type!=="arrow"){G.push(...E(B));continue}let X=E(B),te=s.get(j++),se=G.length>J?G[J]:X[0];te&&se&&Object.assign(se,te.chapter?{chapter:te.chapter}:{},te.say?{say:te.say}:{}),G.push(...X),J=G.length}}else{h.forEach((D,z)=>A([...E(w(D.start?.id)),...E(D),...E(w(D.end?.id))],z));for(let D of g)G.push(...E(D));for(let D of[...f].sort((z,H)=>z.y-H.y))G.push(...E(D))}let v=G.findIndex(D=>D.chapter);if(v>0&&v===T){let{chapter:D,say:z}=G[v];Object.assign(G[0],{chapter:D},z?{say:z}:{}),delete G[v].chapter,delete G[v].say}return{id:(o??"mermaid").toLowerCase().normalize("NFD").replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,60)||"mermaid",title:o??"Mermaid",width:R1,height:W,background:"plain",...r.locale?{locale:r.locale}:{},steps:G}}var DA,PA,R1,W7,FA,RA,H7,os,OA,_t,WA=Ge(()=>{xe();DA={flowchart:"flowchart",graph:"flowchart",sequenceDiagram:"sequence",classDiagram:"class",stateDiagram:"state","stateDiagram-v2":"state",erDiagram:"er"},PA=/^---\s*\n([\s\S]*?)\n---[^\n]*\n?/;R1=900,W7={flowchart:/(<?-->|<?==>|<?-\.->|---|-\.-|===|~~~|--[ox]|<-->)/g,sequence:/<{0,2}-{1,2}(?:>>|>|x|\))/g,class:/(<\|--|--\|>|<\|\.\.|\.\.\|>|\*--|--\*|o--|--o|<--|-->|<\.\.|\.\.>|--|\.\.)/g,state:/-->/g,er:/[|}o]{1,2}(?:--|\.\.)[|{o]{1,2}/g};FA={};for(let[e,t]of Object.entries({rect:"rect proc process rectangle",rounded:"rounded event",stadium:"stadium pill terminal",cylinder:"cyl cylinder db database",circle:"circle circ",double:"dbl-circ double-circle",diamond:"diam diamond decision question",hexagon:"hex hexagon prepare","lean-r":"lean-r lean-right in-out","lean-l":"lean-l lean-left out-in","trap-b":"trap-b trapezoid priority","trap-t":"trap-t inv-trapezoid manual",flag:"odd asymmetric flag",subroutine:"fr-rect subproc subprocess subroutine framed-rectangle"}))for(let r of t.split(" "))FA[r]=e;RA=new Set(["stadium","rounded","cylinder"]);H7={cardinality_exactly_one:"1",cardinality_one_or_many:"1..n",cardinality_zero_or_many:"0..n",cardinality_zero_or_one:"0..1",cardinality_many:"n",cardinality_one:"1"},os=e=>(typeof e.label=="string"?e.label:e.label?.text)??"",OA=e=>/^[A-Za-z_][\w-]*$/.test(e)?e:`n_${e.replace(/[^\w-]/g,"_")}`,_t=e=>Math.round(e*10)/10});var YA={};Rt(YA,{readMermaid:()=>U7});async function U7(e,t={}){return hc(await BA(e,NA,t))}var qA=Ge(()=>{"use strict";xe();LA();WA();ds()});xe();xe();xe();ds();lc();xe();var Bt=class extends Error{constructor(r,a){super(`line ${r}: ${a}`);le(this,"line");this.line=r}};function cE(e,t){let r=[],a="",n=!1;for(let i=0;i<e.length;i++){let l=e[i];if(l==="\\"&&n&&i+1<e.length){a+=l+e[++i];continue}l==='"'&&(n=!n),/\s/.test(l)&&!n?(a&&r.push(a),a=""):a+=l}if(n)throw new Bt(t,"a quote is not closed.");return a&&r.push(a),r}function hE(e){let t={no:0,indent:-1,tokens:[],children:[]},r=[t];return e.split(/\r?\n/).forEach((a,n)=>{let i=n+1;if(!a.trim()||a.trim().startsWith("//"))return;let l=a.length-a.trimStart().length,s=a.trim(),o=s.startsWith("#")?["#",s.slice(1).trim()]:s.startsWith(">")?[">",s.slice(1).trim()]:s.startsWith("json ")?["json",s.slice(5).trim()]:s.startsWith("|")?["|",s]:cE(s,i),c={no:i,indent:l,tokens:o,children:[]};for(;r.length>1&&r[r.length-1].indent>=l;)r.pop();r[r.length-1].children.push(c),r.push(c)}),t.children}var Ea=e=>e.length>=2&&e.startsWith('"')&&e.endsWith('"'),wr=e=>Ea(e)?e.slice(1,-1).replace(/\\(.)/g,"$1"):e,Nf=/^-?\d+(\.\d+)?$/;function ma(e,t){if(Nf.test(e))return Number(e);if(Ea(e))return wr(e);if(/^[A-Za-z_][A-Za-z_0-9]*$/.test(e))return e;throw new Bt(t,`expected a number or an expression in quotes, got ${e}.`)}function wi(e){let t=[],r="",a=!1;for(let n of e)n==='"'&&(a=!a),n===","&&!a?(t.push(r),r=""):r+=n;return t.push(r),t}function bi(e,t){let r=e?wi(e):[];if(r.length!==2)throw new Bt(t,`expected a point x,y, got ${e??"nothing"}.`);return[ma(r[0],t),ma(r[1],t)]}function dc(e,t){let r=e?.match(/^(.+?)\.\.(.+)$/);if(!r)throw new Bt(t,`expected a range a..b, got ${e??"nothing"}.`);return[ma(r[1],t),ma(r[2],t)]}var dE=new Set(["text","card","line","arrow","highlight","polyline","polygon","curve","circle","ellipse","plot","pause","row","column","grid","repeat","when","move","counter","axis","timeline","brace","note","table","bars","json"]),If={"right-of":"right","left-of":"left",above:"above",below:"below"},fE=["color","fill","roughness","bowing","fillStyle","opacity"],V1=new Set(["gap","size","r","rx","ry","w","h","columns","ms","thickness"]),K1=new Set(["dashed","flip","noheader"]);function Er(e,t,r){let a={};for(let n=0;n<e.length;n++){let i=e[n],l,s;if(K1.has(i)){i==="dashed"?a.dashed=!0:i==="flip"?t.flip=!0:t.header=!1;continue}let o=i.indexOf("=");if(o>0&&!Ea(i))[l,s]=[i.slice(0,o),i.slice(o+1)];else if(V1.has(i)&&n+1<e.length)[l,s]=[i,e[++n]];else throw new Bt(r,`did not understand \xAB${i}\xBB.`);l==="stroke"?a.width=Number(s):fE.includes(l)?a[l]=Nf.test(s)?Number(s):wr(s):l==="nudge"?t.nudge=bi(s,r).map(Number):l==="ticks"?t.ticks=s.includes(",")?wi(s).map(Number):Number(s):l==="labels"?t.labels=wi(s).map(wr):l==="id"||l==="anchor"||l==="font"||l==="mood"||l==="along"||l==="side"||l==="kind"||l==="var"||l==="align"||l==="label"||l==="format"||l==="fn"?t[l]=wr(s):t[l]=ma(s,r)}return Object.keys(a).length&&(t.style=a),t}function Yn(e,t,r,a){let[n,i]=e;if(n==="at")return t[r]=bi(i,a),e.slice(2);if(n in If){if(!i||Ea(i))throw new Bt(a,`${n} needs the id of an earlier step.`);t.place={to:i,side:If[n]};let l=e.slice(2);if(l[0]==="gap"||l[0]?.startsWith("gap=")){let o=l[0]==="gap"?l[1]:l[0].slice(4);t.place.gap=Number(o),l=l.slice(l[0]==="gap"?2:1)}let s=l.findIndex(o=>o.startsWith("align="));return s>=0&&(t.place.align=l[s].slice(6),l=l.filter((o,c)=>c!==s)),l}return e}function fc(e,t){let{no:r,tokens:a}=e,[n,...i]=a,l=()=>e.children.map(c=>fc(c,t)),s=(c,h)=>{if(!c||!Ea(c))throw new Bt(r,`${n} needs ${h} in quotes.`);return wr(c)},o=c=>{if(i[1]!=="->")throw new Bt(r,`write ${c} x,y -> x,y.`);return{type:c,from:bi(i[0],r),to:bi(i[2],r)}};if(n==="json")try{return JSON.parse(i[0])}catch{throw new Bt(r,"the JSON on this line is not valid.")}if(i[0]==="->"&&!dE.has(n)&&!t.has(n)){let c={type:"link",from:n,to:i[1]},h=i.slice(2);return h[0]&&Ea(h[0])&&([c.label,h]=[wr(h[0]),h.slice(1)]),Er(h,c,r)}if(i[0]==="says"||i[0]==="thinks"){let c={type:"balloon",to:n,text:s(i[1],"what is said"),...i[0]==="thinks"?{kind:"thought"}:{}};return Er(i.slice(2),c,r)}if(t.has(n)){let c={type:"prop",name:n},h=i,d=h[0];return d&&!Ea(d)&&!d.includes("=")&&d!=="at"&&!(d in If)&&!V1.has(d)&&!K1.has(d)&&([c.id,h]=[d,h.slice(1)]),h=Yn(h,c,"at",r),h[0]&&Ea(h[0])&&([c.label,h]=[wr(h[0]),h.slice(1)]),Er(h,c,r)}switch(n){case"text":{let c={type:"text",text:s(i[0],"its text")};return Er(Yn(i.slice(1),c,"at",r),c,r)}case"card":{let c={type:"card"},h=Yn(i,c,"at",r),d=h.filter(Ea).map(wr);if(h=h.filter(f=>!Ea(f)),!d.length)throw new Bt(r,"a card needs a title in quotes.");return[c.title]=d,d.length>1&&(c.lines=d.slice(1)),Er(h,c,r)}case"line":case"arrow":case"highlight":return Er(i.slice(3),o(n),r);case"brace":{let c=o("brace"),h=i.slice(3);return h[0]&&Ea(h[0])&&([c.label,h]=[wr(h[0]),h.slice(1)]),Er(h,c,r)}case"polyline":case"polygon":case"curve":{let c=i.filter(h=>/,/.test(h)&&!h.includes("="));return Er(i.slice(c.length),{type:n,points:c.map(h=>bi(h,r))},r)}case"circle":case"ellipse":{let c={type:n};return Er(Yn(i,c,"center",r),c,r)}case"plot":{let c={type:"plot",fn:s(i[0],"the formula")},h=[];for(let d=1;d<i.length;d++)if(i[d]==="domain")c.domain=dc(i[++d],r);else if(i[d]==="range")c.range=dc(i[++d],r);else if(i[d]==="box"){let f=wi(i[++d]??"");if(f.length!==4)throw new Bt(r,"write box x,y,w,h.");let[g,p,m,x]=f.map(y=>ma(y,r));c.box={x:g,y:p,w:m,h:x}}else h.push(i[d]);return Er(h,c,r)}case"pause":{let c={type:"pause",ms:600},h=i;return h[0]&&Nf.test(h[0])&&([c.ms,h]=[Number(h[0]),h.slice(1)]),h[0]==="ask"&&([c.ask,h]=[s(h[1],"the question"),h.slice(2)]),Er(h,c,r)}case"row":case"column":case"grid":{let c={type:n},h=Yn(i,c,"at",r);return Er(h,c,r),c.steps=l(),c}case"repeat":{let c=i[0]?.replace(/:$/,"");if(!c)throw new Bt(r,"write repeat n: <step>.");let h={type:"repeat",times:ma(c,r)},d=i.slice(1);if(d.length)h.step=fc({...e,tokens:d,children:[]},t);else if(e.children.length===1)[h.step]=l();else throw new Bt(r,"a repeat holds one step: on the same line after \xAB:\xBB, or one line under it.");return h}case"when":{let c=i[0]?.replace(/:$/,"");if(!c)throw new Bt(r,"write when <condition>:.");let h=i.slice(1);return{type:"when",if:ma(c,r),steps:h.length?[fc({...e,tokens:h,children:[]},t)]:l()}}case"move":{if(i[1]!=="to")throw new Bt(r,"write move <id> to x,y.");return Er(i.slice(3),{type:"move",target:i[0],to:bi(i[2],r)},r)}case"counter":{let c={type:"counter"},h=Yn(i,c,"at",r);return c.value=ma(h[0]??"",r),h=h.slice(1),h[0]&&Ea(h[0])&&([c.format,h]=[wr(h[0]),h.slice(1)]),Er(h,c,r)}case"axis":case"timeline":{let c=o(n),h=i.slice(3);if(h[0]!=="domain")throw new Bt(r,`write ${n} x,y -> x,y domain a..b.`);return c.domain=dc(h[1],r),h=h.slice(2),n==="timeline"&&(c.marks=e.children.map(d=>{let[f,g,p,m]=d.tokens;if(f!=="mark")throw new Bt(d.no,'under a timeline, write mark <when> "label" "text".');return{at:ma(g??"",d.no),...p?{label:wr(p)}:{},...m?{text:wr(m)}:{}}})),Er(h,c,r)}case"note":{let c={type:"note"},h=Yn(i,c,"at",r);if(c.text=s(h[0],"its text"),h[1]!=="->")throw new Bt(r,'write note at x,y "text" -> <id or x,y>.');let d=h[2]??"";return/,/.test(d)?c.point=bi(d,r):c.to=d,h=h.slice(3),Er(h,c,r)}case"table":{let c={type:"table"};return Er(Yn(i,c,"at",r),c,r),c.rows=e.children.map(h=>{if(h.tokens[0]!=="|")throw new Bt(h.no,"under a table, write rows as | a | b |.");return h.tokens[1].replace(/^\||\|$/g,"").split("|").map(d=>d.trim())}),c}case"bars":{let c={type:"bars"},h=[];for(let d=0;d<i.length;d++)if(i[d]==="box"){let f=wi(i[++d]??"");if(f.length!==4)throw new Bt(r,"write box x,y,w,h.");let[g,p,m,x]=f.map(y=>ma(y,r));c.box={x:g,y:p,w:m,h:x}}else i[d]==="values"?c.values=wi(i[++d]??"").map(f=>ma(f,r)):i[d]==="labels"?c.labels=wi(i[++d]??"").map(wr):h.push(i[d]);return Er(h,c,r)}}throw new Bt(r,`\xAB${n}\xBB is not a step, a prop or an id followed by -> / says.`)}function Z1(e,t){let r=new Set(t),a={id:"lesson",title:"",width:900,height:560},n=[],i,l;for(let s of hE(e)){let{no:o,tokens:c}=s,[h,...d]=c,f=m=>{if(!d[0])throw new Bt(o,`${h} needs ${m}.`);return wr(d.join(" "))};switch(!["->","says","thinks"].includes(d[0])?h:""){case"#":i=d[0];continue;case">":l=d[0];continue;case"title":a.title=f("a title");continue;case"id":a.id=f("an id");continue;case"category":a.category=f("a category");continue;case"theme":a.theme=f("paper or chalkboard");continue;case"locale":a.locale=f("a language tag");continue;case"background":a.background=f("dots, grid or plain");continue;case"size":{let m=d[0]?.match(/^(\d+)x(\d+)$/);if(!m)throw new Bt(o,"write size 900x560.");[a.width,a.height]=[Number(m[1]),Number(m[2])];continue}case"param":{let[m,x,y,...$]=d,[k,I]=dc(y,o).map(Number),_={label:wr(x??""),min:k,max:I,step:1,value:k};for(let L=0;L<$.length;L++)if($[L].startsWith("step="))_.step=Number($[L].slice(5));else if($[L]==="=")_.value=Number($[++L]);else throw new Bt(o,`did not understand \xAB${$[L]}\xBB.`);a.params={...a.params,[m]:_};continue}case"switch":{let[m,x,y]=d;a.switches={...a.switches,[m]:{label:wr(x??""),on:y==="on"}};continue}case"var":{if(d[1]!=="=")throw new Bt(o,"write var name = value.");a.vars={...a.vars,[d[0]]:ma(d[2]??"",o)};continue}case"learning":{let[m,x]=d;if(!["goal","question","answer","caveat"].includes(m))throw new Bt(o,'write learning goal|question|answer|caveat "\u2026".');a.learning={...a.learning,[m]:wr(x??"")};continue}case"quiz":{a.quiz={question:wr(d[0]??""),options:s.children.map(m=>{let[x,...y]=m.tokens;if(x!=="*"&&x!=="-")throw new Bt(m.no,"under a quiz, write * right option -- why, or - wrong option -- why.");let $=y.map(wr).join(" "),[k,I=""]=$.split(/\s+--\s+/);return{text:k.trim(),right:x==="*",why:I.trim()}})};continue}}let p=fc(s,r);i!==void 0&&([p.chapter,i]=[i,void 0]),l!==void 0&&([p.say,l]=[l,void 0]),n.push(p)}return a.steps=n,a}xe();xe();xe();function Lf(e,t,r){if(e&&e.length){let[a,n]=t,i=Math.PI/180*r,l=Math.cos(i),s=Math.sin(i);for(let o of e){let[c,h]=o;o[0]=(c-a)*l-(h-n)*s+a,o[1]=(c-a)*s+(h-n)*l+n}}}function uE(e,t){return e[0]===t[0]&&e[1]===t[1]}function pE(e,t,r,a=1){let n=r,i=Math.max(t,.1),l=e[0]&&e[0][0]&&typeof e[0][0]=="number"?[e]:e,s=[0,0];if(n)for(let c of l)Lf(c,s,n);let o=function(c,h,d){let f=[];for(let $ of c){let k=[...$];uE(k[0],k[k.length-1])||k.push([k[0][0],k[0][1]]),k.length>2&&f.push(k)}let g=[];h=Math.max(h,.1);let p=[];for(let $ of f)for(let k=0;k<$.length-1;k++){let I=$[k],_=$[k+1];if(I[1]!==_[1]){let L=Math.min(I[1],_[1]);p.push({ymin:L,ymax:Math.max(I[1],_[1]),x:L===I[1]?I[0]:_[0],islope:(_[0]-I[0])/(_[1]-I[1])})}}if(p.sort(($,k)=>$.ymin<k.ymin?-1:$.ymin>k.ymin?1:$.x<k.x?-1:$.x>k.x?1:$.ymax===k.ymax?0:($.ymax-k.ymax)/Math.abs($.ymax-k.ymax)),!p.length)return g;let m=[],x=p[0].ymin,y=0;for(;m.length||p.length;){if(p.length){let $=-1;for(let k=0;k<p.length&&!(p[k].ymin>x);k++)$=k;p.splice(0,$+1).forEach(k=>{m.push({s:x,edge:k})})}if(m=m.filter($=>!($.edge.ymax<=x)),m.sort(($,k)=>$.edge.x===k.edge.x?0:($.edge.x-k.edge.x)/Math.abs($.edge.x-k.edge.x)),(d!==1||y%h==0)&&m.length>1)for(let $=0;$<m.length;$+=2){let k=$+1;if(k>=m.length)break;let I=m[$].edge,_=m[k].edge;g.push([[Math.round(I.x),x],[Math.round(_.x),x]])}x+=d,m.forEach($=>{$.edge.x=$.edge.x+d*$.edge.islope}),y++}return g}(l,i,a);if(n){for(let c of l)Lf(c,s,-n);(function(c,h,d){let f=[];c.forEach(g=>f.push(...g)),Lf(f,h,d)})(o,s,-n)}return o}function Cl(e,t){var r;let a=t.hachureAngle+90,n=t.hachureGap;n<0&&(n=4*t.strokeWidth),n=Math.round(Math.max(n,.1));let i=1;return t.roughness>=1&&(((r=t.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(i=n),pE(e,n,a,i||1)}var Tl=class{constructor(t){this.helper=t}fillPolygons(t,r){return this._fillPolygons(t,r)}_fillPolygons(t,r){let a=Cl(t,r);return{type:"fillSketch",ops:this.renderLines(a,r)}}renderLines(t,r){let a=[];for(let n of t)a.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],r));return a}};function $c(e){let t=e[0],r=e[1];return Math.sqrt(Math.pow(t[0]-r[0],2)+Math.pow(t[1]-r[1],2))}var zf=class extends Tl{fillPolygons(t,r){let a=r.hachureGap;a<0&&(a=4*r.strokeWidth),a=Math.max(a,.1);let n=Cl(t,Object.assign({},r,{hachureGap:a})),i=Math.PI/180*r.hachureAngle,l=[],s=.5*a*Math.cos(i),o=.5*a*Math.sin(i);for(let[c,h]of n)$c([c,h])&&l.push([[c[0]-s,c[1]+o],[...h]],[[c[0]+s,c[1]-o],[...h]]);return{type:"fillSketch",ops:this.renderLines(l,r)}}},Ff=class extends Tl{fillPolygons(t,r){let a=this._fillPolygons(t,r),n=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),i=this._fillPolygons(t,n);return a.ops=a.ops.concat(i.ops),a}},Bf=class{constructor(t){this.helper=t}fillPolygons(t,r){let a=Cl(t,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(a,r)}dotsOnLines(t,r){let a=[],n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=r.fillWeight;i<0&&(i=r.strokeWidth/2);let l=n/4;for(let s of t){let o=$c(s),c=o/n,h=Math.ceil(c)-1,d=o-h*n,f=(s[0][0]+s[1][0])/2-n/4,g=Math.min(s[0][1],s[1][1]);for(let p=0;p<h;p++){let m=g+d+p*n,x=f-l+2*Math.random()*l,y=m-l+2*Math.random()*l,$=this.helper.ellipse(x,y,i,i,r);a.push(...$.ops)}}return{type:"fillSketch",ops:a}}},Wf=class{constructor(t){this.helper=t}fillPolygons(t,r){let a=Cl(t,r);return{type:"fillSketch",ops:this.dashedLine(a,r)}}dashedLine(t,r){let a=r.dashOffset<0?r.hachureGap<0?4*r.strokeWidth:r.hachureGap:r.dashOffset,n=r.dashGap<0?r.hachureGap<0?4*r.strokeWidth:r.hachureGap:r.dashGap,i=[];return t.forEach(l=>{let s=$c(l),o=Math.floor(s/(a+n)),c=(s+n-o*(a+n))/2,h=l[0],d=l[1];h[0]>d[0]&&(h=l[1],d=l[0]);let f=Math.atan((d[1]-h[1])/(d[0]-h[0]));for(let g=0;g<o;g++){let p=g*(a+n),m=p+a,x=[h[0]+p*Math.cos(f)+c*Math.cos(f),h[1]+p*Math.sin(f)+c*Math.sin(f)],y=[h[0]+m*Math.cos(f)+c*Math.cos(f),h[1]+m*Math.sin(f)+c*Math.sin(f)];i.push(...this.helper.doubleLineOps(x[0],x[1],y[0],y[1],r))}}),i}},Yf=class{constructor(t){this.helper=t}fillPolygons(t,r){let a=r.hachureGap<0?4*r.strokeWidth:r.hachureGap,n=r.zigzagOffset<0?a:r.zigzagOffset,i=Cl(t,r=Object.assign({},r,{hachureGap:a+n}));return{type:"fillSketch",ops:this.zigzagLines(i,n,r)}}zigzagLines(t,r,a){let n=[];return t.forEach(i=>{let l=$c(i),s=Math.round(l/(2*r)),o=i[0],c=i[1];o[0]>c[0]&&(o=i[1],c=i[0]);let h=Math.atan((c[1]-o[1])/(c[0]-o[0]));for(let d=0;d<s;d++){let f=2*d*r,g=2*(d+1)*r,p=Math.sqrt(2*Math.pow(r,2)),m=[o[0]+f*Math.cos(h),o[1]+f*Math.sin(h)],x=[o[0]+g*Math.cos(h),o[1]+g*Math.sin(h)],y=[m[0]+p*Math.cos(h+Math.PI/4),m[1]+p*Math.sin(h+Math.PI/4)];n.push(...this.helper.doubleLineOps(m[0],m[1],y[0],y[1],a),...this.helper.doubleLineOps(y[0],y[1],x[0],x[1],a))}}),n}},ea={},qf=class{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}},gE=0,Rf=1,Q1=2,uc={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function Of(e,t){return e.type===t}function Vf(e){let t=[],r=function(l){let s=new Array;for(;l!=="";)if(l.match(/^([ \t\r\n,]+)/))l=l.substr(RegExp.$1.length);else if(l.match(/^([aAcChHlLmMqQsStTvVzZ])/))s[s.length]={type:gE,text:RegExp.$1},l=l.substr(RegExp.$1.length);else{if(!l.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];s[s.length]={type:Rf,text:`${parseFloat(RegExp.$1)}`},l=l.substr(RegExp.$1.length)}return s[s.length]={type:Q1,text:""},s}(e),a="BOD",n=0,i=r[n];for(;!Of(i,Q1);){let l=0,s=[];if(a==="BOD"){if(i.text!=="M"&&i.text!=="m")return Vf("M0,0"+e);n++,l=uc[i.text],a=i.text}else Of(i,Rf)?l=uc[a]:(n++,l=uc[i.text],a=i.text);if(!(n+l<r.length))throw new Error("Path data ended short");for(let o=n;o<n+l;o++){let c=r[o];if(!Of(c,Rf))throw new Error("Param not a number: "+a+","+c.text);s[s.length]=+c.text}if(typeof uc[a]!="number")throw new Error("Bad segment: "+a);{let o={key:a,data:s};t.push(o),n+=l,i=r[n],a==="M"&&(a="L"),a==="m"&&(a="l")}}return t}function sg(e){let t=0,r=0,a=0,n=0,i=[];for(let{key:l,data:s}of e)switch(l){case"M":i.push({key:"M",data:[...s]}),[t,r]=s,[a,n]=s;break;case"m":t+=s[0],r+=s[1],i.push({key:"M",data:[t,r]}),a=t,n=r;break;case"L":i.push({key:"L",data:[...s]}),[t,r]=s;break;case"l":t+=s[0],r+=s[1],i.push({key:"L",data:[t,r]});break;case"C":i.push({key:"C",data:[...s]}),t=s[4],r=s[5];break;case"c":{let o=s.map((c,h)=>h%2?c+r:c+t);i.push({key:"C",data:o}),t=o[4],r=o[5];break}case"Q":i.push({key:"Q",data:[...s]}),t=s[2],r=s[3];break;case"q":{let o=s.map((c,h)=>h%2?c+r:c+t);i.push({key:"Q",data:o}),t=o[2],r=o[3];break}case"A":i.push({key:"A",data:[...s]}),t=s[5],r=s[6];break;case"a":t+=s[5],r+=s[6],i.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],t,r]});break;case"H":i.push({key:"H",data:[...s]}),t=s[0];break;case"h":t+=s[0],i.push({key:"H",data:[t]});break;case"V":i.push({key:"V",data:[...s]}),r=s[0];break;case"v":r+=s[0],i.push({key:"V",data:[r]});break;case"S":i.push({key:"S",data:[...s]}),t=s[2],r=s[3];break;case"s":{let o=s.map((c,h)=>h%2?c+r:c+t);i.push({key:"S",data:o}),t=o[2],r=o[3];break}case"T":i.push({key:"T",data:[...s]}),t=s[0],r=s[1];break;case"t":t+=s[0],r+=s[1],i.push({key:"T",data:[t,r]});break;case"Z":case"z":i.push({key:"Z",data:[]}),t=a,r=n}return i}function lg(e){let t=[],r="",a=0,n=0,i=0,l=0,s=0,o=0;for(let{key:c,data:h}of e){switch(c){case"M":t.push({key:"M",data:[...h]}),[a,n]=h,[i,l]=h;break;case"C":t.push({key:"C",data:[...h]}),a=h[4],n=h[5],s=h[2],o=h[3];break;case"L":t.push({key:"L",data:[...h]}),[a,n]=h;break;case"H":a=h[0],t.push({key:"L",data:[a,n]});break;case"V":n=h[0],t.push({key:"L",data:[a,n]});break;case"S":{let d=0,f=0;r==="C"||r==="S"?(d=a+(a-s),f=n+(n-o)):(d=a,f=n),t.push({key:"C",data:[d,f,...h]}),s=h[0],o=h[1],a=h[2],n=h[3];break}case"T":{let[d,f]=h,g=0,p=0;r==="Q"||r==="T"?(g=a+(a-s),p=n+(n-o)):(g=a,p=n);let m=a+2*(g-a)/3,x=n+2*(p-n)/3,y=d+2*(g-d)/3,$=f+2*(p-f)/3;t.push({key:"C",data:[m,x,y,$,d,f]}),s=g,o=p,a=d,n=f;break}case"Q":{let[d,f,g,p]=h,m=a+2*(d-a)/3,x=n+2*(f-n)/3,y=g+2*(d-g)/3,$=p+2*(f-p)/3;t.push({key:"C",data:[m,x,y,$,g,p]}),s=d,o=f,a=g,n=p;break}case"A":{let d=Math.abs(h[0]),f=Math.abs(h[1]),g=h[2],p=h[3],m=h[4],x=h[5],y=h[6];d===0||f===0?(t.push({key:"C",data:[a,n,x,y,x,y]}),a=x,n=y):(a!==x||n!==y)&&(og(a,n,x,y,d,f,g,p,m).forEach(function($){t.push({key:"C",data:$})}),a=x,n=y);break}case"Z":t.push({key:"Z",data:[]}),a=i,n=l}r=c}return t}function El(e,t,r){return[e*Math.cos(r)-t*Math.sin(r),e*Math.sin(r)+t*Math.cos(r)]}function og(e,t,r,a,n,i,l,s,o,c){let h=(d=l,Math.PI*d/180);var d;let f=[],g=0,p=0,m=0,x=0;if(c)[g,p,m,x]=c;else{[e,t]=El(e,t,-h),[r,a]=El(r,a,-h);let G=(e-r)/2,Y=(t-a)/2,N=G*G/(n*n)+Y*Y/(i*i);N>1&&(N=Math.sqrt(N),n*=N,i*=N);let S=n*n,M=i*i,b=S*M-S*Y*Y-M*G*G,E=S*Y*Y+M*G*G,w=(s===o?-1:1)*Math.sqrt(Math.abs(b/E));m=w*n*Y/i+(e+r)/2,x=w*-i*G/n+(t+a)/2,g=Math.asin(parseFloat(((t-x)/i).toFixed(9))),p=Math.asin(parseFloat(((a-x)/i).toFixed(9))),e<m&&(g=Math.PI-g),r<m&&(p=Math.PI-p),g<0&&(g=2*Math.PI+g),p<0&&(p=2*Math.PI+p),o&&g>p&&(g-=2*Math.PI),!o&&p>g&&(p-=2*Math.PI)}let y=p-g;if(Math.abs(y)>120*Math.PI/180){let G=p,Y=r,N=a;p=o&&p>g?g+120*Math.PI/180*1:g+120*Math.PI/180*-1,f=og(r=m+n*Math.cos(p),a=x+i*Math.sin(p),Y,N,n,i,l,0,o,[p,G,m,x])}y=p-g;let $=Math.cos(g),k=Math.sin(g),I=Math.cos(p),_=Math.sin(p),L=Math.tan(y/4),R=4/3*n*L,W=4/3*i*L,q=[e,t],C=[e+R*k,t-W*$],K=[r+R*_,a-W*I],Q=[r,a];if(C[0]=2*q[0]-C[0],C[1]=2*q[1]-C[1],c)return[C,K,Q].concat(f);{f=[C,K,Q].concat(f);let G=[];for(let Y=0;Y<f.length;Y+=3){let N=El(f[Y][0],f[Y][1],h),S=El(f[Y+1][0],f[Y+1][1],h),M=El(f[Y+2][0],f[Y+2][1],h);G.push([N[0],N[1],S[0],S[1],M[0],M[1]])}return G}}var mE={randOffset:function(e,t){return lt(e,t)},randOffsetWithRange:function(e,t,r){return xc(e,t,r)},ellipse:function(e,t,r,a,n){let i=hg(r,a,n);return Gf(e,t,n,i).opset},doubleLineOps:function(e,t,r,a,n){return qn(e,t,r,a,n,!0)}};function cg(e,t,r,a,n){return{type:"path",ops:qn(e,t,r,a,n)}}function mc(e,t,r){let a=(e||[]).length;if(a>2){let n=[];for(let i=0;i<a-1;i++)n.push(...qn(e[i][0],e[i][1],e[i+1][0],e[i+1][1],r));return t&&n.push(...qn(e[a-1][0],e[a-1][1],e[0][0],e[0][1],r)),{type:"path",ops:n}}return a===2?cg(e[0][0],e[0][1],e[1][0],e[1][1],r):{type:"path",ops:[]}}function yE(e,t,r,a,n){return function(i,l){return mc(i,!0,l)}([[e,t],[e+r,t],[e+r,t+a],[e,t+a]],n)}function J1(e,t){if(e.length){let r=typeof e[0][0]=="number"?[e]:e,a=pc(r[0],1*(1+.2*t.roughness),t),n=t.disableMultiStroke?[]:pc(r[0],1.5*(1+.22*t.roughness),rg(t));for(let i=1;i<r.length;i++){let l=r[i];if(l.length){let s=pc(l,1*(1+.2*t.roughness),t),o=t.disableMultiStroke?[]:pc(l,1.5*(1+.22*t.roughness),rg(t));for(let c of s)c.op!=="move"&&a.push(c);for(let c of o)c.op!=="move"&&n.push(c)}}return{type:"path",ops:a.concat(n)}}return{type:"path",ops:[]}}function hg(e,t,r){let a=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(e/2,2)+Math.pow(t/2,2))/2)),n=Math.ceil(Math.max(r.curveStepCount,r.curveStepCount/Math.sqrt(200)*a)),i=2*Math.PI/n,l=Math.abs(e/2),s=Math.abs(t/2),o=1-r.curveFitting;return l+=lt(l*o,r),s+=lt(s*o,r),{increment:i,rx:l,ry:s}}function Gf(e,t,r,a){let[n,i]=ag(a.increment,e,t,a.rx,a.ry,1,a.increment*xc(.1,xc(.4,1,r),r),r),l=bc(n,null,r);if(!r.disableMultiStroke&&r.roughness!==0){let[s]=ag(a.increment,e,t,a.rx,a.ry,1.5,0,r),o=bc(s,null,r);l=l.concat(o)}return{estimatedPoints:i,opset:{type:"path",ops:l}}}function eg(e,t,r,a,n,i,l,s,o){let c=e,h=t,d=Math.abs(r/2),f=Math.abs(a/2);d+=lt(.01*d,o),f+=lt(.01*f,o);let g=n,p=i;for(;g<0;)g+=2*Math.PI,p+=2*Math.PI;p-g>2*Math.PI&&(g=0,p=2*Math.PI);let m=2*Math.PI/o.curveStepCount,x=Math.min(m/2,(p-g)/2),y=ng(x,c,h,d,f,g,p,1,o);if(!o.disableMultiStroke){let $=ng(x,c,h,d,f,g,p,1.5,o);y.push(...$)}return l&&(s?y.push(...qn(c,h,c+d*Math.cos(g),h+f*Math.sin(g),o),...qn(c,h,c+d*Math.cos(p),h+f*Math.sin(p),o)):y.push({op:"lineTo",data:[c,h]},{op:"lineTo",data:[c+d*Math.cos(g),h+f*Math.sin(g)]})),{type:"path",ops:y}}function tg(e,t){let r=lg(sg(Vf(e))),a=[],n=[0,0],i=[0,0];for(let{key:l,data:s}of r)switch(l){case"M":i=[s[0],s[1]],n=[s[0],s[1]];break;case"L":a.push(...qn(i[0],i[1],s[0],s[1],t)),i=[s[0],s[1]];break;case"C":{let[o,c,h,d,f,g]=s;a.push(...xE(o,c,h,d,f,g,i,t)),i=[f,g];break}case"Z":a.push(...qn(i[0],i[1],n[0],n[1],t)),i=[n[0],n[1]]}return{type:"path",ops:a}}function Df(e,t){let r=[];for(let a of e)if(a.length){let n=t.maxRandomnessOffset||0,i=a.length;if(i>2){r.push({op:"move",data:[a[0][0]+lt(n,t),a[0][1]+lt(n,t)]});for(let l=1;l<i;l++)r.push({op:"lineTo",data:[a[l][0]+lt(n,t),a[l][1]+lt(n,t)]})}}return{type:"fillPath",ops:r}}function fs(e,t){return function(r,a){let n=r.fillStyle||"hachure";if(!ea[n])switch(n){case"zigzag":ea[n]||(ea[n]=new zf(a));break;case"cross-hatch":ea[n]||(ea[n]=new Ff(a));break;case"dots":ea[n]||(ea[n]=new Bf(a));break;case"dashed":ea[n]||(ea[n]=new Wf(a));break;case"zigzag-line":ea[n]||(ea[n]=new Yf(a));break;default:n="hachure",ea[n]||(ea[n]=new Tl(a))}return ea[n]}(t,mE).fillPolygons(e,t)}function rg(e){let t=Object.assign({},e);return t.randomizer=void 0,e.seed&&(t.seed=e.seed+1),t}function dg(e){return e.randomizer||(e.randomizer=new qf(e.seed||0)),e.randomizer.next()}function xc(e,t,r,a=1){return r.roughness*a*(dg(r)*(t-e)+e)}function lt(e,t,r=1){return xc(-e,e,t,r)}function qn(e,t,r,a,n,i=!1){let l=i?n.disableMultiStrokeFill:n.disableMultiStroke,s=Hf(e,t,r,a,n,!0,!1);if(l)return s;let o=Hf(e,t,r,a,n,!0,!0);return s.concat(o)}function Hf(e,t,r,a,n,i,l){let s=Math.pow(e-r,2)+Math.pow(t-a,2),o=Math.sqrt(s),c=1;c=o<200?1:o>500?.4:-.0016668*o+1.233334;let h=n.maxRandomnessOffset||0;h*h*100>s&&(h=o/10);let d=h/2,f=.2+.2*dg(n),g=n.bowing*n.maxRandomnessOffset*(a-t)/200,p=n.bowing*n.maxRandomnessOffset*(e-r)/200;g=lt(g,n,c),p=lt(p,n,c);let m=[],x=()=>lt(d,n,c),y=()=>lt(h,n,c),$=n.preserveVertices;return i&&(l?m.push({op:"move",data:[e+($?0:x()),t+($?0:x())]}):m.push({op:"move",data:[e+($?0:lt(h,n,c)),t+($?0:lt(h,n,c))]})),l?m.push({op:"bcurveTo",data:[g+e+(r-e)*f+x(),p+t+(a-t)*f+x(),g+e+2*(r-e)*f+x(),p+t+2*(a-t)*f+x(),r+($?0:x()),a+($?0:x())]}):m.push({op:"bcurveTo",data:[g+e+(r-e)*f+y(),p+t+(a-t)*f+y(),g+e+2*(r-e)*f+y(),p+t+2*(a-t)*f+y(),r+($?0:y()),a+($?0:y())]}),m}function pc(e,t,r){if(!e.length)return[];let a=[];a.push([e[0][0]+lt(t,r),e[0][1]+lt(t,r)]),a.push([e[0][0]+lt(t,r),e[0][1]+lt(t,r)]);for(let n=1;n<e.length;n++)a.push([e[n][0]+lt(t,r),e[n][1]+lt(t,r)]),n===e.length-1&&a.push([e[n][0]+lt(t,r),e[n][1]+lt(t,r)]);return bc(a,null,r)}function bc(e,t,r){let a=e.length,n=[];if(a>3){let i=[],l=1-r.curveTightness;n.push({op:"move",data:[e[1][0],e[1][1]]});for(let s=1;s+2<a;s++){let o=e[s];i[0]=[o[0],o[1]],i[1]=[o[0]+(l*e[s+1][0]-l*e[s-1][0])/6,o[1]+(l*e[s+1][1]-l*e[s-1][1])/6],i[2]=[e[s+1][0]+(l*e[s][0]-l*e[s+2][0])/6,e[s+1][1]+(l*e[s][1]-l*e[s+2][1])/6],i[3]=[e[s+1][0],e[s+1][1]],n.push({op:"bcurveTo",data:[i[1][0],i[1][1],i[2][0],i[2][1],i[3][0],i[3][1]]})}if(t&&t.length===2){let s=r.maxRandomnessOffset;n.push({op:"lineTo",data:[t[0]+lt(s,r),t[1]+lt(s,r)]})}}else a===3?(n.push({op:"move",data:[e[1][0],e[1][1]]}),n.push({op:"bcurveTo",data:[e[1][0],e[1][1],e[2][0],e[2][1],e[2][0],e[2][1]]})):a===2&&n.push(...Hf(e[0][0],e[0][1],e[1][0],e[1][1],r,!0,!0));return n}function ag(e,t,r,a,n,i,l,s){let o=[],c=[];if(s.roughness===0){e/=4,c.push([t+a*Math.cos(-e),r+n*Math.sin(-e)]);for(let h=0;h<=2*Math.PI;h+=e){let d=[t+a*Math.cos(h),r+n*Math.sin(h)];o.push(d),c.push(d)}c.push([t+a*Math.cos(0),r+n*Math.sin(0)]),c.push([t+a*Math.cos(e),r+n*Math.sin(e)])}else{let h=lt(.5,s)-Math.PI/2;c.push([lt(i,s)+t+.9*a*Math.cos(h-e),lt(i,s)+r+.9*n*Math.sin(h-e)]);let d=2*Math.PI+h-.01;for(let f=h;f<d;f+=e){let g=[lt(i,s)+t+a*Math.cos(f),lt(i,s)+r+n*Math.sin(f)];o.push(g),c.push(g)}c.push([lt(i,s)+t+a*Math.cos(h+2*Math.PI+.5*l),lt(i,s)+r+n*Math.sin(h+2*Math.PI+.5*l)]),c.push([lt(i,s)+t+.98*a*Math.cos(h+l),lt(i,s)+r+.98*n*Math.sin(h+l)]),c.push([lt(i,s)+t+.9*a*Math.cos(h+.5*l),lt(i,s)+r+.9*n*Math.sin(h+.5*l)])}return[c,o]}function ng(e,t,r,a,n,i,l,s,o){let c=i+lt(.1,o),h=[];h.push([lt(s,o)+t+.9*a*Math.cos(c-e),lt(s,o)+r+.9*n*Math.sin(c-e)]);for(let d=c;d<=l;d+=e)h.push([lt(s,o)+t+a*Math.cos(d),lt(s,o)+r+n*Math.sin(d)]);return h.push([t+a*Math.cos(l),r+n*Math.sin(l)]),h.push([t+a*Math.cos(l),r+n*Math.sin(l)]),bc(h,null,o)}function xE(e,t,r,a,n,i,l,s){let o=[],c=[s.maxRandomnessOffset||1,(s.maxRandomnessOffset||1)+.3],h=[0,0],d=s.disableMultiStroke?1:2,f=s.preserveVertices;for(let g=0;g<d;g++)g===0?o.push({op:"move",data:[l[0],l[1]]}):o.push({op:"move",data:[l[0]+(f?0:lt(c[0],s)),l[1]+(f?0:lt(c[0],s))]}),h=f?[n,i]:[n+lt(c[g],s),i+lt(c[g],s)],o.push({op:"bcurveTo",data:[e+lt(c[g],s),t+lt(c[g],s),r+lt(c[g],s),a+lt(c[g],s),h[0],h[1]]});return o}function Sl(e){return[...e]}function ig(e,t=0){let r=e.length;if(r<3)throw new Error("A curve must have at least three points.");let a=[];if(r===3)a.push(Sl(e[0]),Sl(e[1]),Sl(e[2]),Sl(e[2]));else{let n=[];n.push(e[0],e[0]);for(let s=1;s<e.length;s++)n.push(e[s]),s===e.length-1&&n.push(e[s]);let i=[],l=1-t;a.push(Sl(n[0]));for(let s=1;s+2<n.length;s++){let o=n[s];i[0]=[o[0],o[1]],i[1]=[o[0]+(l*n[s+1][0]-l*n[s-1][0])/6,o[1]+(l*n[s+1][1]-l*n[s-1][1])/6],i[2]=[n[s+1][0]+(l*n[s][0]-l*n[s+2][0])/6,n[s+1][1]+(l*n[s][1]-l*n[s+2][1])/6],i[3]=[n[s+1][0],n[s+1][1]],a.push(i[1],i[2],i[3])}}return a}function yc(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)}function bE(e,t,r){let a=yc(t,r);if(a===0)return yc(e,t);let n=((e[0]-t[0])*(r[0]-t[0])+(e[1]-t[1])*(r[1]-t[1]))/a;return n=Math.max(0,Math.min(1,n)),yc(e,$i(t,r,n))}function $i(e,t,r){return[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r]}function Uf(e,t,r,a){let n=a||[];if(function(s,o){let c=s[o+0],h=s[o+1],d=s[o+2],f=s[o+3],g=3*h[0]-2*c[0]-f[0];g*=g;let p=3*h[1]-2*c[1]-f[1];p*=p;let m=3*d[0]-2*f[0]-c[0];m*=m;let x=3*d[1]-2*f[1]-c[1];return x*=x,g<m&&(g=m),p<x&&(p=x),g+p}(e,t)<r){let s=e[t+0];n.length?(i=n[n.length-1],l=s,Math.sqrt(yc(i,l))>1&&n.push(s)):n.push(s),n.push(e[t+3])}else{let o=e[t+0],c=e[t+1],h=e[t+2],d=e[t+3],f=$i(o,c,.5),g=$i(c,h,.5),p=$i(h,d,.5),m=$i(f,g,.5),x=$i(g,p,.5),y=$i(m,x,.5);Uf([o,f,m,y],0,r,n),Uf([y,x,p,d],0,r,n)}var i,l;return n}function wE(e,t){return wc(e,0,e.length,t)}function wc(e,t,r,a,n){let i=n||[],l=e[t],s=e[r-1],o=0,c=1;for(let h=t+1;h<r-1;++h){let d=bE(e[h],l,s);d>o&&(o=d,c=h)}return Math.sqrt(o)>a?(wc(e,t,c+1,a,i),wc(e,c,r,a,i)):(i.length||i.push(l),i.push(s)),i}function Pf(e,t=.15,r){let a=[],n=(e.length-1)/3;for(let i=0;i<n;i++)Uf(e,3*i,t,a);return r&&r>0?wc(a,0,a.length,r):a}var ya="none",us=class{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,r,a){return{shape:t,sets:r||[],options:a||this.defaultOptions}}line(t,r,a,n,i){let l=this._o(i);return this._d("line",[cg(t,r,a,n,l)],l)}rectangle(t,r,a,n,i){let l=this._o(i),s=[],o=yE(t,r,a,n,l);if(l.fill){let c=[[t,r],[t+a,r],[t+a,r+n],[t,r+n]];l.fillStyle==="solid"?s.push(Df([c],l)):s.push(fs([c],l))}return l.stroke!==ya&&s.push(o),this._d("rectangle",s,l)}ellipse(t,r,a,n,i){let l=this._o(i),s=[],o=hg(a,n,l),c=Gf(t,r,l,o);if(l.fill)if(l.fillStyle==="solid"){let h=Gf(t,r,l,o).opset;h.type="fillPath",s.push(h)}else s.push(fs([c.estimatedPoints],l));return l.stroke!==ya&&s.push(c.opset),this._d("ellipse",s,l)}circle(t,r,a,n){let i=this.ellipse(t,r,a,a,n);return i.shape="circle",i}linearPath(t,r){let a=this._o(r);return this._d("linearPath",[mc(t,!1,a)],a)}arc(t,r,a,n,i,l,s=!1,o){let c=this._o(o),h=[],d=eg(t,r,a,n,i,l,s,!0,c);if(s&&c.fill)if(c.fillStyle==="solid"){let f=Object.assign({},c);f.disableMultiStroke=!0;let g=eg(t,r,a,n,i,l,!0,!1,f);g.type="fillPath",h.push(g)}else h.push(function(f,g,p,m,x,y,$){let k=f,I=g,_=Math.abs(p/2),L=Math.abs(m/2);_+=lt(.01*_,$),L+=lt(.01*L,$);let R=x,W=y;for(;R<0;)R+=2*Math.PI,W+=2*Math.PI;W-R>2*Math.PI&&(R=0,W=2*Math.PI);let q=(W-R)/$.curveStepCount,C=[];for(let K=R;K<=W;K+=q)C.push([k+_*Math.cos(K),I+L*Math.sin(K)]);return C.push([k+_*Math.cos(W),I+L*Math.sin(W)]),C.push([k,I]),fs([C],$)}(t,r,a,n,i,l,c));return c.stroke!==ya&&h.push(d),this._d("arc",h,c)}curve(t,r){let a=this._o(r),n=[],i=J1(t,a);if(a.fill&&a.fill!==ya)if(a.fillStyle==="solid"){let l=J1(t,Object.assign(Object.assign({},a),{disableMultiStroke:!0,roughness:a.roughness?a.roughness+a.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(l.ops)})}else{let l=[],s=t;if(s.length){let o=typeof s[0][0]=="number"?[s]:s;for(let c of o)c.length<3?l.push(...c):c.length===3?l.push(...Pf(ig([c[0],c[0],c[1],c[2]]),10,(1+a.roughness)/2)):l.push(...Pf(ig(c),10,(1+a.roughness)/2))}l.length&&n.push(fs([l],a))}return a.stroke!==ya&&n.push(i),this._d("curve",n,a)}polygon(t,r){let a=this._o(r),n=[],i=mc(t,!0,a);return a.fill&&(a.fillStyle==="solid"?n.push(Df([t],a)):n.push(fs([t],a))),a.stroke!==ya&&n.push(i),this._d("polygon",n,a)}path(t,r){let a=this._o(r),n=[];if(!t)return this._d("path",n,a);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let i=a.fill&&a.fill!=="transparent"&&a.fill!==ya,l=a.stroke!==ya,s=!!(a.simplification&&a.simplification<1),o=function(h,d,f){let g=lg(sg(Vf(h))),p=[],m=[],x=[0,0],y=[],$=()=>{y.length>=4&&m.push(...Pf(y,d)),y=[]},k=()=>{$(),m.length&&(p.push(m),m=[])};for(let{key:_,data:L}of g)switch(_){case"M":k(),x=[L[0],L[1]],m.push(x);break;case"L":$(),m.push([L[0],L[1]]);break;case"C":if(!y.length){let R=m.length?m[m.length-1]:x;y.push([R[0],R[1]])}y.push([L[0],L[1]]),y.push([L[2],L[3]]),y.push([L[4],L[5]]);break;case"Z":$(),m.push([x[0],x[1]])}if(k(),!f)return p;let I=[];for(let _ of p){let L=wE(_,f);L.length&&I.push(L)}return I}(t,1,s?4-4*(a.simplification||1):(1+a.roughness)/2),c=tg(t,a);if(i)if(a.fillStyle==="solid")if(o.length===1){let h=tg(t,Object.assign(Object.assign({},a),{disableMultiStroke:!0,roughness:a.roughness?a.roughness+a.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(h.ops)})}else n.push(Df(o,a));else n.push(fs(o,a));return l&&(s?o.forEach(h=>{n.push(mc(h,!1,a))}):n.push(c)),this._d("path",n,a)}opsToPath(t,r){let a="";for(let n of t.ops){let i=typeof r=="number"&&r>=0?n.data.map(l=>+l.toFixed(r)):n.data;switch(n.op){case"move":a+=`M${i[0]} ${i[1]} `;break;case"bcurveTo":a+=`C${i[0]} ${i[1]}, ${i[2]} ${i[3]}, ${i[4]} ${i[5]} `;break;case"lineTo":a+=`L${i[0]} ${i[1]} `}}return a.trim()}toPaths(t){let r=t.sets||[],a=t.options||this.defaultOptions,n=[];for(let i of r){let l=null;switch(i.type){case"path":l={d:this.opsToPath(i),stroke:a.stroke,strokeWidth:a.strokeWidth,fill:ya};break;case"fillPath":l={d:this.opsToPath(i),stroke:ya,strokeWidth:0,fill:a.fill||ya};break;case"fillSketch":l=this.fillSketch(i,a)}l&&n.push(l)}return n}fillSketch(t,r){let a=r.fillWeight;return a<0&&(a=r.strokeWidth/2),{d:this.opsToPath(t),stroke:r.fill||ya,strokeWidth:a,fill:ya}}_mergedShape(t){return t.filter((r,a)=>a===0||r.op!=="move")}},jf=class{constructor(t,r){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new us(r)}draw(t){let r=t.sets||[],a=t.options||this.getDefaultOptions(),n=this.ctx,i=t.options.fixedDecimalPlaceDigits;for(let l of r)switch(l.type){case"path":n.save(),n.strokeStyle=a.stroke==="none"?"transparent":a.stroke,n.lineWidth=a.strokeWidth,a.strokeLineDash&&n.setLineDash(a.strokeLineDash),a.strokeLineDashOffset&&(n.lineDashOffset=a.strokeLineDashOffset),this._drawToContext(n,l,i),n.restore();break;case"fillPath":{n.save(),n.fillStyle=a.fill||"";let s=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(n,l,i,s),n.restore();break}case"fillSketch":this.fillSketch(n,l,a)}}fillSketch(t,r,a){let n=a.fillWeight;n<0&&(n=a.strokeWidth/2),t.save(),a.fillLineDash&&t.setLineDash(a.fillLineDash),a.fillLineDashOffset&&(t.lineDashOffset=a.fillLineDashOffset),t.strokeStyle=a.fill||"",t.lineWidth=n,this._drawToContext(t,r,a.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,r,a,n="nonzero"){t.beginPath();for(let i of r.ops){let l=typeof a=="number"&&a>=0?i.data.map(s=>+s.toFixed(a)):i.data;switch(i.op){case"move":t.moveTo(l[0],l[1]);break;case"bcurveTo":t.bezierCurveTo(l[0],l[1],l[2],l[3],l[4],l[5]);break;case"lineTo":t.lineTo(l[0],l[1])}}r.type==="fillPath"?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,r,a,n,i){let l=this.gen.line(t,r,a,n,i);return this.draw(l),l}rectangle(t,r,a,n,i){let l=this.gen.rectangle(t,r,a,n,i);return this.draw(l),l}ellipse(t,r,a,n,i){let l=this.gen.ellipse(t,r,a,n,i);return this.draw(l),l}circle(t,r,a,n){let i=this.gen.circle(t,r,a,n);return this.draw(i),i}linearPath(t,r){let a=this.gen.linearPath(t,r);return this.draw(a),a}polygon(t,r){let a=this.gen.polygon(t,r);return this.draw(a),a}arc(t,r,a,n,i,l,s=!1,o){let c=this.gen.arc(t,r,a,n,i,l,s,o);return this.draw(c),c}curve(t,r){let a=this.gen.curve(t,r);return this.draw(a),a}path(t,r){let a=this.gen.path(t,r);return this.draw(a),a}},gc="http://www.w3.org/2000/svg",Xf=class{constructor(t,r){this.svg=t,this.gen=new us(r)}draw(t){let r=t.sets||[],a=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,i=n.createElementNS(gc,"g"),l=t.options.fixedDecimalPlaceDigits;for(let s of r){let o=null;switch(s.type){case"path":o=n.createElementNS(gc,"path"),o.setAttribute("d",this.opsToPath(s,l)),o.setAttribute("stroke",a.stroke),o.setAttribute("stroke-width",a.strokeWidth+""),o.setAttribute("fill","none"),a.strokeLineDash&&o.setAttribute("stroke-dasharray",a.strokeLineDash.join(" ").trim()),a.strokeLineDashOffset&&o.setAttribute("stroke-dashoffset",`${a.strokeLineDashOffset}`);break;case"fillPath":o=n.createElementNS(gc,"path"),o.setAttribute("d",this.opsToPath(s,l)),o.setAttribute("stroke","none"),o.setAttribute("stroke-width","0"),o.setAttribute("fill",a.fill||""),t.shape!=="curve"&&t.shape!=="polygon"||o.setAttribute("fill-rule","evenodd");break;case"fillSketch":o=this.fillSketch(n,s,a)}o&&i.appendChild(o)}return i}fillSketch(t,r,a){let n=a.fillWeight;n<0&&(n=a.strokeWidth/2);let i=t.createElementNS(gc,"path");return i.setAttribute("d",this.opsToPath(r,a.fixedDecimalPlaceDigits)),i.setAttribute("stroke",a.fill||""),i.setAttribute("stroke-width",n+""),i.setAttribute("fill","none"),a.fillLineDash&&i.setAttribute("stroke-dasharray",a.fillLineDash.join(" ").trim()),a.fillLineDashOffset&&i.setAttribute("stroke-dashoffset",`${a.fillLineDashOffset}`),i}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,r){return this.gen.opsToPath(t,r)}line(t,r,a,n,i){let l=this.gen.line(t,r,a,n,i);return this.draw(l)}rectangle(t,r,a,n,i){let l=this.gen.rectangle(t,r,a,n,i);return this.draw(l)}ellipse(t,r,a,n,i){let l=this.gen.ellipse(t,r,a,n,i);return this.draw(l)}circle(t,r,a,n){let i=this.gen.circle(t,r,a,n);return this.draw(i)}linearPath(t,r){let a=this.gen.linearPath(t,r);return this.draw(a)}polygon(t,r){let a=this.gen.polygon(t,r);return this.draw(a)}arc(t,r,a,n,i,l,s=!1,o){let c=this.gen.arc(t,r,a,n,i,l,s,o);return this.draw(c)}curve(t,r){let a=this.gen.curve(t,r);return this.draw(a)}path(t,r){let a=this.gen.path(t,r);return this.draw(a)}},fg={canvas:(e,t)=>new jf(e,t),svg:(e,t)=>new Xf(e,t),generator:e=>new us(e),newSeed:()=>us.newSeed()};Ml();ds();lc();xe();Ml();var $E=50,kE=(e,t)=>Math.max(0,Math.min($E,Math.round(Et(e,t)))),ps=(e,t)=>t===0?e:typeof e=="number"?Math.round((e+t)*100)/100:`(${e})${t<0?"-":"+"}${Math.abs(t)}`,za=(e,t,r)=>[ps(e[0],t),ps(e[1],r)];function ms(e,t,r){switch(e.type){case"prop":case"text":case"card":case"counter":return{...e,at:za(e.at,t,r)};case"circle":case"ellipse":return{...e,center:za(e.center,t,r)};case"line":case"arrow":case"highlight":return{...e,from:za(e.from,t,r),to:za(e.to,t,r)};case"polyline":case"polygon":case"curve":return{...e,points:e.points.map(a=>za(a,t,r))};case"plot":return{...e,box:{...e.box,x:ps(e.box.x,t),y:ps(e.box.y,r)}};case"repeat":return{...e,step:ms(e.step,t,r)};case"row":case"column":case"grid":return{...e,at:za(e.at,t,r)};case"axis":case"timeline":case"brace":return{...e,from:za(e.from,t,r),to:za(e.to,t,r)};case"note":return{...e,at:za(e.at,t,r),...e.point?{point:za(e.point,t,r)}:{}};case"table":return{...e,at:za(e.at,t,r)};case"bars":return{...e,box:{...e.box,x:ps(e.box.x,t),y:ps(e.box.y,r)}};case"when":return{...e,steps:e.steps.map(a=>ms(a,t,r))};default:return e}}function gs(e,t,r=[]){if(e.nudge){let{nudge:a,...n}=e;return gs(ms(n,a[0],a[1]),t,r).map(i=>({...i,nudge:[(i.nudge?.[0]??0)+a[0],(i.nudge?.[1]??0)+a[1]]}))}return e.type==="repeat"?Array.from({length:kE(e.times,t)},(a,n)=>gs(e.step,{...t,i:n},[...r,n]).map(i=>({...i,id:i.id&&`${i.id}-${n}`}))).flat():e.type==="when"?Et(e.if,t)!==0?e.steps.flatMap((a,n)=>gs(a,t,[...r,n])):[]:[{step:e,scope:t,path:r,id:e.id}]}var ki=(e,t)=>e.includes("{")?ga(e,t):e;function pg(e,t){let r=a=>[Et(a[0],t),Et(a[1],t)];switch(e.type){case"prop":case"text":case"card":case"counter":return r(e.at);case"circle":case"ellipse":return r(e.center);case"line":case"arrow":case"highlight":return r(e.from);case"polyline":case"polygon":case"curve":return r(e.points[0]);case"plot":return[Et(e.box.x,t),Et(e.box.y,t)];case"row":case"column":case"grid":return r(e.at);case"axis":case"timeline":case"brace":return r(e.from);case"note":case"table":return r(e.at);case"bars":return[Et(e.box.x,t),Et(e.box.y,t)];default:return null}}function ys(e,t,r=0){let[a,n]=[e.x+e.w/2,e.y+e.h/2],[i,l]=[t[0]-a,t[1]-n],s=Math.hypot(i,l);if(s===0)return[a,n];let o=i===0?1/0:e.w/2/Math.abs(i),c=l===0?1/0:e.h/2/Math.abs(l),h=Math.min(o,c);return[a+i*h+i/s*r,n+l*h+l/s*r]}function gg(e,t,r=8){let a=[e.x+e.w/2,e.y+e.h/2],n=[t.x+t.w/2,t.y+t.h/2];return[ys(e,n,r),ys(t,a,r)]}function mg(e,t,r=16){let[a,n]=[t[0]-e[0],t[1]-e[1]],i=Math.hypot(a,n)||1,[l,s]=[-n/i,a/i];(s>0||s===0&&l<0)&&([l,s]=[-l,-s]);let o=[(e[0]+t[0])/2,(e[1]+t[1])/2];return{at:[o[0]+l*r,o[1]+s*r],anchor:l>.5?"start":l<-.5?"end":"middle"}}function Kf(e,t,r,a="line"){if(a==="line")return[e[0]+(t[0]-e[0])*r,e[1]+(t[1]-e[1])*r];let[n,i]=[t[0]-e[0],t[1]-e[1]],l=Math.hypot(n,i),[s,o]=l?[-i/l,n/l]:[0,0];o>0&&([s,o]=[-s,-o]);let c=[(e[0]+t[0])/2+s*l*.3,(e[1]+t[1])/2+o*l*.3],h=1-r;return[h*h*e[0]+2*h*r*c[0]+r*r*t[0],h*h*e[1]+2*h*r*c[1]+r*r*t[1]]}var Zf=(e,t)=>Number.isInteger(e)?Math.round(e*t):e*t,Mc=(e,t,r,a)=>ga(e??"{v}",{...r,v:t},a);function kc(e){let t=0;for(let r of e)r.type==="move"&&r.ms?t=Math.max(t,r.ms):r.type==="repeat"?t=Math.max(t,kc([r.step])):r.type==="when"&&(t=Math.max(t,kc(r.steps)));return t}var Fa=e=>Math.round(e*100)/100,ug=e=>Math.max(0,e.w)*Math.max(0,e.h);function ME(e,t){let r=Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x),a=Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y);return r>0&&a>0?r*a:0}function Qf(e,t,r,a=24,n="center"){let i=(o,c,h)=>n==="start"?o:n==="end"?o+c-h:o+(c-h)/2,[l,s]=r==="below"?[i(t.x,t.w,e.w),t.y+t.h+a]:r==="above"?[i(t.x,t.w,e.w),t.y-a-e.h]:r==="right"?[t.x+t.w+a,i(t.y,t.h,e.h)]:[t.x-a-e.w,i(t.y,t.h,e.h)];return[Fa(l-e.x),Fa(s-e.y)]}function yg(e,t,r,a=24,n="center",i=1){if(!t.length)return[];if(e==="grid"){let c=Math.max(1,i),h=Math.max(...t.map(f=>f.w)),d=Math.max(...t.map(f=>f.h));return t.map((f,g)=>{let[p,m]=[g%c,Math.floor(g/c)];return[Fa(r[0]+p*(h+a)+(h-f.w)/2-f.x),Fa(r[1]+m*(d+a)+(d-f.h)/2-f.y)]})}let l=e==="row",s=Math.max(...t.map(c=>l?c.h:c.w)),o=l?r[0]:r[1];return t.map(c=>{let[h,d]=l?[c.w,c.h]:[c.h,c.w],f=n==="start"?0:n==="end"?s-d:(s-d)/2,[g,p]=l?[o,r[1]+f]:[r[0]+f,o];return o+=h+a,[Fa(g-c.x),Fa(p-c.y)]})}function Jf(e,t,r,a=30){let n=(i,l,s)=>l>s-2*a?i<0||i+l>s?(s-l)/2-i:0:i<0?a-i:i+l>s?s-a-(i+l):0;return[Fa(n(e.x,e.w,t)),Fa(n(e.y,e.h,r))]}function xg(e,t,r,a=60,n=4){let i=l=>t.some(s=>ME(l,s)>.2*Math.min(ug(l),ug(s)));if(!i(e))return 0;for(let l=n;l<=a;l+=n)for(let s of[l,-l]){let o={...e,y:e.y+s};if(o.y>=0&&o.y+o.h<=r&&!i(o))return s}return 0}function bg(e,t){if(Array.isArray(t))return t;let r=t??5;return r===0?[]:Array.from({length:r+1},(a,n)=>Fa(e[0]+(e[1]-e[0])*n/r))}function eu(e,t,r,a){let n=(a-r[0])/(r[1]-r[0]);return!Number.isFinite(n)||n<-1e-9||n>1+1e-9?null:[Fa(e[0]+(t[0]-e[0])*n),Fa(e[1]+(t[1]-e[1])*n)]}function tu(e,t){let[r,a]=[t[0]-e[0],t[1]-e[1]],n=Math.hypot(r,a)||1,i=[-a/n,r/n];return(Math.abs(r)>=Math.abs(a)?i[1]<0:i[0]>0)&&(i=[-i[0],-i[1]]),[i[0]||0,i[1]||0]}var vE="http://www.w3.org/2000/svg",kn="#2B2B2B",AE={"#2b2b2b":"#F4F1E8","#242424":"#F4F1E8",black:"#F4F1E8","#2f5bea":"#A8C1FF","#1f4e9a":"#A8C1FF",blue:"#A8C1FF","#c8442c":"#FF9F8A",red:"#FF9F8A","#2e8f62":"#93E2AE","#0e7a0b":"#93E2AE",green:"#93E2AE","#8c8578":"#CFC9BC","#5e5a52":"#D9D3C6",grey:"#CFC9BC",gray:"#CFC9BC","#ffffff":"#34493D","#fff":"#34493D",white:"#34493D"},EE=["text","card","prop","counter"],ru={hand:"'Caveat', cursive",body:"'Shantell Sans', system-ui, sans-serif"},xs=class extends Error{},wg=e=>e<.5?2*e*e:1-Math.pow(-2*e+2,2)/2,SE="cubic-bezier(.45,0,.55,1)";function Qt(e,t={}){let r=document.createElementNS(vE,e);for(let[a,n]of Object.entries(t))r.setAttribute(a,String(n));return r}var $g=e=>[e.x+e.w/2,e.y+e.h/2];function TE(e){return 1e3+e*97}function CE(e,t=e.steps.length-1){let r=[],a=Math.min(t,e.steps.length-1);for(let n=0;n<=a;){let i=e.steps[n],l=n;if(i.type!=="pause")for(;l<a;){let o=e.steps[l+1];if(o.type==="pause"||o.say||o.chapter)break;l++}let s=i.type==="pause"?i.ms:i.duration===0?0:Math.min(1600,Math.max(1e3,i.duration??(i.type==="text"?1400:1100)));r.push({start:n,end:l,duration:i.type==="pause"?s:Math.max(s,kc(e.steps.slice(n,l+1)))}),n=l+1}return r}function vc(e,t){let r={};for(let[a,n]of Object.entries(e.params??{}))r[a]=t[a]??n.value;for(let[a,n]of Object.entries(e.switches??{}))r[a]=t[a]??(n.on?1:0)?1:0;for(let[a,n]of Object.entries(e.vars??{}))r[a]=Et(n,r);return r}var _E=0,Gn=class{constructor(t,r=()=>{}){le(this,"uid",`dw${++_E}`);le(this,"gen",fg.generator());le(this,"run",0);le(this,"speed",1);le(this,"layers");le(this,"defs");le(this,"named",new Map);le(this,"locale");le(this,"paper",{w:0,h:0});le(this,"textBoxes",[]);le(this,"leafNudge");le(this,"theme","paper");le(this,"css",!1);le(this,"svg");le(this,"onSay");this.svg=t,this.onSay=r}stop(){this.run++,this.layers&&(this.layers.pencil.style.opacity="0")}setSpeed(t){if(!Number.isFinite(t)||t<=0)throw new Error("The speed must be a positive number.");this.speed=t}async render(t,r,a){let n=++this.run;this.setSpeed(a.speed??1);let i=vc(t,r);this.locale=t.locale,this.theme=a.theme??t.theme??"paper",this.css=!!a.css&&!a.animate,this.setup(t);let l=0;try{for(let s of CE(t,a.until)){if(n!==this.run)throw new xs;let o=[],c,h=a.animate&&s.start>=(a.from??0);for(let d=s.start;d<=s.end;d++){let f=t.steps[d];if(a.onStep?.(d),f.say&&this.onSay(c=ga(f.say,i,t.locale)),f.type!=="pause"){let g=this.made(()=>{for(let p of gs(f,i))o.push(...this.buildLeaf(p,d,h))});for(let p of g)p.dataset.step=String(d)}}if(this.css&&(t.steps[s.start].type!=="pause"&&this.schedule(o,l,s.duration),l+=s.duration),h&&a.beforeBeat&&(await a.beforeBeat(c,s.start),n!==this.run))throw new xs;h&&(t.steps[s.start].type==="pause"?(this.layers.pencil.style.opacity="0",await this.tween(s.duration,n,()=>{})):await this.play(o,s.duration,n))}a.animate&&(this.layers.pencil.style.opacity="0")}catch(s){if(!(s instanceof xs))throw s}}setup(t){let r=this.svg;r.replaceChildren(),r.setAttribute("viewBox",`0 0 ${t.width} ${t.height}`),r.style.aspectRatio=`${t.width} / ${t.height}`,r.setAttribute("aria-label",t.title),this.defs=Qt("defs"),r.append(this.defs);let a=t.background??"dots",n=this.theme==="chalkboard";if(a!=="plain"){let o=Qt("pattern",{id:`${this.uid}-paper`,width:a==="grid"?24:22,height:a==="grid"?24:22,patternUnits:"userSpaceOnUse"});o.append(a==="grid"?Qt("path",{d:"M24 0H0V24",fill:"none",stroke:n?"#33473B":"#DCE5EF","stroke-width":1}):Qt("circle",{cx:11,cy:11,r:1.2,fill:n?"#3A5043":"#D9D2C3"})),this.defs.append(o)}r.append(Qt("rect",{width:t.width,height:t.height,fill:n?"#26372E":"#FBF7EE"})),a!=="plain"&&r.append(Qt("rect",{width:t.width,height:t.height,fill:`url(#${this.uid}-paper)`}));let i=Qt("g"),l=Qt("g"),s=this.makePencil();r.append(i,l,s),this.layers={highlight:i,ink:l,pencil:s},this.named.clear(),this.paper={w:t.width,h:t.height},this.textBoxes=[]}made(t){let r=[this.layers.ink,this.layers.highlight],a=r.map(n=>n.childElementCount);return t(),r.flatMap((n,i)=>[...n.children].slice(a[i]))}seedOf(t,r){return TE(t)+r.reduce((a,n)=>a*31+n+1,0)*7}buildLeaf(t,r,a){var h;let n=t.step.type;if(n==="row"||n==="column"||n==="grid")return this.arrange(t,r,a);let i=[r,...t.path].join("_"),l=this.seedOf(r,t.path),s=t.arranged?t.step:this.settle(t,i,l),o=[];this.leafNudge=t.nudge;let c=this.made(()=>{o=this.build(s,i,l,t.scope,a)});this.leafNudge=void 0;for(let d of c)(h=d.dataset).type??(h.type=s.type);if(c.length&&(s.type==="text"||s.type==="counter")&&this.textBoxes.push(this.boxOf(c,0,0)),t.id&&c.length){let d=pg(s,t.scope)??$g(this.boxOf(c,0,0));this.named.set(t.id,{els:c,anchor:d,dx:0,dy:0})}return o}measure(t){let r=[this.layers.ink,this.layers.highlight,this.defs],a=r.map(s=>s.childElementCount);t();let n=r.map((s,o)=>[...s.children].slice(a[o])),i=[...n[0],...n[1]],l=i.length?this.boxOf(i,0,0):null;return n.flat().forEach(s=>s.remove()),l}settle(t,r,a){let n=t.step,i=n.type==="text"?!n.rotate:EE.includes(n.type);if(!(n.place&&hs.includes(n.type))&&!i)return n;let l=this.measure(()=>this.build(n,r,a,t.scope,!1));if(!l)return n;let[s,o]=[0,0],c=n.place&&this.named.get(ki(n.place.to,t.scope));if(n.place&&c&&([s,o]=Qf(l,this.boxOf(c.els,c.dx,c.dy),n.place.side,n.place.gap,n.place.align),s+=t.nudge?.[0]??0,o+=t.nudge?.[1]??0),i){let h={...l,x:l.x+s,y:l.y+o},[d,f]=Jf(h,this.paper.w,this.paper.h);s+=d,o+=f,(n.type==="text"||n.type==="counter")&&(o+=xg({...h,x:h.x+d,y:h.y+f},this.textBoxes,this.paper.h))}return s||o?ms(n,s,o):n}arrange(t,r,a){let n=t.step,i=n.steps.flatMap((h,d)=>gs(h,t.scope,[...t.path,d])),l=i.map(h=>this.measure(()=>this.build(h.step,[r,...h.path].join("_"),this.seedOf(r,h.path),h.scope,!1))??{x:0,y:0,w:0,h:0}),s=yg(n.type,l,this.pt(n.at,t.scope),n.gap??24,n.type==="grid"?"center":n.align??"center",n.type==="grid"?n.columns:1),o=[],c=this.made(()=>{o=i.flatMap((h,d)=>this.buildLeaf({...h,step:ms(h.step,...s[d]),arranged:!0},r,a))});if(t.id&&c.length){let h=this.boxOf(c,0,0);this.named.set(t.id,{els:c,anchor:$g(h),dx:0,dy:0})}return o}boxOf(t,r,a){let n=t.map(c=>c.getBBox()),i=Math.min(...n.map(c=>c.x)),l=Math.min(...n.map(c=>c.y)),s=Math.max(...n.map(c=>c.x+c.width))-i,o=Math.max(...n.map(c=>c.y+c.height))-l;return{x:i+r,y:l+a,w:s,h:o}}place(t,r,a){for(let n of t.els)n.dataset.base===void 0&&(n.dataset.base=n.getAttribute("transform")??""),n.setAttribute("transform",`translate(${r} ${a}) ${n.dataset.base}`.trim()),n.dataset.dx=String(r),n.dataset.dy=String(a)}makePencil(){let t=Qt("g",{"aria-hidden":"true",class:"dw-pencil"});t.style.opacity="0",t.style.transition="opacity .25s",t.style.pointerEvents="none";let r=Qt("g",{transform:"translate(-3,-46) scale(1.15)"});return r.append(Qt("path",{d:"M3 40 L 8 28 L 33 3 L 41 11 L 16 36 Z",fill:"#FFD25E",stroke:kn,"stroke-width":2,"stroke-linejoin":"round"}),Qt("path",{d:"M3 40 L 8 28 L 16 36 Z",fill:"#F1D9B5",stroke:kn,"stroke-width":2,"stroke-linejoin":"round"}),Qt("path",{d:"M3 40 L 5.3 34.4 L 8.6 37.7 Z",fill:kn}),Qt("path",{d:"M29 7 L 37 15",stroke:kn,"stroke-width":2})),t.append(r),t}roughOpts(t,r){return{stroke:t?.color??kn,strokeWidth:t?.width??2.6,roughness:t?.roughness??1.6,bowing:t?.bowing??1.4,fill:t?.fill,fillStyle:t?.fillStyle??"hachure",hachureGap:7,seed:r}}tint(t){return t&&this.theme==="chalkboard"?AE[t.toLowerCase()]??t:t}pt(t,r){return[Et(t[0],r),Et(t[1],r)]}build(t,r,a,n,i){let l=this.roughOpts(t.style,a),s=this.gen,o=c=>this.pt(c,n);switch(t.type){case"card":{let[c,h]=o(t.at),d=Et(t.w,n),f=Et(t.h,n),g=t.lines??[];if(d<40||f<70+g.length*28)throw new Error(`Card "${t.title}": not enough room for its content.`);let p=this.addDrawable(s.rectangle(c,h,d,f,l),t.style,i);return[t.title,...g].forEach((x,y)=>{let $=this.addText({type:"text",at:[c+d/2,h+38+y*28],text:x,size:y===0?30:22,anchor:"middle",style:{color:t.style?.color}},`${r}-${y}`,n,i);if($.width>d-24)throw new Error(`Card "${t.title}": text too wide; raise w or shorten the line.`);p.push($)}),p}case"line":return this.addDrawable(s.line(...o(t.from),...o(t.to),l),t.style,i);case"arrow":return this.arrow(o(t.from),o(t.to),l,t.style,i);case"polyline":return this.addDrawable(s.linearPath(t.points.map(o),l),t.style,i);case"polygon":return this.addDrawable(s.polygon(t.points.map(o),l),t.style,i);case"curve":return this.addDrawable(s.curve(t.points.map(o),l),t.style,i);case"circle":{let[c,h]=o(t.center);return this.addDrawable(s.circle(c,h,Et(t.r,n)*2,l),t.style,i)}case"ellipse":{let[c,h]=o(t.center);return this.addDrawable(s.ellipse(c,h,Et(t.rx,n)*2,Et(t.ry,n)*2,l),t.style,i)}case"plot":return this.addDrawable(s.curve(this.samplePlot(t,n),l),t.style,i);case"highlight":{let[c,h]=o(t.from),[d,f]=o(t.to),g=Qt("path",{d:`M${c} ${h} L${d} ${f}`,stroke:this.theme==="chalkboard"&&!t.style?.color?"#7C6E26":this.tint(t.style?.color??"#FFE45C")??"#FFE45C","stroke-width":t.thickness??18,"stroke-linecap":"round",fill:"none",opacity:t.style?.opacity??.8});return g.dataset.marker="1",this.layers.highlight.append(g),[this.hide(g,i)]}case"text":return[this.addText(t,r,n,i)];case"pause":case"repeat":case"when":case"row":case"column":case"grid":return[];case"axis":case"timeline":return this.line(t,r,l,n,i);case"balloon":return this.balloon(t,r,l,n,i);case"brace":return this.brace(t,r,l,n,i);case"note":return this.note(t,r,l,n,i);case"table":return this.table(t,r,l,n,i);case"bars":return this.bars(t,r,l,n,i);case"prop":return this.prop(t,r,l,n,i);case"counter":{let[c,h]=o(t.at),d=Et(t.value,n),f=Qt("g"),g=Qt("text",{x:c,y:h,fill:this.tint(t.style?.color??kn)??kn,"font-family":ru.hand,"font-size":t.size??34,"font-weight":700,"text-anchor":t.anchor??"start"});return g.textContent=Mc(t.format,i?0:d,n,this.locale),f.append(g),this.layers.ink.append(f),[{kind:"count",el:g,format:t.format,value:d,scope:n,locale:this.locale}]}case"link":{let[c,h]=[this.named.get(ki(t.from,n)),this.named.get(ki(t.to,n))];if(!c||!h)return[];let[d,f]=gg(this.boxOf(c.els,c.dx,c.dy),this.boxOf(h.els,h.dx,h.dy)),g=this.arrow(d,f,l,t.style,i);if(t.label){let p=mg(d,f);g.push(this.addText({type:"text",at:p.at,text:t.label,size:22,anchor:p.anchor,style:{color:t.style?.color}},`${r}-label`,n,i))}return g}case"move":{let c=this.named.get(ki(t.target,n));if(!c)return[];let[h,d]=o(t.to),f=[c.dx,c.dy],g=[h-c.anchor[0],d-c.anchor[1]];return[c.dx,c.dy]=g,i?[{kind:"move",entry:c,from:f,to:g,along:t.along??"line",ms:t.ms}]:(this.place(c,...g),this.css?[{kind:"move",entry:c,from:f,to:g,along:t.along??"line",ms:t.ms}]:[])}}}line(t,r,a,n,i){let[l,s]=[this.pt(t.from,n),this.pt(t.to,n)],o=[Et(t.domain[0],n),Et(t.domain[1],n)];if(o[0]===o[1])throw new Error(`${t.type==="axis"?"Axis":"Timeline"}: the domain needs two different ends.`);let c=tu(l,s),h=Math.abs(s[0]-l[0])>=Math.abs(s[1]-l[1]),d=t.style?.color,f=(x,y,$,k=22,I=h?"middle":c[0]<0?"end":"start",_="hand")=>this.addText({type:"text",at:x,text:y,size:k,anchor:I,font:_,style:{color:d}},`${r}-${$}`,n,i),g=(x,y,$)=>this.addDrawable(this.gen.line(x[0]-c[0]*$,x[1]-c[1]*$,x[0]+c[0]*$,x[1]+c[1]*$,{...a,seed:a.seed+10+y}),t.style,i),p=(x,y)=>[x[0]+c[0]*y,x[1]+c[1]*y+(h?c[1]>0?8:-2:7)];if(t.type==="axis"){let x=this.arrow(l,s,a,t.style,i);return bg(o,t.ticks).forEach((y,$)=>{let k=eu(l,s,o,y);k&&x.push(...g(k,$,7),f(p(k,22),ga(t.format??"{v}",{...n,v:y},this.locale),`t${$}`))}),t.label&&x.push(f(h?[s[0],s[1]+c[1]*56+8]:[s[0],s[1]-22],t.label,"label",24,h?"end":"middle")),x}let m=this.addDrawable(this.gen.line(...l,...s,a),t.style,i);return t.marks.forEach((x,y)=>{let $=eu(l,s,o,Et(x.at,n));$&&(m.push(...g($,y,10)),x.label&&m.push(f(p($,-26),x.label,`l${y}`,26,h?"middle":c[0]<0?"start":"end")),x.text&&m.push(f(p($,30),x.text,`x${y}`,21)))}),m}arrow(t,r,a,n,i){return[...this.addDrawable(this.gen.line(...t,...r,a),n,i),...this.head(t,r,a,n,i)]}head(t,r,a,n,i){let l=Math.atan2(r[1]-t[1],r[0]-t[0]),s=16,o=[r[0]-s*Math.cos(l-.45),r[1]-s*Math.sin(l-.45)],c=[r[0]-s*Math.cos(l+.45),r[1]-s*Math.sin(l+.45)];return this.addDrawable(this.gen.linearPath([o,r,c],{...a,seed:a.seed+1}),n,i)}textWidth(t,r,a,n=a==="body"?400:700){let i=Qt("text",{"font-family":ru[a],"font-size":r,"font-weight":n});i.textContent=t,this.layers.ink.append(i);let l=i.getComputedTextLength();return i.remove(),l}wrap(t,r,a){let n=[];for(let i of t.split(/\s+/).filter(Boolean)){let l=n.at(-1);l!==void 0&&this.textWidth(`${l} ${i}`,r,"hand")<=a?n[n.length-1]=`${l} ${i}`:n.push(i)}return n}balloon(t,r,a,n,i){let l=this.named.get(ki(t.to,n));if(!l)return[];let s=this.boxOf(l.els,l.dx,l.dy),o=t.size??24,c=this.wrap(ga(t.text,n,this.locale),o,t.width??240),h=Math.max(...c.map(q=>this.textWidth(q,o,"hand")))+32,d=c.length*o*1.2+22,g=[t.side??"above","right","left","above","below"].map(q=>Qf({x:0,y:0,w:h,h:d},s,q,28)),[p,m]=g.find(([q,C])=>q>=0&&C>=0&&q+h<=this.paper.w&&C+d<=this.paper.h)??g[0];p+=this.leafNudge?.[0]??0,m+=this.leafNudge?.[1]??0;let[x,y]=Jf({x:p,y:m,w:h,h:d},this.paper.w,this.paper.h);[p,m]=[p+x,m+y];let $=16,k=`M${p+$} ${m} H${p+h-$} Q${p+h} ${m} ${p+h} ${m+$} V${m+d-$} Q${p+h} ${m+d} ${p+h-$} ${m+d} H${p+$} Q${p} ${m+d} ${p} ${m+d-$} V${m+$} Q${p} ${m} ${p+$} ${m} Z`,I={...a,fill:t.style?.fill??"#FFFFFF",fillStyle:"solid",roughness:Math.min(a.roughness??1.6,1)},_=this.addDrawable(this.gen.path(k,I),t.style,i),L=[p+h/2,m+d/2],R=ys(s,L,6),W=ys({x:p,y:m,w:h,h:d},R,0);if(t.kind==="thought")for(let[q,C,K]of[[.35,7,2],[.7,4,3]]){let Q=[W[0]+(R[0]-W[0])*q,W[1]+(R[1]-W[1])*q];_.push(...this.addDrawable(this.gen.circle(Q[0],Q[1],C*2,{...I,seed:a.seed+K}),t.style,i))}else{let q=Math.abs(W[0]-L[0])*d>Math.abs(W[1]-L[1])*h?[0,1]:[1,0],C=[W[0]-q[0]*10,W[1]-q[1]*10],K=[W[0]+q[0]*10,W[1]+q[1]*10];_.push(...this.addDrawable(this.gen.polygon([C,R,K],{...I,seed:a.seed+2}),t.style,i))}return c.forEach((q,C)=>{_.push(this.addText({type:"text",at:[L[0],m+11+o*1.2*(C+1)-o*.25],text:q,size:o,anchor:"middle",style:{color:t.style?.color}},`${r}-${C}`,n,i))}),_}brace(t,r,a,n,i){let[l,s]=[this.pt(t.from,n),this.pt(t.to,n)],o=tu(l,s),c=t.flip?[-o[0],-o[1]]:o,h=Math.hypot(s[0]-l[0],s[1]-l[1])||1,d=[(s[0]-l[0])/h,(s[1]-l[1])/h],f=Math.min(16,h*.08),g=(m,x)=>[l[0]+d[0]*h*m+c[0]*x,l[1]+d[1]*h*m+c[1]*x],p=this.addDrawable(this.gen.curve([l,g(.06,f),g(.44,f),g(.5,f*2),g(.56,f),g(.94,f),s],a),t.style,i);if(t.label){let m=Math.abs(d[0])>=Math.abs(d[1]),x=g(.5,f*2+22),y=m?"middle":c[0]<0?"end":"start";p.push(this.addText({type:"text",at:[x[0],x[1]+(m?c[1]>0?8:-2:7)],text:t.label,size:24,anchor:y,style:{color:t.style?.color}},`${r}-label`,n,i))}return p}note(t,r,a,n,i){let l=t.style?.color??"#2F5BEA",s=[],o=this.made(()=>{s.push(this.addText({type:"text",at:t.at,text:t.text,size:t.size??24,style:{color:l}},`${r}-text`,n,i))}),c=this.boxOf(o,0,0),h=t.to!==void 0?this.named.get(ki(t.to,n)):void 0;if(t.to!==void 0&&!h)return s;let d=h?this.boxOf(h.els,h.dx,h.dy):null,f=d?[d.x+d.w/2,d.y+d.h/2]:this.pt(t.point,n),[g,p]=[c.x+c.w/2,c.y+c.h/2],m=f[1]>c.y+c.h,x=f[1]<c.y,y=m?[g,c.y+c.h+6]:x?[g,c.y-6]:f[0]>g?[c.x+c.w+8,p]:[c.x-8,p],$=d?ys(d,y,8):f,[k,I]=[(y[0]+$[0])/2,(y[1]+$[1])/2],_=Math.hypot($[0]-y[0],$[1]-y[1])||1,L=Q=>[k-($[1]-y[1])/_*_*.22*Q,I+($[0]-y[0])/_*_*.22*Q],[R,W]=[c.x+c.w/2,c.y+c.h/2],q=Q=>Math.hypot(Q[0]-R,Q[1]-W),C=q(L(1))>=q(L(-1))?L(1):L(-1),K={...a,stroke:l};return s.push(...this.addDrawable(this.gen.curve([y,C,$],K),{...t.style,color:l},i),...this.head(C,$,K,{...t.style,color:l},i)),s}table(t,r,a,n,i){let[l,s]=this.pt(t.at,n),o=t.size??22,c=t.header??!0,h=t.rows.map(I=>I.map(_=>ga(_,n,this.locale))),d=Math.max(...h.map(I=>I.length)),f=I=>c&&I===0?"hand":"body",g=Array.from({length:d},(I,_)=>Math.max(40,...h.map((L,R)=>L[_]?this.textWidth(L[_],o,f(R)):0))+28),p=o*1.7,[m,x]=[g.reduce((I,_)=>I+_,0),p*h.length],y=this.addDrawable(this.gen.rectangle(l,s,m,x,a),t.style,i),$=a.seed+3;for(let I=1;I<h.length;I++)y.push(...this.addDrawable(this.gen.line(l,s+p*I,l+m,s+p*I,{...a,seed:$++,strokeWidth:c&&I===1?2.6:1.4}),t.style,i));let k=l;return g.slice(0,-1).forEach(I=>{k+=I,y.push(...this.addDrawable(this.gen.line(k,s,k,s+x,{...a,seed:$++,strokeWidth:1.4}),t.style,i))}),h.forEach((I,_)=>{let L=l;I.forEach((R,W)=>{R&&y.push(this.addText({type:"text",at:[L+g[W]/2,s+p*_+p*.66],text:R,size:o,font:f(_),anchor:"middle",style:{color:t.style?.color}},`${r}-${_}-${W}`,{},i)),L+=g[W]})}),y}bars(t,r,a,n,i){let[l,s,o,c]=[Et(t.box.x,n),Et(t.box.y,n),Et(t.box.w,n),Et(t.box.h,n)],h=t.values.map(m=>Et(m,n)),d=t.max!==void 0?Et(t.max,n):Math.max(...h,0)||1,f=o/h.length,g=t.style?.fill??"#2F5BEA",p=this.addDrawable(this.gen.line(l,s+c,l+o,s+c,a),t.style,i);return h.forEach((m,x)=>{let y=Math.max(0,Math.min(c,m/d*c)),$=l+f*x+f/2;y>=1&&p.push(...this.addDrawable(this.gen.rectangle($-f*.3,s+c-y,f*.6,y,{...a,fill:g,fillStyle:t.style?.fillStyle??"hachure",seed:a.seed+5+x}),{...t.style,fill:g},i)),p.push(this.addText({type:"text",at:[$,s+c-y-10],text:ga(t.format??"{v}",{...n,v:m},this.locale),size:22,anchor:"middle",style:{color:t.style?.color}},`${r}-v${x}`,n,i));let k=t.labels?.[x];k&&p.push(this.addText({type:"text",at:[$,s+c+30],text:k,size:22,anchor:"middle",style:{color:t.style?.color}},`${r}-l${x}`,n,i))}),p}prop(t,r,a,n,i){let[l,s]=this.pt(t.at,n),o=t.size===void 0?_f:Et(t.size,n),c=Qt("g");c.dataset.prop=t.name,this.layers.ink.append(c);let h=t.style?.width??Math.max(1.2,Math.min(2.6,o/36)),d=[];return U1(t.name,[l,s],o,t.flip??!1,t.mood).forEach((f,g)=>{let p=f.kind!=="circle"&&f.kind!=="polygon"?void 0:f.main&&t.style?.fill?t.style.fill:f.fill,m=f.fine?{...a,strokeWidth:Math.max(.8,h*.45),roughness:.3,bowing:0,fill:p,fillStyle:"solid",seed:a.seed+g}:{...a,strokeWidth:h,fill:p,fillStyle:t.style?.fillStyle??"solid",seed:a.seed+g},x=f.kind==="circle"?this.gen.circle(f.c[0],f.c[1],f.r*2,m):f.kind==="polygon"?this.gen.polygon(f.points,m):f.kind==="curve"?this.gen.curve(f.points,m):this.gen.linearPath(f.points,m);d.push(...this.addDrawable(x,{opacity:t.style?.opacity,dashed:t.style?.dashed},i,c))}),t.label&&d.push(this.addText({type:"text",at:[l,s+28],text:t.label,size:22,anchor:"middle",style:{color:t.style?.color}},`${r}-label`,n,i,c)),d}samplePlot(t,r){let a=t.var??"x",[n,i]=[Et(t.domain[0],r),Et(t.domain[1],r)],[l,s]=[Et(t.range[0],r),Et(t.range[1],r)];if(n===i||l===s)throw new Error("Plot: domain and range need different ends.");let o=Et(t.box.x,r),c=Et(t.box.y,r),h=Et(t.box.w,r),d=Et(t.box.h,r),f=t.samples??40,g=[];for(let p=0;p<=f;p++){let m=n+(i-n)*p/f,x=Et(t.fn,{...r,[a]:m}),y=c+d-(x-l)/(s-l)*d;g.push([o+(m-n)/(i-n)*h,Math.max(c,Math.min(c+d,y))])}return g}addDrawable(t,r,a,n=this.layers.ink){let i=[];return this.gen.toPaths(t).forEach(l=>{let s=Qt("path",{d:l.d,stroke:this.tint(l.stroke)??"none","stroke-width":l.strokeWidth,fill:this.tint(l.fill)??"none","stroke-linecap":"round","stroke-linejoin":"round"});r?.opacity!==void 0&&s.setAttribute("opacity",String(r.opacity)),r?.fill&&l.stroke===r.fill&&(l.fill??"none")==="none"&&(s.dataset.hatch="1"),n.append(s),l.fill&&l.fill!=="none"?(a&&(s.style.opacity="0"),i.push({kind:"fade",el:s,opacity:r?.opacity??1})):(i.push(this.hide(s,a)),r?.dashed&&(s.dataset.dashed="1"),r?.dashed&&!a&&s.setAttribute("stroke-dasharray","9 8"))}),i}hide(t,r){let a=t.getTotalLength();return r&&(t.style.strokeDasharray=`${a} ${a}`,t.style.strokeDashoffset=`${a}`),{kind:"path",el:t,length:a}}addText(t,r,a,n,i=this.layers.ink){let[l,s]=this.pt(t.at,a),o=t.rotate??0,c=Qt("g",o?{transform:`rotate(${o} ${l} ${s})`}:{}),h=Qt("text",{x:l,y:s,fill:this.tint(t.style?.color??kn)??kn,"font-family":ru[t.font??"hand"],"font-size":t.size??30,"font-weight":t.font==="body"?400:700,"text-anchor":t.anchor??"start"});h.textContent=ga(t.text,a,this.locale),c.append(h),i.append(c);let d=h.getBBox(),f=`${this.uid}-clip-${this.run}-${r}`,g=Qt("clipPath",{id:f}),p=Qt("rect",{x:d.x-4,y:d.y-12,width:n?0:d.width+8,height:d.height+24});return g.append(p),this.defs.append(g),h.setAttribute("clip-path",`url(#${f})`),{kind:"text",clip:p,width:d.width+8,x:d.x-4,y:s+2,angle:o,ox:l,oy:s}}play(t,r,a){let n=t.find(i=>i.kind==="text")??t.find(i=>i.kind==="path");return this.layers.pencil.style.opacity=n?"1":"0",this.tween(r,a,i=>{for(let l of t)if(l.kind==="path")this.revealPath(l,i,l===n);else if(l.kind==="text")this.revealText(l,i,l===n);else if(l.kind==="count")l.el.textContent=Mc(l.format,i===1?l.value:Zf(l.value,i),l.scope,l.locale);else if(l.kind==="move"){let s=l.ms?Math.min(1,i*r/l.ms):i;this.place(l.entry,...Kf(l.from,l.to,s,l.along))}else l.el.style.opacity=String(i*l.opacity)})}revealPath(t,r,a){let n=t.length*r;if(t.el.style.strokeDashoffset=String(t.length-n),a){let i=t.el.getPointAtLength(n);this.layers.pencil.setAttribute("transform",`translate(${i.x} ${i.y})`)}r===1&&(t.el.style.strokeDasharray="",t.el.style.strokeDashoffset="",t.el.dataset.dashed&&t.el.setAttribute("stroke-dasharray","9 8"))}revealText(t,r,a){let n=t.width*r;if(t.clip.setAttribute("width",String(n)),!a)return;let i=this.layers.pencil,l=t.angle*Math.PI/180,s=t.x+n-t.ox,o=t.y-t.oy,c=t.ox+s*Math.cos(l)-o*Math.sin(l),h=t.oy+s*Math.sin(l)+o*Math.cos(l);i.setAttribute("transform",`translate(${c} ${h-6-Math.abs(Math.sin(r*40))*7})`)}schedule(t,r,a){if(a<=0)return;let n=(i,l,s=a,o=r,c=SE,h="backwards")=>{i.style.animation=`${l} ${Math.round(s)}ms ${c} ${Math.round(o)}ms ${h}`};for(let i of t)if(i.kind==="path")i.el.style.setProperty("--l",String(Math.ceil(i.length)+1)),n(i.el,"ct-draw");else if(i.kind==="text")i.clip.style.transformBox="fill-box",i.clip.style.transformOrigin="0 0",n(i.clip,"ct-write");else if(i.kind==="fade")n(i.el,"ct-fade");else if(i.kind==="count"){let s=a/12;for(let o=0;o<12;o++){let c=i.el.cloneNode();c.textContent=Mc(i.format,Zf(i.value,wg(o/12)),i.scope,i.locale),c.style.opacity="0",n(c,"ct-show",s,r+o*s,"step-end","none"),i.el.before(c)}n(i.el,"ct-wait",r+a,0,"step-end")}else if(i.kind==="move"){let l=Kf(i.from,i.to,.5,i.along);for(let s of i.entry.els){let o=Qt("g");s.replaceWith(o),o.append(s),o.style.setProperty("--fx",`${i.from[0]-i.to[0]}px`),o.style.setProperty("--fy",`${i.from[1]-i.to[1]}px`),o.style.setProperty("--mx",`${l[0]-i.to[0]}px`),o.style.setProperty("--my",`${l[1]-i.to[1]}px`),n(o,"ct-move",i.ms??a)}}}tween(t,r,a){return new Promise((n,i)=>{let l=performance.now(),s=0,o=c=>{if(r!==this.run)return i(new xs);s+=(c-l)*this.speed,l=c;let h=Math.min(1,s/Math.max(1,t));a(h===1?1:wg(h)),h<1?requestAnimationFrame(o):n()};requestAnimationFrame(o)})}};ds();xe();ds();var Ac=2,kg=.2,IE=3,au=e=>Math.max(0,e.w)*Math.max(0,e.h);function Mg(e,t){let r=Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x),a=Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y);return r>0&&a>0?r*a:0}var NE=(e,[t,r])=>t>e.x+2&&t<e.x+e.w-2&&r>e.y+2&&r<e.y+e.h-2,_l=e=>e.text?` (\xAB${e.text.slice(0,40)}\xBB)`:"",LE=(e,t)=>{let[r,a]=[e.box,t.box];return(e.type==="circle"||e.type==="ellipse")&&a.x>=r.x-2&&a.y>=r.y-2&&a.x+a.w<=r.x+r.w+2&&a.y+a.h<=r.y+r.h+2};function RE(e,t,r){let a=new Map;for(let i of e){let l=i.box;(l.x<-Ac||l.y<-Ac||l.x+l.w>t+Ac||l.y+l.h>r+Ac)&&a.set(`off:${i.step}`,`step ${i.step+1}${_l(i)} goes off the paper (${t}\xD7${r})`)}let n=e.filter(i=>i.kind==="text");for(let i=0;i<n.length;i++)for(let l=i+1;l<n.length;l++){let[s,o]=[n[i],n[l]];s.step!==o.step&&Mg(s.box,o.box)>kg*Math.min(au(s.box),au(o.box))&&a.set(`texts:${s.step}:${o.step}`,`the texts of steps ${s.step+1}${_l(s)} and ${o.step+1}${_l(o)} overlap`)}for(let i of n)for(let l of e)l.kind!=="stroke"||l.step===i.step||LE(l,i)||(l.points??[]).filter(s=>NE(i.box,s)).length>IE&&a.set(`cross:${l.step}:${i.step}`,`a line of step ${l.step+1} crosses the text of step ${i.step+1}${_l(i)}`);for(let i of n)for(let l of e)l.kind!=="shape"||l.step===i.step||Mg(i.box,l.box)>kg*au(i.box)&&a.set(`on:${l.step}:${i.step}`,`the text of step ${i.step+1}${_l(i)} sits on the drawing of step ${l.step+1}`);return[...a].map(([i,l])=>({key:i,text:l}))}function OE(e){let t=Object.entries(e.params??{}),r=xi(e),a=[r];for(let n of Object.keys(e.switches??{}))a.length<9&&a.push({...r,[n]:r[n]?0:1});for(let[n,i]of t)for(let l of[i.min,i.max])l!==i.value&&a.length<9&&a.push({...r,[n]:l});return a}function DE(e,t){let r=[];for(let a of e.querySelectorAll("[data-step]")){let n=Number(a.dataset.step),i=a.dataset.type??t.steps[n]?.type,[l,s]=[Number(a.dataset.dx??0),Number(a.dataset.dy??0)],o=d=>({x:d.x+l,y:d.y+s,w:d.width,h:d.height}),c=a.querySelector("text");if(a.dataset.prop){let d=[...a.querySelectorAll("path")].map(p=>o(p.getBBox())),f=Math.min(...d.map(p=>p.x)),g=Math.min(...d.map(p=>p.y));r.push({step:n,type:i,kind:"shape",box:{x:f,y:g,w:Math.max(...d.map(p=>p.x+p.w))-f,h:Math.max(...d.map(p=>p.y+p.h))-g}})}if(c){r.push({step:n,type:i,kind:"text",text:c.textContent??"",box:o(c.getBBox())});continue}if(!(a instanceof SVGPathElement))continue;let h=o(a.getBBox());if(a.dataset.marker)r.push({step:n,type:i,kind:"marker",box:h});else if(a.dataset.hatch)r.push({step:n,type:i,kind:"hatch",box:h});else if((a.getAttribute("fill")??"none")!=="none")r.push({step:n,type:i,kind:"fill",box:h});else{if(a.getAttribute("stroke")==="none"||Number(a.getAttribute("stroke-width")??1)===0)continue;{let d=a.getTotalLength(),f=Math.min(300,Math.max(2,Math.ceil(d/6))),g=[];for(let p=0;p<=f;p++){let m=a.getPointAtLength(d*p/f);g.push([m.x+l,m.y+s])}r.push({step:n,type:i,kind:"stroke",box:h,points:g})}}}return r}async function vg(e){let t=document.createElement("div");t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;left:-20000px;top:0;width:900px;visibility:hidden;pointer-events:none";let r=document.createElementNS("http://www.w3.org/2000/svg","svg");t.append(r),document.body.append(t);let a=new Map,n=OE(e);try{let l=new Gn(r);for(let s of n){await l.render(e,s,{animate:!1});let o=Object.entries(s).map(([c,h])=>`${c}=${h}`).join(", ");for(let c of RE(DE(r,e),e.width,e.height)){let h=a.get(c.key);a.set(c.key,{text:h?.text??c.text,at:[...h?.at??[],o]})}}}finally{t.remove()}let i=n.length;return{combos:i,keys:[...a.keys()],problems:[...a.values()].map(({text:l,at:s})=>s.length===i||!s[0]?l:`${l} (at ${s.join("; ")})`)}}Ml();xe();var Ec="http://www.w3.org/2000/svg",Eg=e=>{let t=e.viewBox.baseVal;return t&&t.width?{w:t.width,h:t.height}:{w:e.clientWidth||900,h:e.clientHeight||560}};function PE(e,t,r){let{w:a,h:n}=Eg(e),i=e.cloneNode(!0);i.querySelectorAll(".dw-pointer").forEach(o=>o.remove()),i.setAttribute("xmlns",Ec),i.setAttribute("width",String(a)),i.setAttribute("height",String(n));let l=document.createElementNS(Ec,"style");l.textContent=t;let s=document.createElementNS(Ec,"rect");return s.setAttribute("width","100%"),s.setAttribute("height","100%"),s.setAttribute("fill",r),i.prepend(s),i.prepend(l),new XMLSerializer().serializeToString(i)}async function Ag(e,t,r,a=2,n){let{w:i,h:l}=Eg(e),s=new Image;s.src=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(PE(e,t,r))}`,await s.decode();let o=n??document.createElement("canvas");o.width=Math.round(i*a),o.height=Math.round(l*a);let c=o.getContext("2d");return c.fillStyle=r,c.fillRect(0,0,o.width,o.height),c.drawImage(s,0,0,o.width,o.height),o}function zE(e){let t=document.createElement("div");t.setAttribute("aria-hidden","true"),t.style.cssText=`position:fixed;left:-20000px;top:0;width:${e}px;pointer-events:none`;let r=document.createElementNS(Ec,"svg");return t.append(r),document.body.append(t),{svg:r,done:()=>t.remove()}}async function nu(e,t,r,a){let{svg:n,done:i}=zE(e.width),l=document.createElement("canvas"),s=new Gn(n),o=!1,c=async()=>{if(!o){o=!0;try{await Ag(n,r.faces,r.paper,r.scale,l),await a(l)}finally{o=!1}}},h=setInterval(()=>void c(),1e3/r.fps);try{await s.render(e,t,{animate:!0,theme:r.theme,beforeBeat:r.say,onStep:d=>r.onProgress?.((d+1)/e.steps.length)}),await new Promise(d=>setTimeout(d,1500))}finally{for(clearInterval(h);o;)await new Promise(d=>setTimeout(d,20));await Ag(n,r.faces,r.paper,r.scale,l),await a(l),s.stop(),i()}}async function Sg(e,t,r){let a=document.createElement("canvas");a.width=e.width,a.height=e.height;let n=a.getContext("2d");n.fillStyle=r.paper,n.fillRect(0,0,a.width,a.height);let i=a.captureStream(24),l=r.audio?.(i),s=["video/webm;codecs=vp9,opus","video/webm;codecs=vp8,opus","video/webm"].find(d=>MediaRecorder.isTypeSupported(d)),o=new MediaRecorder(i,s?{mimeType:s}:void 0),c=[];o.ondataavailable=d=>d.data.size&&c.push(d.data);let h=new Promise(d=>o.onstop=()=>d());o.start(500);try{await nu(e,t,{...r,fps:12,scale:1},d=>{n.drawImage(d,0,0,a.width,a.height)})}finally{o.stop(),await h,l?.()}return new Blob(c,{type:o.mimeType||"video/webm"})}var bs=D1(Bg(),1),sS={en:{start:"Start",back:"Back",next:"Next",playAll:"Play all",chapter:(e,t)=>`Chapter ${e} of ${t}`,values:"Move the values",think:"Think about it",answer:"One possible answer",caveat:"Where the comparison stops",download:"Download",checking:"Checking the drawing\u2026",checked:e=>`Checked at ${e} ${e===1?"setting":"settings"}: nothing leaves the paper and no text covers another.`,problems:"The check found:",broken:"This drawing could not be opened:",keys:"\u2192 next \xB7 \u2190 back \xB7 Space play all",made:"Made with chalk-talk",board:"Chalkboard",voice:"Narration",recording:e=>`Recording\u2026 ${e}%`,show:"Show me",yourTurn:"Your turn",transcript:"Transcript",again:"Try another",valuesShort:e=>`Values (${e})`,expand:"Expand",all:"All"},pt:{start:"In\xEDcio",back:"Voltar",next:"Pr\xF3ximo",playAll:"Tocar tudo",chapter:(e,t)=>`Cap\xEDtulo ${e} de ${t}`,values:"Mexa nos valores",think:"Para pensar",answer:"Uma resposta poss\xEDvel",caveat:"Onde a compara\xE7\xE3o para",download:"Baixar",checking:"Conferindo o desenho\u2026",checked:e=>`Conferido em ${e} ${e===1?"posi\xE7\xE3o":"posi\xE7\xF5es"}: nada sai do papel e nenhum texto cobre outro.`,problems:"A confer\xEAncia achou:",broken:"Este desenho n\xE3o p\xF4de ser aberto:",keys:"\u2192 pr\xF3ximo \xB7 \u2190 voltar \xB7 Espa\xE7o tocar tudo",made:"Feito com chalk-talk",board:"Quadro-negro",voice:"Narra\xE7\xE3o",recording:e=>`Gravando\u2026 ${e}%`,show:"Mostrar",yourTurn:"Sua vez",transcript:"Transcri\xE7\xE3o",again:"Tentar outra",valuesShort:e=>`Valores (${e})`,expand:"Expandir",all:"Tudo"}},lS=()=>navigator.language.toLowerCase().startsWith("pt")?"pt":"en",oS=`
|
|
290
|
+
<header class="head">
|
|
291
|
+
<div><span class="eyebrow" data-part="category"></span><h1 data-part="title"></h1></div>
|
|
292
|
+
<div class="tools"><button data-part="board" type="button" aria-pressed="false"></button><button data-part="voice" type="button" aria-pressed="false"></button><div data-part="downloads" class="downloads"><button data-part="png" type="button">PNG</button><button data-part="svg" type="button">SVG</button><button data-part="gif" type="button">GIF</button><button data-part="webm" type="button">WebM</button></div></div>
|
|
293
|
+
</header>
|
|
294
|
+
<div class="top"><nav data-part="chapters" class="chapters"></nav><button data-part="values-toggle" type="button" aria-expanded="false" hidden></button><button data-part="expand" type="button" hidden></button></div>
|
|
295
|
+
<div class="layout">
|
|
296
|
+
<section class="board">
|
|
297
|
+
<div class="paper"><svg data-part="paper" role="img"></svg><div data-part="ask" class="ask" role="dialog" aria-live="polite" hidden></div></div>
|
|
298
|
+
<div class="bar">
|
|
299
|
+
<button data-part="back" type="button"></button>
|
|
300
|
+
<button data-part="next" type="button" class="primary"></button>
|
|
301
|
+
<p data-part="say" class="say" aria-live="polite"></p>
|
|
302
|
+
<span data-part="count" class="count"></span>
|
|
303
|
+
<button data-part="all" type="button" class="ghost"></button>
|
|
304
|
+
</div>
|
|
305
|
+
</section>
|
|
306
|
+
<aside>
|
|
307
|
+
<section data-part="controls" class="card controls"></section>
|
|
308
|
+
<section data-part="learning" class="card learning"></section>
|
|
309
|
+
<section data-part="quiz" class="card quiz" hidden></section>
|
|
310
|
+
<div data-part="check" class="check" role="status"></div>
|
|
311
|
+
<details data-part="transcript" class="card transcript"></details>
|
|
312
|
+
<p class="foot"><span data-part="keys"></span><br><span data-part="made"></span></p>
|
|
313
|
+
</aside>
|
|
314
|
+
</div>`;function Ot(e,t={},r=""){let a=document.createElement(e);for(let[n,i]of Object.entries(t))a.setAttribute(n,i);return r&&(a.textContent=r),a}var cS=()=>Promise.all([...document.fonts].map(e=>e.load())).catch(()=>{});async function Yg(e,t,r){let a=sS[r.lang??lS()],n=!!r.compact;e.classList.add("chalk-talk"),e.classList.toggle("is-compact",n),e.innerHTML=oS;let i=S=>e.querySelector(`[data-part="${S}"]`),l=S=>i(S),s=X1(t,a.start),o=e.querySelector('[data-part="paper"]'),c=i("say"),h=new Gn(o,S=>c.textContent=S),d=matchMedia("(prefers-reduced-motion: reduce)").matches,f=xi(t),g=0,p=0,m=t.theme??r.theme??"paper",x=!1,y=!1;i("category").textContent=t.category??"",i("title").textContent=t.title;let $=s.map((S,M)=>{let b=Ot("button",{type:"button"},`${M+1} \xB7 ${S.title}`);return b.addEventListener("click",()=>R(M,M===g+1)),i("chapters").append(b),b});l("back").textContent=`\u25C0 ${a.back}`,l("next").textContent=`${a.next} \u25B6`,l("all").textContent=n?`\u25B6 ${a.all}`:a.playAll,i("keys").textContent=r.keys==="document"?a.keys:"",i("made").textContent=a.made;function k(){$.forEach((S,M)=>{S.className=M===g?"is-on":M<g?"is-seen":"",S.setAttribute("aria-current",M===g?"step":"false")}),i("count").textContent=a.chapter(g+1,s.length),l("back").disabled=g===0,l("next").disabled=g===s.length-1}function I(S){let M=i("ask");M.replaceChildren(Ot("p",{},S));let b=Ot("button",{type:"button",class:"primary"},a.show);return M.append(b),M.hidden=!1,b.focus({preventScroll:!0}),new Promise(E=>b.addEventListener("click",()=>{M.hidden=!0,E()},{once:!0}))}async function _(S,M,b){let E=t.steps[M];E.type==="pause"&&E.ask&&await I(ga(E.ask,vc(t,f),t.locale)),b===p&&x&&S&&await hS(S,t.locale??"pt-BR")}function L(){e.querySelector(".paper").classList.toggle("is-board",m==="chalkboard"),i("board").setAttribute("aria-pressed",String(m==="chalkboard"))}async function R(S,M,b){if(y)return;g=Math.max(0,Math.min(s.length-1,S)),k();let E=++p;try{await h.render(t,f,{animate:M&&!d,until:s[g].end,from:b??(g>0?s[g-1].end+1:0),theme:m,beforeBeat:(w,T)=>_(w,T,E)}),E===p&&g===s.length-1&&Q()}catch(w){if(E===p)throw w}}l("board").textContent=a.board,i("board").addEventListener("click",()=>{m=m==="chalkboard"?"paper":"chalkboard",L(),R(g,!1)}),L(),"speechSynthesis"in window&&!n?(l("voice").textContent=`\u{1F508} ${a.voice}`,i("voice").addEventListener("click",()=>{x=!x,i("voice").setAttribute("aria-pressed",String(x)),x||speechSynthesis.cancel()})):i("voice").remove(),i("back").addEventListener("click",()=>R(g-1,!1)),i("next").addEventListener("click",()=>R(g+1,!0)),i("all").addEventListener("click",()=>R(s.length-1,!0,0));let W=S=>{if(!S.target.closest("input, button, summary, textarea, [contenteditable]")){if(S.key==="ArrowRight")R(g+1,!0);else if(S.key==="ArrowLeft")R(g-1,!1);else if(S.key===" ")S.preventDefault(),R(s.length-1,!0,0);else return;S.stopPropagation()}},q=r.keys==="document"?document:e;if(q===e&&(e.tabIndex=0),q.addEventListener("keydown",W),C(),n){let S=l("values-toggle"),M=Object.keys(t.params??{}).length+Object.keys(t.switches??{}).length;M&&(S.hidden=!1,S.textContent=`\u2699 ${a.valuesShort(M)}`,S.addEventListener("click",()=>{let b=!e.classList.contains("show-values");e.classList.toggle("show-values",b),S.setAttribute("aria-expanded",String(b))}));for(let b of["learning","quiz","check","transcript"])i(b).remove();i("downloads").remove(),i("board").remove(),e.querySelector(".foot").remove()}else K(),G(),Y();if(r.onExpand){let S=l("expand");S.hidden=!1,S.textContent=`\u2922 ${a.expand}`,S.addEventListener("click",r.onExpand)}return await cS(),n||N(),await R(0,!n),{destroy(){y=!0,p++,h.stop(),q.removeEventListener("keydown",W),x&&speechSynthesis.cancel(),e.replaceChildren()}};function C(){let S=i("controls"),M=Object.entries(t.params??{}),b=Object.entries(t.switches??{});if(!M.length&&!b.length)return S.remove();S.append(Ot("h2",{},a.values));for(let[E,w]of M){let T=Ot("label",{class:"value"}),A=Ot("b",{},nc(f[E],void 0,t.locale)),v=Ot("input",{type:"range",min:String(w.min),max:String(w.max),step:String(w.step),value:String(f[E])});v.addEventListener("input",()=>{f[E]=Number(v.value),A.textContent=nc(f[E],void 0,t.locale),R(g,!1)}),T.append(Ot("span",{},w.label),A,v),S.append(T)}for(let[E,w]of b){let T=Ot("label",{class:"switch"}),A=Ot("input",{type:"checkbox"});A.checked=f[E]===1,A.addEventListener("change",()=>{f[E]=A.checked?1:0,R(g,!1)}),T.append(A,Ot("span",{},w.label)),S.append(T)}}function K(){let S=i("learning"),M=t.learning;if(!M)return S.remove();let b=Ot("details");b.append(Ot("summary",{},a.answer),Ot("p",{},M.answer)),S.append(Ot("h2",{},a.think),Ot("p",{},M.question),b,Ot("p",{class:"caveat"},`${a.caveat}: ${M.caveat}`))}function Q(){let S=i("quiz");if(!S||!t.quiz||S.childElementCount)return;S.hidden=!1;let M=Ot("p",{class:"why",role:"status"}),b=Ot("div",{class:"options"});for(let E of t.quiz.options){let w=Ot("button",{type:"button"},E.text);w.addEventListener("click",()=>{b.querySelectorAll("button").forEach(T=>T.classList.remove("is-right","is-wrong")),w.classList.add(E.right?"is-right":"is-wrong"),M.textContent=E.why,M.className=E.right?"why is-right":"why"}),b.append(w)}S.append(Ot("h2",{},a.yourTurn),Ot("p",{},t.quiz.question),b,M)}function G(){let S=i("transcript"),M=vc(t,xi(t)),b=Ot("ol");for(let E of s){let w=t.steps.slice(E.start,E.end+1).flatMap(A=>[A.say,A.type==="pause"?A.ask:void 0].filter(v=>!!v)),T=Ot("li");T.append(Ot("b",{},E.title));for(let A of w)T.append(Ot("p",{},ga(A,M,t.locale)));b.append(T)}S.append(Ot("summary",{},a.transcript),b)}function Y(){let S=i("downloads");S.prepend(Ot("span",{},a.download));let M=T=>`${(t.id||"drawing").replace(/[^a-z0-9-]+/gi,"-").slice(0,60)}.${T}`;i("svg").addEventListener("click",()=>cu(new Blob([Wg(o,r.faces)],{type:"image/svg+xml"}),M("svg")));let b=(T,A,v)=>T.addEventListener("click",async()=>{let D=T.textContent;S.querySelectorAll("button").forEach(z=>z.disabled=!0);try{cu(await A(z=>T.textContent=a.recording(Math.round(z*100))),M(v))}finally{T.textContent=D,S.querySelectorAll("button").forEach(z=>z.disabled=!1)}}),E=r.faces,w=()=>m==="chalkboard"?"#26372E":"#FBF7EE";"MediaRecorder"in window?b(l("webm"),T=>Sg(t,xi(t),{faces:E,paper:w(),theme:m,onProgress:T}),"webm"):i("webm").remove(),b(l("gif"),async T=>{let A=(0,bs.GIFEncoder)();return await nu(t,xi(t),{faces:E,paper:w(),theme:m,onProgress:T,fps:8,scale:.6},v=>{let{data:D}=v.getContext("2d").getImageData(0,0,v.width,v.height),z=(0,bs.quantize)(D,64);A.writeFrame((0,bs.applyPalette)(D,z),v.width,v.height,{palette:z,delay:125})}),A.finish(),new Blob([A.bytes()],{type:"image/gif"})},"gif"),i("png").addEventListener("click",()=>{let T=new Image;T.onload=()=>{let A=Ot("canvas",{width:String(t.width*2),height:String(t.height*2)});A.getContext("2d").drawImage(T,0,0,t.width*2,t.height*2),A.toBlob(v=>v&&cu(v,M("png")),"image/png")},T.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(Wg(o,r.faces))})}async function N(){let S=i("check");S.textContent=a.checking;let M=await vg(t);if(y)return;if(S.className=M.problems.length?"check is-warn":"check is-ok",!M.problems.length)return void(S.textContent=`\u2713 ${a.checked(M.combos)}`);S.textContent="";let b=Ot("ul");for(let E of M.problems)b.append(Ot("li",{},E));S.append(Ot("b",{},`! ${a.problems}`),b)}}function hS(e,t){return new Promise(r=>{let a=new SpeechSynthesisUtterance(e);a.lang=t;let n=speechSynthesis.getVoices().find(l=>l.lang.toLowerCase().startsWith(t.toLowerCase().slice(0,2)));n&&(a.voice=n);let i=()=>r();a.onend=i,a.onerror=i,setTimeout(i,2e4),speechSynthesis.speak(a)})}function Wg(e,t){let r=e.cloneNode(!0);r.setAttribute("xmlns","http://www.w3.org/2000/svg");let a=document.createElementNS("http://www.w3.org/2000/svg","style");return a.textContent=t,r.prepend(a),new XMLSerializer().serializeToString(r)}function cu(e,t){let r=Ot("a",{href:URL.createObjectURL(e),download:t});r.click(),setTimeout(()=>URL.revokeObjectURL(r.href),1e3)}var dS=[...vl,...Object.keys(ic)];function qg(e){let t=e.trim();return hc(t.startsWith("{")?JSON.parse(t):Z1(t,dS))}function hu(e=document){if(e.getElementById("chalk-talk-styles"))return;let t=e.createElement("style");t.id="chalk-talk-styles",t.textContent=ze.fonts+`
|
|
315
|
+
`+ze.css,e.head.append(t)}function du(e,t,r={}){return hu(e.ownerDocument),Yg(e,t,{faces:ze.fonts,...r})}var j7="[data-chalk-talk]",rc=new Map;function HA(){let e=document.body.classList,t=document.documentElement.dataset.theme;return e.contains("vscode-dark")||e.contains("vscode-high-contrast")?"chalkboard":e.contains("vscode-light")||t==="light"?"paper":t==="dark"||matchMedia("(prefers-color-scheme: dark)").matches?"chalkboard":"paper"}async function X7(e,t){if(e.dataset.chalkTalk!=="mermaid")return qg(t);let{readMermaid:r}=await Promise.resolve().then(()=>(qA(),YA));return r(t,{locale:navigator.language.toLowerCase().startsWith("pt")?"pt-BR":"en-US"})}function V7(e){let t=document.createElement("dialog");t.className="chalk-talk-dialog";let r=document.createElement("button");r.type="button",r.className="chalk-talk-close",r.setAttribute("aria-label","Close"),r.textContent="\xD7";let a=document.createElement("div");t.append(r,a),document.body.append(t);let n;r.addEventListener("click",()=>t.close()),t.addEventListener("close",()=>{n?.destroy(),t.remove()}),t.showModal(),du(a,e,{theme:HA()}).then(i=>n=i)}async function K7(e){rc.set(e,null),hu();let t=e.querySelector(".chalk-talk-source"),r=t?.textContent??"",a=document.createElement("div");try{let n=await X7(e,r);if(!e.isConnected)return;e.append(a),rc.set(e,await du(a,n,{compact:!0,theme:HA(),onExpand:()=>V7(n)})),t&&(t.hidden=!0)}catch(n){let i=document.createElement("div");i.className="chalk-talk-error";let l=document.createElement("b");if(l.textContent="chalk-talk",i.append(l,` \xB7 ${n.message}`),n instanceof Bt){let s=r.split(`
|
|
316
|
+
`)[n.line-1];if(s?.trim()){let o=document.createElement("code");o.textContent=s,i.append(o)}}e.prepend(i)}}function GA(e=document){for(let[t,r]of rc)t.isConnected||(r?.destroy(),rc.delete(t));for(let t of e.querySelectorAll(j7))rc.has(t)||K7(t)}function UA(){let e=window;if(e.__chalkTalkWatching)return;e.__chalkTalkWatching=!0;let t=()=>{GA(),new MutationObserver(()=>GA()).observe(document.body,{childList:!0,subtree:!0})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}typeof window<"u"&&typeof document<"u"&&UA();})();
|