agentic-mermaid 0.5.1 → 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 (175) hide show
  1. package/AGENT_NATIVE.md +63 -375
  2. package/CHANGELOG.md +73 -0
  3. package/README.md +87 -50
  4. package/assets/hero.png +0 -0
  5. package/dist/agent-core.d.ts +7 -7
  6. package/dist/agent-core.js +1 -1
  7. package/dist/agent.d.ts +7 -7
  8. package/dist/agent.js +1 -1
  9. package/dist/agentic-mermaid-mcp.js +1 -1
  10. package/dist/am.js +1 -1
  11. package/dist/browser-lazy/chunks/agentic-producer-core-ECZ3CMZM.js +1 -0
  12. package/dist/browser-lazy/chunks/architecture-H5LTMKQW.js +13 -0
  13. package/dist/browser-lazy/chunks/block-566X6FNV.js +11 -0
  14. package/dist/browser-lazy/chunks/builtin-backends-VAFEZXKY.js +12 -0
  15. package/dist/browser-lazy/chunks/c4-ZXFDLBFK.js +10 -0
  16. package/dist/browser-lazy/chunks/{chunk-REBVEXI2.js → chunk-2JQXRKBC.js} +1 -1
  17. package/dist/browser-lazy/chunks/chunk-37FZNMPR.js +1 -0
  18. package/dist/browser-lazy/chunks/chunk-3JTYTXA6.js +22 -0
  19. package/dist/browser-lazy/chunks/{chunk-2J5K6NIP.js → chunk-4NILRBC7.js} +1 -1
  20. package/dist/browser-lazy/chunks/chunk-5LKPDHPC.js +4 -0
  21. package/dist/browser-lazy/chunks/chunk-62MR3LWJ.js +1 -0
  22. package/dist/browser-lazy/chunks/chunk-64JFHCJC.js +1 -0
  23. package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
  24. package/dist/browser-lazy/chunks/chunk-6UOOATQR.js +1 -0
  25. package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
  26. package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
  27. package/dist/browser-lazy/chunks/{chunk-HR5TE7TE.js → chunk-A7V5VDKN.js} +1 -1
  28. package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
  29. package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
  30. package/dist/browser-lazy/chunks/{chunk-GMTB5UTY.js → chunk-G4JBA7HU.js} +3 -3
  31. package/dist/browser-lazy/chunks/chunk-HJVO5VC3.js +1 -0
  32. package/dist/browser-lazy/chunks/chunk-IUI4DYC3.js +3 -0
  33. package/dist/browser-lazy/chunks/{chunk-SBXYR7Z3.js → chunk-J57YRC2M.js} +1 -1
  34. package/dist/browser-lazy/chunks/chunk-LBXXKLIR.js +3 -0
  35. package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
  36. package/dist/browser-lazy/chunks/chunk-O34YYEQV.js +1 -0
  37. package/dist/browser-lazy/chunks/{chunk-E7UIB4SZ.js → chunk-OBI5U5XU.js} +1 -1
  38. package/dist/browser-lazy/chunks/{chunk-LLPBKBIG.js → chunk-OFOS57WQ.js} +1 -1
  39. package/dist/browser-lazy/chunks/chunk-PSZEE64O.js +16 -0
  40. package/dist/browser-lazy/chunks/chunk-PXTLV57R.js +1 -0
  41. package/dist/browser-lazy/chunks/chunk-QVSZOF5M.js +1 -0
  42. package/dist/browser-lazy/chunks/chunk-TLFX3U6S.js +1 -0
  43. package/dist/browser-lazy/chunks/{chunk-MSP3S2VS.js → chunk-TT5GR5EJ.js} +1 -1
  44. package/dist/browser-lazy/chunks/{chunk-KXPF5KIU.js → chunk-V6I2VGNQ.js} +5 -5
  45. package/dist/browser-lazy/chunks/{chunk-HDKHAM2V.js → chunk-VRZKI33U.js} +1 -1
  46. package/dist/browser-lazy/chunks/chunk-XHU3A432.js +1 -0
  47. package/dist/browser-lazy/chunks/chunk-YVNJDVQO.js +1 -0
  48. package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
  49. package/dist/browser-lazy/chunks/class-XIFNVBFE.js +13 -0
  50. package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
  51. package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
  52. package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
  53. package/dist/browser-lazy/chunks/eventmodeling-G7DITZX7.js +19 -0
  54. package/dist/browser-lazy/chunks/flowchart-SSFIU4EU.js +4 -0
  55. package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
  56. package/dist/browser-lazy/chunks/gantt-HQNVDX2B.js +11 -0
  57. package/dist/browser-lazy/chunks/{gitgraph-W26QIMTY.js → gitgraph-Z5MN6M6L.js} +4 -4
  58. package/dist/browser-lazy/chunks/ishikawa-UEERNFQV.js +6 -0
  59. package/dist/browser-lazy/chunks/journey-3BEWWGB5.js +16 -0
  60. package/dist/browser-lazy/chunks/kanban-2WFNCWLB.js +20 -0
  61. package/dist/{zenuml/chunks/mermaid-yaml-runtime-KZVU74WU.js → browser-lazy/chunks/mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
  62. package/dist/browser-lazy/chunks/{mindmap-5A3MVHNH.js → mindmap-R2C6SNYR.js} +6 -6
  63. package/dist/browser-lazy/chunks/{packet-AL6VDOMY.js → packet-GMVCI5YZ.js} +5 -5
  64. package/dist/browser-lazy/chunks/pie-WER45DKC.js +15 -0
  65. package/dist/browser-lazy/chunks/{quadrant-RJ56XFBR.js → quadrant-NCUPSFKN.js} +5 -5
  66. package/dist/browser-lazy/chunks/radar-WLYS4YC5.js +16 -0
  67. package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
  68. package/dist/browser-lazy/chunks/requirement-AK3NWMJ6.js +19 -0
  69. package/dist/browser-lazy/chunks/{sankey-WKTBEZSS.js → sankey-C2DY6WVU.js} +8 -8
  70. package/dist/browser-lazy/chunks/sequence-D4WJB44W.js +5 -0
  71. package/dist/browser-lazy/chunks/state-YUQVESE7.js +4 -0
  72. package/dist/browser-lazy/chunks/{timeline-PRV5PWGP.js → timeline-BMBJJXWR.js} +4 -4
  73. package/dist/browser-lazy/chunks/{treemap-BVME3JLI.js → treemap-B66XBZZ6.js} +4 -4
  74. package/dist/browser-lazy/chunks/{xychart-XBI2RNHD.js → xychart-HAVFROGT.js} +6 -6
  75. package/dist/browser-lazy/chunks/{zenuml-GQKPRQFJ.js → zenuml-62RLYFWP.js} +8 -8
  76. package/dist/browser-lazy/index.d.ts +10 -0
  77. package/dist/browser-lazy/index.js +1 -1
  78. package/dist/browser.global.js +541 -541
  79. package/dist/{chunk-AVS4T4NO.js → chunk-2DNGDTJD.js} +2 -2
  80. package/dist/{chunk-AWZBTOV6.js → chunk-4F2UGYTM.js} +2 -2
  81. package/dist/{chunk-6JBQYHWB.js → chunk-7XYB2LNC.js} +2 -2
  82. package/dist/chunk-DOFB572I.js +58 -0
  83. package/dist/chunk-EHJI3QYE.js +52 -0
  84. package/dist/{chunk-YISEN5SO.js → chunk-HINRNKPO.js} +2 -2
  85. package/dist/{chunk-ORYXYGDV.js → chunk-KXMANAST.js} +33 -33
  86. package/dist/chunk-U4MT3RRE.js +2 -0
  87. package/dist/{chunk-AIWXP4OF.js → chunk-WYIB6BUR.js} +2 -2
  88. package/dist/{cli-BOEN5YAF.js → cli-ZYIDBYNS.js} +2 -2
  89. package/dist/{index-Cr3xjRw9.d.ts → index-Bvhprdxz.d.ts} +3 -3
  90. package/dist/index.d.ts +4 -4
  91. package/dist/index.js +1 -1
  92. package/dist/{mcp-cli-NM3P4VPC.js → mcp-cli-YVDCORWA.js} +2 -2
  93. package/dist/{paint-certification-C33LRvWT.d.ts → paint-certification-BoLyr006.d.ts} +22 -2
  94. package/dist/{server-FY5Z7F32.js → server-4JGAVXR3.js} +2 -2
  95. package/dist/{svg-styles-C_v2tnxG.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
  96. package/dist/svg-styles.d.ts +1 -1
  97. package/dist/svg-styles.js +1 -1
  98. package/dist/svg.d.ts +4 -4
  99. package/dist/svg.js +1 -1
  100. package/dist/{types-DxOTIgwg.d.ts → types-CLVJCaH2.d.ts} +11 -1
  101. package/dist/zenuml/chunks/{appearance-FTQ2722O.js → appearance-5RM5MVM2.js} +1 -1
  102. package/dist/zenuml/chunks/{builtin-backends-QLY75JCL.js → builtin-backends-UTNWL4N3.js} +11 -11
  103. package/dist/zenuml/chunks/{chunk-LYIRUTCM.js → chunk-3A6S6GNB.js} +2 -2
  104. package/dist/zenuml/chunks/{chunk-6OONHTSD.js → chunk-55WS466K.js} +9 -9
  105. package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
  106. package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
  107. package/dist/zenuml/chunks/{chunk-YFCDP4ZS.js → chunk-IARQ24W3.js} +13 -13
  108. package/dist/zenuml/chunks/chunk-ZNZRIISS.js +4 -0
  109. package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
  110. package/dist/{browser-lazy/chunks/mermaid-yaml-runtime-QVYX4EWK.js → zenuml/chunks/mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
  111. package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
  112. package/dist/zenuml/chunks/{zenuml-URQ4HIMD.js → zenuml-N3LZMB2G.js} +9 -9
  113. package/dist/zenuml.d.ts +2 -2
  114. package/dist/zenuml.js +1 -1
  115. package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
  116. package/docs/README.md +59 -110
  117. package/docs/api.md +3 -1
  118. package/docs/config.md +37 -0
  119. package/docs/getting-started.md +27 -44
  120. package/examples/styles/readme-hero.md +25 -0
  121. package/examples/styles/readme-hero.mmd +13 -0
  122. package/examples/styles/readme-hero.style.json +7 -0
  123. package/package.json +1 -1
  124. package/server.json +2 -2
  125. package/dist/browser-lazy/chunks/agentic-producer-core-MGU4FD6J.js +0 -1
  126. package/dist/browser-lazy/chunks/architecture-KZTC3672.js +0 -13
  127. package/dist/browser-lazy/chunks/block-J5PD6HQM.js +0 -11
  128. package/dist/browser-lazy/chunks/builtin-backends-GSGJPT5A.js +0 -12
  129. package/dist/browser-lazy/chunks/c4-VNQSIA5M.js +0 -10
  130. package/dist/browser-lazy/chunks/chunk-4C2BVM5Y.js +0 -1
  131. package/dist/browser-lazy/chunks/chunk-5GE2SFLQ.js +0 -4
  132. package/dist/browser-lazy/chunks/chunk-6YGQR6R4.js +0 -16
  133. package/dist/browser-lazy/chunks/chunk-7AHX3HH7.js +0 -1
  134. package/dist/browser-lazy/chunks/chunk-B5PDJUJG.js +0 -3
  135. package/dist/browser-lazy/chunks/chunk-CXQWSLJV.js +0 -1
  136. package/dist/browser-lazy/chunks/chunk-DWDYWUAS.js +0 -1
  137. package/dist/browser-lazy/chunks/chunk-EUBVLDYV.js +0 -29
  138. package/dist/browser-lazy/chunks/chunk-FBL4ONAL.js +0 -20
  139. package/dist/browser-lazy/chunks/chunk-NQF75XGM.js +0 -3
  140. package/dist/browser-lazy/chunks/chunk-P7DO3MRP.js +0 -13
  141. package/dist/browser-lazy/chunks/chunk-QQ2U2KAY.js +0 -1
  142. package/dist/browser-lazy/chunks/chunk-SJYDRC6G.js +0 -1
  143. package/dist/browser-lazy/chunks/chunk-UUTB6MDK.js +0 -1
  144. package/dist/browser-lazy/chunks/chunk-WEREIH5P.js +0 -1
  145. package/dist/browser-lazy/chunks/chunk-WHNTP27R.js +0 -6
  146. package/dist/browser-lazy/chunks/chunk-YXGB25MZ.js +0 -1
  147. package/dist/browser-lazy/chunks/class-FNDNJGYH.js +0 -13
  148. package/dist/browser-lazy/chunks/er-P263BDFG.js +0 -11
  149. package/dist/browser-lazy/chunks/eventmodeling-XX3VCGSC.js +0 -19
  150. package/dist/browser-lazy/chunks/flowchart-GTLWJA3P.js +0 -4
  151. package/dist/browser-lazy/chunks/gantt-SRIHFAIC.js +0 -11
  152. package/dist/browser-lazy/chunks/ishikawa-NTHJ7BUO.js +0 -6
  153. package/dist/browser-lazy/chunks/journey-3T62IEHN.js +0 -16
  154. package/dist/browser-lazy/chunks/kanban-U6DQ7LWQ.js +0 -20
  155. package/dist/browser-lazy/chunks/pie-4QYMTQ7W.js +0 -15
  156. package/dist/browser-lazy/chunks/radar-L5B4CNEL.js +0 -16
  157. package/dist/browser-lazy/chunks/render-core-CIGKBI2T.js +0 -3
  158. package/dist/browser-lazy/chunks/requirement-5QVLRI6Z.js +0 -19
  159. package/dist/browser-lazy/chunks/sequence-G6DQHPR7.js +0 -5
  160. package/dist/browser-lazy/chunks/state-6DEA5BXE.js +0 -4
  161. package/dist/chunk-PNL435CH.js +0 -58
  162. package/dist/chunk-XCEEF3NJ.js +0 -2
  163. package/dist/chunk-YQKNJNU4.js +0 -52
  164. package/dist/zenuml/chunks/chunk-4VRUBLG4.js +0 -29
  165. package/dist/zenuml/chunks/chunk-7QDAZ2HL.js +0 -4
  166. package/dist/zenuml/chunks/chunk-GDLMM3YO.js +0 -1
  167. package/dist/zenuml/chunks/render-core-DNCYYOIB.js +0 -3
  168. /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
  169. /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
  170. /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
  171. /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
  172. /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
  173. /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
  174. /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
  175. /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
@@ -0,0 +1,4 @@
1
+ import{B as e,C as t,D as i,E as a,F as r,G as n,a as o,h as s,i as l,j as c,k as d,l as u,m as f,n as p,o as m,x as g}from"./chunk-V6I2VGNQ.js";import{b as h,c as y,e as v,g as b,z as S}from"./chunk-7UFOFWBA.js";import{F as $,G as w,L as x,M as C,ga as O,ha as j,ia as k,s as E,t as F,v as A,x as I,z as T}from"./chunk-G4JBA7HU.js";import{a as z,b as D,c as L,d as M,e as R,f as q}from"./chunk-3JTYTXA6.js";import{Mb as N,ab as P,c as B,pb as _,r as W}from"./chunk-EIYLJ4FI.js";import{a as V,b as J,e as G,f as H,g as U}from"./chunk-PJJSDGLB.js";import{a as Y}from"./chunk-YHMTSXIR.js";function K(e){return h(e)?e:void 0}function X(e,t){let i=e.$ref;if("string"!=typeof i||!i.startsWith("#/"))return;let a=t;for(let e of i.slice(2).split("/")){if(!h(a))return;a=a[e.replaceAll("~1","/").replaceAll("~0","~")]}return K(a)}function Q(e,t,i=t,a=[],r={}){let n="field"===r.diagnostics,o=(e,t,i,a,s)=>{let l=K(t.$defs)?t:i,c=(e,t=!0)=>[{path:a,message:e,generic:t}];if(void 0!==t.$ref){let i=X(t,l);return i?o(e,i,l,a,s):c(n?"uses an unresolved schema reference":`uses unresolved schema reference ${String(t.$ref)}`,!1)}let d=Array.isArray(t.anyOf)?t.anyOf.map(K).filter(e=>void 0!==e):[];if(d.length>0){let i=n?d.filter(t=>(function e(t,i,a){let r=X(i,a);if(r)return e(t,r,a);let n=Array.isArray(i.anyOf)?i.anyOf.map(K).filter(e=>void 0!==e):[];if(n.length>0)return n.some(i=>e(t,i,a));switch(i.type){case"null":return null===t;case"string":return"string"==typeof t;case"number":case"integer":return"number"==typeof t;case"boolean":return"boolean"==typeof t;case"array":return Array.isArray(t);case"object":return h(t);default:return!0}})(e,t,l)):[],r=(i.length>0?i:d).map(t=>o(e,t,l,a,new Set(s)));if(!r.some(e=>0===e.length)){let e=t["x-agentic-mermaid-validation-expectation"];return n&&0!==i.length||"string"!=typeof e?r.sort((e,t)=>e.length-t.length)[0]??c("must match an allowed shape"):c(`must be ${e}`)}}let f=Array.isArray(t.oneOf)?t.oneOf.map(K).filter(e=>void 0!==e):[];if(f.length>0&&!n){let t=f.filter(t=>0===o(e,t,l,a,new Set(s)).length);if(1!==t.length)return c(`must match exactly one allowed shape (matched ${t.length})`)}let p=n?(e,t)=>e===t:Object.is;if(Object.prototype.hasOwnProperty.call(t,"const")&&!p(e,t.const))return c(`must equal ${String(t.const)}`);if(Array.isArray(t.enum)&&!(n?t.enum.includes(e):t.enum.some(t=>Object.is(t,e))))return c(`must be one of ${t.enum.map(String).join(" | ")}`);let m=t.type;if(!(void 0===m||"null"===m&&null===e||"string"===m&&"string"==typeof e||"number"===m&&"number"==typeof e&&Number.isFinite(e)||"integer"===m&&"number"==typeof e&&Number.isFinite(e)&&Number.isInteger(e)||"boolean"===m&&"boolean"==typeof e||"array"===m&&Array.isArray(e)||"object"===m&&h(e))){let e="number"===m?"a finite number":"integer"===m?"a finite integer":"object"===m?"a plain JSON object":"array"===m?"an array":"null"===m?"null":`a ${String(m)}`;return c(`must be ${e}`)}if("number"==typeof e){if("number"==typeof t.minimum&&e<t.minimum)return c(`must be at least ${t.minimum}`);if("number"==typeof t.exclusiveMinimum&&e<=t.exclusiveMinimum)return c(`must be greater than ${t.exclusiveMinimum}`);if("number"==typeof t.maximum&&e>t.maximum)return c(`must be at most ${t.maximum}`)}if("string"==typeof e){if("number"==typeof t.minLength&&e.length<t.minLength)return c(`must contain at least ${t.minLength} character${1===t.minLength?"":"s"}`);if("string"==typeof t.pattern){let i;try{i=new RegExp(t.pattern,n?void 0:"u").test(e)}catch{return c("uses an invalid schema pattern",!1)}if(!i)return c(r.patternMismatch?.(t)??`must match ${t.pattern}`)}if("number"==typeof t.maxLength&&e.length>t.maxLength)return c(`must contain at most ${t.maxLength} characters`)}if(Array.isArray(e)&&"array"===m){if("number"==typeof t.minItems&&e.length<t.minItems)return c(`must contain at least ${t.minItems} item${1===t.minItems?"":"s"}`);if("number"==typeof t.maxItems&&e.length>t.maxItems)return c(`must contain at most ${t.maxItems} items`);if(s.has(e))return c("must be acyclic",!1);let i=K(t.items);if(i){s.add(e);try{let t=e.flatMap((e,t)=>o(e,i,l,[...a,t],s));if(t.length>0)return t}finally{s.delete(e)}}}if(h(e)&&("object"===m||void 0!==t.properties||void 0!==t.required||void 0!==t.additionalProperties)){if(s.has(e))return c("must be acyclic",!1);s.add(e);try{let i=K(t.properties)??{},r=Array.isArray(t.required)?t.required.filter(e=>"string"==typeof e):[],n=[];for(let t of r)Object.prototype.hasOwnProperty.call(e,t)||n.push({path:[...a,t],message:"is required",generic:!1});for(let[r,c]of Object.entries(e)){if(u(r)){n.push({path:[...a,r],message:"uses a forbidden prototype key",generic:!1});continue}let e=K(i[r]);if(e){n.push(...o(c,e,l,[...a,r],s));continue}if(!1===t.additionalProperties){n.push({path:[...a,r],message:"is not allowed",generic:!1});continue}let d=K(t.additionalProperties);d&&n.push(...o(c,d,l,[...a,r],s))}if(n.length>0)return n}finally{s.delete(e)}}return r.validateRuntime?.(e,t,a)??[]};return o(e,t,i,a,new Set)}var Z,ee=new Set(Object.values(O).flat()),et=new Set(["primaryTextColor","textColor","nodeTextColor","secondaryTextColor","tertiaryTextColor"]),ei=new Set([...Array.from({length:12},(e,t)=>`pie${t+1}`),"pieStrokeColor","pieOuterStrokeColor","pieSectionTextColor","pieTitleTextColor","pieLegendTextColor"]),ea=new Set(["pieSectionTextColor","pieTitleTextColor","pieLegendTextColor"]),er=new Set([...Array.from({length:8},(e,t)=>[`git${t}`,`gitBranchLabel${t}`,`gitInv${t}`]).flat(),"commitLabelColor","commitLabelBackground"]),en=new Set([...Array.from({length:8},(e,t)=>`gitBranchLabel${t}`),"commitLabelColor"]),eo=new Set(Array.from({length:12},(e,t)=>[`cScale${t}`,`cScaleLabel${t}`,`cScaleInv${t}`]).flat()),es=new Set([...Array.from({length:12},(e,t)=>`cScale${t}`),"titleColor"]),el=new Set(["clusterBkg","clusterBorder"]),ec=["backgroundColor","titleColor","xAxisLabelColor","xAxisTickColor","xAxisLineColor","xAxisTitleColor","yAxisLabelColor","yAxisTickColor","yAxisLineColor","yAxisTitleColor","legendTextColor","dataLabelColor"],ed=new Set(["xAxisTickColor","xAxisLineColor","yAxisTickColor","yAxisLineColor"]),eu=[["bg",O.bg],["surface",O.surface],["line",O.line],["accent",O.accent]];function ef(e,t=!1){let i="string"==typeof e?e:JSON.stringify(e)??String(e);return t&&i.length>256?`${i.slice(0,256)}\u2026`:i}var ep=class extends Error{code="INVALID_THEME_COLOR";key;value;constructor(e,t,i){let a=ef(t,!0);super(E({what:`themeVariables.${e}: ${JSON.stringify(a)} is not a CSS color`,expectedForm:M(i),example:`themeVariables.${e}:#f96`}).message),this.name="ThemeVariableColorError",this.key=e,this.value=a}},em=class extends Error{code="INVALID_RENDER_COLOR";field;value;constructor(e,t){let i=ef(t,!0);super(E({what:`render option "${e}": ${JSON.stringify(i)} is not a CSS color for Architecture derived paint`,expectedForm:"a drawable CSS color or var(--name)",example:`${e}:#f96`}).message),this.name="RenderOptionColorError",this.field=e,this.value=i}},eg=class extends Error{code="INVALID_CONFIG_COLOR";path;value;constructor(e,t,i,a){let r=ef(t,!0),n=ef(e,!0);super(E({what:`${n}: ${JSON.stringify(r)} is not ${"array"===a?"an array of CSS colors":"map"===a?"a map of CSS colors":"a CSS color"}`,expectedForm:a?"array"===a?"an array of drawable CSS colors":"an object mapping node labels to drawable CSS colors":M(i),example:`${n}${"array"===a?': ["#f96"]':"map"===a?': {"A":"#f96"}':": #f96"}`}).message),this.name="FamilyConfigColorError",this.path=n,this.value=r}};function eh(e){return null===e||"object"!=typeof e||Array.isArray(e)?void 0:e}function ey(e,t,i,a){let r=e[i];if(void 0!==r&&void 0===L(r,a))throw new eg(`${t}.${i}`,r,a)}function ev(e,t,i,a){let r=e[i];if(void 0!==r){if(!Array.isArray(r))throw new eg(`${t}.${i}`,r,a,"array");for(let e=0;e<r.length;e++){let n=r[e];if(void 0===L(n,a))throw new eg(`${t}.${i}[${e}]`,n,a)}}}function eb(e,t,i,a){if(!e)return;let r="pie"===t?ei:"gitgraph"===t?er:"timeline"===t?eo:"radar"===t?es:"architecture"===t?el:void 0,n=r?new Set([...ee,...r]):ee,o="architecture"===t?new Set(eu.flatMap(([t,r])=>i?.[t]!==void 0||"surface"===t&&a&&(a?.groupHeaderSurface||a?.groupSurface?.trim().toLowerCase()!=="none")||("line"===t||"accent"===t)&&a?.edgeStroke?[]:r.find(t=>{let i=e[t];return"string"==typeof i&&i.length>0})??[])):void 0;for(let i of n){if(!Object.hasOwn(e,i))continue;let r=e[i];if(void 0===r)continue;let n=ef(r),s=et.has(i)||ea.has(i)||en.has(i)||"timeline"===t&&eo.has(i)||"radar"===t&&es.has(i)||"architecture"===t&&("clusterBkg"===i&&(!a||!a.groupHeaderSurface&&a.groupSurface?.trim().toLowerCase()==="none")||o?.has(i));if(void 0===L(r,!s))throw new ep(i,n,!s)}if("radar"===t){let t=eh(e.radar);if(!t)return;for(let e of["axisColor","graticuleColor"]){let i=t[e];if(void 0===i)continue;let a="graticuleColor"===e,r=ef(i);if(void 0===L(i,a))throw new ep(`radar.${e}`,r,a)}}if("xychart"===t){let t=eh(e.xyChart);if(!t)return;for(let e of ec){if("backgroundColor"===e&&i?.bg!==void 0)continue;let a=t[e];if(void 0===a)continue;let r=ed.has(e),n=ef(a);if(void 0===L(a,r))throw new ep(`xyChart.${e}`,n,r)}let a=t.plotColorPalette;if(void 0!==a&&("string"!=typeof a||0!==a.trim().length)){let e="string"==typeof a?z(a):a;if(!Array.isArray(e))throw new ep("xyChart.plotColorPalette",JSON.stringify(a)??String(a),!1);for(let[t,i]of e.entries()){let e="string"==typeof i?i.trim():JSON.stringify(i)??String(i);if(void 0===L(i))throw new ep(`xyChart.plotColorPalette[${t}]`,e,!1)}}}if("architecture"===t&&("string"!=typeof e.mainBkg||0===e.mainBkg.length)){let t=e.secondaryColor;if(void 0!==t){let e=ef(t);if(void 0===L(t,!0))throw new ep("secondaryColor",e,!0)}}}var eS={schemaVersion:2,provenance:{version:"12.2.0"},families:[{id:"flowchart",headers:[{value:"flowchart",agenticStatus:"native"},{value:"graph",agenticStatus:"native"},{value:"flowchart-elk",agenticStatus:"unsupported"}]},{id:"swimlane",headers:[{value:"swimlane-beta",agenticStatus:"unsupported"}]},{id:"sequence",headers:[{value:"sequenceDiagram",agenticStatus:"native"}]},{id:"class",headers:[{value:"classDiagram",agenticStatus:"native"},{value:"classDiagram-v2",agenticStatus:"native"}]},{id:"state",headers:[{value:"stateDiagram",agenticStatus:"native"},{value:"stateDiagram-v2",agenticStatus:"native"}]},{id:"er",headers:[{value:"erDiagram",agenticStatus:"native"}]},{id:"journey",headers:[{value:"journey",agenticStatus:"native"}]},{id:"gantt",headers:[{value:"gantt",agenticStatus:"native"}]},{id:"pie",headers:[{value:"pie",agenticStatus:"native"}]},{id:"quadrant",headers:[{value:"quadrantChart",agenticStatus:"native"}]},{id:"requirement",headers:[{value:"requirementDiagram",agenticStatus:"native"},{value:"requirement",agenticStatus:"native"}]},{id:"gitgraph",headers:[{value:"gitGraph",agenticStatus:"native"}]},{id:"c4",headers:[{value:"C4Context",agenticStatus:"native"},{value:"C4Container",agenticStatus:"native"},{value:"C4Component",agenticStatus:"native"},{value:"C4Dynamic",agenticStatus:"native"},{value:"C4Deployment",agenticStatus:"native"}]},{id:"mindmap",headers:[{value:"mindmap",agenticStatus:"native"}]},{id:"timeline",headers:[{value:"timeline",agenticStatus:"native"}]},{id:"zenuml",headers:[{value:"zenuml",agenticStatus:"native"}]},{id:"sankey",headers:[{value:"sankey",agenticStatus:"native"},{value:"sankey-beta",agenticStatus:"native"}]},{id:"xychart",headers:[{value:"xychart",agenticStatus:"native"},{value:"xychart-beta",agenticStatus:"native"}]},{id:"block",headers:[{value:"block",agenticStatus:"native"},{value:"block-beta",agenticStatus:"native"}]},{id:"packet",headers:[{value:"packet",agenticStatus:"native"},{value:"packet-beta",agenticStatus:"native"}]},{id:"kanban",headers:[{value:"kanban",agenticStatus:"native"}]},{id:"architecture",headers:[{value:"architecture",agenticStatus:"native"},{value:"architecture-beta",agenticStatus:"native"}]},{id:"radar",headers:[{value:"radar-beta",agenticStatus:"native"}]},{id:"eventmodeling",headers:[{value:"eventmodeling",agenticStatus:"native"}]},{id:"treemap",headers:[{value:"treemap",agenticStatus:"native"},{value:"treemap-beta",agenticStatus:"native"}]},{id:"venn",headers:[{value:"venn-beta",agenticStatus:"unsupported"}]},{id:"ishikawa",headers:[{value:"ishikawa",agenticStatus:"native"},{value:"ishikawa-beta",agenticStatus:"native"}]},{id:"wardley",headers:[{value:"wardley-beta",agenticStatus:"unsupported"}]},{id:"cynefin",headers:[{value:"cynefin-beta",agenticStatus:"unsupported"}]},{id:"treeview",headers:[{value:"treeView-beta",agenticStatus:"unsupported"}]},{id:"railroad",headers:[{value:"railroad-beta",agenticStatus:"unsupported"},{value:"railroad-ebnf-beta",agenticStatus:"unsupported"},{value:"railroad-abnf-beta",agenticStatus:"unsupported"},{value:"railroad-peg-beta",agenticStatus:"unsupported"}]},{id:"agentflow",headers:[{value:"agentflow-beta",agenticStatus:"unsupported"}]},{id:"usecase",headers:[{value:"usecase-beta",agenticStatus:"unsupported"}]}]};function e$(e,t="strict"){let i=H(e),a=l(i,t);if(a)return{kind:"registered",family:a};let r=function(e,t=eS){let i=(e.split(";")[0]??"").trim().toLowerCase();return t.families.flatMap(e=>e.headers.map(t=>({family:e,header:t}))).sort((e,t)=>t.header.value.length-e.header.value.length||_(e.family.id,t.family.id)).find(e=>(function(e,t){let i=t.trim().toLowerCase();if(e===i)return!0;if(!e.startsWith(i))return!1;let a=e[i.length];return void 0!==a&&/[\s:]/.test(a)})(i,e.header.value))??null}(i);return r?{kind:"upstream",match:r}:{kind:"unknown",header:e}}function ew(e,t,i,a){let r=F(e),n=-1,s=-1,l=e.length,d=Math.max(0,Math.min(e.length,i??0)),u=d;for(;u<=e.length;){let i=/\r\n?|\n/g;i.lastIndex=u;let a=i.exec(e),r=a?.index??-1,o=r<0?e.length:r,c=e.slice(u,o).replace(/\r$/,""),d=c.trim(),f=d.startsWith(t)?d.slice(t.length):"",p=/^\s*;/.test(f);if(d===t||p||/^\s/.test(f)&&G(d)!==d){if(s=(n=u+c.indexOf(t))+t.length,d===t)l=a?a.index+a[0].length:e.length;else for(l=p?e.indexOf(";",s)+1:s;l<o&&/[ \t]/.test(e[l]);)l++;break}if(r<0)break;u=a.index+a[0].length}if(n<0){let i=e.indexOf(t,d);n=i<0?d:i,s=Math.min(e.length,n+t.length);let a=e.indexOf(`
2
+ `,s);for(l=a<0?e.length:a+1,u=n;u>0&&10!==e.charCodeAt(u-1);)u--}return Object.freeze({source:A(r,0,e.length),...(i??u)>0?{wrapper:A(r,0,i??u)}:{},...function(e,t,i,a=F(e),r){let n=V(e),s=n?.source.length??0,l=function(e,t,i=F(e),a=U(e),r){let n=[...e.slice(t).matchAll(/[^\r\n]*(?:\r\n?|\n|$)/g)],o=n.map(e=>e[0]),s=e.slice(t),l=c(Y(a),w(s).split(/\r\n?|\n/),r),d=$(s,l),u=s.split("");for(let e of d.directives)for(let t=e.start;t<e.end;t++)"\r"!==u[t]&&u[t]!==`
3
+ `&&(u[t]=" ");let f=u.join("").split(/\r\n?|\n/),p=n.map(e=>t+e.index),m=[],g=c(Y(a),f,r);for(let e=0;e<f.length;e++){let t=I(f,e);if(void 0===t)break;if(null===t){e=T(g,e,f.length);continue}let a=p[e],r;r="block"===t.form?p[t.endIndex]+f[t.endIndex].indexOf("}")+1:a+o[e].length,m.push(A(i,a,r)),e=t.endIndex}return Object.freeze(m)}(e,s,a,i,r),d=e.split("");for(let t of l)if(/^\s*%% agentic-mermaid (?:accTitle|accDescr):/.test(e.slice(t.start.offset,t.end.offset)))for(let e=t.start.offset;e<t.end.offset;e++)"\r"!==d[e]&&d[e]!==`
4
+ `&&(d[e]=" ");let u=(function(e,t,i=0,a=F(e)){let r=[],n=new RegExp(t.source,t.flags.includes("g")?t.flags:`${t.flags}g`),o;for(;null!==(o=n.exec(e));)r.push(A(a,i+o.index,i+o.index+o[0].length)),0===o[0].length&&n.lastIndex++;return Object.freeze(r)})(d.join("").slice(s),RegExp(J.source,"gm"),s,a).filter(t=>o(e.slice(t.start.offset,t.end.offset)));return{...n?{frontmatter:A(a,0,s)}:{},...u.length>0?{initDirectives:u}:{},...l.length>0?{accessibilityDirectives:Object.freeze(l)}:{}}}(e,0,t,r,a),header:A(r,n,s),body:A(r,l,e.length)})}function ex(e,t="strict"){let i=e$(e,t);return"registered"===i.kind?{kind:"registered",familyId:i.family.id}:i}var eC=class extends Error{name="MermaidFamilyDetectionError";code;line;preservation;help;constructor(e){super(e.message),this.code=e.code,this.line=e.line,this.preservation=e.preservation,this.help=e.help}toJSON(){return{code:this.code,message:this.message,line:this.line,preservation:this.preservation,help:this.help}}};function eO(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return;let i=e[t];return i&&"object"==typeof i&&!Array.isArray(i)?i:void 0}function ej(e,t,i){if(!i)return[];let a=t&&"object"==typeof t&&!Array.isArray(t)?t:void 0,r=eO(t,i.section);if(!r)return a&&i.section in a?[{code:"INEFFECTIVE_CONFIG",field:i.section,message:`${e} config section "${i.section}" must be an object; the invalid value has no effect.`}]:[];let n=new Set(i.keys);return Object.keys(r).filter(e=>!n.has(e)).sort().map(t=>({code:"INEFFECTIVE_CONFIG",field:`${i.section}.${t}`,message:`${e} config field "${t}" is unknown and has no effect; check the spelling or remove it.`}))}function ek(e,{root:t,config:i},a={}){let r=ej(e,t,i),n=eO(t,i.section);if(n){for(let[e,t]of Object.entries(a))if(e in n&&!t.valid(n[e])){let a=`${i.section}.${e}`;r.push({code:"INEFFECTIVE_CONFIG",field:a,message:`${a} must be ${t.expected}; the invalid value has no effect.`})}}return[...r,...function(e,t,i,a={}){if(!i)return[];let r=eO(t,i.section);if(!r)return[];let n=new Set(i.noopKeys??[]);return Object.keys(r).filter(e=>{if(!n.has(e))return!1;let t=a[e];return!t||t.valid(r[e])}).sort().map(t=>({code:"INEFFECTIVE_CONFIG",field:`${i.section}.${t}`,message:`${e} config field "${t}" is accepted for ${e.includes(":")?"compatibility":"Mermaid compatibility"} but has no effect on this renderer.`}))}(e,t,i,a)]}Object.freeze(["library","cli","codeMode","localMcp","hostedMcp","editor","website"]);var eE=["onConfigDiagnostic"],eF=(e,t)=>({type:"string",...void 0===t?{}:{default:t}}),eA=(e,t,i={})=>({type:"number",...void 0===t?{}:{default:t},...i}),eI=(e,t)=>eA(void 0,t,{minimum:0}),eT=(e,t)=>eA(void 0,t,{exclusiveMinimum:0}),ez=e=>eA(void 0,void 0,{minimum:1,maximum:1e3}),eD=(e,t)=>({type:"boolean",...void 0===t?{}:{default:t}}),eL=(e,t)=>({...eF(void 0,t),"x-agentic-mermaid-runtime-validator":"safeCssPaint"}),eM=(e,t)=>({...eF(void 0,t),"x-agentic-mermaid-runtime-validator":"safeCssFontFamily"}),eR=(e,t,i=[])=>({type:"object",additionalProperties:!1,properties:e,...0===i.length?{}:{required:i}}),eq={type:"string",enum:["uppercase","lowercase","capitalize"]},eN={...eR({groupHeaderHeight:eT(void 0),groupFontSize:eT(void 0),groupFontWeight:ez(void 0),groupLetterSpacing:eA(void 0),groupFont:eM(void 0),groupTextTransform:{...eq},groupPaddingX:eI(void 0),groupPaddingY:eI(void 0),groupLabelPaddingX:eI(void 0),groupCornerRadius:eI(void 0),groupLineWidth:eI(void 0),groupText:eL(void 0),serviceFontSize:eT(void 0),serviceFontWeight:ez(void 0),serviceLetterSpacing:eA(void 0),serviceTextTransform:{...eq},servicePaddingX:eI(void 0),servicePaddingY:eI(void 0),serviceCornerRadius:eI(void 0),serviceLineWidth:eI(void 0),serviceText:eL(void 0),edgeFontSize:eT(void 0),edgeFontWeight:ez(void 0),edgeLetterSpacing:eA(void 0),edgeTextTransform:{...eq},edgeLineWidth:eI(void 0),edgeBendRadius:eI(void 0),edgeStroke:eL(void 0),edgeText:eL(void 0),iconSize:eT(void 0),serviceIconSize:eT(void 0),junctionOuterRadius:eT(void 0),junctionInnerRadius:eI(void 0),groupSurface:eL(void 0),groupHeaderSurface:eL(void 0),groupBorder:eL(void 0),serviceSurface:eL(void 0),serviceBorder:eL(void 0)},void 0),"x-agentic-mermaid-runtime-validator":"architectureVisual"},eP={anyOf:[{type:"string"},(()=>{let t=e(),i=t.$defs,a=e=>{if(Array.isArray(e))return e.map(a);if(null===e||"object"!=typeof e)return e;let t=e.$ref;if("string"==typeof t&&t.startsWith("#/$defs/")){let e=i?.[t.slice(8)];if(!e)throw Error(`StyleSpec schema has unresolved local reference ${t}`);return a(e)}return Object.fromEntries(Object.entries(e).filter(([e])=>"$defs"!==e).map(([e,t])=>[e,a(t)]))},{$schema:r,$id:n,title:o,...s}=t;return a(s)})()],"x-agentic-mermaid-validation-expectation":"a registered Style name or StyleSpec"},eB={anyOf:[{type:"null"},{type:"string"},{type:"number"},{type:"boolean"},{type:"array",items:{$ref:"#/$defs/jsonValue"}},{type:"object",additionalProperties:{$ref:"#/$defs/jsonValue"}}],"x-agentic-mermaid-validation-expectation":"a finite, acyclic JSON value without prototype keys"},e_=["flowchart","state","class","er","architecture","c4"],eW=y({layoutHints:{validationExpectation:"contain integer ranks, node groups and edge IDs",schema:{type:"object",additionalProperties:!1,properties:{ranks:{type:"object",additionalProperties:{type:"integer",minimum:0,maximum:1e4}},adjacent:{type:"array",items:{type:"array",minItems:2,items:{type:"string"}}},shortEdges:{type:"array",items:{type:"string"}}}},applicableBuiltinFamilies:["flowchart","state"]},graphLayout:{validationExpectation:"be a graph layout selection object",schema:{anyOf:[eR({backend:{type:"string",const:"elk"},fallback:{type:"string",enum:["none"]}},void 0,["backend"]),eR({backend:{type:"string",const:"agentic"},fallback:{type:"string",enum:["none","elk"]}},void 0,["backend"])]},applicableBuiltinFamilies:["flowchart","state","architecture","class","er","requirement"]},layoutSafety:{validationExpectation:"be report or strict",schema:{type:"string",enum:["report","strict"],default:"report"}},bg:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0,"#FFFFFF")},fg:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0,"#27272A")},line:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},accent:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},muted:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},surface:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},border:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},font:{validationExpectation:"be a safe non-fetching CSS font family or stack",schema:eM(void 0,"Inter")},style:{validationExpectation:"be a registered Style name or StyleSpec, or an array of them",schema:{anyOf:[eP,{type:"array",items:eP}],"x-agentic-mermaid-runtime-validator":"styleInput"}},padding:{validationExpectation:"be a non-negative finite number",schema:eI(void 0,40),applicableBuiltinFamilies:["flowchart","state","architecture","c4"]},nodeSpacing:{validationExpectation:"be a non-negative finite number",schema:eI(void 0,24),applicableBuiltinFamilies:e_},layerSpacing:{validationExpectation:"be a non-negative finite number",schema:eI(void 0,40),applicableBuiltinFamilies:e_},wrappingWidth:{validationExpectation:"be a positive finite number",schema:eT(void 0),applicableBuiltinFamilies:["flowchart"]},componentSpacing:{validationExpectation:"be a non-negative finite number",schema:eI(void 0),applicableBuiltinFamilies:[]},transparent:{validationExpectation:"be a boolean",schema:eD(void 0,!1)},interactive:{validationExpectation:"be a boolean",schema:eD(void 0,!1),applicableBuiltinFamilies:["xychart","pie","quadrant"]},shadow:{validationExpectation:"be a boolean",schema:eD(void 0,!1),applicableBuiltinFamilies:["flowchart","state","sequence","timeline","class","er","journey","xychart","pie","quadrant","gantt","mindmap","gitgraph","sankey"]},class:{validationExpectation:"be a class options object",schema:eR({hierarchicalNamespaces:eD(void 0,!0)},void 0),applicableBuiltinFamilies:["class"]},kanban:{validationExpectation:"be a kanban options object",schema:eR({maxWidth:eT(void 0)},void 0),applicableBuiltinFamilies:["kanban"]},pie:{validationExpectation:"be a pie options object",schema:eR({maxWidth:eT(void 0)},void 0),applicableBuiltinFamilies:["pie"]},radar:{validationExpectation:"be a radar options object",schema:eR({maxWidth:eT(void 0)},void 0),applicableBuiltinFamilies:["radar"]},architecture:{validationExpectation:"be an architecture options object",schema:eR({visual:eN},void 0),applicableBuiltinFamilies:["architecture"]},timeline:{validationExpectation:"be a timeline options object",schema:eR({maxWidth:eT(void 0)},void 0),applicableBuiltinFamilies:["timeline"]},journey:{validationExpectation:"be a journey options object",schema:eR({experienceCurve:eD(void 0,!0)},void 0),applicableBuiltinFamilies:["journey"]},gantt:{validationExpectation:"be a Gantt options object",schema:eR({dependencyArrows:eD(void 0,!1),criticalPath:eD(void 0,!1)},void 0),applicableBuiltinFamilies:["gantt"]},mermaidConfig:{validationExpectation:"be a plain JSON object",schema:{type:"object",additionalProperties:{$ref:"#/$defs/jsonValue"}}},embedFontImport:{validationExpectation:"be a boolean",schema:eD(void 0,!1)},compact:{validationExpectation:"be a boolean",schema:eD(void 0,!1)},idPrefix:{validationExpectation:"be non-empty and contain only ASCII letters, digits, underscore, hyphen, dot, and colon",schema:{...eF(void 0),pattern:"^[A-Za-z0-9_.:-]+$"}},security:{validationExpectation:"be default or strict",schema:{type:"string",enum:["default","strict"],default:"default"}},ganttToday:{validationExpectation:"be a string",schema:eF(void 0),applicableBuiltinFamilies:["gantt"]},seed:{validationExpectation:"be a finite number",schema:eA(void 0,0)}}),eV=Object.freeze(Object.keys(eW)),eJ=Object.freeze(eV.filter(e=>"applicableBuiltinFamilies"in eW[e]));function eG(e){let t=e=>Array.isArray(e)?e.map(t):h(e)?Object.fromEntries(Object.entries(e).map(([e,i])=>[e,t(i)])):e;return t(e)}function eH(e){let t=String(e[0]??"");for(let i of e.slice(1))t+="number"==typeof i?`[${i}]`:`.${i}`;return`render option "${t}"`}function eU(e){return m(f(e).map(e=>e.path.length>0?`${eH(e.path)} ${e.message}`:`render options ${e.message}`),"render options")}function eY(e,t,i){let r=t["x-agentic-mermaid-runtime-validator"];if("safeCssColor"===r&&void 0===D(e))return[{path:i,message:"must be a safe, non-fetching CSS color",generic:!1}];if("safeCssPaint"===r&&void 0===R(e))return[{path:i,message:"must be a safe, non-fetching CSS paint",generic:!1}];if("safeCssFontFamily"===r&&void 0===q(e))return[{path:i,message:"must be a safe, non-fetching CSS font family or stack",generic:!1}];if("styleInput"===r)try{a(e)}catch(e){return[{path:i,message:`is invalid: ${e instanceof Error?e.message:String(e)}`,generic:!1}]}if("architectureVisual"===r&&h(e)){let t=e.junctionOuterRadius,a=e.junctionInnerRadius;if("number"==typeof t&&"number"==typeof a&&a>t)return[{path:[...i,"junctionInnerRadius"],message:"must not exceed junctionOuterRadius",generic:!1}]}return[]}function eK(e){if(!h(e))return["render options must be a plain JSON object"];let t=eU(e);if(t.length>0)return t;let i=[],a=Z??=y(function(){let e={};for(let t of eV){let i=eW[t],a="terminalNote"in i?i.terminalNote:void 0,r="applicableBuiltinFamilies"in i?i.applicableBuiltinFamilies:void 0;e[t]={...eG(i.schema),"x-agentic-mermaid-terminal":i.terminal,...void 0===a?{}:{"x-agentic-mermaid-terminal-note":a},...void 0===r?{}:{"x-agentic-mermaid-applicable-builtin-families":[...r]}}}return{type:"object",additionalProperties:!1,properties:e,$defs:{jsonValue:eG(eB)}}}());for(let[t,r]of Object.entries(e)){if(!Object.hasOwn(eW,t)){i.push(`unknown render option "${t}"`);continue}if(null===r){i.push(`render option "${t}" must be omitted instead of null`);continue}let e=eW[t],n=Q(r,e.schema,a,[t],{diagnostics:"field",validateRuntime:eY});n.length>0&&n.every(e=>e.generic&&1===e.path.length)?i.push(`render option "${t}" must ${e.validationExpectation}`):i.push(...n.map(e=>`${eH(e.path)} ${e.message}`))}return m(i,"render options")}var eX=class extends Error{constructor(e,t){super(`Parsed Mermaid family "${e}" serialized as family "${t}"`),this.expectedFamilyId=e,this.detectedFamilyId=t}expectedFamilyId;detectedFamilyId;name="ParsedDiagramFamilyMismatchError";code="PARSED_DIAGRAM_FAMILY_MISMATCH"},eQ=class extends Error{name="RenderCapabilityError";code="UNSATISFIED_RENDER_CAPABILITIES";output;family;decision;constructor(e,t,i,a){super(e),this.output=t,this.family=Object.freeze({id:i.identity.id,version:i.identity.version}),this.decision=a}toJSON(){return{name:this.name,code:this.code,message:this.message,output:this.output,family:this.family,decision:this.decision}}},eZ=class extends TypeError{constructor(e){super(e),this.name="RenderConfigError"}},e0=new WeakMap;function e1(e){let t=e0.get(e);if(!t)throw Error("Resolved render request has no internal execution plan");return t}function e2(e,t=[]){let i,a=e0.get(e),r=a?.executionDecision,n=a&&Object.hasOwn(a,"textMeasurement")?a.textMeasurement:void 0;return Object.freeze({version:e.version,output:e.output,sharedRequestDigest:e.sharedRequestDigest,requestDigest:e.requestDigest,appearanceDigest:e.appearance.digest,capabilityDecision:e.capabilityDecision,diagnostics:(i=new Set,Object.freeze([...Object.hasOwn(e,"resolutionDiagnostics")?e.resolutionDiagnostics:[],...t,...N(e).flatMap(e=>"agentic"===e.requested&&"elk"===e.selected?[{code:"GRAPH_LAYOUT_FALLBACK",feature:"graph-layout",message:`Agentic graph layout used the requested ELK fallback: ${e.reason??"candidate rejected"}`}]:[])].flatMap(e=>{let t=e7(e);return i.has(t)?[]:(i.add(t),[Object.freeze({...e})])}))),...r?{executionDecision:r}:{},...n?{textMeasurement:n.identity}:{},...N(e).length?{layoutDecisions:N(e)}:{}})}function e6(e){let t=e4.get(e);if(t)return t;let i=e0.get(e)?.backend?.identity.id??("layout"===e.output?`backend:${e.appearance.inferredBackend}`:void 0),a=Object.freeze({renderOptions:e.renderOptions,...e.appearance.face?{styleFace:e.appearance.face}:{},...i?{paintBackendId:i}:{},...e.familyConfig?{familyConfig:e.familyConfig}:{},...e.appearance.family?{familyAppearance:e.appearance.family}:{}});return e0.has(e)&&e4.set(e,a),a}var e4=new WeakMap;function e3(e){let t={};for(let i of eV){let a=e[i];void 0!==a&&(t[i]=a)}return t}var e5=new Set(["padding","nodeSpacing","layerSpacing","wrappingWidth","class"]);function e8(e,t="$",i=0,a=new Set,r={nodes:0,chars:0,opaque:!1,admission:void 0}){let n=r.admission;if(n?.valid)switch((++n.nodes>d.maxNodes||i>d.maxDepth)&&(n.valid=!1),typeof e){case"number":e-e!=0&&(n.valid=!1);break;case"undefined":case"bigint":case"symbol":case"function":n.valid=!1}if("string"==typeof e){if(r.chars+=e.length,r.chars>2e6)throw TypeError(`data exceeds the 2000000-character aggregate limit at ${t}`);return e}if(null===e||"object"!=typeof e)return e;if(i>64)throw TypeError(`data exceeds maximum depth 64 at ${t}`);if(++r.nodes>1e5)throw TypeError(`data exceeds the 100000-node aggregate limit at ${t}`);if(a.has(e))throw TypeError(`data must be acyclic at ${t}`);if(Array.isArray(e)){if(e.length>1e5)throw TypeError(`data array exceeds the 100000-entry limit at ${t}`);a.add(e);try{let o=[],s=Object.create(null);s.enumerable=s.configurable=s.writable=!0;for(let n=0;n<e.length;n++){if(n>=1e5)throw TypeError(`data array exceeds the 100000-entry limit at ${t}`);if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError(`data must not contain a sparse array at ${t}[${n}]`);s.value=e8(e[n],`${t}[${n}]`,i+1,a,r),Object.defineProperty(o,n,s)}return n&&o.length>d.maxItemsPerContainer&&(n.valid=!1),tr(o,!r.opaque)}finally{a.delete(e)}}if(!h(e))return r.opaque=!0,n&&(n.valid=!1),e;a.add(e);try{let o={},s=0;for(let[l,c]of Object.entries(e)){if(r.chars+=l.length,r.chars>2e6)throw TypeError(`data exceeds the 2000000-character aggregate limit at ${t}.${l}`);if(void 0!==c){n&&(++s>d.maxItemsPerContainer||u(l))&&(n.valid=!1);let e=e8(c,`${t}.${l}`,i+1,a,r);l in o?Object.defineProperty(o,l,{value:e,enumerable:!0}):o[l]=e}}return tr(o,!r.opaque)}finally{a.delete(e)}}function e9(e,t,i,a=!1){let r;if(void 0===t)return;if(!h(t))throw TypeError(`Family "${e.id}" returned ${i} data that is not a plain object`);if(a)return t;try{r=e8(t)}catch(t){throw TypeError(`Family "${e.id}" returned invalid ${i} data: ${t instanceof Error?t.message:String(t)}`)}let n={...eB,$defs:{jsonValue:eB}},o=Q(r,n,n,[`family${"config"===i?"Config":"Appearance"}`],{diagnostics:"field",validateRuntime:eY});if(o.length>0){let t=o.map(e=>`${e.path.join(".")} ${e.message}`).join("; ");throw TypeError(`Family "${e.id}" returned invalid ${i} data: ${t}`)}return tn(r)}function e7(e){if(null===e||"object"!=typeof e)return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(e7).join(",")}]`;let t="{",i="";for(let a of Object.keys(e).sort()){let r=e[a];void 0!==r&&(t+=`${i}${JSON.stringify(a)}:${e7(r)}`,i=",")}return`${t}}`}function te(e,t){try{let t,i;return t=tt(e),()=>(void 0===i&&(i=ti(e7(t)),t=void 0),i)}catch(e){throw e instanceof TypeError&&/aggregate limit/.test(e.message)?new x("sourceCharacters",t.originalText.length+t.text.length,!0):e}}function tt(e){let t,i={nodes:0,valid:2e6<=d.maxAggregateTextCharacters&&6e6<=d.maxAggregateTextBytes};try{t=to(e,"render contract digest input",i)}catch(e){throw TypeError((e instanceof Error?e.message:String(e)).replace("data exceeds maximum depth","data exceeds maximum nesting depth"))}return i.valid||p(t,"render contract digest input",{allowUndefinedObjectProperties:!0}),t}function ti(e){let t=-0x340d631c,i=-0x7bdddcdb;for(let a=0;a<e.length;a++){let r=i^e.charCodeAt(a),n=(r>>>16)*435+((65535&r)*435>>>16)>>>16;i=Math.imul(r,435),t=Math.imul(t,435)+n+(r<<8)|0}return`fnv1a64:${(t>>>0).toString(16).padStart(8,"0")}${(i>>>0).toString(16).padStart(8,"0")}`}var ta=new WeakSet;function tr(e,t=!0){return Object.freeze(e),t&&ta.add(e),e}function tn(e,t="$",i,a){let r;if(null===e||"object"!=typeof e||ta.has(e))return e;if(i??=new Set,a??=new WeakMap,i.has(e))throw TypeError(`render request contains a cycle at ${t}`);let n=a.get(e);if(n)return n;let o=Object.getPrototypeOf(e);if(!Array.isArray(e)&&o!==Object.prototype&&null!==o)throw TypeError(`render request contains a non-JSON object at ${t}`);if(i.add(e),Array.isArray(e)){let n=e.length,o=Array(n);for(let r=0;r<n;r++)r in e&&(o[r]=tn(e[r],`${t}[${r}]`,i,a));r=o}else{let n={};for(let[r,o]of Object.entries(e)){let e=tn(o,`${t}.${r}`,i,a);r in n?Object.defineProperty(n,r,{value:e,enumerable:!0}):n[r]=e}r=n}return i.delete(e),a.set(e,r),tr(r)}function to(e,t,i){try{return tn(i?e8(e,"$",0,new Set,{nodes:0,chars:0,opaque:!1,admission:i}):e8(e))}catch(e){throw TypeError(`${t} could not be snapshotted: ${e instanceof Error?e.message:String(e)}`)}}var ts=Object.freeze({serializable:tn({})}),tl=new WeakMap,tc=new WeakMap;function td(e){if(tl.has(e))return e;let t=tf(e),i=tn(r(t.serializable.style)),a=eK(t.serializable);if(a.length)throw new eZ(`Invalid RenderOptions: ${a.join("; ")}`);let n=tp(t.serializable.style),o=Object.freeze({...t.serializable,...t.onConfigDiagnostic?{onConfigDiagnostic:t.onConfigDiagnostic}:{}});return tl.set(o,Object.freeze({...t,capturedStyle:i})),tc.set(t.serializable,n),o}function tu(e){let t=tl.get(e)?.capturedStyle;if(!t)throw TypeError("Render options have not been captured");return t.style?i(t.style):"default"}function tf(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new eZ("Invalid RenderOptions: render options must be an object");let t=tl.get(e);if(t)return t;let i=[],a;for(let[t,r]of Object.entries(e))"onConfigDiagnostic"===t?a=r:void 0!==r&&i.push([t,r]);if(void 0!==a&&"function"!=typeof a)throw new eZ("Invalid RenderOptions: onConfigDiagnostic must be a function");if(0===i.length&&void 0===a)return ts;let r=Object.fromEntries(i),n;try{n=to(r,"RenderOptions")}catch(t){let e=(t instanceof Error?t.message:String(t)).replace("data exceeds maximum depth","render option tree exceeds maximum nesting depth");throw new eZ(`Invalid RenderOptions: ${e}`)}return Object.freeze({serializable:n,...void 0===a?{}:{onConfigDiagnostic:a}})}function tp(e){return tn((void 0===e?[]:Array.isArray(e)?e:[e]).flatMap(e=>{if("string"!=typeof e||"crisp"===e)return[];let i=t(e);return i?[{input:e,canonicalId:i.canonicalId}]:[]}))}var tm="1.0.0";function tg(e,t,i=tm){return t?[{id:e,version:i}]:[]}function th(e,t=`^${tm}`){return{id:e,range:t,level:"required"}}function ty(e){return`scene-primitive:${e.primitive}/${e.feature}/${e.operation}`}var tv=new WeakMap;function tb(e,t){let i=tv.get(e.backend);return i||(i=new Set(b.filter(t=>e.backend.capabilities.some(e=>e.primitive===t.primitive&&e.feature===t.feature&&e.operation===t.operation&&"unsupported"!==e.realization))),tv.set(e.backend,i)),i.has(t)}var tS=new Map;function t$(e){return!e.id.startsWith("output:")&&!e.id.startsWith("operation:")&&!e.id.startsWith("backend:")&&!e.id.startsWith("scene-primitive:")&&"core:scene"!==e.id}function tw(e,t={},a="svg",o,l={}){let c=tf(t),d=c.serializable,u=eU(d);if(u.length>0)throw new eZ(`Invalid RenderOptions: ${u.join("; ")}`);let f=c.capturedStyle??r(d.style),p=f.style,m=tn(f.face),y=c.capturedStyle?[]:eK(d);if(y.length>0)throw new eZ(`Invalid RenderOptions: ${y.join("; ")}`);let $,w=tn(g(e,d.mermaidConfig??{},e=>l.familyDescriptor?l.familyDescriptor:"registered"===($=e$(e)).kind?$.family:null)),x=l.familyDescriptor??function(e,t){if("registered"===t.kind)return t.family;throw new eC(function(e,t,i,a,r){let n=eS.provenance.version;if("unknown"===e.kind)return{code:"UNKNOWN_HEADER",message:`Unrecognized Mermaid header: "${e.header}"`,line:1,preservation:{version:1,classification:"unknown",source:t,header:e.header,mermaidVersion:n,spans:ew(t,a??e.header,i,null)},help:"Check for a Mermaid upgrade or register a namespaced family descriptor; the source was preserved unchanged."};let{family:o,header:s}=e.match,l="inventory-only"===s.agenticStatus?"inventory-only":"unsupported",c="native"===s.agenticStatus;return{code:c?"FAMILY_DESCRIPTOR_MISMATCH":"UNSUPPORTED_FAMILY",message:c?`Mermaid ${n} header "${s.value}" is marked native but no installed family descriptor claimed it`:`Mermaid ${n} family "${o.id}" is ${l} in Agentic Mermaid`,line:1,preservation:{version:1,classification:l,source:t,header:s.value,upstreamFamilyId:o.id,mermaidVersion:n,spans:ew(t,a??s.value,i,null)},help:c?"Report a descriptor/manifest mismatch; the source was preserved unchanged.":`Install a family descriptor for "${s.value}" or use a currently native family; the source was preserved unchanged.`}}("unknown"===t.kind?{...t,header:e.lines[0]??e.firstLine}:t,e.originalText,e.authoredWrapperLength??e.wrapperSource?.length??0,e.authoredHeader??e.lines[0]??e.firstLine,0))}(w,$);if(void 0!==l.expectedFamilyId&&x.id!==l.expectedFamilyId)throw new eX(l.expectedFamilyId,x.id);C("sourceCharacters",w.originalText.length+w.text.length);let E=v(w.config.themeCSS,d.security??"default");if(E)throw new eZ(E);"architecture"!==x.id&&eb(w.config.themeVariables,x.id,d),function(e,t){let i=eh(e[t]);if(i){if("timeline"===t)ev(i,"timeline","sectionFills",!1),ev(i,"timeline","sectionColours",!1),(void 0===i.sectionColours||Array.isArray(i.sectionColours)&&0===i.sectionColours.length)&&ev(i,"timeline","sectionColors",!1);else if("journey"===t)ev(i,"journey","actorColours",!0),ev(i,"journey","sectionFills",!1),ev(i,"journey","sectionColours",!1),ey(i,"journey","titleColor",!1);else if("requirement"===t)ey(i,"requirement","rect_fill",!0),ey(i,"requirement","rect_border_color",!0),ey(i,"requirement","text_color",!1);else if("sankey"===t){let e=i.linkColor;if("source"!==e&&"target"!==e&&"gradient"!==e&&ey(i,"sankey","linkColor",!0),void 0===i.nodeColors)return;let t=eh(i.nodeColors);if(!t)throw new eg("sankey.nodeColors",i.nodeColors,!1,"map");let a=void 0!==e&&"gradient"!==e;for(let[e,i]of Object.entries(t))if(void 0===L(i,a))throw new eg(/^[\w-]+$/.test(e)?`sankey.nodeColors.${e}`:`sankey.nodeColors[${JSON.stringify(e)}]`,i,a)}}}(w.frontmatter,x.id);let F=Object.freeze(eV.filter(e=>void 0!==d[e])),A=function(e,t){if(e.id.startsWith("family:")){let i=new Set(e.applicableRenderOptions??[]);return Object.freeze(t.flatMap(t=>!eJ.includes(t)||i.has(t)?[]:[Object.freeze({code:"RENDER_OPTION_NOT_APPLICABLE",feature:`render-option:${t}`,message:`Render option "${t}" does not apply to extension family "${e.id}". Its FamilyDescriptor does not list the field in applicableRenderOptions.`})]))}let i=e.id;return Object.freeze(t.flatMap(e=>{let t=eW[e];if(!("applicableBuiltinFamilies"in t))return[];let a=t.applicableBuiltinFamilies;if(a.includes(i))return[];let r=0===a.length?"No built-in family currently consumes this option.":`Applicable built-in families: ${a.join(", ")}.`;return[Object.freeze({code:"RENDER_OPTION_NOT_APPLICABLE",feature:`render-option:${e}`,message:`Render option "${e}" does not apply to built-in Mermaid family "${i}". ${r}`})]}))}(x,F),{appearance:I,renderOptions:T,familyConfig:z}=function(e){let{family:t,source:a,options:r,style:o,styleFace:s}=e,l="strict"===r.security?{...r,embedFontImport:!1}:{...r};r.graphLayout&&(l.graphLayout={...r.graphLayout,fallback:r.graphLayout.fallback??"none"});let c=void 0!==o&&n(o);c&&(l=function(e,t,i){let a={...e},r=e=>O[e].some(e=>i?.[e]!==void 0);for(let e of["bg","fg","line","accent","muted","surface","border"])void 0!==a[e]||r(e)||t.colors?.[e]===void 0||(a[e]=t.colors[e]);return void 0===a.font&&void 0!==t.font&&(a.font=t.font),a}(l,o,a.config.themeVariables));let d=r.font??a.config.fontFamily??k(a.config.themeVariables,"fontFamily")??l.font??"Inter",u=q(d)??d,{style:f,...p}=l,m={...p,...o?{style:o}:{},font:u,mermaidConfig:a.config},g={...j(m,a.config,u)},y=function(e,t,i,a,r,n){if(!e.normalizeRequest)return{renderOptions:i,colors:a};let o=Object.freeze({source:tn(t),renderOptions:tn(i),colors:tn(a),...r?{style:tn(r)}:{},...n?{styleFace:tn(n)}:{}}),s=e.normalizeRequest(o);if(void 0===s)return{renderOptions:i,colors:a};let l,c={nodes:0,valid:!0};try{l=to(s,`Family "${e.id}" request normalizer result`,c)}catch(t){throw TypeError(`Family "${e.id}" request normalizer returned invalid data: ${t instanceof Error?t.message:String(t)}`)}if(!h(l))throw TypeError(`Family "${e.id}" request normalizer must return a plain object`);let d=Object.keys(l).find(e=>!["renderOptions","familyConfig","appearance"].includes(e));if(d)throw TypeError(`Family "${e.id}" request normalizer returned unknown field "${d}"`);let u=l,f=u.appearance;if(void 0!==f){if(!h(f))throw TypeError(`Family "${e.id}" request normalizer returned a non-object appearance`);let t=Object.keys(f).find(e=>!["colors","family"].includes(e));if(t)throw TypeError(`Family "${e.id}" request normalizer returned unknown appearance field "${t}"`)}let p=u.renderOptions??i;if(void 0!==p.onConfigDiagnostic)throw TypeError(`Family "${e.id}" request normalizer may not return executable option "onConfigDiagnostic"`);let m=eK(Object.fromEntries(Object.entries(p).filter(([e,t])=>void 0!==t&&!eE.includes(e))));if(m.length>0)throw new eZ(`Family "${e.id}" returned invalid normalized RenderOptions: ${m.join("; ")}`);let g=e3(i),y=e3(p);for(let t of eV)if(!e5.has(t)&&e7(g[t])!==e7(y[t]))throw TypeError(`Family "${e.id}" request normalizer may not rewrite non-geometry option "${t}"`);let v=f?.colors?function(e,t,i){let a=new Set(["bg","fg","line","accent","muted","surface","border","shadow","font","embedFontImport"]),r=Object.keys(t).find(e=>!a.has(e));if(r)throw TypeError(`Family "${e.id}" returned unknown appearance color field "${r}"`);let n={...i};for(let i of["bg","fg","line","accent","muted","surface","border"]){let a=t[i];if(void 0===a)continue;let r=R(a);if(void 0===r)throw new eZ(`Family "${e.id}" returned an unsafe ${i} paint`);n[i]=r}if(void 0!==t.font){let a=q(t.font);if(void 0===a)throw new eZ(`Family "${e.id}" returned an unsafe font family`);if(a!==i.font)throw TypeError(`Family "${e.id}" request normalizer may not rewrite appearance field "font"`)}if(void 0!==t.shadow){if("boolean"!=typeof t.shadow)throw TypeError(`Family "${e.id}" returned a non-boolean shadow value`);if(t.shadow!==i.shadow)throw TypeError(`Family "${e.id}" request normalizer may not rewrite appearance field "shadow"`)}if(void 0!==t.embedFontImport){if("boolean"!=typeof t.embedFontImport)throw TypeError(`Family "${e.id}" returned a non-boolean embedFontImport value`);if(t.embedFontImport!==i.embedFontImport)throw TypeError(`Family "${e.id}" request normalizer may not rewrite appearance field "embedFontImport"`)}return n}(e,f.colors,a):a,b=e9(e,u.familyConfig,"config",c.valid),S=e9(e,f?.family,"appearance",c.valid);return{renderOptions:p,colors:v,...b?{familyConfig:b}:{},...S?{familyAppearance:S}:{}}}(t,a,m,g,o,s),v=tn(y.colors),b=tc.get(r)??tp(r.style),S=function(e){let t=new Set;for(let i of Object.values(O))for(let a of i){let i=e.config.themeVariables?.[a];"string"==typeof i&&i.length>0&&void 0===D(i)&&t.add(a)}return Object.freeze([...t].sort())}(a),$={version:2,colors:v,font:u,style:tn(o),face:tn(s),styled:c,inferredBackend:o?i(o):"default",styleReferences:b,...S.length>0?{unsafeThemeColorKeys:S}:{},...y.familyAppearance?{family:y.familyAppearance}:{}},w=tn({...$,digest:ti(e7(tt($)))});return tn({renderOptions:tn(y.renderOptions),appearance:w,...y.familyConfig?{familyConfig:y.familyConfig}:{}})}({family:x,source:w,options:d,...p?{style:p}:{},...m?{styleFace:m}:{}}),M=I.family?.visual;"architecture"===x.id&&eb(w.config.themeVariables,x.id,d,M),function(e,t,i){if("architecture"!==t||!e)return;let a=i?.edgeStroke;if("string"==typeof a&&"none"===a.trim().toLowerCase())throw new em("architecture.visual.edgeStroke",a);for(let t of["bg","surface","line","accent"]){let r=e[t];if("string"==typeof r&&"none"===r.trim().toLowerCase()&&("surface"!==t||i?.groupSurface?.trim().toLowerCase()==="none")&&!("surface"===t&&i?.groupHeaderSurface)&&!(("line"===t||"accent"===t)&&a))throw new em(t,r)}let r=i?.groupSurface;if(!i?.groupHeaderSurface&&"string"==typeof r&&"none"===r.trim().toLowerCase())throw new em("architecture.visual.groupSurface",r)}(d,x.id,M);let N=function(e,t,i,a,r,n){var o,l,c,d,u;let f,p,m,g,h;"svg"===i||"png"===i?"scene"==(f=t.styled||e.lowerScene?"scene":"family-svg")&&(p=S(m=t.styled?t.inferredBackend:"default",a.backendPolicy)):f="layout"===i?"layout":"terminal";let y="scene"===f?(g=new Set(e.scenePrimitiveEvidence.filter(e=>"applicable"===e.applicability).map(e=>e.primitive)),b.filter(e=>g.has(e.primitive))):[],v=p?y.flatMap(e=>tg(ty(e),tb(p,e))):[],$=[{id:e.identity.id,version:e.identity.version},...tg("operation:layout",void 0!==e.layout),...tg("operation:project-positioned",void 0!==e.projectPositioned),...tg("operation:lower-scene",void 0!==e.lowerScene),...tg("operation:render-svg",void 0!==e.renderSvg),...tg("operation:render-terminal",void 0!==e.renderAscii),...tg("core:scene","scene"===f),...tg("backend:scene-renderer",void 0!==p,p?.identity.version),...v],w=[th("core:family-descriptor"),th(e.identity.id,e.identity.version)],x;switch(f){case"scene":w.push(th("core:scene"),th("operation:layout"),th("operation:lower-scene"),th("backend:scene-renderer",p?.identity.version??tm),...y.map(e=>th(ty(e)))),x=!!(e.layout&&e.lowerScene&&p&&y.every(e=>tb(p,e)));break;case"family-svg":w.push(th("operation:layout"),th("operation:render-svg")),x=!!(e.layout&&e.renderSvg);break;case"terminal":w.push(th("operation:render-terminal")),x=void 0!==e.renderAscii;break;case"layout":w.push(th("operation:layout"),th("operation:project-positioned")),x=!!(e.layout&&e.projectPositioned)}let C=function(e,t,i,a){let r=function(e,t,i,a){let r=t.length+i.length;if("string"!=typeof e||r>256)return;let n=e.length+16*r;if(n>16384)return;let o=`${e.length}:${e};${a};${t.length};${i.length};`;for(let e of t){if("string"!=typeof e.id||"string"!=typeof e.version||(n+=e.id.length+e.version.length)>16384)return;o+=`${e.id.length}:${e.id}${e.version.length}:${e.version}`}for(let e of i){if("string"!=typeof e.id||"string"!=typeof e.range||"string"!=typeof e.level||(n+=e.id.length+e.range.length+e.level.length)>16384)return;o+=`${e.id.length}:${e.id}${e.range.length}:${e.range}${e.level.length}:${e.level}`}return o.length<=8192?o:void 0}(e,t,i,a),n=void 0===r?void 0:tS.get(r);if(P("capability-decision",void 0===r?"bypass":n?"hit":"miss",void 0===r?"tuple-budget":void 0),n)return n;let o=B(e,{offers:t,requirements:i,outputAvailable:a});return void 0!==r&&(tS.size<32?tS.set(r,o):P("capability-decision","store-skipped","capacity")),o}(i,$,w,x);if(!C.accepted){let a,r;throw d=f,u=p,r=(a=C.resolutions.filter(e=>"required"===e.level&&"selected"!==e.status).map(e=>e.id).join(", "))?` (unsatisfied capabilities: ${a})`:"","layout"===i?new eQ(`No public layout projection registered for Mermaid family "${e.id}"${r}`,i,e,C):"ascii"===i||"unicode"===i||"html"===i?new eQ(`No ASCII renderer registered for Mermaid family ${e.id}${r}`,i,e,C):t.styled&&!e.lowerScene?new eQ(`Family "${e.id}" does not support styled rendering (no SceneGraph lowering registered). Render without the style option, or register a lowerScene hook for the family.${r}`,i,e,C):"scene"===d&&e.layout&&e.lowerScene&&!u?new eQ(t.styled?`Style "${t.style?.name??"(inline)"}" requires an unavailable SceneGraph backend${r}`:`Default SceneGraph backend is not registered${r}`,i,e,C):new eQ(`No SVG renderer registered for Mermaid family ${e.id}${r}`,i,e,C)}let O="terminal"===f?void 0:W(a.textMeasurement,t.font),j;if("scene"===f||"family-svg"===f){let t=Object.freeze("scene"===f?{mode:"scene",requestedId:m,selectedId:p.identity.id,version:p.identity.version,hostPolicy:void 0!==a.backendPolicy}:{mode:"family-svg"}),i={family:Object.freeze({id:e.identity.id,version:e.identity.version}),backend:t,...O?{textMeasurement:O.identity}:{}};j=Object.freeze({...i,digest:ti(e7(tt(i)))})}let k=void 0===r?void 0:Object.freeze((o=e.id,l=e.config,c=e.configDiagnostics,h=s(o),function(e,t,i,a){var r;let n;if(!i)return[];let o=a??s(e)?.configDiagnostics;return r=t.flatMap(t=>o?[...o({root:t,config:i})]:ek(e,{root:t,config:i})),n=new Set,r.sort((e,t)=>_(e.field,t.field)||_(e.message,t.message)).filter(e=>{let t=`${e.code}\0${e.field}\0${e.message}`;return!n.has(t)&&(n.add(t),!0)})}(o,[r],l??h?.config,c??h?.configDiagnostics)).map(e=>Object.freeze({...e})));return Object.freeze({output:i,mode:f,family:e,...p?{backend:p}:{},...m?{requestedBackendId:m}:{},...void 0===k?{}:{configDiagnostics:k},...n?{onConfigDiagnostic:n}:{},capabilityDecision:C,...j?{executionDecision:j}:{},...O?{textMeasurement:O}:{}})}(x,I,a,l,d.mermaidConfig,c.onConfigDiagnostic),V=N.capabilityDecision,J=Object.freeze(V.resolutions.filter(t$)),G=Object.freeze({version:V.version,accepted:J.every(e=>"required"!==e.level||"selected"===e.status),resolutions:J}),H={version:2,authoredSource:w.originalText,source:w.text,options:e3(T),appearance:I.digest,...z?{familyConfig:z}:{},...N.textMeasurement?{textMeasurement:N.textMeasurement.identity}:{},capabilities:G},U=te(H,w),Y=te({...H,output:a,outputOptions:o,capabilities:V},w),K=Object.freeze({version:2,output:a,source:tn(w),renderOptions:T,appearance:I,...z?{familyConfig:z}:{},capabilityDecision:V,explicitOptionFields:F,...0===A.length?{}:{resolutionDiagnostics:A},get sharedRequestDigest(){return U()},get requestDigest(){return Y()}});return e0.set(K,N),K}export{ex as a,eO as b,ej as c,ek as d,eZ as e,e1 as f,e2 as g,e6 as h,ti as i,td as j,tu as k,tw as l};
@@ -0,0 +1 @@
1
+ import{e as r}from"./chunk-PXTLV57R.js";import{Pa as e}from"./chunk-EIYLJ4FI.js";function t(t){let n=new Map(t.map(r=>[r.id,{start:e(r,"start"),end:e(r,"end"),fixed:"userSpaceOnUse"===r.units}]));return(e,t,a)=>{if(!e)return 0;let i=n.get(e);if(!i)throw Error(`Missing terminal marker ${e}`);return i[a]*(i.fixed?1:t)+r}}export{t as a};
@@ -0,0 +1 @@
1
+ import{Aa as t,Ca as e,la as r,ma as n,na as a,oa as l,pa as i,ta as o,ya as f}from"./chunk-EIYLJ4FI.js";var u="#3b82f6";function h(t){let[e,n,a]=r(t),l=e/255,i=n/255,o=a/255,f=Math.max(l,i,o),u=Math.min(l,i,o),h=(f+u)/2;if(f===u)return[0,0,100*h];let s=f-u;return[360*(f===l?((i-o)/s+6*(i<o))/6:f===i?((o-l)/s+2)/6:((l-i)/s+4)/6),100*(h>.5?s/(2-f-u):s/(f+u)),100*h]}function s(t,e,r){let n=r/100,a=e/100*(1-Math.abs(2*n-1)),l=a*(1-Math.abs(t/60%2-1)),i=n-a/2,o,f,u;t<60?(o=a,f=l,u=0):t<120?(o=l,f=a,u=0):t<180?(o=0,f=a,u=l):t<240?(o=0,f=l,u=a):t<300?(o=l,f=0,u=a):(o=a,f=0,u=l);let h=t=>Math.round((t+i)*255).toString(16).padStart(2,"0");return`#${h(o)}${h(f)}${h(u)}`}function c(t){return f(t)}function d(t){return h(t)[2]<50}function b(t){return t<=.0031308?12.92*t:1.055*t**(1/2.4)-.055}function L(t){let e=n(t);if(!e)return null;let r=i(e[0]/255),a=i(e[1]/255),l=i(e[2]/255),o=Math.cbrt(.4122214708*r+.5363325363*a+.0514459929*l),f=Math.cbrt(.2119034982*r+.6806995451*a+.1073969566*l),u=Math.cbrt(.0883024619*r+.2817188376*a+.6299787005*l);return{L:.2104542553*o+.793617785*f-.0040720468*u,a:1.9779984951*o-2.428592205*f+.4505937099*u,b:.0259040371*o+.7827717662*f-.808675766*u}}function v(t){var e;let r,n,l,i,o,f,u;return n=(r=t.h*Math.PI/180,e={L:t.L,a:t.C*Math.cos(r),b:t.C*Math.sin(r)}).L+.3963377774*e.a+.2158037573*e.b,l=e.L-.1055613458*e.a-.0638541728*e.b,i=e.L-.0894841775*e.a-1.291485548*e.b,a(255*b(4.0767416621*(o=n*n*n)-3.3077115913*(f=l*l*l)+.2309699292*(u=i*i*i)),255*b(-1.2684380046*o+2.6097574011*f-.3413193965*u),255*b(-.0041960863*o-.7034186147*f+1.707614701*u))}function M(t){let e,r,n=L(t);return n?(e=Math.hypot(n.a,n.b),r=(180*Math.atan2(n.b,n.a)/Math.PI+360)%360,{L:n.L,C:e,h:r}):null}function m(t,e){let r=L(t),n=L(e);return r&&n?Math.hypot(r.L-n.L,r.a-n.a,r.b-n.b):null}function p(t){let e=1/0;for(let r=0;r<t.length;r++)for(let n=r+1;n<t.length;n++){let a=m(t[r],t[n]);null!==a&&a<e&&(e=a)}return e}function C(t){let e=n(t);if(!e)return null;let r=.2126729*(e[0]/255)**2.4+.7151522*(e[1]/255)**2.4+.072175*(e[2]/255)**2.4;return r<.022?r+(.022-r)**1.414:r}function g(t,e){let r,n,a,l=(n=C(t),a=C(e),null===n||null===a?null:5e-4>Math.abs(a-n)?0:100*(a>n?(r=(a**.56-n**.57)*1.14)<.1?0:r-.027:(r=(a**.65-n**.62)*1.14)>-.1?0:r+.027));return null===l?null:Math.abs(l)}function x(t,e={}){return function(t,e,r){var n,a;let l,i,o,f,b,v,m,p,C,g=k(e.labelInk),x,D=void 0===g?void 0:()=>x??=$(k(e.bg),void 0,g);if(t<=6){let r=e.accent??u;return function(t,e,r,n,a){let l=k(e),i=t.map(t=>k(t,l));if(i.some(t=>void 0===t))return t;let o=((void 0===l?null:L(l))?.L??1)<.55,f=i.map(t=>{if(w(t,l,n))return t;let e=M(t);return e?y(e,l,o,r,n,a):t});return(f.length>1?A(f,l,o,r,n,a):f).map((e,r)=>e===i[r]?t[r]:e)}(Array.from({length:Math.max(0,t)},(t,n)=>(function(t,e,r){if(0===t)return e;let n=c(e)?e:u,a=r&&c(r)?r:void 0,[l,i]=h(n),o=Math.max(55,Math.min(85,i)),f=Math.ceil(t/2),b=t%2==1,L=a&&d(a)?!b:b,v=L?Math.max(25,48-13*f):Math.min(78,55+11*f);return s(((l+(L?-8:12)*f)%360+360)%360,o,v)})(n,r,e.bg)),e.bg,void 0,g,D)}let E=k(e.bg);return n=k(e.accent,E)??u,a=void 0,o=(i=(l=M(n)??{L:.6,C:.16,h:264}).C<.03)?264:l.h,f=Math.max(.11,Math.min(.16,i?.16:l.C)),v=(b=((void 0===E?null:L(E))?.L??1)<.55)?[.74,.6]:[.56,.7],m=360/t,p=Array.from({length:t},(t,e)=>{if(0===e&&w(n,E,g))return n;let r=0===e?o:((o+e*m)%360+360)%360;return y({L:0===e?l.L:v[e%2],C:f,h:r},E,b,a,g,D)}),t<=24?A(p,E,b,a,g,D):(C=new Set,p.map((t,e)=>{if(a&&a.tailItems++,!C.has(t.toLowerCase()))return C.add(t.toLowerCase()),t;let r=M(t);if(r)for(let t=1;t<=24;t++){a&&a.candidateEvaluations++;let n=y({...r,L:F(r.L+(t%2==0?1:-1)*Math.ceil(t/2)*.008),h:(r.h+137.508*t+.01*e)%360},E,b,a,g,D);if(!C.has(n.toLowerCase()))return C.add(n.toLowerCase()),n}return t}))}(t,e)}function k(e,r){if(void 0===e)return;let n=t(e);if(!n)return;if(1===n[3])return a(n[0],n[1],n[2]);if(void 0===r)return;let l=t(r);if(!(!l||1!==l[3]))return a(n[0]*n[3]+l[0]*(1-n[3]),n[1]*n[3]+l[1]*(1-n[3]),n[2]*n[3]+l[2]*(1-n[3]))}function w(t,r,n){if(void 0!==n&&(e(t,n)??0)<o)return!1;if(void 0===r)return!0;let a=e(t,r),l=g(t,r);return null!==a&&null!==l&&a>=1.25&&l>=15}function y(t,e,r,n,a,l){n&&n.candidateEvaluations++;let i=v(t);if(w(i,e,a))return i;let o=(void 0===e?void 0:L(e))?.L??+!r,f=t.L>=o?1:-1;for(let r=1;r<=24;r++){let l=.04*r;for(let r of[f,-f]){n&&n.candidateEvaluations++;let i=v({...t,L:F(t.L+r*l)});if(w(i,e,a))return i}}let u=["#000000","#ffffff"].filter(t=>w(t,e,a));if(u.length>0)return u.sort((t,r)=>void 0===e?0:(g(r,e)??0)-(g(t,e)??0))[0];if(void 0!==a){let t=L(i),r,o=1/0;for(let i of l?.()??$(e,n,a)){n&&(n.candidateEvaluations++,t&&n.pairDistanceChecks++);let e=t?P(i.lab,t):0;e<o&&(r=i,o=e)}if(r)return r.hex;D()}return i}function D(){throw Error("Cannot derive categorical fills within bounded search with readable label ink, page visibility and distinct peer colors; select a different textColor or explicit fillColor")}function E(e,r,n){let i=void 0===r?null:t(r);if(!i||1!==i[3])return e;let o=a(i[0],i[1],i[2]),f=t(e);if(!f||1!==f[3])return e;let u=a(f[0],f[1],f[2]),h=t=>l(t,o,n);if(w(h(u),o))return e;let s=M(u);if(!s)return e;let c=L(o)?.L??1,d=s.L>=c?1:-1;for(let t=1;t<=24;t++){let e=.04*t;for(let t of[d,-d]){let r=v({...s,L:F(s.L+t*e)});if(w(h(r),o))return r}}return["#000000","#ffffff"].sort((t,e)=>(g(h(e),o)??0)-(g(h(t),o)??0))[0]}function A(t,e,r,n,a,l){let i=[];for(let l=0;l<t.length;l++){let o=t[l],f=0===l&&w(o,e,a);i.push(f||S(o,i,n)>=.1?o:function(t,e,r,n,a,l){let i=M(t);if(!i)return t;let o=t,f=S(t,e,a);for(let t=1;t<=12;t++){let u=.03*t,h=7*t;for(let t of[{...i,L:F(i.L+u)},{...i,L:F(i.L-u)},{...i,h:(i.h+h)%360},{...i,h:(i.h-h+360)%360},{...i,L:F(n?i.L+u:i.L-u),h:(i.h+h)%360}]){a&&a.candidateEvaluations++;let n=v(t);if(!w(n,r,l))continue;let i=S(n,e,a);if(i>=.1)return n;i>f&&(f=i,o=n)}}return o}(o,i,e,r,n,a))}if(n&&(n.pairDistanceChecks+=i.length*(i.length-1)/2),p(i)>=.1)return i;let o=function(t,e,r,n,a){if(t.length<2)return t;let l=void 0===n?J:P,i=a?.()??$(e,r,n),o=L(t[0]);if(!o)return t;let f={hex:t[0],lab:o},u=void 0===n?void 0:Float64Array.from(i,t=>(r&&r.pairDistanceChecks++,l(t.lab,f.lab))),h=e=>{let a=e?[f,e]:[f],o=new Set(a.map(t=>t.hex.toLowerCase())),h=u?.slice(),s=t=>{if(h)for(let e=0;e<i.length;e++)r&&r.pairDistanceChecks++,h[e]=Math.min(h[e],l(i[e].lab,t.lab))};for(e&&s(e);a.length<t.length;){let e,f=-1,u=1/0,c=L(t[a.length]);for(let t=0;t<i.length;t++){let s=i[t];if(o.has(s.hex.toLowerCase()))continue;r&&r.candidateEvaluations++;let d=h?.[t]??1/0;if(!h)for(let t of a)r&&r.pairDistanceChecks++,d=Math.min(d,l(s.lab,t.lab));c&&void 0!==n&&r&&r.pairDistanceChecks++;let b=c?l(s.lab,c):0;(d>f+1e-12||1e-12>=Math.abs(d-f)&&b<u)&&(e=s,f=d,u=b)}if(!e)return t;a.push(e),o.add(e.hex.toLowerCase()),s(e)}return a.map(t=>t.hex)},s=h();if(void 0===n)return s;let c=I(s,r);if(c>=.1)return s;let d=s;for(let t of s.slice(2)){let e=L(t);if(!e||(r&&r.pairDistanceChecks++,.1>l(f.lab,e)))continue;let n=h({hex:t,lab:e}),a=I(n,r);if(a>=.1)return n;a>c&&(d=n,c=a)}let b=d.map(t=>({hex:t,lab:L(t)})),v=b.length,M=new Float64Array(i.length*v),m=t=>{for(let e=0;e<i.length;e++)r&&r.pairDistanceChecks++,M[e*v+t]=l(i[e].lab,b[t].lab)};for(let t=0;t<v;t++)m(t);for(let t=0;t<24;t++){let t=!1;for(let e=1;e<v;e++){let n,a=1/0;for(let t=0;t<v;t++)t!==e&&(r&&r.pairDistanceChecks++,a=Math.min(a,l(b[e].lab,b[t].lab)));for(let t=0;t<i.length;t++){r&&r.candidateEvaluations++;let l=1/0;for(let r=0;r<v&&!(r!==e&&(l=Math.min(l,M[t*v+r]))<=a+1e-12);r++);l>a+1e-12&&(a=l,n=i[t])}n&&(b[e]=n,m(e),t=!0)}let e=b.map(t=>t.hex);if(I(e,r)>=.1)return e;if(!t)break}return b.map(t=>t.hex)}(i,e,n,a,l);return void 0!==a&&.1>I(o,n)&&D(),o}function I(t,e){return e&&(e.pairDistanceChecks+=t.length*(t.length-1)/2),p(t)}function S(t,e,r){let n=1/0;for(let a of e){r&&r.pairDistanceChecks++;let e=m(t,a);null!==e&&e<n&&(n=e)}return n}var F=t=>Math.max(.08,Math.min(.97,t));function $(t,e,r){let n=new Map,l=a=>{if(e&&e.candidateEvaluations++,n.has(a)||!w(a,t,r))return;let l=L(a);l&&n.set(a,{hex:a,lab:l})};l("#000000"),l("#ffffff");let i=void 0!==r,o=i?44:22,f=i?Array.from({length:14},(t,e)=>(e+1)*.02):[.04,.08,.12,.16,.2,.24,.28];for(let t=0;t<=o;t++){let e=.08+t*(i?.02:.04);for(let t of(l(v({L:e,C:0,h:0})),f))for(let r=0;r<360;r+=i?5:10)l(v({L:e,C:t,h:r}))}if(void 0!==r)for(let t=0;t<=255;t+=17)for(let e=0;e<=255;e+=17)for(let r=0;r<=255;r+=17)l(a(t,e,r));return[...n.values()]}var J=(t,e)=>Math.hypot(t.L-e.L,t.a-e.a,t.b-e.b),P=(t,e)=>{let r=t.L-e.L,n=t.a-e.a,a=t.b-e.b;return Math.sqrt(r*r+n*n+a*a)};export{u as a,h as b,s as c,c as d,d as e,p as f,g as g,x as h,E as i};
@@ -0,0 +1 @@
1
+ import{a as e,c as t}from"./chunk-MFTQWHUB.js";import{a as i,b as r,c as n,e as o,f as a}from"./chunk-O34YYEQV.js";import{$ as s,A as l,B as d,C as h,D as g,E as u,F as f,G as c,H as p,I as y,J as m,K as x,L as b,M as w,O as M,P as v,Q as S,R as k,S as E,T as P,U as N,V as C,W as I,X as L,Y as R,Z as O,_ as $,a as z,aa as A,b as B,ba as F,c as T,ca as _,da as H,ea as D,fa as W,g as j,ga as V,ha as X,i as U,ia as G,j as Y,ja as q,k as Q,ka as K,l as J,la as Z,m as ee,ma as et,na as ei,oa as er,pa as en,q as eo,qa as ea,r as es,ra as el,s as ed,sa as eh,t as eg,ta as eu,u as ef,ua as ec,v as ep,va as ey,w as em,wa as ex,x as eb,xa as ew,y as eM,ya as ev,z as eS}from"./chunk-NKW2ZNCD.js";import{b as ek}from"./chunk-HJVO5VC3.js";import{a as eE,b as eP,c as eN,d as eC,h as eI}from"./chunk-PXTLV57R.js";import{A as eL,B as eR,k as eO,l as e$,m as ez,n as eA,o as eB,p as eF,r as eT,s as e_,t as eH,u as eD,v as eW,w as ej,x as eV,y as eX,z as eU}from"./chunk-QVSZOF5M.js";import{L as eG,P as eY,ja as eq,ka as eQ,la as eK}from"./chunk-G4JBA7HU.js";import{c as eJ,d as eZ,e as e0,h as e1,l as e2,m as e5,n as e6}from"./chunk-YVNJDVQO.js";import{$b as e4,A as e8,Ab as e3,C as e9,G as e7,La as te,Oa as tt,Ob as ti,Pb as tr,Q as tn,Qb as to,R as ta,Ua as ts,Ub as tl,Wa as td,Yb as th,_ as tg,_b as tu,bb as tf,t as tc}from"./chunk-EIYLJ4FI.js";function tp(e){throw Error(`LAYOUT_HINT_INVALID: ${e}`)}var ty=class extends Error{constructor(e,t,i){super(i),this.pass=e,this.contract=t,this.name="LayoutPassContractError"}pass;contract;code="LAYOUT_PASS_CONTRACT_VIOLATION"},tm=class extends ty{constructor(e,t,i,r,n){super(e,"metric-budget",`Layout pass '${e}' worsened ${t} from ${i} to ${r} (allowance ${n})`),this.metric=t,this.before=i,this.after=r,this.allowance=n,this.name="LayoutMetricBudgetError"}metric;before;after;allowance;code="LAYOUT_METRIC_BUDGET_EXCEEDED"},tx=e=>{let t=[...e.nodes],i=e=>{for(let r of e)t.push(r),i(r.children??[])};return i(e.groups??[]),t},tb=["unreadableTitles","edgeCrossings","labelConflicts","totalBends","nonCanonicalEndpointRate","peerBarycenterDelta","area"];function tw(e,t){let i=new Map,r=e=>{for(let t of e)i.set(t.id,t),r(t.children)};r(e.subgraphs);let n=t=>{for(let r of t)r.nodeIds=i.get(r.id).nodeIds.filter(t=>e.nodes.has(t)&&!i.has(t)),n(r.children)};n(t.groups)}function tM(e,t){let i=[];if(![e.width,e.height].every(Number.isFinite)||e.width<0||e.height<0)return["non-finite or negative canvas"];let r=(t,r,n,o,a)=>{![r,n,o,a].every(Number.isFinite)||o<0||a<0?i.push(`${t}: non-finite or negative geometry`):(r<-.5||n<-.5||r+o>e.width+.5||n+a>e.height+.5)&&i.push(`${t}: outside canvas`)};for(let t of e.nodes)r(`node ${t.id}`,t.x,t.y,t.width,t.height);let n=e=>{r(`group ${e.id}`,e.x,e.y,e.width,e.height),e.children.forEach(n)};for(let o of(e.groups.forEach(n),e.edges)){for(let e of("invisible"!==o.style&&o.points.length<2&&i.push(`edge ${o.source}->${o.target}: missing route`),!o.label||o.labelPosition&&o.labelBlock||i.push(`label ${o.source}->${o.target}: missing retained geometry`),o.points))r(`edge ${o.source}->${o.target}`,e.x,e.y,0,0);if(void 0!==o.label&&o.labelPosition&&o.labelBlock){let e=eI(o,t);e&&r(`label ${o.source}->${o.target}`,e.x,e.y,e.w,e.h)}}for(let t of e.notes??[])r(`note ${t.id}`,t.x,t.y,t.width,t.height);if(e.title?.block){let t=e.title,i=t.block;r("diagram title",t.x-i.width/2,t.y-i.height/2,i.width,i.height)}return i}function tv(e,t){let i,r,n,o=tM(e,t);return o.length?o:(i=[],r=(e,t,i,r)=>{let n=0,o=1;for(let[a,s,l,d]of[[e.x,t.x-e.x,i.x,i.x+i.width],[e.y,t.y-e.y,i.y,i.y+r]]){if(0===s){if(a<=l||a>=d)return!1;continue}let e=(l-a)/s,t=(d-a)/s;if((n=Math.max(n,Math.min(e,t)))>=(o=Math.min(o,Math.max(e,t))))return!1}return n<o},n=o=>{if(!o.concurrencyRegion){let n=o.labelBlock??eP(e9(o.label,o.labelContent),t,"group"),a=o.headerHeight??t.groupHeaderFontSize+16+n.height-n.lineHeight;if(!Number.isFinite(a)||a<0)i.push(`group-header ${o.id}: invalid retained height`);else if(a>0&&o.width>0){for(let t of e.edges)if("invisible"!==t.style){for(let e=1;e<t.points.length;e++)if(r(t.points[e-1],t.points[e],o,a)){i.push(`group-header ${o.id}: edge ${t.source}->${t.target} segment ${e} enters reserved band`);break}}}}o.children.forEach(n)},e.groups.forEach(n),i)}function tS(e,t,i,r=!1){return tk(e,t,i,r)}function tk(e,t,i,r=!1,n="final"){try{var o;let a=i.produce(),s=function(e,t,i){let r=[],n=(e,t,n,o)=>{if(!n)return;let a=e7(t,"formatted","node"===o?i.nodeTextTransform:"edge"===o?i.edgeTextTransform:i.groupTextTransform),s=n.prepared,l=s.lines.length===a.lines.length&&s.lines.every((e,t)=>e.length===a.lines[t].length&&e.every((e,i)=>{let r=a.lines[t][i];return e.text===r.text&&e.bold===r.bold&&e.italic===r.italic&&e.underline===r.underline&&e.strikethrough===r.strikethrough&&e.sourceStart===r.sourceStart&&e.sourceEnd===r.sourceEnd&&e.clusters?.length===r.clusters?.length&&(e.clusters?.every((e,t)=>{let i=r.clusters[t];return e.text===i.text&&e.sourceStart===i.sourceStart&&e.sourceEnd===i.sourceEnd})??!0)}));(s.source!==a.source||s.display!==a.display||s.transform!==a.transform||s.lineStarts.length!==a.lineStarts.length||s.lineStarts.some((e,t)=>e!==a.lineStarts[t])||!l)&&r.push(`${e}: changed retained prepared text`)},o=new Map,a=new Map,s=new Map,l=new Map,d=(e,t="")=>{for(let i of e)o.set(i.id,t),s.set(i.id,i),d(i.children,i.id)},h=(e,t="")=>{for(let i of e)a.has(i.id)&&r.push(`group ${i.id}: duplicate identity`),a.set(i.id,t),l.set(i.id,i),h(i.children,i.id)};for(let[i,n]of(d(e.subgraphs),h(t.groups),o))a.get(i)!==n&&r.push(`group ${i}: missing or changed parent`);for(let e of a.keys())o.has(e)||r.push(`group ${e}: unexpected identity`);let g=new Set,u=new Map(t.nodes.map(e=>[e.id,e]));for(let i of t.nodes)if(g.has(i.id)&&r.push(`node ${i.id}: duplicate identity`),g.add(i.id),e.nodes.has(i.id))if(i.label!==e.nodes.get(i.id).label)r.push(`node ${i.id}: changed label`);else{let t=e.nodes.get(i.id);n(`node ${i.id}`,e9(t.label,t.labelContent),i.labelBlock,"node")}else r.push(`node ${i.id}: unexpected identity`);for(let t of e.nodes.keys())g.has(t)||a.has(t)||r.push(`node ${t}: missing identity`);for(let[e,t]of s){let i=l.get(e);if(!i)continue;i.label!==t.label&&r.push(`group ${e}: changed label`),n(`group ${e}`,e9(t.label,t.labelContent),i.labelBlock,"group");let a=l.get(o.get(e)??"");for(let n of(a&&(i.x<a.x-.5||i.y<a.y-.5||i.x+i.width>a.x+a.width+.5||i.y+i.height>a.y+a.height+.5)&&r.push(`group ${e}: outside authored parent ${a.id}`),t.nodeIds)){if(s.has(n))continue;let t=u.get(n);t&&(t.x<i.x-.5||t.y<i.y-.5||t.x+t.width>i.x+i.width+.5||t.y+t.height>i.y+i.height+.5)&&r.push(`member ${n}: outside authored group ${e}`)}}let f=new Set;for(let[i,o]of t.edges.entries()){let t=o.edgeIndex??i,a=e.edges[t];if(f.has(t)&&r.push(`edge ${t}: duplicate identity`),f.add(t),!a){r.push(`edge ${t}: unexpected identity`);continue}void 0!==a.label&&n(`edge ${t}`,e9(a.label,a.labelContent),o.labelBlock,"edge"),(o.source!==a.source||o.target!==a.target||(o.id??"")!==(a.id??"")||(o.label??"")!==(a.label??"")||o.style!==a.style||o.hasArrowStart!==a.hasArrowStart||o.hasArrowEnd!==a.hasArrowEnd||(o.startMarker??"arrow")!==(a.startMarker??"arrow")||(o.endMarker??"arrow")!==(a.endMarker??"arrow"))&&r.push(`edge ${t}: changed endpoints, identity, label, shaft or markers`)}return e.edges.forEach((e,t)=>{f.has(t)||r.push(`edge ${t}: missing identity`)}),r}(e,a,t);if(r&&s.length)throw TypeError(`Owned layout changed authored meaning: ${s.join("; ")}`);let l=[...s,..."placement"===n?tM(a,t):tv(a,t)],d=0===l.length?D(e,a,t):void 0;d&&l.push(...V(d).map(e=>`${e.metric}: ${e.detail}`));let h=0===l.length&&(i.preferNext?.(a)??!1);return{attempt:{strategy:i.strategy,violations:l},...0===l.length&&d?{certified:{positioned:a,strategy:i.strategy,score:(o=d.metrics,{unreadableTitles:+!!h,labelConflicts:o.labelConflicts,edgeCrossings:o.edgeCrossings,totalBends:o.totalBends,nonCanonicalEndpointRate:1-o.portEndpointRate,peerBarycenterDelta:Math.round(1e3*o.peerBarycenterDelta)/1e3,area:a.width*a.height})}}:{}}}catch(e){if(r||e instanceof ty||e instanceof eG||e instanceof to)throw e;return{attempt:{strategy:i.strategy,violations:[e instanceof Error?e.message:String(e)]}}}}function tE(e,t){for(let i of tb){if(t.score[i]<e.score[i])return{selected:t,reason:i};if(t.score[i]>e.score[i])return{selected:e,reason:i}}return{selected:e,reason:"candidate-order"}}function tP(e,t,i,r,n="final"){let o=[],a=i.slice(0,4),s=r?[r,...a]:a,l,d,h=!1,g=[],u=(e,t)=>({selected:e,reason:t,compared:g,attempts:o.length});for(let[i,r]of s.entries()){if(l&&"routing"===d&&!1===r.qualityAlternative)continue;h&&(tf("layout-candidate","candidate-rejected",o.length+1),h=!1);let a=tk(e,t,r,!1,n);o.push(a.attempt);let f=a.certified;if(f){if(g.push({strategy:f.strategy,score:f.score}),l){let e=tE(l,f);return u(e.selected,e.reason)}let t=s.slice(i+1);if(f.score.unreadableTitles&&t.length>0){l=f,d="readability";continue}if(0===f.score.edgeCrossings&&0===f.score.labelConflicts)return u(f,"first-certified");if(!ep(e))return u(f,"work-budget");if(!t.some(e=>!1!==e.qualityAlternative))return u(f,"no-alternative");l=f,d="routing";continue}if(l)return u(l,"alternative-invalid");h=!0}if(l)return u(l,"no-alternative");throw new tr(o)}function tN(e,t){let{selected:i,reason:r,compared:n,attempts:o}=t;return tw(e,i.positioned),i.positioned.certification={status:"passed",strategy:i.strategy,attempts:o,hardViolations:0,preference:{selectedScore:i.score,reason:r,compared:n}},i.positioned}function tC(e,t,i){let r=e.labelBlock??eE(e9(e.label,e.labelContent),i);return{x:t.x-(r.width+16)/2,y:t.y-(r.height+16)/2,width:r.width+16,height:r.height+16}}function tI(e){let t=[e[0],e[e.length-1]],i=-1;for(let r=1;r<e.length;r++){let n=e[r-1],o=e[r],a=Math.hypot(o.x-n.x,o.y-n.y);a>i&&(i=a,t=[n,o])}return{x:(t[0].x+t[1].x)/2,y:(t[0].y+t[1].y)/2}}function tL(e){return Math.max(8,.75*e.edgeLabelFontSize)}function tR(e){return Math.max(12,e.edgeLabelFontSize)}function tO(e){let t=(e.lineWidth??1)*2;return Math.max(18,e.edgeLabelFontSize+eZ.width+2*t)}function t$(e){return tO(e)+(3*e0.dash+2*e0.gap)}function tz(e,t,i){return Math.abs(i.x-t.x)>=Math.abs(i.y-t.y)?e.width/2:e.height/2}function tA(e,t,i,r,n,o){let a,s,l=(a=o.lineWidth??1,s="thick"===e.style?2*a:a,Math.max(18,o.edgeLabelFontSize+eZ.width+2*s));if(e.hasArrowStart&&1===i){let e=t[0],i=tz(n,e,t[1]);if(Math.hypot(r.x-e.x,r.y-e.y)<i+l)return!1}if(e.hasArrowEnd&&i===t.length-1){let e=t[t.length-1],i=tz(n,t[t.length-2],e);if(Math.hypot(r.x-e.x,r.y-e.y)<i+l)return!1}return!0}function tB(e,t,i,r,n,o){if(!e.label)return[];let a=eA(t);if(0===a)return[];let s=a/2,l=[],d=[.5,.45,.55,.4,.6,.35,.65,.3,.7,.25,.75,.2,.8,1/6,5/6],h=0;for(let a=1;a<t.length;a++){var g;let u=t[a-1],f=t[a],c=Math.hypot(f.x-u.x,f.y-u.y);if(0===c)continue;let p=eF(r).isHorizontal?.01>Math.abs(u.y-f.y):.01>Math.abs(u.x-f.x),y=e.hasArrowStart&&1===a||e.hasArrowEnd&&a===t.length-1,m=tC(e,{x:0,y:0},n),x=(g=a,{start:e.hasArrowStart&&1===g?tO(n):tR(n),end:e.hasArrowEnd&&g===t.length-1?t$(n):tR(n)}),b=[...d,...function(e,t,i,r){let n=Math.hypot(i.x-t.x,i.y-t.y);if(0===n)return[];let o=tz(e,t,i),a=(o+r.start)/n,s=1-(o+r.end)/n;return a>s?[]:[(a+s)/2]}(m,u,f,x)].filter((e,t,i)=>e>=0&&e<=1&&i.findIndex(t=>.001>Math.abs(t-e))===t),w=.01>Math.abs(u.x-f.x),M=Math.min(m.height/2+3,(w?m.width:m.height)/2-1),v=o?[0,M/4,-M/4,M/2,-M/2,M,-M]:[0];for(let r=0;r<b.length;r++){let d=b[r];for(let g of v){let m={x:u.x+(f.x-u.x)*d+(w?g:0),y:u.y+(f.y-u.y)*d+(w?0:g)},b=tC(e,m,n);if(i.some(e=>eV(b,e,2))||!tA(e,t,a,m,b,n))continue;let M=function(e,t,i,r,n){let o=tz(e,i,r);return Math.hypot(t.x-i.x,t.y-i.y)>=o+n.start&&Math.hypot(t.x-r.x,t.y-r.y)>=o+n.end}(b,m,u,f,x),v=w?b.y>=Math.min(u.y,f.y)&&b.y+b.height<=Math.max(u.y,f.y):b.x>=Math.min(u.x,f.x)&&b.x+b.width<=Math.max(u.x,f.x);(!o||M&&v&&o(e,m))&&l.push({point:m,box:b,order:r,rank:0,pathDistance:h+c*d,routeMidpointDistance:Math.abs(h+c*d-s),segmentMidpointDistance:Math.abs(c*(d-.5)),straightRunPenalty:p&&M?0:p?2:10,terminalSegmentPenalty:+!!y})}}h+=c}return l.sort((e,t)=>e.straightRunPenalty-t.straightRunPenalty||e.terminalSegmentPenalty-t.terminalSegmentPenalty||e.segmentMidpointDistance-t.segmentMidpointDistance||e.routeMidpointDistance-t.routeMidpointDistance||e.order-t.order||e.pathDistance-t.pathDistance),l.map((e,t)=>({...e,rank:t}))}function tF(e,t,i,r,n){return tB(e,t,i,r,n)[0]?.point??eB(t)}function tT(e,t){let i=0,r=[];for(let e=1;e<t.length;e++){let n=Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y);r.push(n),i+=n}let n=1/0,o=0,a=0;for(let i=1;i<t.length;i++){let s=t[i-1],l=t[i],d=l.x-s.x,h=l.y-s.y,g=d*d+h*h,u=g?((e.x-s.x)*d+(e.y-s.y)*h)/g:0;u=Math.max(0,Math.min(1,u));let f=s.x+u*d,c=s.y+u*h,p=Math.hypot(e.x-f,e.y-c);p<n&&(n=p,o=a+u*r[i-1]),a+=r[i-1]}return i?o/i:.5}function t_(e,t,i,r,n=!1,o){let a=e.filter(({edge:e})=>e.label);if(0===a.length)return!0;if(1===a.length){let e=a[0],n=tB(e.edge,e.points,t,i,r,o);if(o&&0===n.length)return!1;e.edge.labelPosition=n[0]?.point??eB(e.points)}else{let e=a.map(({edge:e,points:n})=>tB(e,n,t,i,r,o));if(e.some(e=>0===e.length)){if(o)return!1;for(let{edge:e,points:n}of a)e.labelPosition=tF(e,n,t,i,r)}else{let n=tL(r),s,l=1/0,d=[],h=t=>{if(t===e.length){let e,t,r,n,o,a,h,g=(e=eF(i),r=Math.max(...t=d.map(t=>t.point[e.main]))-Math.min(...t),n=d.reduce((e,t)=>e+t.straightRunPenalty,0),o=d.reduce((e,t)=>e+t.terminalSegmentPenalty,0),a=d.reduce((e,t)=>e+t.segmentMidpointDistance,0),h=d.reduce((e,t)=>e+t.routeMidpointDistance,0),1e4*n+100*r+1e3*o+4*a+.25*d.reduce((e,t)=>e+t.rank,0)+.1*h);g<l&&(l=g,s=d.slice());return}for(let i of e[t])d.some(e=>eV(i.box,e.box,n))||(d.push(i),h(t+1),d.pop())};if(h(0),s)for(let e=0;e<a.length;e++)a[e].edge.labelPosition=s[e].point;else{if(o)return!1;for(let{edge:e,points:n}of a)e.labelPosition=tF(e,n,t,i,r)}}}if(!n)return!0;let s=[],l=tL(r);for(let{edge:e}of a)e.labelPosition&&s.push(tC(e,e.labelPosition,r));for(let e=0;e<a.length;e++){let{edge:n,points:o}=a[e],d=n.labelPosition;(function(e,t,i,r,n,o=[],a=0){if(!e.label||!e.labelPosition)return;let s=function(e,t){let i=eF(t),r=e.map(e=>e[i.main]),n=(Math.min(...r)+Math.max(...r))/2,o=null;for(let t=1;t<e.length;t++){let r=e[t-1],a=e[t],s=Math.min(r[i.main],a[i.main]),l=Math.max(r[i.main],a[i.main]);if(n<s-1e-6||n>l+1e-6)continue;let d=a[i.main]-r[i.main];if(1e-6>=Math.abs(d))continue;let h=(n-r[i.main])/d,g={[i.main]:n,[i.cross]:r[i.cross]+h*(a[i.cross]-r[i.cross])};if(.01>Math.abs(r[i.cross]-a[i.cross]))return g;o??=g}return o}(t,r);if(!s)return;let l=Math.abs(tT(e.labelPosition,t)-.5);if(Math.abs(tT(s,t)-.5)>=l-1e-6)return;let d=tC(e,s,n);if(i.some(e=>eV(d,e,2))||o.some(e=>eV(d,e,a)))return;let h=eF(r);for(let i=1;i<t.length;i++){let r=t[i-1],o=t[i],a=Math.min(r[h.main],o[h.main]),l=Math.max(r[h.main],o[h.main]);if(!(1e-6>=Math.abs(o[h.main]-r[h.main]))&&!(s[h.main]<a-1e-6||s[h.main]>l+1e-6)){if(!tA(e,t,i,s,d,n))return;break}}e.labelPosition=s})(n,o,t,i,r,s.filter((t,i)=>i!==e),l),n.labelPosition&&n.labelPosition!==d&&(s[e]=tC(n,n.labelPosition,r))}return!0}function tH(e,t,i,r){let n=new Map;if(eU("APL_NO_CORANK_FANIN"))return n;let o=e$(r.edges),a=new Map(e.map(e=>[e.id,e])),s=e=>!!e&&eb.has(e.shape)&&!K(e,i),l=e=>!!e&&"rectangle"===e.shape&&!K(e,i),d=new Map;for(let e of t)e.source!==e.target&&X(e,a,r.direction)&&(d.has(e.target)||d.set(e.target,[]),d.get(e.target).push(e));for(let[e,t]of d){if(t.length<2||t.length>6||!s(a.get(e)))continue;let i=t.filter(e=>!!e.label);if(0===i.length||i.length===t.length)continue;let d=t[0].style;if(t.some(e=>e.style!==d))continue;let h=t.map(e=>a.get(e.source)).filter(e=>!!e);if(h.length!==t.length||new Set(h.map(e=>e.id)).size!==h.length||!h.every(l)||!G(h,r.direction,28))continue;let g=!0;for(let e=0;e<h.length&&g;e++)for(let t=0;t<h.length;t++)if(e!==t&&o(h[e].id,h[t].id)){g=!1;break}g&&n.set(e,t)}return n}function tD(e,t,i,r,n,o){let a=4e6,s=m(t,i,r,o,e=>(a-=e)>=0);if(!s)return!1;let l=N({nodes:t,edges:i,groups:r},o),d=new Set(e.map(({edge:e})=>e)),h=t.find(t=>t.id===e[0].edge.source),g=Z(r).filter(e=>et(h,e)),u=(e,t)=>{let i=eI({...e,labelPosition:t},o),r=i&&l.clearPaintRect(i,eC(e,o.lineWidth??1),e);return!!r&&g.every(e=>r.x>e.x&&r.y>e.y&&r.x+r.w<e.x+e.width&&r.y+r.h<e.y+e.height)&&s.clear(e,t,new Map,void 0,d)},f=()=>e.every(({edge:e})=>!e.label||!!e.labelPosition&&s.clear(e,e.labelPosition,new Map));return e.every(({edge:e,points:t})=>{if(!e.label)return!0;if(!e.labelPosition||!u(e,e.labelPosition))return!1;let i=eI(e,o);return t.some((e,r)=>{if(!r)return!1;let n=t[r-1];return n.x===e.x&&n.x>=i.x&&n.x<=i.x+i.w&&i.y>=Math.min(n.y,e.y)&&i.y+i.h<=Math.max(n.y,e.y)||n.y===e.y&&n.y>=i.y&&n.y<=i.y+i.h&&i.x>=Math.min(n.x,e.x)&&i.x+i.w<=Math.max(n.x,e.x)})})&&f()||t_(e,t,n,o,!1,u)&&f()}function tW(e,t){return Z(t).filter(t=>et(e,t)).map(e=>e.id).join("\0")}function tj(e,t,i,r,n,o,a){if(t.length<2||t.length>3||"rectangle"!==e.shape&&"diamond"!==e.shape)return;let s="diamond"!==e.shape&&K(e,n),l=[...t].sort((e,t)=>eW(r.get(e.target),o)-eW(r.get(t.target),o)),d=l.map(e=>r.get(e.target)).filter(Boolean);if(d.length!==l.length)return;let h=s?tW(e,n):"";if(d.every(t=>"rectangle"===t.shape&&(s?tW(t,n)===h:"diamond"===e.shape||!K(t,n)))&&G(d,o,40)&&d.every(t=>i.every(i=>i.source!==t.id&&(i.target!==t.id||i.source===e.id)))){for(let e=0;e<d.length;e++)for(let t=0;t<d.length;t++)if(e!==t&&a(d[e].id,d[t].id))return;return l}}function tV(e,t,i){if(e.length>eg||t.length>ef)return!1;let r=eg-e.length,n=e=>e.every(e=>--r>=0&&n(e.children));return n(i)}var tX=(e,t)=>e.points.length!==t.points.length||e.points.some((e,i)=>e.x!==t.points[i].x||e.y!==t.points[i].y);function tU(){return{remaining:eg*ef}}function tG(e,t,i,r,n,o,a=tU()){let s=e.map((e,t)=>e.x!==i[t].x||e.y!==i[t].y),d=t.map((e,t)=>tX(e,r[t]));if(!s.some(Boolean)&&!d.some(Boolean))return!0;let h=()=>--a.remaining>=0,g=new Map,u=e=>(g.has(e)||g.set(e,y(e,o,h)),g.get(e)),m=new Map,x=e=>{if(!m.has(e)){let t=ee(e,{fill:e.inlineStyle?.fill??o.nodeFillColor??"var(--_node-fill)",stroke:e.inlineStyle?.stroke??o.nodeBorderColor??"var(--_node-stroke)",strokeWidth:ta("stroke-width",e.inlineStyle?.["stroke-width"]??String(o.nodeLineWidth??eJ.innerBox))},o.cornerRadius);m.set(e,td({kind:"shape",id:e.id,role:"node",geometry:f(t.geometry),paint:t.paint,...t.childPaints?{childPaints:t.childPaints}:{}}))}return m.get(e)};try{let o,a,g;for(let t=0;t<e.length;t++){if(!s[t])continue;let i=x(e[t]);if(!c(i))return!1;for(let r=0;r<e.length;r++){if(r===t||s[r]&&r<t)continue;if(!h())return!1;let n=x(e[r]);if(!c(n)||p(i,n))return!1}}for(let n=0;n<e.length;n++){let o=e[n];for(let e=0;e<t.length;e++){let a=t[e];if(!s[n]&&!d[e]||"invisible"===a.style)continue;if(!h()||a.source===o.id&&l(a,o)>l(r[e],i[n])||a.target===o.id&&l(a,void 0,o)>l(r[e],void 0,i[n]))return!1;let g=u(a);if(!g)return!1;let f=x(o);if(!c(f))return!1;if(a.source!==o.id&&a.target!==o.id){for(let e of g.shafts)if(!h()||p(f,e))return!1}for(let e of g.markers)if(("start"===e.position?a.source:a.target)!==o.id&&(!h()||!c(e.bounds)||p(f,e.bounds)))return!1;if(g.label&&(!h()||p(f,g.label)))return!1}}return o=e.filter((e,t)=>e.x!==i[t].x||e.y!==i[t].y),a=t.filter((e,t)=>"invisible"!==e.style&&tX(e,r[t])),g=e=>{if(!h())return!1;if(!e.concurrencyRegion&&0!==e.width){let t=e.headerHeight??e.height;if(!Number.isFinite(e.width)||e.width<0||!Number.isFinite(t)||t<0)return!1;if(t>0&&e.width>0){let i=te({x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+t},tt(f({kind:"rect",x:e.x,y:e.y,width:e.width,height:t})));if(!c(i))return!1;for(let e of o){if(!h())return!1;let t=x(e);if(!c(t))return!1;let r=te(t,{x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height});if(!c(r)||p(r,i))return!1}for(let e of a){let t=u(e);if(!t)return!1;for(let e of t.shafts)if(!h()||p(e,i))return!1;for(let e of t.markers)if(!h()||!c(e.bounds)||p(e.bounds,i))return!1}}}return e.children.every(g)},n.every(g)}catch{return!1}}function tY(e,t){return{nodes:e.map(e=>({...e})),edges:t.map(e=>({...e,points:e.points.map(e=>({...e})),...e.labelPosition?{labelPosition:{...e.labelPosition}}:{}}))}}function tq(e,t,i,r){e.forEach((e,t)=>{e.x!==i[t].x&&(e.x=i[t].x),e.y!==i[t].y&&(e.y=i[t].y)}),t.forEach((e,t)=>{let i=r[t];tX(i,e)&&(e.points=i.points),(i.labelPosition?.x!==e.labelPosition?.x||i.labelPosition?.y!==e.labelPosition?.y)&&(e.labelPosition=i.labelPosition),i.routeCertificate!==e.routeCertificate&&(e.routeCertificate=i.routeCertificate)})}function tQ(e,t,i){for(let r of i)if(r!==e){for(let e=1;e<r.points.length;e++)if(function(e,t,i,r=2){let n=i.x-r,o=i.x+i.w+r,a=i.y-r,s=i.y+i.h+r;if(.01>Math.abs(e.x-t.x)){let i=Math.min(e.y,t.y),r=Math.max(e.y,t.y);return e.x>=n&&e.x<=o&&r>=a&&i<=s}if(.01>Math.abs(e.y-t.y)){let i=Math.min(e.x,t.x),r=Math.max(e.x,t.x);return e.y>=a&&e.y<=s&&r>=n&&i<=o}return!1}(r.points[e-1],r.points[e],t))return!0}return!1}function tK(e,t){for(let i=1;i<e.length;i++)for(let r=1;r<t.length;r++){let n=e[i-1],o=e[i],a=t[r-1],s=t[r],l=(o.x-n.x)*(s.y-a.y)-(o.y-n.y)*(s.x-a.x);if(1e-9>Math.abs(l))continue;let d=((a.x-n.x)*(s.y-a.y)-(a.y-n.y)*(s.x-a.x))/l,h=((a.x-n.x)*(o.y-n.y)-(a.y-n.y)*(o.x-n.x))/l;if(d>.001&&d<.999&&h>.001&&h<.999)return!0}return!1}function tJ(e,t,i){let r=new Map(t.map(e=>[e.edge,e])),n=new Set,o=e.map((e,t)=>{let i=r.get(e);return i?(n.add(t),{...e,points:i.points,labelPosition:i.label}):e}),{nodes:a,style:s}=i;return $({nodes:a,edges:o},s,n).total<=$({nodes:a,edges:e},s,n).total}function tZ(e,t,i,r){let n=new Map(t.map(e=>[e.edge,e.points])),o=new Set,a=e.map((e,t)=>{let i=n.get(e);return i?(o.add(t),{...e,points:i}):e});for(let t of o){let r=e[t],n=a[t];if(J(r,n.points,a,i,n))return"marker-blocked"}if(r?.labelClearance&&!tJ(e,t,r.labelClearance))return!1;let s=F(a,o)-F(e,o);if(!r?.allowCrossingsForOverlap)return s<=0;let l=_(e,o)-_(a,o);return!(l<0)&&(s<=0||s<=l)}function t0(e,t,i){if(!t)return;let r=i?0:e.length-1,n=i?1:-1,o=e[r];if(!o)return!1;for(let i=r+n;i>=0&&i<e.length;i+=n){let r=e[i];if(r.x!==o.x||r.y!==o.y)return eo(t,o,r)}return!1}function t1(e,t,i){let r={...e,points:e.points.filter((t,i)=>0===i||t.x!==e.points[i-1].x||t.y!==e.points[i-1].y).map(e=>({...e}))};return d(r,t,i),t&&(r.points=ed(r.points,t,!0)),i&&(r.points=ed(r.points,i,!1)),r}function t2(e,t,i,r){if(e.length<2||void 0===i&&void 0===r)return e;let n=e.map(e=>({...e})),o=t?"x":"y";for(let[e,t,a]of[[i,0,1],[r,n.length-1,n.length-2]]){if(void 0===e)continue;let i=n[t],r=n[a];i[o]+=e,r[o]===i[o]-e&&(r[o]+=e)}return n}function t5(e,t,i){let r=[];for(let n of i)e>=n.x&&e<=n.x+n.width&&t>=n.y&&t<=n.y+n.height&&(r.push(n),r.push(...t5(e,t,n.children)));return r}function t6(e,t,i,r,n){let o="LR"===n,a="RL"===n,s=o||a,l=new Set(t5(t,i,r).map(e=>e.id)),d=t5(s?e:t,s?i:e,r).find(e=>!l.has(e.id));return d?o?d.x-12:a?d.x+d.width+12:"BT"===n?d.y+d.height+12:d.y-12:e}function t4(e,t){let i=new Set(e),r=new Map(e.map((e,t)=>[e,t])),n=new Map(e.map(e=>[e,new Set])),o=new Map(e.map(e=>[e,0])),a=(e,t)=>{let i=new Set,r=[e];for(;r.length>0;){let e=r.pop();if(e===t)return!0;if(!i.has(e))for(let t of(i.add(e),n.get(e)??[]))r.push(t)}return!1};for(let e of t){if(e.source===e.target||!i.has(e.source)||!i.has(e.target))continue;let t=e.source,r=e.target,s=n.get(t);s.has(r)||a(r,t)||(s.add(r),o.set(r,(o.get(r)??0)+1))}let s=(e,t)=>(r.get(e)??0)-(r.get(t)??0),l=e.filter(e=>(o.get(e)??0)===0).sort(s),d=e=>{let t=l.length;for(l.push(e);t>0;){let i=t-1>>>1;if(0>=s(l[i],e))break;l[t]=l[i],t=i}l[t]=e},h=[];for(;l.length>0;){let e=l[0],t=l.pop();if(l.length){let e=0;for(;2*e+1<l.length;){let i=2*e+1;if(i+1<l.length&&0>s(l[i+1],l[i])&&i++,0>=s(t,l[i]))break;l[e]=l[i],e=i}l[e]=t}for(let t of(h.push(e),Array.from(n.get(e)??[]).sort(s))){let e=(o.get(t)??0)-1;o.set(t,e),0===e&&d(t)}}if(h.length<e.length){let t=new Set(h);h.push(...e.filter(e=>!t.has(e)).sort(s))}return h}function t8(e,t,i,r,n="TB",o,a){let s=a??eP(t,r,"node");if("state-fork"===i||"state-join"===i){let e=o?.forkWidth??70,t=o?.forkHeight??10;return"LR"===n||"RL"===n?{width:t,height:e}:{width:e,height:t}}if("state-choice"===i)return{width:36,height:36};if("state-history"===i)return{width:32,height:32};let l=s.width+2*r.nodePaddingX,d=s.height+2*r.nodePaddingY;if("service"===i&&(l=Math.max(l+34,120),d=Math.max(d+6,48)),"diamond"===i){let e=Math.max(l,d)+r.diamondExtraPadding;l=e,d=e}if("circle"===i||"doublecircle"===i){let e=Math.ceil(Math.sqrt(l*l+d*d))+8;d=l="doublecircle"===i?e+12:e}return"ellipse"===i&&(l=Math.ceil(l*Math.SQRT2),d=Math.ceil(d*Math.SQRT2)),"hexagon"===i&&(l+=r.nodePaddingX),("trapezoid"===i||"trapezoid-alt"===i||"lean-r"===i||"lean-l"===i)&&(l+=r.nodePaddingX),"asymmetric"===i&&(l+=12),"cylinder"===i&&(d+=14),"state-start"===i||"state-end"===i?{width:28,height:28}:{width:l=Math.max(l,60),height:d=Math.max(d,36)}}function t3(e,t){let i=new Map;if(eU("APL_NO_CORANK_FANIN"))return i;let r=new Map;for(let t=0;t<e.edges.length;t++){let i=e.edges[t];i.source!==i.target&&(r.has(i.target)||r.set(i.target,[]),r.get(i.target).push(t))}for(let[n,o]of r){if(o.length<2)continue;let r=o.filter(t=>!!e.edges[t].label),a=o.filter(t=>!e.edges[t].label);if(0===r.length||0===a.length)continue;let s=e.nodes.get(n)?.shape;if(void 0===s||!eb.has(s))continue;let l=t=>e.nodes.get(t)?.shape==="rectangle";if(!o.every(t=>l(e.edges[t].source)))continue;let d=0,h=0;for(let i of r){let r=eP(e9(e.edges[i].label,e.edges[i].labelContent),t,"edge");r.text,d=Math.max(d,r.width+8),h=Math.max(h,r.height+6)}for(let e of a)i.set(e,{width:d,height:h})}return i}function t9(e){return{text:" ",width:e.width,height:e.height,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}}function t7(e,t){return t>em({})&&function(e){let t=new Map,i=new Map;for(let{source:r,target:n}of e){if(r===n)return!0;t.set(r,t.get(r)??0),t.set(n,(t.get(n)??0)+1),i.set(r,[...i.get(r)??[],n])}let r=[...t].filter(([,e])=>0===e).map(([e])=>e),n=0;for(let e=r.pop();void 0!==e;e=r.pop())for(let o of(n++,i.get(e)??[])){let e=t.get(o)-1;t.set(o,e),0===e&&r.push(o)}return n<t.size}(e.edges)?{"elk.spacing.edgeNode":String(t)}:{}}function ie(e,t,i){var r;let n,o,a,s,l,d,g,{hook:u,corridor:f}=function(e,t){let i=em(e),r=0;for(let[n,o]of t.edges.entries()){if("invisible"===o.style)continue;let a={...o,inlineStyle:eK(n,t)},s=em(e,a,"start"),l=em(e,a,"end");i=Math.max(i,s,l),r=Math.max(r,(o.hasArrowStart?s-(e.edgeBendRadius??0):0)+(o.hasArrowEnd?l-(e.edgeBendRadius??0):0))}return{hook:i,corridor:r}}(i,e);t={...t,layerSpacing:Math.max(t.layerSpacing??eO.layerSpacing,f),markerPortExtents:t.preserveSubgraphChildOrder||t.stateVisual?void 0:function(e,t){let i=new Map;for(let r=0;r<e.edges.length;r++){let n=e.edges[r],o=e.nodes.get(n.target);if(!o||"rectangle"!==o.shape||o.semanticShape||"invisible"===n.style||n.source===n.target)continue;let a=i.get(o.id)??{count:0,span:0,known:!0};a.count++;let s="thick"===n.style?2:1,l=t.lineWidth*s,d=(Number.isFinite(l)&&l>0?U({...n,curve:void 0,points:[{x:0,y:0},{x:100,y:0}],inlineStyle:eK(r,e)},{...t,lineWidth:Number(tn(l))/s,edgeBendRadius:0}):void 0)?.find(e=>"end"===e.position);!n.hasArrowEnd||d?.bounds&&Object.values(d.bounds).every(Number.isFinite)?d?.bounds&&(a.span=Math.max(a.span,d.bounds.y1-d.bounds.y0)):a.known=!1,i.set(o.id,a)}let r=new Map;for(let[e,t]of i)t.count<2||!t.known||t.span<=0||r.set(e,{count:t.count,span:t.span});return r}(e,i)};let c=new Set,p=new Set;for(let t of e.subgraphs)p.add(t.id),function e(t,i,r){for(let e of t.nodeIds)i.add(e);for(let n of t.children)r.add(n.id),e(n,i,r)}(t,c,p);let y=new Map;for(let t of e.edges)t.source===t.target&&y.set(t.source,(y.get(t.source)??0)+1);let m=Math.max(0,...y.values());m>4&&(t={...t,layerSpacing:Math.max(t.layerSpacing,t.layerSpacing+(m-4)*16)});let x=t.disableCorankFanIn?new Map:t3(e,i),b=function(e){let t=new Map;for(let i of e)!function e(i){for(let e of i.nodeIds)t.set(e,i.id);for(let t of i.children)e(t)}(i);return t}(e.subgraphs),w=function(e){let t=new Map;for(let i of e)!function e(i,r){for(let e of i.nodeIds)t.set(e,r);for(let t of i.children)e(t,r)}(i,i.id);return t}(e.subgraphs),M=function(e){let t=new Map;for(let i of e)!function e(i,r){let n=[...r,i.id];for(let e of i.nodeIds)t.set(e,n);for(let t of i.children)e(t,n)}(i,[]);return t}(e.subgraphs),v=function(e){let t=new Map;for(let i of e)!function e(i,r){for(let n of(t.set(i.id,r),i.children))e(n,i.id)}(i,void 0);return t}(e.subgraphs),S=function(e){let t=new Map;for(let i of e)!function e(i,r){let n=[...r,i.id];for(let r of(t.set(i.id,n),i.children))e(r,n)}(i,[]);return t}(e.subgraphs),k=e=>b.get(e)??v.get(e),E=e=>M.get(e)??S.get(e)?.slice(0,-1)??[],P=il(e,t),N=function(e,t){let i=h(e),r=new Set,n=new Set,o=function(e){let t=new Set,i=(e,r)=>{let n=r||void 0!==e.direction;if(n)for(let i of e.nodeIds)t.add(i);for(let t of e.children)i(t,n)};for(let t of e)i(t,!1);return t}(e.subgraphs),a=new Set;for(let t=0;t<e.edges.length;t++){let o=e.edges[t],s=i[t]??"primary-forward";"primary-forward"===s&&o.label&&a.add(`${o.source}\0${o.target}`),"primary-forward"!==s&&(r.add(o.source),r.add(o.target)),"primary-forward"!==s&&"feedback"!==s&&(n.add(o.source),n.add(o.target))}let s=[],l=[],d=e=>e.replace(/[^A-Za-z0-9_\-]/g,"_"),g=(e,t,i)=>{l.push({edgeIndex:e,routeClass:t,reason:i})};for(let l=0;l<e.edges.length;l++){let h=e.edges[l],u=i[l]??"primary-forward";if(h.source===h.target){g(l,u,"self-loop");continue}if(t.has(h.source)||t.has(h.target)){g(l,u,"subgraph-endpoint");continue}if(!e.nodes.has(h.source)||!e.nodes.has(h.target)){g(l,u,"missing-node");continue}if("primary-forward"!==u&&"feedback"!==u){g(l,u,"unsupported-route-class");continue}if("primary-forward"===u&&(r.has(h.source)||r.has(h.target))){g(l,u,"unsafe-non-primary-incident");continue}if("feedback"===u&&h.label){g(l,u,"unsupported-route-class");continue}if("feedback"===u&&a.has(`${h.target}\0${h.source}`)){g(l,u,"labeled-reciprocal-primary");continue}if("feedback"===u&&(!ii(e.nodes.get(h.source))||!ii(e.nodes.get(h.target)))){g(l,u,"unsupported-shape");continue}if(n.has(h.source)||n.has(h.target)){g(l,u,"unsafe-non-primary-incident");continue}if(o.has(h.source)||o.has(h.target)){g(l,u,"direction-override-node");continue}let f=function(e,t){let i=function(e){switch(e){case"RL":return{source:"W",target:"E"};case"BT":return{source:"N",target:"S"};case"TD":case"TB":return{source:"S",target:"N"};default:return{source:"E",target:"W"}}}(e);return"feedback"===t?{source:i.target,target:i.source}:i}(e.direction,u);s.push({nodeId:h.source,portId:`rp_${d(h.source)}_${l}_s`,side:f.source,edgeIndex:l,sourceId:h.source,targetId:h.target,endpoint:"source",slotIndex:0,routeClass:u,labeled:!!h.label,constraint:"FIXED_SIDE"}),s.push({nodeId:h.target,portId:`rp_${d(h.target)}_${l}_t`,side:f.target,edgeIndex:l,sourceId:h.source,targetId:h.target,endpoint:"target",slotIndex:0,routeClass:u,labeled:!!h.label,constraint:"FIXED_SIDE"})}let u=new Map;for(let e of s){let t=u.get(e.nodeId)??[];t.push(e),u.set(e.nodeId,t)}for(let t of u.values()){var f;t.sort((e,t)=>ir(e.side)-ir(t.side)||e.edgeIndex-t.edgeIndex||io(e.endpoint)-io(t.endpoint));let i=new Map;for(let e of t){let t=i.get(e.side)??0;e.slotIndex=t,i.set(e.side,t+1)}let r=(f=e.nodes.get(t[0].nodeId),f?.shape==="rectangle"&&function(e){if(e.length<2||!e.every(e=>"primary-forward"===e.routeClass&&!e.labeled))return!1;let t=e[0].side;if(!e.every(e=>e.side===t))return!1;let i=new Map;for(let t of e){let e=`${t.sourceId}\0${t.targetId}`;i.set(e,(i.get(e)??0)+1)}return!![...i.values()].some(e=>e>=2)&&(!!e.every(e=>"target"===e.endpoint)||!!e.every(e=>"source"===e.endpoint)&&e.every(e=>(i.get(`${e.sourceId}\0${e.targetId}`)??0)>=2))}(t));for(let e of t)r?(e.constraint="FIXED_ORDER",e.orderReason="primary-duplicate-face"):(e.constraint="FIXED_SIDE",e.orderReason=void 0)}let c=new Map;for(let e of s)c.set(it(e.edgeIndex,e.endpoint),e);return{byEndpoint:c,byNode:u,relaxations:l}}(e,p),C=new Map,I=new Map,L,R=t=>{L??=new Set([...e.nodes.keys(),...p,...[...N.byEndpoint.values()].map(e=>e.portId)]);let i=t;for(;L.has(i);)i+="_";return L.add(i),i},O=(e,t,i)=>{let r=R(`${e}_${i}_${t}`),n=C.get(e)??[];return n.push({id:r,direction:i}),C.set(e,n),r},$=(e,t)=>{let r=p.has(e.source)&&E(e.target).includes(e.source),n=p.has(e.target)&&E(e.source).includes(e.target),o=r?S.get(e.source):E(e.source),a=n?S.get(e.target):E(e.target),s=ig(o,a),l=s?o.indexOf(s)+1:0,d=r?O(e.source,t,"in"):N.byEndpoint.get(it(t,"source"))?.portId??e.source,h=n?O(e.target,t,"out"):N.byEndpoint.get(it(t,"target"))?.portId??e.target,g=0,u=(r,n,o,a=!1)=>{let s=a?function(e,t,i,r,n,o){let a={id:`e${e}`,sources:[i],targets:[r]};if(t.label&&!eU("APL_DECOUPLE_LABELS")){let e=eP(e9(t.label,t.labelContent),n,"edge");a.labels=[{text:e.text,width:e.width+8,height:e.height+6,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}]}else!t.label&&o?.has(e)&&(a.labels=[t9(o.get(e))]);return a}(t,e,n,o,i,x):{id:`e${t}_internal_${g}`,sources:[n],targets:[o]},l={...s,id:R(s.id),hierarchySegment:{edgeIndex:t,order:g++}},d=I.get(r??null)??[];d.push(l),I.set(r??null,d)};for(let e of o.slice(l).reverse()){let i=O(e,t,"out");u(e,d,i),d=i}let f=a.slice(l).map(e=>({scope:e,port:O(e,t,"in")}));u(s,d,f[0]?.port??h,!0);for(let e=0;e<f.length;e++){let t=f[e];u(t.scope,t.port,f[e+1]?.port??h)}},z=new Map;z.set(null,[]);for(let t=0;t<e.edges.length;t++){let i=e.edges[t],r=k(i.source),n=k(i.target);if(r&&r===n)z.has(r)||z.set(r,[]),z.get(r).push({index:t,edge:i});else if(r||n)if(P)$(i,t);else{let e=ig(E(i.source),E(i.target));e?(z.has(e)||z.set(e,[]),z.get(e).push({index:t,edge:i})):z.get(null).push({index:t,edge:i})}else z.get(null).push({index:t,edge:i})}let A={id:"root",layoutOptions:{"elk.algorithm":"layered","elk.direction":e4(e.direction),"elk.spacing.nodeNode":String(t.nodeSpacing),"elk.layered.spacing.nodeNodeBetweenLayers":String(t.layerSpacing),"elk.spacing.edgeEdge":"12","elk.layered.spacing.edgeEdgeBetweenLayers":"12","elk.layered.spacing.edgeNodeBetweenLayers":String(u),...t7(e,u),"elk.padding":`[top=${t.padding},left=${t.padding},bottom=${t.padding},right=${t.padding}]`,"elk.edgeRouting":"ORTHOGONAL","elk.layered.nodePlacement.bk.fixedAlignment":"BALANCED","elk.contentAlignment":"H_CENTER V_CENTER","elk.layered.thoroughness":String(eO.thoroughness),"elk.layered.highDegreeNodes.treatment":"true","elk.layered.highDegreeNodes.threshold":"8","elk.layered.compaction.postCompaction.strategy":"LEFT_RIGHT_CONSTRAINT_LOCKING","elk.layered.considerModelOrder.strategy":"NODES_AND_EDGES","elk.layered.cycleBreaking.strategy":"MODEL_ORDER","elk.layered.feedbackEdges":"true","elk.layered.crossingMinimization.forceNodeModelOrder":"true","elk.layered.wrapping.strategy":"OFF","elk.hierarchyHandling":P?"SEPARATE":"INCLUDE_CHILDREN"},children:[],edges:[]},B=!t.preserveSubgraphChildOrder,F=new Map(e.subgraphs.map(e=>[e.id,e]));for(let d of(r=!!t.preserveSubgraphChildOrder,n=[],o=new Set,a=e=>{o.has(e)||(o.add(e),n.push(e))},s=()=>{for(let t of e.nodes.keys()){let e=w.get(t);e?a(e):c.has(t)||p.has(t)||a(t)}},l=()=>{for(let t of e.subgraphs)a(t.id)},r?(l(),s()):(s(),l()),t4(n,e.edges.map(e=>({source:w.get(e.source)??e.source,target:w.get(e.target)??e.target}))))){let r=F.get(d);if(r){A.children.push(function e(t,i,r,n,o,a,s,l,d,h,g,u,f="TB"){let c=ih(t,n),p=t.concurrencyRegion?r.stateVisual?.dividerMargin??0:0,y=t.direction??f,m={"elk.algorithm":"layered","elk.padding":`[top=${c+n.groupPaddingY+p},left=${n.groupPaddingX+p},bottom=${n.groupPaddingY+p},right=${n.groupPaddingX+p}]`,"elk.edgeRouting":"ORTHOGONAL","elk.contentAlignment":"H_CENTER V_CENTER","elk.spacing.edgeEdge":"12","elk.layered.spacing.edgeEdgeBetweenLayers":"12","elk.layered.spacing.edgeNodeBetweenLayers":String(o),...t7(i,o),"elk.layered.nodePlacement.bk.fixedAlignment":"BALANCED","elk.layered.spacing.nodeNodeBetweenLayers":String(r.layerSpacing),"elk.spacing.nodeNode":String(r.nodeSpacing)};(t.direction||u)&&(m["elk.direction"]=e4(y));let x=id(t,n);x>0&&u&&(m["elk.nodeSize.constraints"]="MINIMUM_SIZE",m["elk.nodeSize.minimum"]=`(${x}, 0)`);let b={id:t.id,layoutOptions:m,labels:t.label?[{text:t.label}]:void 0,children:[],edges:[],...void 0!==t.headerMinHeight&&0===t.nodeIds.length&&0===t.children.length?{width:Math.max(x,2*n.groupPaddingX),height:c+2*n.groupPaddingY}:{}},w=s.get(t.id)??[];if(w.length>0){let e=c>0,t=eF(i.direction);b.ports=w.map(i=>{let r="in"===i.direction?t.targetSide:t.sourceSide,n="N"===r?"in"===i.direction?"W":"E":r;return{id:i.id,...e&&("N"===r||"BT"===y)?{layoutOptions:{"elk.port.side":ia(n)}}:{}}}),e&&(b.layoutOptions["elk.portConstraints"]="FIXED_SIDE")}for(let e of h?t4(t.nodeIds,i.edges):t.nodeIds){let t=i.nodes.get(e);t&&b.children.push(is(e,t,n,d,y,r.stateVisual,r.nodeSizes?.get(e),r.markerPortExtents?.get(e)))}for(let f of t.children)b.children.push(e(f,i,r,n,o,a,s,l,d,h,g,u,y));for(let{index:e,edge:i}of a.get(t.id)??[]){let t={id:`e${e}`,sources:[d.byEndpoint.get(it(e,"source"))?.portId??i.source],targets:[d.byEndpoint.get(it(e,"target"))?.portId??i.target]};if(i.label&&!eU("APL_DECOUPLE_LABELS")){let e=eP(e9(i.label,i.labelContent),n,"edge");t.labels=[{text:e.text,width:e.width+8,height:e.height+6,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}]}else!i.label&&g.has(e)&&(t.labels=[t9(g.get(e))]);b.edges.push(t)}for(let e of l.get(t.id)??[])b.edges.push(e);return b}(r,e,t,i,u,z,C,I,N,B,x,P,e.direction));continue}let n=e.nodes.get(d);!n||c.has(d)||p.has(d)||A.children.push(is(d,n,i,N,e.direction,t.stateVisual,t.nodeSizes?.get(d),t.markerPortExtents?.get(d)))}for(let{index:e,edge:t}of z.get(null)){let r={id:`e${e}`,sources:[N.byEndpoint.get(it(e,"source"))?.portId??t.source],targets:[N.byEndpoint.get(it(e,"target"))?.portId??t.target]};if(t.label&&!eU("APL_DECOUPLE_LABELS")){let e=eP(e9(t.label,t.labelContent),i,"edge");r.labels=[{text:e.text,width:e.width+8,height:e.height+6,layoutOptions:{"elk.edgeLabels.inline":"true","elk.edgeLabels.placement":"CENTER"}}]}else!t.label&&x.has(e)&&(r.labels=[t9(x.get(e))]);A.edges.push(r)}for(let e of I.get(null)??[])A.edges.push(e);return function(e,t,i){if(!i)return;let r=new Map,n=e=>{for(let t of e.children??[])r.set(t.id,{node:t,parent:e}),n(t)};n(e);let o=e=>{let i=r.get(e);return i&&t.nodes.has(e)||tp(`unknown node "${e}"`),i},a=new Set;if(i.ranks)for(let[e,t]of Object.entries(i.ranks)){let{node:i,parent:r}=o(e);(!Number.isSafeInteger(t)||t<0||t>1e4)&&tp(`rank for "${e}" must be an integer in [0,10000]`),a.add(r),r.layoutOptions={...r.layoutOptions,"elk.partitioning.activate":"true"},i.layoutOptions={...i.layoutOptions,"elk.partitioning.partition":String(t)}}for(let e of a)for(let t of e.children??[])t.layoutOptions={"elk.partitioning.partition":"0",...t.layoutOptions};let s=new Set;for(let e of i.adjacent??[]){e.length<2&&tp("adjacent needs two or more nodes");let t=e.map(o),i=t[0].parent;for(let r of(t.some(e=>e.parent!==i)&&tp("adjacent nodes need the same container"),e))s.has(r)&&tp("a node cannot repeat in adjacency groups"),s.add(r);let r=i.children,n=Math.min(...t.map(e=>r.indexOf(e.node)));i.children=[...r.slice(0,n),...t.map(e=>e.node),...r.slice(n).filter(t=>!e.includes(t.id))],i.layoutOptions={...i.layoutOptions,"elk.layered.crossingMinimization.forceNodeModelOrder":"true"}}let l=eR(t.edges),d=new Set((i.shortEdges??[]).map(e=>{let t=l.get(e);return void 0===t&&tp(`unknown edge "${e}"`),t})),h=e=>{for(let t of e.edges??[]){let e=/^e(\d+)(?:_|$)/.exec(t.id);e&&d.has(Number(e[1]))&&(t.layoutOptions={...t.layoutOptions,"elk.layered.priority.shortness":"100","elk.layered.priority.direction":"100"})}e.children?.forEach(h)};h(e)}(A,e,t.layoutHints),P&&C.size>0&&(d=e=>"RIGHT"===e||"LEFT"===e,(g=e=>{let t=d(e.layoutOptions?.["elk.direction"]),i=!1;for(let r of e.children??[])void 0!==r.children&&(!i&&C.has(r.id)&&(i=d(r.layoutOptions?.["elk.direction"])!==t||(r.ports??[]).some(e=>{let i=e.layoutOptions?.["elk.port.side"];return t?"NORTH"===i||"SOUTH"===i:"EAST"===i||"WEST"===i})),g(r));i&&e.layoutOptions?.["elk.layered.crossingMinimization.forceNodeModelOrder"]==="true"&&(e.layoutOptions["elk.layered.crossingMinimization.forceNodeModelOrder"]="false",e.layoutOptions["elk.layered.considerModelOrder.strategy"]??="NODES_AND_EDGES")})(A)),A}function it(e,t){return`${e}:${t}`}function ii(e){return e?.shape==="rectangle"||e?.shape==="diamond"}function ir(e){return({N:0,E:1,S:2,W:3})[e]}function io(e){return+("source"!==e)}function ia(e){switch(e){case"N":return"NORTH";case"E":return"EAST";case"S":return"SOUTH";case"W":return"WEST"}}function is(e,t,i,r,n="TB",o,a,s){let l=a??t8(e,e9(t.label,t.labelContent),t.shape,i,n,o,t.labelBlock),d="LR"===n||"RL"===n,h=d?l.height:l.width;if(!a&&s){let e=Math.max(s.span,Math.min(i.cornerRadius??0,(d?l.width:l.height)/2));if(!(h/(s.count+1)>e)){let t=(s.count+1)*(e+1);Number.isFinite(t)&&t>h&&(h=t)}}let g={id:e,width:d?l.width:h,height:d?h:l.height,labels:[{text:t.label}]},u=r.byNode.get(e);if(u&&u.length>0){let e=u.some(e=>"FIXED_ORDER"===e.constraint)?"FIXED_ORDER":"FIXED_SIDE";g.layoutOptions={...g.layoutOptions??{},"elk.portConstraints":e},g.ports=u.map(e=>({id:e.portId,width:0,height:0,layoutOptions:{"elk.port.side":ia(e.side),"elk.port.index":String(e.slotIndex)}}))}return g}function il(e,t){let i=e=>void 0!==e.direction||e.children.some(i);return!0===t.separateHierarchy||e.subgraphs.some(i)}function id(e,t){if(!e.label||e.concurrencyRegion||void 0===e.headerMinHeight&&0===e.nodeIds.length&&0===e.children.length)return 0;let i=eP(e9(e.label,e.labelContent),t,"group").width;return Math.ceil((e.titleOffset??t.groupLabelPaddingX)+i+t.groupLabelPaddingX)}function ih(e,t,i=eP(e9(e.label,e.labelContent),t,"group")){if(e.concurrencyRegion)return 0;let r=t.groupHeaderFontSize+16+i.height-i.lineHeight;if(void 0===e.headerMinHeight)return r;if(!Number.isFinite(e.headerMinHeight)||e.headerMinHeight<=0)throw RangeError("Invalid internal group header minimum");return Math.max(r,e.headerMinHeight)}function ig(e,t){let i;for(let r=0;r<Math.min(e.length,t.length)&&e[r]===t[r];r++)i=e[r];return i}function iu(e,t=!1){let i=new Set;for(let r of e){if(r.source===r.target||t&&!r.label)continue;let e=JSON.stringify([r.source,r.target]);if(i.has(e))return!0;i.add(e)}return!1}var ic=[{id:"extractEdgesRecursively",after:[],mutates:["extract"],determinism:"pure-order",run:e=>{e.elkResult&&function(e,t,i,n,o,a){let s=new Map,l=new Map,d=(e,t,i)=>{for(let r of(l.set(e.id,{x:t,y:i}),e.children??[]))d(r,t+(r.x??0),i+(r.y??0))};d(e,0,0),function e(t,i,r,n,o){if(t.edges)for(let e of t.edges){let t,a=e.hierarchySegment,s=a?.edgeIndex??parseInt(e.id.substring(1),10);if(isNaN(s))continue;let l=e.container?o.get(e.container):void 0,d=l?.x??r,h=l?.y??n,g=[];if(e.sections&&e.sections.length>0){let t=e.sections[0];if(g.push({x:t.startPoint.x+d,y:t.startPoint.y+h}),t.bendPoints)for(let e of t.bendPoints)g.push({x:e.x+d,y:e.y+h});g.push({x:t.endPoint.x+d,y:t.endPoint.y+h})}if(e.labels&&e.labels.length>0){let i=e.labels[0];null!=i.x&&null!=i.y&&(t={x:i.x+(i.width??0)/2+d,y:i.y+(i.height??0)/2+h})}let u=i.get(s)??[];u.push({order:a?.order??0,points:g,labelPosition:t}),i.set(s,u)}if(t.children)for(let a of t.children)e(a,i,r+(a.x??0),n+(a.y??0),o)}(e,s,0,0,l);let h=0;for(let[e,n]of s){let o,s=t.edges[e];if(!s)continue;let l=[];for(let e of n.sort((e,t)=>e.order-t.order)){let t=l.at(-1),i=t?r([t,...e.points]).slice(1):r(e.points),n=i[0],o=i[1],a=t&&n&&1e-6>Math.abs(t.x-n.x)&&1e-6>Math.abs(t.y-n.y),s=t&&n&&o&&(t.x===n.x&&n.x===o.x&&n.y>=Math.min(t.y,o.y)&&n.y<=Math.max(t.y,o.y)||t.y===n.y&&n.y===o.y&&n.x>=Math.min(t.x,o.x)&&n.x<=Math.max(t.x,o.x));l.push(...a||s?i.slice(1):i)}s.label&&l.length>=2&&(o=n.find(e=>e.labelPosition)?.labelPosition??eB(l));let d=function(e,t,i=0){if(e.length<2)return e;let r=!1;for(let t=1;t<e.length;t++){let i=Math.abs(e[t].x-e[t-1].x),n=Math.abs(e[t].y-e[t-1].y);if(i>1&&n>1){r=!0;break}}if(!r)return e;let n=[e[0]];for(let r=1;r<e.length;r++){let o=n[n.length-1],a=e[r],s=Math.abs(a.x-o.x),l=Math.abs(a.y-o.y);if(s>1&&l>1)if(t){let e=i%2==0,r=12*Math.floor(i/2),s=e?t.rightX+r:t.leftX-r;n.push({x:s,y:o.y}),n.push({x:s,y:a.y})}else{let e=(o.y+a.y)/2;n.push({x:o.x,y:e}),n.push({x:a.x,y:e})}n.push(a)}return n}(l,a,h);d!==l&&h++,s.label&&d!==l&&d.length>=2&&(o=eB(d)),i.push({source:s.source,target:s.target,...void 0!==s.id?{id:s.id}:{},label:s.label,...s.labelContent?{labelContent:s.labelContent}:{},style:s.style,hasArrowStart:s.hasArrowStart,hasArrowEnd:s.hasArrowEnd,startMarker:s.startMarker,endMarker:s.endMarker,...s.curve?{curve:s.curve}:{},...s.animate?{animate:!0}:{},...s.animation?{animation:s.animation}:{},points:d,labelPosition:o,inlineStyle:eK(e,t),...s.id&&t.classAssignments.has(s.id)?{classNames:t.classAssignments.get(s.id).split(/\s+/).filter(Boolean)}:{},edgeIndex:e})}}(e.elkResult,e.graph,e.edges,0,0,e.margins),ip(e,e.style)}},{id:"alignLayerNodes",after:["extractEdgesRecursively"],mutates:["positions","edges"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,mayChangeMetrics:{bends:"improve-only",straight:"improve-only"},run:e=>{!function(e,t,i){if(0===e.length)return;let r="LR"===i||"RL"===i,n=new Set,o=new Map;for(let e of t)for(let t of(n.add(`${e.source}:${e.target}`),n.add(`${e.target}:${e.source}`),new Set([e.source,e.target]))){let i=o.get(t)??[];i.push(e),o.set(t,i)}let a=new Map(e.map(e=>[e.id,e])),s=.6*eO.layerSpacing,l=[...e].sort((e,t)=>r?e.x-t.x:e.y-t.y),d=[],h=[l[0]];for(let e=1;e<l.length;e++){let t=(r?l[e].x:l[e].y)-(r?l[e-1].x:l[e-1].y),i=h.some(t=>n.has(`${t.id}:${l[e].id}`));t<=s&&!i?h.push(l[e]):(d.push(h),h=[l[e]])}d.push(h);let g=new Map,u=(e,i)=>{let n=r?i:e.x,o=r?e.y:i;for(let i of t)if(i.source!==e.id&&i.target!==e.id)for(let t=1;t<i.points.length;t++){let r=i.points[t-1],a=i.points[t],s=Math.min(r.x,a.x),l=Math.max(r.x,a.x),d=Math.min(r.y,a.y),h=Math.max(r.y,a.y);if(l>n+.5&&s<n+e.width-.5&&h>o+.5&&d<o+e.height-.5)return!0}return!1};for(let e of d){if(e.length<=1)continue;let t=e.map(e=>r?e.x:e.y),i=Math.min(...t),n=Math.max(...t);if(n-i<=1)continue;let s=(i+n)/2;if(e.some(e=>Math.abs(s-(r?e.x:e.y))>.5&&u(e,s)))continue;let l=new Map(e.flatMap(e=>{let t=s-(r?e.x:e.y);return Math.abs(t)>.5?[[e.id,t]]:[]})),d=new Map(e.map(e=>[e.id,{...e,...r?{x:e.x+(l.get(e.id)??0)}:{y:e.y+(l.get(e.id)??0)}}])),h=new Set,f=!1;for(let e of l.keys())for(let t of o.get(e)??[]){if(h.has(t)||"invisible"===t.style)continue;h.add(t);let e={...t,points:t2(t.points,r,g.get(t.source),g.get(t.target))},i={...t,points:t2(t.points,r,l.get(t.source)??g.get(t.source),l.get(t.target)??g.get(t.target))},n,o;for(let r of[!0,!1]){let s=r?t.source:t.target,l=a.get(s),h=d.get(s)??l,g=t0(e.points,l,r),u;!0===g?u=t0(i.points,h,r):(n??=t1(e,a.get(t.source),a.get(t.target)),o??=t1(i,d.get(t.source)??a.get(t.source),d.get(t.target)??a.get(t.target)),g=t0(n.points,l,r),u=t0(o.points,h,r)),!0===g&&!0!==u&&(f=!0)}}if(!f)for(let t of e){let e=s-(r?t.x:t.y);Math.abs(e)>.5&&(r?t.x=s:t.y=s,g.set(t.id,e))}}if(0!==g.size)for(let e of t)e.points=t2(e.points,r,g.get(e.source),g.get(e.target))}(e.nodes,e.edges,e.graph.direction)}},{id:"equalizePeerNodeDimensions",after:["alignLayerNodes"],mutates:["positions","dimensions"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n){let o=e$(r.edges),a=new Map(e.map(e=>[e.id,e])),s=new Map,l=new Map;for(let e of t)X(e,a,r.direction)&&(s.has(e.target)||s.set(e.target,[]),s.get(e.target).push(e),l.has(e.source)||l.set(e.source,[]),l.get(e.source).push(e));let d=[],h=e=>{if(e.length<2||e.length>5||!e.every(e=>"rectangle"===e.shape)||e.some(e=>K(e,i))||!G(e,r.direction))return;let t=e.map(e=>e.id).sort().join("\0");d.some(e=>e.map(e=>e.id).sort().join("\0")===t)||d.push(e)};for(let e of s.values()){let i=e[0]?.target,r=e.map(e=>a.get(e.source)).filter(Boolean);i&&r.every(e=>t.every(t=>t.source!==e.id||t.target===i))&&h(r)}for(let e of l.values()){let i=e[0]?.source,r=e.map(e=>a.get(e.target)).filter(Boolean);if(!i||!r.every(e=>t.every(t=>t.target!==e.id||t.source===i)&&t.every(t=>t.source!==e.id)))continue;let n=!0;for(let e=0;e<r.length;e++)for(let t=0;t<r.length;t++)e!==t&&o(r[e].id,r[t].id)&&(n=!1);n&&h(r)}let g=!1,u,f=eF(r.direction);for(let t of d){let i=Math.max(...t.map(e=>e.width)),n=Math.max(...t.map(e=>e.height));if(t.every(e=>.5>Math.abs(e.width-i)&&.5>Math.abs(e.height-n)))continue;u??=e.map(e=>({...e}));let o=[...t].sort((e,t)=>e_(e,r.direction)-e_(t,r.direction)),a=Math.min(...o.map(e=>e_(e,r.direction))),l=Math.min(...o.map(e=>eT(e,r.direction))),d=[];for(let e of o)d.push({node:e,x:f.isHorizontal?l:a,y:f.isHorizontal?a:l}),a+=(f.isHorizontal?n:i)+24;let h=new Set(t.map(e=>e.id)),c=(e,t,i,r)=>e<r-.01&&i<t-.01,p=e=>{let t=f.isHorizontal?e.x:e.y;return[t,t+(f.isHorizontal?e.width:e.height)]},y=e=>{let t=f.isHorizontal?e.y:e.x;return[t,t+(f.isHorizontal?e.height:e.width)]},m=d.map(({node:e,x:t,y:r})=>({id:e.id,x:t,y:r,width:i,height:n,orig:p(e)})),x=0,b=new Set;for(let t of m){let[i,r]=p(t),[n,o]=y(t),[a,s]=t.orig;for(let t of e){if(h.has(t.id))continue;let[e,l]=p(t),[d,g]=y(t);c(i,r,e,l)&&!c(a,s,e,l)&&c(n,o,d,g)&&(b.add(t.id),x=Math.max(x,r+24-e))}}let w=new Set,M=e=>{if(!(w.has(e)||h.has(e)))for(let t of(w.add(e),s.get(e)??[]))M(t.source)};for(let e of b)M(e);let v=e.filter(e=>w.has(e.id)),S=new Map(v.map(e=>[e.id,p(e)])),k=[...t,...v].map(e=>({n:e,x:e.x,y:e.y,w:e.width,h:e.height}));if(x>0)for(let e of v)e[f.main]+=x;for(let{node:e,x:t,y:r}of d)e.x=t,e.y=r,e.width=i,e.height=n;let E=new Set([...h,...w]);if([...t,...v].some(t=>{let[i,r]=p(t),[n,o]=y(t),[a,s]=S.get(t.id)??m.find(e=>e.id===t.id).orig;return e.some(e=>{if(E.has(e.id))return!1;let[t,l]=p(e),[d,h]=y(e);return c(i,r,t,l)&&!c(a,s,t,l)&&c(n,o,d,h)})})){for(let e of k)e.n.x=e.x,e.n.y=e.y,e.n.width=e.w,e.n.height=e.h;continue}g=!0}g&&(q(e,r.direction),function(e,t,i,r,n){let o=(e,t)=>Math.min(e.x1,t.x1)-Math.max(e.x0,t.x0)>1e-6&&Math.min(e.y1,t.y1)-Math.max(e.y0,t.y0)>1e-6,a=e=>({x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height}),s=new Map(e.map(e=>[e.id,e])),l=new Map(t.map(e=>[e.id,e])),d=i.flatMap(e=>{let t=eI(e,n);if(!t)return[];let i=Math.max(4,n.lineWidth*("thick"===e.style?2:1)*2);return[{x0:t.x-i,y0:t.y-i,x1:t.x+t.w+i,y1:t.y+t.h+i}]});for(let i of d)if(t.some((t,r)=>o(i,a(t))&&!o(i,a(e[r]))))return!1;for(let h of i){let i=U(h,n);if(0===i.length)continue;let g=h.points,u=l.get(h.source),f=l.get(h.target);u&&(g=es(g,u,!0)),f&&(g=es(g,f,!1));let c={...h,points:g};for(let e of(ex(t,[c],r,n),g=c.points,[!0,!1])){if(!(e?h.hasArrowStart:h.hasArrowEnd))continue;let t=e?h.source:h.target,i=s.get(t),r=l.get(t),n=e?h.points:[...h.points].reverse(),o=e?g:[...g].reverse(),a=n[0],d=o[0],u=a&&n.find(e=>e.x!==a.x||e.y!==a.y),f=d&&o.find(e=>e.x!==d.x||e.y!==d.y);if(i&&a&&u&&!0===eo(i,a,u)&&(!r||!d||!f||!0!==eo(r,d,f)))return!1}let p=U(c,n);for(let r=0;r<i.length;r++){let n=i[r],s=p[r];if(!n.bounds)continue;if(!s?.bounds)return!1;let l="start"===s.position?h.source:h.target;if(t.some((t,i)=>t.id!==l&&o(s.bounds,a(t))&&!o(n.bounds,a(e[i])))||d.some(e=>o(e,s.bounds)&&!o(e,n.bounds)))return!1}}return!0}(u,e,t,r,n)||e.forEach((e,t)=>{let i=u[t];e.x=i.x,e.y=i.y,e.width=i.width,e.height=i.height}))}(e.nodes,e.edges,e.groups,e.graph,e.style)}},{id:"alignForkRejoinPeerCenters",after:["equalizePeerNodeDimensions"],mutates:["positions"],determinism:"in-place",mayChangeMetrics:{symErr:"improve-only",bends:{worsenBy:2}},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n){let o=e$(r.edges),a=new Map(e.map(e=>[e.id,e])),s=new Map;for(let e of t)X(e,a,r.direction)&&(s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e));let l=e=>t.filter(t=>t.target===e&&X(t,a,r.direction)).length,d=e=>t.filter(t=>t.source===e&&t.target!==e&&X(t,a,r.direction)),h=(e,t)=>{let i=[],r=new Set(t),n=[e];for(;n.length>0;){let e=n.shift();if(!r.has(e.id))for(let t of(r.add(e.id),i.push(e),d(e.id))){let e=a.get(t.target);!e||r.has(e.id)||1===l(e.id)&&n.push(e)}}return i};for(let[l,g]of s){if(3!==g.length)continue;let s=a.get(l);if(!s||"diamond"!==s.shape||K(s,i))continue;let u=[...g].sort((e,t)=>eW(a.get(e.target),r.direction)-eW(a.get(t.target),r.direction)),f=u.map(e=>a.get(e.target)).filter(e=>!!e);if(f.length!==u.length||!f.every(e=>"rectangle"===e.shape&&!K(e,i))||!G(f,r.direction,28))continue;let c=!0;for(let e=0;e<f.length;e++)for(let t=0;t<f.length;t++)e!==t&&o(f[e].id,f[t].id)&&(c=!1);if(!c)continue;let p=f.map(e=>d(e.id));if(!p.every(e=>1===e.length))continue;let y=p[0][0].target;if(!p.every(e=>e[0].target===y))continue;let m=a.get(y);if(!m||K(m,i))continue;let x=new Set(f.map(e=>e.id));for(let e of h(m,x))x.add(e.id);if([...x].some(e=>{let t=a.get(e);return!t||K(t,i)}))continue;let b=(eW(f[0],r.direction)+eW(f[f.length-1],r.direction))/2,w=eW(s,r.direction)-b;.5>=Math.abs(w)||ey(x,e,t,r.direction,w,n)&&(eL("[fork-rejoin] center",s.id,"peer island by",w.toFixed(1)),ec(x,e,t,r.direction,w))}}(e.nodes,e.edges,e.groups,e.graph,e.style)}},{id:"alignPortLanes",after:["alignForkRejoinPeerCenters"],mutates:["positions","edges"],determinism:"in-place",enabled:e=>!!e.elkResult,mayChangeMetrics:{straight:"improve-only",portRate:"improve-only",bends:"improve-only"},run:e=>{!function(e,t,i,r,n){if(!tV(e,t,i))return;let{nodes:o,edges:a}=tY(e,t);!function(e,t,i,r,n){let o="LR"===r||"RL"===r,a=o?"y":"x",s=o?"x":"y",l="LR"===r||"TD"===r?1:-1,d=new Set,h=e=>o?e.height:e.width,u=e=>e[a]+h(e)/2,f=new Map(e.map(e=>[e.id,e])),c=[],p=e=>{for(let t of e)c.push(t),p(t.children)};p(i);let y=e=>c.some(t=>e.x>=t.x-.5&&e.y>=t.y-.5&&e.x+e.width<=t.x+t.width+.5&&e.y+e.height<=t.y+t.height+.5),m=(e,t,i,r,n,o,a,s)=>e<n+a&&e+i>n&&t<o+s&&t+r>o,x=e=>o?e.width:e.height,b=(t,i,r,n)=>e.some(e=>!n.has(e.id)&&t>e[a]-4&&t<e[a]+h(e)+4&&r>e[s]-4&&i<e[s]+x(e)+4),w=(t,i,r,n)=>e.some(e=>!n.has(e.id)&&t>e[s]-4&&t<e[s]+x(e)+4&&r>e[a]-4&&i<e[a]+h(e)+4),M=(e,t)=>{let i=t?e.length-1:0,r=t?-1:1,n=e[i][a],o=i;for(;o>=0&&o<e.length&&.5>=Math.abs(e[o][a]-n);)o+=r;if(o<0||o>=e.length)return null;let l=e[o],d=e[o-r];return{mainPos:l[s],far:l[a],orthogonal:.5>=Math.abs(l[s]-d[s])}},v=(e,t)=>{let i=t?e.length-1:0,r=t?-1:1,n=e[i][a],o=1/0,l=-1/0;for(let t=i;t>=0&&t<e.length&&!(Math.abs(e[t][a]-n)>.5);t+=r)o=Math.min(o,e[t][s]),l=Math.max(l,e[t][s]);return{ref:n,lo:o,hi:l}},S=(e,t,i,r,n=!1)=>{let o=e.points,s=t?o.length-1:0,l=t?-1:1,d=t?0:o.length-1,h=o[s][a],g=1/0,u=-1/0;for(let e=s;e>=0&&e<o.length&&.5>=Math.abs(o[e][a]-h)&&!(n&&e===d);e+=l)g=Math.min(g,e),u=Math.max(u,e);if(u<g)return!1;let f=e=>e>=g&&e<=u?{...o[e],[a]:o[e][a]+i}:o[e];for(let e=Math.max(1,g);e<=Math.min(o.length-1,u+1);e++)if(A(f(e-1),f(e),r))return!0;return!1},k=(i,r,l,h=!1)=>{if(d.has(i.id)||y(i))return!1;let g=f.get(l.source),c=f.get(l.target);if(b(u(i.id===l.source?c:g),Math.min(g[s]+x(g)/2,c[s]+x(c)/2),Math.max(g[s]+x(g)/2,c[s]+x(c)/2),new Set([l.source,l.target])))return!1;for(let e of t){let t=e.source===i.id,n=e.target===i.id;if(!t&&!n)continue;let o=e===l;if(o&&2===e.points.length&&.5>=Math.abs(e.points[0][a]-e.points[1][a]))continue;if(!o){if(e.points.length<3)return!1;let t=n?e.points[e.points.length-1]:e.points[0];if(!e.points.some(e=>Math.abs(e[a]-t[a])>.5))return!1}let s=new Set([e.source,e.target]),d=v(e.points,n);if(b(d.ref+r,d.lo,d.hi,s))return!1;let g=M(e.points,n);if(g){if(!g.orthogonal)return!1;let e=Math.min(d.ref+r,g.far),t=Math.max(d.ref+r,g.far);if(w(g.mainPos,e,t,s))return!1}let u=f.get(n?e.source:e.target);if(u&&u!==i&&!(o&&h)&&S(e,n,r,u))return!1}let p=o?i.x:i.x+r,k=o?i.y+r:i.y;for(let t of e)if(t!==i&&m(p-8,k-8,i.width+16,i.height+16,t.x,t.y,t.width,t.height))return!1;for(let e of t)if(e.source!==i.id&&e.target!==i.id)for(let t=1;t<e.points.length;t++){let r=e.points[t-1],n=e.points[t];if(Math.max(r.x,n.x)>p+.5&&Math.min(r.x,n.x)<p+i.width-.5&&Math.max(r.y,n.y)>k+.5&&Math.min(r.y,n.y)<k+i.height-.5)return!1}for(let e of t){if(e===l)continue;let t=eI(e,n);if(t&&m(p-8,k-8,i.width+16,i.height+16,t.x,t.y,t.w,t.h))return!1}return!0},E=(e,t,i,r=!1)=>{let n=e.points,o=t?n.length-1:0,l=t?-1:1,d=t?0:n.length-1,h=n[o][a],g=1/0,u=-1/0;for(let e=o;e>=0&&e<n.length&&!(Math.abs(n[e][a]-h)>.5||r&&e===d);e+=l)g=Math.min(g,n[e][s]),u=Math.max(u,n[e][s]),n[e][a]+=i;e.labelPosition&&12>=Math.abs(e.labelPosition[a]-h)&&e.labelPosition[s]>=g-.5&&e.labelPosition[s]<=u+.5&&(e.labelPosition[a]+=i)},P=(e,i,r)=>{for(let n of(o?e.y+=i:e.x+=i,t)){if(n===r||0===n.points.length)continue;let t=n.source===e.id,o=n.target===e.id;if(t&&o){for(let e of n.points)e[a]+=i;n.labelPosition&&(n.labelPosition[a]+=i);continue}o&&E(n,!0,i),t&&E(n,!1,i)}let n=r.points[0],s=r.points[r.points.length-1];2===r.points.length&&.5>=Math.abs(n[a]-s[a])?(r.points=[eM(f.get(r.source))[o?l>0?"E":"W":l>0?"S":"N"],eM(f.get(r.target))[o?l>0?"W":"E":l>0?"N":"S"]],r.labelPosition&&(r.labelPosition[a]=u(f.get(r.source)))):E(r,r.target===e.id,i)},N=e=>{if(e.points.length<2||e.source===e.target)return!1;let t=g(e.points);for(let e=1;e<t.length;e++)if((t[e][s]-t[e-1][s])*l<-.5)return!1;return!0},C=(i,r,a)=>{let s=o?i.x:i.x+r,l=o?i.y+r:i.y;for(let t of e)if(t!==i&&m(s-8,l-8,i.width+16,i.height+16,t.x,t.y,t.width,t.height))return!1;for(let e of t)if(!a.has(`${e.source}->${e.target}`))for(let t=1;t<e.points.length;t++){let r=e.points[t-1],n=e.points[t];if(Math.max(r.x,n.x)>s+.5&&Math.min(r.x,n.x)<s+i.width-.5&&Math.max(r.y,n.y)>l+.5&&Math.min(r.y,n.y)<l+i.height-.5)return!1}for(let e of t){if(a.has(`${e.source}->${e.target}`))continue;let t=eI(e,n);if(t&&m(s-8,l-8,i.width+16,i.height+16,t.x,t.y,t.w,t.h))return!1}return!0},I=new Set,L=e=>t.filter(t=>t.source===e&&N(t)),R=e=>t.filter(t=>t.target===e&&N(t)).length,O=e=>{let t=[],i=new Set,r=[e];for(;r.length>0;){let e=r.shift();if(!i.has(e.id))for(let n of(i.add(e.id),t.push(e),L(e.id))){let e=f.get(n.target);!e||i.has(e.id)||1===R(e.id)&&r.push(e)}}return t},$=e=>2===e.points.length&&Number(tn(e.points[0][a]))===Number(tn(e.points[1][a]))&&Number(tn(e.points[0][s]))!==Number(tn(e.points[1][s])),z=(e,t,i)=>{if(e.routeCertificate)return;let r=f.get(e.source),n=f.get(e.target);if(!r||!n)return;let d=t.has(r.id)?{...r,[a]:r[a]+i}:r,h=t.has(n.id)?{...n,[a]:n[a]+i}:n,g=eM(d)[o?l>0?"E":"W":l>0?"S":"N"],u=eM(h)[o?l>0?"W":"E":l>0?"N":"S"];if(!(![g.x,g.y,u.x,u.y].every(Number.isFinite)||Number(tn(g[a]))!==Number(tn(u[a])))&&!(l>0?Number(tn(g[s]))>=Number(tn(u[s])):Number(tn(g[s]))<=Number(tn(u[s]))))return[g,u]},B=(i,r)=>{let n=new Set(i.map(e=>e.id));for(let t of i){let i=o?t.x:t.x+r,a=o?t.y+r:t.y;for(let r of e)if(!n.has(r.id)&&m(i-8,a-8,t.width+16,t.height+16,r.x,r.y,r.width,r.height))return!1}for(let e of t){let t=n.has(e.source),i=n.has(e.target);if(t===i||0===e.points.length)continue;if($(e)&&!z(e,n,r))return!1;let o=f.get(i?e.source:e.target);if(o&&S(e,i,r,o,!0))return!1}return!0},F=(e,i)=>{let r=new Set(e.map(e=>e.id)),n=new Map;for(let e of t)if(r.has(e.source)!==r.has(e.target)&&$(e)){let t=z(e,r,i);if(!t)return!1;n.set(e,t)}for(let t of e)o?t.y+=i:t.x+=i;for(let e of t){let t=r.has(e.source),o=r.has(e.target);if(t&&o){for(let t of e.points)t[a]+=i;e.labelPosition&&(e.labelPosition[a]+=i)}else n.has(e)?(e.points=n.get(e),e.labelPosition&&(e.labelPosition[a]=e.points[0][a])):o?E(e,!0,i,!0):t&&E(e,!1,i,!0)}return!0};for(let i of eU("APL_NO_CENTER")?[]:e){if(d.has(i.id)||y(i)||!eb.has(i.shape))continue;let e=t.filter(e=>e.target===i.id&&e.source!==i.id&&e.points.length>=2),r=new Map,n=e.length>=2;for(let t of e){if(t.label||!N(t)){n=!1;break}let e=f.get(t.source);if(!e||!eb.has(e.shape)){n=!1;break}r.set(e.id,e)}if(!n||r.size<2||t.filter(e=>e.source===i.id&&e.target!==i.id&&N(e)).length>1)continue;let o=[...r.values()],a=o.map(e=>e[s]+x(e)/2);if(Math.max(...a)-Math.min(...a)>Math.max(...o.map(x))+.6*eO.layerSpacing)continue;let l=o.reduce((e,t)=>e+u(t),0)/o.length-u(i);if(.5>=Math.abs(l)){I.add(i.id);continue}let h=O(i),g=new Set(t.filter(e=>e.source===i.id||e.target===i.id).map(e=>`${e.source}->${e.target}`));if(!(!C(i,l,g)||!B(h,l))&&(eL("[apl] center hub",i.id,"by",l.toFixed(1),"over",o.length,"sources"),F(h,l))){for(let e of h)I.add(e.id),d.add(e.id);for(let t of e)d.add(t.source)}}let T=new Set;if(!eU("APL_NO_FACET")){let i=()=>o?l>0?["NE","SE"]:["NW","SW"]:l>0?["SW","SE"]:["NW","NE"];for(let r of e){if("diamond"!==r.shape||d.has(r.id)||y(r))continue;let e=t.filter(e=>e.source===r.id&&e.target!==r.id&&e.points.length>=2&&N(e));if(2!==e.length||e.some(e=>{let t=f.get(e.target);return!t||!eb.has(t.shape)})||e.some(e=>d.has(e.target)||I.has(e.target)||y(f.get(e.target))))continue;let n=[...e].sort((e,t)=>u(f.get(e.target))-u(f.get(t.target))),[s,h]=i(),g=eS(r),c=[[n[0],s],[n[1],h]],p=eM(r),x=c.map(([e,t])=>({edge:e,src:{x:g[t].x,y:g[t].y},cross:g[t][a]})),b=!o&&c[0]&&c[1]?[{edge:c[0][0],src:{x:p.W.x,y:p.W.y},cross:p.W[a]},{edge:c[1][0],src:{x:p.E.x,y:p.E.y},cross:p.E[a]}]:null,w=e=>{let[t,i]=e.map(e=>{let t=f.get(e.edge.target),i=e.cross-u(t);return{x:o?t.x:t.x+i,y:o?t.y+i:t.y,w:t.width,h:t.height}});return!!(t&&i&&m(t.x-8,t.y-8,t.w+16,t.h+16,i.x,i.y,i.w,i.h))},M=e=>e.every(e=>{let t=f.get(e.edge.target),i=e.cross-u(t);return .5>=Math.abs(i)||k(t,i,e.edge,!0)}),v=e=>!!e&&M(e)&&!w(e),S;if(v(x))S=x;else{if(!v(b))continue;S=b}let P=o?l>0?"W":"E":l>0?"N":"S";for(let e of S){let i=e.edge,r=f.get(i.target),n=e.cross-u(r);if(Math.abs(n)>.5)for(let e of(o?r.y+=n:r.x+=n,t)){if(e===i)continue;let t=e.source===r.id,o=e.target===r.id;if(t&&o){for(let t of e.points)t[a]+=n;e.labelPosition&&(e.labelPosition[a]+=n)}else o?E(e,!0,n):t&&E(e,!1,n)}i.points=[{x:e.src.x,y:e.src.y},eM(r)[P]],i.labelPosition&&(i.labelPosition[a]=e.cross),T.add(i),d.add(i.target)}d.add(r.id)}}if(!eU("APL_NO_SVERTEX"))for(let e of t){if(T.has(e)||e.points.length<2||e.source===e.target)continue;let i=f.get(e.source),r=f.get(e.target);if(!i||!r||"diamond"!==r.shape||d.has(i.id)||d.has(r.id)||y(i)||y(r)||!N(e)||e.label)continue;let n=r[a]+h(r)/2;if(!t.some(t=>{if(t===e||t.target!==r.id||!N(t)||t.points.length<2)return!1;let i=f.get(t.source);return!!i&&Math.abs(i[a]+h(i)/2-n)<=h(r)/2}))continue;let g=r[a]+h(r)/2,c=i[a]+h(i)/2,p=c>g,m=o?p?"S":"N":p?"E":"W",x=eM(r)[m];if(Math.abs(c-g)<.5*(h(r)/2))continue;let w=x[a]-u(i);if(Math.abs(w)>.5&&!k(i,w,e,!0))continue;let M=o?l>0?"E":"W":l>0?"S":"N",v=eM(i)[M],S=Math.min(v[s],x[s]),P=Math.max(v[s],x[s]);if(!((x[s]-v[s])*l<=.5)&&!b(x[a],S,P,new Set([i.id,r.id]))){if(eL("[apl] svertex",e.source,"->",e.target,"into",m,"vertex"),Math.abs(w)>.5)for(let r of(o?i.y+=w:i.x+=w,t)){if(r===e)continue;let t=r.source===i.id,n=r.target===i.id;if(t&&n){for(let e of r.points)e[a]+=w;r.labelPosition&&(r.labelPosition[a]+=w)}else n?E(r,!0,w):t&&E(r,!1,w)}e.points=[{x:eM(i)[M].x,y:eM(i)[M].y},{x:x.x,y:x.y}],T.add(e),d.add(i.id),d.add(r.id)}}let _,H=e=>void 0!==tj(e,t.filter(t=>t.source===e.id&&X(t,f,r)),t,f,i,r,_??=e$(t));for(let e of t){if(T.has(e)||e.points.length<2||e.source===e.target)continue;let i=f.get(e.source),r=f.get(e.target);if(!i||!r||!eb.has(i.shape)||!eb.has(r.shape)||I.has(r.id)||"diamond"===i.shape&&t.some(t=>t!==e&&t.source===e.source&&N(t)))continue;let n=u(i)-u(r);if(.5>=Math.abs(n)||!N(e)||g(e.points).length>4)continue;let o=k(r,n,e)?r:!H(i)&&k(i,-n,e)?i:null;o&&(eL("[apl] slide",o.id,"by",(o===r?n:-n).toFixed(1),"for",e.source,"->",e.target),P(o,o===r?n:-n,e),d.add(e.source),d.add(e.target))}}(o,a,i,r,n);let s=tU();(tG(o,a,e,t,i,n,s)||!(s.remaining<0)&&(ex(o,a.filter((e,i)=>tX(e,t[i])),{direction:r},n),tG(o,a,e,t,i,n,s)))&&(H({nodes:o,edges:a},!0)+1e-6<H({nodes:e,edges:t},!0)||tq(e,t,o,a))}(e.nodes,e.edges,e.groups,e.graph.direction,e.style)}},{id:"centerPeerBarycenters",proposal:!0,after:["alignPortLanes"],mutates:["positions"],determinism:"in-place",mayChangeMetrics:{symErr:"improve-only",bends:{worsenBy:2}},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{let t;return function(e,t,i,r,n,o){let a=e$(r.edges),s=new Map(e.map(e=>[e.id,e])),l=!eU("APL_NO_CORANK_FANIN"),d=(e,t,n=!1)=>{if(e.length<2||e.length>6)return;let o=e[0].style;if(e.some(e=>e.style!==o)||!n&&e.some(e=>e.label))return;let l=e.map(e=>e[t]);if(new Set(l).size!==l.length)return;let d=l.map(e=>s.get(e)).filter(e=>!!e);if(d.length!==l.length)return;let h="source"===t?e=>eb.has(e.shape):e=>"rectangle"===e.shape;if(d.every(e=>h(e)&&!K(e,i))&&G(d,r.direction,28)){for(let e=0;e<d.length;e++)for(let t=0;t<d.length;t++)if(e!==t&&a(d[e].id,d[t].id))return;return d}};for(let a=0;a<3;a++){let a=new Map,h=new Map;for(let e of t)X(e,s,r.direction)&&(a.has(e.source)||a.set(e.source,[]),a.get(e.source).push(e),h.has(e.target)||h.set(e.target,[]),h.get(e.target).push(e));let g=!1,u=e=>e.reduce((e,t)=>e+eW(t,r.direction),0)/e.length,f=(e,i)=>i.every(i=>t.every(t=>t.source!==i.id&&(t.target!==i.id||t.source===e))),c=(e,t)=>t.length>=2&&t.length<=3&&f(e,t),p=(a,s,l)=>{if(!a||!eb.has(a.shape)||K(a,i))return;let d=l?u(l):void 0,h=s?u(s):void 0;if(void 0!==d&&void 0!==h&&s.length>=4&&f(a.id,s)&&Math.abs(d-h)>1.5){let i=new Set(s.map(e=>e.id)),l=new Set([a.id]),u=d-h,f=d-eW(a,r.direction);if(ey(i,e,t,r.direction,u,n)&&ey(l,e,t,r.direction,f,n)){o?.(),ec(i,e,t,r.direction,u),Math.abs(f)>.5&&ec(l,e,t,r.direction,f),eL("[peer-barycenter] trunk-shift",a.id,"outs by",u.toFixed(1)),g=!0;return}}let p=[];if(void 0!==d&&p.push(d),void 0===h||s&&c(a.id,s)||p.push(h),0===p.length&&void 0!==h&&p.push(h),0===p.length)return;let y=(1===p.length?p[0]:(Math.min(...p)+Math.max(...p))/2)-eW(a,r.direction);if(.5>=Math.abs(y))return;let m=new Set([a.id]);ey(m,e,t,r.direction,y,n)&&(eL("[peer-barycenter] center",a.id,"by",y.toFixed(1),2===p.length?"(mixed)":""),o?.(),ec(m,e,t,r.direction,y),g=!0)};for(let e of[...new Set([...a.keys(),...h.keys()])].sort()){let t=a.get(e),i=h.get(e),r=t?d(t,"target"):void 0,n=i?d(i,"source",l):void 0;p(s.get(e),r,n)}if(!g)break}}(e.nodes,e.edges,e.groups,e.graph,e.style,()=>{let i,r;t??=(i=e.nodes.map(e=>({node:e,x:e.x,y:e.y})),r=e.edges.map(e=>({edge:e,points:e.points.map(e=>({...e})),labelPosition:e.labelPosition?{...e.labelPosition}:void 0})),()=>{for(let{node:e,x:t,y:r}of i)e.x=t,e.y=r;for(let{edge:e,points:t,labelPosition:i}of r)e.points=t,e.labelPosition=i})}),t}},{id:"honorLinkRankDistance",after:["centerPeerBarycenters"],mutates:["positions"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r){if(!r.edges.some(e=>(e.length??1)>1))return;let n=h(r),o=eF(r.direction),a=new Map(e.map(e=>[e.id,e])),l=new Map,d=e=>{for(let t of e)l.set(t.id,t),d(t.children)};d(i);let u=(e,t)=>{for(let i of e.nodeIds)t.push(i);for(let i of e.children)u(i,t)},f=e=>{if(a.has(e))return[e];let t=eX(r.subgraphs,e);if(!t)return[];let i=[];return u(t,i),i},c=new Map,p=(e,t)=>{for(let i of e){let e=[...t,i.id];for(let t of i.nodeIds)c.set(t,e);p(i.children,e)}};p(r.subgraphs,[]);let y=(e,t)=>{if(l.has(t))return f(t);let i=c.get(t)??[],r=new Set(c.get(e)??[]);for(let t of(l.has(e)&&r.add(e),i))if(!r.has(t))return f(t);return[t]},m=e=>{let t=r.edges[e];return"feedback"===n[e]?{source:t.target,target:t.source}:{source:t.source,target:t.target}},x=e=>{let t=a.get(e);if(t)return{start:t[o.main],size:eD(t,r.direction)};let i=l.get(e);return i?{start:i[o.main],size:"x"===o.main?i.width:i.height}:null},b=e=>{let t=x(e);return t?1===o.sign?t.start:t.start+t.size:null},w=e=>{let t=x(e);return t?1===o.sign?t.start+t.size:t.start:null},M=(e,t)=>{let i=w(e),r=b(t);return null!==i&&null!==r&&(r-i)*o.sign>0},v=new Map;for(let e=0;e<r.edges.length;e++){let t=m(e);if(M(t.source,t.target))for(let e of f(t.source))for(let i of f(t.target))v.has(e)||v.set(e,[]),v.get(e).push(i)}let S=new Map,k=new Set,E=(e,t)=>{if(.5>Math.abs(t))return;let i=new Set,r=[...e];for(;r.length>0;){let e=r.pop();if(i.has(e))continue;i.add(e);let n=a.get(e);if(n){let i=n[o.main];n[o.main]+=t,n[o.main]!==i&&k.add(n),S.set(e,(S.get(e)??0)+t)}for(let t of v.get(e)??[])r.push(t)}},P=new Map,N=e=>{let t=1/0,i=1/0,n=-1/0,o=-1/0,s=eX(r.subgraphs,e.id);for(let e of s?.nodeIds??[]){let r=a.get(e);r&&(t=Math.min(t,r.x),i=Math.min(i,r.y),n=Math.max(n,r.x+r.width),o=Math.max(o,r.y+r.height))}for(let r of e.children)t=Math.min(t,r.x),i=Math.min(i,r.y),n=Math.max(n,r.x+r.width),o=Math.max(o,r.y+r.height);return Number.isFinite(t)?{x:t,y:i,r:n,b:o}:null},C=e=>{for(let t of e.children)C(t);let t=N(e);t&&P.set(e.id,{l:t.x-e.x,t:t.y-e.y,r:e.x+e.width-t.r,b:e.y+e.height-t.b})},I=e=>{for(let t of e.children)I(t);let t=N(e),i=P.get(e.id);t&&i&&(e.x=t.x-i.l,e.y=t.y-i.t,e.width=t.r+i.r-e.x,e.height=t.b+i.b-e.y)};for(let e of i)C(e);let L=(e,t)=>{let i=Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x),r=Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y);return i>.5&&r>.5},R=(e,t)=>e.id<t.id?`${e.id}\0${t.id}`:`${t.id}\0${e.id}`,O=new Set;for(let t=0;t<e.length;t++)for(let i=t+1;i<e.length;i++)L(e[t],e[i])&&O.add(R(e[t],e[i]));let $=new Map,z=(t,i)=>{let r=e[t],n=e[i],o=t*e.length+i,a=R(r,n);O.has(a)||!L(r,n)?$.delete(o):$.has(o)||$.set(o,{a:r,b:n,key:a,index:o})},B=()=>{if(k.size){if(k.size>e.length/2)for(let t=0;t<e.length;t++)for(let i=t+1;i<e.length;i++)z(t,i);else for(let t=0;t<e.length;t++)if(k.has(e[t]))for(let i=0;i<e.length;i++)t===i||i<t&&k.has(e[i])||z(Math.min(t,i),Math.max(t,i));k.clear()}};for(let e=0;e<r.edges.length;e++){let t=r.edges[e],i=m(e),n=t.length??1;if(n<=1||!M(i.source,i.target))continue;let a=w(i.source),s=b(i.target);if(null===a||null===s)continue;let l=(s-a)*o.sign,d=tl(n,eO.layerSpacing);l<d&&E(y(i.source,i.target),(d-l)*o.sign)}if(!k.size)return;B();let F=(e,t)=>{let i=new Set(c.get(t)??[]);for(let t of c.get(e)??[])if(!i.has(t))return f(t);return[e]};for(let t=0;t<4*e.length;t++){let e;for(let t of $.values())(!e||t.key<e.key||t.key===e.key&&t.index<e.index)&&(e=t);if(!e)break;let{a:t,b:i}=e,n=(ej(t,r.direction)-ej(i,r.direction))*o.sign,[a,s]=(0!==n?n>0:t.id>i.id)?[i,t]:[t,i],l=1===o.sign?a[o.main]+eD(a,r.direction)+eO.nodeSpacing-s[o.main]:s[o.main]+eD(s,r.direction)+eO.nodeSpacing-a[o.main];E(F(s.id,a.id),1===o.sign?l:-l),B()}let T=new Map;for(let[e,t]of l)T.set(e,{start:t[o.main],size:"x"===o.main?t.width:t.height});for(let e of i)I(e);let _=e=>eW(e,r.direction)+eH(e,r.direction)/2,H=e=>eW(e,r.direction)-eH(e,r.direction)/2,D=Math.max(...e.map(_))+10,W=Math.min(...e.map(H))-10,j=(e,t)=>"x"===o.main?{x:e,y:t}:{x:t,y:e},V=(e,t)=>{let i=a.get(e);if(i)return eM(i)[t];let r=l.get(e);if(!r)return null;let n=r.x+r.width/2,o=r.y+r.height/2;switch(t){case"E":return{x:r.x+r.width,y:o};case"W":return{x:r.x,y:o};case"S":return{x:n,y:r.y+r.height};default:return{x:n,y:r.y}}},X=e=>{for(let t of l.values()){if(t.concurrencyRegion||0===t.width)continue;let i=t.headerHeight??t.height;if(!Number.isFinite(i)||i<0)return!1;if(!(0===i||t.width<=0))for(let r=1;r<e.length;r++){let n=e[r-1],o=e[r];if(Math.max(n.x,o.x)>t.x&&Math.min(n.x,o.x)<t.x+t.width&&Math.max(n.y,o.y)>t.y&&Math.min(n.y,o.y)<t.y+i)return!1}}return!0},U=t=>{let i=new Set;for(let r of e)i.add(r[t]),i.add(r[t]+("x"===t?r.width:r.height));for(let e of l.values()){let r=e.concurrencyRegion?0:e.headerHeight??e.height;r>0&&Number.isFinite(r)&&e.width>0&&(i.add(e[t]),i.add(e[t]+("x"===t?e.width:r)))}let r=[...i].sort((e,t)=>e-t),n=[];for(let e=1;e<r.length;e++)r[e]-r[e-1]>2&&n.push((r[e]+r[e-1])/2);return t===o.cross&&l.size&&r.length>0&&n.push(r[0]-10,r.at(-1)+10),n},G="x"===o.main?"y":"x",Y=(e,t)=>[...e].sort((e,i)=>Math.abs(e-t)-Math.abs(i-t)||e-i).slice(0,16),q=new Map,Q=(e,t)=>{for(let i of e)q.set(i.id,t),Q(i.children,i.id)};Q(r.subgraphs);let K=(e,t)=>{if((c.get(t)??[]).includes(e))return!0;for(let i=q.get(t);void 0!==i;i=q.get(i))if(i===e)return!0;return!1},J=(e,t)=>{for(let i of[t.source,t.target]){let t=a.get(i);if(t){for(let i=1;i<e.length;i++)if(A(e[i-1],e[i],t))return!1}}return!0},Z=e=>{let t=a.get(e),i=l.get(e),r=T.get(e);return t?S.get(e)??0:i&&r?i[o.main]-r.start:void 0},ee=(e,t)=>{let i=a.get(e),n=S.get(e)??0,s=new Set(c.get(t)??[]);l.has(t)&&s.add(t);let d=l.has(e)?e:(c.get(e)??[]).find(e=>!s.has(e));if(d&&l.has(d)){let e=T.get(d),t=l.get(d),r=f(d),n=r.length?S.get(r[0])??0:0;if(r.every(e=>(S.get(e)??0)===n)&&("x"===o.main?t.width:t.height)===e.size)return{...e,delta:t[o.main]-e.start};if(!i)return null}return i?{start:i[o.main]-n,size:eD(i,r.direction),delta:n}:null},et=t=>{let i=ee(t.source,t.target),r=ee(t.target,t.source);if(!i||!r||t.points.length<2)return null;let[n,a]=i.start<=r.start?[i,r]:[r,i],s=n.start+n.size,l=a.start,d=l-s,h=l+a.delta-(s+n.delta),g=i.delta===r.delta&&Number.isFinite(i.delta);if(!g&&!(d>0&&h>0&&[s,l,d,h,n.delta,a.delta].every(Number.isFinite)))return null;let u=g?1:h/d;if(!(u>0&&Number.isFinite(u)))return null;let f=e=>g?e+i.delta:e<=s?e+n.delta:e>=l?e+a.delta:s+n.delta+(e-s)*u,c=t.points.map(e=>({...e,[o.main]:f(e[o.main])}));if(c.some(e=>!Number.isFinite(e.x)||!Number.isFinite(e.y)))return null;let p=t.points.map(e=>e[o.main]).sort((e,t)=>e<t?-1:+(e>t));for(let e=1;e<p.length;e++)if(p[e]>p[e-1]&&!(f(p[e])>f(p[e-1])))return null;let y=(e,t)=>e===t||Math.abs(e-t)<=8*Number.EPSILON*Math.max(1,Math.abs(e),Math.abs(t))&&tn(e)===tn(t);for(let t=1;t<c.length;t++){let i=c[t-1],r=c[t];if(!y(i.x,r.x)&&!y(i.y,r.y))return null;for(let t of e)if(A(i,r,t))return null}let m=Z(t.source),x=Z(t.target);return void 0!==m&&void 0!==x&&c[0][o.main]===t.points[0][o.main]+m&&c.at(-1)[o.main]===t.points.at(-1)[o.main]+x&&er(c,t)&&eu(c,e,new Set([t.source,t.target]))&&X(c)?c:null},ei=(e,t)=>{if(!t)return null;let i=Z(e);return void 0===i?null:{...t,[o.main]:t[o.main]+i}},er=(e,t)=>{for(let[i,r]of[[t.source,!0],[t.target,!1]]){let n,o=a.get(i),d=l.get(i),h=o??(d?{id:d.id,label:d.label,shape:"rectangle",x:d.x,y:d.y,width:d.width,height:d.height}:void 0);if(!h)return!1;let g=r?e[0]:e.at(-1);if(!g)return!1;for(let t=r?1:e.length-2;t>=0&&t<e.length;t+=r?1:-1){let i=e[t];if(i.x!==g.x||i.y!==g.y){n=i;break}}if(!n||!s(h,g))return!1;let u=!o&&K(i,r?t.target:t.source)?{x:g.x-(n.x-g.x),y:g.y-(n.y-g.y)}:n;if(!Number.isFinite(u.x)||!Number.isFinite(u.y)||!eo(h,g,u))return!1}return!0};for(let i of t){let t=void 0!==i.edgeIndex?n[i.edgeIndex]??"primary-forward":"primary-forward";if("self-loop"===t){let e=S.get(i.source)??0;0!==e&&(i.points=i.points.map(t=>({...t,[o.main]:t[o.main]+e}))),0!==e&&i.labelPosition&&(i.labelPosition[o.main]+=e);continue}let s=l.size>0&&("cross-hierarchy"===t||"container"===t),d=s?et(i):null;if(d){i.points=d,i.label&&(i.labelPosition=eB(d));continue}if("feedback"===t){let t=a.get(i.source),n=a.get(i.target);if(!t||!n)continue;let s=ej(t,r.direction),l=ej(n,r.direction),d=(e,i)=>[j(s,i(t)),j(s,e),j(l,e),j(l,i(n))],h=(e,i,r,o)=>[j(s,i(t)),j(s,e),j(r,e),j(r,o),j(l,o),j(l,i(n))],u=(e,i,r,o)=>[j(s,i(t)),j(s,o),j(r,o),j(r,e),j(l,e),j(l,i(n))],f=new Set([i.source,i.target]),c=t=>eu(g(t),e,f)&&X(t),p=[[D,_],[W,H]],y;for(let[e,t]of p){let i=d(e,t);if(c(i)){y=i;break}}if(!y){let e=Y(U("x"===o.main?"x":"y"),l);e:for(let[t,i]of p){let r=Y(U(G),i(n));for(let n of[h,u])for(let o of e)for(let e of r){let r=n(t,i,o,e);if(c(r)){y=g(r);break e}}}}i.points=y??d(D,_),i.label&&(i.labelPosition=eB(i.points));continue}let h=s?ei(i.source,i.points[0]):V(i.source,o.sourceSide),u=s?ei(i.target,i.points.at(-1)):V(i.target,o.targetSide);if(!h||!u)continue;let f=new Set([i.source,i.target]),c=t=>eu(t,e,f)&&X(t)&&(!s||er(t,i)&&J(t,i)),p=Math.min(h[o.main],u[o.main]),y=Math.max(h[o.main],u[o.main]),m=eh(h,u,r.direction,(p+y)/2),x=c(m);if(!x){let e,t=Y(U("x"===o.main?"x":"y").filter(e=>e>p&&e<y),(p+y)/2);for(let i of t){let t=eh(h,u,r.direction,i);if(c(t)){e=t;break}}if(!e){let i=h[G],r=u[G],n=Y(U(G),(i+r)/2);e:for(let a of n)for(let n of t)for(let s of Y(t.filter(e=>(e-n)*o.sign>0),u[o.main])){let t=g([h,j(n,i),j(n,a),j(s,a),j(s,r),u]);if(c(t)){e=t;break e}}}e&&(m=e,x=!0)}if(s&&!x)throw new tr([{strategy:"link-rank-reconnect",violations:[`edge ${i.source}->${i.target}: no proven contact-preserving route after rank move`]}]);i.points=m,i.label&&(i.labelPosition=eB(i.points))}}(e.nodes,e.edges,e.groups,e.graph)}},{id:"alignLabeledSourcePort",after:["honorLinkRankDistance"],mutates:["positions","edges"],determinism:"in-place",mayChangeMetrics:{portRate:"improve-only"},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n,o){if(eU("APL_NO_LABELED_SOURCE_PORT")||!tV(e,t,i)||!t.some(e=>e.label))return;let a=tY(e,t);!function(e,t,i,r,n,o){let a=new Set;for(let[n]of tH(e,t,i,r))a.add(n);let s="LR"===n||"RL"===n,l=s?"y":"x",d=s?"x":"y",h=s?"LR"===n?"E":"W":"BT"===n?"N":"S",g=e=>e[l]+(s?e.height:e.width)/2,u=[],f=e=>{for(let t of e)u.push(t),f(t.children)};f(i);let c=e=>u.some(t=>e.x>=t.x-.5&&e.y>=t.y-.5&&e.x+e.width<=t.x+t.width+.5&&e.y+e.height<=t.y+t.height+.5),p=new Map(e.map(e=>[e.id,e])),y=e=>"x"===d?"E"===h?e.x+e.width:e.x:"S"===h?e.y+e.height:e.y,m=(e,i)=>{let r=new Set([e.id]),n=[e.id];for(;n.length;){let e=n.pop();for(let o of t){if(o.target!==e||o===i)continue;let a=p.get(o.source);if(!(!a||r.has(a.id))){if(1!==t.filter(e=>e.source===a.id).length||!eb.has(a.shape)||c(a))return null;r.add(a.id),n.push(a.id)}}}return r};for(let r of t){if(!r.label||r.points.length<2||r.source===r.target||a.has(r.target))continue;let u=p.get(r.source);if(!u||!eb.has(u.shape)||c(u)||t.some(e=>e!==r&&e.source===u.id&&e.target!==u.id)||Math.abs(r.points[0][d]-y(u))>1)continue;let f=p.get(r.target);if(!f||!eb.has(f.shape)||c(f))continue;let{ctx:x,axis:b}=S(e,t,n,o,i),w=0,M=!1,k={...u};for(let e=0;e<4;e++){let e=v(r,k,f,x,b);if(null===e)break;let t=e-g(k);if(w+=t,k[l]+=t,.5>=Math.abs(t)){M=!0;break}}if(!M||1>=Math.abs(w))continue;let E=m(u,r);if(!E)continue;let P=[...E].map(e=>p.get(e)).filter(Boolean),N=e=>({x:s?e.x:e.x+w,y:s?e.y+w:e.y,width:e.width,height:e.height});if(!(e.some(e=>!E.has(e.id)&&P.some(t=>{let i=N(t);return i.x-2<e.x+e.width&&i.x+i.width+2>e.x&&i.y-2<e.y+e.height&&i.y+i.height+2>e.y}))||t.some(e=>!E.has(e.source)&&!E.has(e.target)&&P.some(t=>{let i=N(t);return e.points.some((t,r)=>{if(0===r)return!1;let n=e.points[r-1];return Math.max(t.x,n.x)>i.x+.5&&Math.min(t.x,n.x)<i.x+i.width-.5&&Math.max(t.y,n.y)>i.y+.5&&Math.min(t.y,n.y)<i.y+i.height-.5})})))){for(let e of P)s?e.y+=w:e.x+=w;for(let e of t)if(E.has(e.source)&&E.has(e.target))for(let t of e.points)t[l]+=w;r.points[0]=eM(u)[h]}}}(a.nodes,a.edges,i,r,n,o);let s=tU();if(!tG(a.nodes,a.edges,e,t,i,o,s)){if(s.remaining<0)return;let{ctx:r,axis:l}=S(a.nodes,a.edges,n,o,i);for(let e=0;e<a.edges.length;e++){let i=a.edges[e];if(!i.label||!tX(i,t[e]))continue;let n=a.nodes.find(e=>e.id===i.source),o=a.nodes.find(e=>e.id===i.target);if(!n||!o||!M(i,n,o,r,l,i.points[0][l.cross]).applied)return;E(i,i.routeCertificate,n,o)}let d=Symbol(),h=()=>--s.remaining>=0,g=()=>{if(!h())throw d};try{let r=N({...a,groups:i},o,g),n=(t,n)=>{g();let l=eI(t,o);if(!l)return!1;let d=r.clearPaintRect(l,eC(t,o.lineWidth??1),t);if(!d)return!1;let u={x0:d.x,y0:d.y,x1:d.x+d.w,y1:d.y+d.h};for(let e of a.edges){g();let i=y(e,o,h);if(!i||i.markers.some(e=>(g(),p(u,e.bounds))))return!1;if(e===t)continue;if(i.shafts.some(e=>(g(),p(u,e))))return!1;let r=eI(e,o);if(r){g();let t=eC(e,o.lineWidth??1);if(p(u,{x0:r.x-t,y0:r.y-t,x1:r.x+r.w+t,y1:r.y+r.h+t}))return!1}}return tG(a.nodes,[t],e,[n],i,o,s)};for(let e=0;e<a.edges.length;e++){g();let i=a.edges[e],r=t[e];if(!i.label||!tX(i,r)||n(i,r))continue;let s=eI(i,o),d=i.points[0],h=i.points[1];if(!s||2!==i.points.length)return;let u=Math.hypot(h.x-d.x,h.y-d.y),f=("x"===l.main?s.w:s.h)/2;if(!(u>2*f))return;let c=!1;for(let e of P(f/u,g))if(g(),i.labelPosition={x:d.x+(h.x-d.x)*e,y:d.y+(h.y-d.y)*e},n(i,r)){c=!0;break}if(!c)return}}catch(e){if(e===d)return;throw e}if(!tG(a.nodes,a.edges,e,t,i,o,s))return}tq(e,t,a.nodes,a.edges)}(e.nodes,e.edges,e.groups,e.graph,e.graph.direction,e.style)}},{id:"bundleEdgePaths",after:["alignLabeledSourcePort"],mutates:["edges"],determinism:"pure-order",enabled:e=>e.mergeEdges,run:e=>{e.bundled=function(e,t,i,r,n){let o=new Map(t.map(e=>[e.id,e])),a=new Set,s=(r,a)=>{for(let[e,t]of a){let i=o.get(e.source),r=o.get(e.target);a.set(e,ed(ed(t,i,!0),r,!1))}let s=e.map(e=>a.has(e)?{...e,points:a.get(e)}:e),l=(t,i,r)=>e.some(e=>e.source===t&&e.target===i&&"invisible"!==e.style&&Q(r,e)&&e.hasArrowStart===r.hasArrowStart&&e.hasArrowEnd===r.hasArrowEnd&&(e.startMarker??"arrow")===(r.startMarker??"arrow")&&(e.endMarker??"arrow")===(r.endMarker??"arrow"));return r.filter(r=>{var o;let d,h,g=a.get(r.edge),u=s[e.indexOf(r.edge)];return function(e,t,i,r){let n=(e,t)=>{if(void 0!==e&&!/^\s*[+]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(e))return;let i=void 0===e?t:Number.parseFloat(e);return Number.isFinite(i)&&i>=0?Number(tn(i)):void 0},o=n(e.inlineStyle?.["stroke-width"],r.lineWidth*("thick"===e.style?2:1)),a=r.edgeBendRadius;if(void 0===o||!Number.isFinite(a)||a<0)return!1;let s=ts({stroke:"#000",strokeWidth:String(o)},!0);if(void 0===s)return!1;let l=s+a,d=e.points.map(e=>({x:Number(tn(e.x)),y:Number(tn(e.y))}));if(!d.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y)))return!1;let h=d.slice(1).map((e,t)=>{let i=d[t];return{x0:Math.min(i.x,e.x)-l,x1:Math.max(i.x,e.x)+l,y0:Math.min(i.y,e.y)-l,y1:Math.max(i.y,e.y)+l}}),g=(e,t)=>{let i=(Math.abs(e.x0)+Math.abs(e.x1)+Math.abs(e.y0)+Math.abs(e.y1)+Math.abs(t.x0)+Math.abs(t.x1)+Math.abs(t.y0)+Math.abs(t.y1))*1e-10+1e-9;return!Number.isFinite(i)||e.x1+i>t.x0&&e.x0<t.x1+i&&e.y1+i>t.y0&&e.y0<t.y1+i},u=Y(e,r);if(!u||u.length!==+!!e.hasArrowStart+ +!!e.hasArrowEnd)return!1;for(let i of t){let t=n(i.inlineStyle?.["stroke-width"],r.nodeLineWidth);if(void 0===t)return!1;let o=ee(i,{fill:"#000",stroke:"#000",strokeWidth:String(t)},r.cornerRadius),a=td(e3({id:i.id,role:"node",geometry:o.geometry,paint:o.paint,...o.childPaints?{childPaints:o.childPaints}:{}}));if(!a||i.id!==e.source&&i.id!==e.target&&h.some(e=>g(e,a)))return!1;for(let t of u)if(("start"===t.position?e.source:e.target)!==i.id&&(!t.bounds||g(t.bounds,a)))return!1}let f=e=>{let t=e.concurrencyRegion?0:e.headerHeight??e.height;if(t>0){let i={x0:e.x,x1:e.x+e.width,y0:e.y,y1:e.y+t};if(h.some(e=>g(e,i))||u.some(e=>!e.bounds||g(e.bounds,i)))return!1}return e.children.every(f)};return i.every(f)}(u,t,i,n)&&!J(r.edge,g,s,n,u)&&(o=r.edge,d=e.filter(e=>e!==o),h=new Set(B(o,d)),!B(u,d).some(e=>!h.has(e)&&(!Q(o,e)||!l(o.source,e.target,o)||!l(e.source,o.target,e))))})},l="LR"===r,d="RL"===r,h="BT"===r,g=l||d,u=(e,t)=>Math.max(...e.map(({edge:e})=>em(n,e,t))),f=new Map;for(let t of e)t.source!==t.target&&(f.has(t.source)||f.set(t.source,[]),f.get(t.source).push(t));for(let[e,t]of f){if(t.length<2)continue;let n=t[0].style;if(t.some(e=>e.label||e.style!==n))continue;let f=o.get(e);if(!f)continue;let c=t.filter(e=>{let t=o.get(e.target);return!!t&&(l?t.x>f.x+f.width:d?t.x+t.width<f.x:h?t.y+t.height<f.y:t.y>f.y+f.height)});if(c.length<2||new Set(c.map(e=>e.target)).size<2)continue;let p=f.x+f.width/2,y=f.y+f.height/2,m=c.map(e=>({edge:e,node:o.get(e.target)}));for(;m.length>=2;){let e=new Map;if(g){let t=l?f.x+f.width:f.x,n=el(t,l?Math.min(...m.map(e=>e.node.x)):Math.max(...m.map(e=>e.node.x+e.node.width)),u(m,"start"),u(m,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),m)){let i=l?a.x:a.x+a.width,r=a.y+a.height/2;e.set(o,[{x:t,y:y},{x:n,y:y},{x:n,y:r},{x:i,y:r}])}}else{let t=h?f.y:f.y+f.height,n=el(t,h?Math.max(...m.map(e=>e.node.y+e.node.height)):Math.min(...m.map(e=>e.node.y)),u(m,"start"),u(m,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),m)){let i=a.x+a.width/2,r=h?a.y+a.height:a.y;e.set(o,[{x:p,y:t},{x:p,y:n},{x:i,y:n},{x:i,y:r}])}}let t=s(m,e);if(t.length===m.length){for(let{edge:t}of m)t.points=e.get(t);x(m.map(e=>e.edge),a);break}if(new Set((m=t).map(e=>e.edge.target)).size<2)break}}let c=new Map;for(let t of e)a.has(t)||t.source===t.target||(c.has(t.target)||c.set(t.target,[]),c.get(t.target).push(t));for(let[e,t]of c){if(t.length<2)continue;let n=t[0].style;if(t.some(e=>e.label||e.style!==n))continue;let f=o.get(e);if(!f)continue;let c=t.filter(e=>{let t=o.get(e.source);return!!t&&(l?t.x+t.width<f.x:d?t.x>f.x+f.width:h?t.y>f.y+f.height:t.y+t.height<f.y)});if(c.length<2||new Set(c.map(e=>e.source)).size<2)continue;let p=f.x+f.width/2,y=f.y+f.height/2,m=c.map(e=>({edge:e,node:o.get(e.source)}));for(;m.length>=2;){let e=new Map;if(g){let t=l?f.x:f.x+f.width,n=el(l?Math.max(...m.map(e=>e.node.x+e.node.width)):Math.min(...m.map(e=>e.node.x)),t,u(m,"start"),u(m,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),m)){let i=l?a.x+a.width:a.x,r=a.y+a.height/2;e.set(o,[{x:i,y:r},{x:n,y:r},{x:n,y:y},{x:t,y:y}])}}else{let t=h?f.y+f.height:f.y,n=el(h?Math.min(...m.map(e=>e.node.y)):Math.max(...m.map(e=>e.node.y+e.node.height)),t,u(m,"start"),u(m,"end"));for(let{edge:o,node:a}of(n=t6(n,p,y,i,r),m)){let i=a.x+a.width/2,r=h?a.y:a.y+a.height;e.set(o,[{x:i,y:r},{x:i,y:n},{x:p,y:n},{x:p,y:t}])}}let t=s(m,e);if(t.length===m.length){for(let{edge:t}of m)t.points=e.get(t);x(m.map(e=>e.edge),a);break}if(new Set((m=t).map(e=>e.edge.source)).size<2)break}}return a}(e.edges,e.nodes,e.groups,e.graph.direction,e.style),e.genericBundled=e.bundled.size>0}},{id:"markCorankFanInBundles",after:["bundleEdgePaths"],mutates:["edges"],determinism:"in-place",enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n,o){let a=new Map(e.map(e=>[e.id,e])),l=eF(r.direction);for(let[d,h]of tH(e,t,i,r)){let t=a.get(d),i=[...h].sort((e,t)=>eW(a.get(e.source),r.direction)-eW(a.get(t.source),r.direction)),g=i.map(e=>a.get(e.source)),u=eM(t)[l.targetSide],f=(l.isHorizontal?t.height:t.width)/2*1.6,c=Math.min(28,i.length>1?f/(i.length-1):0),p=ea(i.length,c),y=e=>l.isHorizontal?{x:u.x,y:u.y+e}:{x:u.x+e,y:u.y};p.every(e=>s(t,y(e)))||(p=p.map(()=>0));let m=l.isHorizontal?"E"===l.sourceSide?Math.max(...g.map(e=>e.x+e.width)):Math.min(...g.map(e=>e.x)):"S"===l.sourceSide?Math.max(...g.map(e=>e.y+e.height)):Math.min(...g.map(e=>e.y)),b=m+((l.isHorizontal?u.x:u.y)-m)/2,w=[],M=!0;for(let t=0;t<i.length;t++){let n=i[t],o=eh(eM(g[t])[l.sourceSide],y(p[t]),r.direction,b);if(!eu(o,e,new Set([n.source,n.target]))){M=!1;break}w.push({edge:n,points:o})}if(M){for(let{edge:e,points:t}of w)e.points=t,e.routeCertificate=void 0;x(w.map(e=>e.edge),n),t_(w,e,r.direction,o,!0)}}}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style)}},{id:"clipEdgeToShape",after:["bundleEdgePaths"],mutates:["edges"],determinism:"in-place",mayChangeMetrics:{portRate:{worsenBy:1,whenImproves:"endpointApproaches"},endpointApproaches:"improve-only"},run:e=>{let t=new Map(e.nodes.map(e=>[e.id,e]));for(let i of e.edges){let r=e.bundled.has(i)?b(i):void 0;i.points=i.points.filter((e,t,i)=>0===t||e.x!==i[t-1].x||e.y!==i[t-1].y);let n=t.get(i.source),o=t.get(i.target);d(i,n,o),n&&(i.points=ed(i.points,n,!0)),o&&(i.points=ed(i.points,o,!1)),w(i,r)}}},{id:"applySymmetricFanoutEmissions",after:["clipEdgeToShape"],mutates:["edges"],determinism:"in-place",mayChangeMetrics:{symErr:"improve-only",bends:{worsenBy:2}},enabled:e=>!!e.elkResult||e.mergeEdges,run:e=>{!function(e,t,i,r,n,o){let a=e$(r.edges),s=new Map(e.map(e=>[e.id,e])),l=new Map;for(let e of t)X(e,s,r.direction)&&(l.has(e.source)||l.set(e.source,[]),l.get(e.source).push(e));let d=eF(r.direction);for(let[h,g]of l){let l=s.get(h),u=l&&tj(l,g,t,s,i,r.direction,a);if(!l||!u)continue;let f=u.map(e=>s.get(e.target)),c="diamond"!==l.shape&&K(l,i);if(c){let{ctx:n,axis:a}=S(e,t,r.direction,o,i),d=eW(l,r.direction),h=u.map(e=>v(e,l,s.get(e.target),n,a));if(h.every((e,t)=>null!==e&&1>=Math.abs(e-d+(h[h.length-1-t]-d))))continue}let p=f.map(e=>({t:e,x:e.x,y:e.y,width:e.width,height:e.height})),y=Z(i).map(e=>({group:e,x:e.x,y:e.y,width:e.width,height:e.height})),m=()=>{for(let e of p)e.t.x=e.x,e.t.y=e.y,e.t.width=e.width,e.t.height=e.height;for(let e of y)e.group.x=e.x,e.group.y=e.y,e.group.width=e.width,e.group.height=e.height},b=Math.max(...f.map(e=>e.width)),w=Math.max(...f.map(e=>e.height)),M=eW(l,r.direction),k=Math.min(...f.map(e=>eT(e,r.direction))),E=(d.isHorizontal?w:b)+28,P=ea(f.length,E),N="diamond"===l.shape?u.map((e,t)=>er(l,r.direction,t,u.length)[d.cross]):void 0,C=e=>{for(let t=0;t<f.length;t++){let i=f[t];i.width=b,i.height=w,d.isHorizontal?(i.x=k,i.y=e[t]-w/2):(i.x=e[t]-b/2,i.y=k)}};c||C(N??P.map(e=>M+e));let I=new Set(f.map(e=>e.id)),L=()=>{for(let e=0;e<f.length;e++){let t=f[e];if(t.x<0||t.y<0)return!1;for(let i=e+1;i<f.length;i++)if(eV(t,f[i],8))return!1}for(let t of f)for(let i of e)if(!I.has(i.id)&&eV(t,i,8))return!1;return!0},R=c||L();if(!R&&N&&(C(P.map(e=>M+e)),R=L()),!R){m();continue}let O=d.isHorizontal?"E"===d.sourceSide?l.x+l.width:l.x:"S"===d.sourceSide?l.y+l.height:l.y,$=d.isHorizontal?d.sign>0?Math.min(...f.map(e=>e.x)):Math.max(...f.map(e=>e.x+e.width)):d.sign>0?Math.min(...f.map(e=>e.y)):Math.max(...f.map(e=>e.y+e.height)),z=Math.max(0,...u.map(e=>(function(e,t,i){if(!e.label)return 0;let r=tC(e,{x:0,y:0},i);return(eF(t).isHorizontal?r.width:r.height)+3*Math.max(tR(i),e.hasArrowEnd?t$(i):tR(i))})(e,r.direction,o))),A=($-O)*d.sign;if(!c&&z>A+.001){let e=z-A,t=f.map(e=>({x:e.x,y:e.y,width:e.width,height:e.height}));for(let t of f)d.isHorizontal?t.x+=e*d.sign:t.y+=e*d.sign;if(ei(i,t,r.direction,e),!(R=L())){m();continue}$=d.isHorizontal?d.sign>0?Math.min(...f.map(e=>e.x)):Math.max(...f.map(e=>e.x+e.width)):d.sign>0?Math.min(...f.map(e=>e.y)):Math.max(...f.map(e=>e.y+e.height))}let B=Math.max(0,...u.map(e=>(function(e,t,i,r,n){if(!e.label)return 0;let o=eF(t),a=tC(e,{x:0,y:0},i),s=o.isHorizontal?a.width:a.height,l=Math.max(tR(i),e.hasArrowEnd?t$(i):tR(i)),d=((n-r)*o.sign-s)/3;return d>=l-.001?s+2*d:s+tR(i)+l+2})(e,r.direction,o,O,$))),F=O+($-O)*.5,_=$-d.sign*B,H=(_-F)*d.sign<0?_:F;if(c&&(H-O)*d.sign<Math.max(...u.map(e=>em(o,e,"start")))-.001)continue;let D=[];for(let t=0;t<u.length;t++){let i=u[t],n=s.get(i.target),o=eh(er(l,r.direction,t,u.length),en(n,r.direction),r.direction,H);if(!eu(o,e,new Set([i.source,i.target]))){R=!1;break}D.push({edge:i,points:o})}if(R&&c){let e=t.filter(e=>!g.includes(e)&&"invisible"!==e.style),i=t=>e.reduce((e,i)=>e+T(t,i.points),0);R=D.reduce((e,{points:t})=>e+i(t),0)<=D.reduce((e,{edge:t})=>e+i(t.points),0)}if(!R){m();continue}let W=D.map(({edge:e,points:t})=>({edge:{...e,points:t},points:t}));if(c&&W.some(({edge:e})=>e.label)){let n=new Map(D.map(({edge:e},t)=>[e,W[t].edge]));if(!tD(W,e,t.map(e=>n.get(e)??e),i,r.direction,o)){m();continue}}else t_(W,e,r.direction,o);for(let e=0;e<D.length;e++){let{edge:t,points:i}=D[e];t.points=i,t.labelPosition=W[e].edge.labelPosition,t.routeCertificate=void 0}x(D.map(e=>e.edge),n)}}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style)}},{id:"applySymmetricParallelEdgeLanes",after:["clipEdgeToShape"],mutates:["edges"],determinism:"in-place",enabled:e=>(!!e.elkResult||e.mergeEdges)&&iu(e.edges,!0),mayChangeMetrics:{symErr:"improve-only",crossings:"improve-only"},run:e=>{!function(e,t,i,r,n,o){let a=new Map(e.map(e=>[e.id,e])),l=eF(r.direction),d=new Map;for(let e of t){if(e.source===e.target||!e.label)continue;let t=a.get(e.source),r=a.get(e.target);if(!t||!r||!eb.has(t.shape)||!eb.has(r.shape)||K(t,i)||K(r,i))continue;let n=`${e.source}\0${e.target}`;d.has(n)||d.set(n,[]),d.get(n).push(e)}for(let i of d.values()){if(i.sort((e,t)=>(e.edgeIndex??0)-(t.edgeIndex??0)),2!==i.length)continue;let d=a.get(i[0].source),h=a.get(i[0].target),u=i.map(e=>tC(e,{x:0,y:0},o)),f=u.map(e=>e.width),c=u.map(e=>e.height),p=(l.isHorizontal?Math.max(...c):Math.max(...f))/2+18,y=[[1/3,2/3],[1/6,1/3],[2/3,5/6]],m=[p,p+16,p+32,p+52].map(e=>({lanes:l.isHorizontal?[Math.min(d.y,h.y)-e,Math.max(d.y+d.height,h.y+h.height)+e]:[Math.min(d.x,h.x)-e,Math.max(d.x+d.width,h.x+h.width)+e],sourceSlots:y[0],targetSlots:y[0]}));if("diamond"===d.shape)for(let e of[...m])for(let t of y)for(let i of y){let n=i.map(e=>h[l.cross]+eH(h,r.direction)*e),o=t.map(e=>d[l.cross]+eH(d,r.direction)*e);for(let r of[e.lanes,[e.lanes[0],n[1]],[n[0],e.lanes[1]],[e.lanes[0],o[1]],[o[0],e.lanes[1]]])m.push({lanes:r,sourceSlots:t,targetSlots:i})}for(let{lanes:a,sourceSlots:l,targetSlots:u}of m){let f=[],c=!0;for(let t=0;t<i.length;t++){let n=i[t],o=g(ed(ed(function(e,t,i,r,n,o,a=(n+1)/(o+1),s=a){let l=eF(i);if(l.isHorizontal){let i={x:"E"===l.sourceSide?e.x+e.width:e.x,y:e.y+e.height*a},n={x:"W"===l.targetSide?t.x:t.x+t.width,y:t.y+t.height*s},o=Math.min(28,Math.max(14,.18*Math.abs(n.x-i.x))),d=i.x+l.sign*o,h=n.x-l.sign*o;return g([i,{x:d,y:i.y},{x:d,y:r},{x:h,y:r},{x:h,y:n.y},n])}let d={x:e.x+e.width*a,y:"S"===l.sourceSide?e.y+e.height:e.y},h={x:t.x+t.width*s,y:"N"===l.targetSide?t.y:t.y+t.height},u=Math.min(28,Math.max(14,.18*Math.abs(h.y-d.y))),f=d.y+l.sign*u,c=h.y-l.sign*u;return g([d,{x:d.x,y:f},{x:r,y:f},{x:r,y:c},{x:h.x,y:c},h])}(d,h,r.direction,a[t],t,i.length,l[t],u[t]),d,!0),h,!1));if(!s(d,o[0])||!s(h,o.at(-1))||!eu(o,e,new Set([d.id,h.id]))){c=!1;break}f.push({edge:n,points:o,label:tI(o)})}if(c){if("diamond"===d.shape){let n=t.filter(e=>!i.includes(e));if(tK(f[0].points,f[1].points)||f.some(e=>n.some(t=>tK(e.points,t.points))))continue;let a=f.map(t=>{let i=[...n,...f.filter(e=>e!==t).map(e=>({...e.edge,points:e.points}))];return tB(t.edge,t.points,e,r.direction,o).filter(e=>!tQ(t.edge,{x:e.box.x,y:e.box.y,w:e.box.width,h:e.box.height},i))}),s;for(let e of a[0]){let t=a[1].find(t=>!eV(e.box,t.box,tL(o)));if(t){s=[e,t];break}}if(!s)continue;f[0].label=s[0].point,f[1].label=s[1].point}for(let e of f){let i=tC(e.edge,e.label,o);"diamond"!==d.shape&&tQ(e.edge,{x:i.x,y:i.y,w:i.width,h:i.height},t)&&(c=!1)}if(!(!c||!0!==tZ(t,f,o))){for(let{edge:e,points:t,label:i}of f)e.points=t,e.labelPosition=i,e.routeCertificate=void 0;x(f.map(e=>e.edge),n);break}}}}}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style)}},{id:"applyParallelDuplicateLanes",after:["clipEdgeToShape"],mutates:["edges"],determinism:"in-place",enabled:e=>(!!e.elkResult||e.mergeEdges)&&iu(e.edges),mayChangeMetrics:{crossings:{worsenBy:1,whenImproves:"parallelOverlaps",perImprovement:!0},parallelOverlaps:"improve-only"},run:e=>{!function(e,t,i,r,n,o,a){let l=new Map(e.map(e=>[e.id,e])),d=eF(r.direction),h={allowCrossingsForOverlap:!0,...a?{labelClearance:{nodes:e,style:a}}:{}},u=e=>d.isHorizontal?e.height:e.width,f=(e,t)=>d.isHorizontal?{x:e,y:t}:{x:t,y:e},c=e=>e[d.main]+(d.isHorizontal?e.width:e.height),p=e=>e[d.main],y="E"===d.sourceSide||"S"===d.sourceSide,m="W"===d.targetSide||"N"===d.targetSide,b=(e,t)=>y!==t?c(e):p(e),w=(e,t)=>m!==t?p(e):c(e),M=new Set,v=(e,t)=>{for(let i=1;i<e.points.length;i++){let r=e.points[i-1],n=e.points[i],o=.5>Math.abs(r.x-n.x),a=.5>Math.abs(r.y-n.y);if(!(!o&&!a))for(let e=1;e<t.points.length;e++){let i=t.points[e-1],s=t.points[e];if(o){if(Math.abs(i.x-s.x)>=.5||Math.abs(r.x-i.x)>=1)continue;if(Math.min(Math.max(r.y,n.y),Math.max(i.y,s.y))-Math.max(Math.min(r.y,n.y),Math.min(i.y,s.y))>1)return!0}else if(a){if(Math.abs(i.y-s.y)>=.5||Math.abs(r.y-i.y)>=1)continue;if(Math.min(Math.max(r.x,n.x),Math.max(i.x,s.x))-Math.max(Math.min(r.x,n.x),Math.min(i.x,s.x))>1)return!0}}}return!1},S=new Map;for(let e of t){if(e.source===e.target)continue;let t=l.get(e.source),r=l.get(e.target);if(!t||!r||!eb.has(t.shape)||!eb.has(r.shape)||K(t,i)||K(r,i))continue;let n=(w(r,!1)-b(t,!1))*d.sign,o=(b(t,!0)-w(r,!0))*d.sign;if(n<=16&&o<=16)continue;let a=`${e.source}\0${e.target}`;S.has(a)||S.set(a,[]),S.get(a).push(e)}let k=(e,t)=>{let i=tC(e,t,o),r=eC(e,o.lineWidth??1);return{x:i.x-r,y:i.y-r,width:i.width+2*r,height:i.height+2*r}},E=(i,a,c,p,y=0)=>{i.sort((e,t)=>(e.edgeIndex??0)-(t.edgeIndex??0));let m=l.get(i[0].source),v=l.get(i[0].target),S=b(m,a),E=w(v,a),P=i.length;if(c<4)return!1;let N=i.every(e=>e.label)?Math.max(c,...i.map(e=>{let t=k(e,{x:0,y:0});return(d.isHorizontal?t.width:t.height)+tL(o)})):c,C="target"===p,I=m[d.cross]+u(m)/2+y,L=v[d.cross]+u(v)/2+y,R=[],O=[];for(let e=0;e<P;e++){let t=I+(e-(P-1)/2)*c,r=L+(e-(P-1)/2)*c,n=(a?-1:1)*d.sign,o=C?E-n*(16+e*N):S+n*(16+e*N),s=Math.min(S,E),l=Math.max(S,E);(o<=s+4||o>=l-4)&&(o=(S+E)/2),R.push({edge:i[e],sCross:t,tCross:r}),O.push(o)}R[0].tCross-R[0].sCross>0!==C&&O.reverse();let $=[];for(let t=0;t<P;t++){let{edge:i,sCross:r,tCross:n}=R[t],o=O[t],a=g(ed(ed(r===n?[f(S,r),f(E,n)]:[f(S,r),f(o,r),f(o,n),f(E,n)],m,!0),v,!1));if(a.length<2||!s(m,a[0])||!s(v,a[a.length-1])||!eu(a,e,new Set([m.id,v.id])))return!1;$.push({edge:i,points:a,label:i.label?tI(a):void 0})}let z=tZ(t,$,o,{allowCrossingsForOverlap:!0});if(!0!==z)return z;if("original"!==p){let n=t.filter(e=>!i.includes(e)),a=[...n,...$.map(e=>({...e.edge,points:e.points}))].flatMap(e=>U(e,o)).flatMap(e=>e.bounds?[{x:e.bounds.x0,y:e.bounds.y0,width:e.bounds.x1-e.bounds.x0,height:e.bounds.y1-e.bounds.y0}]:[]),s=n.filter(e=>e.label).map(e=>k(e,e.labelPosition??eB(e.points)));for(let t of $){if(!t.edge.label)continue;let i=[...n,...$.filter(e=>e!==t).map(e=>({...e.edge,points:e.points}))],l=tB(t.edge,t.points,e,r.direction,o).find(r=>{let n=k(t.edge,r.point);return!e.some(e=>eV(n,e,2))&&!a.some(e=>eV(n,e,0))&&!s.some(e=>eV(n,e,2))&&!tQ(t.edge,{x:n.x,y:n.y,w:n.width,h:n.height},i)});if(!l)return!1;t.label=l.point,s.push(k(t.edge,t.label))}}if(h.labelClearance&&!tJ(t,$,h.labelClearance))return!1;for(let{edge:e,points:t,label:i}of $)e.points=t,e.labelPosition=i,e.routeCertificate=void 0,M.add(e);return x($.map(e=>e.edge),n),!0};for(let r of S.values()){if(r.length<2||!r.some(e=>e.label)||!r.some(e=>e.label&&r.some(t=>t!==e&&v(e,t)))||r.every(e=>e.label)&&0===$({nodes:[],edges:r},o).labelLabel)continue;let n=l.get(r[0].source),a=l.get(r[0].target);if(!n||!a)continue;let s=!((w(a,!1)-b(n,!1))*d.sign>16),h=(Math.min(u(n),u(a))-10)/(r.length-1),g=Math.max(14,...r.filter(e=>e.label).map(e=>{let t=k(e,{x:0,y:0});return(d.isHorizontal?t.height:t.width)/2+3})),f=(n,o)=>{let a=E(r,s,n,o);if(!0===a)return!0;if("marker-blocked"!==a||!tV(e,t,i))return!1;let l=(h-n)*(r.length-1)/2;return l>0&&P(0).some(e=>{let t=(2*e-1)*l;return 0!==t&&!0===E(r,s,n,o,t)})};if(!(g<=h&&(f(g,"source")||f(g,"target")))&&!f(Math.min(14,h),"original")&&r.every(e=>e.label)){let e=Math.min(7,h);f(e,"source")||f(e,"target")||f(e,"original")}}let N=new Map,C=new Map;for(let e of t){if(M.has(e)||e.source===e.target||e.label)continue;let t=l.get(e.source),r=l.get(e.target);if(!t||!r||!eb.has(t.shape)||!eb.has(r.shape)||K(t,i)||K(r,i))continue;let n=t=>{t.has(e.target)||t.set(e.target,[]),t.get(e.target).push(e)};(w(r,!1)-b(t,!1))*d.sign>16?n(N):(b(t,!0)-w(r,!0))*d.sign>16&&n(C)}let I=(r,a)=>{if(r.length<2)return;let c=new Map;for(let e of r)c.set(e.source,(c.get(e.source)??0)+1);if(![...c.values()].some(e=>e>=2))return;let p=l.get(r[0].target),y=w(p,a),m=p[d.cross]+u(p)/2,M=e=>{let t=l.get(e.source);return t[d.cross]+u(t)/2};r.sort((e,t)=>M(e)-M(t)||(e.edgeIndex??0)-(t.edgeIndex??0));let v=r.length,S=Math.min(14,(u(p)-10)/(v-1));if(S<4)return;let k=new Map;for(let e of r)k.has(e.source)||k.set(e.source,[]),k.get(e.source).push(e);let E=[],P=[];for(let e=0;e<v;e++){let t=r[e],i=l.get(t.source),n=b(i,a),o=m+(e-(v-1)/2)*S,s=k.get(t.source),h=s.length>1?Math.min(S,(u(i)-10)/(s.length-1)):0,g=i[d.cross]+u(i)/2+(s.indexOf(t)-(s.length-1)/2)*h,f=n+(a?-1:1)*d.sign*(16+e*S),c=Math.min(n,y),p=Math.max(n,y);(f<=c+4||f>=p-4)&&(f=(n+y)/2),E.push({edge:t,source:i,exitMain:n,sCross:g,tCross:o}),P.push(f)}for(let e=0;e<v;){let t=e;for(;t+1<v&&r[t+1].source===r[e].source;)t++;if(t>e&&E[e].tCross-E[e].sCross>0){let i=P.slice(e,t+1).reverse();for(let r=e;r<=t;r++)P[r]=i[r-e]}e=t+1}let N=t=>{let i=[];for(let r=0;r<v;r++){let{edge:n,source:a,exitMain:l}=E[r],d=E[r].sCross,h=E[r].tCross+t,u=P[r],c;c=ed(c=d===h?[f(l,d),f(y,h)]:[f(l,d),f(u,d),f(u,h),f(y,h)],a,!0);let m=ek(c=g(c=ed(c,p,!1)),j(n,o));if(!m||(c=m).length<2||!s(a,c[0])||!s(p,c[c.length-1])||!eu(c,e,new Set([a.id,p.id])))return;i.push({edge:n,points:c})}return i},C=N(0);if(!C)return;let I=tZ(t,C,o,h);if(!0!==I){if("marker-blocked"!==I||!tV(e,t,i))return;let r=-1/0,n=1/0;for(let e of E)r=Math.max(r,e.source[d.cross]+5-e.sCross,p[d.cross]+5-e.tCross),n=Math.min(n,e.source[d.cross]+u(e.source)-5-e.sCross,p[d.cross]+u(p)-5-e.tCross);if(!Number.isFinite(r)||!Number.isFinite(n)||r>0||n<0)return;let a=tU(),s={...h,labelClearance:{nodes:e,style:o}},l;for(let d of[r,n]){if(a.remaining<=0)break;if(0===d)continue;let r=N(d);if(!r||!0!==tZ(t,r,o,s))continue;let n=new Map(r.map(e=>[e.edge,e.points]));if(tG(e,t.map(e=>n.has(e)?{...e,points:n.get(e)}:e),e,t,i,o,a)){l=r;break}}if(!l)return;C=l}for(let{edge:e,points:t}of C)e.points=t,e.labelPosition=void 0,e.routeCertificate=void 0;x(C.map(e=>e.edge),n)};for(let e of N.values())I(e,!1);for(let e of C.values())I(e,!0)}(e.nodes,e.edges,e.groups,e.graph,e.bundled,e.style,e.elkResult?void 0:e.style)}},{id:"collapseTinyBundledHitches",after:["applySymmetricFanoutEmissions","applySymmetricParallelEdgeLanes","applyParallelDuplicateLanes"],mutates:["edges"],determinism:"in-place",mayChangeMetrics:{bends:"improve-only"},run:e=>{ev(e.nodes,e.edges,e.bundled)}},{id:"reassignBundledSiblingLabels",after:["collapseTinyBundledHitches"],mutates:["edges"],determinism:"in-place",run:e=>{!function(e,t,i,r,n,o=[]){let a=new Map(e.map(e=>[e.id,e])),s=new Map;for(let e of t)i.has(e)&&e.label&&X(e,a,r)&&(s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e));for(let i of s.values()){if(i.length<2||i.length>3||new Set(i.map(e=>e.target)).size<i.length)continue;let s=[...i].sort((e,t)=>{let i=a.get(e.target),n=a.get(t.target);return i&&n?eW(i,r)-eW(n,r):(e.edgeIndex??0)-(t.edgeIndex??0)}),l=a.get(s[0].source);if(l?.shape==="rectangle"&&K(l,o)){let i=s.map(e=>({edge:{...e},points:e.points})),a=new Map(s.map((e,t)=>[e,i[t].edge]));tD(i,e,t.map(e=>a.get(e)??e),o,r,n)&&s.forEach((e,t)=>{e.labelPosition=i[t].edge.labelPosition})}else t_(s.map(e=>({edge:e,points:e.points})),e,r,n)}}(e.nodes,e.edges,e.bundled,e.graph.direction,e.style,e.groups)}},{id:"applyRouteContracts",after:["reassignBundledSiblingLabels"],mutates:["edges"],determinism:"fixed-point",freezesNodes:!0,mayChangeMetrics:{straight:{worsenBy:1,whenImproves:["hard","crossings","endpointApproaches"],perImprovement:!0},bends:{worsenBy:4,whenImproves:["hard","crossings","endpointApproaches"],perImprovement:!0},portRate:{worsenBy:1,whenImproves:["hard","crossings","bends","endpointApproaches","opposingOverlaps"]}},run:e=>{k({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.bundled,e.style,e.elkResult?void 0:{preserveSelfLoops:!0,preserveLabels:!0,preserveStraightRoutes:!0})}},{id:"reanchorOffOutlineEndpoints",after:["applyRouteContracts"],mutates:["edges"],determinism:"in-place",run:e=>{ex(e.nodes,e.edges,e.graph,e.style)}},{id:"rerouteEdgesThroughNodes",after:["reanchorOffOutlineEndpoints"],mutates:["edges"],determinism:"in-place",run:e=>{ew(e.nodes,e.edges,e.graph,void 0,e.groups),R({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"repairLabelsOnSharedTrunks",after:["rerouteEdgesThroughNodes"],mutates:["edges"],determinism:"in-place",run:e=>{C({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"repairLabelsOffOwnRoute",after:["repairLabelsOnSharedTrunks"],mutates:["edges"],determinism:"in-place",run:e=>{I({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"separateEdgeLabelPills",after:["repairLabelsOffOwnRoute"],mutates:["edges"],determinism:"in-place",run:e=>{L({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style,e.elkResult?void 0:{preserveRouteClearance:!0})}},{id:"closeRouteContracts",after:["separateEdgeLabelPills"],mutates:["edges"],determinism:"fixed-point",mayChangeMetrics:{straight:"improve-only",bends:"improve-only"},run:e=>{O({nodes:e.nodes,edges:e.edges,groups:e.groups},e.graph,e.style)}},{id:"translateGeometryToNonNegativeOrigin",after:["closeRouteContracts"],mutates:["translate"],determinism:"in-place",run:e=>{u(e.nodes,e.edges,e.groups,e.layoutPadding,e.style)}},{id:"placeStateNotes",after:["translateGeometryToNonNegativeOrigin"],mutates:["translate"],determinism:"in-place",enabled:e=>!!e.graph.stateNotes?.length,run:e=>{e.notes=function(e,t,i,r,n,o,a){let s=r.stateNotes??[];if(0===s.length)return[];let l=[],d=e=>{for(let t of e)l.push(t),d(t.children)};d(i);let h=[];for(let t of e)h.push({x:t.x,y:t.y,w:t.width,h:t.height});for(let e of l)h.push({x:e.x,y:e.y,w:e.width,h:e.height});for(let e of t){if("invisible"===e.style)continue;for(let t=1;t<e.points.length;t++){let i=e.points[t-1],r=e.points[t];h.push({x:Math.min(i.x,r.x)-2,y:Math.min(i.y,r.y)-2,w:Math.abs(i.x-r.x)+4,h:Math.abs(i.y-r.y)+4})}let t=e.label?eI(e,n):null;t&&h.push(t)}let g=(e,t)=>e.x<t.x+t.w&&e.x+e.w>t.x&&e.y<t.y+t.h&&e.y+e.h>t.y,u=[];for(let t of s){let i=e.find(e=>e.id===t.target),r=i?void 0:l.find(e=>e.id===t.target),o=i??r;if(!o)continue;let s=eP(e9(t.text,t.textContent),n,"note"),d=s.width+20,f=s.height+16,c=o.y+(o.height-f)/2,p="left"===t.side?o.x-a-d:o.x+o.width+a;for(let e=0;e<h.length+u.length+4;e++){let e={x:p-6,y:c-6,w:d+12,h:f+12},i=h.find(t=>g(e,t))??u.map(e=>({x:e.x,y:e.y,w:e.width,h:e.height})).find(t=>g(e,t));if(!i)break;p="left"===t.side?i.x-6-d:i.x+i.w+6}u.push({id:t.id,target:t.target,side:t.side,text:t.text,...t.textContent?{textContent:t.textContent}:{},textBlock:s,x:p,y:c,width:d,height:f})}let f=0,c=0;for(let e of u)f=Math.min(f,e.x),c=Math.min(c,e.y);if(f<0||c<0){let r=f<0?-f+o:0,n=c<0?-c+o:0,a=e=>{e.x+=r,e.y+=n,e.children.forEach(a)};for(let t of e)t.x+=r,t.y+=n;for(let e of i)a(e);for(let e of t){for(let t of e.points)t.x+=r,t.y+=n;e.labelPosition&&(e.labelPosition.x+=r,e.labelPosition.y+=n)}for(let e of u)e.x+=r,e.y+=n}return u}(e.nodes,e.edges,e.groups,e.graph,e.style,e.layoutPadding,e.stateNoteMargin)}}];function ip(i,r){for(let n of i.nodes)n.labelBlock??=eP(e9(n.label,n.labelContent),r,"node"),!n.icon||n.iconFallbackBlock||t(n.icon)||(n.iconFallbackBlock=tg(e(n.icon),{fontSize:10,fontWeight:400}));for(let e of i.edges)void 0!==e.label&&(e.labelBlock??=eP(e9(e.label,e.labelContent),r,"edge"));let n=e=>{e.labelBlock??=eP(e9(e.label,e.labelContent),r,"group"),e.headerHeight=ih(e,r,e.labelBlock),e.children.forEach(n)};i.groups.forEach(n)}function iy(e,t){let i={nodes:e.nodes,edges:e.edges,groups:e.groups,width:0,height:0};return W(e.graph,i,t,e.style,e.bundled)}function im(e,t,i=!1,r=eO.padding,n=e1({}),o=18){let a=[],s=[],l=new Set;for(let e of t.subgraphs)!function e(t,i){for(let r of(i.add(t.id),t.children))e(r,i)}(e,l);return function e(t,i,r,n,o,a,s){if(t.children)for(let l of t.children){let t=(l.x??0)+a,d=(l.y??0)+s,h=l.width??0,g=l.height??0;if(r.has(l.id)){let a=[];e(l,i,r,n,a,t,d);let s=eX(i.subgraphs,l.id),u=s?.stateComposite?eQ(l.id,i):void 0;o.push({id:l.id,label:s?.label??"",...s?.labelContent?{labelContent:s.labelContent}:{},x:t,y:d,width:h,height:g,children:a,...s?.headerMinHeight===void 0?{}:{headerMinHeight:s.headerMinHeight},...s?.concurrencyRegion?{concurrencyRegion:!0}:{},...u?{inlineStyle:u}:{}})}else{let a=i.nodes.get(l.id);if(a){let e=eq(l.id,i),r=i.classAssignments.get(l.id),o=r?r.split(/\s+/).filter(Boolean):void 0;n.push({id:l.id,label:a.label,...a.labelContent?{labelContent:a.labelContent}:{},...a.labelBlock?{labelBlock:a.labelBlock}:{},shape:a.shape,...void 0!==a.floatingNoteId?{floatingNoteId:a.floatingNoteId}:{},...void 0!==a.semanticShape?{semanticShape:a.semanticShape}:{},x:t,y:d,width:h,height:g,inlineStyle:e,classNames:o,...a.icon?{icon:a.icon}:{},...a.image?{image:a.image}:{},...a.iconForm?{iconForm:a.iconForm}:{},...a.href?{href:a.href}:{}})}l.children&&l.children.length>0&&e(l,i,r,n,o,t,d)}}}(e,t,l,a,s,0,0),ix({width:e.width??800,height:e.height??600,nodes:a,edges:[],groups:s},t,i,r,n,o,e)}function ix(e,t,i,r,n,o,a,s){let{nodes:l,edges:d,groups:h}=e,g=ez(h),u={elkResult:a,graph:t,nodes:l,edges:d,groups:h,notes:[],margins:g.length>0?{leftX:Math.min(...g.map(e=>e.x))-20,rightX:Math.max(...g.map(e=>e.right))+20}:void 0,bundled:new Set,genericBundled:!1,mergeEdges:i,style:n,layoutPadding:r,stateNoteMargin:o,frozen:!1};if(s)for(let e of s)u.bundled.add(d[e]);ip(u,n),function(e,t,i={}){let r=new Set,n=e.frozen;for(let o of t){if(o.enabled&&!o.enabled(e)){r.add(o.id);continue}for(let e of o.after)if(!r.has(e))throw new ty(o.id,"ordering",`LayoutPass ordering: '${o.id}' must run after '${e}', which has not run`);let t=Object.entries(o.mayChangeMetrics??{}),a=e=>"improve-only"!==e&&e.whenImproves?"string"==typeof e.whenImproves?[e.whenImproves]:e.whenImproves:[],s=[];for(let[e,i]of t)for(let t of(s.includes(e)||s.push(e),a(i)))s.includes(t)||s.push(t);let l=o.proposal?s.includes("hard")?[...s]:[...s,"hard"]:s;if((t.length||o.proposal)&&!i.measureMetrics)throw new ty(o.id,"measurement",`Layout pass '${o.id}' declares metric budgets but no geometry measurement was supplied`);let d=(t=s)=>{try{return i.measureMetrics(e,t)}catch(e){throw e instanceof ty?e:new ty(o.id,"measurement",`Layout pass '${o.id}' could not measure its declared geometry: ${e instanceof Error?e.message:String(e)}`)}},h=t.length||o.proposal?d(l):void 0,g=n?tx(e).map(({id:e,x:t,y:i,width:r,height:n})=>({id:e,x:t,y:i,width:r,height:n})):void 0,u=n?(e.edges??[]).map(e=>({points:e.points?.map(e=>({...e})),labelPosition:e.labelPosition?{...e.labelPosition}:void 0,certificate:e.routeCertificate})):void 0,f=(e=!1)=>{let i;if(h){let r=d(e?l:s),n=e=>{let t=h[e],i=r[e];if(void 0===t||void 0===i||!Number.isFinite(t)||!Number.isFinite(i))throw new ty(o.id,"measurement",`Layout pass '${o.id}' has no finite measurement for ${e}`);return("straight"===e||"portRate"===e?-1:1)*(i-t)};for(let[s,l]of e&&o.proposal?[...t,["hard","improve-only"]]:t){let e=Math.max(0,...a(l).map(e=>-n(e))),t="improve-only"===l||l.whenImproves&&e<=1e-6?0:l.worsenBy*(l.perImprovement?Math.floor(e+1e-6):1);if(n(s)>t+1e-6){let e=new tm(o.id,s,h[s],r[s],t);if("hard"===s)throw e;i??=e}}}return i},c=()=>{if(g){let t=tx(e),i=o.mutates.includes("translate"),r=i&&g[0]&&t[0]?t[0].x-g[0].x:0,n=i&&g[0]&&t[0]?t[0].y-g[0].y:0,a=(e,t)=>i?1e-6>=Math.abs(t.x-e.x-r)&&1e-6>=Math.abs(t.y-e.y-n):e.x===t.x&&e.y===t.y;if(t.length!==g.length||!e.frozen)throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' changed frozen geometry membership or state`);for(let e=0;e<g.length;e++){let i=g[e],r=t[e];if(i.id!==r.id||i.width!==r.width||i.height!==r.height||!a(i,r))throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' moved frozen geometry without a uniform translation`)}if(u){if((e.edges?.length??0)!==u.length)throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' changed frozen edge membership`);for(let t=0;t<u.length;t++){let r=u[t],n=e.edges[t],s=r.points?.length===n.points?.length&&(r.points??[]).every((e,t)=>n.points?.[t]&&a(e,n.points[t]));if(i){if(!s||!!r.labelPosition!=!!n.labelPosition||r.labelPosition&&!a(r.labelPosition,n.labelPosition))throw new ty(o.id,"freeze",`LayoutPass freeze: '${o.id}' did not translate all frozen routes and labels uniformly`)}else if(!s&&(!o.mutates.includes("edges")||void 0===n.routeCertificate||n.routeCertificate===r.certificate))throw new ty(o.id,"certificate",`LayoutPass certificate: '${o.id}' rewrote edge geometry after the route-contract freeze without re-issuing routeCertificate`)}}}},p=o.run(e);if(p&&!o.proposal)throw new ty(o.id,"metric-budget",`Layout pass '${o.id}' returned a rollback without declaring a cosmetic proposal`);let y=f();if(c(),y){if(!p)throw y;p();let e=f(!0);if(e)throw e;c()}o.freezesNodes&&(e.frozen=!0),n||=e.frozen,r.add(o.id),i.onAfterPass?.(o,e)}}(u,ic,{measureMetrics:iy});let f=e.width,c=e.height,p=eZ.width;for(let e of l)f=Math.max(f,e.x+e.width+r),c=Math.max(c,e.y+e.height+r);for(let e of ez(h))f=Math.max(f,e.right+r),c=Math.max(c,e.bottom+r);for(let e of d){for(let t of e.points)f=Math.max(f,t.x+p+r),c=Math.max(c,t.y+p+r);let t=e.labelBlock?eI(e,n):null;t&&(f=Math.max(f,e.labelPosition.x+60+r,t.x+t.w+r),c=Math.max(c,e.labelPosition.y+20+r,t.y+t.h+r))}for(let e of u.notes)f=Math.max(f,e.x+e.width+r),c=Math.max(c,e.y+e.height+r);return{genericBundled:u.genericBundled,positioned:{width:f,height:c,nodes:l,edges:d,groups:h,...u.notes.length>0?{notes:u.notes}:{}}}}function ib(e,t={}){eY(e);let i=t.graphLayout?tu(t,()=>{let i=e1(t,t.stateVisual?.styleDefaults,t.styleFace);return o(e,t,i,iS)},()=>ik(e,t),!0,(e,t)=>{e.layoutDecision=t}):ik(e,t),r=e1(t,t.stateVisual?.styleDefaults,t.styleFace);ip(i,r);let n=e2(t.diagramTitle,e1(t,t.stateVisual?.styleDefaults,t.styleFace));if(!n)return i;let a=t.padding??eO.padding;if(0===i.width&&0===i.height)return Object.assign(i,e5(n,a));(function(e,t){let i=e=>{for(let r of(e.y+=t,e.children))i(r)};for(let i of e.nodes)i.y+=t;for(let t of e.groups)i(t);for(let i of e.edges){for(let e of i.points)e.y+=t;i.labelPosition&&(i.labelPosition.y+=t)}for(let i of e.notes??[])i.y+=t})(i,n.height),i.height+=n.height,i.width=Math.max(i.width,n.width+2*a),i.title=e6(n,i.width,a);let s=tv(i,r);if(s.length)throw new tr([{strategy:"final-title-projection",violations:s}]);return i}function iw(e,t={}){eY(e);let i=ik(e,t,"placement");return ip({...i,edges:[]},e1(t,void 0,t.styleFace)),i}function iM(e,t={}){eY(e);let i=e1(t,void 0,t.styleFace);return a(e,t,i,iS)}function iv(e,t,r,o=!1){let a=t.stateVisual,s={...eO,...t,...a?{stateVisual:a}:{}},l=e1(t,a?.styleDefaults,t.styleFace),d=ie(e,s,l);if(o&&!a){let t=((...e)=>n().indexedForestLayout(...e))(e,d,s.padding,s.nodeSpacing,s.layerSpacing);if(!t)throw Error("Graph is ineligible for indexed forest layout");let i=im(t,e,eO.mergeEdges,s.padding,l,18);return i.genericBundled&&r?.(i.positioned,()=>im(t,e,!1,s.padding,l,18).positioned),i.positioned}if(1===e.nodes.size&&0===e.edges.length&&0===e.subgraphs.length&&!e.stateNotes?.length&&!a&&d.children?.length===1){let t=d.children[0];return im({...d,width:t.width+2*s.padding,height:t.height+2*s.padding,children:[{...t,x:s.padding,y:s.padding}]},e,eO.mergeEdges,s.padding,l,18).positioned}let h,g,u="exception",f=0;for(let t of[{},{"elk.layered.feedbackEdges":"false"},{"elk.layered.feedbackEdges":"false","elk.layered.compaction.postCompaction.strategy":"NONE"},{"elk.layered.feedbackEdges":"false","elk.layered.compaction.postCompaction.strategy":"NONE","elk.layered.crossingMinimization.forceNodeModelOrder":"false","elk.layered.highDegreeNodes.treatment":"false"}]){++f>1&&tf("elk-degradation",u,f);let r=0===Object.keys(t).length?d:ie(e,s,l);Object.keys(t).length>0&&(r.layoutOptions={...r.layoutOptions,...t});try{let e=i(r);if(iE(e)){g=Error("ELK returned non-finite layout geometry"),u="non-finite-geometry";continue}h=e;break}catch(e){if(e instanceof eG||e instanceof to)throw e;g=e,u="exception"}}if(!h)throw g;let c=h,p=a?.noteMargin??18,y=im(c,e,eO.mergeEdges,s.padding,l,p);return y.genericBundled&&r?.(y.positioned,()=>im(c,e,!1,s.padding,l,p).positioned),y.positioned}var iS={edgeSelectorIndices:eR,graphEdgeMarkerPaintRegions:U,customTextMeasurementActive:tc,certifyCandidate:tS,retainSelection:tN,countEdgeCrossings:F,countOpposingRouteOverlaps:z,countParallelRouteOverlaps:_,measureLabelConflicts:$,DEFAULTS:eO,LABEL_PILL_PADDING:eN,measureRenderStage:ti,graphTextBlock:eP,resolveLabelContent:e9,groupTitleWidth:id,groupHeaderHeight:ih,estimateNodeSize:t8,resolveNodeInlineStyle:eq,resolveEdgeInlineStyle:eK,resolveClassInlineStyle:eQ,containsNonFiniteNumber:iE,finishGraphGeometry:ix,unsupported:e=>{throw new th(e)}};function ik(e,t,i){let r=e1(t,t.stateVisual?.styleDefaults,t.styleFace),o=t=>(function e(t,i,r){return t.some(t=>{let n=eX(i.subgraphs,t.id);return void 0!==n&&t.width+.5<id(n,r)||e(t.children,i,r)})})(t.groups,e,r),a=!1!==t.compareRoutePreferences,s=new WeakMap,l=a&&ep(e)&&!iu(e.edges)?(e,t)=>{s.set(e,t)}:void 0,d=e.subgraphs.length>0&&!il(e,t),h=[{strategy:"default",produce:()=>iv(e,t,l),preferNext:o}],g=(t.nodeSpacing??eO.nodeSpacing)>0&&(t.layerSpacing??eO.layerSpacing)>0,u=void 0===t.graphLayout&&e8("indexed-layout")&&g&&!t.stateVisual&&!t.preserveSubgraphChildOrder&&function(e){if(e.nodes.size<2||e.subgraphs.length>0||e.stateNotes?.length||e.edges.length>=e.nodes.size||[...e.nodes.values()].some(e=>"rectangle"!==e.shape))return!1;let t=new Map,i=new Map;for(let r of e.edges){if(void 0!==r.label||(r.length??1)!==1||r.source===r.target||!e.nodes.has(r.source)||!e.nodes.has(r.target)||t.has(r.target))return!1;t.set(r.target,1);let n=i.get(r.source);n?n.push(r.target):i.set(r.source,[r.target])}let r=[...e.nodes.keys()].filter(e=>!t.has(e));for(let e=0;e<r.length;e++)for(let t of i.get(r[e])??[])r.push(t);return r.length===e.nodes.size}(e)&&(n(),1)?{strategy:"indexed-forest",produce:()=>iv(e,t,l,!0),preferNext:o}:void 0;return t.separateHierarchy||h.push({strategy:"separate-hierarchy",produce:()=>iv(e,{...t,separateHierarchy:!0},l),preferNext:o,qualityAlternative:a&&d}),t.disableCorankFanIn||eU("APL_NO_CORANK_FANIN")||(h.push({strategy:"without-corank",produce:()=>iv(e,{...t,disableCorankFanIn:!0},l),preferNext:o,qualityAlternative:a&&t3(e,r).size>0}),t.separateHierarchy||h.push({strategy:"separate-without-corank",produce:()=>iv(e,{...t,separateHierarchy:!0,disableCorankFanIn:!0},l),preferNext:o,qualityAlternative:a&&d})),"placement"===i?function(e,t,i,r){let{selected:n}=tP(e,t,i,r,"placement");tw(e,n.positioned);let{width:o,height:a,nodes:s,groups:l}=n.positioned;return{width:o,height:a,nodes:s,groups:l}}(e,r,h,u):function(e,t,i,r,n){let o=tP(e,t,i,n),a=tN(e,o),s=r(a,o.selected.score);if(!s)return a;let l={...o.selected,strategy:"bundled"},d=tS(e,t,s),h=[{strategy:l.strategy,score:l.score}];d.certified&&h.push({strategy:d.certified.strategy,score:d.certified.score});let g=d.certified?tE(l,d.certified):{selected:l,reason:"alternative-invalid"},u=g.selected.positioned;return tw(e,u),u.certification={...a.certification,preference:{...a.certification.preference,selectedScore:g.selected.score,routing:{strategy:g.selected===l?"bundled":s.strategy,preference:{selectedScore:g.selected.score,reason:g.reason,compared:h}}}},u}(e,r,h,(e,t)=>{let i=s.get(e);if(!(!i||0===t.edgeCrossings&&0===t.labelConflicts))return{strategy:"without-generic-bundling",produce:i,preferNext:o}},u)}function iE(e,t=new Set){return"number"==typeof e?!Number.isFinite(e):!(null===e||"object"!=typeof e||t.has(e))&&(t.add(e),Array.isArray(e)?e.some(e=>iE(e,t)):Object.values(e).some(e=>iE(e,t)))}export{ib as a,iw as b,iM as c};
@@ -0,0 +1 @@
1
+ import{c as e}from"./chunk-J57YRC2M.js";import{_ as t,k as i}from"./chunk-G4JBA7HU.js";import{Aa as n}from"./chunk-EIYLJ4FI.js";var l=/^\s*(?:fill|stroke|color)\s*:\s*$/;function s(e){return t(c(e))}function c(t){let s=[],c=t=>e(i(t),{subject:"Style text entity",example:"font-family: Inter#44;serif"});for(let e of function(e){let t=[],i=0,s=0,c="",o=!1;for(let r=0;r<e.length;r++){let f=e[r];if("#"===f){let t=/^#\w+;/.exec(e.slice(r))?.[0];if(t&&!(l.test(e.slice(i,r))&&null!==n(t.slice(0,-1)))){r+=t.length-1,o=!1;continue}}if(o){o=!1;continue}if("\\"===f){o=!0;continue}if(c){f===c&&(c="");continue}if('"'===f||"'"===f){c=f;continue}"("===f?s++:")"===f?s=Math.max(0,s-1):(","===f||";"===f)&&0===s&&(t.push(e.slice(i,r)),i=r+1)}return t.push(e.slice(i)),t}(t)){let t=e.indexOf(":");if(t<=0)continue;let i=c(e.slice(0,t).trim()),n=c(e.slice(t+1).trim().replace(/\\,/g,","));i&&n&&s.push([i,n])}return s}export{s as a,c as b};