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.
Files changed (135) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/agent-core.d.ts +7 -7
  3. package/dist/agent-core.js +1 -1
  4. package/dist/agent.d.ts +7 -7
  5. package/dist/agent.js +1 -1
  6. package/dist/agentic-mermaid-mcp.js +1 -1
  7. package/dist/am.js +1 -1
  8. package/dist/browser-lazy/chunks/{agentic-producer-core-CC6OOLDW.js → agentic-producer-core-ECZ3CMZM.js} +1 -1
  9. package/dist/browser-lazy/chunks/{architecture-QUFVKYJR.js → architecture-H5LTMKQW.js} +6 -6
  10. package/dist/browser-lazy/chunks/{block-6J3Q63BO.js → block-566X6FNV.js} +5 -5
  11. package/dist/browser-lazy/chunks/{builtin-backends-7SOZZHPF.js → builtin-backends-VAFEZXKY.js} +6 -6
  12. package/dist/browser-lazy/chunks/{c4-SQVBZAKJ.js → c4-ZXFDLBFK.js} +5 -5
  13. package/dist/browser-lazy/chunks/{chunk-5X6MJX3H.js → chunk-2JQXRKBC.js} +1 -1
  14. package/dist/browser-lazy/chunks/{chunk-E2WMJZNM.js → chunk-37FZNMPR.js} +1 -1
  15. package/dist/browser-lazy/chunks/{chunk-TYZOZXUJ.js → chunk-3JTYTXA6.js} +6 -6
  16. package/dist/browser-lazy/chunks/{chunk-PQGPS2YV.js → chunk-4NILRBC7.js} +1 -1
  17. package/dist/browser-lazy/chunks/{chunk-AMJLVPUB.js → chunk-5LKPDHPC.js} +2 -2
  18. package/dist/browser-lazy/chunks/{chunk-BY2CPG6B.js → chunk-62MR3LWJ.js} +1 -1
  19. package/dist/browser-lazy/chunks/{chunk-J7FFAFQF.js → chunk-64JFHCJC.js} +1 -1
  20. package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
  21. package/dist/browser-lazy/chunks/{chunk-VWVZGQE2.js → chunk-6UOOATQR.js} +1 -1
  22. package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
  23. package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
  24. package/dist/browser-lazy/chunks/{chunk-5B2Z7575.js → chunk-A7V5VDKN.js} +1 -1
  25. package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
  26. package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
  27. package/dist/browser-lazy/chunks/{chunk-X2UYKWKM.js → chunk-G4JBA7HU.js} +3 -3
  28. package/dist/browser-lazy/chunks/{chunk-2UIA2IME.js → chunk-IUI4DYC3.js} +1 -1
  29. package/dist/browser-lazy/chunks/{chunk-QA6GJQ4X.js → chunk-J57YRC2M.js} +1 -1
  30. package/dist/browser-lazy/chunks/{chunk-BU5LHXNJ.js → chunk-LBXXKLIR.js} +3 -3
  31. package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
  32. package/dist/browser-lazy/chunks/{chunk-ICC7HBJX.js → chunk-O34YYEQV.js} +1 -1
  33. package/dist/browser-lazy/chunks/{chunk-UL6NDWLL.js → chunk-OBI5U5XU.js} +1 -1
  34. package/dist/browser-lazy/chunks/{chunk-YCEICNM6.js → chunk-OFOS57WQ.js} +1 -1
  35. package/dist/browser-lazy/chunks/{chunk-OZ443IVJ.js → chunk-PSZEE64O.js} +7 -7
  36. package/dist/browser-lazy/chunks/{chunk-SZELX2EJ.js → chunk-PXTLV57R.js} +1 -1
  37. package/dist/browser-lazy/chunks/{chunk-HLWUNUCM.js → chunk-QVSZOF5M.js} +1 -1
  38. package/dist/browser-lazy/chunks/{chunk-2GPK4VFF.js → chunk-TT5GR5EJ.js} +1 -1
  39. package/dist/browser-lazy/chunks/{chunk-DF6765YX.js → chunk-V6I2VGNQ.js} +5 -5
  40. package/dist/browser-lazy/chunks/{chunk-CN7WTBWB.js → chunk-VRZKI33U.js} +1 -1
  41. package/dist/browser-lazy/chunks/{chunk-2SH76OTH.js → chunk-XHU3A432.js} +1 -1
  42. package/dist/browser-lazy/chunks/{chunk-NO7ZIVRU.js → chunk-YVNJDVQO.js} +1 -1
  43. package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
  44. package/dist/browser-lazy/chunks/{class-5QA4SCTS.js → class-XIFNVBFE.js} +8 -8
  45. package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
  46. package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
  47. package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
  48. package/dist/browser-lazy/chunks/{eventmodeling-2BPLHWRN.js → eventmodeling-G7DITZX7.js} +10 -10
  49. package/dist/browser-lazy/chunks/{flowchart-NEIMZTB5.js → flowchart-SSFIU4EU.js} +1 -1
  50. package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
  51. package/dist/browser-lazy/chunks/{gantt-RDPIFYAF.js → gantt-HQNVDX2B.js} +6 -6
  52. package/dist/browser-lazy/chunks/{gitgraph-N4Y5RYB7.js → gitgraph-Z5MN6M6L.js} +4 -4
  53. package/dist/browser-lazy/chunks/{ishikawa-LD3YBDJN.js → ishikawa-UEERNFQV.js} +2 -2
  54. package/dist/browser-lazy/chunks/{journey-6YQR5DJX.js → journey-3BEWWGB5.js} +6 -6
  55. package/dist/browser-lazy/chunks/{kanban-PLMJ7NBW.js → kanban-2WFNCWLB.js} +10 -10
  56. package/dist/browser-lazy/chunks/{mermaid-yaml-runtime-QVYX4EWK.js → mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
  57. package/dist/browser-lazy/chunks/{mindmap-K2UBFO3Y.js → mindmap-R2C6SNYR.js} +4 -4
  58. package/dist/browser-lazy/chunks/{packet-CUW4QY6Y.js → packet-GMVCI5YZ.js} +3 -3
  59. package/dist/browser-lazy/chunks/{pie-7F7UUCG3.js → pie-WER45DKC.js} +7 -7
  60. package/dist/browser-lazy/chunks/{quadrant-TOONO2WC.js → quadrant-NCUPSFKN.js} +4 -4
  61. package/dist/browser-lazy/chunks/{radar-J6JVWVAX.js → radar-WLYS4YC5.js} +8 -8
  62. package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
  63. package/dist/browser-lazy/chunks/{requirement-CMAKDJPO.js → requirement-AK3NWMJ6.js} +7 -7
  64. package/dist/browser-lazy/chunks/{sankey-AWXQEP3F.js → sankey-C2DY6WVU.js} +4 -4
  65. package/dist/browser-lazy/chunks/{sequence-Q2RJRB4L.js → sequence-D4WJB44W.js} +1 -1
  66. package/dist/browser-lazy/chunks/{state-WRBFQEDX.js → state-YUQVESE7.js} +2 -2
  67. package/dist/browser-lazy/chunks/{timeline-D2KILFXM.js → timeline-BMBJJXWR.js} +4 -4
  68. package/dist/browser-lazy/chunks/{treemap-N3VYX5D4.js → treemap-B66XBZZ6.js} +3 -3
  69. package/dist/browser-lazy/chunks/{xychart-G73OGK66.js → xychart-HAVFROGT.js} +6 -6
  70. package/dist/browser-lazy/chunks/{zenuml-H4BXNYXR.js → zenuml-62RLYFWP.js} +7 -7
  71. package/dist/browser-lazy/index.js +1 -1
  72. package/dist/browser.global.js +507 -507
  73. package/dist/{chunk-DQDKA5ND.js → chunk-2DNGDTJD.js} +2 -2
  74. package/dist/{chunk-GVCHLSHH.js → chunk-4F2UGYTM.js} +2 -2
  75. package/dist/{chunk-H3NCS2XZ.js → chunk-7XYB2LNC.js} +2 -2
  76. package/dist/chunk-DOFB572I.js +58 -0
  77. package/dist/chunk-EHJI3QYE.js +52 -0
  78. package/dist/{chunk-UA234O4M.js → chunk-HINRNKPO.js} +2 -2
  79. package/dist/{chunk-JZOJ4YGS.js → chunk-KXMANAST.js} +33 -33
  80. package/dist/{chunk-7CRDX2QR.js → chunk-U4MT3RRE.js} +2 -2
  81. package/dist/{chunk-NKNFOREZ.js → chunk-WYIB6BUR.js} +2 -2
  82. package/dist/{cli-YGGTJZH7.js → cli-ZYIDBYNS.js} +2 -2
  83. package/dist/{index-EeXqJXr5.d.ts → index-Bvhprdxz.d.ts} +3 -3
  84. package/dist/index.d.ts +4 -4
  85. package/dist/index.js +1 -1
  86. package/dist/{mcp-cli-63DYXTVD.js → mcp-cli-YVDCORWA.js} +2 -2
  87. package/dist/{paint-certification-6rwQjIv_.d.ts → paint-certification-BoLyr006.d.ts} +2 -2
  88. package/dist/{server-5NEOHOFS.js → server-4JGAVXR3.js} +2 -2
  89. package/dist/{svg-styles-BdnoM7AT.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
  90. package/dist/svg-styles.d.ts +1 -1
  91. package/dist/svg-styles.js +1 -1
  92. package/dist/svg.d.ts +4 -4
  93. package/dist/svg.js +1 -1
  94. package/dist/{types-BcS52Mjt.d.ts → types-CLVJCaH2.d.ts} +1 -1
  95. package/dist/zenuml/chunks/{appearance-UOQ5KA6O.js → appearance-5RM5MVM2.js} +1 -1
  96. package/dist/zenuml/chunks/{builtin-backends-KDKE7YHO.js → builtin-backends-UTNWL4N3.js} +11 -11
  97. package/dist/zenuml/chunks/{chunk-QWX77U7G.js → chunk-3A6S6GNB.js} +2 -2
  98. package/dist/zenuml/chunks/{chunk-OXQWRSBM.js → chunk-55WS466K.js} +11 -11
  99. package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
  100. package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
  101. package/dist/zenuml/chunks/{chunk-RZ6XK5CD.js → chunk-IARQ24W3.js} +13 -13
  102. package/dist/zenuml/chunks/{chunk-42DXZ5C6.js → chunk-ZNZRIISS.js} +2 -2
  103. package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
  104. package/dist/zenuml/chunks/{mermaid-yaml-runtime-KZVU74WU.js → mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
  105. package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
  106. package/dist/zenuml/chunks/{zenuml-EA2ZFRUX.js → zenuml-N3LZMB2G.js} +8 -8
  107. package/dist/zenuml.d.ts +2 -2
  108. package/dist/zenuml.js +1 -1
  109. package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
  110. package/docs/api.md +1 -1
  111. package/package.json +1 -1
  112. package/server.json +2 -2
  113. package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +0 -1
  114. package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +0 -6
  115. package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +0 -1
  116. package/dist/browser-lazy/chunks/chunk-J35HAQQF.js +0 -20
  117. package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +0 -1
  118. package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +0 -20
  119. package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +0 -11
  120. package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +0 -3
  121. package/dist/chunk-EHCMJUMD.js +0 -52
  122. package/dist/chunk-OMY6NRQD.js +0 -58
  123. package/dist/zenuml/chunks/chunk-7TVYPTDW.js +0 -1
  124. package/dist/zenuml/chunks/chunk-RLJEI7YN.js +0 -29
  125. package/dist/zenuml/chunks/render-core-V5RQ737O.js +0 -3
  126. /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
  127. /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
  128. /package/dist/browser-lazy/chunks/{chunk-CQE4HQEW.js → chunk-HJVO5VC3.js} +0 -0
  129. /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
  130. /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
  131. /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
  132. /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
  133. /package/dist/browser-lazy/chunks/{chunk-VQYYGAXP.js → chunk-TLFX3U6S.js} +0 -0
  134. /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
  135. /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
@@ -0,0 +1,58 @@
1
+ import{a as to,c as je,d as Ot,e as ro,f as io}from"./chunk-3LGLPG33.js";import{a as Sc}from"./chunk-VUFVLGTH.js";var kc=1;var Ec=/^[a-z][a-z0-9.-]*:[a-z0-9][a-z0-9._/-]*$/;var Cc=/^(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 wc=new Set(["required","preferred","optional"]);function Mt(e){return Ec.test(e)}function ze(e){if(typeof e!=="string")return void 0;const n=e.match(Cc);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 Mr(e,n){if(e.length!==n.length)return e.length<n.length?-1:1;return e===n?0:e<n?-1:1}function Tc(e,n){return Mr(e.major,n.major)||Mr(e.minor,n.minor)||Mr(e.patch,n.patch)}function _r(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=ze(t?.[2]??"");if(!t||!r)return false;return!r.prerelease||t[1]===void 0}function Ar(e,n){const t=ze(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=ze(o?.[2]??"");if(!o||!s)return false;const a=Tc(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 Rc(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(!Mt(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(!ze(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(!Mt(s.id))throw new Error(`Invalid capability id "${s.id}"`);if(!wc.has(s.level)){throw new Error(`Capability "${s.id}" has invalid requirement level "${String(s.level)}"`)}if(!_r(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":Ar(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:kc,accepted:o,resolutions:Object.freeze(i)})}var Nc=Object.freeze([{id:"core:render-request",version:"1.0.0"},{id:"core:family-descriptor",version:"1.0.0"}].map(e=>Object.freeze(e)));function oo(e,n,t,r){const i={id:`output:${e}`,version:"1.0.0"};const o=to.includes(e);return Rc([...Nc,...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 xf(e,n){return oo(e,n?[n]:[],n?[{id:n.id,range:n.version,level:"required"}]:[],true)}function Sf(e,n){return oo(e,n.offers,n.requirements,n.outputAvailable)}var $c=Object.freeze({id:"agentic-mermaid:inter-estimate",version:"4.0.0"});function Oc(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===$c.id)throw new TypeError("textMeasurement.id is reserved for the deterministic default");if(typeof t!=="string"||t.length>80||!ze(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 so=1e6;var Mc=2e4;function Cf(e,n){const t=Oc(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=Ir(void 0,()=>t.measure(Object.freeze({...o,fontFamily:s})));if(typeof d!=="number"||!Number.isFinite(d)||d<0||d>so){throw new RangeError(`Text measurement profile ${r.id}@${r.version} must return a finite width between 0 and ${so} pixels`)}if(i.size<Mc)i.set(a,d);return d}})}var Jn;function Ir(e,n){const t=Jn;Jn=e;try{return n()}finally{Jn=t}}function Be(){return Jn!==void 0}function Pr(e){return Jn?.width(e)}var _c=[[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 Ac=[[4352,4447],[12592,12687],[44032,55215]];var Ic=[[9001,9002],[65040,65049],[65072,65135],[65280,65376],[65504,65510]];var Pc=[[127744,129791]];var ao=[127995,127999];var vc=[[768,879],[6832,6911],[7616,7679],[8400,8447],[65056,65071]];var Dc=new Set([8203,8204,8205,65279]);var co=65038;var lo=65039;var Tf=8205;function Zn(e,n){for(const[t,r]of n)if(e>=t&&e<=r)return true;return false}function uo(e){return Zn(e,_c)||Zn(e,Ac)||Zn(e,Ic)||Zn(e,Pc)}function fo(e){return Zn(e,vc)||Dc.has(e)}function Rf(e){return e>=ao[0]&&e<=ao[1]}var vr="<\\/?(?:b|strong|i|em|u|s|del)\\s*>";var po=/<(\/)?(?:(b|strong)|(i|em)|(u)|(s|del))\s*>/gi;var Qn=new RegExp(vr,"i");function _t(e){const n=[];let t=false;let r=false;let i=false;let o=false;let s=0;po.lastIndex=0;let a;while((a=po.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 At(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 jc=new Intl.Segmenter(void 0,{granularity:"grapheme"});var zc=/^[\x20-\x7e]*$/;function re(e){if(zc.test(e))return e.split("");return Array.from(jc.segment(e),n=>n.segment)}var Bc=new Set(["i","l","t","f","j","I","1","!","|",".",",",":",";","'"]);var Lc=new Set(["W","M","w","m","@","%"]);var mo=new Set(["W","M"]);var Fc=new Set(["(",")","[","]","{","}","/","\\","-",'"',"`"]);function go(e){return fo(e)||e===co||e===lo}function yo(e){return uo(e)}var Wc=/\p{Emoji_Presentation}|\p{Extended_Pictographic}/u;function ho(e){return Wc.test(e)}function hn(e){const n=e.codePointAt(0);if(n===void 0)return 0;if(go(n))return 0;if(yo(n)||ho(e))return 2;if(e===" ")return .3;if(mo.has(e))return 1.5;if(Lc.has(e))return 1.2;if(Bc.has(e))return .4;if(Fc.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 Vc={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 Gc(e){return e>=600?.6:e>=500?.57:.54}function bo(e){const n=Gc(e.fontWeight);let t=0;let r=0;for(const o of e.text){t+=hn(o);r++}const i=e.fontSize*.15;return{contract:Vc,width:Pr({...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 et(e,n,t,r="normal",i){return bo({text:e,fontSize:n,fontWeight:t,fontStyle:r,fontFamily:i}).width}function It(e,n,t,r="normal",i){const o=bo({text:e,fontSize:n,fontWeight:t,fontStyle:r,fontFamily:i});if(Be())return o.width;let s=0;for(const a of e){if(mo.has(a))s+=1.85-1.5}return o.width+s*n*o.baseRatio}function Pt(e,n,t=0,r=400,i="normal",o){const s=re(e);const a=Math.max(0,s.length-1)*t;const c=Pr({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 p of l){const u=p.codePointAt(0);if(u===void 0||go(u))continue;f=Math.max(f,yo(u)||ho(p)?2:1)}d+=f}return Math.max(0,d*n*.6+a)}function Uc(e,n,t,r=0,i="normal",o){const s=Qn.test(e)?_t(e):[{text:e,bold:false}];const a=s.map(l=>l.text).join("");const c=r===0?0:Math.max(0,re(a).length-1)*r;const d=s.reduce((l,f)=>l+et(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 Oe=1.3;function Pf(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,p)=>{const u=r===0?0:Math.max(0,re(a[p]).length-1)*r;const g=f.reduce((b,y)=>b+et(y.text,n,y.bold?Math.max(700,t):t),0);return Math.max(l,g+u)},0);const d=n*Oe;return{width:c,height:a.length*d,lines:a,lineHeight:d}}const i=e.split("\n");const o=n*Oe;let s=0;for(const a of i){const c=Uc(a,n,t,r);if(c>s)s=c}return{width:s,height:i.length*o,lines:i,lineHeight:o}}import{decodeXML as Hc}from"entities";var Dr=Symbol.for("agentic-mermaid.performance-observer.v1");var jr=globalThis;function zr(e,n){try{e(Object.freeze(n))}catch{}}function xo(){const e=jr[Dr];if(typeof e==="function")zr(e,{version:1,kind:"scope",owner:"graphical"})}function Je(e,n,t,r){const i=jr[Dr];if(typeof i==="function")zr(i,{version:1,kind:"cache",owner:e,outcome:n,...t?{reason:t}:{},...r?{detail:r}:{}})}function Df(e,n,t){const r=jr[Dr];if(typeof r==="function")zr(r,{version:1,kind:"fallback",owner:e,reason:n,...t!==void 0?{attempt:t}:{}})}var bn;var nt=0;var Yc=512*1024;var So=512;var xn=0;function Bf(e){xo();const n=bn;const t=nt;const r=xn;bn=new Map;nt=0;xn=0;try{return e()}finally{bn=n;nt=t;xn=r}}function Le(e,n,t){if(!bn){Je("svg-inspection","bypass","outside-graphical-scope",e);return t()}let r=bn.get(e);if(r?.has(n)){Je("svg-inspection","hit",void 0,e);return r.get(n)}Je("svg-inspection","miss",void 0,e);const i=t();if(xn<So&&nt+n.length<=Yc){if(!r){r=new Map;bn.set(e,r)}r.set(n,i);nt+=n.length;xn++}else Je("svg-inspection","store-skipped",xn>=So?"entry-limit":"character-limit",e);return i}function tt(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 vt(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 ko(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 Fe(e){return Le("start-tags",e,()=>Dt(e))}function Eo(e,n,t){const r={attribute:t,expectedName:n,name:void 0};Dt(e,void 0,void 0,r);return r.name}function Dt(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(tt(e[a]))a++;if(a===o+1)continue;const c=ko(e,a);if(c<0)break;let d=c-2;while(d>o&&vt(e[d]))d--;const l=e.slice(o+1,a);if(r)r.name=l;const f=e[d]==="/";const p=i?[]:void 0;if(i||n||r){let u=a;while(u<c-1){while(vt(e[u]))u++;if(e[u]===">"||e[u]==="/"&&e[u+1]===">")break;const g=u;while(tt(e[u]))u++;if(u===g)break;const b=e.slice(g,u);while(vt(e[u]))u++;if(e[u]!=="=")break;u++;while(vt(e[u]))u++;const y=e[u];if(y!=='"'&&y!=="'")break;u++;const k=u;const x=e.indexOf(y,u);if(x<0||x>=c-1)break;u=x;if(p)p.push(Object.freeze({name:b,value:e.slice(k,u),quote:y,nameStart:g,valueStart:k,valueEnd:u}));else if(r&&r.name===r.expectedName)r.attribute(b,e.slice(k,u));else if(n&&Xc.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(p),selfClosing:f}));if(r)return void 0;if(t&&l==="style"&&!f){const u=e.indexOf("</style",c);if(u>=0){const g={start:c,end:u};n?.push(g);t.push(g)}}o=c-1}return i&&Object.freeze(i)}function Uf(e){const n=e.search(/\S/);if(n<0)return void 0;const t=ko(e,n);if(t<0)return void 0;const r=Fe(e.slice(0,t))[0];return r?.start===n&&r.name==="svg"?r:void 0}function Kc(e,n){return e.attributes.find(t=>t.name===n)}function Co(e,n){const t=Kc(e,n);return t?Hc(t.value):void 0}function wo(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 Yf(e,n){const t=[];for(const r of Fe(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 wo(e,t)}var Xc=new Set(["clip-path","color","cursor","fill","filter","flood-color","lighting-color","marker-end","marker-mid","marker-start","mask","stop-color","stroke","style"]);function Ze(e){const n=[];const t=[];Dt(e,n,t);return{source:e,cssRanges:n,styleContexts:t}}function Hf(e){const n=[];Dt(e,void 0,n);return n}function Kf(e){return Ze(e).cssRanges.map(n=>e.slice(n.start,n.end)).join("\n")}function jt(e,n,t=Ze(e)){if(t.source!==e)throw new Error("SVG CSS projection does not match its source");return wo(e,t.cssRanges.map(r=>({...r,value:n(e.slice(r.start,r.end))})))}function Xf(e,n,t){return`${e.slice(0,n.start)}${t}${e.slice(n.end)}`}var We=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 qc=/[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?/g;var Br=/\.\d{12}/;var Jc=/^[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?(?:%|px|pt|pc|em|ex|rem|cm|mm|in)?$/;var Zc=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 zt=new Map;var Bt=new Map;function U(e){const n=zt.get(e);if(n!==void 0)return n;const t=String(e);const r=t.length>=14&&Br.test(t)&&Number.isFinite(e)?String(Number(e.toPrecision(12))):t;if(zt.size>=1024)zt.clear();zt.set(e,r);return r}function rt(e,n){if(n.length<13||!Br.test(n))return n;const t=n.length<=512?`${e}\0${n}`:void 0;const r=t===void 0?void 0:Bt.get(t);if(r!==void 0)return r;const i=Zc.has(e)&&Jc.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(qc,(s,a)=>{if(!Br.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(Bt.size>=256)Bt.clear();Bt.set(t,o)}return o}function To(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 bd}from"entities";var Qc=["text-spans","indexed-layout","position-cache"];var Ro=globalThis;var No=Ro.process?.env?.AGENTIC_MERMAID_EXPERIMENTS??Ro.AGENTIC_MERMAID_EXPERIMENTS;var ed=new Set(typeof No==="string"?No.split(",").map(e=>e.trim()).filter(Boolean):Qc);var nd;function Sn(e){return(nd??ed).has(e)}function Lt(e=()=>false){const n=new WeakSet;const t=i=>n.has(i)||e(i);const r=i=>{Object.freeze(i);if(Reflect.ownKeys(i).every(o=>{const s=Object.getOwnPropertyDescriptor(i,o),a=s.value;return"value"in s&&(a===null||typeof a!=="object"&&typeof a!=="function"||t(a))}))n.add(i);return i};return{has:t,freeze:r}}function Ft(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 Wt(e){return e.split("\n").map(n=>Ft(n)).join("\n")}var $o=new We(512,4*1024*1024);var Mo=new WeakSet;var j=Lt();function _o(e){return j.has(e)}function it(e){Mo.add(e);return e}function Ao(e){if(Mo.has(e))return e;return it(j.freeze({source:e.source,display:e.display,...e.transform?{transform:e.transform}:{},lineStarts:j.freeze([...e.lineStarts]),lines:j.freeze(e.lines.map(n=>j.freeze(n.map(t=>j.freeze({...t,...t.clusters?{clusters:j.freeze(t.clusters.map(r=>j.freeze({...r})))}:{}})))))}))}function ot(e,n){return n?.value===e?n.prepared:e}function dp(e){return e.lines.map(n=>n.map(t=>t.text).join("")).join("\n")}function lp(e,n,t){e=Ao(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=>j.freeze(o.map(s=>{const a=[],c=[];for(const p of s.clusters??[{text:s.text,sourceStart:s.sourceStart,sourceEnd:s.sourceEnd}]){for(let u=0;u<p.text.length;u++){a.push(p.sourceStart);c.push(p.sourceEnd)}}const d=[];const l=(p,u,g,b)=>{let y=u;for(const k of re(p)){d.push(j.freeze({text:Ft(k),sourceStart:a[b?u:y]??s.sourceStart,sourceEnd:c[b?g-1:y+k.length-1]??s.sourceEnd}));y+=k.length}};let f=0;for(const p of s.text.matchAll(r)){if(p[0].length===0)throw new TypeError("Display token patterns must not match empty text");l(s.text.slice(f,p.index),f,p.index,false);l(t(p[0]),p.index,p.index+p[0].length,true);f=p.index+p[0].length}l(s.text.slice(f),f,s.text.length,false);return j.freeze({...s,text:d.map(p=>p.text).join(""),clusters:j.freeze(d)})})));return it(j.freeze({...e,lines:j.freeze(i)}))}function up(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=>At({...i,text:n(i.text)})).join("")).join(t)}function fp(e){const n=[[]];const t=[0];let r="",i="literal";for(const o of e){const s=kn(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(j.freeze({...l,sourceStart:a+l.sourceStart,sourceEnd:a+l.sourceEnd,...l.clusters?{clusters:j.freeze(l.clusters.map(f=>j.freeze({...f,sourceStart:a+f.sourceStart,sourceEnd:a+f.sourceEnd})))}:{}}))}r+=s.source}return it(j.freeze({source:r,display:i,lines:j.freeze(n.map(o=>j.freeze(o))),lineStarts:j.freeze(t)}))}function td(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 kn(e,n="formatted",t){if(typeof e!=="string"){e=Ao(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 Oo(e,t)}const r=Sn("text-spans")&&e.length<=16384?JSON.stringify([e,n,t]):void 0;if(r!==void 0){const l=$o.get(r);if(l)return l}let i=0;const o=[];const s=j.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 p=new RegExp(vr,"gi");const u=[];let g=0;for(const b of l.matchAll(p)){if(b.index>g)u.push({start:g,end:b.index});g=b.index+b[0].length}if(g<l.length)u.push({start:g,end:l.length});f=_t(l).map((b,y)=>({...b,sourceStart:i+u[y].start,sourceEnd:i+u[y].end}))}f=f.map(p=>{let u=p.sourceStart;const g=re(p.text).map(b=>{const y=j.freeze({text:Ft(b),sourceStart:u,sourceEnd:u+b.length});u+=b.length;return y});return j.freeze({...p,text:g.map(b=>b.text).join(""),clusters:j.freeze(g)})});i+=l.length+1;return j.freeze(f)});const c=it(j.freeze({source:e,display:n,lines:j.freeze(a),lineStarts:j.freeze(o)}));const d=t?Oo(c,t):c;if(r!==void 0)$o.set(r,d,r.length*2+e.length*96+256);return d}function Oo(e,n){const t=e.lines.map(r=>{const i=r.map(d=>d.text).join("");const o=td(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 j.freeze(r.map(d=>{const l=c;const f=(d.clusters??[{text:d.text,sourceStart:d.sourceStart,sourceEnd:d.sourceEnd}]).map(p=>{const u=n==="uppercase"||s?.has(a)?p.text.toUpperCase().length:n==="lowercase"?p.text.toLowerCase().length:p.text.length;const g=o.slice(c,c+u);a+=p.text.length;c+=u;return j.freeze({...p,text:g})});return j.freeze({...d,text:o.slice(l,c),clusters:j.freeze(f)})}))});return it(j.freeze({...e,transform:n,lines:j.freeze(t)}))}function xp(e,n=true){return rd(id(e,n))}function rd(e){return e.replace(/\*\*(.+?)\*\*/g,"<b>$1</b>").replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g,"<i>$1</i>").replace(/~~(.+?)~~/g,"<s>$1</s>")}function id(e,n=true){const t=e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e;const r=sd(t);return(n?r.replace(/\\n/g,"\n"):r).replace(/<\/?(?:sub|sup|small|mark)\s*>/gi,"")}var od=/<br\s*\/?>/gi;function sd(e){return e.replace(od,"\n")}function Fr(e,n="formatted"){return kn(e,n).lines.map(t=>t.map(r=>r.text).join("")).join("\n")}var ad=/[&<>"']/;var cd=/[&<>"'\t\n\r]/;function de(e){if(typeof e==="string"&&!ad.test(e))return e;return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function z(e){if(typeof e==="string"&&!cd.test(e))return e;return de(e).replace(/[\t\n\r]/g,n=>n===" "?"&#9;":n==="\n"?"&#10;":"&#13;")}function Sp(e){return z(Wt(e))}function dd(e,n="formatted"){if(n==="literal"||!Qn.test(e))return de(e);return Lr(kn(e,n).lines[0])}function Po(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 Lr(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=>de(r.text)).join("");return e.map(r=>{const i=de(r.text);if(!r.bold&&!r.italic&&!r.underline&&!r.strikethrough)return i;return`<tspan ${Po(r,n).join(" ")}>${i}</tspan>`}).join("")}function Io(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">${Lr(o.runs,e.fontWeight)}</tspan>`}if(e.letterSpacing===0&&!o.fragments)return Lr(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=Po(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(" ")}`:""}>${de(a.text)}</tspan>`}).join("")}function Wr(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 p=a&&/[^\x20-\x7e]/u.test(a.lineBlocks.map(h=>h.runs.map(E=>E.text).join("")).join(""));const u=a&&(a.letterSpacing!==0||p);const g=(h,E)=>a?Io(a,E,n,f):dd(h,l);if(l==="literal"&&Qn.test(c)&&!i.includes("data-literal-text="))i+=' data-literal-text="true"';const b=a?a.lineBlocks.map(h=>h.runs.map(E=>E.text).join("")).join("\n"):Fr(c,l);if(/(?:^ | $| {2}|\t)/m.test(b)&&!i.includes("xml:space="))i+=' xml:space="preserve"';if(a)i+=' data-prepared-text="true"';const y=h=>a&&!u&&!a.lineBlocks[h].fragments?` textLength="${U(a.lineBlocks[h].width)}" lengthAdjust="spacingAndGlyphs" data-font-metrics="deterministic-fit"`:"";if(d.length===1){const h=r*o;if(p)return`<text x="${U(n)}" y="${U(t)}" ${i}>${Io(a,0,n,f,t+h)}</text>`;return`<text x="${U(n)}" y="${U(t)}" ${i} dy="${U(h)}"${y(0)}>${g(c,0)}</text>`}const k=a?.lineHeight??r*Oe;const x=-((d.length-1)/2)*k+r*o;const S=d.map((h,E)=>{const R=E===0?x:k;const w=p?`y="${U(t+x+E*k)}"`:`dy="${U(R)}"`;return`<tspan x="${U(n)}" ${w}${y(E)}>${g(h,E)}</tspan>`}).join("");return`<text x="${U(n)}" y="${U(t)}" ${i}>${S}</text>`}var Vr=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 ld=/^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;function Ge(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 ud(e){if(!he(e))return null;return Ge(e)}function Ee(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 me(e,n,t){return Ee(...zo(Ge(e),Ge(n),t))}function zo(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 Gr(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Yr(e){return .2126*Gr(e[0]/255)+.7152*Gr(e[1]/255)+.0722*Gr(e[2]/255)}function Hr(e,n){return(Math.max(e,n)+.05)/(Math.min(e,n)+.05)}function Ur(e){const n=se(e);return n?Yr(n):null}function Ve(e,n){const t=Ur(e);const r=Ur(n);if(t===null||r===null)return null;return Hr(t,r)}function En(e,n,t,r){const i=Ve(e,n);if(i===null||i>=t)return e;const o=Ve("#000000",n)??0;const s=Ve("#ffffff",n)??0;const a=r?Ve(r,n)??0:0;const c=a>=t?r:o>=s?"#000000":"#ffffff";if((Ve(c,n)??0)<t)return e;const d=Ur(n);const l=Ge(c);const f=Ge(e);const p=[0,0,0];for(let u=1;u<=1e3;u++){zo(l,f,u/10,p);if(Hr(Yr(p),d)>=t)return Ee(...p)}return c}var Gt=4.5;var wp=3;var st=3;function Tp(e,n,t=Gt){return En(e,n,t)}function he(e){return ld.test(e)}function Rp(e){return/^#[0-9a-fA-F]{6}$/.test(e)}function Bo(e,n,t){return(e*299+n*587+t*114)/1e3}function se(e){const n=e.trim().toLowerCase();const t=Object.hasOwn(Vr,n)?Vr[n]:void 0;if(t){const s=Ge(t);return[s[0],s[1],s[2],1]}if(n==="transparent")return[0,0,0,0];const r=he(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 g=u.endsWith("%");const b=Vt(u,g);if(b===null)return null;const y=g?b*2.55:b;return Math.max(0,Math.min(255,y))};const f=c.map(l);if(f.some(u=>u===null))return null;const p=vo(d);if(p===null)return null;return[f[0],f[1],f[2],p]}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=fd(c[0]);const f=Vt(c[1],c[1].endsWith("%"));const p=Vt(c[2],c[2].endsWith("%"));const u=vo(d);if(l===null||f===null||p===null||u===null)return null;const g=Math.max(0,f)/100;const b=p/100;const y=(1-Math.abs(2*b-1))*g;const k=(l%360+360)%360/60;const x=y*(1-Math.abs(k%2-1));const[S,h,E]=k<1?[y,x,0]:k<2?[x,y,0]:k<3?[0,y,x]:k<4?[0,x,y]:k<5?[x,0,y]:[y,0,x];const R=b-y/2;const w=[(S+R)*255,(h+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 fd(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 vo(e){if(e===void 0)return 1;const n=e.endsWith("%");const t=Vt(e,n);if(t===null)return null;const r=n?t/100:t;return Math.max(0,Math.min(1,r))}function Vt(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 Do(e,n){const t=se(e);if(!t)return null;if(t[3]===1)return[t[0],t[1],t[2]];const r=se(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 jo(e){const n=ud(e);return n?Yr(n):null}function pd(e,n){const t=jo(e);const r=jo(n);if(t===null||r===null)return null;return Hr(t,r)}function Np(e,n,t="#ffffff"){const r=Do(n,t);if(!r)return null;const i=Ee(...r);const o=Do(e,i);if(!o)return null;return pd(Ee(...o),i)}var md=/^[a-z0-9_,'(). \t-]+$/i;function gd(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 Cn(e){if(typeof e!=="string")return void 0;const n=gd(e.trim());if(n===void 0||n.length===0||n.length>256||!md.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 Kr(e){const n=Cn(e);if(n===void 0)throw new Error("font family must be a safe non-fetching CSS family or var() fallback");return n}var yd=/^(?:#[0-9a-f]{3,4}|#[0-9a-f]{6}|#[0-9a-f]{8}|[a-z][a-z0-9-]*)$/i;var Fo=/^var\(--[a-z_][a-z0-9_-]*\)$/i;var hd=/^[a-z0-9_#(),.%+\-\s/]*$/i;var Lo=new Set(["color","color-mix","device-cmyk","hsl","hsla","hwb","lab","lch","oklab","oklch","rgb","rgba"]);function _p(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 Wo(e){return Vo(e,false)}function Vo(e,n){if(typeof e!=="string")return void 0;const t=e.trim();if(t.length===0||t.length>256)return void 0;if(yd.test(t))return t;if(!hd.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")&&!Lo.has(a))return void 0}const o=t.slice(0,r).trim().toLowerCase();return n&&o==="var"||Lo.has(o)?t:void 0}function Ap(e,n=false){const t=le(e);if(t===void 0)return void 0;const r=t.toLowerCase();if(r==="currentcolor"||n&&r==="none")return t;if(Fo.test(t))return t;return se(t)!==null?t:void 0}function Ip(e){return`a color name, #RGB, #RGBA, #RRGGBB, #RRGGBBAA, rgb(), rgba(), hsl(), hsla(), transparent, currentColor${e?", none":""}, or var(--name)`}function le(e){if(typeof e==="string"&&e.length<=256&&Fo.test(e))return e;return Vo(e,true)}function Go(e,n){const t=le(e);if(t===void 0)throw new Error(`${n} must be a safe non-fetching CSS color or var() reference`);return t}var Gp={bg:"#FFFFFF",fg:"#27272A"};var X={text:100,textSec:78,textMuted:66,textFaint:54,line:50,arrow:85,nodeFill:3,nodeStroke:20,groupHeader:5,innerStroke:12,keyBadge:10};function Up(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 Yp(e){if(!e.shadow)return"";const n=xd(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 xd(e){const n=e.replace("#","");if(n.length<6)return false;const[t,r,i]=Ge(e);return Bo(t,r,i)/255<.4}function Uo(e){return/^[A-Za-z0-9][A-Za-z0-9 _-]*$/.test(e)}var Sd="'Inter'";function kd(e){if(!e.includes("var("))return e;const n=/^var\(\s*--[\w-]+\s*,\s*([^()]+)\)$/.exec(e)?.[1]?.trim();return n||Sd}function Hp(e){return jt(e,Ed)}function Ed(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+=kd(e.slice(i+n.length,s-1).trim());r=s}}function Ko(e,n,t,r=false){e=Kr(e);const i=r?[...Uo(e)?[`@import url('https://fonts.googleapis.com/css2?family=${encodeURIComponent(e)}:wght@400;500;600;700&amp;display=swap');`]:[],...n?[`@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&amp;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) ${X.textSec}%, var(--bg)));
7
+ --_text-muted: var(--muted, color-mix(in srgb, var(--fg) ${X.textMuted}%, var(--bg)));
8
+ --_text-faint: color-mix(in srgb, var(--fg) ${X.textFaint}%, var(--bg));
9
+ --_line: var(--line, color-mix(in srgb, var(--fg) ${X.line}%, var(--bg)));
10
+ --_arrow: var(--accent, color-mix(in srgb, var(--fg) ${X.arrow}%, var(--bg)));
11
+ --_node-fill: var(--surface, color-mix(in srgb, var(--fg) ${X.nodeFill}%, var(--bg)));
12
+ --_node-stroke: var(--border, color-mix(in srgb, var(--fg) ${X.nodeStroke}%, var(--bg)));
13
+ --_group-fill: var(--bg);
14
+ --_group-hdr: color-mix(in srgb, var(--fg) ${X.groupHeader}%, var(--bg));
15
+ --_inner-stroke: color-mix(in srgb, var(--fg) ${X.innerStroke}%, var(--bg));
16
+ --_key-badge: color-mix(in srgb, var(--fg) ${X.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=Uo(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 Xo(e,n,t,r,i){const o=t.font===void 0?void 0:Kr(t.font);for(const u of["bg","fg","line","accent","muted","surface","border"]){const g=t[u];if(g!==void 0)Go(g,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=Td(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,g])=>`${u}="${g}"`).join(" ");const p=f?` ${f}`:"";return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${U(e)} ${U(n)}" width="${rt("width",String(c?.width??e))}" height="${rt("height",String(c?.height??n))}" style="${l}"${p}>`}var Yo=new We(64,256*1024);function qo(e){const n=[e.bg,e.fg,e.line,e.accent,e.muted,e.surface,e.border].join("\n");const t=Yo.get(n);if(t)return t;const r=Object.freeze(Cd(Jo(e)??e));const i=n.length*2+To(r,256*1024);Yo.set(n,r,i);return r}function Jo(e){if(he(e.bg)&&he(e.fg))return e;const n=se(e.bg),t=se(e.fg);if(!n||!t||n[3]!==1||t[3]!==1)return void 0;return{...e,bg:Ee(n[0],n[1],n[2]),fg:Ee(t[0],t[1],t[2])}}function Cd(e){const{bg:n,fg:t}=e;const r=e.surface??me(t,n,X.nodeFill);const i=me(t,n,X.groupHeader);const o=me(t,n,X.keyBadge);const s=Ho(e,[n,r,i,o]);const{text:a,textSec:c,textMuted:d,textFaint:l}=s.legible?s:Ho(e,[n,i,o]);return{bg:n,fg:t,text:a,textSec:c,textMuted:d,textFaint:l,line:En(e.line??me(t,n,X.line),n,3,a),arrow:En(e.accent??me(t,n,X.arrow),n,3,a),nodeFill:r,nodeStroke:wd(e.border??me(t,n,X.nodeStroke),n,a),groupFill:n,groupHdr:i,innerStroke:me(t,n,X.innerStroke),keyBadge:o}}function wd(e,n,t){const r=se(e),i=se(n);if(!r||!i||r[3]!==1||i[3]!==1)return e;const o=Ee(r[0],r[1],r[2]),s=Ee(i[0],i[1],i[2]);if((Ve(o,s)??Infinity)>=st)return e;const a=se(t);return En(o,s,st,a?.[3]===1?Ee(a[0],a[1],a[2]):void 0)}function Ho(e,n){const{bg:t,fg:r}=e;const i=Ut(r,n);const o=Ut(e.muted??me(r,t,X.textSec),n,i);const s=Ut(e.muted??me(r,t,X.textMuted),n,i);const a=Ut(me(r,t,X.textFaint),n,i,st);const c=(l,f)=>n.every(p=>(Ve(l,p)??Infinity)>=f);const d=[i,o,s].every(l=>c(l,Gt))&&c(a,st);return{text:i,textSec:o,textMuted:s,textFaint:a,legible:d}}function Ut(e,n,t,r=Gt){let i=e;for(let o=0;o<2;o++){for(const s of n)i=En(i,s,r,t)}return i}function Zo(e){if(!Jo(e))return void 0;const n=qo(e);const t=new Map;t.set("bg",n.bg);t.set("fg",n.fg);if(e.line&&he(e.line))t.set("line",e.line);if(e.accent&&he(e.accent))t.set("accent",e.accent);if(e.muted&&he(e.muted))t.set("muted",e.muted);if(e.surface&&he(e.surface))t.set("surface",e.surface);if(e.border&&he(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 Kp(e,n){if(he(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 Zo(n)?.get(t[1])??t[2]}function Qo(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"||se(o)||o.startsWith("var(")&&le(o))n.set(i[1],o)}}return n}function Xp(e,n){const t=Yt(n,e);return t?es(e,t):e}function qp(e,n){const t=z(e);const r=Yt(n);return Xr(t,r)}function Jp(){let e;let n;return(t,r)=>{const i=z(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 Xr(i,Yt(r));n=Yt(r);e=r}return Xr(i,n)}}function Xr(e,n){const t=n?n.resolveCss(e,n.vars,10):e;if(n&&/[<"]/.test(t)){const r=es(`<rect fill="${e}"/>`,n);return Co(Fe(r)[0],"fill")}return bd(t)}function Yt(e,n){const t=Zo(e);if(!t)return void 0;const r=qo(e);const i=n===void 0?void 0:Ze(n);const o=i?Qo(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 p=0;p<l;p++){const u=f;f=f.replace(/var\(--([\w-]+)\)/g,(g,b)=>{if(s.has(b))return g;return d.get(b)??g});f=f.replace(/var\(--([\w-]+),\s*([^()]+)\)/g,(g,b,y)=>{if(s.has(b))return g;return d.get(b)??y.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,(g,b,y,k)=>{const x=k==="transparent"?r.bg:k;return me(b,x,parseFloat(y))});if(f===u)break}return f};return{vars:o,SKIP_VARS:s,resolveCss:a,projection:i}}function es(e,n){const{vars:t,SKIP_VARS:r,resolveCss:i}=n;const o=n.projection??Ze(e);const s=new Map;let a=jt(e,f=>{const p=s.get(f);if(p!==void 0)return p;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=Ze(a);const l=Qo(d);if(l.size>0){for(let f=0;f<5;f++){const p=jt(a,u=>i(u,l,1),d);if(p===a)break;a=p;d=Ze(a)}}return a}function Td(e){return Boolean(e&&("width"in e||"height"in e||"style"in e||"attrs"in e))}var Ue="0.5.4";var Ht=2;var ns=`${Ht}.0.0`;function im(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 Rd=Object.freeze({core:Ue,scene:ns});function Jr(e,n){if(!e.compatibility[n]){throw new Error(`Extension "${e.id}" must declare an explicit compatible "${n}" range`)}}function Nd(e){const n=[];for(const[t,r]of Object.entries(e.compatibility)){if(r===void 0)continue;const i=Rd[t];if(!_r(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=Ar(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(!Mt(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 ts=/^[a-z][a-z0-9-]*$/;var rs=/^[a-z0-9][a-z0-9._/-]*$/;var is=new WeakSet;var Kt=new WeakMap;function $d(e,n){const t=Kt.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};Kt.set(e,r);return r}function Od(e){if(e.reentrantAttempted){throw new Error(`Extension registry mutation is forbidden after a reentrant attempt during ${e.operation}`)}}function Md(e,n){if(Kt.get(e)===n)Kt.delete(e)}function at(e,n){if(!ts.test(e))throw new Error(`Invalid extension kind "${e}"`);if(!rs.test(n)){throw new Error(`Invalid ${e} extension local id "${n}"`)}return`${e}:${n}`}function Qe(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(!ts.test(t)||!rs.test(r))return void 0;return{kind:t,localId:r}}function wn(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=Qe(n);if(!c||c.kind!==t){throw new Error(`Extension id "${n}" must use the "${t}:" namespace`)}if(!ze(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=Nd(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("; ")}`)}is.add(d);return d}var qr=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 ct(e,n){const t=$d(e,"extension registration");try{const r=Object.freeze({identity:n.identity,value:n.value});if(!is.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 qr(r.identity,o.identity);Od(t);e.set(i,r)}finally{Md(e,t)}}var Ce=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 Zr=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","paddingX","paddingY","cornerRadius","lineWidth","fillColor","borderColor"]);var os=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","lineWidth","bendRadius","strokeColor"]);var _d=Object.freeze([...Zr,"fontFamily","headerFillColor"]);var Ad=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor"]);var Id=Object.freeze(["fontFamily","fontSize","fontWeight","letterSpacing","textTransform","textColor","fillColor","borderColor","strokeColor","lineWidth","cue"]);var Pd=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","cue"]);var vd=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","textColor"]);var Qr=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth"]);var Dd=Object.freeze(["borderColor","strokeColor","lineWidth"]);var ss=Object.freeze([...Qr,"cue"]);function ae(e,n){return Object.freeze({properties:e,...n?{bindingFamilies:Object.freeze([...n])}:{}})}var en=Object.freeze({node:ae(Zr),edge:ae(os),group:ae(_d),"group-header":ae(Id,["journey"]),label:ae(Ad),actor:ae(Zr,["sequence"]),relationship:ae(os,["er"]),"pie-slice":ae(Pd,["pie","radar"]),legend:ae(vd,["radar"]),bar:ae(Qr,["xychart","sankey","treemap"]),series:ae(Dd,["xychart"]),point:ae(Qr,["radar","xychart"]),task:ae(ss,["gantt"]),milestone:ae(ss,["gantt"])});var dt=Object.freeze(Object.keys(en));var Ye=Object.freeze(dt.filter(e=>"bindingFamilies"in en[e]));var Xt=Object.freeze([...new Set(Ye.flatMap(e=>en[e].properties))]);var ge=["shape","connector","text","group","document"];var Tn=["shape"];var ei=["connector"];var as=["text"];var jd=["shape","text"];var be=["shape","group"];var zd=["shape","text","group"];var cs=["connector","group"];var Bd=["document"];var ds=["text","group"];var Ld=["document"];function _(e,n,t,r={}){const i=en[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 Rn=Object.freeze({node:_("node",be,"node",{domIdentity:true,sketch:"shape"}),edge:_("edge",ei,"edge",{domIdentity:true,relation:true,sketch:"connector"}),"edge-label":_("edge-label",ds,"label"),group:_("group",be,"group",{domIdentity:true,sketch:"shape"}),"group-header":_("group-header",ge,"group",{sketch:"shape",textHalo:true}),label:_("label",as,"label",{textHalo:true}),actor:_("actor",be,"node",{domIdentity:true,sketch:"shape"}),lifeline:_("lifeline",cs,"edge",{sketch:"connector"}),activation:_("activation",be,"node",{domIdentity:true,sketch:"shape"}),message:_("message",cs,"edge",{domIdentity:true,relation:true,sketch:"connector"}),block:_("block",ge,"group",{domIdentity:true,sketch:"shape"}),note:_("note",be,"group",{domIdentity:true,sketch:"shape"}),"class-box":_("class-box",be,"node",{domIdentity:true,sketch:"shape"}),member:_("member",as,"label",{domIdentity:true,textHalo:true}),entity:_("entity",be,"node",{domIdentity:true,sketch:"shape"}),attribute:_("attribute",ds,"label",{domIdentity:true,textHalo:true}),relationship:_("relationship",ei,"edge",{domIdentity:true,relation:true,sketch:"connector"}),cardinality:_("cardinality",jd,"label",{domIdentity:true,textHalo:true}),"pie-slice":_("pie-slice",Tn,"node",{domIdentity:true,sketch:"shape"}),legend:_("legend",zd,"group",{textHalo:true}),bar:_("bar",Tn,"node",{domIdentity:true,sketch:"shape"}),series:_("series",ei,"edge",{domIdentity:true,sketch:"connector"}),point:_("point",Tn,"node",{domIdentity:true}),axis:_("axis",ge,"label",{textHalo:true}),grid:_("grid",ge,"edge"),plate:_("plate",Tn,"node",{domIdentity:true,sketch:"shape"}),section:_("section",ge,"group",{domIdentity:true,sketch:"shape",textHalo:true}),task:_("task",ge,"node",{domIdentity:true,sketch:"shape"}),milestone:_("milestone",Tn,"node",{domIdentity:true,sketch:"shape"}),"marker-line":_("marker-line",ge,"edge"),rail:_("rail",ge,"edge",{sketch:"connector"}),period:_("period",be,"group",{domIdentity:true,sketch:"shape"}),event:_("event",be,"group",{domIdentity:true,sketch:"shape"}),score:_("score",ge,"node"),"actor-pill":_("actor-pill",Tn,"node",{sketch:"shape"}),service:_("service",be,"node",{domIdentity:true,sketch:"shape"}),junction:_("junction",be,"node",{domIdentity:true}),icon:_("icon",["shape","text","group","document"],"node",{textHalo:true}),title:_("title",ge,"label",{domIdentity:true,textHalo:true}),defs:_("defs",Bd,"label"),prelude:_("prelude",Ld,"label"),chrome:_("chrome",ge,"label")});var Fd=Object.freeze({applicableKinds:ge,styleFallback:"label",styleConsumption:"fallback-only",styleExtras:Object.freeze([]),styleBindingFamilies:Object.freeze([]),domIdentity:true,relation:false,sketch:"none",textHalo:false});var nn=Object.freeze(Object.entries(Rn).map(([e,n])=>Object.freeze({identity:wn({id:`role:${e}`,kind:"role",version:"1.0.0",compatibility:{core:Ue,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 Wd(e){const n=Rn[e];if(n)return{traits:n,source:"builtin"};return{traits:Fd,source:"namespaced-safe"}}function Nn(e){return Wd(e).traits}function Vd(e){return e}function Gd(e,n){const t=n[e.channel];return Array.isArray(t)?t.includes(e.value):String(t??"")===e.value}function Ud(e,n,t={},r={}){const i=nn.find(l=>l.role===n);const o=Vd(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(!Gd(l,t))continue;const f=e?.semanticSlots?.[l.slot];if(!f)continue;const p=Object.fromEntries(Object.entries(f).filter(([u])=>d.has(u)));c={...c,...p}}return c?Object.freeze(c):void 0}function fm(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};qt(d);return d}function D(e,n){if(!Number.isFinite(e))throw new Error(`Marker ${n} must be finite`);return e}function Yd(e){if(!e)return"";const n=[];if(e.fill!==void 0)n.push(`fill="${z(e.fill)}"`);if(e.stroke!==void 0)n.push(`stroke="${z(e.stroke)}"`);if(e.strokeWidth!==void 0)n.push(`stroke-width="${z(e.strokeWidth)}"`);if(e.strokeDasharray!==void 0)n.push(`stroke-dasharray="${z(e.strokeDasharray)}"`);if(e.strokeDashoffset!==void 0)n.push(`stroke-dashoffset="${z(e.strokeDashoffset)}"`);if(e.strokeLinecap!==void 0)n.push(`stroke-linecap="${z(e.strokeLinecap)}"`);if(e.strokeLinejoin!==void 0)n.push(`stroke-linejoin="${z(e.strokeLinejoin)}"`);if(e.strokeMiterlimit!==void 0)n.push(`stroke-miterlimit="${z(e.strokeMiterlimit)}"`);if(e.vectorEffect!==void 0)n.push(`vector-effect="${z(e.vectorEffect)}"`);if(e.paintOrder!==void 0)n.push(`paint-order="${z(e.paintOrder)}"`);if(e.opacity!==void 0)n.push(`opacity="${z(e.opacity)}"`);return n.length>0?` ${n.join(" ")}`:""}function ls(e){return e.map(n=>`${D(n.x,"point.x")} ${D(n.y,"point.y")}`).join(", ")}function us(e,n,t){const r=Yd(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="${ls(e.points)}"${r} />`];case"polyline":return[`${t}<polyline points="${ls(e.points)}"${r} />`];case"path":return[`${t}<path d="${z(e.d)}"${r} />`];case"compound":return e.children.flatMap(i=>us(i,n,t))}}function qt(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 ni(e,n={}){qt(e);const t=" ".repeat(n.indent??2);const r=`${t} `;const i=e.units;const o=e.orient??"auto";const s=[`id="${z(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="${z(String(o))}"`,...i?[`markerUnits="${z(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="${z(e.overflow)}"`]:[]];return[`${t}<marker ${s.join(" ")}>`,...us(e.geometry,e.paint,r),`${t}</marker>`].join("\n")}function ti(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=>ni(r,n)).join("\n")}var ms=2;function oi(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 Hd=/\s([^\s=<>]+)\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/g;var Kd=/<(?:[^\s<>/:]+:)?(?:animate(?:Motion|Transform)?|set)\b/i;var Xd=/^on[a-z]/;var qd=/[(:@\\&]/;var Jd=/^(?:javascript|vbscript|data|file):/;var gs=/(?:javascript|vbscript|data|file)\s*:/i;var Zd=/(?:expression|behavior)\s*\(/i;var Qd=/(?:expression|behavior)\s*\(|-moz-binding\s*:/i;function el(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 nl=new Set(["amp","lt","gt","quot","apos"]);function lt(e){return e===" "||e===" "||e==="\n"||e==="\r"}function ri(e,n){const t=e.charCodeAt(n),r=t|32;if(!(r>=97&&r<=122||t===95))return-1;let i=n+1;while(tt(e[i]))i++;return i}function tl(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 ii="http://www.w3.org/XML/1998/namespace";var rl="http://www.w3.org/2000/xmlns/";var il="http://www.w3.org/2000/svg";function fs(e){return e===9||e===10||e===13||e>=32&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}function ol(e){return!/[\0-\x08\x0b\x0c\x0e-\x1f\ud800-\udfff\ufffe\uffff]/u.test(e)}function ps(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(!fs(Number.parseInt(r.slice(2),16)))return false}else if(r.startsWith("#")){if(!/^[0-9]+$/.test(r.slice(1)))return false;if(!fs(Number.parseInt(r.slice(1),10)))return false}else if(!nl.has(r)){return false}n=t}return true}function ys(e){return Le("xml-envelope",e,()=>hs(e))}function hs(e,n){if(!ol(e))return false;const t=[];let r=false;let i=false;let o=0;while(o<e.length){if(e[o]!=="<"){const y=e.indexOf("<",o);const k=y<0?e.length:y;const x=e.slice(o,k);if(t.length===0&&x.trim()!==""||x.includes("]]>")||!ps(x))return false;o=k;continue}if(e.startsWith("<!--",o)){if(t.length===0)return false;const y=e.indexOf("-->",o+4);const k=y<0?"":e.slice(o+4,y);if(y<0||k.includes("--")||k.endsWith("-"))return false;o=y+3;continue}if(e.startsWith("<![CDATA[",o))return false;if(e.startsWith("<!",o)||e.startsWith("<?",o))return false;if(e.startsWith("</",o)){let y=ri(e,o+2);if(y<0)return false;const k=e.slice(o+2,y);if(k.includes(":"))return false;while(lt(e[y]))y++;if(e[y]!==">"||t.pop()?.name!==k)return false;o=y+1;if(t.length===0){if(k!=="svg"||i)return false;i=true}continue}const s=ri(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 y=lt(e[c]);while(lt(e[c]))c++;if(e[c]===">"){c++;break}if(e[c]==="/"&&e[c+1]===">"){f=true;c+=2;break}if(!y)return false;const k=ri(e,c);if(k<0)return false;const x=e.slice(c,k);if(d.has(x))return false;const S=x.includes(":");const h=S?tl(x):void 0;if(S&&!h)return false;d.add(x);c=k;while(lt(e[c]))c++;if(e[c]!=="=")return false;c++;while(lt(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("<")||!ps(w))return false;if(h||x==="xmlns"){l.push({name:x,...h,value:$n(w)})}n?.(x,w);c++}const p=t.at(-1)?.namespaces;let u=p??new Map([["xml",ii]]);let g;for(const y of l){const k=y.name==="xmlns";const x=y.prefix==="xmlns";if(!k&&!x)continue;const S=k?"":y.local;const h=y.value;if(S==="xmlns"||h===rl||S==="xml"&&h!==ii||S!=="xml"&&h===ii||S!==""&&h==="")return false;if(!g){g=new Map(u);u=g}g.set(S,h)}if(u.get("")!==il)return false;if(t.length>0&&a==="svg"){return false}let b;for(const y of l){if(y.name==="xmlns"||y.prefix==="xmlns")continue;const k=u.get(y.prefix);if(k===void 0)return false;const x=`${k}\0${y.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 $n(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(/&colon;?/gi,":").replace(/&sol;?/gi,"/").replace(/&tab;?/gi," ").replace(/&newline;?/gi,"\n").replace(/&quot;?/gi,'"').replace(/&apos;?/gi,"'").replace(/&lt;?/gi,"<").replace(/&gt;?/gi,">").replace(/&amp;?/gi,"&");if(r===n)break;n=r}return n}function sl(e){const n=e[0];return(n==='"'||n==="'")&&e[e.length-1]===n?e.slice(1,-1):e}function bs(e){return $n(e).replace(/[\u0000-\u0020\u007f-\u009f]+/g,"").toLowerCase()}function ym(e){const n=$n(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 xs(e){const n=oi($n(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=bs(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 al(e){const n=oi($n(e));return Ss(n)}function Ss(e){if(Qd.test(e))return true;if(gs.test(e))return true;return false}var cl=new Set(["clip-path","cursor","fill","filter","marker-end","marker-mid","marker-start","mask","stroke","style"]);function hm(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 dl(e){return Le("security",e,()=>ll(e))}function ks(e,n,t,r){const i=e.slice(e.lastIndexOf(":")+1).toLowerCase();if(Xd.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=bs(n);if(o!==""&&!o.startsWith("#"))t.push(o.startsWith("javascript:")?"javascript-url":n);if(Jd.test(o))r.push(`${e}=${n}`)}if(cl.has(i)||i==="values"||i==="from"||i==="to"){if(!qd.test(n))return;const o=oi($n(n));if(xs(o).length>0||gs.test(o)||Zd.test(o))t.push(`${e}=${n}`);if(Ss(o))r.push(`${e}=${n}`)}}function ll(e){const n=e.replace(/<!--[\s\S]*?-->/g,"");const t=[];const r=[];for(const i of el(n)){for(const o of i.matchAll(new RegExp(Hd.source,"g"))){ks(o[1],sl(o[2]),t,r)}}return Es(n,t,r)}function Es(e,n,t){for(const r of e.matchAll(/<style\b[^>]*>([\s\S]*?)<\/style>/gi)){if(al(r[1]))t.push("active-css");n.push(...xs(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(Kd.test(e)){n.push("<animation>");t.push("<animation>")}return Object.freeze({active:Object.freeze(t),refs:Object.freeze(n)})}function si(e){const{refs:n}=dl(e);return{ok:n.length===0,refs:[...n]}}function ul(e){return Le("final-security",e,()=>{const n=[];const t=[];let r=false;let i;const o=hs(e,(s,a)=>{if(r)return;try{ks(s,a,n,t)}catch(c){r=true;i=c}});if(!o)return false;if(r)throw i;return Es(e.replace(/<!--[\s\S]*?-->/g,""),n,t)})}function Jt(e,n="default"){const t=ul(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 xm=Object.freeze(["importance","value","category","status","progress","route","emphasis"]);var ai=["document","text","shape","container","connector","marker","data-mark"];var Em=Object.freeze(ai.map(e=>Object.freeze({primitive:e,operation:e==="document"?"serialize":"render"})));function Cm(e){return e==="document"?"serialize":"render"}var Cs=["measure","layout","bounds","hit-test","render","accessibility","terminal-project","serialize"];var ws=["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 Ts=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 fl=["native","emulated","projected","lossy","unsupported"];function wm(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 Rs(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=Zt(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 Tm(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=Zt(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 ci(e){return[e.target,e.primitive,e.feature,e.operation].join("\0")}function Zt(e){const n=[];const t=new Set;for(let r=0;r<e.length;r++){const i=e[r];const o=ci(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(!fl.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 ie(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 ce(e){if(typeof e!=="object"||e===null||Array.isArray(e))return false;const n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function tn(e){if(typeof e!=="object"||e===null||Object.isFrozen(e))return e;for(const n of Object.values(e))tn(n);return Object.freeze(e)}var W=Object.freeze({maxDepth:64,maxNodes:1e5,maxItemsPerContainer:4096,maxAggregateTextCharacters:5e6,maxAggregateTextBytes:1e7,maxDiagnostics:64});function pl(e){return e==="__proto__"||e==="prototype"||e==="constructor"}function Ns(e){if(typeof e==="number")return"must be a finite number";return`must be a JSON value, not ${typeof e}`}function ml(e,n=[],t={}){const r=W;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,g,b,y=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:g,message:b});if(y)l=true};const p=(u,g)=>{if(l)return;c+=u.length;if(c>r.maxAggregateTextCharacters){f("JSON_TEXT_CHARACTER_LIMIT",g,`exceeds the aggregate ${r.maxAggregateTextCharacters}-character text limit`,true);return}const b=r.maxAggregateTextBytes-d;d+=ie(u,Math.max(0,b));if(d>r.maxAggregateTextBytes){f("JSON_TEXT_BYTE_LIMIT",g,`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 g=u.value;if(g===null||typeof g==="boolean")continue;if(typeof g==="string"){p(g,u.path);continue}if(typeof g==="number"){if(!Number.isFinite(g))f("JSON_NON_JSON_VALUE",u.path,Ns(g));continue}if(typeof g!=="object"){f("JSON_NON_JSON_VALUE",u.path,Ns(g));continue}if(o.has(g)){f("JSON_CYCLE",u.path,"must be acyclic");continue}if(Array.isArray(g)){if(g.length>r.maxItemsPerContainer){f("JSON_ITEM_LIMIT",u.path,`must contain at most ${r.maxItemsPerContainer} items`,true);continue}o.add(g);s.push({kind:"exit",value:g});for(let y=g.length-1;y>=0;y--){if(!Object.prototype.hasOwnProperty.call(g,y)){f("JSON_SPARSE_ARRAY",[...u.path,y],"must not be a sparse array");continue}s.push({kind:"visit",value:g[y],path:[...u.path,y],depth:u.depth+1})}continue}if(!ce(g)){f("JSON_NON_PLAIN_OBJECT",u.path,"must be a plain JSON object");continue}const b=Object.entries(g);if(b.length>r.maxItemsPerContainer){f("JSON_ITEM_LIMIT",u.path,`must contain at most ${r.maxItemsPerContainer} properties`,true);continue}o.add(g);s.push({kind:"exit",value:g});for(let y=b.length-1;y>=0;y--){const[k,x]=b[y];const S=[...u.path,k];p(k,S);if(pl(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 gl(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=>`${gl(i.path)} ${i.message}`).join("; ")}`);this.context=t;this.problems=r;this.name="JsonConfigAdmissionError"}context;problems;code="JSON_CONFIG_ADMISSION_FAILED"};function _m(e,n,t={}){const r=ml(e,[],t);if(r.length>0)throw new Qt(n,r)}function Am(e,n,t={}){const r=W;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(ie(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 $s(e,n){const t=W.maxDiagnostics;if(e.length<=t)return[...e];return[...e.slice(0,t-1),`${n} exceeds the ${t}-diagnostic admission limit`]}var _n=1;var On=tn({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 Mn=Object.freeze(["category"]);var rn=tn({formatVersion:{kind:"const",value:_n,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 li(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 hl=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 bl=new Set(hl);function xl(e){if(typeof e!=="string"||le(e)===void 0)return false;const n=[...e.matchAll(/var\(\s*(--[a-z0-9_-]+)/gi)].map(t=>t[1]);return n.every(t=>bl.has(t))}var ui=new Map(nn.map(e=>[e.role,e]));var ut=dt.map(e=>ui.get(e));var Sl=new Set(Ye);var kl=/^[A-Za-z][A-Za-z0-9._-]{0,63}$/;var di=new Set(["__proto__","constructor","prototype"]);function Ps(e,n,t){if(!ce(e))return[`"${n}" must be an object`];const r=[];for(const[i,o]of Object.entries(e)){if(!Object.hasOwn(Ce,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=Ce[i];const a=`${n}.${i}`;if(o===void 0)continue;if(s.kind==="number"&&!li(o,s))r.push(`"${a}" must be ${s.expected}`);else if(s.kind==="font"&&(typeof o!=="string"||Cn(o)===void 0))r.push(`"${a}" must be a safe non-fetching CSS font family or stack`);else if(s.kind==="color"&&!xl(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 El(e){if(!ce(e))return['"roles" must be an object of SceneRole records'];const n=[];for(const[t,r]of Object.entries(e)){const i=ui.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=Ps(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 vs(e){return typeof e==="string"&&kl.test(e)&&!di.has(e)}function Cl(e){if(!ce(e))return['"semanticSlots" must be an object of named role-style slots'];if(Object.keys(e).length>W.maxItemsPerContainer)return[`"semanticSlots" must contain at most ${W.maxItemsPerContainer} slots`];const n=[];for(const[t,r]of Object.entries(e)){if(!vs(t)){n.push(`invalid semantic slot name "${t}"`);continue}n.push(...Ps(r,`semanticSlots.${t}`))}return n}function wl(e){if(!Array.isArray(e))return['"bindings" must be an array'];if(e.length>W.maxItemsPerContainer)return[`"bindings" must contain at most ${W.maxItemsPerContainer} entries`];const n=[];e.forEach((t,r)=>{const i=`bindings[${r}]`;if(!ce(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"||!Mn.includes(t.channel))n.push(`"${i}.channel" must be one of ${Mn.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(!vs(t.slot))n.push(`"${i}.slot" must be a valid semantic slot name`);if(t.role!==void 0&&!Sl.has(t.role))n.push(`"${i}.role" must be a SceneRole with an executable category-binding consumer (${Ye.join(" | ")})`)});return n}function Tl(e){if(!Array.isArray(e))return['"constraints" must be an array'];if(e.length>W.maxItemsPerContainer)return[`"constraints" must contain at most ${W.maxItemsPerContainer} entries`];const n=[];e.forEach((t,r)=>{const i=`constraints[${r}]`;if(!ce(t)){n.push(`"${i}" must be an object`);return}if(typeof t.kind!=="string"||!je.includes(t.kind)){n.push(`"${i}.kind" must be one of ${je.join(" | ")}`);return}const o=t.kind;const s=Ot(o);const a=new Set(ro(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"&&!ui.has(l)){n.push(`"${i}.${c}" must be a registered built-in SceneRole`)}else if(d.kind==="number"&&!li(l,d)){n.push(`"${i}.${c}" must be between ${d.minimum} and ${d.maximum}`)}}});return n}function er(e){if(!ce(e))return["style spec must be a plain object"];if(Object.keys(e).length>W.maxItemsPerContainer)return[`style spec must contain at most ${W.maxItemsPerContainer} fields`];const n=[];for(const[t,r]of Object.entries(e)){if(!Object.hasOwn(rn,t)){n.push(`unknown field "${t}"`);continue}const i=rn[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"&&Cn(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(!li(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(...El(r));break;case"semanticSlots":n.push(...Cl(r));break;case"bindings":n.push(...wl(r));break;case"constraints":n.push(...Tl(r));break;case"colors":{if(!ce(r)){n.push('"colors" must be an object of color tokens');break}for(const[o,s]of Object.entries(r)){if(!Object.hasOwn(On,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&&Wo(s)===void 0)n.push(`color token "${o}" must be a safe non-fetching CSS color`)}break}}}return $s(n,"Style validation")}function Rl(){return Object.fromEntries(Object.entries(Ce).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 Os(e=Object.keys(Ce)){const n=Rl();return{type:"object",additionalProperties:false,maxProperties:e.length,properties:Object.fromEntries(e.map(t=>[t,n[t]]))}}function Ds(e){return`roleStyle-${e.role}`}var Ms="^[A-Za-z][A-Za-z0-9._-]{0,63}$";function Nl(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(ut.map(n=>[n.role,{$ref:`#/$defs/${Ds(n)}`}]))};case"semanticSlots":return{type:"object",description:e.description,maxProperties:W.maxItemsPerContainer,propertyNames:{pattern:Ms,not:{enum:[...di]}},additionalProperties:{$ref:"#/$defs/roleStyle-any"}};case"bindings":return{type:"array",description:e.description,maxItems:W.maxItemsPerContainer,items:{type:"object",additionalProperties:false,maxProperties:4,required:["channel","value","slot"],properties:{channel:{type:"string",enum:[...Mn]},value:{type:"string",minLength:1,maxLength:256,pattern:"^[^\\r\\n\\u0000]+$"},slot:{type:"string",pattern:Ms,not:{enum:[...di]}},role:{type:"string",enum:[...Ye]}}}};case"constraints":{const n={type:"string",enum:["warn","error"]};const t={type:"string",enum:nn.map(i=>i.role)};const r=je.map(i=>{const o=Ot(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:[...io(i)],properties:{kind:{const:i},action:n,...s}}});return{type:"array",description:e.description,maxItems:W.maxItemsPerContainer,items:{oneOf:r}}}case"colors":return{type:"object",additionalProperties:false,maxProperties:Object.keys(On).length,description:`${e.description} Runtime validation applies the stricter safe-color policy.`,properties:Object.fromEntries(Object.entries(On).map(([n,t])=>[n,{type:"string",description:`${t.description} Must be a safe, non-fetching CSS color.`,"x-agentic-mermaid-runtime-validator":"safeCssColor"}]))}}}function $l(){const e=Object.fromEntries(ut.map(n=>[Ds(n),Os(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(rn).length,properties:Object.fromEntries(Object.entries(rn).map(([n,t])=>[n,Nl(t)])),$defs:{...e,"roleStyle-any":Os()}}}function _s(e){const n=Ce[e];if(n.kind==="number")return"number";if(n.kind==="enum")return n.values.map(t=>JSON.stringify(t)).join(" | ");return"string"}function As(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 Is(e,n){const t=Ot(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 Ol(e={}){const n=(p,u)=>{const g=`StyleRole_${p.replace(/[^A-Za-z0-9_]/g,"_")}`;const b=u.map(y=>` ${JSON.stringify(y)}?: ${_s(y)}`).join("\n");return{stem:g,declaration:`interface ${g} {
17
+ ${b}
18
+ }`}};const t=n("Any",Object.keys(Ce));const r=ut.map(p=>({role:p.role,...n(p.role,p.style.applicableProperties)}));const i=Object.keys(On).map(p=>` ${p}?: string`).join("\n");const o=r.map(p=>` ${JSON.stringify(p.role)}?: Readonly<${p.stem}>`).join("\n");const s=Object.entries(rn).map(([p,u])=>` ${JSON.stringify(p)}?: ${As(u)}`).join("\n");const a=nn.map(p=>JSON.stringify(p.role)).join(" | ");const c=ut.map(p=>JSON.stringify(p.role)).join(" | ");const d=Ye.map(p=>JSON.stringify(p)).join(" | ");const l=je.map(p=>Is(p,true)).join("|");const f=je.map(p=>` | ${Is(p,false)}`).join("\n");if(e.compact){const p=Object.keys(Ce).map(k=>`${JSON.stringify(k)}?:${_s(k)}`).join(";");const u=new Map;for(const k of ut){const x=[...k.style.applicableProperties].sort().join("|");u.set(x,[...u.get(x)??[],k.role])}const g=[...u.entries()].map(([k,x])=>{const S=x.map(E=>JSON.stringify(E)).join(" | ");const h=k.length===0?"never":`Pick<RoleStyleSpec, ${k.split("|").map(E=>JSON.stringify(E)).join(" | ")}>`;return`R extends ${S}?${h}:`}).join("");const b=Object.entries(rn).map(([k,x])=>`${JSON.stringify(k)}?:${As(x)}`).join(";");const y=Object.keys(On).map(k=>`${k}?:string`).join(";");return`interface StyleColors {${y}}
19
+ type SceneStyleRole=${a}
20
+ type ExactSceneStyleRole=${c}
21
+ type BindableSceneStyleRole=${d}
22
+ type RoleStyleSpec={${p}}
23
+ type RoleStyleFor<R extends ExactSceneStyleRole>=${g}never
24
+ type RoleStyles={[R in ExactSceneStyleRole]?:Readonly<RoleStyleFor<R>>}
25
+ type SemanticBindingChannel=${Mn.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(p=>p.declaration).join("\n")}
38
+ interface RoleStyles {
39
+ ${o}
40
+ }
41
+ type SemanticBindingChannel = ${Mn.map(p=>JSON.stringify(p)).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 js=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 fi=0;function pi(){if(fi>0){throw new Error("Style registry mutation is forbidden while a Style input is undergoing admission")}}function nr(e){fi++;try{return e()}finally{fi--}}function mi(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>W.maxDepth){throw new TypeError(`Style input exceeds maximum nesting depth ${W.maxDepth}`)}i++;if(i>W.maxNodes){throw new TypeError(`Style input exceeds the ${W.maxNodes}-node limit`)}if(typeof a==="string"){o+=a.length;if(o>W.maxAggregateTextCharacters){throw new TypeError(`Style input exceeds the ${W.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>W.maxItemsPerContainer){throw new TypeError(`Style array must contain at most ${W.maxItemsPerContainer} items`)}const p=[];n.set(a,p);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");p.push(s(a[u],c+1))}t.delete(a);return Object.freeze(p)}if(!ce(a))return a;const l=Object.entries(a);if(l.length>W.maxItemsPerContainer){throw new TypeError(`Style object must contain at most ${W.maxItemsPerContainer} properties`)}const f=Object.create(null);n.set(a,f);t.add(a);for(const[p,u]of l){if(r.has(p))throw new TypeError(`Style input uses forbidden key "${p}"`);o+=p.length;if(o>W.maxAggregateTextCharacters){throw new TypeError(`Style input exceeds the ${W.maxAggregateTextCharacters}-character text limit`)}Object.defineProperty(f,p,{value:s(u,c+1),enumerable:true,writable:false,configurable:false})}t.delete(a);return Object.freeze(f)};return s(e,0)}var tr=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor"]);var zs=Object.freeze(["paddingX","paddingY","cornerRadius","lineWidth","fillColor","borderColor"]);var og=Object.freeze({text:Object.freeze({sourceRole:"label",fields:tr}),node:Object.freeze({sourceRole:"node",fields:Object.freeze([...tr,...zs])}),edge:Object.freeze({sourceRole:"edge",fields:Object.freeze([...tr,"lineWidth","bendRadius","strokeColor"])}),group:Object.freeze({sourceRole:"group",fields:Object.freeze([...tr,...zs,"fontFamily","headerFillColor"])})});var Ls="1.0.0";var Fs=Object.freeze({core:Ue});var Ml=Object.freeze({owner:"agentic-mermaid",source:"built-in",reference:"src/scene/style-registry.ts"});var _l=Object.freeze({owner:"host",source:"in-process"});var Me=new Map;var An=new Map;var _e=class extends Error{constructor(n){super(n);this.name="StyleSpecError"}};function Ws(e){const n=mi(e);const t=er(n);if(t.length)throw new _e(`Invalid style spec: ${t.join("; ")}`);return n}function Al(e){const n=mi(e);if(!ce(n)){throw new TypeError("registerStyle options must be a plain object")}return n}function gi(e){if(!e)return void 0;return Object.freeze(Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Object.freeze({...t})])))}function yi(e){if(!e)return void 0;return Object.freeze(Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Object.freeze({...t})])))}function In(e){return e?Object.freeze(e.map(n=>Object.freeze({...n}))):void 0}function pt(e){if(!e)return void 0;const{displayLabel:n,...t}=e;return Object.freeze({...t,formatVersion:_n,...t.colors?{colors:Object.freeze({...t.colors})}:{},...t.roles?{roles:gi(t.roles)}:{},...t.semanticSlots?{semanticSlots:yi(t.semanticSlots)}:{},...t.bindings?{bindings:In(t.bindings)}:{},...t.constraints?{constraints:In(t.constraints)}:{}})}function Il(e){return Wl(e)}function Pl(e,n,t){return wn({id:e,kind:n,version:t.version??Ls,compatibility:{...Fs,...t.compatibility},provenance:t.provenance??_l})}function Vs(e,n,t,r){const i=e.name;const o=Object.freeze({...e,formatVersion:_n,...e.colors?{colors:Object.freeze({...e.colors})}:{},...e.roles?{roles:gi(e.roles)}:{},...e.semanticSlots?{semanticSlots:yi(e.semanticSlots)}:{},...e.bindings?{bindings:In(e.bindings)}:{},...e.constraints?{constraints:In(e.constraints)}:{}});const s=Pl(i,n,t);ct(Me,{identity:s,value:o});if(r!==void 0){const a=An.get(r);const c=Me.has(r)&&r!==i?r:void 0;if(a!==void 0||c!==void 0){Me.delete(i);throw new Error(`Style input name "${r}" already selects "${a??c}"`)}An.set(r,i)}return()=>{pi();const a=Me.get(i);if(a?.identity!==s)return false;const c=Me.delete(i);if(c&&r!==void 0&&An.get(r)===i){An.delete(r)}return c}}function sg(e,n={}){pi();return nr(()=>{const t=Ws(e);const r=Al(n);if(!t.name)throw new Error("registerStyle requires a name (anonymous specs are for inline use)");const i=Qe(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=Il(t);if(i.kind!==o){throw new Error(`Style "${t.name}" is a ${o}; its name must use the "${o}:" namespace`)}return Vs(t,o,r)})}function Z(e,n="look",t=e.name??""){if(!e.name)throw new Error("registerBuiltInStyle requires a name");const r=e.name;const i=at(n,r);const o=er(pt({...e,name:i}));if(o.length)throw new Error(`Invalid built-in style "${i}": ${o.join("; ")}`);Vs({...e,name:i},n,{version:Ls,compatibility:Fs,provenance:Ml},t)}function Gs(e){if(Me.has(e))return e;const n=An.get(e);return n}function vl(e){const n=Gs(e);if(!n)return void 0;const t=pt(Me.get(n)?.value);if(!t)return void 0;return Object.freeze({canonicalId:n,spec:t})}function ag(e){return vl(e)?.spec}function Dl(){return jl().map(e=>e.inputName)}function jl(){return Object.freeze(Array.from(Me.values(),({identity:e,value:n})=>{const t=Array.from(An.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:pt(n),inputName:t,displayLabel:i,kind:e.kind,isDefault:e.id==="look:crisp"})}))}function ft(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 zl(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 Bl(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 Bs(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 Us(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=Gs(i);if(o==="look:crisp")continue;const s=o?Me.get(o)?.value:void 0;if(!s)throw new _e(`Unknown style "${i}". Known styles: ${Dl().join(", ")}`);t.push(s)}else{t.push(Ws(i))}}if(t.length===0)return void 0;const r={formatVersion:_n};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=zl(r.roles,i.roles)}else if(o==="semanticSlots"){r.semanticSlots=Bl(r.semanticSlots,i.semanticSlots)}else if(o==="bindings"){r.bindings=Bs(r.bindings,i.bindings)}else if(o==="constraints"){r.constraints=Bs(r.constraints,i.constraints)}else{;r[o]=s}}}return r}function cg(e){return nr(()=>{const n=Us(e);if(n)Ys(n);return pt(n)})}function Ll(e){return e?{...e}:void 0}function Fl(e){const n=e.strokeWidth;const t=e.roles?Object.fromEntries(Object.entries(e.roles).map(([s,a])=>[s,Ll(a)])):void 0;const r={...n!==void 0&&n>0&&ft(e)==="default"?{lineWidth:n}:{},...t?.node};const i={...n!==void 0&&n>0&&ft(e)==="default"?{lineWidth:n}:{},...t?.edge};const o={...n!==void 0&&n>0&&ft(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:gi(t)}:{},...e.semanticSlots?{semanticSlots:yi(e.semanticSlots)}:{},...e.bindings?{bindings:In(e.bindings)}:{},...e.constraints?{constraints:In(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 Ys(e){for(const[o,s]of(e.bindings??[]).entries()){const a=e.semanticSlots?.[s.slot];if(!a)throw new _e(`Invalid style spec: binding ${o+1} references missing semantic slot "${s.slot}"`);const c=s.role===void 0?new Set(Xt):new Set(nn.find(d=>d.role===s.role).style.applicableProperties);if(!Object.keys(a).some(d=>c.has(d))){throw new _e(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 _e(`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 _e(`Invalid style spec: ${i.map(o=>`"${o}"`).join(", ")} require fill "wash" in the final Style stack`)}if(e.fill!==void 0&&ft(e)==="default"){throw new _e('Invalid style spec: "fill" has no crisp/default backend projection; combine it with stroke "jittered"/"freehand" or another rough/hybrid backend field')}}function dg(e){return nr(()=>{const n=Us(e);if(n===void 0)return{};Ys(n);const t=pt(n);const r=Fl(n);return{...t?{style:t}:{},...r?{face:r}:{}}})}function Wl(e){return Object.keys(e).every(n=>n==="formatVersion"||n==="$schema"||n==="name"||n==="blurb"||n==="colors")?"palette":"look"}function lg(e){return ft(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}Z({name:"crisp",displayLabel:"Crisp",blurb:"The default renderer with precise SVG geometry.",stroke:"crisp"},"look");for(const e of js){const{inputName:n,colors:t}=e;if(at("palette",n)!==e.id){throw new Error(`Built-in palette identity mismatch: ${e.id}`)}Z({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)}Z({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});Z({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});Z({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});Z({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});Z({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});Z({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});Z({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");Z({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)"}}});Z({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});Z({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)"}}});Z({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)"}}});Z({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});Z({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)"}}});Z({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)"}}});Z({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 oe(e,n,t=0){return Math.abs(e.x-n.x)<=t&&Math.abs(e.y-n.y)<=t}function mt(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 Pn(e,n){return{x:(e.x+n.x)/2,y:(e.y+n.y)/2}}function on(e,n){return Math.hypot(n.x-e.x,n.y-e.y)}function Hs(e,n,t){const r=on(n,t);if(r===0)return on(e,n);return Math.abs((t.x-n.x)*(n.y-e.y)-(n.x-e.x)*(t.y-n.y))/r}function Ks(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,p)=>{const u=on(c,f);const g=on(c,d)+on(d,l)+on(l,f)-u;const b=Math.max(Hs(d,c,f),Hs(l,c,f))<=i&&g<=i;if(b||p>=o){s.push({...f});return}const y=Pn(c,d);const k=Pn(d,l);const x=Pn(l,f);const S=Pn(y,k);const h=Pn(k,x);const E=Pn(S,h);a(c,y,S,E,p+1);a(E,h,x,f,p+1)};a(e,n,t,r,0);return s}function Ae(...e){const n=e[0];if(!n)return void 0;for(let t=1;t<e.length;t++){const r=mt(n,e[t]);if(r)return r}return void 0}function Vl(e,n){if(n.kind==="line")return Ae(e,n.end);if(n.kind==="quadratic")return Ae(e,n.control,n.end);return Ae(e,n.control1,n.control2,n.end)}function Gl(e,n){if(n.kind==="line")return Ae(e,n.end);if(n.kind==="quadratic")return Ae(n.control,n.end)??Ae(e,n.end);return Ae(n.control2,n.end)??Ae(n.control1,n.end)??Ae(e,n.end)}function Ul(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 Xs(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]=Ul(s,d.control,d.end);i.push(...Ks(s,l,f,d.end,r).slice(1))}else{i.push(...Ks(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=Vl(o[d],t[d])}let c;for(let d=t.length-1;d>=0&&!c;d--){c=Gl(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 gt(e,n,t){return t==="manhattan"?Math.abs(n.x-e.x)+Math.abs(n.y-e.y):on(e,n)}function qs(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 Js(e,n,t,r,i){const o=gt(e,n,r);if(o===0)return{...e};const s=t/o;return{x:qs(e.x+(n.x-e.x)*s,i),y:qs(e.y+(n.y-e.y)*s,i)}}function Zs(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 mg(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 p=1;p<e.length;p++){s.push({kind:"line",end:e[p]})}const f=`M${e.map(p=>`${p.x},${p.y}`).join(" L")}`;return Xs(f,o,s,t.tolerance)}const a=i?.start?Zs(e,true):-1;const c=i?.end?Zs(e,false):-1;const d=[`M${o.x},${o.y}`];for(let f=1;f<e.length-1;f++){const p=e[f-1];const u=e[f];const g=e[f+1];const b=gt(p,u,r);const y=gt(u,g,r);const k=Math.max(0,Math.min(n,b/2,y/2,f===a?gt(o,u,r)-i.start:Infinity,f===c?gt(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=Js(u,p,k,r,t.precision);const S=Js(u,g,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 Xs(d.join(" "),o,s,t.tolerance)}function Ie(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 rr(e){return e.kind==="path"&&/[AaCcQqSsTt]/.test(e.d)}function ir(e,n=false){const t=[];for(const r of Ie(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=mt(r.points[d-1],r.points[d])}const a=r.closed&&!oe(i,o);if(!s&&a)s=mt(o,i);let c=a?mt(o,i):void 0;for(let d=r.points.length-1;d>0&&!c;d--){c=mt(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 Qs(e,n=false){const t=[];const r=[];Ie(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 vn(e,n=false){const t=[];const r=[];for(const i of Ie(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 hi(e,n=false){const t=[];for(const[r,i]of Ie(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&&!oe(o,s)){t.push({start:s,end:o,subpathIndex:r,closing:true})}}return t}function Dn(e,n=false){if(e.kind==="line")return[];if(e.kind==="path")return e.markerMidpoints??[];return Ie(e,n).flatMap(t=>{if(t.points.length<2)return[];const r=t.closed&&oe(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 ea(e,n=false){if(e.kind==="line")return[];const t=Ie(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=>oe(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&&oe(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 or(e){return e.match(/[Mm](?=\s*[-+.]?\d)/g)?.length??0}var jn=[1,0,0,1,0,0];function ue(e){if(!e)return jn;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 sn(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 we(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 sr(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 na(e){let n=jn;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=ue({kind:"rotate",angle:s[0],cx:s[1]??0,cy:s[2]??0});else return void 0;n=sn(n,a)}return t>0&&!e.slice(t).trim()?n:void 0}function ta(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 ra(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 bi(e,n,t){if(e.hit.pointerEvents==="none")return void 0;const r=hi(e.hit.geometry,e.hit.closed);if(r.length===0)return void 0;const i=sn(t,ue(e.transform));let o=Number.POSITIVE_INFINITY;for(const s of r){o=Math.min(o,ra(n,we(s.start,i),we(s.end,i)))}return o}function xg(e,n){return bi(e,n,jn)}function ia(e,n,t,r){if(e.hit.pointerEvents==="none")return false;const i=sn(r,ue(e.transform));const o=sr(i);if(!o)return false;if(e.stroke.nonScaling){const d=bi(e,n,r);return d!==void 0&&d<=e.hit.strokeWidth/2+Math.max(0,t)}const s=we(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 hi(e.hit.geometry,e.hit.closed).some(d=>ra(s,d.start,d.end)<=c)}function xe(e,n,t=0){return ia(e,n,t,jn)}function oa(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")oa(i.children.map(o=>o.node),sn(n,ue(i.transform)),t)}}function Sg(e,n,t=0){const r=[];oa(e.parts,jn,(i,o)=>{const s=bi(i,n,o);if(s!==void 0&&ia(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 Yl=/^[A-Za-z_][A-Za-z0-9_.:-]*$/;var q=Object.freeze({maxIdLength:256,maxCoordinate:1e6,maxStopsPerGradient:256,maxResources:1e4,maxAggregateStops:2e4,maxSerializationBytes:8e6});function Pe(e,n){if(!Number.isFinite(e))throw new Error(`Linear gradient ${n} must be finite`);if(Math.abs(e)>q.maxCoordinate){throw new Error(`Linear gradient ${n} must not exceed ${q.maxCoordinate}`)}return e}function Hl(e){return`${Math.round(e*1e5)/1e3}%`}function xi(e){if(!Yl.test(e.id)){throw new Error(`Linear gradient id ${JSON.stringify(e.id)} must use the safe SVG id grammar`)}if(e.id.length>q.maxIdLength){throw new Error(`Linear gradient id must contain at most ${q.maxIdLength} characters`)}if(e.units!=="userSpaceOnUse"&&e.units!=="objectBoundingBox"){throw new Error(`Linear gradient "${e.id}" units must be userSpaceOnUse or objectBoundingBox`)}Pe(e.x1,"x1");Pe(e.y1,"y1");Pe(e.x2,"x2");Pe(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>q.maxStopsPerGradient){throw new Error(`Linear gradient "${e.id}" must declare at most ${q.maxStopsPerGradient} stops`)}let n=-1;for(const[t,r]of e.stops.entries()){Pe(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(le(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 Si(e,n={}){xi(e);const t=" ".repeat(n.indent??2);const r=`${t} `;const i=[`id="${z(e.id)}"`,`gradientUnits="${e.units}"`,`x1="${Pe(e.x1,"x1")}"`,`y1="${Pe(e.y1,"y1")}"`,`x2="${Pe(e.x2,"x2")}"`,`y2="${Pe(e.y2,"y2")}"`];return[`${t}<linearGradient ${i.join(" ")}>`,...e.stops.map(o=>`${r}<stop offset="${Hl(o.offset)}" stop-color="${z(o.color)}"${o.opacity===void 0?"":` stop-opacity="${o.opacity}"`} />`),`${t}</linearGradient>`].join("\n")}function sa(e,n={}){if(e.length>q.maxResources){throw new Error(`A definitions mark may declare at most ${q.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>q.maxAggregateStops){throw new Error(`Linear gradient resources may declare at most ${q.maxAggregateStops} aggregate stops`)}const a=Si(s,n);const c=o.length===0?0:1;const d=q.maxSerializationBytes-i-c;const l=ie(a,Math.max(0,d));if(l>d){throw new Error(`Linear gradient serialization exceeds ${q.maxSerializationBytes} bytes`)}i+=l+c;o.push(a)}return o.join("\n")}import{decodeXML as ki}from"entities";var Kl=/^(?:class|data-[a-z][a-z0-9-]*|role|aria-[a-z]+|tabindex|pointer-events|transform|style)$/;var Xl=/^\s*<g\b[^>]*>(?:<title>[^<]*<\/title>)?$/;var ql=/^\s*(?:--[A-Za-z0-9_-]+\s*:[^;]*(?:;\s*|$))*$/;function ar({id:e,open:n,close:t,join:r,transform:i,paint:o}){if(t!=="</g>"||!/^\s*$/.test(r))throw new TypeError(`Group "${e}" close and join must not add artwork`);const s=new Set;let a;const c=Xl.test(n)?Eo(n,"g",(p,u)=>{if(s.has(p))throw new TypeError(`Group "${e}" open has a duplicate "${p}"`);s.add(p);if((p==="opacity"||p==="fill")&&o?.[p]!==void 0&&ki(u)===o[p])return;if(!Kl.test(p))throw new TypeError(`Group "${e}" open sets "${p}"; paint and geometry belong to typed marks`);if(p==="style"&&!ql.test(ki(u))){throw new TypeError(`Group "${e}" open style may only set custom properties; paint belongs to typed marks`)}if(p==="transform")a=u}):void 0;if(["opacity","fill"].some(p=>s.has(p)!==(o?.[p]!==void 0)))throw new TypeError(`Group "${e}" open disagrees with its typed paint`);if(c!=="g")throw new TypeError(`Group "${e}" open must be one <g> tag with an optional <title>`);const d=a===void 0?void 0:ki(a);const l=d===void 0?void 0:na(d);const f=i?ue(i):void 0;if(d!==void 0&&!l)throw new TypeError(`Group "${e}" open has an unsupported transform`);if(!!l!==!!f||l&&f&&l.some((p,u)=>Math.abs(p-f[u])>1e-9*Math.max(1,Math.abs(p)))){throw new TypeError(`Group "${e}" open transform disagrees with its typed transform`)}return{matrix:l&&Object.freeze(l),style:s.has("style")}}function aa(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=hn(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 ca=new We(256,8*1024*1024);var yt=new WeakSet;var J=Lt(_o);function Fg(e){return J.has(e)}function cr(e){return yt.has(e)}function la(e,n){if(yt.has(e))yt.add(n)}function wi(e,n){return e.bold===n.bold&&e.italic===n.italic&&e.underline===n.underline&&e.strikethrough===n.strikethrough}function Ci(e){const n=[];let t;for(const r of e.flatMap(i=>i.fragments??i)){if(t&&wi(t,r)){t.text+=r.text;t.sourceEnd=r.sourceEnd}else{t={...r};n.push(t)}}return n}function an(e,n){if(e.length===0)return 0;const t=n.safeFont?It:et;const r=e.length===1&&!e[0].fragments?e:Ci(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 da(r,n).width;const o=n.monospace?Be()?r.reduce((a,c)=>a+Pt(c.text,n.fontSize,0,c.bold?Math.max(700,n.fontWeight):n.fontWeight,c.italic?"italic":"normal",n.fontFamily),0):Pt(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(!Be()&&/[^\x20-\x7e]/u.test(i)){const a=r.reduce((d,l)=>d+[...l.text].reduce((f,p)=>f+(hn(p)===0?0:/[^\x20-\x7e]/u.test(p)?n.fontSize*1.2:It(p,n.fontSize,l.bold?Math.max(700,n.fontWeight):n.fontWeight)),0),0);const c=re(i).filter(d=>/\p{M}/u.test(d)&&[...d].every(l=>hn(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 da(r,n).width;const s=n.letterSpacing??0;return Math.max(0,o+(s===0?0:Math.max(0,re(i).length-1)*s))}function Jl(e,n){const t=e.flatMap((a,c)=>re(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||!wi(d,e[l.runIndex]);const p=ua(a.text,d,f,n);const u=J.freeze({...a,x:r,width:p});i=Math.min(i,r);o=Math.max(o,r+p);r+=p+(n.letterSpacing??0);return u});return{width:o-i,originX:-i,fragments:J.freeze(s)}}function Zl(e,n){const t=[];for(const[o,s]of e.entries()){const a=t.at(-1);if(a&&wi(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=an([{...e[o],text:s}],n);const c=J.freeze({runIndex:o,text:s,x:r,width:a});r+=a;return c});return{width:r,originX:0,fragments:J.freeze(i)}}function ua(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?It:et;return r.monospace?Pt(e,r.fontSize,0,i,o,r.fontFamily):s(e,r.fontSize,i,o,r.fontFamily)-(t||Be()?0:r.fontSize*.15)}function da(e,n){let t=0,r=0,i=0;for(const o of e){const s=re(o.text);for(const[a,c]of s.entries()){const d=ua(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 Ql(e){const n=e.flatMap(i=>(i.clusters??re(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 re(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 Ei(e){const{fragments:n,...t}=e.fragments?.at(-1)??e;return{...t,text:"-",clusters:void 0}}function ht(e,n){if(Sn("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=Sn("text-spans")&&!Be()&&typeof e==="string"&&e.length<=16384?JSON.stringify([e,n]):void 0;if(t!==void 0){const g=ca.get(t);if(g)return g}const r=kn(e,n.display,n.transform);const i=n.maxWidth;const o=[];const s=[];for(const[g,b]of r.lines.entries()){if(g>0)s.push({kind:"authored",sourceOffset:r.lineStarts[g]-1});if(b.length===0){o.push([]);continue}if(!i||!Number.isFinite(i)||i<=0||an(b,n)<=i){o.push([...b]);continue}const y=Ql(b);const k=Sn("text-spans");const x=k&&!Be()?aa(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 an(y.slice(E,R),n)<=i}:void 0;let h=0;while(h<y.length){let E=h;let R=-1;if(S){while(E<y.length&&S(h,E+1)){if(/\s/u.test(y[E].text))R=E+1;E++}}else{while(E<y.length&&an(y.slice(h,E+1),n)<=i){if(/\s/u.test(y[E].text))R=E+1;E++}}if(E===y.length){o.push(Ci(y.slice(h)));break}if(E>h&&!/\s/u.test(y[E-1].text)&&/\s/u.test(y[E]?.text??"")){R=E;while(R<y.length&&/\s/u.test(y[R].text))R++}let w=false;let I;let O;if(R>h){if(y.slice(h,R).some(L=>!/\s/u.test(L.text)))while(R<y.length&&/\s/u.test(y[R].text))R++;E=R;I=E;while(I>h&&/\s/u.test(y[I-1].text))I--;if(I===h)I=E;else O=y.slice(I,E).map(L=>L.text).join("")}else{E=Math.max(h+1,E);const L=G=>/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u.test(y[G-1]?.text??"")&&/\p{L}/u.test(y[G]?.text??"");if(L(E)){while(E>h+1&&an([...y.slice(h,E),Ei(y[E-1])],n)>i)E--;w=an([...y.slice(h,E),Ei(y[E-1])],n)<=i}}const H=Ci(y.slice(h,I??E));const fe=x?.offsets[E]??y[E]?.sourceStart??r.source.length;if(w)H.push({...Ei(y[E-1]),sourceStart:fe,sourceEnd:fe});o.push(H);if(E<y.length)s.push({kind:w?"hyphen":"wrap",sourceOffset:fe,...O?{replacedText:O}:{}});h=E}if(y.length===0)o.push([])}const a=r.lines.map(g=>g.map(b=>b.text).join("")).join("\n");const c=/\p{M}/u.test(a.normalize("NFD").replace(/[\uFE0E\uFE0F]/g,""))?re(a.normalize("NFD")).reduce((g,b)=>Math.max(g,(b.replace(/[\uFE0E\uFE0F]/g,"").match(/\p{M}/gu)??[]).length),0):0;const d=n.fontSize*Math.max(Oe,/[\p{Script=Arabic}\p{Script=Hebrew}]/u.test(a)?2.4:0,c?Oe+c*.6:0);const l=o.map((g,b)=>{const y=g.map(h=>r.display==="literal"?h.text:At(h)).join("");g.forEach(J.freeze);const k=!/[^\x20-\x7e]/u.test(y);const x=g.some(h=>h.bold||h.italic||h.underline||h.strikethrough);const S=k?(n.letterSpacing??0)!==0?Jl(g,n):x?Zl(g,n):void 0:void 0;return J.freeze({runs:J.freeze(g),text:y,width:S?.width??an(g,n),baseline:b*d+n.fontSize*.35,originX:S?.originX??0,...S?{fragments:S.fragments}:{}})});const f=l.map(g=>g.text);J.freeze(f);s.forEach(J.freeze);const p=l.reduce((g,b)=>Math.max(g,b.width),0);const u=J.freeze({unit:"px",prepared:r,text:f.join("\n"),lines:f,lineBlocks:J.freeze(l),breaks:J.freeze(s),width:p,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}:{}});yt.add(u);if(t!==void 0)ca.set(t,u,t.length*2+u.prepared.source.length*128+u.lines.length*256+512);return u}function Wg(e,n){const t=e?.lineBlocks[n];if(!e||!t)return void 0;if(!cr(e))throw new TypeError("Pixel line projection requires retained preparation");const r=[t.text];J.freeze(r);const i=J.freeze({...e,text:t.text,lines:r,lineBlocks:J.freeze([J.freeze({...t,baseline:e.fontSize*.35})]),breaks:J.freeze([]),width:t.width,height:e.lineHeight});yt.add(i);return i}import{decodeXML as eu}from"entities";function zn(e){return!e.includes("->")&&!/[#:"\[\],\u0000-\u001f]/.test(e)}function Hg(e,n,t=""){const r=zn(e)&&zn(n)?`${e}->${n}`:`relation:${JSON.stringify([e,n])}`;return t?`${t}:${r}`:r}function fa(e,...n){const t=n.map(String);return zn(e)&&t.every(zn)?[e,...t].join(":"):`part:${JSON.stringify([e,...t])}`}function Kg(e,n,...t){const r=t.map(String);return zn(n)&&r.every(zn)?[e,n,...r].join(":"):`${e}:${JSON.stringify([n,...r])}`}function pa(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:eu(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 cn(e){return Nn(e).domIdentity}function ma(e,n){if(!cn(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=z(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 Ti(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 ga(e,n){const t=N(e,"owner",n);const r=N(e,"point",n);return{...e,...t?{owner:{...t}}:{},...r?{point:{...r}}:{}}}function nu(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 bt(e,n=false){if(n&&e.geometry.kind==="path")throw new TypeError("Deferred terminal projections require line or polyline geometry");const t=nu(e.route,e.stroke,n);const r=Qs(e.geometry,e.route.closed);const i=ea(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:Ti(N(e.markers,"start",n),n)}:{},mid:e.markers.mid.map(a=>Ti(a,n)),...N(e.markers,"end",n)?{end:Ti(N(e.markers,"end",n),n)}:{}},markerPlacements:s,endpoints:{...e.endpoints,...N(e.endpoints,"start",n)?{start:ga(N(e.endpoints,"start",n),n)}:{},...N(e.endpoints,"end",n)?{end:ga(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 Bn=new WeakMap;var Ri=0;function Qg(e){Ri++;try{return e()}finally{Ri--}}var dr={enumerable:true,configurable:true,get(){const e=Bn.get(this);if(Object.hasOwn(e,"projection"))return e.projection;const n=bt(e,true);Bn.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});Bn.delete(this)}};function ya(e,n){Bn.set(e,n);Object.defineProperty(e,"terminalProjection",dr)}function ha(e,n){if(Ri===0||n.geometry.kind==="path"||n.additionalDiagnostics!==void 0&&!n.additionalDiagnostics.every(t=>typeof t==="string")){e.terminalProjection=bt(n);return}if(n.additionalDiagnostics)Object.defineProperty(n,"additionalDiagnostics",{value:Object.freeze([...n.additionalDiagnostics])});ya(e,Object.freeze(n))}function xt(e){const n=Bn.get(e);if(!n||Object.hasOwn(n,"projection"))return void 0;const t=Object.getOwnPropertyDescriptor(e,"terminalProjection");return t?.get===dr.get?n:void 0}function ba(e,n,t){const r=Bn.get(e);return n==="terminalProjection"&&r&&t.get===dr.get?dr.get.call(e):void 0}function xa(e,n){const t=xt(e);if(!t)return false;ya(n,t);return true}function Sa(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 lr(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 ka(e,n,t){if(t%360===0)return{...e};const r=[lr({x:e.x0,y:e.y0},n,t),lr({x:e.x1,y:e.y0},n,t),lr({x:e.x0,y:e.y1},n,t),lr({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 fr(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 Q(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 Fn(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 Ta(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 p;let u;let g=false;const b=S=>{if(t){for(let h=0;h<S;h++)if(!t()){g=true;return false}}return true};const y=()=>{while(i<e.length&&/[\s,]/.test(e[i])){if(!b(1))return;i++}};const k=(S=false)=>{y();if(g)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 h=r.exec(e);if(!h)return void 0;if(!b(h[0].length))return void 0;i=r.lastIndex;const E=Number(h[0]);return Number.isFinite(E)?E:void 0};const x=(S,h)=>{if(!Number.isFinite(S)||!Number.isFinite(h))return false;p=Q(p,{x0:S,y0:h,x1:S,y1:h});if(n)u=Q(u,{x0:S,y0:h,x1:S,y1:h});return true};while(true){y();if(g)return void 0;if(i>=e.length)return p;if(/[a-zA-Z]/.test(e[i])){if(!b(1))return void 0;d=e[i++];if(!/[MmLlHhVvCcSsQqTtAaZz]/.test(d)||!p&&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(),h=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 L=0;L<E;L++){const G=k(S==="A"&&(L===3||L===4));if(G===void 0)return void 0;R.push(G)}const w=L=>R[L]+(h?o:0);const I=L=>R[L]+(h?s:0);let O,H,fe;if(S==="H"){O=w(0);H=s}else if(S==="V"){O=o;H=I(0)}else if(S==="C"||S==="S"||S==="Q"||S==="T"){const L=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(L.x,L.y))return void 0;for(let G=0;G<E-2;G+=2)if(!x(w(G),I(G+1)))return void 0;O=w(E-2);H=I(E-1);fe=S==="T"?L:{x:w(E-4),y:I(E-3)}}else if(S==="A"){O=w(5);H=I(6);let L=Math.abs(R[0]),G=Math.abs(R[1]);if(L>0&&G>0&&(O!==o||H!==s)){const T=R[2]%360*Math.PI/180,M=Math.cos(T),P=Math.sin(T);const pe=(o-O)/2,te=(s-H)/2;const De=M*pe+P*te,qe=-P*pe+M*te;const Or=Math.hypot(De/L,qe/G);if(Or>1){L*=Or;G*=Or}const Ki=(De/L)**2+(qe/G)**2;const Xi=(R[3]===R[4]?-1:1)*Math.sqrt(Math.max(0,(1-Ki)/Ki));const qi=Xi*L*qe/G,Ji=-Xi*G*De/L;const Zi=M*qi-P*Ji+(o+O)/2;const Qi=P*qi+M*Ji+(s+H)/2;const eo=Math.hypot(L*M,G*P),no=Math.hypot(L*P,G*M);if(!x(Zi-eo,Qi-no)||!x(Zi+eo,Qi+no))return void 0}}else{O=w(0);H=I(1);if(S==="M"){a=O;c=H;d=h?"l":"L"}}if(!x(O,H))return void 0;if(n&&S!=="M"&&!n({bounds:u,...["L","H","V"].includes(S)?{line:[{x:o,y:s},{x:O,y:H}]}:{}}))return void 0;o=O;s=H;f=fe;l=S}}function dy(e,n,t){return Ta(e,n,t)!==void 0}function ln(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 fr(e.points);case"compound":{let n;for(const t of e.children){const r=ln(t);if(!r)return void 0;n=Q(n,r)}return n}case"path":return Ta(e.d)}}function dn(e,n,t,r=false,i){if(!e||!n)return void 0;const o=e.geometry?ln(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=Q(s,o);const b=Ln(e.paint??{},true);if(b===void 0)return void 0;s=Fn(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 y=(e.size.width-e.viewBox.width*b)/2;const k=(e.size.height-e.viewBox.height*b)/2;const x=h=>y+(h-e.viewBox.x)*b;const S=h=>k+(h-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,y=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,h])=>({x:n.x+((S-a)*y-(h-c)*k)*f,y:n.y+((S-a)*k+(h-c)*y)*f}));return x.every(S=>Number.isFinite(S.x)&&Number.isFinite(S.y))?fr(x):void 0}const p=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 g=(r?Math.hypot(p,u):Math.max(p,u))*f;return{x0:n.x-g,y0:n.y-g,x1:n.x+g,y1:n.y+g}}function ly(e,n){const t=typeof e.orient==="number"?e.orient:n==="start"&&e.orient==="auto-start-reverse"?180:0;const r=dn(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 uy(e,n){const t=e.route.geometry,r=vn(t,e.route.closed);const i=Dn(t,e.route.closed);const o=Na(n,e.transform);const s=[];const a=(c,d,l,f)=>{if(!d||!l)return;const p=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=ur(e.stroke.width);const g=dn(d,l,u,true,p);const b=ue(o);const y=JSON.stringify([{...d,orient:d.orient??"auto"},p??["unknown",t],d.units==="userSpaceOnUse"?1:u,b.slice(0,4)]);let k,x;if(p!==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 h=S*Math.max(1,d.scale??1)*(d.units==="userSpaceOnUse"?1:u);const E=p*Math.PI/180,R=Math.cos(E),w=Math.sin(E);k=d.geometry.points.map(T=>{const M=(T.x-(d.ref?.x??0))*h,P=(T.y-(d.ref?.y??0))*h;return we({x:l.x+M*R-P*w,y:l.y+M*w+P*R},b)});const[I,O,H,fe]=b;const L=(Math.hypot(I+fe,O-H)+Math.hypot(I-fe,O+H))/2;const G=Ln(d.paint??{},true);x=G===void 0?void 0:G*h*L;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:we(l,b),repaint:y,...k?{hull:k,padding:x}:{},...g?{bounds:He(g,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 ur(e){const n=typeof e==="number"?e:parseFloat(e);return Number.isFinite(n)?Math.max(0,n):1}function tu(e){const n=e.route.geometry;let t=n.kind==="path"?fr(n.points):ln(n);if(!t)return void 0;const r=ur(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=Fn(t,o);const s=vn(n,e.route.closed);for(const c of s.starts)t=Q(t,dn(e.markers.start,c,r));for(const c of s.ends)t=Q(t,dn(e.markers.end,c,r));const a=Dn(n,e.route.closed);if(e.markers.mid.length===1){for(const c of a)t=Q(t,dn(e.markers.mid[0],c,r))}else{for(let c=0;c<e.markers.mid.length;c++){t=Q(t,dn(e.markers.mid[c],a[c],r))}}for(const c of e.labels){if(c.bounds)t=Q(t,c.bounds);t=Q(t,Ra(c))}return t}var Ea=new WeakMap;function St(e){const n=ot(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=Ea.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=ht(n,{display:s,fontSize:r,fontWeight:i,letterSpacing:o});Ea.set(e,c);return c}function Ra(e){if(e.visual?.kind!=="inline"||!e.anchor||e.fontSize===void 0||e.textAnchor===void 0)return void 0;const n=St(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 Fn({x0:r,y0:i-n.fontSize*.35-n.height/2,x1:r+t,y1:i-n.fontSize*.35+n.height/2},o)}function Ni(e){let n;if(e.kind==="shape")n=ln(e.geometry);else if(e.kind==="connector")n=tu(e);else if(e.kind==="text"){const t=e.textLayout??ht(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?He(n,e.transform):void 0}function He(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 ka(e,{x:n.cx,y:n.cy},n.angle);const t=ue(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 p=we({x:r,y:i},t),u=we({x:d,y:l},t);return Number.isFinite(p.x)&&Number.isFinite(p.y)&&Number.isFinite(u.x)&&Number.isFinite(u.y)?{x0:Math.min(p.x,u.x),y0:Math.min(p.y,u.y),x1:Math.max(p.x,u.x),y1:Math.max(p.y,u.y)}:void 0}const f=[[r,i],[o,s],[a,c],[d,l]].map(([p,u])=>we({x:p,y:u},t));return f.every(p=>Number.isFinite(p.x)&&Number.isFinite(p.y))?fr(f):void 0}function Na(e,n){if(!e)return n;if(!n)return e;const[t,r,i,o,s,a]=sn(ue(e),ue(n));return{kind:"matrix",a:t,b:r,c:i,d:o,e:s,f:a}}function ru(e){return e.geometry.kind!=="line"&&!(e.geometry.kind==="polyline"&&e.geometry.points.length===2&&!e.closed)}function Ln(e,n){if(e.stroke===void 0||e.stroke==="none"||e.stroke==="transparent"||se(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 $i(e,n,t,r){if(!t)return He(Fn(e,n),r);const i=He(e,r);return i?Fn(i,n):void 0}function iu(e,n,t){const r=ln(e);const i=Math.hypot(e.x2-e.x1,e.y2-e.y1);if(t!==void 0&&t!=="butt"||i===0)return Fn(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 Ca(e,n,t,r,i,o){return e.kind==="line"&&!i?He(iu(e,t,r),o):$i(n,t,i,o)}function ou(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 p=Math.abs(s-i),u=Math.abs(l-s),g=Math.abs(f-o),b=Math.sign(l-i);const y=[i-b*wa(u,p,g,n),l+b*wa(p,u,g,n)];return{x0:Math.min(...y),y0:Math.min(o,f)-n,x1:Math.max(...y),y1:Math.max(o,f)+n}}function wa(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=g=>Math.min(c,Math.max(a,g));const l=g=>3*(e*(1-g)**2+n*g*g);const f=g=>e*(1-g)**2+n*(1+g+g*g);const p=6*t*Math.min(a*(1-a),c*(1-c));const u=6*r*t*c/Math.hypot(l(d(e/(e+n))),p)-f(d((2*e-n)/(2*(e+n))));if(u>0)o=Math.max(o,(1-a)*u)}return Math.min(r,o)}function su(e,n){const t=e.route.geometry;const r=ln(t);const i=Ln({stroke:e.stroke.color,strokeWidth:String(e.stroke.width),strokeLinecap:e.stroke.lineCap,strokeLinejoin:e.stroke.lineJoin,strokeMiterlimit:String(e.stroke.miterLimit)},ru(e.route));if(!r||i===void 0)return void 0;const o=t.kind==="path"&&e.stroke.lineCap==="butt"&&!e.stroke.nonScaling?ou(t.d,ur(e.stroke.width)/2):void 0;let s=o?He(o,n):$i(r,i,e.stroke.nonScaling,n);if(!s)return void 0;const a=ur(e.stroke.width);const c=vn(t,e.route.closed);const d=Dn(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,p)=>({marker:f,anchor:d[p]}))];for(const{marker:f,anchor:p}of l){const u=dn(f,p,a,true);const g=u&&He(u,n);if(!g)return void 0;s=Q(s,g)}for(const f of e.labels){const p=Q(f.bounds,Ra(f));if(f.visual?.kind==="inline"&&!p)return void 0;if(p){const u=He(p,n);if(!u)return void 0;s=Q(s,u)}}return s}function fy(e,n){return $a(e,n)}function $a(e,n){const t=Na(n,e.transform);if(t&&!sr(ue(t)))return void 0;let r;if(e.kind==="shape"){r=ln(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=Ln(c,i);const l=d===void 0?void 0:Ca(e.geometry,r,d,c.strokeLinecap,c.vectorEffect==="non-scaling-stroke",t);if(!l)return void 0;o=o?Q(o,l):l}if(!e.conditionalPaint)return o;const s=Ln(e.conditionalPaint,["polygon","polyline","path","compound"].includes(e.geometry.kind));if(!o||s===void 0)return void 0;const a=Ca(e.geometry,r,s,e.conditionalPaint.strokeLinecap,e.conditionalPaint.vectorEffect==="non-scaling-stroke",t);return a?Q(o,a):void 0}else if(e.kind==="connector"){return su(e,t)}else if(e.kind==="text"){r=Ni({...e,transform:void 0});const i=Ln(e.paint,false);if(!r||i===void 0)return void 0;return $i(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=$a(i.node,t);if(!o)return void 0;r=Q(r,o)}}else return void 0;return r}var Wn=class{value="";raw(n){this.value+=n}attribute(n,t){this.value+=` ${n}="${typeof t==="number"?U(t):z(rt(n,t))}"`}};var pr=new Set(["id","role","from","to","relationship","direction","prepared-text","font-metrics","text-fragment","connector-label-for"]);var mr=/^[A-Za-z0-9_-]+(?: [A-Za-z0-9_-]+)*$/;var gr=/^[a-z][a-z0-9-]*$/;function Oi(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 Mi(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 yr(e,n){if(n)e.attribute("transform",ta(n))}function _i(e,n,t){if(n&&cn(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 Oa(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 Ma(e){const n=new Wn;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)Oi(n,e.attributes);Oa(n,o);Mi(n,t?e.childPaints?.[i]??e.paint:e.paint);yr(n,e.transform);if(i===0)_i(n,e.identity,e.accessibility);n.raw(" />")}return n.value}function au(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 _a(e){const n=new Wn;Oi(n,e.attributes);au(n,e);Mi(n,e.paint);yr(n,e.transform);_i(n,e.identity,e.accessibility);const t=n.value.slice(1);const r=e.measurement==="prepared"&&e.block;const i=Wr(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=`>${de(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="${z(c.fill)}">${de(c.text)}</tspan>`;return`${i.slice(0,-s.length)}>${a}</text>`}function cu(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=St(n);const i={...n.paint,...n.halo?{stroke:n.halo.color??"var(--bg)",strokeWidth:String(n.halo.width),paintOrder:"stroke fill"}:{}};const o=new Wn;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);yr(o,e.transform);Mi(o,i);return Wr(r,n.anchor.x,n.anchor.y-Math.max(0,n.clearance??0),r.fontSize,o.value.slice(1),0)}function Aa(e){const n=new Wn;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}`);Oi(n,e.attributes);Oa(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");yr(n,e.transform);n.attribute("data-relationship",e.relationship.kind);n.attribute("data-direction",e.relationship.direction);_i(n,e.identity,e.accessibility);n.raw(" />")}for(let s=0;s<e.labels.length;s++){const a=cu(e,e.labels[s],s);if(a!==void 0){if(n.value)n.raw("\n");n.raw(a)}}return n.value}function xy(e,n,t,r,i){const o=du(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 du(e,n,t){return Math.max(0,Math.min(e,n,t))}var Vn=new WeakMap;var Gn=new WeakSet;var Ia=new WeakMap;var Ai=/<\s*text/i;function lu(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 p=s;while(s<i&&e[s]!==f)s++;if(e[s]!==f)return e;const u=e.slice(p,s);s++;o.push({name:l,value:f==='"'?u:u.replaceAll('"',"&quot;"),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 p=a.get(l.name)??100;return f-p||Sa(d.name,l.name)||d.index-l.index});const c=o.map(d=>`${d.name}="${d.value}"`).join(" ");return`<${t}${c?` ${c}`:""}${r?" /":""}>`}function Te(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+=lu(e.slice(r,o+1));t=o+1}return n}function Un(e,n){if(e.kind!=="document")throw new TypeError(`Scene ${e.kind} "${e.id}" is written from its fields, not stored markup`);Vn.set(e,Te(n));return e}function kt(e){Gn.add(e);return e}function B(e){const n=Vn.get(e);if(n!==void 0)return n;if(!Gn.has(e))throw new TypeError(`Scene node "${e.id}" has no admitted SVG serialization`);const t=Ia.get(e);if(t!==void 0)return t;const r=uu(e);if(e.kind!=="group"&&Object.isFrozen(e))Ia.set(e,r);return r}function uu(e){switch(e.kind){case"shape":return Ma(e);case"text":return _a(e);case"connector":return Aa(e);case"group":return[e.open,...e.children.map(n=>Et(B(n.node),n.indent)),e.close].join(e.join);case"document":throw new TypeError(`Scene node "${e.id}" has no admitted SVG serialization`)}}function Et(e,n){if(n<=0||e==="")return e;const t=" ".repeat(n);return t+e.replace(/\n/g,`
49
+ ${t}`)}function Ct(e,n){const t=Vn.get(e);if(t!==void 0)Vn.set(n,t);if(Gn.has(e))Gn.add(n)}function Pa(e){return Vn.has(e)||Gn.has(e)}function Cy(e){const n=t=>{if(t.kind==="document"){const r=Vn.get(t);return r!==void 0&&!Ai.test(r)}if(!Gn.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!Ai.test(t.open)&&!Ai.test(t.close)&&t.children.every(r=>n(r.node))}};return e.parts.every(n)}var fu=2;var Y=Object.freeze({maxExtent:1e6,maxNodes:1e5,maxDepth:64,maxTextLength:1e6,maxTextBytes:2e6,maxPoints:5e4,maxSerializationBytesPerNode:5e6,maxAggregateSerializationBytes:16e6,maxFinalSvgBytes:8e6});var ee=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 xr=Y.maxExtent;var V=Y.maxNodes;var Hn=Y.maxDepth;var un=Y.maxTextLength;var hr=Y.maxTextBytes;var Kn=Y.maxPoints;var Sr=Y.maxSerializationBytesPerNode;var pu=Y.maxAggregateSerializationBytes;var br=Y.maxFinalSvgBytes;var mu=/^[A-Za-z0-9][A-Za-z0-9_.:/-]*$/;var vi=/^[a-z0-9][a-z0-9._/-]*:[a-z0-9][a-z0-9._/-]*$/i;var ja=/^(?:none|[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?(?:[\s,]+[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)*)$/;var gu=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/;var yu=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)(?:px)?$/;var hu=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)$/;var bu=/^var\(--[a-z0-9_-]+(?:,\s*[-+]?\d*\.?\d+)?\)$/i;var xu="MmLlHhVvCcSsQqTtAaZz";var Su=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 Ii=/[-+]?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+))(?:[eE][-+]?\d+)?/y;var ku=["fill","stroke","strokeWidth","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","vectorEffect","paintOrder","opacity"];function kr(e,n="final SVG"){if(typeof e!=="string")throw new TypeError(`${n} must be a string`);if(e.length*3<=br)return;if(!Le("final-svg-budget",e,()=>ie(e,br)<=br)){throw new RangeError(`${n} exceeds the ${br}-byte final SVG limit`)}}function C(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function m(e,n,t,r){e.push({code:n,path:t,message:r})}function ne(e,n,t,r){const i=new Set(n);for(const o of Object.keys(e)){if(!i.has(o))m(r,"SCENE_DOCUMENT",`${t}.${o}`,"is not part of the external Scene contract")}}function Eu(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&&xu.includes(d)?d:void 0};const c=()=>{s();Ii.lastIndex=t;const d=Ii.exec(e);if(!d)return"expected a numeric path parameter";t=Ii.lastIndex;const l=Number(d[0]);if(!Number.isFinite(l))return`path parameter ${d[0]} is not finite`;if(Math.abs(l)>xr)return`path parameter ${d[0]} exceeds ${xr} 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=Su[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 p=0;p<l;p++){s();if(t>=e.length||a()!==void 0){return`command ${r} ended before its ${l}-parameter group was complete`}if((r==="A"||r==="a")&&(p===3||p===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>Kn)return`contains more than ${Kn} 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)){m(t,"SCENE_FINITE",n,"must be a finite number");return false}if(r.positive&&e<=0)m(t,"SCENE_BOUNDS",n,"must be positive");if(r.nonNegative&&e<0)m(t,"SCENE_BOUNDS",n,"must be non-negative");if(Math.abs(e)>xr)m(t,"SCENE_BOUNDS",n,`must not exceed ${xr} user units`);return true}function K(e,n,t,r={}){if(typeof e!=="string"){m(t,"SCENE_ID",n,"must be a string");return false}if(!r.empty&&e.length===0)m(t,"SCENE_ID",n,"must not be empty");if(e.length>(r.max??256))m(t,"SCENE_ID",n,"is too long");if(gu.test(e))m(t,"SCENE_ID",n,"contains a control character");if(r.externalId&&!mu.test(e))m(t,"SCENE_ID",n,"must use the safe external id grammar");return true}function ye(e,n,t,r={}){if(e===void 0)return;if(typeof e!=="string"&&typeof e!=="number"){m(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?yu:hu);const s=typeof e==="number"?e:o?Number(o[1]):Number.NaN;if(!Number.isFinite(s)){if(typeof e==="string"&&bu.test(e.trim()))return;m(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){m(t,"SCENE_PAINT",n,"must be non-negative")}else if(r.unitInterval&&(s<0||s>1)){m(t,"SCENE_PAINT",n,"must be in [0,1]")}}function Ke(e,n,t,r=false){if(!C(e)){m(t,"SCENE_PAINT",n,"must be a paint object");return}if(r)ne(e,ku,n,t);for(const i of["fill","stroke"]){const o=e[i];const s=Er(o);if(o!==void 0&&le(o)===void 0&&(r||!s)){m(t,"SCENE_PAINT",`${n}.${i}`,"must be a safe non-fetching CSS paint")}}ye(e.strokeWidth,`${n}.strokeWidth`,t,{nonNegative:true,length:true});ye(e.strokeDashoffset,`${n}.strokeDashoffset`,t,{length:true});ye(e.strokeMiterlimit,`${n}.strokeMiterlimit`,t,{nonNegative:true});ye(e.opacity,`${n}.opacity`,t,{unitInterval:true});ye(e.fillOpacity,`${n}.fillOpacity`,t,{unitInterval:true});ye(e.strokeOpacity,`${n}.strokeOpacity`,t,{unitInterval:true});if(e.strokeDasharray!==void 0&&(typeof e.strokeDasharray!=="string"||!ja.test(e.strokeDasharray.trim()))){m(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))){m(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))){m(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))){m(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)m(t,"SCENE_PAINT",`${n}.paintOrder`,"must be normal or one to three unique fill, stroke, and markers keywords")}}function Cu(e,n,t){if(!C(e)){m(t,"SCENE_DOCUMENT",n,"must be an attribute hook object");return}ne(e,["className","data","ariaHidden","tabIndex","ariaLabel"],n,t);if(e.className!==void 0&&(typeof e.className!=="string"||!mr.test(e.className))){m(t,"SCENE_DOCUMENT",`${n}.className`,"must be space-separated CSS class tokens")}if(e.ariaHidden!==void 0&&e.ariaHidden!==true)m(t,"SCENE_DOCUMENT",`${n}.ariaHidden`,"must be true when present");if(e.tabIndex!==void 0&&e.tabIndex!==0)m(t,"SCENE_DOCUMENT",`${n}.tabIndex`,"must be 0 when present");if(e.ariaLabel!==void 0)K(e.ariaLabel,`${n}.ariaLabel`,t,{max:un});if(e.data===void 0)return;if(!C(e.data)){m(t,"SCENE_DOCUMENT",`${n}.data`,"must be a string record");return}for(const[r,i]of Object.entries(e.data)){if(!gr.test(r)||pr.has(r))m(t,"SCENE_DOCUMENT",`${n}.data.${r}`,"must be a family data-* key the writer does not own");K(i,`${n}.data.${r}`,t,{empty:true,max:un})}}function Er(e){const n=typeof e==="string"?/^url\(#([A-Za-z_][A-Za-z0-9_.:-]*)\)$/.exec(e.trim()):null;return n?.[1]}function Tt(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=ie(r,c);if(d>c){e[n]=s+1;e[t]=true;m(o,"SCENE_BOUNDS",i,`${a} exceed the aggregate ${s}-byte limit`)}else{e[n]+=d}}function wu(e,n,t){if(!e||e.pointsExceeded)return;if(++e.points>Kn){e.pointsExceeded=true;m(t,"SCENE_BOUNDS",n,`Scene points exceed the aggregate ${Kn}-point limit`)}}function Se(e,n,t,r,i=false){if(!C(e)){m(t,"SCENE_FINITE",n,"must be a point object");return}if(i)ne(e,["x","y"],n,t);wu(r,n,t);$(e.x,`${n}.x`,t);$(e.y,`${n}.y`,t)}function Pi(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){m(t,"SCENE_FINITE",n,"must be a finite unit vector")}}function wt(e,n,t,r,i,o=false){if(!Array.isArray(e)){m(t,"SCENE_FINITE",n,"must be an array of points");return}if(e.length<r)m(t,"SCENE_BOUNDS",n,`must contain at least ${r} points`);if(i?.pointCollections.has(e))return;i?.pointCollections.add(e);if(e.length>V)m(t,"SCENE_BOUNDS",n,"contains too many points");const s=Math.min(e.length,V,i?Math.max(0,Kn-i.points+1):V);for(let a=0;a<s;a++)Se(e[a],`${n}[${a}]`,t,i,o)}function Yn(e,n,t,r=false,i=0,o,s=false){if(i>Hn){m(t,"SCENE_BOUNDS",n,`geometry exceeds maximum nesting depth ${Hn}`);return}if(!C(e)||typeof e.kind!=="string"){m(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)ne(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":wt(e.points,`${n}.points`,t,3,o,s);return;case"polyline":wt(e.points,`${n}.points`,t,2,o,s);return;case"path":if(typeof e.d!=="string"||e.d.length===0||e.d.length>un){m(t,"SCENE_SECURITY",`${n}.d`,"must use bounded SVG path data")}else{const a=Eu(e.d,s&&!r);if(a)m(t,"SCENE_SECURITY",`${n}.d`,`must use semantic SVG path data: ${a}`)}if(e.points!==void 0)wt(e.points,`${n}.points`,t,2,o,s);if(e.markerMidpoints!==void 0){wt(e.markerMidpoints,`${n}.markerMidpoints`,t,0,o,s)}if(e.subpaths!==void 0){if(!Array.isArray(e.subpaths)||e.subpaths.length===0){m(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,V);a++){const c=e.subpaths[a];if(!C(c)){m(t,"SCENE_DOCUMENT",`${n}.subpaths[${a}]`,"must be a typed contour");continue}wt(c.points,`${n}.subpaths[${a}].points`,t,2,o,s);if(typeof c.closed!=="boolean")m(t,"SCENE_DOCUMENT",`${n}.subpaths[${a}].closed`,"must be boolean")}}}return;case"compound":if(!Array.isArray(e.children)){m(t,"SCENE_BOUNDS",`${n}.children`,"must be a geometry array");return}if(e.children.length>V)m(t,"SCENE_BOUNDS",`${n}.children`,"contains too many geometries");for(let a=0;a<Math.min(e.children.length,V);a++){Yn(e.children[a],`${n}.children[${a}]`,t,r,i+1,o,s)}return;default:m(t,"SCENE_DOCUMENT",`${n}.kind`,`unknown geometry kind "${e.kind}"`)}}function Tu(e,n,t){if(e===void 0)return;if(!C(e)){m(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)){m(t,"SCENE_BOUNDS",`${n}.progress`,"must be in [0,1]")}for(const r of["category","status","route"]){if(e[r]!==void 0)K(e[r],`${n}.${r}`,t,{max:4096})}if(e.emphasis!==void 0&&typeof e.emphasis!=="boolean"){m(t,"SCENE_DOCUMENT",`${n}.emphasis`,"must be boolean")}}function va(e,n,t,r,i){if(!C(e)){m(t,"SCENE_MARKER",n,"must be a marker descriptor");return false}if(r){ne(e,["id","shape","geometry","size","viewBox","ref","bounds","units","orient","overflow","paint","scale"],n,t)}K(e.id,`${n}.id`,t,{externalId:r});if(!["arrow","open-arrow","circle","cross","triangle","diamond","diamond-open"].includes(String(e.shape))){m(t,"SCENE_MARKER",`${n}.shape`,"must be a known marker shape")}Yn(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)){m(t,"SCENE_BOUNDS",`${n}.geometry.children`,"external marker compounds must contain geometry")}if(C(e.size)){if(r)ne(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))Se(e.ref,`${n}.ref`,t,i,r);if(e.paint!==void 0)Ke(e.paint,`${n}.paint`,t,r);if(C(e.viewBox)){if(r)ne(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)ne(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){m(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){m(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))){m(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))){m(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))){m(t,"SCENE_MARKER",`${n}.overflow`,"must be hidden or visible")}try{qt(e)}catch(o){m(t,"SCENE_MARKER",n,o instanceof Error?o.message:String(o))}return typeof e.id==="string"}function Ru(e,n,t,r){if(typeof n!=="string"){m(r.diagnostics,"SCENE_ROLE",t,"must be a Scene role string");return false}const i=Object.prototype.hasOwnProperty.call(Rn,n);if(!i&&!vi.test(n)){m(r.diagnostics,"SCENE_ROLE",t,"must be a built-in or namespaced Scene role");return false}if(!Nn(n).applicableKinds.includes(e)){m(r.diagnostics,"SCENE_ROLE",t,`role "${n}" is not applicable to ${e} marks`)}return true}function za(e,n,t){let r;try{r=B(e);if(ie(r,Sr)>Sr){m(t.diagnostics,"SCENE_DOCUMENT",n,"has an oversized SVG serialization")}}catch(i){m(t.diagnostics,"SCENE_DOCUMENT",n,i instanceof Error?i.message:String(i))}if(t.aggregateBudgets&&r!==void 0){Tt(t.budget,"serializationBytes","serializationExceeded",r,n,t.diagnostics,pu,"Scene serializations")}return r}function Di(e,n,t,r,i){if(r>Hn){m(t.diagnostics,"SCENE_BOUNDS",n,`exceeds maximum nesting depth ${Hn}`);return}if(++t.nodeCount>V){if(t.nodeCount===V+1)m(t.diagnostics,"SCENE_BOUNDS",n,"contains too many Scene nodes");return}if(!C(e)||typeof e.kind!=="string"){m(t.diagnostics,"SCENE_DOCUMENT",n,"must be a typed Scene node");return}const o=e.kind;$u(e,n,t.paintReferences);if(!["shape","connector","text","group","document"].includes(o)){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.kind`,`unknown Scene node kind "${o}"`);return}if(t.external&&r>0&&o==="document"){m(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"]};ne(e,c[o],n,t.diagnostics)}if(K(e.id,`${n}.id`,t.diagnostics,{externalId:t.external})){const a=t.ids.get(e.id);if(t.external&&a)m(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&&K(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)m(t.diagnostics,"SCENE_ID",`${n}.domId`,`duplicates DOM id owned by ${a}`);else if(t.external&&c)m(t.diagnostics,"SCENE_ID",`${n}.domId`,`collides with marker resource "${e.domId}"`);else if(d)m(t.diagnostics,"SCENE_ID",`${n}.domId`,`collides with gradient resource "${e.domId}"`);else t.domIds.set(e.domId,`${n}.domId`)}Ru(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`});Tu(e.channels,`${n}.channels`,t.diagnostics);const s=!t.native||o==="document"?za(e,n,t):void 0;if(e.transform!==void 0){if(!C(e.transform)||!["rotate","matrix"].includes(String(e.transform.kind))){m(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)m(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))m(t.diagnostics,"SCENE_REFERENCE",`${n}.owner`,"must be a semantic owner");else{K(e.owner.id,`${n}.owner.id`,t.diagnostics);if(typeof e.owner.role!=="string"||!Object.hasOwn(Rn,e.owner.role)&&!vi.test(e.owner.role))m(t.diagnostics,"SCENE_ROLE",`${n}.owner.role`,"must be a Scene role")}}if(e.visibility!==void 0&&e.visibility!=="conditional")m(t.diagnostics,"SCENE_DOCUMENT",`${n}.visibility`,"must be conditional");if(e.attributes!==void 0)Cu(e.attributes,`${n}.attributes`,t.diagnostics);if(o==="shape"){if(e.identity===void 0&&typeof e.role==="string"&&cn(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){m(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"){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.surfaceFragment`,"must be boolean")}Yn(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")){m(t.diagnostics,"SCENE_BOUNDS",`${n}.geometry`,"external shapes must use a directly bounded structured geometry")}Ke(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){m(t.diagnostics,"SCENE_PAINT",`${n}.childPaints`,"must give one paint per compound geometry child")}else e.childPaints.forEach((a,c)=>Ke(a,`${n}.childPaints[${c}]`,t.diagnostics,t.external))}if(e.conditionalPaint!==void 0){if(e.visibility!=="conditional")m(t.diagnostics,"SCENE_DOCUMENT",`${n}.conditionalPaint`,"requires an explicit conditional state");Ke(e.conditionalPaint,`${n}.conditionalPaint`,t.diagnostics,t.external)}return}if(o==="text"){K(e.text,`${n}.text`,t.diagnostics,{empty:true,max:un});if(t.aggregateBudgets)Tt(t.budget,"textBytes","textExceeded",e.text,`${n}.text`,t.diagnostics,hr,"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")m(t.diagnostics,"SCENE_DOCUMENT",`${n}.display`,"must be literal or formatted");if(e.measurement!==void 0&&!["prepared","fallback"].includes(String(e.measurement)))m(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)))m(t.diagnostics,"SCENE_DOCUMENT",`${n}.block`,"prepared text must retain its actual pixel block");if(C(e.block)){if(!cr(e.block))m(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])m(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))m(t.diagnostics,"SCENE_FIDELITY",`${n}.textLayout`,"retained block differs from occupied text geometry")}if(e.textLayout!==void 0){if(!C(e.textLayout))m(t.diagnostics,"SCENE_DOCUMENT",`${n}.textLayout`,"must be measured text geometry");else{if(t.external)ne(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)))m(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)))m(t.diagnostics,"SCENE_DOCUMENT",`${n}.dominantBaseline`,"must be middle, central, or hanging");if(e.fontStyle!==void 0&&e.fontStyle!=="italic")m(t.diagnostics,"SCENE_DOCUMENT",`${n}.fontStyle`,"must be italic");if(e.textDecoration!==void 0&&!["underline","line-through","underline line-through"].includes(String(e.textDecoration)))m(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)m(t.diagnostics,"SCENE_DOCUMENT",`${n}.spans`,"must be a non-empty run list");else{if(e.spans.length>V)m(t.diagnostics,"SCENE_BOUNDS",`${n}.spans`,"contains too many text runs");for(let a=0;a<Math.min(e.spans.length,V);a++){const c=e.spans[a];if(!C(c)){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.spans[${a}]`,"must be a painted run");continue}K(c.text,`${n}.spans[${a}].text`,t.diagnostics,{empty:true,max:un});if(t.aggregateBudgets)Tt(t.budget,"textBytes","textExceeded",c.text,`${n}.spans[${a}].text`,t.diagnostics,hr,"Scene text values");Ke({fill:c.fill},`${n}.spans[${a}]`,t.diagnostics,t.external)}}}Ke(e.paint,`${n}.paint`,t.diagnostics,t.external);return}if(o==="group"){if(t.native&&typeof e.role==="string"&&cn(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){Ke(e.paint,`${n}.paint`,t.diagnostics,t.external);if(C(e.paint))ne(e.paint,["opacity","fill"],`${n}.paint`,t.diagnostics)}if(!Array.isArray(e.children)){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.children`,"must be an array");return}if(e.children.length>V)m(t.diagnostics,"SCENE_BOUNDS",`${n}.children`,"contains too many Scene nodes");const a=Math.min(e.children.length,Math.max(0,V-t.nodeCount+1));const c=typeof e.role==="string"&&cn(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))m(t.diagnostics,"SCENE_DOCUMENT",`${n}.children[${d}]`,"must wrap a Scene node");else{$(l.indent,`${n}.children[${d}].indent`,t.diagnostics,{nonNegative:true});Di(l.node,`${n}.children[${d}].node`,t,r+1,c)}}try{ar(e)}catch(d){m(t.diagnostics,"SCENE_DOCUMENT",n,String(d))}if(t.external&&(typeof e.open!=="string"||!/^<g(?:\s|>)/.test(e.open)||e.close!=="</g>")){m(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||Fe(s).some(d=>!c.includes(d.name))){m(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))){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.element`,"has an unknown document element")}if(e.markerResources!==void 0){if(!Array.isArray(e.markerResources))m(t.diagnostics,"SCENE_MARKER",`${n}.markerResources`,"must be an array");else{if(e.markerResources.length>V)m(t.diagnostics,"SCENE_BOUNDS",`${n}.markerResources`,"contains too many marker resources");for(let a=0;a<Math.min(e.markerResources.length,V);a++){if(t.native&&t.markerIds.size>=V){m(t.diagnostics,"SCENE_BOUNDS",`${n}.markerResources`,"contains too many aggregate marker resources");return}const c=e.markerResources[a];const d=`${n}.markerResources[${a}]`;if(va(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)m(t.diagnostics,"SCENE_MARKER",`${d}.id`,`duplicates marker resource "${c.id}"`);else if(t.external&&f)m(t.diagnostics,"SCENE_ID",`${d}.id`,`collides with DOM id owned by ${f}`);else if(t.gradientIds.has(c.id))m(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=Te(`<defs>
50
+ ${ti(e.markerResources)}
51
+ </defs>`);if(s!==a)m(t.diagnostics,"SCENE_FIDELITY",n,"definitions must be generated from the typed marker resources")}catch{}}}}if(e.gradientResources!==void 0){if(e.element!=="definitions")m(t.diagnostics,"SCENE_PAINT",`${n}.gradientResources`,"are only valid on a definitions document mark");if(!Array.isArray(e.gradientResources))m(t.diagnostics,"SCENE_PAINT",`${n}.gradientResources`,"must be an array");else{if(e.gradientResources.length>q.maxResources)m(t.diagnostics,"SCENE_BOUNDS",`${n}.gradientResources`,`contains more than ${q.maxResources} gradient resources`);for(let a=0;a<Math.min(e.gradientResources.length,q.maxResources);a++){if(t.native&&t.gradientIds.size>=q.maxResources){m(t.diagnostics,"SCENE_BOUNDS",`${n}.gradientResources`,`contains more than ${q.maxResources} aggregate gradient resources`);return}const c=e.gradientResources[a];const d=`${n}.gradientResources[${a}]`;try{xi(c);const l=c;if(t.gradientIds.has(l.id)||t.markerIds.has(l.id)||t.domIds.has(l.id)){m(t.diagnostics,"SCENE_ID",`${d}.id`,`duplicates SVG resource id "${l.id}"`)}else{t.gradientIds.set(l.id,l)}}catch(l){m(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?[ti(e.markerResources)]:[],...e.gradientResources.length>0?[sa(e.gradientResources)]:[]].join("\n");const c=Te(`<defs>
52
+ ${a}
53
+ </defs>`);if(s!==c)m(t.diagnostics,"SCENE_FIDELITY",n,"definitions must be generated from typed resources")}catch{}}}}if(t.aggregateBudgets&&(e.element==="title"||e.element==="description")){K(e.text,`${n}.text`,t.diagnostics,{empty:true,max:un});Tt(t.budget,"textBytes","textExceeded",e.text,`${n}.text`,t.diagnostics,hr,"Scene text values")}if(t.external&&e.element==="close"&&s!=="</svg>"){m(t.diagnostics,"SCENE_SECURITY",n,"external document close must be canonical")}return}if(!["solid","dotted","dashed","thick","invisible"].includes(String(e.lineStyle))){m(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){m(t.diagnostics,"SCENE_REFERENCE",`${n}.endpoints.${a}`,"is required for external connectors")}else if(e.endpoints[a]!==void 0&&K(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)Se(c.point,`${n}.endpoints.${a}.point`,t.diagnostics,t.budget,t.external);if(c.id!==void 0)K(c.id,`${n}.endpoints.${a}.id`,t.diagnostics,{externalId:t.external});if(c.portId!==void 0)K(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))m(t.diagnostics,"SCENE_REFERENCE",d,"must be a semantic owner");else{K(c.owner.id,`${d}.id`,t.diagnostics);if(typeof c.owner.role!=="string"||!Object.hasOwn(Rn,c.owner.role)&&!vi.test(c.owner.role))m(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)m(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 m(t.diagnostics,"SCENE_REFERENCE",`${n}.endpoints`,"must be a typed endpoint object");if(C(e.relationship))K(e.relationship.kind,`${n}.relationship.kind`,t.diagnostics,{max:4096});else m(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))){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.relationship.direction`,"has an unknown connector direction")}if(C(e.route)){Yn(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)){m(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))){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.ownership`,"has an unknown route ownership")}if(typeof e.route.closed!=="boolean")m(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.closed`,"must be boolean");if(e.route.closed===true&&C(e.route.geometry)&&e.route.geometry.kind!=="path"){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.closed`,"closed connector topology requires path geometry")}if(e.route.startTangent!==void 0){Se(e.route.startTangent,`${n}.route.startTangent`,t.diagnostics,t.budget,t.external);Pi(e.route.startTangent,`${n}.route.startTangent`,t.diagnostics)}if(e.route.endTangent!==void 0){Se(e.route.endTangent,`${n}.route.endTangent`,t.diagnostics,t.budget,t.external);Pi(e.route.endTangent,`${n}.route.endTangent`,t.diagnostics)}if(Array.isArray(e.route.labelAnchors)){if(e.route.labelAnchors.length>V)m(t.diagnostics,"SCENE_BOUNDS",`${n}.route.labelAnchors`,"contains too many points");const a=Math.min(e.route.labelAnchors.length,V,Math.max(0,Kn-t.budget.points+1));for(let c=0;c<a;c++)Se(e.route.labelAnchors[c],`${n}.route.labelAnchors[${c}]`,t.diagnostics,t.budget,t.external)}else m(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>V){m(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,V);a++){const c=e.route.contours[a];if(!C(c)){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.contours[${a}]`,"must be typed contour semantics");continue}Se(c.start,`${n}.route.contours[${a}].start`,t.diagnostics,t.budget,t.external);Se(c.end,`${n}.route.contours[${a}].end`,t.diagnostics,t.budget,t.external);if(typeof c.closed!=="boolean")m(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}`;Se(l,f,t.diagnostics,t.budget,t.external);Pi(l,f,t.diagnostics)}}}else m(t.diagnostics,"SCENE_DOCUMENT",`${n}.route.contours`,"must be an array")}else m(t.diagnostics,"SCENE_DOCUMENT",`${n}.route`,"must be a typed connector route");if(C(e.stroke)){if(le(e.stroke.color)===void 0&&(t.external||!Er(e.stroke.color))){m(t.diagnostics,"SCENE_PAINT",`${n}.stroke.color`,"must be a safe non-fetching CSS paint")}ye(e.stroke.width,`${n}.stroke.width`,t.diagnostics,{nonNegative:true,length:true});ye(e.stroke.opacity,`${n}.stroke.opacity`,t.diagnostics,{unitInterval:true});ye(e.stroke.miterLimit,`${n}.stroke.miterLimit`,t.diagnostics,{nonNegative:true});ye(e.stroke.pathLength,`${n}.stroke.pathLength`,t.diagnostics,{nonNegative:true});if(!["butt","round","square"].includes(String(e.stroke.lineCap)))m(t.diagnostics,"SCENE_PAINT",`${n}.stroke.lineCap`,"has an unknown line cap");if(!["arcs","bevel","miter","miter-clip","round"].includes(String(e.stroke.lineJoin)))m(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)))m(t.diagnostics,"SCENE_PAINT",`${n}.stroke.mixBlendMode`,"must be normal or multiply");if(typeof e.stroke.nonScaling!=="boolean")m(t.diagnostics,"SCENE_PAINT",`${n}.stroke.nonScaling`,"must be boolean");if(e.stroke.encodesValue!==void 0&&typeof e.stroke.encodesValue!=="boolean")m(t.diagnostics,"SCENE_PAINT",`${n}.stroke.encodesValue`,"must be boolean");if(e.stroke.dash!==void 0){if(!C(e.stroke.dash))m(t.diagnostics,"SCENE_PAINT",`${n}.stroke.dash`,"must be a dash descriptor");else{const a=e.stroke.dash.array;if(typeof a==="string"){if(!ja.test(a.trim()))m(t.diagnostics,"SCENE_PAINT",`${n}.stroke.dash.array`,"must be a finite numeric dash list")}else if(Array.isArray(a)){a.forEach((c,d)=>ye(c,`${n}.stroke.dash.array[${d}]`,t.diagnostics,{nonNegative:true}))}else m(t.diagnostics,"SCENE_PAINT",`${n}.stroke.dash.array`,"must be a string or numeric array");ye(e.stroke.dash.offset,`${n}.stroke.dash.offset`,t.diagnostics)}}}else m(t.diagnostics,"SCENE_PAINT",`${n}.stroke`,"must be a typed connector stroke");if(C(e.hit)){Yn(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")m(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit.closed`,"must be boolean");if(!["stroke","none"].includes(String(e.hit.pointerEvents)))m(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){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit.closed`,"must match route.closed topology")}}else m(t.diagnostics,"SCENE_DOCUMENT",`${n}.hit`,"must be typed hit geometry");if(Array.isArray(e.labels)){if(e.labels.length>V)m(t.diagnostics,"SCENE_BOUNDS",`${n}.labels`,"contains too many connector labels");for(let a=0;a<Math.min(e.labels.length,V);a++){const c=e.labels[a];if(!C(c)){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}]`,"must be a label descriptor");continue}if(t.external)ne(c,["id","text","anchor","bounds","halo","clearance","paint","fontSize","textAnchor","visual"],`${n}.labels[${a}]`,t.diagnostics);if(c.id!==void 0)K(c.id,`${n}.labels[${a}].id`,t.diagnostics,{externalId:t.external});K(c.text,`${n}.labels[${a}].text`,t.diagnostics,{empty:true,max:un});if(t.aggregateBudgets)Tt(t.budget,"textBytes","textExceeded",c.text,`${n}.labels[${a}].text`,t.diagnostics,hr,"Scene text values");if(c.anchor!==void 0)Se(c.anchor,`${n}.labels[${a}].anchor`,t.diagnostics,t.budget,t.external);if(c.bounds!==void 0){if(!C(c.bounds)){m(t.diagnostics,"SCENE_BOUNDS",`${n}.labels[${a}].bounds`,"must be a finite ordered box")}else{if(t.external)ne(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){m(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){m(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)||!cr(c.block)))m(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"){m(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))){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].textAnchor`,"must be start, middle, or end")}if(c.paint!==void 0)Ke(c.paint,`${n}.labels[${a}].paint`,t.diagnostics,t.external);if(c.halo!==void 0){if(!C(c.halo))m(t.diagnostics,"SCENE_DOCUMENT",`${n}.labels[${a}].halo`,"must be a halo descriptor");else{if(t.external)ne(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&&le(c.halo.color)===void 0){m(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))){m(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(K(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){m(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))m(t.diagnostics,"SCENE_MARKER",`${n}.markers.mid`,"must be an array");if(Array.isArray(e.markers.mid)&&e.markers.mid.length>V)m(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,V);c++){a.push([e.markers.mid[c],`${n}.markers.mid[${c}]`])}}for(const[c,d]of a){if(c===void 0)continue;if(va(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 m(t.diagnostics,"SCENE_MARKER",`${n}.markers`,"must be a typed marker set");if(!t.external&&!t.crossChecks&&t.native&&xt(e)!==void 0)return;if(C(e.terminalProjection)){if(!["native","emulated","projected","lossy","unsupported"].includes(String(e.terminalProjection.realization))){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.realization`,"has an unknown realization")}if(!["line","polyline","path"].includes(String(e.terminalProjection.topology)))m(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.topology`,"has an unknown topology");Yn(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)))m(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.direction`,"has an unknown direction");if(!["solid","dotted","dashed","thick","invisible"].includes(String(e.terminalProjection.lineStyle)))m(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]))m(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.${a}`,"must be an array")}if(!C(e.terminalProjection.markers)||!Array.isArray(e.terminalProjection.markers.mid)){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markers`,"must contain a mid-marker array")}if(!C(e.terminalProjection.markerPlacements)){m(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)){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markerPlacements.${a}`,"must be an array");continue}for(let d=0;d<Math.min(c.length,V);d++){const l=c[d];if(!C(l)){m(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.markerPlacements.${a}[${d}]`,"must be a marker placement");continue}K(l.markerId,`${n}.terminalProjection.markerPlacements.${a}[${d}].markerId`,t.diagnostics,{externalId:t.external});Se(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]))m(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection.${a}`,"must preserve typed connector semantics")}}else m(t.diagnostics,"SCENE_DOCUMENT",`${n}.terminalProjection`,"must be a terminal projection");if(!t.external&&t.crossChecks)Nu(e,n,t)}function Re(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)=>Re(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]&&Re(e[i],n[i]))}function Nu(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=vn(i,r.route.closed);const s=o.starts[0];const a=o.ends.at(-1);for(const[p,u,g]of[["start",r.endpoints.start?.point,s],["end",r.endpoints.end?.point,a]]){if(u&&g&&!oe(u,g)){m(t.diagnostics,"SCENE_FIDELITY",`${n}.endpoints.${p}.point`,"must equal the endpoint derived from connector geometry")}}const c=ir(i,r.route.closed);if(r.route.contours.length!==c.length){m(t.diagnostics,"SCENE_FIDELITY",`${n}.route.contours`,"must match the geometry-derived contour count")}const d=!rr(i);for(let p=0;p<Math.min(r.route.contours.length,c.length);p++){const u=r.route.contours[p];const g=c[p];if(!oe(u.start,g.start)||!oe(u.end,g.end)||u.closed!==g.closed){m(t.diagnostics,"SCENE_FIDELITY",`${n}.route.contours[${p}]`,"must match geometry-derived endpoint topology")}if(d){for(const b of["startTangent","endTangent"]){const y=u[b];const k=g[b];if(y===void 0!==(k===void 0)||y&&k&&!oe(y,k,1e-9)){m(t.diagnostics,"SCENE_FIDELITY",`${n}.route.contours[${p}].${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[p,u,g]of[["startTangent",r.route.startTangent,l],["endTangent",r.route.endTangent,f]]){if(u===void 0!==(g===void 0)||u&&g&&!oe(u,g,1e-9)){m(t.diagnostics,"SCENE_FIDELITY",`${n}.route.${p}`,"must equal the corresponding contour tangent authority")}}try{const p=bt({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(!Re(r.terminalProjection,p)){m(t.diagnostics,"SCENE_FIDELITY",`${n}.terminalProjection`,"must equal the canonical projection derived from connector semantics")}}catch(p){m(t.diagnostics,"SCENE_FIDELITY",`${n}.terminalProjection`,p instanceof Error?p.message:String(p))}}function Da(e,n,t){if(!C(e))return;for(const r of["fill","stroke"]){const i=Er(e[r]);if(i)t.push({id:i,path:`${n}.${r}`})}}function $u(e,n,t){if(!C(e))return;if(e.kind==="connector"){if(C(e.stroke)){const r=Er(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,V);r++){const i=e.labels[r];if(C(i))Da(i.paint,`${n}.labels[${r}].paint`,t)}}}else{Da(e.paint,`${n}.paint`,t)}}function Ne(e,n={}){if(n.mode==="external"||n.mode==="internal")return n.mode;const t=C(e)&&typeof e.family==="string"?Qe(e.family):void 0;return t?.kind==="family"?"external":"internal"}function Ou(e,n={}){const t=[];Fa(e,false,t);if(Ne(e)==="external")m(t,"SCENE_DOCUMENT","scene.family","native admission requires a built-in family");if(t.length>0)throw new ee(t);const r={artwork:[],groups:new Set,enclosures:new Map};const i={...La(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 ee(t)};const a=c=>{s();if(!Number.isInteger(c)||c<0||c>Hn){m(t,"SCENE_BOUNDS","scene.depth",`must be an integer nesting depth between 0 and ${Hn}`);throw new ee(t)}};return{node(c,d=0){s();a(d);if(c.kind==="group"&&(!Array.isArray(c.children)||c.children.length!==0)){m(t,"SCENE_DOCUMENT","scene.parts","native groups must be shallow headers with separately submitted children");throw new ee(t)}const l=`scene.parts[${i.nodeCount}]`;Di(c,l,i,d);if(t.length>0)throw new ee(t);const f=c.kind==="document"?B(c):za(c,l,i);if(t.length>0)throw new ee(t);return f},depth:a,enclosure(c,d){s();K(c,"scene.enclosure.id",t);K(d.id,"scene.enclosure.owner.id",t);const l=r.enclosures.get(c);if(l&&(l.id!==d.id||l.role!==d.role)){m(t,"SCENE_FIDELITY","scene.enclosure","artwork cannot have conflicting semantic enclosures")}else if(r.enclosures.size>=V){m(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 ee(t)},serialization(c){s();if(ie(c,Sr)>Sr){m(t,"SCENE_DOCUMENT","scene.serialization","has an oversized SVG serialization");throw new ee(t)}},finish(){if(o)return o;Ba(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]))){m(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 Ba(e){for(const n of e.paintReferences){if(!e.gradientIds.has(n.id))m(e.diagnostics,"SCENE_REFERENCE",n.path,`references undeclared gradient "${n.id}"`)}for(const n of e.ownerReferences)if(!e.subjects.has(n.key))m(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)m(e.diagnostics,"SCENE_REFERENCE",n.path,`references unknown companion Text mark "${n.id}"`);else if(t.kind!=="text")m(e.diagnostics,"SCENE_REFERENCE",n.path,`must reference a Text mark; "${n.id}" is a ${t.kind} mark`)}}function La(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 Fa(e,n,t){K(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")m(t,"SCENE_DOCUMENT","scene.transparent","must be boolean");if(!C(e.colors))m(t,"SCENE_DOCUMENT","scene.colors","must be a DiagramColors object");else{if(n){ne(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)&&le(e.colors[o])===void 0){m(t,"SCENE_PAINT",`scene.colors.${o}`,"must be a safe non-fetching CSS paint")}}if(e.colors.font!==void 0&&Cn(e.colors.font)===void 0){m(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"){m(t,"SCENE_DOCUMENT","scene.colors.shadow","must be boolean")}if(e.colors.embedFontImport!==void 0&&typeof e.colors.embedFontImport!=="boolean"){m(t,"SCENE_DOCUMENT","scene.colors.embedFontImport","must be boolean")}}return{widthOk:r,heightOk:i}}function ji(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=Ne(e,n)==="external";if(o&&!r){m(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)ne(e,["family","width","height","colors","transparent","parts"],"scene",i);const{widthOk:s,heightOk:a}=Fa(e,o,i);if(!Array.isArray(e.parts)){m(i,"SCENE_DOCUMENT","scene.parts","must be an array")}else{const c=La(i,o,t);if(e.parts.length>V)m(i,"SCENE_BOUNDS","scene.parts","contains too many top-level Scene nodes");for(let l=0;l<Math.min(e.parts.length,V);l++){Di(e.parts[l],`scene.parts[${l}]`,c,0)}const d=o?r.document(e,c,s,a):void 0;Ba(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(B).join("\n");if(f!==void 0)Jt(f,o?"strict":"default")}catch(f){m(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 Ha={};Sc(Ha,{connector:()=>Xe,definitions:()=>Bi,documentClose:()=>Li,documentContent:()=>ju,documentOpen:()=>Fi,documentText:()=>wr,drawPathArtwork:()=>Ya,group:()=>Xn,indentLines:()=>Et,pathArtwork:()=>zu,retainedGroupEmission:()=>Mu,shape:()=>fn,text:()=>Rt});function Cr(e,n){if(!Nn(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 zi(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&&!mr.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(!gr.test(t))throw new TypeError(`Mark "${e}" has an invalid data attribute key "${t}"`);if(pr.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 Ga=new WeakMap;function Mu(e){return Ga.get(e)}function Ua(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 fn(e){zi(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:Ua(e);const t=n?Cr(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 kt({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 _u={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 Au={start:true,mid:true,end:true};function Wa(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 Iu(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=Ie(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 Va(e,n){return n?{...e,...n,...n.owner?{owner:{...n.owner}}:{},...n.point?{point:{...n.point}}:{}}:e??{}}function Pu(e){const n=typeof e==="number"?e:parseFloat(e);return Number.isFinite(n)?Math.max(0,n):1}function vu(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 Du(e,n,t,r){if(r.length===0)return void 0;const i=Dn(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 Xe(e){Wa(e,_u,"connector");if(e.markers!==void 0)Wa(e.markers,Au,"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 M=T.subpaths;const P=or(T.d);if(P>1&&!M){throw new TypeError(`Connector "${e.id}" path has multiple SVG subpaths but no typed subpaths`)}if(M){if(M.length===0||M.some(te=>te.points.length<2)){throw new TypeError(`Connector "${e.id}" typed subpaths must each contain at least two points`)}if(P!==M.length){throw new TypeError(`Connector "${e.id}" typed subpath count disagrees with SVG path moves`)}const pe=M.flatMap(te=>te.points);if(pe.length!==T.points.length||pe.some((te,De)=>{const qe=T.points[De];return!qe||qe.x!==te.x||qe.y!==te.y})){throw new TypeError(`Connector "${e.id}" typed subpaths disagree with the canonical point projection`)}}}const n=Ie(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 M=e.geometry.subpaths?e.geometry.subpaths.filter(P=>P.closed).length:r?1:0;if(T!==M){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=Du(e.id,e.geometry,r,s);const c=Iu(e.geometry,r);for(const T of["start","end"]){const M=e.endpoints?.[T]?.point;const P=c[T]?.point;if(M&&P&&!oe(M,P)){throw new TypeError(`Connector "${e.id}" endpoints.${T}.point disagrees with typed route geometry`)}}const d={...e.endpoints??{},start:Va(c.start,e.endpoints?.start),end:Va(c.end,e.endpoints?.end)};const l={kind:e.relationship?.kind??e.role,direction:e.relationship?.direction??vu(d,i,o)};const f=(e.labels??[]).map(T=>{const M=ot(T.text,T.textContent);const P=Wt(T.text);return{...T,text:P,...typeof M!=="string"?{textContent:{...T.textContent,value:P}}:{}}});const p={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 g=u?.visual?.kind==="inline"?St(u).lineBlocks.map(T=>T.runs.map(M=>M.text).join("")).join("\n"):u?Fr(ot(u.text,u.textContent),u.display??"literal"):void 0;const b=Cr(p,g);zi(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,M]of f.entries()){if(M.visual?.kind==="inline"&&(!M.anchor||!M.paint||M.fontSize===void 0||M.textAnchor===void 0)){throw new TypeError(`Connector "${e.id}" inline label ${T+1} requires anchor, paint, fontSize, and textAnchor`)}}const y=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 h=e.stroke?.mixBlendMode;const E={color:e.stroke?.color??e.paint.stroke??"var(--_line)",width:y,...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}:{},...h!==void 0?{mixBlendMode:h}:{},nonScaling:e.stroke?.nonScaling??e.paint.vectorEffect==="non-scaling-stroke",...e.stroke?.encodesValue?{encodesValue:true}:{}};const R=ir(e.geometry,r);const w=e.route?.contours;if(w&&(w.length!==R.length||w.some((T,M)=>{const P=R[M];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=!rr(e.geometry);if(I&&w){for(const[T,M]of w.entries()){const P=R[T];for(const pe of["startTangent","endTangent"]){const te=M[pe];const De=P[pe];if(te&&(!De||!oe(te,De,1e-9))){throw new TypeError(`Connector "${e.id}" route.contours[${T}].${pe} disagrees with linear route geometry`)}}}}const O=w?R.map((T,M)=>{const P=w?.[M];const pe=P?.startTangent??T.startTangent;const te=P?.endTangent??T.endTangent;return{start:{...T.start},end:{...T.end},closed:T.closed,...pe?{startTangent:pe}:{},...te?{endTangent:te}:{}}}):R;for(const T of O){for(const M of[T.startTangent,T.endTangent]){if(!M)continue;const P=Math.hypot(M.x,M.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 M=Math.hypot(T.x,T.y);if(!Number.isFinite(M)||Math.abs(M-1)>1e-9){throw new TypeError(`Connector "${e.id}" route tangents must be finite unit vectors`)}}for(const[T,M,P]of[["startTangent",e.route?.startTangent,O[0]?.startTangent],["endTangent",e.route?.endTangent,O.at(-1)?.endTangent]]){if(M&&P&&!oe(M,P,1e-9)){throw new TypeError(`Connector "${e.id}" route.${T} disagrees with its contour tangent authority`)}}const H={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 fe={geometry:e.hit?.geometry??e.geometry,closed:e.hit?.closed??r,strokeWidth:e.hit?.strokeWidth??Math.max(6,Pu(y)),pointerEvents:e.hit?.pointerEvents??(e.lineStyle==="invisible"?"none":"stroke")};const L={geometry:e.geometry,lineStyle:e.lineStyle,endpoints:d,relationship:l,route:H,stroke:E,markers:{...i?{start:i}:{},mid:s,...o?{end:o}:{}},labels:f,hit:fe,...e.transform?{transform:e.transform}:{},additionalDiagnostics:e.terminalProjection?.diagnostics};const G={kind:"connector",id:e.id,role:e.role,lineStyle:e.lineStyle,endpoints:d,relationship:l,route:H,stroke:E,markers:{...i?{start:i}:{},mid:s,...o?{end:o}:{}},labels:f,hit:fe,terminalProjection:void 0,identity:p,...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}:{}};ha(G,L);return kt(G)}function Rt(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`)}}zi(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??ht(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*Oe;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 p=l+(c-1)*s.lineHeight/2+f;const u=Ua(e);const g=Cr(u,e.attributes?.data?.label);if(g&&e.attributes?.ariaLabel!==void 0)throw new TypeError(`Text "${e.id}" takes its aria-label from typed relation accessibility`);return kt({kind:"text",...t,identity:u,accessibility:g,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:p}})}function ju(e,n){return Un({kind:"document",element:"content",...e},n)}function wr(e){const n=e.element==="title"?"title":"desc";const t=e.domId?` id="${z(e.domId)}"`:"";return Un({kind:"document",role:"chrome",...e},`<${n}${t}>${de(e.text)}</${n}>`)}function Bi(e,n){return Un({kind:"document",role:"defs",element:"definitions",...e},n)}function Li(){return Un({kind:"document",id:"svg-close",role:"chrome",element:"close"},"</svg>")}function Xn(e){const n=e.open,t=e.close,r=e.join??"\n";const i=ar({id:e.id,open:n,close:t,join:r,transform:e.transform});const o=pa(n,e);const s=e.paint,a=s?.opacity,c=s?.fill;const d=s&&[...a!==void 0?[`opacity="${z(a)}"`]:[],...c!==void 0?[`fill="${z(c)}"`]:[]].join(" ");const l=d?n.replace(/^(\s*<g)\b/,`$1 ${d}`):n;const f=e.owner??{id:o.id,role:o.role};const p=e.children.map(b=>{if(b.node.owner||b.node.kind==="document"||b.node.kind==="group")return b;let y;if(xt(b.node)){const k={};for(const x of Object.keys(b.node))k[x]=x==="terminalProjection"?void 0:b.node[x];k.owner=f;y=k;xa(b.node,y)}else y={...b.node,owner:f};if(Pa(b.node))Ct(b.node,y);return{...b,node:y}});const u=Te(ma(l,o));const g=kt({kind:"group",id:e.id,role:e.role,open:u,close:t,children:p,join:r,channels:e.channels,identity:o,owner:f,...e.visibility?{visibility:e.visibility}:{},...e.transform?{transform:e.transform}:{},...s?{paint:s}:{}});Ga.set(g,Object.freeze({open:u,opacity:a,...i,style:i.style||c!==void 0}));return g}function Fi(e,n){return Un({kind:"document",element:"open",id:e.id,role:"prelude"},n)}function zu(e){return Ya({shape:fn,group:Xn},e)}function Ya(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:fa(n.id,"path",r),role:"icon",geometry:{kind:"path",d:t},paint:n.paint,...n.owner?{owner:n.owner}:{}})}))})}function Bu(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(or(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")}Lu(e,n)}function Lu(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 Ka(e){switch(e.kind){case"shape":return fn({id:e.id,role:e.role,geometry:e.geometry,paint:e.paint,...e.channels?{channels:e.channels}:{}});case"text":return Rt({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 Xn({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"}:{}};Bu(i,e.route.closed);return Xe({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 Tr=Y.maxNodes;var Rr=Y.maxFinalSvgBytes;function Xa(e,n,t,r){if(e.kind==="document")return;let i;try{i=Ka(e)}catch(s){m(t,"SCENE_FIDELITY",n,s instanceof Error?s.message:String(s));return}const o=e.kind==="group"?i.owner:r;if(!Re(e.owner,o))m(t,"SCENE_FIDELITY",`${n}.owner`,"must equal ownership derived from the external container tree");if(B(e)!==B(i)){m(t,"SCENE_FIDELITY",n,"must equal the canonical serialization generated from the external Scene fields")}if(!Re(e.identity,i.identity)||!Re(e.accessibility,i.accessibility)){m(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){m(t,"SCENE_FIDELITY",n,"external containers must use the canonical generated wrapper and join")}e.children.forEach((s,a)=>{if(s.indent!==2)m(t,"SCENE_FIDELITY",`${n}.children[${a}].indent`,"external container children must use the canonical two-space indent");Xa(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(!Re(e[s],i[s]))m(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(!Re(e[a],i[a])){m(t,"SCENE_FIDELITY",`${n}.${a}`,"must equal semantics derived by the external Scene builder")}}if(!Re(e.markers,i.markers)){m(t,"SCENE_FIDELITY",`${n}.markers`,"must equal the canonical external start/mid/end marker projection")}}}function Fu(e,n){e.parts.forEach((t,r)=>Xa(t,`scene.parts[${r}]`,n))}function Wu(e,n){const t=[];let r=Math.max(0,e.length-1);if(r>Rr){m(n,"SCENE_BOUNDS","scene.parts",`serialized SVG exceeds the aggregate ${Rr}-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=B(o)}catch{return void 0}const a=Math.max(0,Rr-r);const c=ie(s,a);if(c>a){m(n,"SCENE_BOUNDS","scene.parts",`serialized SVG exceeds the aggregate ${Rr}-byte limit`);return void 0}r+=c;t.push(s)}return t.join("\n")}function Vu(e,n,t,r){const i=n.diagnostics;const o=e.parts.length<=Tr?Wu(e.parts,i):void 0;const s=[];for(let h=0;h<Math.min(e.parts.length,Tr);h++){const E=e.parts[h];if(C(E))s.push({part:E,index:h})}const a=s.filter(h=>h.part.kind==="document");const c=a.filter(h=>h.part.element==="open");const d=a.filter(h=>h.part.element==="title");const l=a.filter(h=>h.part.element==="description");const f=a.filter(h=>h.part.element==="definitions");const p=a.filter(h=>h.part.element==="close");if(c.length!==1||c[0]?.index!==0)m(i,"SCENE_DOCUMENT","scene.parts","external Scene documents require exactly one leading open mark");if(d.length!==1||d[0]?.index!==1)m(i,"SCENE_DOCUMENT","scene.parts","external Scene documents require exactly one title after the open mark");if(l.length>1)m(i,"SCENE_DOCUMENT","scene.parts","external Scene documents allow at most one description");if(f.length>1)m(i,"SCENE_DOCUMENT","scene.parts","external Scene documents allow at most one definitions mark");if(p.length!==1||p[0]?.index!==e.parts.length-1)m(i,"SCENE_DOCUMENT","scene.parts","external Scene documents require exactly one trailing close");const u=1+d.length+l.length+f.length;const g=[...d,...l,...f].map(h=>h.index);if(g.some((h,E)=>h!==E+1)||a.some(h=>!["open","close"].includes(String(h.part.element))&&h.index>u)){m(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")){m(i,"SCENE_DOCUMENT",`scene.parts[${d[0].index}]`,"external title must use the canonical generated identity")}if(b&&typeof b.text==="string"){const h=Te(`<title id="external-scene-title">${de(b.text)}</title>`);if(B(b)!==h)m(i,"SCENE_FIDELITY",`scene.parts[${d[0].index}]`,"external title must use the canonical generated serialization")}const y=l[0]?.part;if(y&&(y.id!=="external-scene-description"||y.domId!=="external-scene-description")){m(i,"SCENE_DOCUMENT",`scene.parts[${l[0].index}]`,"external description must use the canonical generated identity")}if(y&&typeof y.text==="string"){const h=Te(`<desc id="${z("external-scene-description")}">${de(y.text)}</desc>`);if(B(y)!==h)m(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)){m(i,"SCENE_DOCUMENT",`scene.parts[${f[0].index}]`,"external definitions must be the canonical non-empty typed marker resource mark")}const x=p[0]?.part;if(x&&x.id!=="svg-close")m(i,"SCENE_DOCUMENT",`scene.parts[${p[0].index}]`,"external close must use the canonical generated identity");const S=c[0]?.part;if(S){if(S.id!=="external-scene-prelude")m(i,"SCENE_DOCUMENT","scene.parts[0].id","external open mark must use the canonical generated identity");try{const h=e.colors;const E=["external-scene-title",...l.length?["external-scene-description"]:[]].join(" ");const R=Te([Xo(e.width,e.height,h,Boolean(e.transparent),{attrs:{role:"img","aria-labelledby":E}}),Ko(h.font??"Inter",false,h.shadow,false)].join("\n"));if(B(S)!==R)m(i,"SCENE_SECURITY","scene.parts[0]","must be the canonical CSS-free external document serialization")}catch(h){m(i,"SCENE_SECURITY","scene.parts[0]",h instanceof Error?h.message:String(h))}}for(const h of n.markerReferences){const E=n.markerIds.get(h.id);if(!E)m(i,"SCENE_REFERENCE",h.path,`references undeclared marker "${h.id}"`);else if(E!==h.marker)m(i,"SCENE_REFERENCE",h.path,`must reference the exact typed marker resource "${h.id}"`)}for(const h of n.endpointReferences){if(!n.ids.has(h.id))m(i,"SCENE_REFERENCE",h.path,`references unknown Scene id "${h.id}"`)}if(t&&r&&i.length===0){const h=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=Ni(w);if(O&&(O.x0<-1||O.y0<-1||O.x1>h+1||O.y1>E+1)){m(i,"SCENE_BOUNDS",I,`visual bounds [${O.x0}, ${O.y0}, ${O.x1}, ${O.y1}] escape the ${h}x${E} document`)}}catch(O){m(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,Tr);O++){const H=w.children[O];if(C(H))R(H.node,`${I}.children[${O}].node`)}}};for(let w=0;w<Math.min(e.parts.length,Tr);w++){R(e.parts[w],`scene.parts[${w}]`)}}return o}var qa={document:(e,n,t,r)=>Vu(e,n,t,r),canonical:Fu};function Gu(e,n={}){return ji(e,n,true,qa)}function Ja(e,n,t){const r=ji(e,{mode:n},t||Ne(e,{mode:n})==="external",qa);if(!r.valid)throw new ee(r.diagnostics)}function gh(e,n={}){const t=Gu(e,n);if(!t.valid)throw new ee(t.diagnostics)}var Uu=globalThis.process?.env;var Yu=Uu?.AGENTIC_MERMAID_SCENE_ASSERTIONS==="1";var Za=new WeakSet;function bh(e){Za.add(e)}function Qa(e){return Yu||e!==void 0&&(Za.has(e)||e.renderOptions.layoutSafety==="strict")}var Hu=64;var Ku=256;var Xu=Y.maxNodes*16;var qu=Y.maxNodes*16;var Ju=Y.maxTextBytes*8;var nc=Object.freeze({maxObjects:Y.maxNodes*4,maxTextBytes:Y.maxTextBytes,maxArrayEntries:Y.maxNodes,maxAggregateArrayEntries:qu,maxDepth:Y.maxDepth*4,maxPropertiesPerObject:Hu,maxAggregateProperties:Xu,maxPropertyKeyBytes:Ku,maxAggregatePropertyKeyBytes:Ju});var tc=Object.freeze({...nc,maxObjects:Y.maxNodes*8,maxTextBytes:Y.maxTextBytes+Y.maxAggregateSerializationBytes+Y.maxFinalSvgBytes});function rc(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,p,u)=>{if(typeof f==="string"){const b=Math.max(0,n.maxTextBytes-s);const y=ie(f,b);if(y>b){throw new Error(`External Scene text values exceed the aggregate ${n.maxTextBytes}-byte limit`)}s+=y;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(p>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 g=i.get(f);if(g!==void 0)return g;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 h=Reflect.ownKeys(f);if(h.length>S+1||!h.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 h){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 h){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);Ct(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,p+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 y=Reflect.ownKeys(f);if(y.length>n.maxPropertiesPerObject){throw new Error(`External Scene ${u} contains too many properties`)}c+=y.length;if(c>n.maxAggregateProperties){throw new Error(`External Scene input exceeds the aggregate ${n.maxAggregateProperties}-property limit`)}for(const x of y){if(typeof x!=="string")continue;const S=Math.max(0,n.maxAggregatePropertyKeyBytes-d);const h=ie(x,Math.min(n.maxPropertyKeyBytes,S));if(h>n.maxPropertyKeyBytes){throw new Error(`External Scene ${u} contains a property key longer than ${n.maxPropertyKeyBytes} bytes`)}if(h>S){throw new Error(`External Scene property keys exceed the aggregate ${n.maxAggregatePropertyKeyBytes}-byte limit`)}d+=h}const k=Object.create(null);i.set(f,k);Ct(f,k);for(const x of y){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 h;if("value"in S)h=S.value;else{h=ba(f,x,S);if(h===void 0)throw new TypeError(`External Scene ${u}.${x} must be an enumerable data property`)}Object.defineProperty(k,x,{value:l(h,p+1,`${u}.${x}`),enumerable:true,configurable:false,writable:false})}la(f,k);return Object.freeze(k)}finally{r.delete(f)}};return l(e,0,t)}var ic=new WeakMap;function Wi(e,n,t=true){ic.set(e,{mode:n,crossChecks:t})}function ec(){throw new ee([{code:"SCENE_DOCUMENT",path:"scene.family",message:"source-only browser admission requires a built-in family"}])}function oc(e,n,t,r,i=false){const o=typeof e==="object"&&e!==null?ic.get(e):void 0;if(i&&(n==="external"||o!==void 0&&(o.mode==="external"||Ne(e)==="external")))ec();const s=n!=="internal"||t;if(o!==void 0&&o.mode===(n??Ne(e))){if((o.mode==="external"||t)&&!o.crossChecks){r(e,o.mode,true);Wi(e,o.mode,true)}return e}const a=rc(e,tc,"scene");if(i&&Ne(a)==="external")ec();r(a,n,n!=="internal"||t);Wi(a,n??Ne(a),s);return a}function Nt(e){return Zu(e)}function Zu(e,n,t=Qa()){return oc(e,n,t,Ja)}var Qu=4;var cc="backend-claim-matrix@4";var Vh=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 ef(){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=Fi({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=wr({id:"backend-conformance-title",element:"title",text:"Backend conformance fixture",domId:"backend-conformance-title"});const o=wr({id:"backend-conformance-description",element:"description",text:"A representative Scene document",domId:"backend-conformance-description"});const s=Bi({id:"backend-conformance-definitions",markerResources:[n],gradientResources:[t]},`<defs>
54
+ ${ni(n)}
55
+ ${Si(t)}
56
+ </defs>`);const a=fn({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=Xn({id:"backend-conformance-container",role:"group",open:"<g>",paint:{opacity:"0.8",fill:"#f4efe6"},close:"</g>",children:[{node:a,indent:2}]});const d=fn({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=Xe({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=Xe({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 p=Xe({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=Xe({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 g=Rt({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,g,Li()]};const y=[{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:g,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 tn({doc:b,context:k,probes:y,nodes:{root:r,marker:s,shape:a,container:c,dataMark:d,richConnector:l,freehandConnector:f,closedConnector:p,multiSubpathConnector:u,label:g}})}var A;function dc(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===A?.doc?o??=Nt(s):s;return i.call(e,c,a)}}}function sc(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 pn(e,n){return e.split(n).length-1}function F(e,n){const t=e.drawNode(n,A.context);kr(t,"backend conformance drawNode output");return t}function gn(e){const n=e.render(A.doc,A.context);kr(n,"backend conformance render output");return n}function $e(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 mn(e,n,t,r=()=>true){const i=F(e,t);const o=$e(i,B(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===B(t);const a=n.realization==="native"?s:n.realization==="emulated"&&i!==B(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 ve(e,n,t,r){const i=n.realization==="lossy"?A.nodes.freehandConnector:A.nodes.richConnector;const o=F(e,i);const s=$e(o,B(i));if(n.realization==="lossy"){return v(o!==B(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!==B(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 ac(e){return[e.primitive,e.feature,e.operation].join("/")}var nf=Object.freeze({"document/identity/serialize":e=>{const n=gn(e);return v(pn(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=gn(e);return v(n.includes("<defs>")&&n.includes('id="backend-conformance-arrow"')&&n.includes('<linearGradient id="backend-conformance-gradient"')&&si(n).ok,"typed marker and linear-gradient resources serialized without external references","document resources were missing or unsafe")},"document/interaction/accessibility":e=>{const n=gn(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)=>mn(e,n,A.nodes.label,t=>t.includes('x="25"')&&t.includes('y="31"')&&t.includes('font-size="12"')),"text/paint/render":(e,n)=>mn(e,n,A.nodes.label,t=>t.includes('fill="#172033"')),"text/labels/accessibility":e=>{const n=F(e,A.nodes.label);return v(n.includes("Fixture label"),"readable label text preserved","text label was not serialized")},"text/identity/serialize":e=>{const n=F(e,A.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)=>mn(e,n,A.nodes.shape),"shape/paint/render":(e,n)=>mn(e,n,A.nodes.shape,t=>t.includes("#334155")&&t.includes("#f4efe6")),"shape/identity/serialize":e=>{const n=F(e,A.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=F(e,A.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=F(e,A.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=F(e,A.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=A.nodes.richConnector;const r=F(e,t);const i=$e(r,B(t));return v(n.realization==="native"?t.route.geometry.kind==="path"&&r.includes(`d="${t.route.geometry.d}"`):n.realization==="lossy"&&r!==B(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)=>mn(e,n,A.nodes.freehandConnector,t=>t.includes("#334155")),"connector/transform/render":(e,n)=>{const t=A.nodes.freehandConnector;const r=F(e,t);const i=$e(r,B(t));const o=r.includes('transform="rotate(90 42 58)"')&&xe(t,{x:42,y:82})&&!xe(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=A.nodes.richConnector;const r=F(e,t);const i=$e(r,B(t));return v(n.realization==="native"?t.route.geometry.kind==="path"&&r.includes(`d="${t.route.geometry.d}"`):n.realization==="lossy"&&r!==B(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=A.nodes.multiSubpathConnector;const r=F(e,t);const i=$e(r,B(t));const o=xe(t,{x:18,y:72})&&xe(t,{x:62,y:72})&&!xe(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"?pn(r.match(/^\s*<path\b[^>]*>/)?.[0]??"","M ")===2:n.realization==="emulated"&&r!==B(t)&&pn(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=A.nodes.closedConnector;const r=F(e,t);const i=$e(r,B(t));const o=xe(t,{x:25,y:65});const s=o&&(n.realization==="native"?/\sZ(?:\s|&quot;|")/.test(r.match(/^\s*<path\b[^>]*>/)?.[0]??""):n.realization==="lossy"&&r!==B(t)&&/\sZ(?:\s|&quot;|")/.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=A.nodes.richConnector;const r=F(e,t);const i=$e(r,B(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!==B(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)=>ve(e,n,"stroke-opacity","0.65"),"connector/stroke-cap/render":(e,n)=>ve(e,n,"stroke-linecap","square"),"connector/stroke-join/render":(e,n)=>ve(e,n,"stroke-linejoin","bevel"),"connector/stroke-miter/render":(e,n)=>ve(e,n,"stroke-miterlimit","7"),"connector/dash-array/render":(e,n)=>ve(e,n,"stroke-dasharray","6 3"),"connector/dash-offset/render":(e,n)=>ve(e,n,"stroke-dashoffset","2"),"connector/dash-restart/render":(e,n)=>{const t=A.nodes.richConnector;const r=F(e,t);const i=$e(r,B(t));const o=pn(i,'stroke-dasharray="6 3"');const s=pn(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=A.nodes.richConnector;const r=F(e,t);const i=$e(r,B(t));const o=pn(i,'pathLength="77"');const s=pn(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)=>ve(e,n,"paint-order","stroke fill"),"connector/compositing/render":(e,n)=>ve(e,n,"style","mix-blend-mode:multiply"),"connector/non-scaling-stroke/render":(e,n)=>ve(e,n,"vector-effect","non-scaling-stroke"),"connector/marker-orientation/render":(e,n)=>{const t=gn(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=gn(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=F(e,A.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=F(e,A.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=F(e,A.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=F(e,A.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=F(e,A.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=F(e,A.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=A.nodes.freehandConnector;const t=F(e,n);return v(t.includes('data-id="backend-conformance-freehand-relation"')&&xe(n,{x:42,y:82})&&!xe(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=A.nodes.multiSubpathConnector;const t=F(e,n);return v(t.includes('data-id="backend-conformance-multi-relation"')&&xe(n,{x:18,y:72})&&!xe(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=F(e,A.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=F(e,A.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=F(e,A.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=F(e,A.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)=>mn(e,n,A.nodes.dataMark),"data-mark/paint/render":(e,n)=>mn(e,n,A.nodes.dataMark,t=>t.includes("#a33b20")&&t.includes("#334155")),"data-mark/identity/serialize":e=>{const n=F(e,A.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 tf(e){return ai.includes(e.primitive)&&ws.includes(e.feature)&&Cs.includes(e.operation)}function rf(e){return e.capabilities.map(n=>{const t=ci(n);const r=nf[ac(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 tf(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=`${cc}/${ac(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 Vi(e,n=e.id){A??=Ir(void 0,ef);const t=[];const r=(x,S,h)=>{t.push(Object.freeze({id:x,passed:S,...h?{diagnostic:h}:{}}))};const i=[];const o=[];for(const x of A.probes){try{const S=F(e,x.node);const h=F(e,x.node);if(typeof S!=="string"||typeof h!=="string"){i.push(`${x.primitive} returned a non-string`);o.push(`${x.primitive} returned a non-string`);continue}if(S!==h)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} ${sc(E)}`)}catch(S){const h=`${x.primitive} threw ${S instanceof Error?S.message:String(S)}`;i.push(h);o.push(h)}}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=gn(e);a=gn(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=ys(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=si(s);let p;try{Jt(s,"default")}catch(x){p=x instanceof Error?x.message:String(x)}const u=f.ok&&p===void 0;r("output-security",u,u?void 0:[p,f.ok?void 0:`unsafe SVG constructs: ${f.refs.join(", ")}`].filter(Boolean).join("; "));const g=[["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 g){const h=S.filter(E=>!s.includes(E));r(x,h.length===0,sc(h))}const b=rf(e);const y=b.filter(x=>x.status==="failed");r("capability-claims",y.length===0,y.map(x=>`${x.primitive}/${x.feature}/${x.operation}: ${x.diagnostic??"failed"}`).join("; ")||void 0);const k={version:Qu,fixtureId:cc,backendId:n,contracts:{scene:Ht,outputSecurity:ms},directOutputs:["svg"],passed:t.every(x=>x.passed),checks:t,claims:b};return tn(k)}var lc=Symbol();function Yh(){const e={begin(n,t){e.scene=t;const r=new Map(t.parts.map((i,o)=>[i,o]));n[lc]=(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 of(n,e)}};return e}function uc(e,n,t){return e[lc]?.(n,t)??t}function of(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=Fe(e).map(a=>{while(o<t.length&&t[o].end<=a.start)s=t[o++].owner;return s});return r}function ib(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 ob(e,n,t,r){return[e,...r.map(i=>Et(i.serialized,i.indent)),n].join(t)}function sf(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 yn={id:"default",capabilities:Rs("backend:default","crisp"),drawNode(e){return B(e)},render(e,n){const t=Nt(e);const r=sf(t,n);return t.parts.map((i,o)=>{const s=uc(n,i,B(i));return r&&o===0?`${s}
57
+ ${r}`:s}).join("\n")}};var Gi=new WeakSet([yn.render]);var af=Object.getOwnPropertyDescriptors(yn);var Ui;function cf(e){if(e!==yn)return false;for(const n of["id","capabilities","drawNode","render"]){const t=Object.getOwnPropertyDescriptor(e,n);if(!t||!("value"in t)||t.value!==af[n].value)return false}return true}function sb(e){return e===yn&&Gi.has(e.render)}function ab(e){return Ui!==void 0&&e===Ui}var mc="1.0.0";var df=Object.freeze({core:Ue,scene:"^2.0.0"});var lf=Object.freeze({owner:"agentic-mermaid",source:"built-in",reference:"src/scene/backend.ts"});var uf=Object.freeze({owner:"host",source:"in-process"});var qn=new Map;var Yi=new Map;var $r=new Map;var $t;var ke=null;function ff(e,n,t){let r;let i=false;return{running:()=>i,report:()=>{if(r)return r;const o=ke;ke=n;i=true;try{r=Vi(t?dc(e):e,n)}finally{i=false;ke=o}return r}}}function pf(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 mf(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();pf(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===yn&&Gi.has(o))Gi.add(r.render);return e}function Hi(){if(ke!==null){throw new Error(`Backend registry mutation is forbidden while candidate "${ke}" is undergoing conformance`)}}function gc(e,n){return wn({id:e,kind:"backend",version:n.version??mc,compatibility:n.compatibility,provenance:n.provenance??uf})}function yc(e,n){if(!Array.isArray(e.capabilities)){throw new Error(`Backend "${e.id}" must declare capability claims`)}const t=Zt(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 Ts){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 hc(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 Nr(e,n,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:Reflect.get(n,t)}function gf(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=Nr(t,n,"id");if(typeof r!=="string")throw new TypeError("registerBackend id must be a string");const i=Nr(t,n,"capabilities");if(!Array.isArray(i)){throw new Error(`Backend "${r}" must declare capability claims`)}const o=Nr(t,n,"drawNode");const s=Nr(t,n,"render");const a={...t,id:r,capabilities:hc(i),drawNode(c,d){return o.call(a,c,d)},render(c,d){return s.call(a,Nt(c),d)}};return Object.freeze(a)}function yf(e){const n=e;n.capabilities=hc(e.capabilities);return Object.freeze(e)}function cb(e,n){Hi();ke="<unread>";try{if(!n||typeof n!=="object"){throw new TypeError("registerBackend options with explicit core and Scene compatibility ranges are required")}const t=gf(e);const r=t.id;ke=r;const i=Qe(r);if(!i||i.kind!=="backend"){throw new Error(`registerBackend id "${r}" must use the "backend:" namespace`)}const o=gc(r,n);Jr(o,"core");Jr(o,"scene");yc(t,r);const s=Vi(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("; ")}`)}ct(qn,{identity:o,value:t});$r.set(r,()=>s);$t=void 0;const a=qn.get(r);return()=>{Hi();if(qn.get(r)!==a)return;qn.delete(r);$r.delete(r);$t=void 0}}finally{ke=null}}function bc(e){Hi();ke="<built-in>";try{const n=e.id;const t=at("backend",n);ke=t;const r=Yi.get(n);if(r!==void 0)throw new Error(`Backend input name "${n}" already selects "${r}"`);const i=cf(e);yc(e,t);const o=ff(e,t,i);const s=yf(mf(e,n,o));ct(qn,{identity:gc(t,{version:mc,compatibility:df,provenance:lf}),value:s});$r.set(t,o.report);Yi.set(n,t);if(i)Ui=s;$t=void 0}finally{ke=null}}function fc(){return Object.freeze(Array.from(qn.values(),({identity:e,value:n})=>{const t=$r.get(e.id);return Object.freeze({identity:e,backend:n,inputName:Array.from(Yi.entries()).find(([,r])=>r===e.id)?.[0]??e.id,get conformance(){return t()}})}))}function pc(e,n){return e.find(t=>t.identity.id===n||t.inputName===n)}function hf(e,n){Je("backend-registry",n?"bypass":$t?"hit":"miss");const t=n?fc():$t??=fc();const r=pc(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 pc(t,i);return r}function db(e,n){return hf(e,n)?.backend}bc(yn);function xc(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 fb(...e){return xc(e.join("|")).toString(36)}function pb(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 mb(e,n,t){return xc(`${e>>>0}|${n}|${t}`)}export{Vr as a,Ge as b,ud as c,Ee as d,me as e,Gr as f,Yr as g,Hr as h,Ur as i,Ve as j,En as k,Gt as l,wp as m,st as n,Tp as o,he as p,Rp as q,Bo as r,se as s,Do as t,pd as u,Np as v,ka as w,Xs as x,mg as y,Ie as z,ir as A,co as B,lo as C,Tf as D,uo as E,fo as F,Rf as G,vr as H,re as I,kc as J,ze as K,Ar as L,Rc as M,Nc as N,xf as O,Sf as P,$c as Q,Oc as R,Cf as S,Ir as T,Be as U,Vc as V,bo as W,et as X,Pt as Y,Uc as Z,Oe as _,Pf as $,Qc as aa,Sn as ba,We as ca,Ft as da,Wt as ea,ot as fa,dp as ga,lp as ha,up as ia,fp as ja,kn as ka,Fg as la,la as ma,ht as na,Wg as oa,jn as pa,ue as qa,sn as ra,we as sa,sr as ta,na as ua,ta as va,Q as wa,Fn as xa,dy as ya,ln as za,ly as Aa,uy as Ba,Ra as Ca,He as Da,ru as Ea,Ln as Fa,wa as Ga,fy as Ha,Br as Ia,U as Ja,rt as Ka,To as La,xp as Ma,rd as Na,id as Oa,sd as Pa,Fr as Qa,de as Ra,z as Sa,Sp as Ta,Je as Ua,Df as Va,Bf as Wa,Fe as Xa,Uf as Ya,Kc as Za,Co as _a,Yf as $a,Hf as ab,Kf as bb,jt as cb,Xf as db,Cn as eb,_p as fb,Wo as gb,Ap as hb,Ip as ib,le as jb,Gp as kb,X as lb,Up as mb,Yp as nb,Hp as ob,Ko as pb,Xo as qb,qo as rb,Zo as sb,Kp as tb,Xp as ub,qp as vb,Jp as wb,Sa as xb,Ue as yb,Ht as zb,im as Ab,Rd as Bb,Jr as Cb,Nd as Db,at as Eb,Qe as Fb,wn as Gb,qr as Hb,ct as Ib,Ce as Jb,en as Kb,dt as Lb,Ye as Mb,Xt as Nb,Rn as Ob,nn as Pb,Wd as Qb,Nn as Rb,Ud as Sb,Hg as Tb,fa as Ub,Kg as Vb,ma as Wb,xy as Xb,B as Yb,Et as Zb,Ct as _b,Cy as $b,ar as ac,fm as bc,qt as cc,ni as dc,ti as ec,Qg as fc,xt as gc,xa as hc,Mu as ic,fn as jc,Xe as kc,Rt as lc,ju as mc,wr as nc,Bi as oc,Li as pc,Xn as qc,Fi as rc,Ya as sc,Ha as tc,ie as uc,ce as vc,tn as wc,W as xc,pl as yc,ml as zc,Qt as Ac,_m as Bc,Am as Cc,$s as Dc,ms as Ec,ys as Fc,ym as Gc,hm as Hc,si as Ic,Jt as Jc,xm as Kc,ai as Lc,Em as Mc,Cm as Nc,Cs as Oc,ws as Pc,Ts as Qc,fl as Rc,wm as Sc,Rs as Tc,Tm as Uc,Zt as Vc,_n as Wc,On as Xc,Mn as Yc,rn as Zc,er as _c,$l as $c,Ol as ad,_e as bd,sg as cd,vl as dd,ag as ed,Dl as fd,jl as gd,ft as hd,cg as id,dg as jd,lg as kd,fb as ld,pb as md,mb as nd,xg as od,xe as pd,Sg as qd,xi as rd,Si as sd,sa as td,fu as ud,Y as vd,ee as wd,kr as xd,Ou as yd,Bu as zd,Gu as Ad,gh as Bd,bh as Cd,Qa as Dd,nc as Ed,rc as Fd,Nt as Gd,Zu as Hd,Qu as Id,cc as Jd,Vh as Kd,Vi as Ld,Yh as Md,uc as Nd,ib as Od,ob as Pd,sf as Qd,yn as Rd,sb as Sd,ab as Td,pf as Ud,cb as Vd,bc as Wd,fc as Xd,hf as Yd,db as Zd};
58
+ //# sourceMappingURL=chunk-DOFB572I.js.map