agentic-mermaid 0.5.3 → 0.5.4
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/CHANGELOG.md +34 -0
- package/dist/agent-core.d.ts +7 -7
- package/dist/agent-core.js +1 -1
- package/dist/agent.d.ts +7 -7
- package/dist/agent.js +1 -1
- package/dist/agentic-mermaid-mcp.js +1 -1
- package/dist/am.js +1 -1
- package/dist/browser-lazy/chunks/{agentic-producer-core-CC6OOLDW.js → agentic-producer-core-ECZ3CMZM.js} +1 -1
- package/dist/browser-lazy/chunks/{architecture-QUFVKYJR.js → architecture-H5LTMKQW.js} +6 -6
- package/dist/browser-lazy/chunks/{block-6J3Q63BO.js → block-566X6FNV.js} +5 -5
- package/dist/browser-lazy/chunks/{builtin-backends-7SOZZHPF.js → builtin-backends-VAFEZXKY.js} +6 -6
- package/dist/browser-lazy/chunks/{c4-SQVBZAKJ.js → c4-ZXFDLBFK.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-5X6MJX3H.js → chunk-2JQXRKBC.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-E2WMJZNM.js → chunk-37FZNMPR.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-TYZOZXUJ.js → chunk-3JTYTXA6.js} +6 -6
- package/dist/browser-lazy/chunks/{chunk-PQGPS2YV.js → chunk-4NILRBC7.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-AMJLVPUB.js → chunk-5LKPDHPC.js} +2 -2
- package/dist/browser-lazy/chunks/{chunk-BY2CPG6B.js → chunk-62MR3LWJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-J7FFAFQF.js → chunk-64JFHCJC.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-VWVZGQE2.js → chunk-6UOOATQR.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
- package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-5B2Z7575.js → chunk-A7V5VDKN.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
- package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-X2UYKWKM.js → chunk-G4JBA7HU.js} +3 -3
- package/dist/browser-lazy/chunks/{chunk-2UIA2IME.js → chunk-IUI4DYC3.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-QA6GJQ4X.js → chunk-J57YRC2M.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-BU5LHXNJ.js → chunk-LBXXKLIR.js} +3 -3
- package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-ICC7HBJX.js → chunk-O34YYEQV.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-UL6NDWLL.js → chunk-OBI5U5XU.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-YCEICNM6.js → chunk-OFOS57WQ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-OZ443IVJ.js → chunk-PSZEE64O.js} +7 -7
- package/dist/browser-lazy/chunks/{chunk-SZELX2EJ.js → chunk-PXTLV57R.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-HLWUNUCM.js → chunk-QVSZOF5M.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-2GPK4VFF.js → chunk-TT5GR5EJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-DF6765YX.js → chunk-V6I2VGNQ.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-CN7WTBWB.js → chunk-VRZKI33U.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-2SH76OTH.js → chunk-XHU3A432.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-NO7ZIVRU.js → chunk-YVNJDVQO.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
- package/dist/browser-lazy/chunks/{class-5QA4SCTS.js → class-XIFNVBFE.js} +8 -8
- package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
- package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
- package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
- package/dist/browser-lazy/chunks/{eventmodeling-2BPLHWRN.js → eventmodeling-G7DITZX7.js} +10 -10
- package/dist/browser-lazy/chunks/{flowchart-NEIMZTB5.js → flowchart-SSFIU4EU.js} +1 -1
- package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
- package/dist/browser-lazy/chunks/{gantt-RDPIFYAF.js → gantt-HQNVDX2B.js} +6 -6
- package/dist/browser-lazy/chunks/{gitgraph-N4Y5RYB7.js → gitgraph-Z5MN6M6L.js} +4 -4
- package/dist/browser-lazy/chunks/{ishikawa-LD3YBDJN.js → ishikawa-UEERNFQV.js} +2 -2
- package/dist/browser-lazy/chunks/{journey-6YQR5DJX.js → journey-3BEWWGB5.js} +6 -6
- package/dist/browser-lazy/chunks/{kanban-PLMJ7NBW.js → kanban-2WFNCWLB.js} +10 -10
- package/dist/browser-lazy/chunks/{mermaid-yaml-runtime-QVYX4EWK.js → mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
- package/dist/browser-lazy/chunks/{mindmap-K2UBFO3Y.js → mindmap-R2C6SNYR.js} +4 -4
- package/dist/browser-lazy/chunks/{packet-CUW4QY6Y.js → packet-GMVCI5YZ.js} +3 -3
- package/dist/browser-lazy/chunks/{pie-7F7UUCG3.js → pie-WER45DKC.js} +7 -7
- package/dist/browser-lazy/chunks/{quadrant-TOONO2WC.js → quadrant-NCUPSFKN.js} +4 -4
- package/dist/browser-lazy/chunks/{radar-J6JVWVAX.js → radar-WLYS4YC5.js} +8 -8
- package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
- package/dist/browser-lazy/chunks/{requirement-CMAKDJPO.js → requirement-AK3NWMJ6.js} +7 -7
- package/dist/browser-lazy/chunks/{sankey-AWXQEP3F.js → sankey-C2DY6WVU.js} +4 -4
- package/dist/browser-lazy/chunks/{sequence-Q2RJRB4L.js → sequence-D4WJB44W.js} +1 -1
- package/dist/browser-lazy/chunks/{state-WRBFQEDX.js → state-YUQVESE7.js} +2 -2
- package/dist/browser-lazy/chunks/{timeline-D2KILFXM.js → timeline-BMBJJXWR.js} +4 -4
- package/dist/browser-lazy/chunks/{treemap-N3VYX5D4.js → treemap-B66XBZZ6.js} +3 -3
- package/dist/browser-lazy/chunks/{xychart-G73OGK66.js → xychart-HAVFROGT.js} +6 -6
- package/dist/browser-lazy/chunks/{zenuml-H4BXNYXR.js → zenuml-62RLYFWP.js} +7 -7
- package/dist/browser-lazy/index.js +1 -1
- package/dist/browser.global.js +507 -507
- package/dist/{chunk-DQDKA5ND.js → chunk-2DNGDTJD.js} +2 -2
- package/dist/{chunk-GVCHLSHH.js → chunk-4F2UGYTM.js} +2 -2
- package/dist/{chunk-H3NCS2XZ.js → chunk-7XYB2LNC.js} +2 -2
- package/dist/chunk-DOFB572I.js +58 -0
- package/dist/chunk-EHJI3QYE.js +52 -0
- package/dist/{chunk-UA234O4M.js → chunk-HINRNKPO.js} +2 -2
- package/dist/{chunk-JZOJ4YGS.js → chunk-KXMANAST.js} +33 -33
- package/dist/{chunk-7CRDX2QR.js → chunk-U4MT3RRE.js} +2 -2
- package/dist/{chunk-NKNFOREZ.js → chunk-WYIB6BUR.js} +2 -2
- package/dist/{cli-YGGTJZH7.js → cli-ZYIDBYNS.js} +2 -2
- package/dist/{index-EeXqJXr5.d.ts → index-Bvhprdxz.d.ts} +3 -3
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/{mcp-cli-63DYXTVD.js → mcp-cli-YVDCORWA.js} +2 -2
- package/dist/{paint-certification-6rwQjIv_.d.ts → paint-certification-BoLyr006.d.ts} +2 -2
- package/dist/{server-5NEOHOFS.js → server-4JGAVXR3.js} +2 -2
- package/dist/{svg-styles-BdnoM7AT.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
- package/dist/svg-styles.d.ts +1 -1
- package/dist/svg-styles.js +1 -1
- package/dist/svg.d.ts +4 -4
- package/dist/svg.js +1 -1
- package/dist/{types-BcS52Mjt.d.ts → types-CLVJCaH2.d.ts} +1 -1
- package/dist/zenuml/chunks/{appearance-UOQ5KA6O.js → appearance-5RM5MVM2.js} +1 -1
- package/dist/zenuml/chunks/{builtin-backends-KDKE7YHO.js → builtin-backends-UTNWL4N3.js} +11 -11
- package/dist/zenuml/chunks/{chunk-QWX77U7G.js → chunk-3A6S6GNB.js} +2 -2
- package/dist/zenuml/chunks/{chunk-OXQWRSBM.js → chunk-55WS466K.js} +11 -11
- package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
- package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
- package/dist/zenuml/chunks/{chunk-RZ6XK5CD.js → chunk-IARQ24W3.js} +13 -13
- package/dist/zenuml/chunks/{chunk-42DXZ5C6.js → chunk-ZNZRIISS.js} +2 -2
- package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
- package/dist/zenuml/chunks/{mermaid-yaml-runtime-KZVU74WU.js → mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
- package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
- package/dist/zenuml/chunks/{zenuml-EA2ZFRUX.js → zenuml-N3LZMB2G.js} +8 -8
- package/dist/zenuml.d.ts +2 -2
- package/dist/zenuml.js +1 -1
- package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
- package/docs/api.md +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +0 -1
- package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +0 -6
- package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +0 -1
- package/dist/browser-lazy/chunks/chunk-J35HAQQF.js +0 -20
- package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +0 -1
- package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +0 -20
- package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +0 -11
- package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +0 -3
- package/dist/chunk-EHCMJUMD.js +0 -52
- package/dist/chunk-OMY6NRQD.js +0 -58
- package/dist/zenuml/chunks/chunk-7TVYPTDW.js +0 -1
- package/dist/zenuml/chunks/chunk-RLJEI7YN.js +0 -29
- package/dist/zenuml/chunks/render-core-V5RQ737O.js +0 -3
- /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-CQE4HQEW.js → chunk-HJVO5VC3.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-VQYYGAXP.js → chunk-TLFX3U6S.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
- /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
package/dist/chunk-OMY6NRQD.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import{a as Ji,c as ve,d as Nt,e as Zi,f as Qi}from"./chunk-3LGLPG33.js";import{a as mc}from"./chunk-VUFVLGTH.js";var gc=1;var yc=/^[a-z][a-z0-9.-]*:[a-z0-9][a-z0-9._/-]*$/;var hc=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;var bc=new Set(["required","preferred","optional"]);function $t(e){return yc.test(e)}function De(e){if(typeof e!=="string")return void 0;const n=e.match(hc);if(!n)return void 0;const t=n[4];if(t?.split(".").some(r=>/^\d+$/.test(r)&&r.length>1&&r.startsWith("0"))){return void 0}return{major:n[1],minor:n[2],patch:n[3],...t?{prerelease:t}:{}}}function Rr(e,n){if(e.length!==n.length)return e.length<n.length?-1:1;return e===n?0:e<n?-1:1}function xc(e,n){return Rr(e.major,n.major)||Rr(e.minor,n.minor)||Rr(e.patch,n.patch)}function Nr(e){if(typeof e!=="string")return false;const n=e.trim();if(n==="*"||/^(0|[1-9]\d*)\.(?:x|\*)$/i.test(n))return true;const t=n.match(/^(\^|~|>=)?(.+)$/);const r=De(t?.[2]??"");if(!t||!r)return false;return!r.prerelease||t[1]===void 0}function $r(e,n){const t=De(e);if(!t||typeof n!=="string")return false;const r=n.trim();if(r==="*")return t.prerelease===void 0;const i=r.match(/^(0|[1-9]\d*)\.(?:x|\*)$/i);if(i)return t.prerelease===void 0&&t.major===i[1];const o=r.match(/^(\^|~|>=)?(.+)$/);const s=De(o?.[2]??"");if(!o||!s)return false;const a=xc(t,s);if(t.prerelease||s.prerelease){return o[1]===void 0&&a===0&&t.prerelease===s.prerelease}switch(o[1]){case">=":return a>=0;case"~":return a>=0&&t.major===s.major&&t.minor===s.minor;case"^":if(a<0)return false;if(s.major!=="0")return t.major===s.major;if(s.minor!=="0")return t.major==="0"&&t.minor===s.minor;return t.major==="0"&&t.minor==="0"&&t.patch===s.patch;default:return a===0}}function Sc(e,n){if(!Array.isArray(e))throw new TypeError("Capability offers must be an array");if(!Array.isArray(n))throw new TypeError("Capability requirements must be an array");const t=new Map;for(const[s,a]of e.entries()){if(!a||typeof a!=="object"||Array.isArray(a)){throw new TypeError(`Capability offer at index ${s} must be an object`)}if(typeof a.id!=="string")throw new Error(`Invalid capability id "${String(a.id)}"`);if(!$t(a.id))throw new Error(`Invalid capability id "${a.id}"`);if(typeof a.version!=="string")throw new Error(`Capability "${a.id}" has invalid semantic version "${String(a.version)}"`);if(!De(a.version))throw new Error(`Capability "${a.id}" has invalid semantic version "${a.version}"`);if(t.has(a.id))throw new Error(`Duplicate capability offer "${a.id}"`);t.set(a.id,a.version)}const r=new Set;const i=n.map((s,a)=>{if(!s||typeof s!=="object"||Array.isArray(s)){throw new TypeError(`Capability requirement at index ${a} must be an object`)}if(typeof s.id!=="string")throw new Error(`Invalid capability id "${String(s.id)}"`);if(!$t(s.id))throw new Error(`Invalid capability id "${s.id}"`);if(!bc.has(s.level)){throw new Error(`Capability "${s.id}" has invalid requirement level "${String(s.level)}"`)}if(!Nr(s.range)){throw new Error(`Capability "${s.id}" has invalid semantic-version range "${String(s.range)}"`)}if(r.has(s.id))throw new Error(`Duplicate capability requirement "${s.id}"`);r.add(s.id);const c=t.get(s.id);const d=c===void 0?"unsupported":$r(c,s.range)?"selected":"incompatible";return Object.freeze({id:s.id,range:s.range,level:s.level,status:d,...c!==void 0?{version:c}:{}})});const o=i.every(s=>s.level!=="required"||s.status==="selected");return Object.freeze({version:gc,accepted:o,resolutions:Object.freeze(i)})}var kc=Object.freeze([{id:"core:render-request",version:"1.0.0"},{id:"core:family-descriptor",version:"1.0.0"}].map(e=>Object.freeze(e)));function eo(e,n,t,r){const i={id:`output:${e}`,version:"1.0.0"};const o=Ji.includes(e);return Sc([...kc,...n,...!o||!r?[]:[i]],[{id:"core:render-request",range:"^1.0.0",level:"required"},...t,{id:`output:${e}`,range:"^1.0.0",level:"required"}])}function pf(e,n){return eo(e,n?[n]:[],n?[{id:n.id,range:n.version,level:"required"}]:[],true)}function mf(e,n){return eo(e,n.offers,n.requirements,n.outputAvailable)}var Ec=Object.freeze({id:"agentic-mermaid:inter-estimate",version:"4.0.0"});function Cc(e){if(e===void 0)return void 0;if(typeof e!=="object"||e===null)throw new TypeError("textMeasurement must be an object with id, version, and measure");const{id:n,version:t,measure:r}=e;if(typeof n!=="string"||n.length>160||!/^[A-Za-z][A-Za-z0-9._:/-]*$/.test(n)){throw new TypeError("textMeasurement.id must be a stable name of at most 160 characters")}if(n===Ec.id)throw new TypeError("textMeasurement.id is reserved for the deterministic default");if(typeof t!=="string"||t.length>80||!De(t)){throw new TypeError("textMeasurement.version must be a semantic version")}if(typeof r!=="function")throw new TypeError("textMeasurement.measure must be a function");return Object.freeze({id:n,version:t,measure:r})}var no=1e6;var wc=2e4;function hf(e,n){const t=Cc(e);if(!t)return void 0;const r=Object.freeze({id:t.id,version:t.version});const i=new Map;return Object.freeze({identity:r,width(o){const s=o.fontFamily??(o.monospace?"JetBrains Mono":n);const a=JSON.stringify([o.text,s,o.fontSize,o.fontWeight,o.fontStyle,o.monospace]);const c=i.get(a);if(c!==void 0)return c;const d=Or(void 0,()=>t.measure(Object.freeze({...o,fontFamily:s})));if(typeof d!=="number"||!Number.isFinite(d)||d<0||d>no){throw new RangeError(`Text measurement profile ${r.id}@${r.version} must return a finite width between 0 and ${no} pixels`)}if(i.size<wc)i.set(a,d);return d}})}var Xn;function Or(e,n){const t=Xn;Xn=e;try{return n()}finally{Xn=t}}function je(){return Xn!==void 0}function _r(e){return Xn?.width(e)}var Tc=[[11904,12031],[12032,12255],[12288,12351],[12352,12447],[12448,12543],[12544,12591],[12688,12799],[12800,13311],[13312,19903],[19968,40959],[63744,64255],[131072,196607]];var Rc=[[4352,4447],[12592,12687],[44032,55215]];var Nc=[[9001,9002],[65040,65049],[65072,65135],[65280,65376],[65504,65510]];var $c=[[127744,129791]];var to=[127995,127999];var Oc=[[768,879],[6832,6911],[7616,7679],[8400,8447],[65056,65071]];var _c=new Set([8203,8204,8205,65279]);var ro=65038;var io=65039;var xf=8205;function qn(e,n){for(const[t,r]of n)if(e>=t&&e<=r)return true;return false}function oo(e){return qn(e,Tc)||qn(e,Rc)||qn(e,Nc)||qn(e,$c)}function so(e){return qn(e,Oc)||_c.has(e)}function Sf(e){return e>=to[0]&&e<=to[1]}var Ar="<\\/?(?:b|strong|i|em|u|s|del)\\s*>";var ao=/<(\/)?(?:(b|strong)|(i|em)|(u)|(s|del))\s*>/gi;var Jn=new RegExp(Ar,"i");function Ot(e){const n=[];let t=false;let r=false;let i=false;let o=false;let s=0;ao.lastIndex=0;let a;while((a=ao.exec(e))!==null){if(a.index>s){n.push({text:e.slice(s,a.index),bold:t,italic:r,underline:i,strikethrough:o})}s=a.index+a[0].length;const c=Boolean(a[1]);if(a[2])t=!c;else if(a[3])r=!c;else if(a[4])i=!c;else if(a[5])o=!c}if(s<e.length){n.push({text:e.slice(s),bold:t,italic:r,underline:i,strikethrough:o})}return n}function _t(e){let n=e.text;if(e.strikethrough)n=`<s>${n}</s>`;if(e.underline)n=`<u>${n}</u>`;if(e.italic)n=`<i>${n}</i>`;if(e.bold)n=`<b>${n}</b>`;return n}var Ac=new Intl.Segmenter(void 0,{granularity:"grapheme"});var Mc=/^[\x20-\x7e]*$/;function ne(e){if(Mc.test(e))return e.split("");return Array.from(Ac.segment(e),n=>n.segment)}var Ic=new Set(["i","l","t","f","j","I","1","!","|",".",",",":",";","'"]);var Pc=new Set(["W","M","w","m","@","%"]);var co=new Set(["W","M"]);var vc=new Set(["(",")","[","]","{","}","/","\\","-",'"',"`"]);function lo(e){return so(e)||e===ro||e===io}function uo(e){return oo(e)}var Dc=/\p{Emoji_Presentation}|\p{Extended_Pictographic}/u;function fo(e){return Dc.test(e)}function gn(e){const n=e.codePointAt(0);if(n===void 0)return 0;if(lo(n))return 0;if(uo(n)||fo(e))return 2;if(e===" ")return .3;if(co.has(e))return 1.5;if(Pc.has(e))return 1.2;if(Ic.has(e))return .4;if(vc.has(e))return .5;if(e==="r")return .8;if(n>=65&&n<=90)return 1.2;if(n>=48&&n<=57)return 1;return 1}var jc={version:4,unit:"px",fontCalibration:"Inter-compatible proportional estimate",monospaceCalibration:"0.6em-per-cell",wideCodepoints:"src/shared/unicode-ranges.ts",emojiDetection:"Emoji_Presentation-or-Extended_Pictographic",ambiguousWidth:"single-cell",paintedAdvanceProjection:"prepared-positions-or-svg-textLength-spacingAndGlyphs",naturalAdvanceExemptions:"prepared-non-ascii-shaping-runs"};function zc(e){return e>=600?.6:e>=500?.57:.54}function po(e){const n=zc(e.fontWeight);let t=0;let r=0;for(const o of e.text){t+=gn(o);r++}const i=e.fontSize*.15;return{contract:jc,width:_r({...e,fontStyle:e.fontStyle??"normal",monospace:false})??t*e.fontSize*n+i,charWidthUnits:t,codePointCount:r,fontSize:e.fontSize,fontWeight:e.fontWeight,baseRatio:n,minPadding:i}}function Zn(e,n,t,r="normal",i){return po({text:e,fontSize:n,fontWeight:t,fontStyle:r,fontFamily:i}).width}function At(e,n,t,r="normal",i){const o=po({text:e,fontSize:n,fontWeight:t,fontStyle:r,fontFamily:i});if(je())return o.width;let s=0;for(const a of e){if(co.has(a))s+=1.85-1.5}return o.width+s*n*o.baseRatio}function Mt(e,n,t=0,r=400,i="normal",o){const s=ne(e);const a=Math.max(0,s.length-1)*t;const c=_r({text:e,fontSize:n,fontWeight:r,fontStyle:i,fontFamily:o,monospace:true});if(c!==void 0)return Math.max(0,c+a);let d=0;for(const l of s){let f=0;for(const m of l){const u=m.codePointAt(0);if(u===void 0||lo(u))continue;f=Math.max(f,uo(u)||fo(m)?2:1)}d+=f}return Math.max(0,d*n*.6+a)}function Bc(e,n,t,r=0,i="normal",o){const s=Jn.test(e)?Ot(e):[{text:e,bold:false}];const a=s.map(l=>l.text).join("");const c=r===0?0:Math.max(0,ne(a).length-1)*r;const d=s.reduce((l,f)=>l+Zn(f.text,n,f.bold?Math.max(700,t):t,"italic"in f&&f.italic||i==="italic"?"italic":"normal",o),0);return Math.max(0,d+c)}var Ne=1.3;function $f(e,n,t,r=0){if(typeof e!=="string"){const a=e.lines.map(l=>l.map(f=>f.text).join(""));const c=e.lines.reduce((l,f,m)=>{const u=r===0?0:Math.max(0,ne(a[m]).length-1)*r;const y=f.reduce((b,h)=>b+Zn(h.text,n,h.bold?Math.max(700,t):t),0);return Math.max(l,y+u)},0);const d=n*Ne;return{width:c,height:a.length*d,lines:a,lineHeight:d}}const i=e.split("\n");const o=n*Ne;let s=0;for(const a of i){const c=Bc(a,n,t,r);if(c>s)s=c}return{width:s,height:i.length*o,lines:i,lineHeight:o}}import{decodeXML as Fc}from"entities";var Mr=Symbol.for("agentic-mermaid.performance-observer.v1");var Ir=globalThis;function Pr(e,n){try{e(Object.freeze(n))}catch{}}function mo(){const e=Ir[Mr];if(typeof e==="function")Pr(e,{version:1,kind:"scope",owner:"graphical"})}function Xe(e,n,t,r){const i=Ir[Mr];if(typeof i==="function")Pr(i,{version:1,kind:"cache",owner:e,outcome:n,...t?{reason:t}:{},...r?{detail:r}:{}})}function _f(e,n,t){const r=Ir[Mr];if(typeof r==="function")Pr(r,{version:1,kind:"fallback",owner:e,reason:n,...t!==void 0?{attempt:t}:{}})}var yn;var Qn=0;var Lc=512*1024;var go=512;var hn=0;function If(e){mo();const n=yn;const t=Qn;const r=hn;yn=new Map;Qn=0;hn=0;try{return e()}finally{yn=n;Qn=t;hn=r}}function ze(e,n,t){if(!yn){Xe("svg-inspection","bypass","outside-graphical-scope",e);return t()}let r=yn.get(e);if(r?.has(n)){Xe("svg-inspection","hit",void 0,e);return r.get(n)}Xe("svg-inspection","miss",void 0,e);const i=t();if(hn<go&&Qn+n.length<=Lc){if(!r){r=new Map;yn.set(e,r)}r.set(n,i);Qn+=n.length;hn++}else Xe("svg-inspection","store-skipped",hn>=go?"entry-limit":"character-limit",e);return i}function et(e){if(e===void 0)return false;const n=e.charCodeAt(0);const t=n|32;return t>=97&&t<=122||n>=48&&n<=57||n===95||n===46||n===58||n===45}function It(e){if(e===void 0)return false;const n=e.charCodeAt(0);if(n<128)return n===32||n>=9&&n<=13;return/\s/.test(e)}function yo(e,n){let t=e.indexOf(">",n);if(t<0)return-1;for(let r=n;r<t;r++){const i=e[r];if(i!=='"'&&i!=="'")continue;const o=e.indexOf(i,r+1);if(o<0)return-1;r=o;if(o>t){t=e.indexOf(">",o+1);if(t<0)return-1}}return t+1}function Be(e){return ze("start-tags",e,()=>Pt(e))}function ho(e,n,t){const r={attribute:t,expectedName:n,name:void 0};Pt(e,void 0,void 0,r);return r.name}function Pt(e,n,t,r){const i=n||t||r?void 0:[];for(let o=e.indexOf("<");o>=0;o=e.indexOf("<",o+1)){if(e.startsWith("<!--",o)){const u=e.indexOf("-->",o+4);if(u<0)break;o=u+2;continue}const s=e[o+1];if(!s||s==="/"||s==="!"||s==="?")continue;let a=o+1;while(et(e[a]))a++;if(a===o+1)continue;const c=yo(e,a);if(c<0)break;let d=c-2;while(d>o&&It(e[d]))d--;const l=e.slice(o+1,a);if(r)r.name=l;const f=e[d]==="/";const m=i?[]:void 0;if(i||n||r){let u=a;while(u<c-1){while(It(e[u]))u++;if(e[u]===">"||e[u]==="/"&&e[u+1]===">")break;const y=u;while(et(e[u]))u++;if(u===y)break;const b=e.slice(y,u);while(It(e[u]))u++;if(e[u]!=="=")break;u++;while(It(e[u]))u++;const h=e[u];if(h!=='"'&&h!=="'")break;u++;const k=u;const x=e.indexOf(h,u);if(x<0||x>=c-1)break;u=x;if(m)m.push(Object.freeze({name:b,value:e.slice(k,u),quote:h,nameStart:y,valueStart:k,valueEnd:u}));else if(r&&r.name===r.expectedName)r.attribute(b,e.slice(k,u));else if(n&&Vc.has(b)){const S={start:k,end:u};n.push(S);if(b==="style")t.push(S)}u++}}if(i)i.push(Object.freeze({name:l,start:o,end:c,attributes:Object.freeze(m),selfClosing:f}));if(r)return void 0;if(t&&l==="style"&&!f){const u=e.indexOf("</style",c);if(u>=0){const y={start:c,end:u};n?.push(y);t.push(y)}}o=c-1}return i&&Object.freeze(i)}function Bf(e){const n=e.search(/\S/);if(n<0)return void 0;const t=yo(e,n);if(t<0)return void 0;const r=Be(e.slice(0,t))[0];return r?.start===n&&r.name==="svg"?r:void 0}function Wc(e,n){return e.attributes.find(t=>t.name===n)}function bo(e,n){const t=Wc(e,n);return t?Fc(t.value):void 0}function xo(e,n){if(n.length===0)return e;const t=[...n].sort((o,s)=>s.start-o.start);const r=[];let i=e.length;for(const o of t){if(o.end>i){let s=e;for(const a of t)s=`${s.slice(0,a.start)}${a.value}${s.slice(a.end)}`;return s}r.push(e.slice(o.end,i),o.value);i=o.start}r.push(e.slice(0,i));return r.reverse().join("")}function Lf(e,n){const t=[];for(const r of Be(e)){for(const i of r.attributes){const o=n(i,r);if(o!==void 0&&o!==i.value){t.push({start:i.valueStart,end:i.valueEnd,value:o})}}}return xo(e,t)}var Vc=new Set(["clip-path","color","cursor","fill","filter","flood-color","lighting-color","marker-end","marker-mid","marker-start","mask","stop-color","stroke","style"]);function qe(e){const n=[];const t=[];Pt(e,n,t);return{source:e,cssRanges:n,styleContexts:t}}function Ff(e){const n=[];Pt(e,void 0,n);return n}function Wf(e){return qe(e).cssRanges.map(n=>e.slice(n.start,n.end)).join("\n")}function vt(e,n,t=qe(e)){if(t.source!==e)throw new Error("SVG CSS projection does not match its source");return xo(e,t.cssRanges.map(r=>({...r,value:n(e.slice(r.start,r.end))})))}function Vf(e,n,t){return`${e.slice(0,n.start)}${t}${e.slice(n.end)}`}var Le=class{#e=new Map;#n=0;#r;#t;#i;constructor(n,t,r){this.#r=n;this.#t=t;this.#i=r}get(n){const t=this.#e.get(n);if(!t)return void 0;this.#e.delete(n);this.#e.set(n,t);return t.value}canFit(n,t){const r=this.#e.get(n);return Number.isFinite(t)&&t>=0&&this.#e.size+(r?0:1)<=this.#r&&this.#n-(r?.weight??0)+t<=this.#t}leastRecentlyUsed(){const n=this.#e.values().next();return n.done?void 0:n.value.value}delete(n){const t=this.#e.get(n);if(!t)return false;this.#e.delete(n);this.#n-=t.weight;this.#i?.(n,t.value);return true}set(n,t,r){if(!Number.isFinite(r)||r<0||r>this.#t)return;this.delete(n);this.#e.set(n,{value:t,weight:r});this.#n+=r;while(this.#e.size>this.#r||this.#n>this.#t){const i=this.#e.keys().next().value;this.delete(i)}}clear(){if(this.#i)for(const n of this.#e.keys())this.delete(n);else{this.#e.clear();this.#n=0}}};var Uc=/[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?/g;var vr=/\.\d{12}/;var Gc=/^[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?(?:%|px|pt|pc|em|ex|rem|cm|mm|in)?$/;var Yc=new Set(["x","y","x1","y1","x2","y2","cx","cy","r","rx","ry","dx","dy","width","height","refX","refY","markerWidth","markerHeight","stroke-width","stroke-dashoffset","stroke-miterlimit","pathLength","font-size","font-weight","letter-spacing","textLength","opacity","fill-opacity","stroke-opacity","stop-opacity","offset"]);var Dt=new Map;var jt=new Map;function U(e){const n=Dt.get(e);if(n!==void 0)return n;const t=String(e);const r=t.length>=14&&vr.test(t)&&Number.isFinite(e)?String(Number(e.toPrecision(12))):t;if(Dt.size>=1024)Dt.clear();Dt.set(e,r);return r}function nt(e,n){if(n.length<13||!vr.test(n))return n;const t=n.length<=512?`${e}\0${n}`:void 0;const r=t===void 0?void 0:jt.get(t);if(r!==void 0)return r;const i=Yc.has(e)&&Gc.test(n)||(e==="viewBox"||e==="points"||e==="stroke-dasharray")&&/^[-+\d.eE,\s]+$/.test(n)||e==="d"&&/^[MmZzLlHhVvCcSsQqTtAa\d.eE,+\s-]+$/.test(n)||(e==="transform"||e==="gradientTransform"||e==="patternTransform")&&/^(?:(?:matrix|translate|scale|rotate|skewX|skewY)\s*\([-+\d.eE,\s]+\)\s*)+$/.test(n);if(!i)return n;const o=n.replace(Uc,(s,a)=>{if(!vr.test(s))return s;const c=Number(s);if(!Number.isFinite(c))return s;const d=U(c);return s.startsWith(".")&&a>0&&/[\d.]/.test(n[a-1])?` ${d}`:d});if(t!==void 0){if(jt.size>=256)jt.clear();jt.set(t,o)}return o}function So(e,n){const t=new WeakSet;let r=0;const i=o=>{if(r>n)return;if(typeof o==="string"){r+=o.length*4+16;return}if(o===null||typeof o!=="object"){r+=16;return}if(t.has(o)){r+=8;return}t.add(o);r+=64;if(o instanceof Map){for(const[s,a]of o){r+=32;i(s);i(a);if(r>n)break}}else if(o instanceof Set){for(const s of o){r+=16;i(s);if(r>n)break}}else if(o instanceof ArrayBuffer)r+=o.byteLength;else if(ArrayBuffer.isView(o))i(o.buffer);else{for(const s of Object.keys(o)){r+=s.length*2+16;i(o[s]);if(r>n)break}}};i(e);return r}import{decodeXML as fd}from"entities";var Hc=["text-spans","indexed-layout","position-cache"];var ko=globalThis;var Eo=ko.process?.env?.AGENTIC_MERMAID_EXPERIMENTS??ko.AGENTIC_MERMAID_EXPERIMENTS;var Kc=new Set(typeof Eo==="string"?Eo.split(",").map(e=>e.trim()).filter(Boolean):Hc);var Xc;function bn(e){return(Xc??Kc).has(e)}function zt(e,n=false){if(!/[\u0000-\u001f\u007f-\u009f]/.test(e))return e;let t="";for(const r of e){const i=r.codePointAt(0);const o=i<=31||i>=127&&i<=159;if(r===" ")t+=" ";else if(!o||n&&(r==="\n"||r==="\r"))t+=r;else t+="?"}return t}function Bt(e){return e.split("\n").map(n=>zt(n)).join("\n")}var Co=new Le(512,4*1024*1024);var To=new WeakSet;function tt(e){To.add(e);return e}function Ro(e){if(To.has(e))return e;return tt(Object.freeze({source:e.source,display:e.display,...e.transform?{transform:e.transform}:{},lineStarts:Object.freeze([...e.lineStarts]),lines:Object.freeze(e.lines.map(n=>Object.freeze(n.map(t=>Object.freeze({...t,...t.clusters?{clusters:Object.freeze(t.clusters.map(r=>Object.freeze({...r})))}:{}})))))}))}function rt(e,n){return n?.value===e?n.prepared:e}function np(e){return e.lines.map(n=>n.map(t=>t.text).join("")).join("\n")}function tp(e,n,t){e=Ro(e);if(e.transform)throw new TypeError("Display tokens must be decoded before text transforms");const r=new RegExp(n.source,n.flags.includes("g")?n.flags:n.flags+"g");const i=e.lines.map(o=>Object.freeze(o.map(s=>{const a=[],c=[];for(const m of s.clusters??[{text:s.text,sourceStart:s.sourceStart,sourceEnd:s.sourceEnd}]){for(let u=0;u<m.text.length;u++){a.push(m.sourceStart);c.push(m.sourceEnd)}}const d=[];const l=(m,u,y,b)=>{let h=u;for(const k of ne(m)){d.push(Object.freeze({text:zt(k),sourceStart:a[b?u:h]??s.sourceStart,sourceEnd:c[b?y-1:h+k.length-1]??s.sourceEnd}));h+=k.length}};let f=0;for(const m of s.text.matchAll(r)){if(m[0].length===0)throw new TypeError("Display token patterns must not match empty text");l(s.text.slice(f,m.index),f,m.index,false);l(t(m[0]),m.index,m.index+m[0].length,true);f=m.index+m[0].length}l(s.text.slice(f),f,s.text.length,false);return Object.freeze({...s,text:d.map(m=>m.text).join(""),clusters:Object.freeze(d)})})));return tt(Object.freeze({...e,lines:Object.freeze(i)}))}function rp(e,n,t="<br>"){if(e.transform)throw new TypeError("Authored text must be written before text transforms");return e.lines.map(r=>r.map(i=>_t({...i,text:n(i.text)})).join("")).join(t)}function ip(e){const n=[[]];const t=[0];let r="",i="literal";for(const o of e){const s=xn(o,"literal");if(s.transform)throw new TypeError("Display text must be combined before text transforms");if(s.display==="formatted")i="formatted";const a=r.length;for(const[c,d]of s.lines.entries()){if(c>0){n.push([]);t.push(a+s.lineStarts[c])}for(const l of d)n.at(-1).push(Object.freeze({...l,sourceStart:a+l.sourceStart,sourceEnd:a+l.sourceEnd,...l.clusters?{clusters:Object.freeze(l.clusters.map(f=>Object.freeze({...f,sourceStart:a+f.sourceStart,sourceEnd:a+f.sourceEnd})))}:{}}))}r+=s.source}return tt(Object.freeze({source:r,display:i,lines:Object.freeze(n.map(o=>Object.freeze(o))),lineStarts:Object.freeze(t)}))}function qc(e,n){if(n==="uppercase")return e.toUpperCase();if(n==="lowercase")return e.toLowerCase();if(n==="capitalize")return e.replace(/(?<![\p{L}\p{M}\p{N}\p{Pc}])\p{L}/gu,t=>t.toUpperCase());return e}function xn(e,n="formatted",t){if(typeof e!=="string"){e=Ro(e);if(!t||e.transform===t)return e;if(e.transform)throw new TypeError("A prepared display transform cannot be replaced without its original runs");return wo(e,t)}const r=bn("text-spans")&&e.length<=16384?JSON.stringify([e,n,t]):void 0;if(r!==void 0){const l=Co.get(r);if(l)return l}let i=0;const o=[];const s=Object.freeze([]);const a=e.split("\n").map(l=>{o.push(i);if(l===""){i++;return s}let f;if(n==="literal"){f=[{text:l,bold:false,italic:false,underline:false,strikethrough:false,sourceStart:i,sourceEnd:i+l.length}]}else{const m=new RegExp(Ar,"gi");const u=[];let y=0;for(const b of l.matchAll(m)){if(b.index>y)u.push({start:y,end:b.index});y=b.index+b[0].length}if(y<l.length)u.push({start:y,end:l.length});f=Ot(l).map((b,h)=>({...b,sourceStart:i+u[h].start,sourceEnd:i+u[h].end}))}f=f.map(m=>{let u=m.sourceStart;const y=ne(m.text).map(b=>{const h=Object.freeze({text:zt(b),sourceStart:u,sourceEnd:u+b.length});u+=b.length;return h});return Object.freeze({...m,text:y.map(b=>b.text).join(""),clusters:Object.freeze(y)})});i+=l.length+1;return Object.freeze(f)});const c=tt(Object.freeze({source:e,display:n,lines:Object.freeze(a),lineStarts:Object.freeze(o)}));const d=t?wo(c,t):c;if(r!==void 0)Co.set(r,d,r.length*2+e.length*96+256);return d}function wo(e,n){const t=e.lines.map(r=>{const i=r.map(d=>d.text).join("");const o=qc(i,n);const s=n==="capitalize"?new Set([...i.matchAll(/(?<![\p{L}\p{M}\p{N}\p{Pc}])\p{L}/gu)].map(d=>d.index)):void 0;let a=0,c=0;return Object.freeze(r.map(d=>{const l=c;const f=(d.clusters??[{text:d.text,sourceStart:d.sourceStart,sourceEnd:d.sourceEnd}]).map(m=>{const u=n==="uppercase"||s?.has(a)?m.text.toUpperCase().length:n==="lowercase"?m.text.toLowerCase().length:m.text.length;const y=o.slice(c,c+u);a+=m.text.length;c+=u;return Object.freeze({...m,text:y})});return Object.freeze({...d,text:o.slice(l,c),clusters:Object.freeze(f)})}))});return tt(Object.freeze({...e,transform:n,lines:Object.freeze(t)}))}function up(e,n=true){return Jc(Zc(e,n))}function Jc(e){return e.replace(/\*\*(.+?)\*\*/g,"<b>$1</b>").replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g,"<i>$1</i>").replace(/~~(.+?)~~/g,"<s>$1</s>")}function Zc(e,n=true){const t=e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e;const r=ed(t);return(n?r.replace(/\\n/g,"\n"):r).replace(/<\/?(?:sub|sup|small|mark)\s*>/gi,"")}var Qc=/<br\s*\/?>/gi;function ed(e){return e.replace(Qc,"\n")}function jr(e,n="formatted"){return xn(e,n).lines.map(t=>t.map(r=>r.text).join("")).join("\n")}var nd=/[&<>"']/;var td=/[&<>"'\t\n\r]/;function ae(e){if(typeof e==="string"&&!nd.test(e))return e;return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function j(e){if(typeof e==="string"&&!td.test(e))return e;return ae(e).replace(/[\t\n\r]/g,n=>n===" "?"	":n==="\n"?" ":" ")}function fp(e){return j(Bt(e))}function rd(e,n="formatted"){if(n==="literal"||!Jn.test(e))return ae(e);return Dr(xn(e,n).lines[0])}function $o(e,n=400){const t=[];if(e.bold)t.push(`font-weight="${n>700?n:"bold"}"`);if(e.italic)t.push('font-style="italic"');const r=[];if(e.underline)r.push("underline");if(e.strikethrough)r.push("line-through");if(r.length)t.push(`text-decoration="${r.join(" ")}"`);return t}function Dr(e,n=400){if(e.length===0)return"";const t=e.every(r=>!r.bold&&!r.italic&&!r.underline&&!r.strikethrough);if(t)return e.map(r=>ae(r.text)).join("");return e.map(r=>{const i=ae(r.text);if(!r.bold&&!r.italic&&!r.underline&&!r.strikethrough)return i;return`<tspan ${$o(r,n).join(" ")}>${i}</tspan>`}).join("")}function No(e,n,t,r,i){const o=e.lineBlocks[n];if(/[^\x20-\x7e]/u.test(o.runs.map(a=>a.text).join(""))){const a=r==="start"?t+o.width/2:r==="end"?t-o.width/2:t;return`<tspan x="${U(a)}"${i===void 0?"":` y="${U(i)}"`} text-anchor="middle" data-text-fragment="true">${Dr(o.runs,e.fontWeight)}</tspan>`}if(e.letterSpacing===0&&!o.fragments)return Dr(o.runs,e.fontWeight);if(!o.fragments)throw new TypeError("Tracked text requires retained fragment allocations");const s=(r==="middle"?t-o.width/2:r==="end"?t-o.width:t)+o.originX;return o.fragments.map(a=>{const c=$o(o.runs[a.runIndex],e.fontWeight);const d=/^ | $/.test(a.text)?' xml:space="preserve"':"";return`<tspan x="${U(s+a.x)}" text-anchor="start" letter-spacing="0" data-text-fragment="true" textLength="${U(Math.max(0,a.width))}" lengthAdjust="spacingAndGlyphs"${d}${c.length?` ${c.join(" ")}`:""}>${ae(a.text)}</tspan>`}).join("")}function zr(e,n,t,r,i,o=.35,s=false){const a=typeof e==="string"?void 0:e;const c=a?a.text:e;const d=a?a.lines:c.split("\n");const l=a?.prepared.display??(s?"literal":"formatted");const f=i.match(/\btext-anchor="([^"]*)"/)?.[1]??"start";const m=a&&/[^\x20-\x7e]/u.test(a.lineBlocks.map(g=>g.runs.map(E=>E.text).join("")).join(""));const u=a&&(a.letterSpacing!==0||m);const y=(g,E)=>a?No(a,E,n,f):rd(g,l);if(l==="literal"&&Jn.test(c)&&!i.includes("data-literal-text="))i+=' data-literal-text="true"';const b=a?a.lineBlocks.map(g=>g.runs.map(E=>E.text).join("")).join("\n"):jr(c,l);if(/(?:^ | $| {2}|\t)/m.test(b)&&!i.includes("xml:space="))i+=' xml:space="preserve"';if(a)i+=' data-prepared-text="true"';const h=g=>a&&!u&&!a.lineBlocks[g].fragments?` textLength="${U(a.lineBlocks[g].width)}" lengthAdjust="spacingAndGlyphs" data-font-metrics="deterministic-fit"`:"";if(d.length===1){const g=r*o;if(m)return`<text x="${U(n)}" y="${U(t)}" ${i}>${No(a,0,n,f,t+g)}</text>`;return`<text x="${U(n)}" y="${U(t)}" ${i} dy="${U(g)}"${h(0)}>${y(c,0)}</text>`}const k=a?.lineHeight??r*Ne;const x=-((d.length-1)/2)*k+r*o;const S=d.map((g,E)=>{const R=E===0?x:k;const w=m?`y="${U(t+x+E*k)}"`:`dy="${U(R)}"`;return`<tspan x="${U(n)}" ${w}${h(E)}>${y(g,E)}</tspan>`}).join("");return`<text x="${U(n)}" y="${U(t)}" ${i}>${S}</text>`}var Br=Object.assign(Object.create(null),{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"});var id=/^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;function We(e){const n=e.replace("#","");const t=n.length===3||n.length===4?n[0]+n[0]+n[1]+n[1]+n[2]+n[2]:n;return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]}function od(e){if(!ge(e))return null;return We(e)}function Se(e,n,t){return"#"+[e,n,t].map(r=>Math.round(Math.max(0,Math.min(255,r))).toString(16).padStart(2,"0")).join("")}function fe(e,n,t){return Se(...Mo(We(e),We(n),t))}function Mo(e,n,t,r=[0,0,0]){const i=t/100;for(let o=0;o<3;o++)r[o]=Math.round(Math.max(0,Math.min(255,e[o]*i+n[o]*(1-i))));return r}function Lr(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Wr(e){return .2126*Lr(e[0]/255)+.7152*Lr(e[1]/255)+.0722*Lr(e[2]/255)}function Vr(e,n){return(Math.max(e,n)+.05)/(Math.min(e,n)+.05)}function Fr(e){const n=ie(e);return n?Wr(n):null}function Fe(e,n){const t=Fr(e);const r=Fr(n);if(t===null||r===null)return null;return Vr(t,r)}function Sn(e,n,t,r){const i=Fe(e,n);if(i===null||i>=t)return e;const o=Fe("#000000",n)??0;const s=Fe("#ffffff",n)??0;const a=r?Fe(r,n)??0:0;const c=a>=t?r:o>=s?"#000000":"#ffffff";if((Fe(c,n)??0)<t)return e;const d=Fr(n);const l=We(c);const f=We(e);const m=[0,0,0];for(let u=1;u<=1e3;u++){Mo(l,f,u/10,m);if(Vr(Wr(m),d)>=t)return Se(...m)}return c}var Ft=4.5;var yp=3;var it=3;function hp(e,n,t=Ft){return Sn(e,n,t)}function ge(e){return id.test(e)}function bp(e){return/^#[0-9a-fA-F]{6}$/.test(e)}function Io(e,n,t){return(e*299+n*587+t*114)/1e3}function ie(e){const n=e.trim().toLowerCase();const t=Object.hasOwn(Br,n)?Br[n]:void 0;if(t){const s=We(t);return[s[0],s[1],s[2],1]}if(n==="transparent")return[0,0,0,0];const r=ge(n)?n.slice(1):void 0;if(r){const s=r.length<=4?[...r].map(a=>a+a).join(""):r;return[Number.parseInt(s.slice(0,2),16),Number.parseInt(s.slice(2,4),16),Number.parseInt(s.slice(4,6),16),s.length===8?Number.parseInt(s.slice(6,8),16)/255:1]}const i=n.match(/^rgba?\((.*)\)$/);if(i){const s=i[1].trim();const a=s.split("/").map(u=>u.trim());if(a.length>2||a.length===2&&s.includes(","))return null;const c=(s.includes(",")?s.split(","):a[0].split(/\s+/)).map(u=>u.trim());let d=a[1];if(s.includes(",")&&c.length===4&&d===void 0)d=c.pop();if(c.length!==3)return null;if(s.includes(",")&&c.some(u=>u.endsWith("%"))&&!c.every(u=>u.endsWith("%")))return null;const l=u=>{const y=u.endsWith("%");const b=Lt(u,y);if(b===null)return null;const h=y?b*2.55:b;return Math.max(0,Math.min(255,h))};const f=c.map(l);if(f.some(u=>u===null))return null;const m=Oo(d);if(m===null)return null;return[f[0],f[1],f[2],m]}const o=n.match(/^hsla?\((.*)\)$/);if(o){const s=o[1].trim();const a=s.split("/").map(I=>I.trim());if(a.length>2||a.length===2&&s.includes(","))return null;const c=(s.includes(",")?s.split(","):a[0].split(/\s+/)).map(I=>I.trim());let d=a[1];if(s.includes(",")&&c.length===4&&d===void 0)d=c.pop();if(c.length!==3||s.includes(",")&&(!c[1].endsWith("%")||!c[2].endsWith("%")))return null;const l=sd(c[0]);const f=Lt(c[1],c[1].endsWith("%"));const m=Lt(c[2],c[2].endsWith("%"));const u=Oo(d);if(l===null||f===null||m===null||u===null)return null;const y=Math.max(0,f)/100;const b=m/100;const h=(1-Math.abs(2*b-1))*y;const k=(l%360+360)%360/60;const x=h*(1-Math.abs(k%2-1));const[S,g,E]=k<1?[h,x,0]:k<2?[x,h,0]:k<3?[0,h,x]:k<4?[0,x,h]:k<5?[x,0,h]:[h,0,x];const R=b-h/2;const w=[(S+R)*255,(g+R)*255,(E+R)*255];if(w.some(I=>!Number.isFinite(I)))return null;return[Math.max(0,Math.min(255,w[0])),Math.max(0,Math.min(255,w[1])),Math.max(0,Math.min(255,w[2])),u]}return null}function sd(e){const n=e.trim().match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(deg|grad|rad|turn)?$/i);if(!n)return null;const t=Number(n[1]);if(!Number.isFinite(t))return null;let r=t;switch(n[2]?.toLowerCase()){case"grad":r*=.9;break;case"rad":r*=180/Math.PI;break;case"turn":r*=360;break}return Number.isFinite(r)?r:null}function Oo(e){if(e===void 0)return 1;const n=e.endsWith("%");const t=Lt(e,n);if(t===null)return null;const r=n?t/100:t;return Math.max(0,Math.min(1,r))}function Lt(e,n){const t=n?/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?%$/i:/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?$/i;if(!t.test(e))return null;const r=Number(n?e.slice(0,-1):e);return Number.isFinite(r)?r:null}function _o(e,n){const t=ie(e);if(!t)return null;if(t[3]===1)return[t[0],t[1],t[2]];const r=ie(n);if(!r)return null;const i=r[3];const o=t[3]+i*(1-t[3]);if(o<=0)return null;return[0,1,2].map(s=>Math.min(255,Math.max(0,(t[s]*t[3]+r[s]*i*(1-t[3]))/o)))}function Ao(e){const n=od(e);return n?Wr(n):null}function ad(e,n){const t=Ao(e);const r=Ao(n);if(t===null||r===null)return null;return Vr(t,r)}function xp(e,n,t="#ffffff"){const r=_o(n,t);if(!r)return null;const i=Se(...r);const o=_o(e,i);if(!o)return null;return ad(Se(...o),i)}var cd=/^[a-z0-9_,'(). \t-]+$/i;function dd(e){if(!e.includes('"')&&!e.includes("'"))return e;let n="";for(let t=0;t<e.length;t++){const r=e[t];if(r!=='"'&&r!=="'"){n+=r;continue}const i=e.indexOf(r,t+1);if(i<0)return void 0;const o=e.slice(t+1,i);if(o.includes('"')||o.includes("'"))return void 0;n+=`'${o}'`;t=i}return n}function kn(e){if(typeof e!=="string")return void 0;const n=dd(e.trim());if(n===void 0||n.length===0||n.length>256||!cd.test(n))return void 0;let t=0;for(const r of n){if(r==="(")t++;else if(r===")"){t--;if(t<0)return void 0}}if(t!==0)return void 0;for(const r of n.matchAll(/([a-z][a-z0-9-]*)\s*\(/gi)){if(r[1].toLowerCase()!=="var")return void 0}if(/\b(?:url|expression|import)\b/i.test(n))return void 0;return n}function Ur(e){const n=kn(e);if(n===void 0)throw new Error("font family must be a safe non-fetching CSS family or var() fallback");return n}var ld=/^(?:#[0-9a-f]{3,4}|#[0-9a-f]{6}|#[0-9a-f]{8}|[a-z][a-z0-9-]*)$/i;var vo=/^var\(--[a-z_][a-z0-9_-]*\)$/i;var ud=/^[a-z0-9_#(),.%+\-\s/]*$/i;var Po=new Set(["color","color-mix","device-cmyk","hsl","hsla","hwb","lab","lch","oklab","oklch","rgb","rgba"]);function Cp(e){const n=[];let t=0;let r=0;for(let i=0;i<e.length;i++){const o=e[i];if(o==="(")t++;else if(o===")")t--;else if(o===","&&t===0){n.push(e.slice(r,i));r=i+1}if(t<0)return[e]}if(t!==0)return[e];n.push(e.slice(r));return n}function Do(e){return jo(e,false)}function jo(e,n){if(typeof e!=="string")return void 0;const t=e.trim();if(t.length===0||t.length>256)return void 0;if(ld.test(t))return t;if(!ud.test(t))return void 0;const r=t.indexOf("(");if(r<=0||!t.endsWith(")"))return void 0;let i=0;for(const s of t){if(s==="(")i++;else if(s===")"){i--;if(i<0)return void 0}}if(i!==0)return void 0;for(const s of t.matchAll(/([a-z][a-z0-9-]*)\s*\(/gi)){const a=s[1].toLowerCase();if(!(n&&a==="var")&&!Po.has(a))return void 0}const o=t.slice(0,r).trim().toLowerCase();return n&&o==="var"||Po.has(o)?t:void 0}function wp(e,n=false){const t=ce(e);if(t===void 0)return void 0;const r=t.toLowerCase();if(r==="currentcolor"||n&&r==="none")return t;if(vo.test(t))return t;return ie(t)!==null?t:void 0}function Tp(e){return`a color name, #RGB, #RGBA, #RRGGBB, #RRGGBBAA, rgb(), rgba(), hsl(), hsla(), transparent, currentColor${e?", none":""}, or var(--name)`}function ce(e){if(typeof e==="string"&&e.length<=256&&vo.test(e))return e;return jo(e,true)}function zo(e,n){const t=ce(e);if(t===void 0)throw new Error(`${n} must be a safe non-fetching CSS color or var() reference`);return t}var Dp={bg:"#FFFFFF",fg:"#27272A"};var K={text:100,textSec:78,textMuted:66,textFaint:54,line:50,arrow:85,nodeFill:3,nodeStroke:20,groupHeader:5,innerStroke:12,keyBadge:10};function jp(e){const n=e.colors??{};const t=e.type==="dark";const r=i=>e.tokenColors?.find(o=>Array.isArray(o.scope)?o.scope.includes(i):o.scope===i)?.settings?.foreground;return{bg:n["editor.background"]??(t?"#1e1e1e":"#ffffff"),fg:n["editor.foreground"]??(t?"#d4d4d4":"#333333"),line:n["editorLineNumber.foreground"]??void 0,accent:n["focusBorder"]??r("keyword")??void 0,muted:r("comment")??n["editorLineNumber.foreground"]??void 0,surface:n["editor.selectionBackground"]??void 0,border:n["editorWidget.border"]??void 0}}function zp(e){if(!e.shadow)return"";const n=pd(e.bg);const t=n?"#ffffff":"#000000";const r=n?"0.12":"0.08";return` <filter id="bm-shadow" x="-12%" y="-10%" width="128%" height="136%">
|
|
2
|
-
<feDropShadow dx="0" dy="1.5" stdDeviation="2.5" flood-color="${t}" flood-opacity="${r}" />
|
|
3
|
-
</filter>`}function pd(e){const n=e.replace("#","");if(n.length<6)return false;const[t,r,i]=We(e);return Io(t,r,i)/255<.4}function Bo(e){return/^[A-Za-z0-9][A-Za-z0-9 _-]*$/.test(e)}var md="'Inter'";function gd(e){if(!e.includes("var("))return e;const n=/^var\(\s*--[\w-]+\s*,\s*([^()]+)\)$/.exec(e)?.[1]?.trim();return n||md}function Bp(e){return vt(e,yd)}function yd(e){const n="var(--font,";let t="";let r=0;while(true){const i=e.indexOf(n,r);if(i===-1)return t+e.slice(r);t+=e.slice(r,i);let o=1;let s=i+n.length;while(s<e.length&&o>0){if(e[s]==="(")o++;else if(e[s]===")")o--;s++}t+=gd(e.slice(i+n.length,s-1).trim());r=s}}function Wo(e,n,t,r=false){e=Ur(e);const i=r?[...Bo(e)?[`@import url('https://fonts.googleapis.com/css2?family=${encodeURIComponent(e)}:wght@400;500;600;700&display=swap');`]:[],...n?[`@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap');`]:[]]:[];const o=`
|
|
4
|
-
/* Derived from --bg and --fg (overridable via --line, --accent, etc.) */
|
|
5
|
-
--_text: var(--fg);
|
|
6
|
-
--_text-sec: var(--muted, color-mix(in srgb, var(--fg) ${K.textSec}%, var(--bg)));
|
|
7
|
-
--_text-muted: var(--muted, color-mix(in srgb, var(--fg) ${K.textMuted}%, var(--bg)));
|
|
8
|
-
--_text-faint: color-mix(in srgb, var(--fg) ${K.textFaint}%, var(--bg));
|
|
9
|
-
--_line: var(--line, color-mix(in srgb, var(--fg) ${K.line}%, var(--bg)));
|
|
10
|
-
--_arrow: var(--accent, color-mix(in srgb, var(--fg) ${K.arrow}%, var(--bg)));
|
|
11
|
-
--_node-fill: var(--surface, color-mix(in srgb, var(--fg) ${K.nodeFill}%, var(--bg)));
|
|
12
|
-
--_node-stroke: var(--border, color-mix(in srgb, var(--fg) ${K.nodeStroke}%, var(--bg)));
|
|
13
|
-
--_group-fill: var(--bg);
|
|
14
|
-
--_group-hdr: color-mix(in srgb, var(--fg) ${K.groupHeader}%, var(--bg));
|
|
15
|
-
--_inner-stroke: color-mix(in srgb, var(--fg) ${K.innerStroke}%, var(--bg));
|
|
16
|
-
--_key-badge: color-mix(in srgb, var(--fg) ${K.keyBadge}%, var(--bg));`;const s=t?'\n .node, .class-node, .entity, .actor[data-type="participant"], .note, .block, .timeline-event, .journey-task, .sankey-node { filter: url(#bm-shadow); }':"";const a=Bo(e)?`'${e}'`:e;const c=` svg { font-family: var(--font, ${a}), system-ui, sans-serif; }`;const d=i.length>0?[` ${i.join("\n ")}`,c]:[c];return["<style>",...d,...n?[` .mono { font-family: 'JetBrains Mono', 'SF Mono', 'Fira Code', ui-monospace, monospace; }`]:[],` svg {${o}`,` }${s}`,"</style>"].join("\n")}function Vo(e,n,t,r,i){const o=t.font===void 0?void 0:Ur(t.font);for(const u of["bg","fg","line","accent","muted","surface","border"]){const y=t[u];if(y!==void 0)zo(y,u)}const s=[`--bg:${t.bg}`,`--fg:${t.fg}`,t.line?`--line:${t.line}`:"",t.accent?`--accent:${t.accent}`:"",t.muted?`--muted:${t.muted}`:"",t.surface?`--surface:${t.surface}`:"",t.border?`--border:${t.border}`:"",o?`--font:${o}`:""].filter(Boolean).join(";");const a=r?"":";background:var(--bg)";const c=xd(i)?i:void 0;const d=c?.attrs??i??{};const l=`${s}${a}${c?.style?`;${c.style}`:""}`;const f=Object.entries(d).filter(([,u])=>u!==void 0).map(([u,y])=>`${u}="${y}"`).join(" ");const m=f?` ${f}`:"";return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${U(e)} ${U(n)}" width="${nt("width",String(c?.width??e))}" height="${nt("height",String(c?.height??n))}" style="${l}"${m}>`}var Lo=new Le(64,256*1024);function Uo(e){const n=[e.bg,e.fg,e.line,e.accent,e.muted,e.surface,e.border].join("\n");const t=Lo.get(n);if(t)return t;const r=Object.freeze(hd(Go(e)??e));const i=n.length*2+So(r,256*1024);Lo.set(n,r,i);return r}function Go(e){if(ge(e.bg)&&ge(e.fg))return e;const n=ie(e.bg),t=ie(e.fg);if(!n||!t||n[3]!==1||t[3]!==1)return void 0;return{...e,bg:Se(n[0],n[1],n[2]),fg:Se(t[0],t[1],t[2])}}function hd(e){const{bg:n,fg:t}=e;const r=e.surface??fe(t,n,K.nodeFill);const i=fe(t,n,K.groupHeader);const o=fe(t,n,K.keyBadge);const s=Fo(e,[n,r,i,o]);const{text:a,textSec:c,textMuted:d,textFaint:l}=s.legible?s:Fo(e,[n,i,o]);return{bg:n,fg:t,text:a,textSec:c,textMuted:d,textFaint:l,line:Sn(e.line??fe(t,n,K.line),n,3,a),arrow:Sn(e.accent??fe(t,n,K.arrow),n,3,a),nodeFill:r,nodeStroke:bd(e.border??fe(t,n,K.nodeStroke),n,a),groupFill:n,groupHdr:i,innerStroke:fe(t,n,K.innerStroke),keyBadge:o}}function bd(e,n,t){const r=ie(e),i=ie(n);if(!r||!i||r[3]!==1||i[3]!==1)return e;const o=Se(r[0],r[1],r[2]),s=Se(i[0],i[1],i[2]);if((Fe(o,s)??Infinity)>=it)return e;const a=ie(t);return Sn(o,s,it,a?.[3]===1?Se(a[0],a[1],a[2]):void 0)}function Fo(e,n){const{bg:t,fg:r}=e;const i=Wt(r,n);const o=Wt(e.muted??fe(r,t,K.textSec),n,i);const s=Wt(e.muted??fe(r,t,K.textMuted),n,i);const a=Wt(fe(r,t,K.textFaint),n,i,it);const c=(l,f)=>n.every(m=>(Fe(l,m)??Infinity)>=f);const d=[i,o,s].every(l=>c(l,Ft))&&c(a,it);return{text:i,textSec:o,textMuted:s,textFaint:a,legible:d}}function Wt(e,n,t,r=Ft){let i=e;for(let o=0;o<2;o++){for(const s of n)i=Sn(i,s,r,t)}return i}function Yo(e){if(!Go(e))return void 0;const n=Uo(e);const t=new Map;t.set("bg",n.bg);t.set("fg",n.fg);if(e.line&&ge(e.line))t.set("line",e.line);if(e.accent&&ge(e.accent))t.set("accent",e.accent);if(e.muted&&ge(e.muted))t.set("muted",e.muted);if(e.surface&&ge(e.surface))t.set("surface",e.surface);if(e.border&&ge(e.border))t.set("border",e.border);t.set("_text",n.text);t.set("_text-sec",n.textSec);t.set("_text-muted",n.textMuted);t.set("_text-faint",n.textFaint);t.set("_line",n.line);t.set("_arrow",n.arrow);t.set("_node-fill",n.nodeFill);t.set("_node-stroke",n.nodeStroke);t.set("_group-fill",n.groupFill);t.set("_group-hdr",n.groupHdr);t.set("_inner-stroke",n.innerStroke);t.set("_key-badge",n.keyBadge);return t}function Lp(e,n){if(ge(e))return e;const t=e.match(/^var\(\s*--([\w-]+)\s*(?:,\s*(#[0-9a-fA-F]{3,8})\s*)?\)$/);if(!t)return void 0;return Yo(n)?.get(t[1])??t[2]}function Ho(e){const n=new Map;for(const t of e.styleContexts){const r=e.source.slice(t.start,t.end);for(const i of r.matchAll(/--([\w-]+)\s*:\s*([^;{}]+)/g)){const o=i[2].trim();if(o==="none"||o.toLowerCase()==="currentcolor"||ie(o)||o.startsWith("var(")&&ce(o))n.set(i[1],o)}}return n}function Fp(e,n){const t=Vt(n,e);return t?Ko(e,t):e}function Wp(e,n){const t=j(e);const r=Vt(n);return Gr(t,r)}function Vp(){let e;let n;return(t,r)=>{const i=j(t);if(r!==e){const o=Object.isFrozen(r)?Object.getOwnPropertyDescriptors(r):void 0;const s=o&&Reflect.ownKeys(o).every(a=>"value"in o[a])&&["bg","fg","line","accent","muted","surface","border","font"].every(a=>{const c=o[a];return Object.hasOwn(o,a)&&(c.value===void 0||typeof c.value==="string")});if(!s)return Gr(i,Vt(r));n=Vt(r);e=r}return Gr(i,n)}}function Gr(e,n){const t=n?n.resolveCss(e,n.vars,10):e;if(n&&/[<"]/.test(t)){const r=Ko(`<rect fill="${e}"/>`,n);return bo(Be(r)[0],"fill")}return fd(t)}function Vt(e,n){const t=Yo(e);if(!t)return void 0;const r=Uo(e);const i=n===void 0?void 0:qe(n);const o=i?Ho(i):new Map;for(const[c,d]of t)if(c.startsWith("_")||d!==void 0&&!o.has(c))o.set(c,d);o.set("bg",r.bg);o.set("fg",r.fg);const s=new Set(["font"]);for(const c of[e.font,e.line,e.accent,e.muted,e.surface,e.border]){if(!c)continue;for(const d of c.matchAll(/var\(\s*--([\w-]+)/g)){if(!o.has(d[1]))s.add(d[1])}}const a=(c,d,l)=>{let f=c;for(let m=0;m<l;m++){const u=f;f=f.replace(/var\(--([\w-]+)\)/g,(y,b)=>{if(s.has(b))return y;return d.get(b)??y});f=f.replace(/var\(--([\w-]+),\s*([^()]+)\)/g,(y,b,h)=>{if(s.has(b))return y;return d.get(b)??h.trim()});f=f.replace(/color-mix\(in srgb,\s*(#[0-9a-fA-F]{3,8})\s+(\d+(?:\.\d+)?)%,\s*(#[0-9a-fA-F]{3,8}|transparent)\)/g,(y,b,h,k)=>{const x=k==="transparent"?r.bg:k;return fe(b,x,parseFloat(h))});if(f===u)break}return f};return{vars:o,SKIP_VARS:s,resolveCss:a,projection:i}}function Ko(e,n){const{vars:t,SKIP_VARS:r,resolveCss:i}=n;const o=n.projection??qe(e);const s=new Map;let a=vt(e,f=>{const m=s.get(f);if(m!==void 0)return m;const u=i(f,t,10);s.set(f,u);return u},o);let c=a.includes("color-mix(");if(!c){for(const f of a.matchAll(/var\((?=\s*--([\w-]+))/g)){if(!r.has(f[1])){c=true;break}}}if(!c)return a;let d=qe(a);const l=Ho(d);if(l.size>0){for(let f=0;f<5;f++){const m=vt(a,u=>i(u,l,1),d);if(m===a)break;a=m;d=qe(a)}}return a}function xd(e){return Boolean(e&&("width"in e||"height"in e||"style"in e||"attrs"in e))}var Ve="0.5.3";var Ut=2;var Xo=`${Ut}.0.0`;function qp(e,n){if(e===void 0||n===void 0)return false;if(e.id!==n.id||e.kind!==n.kind||e.version!==n.version)return false;const t=new Set([...Object.keys(e.compatibility),...Object.keys(n.compatibility)]);for(const r of t){if(e.compatibility[r]!==n.compatibility[r])return false}return e.provenance.owner===n.provenance.owner&&e.provenance.source===n.provenance.source&&e.provenance.reference===n.provenance.reference}var Sd=Object.freeze({core:Ve,scene:Xo});function Hr(e,n){if(!e.compatibility[n]){throw new Error(`Extension "${e.id}" must declare an explicit compatible "${n}" range`)}}function kd(e){const n=[];for(const[t,r]of Object.entries(e.compatibility)){if(r===void 0)continue;const i=Sd[t];if(!Nr(r)){n.push(Object.freeze({contract:t,range:r,status:"invalid",diagnostic:`Compatibility requirement "${t}" has invalid semantic-version range "${r}".`}));continue}if(i!==void 0){const o=$r(i,r);n.push(Object.freeze({contract:t,range:r,status:o?"compatible":"incompatible",version:i,...!o?{diagnostic:`Compatibility requirement "${t}" range "${r}" does not include host version ${i}.`}:{}}));continue}if(!$t(t)){n.push(Object.freeze({contract:t,range:r,status:"invalid",diagnostic:`Unknown compatibility requirement "${t}" must use a namespace.`}));continue}n.push(Object.freeze({contract:t,range:r,status:"deferred"}))}return Object.freeze({accepted:n.every(t=>t.status==="compatible"||t.status==="deferred"),resolutions:Object.freeze(n)})}var qo=/^[a-z][a-z0-9-]*$/;var Jo=/^[a-z0-9][a-z0-9._/-]*$/;var Zo=new WeakSet;var Gt=new WeakMap;function Ed(e,n){const t=Gt.get(e);if(t){t.reentrantAttempted=true;throw new Error(`Extension registry mutation is forbidden while ${t.operation} is in progress`)}const r={operation:n,reentrantAttempted:false};Gt.set(e,r);return r}function Cd(e){if(e.reentrantAttempted){throw new Error(`Extension registry mutation is forbidden after a reentrant attempt during ${e.operation}`)}}function wd(e,n){if(Gt.get(e)===n)Gt.delete(e)}function ot(e,n){if(!qo.test(e))throw new Error(`Invalid extension kind "${e}"`);if(!Jo.test(n)){throw new Error(`Invalid ${e} extension local id "${n}"`)}return`${e}:${n}`}function Je(e){const n=e.indexOf(":");if(n<=0||n===e.length-1||e.indexOf(":",n+1)!==-1)return void 0;const t=e.slice(0,n);const r=e.slice(n+1);if(!qo.test(t)||!Jo.test(r))return void 0;return{kind:t,localId:r}}function En(e){const n=e.id;const t=e.kind;const r=e.version;const i=e.compatibility;const o=e.provenance;const s=Object.freeze({...i??{}});const a=Object.freeze({...o});const c=Je(n);if(!c||c.kind!==t){throw new Error(`Extension id "${n}" must use the "${t}:" namespace`)}if(!De(r)){throw new Error(`Extension "${n}" requires a semantic version (received "${r}")`)}if(a.owner.trim().length===0)throw new Error(`Extension "${n}" requires a provenance owner`);if(a.source.trim().length===0)throw new Error(`Extension "${n}" requires a provenance source`);const d=Object.freeze({id:n,kind:t,version:r,compatibility:s,provenance:a});const l=kd(d);if(!l.accepted){throw new Error(`Extension "${n}" has incompatible requirements: ${l.resolutions.filter(f=>f.status==="incompatible"||f.status==="invalid").map(f=>f.diagnostic).join("; ")}`)}Zo.add(d);return d}var Yr=class extends Error{constructor(t,r){super(`Cannot register ${t.kind} "${t.id}" for owner "${t.provenance.owner}": already registered by "${r.provenance.owner}" at version ${r.version}`);this.incoming=t;this.existing=r;this.name="ExtensionCollisionError"}incoming;existing;code="EXTENSION_ID_COLLISION"};function st(e,n){const t=Ed(e,"extension registration");try{const r=Object.freeze({identity:n.identity,value:n.value});if(!Zo.has(r.identity)){throw new TypeError("Extension registration identity must be created by createExtensionIdentity()")}const i=r.identity.id;const o=e.get(i);if(o)throw new Yr(r.identity,o.identity);Cd(t);e.set(i,r)}finally{wd(e,t)}}var ke=Object.freeze({fontFamily:{kind:"font",description:"Safe font family/stack for roles whose descriptor exposes family-specific typography."},fontSize:{kind:"number",minimum:1,maximum:256,expected:"between 1 and 256",description:"Font size in SVG user units."},fontWeight:{kind:"number",minimum:1,maximum:1e3,expected:"between 1 and 1000",description:"CSS numeric font weight."},letterSpacing:{kind:"number",minimum:-2,maximum:4,expected:"between -2 and 4",description:"Letter spacing in SVG user units."},textTransform:{kind:"enum",values:["uppercase","lowercase","capitalize"],description:"Text transformation."},textColor:{kind:"color",description:"Text paint."},paddingX:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Horizontal role padding."},paddingY:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Vertical role padding."},cornerRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Applicable corner radius."},lineWidth:{kind:"number",exclusiveMinimum:0,maximum:20,expected:"greater than 0 and at most 20",description:"Border or connector width."},bendRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256",description:"Applicable connector bend radius."},fillColor:{kind:"color",description:"Surface fill paint."},borderColor:{kind:"color",description:"Border paint."},strokeColor:{kind:"color",description:"Connector stroke paint."},headerFillColor:{kind:"color",description:"Group header surface paint."},cue:{kind:"enum",values:["none","outline","double-line","pattern"],description:"Non-color semantic cue on roles whose family renderer exposes a cue projection."}});var Kr=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","paddingX","paddingY","cornerRadius","lineWidth","fillColor","borderColor"]);var Qo=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","lineWidth","bendRadius","strokeColor"]);var Td=Object.freeze([...Kr,"fontFamily","headerFillColor"]);var Rd=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor"]);var Nd=Object.freeze(["fontFamily","fontSize","fontWeight","letterSpacing","textTransform","textColor","fillColor","borderColor","strokeColor","lineWidth","cue"]);var $d=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","cue"]);var Od=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","textColor"]);var Xr=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth"]);var _d=Object.freeze(["borderColor","strokeColor","lineWidth"]);var es=Object.freeze([...Xr,"cue"]);function oe(e,n){return Object.freeze({properties:e,...n?{bindingFamilies:Object.freeze([...n])}:{}})}var Ze=Object.freeze({node:oe(Kr),edge:oe(Qo),group:oe(Td),"group-header":oe(Nd,["journey"]),label:oe(Rd),actor:oe(Kr,["sequence"]),relationship:oe(Qo,["er"]),"pie-slice":oe($d,["pie","radar"]),legend:oe(Od,["radar"]),bar:oe(Xr,["xychart","sankey","treemap"]),series:oe(_d,["xychart"]),point:oe(Xr,["radar","xychart"]),task:oe(es,["gantt"]),milestone:oe(es,["gantt"])});var at=Object.freeze(Object.keys(Ze));var Ue=Object.freeze(at.filter(e=>"bindingFamilies"in Ze[e]));var Yt=Object.freeze([...new Set(Ue.flatMap(e=>Ze[e].properties))]);var pe=["shape","connector","text","group","document"];var Cn=["shape"];var qr=["connector"];var ns=["text"];var Ad=["shape","text"];var ye=["shape","group"];var Md=["shape","text","group"];var ts=["connector","group"];var Id=["document"];var rs=["text","group"];var Pd=["document"];function A(e,n,t,r={}){const i=Ze[e];return Object.freeze({applicableKinds:n,styleFallback:t,styleConsumption:i?"exact":"fallback-only",styleExtras:Object.freeze([]),...i?{styleProperties:i.properties}:{},styleBindingFamilies:Object.freeze([...i?.bindingFamilies??[]]),domIdentity:false,relation:false,sketch:"none",textHalo:false,...r})}var wn=Object.freeze({node:A("node",ye,"node",{domIdentity:true,sketch:"shape"}),edge:A("edge",qr,"edge",{domIdentity:true,relation:true,sketch:"connector"}),"edge-label":A("edge-label",rs,"label"),group:A("group",ye,"group",{domIdentity:true,sketch:"shape"}),"group-header":A("group-header",pe,"group",{sketch:"shape",textHalo:true}),label:A("label",ns,"label",{textHalo:true}),actor:A("actor",ye,"node",{domIdentity:true,sketch:"shape"}),lifeline:A("lifeline",ts,"edge",{sketch:"connector"}),activation:A("activation",ye,"node",{domIdentity:true,sketch:"shape"}),message:A("message",ts,"edge",{domIdentity:true,relation:true,sketch:"connector"}),block:A("block",pe,"group",{domIdentity:true,sketch:"shape"}),note:A("note",ye,"group",{domIdentity:true,sketch:"shape"}),"class-box":A("class-box",ye,"node",{domIdentity:true,sketch:"shape"}),member:A("member",ns,"label",{domIdentity:true,textHalo:true}),entity:A("entity",ye,"node",{domIdentity:true,sketch:"shape"}),attribute:A("attribute",rs,"label",{domIdentity:true,textHalo:true}),relationship:A("relationship",qr,"edge",{domIdentity:true,relation:true,sketch:"connector"}),cardinality:A("cardinality",Ad,"label",{domIdentity:true,textHalo:true}),"pie-slice":A("pie-slice",Cn,"node",{domIdentity:true,sketch:"shape"}),legend:A("legend",Md,"group",{textHalo:true}),bar:A("bar",Cn,"node",{domIdentity:true,sketch:"shape"}),series:A("series",qr,"edge",{domIdentity:true,sketch:"connector"}),point:A("point",Cn,"node",{domIdentity:true}),axis:A("axis",pe,"label",{textHalo:true}),grid:A("grid",pe,"edge"),plate:A("plate",Cn,"node",{domIdentity:true,sketch:"shape"}),section:A("section",pe,"group",{domIdentity:true,sketch:"shape",textHalo:true}),task:A("task",pe,"node",{domIdentity:true,sketch:"shape"}),milestone:A("milestone",Cn,"node",{domIdentity:true,sketch:"shape"}),"marker-line":A("marker-line",pe,"edge"),rail:A("rail",pe,"edge",{sketch:"connector"}),period:A("period",ye,"group",{domIdentity:true,sketch:"shape"}),event:A("event",ye,"group",{domIdentity:true,sketch:"shape"}),score:A("score",pe,"node"),"actor-pill":A("actor-pill",Cn,"node",{sketch:"shape"}),service:A("service",ye,"node",{domIdentity:true,sketch:"shape"}),junction:A("junction",ye,"node",{domIdentity:true}),icon:A("icon",["shape","text","group","document"],"node",{textHalo:true}),title:A("title",pe,"label",{domIdentity:true,textHalo:true}),defs:A("defs",Id,"label"),prelude:A("prelude",Pd,"label"),chrome:A("chrome",pe,"label")});var vd=Object.freeze({applicableKinds:pe,styleFallback:"label",styleConsumption:"fallback-only",styleExtras:Object.freeze([]),styleBindingFamilies:Object.freeze([]),domIdentity:true,relation:false,sketch:"none",textHalo:false});var Qe=Object.freeze(Object.entries(wn).map(([e,n])=>Object.freeze({identity:En({id:`role:${e}`,kind:"role",version:"1.0.0",compatibility:{core:Ve,scene:"^2.0.0"},provenance:{owner:"agentic-mermaid",source:"built-in",reference:"src/scene/roles.ts"}}),role:e,traits:n,style:(()=>{const t=n.styleFallback;return Object.freeze({fallbackRole:t,applicableProperties:n.styleProperties??Object.freeze([])})})()})));function Dd(e){const n=wn[e];if(n)return{traits:n,source:"builtin"};return{traits:vd,source:"namespaced-safe"}}function Tn(e){return Dd(e).traits}function jd(e){return e}function zd(e,n){const t=n[e.channel];return Array.isArray(t)?t.includes(e.value):String(t??"")===e.value}function Bd(e,n,t={},r={}){const i=Qe.find(l=>l.role===n);const o=jd(e?.roles);const s=r.includeFallback===false?void 0:i?o?.[i.style.fallbackRole]:void 0;const a=o?.[n];let c=s||a?{...s,...a}:void 0;const d=new Set(i?.style.applicableProperties??[]);for(const l of e?.bindings??[]){if(l.role!==void 0&&l.role!==n)continue;if(!zd(l,t))continue;const f=e?.semanticSlots?.[l.slot];if(!f)continue;const m=Object.fromEntries(Object.entries(f).filter(([u])=>d.has(u)));c={...c,...m}}return c?Object.freeze(c):void 0}function im(e,n,t,r,i){if(t!=="start"&&t!=="end")throw new TypeError("Arrow endpoint must be start or end");const{width:o,height:s}=n;const a=t==="start"?0:o;const c=t==="start"?o:0;const d={id:e,shape:"arrow",size:{width:o,height:s},ref:{x:a,y:s/2},...i?{units:i}:{},orient:"auto",geometry:{kind:"polygon",points:[{x:c,y:0},{x:a,y:s/2},{x:c,y:s}]},paint:r};Ht(d);return d}function D(e,n){if(!Number.isFinite(e))throw new Error(`Marker ${n} must be finite`);return e}function Ld(e){if(!e)return"";const n=[];if(e.fill!==void 0)n.push(`fill="${j(e.fill)}"`);if(e.stroke!==void 0)n.push(`stroke="${j(e.stroke)}"`);if(e.strokeWidth!==void 0)n.push(`stroke-width="${j(e.strokeWidth)}"`);if(e.strokeDasharray!==void 0)n.push(`stroke-dasharray="${j(e.strokeDasharray)}"`);if(e.strokeDashoffset!==void 0)n.push(`stroke-dashoffset="${j(e.strokeDashoffset)}"`);if(e.strokeLinecap!==void 0)n.push(`stroke-linecap="${j(e.strokeLinecap)}"`);if(e.strokeLinejoin!==void 0)n.push(`stroke-linejoin="${j(e.strokeLinejoin)}"`);if(e.strokeMiterlimit!==void 0)n.push(`stroke-miterlimit="${j(e.strokeMiterlimit)}"`);if(e.vectorEffect!==void 0)n.push(`vector-effect="${j(e.vectorEffect)}"`);if(e.paintOrder!==void 0)n.push(`paint-order="${j(e.paintOrder)}"`);if(e.opacity!==void 0)n.push(`opacity="${j(e.opacity)}"`);return n.length>0?` ${n.join(" ")}`:""}function is(e){return e.map(n=>`${D(n.x,"point.x")} ${D(n.y,"point.y")}`).join(", ")}function os(e,n,t){const r=Ld(n);switch(e.kind){case"rect":return[`${t}<rect x="${D(e.x,"rect.x")}" y="${D(e.y,"rect.y")}" width="${D(e.width,"rect.width")}" height="${D(e.height,"rect.height")}"${e.rx!==void 0?` rx="${D(e.rx,"rect.rx")}"`:""}${e.ry!==void 0?` ry="${D(e.ry,"rect.ry")}"`:""}${r} />`];case"circle":return[`${t}<circle cx="${D(e.cx,"circle.cx")}" cy="${D(e.cy,"circle.cy")}" r="${D(e.r,"circle.r")}"${r} />`];case"ellipse":return[`${t}<ellipse cx="${D(e.cx,"ellipse.cx")}" cy="${D(e.cy,"ellipse.cy")}" rx="${D(e.rx,"ellipse.rx")}" ry="${D(e.ry,"ellipse.ry")}"${r} />`];case"line":return[`${t}<line x1="${D(e.x1,"line.x1")}" y1="${D(e.y1,"line.y1")}" x2="${D(e.x2,"line.x2")}" y2="${D(e.y2,"line.y2")}"${r} />`];case"polygon":return[`${t}<polygon points="${is(e.points)}"${r} />`];case"polyline":return[`${t}<polyline points="${is(e.points)}"${r} />`];case"path":return[`${t}<path d="${j(e.d)}"${r} />`];case"compound":return e.children.flatMap(i=>os(i,n,t))}}function Ht(e){if(typeof e.id!=="string"||e.id.trim()==="")throw new Error("Marker id must not be empty");if(!["arrow","open-arrow","circle","cross","triangle","diamond","diamond-open"].includes(String(e.shape))){throw new Error(`Marker "${e.id}" has an unknown shape`)}if(!e.geometry)throw new Error(`Marker "${e.id}" must declare geometry`);if(!e.size)throw new Error(`Marker "${e.id}" must declare marker size`);if(!e.ref)throw new Error(`Marker "${e.id}" must declare a reference point`);if(!(e.size.width>0)||!(e.size.height>0))throw new Error(`Marker "${e.id}" size must be positive`);D(e.size.width,"size.width");D(e.size.height,"size.height");D(e.ref.x,"ref.x");D(e.ref.y,"ref.y");if(e.units!==void 0&&e.units!=="strokeWidth"&&e.units!=="userSpaceOnUse"){throw new Error(`Marker "${e.id}" units must be strokeWidth or userSpaceOnUse`)}if(typeof e.orient==="number")D(e.orient,"orient");else if(e.orient!==void 0&&e.orient!=="auto"&&e.orient!=="auto-start-reverse"){throw new Error(`Marker "${e.id}" orient must be auto, auto-start-reverse, or a finite angle`)}if(e.overflow!==void 0&&e.overflow!=="hidden"&&e.overflow!=="visible"){throw new Error(`Marker "${e.id}" overflow must be hidden or visible`)}if(e.viewBox){D(e.viewBox.x,"viewBox.x");D(e.viewBox.y,"viewBox.y");D(e.viewBox.width,"viewBox.width");D(e.viewBox.height,"viewBox.height");if(!(e.viewBox.width>0)||!(e.viewBox.height>0))throw new Error(`Marker "${e.id}" viewBox must be positive`)}}function Jr(e,n={}){Ht(e);const t=" ".repeat(n.indent??2);const r=`${t} `;const i=e.units;const o=e.orient??"auto";const s=[`id="${j(e.id)}"`,`markerWidth="${D(e.size.width,"size.width")}"`,`markerHeight="${D(e.size.height,"size.height")}"`,`refX="${D(e.ref.x,"ref.x")}"`,`refY="${D(e.ref.y,"ref.y")}"`,`orient="${j(String(o))}"`,...i?[`markerUnits="${j(i)}"`]:[],...e.viewBox?[`viewBox="${D(e.viewBox.x,"viewBox.x")} ${D(e.viewBox.y,"viewBox.y")} ${D(e.viewBox.width,"viewBox.width")} ${D(e.viewBox.height,"viewBox.height")}"`]:[],...e.overflow?[`overflow="${j(e.overflow)}"`]:[]];return[`${t}<marker ${s.join(" ")}>`,...os(e.geometry,e.paint,r),`${t}</marker>`].join("\n")}function Zr(e,n={}){const t=new Set;for(const r of e){if(t.has(r.id))throw new Error(`Duplicate marker resource "${r.id}"`);t.add(r.id)}return e.map(r=>Jr(r,n)).join("\n")}var cs=2;function ni(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\\(?:\r\n|[\n\r\f])/g,"").replace(/\\([0-9a-fA-F]{1,6})\s?/g,(n,t)=>{const r=Number.parseInt(t,16);return Number.isFinite(r)?String.fromCodePoint(r):""}).replace(/\\([^\n\r\f])/g,"$1")}var Fd=/\s([^\s=<>]+)\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/g;var Wd=/<(?:[^\s<>/:]+:)?(?:animate(?:Motion|Transform)?|set)\b/i;var Vd=/^on[a-z]/;var Ud=/[(:@\\&]/;var Gd=/^(?:javascript|vbscript|data|file):/;var ds=/(?:javascript|vbscript|data|file)\s*:/i;var Yd=/(?:expression|behavior)\s*\(/i;var Hd=/(?:expression|behavior)\s*\(|-moz-binding\s*:/i;function Kd(e){const n=[];for(let t=e.indexOf("<");t>=0;t=e.indexOf("<",t+1)){const r=e[t+1];if(!r||r==="/"||r==="!"||r==="?")continue;if(!/[^\s<>]/.test(r))continue;let i;for(let o=t+1;o<e.length;o++){const s=e[o];if(i){if(s===i)i=void 0}else if(s==='"'||s==="'"){i=s}else if(s===">"){n.push(e.slice(t,o+1));t=o;break}}}return n}var Xd=new Set(["amp","lt","gt","quot","apos"]);function ct(e){return e===" "||e===" "||e==="\n"||e==="\r"}function Qr(e,n){const t=e.charCodeAt(n),r=t|32;if(!(r>=97&&r<=122||t===95))return-1;let i=n+1;while(et(e[i]))i++;return i}function qd(e){const n=e.indexOf(":");if(n<=0||n===e.length-1||e.indexOf(":",n+1)>=0)return void 0;return{prefix:e.slice(0,n),local:e.slice(n+1)}}var ei="http://www.w3.org/XML/1998/namespace";var Jd="http://www.w3.org/2000/xmlns/";var Zd="http://www.w3.org/2000/svg";function ss(e){return e===9||e===10||e===13||e>=32&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}function Qd(e){return!/[\0-\x08\x0b\x0c\x0e-\x1f\ud800-\udfff\ufffe\uffff]/u.test(e)}function as(e){for(let n=e.indexOf("&");n>=0;n=e.indexOf("&",n+1)){const t=e.indexOf(";",n+1);if(t<0)return false;const r=e.slice(n+1,t);if(r.startsWith("#x")||r.startsWith("#X")){if(!/^[0-9a-f]+$/i.test(r.slice(2)))return false;if(!ss(Number.parseInt(r.slice(2),16)))return false}else if(r.startsWith("#")){if(!/^[0-9]+$/.test(r.slice(1)))return false;if(!ss(Number.parseInt(r.slice(1),10)))return false}else if(!Xd.has(r)){return false}n=t}return true}function ls(e){return ze("xml-envelope",e,()=>us(e))}function us(e,n){if(!Qd(e))return false;const t=[];let r=false;let i=false;let o=0;while(o<e.length){if(e[o]!=="<"){const h=e.indexOf("<",o);const k=h<0?e.length:h;const x=e.slice(o,k);if(t.length===0&&x.trim()!==""||x.includes("]]>")||!as(x))return false;o=k;continue}if(e.startsWith("<!--",o)){if(t.length===0)return false;const h=e.indexOf("-->",o+4);const k=h<0?"":e.slice(o+4,h);if(h<0||k.includes("--")||k.endsWith("-"))return false;o=h+3;continue}if(e.startsWith("<![CDATA[",o))return false;if(e.startsWith("<!",o)||e.startsWith("<?",o))return false;if(e.startsWith("</",o)){let h=Qr(e,o+2);if(h<0)return false;const k=e.slice(o+2,h);if(k.includes(":"))return false;while(ct(e[h]))h++;if(e[h]!==">"||t.pop()?.name!==k)return false;o=h+1;if(t.length===0){if(k!=="svg"||i)return false;i=true}continue}const s=Qr(e,o+1);if(s<0||i)return false;const a=e.slice(o+1,s);if(a.includes(":"))return false;if(t.length===0){if(r||a!=="svg")return false;r=true}let c=s;const d=new Set;const l=[];let f=false;for(;;){const h=ct(e[c]);while(ct(e[c]))c++;if(e[c]===">"){c++;break}if(e[c]==="/"&&e[c+1]===">"){f=true;c+=2;break}if(!h)return false;const k=Qr(e,c);if(k<0)return false;const x=e.slice(c,k);if(d.has(x))return false;const S=x.includes(":");const g=S?qd(x):void 0;if(S&&!g)return false;d.add(x);c=k;while(ct(e[c]))c++;if(e[c]!=="=")return false;c++;while(ct(e[c]))c++;const E=e[c];if(E!=='"'&&E!=="'")return false;const R=++c;c=e.indexOf(E,R);if(c<0)return false;const w=e.slice(R,c);if(w.includes("<")||!as(w))return false;if(g||x==="xmlns"){l.push({name:x,...g,value:Rn(w)})}n?.(x,w);c++}const m=t.at(-1)?.namespaces;let u=m??new Map([["xml",ei]]);let y;for(const h of l){const k=h.name==="xmlns";const x=h.prefix==="xmlns";if(!k&&!x)continue;const S=k?"":h.local;const g=h.value;if(S==="xmlns"||g===Jd||S==="xml"&&g!==ei||S!=="xml"&&g===ei||S!==""&&g==="")return false;if(!y){y=new Map(u);u=y}y.set(S,g)}if(u.get("")!==Zd)return false;if(t.length>0&&a==="svg"){return false}let b;for(const h of l){if(h.name==="xmlns"||h.prefix==="xmlns")continue;const k=u.get(h.prefix);if(k===void 0)return false;const x=`${k}\0${h.local}`;if(!b)b=new Set;if(b.has(x))return false;b.add(x)}o=c;if(f){if(t.length===0)return false}else{t.push({name:a,namespaces:u})}}return r&&i&&t.length===0}function Rn(e){if(!e.includes("&"))return e;let n=e;for(let t=0;t<3;t++){const r=n.replace(/&#x([0-9a-f]+);?/gi,(i,o)=>{const s=Number.parseInt(o,16);return Number.isFinite(s)&&s<=1114111?String.fromCodePoint(s):""}).replace(/&#([0-9]+);?/g,(i,o)=>{const s=Number.parseInt(o,10);return Number.isFinite(s)&&s<=1114111?String.fromCodePoint(s):""}).replace(/:?/gi,":").replace(//?/gi,"/").replace(/&tab;?/gi," ").replace(/&newline;?/gi,"\n").replace(/"?/gi,'"').replace(/'?/gi,"'").replace(/<?/gi,"<").replace(/>?/gi,">").replace(/&?/gi,"&");if(r===n)break;n=r}return n}function el(e){const n=e[0];return(n==='"'||n==="'")&&e[e.length-1]===n?e.slice(1,-1):e}function fs(e){return Rn(e).replace(/[\u0000-\u0020\u007f-\u009f]+/g,"").toLowerCase()}function cm(e){const n=Rn(e);if(/[\u0000-\u001f\u007f-\u009f]/.test(n))return false;const t=n.replace(/ +/g,"").toLowerCase().trim();if(/^(?:https?:|mailto:)/.test(t))return true;if(/^[a-z][a-z0-9+.-]*:/.test(t))return false;return t.length>0}function ps(e){const n=ni(Rn(e));const t=[];if(/@import\b/i.test(n))t.push("@import");for(const r of n.matchAll(/url\s*\(\s*(["']?)([\s\S]*?)\1\s*\)/gi)){const i=fs(r[2]);if(i!==""&&!i.startsWith("#"))t.push(`url(${r[2].trim()})`)}for(const r of n.matchAll(/(?:-webkit-)?(?:image-set|cross-fade)\s*\(/gi)){t.push(`${r[0].slice(0,-1).trim()}()`)}return t}function nl(e){const n=ni(Rn(e));return ms(n)}function ms(e){if(Hd.test(e))return true;if(ds.test(e))return true;return false}var tl=new Set(["clip-path","cursor","fill","filter","marker-end","marker-mid","marker-start","mask","stroke","style"]);function dm(e,n){if(e===void 0||e==="")return void 0;if(typeof e!=="string")return"Mermaid themeCSS must be a string";return`Raw Mermaid themeCSS is not allowed in ${n} security mode because selectors can escape an imported SVG; use a declarative StyleSpec`}function rl(e){return ze("security",e,()=>il(e))}function gs(e,n,t,r){const i=e.slice(e.lastIndexOf(":")+1).toLowerCase();if(Vd.test(i)){t.push("inline-event-handler");r.push("inline-event-handler")}if(e.toLowerCase()==="xml:base")t.push(`xml:base=${n}`);if(i==="href"||i==="src"||i==="data"){const o=fs(n);if(o!==""&&!o.startsWith("#"))t.push(o.startsWith("javascript:")?"javascript-url":n);if(Gd.test(o))r.push(`${e}=${n}`)}if(tl.has(i)||i==="values"||i==="from"||i==="to"){if(!Ud.test(n))return;const o=ni(Rn(n));if(ps(o).length>0||ds.test(o)||Yd.test(o))t.push(`${e}=${n}`);if(ms(o))r.push(`${e}=${n}`)}}function il(e){const n=e.replace(/<!--[\s\S]*?-->/g,"");const t=[];const r=[];for(const i of Kd(n)){for(const o of i.matchAll(new RegExp(Fd.source,"g"))){gs(o[1],el(o[2]),t,r)}}return ys(n,t,r)}function ys(e,n,t){for(const r of e.matchAll(/<style\b[^>]*>([\s\S]*?)<\/style>/gi)){if(nl(r[1]))t.push("active-css");n.push(...ps(r[1]))}for(const r of["script","foreignObject","image","object","embed","iframe"]){if(new RegExp(`<(?:[^\\s<>/:]+:)?${r}\\b`,"i").test(e)){n.push(`<${r}>`);if(r!=="image")t.push(`<${r}>`)}}if(Wd.test(e)){n.push("<animation>");t.push("<animation>")}return Object.freeze({active:Object.freeze(t),refs:Object.freeze(n)})}function ti(e){const{refs:n}=rl(e);return{ok:n.length===0,refs:[...n]}}function ol(e){return ze("final-security",e,()=>{const n=[];const t=[];let r=false;let i;const o=us(e,(s,a)=>{if(r)return;try{gs(s,a,n,t)}catch(c){r=true;i=c}});if(!o)return false;if(r)throw i;return ys(e.replace(/<!--[\s\S]*?-->/g,""),n,t)})}function Kt(e,n="default"){const t=ol(e);if(!t){throw new Error("OutputSecurityPolicy rejected an invalid SVG document envelope")}const{active:r,refs:i}=t;if(r.length>0){throw new Error(`OutputSecurityPolicy rejected active content: ${r.join(", ")}`)}if(n==="strict"&&i.length){throw new Error(`OutputSecurityPolicy strict verification failed: ${i.join(", ")}`)}return{svg:e,diagnostics:n==="strict"?[]:i.map(o=>({code:"EXTERNAL_REFERENCE",reference:o}))}}var um=Object.freeze(["importance","value","category","status","progress","route","emphasis"]);var ri=["document","text","shape","container","connector","marker","data-mark"];var mm=Object.freeze(ri.map(e=>Object.freeze({primitive:e,operation:e==="document"?"serialize":"render"})));function gm(e){return e==="document"?"serialize":"render"}var hs=["measure","layout","bounds","hit-test","render","accessibility","terminal-project","serialize"];var bs=["geometry","paint","stroke","transform","identity","relation","labels","markers","resources","interaction","topology","subpaths","closedness","bend-radius","endpoints","direction","hit-geometry","stroke-opacity","stroke-cap","stroke-join","stroke-miter","dash-array","dash-offset","dash-restart","path-length","paint-order","compositing","non-scaling-stroke","marker-orientation","marker-overflow"];var xs=Object.freeze([{primitive:"document",feature:"identity",operation:"serialize"},{primitive:"document",feature:"resources",operation:"serialize"},{primitive:"document",feature:"interaction",operation:"accessibility"},{primitive:"text",feature:"geometry",operation:"render"},{primitive:"text",feature:"paint",operation:"render"},{primitive:"text",feature:"labels",operation:"accessibility"},{primitive:"text",feature:"identity",operation:"serialize"},{primitive:"shape",feature:"geometry",operation:"render"},{primitive:"shape",feature:"paint",operation:"render"},{primitive:"shape",feature:"identity",operation:"serialize"},{primitive:"container",feature:"geometry",operation:"render"},{primitive:"container",feature:"paint",operation:"render"},{primitive:"container",feature:"identity",operation:"serialize"},{primitive:"connector",feature:"geometry",operation:"render"},{primitive:"connector",feature:"stroke",operation:"render"},{primitive:"connector",feature:"transform",operation:"render"},{primitive:"connector",feature:"topology",operation:"render"},{primitive:"connector",feature:"subpaths",operation:"render"},{primitive:"connector",feature:"closedness",operation:"render"},{primitive:"connector",feature:"bend-radius",operation:"render"},{primitive:"connector",feature:"stroke-opacity",operation:"render"},{primitive:"connector",feature:"stroke-cap",operation:"render"},{primitive:"connector",feature:"stroke-join",operation:"render"},{primitive:"connector",feature:"stroke-miter",operation:"render"},{primitive:"connector",feature:"dash-array",operation:"render"},{primitive:"connector",feature:"dash-offset",operation:"render"},{primitive:"connector",feature:"dash-restart",operation:"render"},{primitive:"connector",feature:"path-length",operation:"render"},{primitive:"connector",feature:"paint-order",operation:"render"},{primitive:"connector",feature:"compositing",operation:"render"},{primitive:"connector",feature:"non-scaling-stroke",operation:"render"},{primitive:"connector",feature:"marker-orientation",operation:"render"},{primitive:"connector",feature:"marker-overflow",operation:"render"},{primitive:"connector",feature:"endpoints",operation:"serialize"},{primitive:"connector",feature:"direction",operation:"serialize"},{primitive:"connector",feature:"labels",operation:"render"},{primitive:"connector",feature:"labels",operation:"accessibility"},{primitive:"connector",feature:"markers",operation:"render"},{primitive:"connector",feature:"relation",operation:"accessibility"},{primitive:"connector",feature:"interaction",operation:"hit-test"},{primitive:"connector",feature:"hit-geometry",operation:"hit-test"},{primitive:"connector",feature:"identity",operation:"serialize"},{primitive:"marker",feature:"geometry",operation:"render"},{primitive:"marker",feature:"paint",operation:"render"},{primitive:"marker",feature:"identity",operation:"serialize"},{primitive:"data-mark",feature:"geometry",operation:"render"},{primitive:"data-mark",feature:"paint",operation:"render"},{primitive:"data-mark",feature:"identity",operation:"serialize"}].map(e=>Object.freeze(e)));var sl=["native","emulated","projected","lossy","unsupported"];function ym(e){switch(e.kind){case"text":return["text"];case"shape":return e.channels?.value===void 0?["shape"]:["shape","data-mark"];case"group":return["container"];case"connector":return["connector"];case"document":return e.markerResources?.length?["document","marker"]:["document"]}}function Ss(e,n,t="rough"){const r=n==="crisp"?"native":"emulated";const i=n==="crisp"?"native":"projected";const o="src/__tests__/backend-capability-conformance.test.ts";const s=l=>{if(n==="crisp")return{realization:"native"};if(l==="geometry"||l==="topology")return{realization:"lossy",diagnostic:"The exact authored path remains as an invisible semantic carrier, but arbitrary curves are flattened to typed routed contours for the visible sketch."};if(l==="closedness")return{realization:"lossy",diagnostic:"Sketch shafts are rebuilt from routed geometry and do not preserve explicit closed-subpath semantics."};if(l==="bend-radius")return{realization:"lossy",diagnostic:"The authored rounded carrier remains exact, but the visible sketch follows its routed polyline and cannot preserve the continuous bend radius."};if(l==="dash-restart")return{realization:"lossy",diagnostic:"A rough stroke may contain multiple generated stroke subpaths, so SVG dash restart boundaries can differ."};if(l==="path-length")return{realization:"lossy",diagnostic:"One pathLength value spans generated stroke subpaths, so a sketch cannot retain one authored path calibration exactly."};if(t==="hybrid"&&(l==="stroke-cap"||l==="stroke-join"||l==="stroke-miter"||l==="non-scaling-stroke")){return{realization:"lossy",diagnostic:`Freehand ribbon geometry cannot preserve authored ${l} semantics; dashed Hybrid connectors fall back to the faithful rough projection.`}}if(l==="marker-orientation"||l==="marker-overflow")return{realization:"projected",diagnostic:"Marker geometry, orientation, and overflow remain in the typed marker projection instead of being sketched."};return{realization:"emulated"}};const a=["transform","topology","subpaths","closedness","bend-radius","stroke-opacity","stroke-cap","stroke-join","stroke-miter","dash-array","dash-offset","dash-restart","path-length","paint-order","compositing","non-scaling-stroke","marker-orientation","marker-overflow"];const c=[{target:e,primitive:"document",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"document",feature:"resources",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"document",feature:"interaction",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"text",feature:"geometry",operation:"render",realization:"native",evidence:o},{target:e,primitive:"text",feature:"paint",operation:"render",realization:"native",evidence:o},{target:e,primitive:"text",feature:"labels",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"text",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"shape",feature:"geometry",operation:"render",realization:r,evidence:o},{target:e,primitive:"shape",feature:"paint",operation:"render",realization:r,evidence:o},{target:e,primitive:"shape",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"container",feature:"geometry",operation:"render",realization:"native",evidence:o},{target:e,primitive:"container",feature:"paint",operation:"render",realization:"native",evidence:o},{target:e,primitive:"container",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"geometry",operation:"render",...s("geometry"),evidence:o},{target:e,primitive:"connector",feature:"stroke",operation:"render",realization:r,evidence:o},...a.map(l=>({target:e,primitive:"connector",feature:l,operation:"render",...s(l),evidence:o})),{target:e,primitive:"connector",feature:"relation",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"endpoints",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"direction",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"labels",operation:"render",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"labels",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"markers",operation:"render",realization:i,evidence:o},{target:e,primitive:"connector",feature:"interaction",operation:"hit-test",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"hit-geometry",operation:"hit-test",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"marker",feature:"geometry",operation:"render",realization:i,evidence:o},{target:e,primitive:"marker",feature:"paint",operation:"render",realization:i,evidence:o},{target:e,primitive:"marker",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"data-mark",feature:"geometry",operation:"render",realization:r,evidence:o},{target:e,primitive:"data-mark",feature:"paint",operation:"render",realization:r,evidence:o},{target:e,primitive:"data-mark",feature:"identity",operation:"serialize",realization:"native",evidence:o}];const d=Xt(c);if(!d.valid)throw new Error(`Invalid graphical backend capability contract: ${d.diagnostics.join("; ")}`);return Object.freeze(c.map(l=>Object.freeze({...l})))}function hm(e="terminal:projection"){const n="src/__tests__/terminal-projection-security.test.ts";const t=new Set(["geometry","paint","stroke","transform","bend-radius","stroke-opacity","stroke-cap","stroke-join","stroke-miter","dash-array","dash-offset","dash-restart","path-length","paint-order","compositing","non-scaling-stroke","marker-orientation","marker-overflow"]);const r=["identity","relation","endpoints","direction","labels","markers","geometry","topology","subpaths","closedness","bend-radius","interaction","hit-geometry","stroke","transform","stroke-opacity","stroke-cap","stroke-join","stroke-miter","dash-array","dash-offset","dash-restart","path-length","paint-order","compositing","non-scaling-stroke","marker-orientation","marker-overflow"];const i=r.map(s=>({target:e,primitive:"connector",feature:s,operation:"terminal-project",realization:t.has(s)?"lossy":"projected",evidence:n,...t.has(s)?{diagnostic:`Terminal cells cannot render continuous connector ${s}; the exact typed value remains in terminal projection evidence.`}:{}}));const o=Xt(i);if(!o.valid)throw new Error(`Invalid terminal connector capability contract: ${o.diagnostics.join("; ")}`);return Object.freeze(i.map(s=>Object.freeze({...s})))}function ii(e){return[e.target,e.primitive,e.feature,e.operation].join("\0")}function Xt(e){const n=[];const t=new Set;for(let r=0;r<e.length;r++){const i=e[r];const o=ii(i);if(t.has(o))n.push(`claim[${r}]: duplicate target/primitive/feature/operation`);t.add(o);if(i.target.trim()==="")n.push(`claim[${r}]: target must not be empty`);if(i.primitive.trim()==="")n.push(`claim[${r}]: primitive must not be empty`);if(i.feature.trim()==="")n.push(`claim[${r}]: feature must not be empty`);if(i.operation.trim()==="")n.push(`claim[${r}]: operation must not be empty`);if(!sl.includes(i.realization))n.push(`claim[${r}]: invalid realization ${String(i.realization)}`);if((i.realization==="lossy"||i.realization==="unsupported")&&!i.diagnostic?.trim()){n.push(`claim[${r}]: ${i.realization} realization requires a diagnostic`)}}return{valid:n.length===0,diagnostics:n}}function te(e,n){if(e.length!==0&&e.length>n)return n+1;if(!/[^\x00-\x7f]/.test(e))return e.length;let t=0;for(let r=0;r<e.length;r++){const i=e.charCodeAt(r);if(i<=127)t+=1;else if(i<=2047)t+=2;else if(i>=55296&&i<=56319&&r+1<e.length){const o=e.charCodeAt(r+1);if(o>=56320&&o<=57343){t+=4;r++}else t+=3}else t+=3;if(t>n)return n+1}return t}function se(e){if(typeof e!=="object"||e===null||Array.isArray(e))return false;const n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function en(e){if(typeof e!=="object"||e===null||Object.isFrozen(e))return e;for(const n of Object.values(e))en(n);return Object.freeze(e)}var F=Object.freeze({maxDepth:64,maxNodes:1e5,maxItemsPerContainer:4096,maxAggregateTextCharacters:5e6,maxAggregateTextBytes:1e7,maxDiagnostics:64});function al(e){return e==="__proto__"||e==="prototype"||e==="constructor"}function ks(e){if(typeof e==="number")return"must be a finite number";return`must be a JSON value, not ${typeof e}`}function cl(e,n=[],t={}){const r=F;const i=[];const o=new WeakSet;const s=[{kind:"visit",value:e,path:n,depth:0}];let a=0;let c=0;let d=0;let l=false;const f=(u,y,b,h=false)=>{if(l)return;if(i.length>=r.maxDiagnostics-1){i.push({code:"JSON_DIAGNOSTIC_LIMIT",path:n,message:`exceeds the ${r.maxDiagnostics}-diagnostic admission limit`});l=true;return}i.push({code:u,path:y,message:b});if(h)l=true};const m=(u,y)=>{if(l)return;c+=u.length;if(c>r.maxAggregateTextCharacters){f("JSON_TEXT_CHARACTER_LIMIT",y,`exceeds the aggregate ${r.maxAggregateTextCharacters}-character text limit`,true);return}const b=r.maxAggregateTextBytes-d;d+=te(u,Math.max(0,b));if(d>r.maxAggregateTextBytes){f("JSON_TEXT_BYTE_LIMIT",y,`exceeds the aggregate ${r.maxAggregateTextBytes}-byte UTF-8 text limit`,true)}};while(s.length>0&&!l){const u=s.pop();if(u.kind==="exit"){o.delete(u.value);continue}if(u.depth>r.maxDepth){f("JSON_DEPTH_LIMIT",u.path,`exceeds maximum nesting depth ${r.maxDepth}`,true);continue}a++;if(a>r.maxNodes){f("JSON_NODE_LIMIT",u.path,`exceeds the aggregate ${r.maxNodes}-node limit`,true);continue}const y=u.value;if(y===null||typeof y==="boolean")continue;if(typeof y==="string"){m(y,u.path);continue}if(typeof y==="number"){if(!Number.isFinite(y))f("JSON_NON_JSON_VALUE",u.path,ks(y));continue}if(typeof y!=="object"){f("JSON_NON_JSON_VALUE",u.path,ks(y));continue}if(o.has(y)){f("JSON_CYCLE",u.path,"must be acyclic");continue}if(Array.isArray(y)){if(y.length>r.maxItemsPerContainer){f("JSON_ITEM_LIMIT",u.path,`must contain at most ${r.maxItemsPerContainer} items`,true);continue}o.add(y);s.push({kind:"exit",value:y});for(let h=y.length-1;h>=0;h--){if(!Object.prototype.hasOwnProperty.call(y,h)){f("JSON_SPARSE_ARRAY",[...u.path,h],"must not be a sparse array");continue}s.push({kind:"visit",value:y[h],path:[...u.path,h],depth:u.depth+1})}continue}if(!se(y)){f("JSON_NON_PLAIN_OBJECT",u.path,"must be a plain JSON object");continue}const b=Object.entries(y);if(b.length>r.maxItemsPerContainer){f("JSON_ITEM_LIMIT",u.path,`must contain at most ${r.maxItemsPerContainer} properties`,true);continue}o.add(y);s.push({kind:"exit",value:y});for(let h=b.length-1;h>=0;h--){const[k,x]=b[h];const S=[...u.path,k];m(k,S);if(al(k)){f("JSON_PROTOTYPE_KEY",S,"uses a forbidden prototype key");continue}if(x===void 0&&t.allowUndefinedObjectProperties)continue;s.push({kind:"visit",value:x,path:S,depth:u.depth+1})}}return i}function dl(e){let n="$";for(const t of e){if(typeof t==="number")n+=`[${t}]`;else if(/^[A-Za-z_$][\w$]*$/.test(t))n+=`.${t}`;else n+=`[${JSON.stringify(t)}]`}return n}var qt=class extends TypeError{constructor(t,r){super(`${t} failed JSON/config admission: ${r.map(i=>`${dl(i.path)} ${i.message}`).join("; ")}`);this.context=t;this.problems=r;this.name="JsonConfigAdmissionError"}context;problems;code="JSON_CONFIG_ADMISSION_FAILED"};function Cm(e,n,t={}){const r=cl(e,[],t);if(r.length>0)throw new qt(n,r)}function wm(e,n,t={}){const r=F;const i=[];if(e.length>r.maxAggregateTextCharacters){i.push({code:"JSON_TEXT_CHARACTER_LIMIT",path:[],message:`exceeds the aggregate ${r.maxAggregateTextCharacters}-character text limit`})}else if(te(e,r.maxAggregateTextBytes)>r.maxAggregateTextBytes){i.push({code:"JSON_TEXT_BYTE_LIMIT",path:[],message:`exceeds the aggregate ${r.maxAggregateTextBytes}-byte UTF-8 text limit`})}if(i.length===0&&t.trackFlowDepth){const o=[];let s;let a=false;let c=false;for(let d=0;d<e.length;d++){const l=e[d];if(c){if(l==="\n"||l==="\r")c=false;continue}if(s){if(s==='"'&&a){a=false;continue}if(s==='"'&&l==="\\"){a=true;continue}if(s==="'"&&l==="'"&&e[d+1]==="'"){d++;continue}if(l===s)s=void 0;continue}if(l==='"'||l==="'"){s=l;continue}if(l==="#"){c=true;continue}if(l==="{"||l==="["){o.push(l);if(o.length>r.maxDepth){i.push({code:"JSON_DEPTH_LIMIT",path:[],message:`exceeds maximum nesting depth ${r.maxDepth}`});break}}else if(l==="}"||l==="]")o.pop()}}if(i.length>0)throw new qt(n,i)}function Es(e,n){const t=F.maxDiagnostics;if(e.length<=t)return[...e];return[...e.slice(0,t-1),`${n} exceeds the ${t}-diagnostic admission limit`]}var On=1;var Nn=en({bg:{description:"Diagram page background."},fg:{description:"Primary text and foreground paint."},line:{description:"Connector and secondary line paint."},accent:{description:"Accent paint for emphasis and data series."},muted:{description:"Muted text and secondary data paint."},surface:{description:"Node and group surface fill."},border:{description:"Node and group border paint."}});var $n=Object.freeze(["category"]);var nn=en({formatVersion:{kind:"const",value:On,group:"metadata",description:"Persisted wire-format version. Optional on input and normalized to 1 on output."},$schema:{kind:"string",group:"metadata",description:"Optional JSON Schema pointer for file-backed styles; ignored while rendering."},name:{kind:"string",group:"metadata",description:"Canonical look:name or palette:name identity; required only when registering a style."},blurb:{kind:"string",group:"metadata",description:"Short human-readable description used by discovery surfaces."},colors:{kind:"colors",group:"palette",description:"Partial palette of safe, non-fetching CSS color tokens."},font:{kind:"string",runtimeValidator:"safeCssFontFamily",group:"typography",description:"Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face."},roles:{kind:"roles",group:"roles",description:"Partial semantic SceneRole defaults. Family-authored styling remains authoritative."},semanticSlots:{kind:"semanticSlots",group:"policy",description:"Named brand-neutral role-style slots selected by semantic bindings."},bindings:{kind:"bindings",group:"policy",description:"Ordered equality bindings from authored/domain meaning to semantic slots."},constraints:{kind:"constraints",group:"policy",description:"Closed inspect-only brand constraints with warn or error actions."},stroke:{kind:"enum",values:["crisp","jittered","freehand"],group:"stroke",description:"Stroke treatment; crisp is the default renderer."},roughness:{kind:"number",minimum:0,maximum:10,expected:"between 0 and 10",group:"stroke",description:"Rough.js stroke irregularity."},bowing:{kind:"number",minimum:0,maximum:10,expected:"between 0 and 10",group:"stroke",description:"Rough.js line bowing."},passes:{kind:"integer",minimum:1,maximum:8,expected:"an integer from 1 through 8",group:"stroke",description:"Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke."},strokeWidth:{kind:"number",exclusiveMinimum:0,maximum:20,expected:"greater than 0 and at most 20",group:"stroke",description:"Base stroke width in SVG user units."},fill:{kind:"enum",values:["none","hachure","solid","wash"],group:"fill",description:"Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends."},hachureAngle:{kind:"number",minimum:-360,maximum:360,expected:"between -360 and 360",group:"fill",description:"Hachure line angle in degrees; requires fill hachure in the final stack."},hachureGap:{kind:"number",exclusiveMinimum:0,maximum:100,expected:"greater than 0 and at most 100",group:"fill",description:"Gap between hachure lines; requires fill hachure in the final stack."},fillWeight:{kind:"number",exclusiveMinimum:0,maximum:20,expected:"greater than 0 and at most 20",group:"fill",description:"Hachure line weight; requires fill hachure in the final stack."},washOpacity:{kind:"number",minimum:0,maximum:1,expected:"between 0 and 1",group:"fill",description:"Watercolor glaze opacity; requires fill wash in the final stack."},washEdge:{kind:"number",minimum:0,maximum:1,expected:"between 0 and 1",group:"fill",description:"Watercolor edge-darkening opacity; requires fill wash in the final stack."},backdrop:{kind:"enum",values:["plain","paper-ruled","grid"],group:"page",description:"Flat page furniture drawn behind the diagram."},intent:{kind:"enum",values:["premium","draft","lofi"],group:"advisory",description:"Advisory intent metadata for pickers and quality tooling."},mono:{kind:"boolean",group:"advisory",description:"Advisory monochrome contract: express tone through shading and weight."}});function si(e,n){if(typeof e!=="number"||!Number.isFinite(e))return false;if(n.kind==="integer"&&!Number.isInteger(e))return false;if(n.minimum!==void 0&&e<n.minimum)return false;if(n.exclusiveMinimum!==void 0&&e<=n.exclusiveMinimum)return false;if(n.maximum!==void 0&&e>n.maximum)return false;return true}var ul=Object.freeze(["--bg","--fg","--_text","--_text-sec","--_text-muted","--_text-faint","--_line","--_arrow","--_node-fill","--_node-stroke","--_group-fill","--_group-hdr","--_inner-stroke","--_key-badge"]);var fl=new Set(ul);function pl(e){if(typeof e!=="string"||ce(e)===void 0)return false;const n=[...e.matchAll(/var\(\s*(--[a-z0-9_-]+)/gi)].map(t=>t[1]);return n.every(t=>fl.has(t))}var ai=new Map(Qe.map(e=>[e.role,e]));var dt=at.map(e=>ai.get(e));var ml=new Set(Ue);var gl=/^[A-Za-z][A-Za-z0-9._-]{0,63}$/;var oi=new Set(["__proto__","constructor","prototype"]);function $s(e,n,t){if(!se(e))return[`"${n}" must be an object`];const r=[];for(const[i,o]of Object.entries(e)){if(!Object.hasOwn(ke,i)){r.push(`unknown role style field "${n.slice(n.indexOf(".")+1)}.${i}"`);continue}if(t&&!t.has(i)){r.push(`role style field "${n}.${i}" is not applicable`);continue}const s=ke[i];const a=`${n}.${i}`;if(o===void 0)continue;if(s.kind==="number"&&!si(o,s))r.push(`"${a}" must be ${s.expected}`);else if(s.kind==="font"&&(typeof o!=="string"||kn(o)===void 0))r.push(`"${a}" must be a safe non-fetching CSS font family or stack`);else if(s.kind==="color"&&!pl(o))r.push(`"${a}" must be a safe non-fetching CSS paint`);else if(s.kind==="enum"&&(typeof o!=="string"||!s.values.includes(o)))r.push(`"${a}" must be one of ${s.values.join(" | ")}`)}return r}function yl(e){if(!se(e))return['"roles" must be an object of SceneRole records'];const n=[];for(const[t,r]of Object.entries(e)){const i=ai.get(t);if(!i){n.push(`unknown scene role "${t}"`);continue}if(i.traits.styleConsumption==="fallback-only"){n.push(`scene role "${t}" is fallback-only; set roles.${i.style.fallbackRole} instead`);continue}const o=new Set(i.style.applicableProperties);const s=$s(r,`roles.${t}`,o).map(a=>a===`"roles.${t}" must be an object`?a:a.replace(`role style field "roles.${t}.`,`role style field "${t}.`).replace('" is not applicable',`" is not applicable to ${t} roles`));n.push(...s)}return n}function Os(e){return typeof e==="string"&&gl.test(e)&&!oi.has(e)}function hl(e){if(!se(e))return['"semanticSlots" must be an object of named role-style slots'];if(Object.keys(e).length>F.maxItemsPerContainer)return[`"semanticSlots" must contain at most ${F.maxItemsPerContainer} slots`];const n=[];for(const[t,r]of Object.entries(e)){if(!Os(t)){n.push(`invalid semantic slot name "${t}"`);continue}n.push(...$s(r,`semanticSlots.${t}`))}return n}function bl(e){if(!Array.isArray(e))return['"bindings" must be an array'];if(e.length>F.maxItemsPerContainer)return[`"bindings" must contain at most ${F.maxItemsPerContainer} entries`];const n=[];e.forEach((t,r)=>{const i=`bindings[${r}]`;if(!se(t)){n.push(`"${i}" must be an object`);return}for(const o of Object.keys(t))if(!["channel","value","slot","role"].includes(o))n.push(`unknown binding field "${i}.${o}"`);if(typeof t.channel!=="string"||!$n.includes(t.channel))n.push(`"${i}.channel" must be one of ${$n.join(" | ")}`);if(typeof t.value!=="string"||t.value.length===0||t.value.length>256||/[\r\n\0]/.test(t.value))n.push(`"${i}.value" must be a non-empty single-line string of at most 256 characters`);if(!Os(t.slot))n.push(`"${i}.slot" must be a valid semantic slot name`);if(t.role!==void 0&&!ml.has(t.role))n.push(`"${i}.role" must be a SceneRole with an executable category-binding consumer (${Ue.join(" | ")})`)});return n}function xl(e){if(!Array.isArray(e))return['"constraints" must be an array'];if(e.length>F.maxItemsPerContainer)return[`"constraints" must contain at most ${F.maxItemsPerContainer} entries`];const n=[];e.forEach((t,r)=>{const i=`constraints[${r}]`;if(!se(t)){n.push(`"${i}" must be an object`);return}if(typeof t.kind!=="string"||!ve.includes(t.kind)){n.push(`"${i}.kind" must be one of ${ve.join(" | ")}`);return}const o=t.kind;const s=Nt(o);const a=new Set(Zi(o));for(const c of Object.keys(t))if(!a.has(c))n.push(`unknown constraint field "${i}.${c}"`);if(t.action!=="warn"&&t.action!=="error")n.push(`"${i}.action" must be one of warn | error`);for(const[c,d]of Object.entries(s)){const l=t[c];if(l===void 0){if(d.required)n.push(`"${i}.${c}" is required for ${o}`);continue}if(d.kind==="role"&&!ai.has(l)){n.push(`"${i}.${c}" must be a registered built-in SceneRole`)}else if(d.kind==="number"&&!si(l,d)){n.push(`"${i}.${c}" must be between ${d.minimum} and ${d.maximum}`)}}});return n}function Jt(e){if(!se(e))return["style spec must be a plain object"];if(Object.keys(e).length>F.maxItemsPerContainer)return[`style spec must contain at most ${F.maxItemsPerContainer} fields`];const n=[];for(const[t,r]of Object.entries(e)){if(!Object.hasOwn(nn,t)){n.push(`unknown field "${t}"`);continue}const i=nn[t];if(r===void 0)continue;switch(i.kind){case"const":if(r!==i.value)n.push(`"${t}" must be ${i.value}`);break;case"string":if(typeof r!=="string")n.push(`"${t}" must be a string`);else if(i.runtimeValidator==="safeCssFontFamily"&&kn(r)===void 0){n.push(`"${t}" must be a safe non-fetching CSS font family or stack`)}break;case"boolean":if(typeof r!=="boolean")n.push(`"${t}" must be a boolean`);break;case"number":case"integer":if(!si(r,i))n.push(`"${t}" must be ${i.expected}`);break;case"enum":if(typeof r!=="string"||!i.values.includes(r)){n.push(`"${t}" must be one of ${i.values.join(" | ")}`)}break;case"roles":n.push(...yl(r));break;case"semanticSlots":n.push(...hl(r));break;case"bindings":n.push(...bl(r));break;case"constraints":n.push(...xl(r));break;case"colors":{if(!se(r)){n.push('"colors" must be an object of color tokens');break}for(const[o,s]of Object.entries(r)){if(!Object.hasOwn(Nn,o))n.push(`unknown color token "${o}"`);else if(s!==void 0&&typeof s!=="string")n.push(`color token "${o}" must be a string`);else if(s!==void 0&&Do(s)===void 0)n.push(`color token "${o}" must be a safe non-fetching CSS color`)}break}}}return Es(n,"Style validation")}function Sl(){return Object.fromEntries(Object.entries(ke).map(([e,n])=>{if(n.kind==="number"){const t=n;return[e,{type:"number",...t.minimum!==void 0?{minimum:t.minimum}:{},...t.exclusiveMinimum!==void 0?{exclusiveMinimum:t.exclusiveMinimum}:{},...t.maximum!==void 0?{maximum:t.maximum}:{},description:t.description}]}if(n.kind==="enum")return[e,{type:"string",enum:[...n.values],description:n.description}];return[e,{type:"string",description:n.description,"x-agentic-mermaid-runtime-validator":n.kind==="font"?"safeCssFontFamily":"safeStylePaint"}]}))}function Cs(e=Object.keys(ke)){const n=Sl();return{type:"object",additionalProperties:false,maxProperties:e.length,properties:Object.fromEntries(e.map(t=>[t,n[t]]))}}function _s(e){return`roleStyle-${e.role}`}var ws="^[A-Za-z][A-Za-z0-9._-]{0,63}$";function kl(e){switch(e.kind){case"const":return{const:e.value,description:e.description};case"string":return{type:"string",description:e.description,...e.runtimeValidator?{"x-agentic-mermaid-runtime-validator":e.runtimeValidator}:{}};case"boolean":return{type:"boolean",description:e.description};case"enum":return{type:"string",enum:[...e.values],description:e.description};case"number":case"integer":return{type:e.kind,...e.minimum!==void 0?{minimum:e.minimum}:{},...e.exclusiveMinimum!==void 0?{exclusiveMinimum:e.exclusiveMinimum}:{},...e.maximum!==void 0?{maximum:e.maximum}:{},description:e.description};case"roles":return{type:"object",additionalProperties:false,description:e.description,properties:Object.fromEntries(dt.map(n=>[n.role,{$ref:`#/$defs/${_s(n)}`}]))};case"semanticSlots":return{type:"object",description:e.description,maxProperties:F.maxItemsPerContainer,propertyNames:{pattern:ws,not:{enum:[...oi]}},additionalProperties:{$ref:"#/$defs/roleStyle-any"}};case"bindings":return{type:"array",description:e.description,maxItems:F.maxItemsPerContainer,items:{type:"object",additionalProperties:false,maxProperties:4,required:["channel","value","slot"],properties:{channel:{type:"string",enum:[...$n]},value:{type:"string",minLength:1,maxLength:256,pattern:"^[^\\r\\n\\u0000]+$"},slot:{type:"string",pattern:ws,not:{enum:[...oi]}},role:{type:"string",enum:[...Ue]}}}};case"constraints":{const n={type:"string",enum:["warn","error"]};const t={type:"string",enum:Qe.map(i=>i.role)};const r=ve.map(i=>{const o=Nt(i);const s=Object.fromEntries(Object.entries(o).map(([a,c])=>[a,c.kind==="role"?t:{type:"number",minimum:c.minimum,maximum:c.maximum}]));return{type:"object",additionalProperties:false,required:[...Qi(i)],properties:{kind:{const:i},action:n,...s}}});return{type:"array",description:e.description,maxItems:F.maxItemsPerContainer,items:{oneOf:r}}}case"colors":return{type:"object",additionalProperties:false,maxProperties:Object.keys(Nn).length,description:`${e.description} Runtime validation applies the stricter safe-color policy.`,properties:Object.fromEntries(Object.entries(Nn).map(([n,t])=>[n,{type:"string",description:`${t.description} Must be a safe, non-fetching CSS color.`,"x-agentic-mermaid-runtime-validator":"safeCssColor"}]))}}}function El(){const e=Object.fromEntries(dt.map(n=>[_s(n),Cs(n.style.applicableProperties)]));return{$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://agentic-mermaid.dev/schemas/style-spec.schema.json",title:"Agentic Mermaid StyleSpec",description:"A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",type:"object",additionalProperties:false,maxProperties:Object.keys(nn).length,properties:Object.fromEntries(Object.entries(nn).map(([n,t])=>[n,kl(t)])),$defs:{...e,"roleStyle-any":Cs()}}}function Ts(e){const n=ke[e];if(n.kind==="number")return"number";if(n.kind==="enum")return n.values.map(t=>JSON.stringify(t)).join(" | ");return"string"}function Rs(e){if(e.kind==="const")return String(e.value);if(e.kind==="string")return"string";if(e.kind==="boolean")return"boolean";if(e.kind==="number"||e.kind==="integer")return"number";if(e.kind==="enum")return e.values.map(n=>JSON.stringify(n)).join(" | ");if(e.kind==="colors")return"StyleColors";if(e.kind==="roles")return"RoleStyles";if(e.kind==="semanticSlots")return"Readonly<Record<string, Readonly<RoleStyleSpec>>>";if(e.kind==="bindings")return"readonly SemanticBinding[]";return"readonly BrandConstraint[]"}function Ns(e,n){const t=Nt(e);const r=n?";":"; ";const i=Object.entries(t).map(([o,s])=>{const a=s.required?"":"?";const c=s.kind==="role"?"SceneStyleRole":"number";return`${o}${a}:${c}`});return`{kind:${JSON.stringify(e)}${r}action:'warn'|'error'${i.length?r:""}${i.join(r)}}`}function Cl(e={}){const n=(m,u)=>{const y=`StyleRole_${m.replace(/[^A-Za-z0-9_]/g,"_")}`;const b=u.map(h=>` ${JSON.stringify(h)}?: ${Ts(h)}`).join("\n");return{stem:y,declaration:`interface ${y} {
|
|
17
|
-
${b}
|
|
18
|
-
}`}};const t=n("Any",Object.keys(ke));const r=dt.map(m=>({role:m.role,...n(m.role,m.style.applicableProperties)}));const i=Object.keys(Nn).map(m=>` ${m}?: string`).join("\n");const o=r.map(m=>` ${JSON.stringify(m.role)}?: Readonly<${m.stem}>`).join("\n");const s=Object.entries(nn).map(([m,u])=>` ${JSON.stringify(m)}?: ${Rs(u)}`).join("\n");const a=Qe.map(m=>JSON.stringify(m.role)).join(" | ");const c=dt.map(m=>JSON.stringify(m.role)).join(" | ");const d=Ue.map(m=>JSON.stringify(m)).join(" | ");const l=ve.map(m=>Ns(m,true)).join("|");const f=ve.map(m=>` | ${Ns(m,false)}`).join("\n");if(e.compact){const m=Object.keys(ke).map(k=>`${JSON.stringify(k)}?:${Ts(k)}`).join(";");const u=new Map;for(const k of dt){const x=[...k.style.applicableProperties].sort().join("|");u.set(x,[...u.get(x)??[],k.role])}const y=[...u.entries()].map(([k,x])=>{const S=x.map(E=>JSON.stringify(E)).join(" | ");const g=k.length===0?"never":`Pick<RoleStyleSpec, ${k.split("|").map(E=>JSON.stringify(E)).join(" | ")}>`;return`R extends ${S}?${g}:`}).join("");const b=Object.entries(nn).map(([k,x])=>`${JSON.stringify(k)}?:${Rs(x)}`).join(";");const h=Object.keys(Nn).map(k=>`${k}?:string`).join(";");return`interface StyleColors {${h}}
|
|
19
|
-
type SceneStyleRole=${a}
|
|
20
|
-
type ExactSceneStyleRole=${c}
|
|
21
|
-
type BindableSceneStyleRole=${d}
|
|
22
|
-
type RoleStyleSpec={${m}}
|
|
23
|
-
type RoleStyleFor<R extends ExactSceneStyleRole>=${y}never
|
|
24
|
-
type RoleStyles={[R in ExactSceneStyleRole]?:Readonly<RoleStyleFor<R>>}
|
|
25
|
-
type SemanticBindingChannel=${$n.map(k=>JSON.stringify(k)).join(" | ")}
|
|
26
|
-
interface SemanticBinding {channel:SemanticBindingChannel;value:string;slot:string;role?:BindableSceneStyleRole}
|
|
27
|
-
type BrandConstraint=${l}
|
|
28
|
-
interface StyleSpec {${b}}
|
|
29
|
-
type StyleInput=string|StyleSpec`}return`interface StyleColors {
|
|
30
|
-
${i}
|
|
31
|
-
}
|
|
32
|
-
type SceneStyleRole = ${a}
|
|
33
|
-
type ExactSceneStyleRole = ${c}
|
|
34
|
-
type BindableSceneStyleRole = ${d}
|
|
35
|
-
${t.declaration}
|
|
36
|
-
type RoleStyleSpec = StyleRole_Any
|
|
37
|
-
${r.map(m=>m.declaration).join("\n")}
|
|
38
|
-
interface RoleStyles {
|
|
39
|
-
${o}
|
|
40
|
-
}
|
|
41
|
-
type SemanticBindingChannel = ${$n.map(m=>JSON.stringify(m)).join(" | ")}
|
|
42
|
-
interface SemanticBinding { channel: SemanticBindingChannel; value: string; slot: string; role?: BindableSceneStyleRole }
|
|
43
|
-
type BrandConstraint =
|
|
44
|
-
${f}
|
|
45
|
-
interface StyleSpec {
|
|
46
|
-
${s}
|
|
47
|
-
}
|
|
48
|
-
type StyleInput = string | StyleSpec`}var As=Object.freeze([{id:"palette:paper",inputName:"paper",displayLabel:"Paper",colors:{bg:"#F5F0E4",fg:"#221E16",accent:"#9A4A24"}},{id:"palette:dusk",inputName:"dusk",displayLabel:"Dusk",colors:{bg:"#2A2521",fg:"#E9DFCC",accent:"#CC8A57"}},{id:"palette:zinc-light",inputName:"zinc-light",displayLabel:"Zinc Light",colors:{bg:"#FFFFFF",fg:"#27272A"}},{id:"palette:zinc-dark",inputName:"zinc-dark",displayLabel:"Zinc Dark",colors:{bg:"#18181B",fg:"#FAFAFA"}},{id:"palette:tokyo-night",inputName:"tokyo-night",displayLabel:"Tokyo Night",colors:{bg:"#1a1b26",fg:"#a9b1d6",line:"#3d59a1",accent:"#7aa2f7",muted:"#565f89"}},{id:"palette:tokyo-night-storm",inputName:"tokyo-night-storm",displayLabel:"Tokyo Night Storm",colors:{bg:"#24283b",fg:"#a9b1d6",line:"#3d59a1",accent:"#7aa2f7",muted:"#565f89"}},{id:"palette:tokyo-night-light",inputName:"tokyo-night-light",displayLabel:"Tokyo Night Light",colors:{bg:"#d5d6db",fg:"#343b58",line:"#34548a",accent:"#34548a",muted:"#9699a3"}},{id:"palette:catppuccin-mocha",inputName:"catppuccin-mocha",displayLabel:"Catppuccin Mocha",colors:{bg:"#1e1e2e",fg:"#cdd6f4",line:"#585b70",accent:"#cba6f7",muted:"#6c7086"}},{id:"palette:catppuccin-latte",inputName:"catppuccin-latte",displayLabel:"Catppuccin Latte",colors:{bg:"#eff1f5",fg:"#4c4f69",line:"#9ca0b0",accent:"#8839ef",muted:"#9ca0b0"}},{id:"palette:nord",inputName:"nord",displayLabel:"Nord",colors:{bg:"#2e3440",fg:"#d8dee9",line:"#4c566a",accent:"#88c0d0",muted:"#616e88"}},{id:"palette:nord-light",inputName:"nord-light",displayLabel:"Nord Light",colors:{bg:"#eceff4",fg:"#2e3440",line:"#aab1c0",accent:"#5e81ac",muted:"#7b88a1"}},{id:"palette:dracula",inputName:"dracula",displayLabel:"Dracula",colors:{bg:"#282a36",fg:"#f8f8f2",line:"#6272a4",accent:"#bd93f9",muted:"#6272a4"}},{id:"palette:github-light",inputName:"github-light",displayLabel:"GitHub Light",colors:{bg:"#ffffff",fg:"#1f2328",line:"#d1d9e0",accent:"#0969da",muted:"#59636e"}},{id:"palette:github-dark",inputName:"github-dark",displayLabel:"GitHub Dark",colors:{bg:"#0d1117",fg:"#e6edf3",line:"#3d444d",accent:"#4493f8",muted:"#9198a1"}},{id:"palette:solarized-light",inputName:"solarized-light",displayLabel:"Solarized Light",colors:{bg:"#fdf6e3",fg:"#657b83",line:"#93a1a1",accent:"#268bd2",muted:"#93a1a1"}},{id:"palette:solarized-dark",inputName:"solarized-dark",displayLabel:"Solarized Dark",colors:{bg:"#002b36",fg:"#839496",line:"#586e75",accent:"#268bd2",muted:"#586e75"}},{id:"palette:one-dark",inputName:"one-dark",displayLabel:"One Dark",colors:{bg:"#282c34",fg:"#abb2bf",line:"#4b5263",accent:"#c678dd",muted:"#5c6370"}},{id:"palette:salmon",inputName:"salmon",displayLabel:"Salmon",colors:{bg:"#FFFBF5",fg:"#521000",line:"#C9A88A",accent:"#FF4801",muted:"#85532E",surface:"#FFFDFB",border:"#D4B89E"}},{id:"palette:salmon-dark",inputName:"salmon-dark",displayLabel:"Salmon Dark",colors:{bg:"#1F1008",fg:"#F5DCC8",line:"#6B4A2E",accent:"#FF6B35",muted:"#A07858",surface:"#2A1810",border:"#5A3A22"}},{id:"palette:tufte-dark",inputName:"tufte-dark",displayLabel:"Tufte Dark",colors:{bg:"#1C1C1A",fg:"#E8E4DC",line:"#666660",accent:"#C87070",muted:"#908880",surface:"#2A2926",border:"#444440"}}]);var ci=0;function di(){if(ci>0){throw new Error("Style registry mutation is forbidden while a Style input is undergoing admission")}}function Zt(e){ci++;try{return e()}finally{ci--}}function li(e){const n=new WeakMap;const t=new WeakSet;const r=new Set(["__proto__","prototype","constructor"]);let i=0;let o=0;const s=(a,c)=>{if(c>F.maxDepth){throw new TypeError(`Style input exceeds maximum nesting depth ${F.maxDepth}`)}i++;if(i>F.maxNodes){throw new TypeError(`Style input exceeds the ${F.maxNodes}-node limit`)}if(typeof a==="string"){o+=a.length;if(o>F.maxAggregateTextCharacters){throw new TypeError(`Style input exceeds the ${F.maxAggregateTextCharacters}-character text limit`)}return a}if(typeof a!=="object"||a===null)return a;if(t.has(a))throw new TypeError("Style input must be acyclic");const d=n.get(a);if(d!==void 0)return d;if(Array.isArray(a)){if(a.length>F.maxItemsPerContainer){throw new TypeError(`Style array must contain at most ${F.maxItemsPerContainer} items`)}const m=[];n.set(a,m);t.add(a);for(let u=0;u<a.length;u++){if(!Object.prototype.hasOwnProperty.call(a,u))throw new TypeError("Style arrays must not be sparse");m.push(s(a[u],c+1))}t.delete(a);return Object.freeze(m)}if(!se(a))return a;const l=Object.entries(a);if(l.length>F.maxItemsPerContainer){throw new TypeError(`Style object must contain at most ${F.maxItemsPerContainer} properties`)}const f=Object.create(null);n.set(a,f);t.add(a);for(const[m,u]of l){if(r.has(m))throw new TypeError(`Style input uses forbidden key "${m}"`);o+=m.length;if(o>F.maxAggregateTextCharacters){throw new TypeError(`Style input exceeds the ${F.maxAggregateTextCharacters}-character text limit`)}Object.defineProperty(f,m,{value:s(u,c+1),enumerable:true,writable:false,configurable:false})}t.delete(a);return Object.freeze(f)};return s(e,0)}var Qt=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor"]);var Ms=Object.freeze(["paddingX","paddingY","cornerRadius","lineWidth","fillColor","borderColor"]);var Jm=Object.freeze({text:Object.freeze({sourceRole:"label",fields:Qt}),node:Object.freeze({sourceRole:"node",fields:Object.freeze([...Qt,...Ms])}),edge:Object.freeze({sourceRole:"edge",fields:Object.freeze([...Qt,"lineWidth","bendRadius","strokeColor"])}),group:Object.freeze({sourceRole:"group",fields:Object.freeze([...Qt,...Ms,"fontFamily","headerFillColor"])})});var Ps="1.0.0";var vs=Object.freeze({core:Ve});var wl=Object.freeze({owner:"agentic-mermaid",source:"built-in",reference:"src/scene/style-registry.ts"});var Tl=Object.freeze({owner:"host",source:"in-process"});var $e=new Map;var _n=new Map;var Oe=class extends Error{constructor(n){super(n);this.name="StyleSpecError"}};function Ds(e){const n=li(e);const t=Jt(n);if(t.length)throw new Oe(`Invalid style spec: ${t.join("; ")}`);return n}function Rl(e){const n=li(e);if(!se(n)){throw new TypeError("registerStyle options must be a plain object")}return n}function ui(e){if(!e)return void 0;return Object.freeze(Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Object.freeze({...t})])))}function fi(e){if(!e)return void 0;return Object.freeze(Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Object.freeze({...t})])))}function An(e){return e?Object.freeze(e.map(n=>Object.freeze({...n}))):void 0}function ut(e){if(!e)return void 0;const{displayLabel:n,...t}=e;return Object.freeze({...t,formatVersion:On,...t.colors?{colors:Object.freeze({...t.colors})}:{},...t.roles?{roles:ui(t.roles)}:{},...t.semanticSlots?{semanticSlots:fi(t.semanticSlots)}:{},...t.bindings?{bindings:An(t.bindings)}:{},...t.constraints?{constraints:An(t.constraints)}:{}})}function Nl(e){return Dl(e)}function $l(e,n,t){return En({id:e,kind:n,version:t.version??Ps,compatibility:{...vs,...t.compatibility},provenance:t.provenance??Tl})}function js(e,n,t,r){const i=e.name;const o=Object.freeze({...e,formatVersion:On,...e.colors?{colors:Object.freeze({...e.colors})}:{},...e.roles?{roles:ui(e.roles)}:{},...e.semanticSlots?{semanticSlots:fi(e.semanticSlots)}:{},...e.bindings?{bindings:An(e.bindings)}:{},...e.constraints?{constraints:An(e.constraints)}:{}});const s=$l(i,n,t);st($e,{identity:s,value:o});if(r!==void 0){const a=_n.get(r);const c=$e.has(r)&&r!==i?r:void 0;if(a!==void 0||c!==void 0){$e.delete(i);throw new Error(`Style input name "${r}" already selects "${a??c}"`)}_n.set(r,i)}return()=>{di();const a=$e.get(i);if(a?.identity!==s)return false;const c=$e.delete(i);if(c&&r!==void 0&&_n.get(r)===i){_n.delete(r)}return c}}function Zm(e,n={}){di();return Zt(()=>{const t=Ds(e);const r=Rl(n);if(!t.name)throw new Error("registerStyle requires a name (anonymous specs are for inline use)");const i=Je(t.name);if(!i||i.kind!=="look"&&i.kind!=="palette"){throw new Error(`registerStyle name "${t.name}" must use the "look:" or "palette:" namespace`)}const o=Nl(t);if(i.kind!==o){throw new Error(`Style "${t.name}" is a ${o}; its name must use the "${o}:" namespace`)}return js(t,o,r)})}function q(e,n="look",t=e.name??""){if(!e.name)throw new Error("registerBuiltInStyle requires a name");const r=e.name;const i=ot(n,r);const o=Jt(ut({...e,name:i}));if(o.length)throw new Error(`Invalid built-in style "${i}": ${o.join("; ")}`);js({...e,name:i},n,{version:Ps,compatibility:vs,provenance:wl},t)}function zs(e){if($e.has(e))return e;const n=_n.get(e);return n}function Ol(e){const n=zs(e);if(!n)return void 0;const t=ut($e.get(n)?.value);if(!t)return void 0;return Object.freeze({canonicalId:n,spec:t})}function Qm(e){return Ol(e)?.spec}function _l(){return Al().map(e=>e.inputName)}function Al(){return Object.freeze(Array.from($e.values(),({identity:e,value:n})=>{const t=Array.from(_n.entries()).find(([,o])=>o===e.id)?.[0]??e.id;const r=e.id.slice(e.id.indexOf(":")+1);const i=n.displayLabel??r.split("-").filter(Boolean).map(o=>o==="ops"?"OPS":o.charAt(0).toUpperCase()+o.slice(1)).join(" ");return Object.freeze({identity:e,spec:ut(n),inputName:t,displayLabel:i,kind:e.kind,isDefault:e.id==="look:crisp"})}))}function lt(e){if(e.stroke==="freehand"||e.fill==="wash")return"hybrid";if(e.stroke==="jittered"||e.fill==="hachure"||e.backdrop!==void 0&&e.backdrop!=="plain"||e.roughness!==void 0||e.bowing!==void 0||e.passes!==void 0||e.hachureGap!==void 0||e.hachureAngle!==void 0||e.fillWeight!==void 0)return"rough";return"default"}function Ml(e,n){if(!e&&!n)return void 0;const t={...e};const r=t;for(const[i,o]of Object.entries(n??{})){if(o!==void 0)r[i]={...r[i],...o}}return t}function Il(e,n){if(!e&&!n)return void 0;const t={...e};for(const[r,i]of Object.entries(n??{}))t[r]={...t[r],...i};return t}function Is(e,n){if(!e&&!n)return void 0;const t=[];const r=new Set;for(const i of[...e??[],...n??[]]){const o=JSON.stringify(i);if(!r.has(o)){r.add(o);t.push(i)}}return t}function Bs(e){if(e===void 0)return void 0;const n=Array.isArray(e)?e:[e];const t=[];for(const i of n){if(typeof i==="string"){const o=zs(i);if(o==="look:crisp")continue;const s=o?$e.get(o)?.value:void 0;if(!s)throw new Oe(`Unknown style "${i}". Known styles: ${_l().join(", ")}`);t.push(s)}else{t.push(Ds(i))}}if(t.length===0)return void 0;const r={formatVersion:On};for(const i of t){for(const[o,s]of Object.entries(i)){if(s===void 0)continue;if(o==="colors"){const a={...r.colors};for(const[c,d]of Object.entries(i.colors??{})){if(d!==void 0)a[c]=d}r.colors=a}else if(o==="roles"){r.roles=Ml(r.roles,i.roles)}else if(o==="semanticSlots"){r.semanticSlots=Il(r.semanticSlots,i.semanticSlots)}else if(o==="bindings"){r.bindings=Is(r.bindings,i.bindings)}else if(o==="constraints"){r.constraints=Is(r.constraints,i.constraints)}else{;r[o]=s}}}return r}function eg(e){return Zt(()=>{const n=Bs(e);if(n)Ls(n);return ut(n)})}function Pl(e){return e?{...e}:void 0}function vl(e){const n=e.strokeWidth;const t=e.roles?Object.fromEntries(Object.entries(e.roles).map(([s,a])=>[s,Pl(a)])):void 0;const r={...n!==void 0&&n>0&<(e)==="default"?{lineWidth:n}:{},...t?.node};const i={...n!==void 0&&n>0&<(e)==="default"?{lineWidth:n}:{},...t?.edge};const o={...n!==void 0&&n>0&<(e)==="default"?{lineWidth:n}:{},...t?.group};if(!t&&!e.semanticSlots&&!e.bindings&&!e.constraints&&Object.keys(r).length===0&&Object.keys(i).length===0&&Object.keys(o).length===0)return void 0;return{...t?{roles:ui(t)}:{},...e.semanticSlots?{semanticSlots:fi(e.semanticSlots)}:{},...e.bindings?{bindings:An(e.bindings)}:{},...e.constraints?{constraints:An(e.constraints)}:{},...t?.label?{text:{...t.label}}:{},...Object.keys(r).length?{node:r}:{},...Object.keys(i).length?{edge:i}:{},...Object.keys(o).length?{group:o}:{}}}function Ls(e){for(const[o,s]of(e.bindings??[]).entries()){const a=e.semanticSlots?.[s.slot];if(!a)throw new Oe(`Invalid style spec: binding ${o+1} references missing semantic slot "${s.slot}"`);const c=s.role===void 0?new Set(Yt):new Set(Qe.find(d=>d.role===s.role).style.applicableProperties);if(!Object.keys(a).some(d=>c.has(d))){throw new Oe(s.role===void 0?`Invalid style spec: semantic slot "${s.slot}" has no field applicable to any executable category-binding role`:`Invalid style spec: semantic slot "${s.slot}" has no field applicable to role "${s.role}"`)}}const n=["hachureAngle","hachureGap","fillWeight"];const t=n.filter(o=>e[o]!==void 0&&e.fill!=="hachure");if(t.length>0){throw new Oe(`Invalid style spec: ${t.map(o=>`"${o}"`).join(", ")} require fill "hachure" in the final Style stack`)}const r=["washOpacity","washEdge"];const i=r.filter(o=>e[o]!==void 0&&e.fill!=="wash");if(i.length>0){throw new Oe(`Invalid style spec: ${i.map(o=>`"${o}"`).join(", ")} require fill "wash" in the final Style stack`)}if(e.fill!==void 0&<(e)==="default"){throw new Oe('Invalid style spec: "fill" has no crisp/default backend projection; combine it with stroke "jittered"/"freehand" or another rough/hybrid backend field')}}function ng(e){return Zt(()=>{const n=Bs(e);if(n===void 0)return{};Ls(n);const t=ut(n);const r=vl(n);return{...t?{style:t}:{},...r?{face:r}:{}}})}function Dl(e){return Object.keys(e).every(n=>n==="formatVersion"||n==="$schema"||n==="name"||n==="blurb"||n==="colors")?"palette":"look"}function tg(e){return lt(e)!=="default"||e.colors!==void 0||e.font!==void 0||e.strokeWidth!==void 0||e.roles!==void 0||e.semanticSlots!==void 0||e.bindings!==void 0||e.constraints!==void 0}q({name:"crisp",displayLabel:"Crisp",blurb:"The default renderer with precise SVG geometry.",stroke:"crisp"},"look");for(const e of As){const{inputName:n,colors:t}=e;if(ot("palette",n)!==e.id){throw new Error(`Built-in palette identity mismatch: ${e.id}`)}q({name:n,displayLabel:e.displayLabel,blurb:`Palette: ${n}.`,colors:{bg:t.bg,fg:t.fg,line:t.line,accent:t.accent,muted:t.muted,surface:t.surface,border:t.border}},"palette",n)}q({name:"hand-drawn",displayLabel:"Hand-drawn",blurb:"Black ink on ruled paper \u2014 wobbly double strokes, unfilled boxes.",intent:"draft",colors:{bg:"#f7f5ef",fg:"#1a1a1e",line:"#26262b",accent:"#26262b",border:"#26262b"},font:"Caveat",stroke:"jittered",roughness:1,bowing:1,passes:2,strokeWidth:1.8,fill:"none",backdrop:"paper-ruled",mono:true});q({name:"excalidraw",displayLabel:"Excalidraw",blurb:"Virtual whiteboard style \u2014 rough strokes, pastel hachure fills.",intent:"draft",colors:{bg:"#ffffff",fg:"#1e1e1e",line:"#1e1e1e",accent:"#4263eb",surface:"#f1f3f5"},font:"Caveat",stroke:"jittered",roughness:1.1,bowing:1.2,passes:2,strokeWidth:1.6,fill:"hachure",hachureAngle:-41,hachureGap:5.5,fillWeight:.9});q({name:"pen-and-ink",displayLabel:"Pen & ink",blurb:"Fine single-pass linework on warm cream \u2014 no interior hatching.",intent:"premium",colors:{bg:"#faf6ec",fg:"#241f1a",line:"#2b241d",accent:"#2b241d",border:"#2b241d"},font:"EB Garamond",stroke:"jittered",roughness:.5,bowing:.6,passes:1,strokeWidth:1.5,fill:"none",mono:true});q({name:"freehand",displayLabel:"Freehand",blurb:"Pressure-sensitive marker ribbons \u2014 variable-width filled strokes.",intent:"draft",colors:{bg:"#fbfaf7",fg:"#16161a",line:"#1d1d22",accent:"#1d1d22",border:"#1d1d22"},font:"Architects Daughter",stroke:"freehand",roughness:.9,passes:1,strokeWidth:1.6,fill:"none",mono:true});q({name:"watercolor",displayLabel:"Watercolor",blurb:"Rough outlines over translucent glazes with pigment-pooled edges.",intent:"premium",colors:{bg:"#fdfbf6",fg:"#31302c",line:"#4d4a44",accent:"#7a6a52",surface:"#ead9b9",border:"#5a564e"},font:"Caveat",stroke:"jittered",roughness:.9,bowing:.8,passes:1,strokeWidth:1.5,fill:"wash",washOpacity:.3,washEdge:.34});q({name:"blueprint",displayLabel:"Blueprint",blurb:"Cyanotype: white linework on Prussian blue with a drafting grid.",intent:"premium",colors:{bg:"#123a63",fg:"#eaf2fb",line:"#dbe9f7",accent:"#ffffff",muted:"#b8cfe6",surface:"#1c4a78",border:"#dbe9f7"},font:"Share Tech Mono",stroke:"jittered",roughness:.4,bowing:.4,passes:1,strokeWidth:1.4,fill:"none",backdrop:"grid",mono:true});q({name:"tufte",displayLabel:"Tufte",blurb:"Maximal data-ink: crisp hairlines, warm paper, one red accent.",intent:"premium",colors:{bg:"#fffff8",fg:"#111111",line:"#4a4a45",accent:"#a00000",muted:"#6b6b64",border:"#8a8a80"},font:"EB Garamond",roles:{node:{lineWidth:.8,cornerRadius:0},edge:{lineWidth:.8},group:{lineWidth:.8}},mono:true},"look","look:tufte");q({name:"accessible-high-contrast",displayLabel:"Accessible Contrast",blurb:"Accessibility-first: large labels, heavy strokes, white ground, colorblind-safe blue accent.",intent:"premium",colors:{bg:"#ffffff",fg:"#050505",line:"#111111",accent:"#005fcc",muted:"#333333",surface:"#ffffff",border:"#050505"},roles:{node:{fontSize:17,fontWeight:700,textColor:"var(--fg)",paddingX:28,paddingY:16,cornerRadius:8,lineWidth:2.4,borderColor:"var(--fg)"},edge:{fontSize:14,fontWeight:700,textColor:"var(--fg)",lineWidth:2.6,bendRadius:10,strokeColor:"var(--fg)"},group:{fontSize:14,fontWeight:700,textColor:"var(--fg)",paddingX:24,paddingY:22,cornerRadius:8,lineWidth:2.2,borderColor:"var(--fg)"}}});q({name:"patent-drawing",displayLabel:"Patent Hatching",blurb:"Print-safe patent figure: uniform ink, strong outlines, tone via oblique hatching.",intent:"premium",colors:{bg:"#ffffff",fg:"#111111",line:"#111111",accent:"#111111",muted:"#444444",surface:"#ffffff",border:"#111111"},font:"EB Garamond",stroke:"jittered",roughness:.3,bowing:.2,passes:1,strokeWidth:1.35,fill:"hachure",hachureAngle:-50,hachureGap:7,fillWeight:.65,roles:{node:{fontSize:14,fontWeight:600,textColor:"var(--fg)",paddingX:24,paddingY:13,lineWidth:1.35,cornerRadius:0,borderColor:"var(--fg)"},edge:{fontSize:12,textColor:"var(--fg)",lineWidth:1.45,bendRadius:0,strokeColor:"var(--fg)"},group:{fontSize:12,fontWeight:700,textColor:"var(--fg)",paddingX:22,paddingY:18,lineWidth:1.35,cornerRadius:0,borderColor:"var(--fg)"}},mono:true});q({name:"status-dashboard",displayLabel:"Dark Ops Dashboard",blurb:"Operational dashboard: dark surface, rounded modules, bright status-friendly accent.",intent:"premium",colors:{bg:"#08111f",fg:"#e6f4ff",line:"#5a7c99",accent:"#2dd4bf",muted:"#8aa6bf",surface:"#102033",border:"#2e4c63"},roles:{node:{fontSize:14,fontWeight:700,textColor:"var(--fg)",paddingX:24,paddingY:13,cornerRadius:10,lineWidth:1.4,borderColor:"var(--fg)"},edge:{fontSize:12,fontWeight:600,textColor:"var(--fg)",lineWidth:2,bendRadius:14,strokeColor:"var(--fg)"},group:{fontSize:13,fontWeight:700,textColor:"var(--fg)",textTransform:"uppercase",letterSpacing:.06,paddingX:22,paddingY:20,cornerRadius:10,lineWidth:1.3,borderColor:"var(--fg)"}}});q({name:"ops-schematic",displayLabel:"Compact Trace Map",blurb:"Dense operational schematic: compact mono labels, sturdy traces, theme-friendly geometry.",intent:"lofi",colors:{bg:"#f8faf7",fg:"#17211c",line:"#24523b",accent:"#0f766e",muted:"#4f665a",surface:"#f0f5ef",border:"#24523b"},font:"Share Tech Mono",stroke:"jittered",roughness:.18,bowing:.2,passes:1,strokeWidth:1.6,fill:"none",roles:{node:{fontSize:12,fontWeight:700,textTransform:"uppercase",textColor:"var(--fg)",paddingX:16,paddingY:8,cornerRadius:2,lineWidth:1.6,borderColor:"var(--fg)"},edge:{fontSize:10,fontWeight:700,textTransform:"uppercase",textColor:"var(--fg)",lineWidth:1.8,bendRadius:0,strokeColor:"var(--fg)"},group:{fontSize:11,fontWeight:700,textColor:"var(--fg)",textTransform:"uppercase",letterSpacing:.05,paddingX:16,paddingY:16,cornerRadius:2,lineWidth:1.5,borderColor:"var(--fg)"}}});q({name:"chalkboard",displayLabel:"Chalkboard",blurb:"Classroom chalkboard: dusty off-white strokes on green slate.",intent:"draft",colors:{bg:"#17362f",fg:"#f5f1df",line:"#ece6cf",accent:"#ffe08a",muted:"#c7d2c4",surface:"#17362f",border:"#f3ecd5"},font:"Caveat",stroke:"jittered",roughness:1.25,bowing:1,passes:2,strokeWidth:1.9,fill:"none",roles:{node:{fontSize:16,fontWeight:700,textColor:"var(--fg)",paddingX:24,paddingY:12,borderColor:"var(--fg)"},edge:{fontSize:13,textColor:"var(--fg)",lineWidth:1.8,strokeColor:"var(--fg)"},group:{fontSize:14,fontWeight:700,textColor:"var(--fg)",paddingX:20,paddingY:20,lineWidth:1.7,borderColor:"var(--fg)"}},mono:true});q({name:"risograph",displayLabel:"Riso Print",blurb:"Two-ink poster print: warm stock, offset blue linework, coral accent, coarse hachure.",intent:"premium",colors:{bg:"#fff5df",fg:"#2b2725",line:"#1f3d5a",accent:"#ff5a5f",muted:"#876a52",surface:"#ffd166",border:"#1f3d5a"},font:"EB Garamond",stroke:"jittered",roughness:.7,bowing:.55,passes:1,strokeWidth:1.5,fill:"hachure",hachureAngle:18,hachureGap:6.5,fillWeight:.75,roles:{node:{fontSize:14,fontWeight:700,textColor:"var(--fg)",paddingX:24,paddingY:13,cornerRadius:3,borderColor:"var(--fg)"},edge:{fontSize:12,textColor:"var(--fg)",lineWidth:1.5,strokeColor:"var(--fg)"},group:{fontSize:13,fontWeight:700,textColor:"var(--fg)",paddingX:22,paddingY:18,cornerRadius:3,borderColor:"var(--fg)"}}});q({name:"architectural-plan",displayLabel:"Plan Drafting",blurb:"Architectural plan: square technical linework, uppercase mono labels, room-like frames.",intent:"premium",colors:{bg:"#fbf7ea",fg:"#202a2f",line:"#38535e",accent:"#1f6f8b",muted:"#60727a",surface:"#fffaf0",border:"#38535e"},font:"Share Tech Mono",stroke:"jittered",roughness:.18,bowing:.25,passes:1,strokeWidth:1.45,fill:"none",roles:{node:{fontSize:12,fontWeight:700,textTransform:"uppercase",textColor:"var(--fg)",paddingX:20,paddingY:10,cornerRadius:0,lineWidth:1.45,borderColor:"var(--fg)"},edge:{fontSize:10,fontWeight:700,textTransform:"uppercase",textColor:"var(--fg)",lineWidth:1.55,bendRadius:0,strokeColor:"var(--fg)"},group:{fontSize:11,fontWeight:700,textColor:"var(--fg)",textTransform:"uppercase",letterSpacing:.06,paddingX:20,paddingY:20,cornerRadius:0,lineWidth:1.45,borderColor:"var(--fg)"}}});q({name:"publication-figure",displayLabel:"Report Figure",blurb:"Polished publication figure: serif labels, confident rules, rounded boxes, one quiet accent.",intent:"premium",colors:{bg:"#fffdf8",fg:"#171512",line:"#24211d",accent:"#1d4ed8",muted:"#5f5a52",surface:"#faf5ea",border:"#24211d"},font:"EB Garamond",strokeWidth:1.45,roles:{node:{fontSize:15,fontWeight:700,textColor:"var(--fg)",paddingX:26,paddingY:14,cornerRadius:7,lineWidth:1.45,borderColor:"var(--fg)"},edge:{fontSize:12,fontWeight:600,textColor:"var(--fg)",lineWidth:1.45,bendRadius:8,strokeColor:"var(--fg)"},group:{fontSize:12,fontWeight:700,textColor:"var(--fg)",textTransform:"uppercase",letterSpacing:.08,paddingX:24,paddingY:22,cornerRadius:7,lineWidth:1.35,borderColor:"var(--fg)"}}});function re(e,n,t=0){return Math.abs(e.x-n.x)<=t&&Math.abs(e.y-n.y)<=t}function ft(e,n){const t=n.x-e.x;const r=n.y-e.y;const i=Math.hypot(t,r);return Number.isFinite(i)&&i>0?{x:t/i,y:r/i}:void 0}function Mn(e,n){return{x:(e.x+n.x)/2,y:(e.y+n.y)/2}}function tn(e,n){return Math.hypot(n.x-e.x,n.y-e.y)}function Fs(e,n,t){const r=tn(n,t);if(r===0)return tn(e,n);return Math.abs((t.x-n.x)*(n.y-e.y)-(n.x-e.x)*(t.y-n.y))/r}function Ws(e,n,t,r,i=.5,o=12){if(!Number.isFinite(i)||i<=0){throw new TypeError("Cubic flattening tolerance must be positive and finite")}if(!Number.isSafeInteger(o)||o<0){throw new TypeError("Cubic flattening maxDepth must be a non-negative safe integer")}for(const c of[e,n,t,r]){if(!Number.isFinite(c.x)||!Number.isFinite(c.y)){throw new TypeError("Cubic flattening points must be finite")}}const s=[{...e}];const a=(c,d,l,f,m)=>{const u=tn(c,f);const y=tn(c,d)+tn(d,l)+tn(l,f)-u;const b=Math.max(Fs(d,c,f),Fs(l,c,f))<=i&&y<=i;if(b||m>=o){s.push({...f});return}const h=Mn(c,d);const k=Mn(d,l);const x=Mn(l,f);const S=Mn(h,k);const g=Mn(k,x);const E=Mn(S,g);a(c,h,S,E,m+1);a(E,g,x,f,m+1)};a(e,n,t,r,0);return s}function _e(...e){const n=e[0];if(!n)return void 0;for(let t=1;t<e.length;t++){const r=ft(n,e[t]);if(r)return r}return void 0}function jl(e,n){if(n.kind==="line")return _e(e,n.end);if(n.kind==="quadratic")return _e(e,n.control,n.end);return _e(e,n.control1,n.control2,n.end)}function zl(e,n){if(n.kind==="line")return _e(e,n.end);if(n.kind==="quadratic")return _e(n.control,n.end)??_e(e,n.end);return _e(n.control2,n.end)??_e(n.control1,n.end)??_e(e,n.end)}function Bl(e,n,t){return[{x:e.x+(n.x-e.x)*2/3,y:e.y+(n.y-e.y)*2/3},{x:t.x+(n.x-t.x)*2/3,y:t.y+(n.y-t.y)*2/3}]}function Vs(e,n,t,r=.5){for(const d of[n,...t.flatMap(l=>l.kind==="line"?[l.end]:l.kind==="quadratic"?[l.control,l.end]:[l.control1,l.control2,l.end])]){if(!Number.isFinite(d.x)||!Number.isFinite(d.y)){throw new TypeError("Connector path projection points must be finite")}}const i=[{...n}];const o=[];let s=n;for(const d of t){o.push(s);if(d.kind==="line"){i.push({...d.end})}else if(d.kind==="quadratic"){const[l,f]=Bl(s,d.control,d.end);i.push(...Ws(s,l,f,d.end,r).slice(1))}else{i.push(...Ws(s,d.control1,d.control2,d.end,r).slice(1))}s=d.end}let a;for(let d=0;d<t.length&&!a;d++){a=jl(o[d],t[d])}let c;for(let d=t.length-1;d>=0&&!c;d--){c=zl(o[d],t[d])}return{geometry:{kind:"path",d:e,points:i},contours:[{start:{...n},end:{...s},closed:false,...a?{startTangent:a}:{},...c?{endTangent:c}:{}}]}}function pt(e,n,t){return t==="manhattan"?Math.abs(n.x-e.x)+Math.abs(n.y-e.y):tn(e,n)}function Us(e,n){if(n===void 0)return e;if(!Number.isSafeInteger(n)||n<0){throw new TypeError("Rounded connector precision must be a non-negative safe integer")}const t=10**n;return Math.round(e*t)/t}function Gs(e,n,t,r,i){const o=pt(e,n,r);if(o===0)return{...e};const s=t/o;return{x:Us(e.x+(n.x-e.x)*s,i),y:Us(e.y+(n.y-e.y)*s,i)}}function Ys(e,n){for(let t=1;t<e.length-1;t++){const r=n?t:e.length-1-t;const i=e[r-1],o=e[r],s=e[r+1];const a=o.x-i.x,c=o.y-i.y,d=s.x-o.x,l=s.y-o.y;if(a*l!==c*d||a*d+c*l<0)return r}return-1}function sg(e,n,t={}){if(e.length===0){throw new RangeError("Rounded connector paths require at least one point")}if(!Number.isFinite(n)){throw new TypeError("Rounded connector radius must be finite")}const r=t.metric??"euclidean";const i=t.terminalClearance;if(i&&(!Number.isFinite(i.start??0)||(i.start??0)<0||!Number.isFinite(i.end??0)||(i.end??0)<0))throw new TypeError("Terminal clearance must be finite and non-negative");const o=e[0];const s=[];if(n<=0||e.length<3){for(let m=1;m<e.length;m++){s.push({kind:"line",end:e[m]})}const f=`M${e.map(m=>`${m.x},${m.y}`).join(" L")}`;return Vs(f,o,s,t.tolerance)}const a=i?.start?Ys(e,true):-1;const c=i?.end?Ys(e,false):-1;const d=[`M${o.x},${o.y}`];for(let f=1;f<e.length-1;f++){const m=e[f-1];const u=e[f];const y=e[f+1];const b=pt(m,u,r);const h=pt(u,y,r);const k=Math.max(0,Math.min(n,b/2,h/2,f===a?pt(o,u,r)-i.start:Infinity,f===c?pt(e.at(-1),u,r)-i.end:Infinity));if(k<=0){d.push(`L${u.x},${u.y}`);s.push({kind:"line",end:u});continue}const x=Gs(u,m,k,r,t.precision);const S=Gs(u,y,k,r,t.precision);d.push(`L${x.x},${x.y}`);d.push(`Q${u.x},${u.y} ${S.x},${S.y}`);s.push({kind:"line",end:x});s.push({kind:"quadratic",control:u,end:S})}const l=e.at(-1);d.push(`L${l.x},${l.y}`);s.push({kind:"line",end:l});return Vs(d.join(" "),o,s,t.tolerance)}function Ae(e,n=false){if(e.kind==="line"){return[{points:[{x:e.x1,y:e.y1},{x:e.x2,y:e.y2}],closed:false}]}if(e.kind==="path"&&e.subpaths!==void 0)return e.subpaths;return[{points:e.points,closed:n}]}function er(e){return e.kind==="path"&&/[AaCcQqSsTt]/.test(e.d)}function nr(e,n=false){const t=[];for(const r of Ae(e,n)){const i=r.points[0];const o=r.points.at(-1);if(!i||!o)continue;let s;for(let d=1;d<r.points.length&&!s;d++){s=ft(r.points[d-1],r.points[d])}const a=r.closed&&!re(i,o);if(!s&&a)s=ft(o,i);let c=a?ft(o,i):void 0;for(let d=r.points.length-1;d>0&&!c;d--){c=ft(r.points[d-1],r.points[d])}t.push({start:e.kind==="line"?i:{...i},end:e.kind==="line"?o:{...r.closed?i:o},closed:r.closed,...s?{startTangent:s}:{},...c?{endTangent:c}:{}})}return t}function Hs(e,n=false){const t=[];const r=[];Ae(e,n).forEach((i,o)=>{const s=i.points[0];const a=i.closed?s:i.points.at(-1);if(s)t.push({point:{...s},contourIndex:o});if(a)r.push({point:{...a},contourIndex:o})});return{starts:t,ends:r}}function In(e,n=false){const t=[];const r=[];for(const i of Ae(e,n)){const o=i.points[0];const s=i.closed?o:i.points.at(-1);if(o)t.push(o);if(s)r.push(s)}return{starts:t,ends:r}}function pi(e,n=false){const t=[];for(const[r,i]of Ae(e,n).entries()){for(let a=1;a<i.points.length;a++){t.push({start:i.points[a-1],end:i.points[a],subpathIndex:r,closing:false})}const o=i.points[0];const s=i.points.at(-1);if(i.closed&&o&&s&&!re(o,s)){t.push({start:s,end:o,subpathIndex:r,closing:true})}}return t}function Pn(e,n=false){if(e.kind==="line")return[];if(e.kind==="path")return e.markerMidpoints??[];return Ae(e,n).flatMap(t=>{if(t.points.length<2)return[];const r=t.closed&&re(t.points[0],t.points.at(-1))?t.points.slice(0,-1):t.points;return t.closed?r.slice(1):r.slice(1,-1)})}function Ks(e,n=false){if(e.kind==="line")return[];const t=Ae(e,n);if(e.kind==="path"){return(e.markerMidpoints??[]).map(r=>{if(t.length===1)return{point:{...r},contourIndex:0};const i=t.flatMap((o,s)=>o.points.some(a=>re(a,r))?[s]:[]);if(i.length!==1){throw new TypeError("Path marker-mid vertices on multiple subpaths must belong to exactly one typed contour")}return{point:{...r},contourIndex:i[0]}})}return t.flatMap((r,i)=>{if(r.points.length<2)return[];const o=r.closed&&re(r.points[0],r.points.at(-1))?r.points.slice(0,-1):r.points;const s=r.closed?o.slice(1):o.slice(1,-1);return s.map(a=>({point:{...a},contourIndex:i}))})}function tr(e){return e.match(/[Mm](?=\s*[-+.]?\d)/g)?.length??0}var vn=[1,0,0,1,0,0];function de(e){if(!e)return vn;if(e.kind==="matrix")return[e.a,e.b,e.c,e.d,e.e,e.f];const n=e.angle*Math.PI/180;const t=Math.cos(n),r=Math.sin(n);return[t,r,-r,t,e.cx-t*e.cx+r*e.cy,e.cy-r*e.cx-t*e.cy]}function rn(e,n){return[e[0]*n[0]+e[2]*n[1],e[1]*n[0]+e[3]*n[1],e[0]*n[2]+e[2]*n[3],e[1]*n[2]+e[3]*n[3],e[0]*n[4]+e[2]*n[5]+e[4],e[1]*n[4]+e[3]*n[5]+e[5]]}function Ee(e,n){return{x:n[0]*e.x+n[2]*e.y+n[4],y:n[1]*e.x+n[3]*e.y+n[5]}}function rr(e){const n=e[0]*e[3]-e[1]*e[2];if(!Number.isFinite(n)||n===0)return void 0;return[e[3]/n,-e[1]/n,-e[2]/n,e[0]/n,(e[2]*e[5]-e[3]*e[4])/n,(e[1]*e[4]-e[0]*e[5])/n]}function Xs(e){let n=vn;let t=0;const r=/([A-Za-z]+)\s*\(([^()]*)\)/g;for(const i of e.matchAll(r)){if(e.slice(t,i.index).trim())return void 0;t=i.index+i[0].length;const o=i[2].trim();if(!o||/^(?:,)|(?:,)$|,\s*,/.test(o)||!/^[-+\d.eE,\s]+$/.test(o))return void 0;const s=o.split(/[\s,]+/).map(Number);if(!s.every(Number.isFinite))return void 0;let a;if(i[1]==="matrix"&&s.length===6)a=s;else if(i[1]==="translate"&&(s.length===1||s.length===2))a=[1,0,0,1,s[0],s[1]??0];else if(i[1]==="scale"&&(s.length===1||s.length===2))a=[s[0],0,0,s[1]??s[0],0,0];else if(i[1]==="rotate"&&(s.length===1||s.length===3))a=de({kind:"rotate",angle:s[0],cx:s[1]??0,cy:s[2]??0});else return void 0;n=rn(n,a)}return t>0&&!e.slice(t).trim()?n:void 0}function qs(e){return e.kind==="rotate"?`rotate(${e.angle} ${e.cx} ${e.cy})`:`matrix(${e.a} ${e.b} ${e.c} ${e.d} ${e.e} ${e.f})`}function Js(e,n,t){const r=t.x-n.x;const i=t.y-n.y;const o=r*r+i*i;if(o===0)return Math.hypot(e.x-n.x,e.y-n.y);const s=Math.max(0,Math.min(1,((e.x-n.x)*r+(e.y-n.y)*i)/o));return Math.hypot(e.x-(n.x+s*r),e.y-(n.y+s*i))}function mi(e,n,t){if(e.hit.pointerEvents==="none")return void 0;const r=pi(e.hit.geometry,e.hit.closed);if(r.length===0)return void 0;const i=rn(t,de(e.transform));let o=Number.POSITIVE_INFINITY;for(const s of r){o=Math.min(o,Js(n,Ee(s.start,i),Ee(s.end,i)))}return o}function ug(e,n){return mi(e,n,vn)}function Zs(e,n,t,r){if(e.hit.pointerEvents==="none")return false;const i=rn(r,de(e.transform));const o=rr(i);if(!o)return false;if(e.stroke.nonScaling){const d=mi(e,n,r);return d!==void 0&&d<=e.hit.strokeWidth/2+Math.max(0,t)}const s=Ee(n,o);const a=(Math.hypot(o[0]+o[3],o[1]-o[2])+Math.hypot(o[0]-o[3],o[1]+o[2]))/2;const c=e.hit.strokeWidth/2+(t>0?t*a:0);return pi(e.hit.geometry,e.hit.closed).some(d=>Js(s,d.start,d.end)<=c)}function he(e,n,t=0){return Zs(e,n,t,vn)}function Qs(e,n,t){for(let r=e.length-1;r>=0;r--){const i=e[r];if(i.kind==="connector")t(i,n);else if(i.kind==="group")Qs(i.children.map(o=>o.node),rn(n,de(i.transform)),t)}}function fg(e,n,t=0){const r=[];Qs(e.parts,vn,(i,o)=>{const s=mi(i,n,o);if(s!==void 0&&Zs(i,n,t,o)){r.push(Object.freeze({id:i.id,role:i.role,connector:i,distance:s}))}});return Object.freeze(r.sort((i,o)=>i.distance-o.distance))}var Ll=/^[A-Za-z_][A-Za-z0-9_.:-]*$/;var X=Object.freeze({maxIdLength:256,maxCoordinate:1e6,maxStopsPerGradient:256,maxResources:1e4,maxAggregateStops:2e4,maxSerializationBytes:8e6});function Me(e,n){if(!Number.isFinite(e))throw new Error(`Linear gradient ${n} must be finite`);if(Math.abs(e)>X.maxCoordinate){throw new Error(`Linear gradient ${n} must not exceed ${X.maxCoordinate}`)}return e}function Fl(e){return`${Math.round(e*1e5)/1e3}%`}function gi(e){if(!Ll.test(e.id)){throw new Error(`Linear gradient id ${JSON.stringify(e.id)} must use the safe SVG id grammar`)}if(e.id.length>X.maxIdLength){throw new Error(`Linear gradient id must contain at most ${X.maxIdLength} characters`)}if(e.units!=="userSpaceOnUse"&&e.units!=="objectBoundingBox"){throw new Error(`Linear gradient "${e.id}" units must be userSpaceOnUse or objectBoundingBox`)}Me(e.x1,"x1");Me(e.y1,"y1");Me(e.x2,"x2");Me(e.y2,"y2");if(e.stops.length<2){throw new Error(`Linear gradient "${e.id}" must declare at least two stops`)}if(e.stops.length>X.maxStopsPerGradient){throw new Error(`Linear gradient "${e.id}" must declare at most ${X.maxStopsPerGradient} stops`)}let n=-1;for(const[t,r]of e.stops.entries()){Me(r.offset,`stops[${t}].offset`);if(r.offset<0||r.offset>1){throw new Error(`Linear gradient "${e.id}" stop offsets must be in [0,1]`)}if(r.offset<n){throw new Error(`Linear gradient "${e.id}" stop offsets must be non-decreasing`)}n=r.offset;if(ce(r.color)===void 0||/^url\s*\(/i.test(r.color)){throw new Error(`Linear gradient "${e.id}" stop ${t} must use a safe non-fetching CSS paint`)}if(r.opacity!==void 0&&(!Number.isFinite(r.opacity)||r.opacity<0||r.opacity>1)){throw new Error(`Linear gradient "${e.id}" stop opacity must be in [0,1]`)}}}function yi(e,n={}){gi(e);const t=" ".repeat(n.indent??2);const r=`${t} `;const i=[`id="${j(e.id)}"`,`gradientUnits="${e.units}"`,`x1="${Me(e.x1,"x1")}"`,`y1="${Me(e.y1,"y1")}"`,`x2="${Me(e.x2,"x2")}"`,`y2="${Me(e.y2,"y2")}"`];return[`${t}<linearGradient ${i.join(" ")}>`,...e.stops.map(o=>`${r}<stop offset="${Fl(o.offset)}" stop-color="${j(o.color)}"${o.opacity===void 0?"":` stop-opacity="${o.opacity}"`} />`),`${t}</linearGradient>`].join("\n")}function ea(e,n={}){if(e.length>X.maxResources){throw new Error(`A definitions mark may declare at most ${X.maxResources} linear gradients`)}const t=new Set;let r=0;let i=0;const o=[];for(const s of e){if(t.has(s.id))throw new Error(`Duplicate linear gradient resource "${s.id}"`);t.add(s.id);r+=s.stops.length;if(r>X.maxAggregateStops){throw new Error(`Linear gradient resources may declare at most ${X.maxAggregateStops} aggregate stops`)}const a=yi(s,n);const c=o.length===0?0:1;const d=X.maxSerializationBytes-i-c;const l=te(a,Math.max(0,d));if(l>d){throw new Error(`Linear gradient serialization exceeds ${X.maxSerializationBytes} bytes`)}i+=l+c;o.push(a)}return o.join("\n")}function na(e,n){if(e.length!==1||n.monospace||n.letterSpacing||e[0].bold||e[0].italic||e[0].underline||e[0].strikethrough||/[^\x20-\x7e]/u.test(e[0].text))return void 0;const t=e[0];const r=a=>Number.isInteger(a)&&a>=0&&a<=4294967295;if(!t.clusters||t.clusters.length!==t.text.length||!r(t.sourceEnd)||t.clusters.some((a,c)=>a.text!==t.text[c]||!r(a.sourceStart)))return void 0;const i=new Float64Array(t.text.length+1),o=new Uint32Array(t.text.length+1);const s=n.fontWeight>=600?.6:n.fontWeight>=500?.57:.54;for(let a=0;a<t.text.length;a++){let c=gn(t.text[a]);if(n.safeFont&&(t.text[a]==="W"||t.text[a]==="M"))c+=.35;i[a+1]=i[a]+c;o[a]=t.clusters[a].sourceStart}o[t.text.length]=t.sourceEnd;return{offsets:o,width:(a,c)=>(i[c]-i[a])*n.fontSize*s+n.fontSize*.15}}var ta=new Le(256,8*1024*1024);var mt=new WeakSet;function ir(e){return mt.has(e)}function ia(e,n){if(mt.has(e))mt.add(n)}function xi(e,n){return e.bold===n.bold&&e.italic===n.italic&&e.underline===n.underline&&e.strikethrough===n.strikethrough}function bi(e){const n=[];let t;for(const r of e.flatMap(i=>i.fragments??i)){if(t&&xi(t,r)){t.text+=r.text;t.sourceEnd=r.sourceEnd}else{t={...r};n.push(t)}}return n}function on(e,n){if(e.length===0)return 0;const t=n.safeFont?At:Zn;const r=e.length===1&&!e[0].fragments?e:bi(e);const i=r.length===1?r[0].text:r.map(a=>a.text).join("");if((n.letterSpacing??0)!==0&&!/[^\x20-\x7e]/u.test(i))return ra(r,n).width;const o=n.monospace?je()?r.reduce((a,c)=>a+Mt(c.text,n.fontSize,0,c.bold?Math.max(700,n.fontWeight):n.fontWeight,c.italic?"italic":"normal",n.fontFamily),0):Mt(i,n.fontSize):r.reduce((a,c)=>a+t(c.text,n.fontSize,c.bold?Math.max(700,n.fontWeight):n.fontWeight,c.italic?"italic":"normal",n.fontFamily),0);if(!je()&&/[^\x20-\x7e]/u.test(i)){const a=r.reduce((d,l)=>d+[...l.text].reduce((f,m)=>f+(gn(m)===0?0:/[^\x20-\x7e]/u.test(m)?n.fontSize*1.2:At(m,n.fontSize,l.bold?Math.max(700,n.fontWeight):n.fontWeight)),0),0);const c=ne(i).filter(d=>/\p{M}/u.test(d)&&[...d].every(l=>gn(l)===0)).length;return Math.max(o,a+c*n.fontSize*1.2)+Math.max(0,[...i].length-1)*Math.abs(n.letterSpacing??0)}if((n.letterSpacing??0)<0)return ra(r,n).width;const s=n.letterSpacing??0;return Math.max(0,o+(s===0?0:Math.max(0,ne(i).length-1)*s))}function Wl(e,n){const t=e.flatMap((a,c)=>ne(a.text).map(d=>({runIndex:c,text:d})));let r=0,i=0,o=0;const s=t.map((a,c)=>{const d=e[a.runIndex],l=t[c+1];const f=!l||!xi(d,e[l.runIndex]);const m=oa(a.text,d,f,n);const u=Object.freeze({...a,x:r,width:m});i=Math.min(i,r);o=Math.max(o,r+m);r+=m+(n.letterSpacing??0);return u});return{width:o-i,originX:-i,fragments:Object.freeze(s)}}function Vl(e,n){const t=[];for(const[o,s]of e.entries()){const a=t.at(-1);if(a&&xi(e[a.runIndex],s))a.text+=s.text;else t.push({runIndex:o,text:s.text})}let r=0;const i=t.map(({runIndex:o,text:s})=>{const a=on([{...e[o],text:s}],n);const c=Object.freeze({runIndex:o,text:s,x:r,width:a});r+=a;return c});return{width:r,originX:0,fragments:Object.freeze(i)}}function oa(e,n,t,r){const i=n.bold?Math.max(700,r.fontWeight):r.fontWeight;const o=n.italic?"italic":"normal";const s=r.safeFont?At:Zn;return r.monospace?Mt(e,r.fontSize,0,i,o,r.fontFamily):s(e,r.fontSize,i,o,r.fontFamily)-(t||je()?0:r.fontSize*.15)}function ra(e,n){let t=0,r=0,i=0;for(const o of e){const s=ne(o.text);for(const[a,c]of s.entries()){const d=oa(c,o,a===s.length-1,n);r=Math.min(r,t);i=Math.max(i,t+d);t+=d+(n.letterSpacing??0)}}return{width:i-r,originX:-r}}function Ul(e){const n=e.flatMap(i=>(i.clusters??ne(i.text).map(o=>({text:o,sourceStart:i.sourceStart,sourceEnd:i.sourceEnd}))).map(o=>({...i,...o,clusters:void 0})));let t=0;let r=0;return ne(n.map(i=>i.text).join("")).map(i=>{let o=i.length;const s=[];while(o>0){const a=n[t];const c=Math.min(o,a.text.length-r);s.push({...a,text:a.text.slice(r,r+c)});o-=c;r+=c;if(r===a.text.length){t++;r=0}}return{...s[0],text:i,sourceEnd:s.at(-1).sourceEnd,...s.length>1?{fragments:s}:{}}})}function hi(e){const{fragments:n,...t}=e.fragments?.at(-1)??e;return{...t,text:"-",clusters:void 0}}function gt(e,n){if(bn("text-spans"))n={display:n.display,transform:n.transform,fontSize:n.fontSize,fontWeight:n.fontWeight,letterSpacing:n.letterSpacing,maxWidth:n.maxWidth,safeFont:n.safeFont,monospace:n.monospace,fontFamily:n.fontFamily};if(!Number.isFinite(n.fontSize)||n.fontSize<=0||!Number.isFinite(n.fontWeight)||!Number.isFinite(n.letterSpacing??0))throw new RangeError("Prepared text requires finite typography and a positive font size");const t=bn("text-spans")&&!je()&&typeof e==="string"&&e.length<=16384?JSON.stringify([e,n]):void 0;if(t!==void 0){const y=ta.get(t);if(y)return y}const r=xn(e,n.display,n.transform);const i=n.maxWidth;const o=[];const s=[];for(const[y,b]of r.lines.entries()){if(y>0)s.push({kind:"authored",sourceOffset:r.lineStarts[y]-1});if(b.length===0){o.push([]);continue}if(!i||!Number.isFinite(i)||i<=0||on(b,n)<=i){o.push([...b]);continue}const h=Ul(b);const k=bn("text-spans");const x=k&&!je()?na(b,n):void 0;const S=k?(E,R)=>{const w=x?.width(E,R);if(w!==void 0&&Math.abs(w-i)>1e-8*Math.max(1,Math.abs(w),Math.abs(i)))return w<i;return on(h.slice(E,R),n)<=i}:void 0;let g=0;while(g<h.length){let E=g;let R=-1;if(S){while(E<h.length&&S(g,E+1)){if(/\s/u.test(h[E].text))R=E+1;E++}}else{while(E<h.length&&on(h.slice(g,E+1),n)<=i){if(/\s/u.test(h[E].text))R=E+1;E++}}if(E===h.length){o.push(bi(h.slice(g)));break}if(E>g&&!/\s/u.test(h[E-1].text)&&/\s/u.test(h[E]?.text??"")){R=E;while(R<h.length&&/\s/u.test(h[R].text))R++}let w=false;let I;let O;if(R>g){if(h.slice(g,R).some(B=>!/\s/u.test(B.text)))while(R<h.length&&/\s/u.test(h[R].text))R++;E=R;I=E;while(I>g&&/\s/u.test(h[I-1].text))I--;if(I===g)I=E;else O=h.slice(I,E).map(B=>B.text).join("")}else{E=Math.max(g+1,E);const B=V=>/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u.test(h[V-1]?.text??"")&&/\p{L}/u.test(h[V]?.text??"");if(B(E)){while(E>g+1&&on([...h.slice(g,E),hi(h[E-1])],n)>i)E--;w=on([...h.slice(g,E),hi(h[E-1])],n)<=i}}const Y=bi(h.slice(g,I??E));const le=x?.offsets[E]??h[E]?.sourceStart??r.source.length;if(w)Y.push({...hi(h[E-1]),sourceStart:le,sourceEnd:le});o.push(Y);if(E<h.length)s.push({kind:w?"hyphen":"wrap",sourceOffset:le,...O?{replacedText:O}:{}});g=E}if(h.length===0)o.push([])}const a=r.lines.map(y=>y.map(b=>b.text).join("")).join("\n");const c=/\p{M}/u.test(a.normalize("NFD").replace(/[\uFE0E\uFE0F]/g,""))?ne(a.normalize("NFD")).reduce((y,b)=>Math.max(y,(b.replace(/[\uFE0E\uFE0F]/g,"").match(/\p{M}/gu)??[]).length),0):0;const d=n.fontSize*Math.max(Ne,/[\p{Script=Arabic}\p{Script=Hebrew}]/u.test(a)?2.4:0,c?Ne+c*.6:0);const l=o.map((y,b)=>{const h=y.map(g=>r.display==="literal"?g.text:_t(g)).join("");y.forEach(Object.freeze);const k=!/[^\x20-\x7e]/u.test(h);const x=y.some(g=>g.bold||g.italic||g.underline||g.strikethrough);const S=k?(n.letterSpacing??0)!==0?Wl(y,n):x?Vl(y,n):void 0:void 0;return Object.freeze({runs:Object.freeze(y),text:h,width:S?.width??on(y,n),baseline:b*d+n.fontSize*.35,originX:S?.originX??0,...S?{fragments:S.fragments}:{}})});const f=l.map(y=>y.text);Object.freeze(f);s.forEach(Object.freeze);const m=l.reduce((y,b)=>Math.max(y,b.width),0);const u=Object.freeze({unit:"px",prepared:r,text:f.join("\n"),lines:f,lineBlocks:Object.freeze(l),breaks:Object.freeze(s),width:m,height:f.length*d,lineHeight:d,fontSize:n.fontSize,fontWeight:n.fontWeight,letterSpacing:n.letterSpacing??0,monospace:n.monospace??false,safeFont:n.safeFont??false,...n.fontFamily?{fontFamily:n.fontFamily}:{}});mt.add(u);if(t!==void 0)ta.set(t,u,t.length*2+u.prepared.source.length*128+u.lines.length*256+512);return u}function $g(e,n){const t=e?.lineBlocks[n];if(!e||!t)return void 0;if(!ir(e))throw new TypeError("Pixel line projection requires retained preparation");const r=[t.text];Object.freeze(r);const i=Object.freeze({...e,text:t.text,lines:r,lineBlocks:Object.freeze([Object.freeze({...t,baseline:e.fontSize*.35})]),breaks:Object.freeze([]),width:t.width,height:e.lineHeight});mt.add(i);return i}import{decodeXML as Gl}from"entities";function Dn(e){return!e.includes("->")&&!/[#:"\[\],\u0000-\u001f]/.test(e)}function Ig(e,n,t=""){const r=Dn(e)&&Dn(n)?`${e}->${n}`:`relation:${JSON.stringify([e,n])}`;return t?`${t}:${r}`:r}function sa(e,...n){const t=n.map(String);return Dn(e)&&t.every(Dn)?[e,...t].join(":"):`part:${JSON.stringify([e,...t])}`}function Pg(e,n,...t){const r=t.map(String);return Dn(n)&&r.every(Dn)?[e,n,...r].join(":"):`${e}:${JSON.stringify([n,...r])}`}function aa(e,n){const t=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0]??"";const r=a=>{const c=t.match(new RegExp(`\\s${a}="([^"]*)"`))?.[1];return c===void 0?void 0:Gl(c)};const i=(r("class")??"").split(/\s+/).filter(Boolean);const o=r("data-from");const s=r("data-to");return{id:r("data-id")??n.id,role:n.role,...o!==void 0?{from:o}:{},...s!==void 0?{to:s}:{},...i.length>0?{classNames:i}:{}}}function sn(e){return Tn(e).domIdentity}function ca(e,n){if(!sn(n.role))return e;const t=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0];if(!t||t.startsWith("<style")||t.startsWith("<defs")||t.startsWith("<svg"))return e;const r=(o,s,a)=>{const c=j(a);const d=new RegExp(`\\s${s}="[^"]*"`);if(d.test(o))return o.replace(d,` ${s}="${c}"`);const l=o.endsWith("/>")?"/>":">";const f=o.slice(0,-l.length).trimEnd();return`${f} ${s}="${c}"${l==="/>"?" /":""}>`};let i=r(r(t,"data-id",n.id),"data-role",n.role);if(n.from!==void 0)i=r(i,"data-from",n.from);if(n.to!==void 0)i=r(i,"data-to",n.to);return i===t?e:e.replace(t,i)}function N(e,n,t){return!t||Object.hasOwn(e,n)?e[n]:void 0}function Si(e,n){return e?{...e,...N(e,"geometry",n)?{geometry:N(e,"geometry",n)}:{},...N(e,"size",n)?{size:{...N(e,"size",n)}}:{},...N(e,"viewBox",n)?{viewBox:{...N(e,"viewBox",n)}}:{},...N(e,"ref",n)?{ref:{...N(e,"ref",n)}}:{},...N(e,"bounds",n)?{bounds:{...N(e,"bounds",n)}}:{},...N(e,"paint",n)?{paint:{...N(e,"paint",n)}}:{}}:void 0}function da(e,n){const t=N(e,"owner",n);const r=N(e,"point",n);return{...e,...t?{owner:{...t}}:{},...r?{point:{...r}}:{}}}function Yl(e,n,t=false){const r=["continuous-geometry","stroke-width","stroke-cap","stroke-join"];if(e.bendRadius>0)r.push("bend-radius");if(N(n,"opacity",t)!==void 0)r.push("stroke-opacity");if(n.lineJoin==="miter"||n.lineJoin==="miter-clip")r.push("stroke-miter");if(N(n,"dash",t))r.push("dash-pattern");const i=N(n,"dash",t);if(i&&N(i,"offset",t)!==void 0)r.push("dash-offset");if(N(n,"pathLength",t)!==void 0)r.push("path-length");if(N(n,"paintOrder",t)!==void 0)r.push("paint-order");if(/^url\(#[A-Za-z_][A-Za-z0-9_.:-]*\)$/.test(n.color))r.push("gradient-paint");if(N(n,"mixBlendMode",t)!==void 0&&N(n,"mixBlendMode",t)!=="normal")r.push("mix-blend-mode");if(N(n,"nonScaling",t))r.push("non-scaling-stroke");return r}function yt(e,n=false){if(n&&e.geometry.kind==="path")throw new TypeError("Deferred terminal projections require line or polyline geometry");const t=Yl(e.route,e.stroke,n);const r=Hs(e.geometry,e.route.closed);const i=Ks(e.geometry,e.route.closed);const o=N(e.stroke,"dash",n);const s={start:N(e.markers,"start",n)?r.starts.map(a=>({markerId:N(e.markers,"start",n).id,point:{...a.point},contourIndex:a.contourIndex})):[],mid:e.markers.mid.length===0?[]:i.map((a,c)=>({markerId:(e.markers.mid.length===1?e.markers.mid[0]:e.markers.mid[c]).id,point:{...a.point},contourIndex:a.contourIndex})),end:N(e.markers,"end",n)?r.ends.map(a=>({markerId:N(e.markers,"end",n).id,point:{...a.point},contourIndex:a.contourIndex})):[]};return{realization:e.lineStyle==="invisible"?"unsupported":"projected",topology:e.geometry.kind,geometry:e.geometry,direction:e.relationship.direction,relationship:e.relationship.kind,markers:{...N(e.markers,"start",n)?{start:Si(N(e.markers,"start",n),n)}:{},mid:e.markers.mid.map(a=>Si(a,n)),...N(e.markers,"end",n)?{end:Si(N(e.markers,"end",n),n)}:{}},markerPlacements:s,endpoints:{...e.endpoints,...N(e.endpoints,"start",n)?{start:da(N(e.endpoints,"start",n),n)}:{},...N(e.endpoints,"end",n)?{end:da(N(e.endpoints,"end",n),n)}:{}},route:{ownership:e.route.ownership,closed:e.route.closed,bendRadius:e.route.bendRadius,contours:e.route.contours.map(a=>({...a,start:{...a.start},end:{...a.end},...N(a,"startTangent",n)?{startTangent:{...N(a,"startTangent",n)}}:{},...N(a,"endTangent",n)?{endTangent:{...N(a,"endTangent",n)}}:{}})),...N(e.route,"startTangent",n)?{startTangent:{...N(e.route,"startTangent",n)}}:{},...N(e.route,"endTangent",n)?{endTangent:{...N(e.route,"endTangent",n)}}:{},labelAnchors:e.route.labelAnchors.map(a=>({...a}))},stroke:{...e.stroke,...o?{dash:{...o,array:Array.isArray(o.array)?[...o.array]:o.array}}:{}},hit:{...e.hit,geometry:e.hit.geometry},...N(e,"transform",n)?{transform:{...N(e,"transform",n)}}:{},labels:e.labels.map(a=>({...a,...N(a,"anchor",n)?{anchor:{...N(a,"anchor",n)}}:{},...N(a,"bounds",n)?{bounds:{...N(a,"bounds",n)}}:{},...N(a,"halo",n)?{halo:{...N(a,"halo",n)}}:{},...N(a,"paint",n)?{paint:{...N(a,"paint",n)}}:{},...N(a,"visual",n)?{visual:{...N(a,"visual",n)}}:{}})),lineStyle:e.lineStyle,strokeLosses:t,diagnostics:[e.lineStyle==="invisible"?"This connector affects layout but is intentionally absent from terminal output.":`The terminal grid preserves connector semantics while projecting continuous stroke fields: ${t.join(", ")}.`,...N(e,"additionalDiagnostics",n)??[]]}}var jn=new WeakMap;var ki=0;function Bg(e){ki++;try{return e()}finally{ki--}}var or={enumerable:true,configurable:true,get(){const e=jn.get(this);if(Object.hasOwn(e,"projection"))return e.projection;const n=yt(e,true);jn.set(this,{projection:n});return n},set(e){if(Object.isFrozen(this))throw new TypeError("Cannot assign to readonly terminalProjection");Object.defineProperty(this,"terminalProjection",{value:e,enumerable:true,configurable:true,writable:true});jn.delete(this)}};function la(e,n){jn.set(e,n);Object.defineProperty(e,"terminalProjection",or)}function ua(e,n){if(ki===0||n.geometry.kind==="path"||n.additionalDiagnostics!==void 0&&!n.additionalDiagnostics.every(t=>typeof t==="string")){e.terminalProjection=yt(n);return}if(n.additionalDiagnostics)Object.defineProperty(n,"additionalDiagnostics",{value:Object.freeze([...n.additionalDiagnostics])});la(e,Object.freeze(n))}function ht(e){const n=jn.get(e);if(!n||Object.hasOwn(n,"projection"))return void 0;const t=Object.getOwnPropertyDescriptor(e,"terminalProjection");return t?.get===or.get?n:void 0}function fa(e,n,t){const r=jn.get(e);return n==="terminalProjection"&&r&&t.get===or.get?or.get.call(e):void 0}function pa(e,n){const t=ht(e);if(!t)return false;la(n,t);return true}function ma(e,n){const t=[...e].map(o=>o.codePointAt(0));const r=[...n].map(o=>o.codePointAt(0));const i=Math.min(t.length,r.length);for(let o=0;o<i;o++){const s=t[o]-r[o];if(s!==0)return s}return t.length-r.length}function sr(e,n,t){const r=t*Math.PI/180;const i=Math.cos(r);const o=Math.sin(r);const s=e.x-n.x;const a=e.y-n.y;return{x:n.x+s*i-a*o,y:n.y+s*o+a*i}}function ga(e,n,t){if(t%360===0)return{...e};const r=[sr({x:e.x0,y:e.y0},n,t),sr({x:e.x1,y:e.y0},n,t),sr({x:e.x0,y:e.y1},n,t),sr({x:e.x1,y:e.y1},n,t)];return{x0:Math.min(...r.map(i=>i.x)),y0:Math.min(...r.map(i=>i.y)),x1:Math.max(...r.map(i=>i.x)),y1:Math.max(...r.map(i=>i.y))}}function cr(e){if(e.length===0)return void 0;return{x0:Math.min(...e.map(n=>n.x)),y0:Math.min(...e.map(n=>n.y)),x1:Math.max(...e.map(n=>n.x)),y1:Math.max(...e.map(n=>n.y))}}function J(e,n){if(!e)return n;if(!n)return e;return{x0:Math.min(e.x0,n.x0),y0:Math.min(e.y0,n.y0),x1:Math.max(e.x1,n.x1),y1:Math.max(e.y1,n.y1)}}function Bn(e,n){const t=Number.isFinite(n)?Math.max(0,n):0;return{x0:e.x0-t,y0:e.y0-t,x1:e.x1+t,y1:e.y1+t}}function xa(e,n,t){const r=/[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y;let i=0,o=0,s=0,a=0,c=0;let d="",l="";let f;let m;let u;let y=false;const b=S=>{if(t){for(let g=0;g<S;g++)if(!t()){y=true;return false}}return true};const h=()=>{while(i<e.length&&/[\s,]/.test(e[i])){if(!b(1))return;i++}};const k=(S=false)=>{h();if(y)return void 0;if(S){const R=e[i];if(R!=="0"&&R!=="1")return void 0;if(!b(1))return void 0;i++;return Number(R)}r.lastIndex=i;const g=r.exec(e);if(!g)return void 0;if(!b(g[0].length))return void 0;i=r.lastIndex;const E=Number(g[0]);return Number.isFinite(E)?E:void 0};const x=(S,g)=>{if(!Number.isFinite(S)||!Number.isFinite(g))return false;m=J(m,{x0:S,y0:g,x1:S,y1:g});if(n)u=J(u,{x0:S,y0:g,x1:S,y1:g});return true};while(true){h();if(y)return void 0;if(i>=e.length)return m;if(/[a-zA-Z]/.test(e[i])){if(!b(1))return void 0;d=e[i++];if(!/[MmLlHhVvCcSsQqTtAaZz]/.test(d)||!m&&d.toUpperCase()!=="M")return void 0;if(d.toUpperCase()==="Z"){if(n&&!n({bounds:{x0:Math.min(o,a),y0:Math.min(s,c),x1:Math.max(o,a),y1:Math.max(s,c)},line:[{x:o,y:s},{x:a,y:c}]}))return void 0;o=a;s=c;l="Z";f=void 0;d="";continue}}if(!d)return void 0;const S=d.toUpperCase(),g=d!==S;if(n)u={x0:o,y0:s,x1:o,y1:s};const E=S==="A"?7:S==="C"?6:S==="S"||S==="Q"?4:S==="H"||S==="V"?1:2;const R=[];for(let B=0;B<E;B++){const V=k(S==="A"&&(B===3||B===4));if(V===void 0)return void 0;R.push(V)}const w=B=>R[B]+(g?o:0);const I=B=>R[B]+(g?s:0);let O,Y,le;if(S==="H"){O=w(0);Y=s}else if(S==="V"){O=o;Y=I(0)}else if(S==="C"||S==="S"||S==="Q"||S==="T"){const B=f&&(S==="S"?l==="C"||l==="S":l==="Q"||l==="T")?{x:2*o-f.x,y:2*s-f.y}:{x:o,y:s};if((S==="S"||S==="T")&&!x(B.x,B.y))return void 0;for(let V=0;V<E-2;V+=2)if(!x(w(V),I(V+1)))return void 0;O=w(E-2);Y=I(E-1);le=S==="T"?B:{x:w(E-4),y:I(E-3)}}else if(S==="A"){O=w(5);Y=I(6);let B=Math.abs(R[0]),V=Math.abs(R[1]);if(B>0&&V>0&&(O!==o||Y!==s)){const T=R[2]%360*Math.PI/180,_=Math.cos(T),P=Math.sin(T);const ue=(o-O)/2,ee=(s-Y)/2;const Pe=_*ue+P*ee,Ke=-P*ue+_*ee;const Tr=Math.hypot(Pe/B,Ke/V);if(Tr>1){B*=Tr;V*=Tr}const Vi=(Pe/B)**2+(Ke/V)**2;const Ui=(R[3]===R[4]?-1:1)*Math.sqrt(Math.max(0,(1-Vi)/Vi));const Gi=Ui*B*Ke/V,Yi=-Ui*V*Pe/B;const Hi=_*Gi-P*Yi+(o+O)/2;const Ki=P*Gi+_*Yi+(s+Y)/2;const Xi=Math.hypot(B*_,V*P),qi=Math.hypot(B*P,V*_);if(!x(Hi-Xi,Ki-qi)||!x(Hi+Xi,Ki+qi))return void 0}}else{O=w(0);Y=I(1);if(S==="M"){a=O;c=Y;d=g?"l":"L"}}if(!x(O,Y))return void 0;if(n&&S!=="M"&&!n({bounds:u,...["L","H","V"].includes(S)?{line:[{x:o,y:s},{x:O,y:Y}]}:{}}))return void 0;o=O;s=Y;f=le;l=S}}function Xg(e,n,t){return xa(e,n,t)!==void 0}function cn(e){switch(e.kind){case"rect":return{x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height};case"circle":return{x0:e.cx-e.r,y0:e.cy-e.r,x1:e.cx+e.r,y1:e.cy+e.r};case"ellipse":return{x0:e.cx-e.rx,y0:e.cy-e.ry,x1:e.cx+e.rx,y1:e.cy+e.ry};case"line":return{x0:Math.min(e.x1,e.x2),y0:Math.min(e.y1,e.y2),x1:Math.max(e.x1,e.x2),y1:Math.max(e.y1,e.y2)};case"polygon":case"polyline":return cr(e.points);case"compound":{let n;for(const t of e.children){const r=cn(t);if(!r)return void 0;n=J(n,r)}return n}case"path":return xa(e.d)}}function an(e,n,t,r=false,i){if(!e||!n)return void 0;const o=e.geometry?cn(e.geometry):void 0;if(r&&e.geometry&&!o)return void 0;let s=e.bounds??o??(e.viewBox?{x0:e.viewBox.x,y0:e.viewBox.y,x1:e.viewBox.x+e.viewBox.width,y1:e.viewBox.y+e.viewBox.height}:void 0)??(e.size?{x0:0,y0:0,x1:e.size.width,y1:e.size.height}:void 0);if(!s)return void 0;if(r){s=J(s,o);const b=zn(e.paint??{},true);if(b===void 0)return void 0;s=Bn(s,b)}let a=e.ref?.x??0;let c=e.ref?.y??0;let d=s;if(e.viewBox&&e.size){const b=Math.min(e.size.width/e.viewBox.width,e.size.height/e.viewBox.height);const h=(e.size.width-e.viewBox.width*b)/2;const k=(e.size.height-e.viewBox.height*b)/2;const x=g=>h+(g-e.viewBox.x)*b;const S=g=>k+(g-e.viewBox.y)*b;d={x0:x(s.x0),y0:S(s.y0),x1:x(s.x1),y1:S(s.y1)};a=x(a);c=S(c)}const l=(e.units??"strokeWidth")==="strokeWidth"?t:1;const f=Math.max(r?1:0,e.scale??1)*l;if(i!==void 0){const b=i*Math.PI/180,h=Math.cos(b),k=Math.sin(b);const x=[[d.x0,d.y0],[d.x0,d.y1],[d.x1,d.y0],[d.x1,d.y1]].map(([S,g])=>({x:n.x+((S-a)*h-(g-c)*k)*f,y:n.y+((S-a)*k+(g-c)*h)*f}));return x.every(S=>Number.isFinite(S.x)&&Number.isFinite(S.y))?cr(x):void 0}const m=Math.max(Math.abs(d.x0-a),Math.abs(d.x1-a));const u=Math.max(Math.abs(d.y0-c),Math.abs(d.y1-c));const y=(r?Math.hypot(m,u):Math.max(m,u))*f;return{x0:n.x-y,y0:n.y-y,x1:n.x+y,y1:n.y+y}}function qg(e,n){const t=typeof e.orient==="number"?e.orient:n==="start"&&e.orient==="auto-start-reverse"?180:0;const r=an(e,{x:0,y:0},1,true,t);if(!r)throw new TypeError(`Unmeasured terminal marker ${e.id}`);return Math.max(0,n==="start"?r.x1:-r.x0)}function Jg(e,n){const t=e.route.geometry,r=In(t,e.route.closed);const i=Pn(t,e.route.closed);const o=ka(n,e.transform);const s=[];const a=(c,d,l,f)=>{if(!d||!l)return;const m=typeof d.orient==="number"?d.orient:f?Math.atan2(f.y,f.x)*180/Math.PI+(c==="start"&&d.orient==="auto-start-reverse"?180:0):void 0;const u=ar(e.stroke.width);const y=an(d,l,u,true,m);const b=de(o);const h=JSON.stringify([{...d,orient:d.orient??"auto"},m??["unknown",t],d.units==="userSpaceOnUse"?1:u,b.slice(0,4)]);let k,x;if(m!==void 0&&d.geometry?.kind==="polygon"&&d.geometry.points.length<=64){const S=d.viewBox&&d.size?Math.min(d.size.width/d.viewBox.width,d.size.height/d.viewBox.height):1;const g=S*Math.max(1,d.scale??1)*(d.units==="userSpaceOnUse"?1:u);const E=m*Math.PI/180,R=Math.cos(E),w=Math.sin(E);k=d.geometry.points.map(T=>{const _=(T.x-(d.ref?.x??0))*g,P=(T.y-(d.ref?.y??0))*g;return Ee({x:l.x+_*R-P*w,y:l.y+_*w+P*R},b)});const[I,O,Y,le]=b;const B=(Math.hypot(I+le,O-Y)+Math.hypot(I-le,O+Y))/2;const V=zn(d.paint??{},true);x=V===void 0?void 0:V*g*B;if(x===void 0||!Number.isFinite(x)||!k.every(T=>Number.isFinite(T.x)&&Number.isFinite(T.y)))k=void 0}s.push({position:c,resource:d.id,anchor:Ee(l,b),repaint:h,...k?{hull:k,padding:x}:{},...y?{bounds:Ge(y,o)}:{}})};r.starts.forEach((c,d)=>a("start",e.markers.start,c,e.route.contours[d]?.startTangent));r.ends.forEach((c,d)=>a("end",e.markers.end,c,e.route.contours[d]?.endTangent));if(e.markers.mid.length===1)for(const c of i)a("mid",e.markers.mid[0],c);else e.markers.mid.forEach((c,d)=>a("mid",c,i[d]));return s}function ar(e){const n=typeof e==="number"?e:parseFloat(e);return Number.isFinite(n)?Math.max(0,n):1}function Hl(e){const n=e.route.geometry;let t=n.kind==="path"?cr(n.points):cn(n);if(!t)return void 0;const r=ar(e.stroke.width);const i=r/2;const o=e.stroke.lineJoin==="miter"||e.stroke.lineJoin==="miter-clip"?i*Math.max(1,e.stroke.miterLimit):i;t=Bn(t,o);const s=In(n,e.route.closed);for(const c of s.starts)t=J(t,an(e.markers.start,c,r));for(const c of s.ends)t=J(t,an(e.markers.end,c,r));const a=Pn(n,e.route.closed);if(e.markers.mid.length===1){for(const c of a)t=J(t,an(e.markers.mid[0],c,r))}else{for(let c=0;c<e.markers.mid.length;c++){t=J(t,an(e.markers.mid[c],a[c],r))}}for(const c of e.labels){if(c.bounds)t=J(t,c.bounds);t=J(t,Sa(c))}return t}var ya=new WeakMap;function bt(e){const n=rt(e.text,e.textContent);const t=typeof n==="string"?n:n.source;if(e.block){const d=e.block;if(d.prepared.source!==t||e.fontSize!==void 0&&e.fontSize!==d.fontSize||e.fontWeight!==void 0&&e.fontWeight!==d.fontWeight||e.letterSpacing!==void 0&&e.letterSpacing!==d.letterSpacing||e.display!==void 0&&e.display!==d.prepared.display){throw new TypeError("Connector inline label typography and source must agree with its prepared block")}return d}const r=e.fontSize??12;const i=e.fontWeight??400;const o=e.letterSpacing??0;const s=e.display??"literal";const a=ya.get(e);if(a&&(typeof n==="string"?a.prepared.source===t:a.prepared===n)&&a.fontSize===r&&a.fontWeight===i&&a.letterSpacing===o&&a.prepared.display===s)return a;const c=gt(n,{display:s,fontSize:r,fontWeight:i,letterSpacing:o});ya.set(e,c);return c}function Sa(e){if(e.visual?.kind!=="inline"||!e.anchor||e.fontSize===void 0||e.textAnchor===void 0)return void 0;const n=bt(e);const t=n.width;const r=e.textAnchor==="middle"?e.anchor.x-t/2:e.textAnchor==="end"?e.anchor.x-t:e.anchor.x;const i=e.anchor.y-Math.max(0,e.clearance??0);const o=Math.max(0,e.halo?.width??0)/2;return Bn({x0:r,y0:i-n.fontSize*.35-n.height/2,x1:r+t,y1:i-n.fontSize*.35+n.height/2},o)}function Ei(e){let n;if(e.kind==="shape")n=cn(e.geometry);else if(e.kind==="connector")n=Hl(e);else if(e.kind==="text"){const t=e.textLayout??gt(e.text,{display:e.display,fontSize:e.fontSize,fontWeight:e.fontWeight??500,letterSpacing:e.letterSpacing});const r=t.width;const i=e.anchor==="middle"?e.x-r/2:e.anchor==="end"?e.x-r:e.x;const o="offsetY"in t?t.offsetY:-e.fontSize*.35;n={x0:i,y0:e.y+o-t.height/2,x1:i+r,y1:e.y+o+t.height/2}}else return void 0;return n?Ge(n,e.transform):void 0}function Ge(e,n){if(![e.x0,e.y0,e.x1,e.y1].every(Number.isFinite))return void 0;if(!n)return e;if(n.kind==="rotate")return ga(e,{x:n.cx,y:n.cy},n.angle);const t=de(n);const r=e.x0,i=e.y0,o=e.x0,s=e.y1,a=e.x1,c=e.y0,d=e.x1,l=e.y1;if(t[0]===1&&t[1]===0&&t[2]===0&&t[3]===1&&r===o&&i===c&&a===d&&s===l&&r!==0&&i!==0&&a!==0&&s!==0&&Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(a)&&Number.isFinite(s)){const m=Ee({x:r,y:i},t),u=Ee({x:d,y:l},t);return Number.isFinite(m.x)&&Number.isFinite(m.y)&&Number.isFinite(u.x)&&Number.isFinite(u.y)?{x0:Math.min(m.x,u.x),y0:Math.min(m.y,u.y),x1:Math.max(m.x,u.x),y1:Math.max(m.y,u.y)}:void 0}const f=[[r,i],[o,s],[a,c],[d,l]].map(([m,u])=>Ee({x:m,y:u},t));return f.every(m=>Number.isFinite(m.x)&&Number.isFinite(m.y))?cr(f):void 0}function ka(e,n){if(!e)return n;if(!n)return e;const[t,r,i,o,s,a]=rn(de(e),de(n));return{kind:"matrix",a:t,b:r,c:i,d:o,e:s,f:a}}function Kl(e){return e.geometry.kind!=="line"&&!(e.geometry.kind==="polyline"&&e.geometry.points.length===2&&!e.closed)}function zn(e,n){if(e.stroke===void 0||e.stroke==="none"||e.stroke==="transparent"||ie(e.stroke)?.[3]===0)return 0;const t=e.strokeWidth??"1";if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?(?:px)?\s*$/.test(t))return void 0;const r=Number.parseFloat(t)/2;if(!Number.isFinite(r))return void 0;const i=e.strokeLinejoin??"miter";const o=Number(e.strokeMiterlimit??4);if(!Number.isFinite(o)||o<1)return void 0;const s=n&&(i==="miter"||i==="miter-clip")?r*o:r;const a=Math.max(s,e.strokeLinecap==="square"?r*Math.SQRT2:r);return Number.isFinite(a)?a:void 0}function Ci(e,n,t,r){if(!t)return Ge(Bn(e,n),r);const i=Ge(e,r);return i?Bn(i,n):void 0}function Xl(e,n,t){const r=cn(e);const i=Math.hypot(e.x2-e.x1,e.y2-e.y1);if(t!==void 0&&t!=="butt"||i===0)return Bn(r,n);const o=n*Math.abs(e.y2-e.y1)/i,s=n*Math.abs(e.x2-e.x1)/i;return{x0:r.x0-o,y0:r.y0-s,x1:r.x1+o,y1:r.y1+s}}function ha(e,n,t,r,i,o){return e.kind==="line"&&!i?Ge(Xl(e,t,r),o):Ci(n,t,i,o)}function ql(e,n){if(!/^[\s,0-9eE.+\-MC]+$/.test(e))return void 0;const t=e.match(/[MC]|[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g);if(!t||t.length!==10||t[0]!=="M"||t[3]!=="C")return void 0;const r=t.filter(k=>k!=="M"&&k!=="C").map(Number);if(!r.every(Number.isFinite))return void 0;const[i,o,s,a,c,d,l,f]=r;if(s!==c||a!==o||d!==f||!((s-i)*(l-s)>0))return void 0;const m=Math.abs(s-i),u=Math.abs(l-s),y=Math.abs(f-o),b=Math.sign(l-i);const h=[i-b*ba(u,m,y,n),l+b*ba(m,u,y,n)];return{x0:Math.min(...h),y0:Math.min(o,f)-n,x1:Math.max(...h),y1:Math.max(o,f)+n}}function ba(e,n,t,r){const i=32;let o=0;for(let s=0;s<i;s++){const a=s/i,c=(s+1)/i;const d=y=>Math.min(c,Math.max(a,y));const l=y=>3*(e*(1-y)**2+n*y*y);const f=y=>e*(1-y)**2+n*(1+y+y*y);const m=6*t*Math.min(a*(1-a),c*(1-c));const u=6*r*t*c/Math.hypot(l(d(e/(e+n))),m)-f(d((2*e-n)/(2*(e+n))));if(u>0)o=Math.max(o,(1-a)*u)}return Math.min(r,o)}function Jl(e,n){const t=e.route.geometry;const r=cn(t);const i=zn({stroke:e.stroke.color,strokeWidth:String(e.stroke.width),strokeLinecap:e.stroke.lineCap,strokeLinejoin:e.stroke.lineJoin,strokeMiterlimit:String(e.stroke.miterLimit)},Kl(e.route));if(!r||i===void 0)return void 0;const o=t.kind==="path"&&e.stroke.lineCap==="butt"&&!e.stroke.nonScaling?ql(t.d,ar(e.stroke.width)/2):void 0;let s=o?Ge(o,n):Ci(r,i,e.stroke.nonScaling,n);if(!s)return void 0;const a=ar(e.stroke.width);const c=In(t,e.route.closed);const d=Pn(t,e.route.closed);const l=[...c.starts.flatMap(f=>e.markers.start?[{marker:e.markers.start,anchor:f}]:[]),...c.ends.flatMap(f=>e.markers.end?[{marker:e.markers.end,anchor:f}]:[]),...e.markers.mid.length===1?d.map(f=>({marker:e.markers.mid[0],anchor:f})):e.markers.mid.map((f,m)=>({marker:f,anchor:d[m]}))];for(const{marker:f,anchor:m}of l){const u=an(f,m,a,true);const y=u&&Ge(u,n);if(!y)return void 0;s=J(s,y)}for(const f of e.labels){const m=J(f.bounds,Sa(f));if(f.visual?.kind==="inline"&&!m)return void 0;if(m){const u=Ge(m,n);if(!u)return void 0;s=J(s,u)}}return s}function Zg(e,n){return Ea(e,n)}function Ea(e,n){const t=ka(n,e.transform);if(t&&!rr(de(t)))return void 0;let r;if(e.kind==="shape"){r=cn(e.geometry);if(!r)return void 0;const i=["polygon","polyline","path","compound"].includes(e.geometry.kind);let o;for(const c of[e.paint,...e.childPaints??[]]){const d=zn(c,i);const l=d===void 0?void 0:ha(e.geometry,r,d,c.strokeLinecap,c.vectorEffect==="non-scaling-stroke",t);if(!l)return void 0;o=o?J(o,l):l}if(!e.conditionalPaint)return o;const s=zn(e.conditionalPaint,["polygon","polyline","path","compound"].includes(e.geometry.kind));if(!o||s===void 0)return void 0;const a=ha(e.geometry,r,s,e.conditionalPaint.strokeLinecap,e.conditionalPaint.vectorEffect==="non-scaling-stroke",t);return a?J(o,a):void 0}else if(e.kind==="connector"){return Jl(e,t)}else if(e.kind==="text"){r=Ei({...e,transform:void 0});const i=zn(e.paint,false);if(!r||i===void 0)return void 0;return Ci(r,i,e.paint.vectorEffect==="non-scaling-stroke",t)}else if(e.kind==="group"){for(const i of e.children){if(i.node.kind==="document"&&i.node.nonPaint)continue;const o=Ea(i.node,t);if(!o)return void 0;r=J(r,o)}}else return void 0;return r}var Ln=class{value="";raw(n){this.value+=n}attribute(n,t){this.value+=` ${n}="${typeof t==="number"?U(t):j(nt(n,t))}"`}};var dr=new Set(["id","role","from","to","relationship","direction","prepared-text","font-metrics","text-fragment","connector-label-for"]);var lr=/^[A-Za-z0-9_-]+(?: [A-Za-z0-9_-]+)*$/;var ur=/^[a-z][a-z0-9-]*$/;function wi(e,n){if(!n)return;if(n.className)e.attribute("class",n.className);if(n.data)for(const t of Object.keys(n.data))e.attribute(`data-${t}`,n.data[t]);if(n.ariaHidden)e.attribute("aria-hidden","true");if(n.tabIndex===0)e.attribute("tabindex",0);if(n.ariaLabel!==void 0)e.attribute("aria-label",n.ariaLabel)}function Ti(e,n){if(n.fill!==void 0)e.attribute("fill",n.fill);if(n.fillOpacity!==void 0)e.attribute("fill-opacity",n.fillOpacity);if(n.stroke!==void 0)e.attribute("stroke",n.stroke);if(n.strokeOpacity!==void 0)e.attribute("stroke-opacity",n.strokeOpacity);if(n.strokeWidth!==void 0)e.attribute("stroke-width",n.strokeWidth);if(n.strokeDasharray!==void 0)e.attribute("stroke-dasharray",n.strokeDasharray);if(n.strokeDashoffset!==void 0)e.attribute("stroke-dashoffset",n.strokeDashoffset);if(n.strokeLinecap!==void 0)e.attribute("stroke-linecap",n.strokeLinecap);if(n.strokeLinejoin!==void 0)e.attribute("stroke-linejoin",n.strokeLinejoin);if(n.strokeMiterlimit!==void 0)e.attribute("stroke-miterlimit",n.strokeMiterlimit);if(n.vectorEffect!==void 0)e.attribute("vector-effect",n.vectorEffect);if(n.paintOrder!==void 0)e.attribute("paint-order",n.paintOrder);if(n.opacity!==void 0)e.attribute("opacity",n.opacity)}function fr(e,n){if(n)e.attribute("transform",qs(n))}function Ri(e,n,t){if(n&&sn(n.role)){e.attribute("data-id",n.id);e.attribute("data-role",n.role);if(n.from!==void 0)e.attribute("data-from",n.from);if(n.to!==void 0)e.attribute("data-to",n.to)}if(t){e.attribute("role",t.role);e.attribute("aria-roledescription",t.roleDescription);e.attribute("aria-label",t.label)}}function Ca(e,n){switch(n.kind){case"rect":e.attribute("x",n.x);e.attribute("y",n.y);e.attribute("width",n.width);e.attribute("height",n.height);if(n.rx!==void 0)e.attribute("rx",n.rx);if(n.ry!==void 0)e.attribute("ry",n.ry);return;case"circle":e.attribute("cx",n.cx);e.attribute("cy",n.cy);e.attribute("r",n.r);return;case"ellipse":e.attribute("cx",n.cx);e.attribute("cy",n.cy);e.attribute("rx",n.rx);e.attribute("ry",n.ry);return;case"line":e.attribute("x1",n.x1);e.attribute("y1",n.y1);e.attribute("x2",n.x2);e.attribute("y2",n.y2);return;case"polygon":case"polyline":{let t="";for(let r=0;r<n.points.length;r++){const i=n.points[r];t+=`${r?" ":""}${i.x},${i.y}`}e.attribute("points",t);return}case"path":e.attribute("d",n.d)}}function wa(e){const n=new Ln;const t=e.geometry.kind==="compound";const r=e.geometry.kind==="compound"?e.geometry.children:[e.geometry];for(let i=0;i<r.length;i++){const o=r[i];if(o.kind==="compound")throw new TypeError(`Shape "${e.id}" nests compound geometry`);if(i)n.raw("\n");n.raw(`<${o.kind}`);if(i===0)wi(n,e.attributes);Ca(n,o);Ti(n,t?e.childPaints?.[i]??e.paint:e.paint);fr(n,e.transform);if(i===0)Ri(n,e.identity,e.accessibility);n.raw(" />")}return n.value}function Zl(e,n){e.attribute("text-anchor",n.anchor);if(n.dominantBaseline)e.attribute("dominant-baseline",n.dominantBaseline);if(n.block?.fontFamily)e.attribute("font-family",n.block.fontFamily);e.attribute("font-size",n.fontSize);e.attribute("font-weight",n.fontWeight??n.block?.fontWeight??400);if((n.letterSpacing??0)!==0)e.attribute("letter-spacing",n.letterSpacing);if(n.fontStyle)e.attribute("font-style",n.fontStyle);if(n.textDecoration)e.attribute("text-decoration",n.textDecoration)}function Ta(e){const n=new Ln;wi(n,e.attributes);Zl(n,e);Ti(n,e.paint);fr(n,e.transform);Ri(n,e.identity,e.accessibility);const t=n.value.slice(1);const r=e.measurement==="prepared"&&e.block;const i=zr(r?e.block:e.text,e.x,e.y,e.fontSize,t,e.baselineShift??.35,e.display==="literal");if(!e.spans)return i;const o=r?e.block.text:e.text;const s=`>${ae(o)}</text>`;if(!i.endsWith(s))throw new TypeError(`Text "${e.id}" spans require a one-line label`);let a="";for(const c of e.spans)a+=`<tspan fill="${j(c.fill)}">${ae(c.text)}</tspan>`;return`${i.slice(0,-s.length)}>${a}</text>`}function Ql(e,n,t){if(n.visual?.kind!=="inline")return void 0;if(!n.anchor||!n.paint||n.fontSize===void 0||n.textAnchor===void 0){throw new TypeError(`Connector "${e.id}" inline label ${t+1} requires anchor, paint, fontSize, and textAnchor`)}const r=bt(n);const i={...n.paint,...n.halo?{stroke:n.halo.color??"var(--bg)",strokeWidth:String(n.halo.width),paintOrder:"stroke fill"}:{}};const o=new Ln;o.attribute("data-id",n.id??`${e.id}-label-${t+1}`);o.attribute("data-role","label");o.attribute("data-connector-label-for",e.id);o.attribute("font-size",r.fontSize);o.attribute("font-weight",r.fontWeight);if(r.letterSpacing)o.attribute("letter-spacing",r.letterSpacing);o.attribute("text-anchor",n.textAnchor);fr(o,e.transform);Ti(o,i);return zr(r,n.anchor.x,n.anchor.y-Math.max(0,n.clearance??0),r.fontSize,o.value.slice(1),0)}function Ra(e){const n=new Ln;const{stroke:t,markers:r}=e;const i=t.dash;const o=r.mid[0];if(e.lineStyle!=="invisible"){const s=e.route.geometry;n.raw(`<${s.kind}`);wi(n,e.attributes);Ca(n,s);if(s.kind!=="line")n.attribute("fill","none");n.attribute("stroke",t.color);if(t.opacity!==void 0)n.attribute("stroke-opacity",t.opacity);n.attribute("stroke-width",t.width);if(i)n.attribute("stroke-dasharray",typeof i.array==="string"?i.array:i.array.join(" "));if(i?.offset!==void 0)n.attribute("stroke-dashoffset",i.offset);if(t.lineCap!=="butt")n.attribute("stroke-linecap",t.lineCap);if(t.lineJoin!=="miter")n.attribute("stroke-linejoin",t.lineJoin);if(t.miterLimit!==4)n.attribute("stroke-miterlimit",t.miterLimit);if(t.pathLength!==void 0)n.attribute("pathLength",t.pathLength);if(t.paintOrder!==void 0)n.attribute("paint-order",t.paintOrder);if(t.nonScaling)n.attribute("vector-effect","non-scaling-stroke");if(t.mixBlendMode)n.attribute("style",`mix-blend-mode:${t.mixBlendMode}`);if(r.start)n.attribute("marker-start",`url(#${r.start.id})`);if(o)n.attribute("marker-mid",`url(#${o.id})`);if(r.end)n.attribute("marker-end",`url(#${r.end.id})`);if(e.hit.pointerEvents==="none")n.attribute("pointer-events","none");fr(n,e.transform);n.attribute("data-relationship",e.relationship.kind);n.attribute("data-direction",e.relationship.direction);Ri(n,e.identity,e.accessibility);n.raw(" />")}for(let s=0;s<e.labels.length;s++){const a=Ql(e,e.labels[s],s);if(a!==void 0){if(n.value)n.raw("\n");n.raw(a)}}return n.value}function oy(e,n,t,r,i){const o=eu(i,t/2,r);if(o===0)return`M${e},${n} H${e+t} V${n+r} H${e} Z`;return[`M${e+o},${n}`,`H${e+t-o}`,`A${o},${o} 0 0 1 ${e+t},${n+o}`,`V${n+r}`,`H${e}`,`V${n+o}`,`A${o},${o} 0 0 1 ${e+o},${n}`,"Z"].join(" ")}function eu(e,n,t){return Math.max(0,Math.min(e,n,t))}var Fn=new WeakMap;var Wn=new WeakSet;var Na=new WeakMap;var Ni=/<\s*text/i;function nu(e){const n=e.match(/^<([A-Za-z_][A-Za-z0-9_.:-]*)/);if(!n||e.startsWith("</")||e.startsWith("<!")||e.startsWith("<?"))return e;const t=n[1];if(t!=="svg")return e;const r=/\/\s*>$/.test(e);const i=r?e.lastIndexOf("/"):e.length-1;const o=[];let s=n[0].length;while(s<i){while(/\s/.test(e[s]??""))s++;if(s>=i)break;const d=e.slice(s).match(/^([^\s=<>/]+)/);if(!d)return e;const l=d[1];s+=d[0].length;while(/\s/.test(e[s]??""))s++;if(e[s]!=="=")return e;s++;while(/\s/.test(e[s]??""))s++;const f=e[s];if(f!=='"'&&f!=="'")return e;s++;const m=s;while(s<i&&e[s]!==f)s++;if(e[s]!==f)return e;const u=e.slice(m,s);s++;o.push({name:l,value:f==='"'?u:u.replaceAll('"',"""),index:o.length})}const a=new Map([["xmlns",0],["width",1],["height",2],["viewBox",3],["style",4]]);o.sort((d,l)=>{const f=a.get(d.name)??100;const m=a.get(l.name)??100;return f-m||ma(d.name,l.name)||d.index-l.index});const c=o.map(d=>`${d.name}="${d.value}"`).join(" ");return`<${t}${c?` ${c}`:""}${r?" /":""}>`}function Ce(e){if(!e.includes("<svg"))return e;let n="";let t=0;while(t<e.length){const r=e.indexOf("<",t);if(r<0)return n+e.slice(t);n+=e.slice(t,r);if(e.startsWith("<!--",r)){const s=e.indexOf("-->",r+4);if(s<0)return n+e.slice(r);n+=e.slice(r,s+3);t=s+3;continue}let i;let o=r+1;for(;o<e.length;o++){const s=e[o];if(i){if(s===i)i=void 0}else if(s==='"'||s==="'"){i=s}else if(s===">"){break}}if(o>=e.length)return n+e.slice(r);n+=nu(e.slice(r,o+1));t=o+1}return n}function Vn(e,n){if(e.kind!=="document")throw new TypeError(`Scene ${e.kind} "${e.id}" is written from its fields, not stored markup`);Fn.set(e,Ce(n));return e}function xt(e){Wn.add(e);return e}function z(e){const n=Fn.get(e);if(n!==void 0)return n;if(!Wn.has(e))throw new TypeError(`Scene node "${e.id}" has no admitted SVG serialization`);const t=Na.get(e);if(t!==void 0)return t;const r=tu(e);if(e.kind!=="group"&&Object.isFrozen(e))Na.set(e,r);return r}function tu(e){switch(e.kind){case"shape":return wa(e);case"text":return Ta(e);case"connector":return Ra(e);case"group":return[e.open,...e.children.map(n=>St(z(n.node),n.indent)),e.close].join(e.join);case"document":throw new TypeError(`Scene node "${e.id}" has no admitted SVG serialization`)}}function St(e,n){if(n<=0||e==="")return e;const t=" ".repeat(n);return t+e.replace(/\n/g,`
|
|
49
|
-
${t}`)}function kt(e,n){const t=Fn.get(e);if(t!==void 0)Fn.set(n,t);if(Wn.has(e))Wn.add(n)}function $a(e){return Fn.has(e)||Wn.has(e)}function dy(e){const n=t=>{if(t.kind==="document"){const r=Fn.get(t);return r!==void 0&&!Ni.test(r)}if(!Wn.has(t))return false;switch(t.kind){case"text":return t.measurement==="prepared"&&t.block!==void 0;case"shape":return true;case"connector":return true;case"group":return!Ni.test(t.open)&&!Ni.test(t.close)&&t.children.every(r=>n(r.node))}};return e.parts.every(n)}var ru=2;var G=Object.freeze({maxExtent:1e6,maxNodes:1e5,maxDepth:64,maxTextLength:1e6,maxTextBytes:2e6,maxPoints:5e4,maxSerializationBytesPerNode:5e6,maxAggregateSerializationBytes:16e6,maxFinalSvgBytes:8e6});var Z=class extends Error{constructor(t){super(`Scene validation failed: ${t.map(r=>`${r.path}: ${r.message}`).join("; ")}`);this.diagnostics=t;this.name="SceneValidationError"}diagnostics;code="SCENE_VALIDATION_FAILED"};var gr=G.maxExtent;var W=G.maxNodes;var Gn=G.maxDepth;var dn=G.maxTextLength;var pr=G.maxTextBytes;var Yn=G.maxPoints;var yr=G.maxSerializationBytesPerNode;var iu=G.maxAggregateSerializationBytes;var mr=G.maxFinalSvgBytes;var ou=/^[A-Za-z0-9][A-Za-z0-9_.:/-]*$/;var _i=/^[a-z0-9][a-z0-9._/-]*:[a-z0-9][a-z0-9._/-]*$/i;var Aa=/^(?:none|[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?(?:[\s,]+[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)*)$/;var su=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/;var au=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)(?:px)?$/;var cu=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)$/;var du=/^var\(--[a-z0-9_-]+(?:,\s*[-+]?\d*\.?\d+)?\)$/i;var lu="MmLlHhVvCcSsQqTtAaZz";var uu=Object.freeze({M:2,m:2,L:2,l:2,H:1,h:1,V:1,v:1,C:6,c:6,S:4,s:4,Q:4,q:4,T:2,t:2,A:7,a:7,Z:0,z:0});var $i=/[-+]?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+))(?:[eE][-+]?\d+)?/y;var fu=["fill","stroke","strokeWidth","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","vectorEffect","paintOrder","opacity"];function hr(e,n="final SVG"){if(typeof e!=="string")throw new TypeError(`${n} must be a string`);if(e.length*3<=mr)return;if(!ze("final-svg-budget",e,()=>te(e,mr)<=mr)){throw new RangeError(`${n} exceeds the ${mr}-byte final SVG limit`)}}function C(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function p(e,n,t,r){e.push({code:n,path:t,message:r})}function Q(e,n,t,r){const i=new Set(n);for(const o of Object.keys(e)){if(!i.has(o))p(r,"SCENE_DOCUMENT",`${t}.${o}`,"is not part of the external Scene contract")}}function pu(e,n=false){let t=0;let r;let i=false;let o=0;const s=()=>{while(t<e.length&&(e[t]===","||/\s/.test(e[t])))t++};const a=()=>{const d=e[t];return d!==void 0&&lu.includes(d)?d:void 0};const c=()=>{s();$i.lastIndex=t;const d=$i.exec(e);if(!d)return"expected a numeric path parameter";t=$i.lastIndex;const l=Number(d[0]);if(!Number.isFinite(l))return`path parameter ${d[0]} is not finite`;if(Math.abs(l)>gr)return`path parameter ${d[0]} exceeds ${gr} user units`;return void 0};while(true){s();if(t>=e.length)break;const d=a();if(d!==void 0){r=d;t++;if(!i&&r!=="M"&&r!=="m"){return"must start with an M or m moveto command"}if(i&&n&&(r==="M"||r==="m")){return"multiple moveto subpaths require typed subpath geometry"}i=true;if(r==="Z"||r==="z"){r=void 0;continue}}else if(r===void 0){return"path parameters must follow a command"}const l=uu[r];if(l===void 0||l===0)return`unknown path command ${String(r)}`;let f=0;while(true){s();if(t>=e.length||a()!==void 0){if(f===0)return`command ${r} requires ${l} parameters`;break}for(let m=0;m<l;m++){s();if(t>=e.length||a()!==void 0){return`command ${r} ended before its ${l}-parameter group was complete`}if((r==="A"||r==="a")&&(m===3||m===4)){const u=e[t];if(u!=="0"&&u!=="1")return`command ${r} arc flags must be 0 or 1`;t++}else{const u=c();if(u)return u}}f++;if(++o>Yn)return`contains more than ${Yn} path parameter groups`}}return i?void 0:"must contain an M or m moveto command"}function $(e,n,t,r={}){if(typeof e!=="number"||!Number.isFinite(e)){p(t,"SCENE_FINITE",n,"must be a finite number");return false}if(r.positive&&e<=0)p(t,"SCENE_BOUNDS",n,"must be positive");if(r.nonNegative&&e<0)p(t,"SCENE_BOUNDS",n,"must be non-negative");if(Math.abs(e)>gr)p(t,"SCENE_BOUNDS",n,`must not exceed ${gr} user units`);return true}function H(e,n,t,r={}){if(typeof e!=="string"){p(t,"SCENE_ID",n,"must be a string");return false}if(!r.empty&&e.length===0)p(t,"SCENE_ID",n,"must not be empty");if(e.length>(r.max??256))p(t,"SCENE_ID",n,"is too long");if(su.test(e))p(t,"SCENE_ID",n,"contains a control character");if(r.externalId&&!ou.test(e))p(t,"SCENE_ID",n,"must use the safe external id grammar");return true}function me(e,n,t,r={}){if(e===void 0)return;if(typeof e!=="string"&&typeof e!=="number"){p(t,"SCENE_PAINT",n,"must be a finite numeric value");return}const i=typeof e==="string"?e.trim():void 0;const o=i?.match(r.length?au:cu);const s=typeof e==="number"?e:o?Number(o[1]):Number.NaN;if(!Number.isFinite(s)){if(typeof e==="string"&&du.test(e.trim()))return;p(t,"SCENE_PAINT",n,`must be a finite number or safe numeric custom-property reference (received ${JSON.stringify(e)})`)}else if(r.nonNegative&&s<0){p(t,"SCENE_PAINT",n,"must be non-negative")}else if(r.unitInterval&&(s<0||s>1)){p(t,"SCENE_PAINT",n,"must be in [0,1]")}}function Ye(e,n,t,r=false){if(!C(e)){p(t,"SCENE_PAINT",n,"must be a paint object");return}if(r)Q(e,fu,n,t);for(const i of["fill","stroke"]){const o=e[i];const s=br(o);if(o!==void 0&&ce(o)===void 0&&(r||!s)){p(t,"SCENE_PAINT",`${n}.${i}`,"must be a safe non-fetching CSS paint")}}me(e.strokeWidth,`${n}.strokeWidth`,t,{nonNegative:true,length:true});me(e.strokeDashoffset,`${n}.strokeDashoffset`,t,{length:true});me(e.strokeMiterlimit,`${n}.strokeMiterlimit`,t,{nonNegative:true});me(e.opacity,`${n}.opacity`,t,{unitInterval:true});me(e.fillOpacity,`${n}.fillOpacity`,t,{unitInterval:true});me(e.strokeOpacity,`${n}.strokeOpacity`,t,{unitInterval:true});if(e.strokeDasharray!==void 0&&(typeof e.strokeDasharray!=="string"||!Aa.test(e.strokeDasharray.trim()))){p(t,"SCENE_PAINT",`${n}.strokeDasharray`,'must be "none" or a finite numeric dash list')}if(e.strokeLinecap!==void 0&&!["butt","round","square"].includes(String(e.strokeLinecap))){p(t,"SCENE_PAINT",`${n}.strokeLinecap`,"must be butt, round, or square")}if(e.strokeLinejoin!==void 0&&!["arcs","bevel","miter","miter-clip","round"].includes(String(e.strokeLinejoin))){p(t,"SCENE_PAINT",`${n}.strokeLinejoin`,"must be arcs, bevel, miter, miter-clip, or round")}if(e.vectorEffect!==void 0&&!["none","non-scaling-stroke"].includes(String(e.vectorEffect))){p(t,"SCENE_PAINT",`${n}.vectorEffect`,"must be none or non-scaling-stroke")}if(e.paintOrder!==void 0){const i=typeof e.paintOrder==="string"?e.paintOrder.trim().split(/\s+/).filter(Boolean).map(s=>s.toLowerCase()):[];const o=i.length===1&&i[0]==="normal"||i.length>=1&&i.length<=3&&new Set(i).size===i.length&&i.every(s=>["fill","stroke","markers"].includes(s));if(!o)p(t,"SCENE_PAINT",`${n}.paintOrder`,"must be normal or one to three unique fill, stroke, and markers keywords")}}function mu(e,n,t){if(!C(e)){p(t,"SCENE_DOCUMENT",n,"must be an attribute hook object");return}Q(e,["className","data","ariaHidden","tabIndex","ariaLabel"],n,t);if(e.className!==void 0&&(typeof e.className!=="string"||!lr.test(e.className))){p(t,"SCENE_DOCUMENT",`${n}.className`,"must be space-separated CSS class tokens")}if(e.ariaHidden!==void 0&&e.ariaHidden!==true)p(t,"SCENE_DOCUMENT",`${n}.ariaHidden`,"must be true when present");if(e.tabIndex!==void 0&&e.tabIndex!==0)p(t,"SCENE_DOCUMENT",`${n}.tabIndex`,"must be 0 when present");if(e.ariaLabel!==void 0)H(e.ariaLabel,`${n}.ariaLabel`,t,{max:dn});if(e.data===void 0)return;if(!C(e.data)){p(t,"SCENE_DOCUMENT",`${n}.data`,"must be a string record");return}for(const[r,i]of Object.entries(e.data)){if(!ur.test(r)||dr.has(r))p(t,"SCENE_DOCUMENT",`${n}.data.${r}`,"must be a family data-* key the writer does not own");H(i,`${n}.data.${r}`,t,{empty:true,max:dn})}}function br(e){const n=typeof e==="string"?/^url\(#([A-Za-z_][A-Za-z0-9_.:-]*)\)$/.exec(e.trim()):null;return n?.[1]}function Ct(e,n,t,r,i,o,s,a){if(!e||typeof r!=="string"||e[t])return;const c=Math.max(0,s-e[n]);const d=te(r,c);if(d>c){e[n]=s+1;e[t]=true;p(o,"SCENE_BOUNDS",i,`${a} exceed the aggregate ${s}-byte limit`)}else{e[n]+=d}}function gu(e,n,t){if(!e||e.pointsExceeded)return;if(++e.points>Yn){e.pointsExceeded=true;p(t,"SCENE_BOUNDS",n,`Scene points exceed the aggregate ${Yn}-point limit`)}}function be(e,n,t,r,i=false){if(!C(e)){p(t,"SCENE_FINITE",n,"must be a point object");return}if(i)Q(e,["x","y"],n,t);gu(r,n,t);$(e.x,`${n}.x`,t);$(e.y,`${n}.y`,t)}function Oi(e,n,t){if(!C(e)||typeof e.x!=="number"||typeof e.y!=="number")return;const r=Math.hypot(e.x,e.y);if(!Number.isFinite(r)||Math.abs(r-1)>1e-9){p(t,"SCENE_FINITE",n,"must be a finite unit vector")}}function Et(e,n,t,r,i,o=false){if(!Array.isArray(e)){p(t,"SCENE_FINITE",n,"must be an array of points");return}if(e.length<r)p(t,"SCENE_BOUNDS",n,`must contain at least ${r} points`);if(i?.pointCollections.has(e))return;i?.pointCollections.add(e);if(e.length>W)p(t,"SCENE_BOUNDS",n,"contains too many points");const s=Math.min(e.length,W,i?Math.max(0,Yn-i.points+1):W);for(let a=0;a<s;a++)be(e[a],`${n}[${a}]`,t,i,o)}function Un(e,n,t,r=false,i=0,o,s=false){if(i>Gn){p(t,"SCENE_BOUNDS",n,`geometry exceeds maximum nesting depth ${Gn}`);return}if(!C(e)||typeof e.kind!=="string"){p(t,"SCENE_DOCUMENT",n,"must be a typed geometry object");return}if(s){const a={rect:["kind","x","y","width","height","rx","ry"],circle:["kind","cx","cy","r"],ellipse:["kind","cx","cy","rx","ry"],line:["kind","x1","y1","x2","y2"],polygon:["kind","points"],polyline:["kind","points"],path:["kind","d","points"],compound:["kind","children"]};const c=a[e.kind];if(c)Q(e,c,n,t)}switch(e.kind){case"rect":$(e.x,`${n}.x`,t);$(e.y,`${n}.y`,t);$(e.width,`${n}.width`,t,{nonNegative:true});$(e.height,`${n}.height`,t,{nonNegative:true});if(e.rx!==void 0)$(e.rx,`${n}.rx`,t,{nonNegative:true});if(e.ry!==void 0)$(e.ry,`${n}.ry`,t,{nonNegative:true});return;case"circle":$(e.cx,`${n}.cx`,t);$(e.cy,`${n}.cy`,t);$(e.r,`${n}.r`,t,{nonNegative:true});return;case"ellipse":$(e.cx,`${n}.cx`,t);$(e.cy,`${n}.cy`,t);$(e.rx,`${n}.rx`,t,{nonNegative:true});$(e.ry,`${n}.ry`,t,{nonNegative:true});return;case"line":$(e.x1,`${n}.x1`,t);$(e.y1,`${n}.y1`,t);$(e.x2,`${n}.x2`,t);$(e.y2,`${n}.y2`,t);return;case"polygon":Et(e.points,`${n}.points`,t,3,o,s);return;case"polyline":Et(e.points,`${n}.points`,t,2,o,s);return;case"path":if(typeof e.d!=="string"||e.d.length===0||e.d.length>dn){p(t,"SCENE_SECURITY",`${n}.d`,"must use bounded SVG path data")}else{const a=pu(e.d,s&&!r);if(a)p(t,"SCENE_SECURITY",`${n}.d`,`must use semantic SVG path data: ${a}`)}if(e.points!==void 0)Et(e.points,`${n}.points`,t,2,o,s);if(e.markerMidpoints!==void 0){Et(e.markerMidpoints,`${n}.markerMidpoints`,t,0,o,s)}if(e.subpaths!==void 0){if(!Array.isArray(e.subpaths)||e.subpaths.length===0){p(t,"SCENE_BOUNDS",`${n}.subpaths`,"must be a non-empty array of typed contours")}else{for(let a=0;a<Math.min(e.subpaths.length,W);a++){const c=e.subpaths[a];if(!C(c)){p(t,"SCENE_DOCUMENT",`${n}.subpaths[${a}]`,"must be a typed contour");continue}Et(c.points,`${n}.subpaths[${a}].points`,t,2,o,s);if(typeof c.closed!=="boolean")p(t,"SCENE_DOCUMENT",`${n}.subpaths[${a}].closed`,"must be boolean")}}}return;case"compound":if(!Array.isArray(e.children)){p(t,"SCENE_BOUNDS",`${n}.children`,"must be a geometry array");return}if(e.children.length>W)p(t,"SCENE_BOUNDS",`${n}.children`,"contains too many geometries");for(let a=0;a<Math.min(e.children.length,W);a++){Un(e.children[a],`${n}.children[${a}]`,t,r,i+1,o,s)}return;default:p(t,"SCENE_DOCUMENT",`${n}.kind`,`unknown geometry kind "${e.kind}"`)}}function yu(e,n,t){if(e===void 0)return;if(!C(e)){p(t,"SCENE_DOCUMENT",n,"must be a semantic channel object");return}for(const r of["importance","value","progress"]){if(e[r]!==void 0)$(e[r],`${n}.${r}`,t)}if(typeof e.progress==="number"&&(e.progress<0||e.progress>1)){p(t,"SCENE_BOUNDS",`${n}.progress`,"must be in [0,1]")}for(const r of["category","status","route"]){if(e[r]!==void 0)H(e[r],`${n}.${r}`,t,{max:4096})}if(e.emphasis!==void 0&&typeof e.emphasis!=="boolean"){p(t,"SCENE_DOCUMENT",`${n}.emphasis`,"must be boolean")}}function Oa(e,n,t,r,i){if(!C(e)){p(t,"SCENE_MARKER",n,"must be a marker descriptor");return false}if(r){Q(e,["id","shape","geometry","size","viewBox","ref","bounds","units","orient","overflow","paint","scale"],n,t)}H(e.id,`${n}.id`,t,{externalId:r});if(!["arrow","open-arrow","circle","cross","triangle","diamond","diamond-open"].includes(String(e.shape))){p(t,"SCENE_MARKER",`${n}.shape`,"must be a known marker shape")}Un(e.geometry,`${n}.geometry`,t,true,0,i,r);if(r&&C(e.geometry)&&e.geometry.kind==="compound"&&(!Array.isArray(e.geometry.children)||e.geometry.children.length===0)){p(t,"SCENE_BOUNDS",`${n}.geometry.children`,"external marker compounds must contain geometry")}if(C(e.size)){if(r)Q(e.size,["width","height"],`${n}.size`,t);$(e.size.width,`${n}.size.width`,t,{positive:true});$(e.size.height,`${n}.size.height`,t,{positive:true})}if(C(e.ref))be(e.ref,`${n}.ref`,t,i,r);if(e.paint!==void 0)Ye(e.paint,`${n}.paint`,t,r);if(C(e.viewBox)){if(r)Q(e.viewBox,["x","y","width","height"],`${n}.viewBox`,t);$(e.viewBox.x,`${n}.viewBox.x`,t);$(e.viewBox.y,`${n}.viewBox.y`,t);$(e.viewBox.width,`${n}.viewBox.width`,t,{positive:true});$(e.viewBox.height,`${n}.viewBox.height`,t,{positive:true})}if(C(e.bounds)){if(r)Q(e.bounds,["x0","y0","x1","y1"],`${n}.bounds`,t);for(const o of["x0","y0","x1","y1"])$(e.bounds[o],`${n}.bounds.${o}`,t);if(typeof e.bounds.x0==="number"&&typeof e.bounds.x1==="number"&&e.bounds.x0>e.bounds.x1){p(t,"SCENE_BOUNDS",`${n}.bounds`,"x0 must not exceed x1")}if(typeof e.bounds.y0==="number"&&typeof e.bounds.y1==="number"&&e.bounds.y0>e.bounds.y1){p(t,"SCENE_BOUNDS",`${n}.bounds`,"y0 must not exceed y1")}}if(e.scale!==void 0)$(e.scale,`${n}.scale`,t,{nonNegative:true});if(e.units!==void 0&&!["strokeWidth","userSpaceOnUse"].includes(String(e.units))){p(t,"SCENE_MARKER",`${n}.units`,"must be strokeWidth or userSpaceOnUse")}if(typeof e.orient==="number")$(e.orient,`${n}.orient`,t);else if(e.orient!==void 0&&!["auto","auto-start-reverse"].includes(String(e.orient))){p(t,"SCENE_MARKER",`${n}.orient`,"must be auto, auto-start-reverse, or a finite angle")}if(e.overflow!==void 0&&!["hidden","visible"].includes(String(e.overflow))){p(t,"SCENE_MARKER",`${n}.overflow`,"must be hidden or visible")}try{Ht(e)}catch(o){p(t,"SCENE_MARKER",n,o instanceof Error?o.message:String(o))}return typeof e.id==="string"}function hu(e,n,t,r){if(typeof n!=="string"){p(r.diagnostics,"SCENE_ROLE",t,"must be a Scene role string");return false}const i=Object.prototype.hasOwnProperty.call(wn,n);if(!i&&!_i.test(n)){p(r.diagnostics,"SCENE_ROLE",t,"must be a built-in or namespaced Scene role");return false}if(!Tn(n).applicableKinds.includes(e)){p(r.diagnostics,"SCENE_ROLE",t,`role "${n}" is not applicable to ${e} marks`)}return true}function Ma(e,n,t){let r;try{r=z(e);if(te(r,yr)>yr){p(t.diagnostics,"SCENE_DOCUMENT",n,"has an oversized SVG serialization")}}catch(i){p(t.diagnostics,"SCENE_DOCUMENT",n,i instanceof Error?i.message:String(i))}if(t.aggregateBudgets&&r!==void 0){Ct(t.budget,"serializationBytes","serializationExceeded",r,n,t.diagnostics,iu,"Scene serializations")}return r}function Ai(e,n,t,r,i){if(r>Gn){p(t.diagnostics,"SCENE_BOUNDS",n,`exceeds maximum nesting depth ${Gn}`);return}if(++t.nodeCount>W){if(t.nodeCount===W+1)p(t.diagnostics,"SCENE_BOUNDS",n,"contains too many Scene nodes");return}if(!C(e)||typeof e.kind!=="string"){p(t.diagnostics,"SCENE_DOCUMENT",n,"must be a typed Scene node");return}const o=e.kind;xu(e,n,t.paintReferences);if(!["shape","connector","text","group","document"].includes(o)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.kind`,`unknown Scene node kind "${o}"`);return}if(t.external&&r>0&&o==="document"){p(t.diagnostics,"SCENE_DOCUMENT",n,`${o} marks must be top-level document furniture`)}if(t.external){const a=["kind","id","role","identity","accessibility","channels","transform","owner"];const c={shape:[...a,"geometry","paint"],text:[...a,"text","x","y","fontSize","anchor","baselineShift","paint","fontWeight","letterSpacing","display","textLayout","block","measurement","prepared"],group:[...a,"open","close","children","join"],"document":[...a,"element","text","domId","markerResources"],connector:[...a,"lineStyle","endpoints","relationship","route","stroke","markers","labels","hit","terminalProjection"]};Q(e,c[o],n,t.diagnostics)}if(H(e.id,`${n}.id`,t.diagnostics,{externalId:t.external})){const a=t.ids.get(e.id);if(t.external&&a)p(t.diagnostics,"SCENE_ID",`${n}.id`,`duplicates ${a.path}`);else t.ids.set(e.id,{path:`${n}.id`,kind:o})}if(e.domId!==void 0&&H(e.domId,`${n}.domId`,t.diagnostics,{externalId:t.external})){const a=t.domIds.get(e.domId);const c=t.markerIds.get(e.domId);const d=t.gradientIds.get(e.domId);if(t.external&&a)p(t.diagnostics,"SCENE_ID",`${n}.domId`,`duplicates DOM id owned by ${a}`);else if(t.external&&c)p(t.diagnostics,"SCENE_ID",`${n}.domId`,`collides with marker resource "${e.domId}"`);else if(d)p(t.diagnostics,"SCENE_ID",`${n}.domId`,`collides with gradient resource "${e.domId}"`);else t.domIds.set(e.domId,`${n}.domId`)}hu(o,e.role,`${n}.role`,t);if(typeof e.id==="string"&&typeof e.role==="string")t.subjects.add(JSON.stringify([e.id,e.role]));if(C(e.identity)&&typeof e.identity.id==="string"&&typeof e.identity.role==="string")t.subjects.add(JSON.stringify([e.identity.id,e.identity.role]));if(C(e.owner)&&typeof e.owner.id==="string"&&typeof e.owner.role==="string")t.ownerReferences.push({key:JSON.stringify([e.owner.id,e.owner.role]),path:`${n}.owner`});yu(e.channels,`${n}.channels`,t.diagnostics);const s=!t.native||o==="document"?Ma(e,n,t):void 0;if(e.transform!==void 0){if(!C(e.transform)||!["rotate","matrix"].includes(String(e.transform.kind))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.transform`,"must be a rotate or matrix transform")}else{const a=e.transform.kind==="matrix"?["a","b","c","d","e","f"]:["angle","cx","cy"];for(const c of a)$(e.transform[c],`${n}.transform.${c}`,t.diagnostics)}if(t.external)p(t.diagnostics,"SCENE_DOCUMENT",`${n}.transform`,"external Scene transforms are not exposed by the declarative builder")}if(e.owner!==void 0){if(!C(e.owner))p(t.diagnostics,"SCENE_REFERENCE",`${n}.owner`,"must be a semantic owner");else{H(e.owner.id,`${n}.owner.id`,t.diagnostics);if(typeof e.owner.role!=="string"||!Object.hasOwn(wn,e.owner.role)&&!_i.test(e.owner.role))p(t.diagnostics,"SCENE_ROLE",`${n}.owner.role`,"must be a Scene role")}}if(e.visibility!==void 0&&e.visibility!=="conditional")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.visibility`,"must be conditional");if(e.attributes!==void 0)mu(e.attributes,`${n}.attributes`,t.diagnostics);if(o==="shape"){if(e.identity===void 0&&typeof e.role==="string"&&sn(e.role)){if(t.native&&typeof e.id==="string"&&C(e.owner)&&typeof e.owner.id==="string"&&e.owner.role===e.role){t.native.artwork.push({id:e.id,owner:{id:e.owner.id,role:e.role},path:`${n}.identity`})}else if(!i||!C(e.owner)||e.role!==i.role||e.owner.id!==i.id||e.owner.role!==i.role){p(t.diagnostics,"SCENE_FIDELITY",`${n}.identity`,"owned artwork without DOM identity must be inside its matching semantic group")}}if(e.surfaceFragment!==void 0&&typeof e.surfaceFragment!=="boolean"){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.surfaceFragment`,"must be boolean")}Un(e.geometry,`${n}.geometry`,t.diagnostics,false,0,t.budget,t.external);if(t.external&&C(e.geometry)&&(e.geometry.kind==="path"||e.geometry.kind==="compound")){p(t.diagnostics,"SCENE_BOUNDS",`${n}.geometry`,"external shapes must use a directly bounded structured geometry")}Ye(e.paint,`${n}.paint`,t.diagnostics,t.external);if(e.childPaints!==void 0){if(!Array.isArray(e.childPaints)||!C(e.geometry)||e.geometry.kind!=="compound"||!Array.isArray(e.geometry.children)||e.childPaints.length!==e.geometry.children.length){p(t.diagnostics,"SCENE_PAINT",`${n}.childPaints`,"must give one paint per compound geometry child")}else e.childPaints.forEach((a,c)=>Ye(a,`${n}.childPaints[${c}]`,t.diagnostics,t.external))}if(e.conditionalPaint!==void 0){if(e.visibility!=="conditional")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.conditionalPaint`,"requires an explicit conditional state");Ye(e.conditionalPaint,`${n}.conditionalPaint`,t.diagnostics,t.external)}return}if(o==="text"){H(e.text,`${n}.text`,t.diagnostics,{empty:true,max:dn});if(t.aggregateBudgets)Ct(t.budget,"textBytes","textExceeded",e.text,`${n}.text`,t.diagnostics,pr,"Scene text values");$(e.x,`${n}.x`,t.diagnostics);$(e.y,`${n}.y`,t.diagnostics);$(e.fontSize,`${n}.fontSize`,t.diagnostics,{positive:true});if(e.fontWeight!==void 0)$(e.fontWeight,`${n}.fontWeight`,t.diagnostics,{positive:true});if(e.letterSpacing!==void 0)$(e.letterSpacing,`${n}.letterSpacing`,t.diagnostics);if(e.display!==void 0&&e.display!=="literal"&&e.display!=="formatted")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.display`,"must be literal or formatted");if(e.measurement!==void 0&&!["prepared","fallback"].includes(String(e.measurement)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.measurement`,"must identify prepared or fallback measurement");if(e.measurement==="prepared"&&(!C(e.block)||e.block.unit!=="px"||!C(e.block.prepared)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.block`,"prepared text must retain its actual pixel block");if(C(e.block)){if(!ir(e.block))p(t.diagnostics,"SCENE_FIDELITY",`${n}.block`,"must retain the actual immutable pixel text preparation");for(const a of["fontSize","fontWeight","letterSpacing"]){if(e[a]!==void 0&&e[a]!==e.block[a])p(t.diagnostics,"SCENE_FIDELITY",`${n}.block.${a}`,"must equal the retained text typography")}for(const a of["width","height","fontSize","fontWeight","lineHeight"])$(e.block[a],`${n}.block.${a}`,t.diagnostics,{nonNegative:true});if(C(e.textLayout)&&(e.block.width!==e.textLayout.width||e.block.height!==e.textLayout.height||e.block.lineHeight!==e.textLayout.lineHeight))p(t.diagnostics,"SCENE_FIDELITY",`${n}.textLayout`,"retained block differs from occupied text geometry")}if(e.textLayout!==void 0){if(!C(e.textLayout))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.textLayout`,"must be measured text geometry");else{if(t.external)Q(e.textLayout,["width","height","lineHeight","offsetY"],`${n}.textLayout`,t.diagnostics);$(e.textLayout.width,`${n}.textLayout.width`,t.diagnostics,{nonNegative:true});$(e.textLayout.height,`${n}.textLayout.height`,t.diagnostics,{nonNegative:true});$(e.textLayout.lineHeight,`${n}.textLayout.lineHeight`,t.diagnostics,{positive:true});$(e.textLayout.offsetY,`${n}.textLayout.offsetY`,t.diagnostics)}}if(!["start","middle","end"].includes(String(e.anchor)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.anchor`,"must be start, middle, or end");if(e.baselineShift!==void 0)$(e.baselineShift,`${n}.baselineShift`,t.diagnostics);if(e.dominantBaseline!==void 0&&!["middle","central","hanging"].includes(String(e.dominantBaseline)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.dominantBaseline`,"must be middle, central, or hanging");if(e.fontStyle!==void 0&&e.fontStyle!=="italic")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.fontStyle`,"must be italic");if(e.textDecoration!==void 0&&!["underline","line-through","underline line-through"].includes(String(e.textDecoration)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.textDecoration`,"must be underline, line-through, or both");if(e.spans!==void 0){if(!Array.isArray(e.spans)||e.spans.length===0)p(t.diagnostics,"SCENE_DOCUMENT",`${n}.spans`,"must be a non-empty run list");else{if(e.spans.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.spans`,"contains too many text runs");for(let a=0;a<Math.min(e.spans.length,W);a++){const c=e.spans[a];if(!C(c)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.spans[${a}]`,"must be a painted run");continue}H(c.text,`${n}.spans[${a}].text`,t.diagnostics,{empty:true,max:dn});if(t.aggregateBudgets)Ct(t.budget,"textBytes","textExceeded",c.text,`${n}.spans[${a}].text`,t.diagnostics,pr,"Scene text values");Ye({fill:c.fill},`${n}.spans[${a}]`,t.diagnostics,t.external)}}}Ye(e.paint,`${n}.paint`,t.diagnostics,t.external);return}if(o==="group"){if(t.native&&typeof e.role==="string"&&sn(e.role)&&C(e.identity)&&typeof e.identity.id==="string"&&e.identity.role===e.role){t.native.groups.add(JSON.stringify([e.identity.id,e.role]))}if(e.paint!==void 0){Ye(e.paint,`${n}.paint`,t.diagnostics,t.external);if(C(e.paint))Q(e.paint,["opacity","fill"],`${n}.paint`,t.diagnostics)}if(!Array.isArray(e.children)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.children`,"must be an array");return}if(e.children.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.children`,"contains too many Scene nodes");const a=Math.min(e.children.length,Math.max(0,W-t.nodeCount+1));const c=typeof e.role==="string"&&sn(e.role)?C(e.identity)&&typeof e.identity.id==="string"&&e.identity.role===e.role?{id:e.identity.id,role:e.role}:void 0:i;for(let d=0;d<a;d++){const l=e.children[d];if(!C(l))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.children[${d}]`,"must wrap a Scene node");else{$(l.indent,`${n}.children[${d}].indent`,t.diagnostics,{nonNegative:true});Ai(l.node,`${n}.children[${d}].node`,t,r+1,c)}}if(t.external&&(typeof e.open!=="string"||!/^<g(?:\s|>)/.test(e.open)||e.close!=="</g>")){p(t.diagnostics,"SCENE_SECURITY",n,"external containers must use a generated <g> wrapper")}return}if(o==="document"){if(e.nonPaint!==void 0){const a={accessibility:["title","desc"],stylesheet:["style"],"interaction-metadata":["title","desc"]};const c=a[String(e.nonPaint)];if(e.element!=="content"||!c||s===void 0||Be(s).some(d=>!c.includes(d.name))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.nonPaint`,"must describe only closed non-painting metadata elements")}}if(!["open","title","description","definitions","content","close"].includes(String(e.element))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.element`,"has an unknown document element")}if(e.markerResources!==void 0){if(!Array.isArray(e.markerResources))p(t.diagnostics,"SCENE_MARKER",`${n}.markerResources`,"must be an array");else{if(e.markerResources.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.markerResources`,"contains too many marker resources");for(let a=0;a<Math.min(e.markerResources.length,W);a++){if(t.native&&t.markerIds.size>=W){p(t.diagnostics,"SCENE_BOUNDS",`${n}.markerResources`,"contains too many aggregate marker resources");return}const c=e.markerResources[a];const d=`${n}.markerResources[${a}]`;if(Oa(c,d,t.diagnostics,t.external,t.budget)&&typeof c.id==="string"){const l=t.markerIds.get(c.id);const f=t.domIds.get(c.id);if(l)p(t.diagnostics,"SCENE_MARKER",`${d}.id`,`duplicates marker resource "${c.id}"`);else if(t.external&&f)p(t.diagnostics,"SCENE_ID",`${d}.id`,`collides with DOM id owned by ${f}`);else if(t.gradientIds.has(c.id))p(t.diagnostics,"SCENE_ID",`${d}.id`,`collides with gradient resource "${c.id}"`);else t.markerIds.set(c.id,c)}}if(t.external&&e.element==="definitions"){try{const a=Ce(`<defs>
|
|
50
|
-
${Zr(e.markerResources)}
|
|
51
|
-
</defs>`);if(s!==a)p(t.diagnostics,"SCENE_FIDELITY",n,"definitions must be generated from the typed marker resources")}catch{}}}}if(e.gradientResources!==void 0){if(e.element!=="definitions")p(t.diagnostics,"SCENE_PAINT",`${n}.gradientResources`,"are only valid on a definitions document mark");if(!Array.isArray(e.gradientResources))p(t.diagnostics,"SCENE_PAINT",`${n}.gradientResources`,"must be an array");else{if(e.gradientResources.length>X.maxResources)p(t.diagnostics,"SCENE_BOUNDS",`${n}.gradientResources`,`contains more than ${X.maxResources} gradient resources`);for(let a=0;a<Math.min(e.gradientResources.length,X.maxResources);a++){if(t.native&&t.gradientIds.size>=X.maxResources){p(t.diagnostics,"SCENE_BOUNDS",`${n}.gradientResources`,`contains more than ${X.maxResources} aggregate gradient resources`);return}const c=e.gradientResources[a];const d=`${n}.gradientResources[${a}]`;try{gi(c);const l=c;if(t.gradientIds.has(l.id)||t.markerIds.has(l.id)||t.domIds.has(l.id)){p(t.diagnostics,"SCENE_ID",`${d}.id`,`duplicates SVG resource id "${l.id}"`)}else{t.gradientIds.set(l.id,l)}}catch(l){p(t.diagnostics,"SCENE_PAINT",d,l instanceof Error?l.message:String(l))}}if(e.element==="definitions"){try{const a=[...Array.isArray(e.markerResources)&&e.markerResources.length>0?[Zr(e.markerResources)]:[],...e.gradientResources.length>0?[ea(e.gradientResources)]:[]].join("\n");const c=Ce(`<defs>
|
|
52
|
-
${a}
|
|
53
|
-
</defs>`);if(s!==c)p(t.diagnostics,"SCENE_FIDELITY",n,"definitions must be generated from typed resources")}catch{}}}}if(t.aggregateBudgets&&(e.element==="title"||e.element==="description")){H(e.text,`${n}.text`,t.diagnostics,{empty:true,max:dn});Ct(t.budget,"textBytes","textExceeded",e.text,`${n}.text`,t.diagnostics,pr,"Scene text values")}if(t.external&&e.element==="close"&&s!=="</svg>"){p(t.diagnostics,"SCENE_SECURITY",n,"external document close must be canonical")}return}if(!["solid","dotted","dashed","thick","invisible"].includes(String(e.lineStyle))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.lineStyle`,"has an unknown line style")}if(C(e.endpoints)){for(const a of["from","to"]){if(t.external&&e.endpoints[a]===void 0){p(t.diagnostics,"SCENE_REFERENCE",`${n}.endpoints.${a}`,"is required for external connectors")}else if(e.endpoints[a]!==void 0&&H(e.endpoints[a],`${n}.endpoints.${a}`,t.diagnostics,{externalId:t.external})){t.endpointReferences.push({id:e.endpoints[a],path:`${n}.endpoints.${a}`})}}for(const a of["start","end"]){const c=e.endpoints[a];if(C(c)){if(c.point!==void 0)be(c.point,`${n}.endpoints.${a}.point`,t.diagnostics,t.budget,t.external);if(c.id!==void 0)H(c.id,`${n}.endpoints.${a}.id`,t.diagnostics,{externalId:t.external});if(c.portId!==void 0)H(c.portId,`${n}.endpoints.${a}.portId`,t.diagnostics,{externalId:t.external});if(c.owner!==void 0){const d=`${n}.endpoints.${a}.owner`;if(!C(c.owner))p(t.diagnostics,"SCENE_REFERENCE",d,"must be a semantic owner");else{H(c.owner.id,`${d}.id`,t.diagnostics);if(typeof c.owner.role!=="string"||!Object.hasOwn(wn,c.owner.role)&&!_i.test(c.owner.role))p(t.diagnostics,"SCENE_ROLE",`${d}.role`,"must be a Scene role");const l=e.endpoints[a==="start"?"from":"to"];if(l!==void 0&&c.owner.id!==l)p(t.diagnostics,"SCENE_FIDELITY",d,"must retain the authored endpoint identity");t.ownerReferences.push({key:JSON.stringify([c.owner.id,c.owner.role]),path:d})}}}}}else p(t.diagnostics,"SCENE_REFERENCE",`${n}.endpoints`,"must be a typed endpoint object");if(C(e.relationship))H(e.relationship.kind,`${n}.relationship.kind`,t.diagnostics,{max:4096});else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.relationship`,"must be a typed relationship");if(C(e.relationship)&&!["forward","reverse","bidirectional","undirected","self"].includes(String(e.relationship.direction))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.relationship.direction`,"has an unknown connector direction")}if(C(e.route)){Un(e.route.geometry,`${n}.route.geometry`,t.diagnostics,false,0,t.budget,t.external);if(t.external&&C(e.route.geometry)&&e.route.geometry.kind==="path"&&!Array.isArray(e.route.geometry.points)){p(t.diagnostics,"SCENE_BOUNDS",`${n}.route.geometry.points`,"external connector paths require deterministic routed points")}$(e.route.bendRadius,`${n}.route.bendRadius`,t.diagnostics,{nonNegative:true});if(!["authored","layout","family","projected"].includes(String(e.route.ownership))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.ownership`,"has an unknown route ownership")}if(typeof e.route.closed!=="boolean")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.closed`,"must be boolean");if(e.route.closed===true&&C(e.route.geometry)&&e.route.geometry.kind!=="path"){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.closed`,"closed connector topology requires path geometry")}if(e.route.startTangent!==void 0){be(e.route.startTangent,`${n}.route.startTangent`,t.diagnostics,t.budget,t.external);Oi(e.route.startTangent,`${n}.route.startTangent`,t.diagnostics)}if(e.route.endTangent!==void 0){be(e.route.endTangent,`${n}.route.endTangent`,t.diagnostics,t.budget,t.external);Oi(e.route.endTangent,`${n}.route.endTangent`,t.diagnostics)}if(Array.isArray(e.route.labelAnchors)){if(e.route.labelAnchors.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.route.labelAnchors`,"contains too many points");const a=Math.min(e.route.labelAnchors.length,W,Math.max(0,Yn-t.budget.points+1));for(let c=0;c<a;c++)be(e.route.labelAnchors[c],`${n}.route.labelAnchors[${c}]`,t.diagnostics,t.budget,t.external)}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.labelAnchors`,"must be an array");if(Array.isArray(e.route.contours)){if(e.route.contours.length===0||e.route.contours.length>W){p(t.diagnostics,"SCENE_BOUNDS",`${n}.route.contours`,"must contain a bounded non-empty contour list")}for(let a=0;a<Math.min(e.route.contours.length,W);a++){const c=e.route.contours[a];if(!C(c)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.contours[${a}]`,"must be typed contour semantics");continue}be(c.start,`${n}.route.contours[${a}].start`,t.diagnostics,t.budget,t.external);be(c.end,`${n}.route.contours[${a}].end`,t.diagnostics,t.budget,t.external);if(typeof c.closed!=="boolean")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.contours[${a}].closed`,"must be boolean");for(const[d,l]of[["startTangent",c.startTangent],["endTangent",c.endTangent]]){if(l===void 0)continue;const f=`${n}.route.contours[${a}].${d}`;be(l,f,t.diagnostics,t.budget,t.external);Oi(l,f,t.diagnostics)}}}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.contours`,"must be an array")}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.route`,"must be a typed connector route");if(C(e.stroke)){if(ce(e.stroke.color)===void 0&&(t.external||!br(e.stroke.color))){p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.color`,"must be a safe non-fetching CSS paint")}me(e.stroke.width,`${n}.stroke.width`,t.diagnostics,{nonNegative:true,length:true});me(e.stroke.opacity,`${n}.stroke.opacity`,t.diagnostics,{unitInterval:true});me(e.stroke.miterLimit,`${n}.stroke.miterLimit`,t.diagnostics,{nonNegative:true});me(e.stroke.pathLength,`${n}.stroke.pathLength`,t.diagnostics,{nonNegative:true});if(!["butt","round","square"].includes(String(e.stroke.lineCap)))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.lineCap`,"has an unknown line cap");if(!["arcs","bevel","miter","miter-clip","round"].includes(String(e.stroke.lineJoin)))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.lineJoin`,"has an unknown line join");if(e.stroke.mixBlendMode!==void 0&&!["normal","multiply"].includes(String(e.stroke.mixBlendMode)))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.mixBlendMode`,"must be normal or multiply");if(typeof e.stroke.nonScaling!=="boolean")p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.nonScaling`,"must be boolean");if(e.stroke.encodesValue!==void 0&&typeof e.stroke.encodesValue!=="boolean")p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.encodesValue`,"must be boolean");if(e.stroke.dash!==void 0){if(!C(e.stroke.dash))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.dash`,"must be a dash descriptor");else{const a=e.stroke.dash.array;if(typeof a==="string"){if(!Aa.test(a.trim()))p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.dash.array`,"must be a finite numeric dash list")}else if(Array.isArray(a)){a.forEach((c,d)=>me(c,`${n}.stroke.dash.array[${d}]`,t.diagnostics,{nonNegative:true}))}else p(t.diagnostics,"SCENE_PAINT",`${n}.stroke.dash.array`,"must be a string or numeric array");me(e.stroke.dash.offset,`${n}.stroke.dash.offset`,t.diagnostics)}}}else p(t.diagnostics,"SCENE_PAINT",`${n}.stroke`,"must be a typed connector stroke");if(C(e.hit)){Un(e.hit.geometry,`${n}.hit.geometry`,t.diagnostics,false,0,t.budget,t.external);$(e.hit.strokeWidth,`${n}.hit.strokeWidth`,t.diagnostics,{nonNegative:true});if(typeof e.hit.closed!=="boolean")p(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit.closed`,"must be boolean");if(!["stroke","none"].includes(String(e.hit.pointerEvents)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit.pointerEvents`,"has unknown pointer-event semantics");if(C(e.route)&&typeof e.route.closed==="boolean"&&typeof e.hit.closed==="boolean"&&e.hit.closed!==e.route.closed){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit.closed`,"must match route.closed topology")}}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit`,"must be typed hit geometry");if(Array.isArray(e.labels)){if(e.labels.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.labels`,"contains too many connector labels");for(let a=0;a<Math.min(e.labels.length,W);a++){const c=e.labels[a];if(!C(c)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}]`,"must be a label descriptor");continue}if(t.external)Q(c,["id","text","anchor","bounds","halo","clearance","paint","fontSize","textAnchor","visual"],`${n}.labels[${a}]`,t.diagnostics);if(c.id!==void 0)H(c.id,`${n}.labels[${a}].id`,t.diagnostics,{externalId:t.external});H(c.text,`${n}.labels[${a}].text`,t.diagnostics,{empty:true,max:dn});if(t.aggregateBudgets)Ct(t.budget,"textBytes","textExceeded",c.text,`${n}.labels[${a}].text`,t.diagnostics,pr,"Scene text values");if(c.anchor!==void 0)be(c.anchor,`${n}.labels[${a}].anchor`,t.diagnostics,t.budget,t.external);if(c.bounds!==void 0){if(!C(c.bounds)){p(t.diagnostics,"SCENE_BOUNDS",`${n}.labels[${a}].bounds`,"must be a finite ordered box")}else{if(t.external)Q(c.bounds,["x0","y0","x1","y1"],`${n}.labels[${a}].bounds`,t.diagnostics);for(const d of["x0","y0","x1","y1"])$(c.bounds[d],`${n}.labels[${a}].bounds.${d}`,t.diagnostics);if(typeof c.bounds.x0==="number"&&typeof c.bounds.x1==="number"&&c.bounds.x0>c.bounds.x1){p(t.diagnostics,"SCENE_BOUNDS",`${n}.labels[${a}].bounds`,"x0 must not exceed x1")}if(typeof c.bounds.y0==="number"&&typeof c.bounds.y1==="number"&&c.bounds.y0>c.bounds.y1){p(t.diagnostics,"SCENE_BOUNDS",`${n}.labels[${a}].bounds`,"y0 must not exceed y1")}}}if(c.clearance!==void 0)$(c.clearance,`${n}.labels[${a}].clearance`,t.diagnostics,{nonNegative:true});if(c.block!==void 0&&(!C(c.block)||!ir(c.block)))p(t.diagnostics,"SCENE_FIDELITY",`${n}.labels[${a}].block`,"must retain the actual immutable pixel text preparation");if(c.fontSize!==void 0)$(c.fontSize,`${n}.labels[${a}].fontSize`,t.diagnostics,{positive:true});if(c.fontWeight!==void 0)$(c.fontWeight,`${n}.labels[${a}].fontWeight`,t.diagnostics,{positive:true});if(c.letterSpacing!==void 0)$(c.letterSpacing,`${n}.labels[${a}].letterSpacing`,t.diagnostics);if(c.display!==void 0&&c.display!=="literal"&&c.display!=="formatted"){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].display`,"must be literal or formatted")}if(c.textAnchor!==void 0&&!["start","middle","end"].includes(String(c.textAnchor))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].textAnchor`,"must be start, middle, or end")}if(c.paint!==void 0)Ye(c.paint,`${n}.labels[${a}].paint`,t.diagnostics,t.external);if(c.halo!==void 0){if(!C(c.halo))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].halo`,"must be a halo descriptor");else{if(t.external)Q(c.halo,["color","width"],`${n}.labels[${a}].halo`,t.diagnostics);$(c.halo.width,`${n}.labels[${a}].halo.width`,t.diagnostics,{nonNegative:true});if(c.halo.color!==void 0&&ce(c.halo.color)===void 0){p(t.diagnostics,"SCENE_PAINT",`${n}.labels[${a}].halo.color`,"must be a safe non-fetching CSS paint")}}}if(c.visual!==void 0){if(!C(c.visual)||!["inline","companion"].includes(String(c.visual.kind))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].visual`,"must be inline or companion label ownership")}else if(c.visual.kind==="companion"){const d=`${n}.labels[${a}].visual.markId`;if(H(c.visual.markId,d,t.diagnostics,{externalId:t.external})){t.companionLabelReferences.push({id:c.visual.markId,path:d})}}else if(c.anchor===void 0||c.paint===void 0||c.fontSize===void 0||c.textAnchor===void 0){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].visual`,"inline labels require anchor, paint, fontSize, and textAnchor")}}}}if(C(e.markers)){if(!Array.isArray(e.markers.mid))p(t.diagnostics,"SCENE_MARKER",`${n}.markers.mid`,"must be an array");if(Array.isArray(e.markers.mid)&&e.markers.mid.length>W)p(t.diagnostics,"SCENE_BOUNDS",`${n}.markers.mid`,"contains too many mid markers");const a=[[e.markers.start,`${n}.markers.start`],[e.markers.end,`${n}.markers.end`]];if(Array.isArray(e.markers.mid)){for(let c=0;c<Math.min(e.markers.mid.length,W);c++){a.push([e.markers.mid[c],`${n}.markers.mid[${c}]`])}}for(const[c,d]of a){if(c===void 0)continue;if(Oa(c,d,t.diagnostics,t.external,t.budget)&&C(c)&&typeof c.id==="string"){t.markerReferences.push({id:c.id,path:`${d}.id`,marker:c})}}}else p(t.diagnostics,"SCENE_MARKER",`${n}.markers`,"must be a typed marker set");if(!t.external&&!t.crossChecks&&t.native&&ht(e)!==void 0)return;if(C(e.terminalProjection)){if(!["native","emulated","projected","lossy","unsupported"].includes(String(e.terminalProjection.realization))){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.realization`,"has an unknown realization")}if(!["line","polyline","path"].includes(String(e.terminalProjection.topology)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.topology`,"has an unknown topology");Un(e.terminalProjection.geometry,`${n}.terminalProjection.geometry`,t.diagnostics,false,0,void 0,t.external);if(!["forward","reverse","bidirectional","undirected","self"].includes(String(e.terminalProjection.direction)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.direction`,"has an unknown direction");if(!["solid","dotted","dashed","thick","invisible"].includes(String(e.terminalProjection.lineStyle)))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.lineStyle`,"has an unknown line style");for(const a of["labels","strokeLosses","diagnostics"]){if(!Array.isArray(e.terminalProjection[a]))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.${a}`,"must be an array")}if(!C(e.terminalProjection.markers)||!Array.isArray(e.terminalProjection.markers.mid)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markers`,"must contain a mid-marker array")}if(!C(e.terminalProjection.markerPlacements)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markerPlacements`,"must contain typed start/mid/end marker placements")}else{for(const a of["start","mid","end"]){const c=e.terminalProjection.markerPlacements[a];if(!Array.isArray(c)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markerPlacements.${a}`,"must be an array");continue}for(let d=0;d<Math.min(c.length,W);d++){const l=c[d];if(!C(l)){p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markerPlacements.${a}[${d}]`,"must be a marker placement");continue}H(l.markerId,`${n}.terminalProjection.markerPlacements.${a}[${d}].markerId`,t.diagnostics,{externalId:t.external});be(l.point,`${n}.terminalProjection.markerPlacements.${a}[${d}].point`,t.diagnostics,void 0,t.external);$(l.contourIndex,`${n}.terminalProjection.markerPlacements.${a}[${d}].contourIndex`,t.diagnostics,{nonNegative:true})}}}for(const a of["endpoints","route","stroke","hit"]){if(!C(e.terminalProjection[a]))p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.${a}`,"must preserve typed connector semantics")}}else p(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection`,"must be a terminal projection");if(!t.external&&t.crossChecks)bu(e,n,t)}function we(e,n){if(Object.is(e,n))return true;if(Array.isArray(e)||Array.isArray(n)){return Array.isArray(e)&&Array.isArray(n)&&e.length===n.length&&e.every((i,o)=>we(i,n[o]))}if(!C(e)||!C(n))return false;const t=Object.keys(e).filter(i=>e[i]!==void 0).sort();const r=Object.keys(n).filter(i=>n[i]!==void 0).sort();return t.length===r.length&&t.every((i,o)=>i===r[o]&&we(e[i],n[i]))}function bu(e,n,t){if(!C(e.route)||!C(e.stroke)||!C(e.markers)||!Array.isArray(e.markers.mid)||!Array.isArray(e.labels)||!C(e.hit)||!C(e.endpoints)||!C(e.relationship)||!C(e.terminalProjection)||!Array.isArray(e.terminalProjection.diagnostics))return;const r=e;const i=r.route.geometry;const o=In(i,r.route.closed);const s=o.starts[0];const a=o.ends.at(-1);for(const[m,u,y]of[["start",r.endpoints.start?.point,s],["end",r.endpoints.end?.point,a]]){if(u&&y&&!re(u,y)){p(t.diagnostics,"SCENE_FIDELITY",`${n}.endpoints.${m}.point`,"must equal the endpoint derived from connector geometry")}}const c=nr(i,r.route.closed);if(r.route.contours.length!==c.length){p(t.diagnostics,"SCENE_FIDELITY",`${n}.route.contours`,"must match the geometry-derived contour count")}const d=!er(i);for(let m=0;m<Math.min(r.route.contours.length,c.length);m++){const u=r.route.contours[m];const y=c[m];if(!re(u.start,y.start)||!re(u.end,y.end)||u.closed!==y.closed){p(t.diagnostics,"SCENE_FIDELITY",`${n}.route.contours[${m}]`,"must match geometry-derived endpoint topology")}if(d){for(const b of["startTangent","endTangent"]){const h=u[b];const k=y[b];if(h===void 0!==(k===void 0)||h&&k&&!re(h,k,1e-9)){p(t.diagnostics,"SCENE_FIDELITY",`${n}.route.contours[${m}].${b}`,"must match the tangent derived from linear route geometry")}}}}const l=r.route.contours[0]?.startTangent;const f=r.route.contours.at(-1)?.endTangent;for(const[m,u,y]of[["startTangent",r.route.startTangent,l],["endTangent",r.route.endTangent,f]]){if(u===void 0!==(y===void 0)||u&&y&&!re(u,y,1e-9)){p(t.diagnostics,"SCENE_FIDELITY",`${n}.route.${m}`,"must equal the corresponding contour tangent authority")}}try{const m=yt({geometry:i,lineStyle:r.lineStyle,endpoints:r.endpoints,relationship:r.relationship,route:r.route,stroke:r.stroke,markers:r.markers,labels:r.labels,hit:r.hit,...r.transform?{transform:r.transform}:{},additionalDiagnostics:r.terminalProjection.diagnostics.slice(1)});if(!we(r.terminalProjection,m)){p(t.diagnostics,"SCENE_FIDELITY",`${n}.terminalProjection`,"must equal the canonical projection derived from connector semantics")}}catch(m){p(t.diagnostics,"SCENE_FIDELITY",`${n}.terminalProjection`,m instanceof Error?m.message:String(m))}}function _a(e,n,t){if(!C(e))return;for(const r of["fill","stroke"]){const i=br(e[r]);if(i)t.push({id:i,path:`${n}.${r}`})}}function xu(e,n,t){if(!C(e))return;if(e.kind==="connector"){if(C(e.stroke)){const r=br(e.stroke.color);if(r)t.push({id:r,path:`${n}.stroke.color`})}if(Array.isArray(e.labels)){for(let r=0;r<Math.min(e.labels.length,W);r++){const i=e.labels[r];if(C(i))_a(i.paint,`${n}.labels[${r}].paint`,t)}}}else{_a(e.paint,`${n}.paint`,t)}}function Te(e,n={}){if(n.mode==="external"||n.mode==="internal")return n.mode;const t=C(e)&&typeof e.family==="string"?Je(e.family):void 0;return t?.kind==="family"?"external":"internal"}function Su(e,n={}){const t=[];va(e,false,t);if(Te(e)==="external")p(t,"SCENE_DOCUMENT","scene.family","native admission requires a built-in family");if(t.length>0)throw new Z(t);const r={artwork:[],groups:new Set,enclosures:new Map};const i={...Pa(t,false,n.crossChecks??false,true),native:r};let o;const s=()=>{if(o)throw new Error("Native Scene validation has already finished");if(t.length>0)throw new Z(t)};const a=c=>{s();if(!Number.isInteger(c)||c<0||c>Gn){p(t,"SCENE_BOUNDS","scene.depth",`must be an integer nesting depth between 0 and ${Gn}`);throw new Z(t)}};return{node(c,d=0){s();a(d);if(c.kind==="group"&&(!Array.isArray(c.children)||c.children.length!==0)){p(t,"SCENE_DOCUMENT","scene.parts","native groups must be shallow headers with separately submitted children");throw new Z(t)}const l=`scene.parts[${i.nodeCount}]`;Ai(c,l,i,d);if(t.length>0)throw new Z(t);const f=c.kind==="document"?z(c):Ma(c,l,i);if(t.length>0)throw new Z(t);return f},depth:a,enclosure(c,d){s();H(c,"scene.enclosure.id",t);H(d.id,"scene.enclosure.owner.id",t);const l=r.enclosures.get(c);if(l&&(l.id!==d.id||l.role!==d.role)){p(t,"SCENE_FIDELITY","scene.enclosure","artwork cannot have conflicting semantic enclosures")}else if(r.enclosures.size>=W){p(t,"SCENE_BOUNDS","scene.enclosure","contains too many semantic enclosure relations")}else r.enclosures.set(c,{id:d.id,role:d.role});if(t.length>0)throw new Z(t)},serialization(c){s();if(te(c,yr)>yr){p(t,"SCENE_DOCUMENT","scene.serialization","has an oversized SVG serialization");throw new Z(t)}},finish(){if(o)return o;Ia(i);for(const c of r.artwork){const d=r.enclosures.get(c.id);if(!d||d.id!==c.owner.id||d.role!==c.owner.role||!r.groups.has(JSON.stringify([d.id,d.role]))){p(t,"SCENE_FIDELITY",c.path,"owned artwork without DOM identity must be inside its matching semantic group")}}o=Object.freeze({valid:t.length===0,diagnostics:Object.freeze(t.map(c=>Object.freeze(c)))});return o}}}function Ia(e){for(const n of e.paintReferences){if(!e.gradientIds.has(n.id))p(e.diagnostics,"SCENE_REFERENCE",n.path,`references undeclared gradient "${n.id}"`)}for(const n of e.ownerReferences)if(!e.subjects.has(n.key))p(e.diagnostics,"SCENE_REFERENCE",n.path,"must reference an actual Scene subject identity and role");for(const n of e.companionLabelReferences){const t=e.ids.get(n.id);if(!t)p(e.diagnostics,"SCENE_REFERENCE",n.path,`references unknown companion Text mark "${n.id}"`);else if(t.kind!=="text")p(e.diagnostics,"SCENE_REFERENCE",n.path,`must reference a Text mark; "${n.id}" is a ${t.kind} mark`)}}function Pa(e,n,t,r=n){return{diagnostics:e,external:n,aggregateBudgets:r,paintReferences:[],ids:new Map,subjects:new Set,ownerReferences:[],domIds:new Map,markerIds:new Map,gradientIds:new Map,markerReferences:[],endpointReferences:[],companionLabelReferences:[],budget:{textBytes:0,serializationBytes:0,points:0,textExceeded:false,serializationExceeded:false,pointsExceeded:false,pointCollections:new WeakSet},crossChecks:t,nodeCount:0}}function va(e,n,t){H(e.family,"scene.family",t);const r=$(e.width,"scene.width",t,n?{positive:true}:{nonNegative:true});const i=$(e.height,"scene.height",t,n?{positive:true}:{nonNegative:true});if(e.transparent!==void 0&&typeof e.transparent!=="boolean")p(t,"SCENE_DOCUMENT","scene.transparent","must be boolean");if(!C(e.colors))p(t,"SCENE_DOCUMENT","scene.colors","must be a DiagramColors object");else{if(n){Q(e.colors,["bg","fg","line","accent","muted","surface","border","font","shadow","embedFontImport"],"scene.colors",t)}for(const o of["bg","fg","line","accent","muted","surface","border"]){if((o==="bg"||o==="fg"||e.colors[o]!==void 0)&&ce(e.colors[o])===void 0){p(t,"SCENE_PAINT",`scene.colors.${o}`,"must be a safe non-fetching CSS paint")}}if(e.colors.font!==void 0&&kn(e.colors.font)===void 0){p(t,"SCENE_SECURITY","scene.colors.font","must be a safe non-fetching font family")}if(e.colors.shadow!==void 0&&typeof e.colors.shadow!=="boolean"){p(t,"SCENE_DOCUMENT","scene.colors.shadow","must be boolean")}if(e.colors.embedFontImport!==void 0&&typeof e.colors.embedFontImport!=="boolean"){p(t,"SCENE_DOCUMENT","scene.colors.embedFontImport","must be boolean")}}return{widthOk:r,heightOk:i}}function Mi(e,n,t,r){const i=[];if(!C(e)){return Object.freeze({valid:false,diagnostics:Object.freeze([{code:"SCENE_DOCUMENT",path:"scene",message:"must be a Scene document object"}])})}const o=Te(e,n)==="external";if(o&&!r){p(i,"SCENE_DOCUMENT","scene.family","source-only browser admission requires a built-in family");return Object.freeze({valid:false,diagnostics:Object.freeze(i)})}if(o)Q(e,["family","width","height","colors","transparent","parts"],"scene",i);const{widthOk:s,heightOk:a}=va(e,o,i);if(!Array.isArray(e.parts)){p(i,"SCENE_DOCUMENT","scene.parts","must be an array")}else{const c=Pa(i,o,t);if(e.parts.length>W)p(i,"SCENE_BOUNDS","scene.parts","contains too many top-level Scene nodes");for(let l=0;l<Math.min(e.parts.length,W);l++){Ai(e.parts[l],`scene.parts[${l}]`,c,0)}const d=o?r.document(e,c,s,a):void 0;Ia(c);if(i.length===0&&o){r.canonical(e,i)}if(i.length===0&&t){const l=e;try{const f=o?d:l.parts.map(z).join("\n");if(f!==void 0)Kt(f,o?"strict":"default")}catch(f){p(i,"SCENE_SECURITY","scene",f instanceof Error?f.message:String(f))}}}return Object.freeze({valid:i.length===0,diagnostics:Object.freeze(i.map(c=>Object.freeze(c)))})}var Fa={};mc(Fa,{connector:()=>He,definitions:()=>Pi,documentClose:()=>vi,documentContent:()=>Au,documentOpen:()=>Di,documentText:()=>Sr,drawPathArtwork:()=>La,group:()=>Hn,indentLines:()=>St,pathArtwork:()=>Mu,shape:()=>ln,text:()=>wt});import{decodeXML as Da}from"entities";function xr(e,n){if(!Tn(e.role).relation)return void 0;if(e.from===void 0||e.to===void 0)return void 0;const t={from:e.from,to:e.to,...n?{label:n}:{}};return{label:`${t.from} to ${t.to}${t.label?`: ${t.label}`:""}`,role:"graphics-symbol",roleDescription:"relation",relation:t}}function Ii(e,n){if(!n)return;for(const t of Object.keys(n)){if(t!=="className"&&t!=="data"&&t!=="ariaHidden"&&t!=="tabIndex"&&t!=="ariaLabel")throw new TypeError(`Mark "${e}" has unknown attribute hook "${t}"`)}if(n.className!==void 0&&!lr.test(n.className))throw new TypeError(`Mark "${e}" class must be space-separated CSS tokens`);for(const[t,r]of Object.entries(n.data??{})){if(!ur.test(t))throw new TypeError(`Mark "${e}" has an invalid data attribute key "${t}"`);if(dr.has(t))throw new TypeError(`Mark "${e}" data-${t} belongs to its typed fields`);if(typeof r!=="string")throw new TypeError(`Mark "${e}" data-${t} must be a string`)}if(n.ariaHidden!==void 0&&n.ariaHidden!==true)throw new TypeError(`Mark "${e}" ariaHidden must be true when present`);if(n.tabIndex!==void 0&&n.tabIndex!==0)throw new TypeError(`Mark "${e}" tabIndex must be 0 when present`);if(n.ariaLabel!==void 0&&typeof n.ariaLabel!=="string")throw new TypeError(`Mark "${e}" ariaLabel must be a string`)}var ku=/^(?:class|data-[a-z][a-z0-9-]*|role|aria-[a-z]+|tabindex|pointer-events|transform|style)$/;var Eu=/^\s*<g\b[^>]*>(?:<title>[^<]*<\/title>)?$/;var Cu=/^\s*(?:--[A-Za-z0-9_-]+\s*:[^;]*(?:;\s*|$))*$/;function wu(e,n,t){const r=new Set;let i;const o=Eu.test(n)?ho(n,"g",(d,l)=>{if(r.has(d))throw new TypeError(`Group "${e}" open has a duplicate "${d}"`);r.add(d);if(!ku.test(d))throw new TypeError(`Group "${e}" open sets "${d}"; paint and geometry belong to typed marks`);if(d==="style"&&!Cu.test(Da(l))){throw new TypeError(`Group "${e}" open style may only set custom properties; paint belongs to typed marks`)}if(d==="transform")i=l}):void 0;if(o!=="g")throw new TypeError(`Group "${e}" open must be one <g> tag with an optional <title>`);const s=i===void 0?void 0:Da(i);const a=s===void 0?void 0:Xs(s);const c=t?de(t):void 0;if(s!==void 0&&!a)throw new TypeError(`Group "${e}" open has an unsupported transform`);if(!!a!==!!c||a&&c&&a.some((d,l)=>Math.abs(d-c[l])>1e-9*Math.max(1,Math.abs(d)))){throw new TypeError(`Group "${e}" open transform disagrees with its typed transform`)}}function Ba(e){if(e.identity)return{...e.identity,role:e.role};const n=e.attributes?.className?.split(" ");return{id:e.id,role:e.role,...n?{classNames:n}:{}}}function ln(e){Ii(e.id,e.attributes);if(e.childPaints&&(e.geometry.kind!=="compound"||e.childPaints.length!==e.geometry.children.length)){throw new TypeError(`Shape "${e.id}" child paints must match its compound geometry`)}if(e.identity===false&&e.owner?.role!==e.role)throw new TypeError(`Shape "${e.id}" without DOM identity requires an explicit owner with the same role`);const n=e.identity===false?void 0:Ba(e);const t=n?xr(n,e.attributes?.data?.label):void 0;if(t&&e.attributes?.ariaLabel!==void 0)throw new TypeError(`Shape "${e.id}" takes its aria-label from typed relation accessibility`);return xt({kind:"shape",id:e.id,role:e.role,...n?{identity:n}:{},...e.owner?{owner:e.owner}:{},...e.visibility?{visibility:e.visibility}:{},...t?{accessibility:t}:{},geometry:e.geometry,paint:e.paint,...e.childPaints?{childPaints:e.childPaints}:{},...e.conditionalPaint?{conditionalPaint:e.conditionalPaint}:{},...e.surfaceFragment!==void 0?{surfaceFragment:e.surfaceFragment}:{},...e.channels?{channels:e.channels}:{},...e.transform?{transform:e.transform}:{},...e.attributes?{attributes:e.attributes}:{}})}var Tu={id:true,role:true,geometry:true,lineStyle:true,paint:true,identity:true,owner:true,visibility:true,endpoints:true,relationship:true,route:true,stroke:true,markers:true,labels:true,hit:true,terminalProjection:true,channels:true,transform:true,attributes:true};var Ru={start:true,mid:true,end:true};function ja(e,n,t){if(!e||typeof e!=="object"||Array.isArray(e))throw new TypeError(`${t} fields must be an object`);for(const r of Reflect.ownKeys(e)){if(!Object.hasOwn(n,r))throw new TypeError(`unknown ${t} field "${String(r)}"`)}}function Nu(e,n){if(e.kind==="line"){return{start:{point:{x:e.x1,y:e.y1}},end:{point:{x:e.x2,y:e.y2}}}}const t=Ae(e,n);const r=t[0]?.points[0];const i=t.at(-1);const o=i?.closed?i.points[0]:i?.points.at(-1);return{...r?{start:{point:{...r}}}:{},...o?{end:{point:{...o}}}:{}}}function za(e,n){return n?{...e,...n,...n.owner?{owner:{...n.owner}}:{},...n.point?{point:{...n.point}}:{}}:e??{}}function $u(e){const n=typeof e==="number"?e:parseFloat(e);return Number.isFinite(n)?Math.max(0,n):1}function Ou(e,n,t){if(e.from!==void 0&&e.from===e.to)return"self";if(n&&t)return"bidirectional";if(n)return"reverse";if(t)return"forward";return"undirected"}function _u(e,n,t,r){if(r.length===0)return void 0;const i=Pn(n,t).length;if(i===0){throw new RangeError(`Connector "${e}" has mid markers but no typed interior route points`)}if(r.length!==1&&r.length!==i){throw new RangeError(`Connector "${e}" mid markers must contain one repeated descriptor or one descriptor per interior route point`)}const o=new Set(r.map(s=>s.id));if(o.size!==1){throw new RangeError(`Connector "${e}" uses distinct mid markers that one SVG marker-mid carrier cannot represent`)}return r[0].id}function He(e){ja(e,Tu,"connector");if(e.markers!==void 0)ja(e.markers,Ru,"marker");if(e.geometry.kind!=="path"&&e.route?.closed===true){throw new TypeError(`Connector "${e.id}" closed route topology requires path geometry`)}if(e.geometry.kind==="path"){const T=e.geometry;const _=T.subpaths;const P=tr(T.d);if(P>1&&!_){throw new TypeError(`Connector "${e.id}" path has multiple SVG subpaths but no typed subpaths`)}if(_){if(_.length===0||_.some(ee=>ee.points.length<2)){throw new TypeError(`Connector "${e.id}" typed subpaths must each contain at least two points`)}if(P!==_.length){throw new TypeError(`Connector "${e.id}" typed subpath count disagrees with SVG path moves`)}const ue=_.flatMap(ee=>ee.points);if(ue.length!==T.points.length||ue.some((ee,Pe)=>{const Ke=T.points[Pe];return!Ke||Ke.x!==ee.x||Ke.y!==ee.y})){throw new TypeError(`Connector "${e.id}" typed subpaths disagree with the canonical point projection`)}}}const n=Ae(e.geometry,e.route?.closed??false);const t=n.length===1&&n[0].closed;if(e.geometry.kind==="path"&&e.geometry.subpaths&&e.route?.closed!==void 0&&e.route.closed!==t){throw new TypeError(`Connector "${e.id}" route.closed disagrees with typed subpath topology`)}const r=e.geometry.kind==="path"&&e.geometry.subpaths?t:e.route?.closed??false;if(e.geometry.kind==="path"){const T=e.geometry.d.match(/[Zz]/g)?.length??0;const _=e.geometry.subpaths?e.geometry.subpaths.filter(P=>P.closed).length:r?1:0;if(T!==_){throw new TypeError(`Connector "${e.id}" SVG close commands disagree with typed closed-contour semantics`)}}const i=e.markers?.start;const o=e.markers?.end;const s=e.markers?.mid??[];for(const T of[i,...s,o]){if(T?.geometry?.kind==="path"&&!T.bounds&&!T.viewBox&&!T.size){throw new TypeError(`Connector "${e.id}" path marker "${T.id}" requires bounds, viewBox, or size`)}}const a=_u(e.id,e.geometry,r,s);const c=Nu(e.geometry,r);for(const T of["start","end"]){const _=e.endpoints?.[T]?.point;const P=c[T]?.point;if(_&&P&&!re(_,P)){throw new TypeError(`Connector "${e.id}" endpoints.${T}.point disagrees with typed route geometry`)}}const d={...e.endpoints??{},start:za(c.start,e.endpoints?.start),end:za(c.end,e.endpoints?.end)};const l={kind:e.relationship?.kind??e.role,direction:e.relationship?.direction??Ou(d,i,o)};const f=(e.labels??[]).map(T=>{const _=rt(T.text,T.textContent);const P=Bt(T.text);return{...T,text:P,...typeof _!=="string"?{textContent:{...T.textContent,value:P}}:{}}});const m={id:e.identity?.id??e.id,role:e.role,...e.identity?.classNames?{classNames:e.identity.classNames}:{},...e.identity?.from??d.from?{from:e.identity?.from??d.from}:{},...e.identity?.to??d.to?{to:e.identity?.to??d.to}:{}};const u=f[0];const y=u?.visual?.kind==="inline"?bt(u).lineBlocks.map(T=>T.runs.map(_=>_.text).join("")).join("\n"):u?jr(rt(u.text,u.textContent),u.display??"literal"):void 0;const b=xr(m,y);Ii(e.id,e.attributes);if(b&&e.attributes?.ariaLabel!==void 0)throw new TypeError(`Connector "${e.id}" takes its aria-label from typed relation accessibility`);for(const[T,_]of f.entries()){if(_.visual?.kind==="inline"&&(!_.anchor||!_.paint||_.fontSize===void 0||_.textAnchor===void 0)){throw new TypeError(`Connector "${e.id}" inline label ${T+1} requires anchor, paint, fontSize, and textAnchor`)}}const h=e.stroke?.width??e.paint.strokeWidth??"1";const k=e.stroke?.dash??(e.paint.strokeDasharray?{array:e.paint.strokeDasharray,...e.paint.strokeDashoffset!==void 0?{offset:e.paint.strokeDashoffset}:{}}:void 0);const x=e.stroke?.opacity??e.paint.opacity;const S=e.stroke?.paintOrder??e.paint.paintOrder;const g=e.stroke?.mixBlendMode;const E={color:e.stroke?.color??e.paint.stroke??"var(--_line)",width:h,...x!==void 0?{opacity:x}:{},...k?{dash:k}:{},lineCap:e.stroke?.lineCap??e.paint.strokeLinecap??"butt",lineJoin:e.stroke?.lineJoin??e.paint.strokeLinejoin??"miter",miterLimit:e.stroke?.miterLimit??Number(e.paint.strokeMiterlimit??4),...e.stroke?.pathLength!==void 0?{pathLength:e.stroke.pathLength}:{},...S!==void 0?{paintOrder:S}:{},...g!==void 0?{mixBlendMode:g}:{},nonScaling:e.stroke?.nonScaling??e.paint.vectorEffect==="non-scaling-stroke",...e.stroke?.encodesValue?{encodesValue:true}:{}};const R=nr(e.geometry,r);const w=e.route?.contours;if(w&&(w.length!==R.length||w.some((T,_)=>{const P=R[_];return!P||T.start.x!==P.start.x||T.start.y!==P.start.y||T.end.x!==P.end.x||T.end.y!==P.end.y||T.closed!==P.closed}))){throw new TypeError(`Connector "${e.id}" route contours disagree with typed subpath endpoint topology`)}const I=!er(e.geometry);if(I&&w){for(const[T,_]of w.entries()){const P=R[T];for(const ue of["startTangent","endTangent"]){const ee=_[ue];const Pe=P[ue];if(ee&&(!Pe||!re(ee,Pe,1e-9))){throw new TypeError(`Connector "${e.id}" route.contours[${T}].${ue} disagrees with linear route geometry`)}}}}const O=w?R.map((T,_)=>{const P=w?.[_];const ue=P?.startTangent??T.startTangent;const ee=P?.endTangent??T.endTangent;return{start:{...T.start},end:{...T.end},closed:T.closed,...ue?{startTangent:ue}:{},...ee?{endTangent:ee}:{}}}):R;for(const T of O){for(const _ of[T.startTangent,T.endTangent]){if(!_)continue;const P=Math.hypot(_.x,_.y);if(!Number.isFinite(P)||Math.abs(P-1)>1e-9){throw new TypeError(`Connector "${e.id}" contour tangents must be finite unit vectors`)}}}for(const T of[e.route?.startTangent,e.route?.endTangent]){if(!T)continue;const _=Math.hypot(T.x,T.y);if(!Number.isFinite(_)||Math.abs(_-1)>1e-9){throw new TypeError(`Connector "${e.id}" route tangents must be finite unit vectors`)}}for(const[T,_,P]of[["startTangent",e.route?.startTangent,O[0]?.startTangent],["endTangent",e.route?.endTangent,O.at(-1)?.endTangent]]){if(_&&P&&!re(_,P,1e-9)){throw new TypeError(`Connector "${e.id}" route.${T} disagrees with its contour tangent authority`)}}const Y={geometry:e.geometry,ownership:e.route?.ownership??"family",closed:r,bendRadius:e.route?.bendRadius??0,contours:O,...e.route?.startTangent??O[0]?.startTangent?{startTangent:e.route?.startTangent??O[0]?.startTangent}:{},...e.route?.endTangent??O.at(-1)?.endTangent?{endTangent:e.route?.endTangent??O.at(-1)?.endTangent}:{},labelAnchors:e.route?.labelAnchors??f.flatMap(T=>T.anchor?[T.anchor]:[])};if(e.hit?.closed!==void 0&&e.hit.closed!==r){throw new TypeError(`Connector "${e.id}" hit.closed must match route.closed topology`)}const le={geometry:e.hit?.geometry??e.geometry,closed:e.hit?.closed??r,strokeWidth:e.hit?.strokeWidth??Math.max(6,$u(h)),pointerEvents:e.hit?.pointerEvents??(e.lineStyle==="invisible"?"none":"stroke")};const B={geometry:e.geometry,lineStyle:e.lineStyle,endpoints:d,relationship:l,route:Y,stroke:E,markers:{...i?{start:i}:{},mid:s,...o?{end:o}:{}},labels:f,hit:le,...e.transform?{transform:e.transform}:{},additionalDiagnostics:e.terminalProjection?.diagnostics};const V={kind:"connector",id:e.id,role:e.role,lineStyle:e.lineStyle,endpoints:d,relationship:l,route:Y,stroke:E,markers:{...i?{start:i}:{},mid:s,...o?{end:o}:{}},labels:f,hit:le,terminalProjection:void 0,identity:m,...e.owner?{owner:e.owner}:{},...e.visibility?{visibility:e.visibility}:{},...b?{accessibility:b}:{},...e.channels?{channels:e.channels}:{},...e.transform?{transform:e.transform}:{},...e.attributes?{attributes:e.attributes}:{}};ua(V,B);return xt(V)}function wt(e){const{block:n,...t}=e;if(n){for(const b of["fontSize","fontWeight","letterSpacing"]){if(e[b]!==void 0&&e[b]!==n[b])throw new TypeError(`Text "${e.id}" ${b} differs from its retained prepared block`)}}Ii(e.id,e.attributes);const r=e.fontWeight??n?.fontWeight??400;const i=e.letterSpacing??n?.letterSpacing??0;const o=e.display??n?.prepared.display??"formatted";const s=n??gt(e.text,{display:o,fontSize:e.fontSize,fontWeight:r,letterSpacing:i});if(e.spans&&(s.lines.length!==1||e.spans.map(b=>b.text).join("")!==s.text)){throw new TypeError(`Text "${e.id}" spans must spell its one displayed line`)}const a=e.baselineShift??.35;const c=s.lines.length;const d=n?n.lineHeight:e.fontSize*Ne;const l=(c===1?0:-((c-1)/2)*d)+e.fontSize*a;const f=e.dominantBaseline==="hanging"?s.lineHeight/2:e.dominantBaseline==="middle"||e.dominantBaseline==="central"?0:-e.fontSize*.35;const m=l+(c-1)*s.lineHeight/2+f;const u=Ba(e);const y=xr(u,e.attributes?.data?.label);if(y&&e.attributes?.ariaLabel!==void 0)throw new TypeError(`Text "${e.id}" takes its aria-label from typed relation accessibility`);return xt({kind:"text",...t,identity:u,accessibility:y,block:s,measurement:n?"prepared":"fallback",...n?{prepared:true,preparedLines:n.lineBlocks.map(b=>b.runs)}:{},fontWeight:r,letterSpacing:i,display:o,textLayout:{width:s.width,height:s.height,lineHeight:s.lineHeight,offsetY:m}})}function Au(e,n){return Vn({kind:"document",element:"content",...e},n)}function Sr(e){const n=e.element==="title"?"title":"desc";const t=e.domId?` id="${j(e.domId)}"`:"";return Vn({kind:"document",role:"chrome",...e},`<${n}${t}>${ae(e.text)}</${n}>`)}function Pi(e,n){return Vn({kind:"document",role:"defs",element:"definitions",...e},n)}function vi(){return Vn({kind:"document",id:"svg-close",role:"chrome",element:"close"},"</svg>")}function Hn(e){wu(e.id,e.open,e.transform);const n=e.join??"\n";const t=aa(e.open,e);const r=e.paint&&[...e.paint.opacity!==void 0?[`opacity="${j(e.paint.opacity)}"`]:[],...e.paint.fill!==void 0?[`fill="${j(e.paint.fill)}"`]:[]].join(" ");const i=r?e.open.replace(/^<g\b/,`<g ${r}`):e.open;const o=e.owner??{id:t.id,role:t.role};const s=e.children.map(c=>{if(c.node.owner||c.node.kind==="document"||c.node.kind==="group")return c;let d;if(ht(c.node)){const l={};for(const f of Object.keys(c.node))l[f]=f==="terminalProjection"?void 0:c.node[f];l.owner=o;d=l;pa(c.node,d)}else d={...c.node,owner:o};if($a(c.node))kt(c.node,d);return{...c,node:d}});const a=Ce(ca(i,t));return xt({kind:"group",id:e.id,role:e.role,open:a,close:e.close,children:s,join:n,channels:e.channels,identity:t,owner:o,...e.visibility?{visibility:e.visibility}:{},...e.transform?{transform:e.transform}:{},...e.paint?{paint:e.paint}:{}})}function Di(e,n){return Vn({kind:"document",element:"open",id:e.id,role:"prelude"},n)}function Mu(e){return La({shape:ln,group:Hn},e)}function La(e,n){return e.group({id:n.id,role:"icon",open:n.open,close:"</g>",...n.transform?{transform:n.transform}:{},...n.owner?{owner:n.owner}:{},...n.channels?{channels:n.channels}:{},join:n.join??"",children:n.paths.map((t,r)=>({indent:n.indent??0,node:e.shape({id:sa(n.id,"path",r),role:"icon",geometry:{kind:"path",d:t},paint:n.paint,...n.owner?{owner:n.owner}:{}})}))})}function Iu(e,n){if(e.kind!=="path"){if(n)throw new TypeError("External Scene closed topology is only valid for path geometry");return}if(e.subpaths!==void 0){throw new TypeError("External Scene v1 does not expose typed connector subpaths")}if(tr(e.d)!==1){throw new TypeError("External Scene v1 path geometry must contain exactly one SVG subpath")}const t=e.d.match(/[Zz]/g)?.length??0;if(t>1||n!==(t===1)){throw new TypeError("External Scene connector closed must exactly match its single SVG path contour")}Pu(e,n)}function Pu(e,n){const t=e.d.match(/[A-Za-z]|[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?/g)??[];let r=0;const i=[];const o=()=>{const a=t[r++];const c=Number(a);if(a===void 0||!Number.isFinite(c)){throw new TypeError("External Scene v1 path must use finite canonical M/L vertices")}return c};if(t[r++]!=="M"){throw new TypeError("External Scene v1 path must use one absolute M followed by absolute L vertices")}i.push({x:o(),y:o()});let s=false;while(r<t.length){const a=t[r++];if(a==="Z"){s=true;if(r!==t.length)throw new TypeError("External Scene v1 path Z must terminate the contour");break}if(a!=="L"){throw new TypeError("External Scene v1 path supports only absolute M/L/Z so route, bounds, hit geometry, and SVG cannot diverge")}i.push({x:o(),y:o()})}if(s!==n){throw new TypeError("External Scene connector closed must exactly match its single SVG path contour")}if(i.length!==e.points.length||i.some((a,c)=>{const d=e.points[c];return!d||d.x!==a.x||d.y!==a.y})){throw new TypeError("External Scene v1 path vertices must exactly match typed connector points")}}function Wa(e){switch(e.kind){case"shape":return ln({id:e.id,role:e.role,geometry:e.geometry,paint:e.paint,...e.channels?{channels:e.channels}:{}});case"text":return wt({id:e.id,role:e.role,text:e.text,x:e.x,y:e.y,fontSize:e.fontSize,fontWeight:400,display:"literal",anchor:e.anchor,baselineShift:0,paint:e.paint,...e.channels?{channels:e.channels}:{}});case"group":return Hn({id:e.id,role:e.role,open:"<g>",close:"</g>",children:e.children.map(n=>({node:n.node,indent:2})),...e.channels?{channels:e.channels}:{}});case"connector":{const n=e.markers.start;const t=e.markers.mid.length===1?e.markers.mid[0]:void 0;const r=e.markers.end;const i=e.route.geometry;const o={fill:"none",stroke:e.stroke.color,strokeWidth:String(e.stroke.width),...e.stroke.opacity===void 0?{}:{opacity:String(e.stroke.opacity)},...e.stroke.dash===void 0?{}:{strokeDasharray:typeof e.stroke.dash.array==="string"?e.stroke.dash.array:e.stroke.dash.array.join(" "),...e.stroke.dash.offset===void 0?{}:{strokeDashoffset:String(e.stroke.dash.offset)}},strokeLinecap:e.stroke.lineCap,strokeLinejoin:e.stroke.lineJoin,strokeMiterlimit:String(e.stroke.miterLimit),...e.stroke.paintOrder===void 0?{}:{paintOrder:e.stroke.paintOrder},...e.stroke.nonScaling?{vectorEffect:"non-scaling-stroke"}:{}};Iu(i,e.route.closed);return He({id:e.id,role:e.role,geometry:i,lineStyle:e.lineStyle,paint:o,endpoints:{...e.endpoints.from===void 0?{}:{from:e.endpoints.from},...e.endpoints.to===void 0?{}:{to:e.endpoints.to},...e.endpoints.start?.owner?{start:{owner:{...e.endpoints.start.owner}}}:{},...e.endpoints.end?.owner?{end:{owner:{...e.endpoints.end.owner}}}:{}},relationship:e.relationship,route:{closed:e.route.closed},markers:{...n?{start:n}:{},mid:t?[t]:[],...r?{end:r}:{}},labels:e.labels,...e.channels?{channels:e.channels}:{}})}}}var kr=G.maxNodes;var Er=G.maxFinalSvgBytes;function Va(e,n,t,r){if(e.kind==="document")return;let i;try{i=Wa(e)}catch(s){p(t,"SCENE_FIDELITY",n,s instanceof Error?s.message:String(s));return}const o=e.kind==="group"?i.owner:r;if(!we(e.owner,o))p(t,"SCENE_FIDELITY",`${n}.owner`,"must equal ownership derived from the external container tree");if(z(e)!==z(i)){p(t,"SCENE_FIDELITY",n,"must equal the canonical serialization generated from the external Scene fields")}if(!we(e.identity,i.identity)||!we(e.accessibility,i.accessibility)){p(t,"SCENE_FIDELITY",n,"typed identity and accessibility must equal the canonical generated projection")}if(e.kind==="group"&&i.kind==="group"){if(e.open!==i.open||e.close!==i.close||e.join!==i.join){p(t,"SCENE_FIDELITY",n,"external containers must use the canonical generated wrapper and join")}e.children.forEach((s,a)=>{if(s.indent!==2)p(t,"SCENE_FIDELITY",`${n}.children[${a}].indent`,"external container children must use the canonical two-space indent");Va(s.node,`${n}.children[${a}].node`,t,{id:e.identity?.id??e.id,role:e.role})})}if(e.kind==="text"&&i.kind==="text"){for(const s of["fontWeight","letterSpacing","display","textLayout","block","measurement","prepared"]){if(!we(e[s],i[s]))p(t,"SCENE_FIDELITY",`${n}.${s}`,"must equal text geometry derived by the external Scene builder")}}if(e.kind==="connector"&&i.kind==="connector"){const s=["endpoints","route","stroke","hit","terminalProjection"];for(const a of s){if(!we(e[a],i[a])){p(t,"SCENE_FIDELITY",`${n}.${a}`,"must equal semantics derived by the external Scene builder")}}if(!we(e.markers,i.markers)){p(t,"SCENE_FIDELITY",`${n}.markers`,"must equal the canonical external start/mid/end marker projection")}}}function vu(e,n){e.parts.forEach((t,r)=>Va(t,`scene.parts[${r}]`,n))}function Du(e,n){const t=[];let r=Math.max(0,e.length-1);if(r>Er){p(n,"SCENE_BOUNDS","scene.parts",`serialized SVG exceeds the aggregate ${Er}-byte limit`);return void 0}for(let i=0;i<e.length;i++){const o=e[i];if(!C(o))return void 0;let s;try{s=z(o)}catch{return void 0}const a=Math.max(0,Er-r);const c=te(s,a);if(c>a){p(n,"SCENE_BOUNDS","scene.parts",`serialized SVG exceeds the aggregate ${Er}-byte limit`);return void 0}r+=c;t.push(s)}return t.join("\n")}function ju(e,n,t,r){const i=n.diagnostics;const o=e.parts.length<=kr?Du(e.parts,i):void 0;const s=[];for(let g=0;g<Math.min(e.parts.length,kr);g++){const E=e.parts[g];if(C(E))s.push({part:E,index:g})}const a=s.filter(g=>g.part.kind==="document");const c=a.filter(g=>g.part.element==="open");const d=a.filter(g=>g.part.element==="title");const l=a.filter(g=>g.part.element==="description");const f=a.filter(g=>g.part.element==="definitions");const m=a.filter(g=>g.part.element==="close");if(c.length!==1||c[0]?.index!==0)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents require exactly one leading open mark");if(d.length!==1||d[0]?.index!==1)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents require exactly one title after the open mark");if(l.length>1)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents allow at most one description");if(f.length>1)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents allow at most one definitions mark");if(m.length!==1||m[0]?.index!==e.parts.length-1)p(i,"SCENE_DOCUMENT","scene.parts","external Scene documents require exactly one trailing close");const u=1+d.length+l.length+f.length;const y=[...d,...l,...f].map(g=>g.index);if(y.some((g,E)=>g!==E+1)||a.some(g=>!["open","close"].includes(String(g.part.element))&&g.index>u)){p(i,"SCENE_DOCUMENT","scene.parts","title, description, and typed definitions must be contiguous leading furniture")}const b=d[0]?.part;if(b&&(b.id!=="external-scene-title"||b.domId!=="external-scene-title")){p(i,"SCENE_DOCUMENT",`scene.parts[${d[0].index}]`,"external title must use the canonical generated identity")}if(b&&typeof b.text==="string"){const g=Ce(`<title id="external-scene-title">${ae(b.text)}</title>`);if(z(b)!==g)p(i,"SCENE_FIDELITY",`scene.parts[${d[0].index}]`,"external title must use the canonical generated serialization")}const h=l[0]?.part;if(h&&(h.id!=="external-scene-description"||h.domId!=="external-scene-description")){p(i,"SCENE_DOCUMENT",`scene.parts[${l[0].index}]`,"external description must use the canonical generated identity")}if(h&&typeof h.text==="string"){const g=Ce(`<desc id="${j("external-scene-description")}">${ae(h.text)}</desc>`);if(z(h)!==g)p(i,"SCENE_FIDELITY",`scene.parts[${l[0].index}]`,"external description must use the canonical generated serialization")}const k=f[0]?.part;if(k&&(k.id!=="external-scene-definitions"||!Array.isArray(k.markerResources)||k.markerResources.length===0)){p(i,"SCENE_DOCUMENT",`scene.parts[${f[0].index}]`,"external definitions must be the canonical non-empty typed marker resource mark")}const x=m[0]?.part;if(x&&x.id!=="svg-close")p(i,"SCENE_DOCUMENT",`scene.parts[${m[0].index}]`,"external close must use the canonical generated identity");const S=c[0]?.part;if(S){if(S.id!=="external-scene-prelude")p(i,"SCENE_DOCUMENT","scene.parts[0].id","external open mark must use the canonical generated identity");try{const g=e.colors;const E=["external-scene-title",...l.length?["external-scene-description"]:[]].join(" ");const R=Ce([Vo(e.width,e.height,g,Boolean(e.transparent),{attrs:{role:"img","aria-labelledby":E}}),Wo(g.font??"Inter",false,g.shadow,false)].join("\n"));if(z(S)!==R)p(i,"SCENE_SECURITY","scene.parts[0]","must be the canonical CSS-free external document serialization")}catch(g){p(i,"SCENE_SECURITY","scene.parts[0]",g instanceof Error?g.message:String(g))}}for(const g of n.markerReferences){const E=n.markerIds.get(g.id);if(!E)p(i,"SCENE_REFERENCE",g.path,`references undeclared marker "${g.id}"`);else if(E!==g.marker)p(i,"SCENE_REFERENCE",g.path,`must reference the exact typed marker resource "${g.id}"`)}for(const g of n.endpointReferences){if(!n.ids.has(g.id))p(i,"SCENE_REFERENCE",g.path,`references unknown Scene id "${g.id}"`)}if(t&&r&&i.length===0){const g=e.width;const E=e.height;const R=(w,I)=>{if(!C(w))return;if(["shape","connector","text"].includes(String(w.kind))){try{const O=Ei(w);if(O&&(O.x0<-1||O.y0<-1||O.x1>g+1||O.y1>E+1)){p(i,"SCENE_BOUNDS",I,`visual bounds [${O.x0}, ${O.y0}, ${O.x1}, ${O.y1}] escape the ${g}x${E} document`)}}catch(O){p(i,"SCENE_BOUNDS",I,O instanceof Error?O.message:String(O))}}if(w.kind==="group"&&Array.isArray(w.children)){for(let O=0;O<Math.min(w.children.length,kr);O++){const Y=w.children[O];if(C(Y))R(Y.node,`${I}.children[${O}].node`)}}};for(let w=0;w<Math.min(e.parts.length,kr);w++){R(e.parts[w],`scene.parts[${w}]`)}}return o}var Ua={document:(e,n,t,r)=>ju(e,n,t,r),canonical:vu};function zu(e,n={}){return Mi(e,n,true,Ua)}function Ga(e,n,t){const r=Mi(e,{mode:n},t||Te(e,{mode:n})==="external",Ua);if(!r.valid)throw new Z(r.diagnostics)}function th(e,n={}){const t=zu(e,n);if(!t.valid)throw new Z(t.diagnostics)}var Bu=globalThis.process?.env;var Lu=Bu?.AGENTIC_MERMAID_SCENE_ASSERTIONS==="1";var Ya=new WeakSet;function oh(e){Ya.add(e)}function Ha(e){return Lu||e!==void 0&&(Ya.has(e)||e.renderOptions.layoutSafety==="strict")}var Fu=64;var Wu=256;var Vu=G.maxNodes*16;var Uu=G.maxNodes*16;var Gu=G.maxTextBytes*8;var Xa=Object.freeze({maxObjects:G.maxNodes*4,maxTextBytes:G.maxTextBytes,maxArrayEntries:G.maxNodes,maxAggregateArrayEntries:Uu,maxDepth:G.maxDepth*4,maxPropertiesPerObject:Fu,maxAggregateProperties:Vu,maxPropertyKeyBytes:Wu,maxAggregatePropertyKeyBytes:Gu});var qa=Object.freeze({...Xa,maxObjects:G.maxNodes*8,maxTextBytes:G.maxTextBytes+G.maxAggregateSerializationBytes+G.maxFinalSvgBytes});function Ja(e,n,t="input"){const r=new WeakSet;const i=new WeakMap;let o=0;let s=0;let a=0;let c=0;let d=0;const l=(f,m,u)=>{if(typeof f==="string"){const b=Math.max(0,n.maxTextBytes-s);const h=te(f,b);if(h>b){throw new Error(`External Scene text values exceed the aggregate ${n.maxTextBytes}-byte limit`)}s+=h;return f}if(f===null||typeof f!=="object"){if(typeof f==="function"||typeof f==="symbol"||typeof f==="bigint"){throw new TypeError(`External Scene ${u} must be declarative data`)}return f}if(m>n.maxDepth){throw new Error("External Scene input object graph is too deeply nested")}if(++o>n.maxObjects){throw new Error("External Scene input object graph is too large")}if(r.has(f))throw new Error("External Scene input must be acyclic");const y=i.get(f);if(y!==void 0)return y;r.add(f);try{if(Array.isArray(f)){if(Object.getPrototypeOf(f)!==Array.prototype){throw new TypeError(`External Scene ${u} must be a plain array`)}const x=Reflect.getOwnPropertyDescriptor(f,"length");if(!x||!("value"in x)||typeof x.value!=="number"||!Number.isSafeInteger(x.value)||x.value<0){throw new TypeError(`External Scene ${u}.length must be a non-negative integer data property`)}const S=x.value;if(S>n.maxArrayEntries){throw new Error(`External Scene ${u} contains too many entries`)}a+=S;if(a>n.maxAggregateArrayEntries){throw new Error(`External Scene input exceeds the aggregate ${n.maxAggregateArrayEntries}-array-entry limit`)}const g=Reflect.ownKeys(f);if(g.length>S+1||!g.includes("length")){throw new TypeError(`External Scene ${u} must not define custom array properties or iterators`)}const E=new Map;E.set("length",x);for(const w of g){if(w==="length")continue;const I=Reflect.getOwnPropertyDescriptor(f,w);if(!I)throw new TypeError(`External Scene ${u} has an unstable property descriptor`);E.set(w,I)}for(const w of g){if(w==="length")continue;if(typeof w!=="string"||!/^(?:0|[1-9]\d*)$/.test(w)||Number(w)>=S){throw new TypeError(`External Scene ${u} must not define custom array properties or iterators`)}}const R=new Array(S);i.set(f,R);kt(f,R);for(let w=0;w<S;w++){const I=E.get(String(w));if(!I)throw new TypeError(`External Scene ${u} must not be sparse`);if(!("value"in I)||!I.enumerable){throw new TypeError(`External Scene ${u}[${w}] must be an enumerable data property`)}R[w]=l(I.value,m+1,`${u}[${w}]`)}return Object.freeze(R)}const b=Object.getPrototypeOf(f);if(b!==Object.prototype&&b!==null){throw new TypeError(`External Scene ${u} must be a plain object`)}const h=Reflect.ownKeys(f);if(h.length>n.maxPropertiesPerObject){throw new Error(`External Scene ${u} contains too many properties`)}c+=h.length;if(c>n.maxAggregateProperties){throw new Error(`External Scene input exceeds the aggregate ${n.maxAggregateProperties}-property limit`)}for(const x of h){if(typeof x!=="string")continue;const S=Math.max(0,n.maxAggregatePropertyKeyBytes-d);const g=te(x,Math.min(n.maxPropertyKeyBytes,S));if(g>n.maxPropertyKeyBytes){throw new Error(`External Scene ${u} contains a property key longer than ${n.maxPropertyKeyBytes} bytes`)}if(g>S){throw new Error(`External Scene property keys exceed the aggregate ${n.maxAggregatePropertyKeyBytes}-byte limit`)}d+=g}const k=Object.create(null);i.set(f,k);kt(f,k);for(const x of h){if(typeof x!=="string")throw new TypeError(`External Scene ${u} must not contain symbol keys`);const S=Reflect.getOwnPropertyDescriptor(f,x);if(!S||!S.enumerable){throw new TypeError(`External Scene ${u}.${x} must be an enumerable data property`)}let g;if("value"in S)g=S.value;else{g=fa(f,x,S);if(g===void 0)throw new TypeError(`External Scene ${u}.${x} must be an enumerable data property`)}Object.defineProperty(k,x,{value:l(g,m+1,`${u}.${x}`),enumerable:true,configurable:false,writable:false})}ia(f,k);return Object.freeze(k)}finally{r.delete(f)}};return l(e,0,t)}var Za=new WeakMap;function ji(e,n,t=true){Za.set(e,{mode:n,crossChecks:t})}function Ka(){throw new Z([{code:"SCENE_DOCUMENT",path:"scene.family",message:"source-only browser admission requires a built-in family"}])}function Qa(e,n,t,r,i=false){const o=typeof e==="object"&&e!==null?Za.get(e):void 0;if(i&&(n==="external"||o!==void 0&&(o.mode==="external"||Te(e)==="external")))Ka();const s=n!=="internal"||t;if(o!==void 0&&o.mode===(n??Te(e))){if((o.mode==="external"||t)&&!o.crossChecks){r(e,o.mode,true);ji(e,o.mode,true)}return e}const a=Ja(e,qa,"scene");if(i&&Te(a)==="external")Ka();r(a,n,n!=="internal"||t);ji(a,n??Te(a),s);return a}function Tt(e){return Yu(e)}function Yu(e,n,t=Ha()){return Qa(e,n,t,Ga)}var Hu=4;var tc="backend-claim-matrix@4";var _h=Object.freeze(["draw-node-determinism","draw-node-semantics","document-determinism","single-svg-document","finite-serialization","output-security","document-semantics","container-semantics","shape-semantics","text-semantics","connector-semantics","marker-semantics","data-mark-semantics","capability-claims"]);function Ku(){const e={bg:"#ffffff",fg:"#172033",line:"#334155",accent:"#a33b20"};const n={id:"backend-conformance-arrow",shape:"arrow",geometry:{kind:"path",d:"M 0 0 L 8 4 L 0 8 Z"},size:{width:8,height:8},viewBox:{x:0,y:0,width:8,height:8},ref:{x:8,y:4},units:"userSpaceOnUse",orient:"auto",overflow:"visible",paint:{fill:"#a33b20",stroke:"#334155",strokeWidth:"1"}};const t={id:"backend-conformance-gradient",units:"userSpaceOnUse",x1:0,y1:0,x2:120,y2:0,stops:[{offset:0,color:"#a33b20"},{offset:1,color:"#334155"}]};const r=Di({id:"backend-conformance-prelude",width:120,height:80,colors:e,transparent:true,font:"Inter",hasMonoFont:false},'<svg xmlns="http://www.w3.org/2000/svg" width="120" height="80" viewBox="0 0 120 80" role="img" aria-labelledby="backend-conformance-title backend-conformance-description">');const i=Sr({id:"backend-conformance-title",element:"title",text:"Backend conformance fixture",domId:"backend-conformance-title"});const o=Sr({id:"backend-conformance-description",element:"description",text:"A representative Scene document",domId:"backend-conformance-description"});const s=Pi({id:"backend-conformance-definitions",markerResources:[n],gradientResources:[t]},`<defs>
|
|
54
|
-
${Jr(n)}
|
|
55
|
-
${yi(t)}
|
|
56
|
-
</defs>`);const a=ln({id:"backend-conformance-node",role:"node",geometry:{kind:"rect",x:8,y:16,width:34,height:24,rx:3,ry:3},paint:{fill:"#f4efe6",stroke:"#334155",strokeWidth:"2"}});const c=Hn({id:"backend-conformance-container",role:"group",open:"<g>",paint:{opacity:"0.8",fill:"#f4efe6"},close:"</g>",children:[{node:a,indent:2}]});const d=ln({id:"backend-conformance-data-mark",role:"bar",geometry:{kind:"rect",x:92,y:48,width:16,height:20},paint:{fill:"#a33b20",stroke:"#334155",strokeWidth:"1"},channels:{value:.75,category:"fixture"}});const l=He({id:"backend-conformance-relation",role:"edge",geometry:{kind:"path",d:"M 42 28 L 62 14 Q 66 12 70 14 L 90 28",points:[{x:42,y:28},{x:66,y:12},{x:90,y:28}],markerMidpoints:[{x:62,y:14},{x:70,y:14}]},lineStyle:"dashed",paint:{fill:"none",stroke:"#334155",strokeWidth:"2",opacity:"0.65",strokeLinecap:"square",strokeLinejoin:"bevel",strokeMiterlimit:"7",strokeDasharray:"6 3",strokeDashoffset:"2",vectorEffect:"non-scaling-stroke",paintOrder:"stroke fill"},endpoints:{from:"backend-conformance-node",to:"backend-conformance-data-mark"},relationship:{kind:"dependency",direction:"forward"},route:{ownership:"layout",bendRadius:4,labelAnchors:[{x:66,y:8}],contours:[{start:{x:42,y:28},end:{x:90,y:28},closed:false,startTangent:{x:.8192319205190405,y:-.5734623443633283},endTangent:{x:.8192319205190405,y:.5734623443633283}}]},stroke:{opacity:.65,dash:{array:"6 3",offset:2},lineCap:"square",lineJoin:"bevel",miterLimit:7,pathLength:77,paintOrder:"stroke fill",mixBlendMode:"multiply",nonScaling:true},markers:{start:n,mid:[n],end:n},labels:[{id:"backend-conformance-relation-label",text:"depends on",anchor:{x:66,y:8},clearance:2,halo:{color:"#ffffff",width:3},paint:{fill:"#172033"},fontSize:11,textAnchor:"middle",visual:{kind:"inline"}}]});const f=He({id:"backend-conformance-freehand-relation",role:"edge",geometry:{kind:"line",x1:42,y1:58,x2:90,y2:58},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2",strokeLinecap:"square",strokeLinejoin:"miter",strokeMiterlimit:"7",vectorEffect:"non-scaling-stroke"},endpoints:{from:"backend-conformance-node",to:"backend-conformance-data-mark"},relationship:{kind:"association",direction:"forward"},stroke:{lineCap:"square",lineJoin:"miter",miterLimit:7,nonScaling:true},transform:{kind:"rotate",angle:90,cx:42,cy:58}});const m=He({id:"backend-conformance-closed-relation",role:"edge",geometry:{kind:"path",d:"M 10 65 L 25 50 L 40 65 Z",points:[{x:10,y:65},{x:25,y:50},{x:40,y:65}]},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2"},route:{ownership:"authored",closed:true}});const u=He({id:"backend-conformance-multi-relation",role:"edge",geometry:{kind:"path",d:"M 8 72 L 28 72 M 52 72 L 72 72",points:[{x:8,y:72},{x:28,y:72},{x:52,y:72},{x:72,y:72}],subpaths:[{points:[{x:8,y:72},{x:28,y:72}],closed:false},{points:[{x:52,y:72},{x:72,y:72}],closed:false}]},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2"},markers:{start:n,mid:[],end:n}});const y=wt({id:"backend-conformance-text",role:"member",text:"Fixture label",x:25,y:31,fontSize:12,anchor:"middle",paint:{fill:"#172033"},baselineShift:0});const b={family:"backend-conformance",width:120,height:80,colors:e,transparent:false,parts:[r,i,o,s,c,d,l,y,vi()]};const h=[{primitive:"document",node:r,requiredFragments:["<svg","backend-conformance-title"]},{primitive:"marker",node:s,requiredFragments:['id="backend-conformance-arrow"']},{primitive:"container",node:c,requiredFragments:['data-id="backend-conformance-container"','data-id="backend-conformance-node"']},{primitive:"shape",node:a,requiredFragments:['data-id="backend-conformance-node"','data-role="node"']},{primitive:"data-mark",node:d,requiredFragments:['data-id="backend-conformance-data-mark"','data-role="bar"']},{primitive:"connector",node:l,requiredFragments:['data-id="backend-conformance-relation"','data-role="edge"']},{primitive:"text",node:y,requiredFragments:['data-id="backend-conformance-text"',"Fixture label"]}];const k={seed:24301,style:{stroke:"freehand",fill:"wash",roughness:1,bowing:1,passes:2,strokeWidth:1.5,hachureAngle:-41,hachureGap:5,fillWeight:.8,washOpacity:.3,washEdge:.34,backdrop:"plain"}};return en({doc:b,context:k,probes:h,nodes:{root:r,marker:s,shape:a,container:c,dataMark:d,richConnector:l,freehandConnector:f,closedConnector:m,multiSubpathConnector:u,label:y}})}var M;function rc(e){const{id:n,capabilities:t,drawNode:r,render:i}=e;let o;return{id:n,capabilities:t,drawNode(s,a){return r.call(e,s,a)},render(s,a){const c=s===M?.doc?o??=Tt(s):s;return i.call(e,c,a)}}}function ec(e){return e.length===0?void 0:`missing ${e.join(", ")}`}function v(e,n,t){return e?{passed:e,observation:n}:{passed:e,observation:n,diagnostic:t}}function un(e,n){return e.split(n).length-1}function L(e,n){const t=e.drawNode(n,M.context);hr(t,"backend conformance drawNode output");return t}function pn(e){const n=e.render(M.doc,M.context);hr(n,"backend conformance render output");return n}function Re(e,n){const t=e.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0]??"";if(!/\sstroke-opacity="0"/.test(t))return e;return e.split("\n").slice(n.split("\n").length).join("\n")}function fn(e,n,t,r=()=>true){const i=L(e,t);const o=Re(i,z(t));const s=t.kind==="text"?i.includes(t.text)&&i.includes(`x="${t.x}"`)&&i.includes(`y="${t.y}"`):t.kind==="shape"&&t.geometry.kind==="rect"?i.includes(`x="${t.geometry.x}"`)&&i.includes(`y="${t.geometry.y}"`)&&i.includes(`width="${t.geometry.width}"`)&&i.includes(`height="${t.geometry.height}"`):t.kind==="connector"&&t.route.geometry.kind==="line"?i.includes(`x1="${t.route.geometry.x1}"`)&&i.includes(`y1="${t.route.geometry.y1}"`)&&i.includes(`x2="${t.route.geometry.x2}"`)&&i.includes(`y2="${t.route.geometry.y2}"`):t.kind==="connector"&&t.route.geometry.kind==="path"?i.includes(`d="${t.route.geometry.d}"`):i===z(t);const a=n.realization==="native"?s:n.realization==="emulated"&&i!==z(t)&&o.includes("<path");const c=n.target==="backend:hybrid"&&t.kind==="shape"?i.includes("fill-opacity=")&&i.includes('stroke="none"'):true;return v(a&&c&&r(i,o),n.realization==="native"?"authored serialization preserved":"typed mark re-realized by backend geometry",`backend output did not demonstrate ${n.realization} ${n.primitive}/${n.feature}`)}function Ie(e,n,t,r){const i=n.realization==="lossy"?M.nodes.freehandConnector:M.nodes.richConnector;const o=L(e,i);const s=Re(o,z(i));if(n.realization==="lossy"){return v(o!==z(i)&&s.includes('stroke="none"')&&!s.includes(`${t}="`),`visible freehand ribbon intentionally omits ${t}; typed semantic projection remains non-visual`,`lossy ${t} projection was not observable on the visible freehand ribbon`)}const a=n.realization==="native"?o.includes('data-id="backend-conformance-relation"'):o!==z(i);return v(a&&s.includes(`${t}="${r}"`),`${t}=${r} present on the ${n.realization==="native"?"authored":"visible generated"} stroke`,`${t}=${r} was not preserved by the ${n.realization} realization`)}function nc(e){return[e.primitive,e.feature,e.operation].join("/")}var Xu=Object.freeze({"document/identity/serialize":e=>{const n=pn(e);return v(un(n,"<svg")===1&&n.includes('viewBox="0 0 120 80"')&&n.trimEnd().endsWith("</svg>"),"one bounded SVG document serialized","document envelope or bounds were not preserved")},"document/resources/serialize":e=>{const n=pn(e);return v(n.includes("<defs>")&&n.includes('id="backend-conformance-arrow"')&&n.includes('<linearGradient id="backend-conformance-gradient"')&&ti(n).ok,"typed marker and linear-gradient resources serialized without external references","document resources were missing or unsafe")},"document/interaction/accessibility":e=>{const n=pn(e);return v(n.includes('role="img"')&&n.includes('aria-labelledby="backend-conformance-title backend-conformance-description"')&&n.includes('<title id="backend-conformance-title">Backend conformance fixture</title>')&&n.includes('<desc id="backend-conformance-description">A representative Scene document</desc>'),"root role, title, and description preserved","document accessibility projection was incomplete")},"text/geometry/render":(e,n)=>fn(e,n,M.nodes.label,t=>t.includes('x="25"')&&t.includes('y="31"')&&t.includes('font-size="12"')),"text/paint/render":(e,n)=>fn(e,n,M.nodes.label,t=>t.includes('fill="#172033"')),"text/labels/accessibility":e=>{const n=L(e,M.nodes.label);return v(n.includes("Fixture label"),"readable label text preserved","text label was not serialized")},"text/identity/serialize":e=>{const n=L(e,M.nodes.label);return v(n.includes('data-id="backend-conformance-text"')&&n.includes('data-role="member"'),"text DOM identity preserved","text DOM identity was lost")},"shape/geometry/render":(e,n)=>fn(e,n,M.nodes.shape),"shape/paint/render":(e,n)=>fn(e,n,M.nodes.shape,t=>t.includes("#334155")&&t.includes("#f4efe6")),"shape/identity/serialize":e=>{const n=L(e,M.nodes.shape);return v(n.includes('data-id="backend-conformance-node"')&&n.includes('data-role="node"'),"shape DOM identity preserved on backend output","shape DOM identity was lost")},"container/geometry/render":(e,n)=>{const t=L(e,M.nodes.container);return v(n.realization==="native"&&t.startsWith("<g ")&&t.trimEnd().endsWith("</g>")&&t.includes('data-id="backend-conformance-node"'),"container boundary and child composition preserved natively while children may be re-realized","container boundary/child geometry was not preserved as a native wrapper")},"container/paint/render":(e,n)=>{const t=L(e,M.nodes.container);return v(n.realization==="native"&&t.includes('opacity="0.8"')&&t.includes('fill="#f4efe6"'),"container opacity and fill cascade preserved natively","container paint cascade was not preserved as a native wrapper")},"container/identity/serialize":e=>{const n=L(e,M.nodes.container);return v(n.includes('data-id="backend-conformance-container"')&&n.includes('data-role="group"'),"container DOM identity preserved","container DOM identity was lost")},"connector/geometry/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));return v(n.realization==="native"?t.route.geometry.kind==="path"&&r.includes(`d="${t.route.geometry.d}"`):n.realization==="lossy"&&r!==z(t)&&r.includes("Q 66 12 70 14")&&!i.includes("Q 66 12 70 14"),n.realization==="lossy"?"exact curve retained on the semantic carrier while visible geometry uses typed routed contours":"authored connector geometry retained","connector geometry realization did not match its claim")},"connector/stroke/render":(e,n)=>fn(e,n,M.nodes.freehandConnector,t=>t.includes("#334155")),"connector/transform/render":(e,n)=>{const t=M.nodes.freehandConnector;const r=L(e,t);const i=Re(r,z(t));const o=r.includes('transform="rotate(90 42 58)"')&&he(t,{x:42,y:82})&&!he(t,{x:66,y:58});return v(o&&(n.realization==="native"?!/\sstroke-opacity="0"/.test(r.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0]??""):n.realization==="emulated"&&i.startsWith('<g transform="rotate(90 42 58)">')),"the same typed rotation governs SVG projection and world-space hit testing","connector transform was not preserved by both rendering and interaction")},"connector/topology/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));return v(n.realization==="native"?t.route.geometry.kind==="path"&&r.includes(`d="${t.route.geometry.d}"`):n.realization==="lossy"&&r!==z(t)&&r.includes("Q 66 12 70 14")&&!i.includes("Q 66 12 70 14"),n.realization==="lossy"?"path topology remains on the carrier while the visible sketch is a flattened contour projection":"authored path topology retained","connector topology realization did not match its claim")},"connector/subpaths/render":(e,n)=>{const t=M.nodes.multiSubpathConnector;const r=L(e,t);const i=Re(r,z(t));const o=he(t,{x:18,y:72})&&he(t,{x:62,y:72})&&!he(t,{x:40,y:72})&&t.route.contours.length===2&&t.route.contours.every(a=>a.startTangent?.x===1&&a.endTangent?.x===1);const s=n.realization==="native"?un(r.match(/^\s*<path\b[^>]*>/)?.[0]??"","M ")===2:n.realization==="emulated"&&r!==z(t)&&un(i,"<path")>=2;return v(o&&s,"two typed contours render and hit-test without a synthetic bridge","connector subpath boundaries were not preserved")},"connector/closedness/render":(e,n)=>{const t=M.nodes.closedConnector;const r=L(e,t);const i=Re(r,z(t));const o=he(t,{x:25,y:65});const s=o&&(n.realization==="native"?/\sZ(?:\s|"|")/.test(r.match(/^\s*<path\b[^>]*>/)?.[0]??""):n.realization==="lossy"&&r!==z(t)&&/\sZ(?:\s|"|")/.test(r.slice(0,r.indexOf("\n")))&&!i.includes("M 10 65 L 25 50 L 40 65 Z"));return v(s,n.realization==="lossy"?"authored closed carrier retained while visible ribbon is rebuilt from the routed points":"authored closed subpath retained","output did not demonstrate the declared closedness realization")},"connector/bend-radius/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));const o=r.includes("Q 66 12 70 14")&&t.route.bendRadius===4;return v(o&&(n.realization==="native"?!/\sstroke-opacity="0"/.test(r.match(/^\s*<path\b[^>]*>/)?.[0]??""):n.realization==="lossy"&&r!==z(t)&&!i.includes("Q 66 12 70 14")),n.realization==="lossy"?"exact rounded carrier retained while the visible sketch uses the declared routed projection":"authored rounded connector geometry retained","bend-radius realization did not match the declared capability")},"connector/stroke-opacity/render":(e,n)=>Ie(e,n,"stroke-opacity","0.65"),"connector/stroke-cap/render":(e,n)=>Ie(e,n,"stroke-linecap","square"),"connector/stroke-join/render":(e,n)=>Ie(e,n,"stroke-linejoin","bevel"),"connector/stroke-miter/render":(e,n)=>Ie(e,n,"stroke-miterlimit","7"),"connector/dash-array/render":(e,n)=>Ie(e,n,"stroke-dasharray","6 3"),"connector/dash-offset/render":(e,n)=>Ie(e,n,"stroke-dashoffset","2"),"connector/dash-restart/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));const o=un(i,'stroke-dasharray="6 3"');const s=un(i,"M");return v(n.realization==="native"?o===1:n.realization==="lossy"&&o>=1&&s>1,n.realization==="lossy"?`${s} generated stroke subpaths restart independently`:"one authored dashed path retains one dash phase","dash restart boundaries did not match the declared realization")},"connector/path-length/render":(e,n)=>{const t=M.nodes.richConnector;const r=L(e,t);const i=Re(r,z(t));const o=un(i,'pathLength="77"');const s=un(i,"M");return v(n.realization==="native"?o===1:n.realization==="lossy"&&o>=1&&s>1,n.realization==="lossy"?`one pathLength value spans ${s} generated stroke subpaths`:"one authored pathLength calibration retained","pathLength behavior did not match the declared realization")},"connector/paint-order/render":(e,n)=>Ie(e,n,"paint-order","stroke fill"),"connector/compositing/render":(e,n)=>Ie(e,n,"style","mix-blend-mode:multiply"),"connector/non-scaling-stroke/render":(e,n)=>Ie(e,n,"vector-effect","non-scaling-stroke"),"connector/marker-orientation/render":(e,n)=>{const t=pn(e);if(n.realization==="unsupported"){return v(t.includes('orient="auto"')&&!t.includes('marker-start="url(#backend-conformance-arrow)"')&&!t.includes('marker-mid="url(#backend-conformance-arrow)"')&&!t.includes('marker-end="url(#backend-conformance-arrow)"'),"marker resource remains serializable but the unsupported connector attachment is omitted","backend declared connector marker orientation unsupported but attached the marker")}const r=t.includes('orient="auto"')&&t.includes('marker-start="url(#backend-conformance-arrow)"')&&t.includes('marker-mid="url(#backend-conformance-arrow)"')&&t.includes('marker-end="url(#backend-conformance-arrow)"');const i=n.realization!=="projected"||t.includes('markerUnits="userSpaceOnUse"');return v((n.realization==="native"||n.realization==="projected")&&r&&i,n.realization==="projected"?"typed marker kept in the marker projection with projected units/orientation":"native marker orientation retained","marker orientation/carrier projection did not match the declaration")},"connector/marker-overflow/render":(e,n)=>{const t=pn(e);const r=t.includes('marker-start="url(#backend-conformance-arrow)"')&&t.includes('marker-end="url(#backend-conformance-arrow)"');if(n.realization==="unsupported"){return v(t.includes('overflow="visible"')&&!r&&!t.includes('marker-mid="url(#backend-conformance-arrow)"'),"marker resource remains serializable but its unsupported connector attachment is omitted","backend declared connector marker overflow unsupported but attached the marker")}return v((n.realization==="native"||n.realization==="projected")&&t.includes('overflow="visible"')&&r,n.realization==="projected"?"visible overflow remains in the typed marker resource projection":"native marker overflow retained","marker overflow or its connector attachment was not preserved")},"connector/endpoints/serialize":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('data-from="backend-conformance-node"')&&n.includes('data-to="backend-conformance-data-mark"'),"typed endpoint identities serialized on the semantic carrier","connector endpoint identities were not serialized")},"connector/direction/serialize":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('data-relationship="dependency"')&&n.includes('data-direction="forward"'),"typed relationship kind and direction serialized on the semantic carrier","connector relationship direction was not serialized")},"connector/labels/accessibility":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"typed connector label participates in the accessible relation name","connector label was absent from accessibility output")},"connector/labels/render":(e,n)=>{const t=L(e,M.nodes.richConnector);return v(n.realization==="native"&&t.includes('data-id="backend-conformance-relation-label"')&&t.includes('data-connector-label-for="backend-conformance-relation"')&&t.includes('x="66" y="6"')&&t.includes('font-size="11"')&&t.includes('fill="#172033"')&&t.includes('stroke="#ffffff"')&&t.includes('stroke-width="3"')&&t.includes('paint-order="stroke fill"')&&t.includes(">depends on</text>"),"typed label anchor, clearance, paint, typography, and halo render on the connector carrier","connector label visual semantics were not preserved")},"connector/relation/accessibility":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('data-from="backend-conformance-node"')&&n.includes('data-to="backend-conformance-data-mark"')&&n.includes('role="graphics-symbol"')&&n.includes('aria-roledescription="relation"')&&n.includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"typed relation and accessible label preserved on the carrier","connector relation accessibility semantics were lost")},"connector/markers/render":(e,n)=>{const t=L(e,M.nodes.richConnector);if(n.realization==="unsupported"){return v(!t.includes('marker-start="url(#backend-conformance-arrow)"')&&!t.includes('marker-mid="url(#backend-conformance-arrow)"')&&!t.includes('marker-end="url(#backend-conformance-arrow)"'),"backend omits the explicitly unsupported connector marker","backend declared connector markers unsupported but still serialized one")}return v((n.realization==="native"||n.realization==="projected")&&t.includes('marker-start="url(#backend-conformance-arrow)"')&&t.includes('marker-mid="url(#backend-conformance-arrow)"')&&t.includes('marker-end="url(#backend-conformance-arrow)"'),n.realization==="projected"?"marker retained in the typed marker projection":"native connector marker retained","connector marker projection did not match the declaration")},"connector/interaction/hit-test":e=>{const n=M.nodes.freehandConnector;const t=L(e,n);return v(t.includes('data-id="backend-conformance-freehand-relation"')&&he(n,{x:42,y:82})&&!he(n,{x:66,y:58}),"typed hit geometry remains aligned with the backend-preserved connector carrier","connector carrier or typed hit geometry was not preserved")},"connector/hit-geometry/hit-test":e=>{const n=M.nodes.multiSubpathConnector;const t=L(e,n);return v(t.includes('data-id="backend-conformance-multi-relation"')&&he(n,{x:18,y:72})&&!he(n,{x:40,y:72}),"typed hit geometry preserves contour gaps independently of backend artwork","connector hit geometry did not preserve typed contour boundaries")},"connector/identity/serialize":e=>{const n=L(e,M.nodes.richConnector);return v(n.includes('data-id="backend-conformance-relation"')&&n.includes('data-role="edge"'),"connector DOM identity preserved on carrier","connector DOM identity was lost")},"marker/geometry/render":(e,n)=>{const t=L(e,M.nodes.marker);return v((n.realization==="native"||n.realization==="projected")&&t.includes("M 0 0 L 8 4 L 0 8 Z")&&t.includes('viewBox="0 0 8 8"'),n.realization==="projected"?"typed marker geometry reserialized in the marker resource projection":"native marker geometry retained","marker geometry was not present in backend output")},"marker/paint/render":(e,n)=>{const t=L(e,M.nodes.marker);return v((n.realization==="native"||n.realization==="projected")&&t.includes('fill="#a33b20"')&&t.includes('stroke="#334155"'),n.realization==="projected"?"typed marker paint retained in the marker resource projection":"native marker paint retained","marker paint was not present in backend output")},"marker/identity/serialize":e=>{const n=L(e,M.nodes.marker);return v(n.includes('id="backend-conformance-arrow"'),"marker resource identity retained","marker resource identity was lost")},"data-mark/geometry/render":(e,n)=>fn(e,n,M.nodes.dataMark),"data-mark/paint/render":(e,n)=>fn(e,n,M.nodes.dataMark,t=>t.includes("#a33b20")&&t.includes("#334155")),"data-mark/identity/serialize":e=>{const n=L(e,M.nodes.dataMark);return v(n.includes('data-id="backend-conformance-data-mark"')&&n.includes('data-role="bar"'),"quantitative mark DOM identity retained","quantitative mark DOM identity was lost")}});function qu(e){return ri.includes(e.primitive)&&bs.includes(e.feature)&&hs.includes(e.operation)}function Ju(e){return e.capabilities.map(n=>{const t=ii(n);const r=Xu[nc(n)];const i={claimKey:t,target:n.target,primitive:n.primitive,feature:n.feature,operation:n.operation,realization:n.realization,...n.diagnostic?{limitation:n.diagnostic}:{}};if(!r){return qu(n)?{...i,status:"failed",diagnostic:"No executable witness is registered for this core claim."}:{...i,status:"unverified-extension",diagnostic:"Namespaced extension claim is outside the built-in witness vocabulary."}}const o=`${tc}/${nc(n)}`;try{const s=r(e,n);return{...i,witnessId:o,status:s.passed?"passed":"failed",observation:s.observation,...s.diagnostic?{diagnostic:s.diagnostic}:{}}}catch(s){return{...i,witnessId:o,status:"failed",diagnostic:`Witness threw ${s instanceof Error?s.message:String(s)}`}}})}function zi(e,n=e.id){M??=Or(void 0,Ku);const t=[];const r=(x,S,g)=>{t.push(Object.freeze({id:x,passed:S,...g?{diagnostic:g}:{}}))};const i=[];const o=[];for(const x of M.probes){try{const S=L(e,x.node);const g=L(e,x.node);if(typeof S!=="string"||typeof g!=="string"){i.push(`${x.primitive} returned a non-string`);o.push(`${x.primitive} returned a non-string`);continue}if(S!==g)i.push(`${x.primitive} changed between identical calls`);const E=x.requiredFragments.filter(R=>!S.includes(R));if(E.length>0)o.push(`${x.primitive} ${ec(E)}`)}catch(S){const g=`${x.primitive} threw ${S instanceof Error?S.message:String(S)}`;i.push(g);o.push(g)}}r("draw-node-determinism",i.length===0,i.join("; ")||void 0);r("draw-node-semantics",o.length===0,o.join("; ")||void 0);let s="";let a="";let c;try{s=pn(e);a=pn(e);if(typeof s!=="string"||typeof a!=="string"){c="render must return a string";s=typeof s==="string"?s:"";a=typeof a==="string"?a:""}else if(s!==a){c="render changed between identical calls"}}catch(x){c=`render threw ${x instanceof Error?x.message:String(x)}`}r("document-determinism",c===void 0,c);const d=ls(s);r("single-svg-document",d,d?void 0:"render must return one well-formed namespaced SVG document");const l=s.match(/\b(?:NaN|Infinity|undefined)\b/)?.[0];r("finite-serialization",!l,l?`serialized ${l}`:void 0);const f=ti(s);let m;try{Kt(s,"default")}catch(x){m=x instanceof Error?x.message:String(x)}const u=f.ok&&m===void 0;r("output-security",u,u?void 0:[m,f.ok?void 0:`unsafe SVG constructs: ${f.refs.join(", ")}`].filter(Boolean).join("; "));const y=[["document-semantics",['aria-labelledby="backend-conformance-title backend-conformance-description"','<title id="backend-conformance-title">Backend conformance fixture</title>','<desc id="backend-conformance-description">A representative Scene document</desc>']],["container-semantics",['data-id="backend-conformance-container"','data-role="group"']],["shape-semantics",['data-id="backend-conformance-node"','data-role="node"']],["text-semantics",['data-id="backend-conformance-text"','data-role="member"',"Fixture label"]],["connector-semantics",['data-id="backend-conformance-relation"','data-role="edge"','data-from="backend-conformance-node"','data-to="backend-conformance-data-mark"','role="graphics-symbol"','aria-roledescription="relation"','aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"']],["marker-semantics",['id="backend-conformance-arrow"']],["data-mark-semantics",['data-id="backend-conformance-data-mark"','data-role="bar"']]];for(const[x,S]of y){const g=S.filter(E=>!s.includes(E));r(x,g.length===0,ec(g))}const b=Ju(e);const h=b.filter(x=>x.status==="failed");r("capability-claims",h.length===0,h.map(x=>`${x.primitive}/${x.feature}/${x.operation}: ${x.diagnostic??"failed"}`).join("; ")||void 0);const k={version:Hu,fixtureId:tc,backendId:n,contracts:{scene:Ut,outputSecurity:cs},directOutputs:["svg"],passed:t.every(x=>x.passed),checks:t,claims:b};return en(k)}var ic=Symbol();function Ih(){const e={begin(n,t){e.scene=t;const r=new Map(t.parts.map((i,o)=>[i,o]));n[ic]=(i,o)=>{if(i.kind==="document")return o;const s=r.get(i);if(s===void 0)throw new Error("Resolved Scene part is not in the rendered document");return`<!--am-part-start:${s}-->${o}<!--am-part-end:${s}-->`}},finish(n){return Zu(n,e)}};return e}function oc(e,n,t){return e[ic]?.(n,t)??t}function Zu(e,n){const t=[];const r=e.replace(/<!--am-part-(start|end):(\d+)-->/g,(a,c,d,l)=>{t.push({start:l,end:l+a.length,owner:c==="start"?Number(d):-1});return""});const i=new Set(t.filter(a=>a.owner>=0).map(a=>a.owner));n.scene?.parts.forEach((a,c)=>{if(a.kind!=="document"&&!i.has(c))throw new Error(`Resolved Scene part "${a.id}": backend did not report ownership`)});let o=0,s=-1;n.owners=Be(e).map(a=>{while(o<t.length&&t[o].end<=a.start)s=t[o++].owner;return s});return r}function Gh(e){if(e===void 0)return void 0;if(typeof e!=="object"&&typeof e!=="function"||e===null){throw new TypeError("backendPolicy must be an object with a selectBackend function")}const n=e.selectBackend;if(typeof n!=="function"){throw new TypeError("backendPolicy.selectBackend must be a function")}let t;t=Object.freeze({selectBackend(r){return Reflect.apply(n,t,[r])}});return t}function Yh(e,n,t,r){return[e,...r.map(i=>St(i.serialized,i.indent)),n].join(t)}function Qu(e,n){if(!n.style||e.transparent)return"";return`<rect width="${U(e.width)}" height="${U(e.height)}" fill="var(--bg)" data-backdrop="page" />`}var mn={id:"default",capabilities:Ss("backend:default","crisp"),drawNode(e){return z(e)},render(e,n){const t=Tt(e);const r=Qu(t,n);return t.parts.map((i,o)=>{const s=oc(n,i,z(i));return r&&o===0?`${s}
|
|
57
|
-
${r}`:s}).join("\n")}};var Bi=new WeakSet([mn.render]);var ef=Object.getOwnPropertyDescriptors(mn);var Li;function nf(e){if(e!==mn)return false;for(const n of["id","capabilities","drawNode","render"]){const t=Object.getOwnPropertyDescriptor(e,n);if(!t||!("value"in t)||t.value!==ef[n].value)return false}return true}function Hh(e){return e===mn&&Bi.has(e.render)}function Kh(e){return Li!==void 0&&e===Li}var cc="1.0.0";var tf=Object.freeze({core:Ve,scene:"^2.0.0"});var rf=Object.freeze({owner:"agentic-mermaid",source:"built-in",reference:"src/scene/backend.ts"});var of=Object.freeze({owner:"host",source:"in-process"});var Kn=new Map;var Fi=new Map;var wr=new Map;var Rt;var xe=null;function sf(e,n,t){let r;let i=false;return{running:()=>i,report:()=>{if(r)return r;const o=xe;xe=n;i=true;try{r=zi(t?rc(e):e,n)}finally{i=false;xe=o}return r}}}function af(e,n){if(e.passed)return;const t=e.checks.filter(r=>!r.passed).map(r=>`${r.id}${r.diagnostic?`: ${r.diagnostic}`:""}`);throw new Error(`Built-in backend "${n}" failed SVG conformance: ${t.join("; ")}`)}function cf(e,n,t){const r=e;const{drawNode:i,render:o}=e;let s=false;const a=()=>{if(s||t.running())return;const c=t.report();af(c,n);s=true};r.drawNode=(c,d)=>{a();return i.call(e,c,d)};r.render=(c,d)=>{a();return o.call(e,c,d)};if(e===mn&&Bi.has(o))Bi.add(r.render);return e}function Wi(){if(xe!==null){throw new Error(`Backend registry mutation is forbidden while candidate "${xe}" is undergoing conformance`)}}function dc(e,n){return En({id:e,kind:"backend",version:n.version??cc,compatibility:n.compatibility,provenance:n.provenance??of})}function lc(e,n){if(!Array.isArray(e.capabilities)){throw new Error(`Backend "${e.id}" must declare capability claims`)}const t=Xt(e.capabilities);if(!t.valid)throw new Error(`Backend "${e.id}" has invalid capabilities: ${t.diagnostics.join("; ")}`);if(e.capabilities.length===0)throw new Error(`Backend "${e.id}" must declare capability claims`);const r=e.capabilities.find(o=>o.target!==n);if(r)throw new Error(`Backend "${e.id}" capability target must be "${n}"`);const i=e.capabilities.find(o=>!o.evidence?.trim());if(i){throw new Error(`Backend "${e.id}" capability ${i.primitive}/${i.feature}/${i.operation} must declare evidence`)}for(const{primitive:o,feature:s,operation:a}of xs){if(!e.capabilities.some(c=>c.primitive===o&&c.feature===s&&c.operation===a)){throw new Error(`Backend "${e.id}" must declare an evidenced essential ${o}/${s}/${a} capability`)}}}function uc(e){const n=["target","primitive","feature","operation","realization","evidence","diagnostic"];return Object.freeze(e.map(t=>{const r=(typeof t==="object"||typeof t==="function")&&t!==null;const i=r?t:void 0;const o=i?{...i}:{};if(i){for(const s of n){if(!Object.prototype.hasOwnProperty.call(o,s)){o[s]=Reflect.get(i,s)}}}return Object.freeze(o)}))}function Cr(e,n,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:Reflect.get(n,t)}function df(e){if(typeof e!=="object"&&typeof e!=="function"||e===null){throw new TypeError("registerBackend requires a backend object")}const n=e;const t={...n};const r=Cr(t,n,"id");if(typeof r!=="string")throw new TypeError("registerBackend id must be a string");const i=Cr(t,n,"capabilities");if(!Array.isArray(i)){throw new Error(`Backend "${r}" must declare capability claims`)}const o=Cr(t,n,"drawNode");const s=Cr(t,n,"render");const a={...t,id:r,capabilities:uc(i),drawNode(c,d){return o.call(a,c,d)},render(c,d){return s.call(a,Tt(c),d)}};return Object.freeze(a)}function lf(e){const n=e;n.capabilities=uc(e.capabilities);return Object.freeze(e)}function Xh(e,n){Wi();xe="<unread>";try{if(!n||typeof n!=="object"){throw new TypeError("registerBackend options with explicit core and Scene compatibility ranges are required")}const t=df(e);const r=t.id;xe=r;const i=Je(r);if(!i||i.kind!=="backend"){throw new Error(`registerBackend id "${r}" must use the "backend:" namespace`)}const o=dc(r,n);Hr(o,"core");Hr(o,"scene");lc(t,r);const s=zi(t,r);if(!s.passed){const c=s.checks.filter(d=>!d.passed).map(d=>`${d.id}${d.diagnostic?`: ${d.diagnostic}`:""}`);throw new Error(`Backend "${r}" failed registration SVG conformance: ${c.join("; ")}`)}st(Kn,{identity:o,value:t});wr.set(r,()=>s);Rt=void 0;const a=Kn.get(r);return()=>{Wi();if(Kn.get(r)!==a)return;Kn.delete(r);wr.delete(r);Rt=void 0}}finally{xe=null}}function fc(e){Wi();xe="<built-in>";try{const n=e.id;const t=ot("backend",n);xe=t;const r=Fi.get(n);if(r!==void 0)throw new Error(`Backend input name "${n}" already selects "${r}"`);const i=nf(e);lc(e,t);const o=sf(e,t,i);const s=lf(cf(e,n,o));st(Kn,{identity:dc(t,{version:cc,compatibility:tf,provenance:rf}),value:s});wr.set(t,o.report);Fi.set(n,t);if(i)Li=s;Rt=void 0}finally{xe=null}}function sc(){return Object.freeze(Array.from(Kn.values(),({identity:e,value:n})=>{const t=wr.get(e.id);return Object.freeze({identity:e,backend:n,inputName:Array.from(Fi.entries()).find(([,r])=>r===e.id)?.[0]??e.id,get conformance(){return t()}})}))}function ac(e,n){return e.find(t=>t.identity.id===n||t.inputName===n)}function uf(e,n){Xe("backend-registry",n?"bypass":Rt?"hit":"miss");const t=n?sc():Rt??=sc();const r=ac(t,e);if(!n)return r;const i=n.selectBackend(Object.freeze({requestedId:e,...r?{canonicalId:r.identity.id}:{},registered:t}));if(i===null)return void 0;if(typeof i==="string")return ac(t,i);return r}function qh(e,n){return uf(e,n)?.backend}fc(mn);function pc(e){let n=2166136261;for(let t=0;t<e.length;t++){n^=e.charCodeAt(t);n=Math.imul(n,16777619)}return n>>>0}function Qh(...e){return pc(e.join("|")).toString(36)}function eb(e){let n=e>>>0;return()=>{n|=0;n=n+1831565813|0;let t=Math.imul(n^n>>>15,1|n);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)/4294967296}}function nb(e,n,t){return pc(`${e>>>0}|${n}|${t}`)}export{Br as a,We as b,od as c,Se as d,fe as e,Lr as f,Wr as g,Vr as h,Fr as i,Fe as j,Sn as k,Ft as l,yp as m,it as n,hp as o,ge as p,bp as q,Io as r,ie as s,_o as t,ad as u,xp as v,ga as w,Vs as x,sg as y,Ae as z,nr as A,ro as B,io as C,xf as D,oo as E,so as F,Sf as G,Ar as H,ne as I,gc as J,De as K,$r as L,Sc as M,kc as N,pf as O,mf as P,Ec as Q,Cc as R,hf as S,Or as T,je as U,jc as V,po as W,Zn as X,Mt as Y,Bc as Z,Ne as _,$f as $,Hc as aa,bn as ba,Le as ca,zt as da,Bt as ea,rt as fa,np as ga,tp as ha,rp as ia,ip as ja,xn as ka,ia as la,gt as ma,$g as na,vn as oa,de as pa,rn as qa,Ee as ra,rr as sa,Xs as ta,qs as ua,J as va,Bn as wa,Xg as xa,cn as ya,qg as za,Jg as Aa,Sa as Ba,Ge as Ca,Kl as Da,zn as Ea,ba as Fa,Zg as Ga,vr as Ha,U as Ia,nt as Ja,So as Ka,up as La,Jc as Ma,Zc as Na,ed as Oa,jr as Pa,ae as Qa,j as Ra,fp as Sa,Xe as Ta,_f as Ua,If as Va,Be as Wa,Bf as Xa,Wc as Ya,bo as Za,Lf as _a,Ff as $a,Wf as ab,vt as bb,Vf as cb,kn as db,Cp as eb,Do as fb,wp as gb,Tp as hb,ce as ib,Dp as jb,K as kb,jp as lb,zp as mb,Bp as nb,Wo as ob,Vo as pb,Uo as qb,Yo as rb,Lp as sb,Fp as tb,Wp as ub,Vp as vb,ma as wb,Ve as xb,Ut as yb,qp as zb,Sd as Ab,Hr as Bb,kd as Cb,ot as Db,Je as Eb,En as Fb,Yr as Gb,st as Hb,ke as Ib,Ze as Jb,at as Kb,Ue as Lb,Yt as Mb,wn as Nb,Qe as Ob,Dd as Pb,Tn as Qb,Bd as Rb,Ig as Sb,sa as Tb,Pg as Ub,ca as Vb,oy as Wb,z as Xb,St as Yb,kt as Zb,dy as _b,im as $b,Ht as ac,Jr as bc,Zr as cc,Bg as dc,ht as ec,pa as fc,te as gc,se as hc,en as ic,F as jc,al as kc,cl as lc,qt as mc,Cm as nc,wm as oc,Es as pc,cs as qc,ls as rc,cm as sc,dm as tc,ti as uc,Kt as vc,um as wc,ri as xc,mm as yc,gm as zc,hs as Ac,bs as Bc,xs as Cc,sl as Dc,ym as Ec,Ss as Fc,hm as Gc,Xt as Hc,ln as Ic,He as Jc,wt as Kc,Au as Lc,Sr as Mc,Pi as Nc,vi as Oc,Hn as Pc,Di as Qc,La as Rc,Fa as Sc,On as Tc,Nn as Uc,$n as Vc,nn as Wc,Jt as Xc,El as Yc,Cl as Zc,Oe as _c,Zm as $c,Ol as ad,Qm as bd,_l as cd,Al as dd,lt as ed,eg as fd,ng as gd,tg as hd,Qh as id,eb as jd,nb as kd,ug as ld,he as md,fg as nd,gi as od,yi as pd,ea as qd,ru as rd,G as sd,Z as td,hr as ud,Su as vd,Iu as wd,zu as xd,th as yd,oh as zd,Ha as Ad,Xa as Bd,Ja as Cd,Tt as Dd,Yu as Ed,Hu as Fd,tc as Gd,_h as Hd,zi as Id,Ih as Jd,oc as Kd,Gh as Ld,Yh as Md,Qu as Nd,mn as Od,Hh as Pd,Kh as Qd,af as Rd,Xh as Sd,fc as Td,sc as Ud,uf as Vd,qh as Wd};
|
|
58
|
-
//# sourceMappingURL=chunk-OMY6NRQD.js.map
|