@esri/solutions-components 5.1.0-next.95 → 5.1.0-next.97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/cdn/{XAW6KPKL.js → 2BUUN32T.js} +1 -1
  2. package/dist/cdn/{ZGEMIOB5.js → 2NVL4Z5G.js} +1 -1
  3. package/dist/cdn/{WVRKV5SS.js → 3CDDDNHX.js} +1 -1
  4. package/dist/cdn/{4B7NJE47.js → 3EVMNCX6.js} +1 -1
  5. package/dist/cdn/{2VXTMCRJ.js → 3JQP6RGM.js} +1 -1
  6. package/dist/cdn/5K6B2WSQ.js +2 -0
  7. package/dist/cdn/{QYDGCI2P.js → 63RUMXWC.js} +1 -1
  8. package/dist/cdn/{UHPN75WT.js → 6HZIF7DC.js} +1 -1
  9. package/dist/cdn/{C7ASL3A4.js → 6ZRRFBIZ.js} +1 -1
  10. package/dist/cdn/{NPOHA56R.js → 7RK7YWYV.js} +1 -1
  11. package/dist/cdn/{4QZ7WHXA.js → AG22WAP3.js} +1 -1
  12. package/dist/cdn/{DI7PQSFH.js → AMEUOI76.js} +1 -1
  13. package/dist/cdn/{ZP6VPBP4.js → BGXRCU7G.js} +1 -1
  14. package/dist/cdn/{5OF3YOO7.js → BIVYOKLF.js} +1 -1
  15. package/dist/cdn/{WRSVJIPA.js → BSXTZCNH.js} +1 -1
  16. package/dist/cdn/DRXERUDE.js +2 -0
  17. package/dist/cdn/{3ZZ726LQ.js → DSLOJFRD.js} +1 -1
  18. package/dist/cdn/{5LTIZSXG.js → EN6E35NY.js} +1 -1
  19. package/dist/cdn/{FVXS4LF5.js → ESBPGZRY.js} +1 -1
  20. package/dist/cdn/{R3MCMOLS.js → EVEXF6IH.js} +2 -2
  21. package/dist/cdn/{55NRVFJ5.js → FZBIZBOO.js} +1 -1
  22. package/dist/cdn/{KYFNXHOH.js → G7N3V3YJ.js} +1 -1
  23. package/dist/cdn/{ELPH6EFW.js → I2GXCEQM.js} +1 -1
  24. package/dist/cdn/{4HPFDUTJ.js → IC2D4LPZ.js} +1 -1
  25. package/dist/cdn/{FGWGYIBZ.js → KLLT6LQO.js} +1 -1
  26. package/dist/cdn/{KW6YOUWC.js → MWMNRIUD.js} +1 -1
  27. package/dist/cdn/{CWXOH2PC.js → NBX7J6DU.js} +1 -1
  28. package/dist/cdn/{JC5EXPFH.js → NEM3F44J.js} +1 -1
  29. package/dist/cdn/{2HUG6L4M.js → OF33IXBV.js} +1 -1
  30. package/dist/cdn/{2O3HAXKG.js → OZE4W3UQ.js} +1 -1
  31. package/dist/cdn/PVM4ETZ7.js +2 -0
  32. package/dist/cdn/QADMFYXT.js +2 -0
  33. package/dist/cdn/QKJ4PGBO.js +2 -0
  34. package/dist/cdn/RTA6KNSK.js +2 -0
  35. package/dist/cdn/{SJCXI4TB.js → RX3VLQGY.js} +1 -1
  36. package/dist/cdn/{CHZWEULM.js → SAI5O6SI.js} +1 -1
  37. package/dist/cdn/{3J47AYBV.js → TRBSV6ZY.js} +100 -100
  38. package/dist/cdn/{5BU6XZAD.js → TTV5UYNT.js} +1 -1
  39. package/dist/cdn/{2B2ANB2N.js → U6CZXWSF.js} +1 -1
  40. package/dist/cdn/{GJTXLQOS.js → URVOLZIY.js} +1 -1
  41. package/dist/cdn/{XXT542UR.js → UYY6JODL.js} +1 -1
  42. package/dist/cdn/VFZ2J4EW.js +2 -0
  43. package/dist/cdn/VRM54VB2.js +2 -0
  44. package/dist/cdn/{IGSOHYV3.js → XGZCGPHU.js} +1 -1
  45. package/dist/cdn/{JJ7JB2ZP.js → Y5N6ESUO.js} +1 -1
  46. package/dist/cdn/YDNNXKDK.js +2 -0
  47. package/dist/cdn/{O3SWSZQE.js → ZKGLAGUM.js} +1 -1
  48. package/dist/cdn/ZPWKF5SM.js +2 -0
  49. package/dist/cdn/assets/arcgis-solutions-assistant/t9n/messages.en.json +1 -1
  50. package/dist/cdn/assets/arcgis-solutions-assistant/t9n/messages.json +1 -1
  51. package/dist/cdn/assets/solution-details-card/t9n/messages.ar.json +1 -1
  52. package/dist/cdn/assets/solution-details-card/t9n/messages.bg.json +1 -1
  53. package/dist/cdn/assets/solution-details-card/t9n/messages.bs.json +1 -1
  54. package/dist/cdn/assets/solution-details-card/t9n/messages.ca.json +1 -1
  55. package/dist/cdn/assets/solution-details-card/t9n/messages.cs.json +1 -1
  56. package/dist/cdn/assets/solution-details-card/t9n/messages.da.json +1 -1
  57. package/dist/cdn/assets/solution-details-card/t9n/messages.de.json +1 -1
  58. package/dist/cdn/assets/solution-details-card/t9n/messages.el.json +1 -1
  59. package/dist/cdn/assets/solution-details-card/t9n/messages.es.json +1 -1
  60. package/dist/cdn/assets/solution-details-card/t9n/messages.et.json +1 -1
  61. package/dist/cdn/assets/solution-details-card/t9n/messages.fi.json +1 -1
  62. package/dist/cdn/assets/solution-details-card/t9n/messages.fr.json +1 -1
  63. package/dist/cdn/assets/solution-details-card/t9n/messages.he.json +1 -1
  64. package/dist/cdn/assets/solution-details-card/t9n/messages.hr.json +1 -1
  65. package/dist/cdn/assets/solution-details-card/t9n/messages.hu.json +1 -1
  66. package/dist/cdn/assets/solution-details-card/t9n/messages.id.json +1 -1
  67. package/dist/cdn/assets/solution-details-card/t9n/messages.it.json +1 -1
  68. package/dist/cdn/assets/solution-details-card/t9n/messages.ja.json +1 -1
  69. package/dist/cdn/assets/solution-details-card/t9n/messages.ko.json +1 -1
  70. package/dist/cdn/assets/solution-details-card/t9n/messages.lt.json +1 -1
  71. package/dist/cdn/assets/solution-details-card/t9n/messages.lv.json +1 -1
  72. package/dist/cdn/assets/solution-details-card/t9n/messages.nl.json +1 -1
  73. package/dist/cdn/assets/solution-details-card/t9n/messages.no.json +1 -1
  74. package/dist/cdn/assets/solution-details-card/t9n/messages.pl.json +1 -1
  75. package/dist/cdn/assets/solution-details-card/t9n/messages.pt-BR.json +1 -1
  76. package/dist/cdn/assets/solution-details-card/t9n/messages.pt-PT.json +1 -1
  77. package/dist/cdn/assets/solution-details-card/t9n/messages.ro.json +1 -1
  78. package/dist/cdn/assets/solution-details-card/t9n/messages.ru.json +1 -1
  79. package/dist/cdn/assets/solution-details-card/t9n/messages.sk.json +1 -1
  80. package/dist/cdn/assets/solution-details-card/t9n/messages.sl.json +1 -1
  81. package/dist/cdn/assets/solution-details-card/t9n/messages.sr.json +1 -1
  82. package/dist/cdn/assets/solution-details-card/t9n/messages.sv.json +1 -1
  83. package/dist/cdn/assets/solution-details-card/t9n/messages.th.json +1 -1
  84. package/dist/cdn/assets/solution-details-card/t9n/messages.tr.json +1 -1
  85. package/dist/cdn/assets/solution-details-card/t9n/messages.uk.json +1 -1
  86. package/dist/cdn/assets/solution-details-card/t9n/messages.vi.json +1 -1
  87. package/dist/cdn/assets/solution-details-card/t9n/messages.zh-CN.json +1 -1
  88. package/dist/cdn/assets/solution-details-card/t9n/messages.zh-HK.json +1 -1
  89. package/dist/cdn/assets/solution-details-card/t9n/messages.zh-TW.json +1 -1
  90. package/dist/cdn/assets/solution-item-accordion/t9n/messages.en.json +1 -1
  91. package/dist/cdn/assets/solution-item-accordion/t9n/messages.json +1 -1
  92. package/dist/cdn/index.js +1 -1
  93. package/dist/chunks/cardFetchingUtils.js +1 -1
  94. package/dist/chunks/converter.js +5 -4
  95. package/dist/chunks/helpers.js +61 -39
  96. package/dist/chunks/solution-deploy-dialog.js +1 -1
  97. package/dist/chunks/solutions-deploy-app-nav.js +1 -1
  98. package/dist/components/arcgis-solutions-assistant/customElement.js +4962 -4647
  99. package/dist/components/solution-configure-titles/customElement.js +36 -38
  100. package/dist/components/solution-delete-dialog/customElement.js +49 -51
  101. package/dist/components/solution-deployed-card-panel/customElement.js +35 -38
  102. package/dist/components/solution-details-card/customElement.js +24 -32
  103. package/dist/components/solution-details-panel/customElement.js +1 -1
  104. package/dist/components/solution-item-accordion/customElement.d.ts +2 -0
  105. package/dist/components/solution-item-accordion/customElement.js +25 -32
  106. package/dist/components/solution-item-accordion/index.js +0 -1
  107. package/dist/components/solutions-all-panel/customElement.d.ts +2 -0
  108. package/dist/components/solutions-all-panel/customElement.js +48 -33
  109. package/dist/components/solutions-all-shell/customElement.js +94 -40
  110. package/dist/components/solutions-deployed-list/customElement.d.ts +9 -9
  111. package/dist/components/solutions-deployed-list/customElement.js +3 -3
  112. package/dist/components/solutions-deployed-panel/customElement.js +1 -1
  113. package/dist/components/solutions-deployed-shell/customElement.js +1 -1
  114. package/dist/docs/api.json +1 -1
  115. package/dist/docs/docs.json +1 -1
  116. package/dist/docs/vscode.html-custom-data.json +1 -1
  117. package/dist/docs/web-types.json +1 -1
  118. package/dist/loader.js +2 -2
  119. package/dist/solutions-components_commit.txt +5 -8
  120. package/dist/types/lumina.d.ts +1 -1
  121. package/dist/types/preact.d.ts +1 -1
  122. package/dist/types/react.d.ts +1 -1
  123. package/dist/types/stencil.d.ts +1 -1
  124. package/dist/utils/interfaces.d.ts +9 -1
  125. package/package.json +1 -1
  126. package/dist/cdn/2ID55IJB.js +0 -2
  127. package/dist/cdn/2SGR44DX.js +0 -2
  128. package/dist/cdn/74MDW73I.js +0 -2
  129. package/dist/cdn/ADPYDJG6.js +0 -2
  130. package/dist/cdn/AJZHT4GA.js +0 -2
  131. package/dist/cdn/ITLTQWCX.js +0 -2
  132. package/dist/cdn/IYUTLV2O.js +0 -2
  133. package/dist/cdn/K6WLYYPH.js +0 -2
  134. package/dist/cdn/R4VHCXKS.js +0 -2
  135. package/dist/cdn/X5EABWHE.js +0 -2
@@ -1,5 +1,5 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{b as un}from"./KCEVE53E.js";import"./R4VHCXKS.js";import"./2B4SGB3I.js";import"./YKQDHR27.js";import"./J75MHJID.js";import{a as ln}from"./R67EKKSL.js";import"./BVWAUO73.js";import"./K3DQKY7V.js";import"./TEHBW75B.js";import"./ALSK2SPM.js";import"./ZCU2WWVN.js";import"./WGO4EVOV.js";import"./3IHLJADI.js";import"./BMBNSJZQ.js";import"./5HZMUGQD.js";import"./5VDDAINK.js";import"./Z4F2NZOT.js";import"./KOIDWEP3.js";import"./3KXMYZCU.js";import"./LPBP7CBN.js";import"./3FMOO3PJ.js";import"./XQQ52NKX.js";import"./JUUVYK2H.js";import"./DKD2EGQP.js";import"./4HFHJOS3.js";import"./45M33Q5G.js";import"./FES7B3SJ.js";import{b as hn}from"./KIUBUHVM.js";import{E as ms,F as ps,G as an,h as on,i as rn}from"./H5E6ISYP.js";import"./QPIMTXPL.js";(function(){let K=typeof globalThis=="object"&&globalThis||typeof global=="object"&&global.global===global&&global||typeof self=="object"&&self.self===self&&self||{};K.requestAnimationFrame===void 0&&(K.setImmediate===void 0?K.requestAnimationFrame=x=>K.setTimeout(x,0):K.requestAnimationFrame=K.setImmediate);class m{static fr=K.navigator!==void 0&&K.navigator.platform!==void 0&&K.navigator.platform.match(/(iPhone|iPod|iPad|Mac)/i)!==null;static PP(t,e,i){let s=-1;return function(){let n=this,o=arguments;s!==-1&&m.yc(s),s=m.dn(()=>{s=-1,i||t.apply(n,o)},e),i&&!s&&t.apply(n,o)}}static dn(t,e){return K.setTimeout(t,e)}static yc(t){K.clearTimeout(t)}static Ci(t){return K.document.createElement(t)}static o(t){throw new Error(t)}static L(t,e){let i="The object is frozen, so its properties cannot be set: "+t.toString();e!==void 0&&(i+=" to value: "+e),m.o(i)}static se(t,e,i,s){}static s(t,e,i,s){}static LU(t,e,i){}static wc(t,e,i){if(t===null||typeof t!="object"){let s=m.LL(e);i!==void 0&&(s+="."+i),m.si(t,"object",s)}}static S(t,e,i){m.s(t,"function",e,i)}static AU(t,e,i){}static si(t,e,i,s){}static J(t,e,i,s){let n=m.LL(i);s!==void 0&&(n+="."+s),m.o(n+" is not in the range "+e+": "+t)}static Yi(t){}static ur(t,e){}static ne(t){K.console&&K.console.log(t)}static $(t){return t!==null&&typeof t=="object"}static it(t){return typeof t=="function"}static SP=[];static st(){let t=m.SP.pop();return t===void 0?[]:t}static Z(t){t.length=0,m.SP.push(t)}static TU=Object.freeze([]);static LL(t){return t===null?"*":typeof t=="string"?t:m.it(t)?t.name:""}static Yn(t){return m.it(t)?t.className?t.className:t.name:m.$(t)&&t.constructor?m.Yn(t.constructor):typeof t}static Ja(t,e){return e==null||e===""?null:m.$(t)&&e in t||t[e]?t[e]:null}static toString(t){let e=t;return m.$(t)&&(t.text?e=t.text:t.name?e=t.name:t.key!==void 0?e=t.key:t.id!==void 0?e=t.id:t.constructor===Object&&(t.Text?e=t.Text:t.Name?e=t.Name:t.Key!==void 0?e=t.Key:t.Id!==void 0?e=t.Id:t.ID!==void 0&&(e=t.ID))),e===void 0?"undefined":e===null?"null":e.toString()}static Gw(t,e){if(t.hasOwnProperty(e))return!0;let i=Object.getPrototypeOf(t);for(;i&&i!==Function;){if(i.hasOwnProperty(e))return!0;let s=i.DU;if(s&&s[e])return!0;i=Object.getPrototypeOf(i)}return!1}static XF(t){let e=[],i=0;for(i=0;i<256;i++)e[i]=i;let s=0,n=0;for(i=0;i<256;i++)s=(s+e[i]+119)%256,n=e[i],e[i]=e[s],e[s]=n;i=0,s=0;let o="";for(let r=0;r<t.length;r++)i=(i+1)%256,s=(s+e[i])%256,n=e[i],e[i]=e[s],e[s]=n,o+=String.fromCharCode(t.charCodeAt(r)^e[(e[i]+e[s])%256]);return o}static GF(t){let e="0123456789abcdef",i=[];for(let r=0;r<256;r++)i[e.charAt(r>>4)+e.charAt(r&15)]=String.fromCharCode(r);t.length%2&&(t="0"+t);let s=[],n=0;for(let r=0;r<t.length;r+=2)s[n++]=i[t.substring(r,r+2)];let o=s.join("");return o===""?"0":o}static We(t){return m.XF(m.GF(t))}static color1="@COLOR1";static color2="@COLOR2";static Yw="32ab5ff3b26f42dc0ed90f21422913b5"}m.vfo="29e647fdba";class at{MP;constructor(){this.MP=[]}toString(){return this.MP.join("")}add(t){t!==""&&this.MP.push(t)}}class yt{}class Pt{g;constructor(){this.g=[]}[Symbol.iterator](){return this.g.values()}key;value;get iterator(){return this}reset(){}next(){return!1}hasNext(){return!1}first(){return null}any(){return!1}all(){return!0}each(){return this}map(t){return this}filter(){return this}get count(){return 0}Nl(){}toString(){return"EmptyIterator"}static instance=new Pt}class ut{constructor(t){this.key=-1,this.value=t}[Symbol.iterator](){return[this.value].values()}key;value;get iterator(){return this}reset(){this.key=-1}next(){return this.key===-1?(this.key=0,!0):!1}hasNext(){return this.next()}first(){return this.key=0,this.value}any(t){return this.key=-1,t(this.value)}all(t){return this.key=-1,t(this.value)}each(t){return this.key=-1,t(this.value),this}map(t){return new ut(t(this.value))}filter(t){return t(this.value)?new ut(this.value):Pt.instance}get count(){return 1}Nl(){this.value=null}toString(){return"SingletonIterator("+this.value+")"}}class ct{qt;Xs;Gt;Tt;constructor(t){this.qt=t,this.Xs=null,t.dr=null,this.Gt=t.rt,this.Tt=-1}[Symbol.iterator](){return this.Xs===null?this.qt.r.values():this.qt.r.filter(this.Xs).values()}key;value;get iterator(){return this}get predicate(){return this.Xs}set predicate(t){this.Xs=t}reset(){let t=this.qt;t.dr=null,this.Gt=t.rt,this.Tt=-1}next(){let t=this.qt;if(t.rt!==this.Gt){if(this.key<0)return!1;m.Yi(t)}let e=t.r,i=e.length,s=++this.Tt,n=this.Xs;if(n!==null)for(;s<i;){let o=e[s];if(n(o))return this.Tt=s,this.key=s,this.value=o,!0;s++}else{if(s<i)return this.key=s,this.value=e[s],!0;this.Nl()}return!1}hasNext(){return this.next()}first(){let t=this.qt;this.Gt=t.rt,this.Tt=0;let e=t.r,i=e.length,s=this.Xs;if(s!==null){let n=0;for(;n<i;){let o=e[n];if(s(o))return this.Tt=n,this.key=n,this.value=o,o;n++}return null}else if(i>0){let n=e[0];return this.key=0,this.value=n,n}else return null}any(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=e.r,n=s.length,o=this.Xs;for(let r=0;r<n;r++){let a=s[r];if(!(o!==null&&!o(a))){if(t(a))return!0;e.rt!==i&&m.Yi(e)}}return!1}all(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=e.r,n=s.length,o=this.Xs;for(let r=0;r<n;r++){let a=s[r];if(!(o!==null&&!o(a))){if(!t(a))return!1;e.rt!==i&&m.Yi(e)}}return!0}each(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=e.r,n=s.length,o=this.Xs;for(let r=0;r<n;r++){let a=s[r];o!==null&&!o(a)||(t(a),e.rt!==i&&m.Yi(e))}return this}map(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=[],n=e.r,o=n.length,r=this.Xs;for(let h=0;h<o;h++){let l=n[h];r!==null&&!r(l)||(s.push(t(l)),e.rt!==i&&m.Yi(e))}let a=new q;return a.r=s,a.Ki(),a.iterator}filter(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=[],n=e.r,o=n.length,r=this.Xs;for(let h=0;h<o;h++){let l=n[h];r!==null&&!r(l)||(t(l)&&s.push(l),e.rt!==i&&m.Yi(e))}let a=new q;return a.r=s,a.Ki(),a.iterator}get count(){let t=this.Xs;if(t!==null){let e=0,i=this.qt.r,s=i.length;for(let n=0;n<s;n++)t(i[n])&&e++;return e}else return this.qt.r.length}Nl(){this.key=-1,this.value=null,this.Gt=-1,this.Xs=null,this.qt.dr=this}toString(){return"ListIterator@"+this.Tt+"/"+this.qt.count}}class kt{qt;Gt;Tt;constructor(t){this.qt=t,t.gr=null,this.Gt=t.rt,this.Tt=t.r.length}[Symbol.iterator](){return this.qt.r.reverse().values()}key;value;get iterator(){return this}reset(){let t=this.qt;t.gr=null,this.Gt=t.rt,this.Tt=t.r.length}next(){let t=this.qt;if(t.rt!==this.Gt){if(this.key<0)return!1;m.Yi(t)}let e=--this.Tt;return e>=0?(this.key=e,this.value=t.r[e],!0):(this.Nl(),!1)}hasNext(){return this.next()}first(){let t=this.qt;this.Gt=t.rt;let e=t.r,i=e.length-1;if(this.Tt=i,i>=0){let s=e[i];return this.key=i,this.value=s,s}else return null}any(t){let e=this.qt;e.gr=null;let i=e.rt,s=e.r,n=s.length;this.Tt=n;for(let o=n-1;o>=0;o--){let r=s[o];if(t(r))return!0;e.rt!==i&&m.Yi(e)}return!1}all(t){let e=this.qt;e.gr=null;let i=e.rt,s=e.r,n=s.length;this.Tt=n;for(let o=n-1;o>=0;o--){let r=s[o];if(!t(r))return!1;e.rt!==i&&m.Yi(e)}return!0}each(t){let e=this.qt;e.gr=null;let i=e.rt,s=e.r,n=s.length;this.Tt=n;for(let o=n-1;o>=0;o--){let r=s[o];t(r),e.rt!==i&&m.Yi(e)}return this}map(t){let e=this.qt;e.gr=null;let i=e.rt,s=[],n=e.r,o=n.length;this.Tt=o;for(let a=o-1;a>=0;a--){let h=n[a];s.push(t(h)),e.rt!==i&&m.Yi(e)}let r=new q;return r.r=s,r.Ki(),r.iterator}filter(t){let e=this.qt;e.gr=null;let i=e.rt,s=[],n=e.r,o=n.length;this.Tt=o;for(let a=o-1;a>=0;a--){let h=n[a];t(h)&&s.push(h),e.rt!==i&&m.Yi(e)}let r=new q;return r.r=s,r.Ki(),r.iterator}get count(){return this.qt.r.length}Nl(){this.key=-1,this.value=null,this.Gt=-1,this.qt.gr=this}toString(){return"ListIteratorBackwards("+this.Tt+"/"+this.qt.count+")"}}class q{u;r;rt;dr;gr;constructor(t){V.Je(this),this.u=!1,this.r=[],this.rt=0,this.dr=null,this.gr=null,t!==void 0&&this.addAll(t)}[Symbol.iterator](){return this.r.values()}Ki(){let t=this.rt;t++,t>999999999&&(t=0),this.rt=t}k(){return this.u=!0,this}ce(){return this.u=!1,this}toString(){return"List()#"+V.xs(this)}add(t){return this.u&&m.L(this,t),this.r.push(t),this.Ki(),this}push(t){this.add(t)}addAll(t){if(t===null)return this;this.u&&m.L(this);let e=this.r;if(t.first){let i=t.iterator;for(;i.next();)e.push(i.value)}else for(let i of t)e.push(i);return this.Ki(),this}clear(){this.u&&m.L(this),this.r.length=0,this.Ki()}contains(t){return this.has(t)}has(t){return t===null?!1:this.r.indexOf(t)!==-1}indexOf(t){return t===null?-1:this.r.indexOf(t)}elt(t){let e=this.r;return(t<0||t>=e.length)&&m.J(t,"0 <= i < length",q,"elt:i"),e[t]}get(t){return this.elt(t)}setElt(t,e){let i=this.r;(t<0||t>=i.length)&&m.J(t,"0 <= i < length",q,"setElt:i"),this.u&&m.L(this,t),i[t]=e}set(t,e){this.setElt(t,e)}first(){let t=this.r;return t.length===0?null:t[0]}last(){let t=this.r,e=t.length;return e>0?t[e-1]:null}pop(){this.u&&m.L(this);let t=this.r;if(t.length>0){let e=t.pop();return e===void 0?null:e}return null}any(t){let e=this.r,i=this.rt,s=e.length;for(let n=0;n<s;n++){if(t(e[n]))return!0;this.rt!==i&&m.Yi(this)}return!1}all(t){let e=this.r,i=this.rt,s=e.length;for(let n=0;n<s;n++){if(!t(e[n]))return!1;this.rt!==i&&m.Yi(this)}return!0}each(t){let e=this.r,i=this.rt,s=e.length;for(let n=0;n<s;n++)t(e[n]),this.rt!==i&&m.Yi(this);return this}map(t){let e=new q,i=[],s=this.r,n=this.rt,o=s.length;for(let r=0;r<o;r++)i.push(t(s[r])),this.rt!==n&&m.Yi(this);return e.r=i,e.Ki(),e}filter(t){let e=new q,i=[],s=this.r,n=this.rt,o=s.length;for(let r=0;r<o;r++){let a=s[r];t(a)&&i.push(a),this.rt!==n&&m.Yi(this)}return e.r=i,e.Ki(),e}insertAt(t,e){t<0&&m.J(t,">= 0",q,"insertAt:i"),this.u&&m.L(this,t);let i=this.r;t>=i.length?i.push(e):i.splice(t,0,e),this.Ki()}remove(t){return this.delete(t)}delete(t){if(t===null)return!1;this.u&&m.L(this,t);let e=this.r,i=e.indexOf(t);return i===-1?!1:(i===e.length-1?e.pop():e.splice(i,1),this.Ki(),!0)}removeAt(t){let e=this.r;(t<0||t>=e.length)&&m.J(t,"0 <= i < length",q,"removeAt:i"),this.u&&m.L(this,t),t===e.length-1?e.pop():e.splice(t,1),this.Ki()}removeRange(t,e){let i=this.r,s=i.length;if(t<0)t=0;else if(t>=s)return this;if(e<0)return this;if(e>=s&&(e=s-1),t>e)return this;this.u&&m.L(this);let n=t,o=e+1;for(;o<s;)i[n++]=i[o++];return i.length=s-(e-t+1),this.Ki(),this}copy(){let t=new q,e=this.r;return e.length>0&&(t.r=Array.prototype.slice.call(e)),t}toArray(){let t=this.r,e=this.count,i=new Array(e);for(let s=0;s<e;s++)i[s]=t[s];return i}get AL(){return this.r}toSet(){let t=new V,e=this.r,i=this.count;for(let s=0;s<i;s++)t.add(e[s]);return t}sort(t){return this.u&&m.L(this),this.r.sort(t),this.Ki(),this}sortRange(t,e,i){let s=this.r,n=s.length;e===void 0&&(e=0),i===void 0&&(i=n),this.u&&m.L(this);let o=i-e;if(o<=1)return this;if((e<0||e>=n-1)&&m.J(e,"0 <= from < length",q,"sortRange:from"),o===2){let r=s[e],a=s[e+1];return t(r,a)>0&&(s[e]=a,s[e+1]=r,this.Ki()),this}if(e===0)if(i>=n)s.sort(t);else{let r=s.slice(0,i);r.sort(t);for(let a=0;a<i;a++)s[a]=r[a]}else if(i>=n){let r=s.slice(e);r.sort(t);for(let a=e;a<n;a++)s[a]=r[a-e]}else{let r=s.slice(e,i);r.sort(t);for(let a=e;a<i;a++)s[a]=r[a-e]}return this.Ki(),this}reverse(){return this.u&&m.L(this),this.r.reverse(),this.Ki(),this}get count(){return this.r.length}get size(){return this.r.length}get length(){return this.r.length}get iterator(){if(this.r.length<=0)return Pt.instance;let t=this.dr;return t!==null?(t.reset(),t):new ct(this)}get iteratorBackwards(){if(this.r.length<=0)return Pt.instance;let t=this.gr;return t!==null?(t.reset(),t):new kt(this)}}class _t{To;oe;constructor(t){this.To=t,this.oe=t.g.values()}[Symbol.iterator](){return this.To.g.values()}key;value;get iterator(){return this}reset(){let t=this.To;this.oe=t.g.values()}next(){let t=this.oe.next();return this.value=t.value,this.key=t.value,!t.done}hasNext(){return this.next()}first(){return this.To.g.size===0?null:(this.oe=this.To.g.values(),this.oe.next().value)}any(t){return this.To.any(t)}all(t){return this.To.all(t)}each(t){return this.To.each(t),this}map(t){let e=new q;return this.To.g.forEach(i=>e.add(t(i))),e.iterator}filter(t){let e=new q;return this.To.g.forEach(i=>{t(i)&&e.add(i)}),e.iterator}get count(){return this.To.count}Nl(){this.key=null,this.value=null,this.oe=null}toString(){return"SetIterator"}}class V{u;g;constructor(t){this.u=!1,this.g=new Set,t!==void 0&&this.addAll(t)}[Symbol.iterator](){return this.g.values()}values(){return this.g.values()}k(){return this.u=!0,this}ce(){return this.u=!1,this}toString(){return"Set()#"+V.xs(this)}add(t){return t===null?this:(this.g.add(t),this)}addAll(t){if(t===null)return this;if(this.u&&m.L(this),t.first){let e=t.iterator;for(;e.next();)this.g.add(e.value)}else for(let e of t)this.g.add(e);return this}has(t){return this.g.has(t)}contains(t){return this.has(t)}containsAll(t){if(t===null)return!0;if(t.first){let e=t.iterator;for(;e.next();)if(!this.has(e.value))return!1}else for(let e of t)if(!this.has(e))return!1;return!0}containsAny(t){if(t===null)return!0;if(t.first){let e=t.iterator;for(;e.next();)if(this.has(e.value))return!0}else for(let e of t)if(this.has(e))return!0;return!1}first(){return this.g.size===0?null:this.g.values().next().value}any(t){for(let e of this.g)if(t(e))return!0;return!1}all(t){for(let e of this.g)if(!t(e))return!1;return!0}each(t){for(let e of this.g)t(e);return this}map(t){let e=new V;for(let i of this.g)e.add(t(i));return e}filter(t){let e=new V;for(let i of this.g)t(i)&&e.add(i);return e}delete(t){return this.u&&m.L(this),this.g.delete(t)}remove(t){return this.delete(t)}removeAll(t){if(t===null)return this;if(this.u&&m.L(this),t.first){let e=t.iterator;for(;e.next();)this.delete(e.value)}else for(let e of t)this.delete(e);return this}retainAll(t){if(t===null)return this;if(this.count===0)return this;this.u&&m.L(this);let e=new V;e.addAll(t);let i=[];if(t.first){let s=t.iterator;for(;s.next();){let n=s.value;e.has(n)||i.push(n)}}else for(let s of t)e.has(s)||i.push(s);return this.removeAll(i),this}clear(){this.u&&m.L(this),this.g.clear()}copy(){let t=new V;return this.g.forEach(e=>t.add(e)),t}toArray(){return Array.from(this.g)}toList(){let t=new q;return this.g.forEach(e=>t.add(e)),t}get count(){return this.g.size}get size(){return this.g.size}get iterator(){return this.g.size<=0?Pt.instance:new _t(this)}entries(){return this.g.entries()}keys(){return this.g.keys()}forEach(t,e){return this.g.forEach(t,e)}static Kw=1;static Je(t){t.__gohashid=V.Kw++}static xs(t){return t.__gohashid}}class We{j;oe;constructor(t){this.j=t,this.oe=t.g.keys()}[Symbol.iterator](){return this.j.g.keys()}key;value;get iterator(){return this}reset(){let t=this.j;this.oe=t.g.keys()}next(){let t=this.oe.next();return this.value=t.value,this.key=t.value,!t.done}hasNext(){return this.next()}first(){return this.j.g.size===0?null:(this.oe=this.j.g.keys(),this.oe.next().value)}any(t){for(let e of this.j.g)if(t(e[0]))return!0;return!1}all(t){for(let e of this.j.g)if(!t(e[0]))return!1;return!0}each(t){for(let e of this.j.g)t(e[0]);return this}map(t){let e=this.j,i=new q;for(let s of e.g)i.add(t(s[0]));return i.iterator}filter(t){let e=this.j,i=new q;for(let s of e.g){let n=s[0];t(n)&&i.add(n)}return i.iterator}get count(){return this.j.size}Nl(){this.key=null,this.value=null,this.oe=null}toString(){return"MapKeySetIterator"}}class Oi extends V{j;constructor(t){super(),V.Je(this),this.u=!0,this.j=t}[Symbol.iterator](){return this.g.keys()}values(){return this.g.keys()}k(){return this}ce(){return this}toString(){return"MapKeySet("+this.j.toString()+")"}add(t){m.o("This Set is read-only: "+this.toString())}has(t){return this.j.has(t)}contains(t){return this.has(t)}delete(t){m.o("This Set is read-only: "+this.toString())}remove(t){return this.delete(t)}clear(){m.o("This Set is read-only: "+this.toString())}first(){return this.j.g.size===0?null:this.j.g.keys().next().value}any(t){for(let e of this.j.g)if(t(e[0]))return!0;return!1}all(t){for(let e of this.j.g)if(!t(e[0]))return!1;return!0}each(t){for(let e of this.j.g)t(e[0]);return this}map(t){let e=new V;for(let i of this.j.g)e.add(t(i[0]));return e}filter(t){let e=new V;for(let i of this.j.g){let s=i[0];t(s)&&e.add(s)}return e}copy(){return new Oi(this.j)}toSet(){let t=new V,e=this.j.g;for(let i of e)t.add(i[0]);return t}toArray(){let t=this.j.g,e=new Array(t.size),i=0;for(let s of t)e[i]=s[0],i++;return e}toList(){let t=new q,e=this.j.g;for(let i of e)t.add(i[0]);return t}get count(){return this.j.size}get size(){return this.j.size}get iterator(){return this.j.size<=0?Pt.instance:new We(this.j)}}class Tn{j;oe;constructor(t){this.j=t,this.oe=t.g.values()}[Symbol.iterator](){return this.j.g.values()}key;value;get iterator(){return this}reset(){let t=this.j;this.oe=t.g.values()}next(){let t=this.oe.next();return this.value=t.value,this.key=t.value,!t.done}hasNext(){return this.next()}first(){return this.j.g.size===0?null:(this.oe=this.j.g.values(),this.oe.next().value)}any(t){for(let e of this.j.g)if(t(e[1]))return!0;return!1}all(t){for(let e of this.j.g)if(!t(e[1]))return!1;return!0}each(t){for(let e of this.j.g)t(e[1]);return this}map(t){let e=this.j,i=new q;for(let s of e.g)i.add(t(s[1]));return i.iterator}filter(t){let e=this.j,i=new q;for(let s of e.g){let n=s[1];t(n)&&i.add(n)}return i.iterator}get count(){return this.j.size}Nl(){this.key=null,this.value=null,this.oe=null}toString(){return"MapValueSetIterator"}}class ye{constructor(t,e){this.key=t,this.value=e}toString(){return"{"+this.key+":"+this.value+"}"}key;value}class Ln{j;oe;constructor(t){this.j=t,this.oe=t.g.entries()}[Symbol.iterator](){return this.j.g.entries()}key;value;get iterator(){return this}reset(){let t=this.j;this.oe=t.g.entries()}next(){let t=this.oe.next();return t.done?(this.key=null,this.value=null,!1):(this.key=t.value[0],this.value=t.value[1],!0)}hasNext(){return this.next()}first(){if(this.j.g.size===0)return null;this.oe=this.j.g.entries();let t=this.oe.next().value;return this.key=t[0],this.value=t[1],new ye(t[0],t[1])}any(t){return this.j.any(t)}all(t){return this.j.all(t)}each(t){return this.j.each(t),this}map(t){let e=new q,i=null;return this.j.g.forEach((s,n)=>{i===null?i=new ye(n,s):(i.key=n,i.value=s),e.add(t(i))}),e.iterator}filter(t){let e=new q,i=null;return this.j.g.forEach((s,n)=>{i===null?i=new ye(n,s):(i.key=n,i.value=s),t(i)&&(e.add(i),i=null)}),e.iterator}get count(){return this.j.size}Nl(){this.key=null,this.value=null,this.oe=null}toString(){return"MapIterator"}}class Mt{u;g;constructor(t){V.Je(this),this.u=!1,this.g=new Map,t!==void 0&&this.addAll(t)}[Symbol.iterator](){return this.g.entries()}entries(){return this.g.entries()}k(){return this.u=!0,this}ce(){return this.u=!1,this}toString(){return"Map()#"+V.xs(this)}set(t,e){return this.u&&m.L(this,t),this.g.set(t,e),this}add(t,e){return this.set(t,e)}addAll(t){if(t===null)return this;if(this.u&&m.L(this),t instanceof Mt){let e=t.iterator;for(;e.next();)this.g.set(e.key,e.value)}else if(t.first){let e=t.iterator;for(;e.next();){let i=e.value;this.g.set(i.key,i.value)}}else for(let e of t){let i=e;Array.isArray(i)?this.g.set(i[0],i[1]):this.g.set(i.key,i.value)}return this}first(){if(this.g.size===0)return null;let t=this.g.entries().next().value;return t?new ye(t[0],t[1]):null}any(t){let e=null;for(let[i,s]of this.g)if(e===null?e=new ye(i,s):(e.key=i,e.value=s),t(e))return!0;return!1}all(t){let e=null;for(let[i,s]of this.g)if(e===null?e=new ye(i,s):(e.key=i,e.value=s),!t(e))return!1;return!0}each(t){let e=null;for(let[i,s]of this.g)e===null?e=new ye(i,s):(e.key=i,e.value=s),t(e);return this}map(t){let e=new Mt,i=null;for(let[s,n]of this.g)i===null?i=new ye(s,n):(i.key=s,i.value=n),e.set(s,t(i));return e}filter(t){let e=new Mt,i=null;for(let[s,n]of this.g)i===null?i=new ye(s,n):(i.key=s,i.value=n),t(i)&&e.set(s,n);return e}has(t){return this.g.has(t)}contains(t){return this.has(t)}get(t){let e=this.g.get(t);return e===void 0?null:e}getValue(t){return this.get(t)}delete(t){return t===null?!1:(this.u&&m.L(this,t),this.g.delete(t))}remove(t){return this.delete(t)}clear(){this.u&&m.L(this),this.g.clear()}copy(){let t=new Mt;return t.g=new Map(this.g),t}toArray(){let t=this.g,e=new Array(t.size),i=0;for(let s of t)e[i]=new ye(s[0],s[1]),i++;return e}toKeySet(){return new Oi(this)}get count(){return this.g.size}get size(){return this.g.size}get iterator(){return this.g.size<=0?Pt.instance:new Ln(this)}get iteratorKeys(){return this.count<=0?Pt.instance:new We(this)}keys(){return this.g.keys()}get iteratorValues(){return this.count<=0?Pt.instance:new Tn(this)}values(){return this.g.values()}forEach(t,e){return this.g.forEach(t,e)}}class P{px;py;u;constructor(t,e){t===void 0?(this.px=0,this.py=0):typeof t=="number"&&typeof e=="number"?(this.px=t,this.py=e):m.o("Invalid arguments to Point constructor: "+t+", "+e),this.u=!1}h(t){return this.px=t.px,this.py=t.py,this}e(t,e){return this.px=t,this.py=e,this}setTo(t,e){return this.px=t,this.py=e,this}set(t){return this.px=t.px,this.py=t.py,this}copy(){let t=new P;return t.px=this.px,t.py=this.py,t}kt(){return this.u=!0,Object.freeze(this),this}C(){return this.u||Object.isFrozen(this)?this:this.copy().k()}k(){return this.u||(this.u=!0),this}Hw(t){}static parse(t){if(typeof t=="string"){let e=t.split(" "),i=0,s=0;for(;e[i]==="";)i++;let n=e[i++];n&&(s=parseFloat(n));let o=0;for(;e[i]==="";)i++;return n=e[i++],n&&(o=parseFloat(n)),new P(s,o)}else return new P}static stringify(t){return t.x.toString()+" "+t.y.toString()}static stringifyFixed(t){return m.s(t,"number",P,"stringifyFixed:digits"),e=>e.x.toFixed(t)+" "+e.y.toFixed(t)}toString(){return"Point("+this.x+","+this.y+")"}equals(t){return t instanceof P?this.px===t.x&&this.py===t.y:!1}equalTo(t,e){return this.px===t&&this.py===e}equalsApprox(t){return C.c(this.px,t.x)&&C.c(this.py,t.y)}add(t){return this.px+=t.x,this.py+=t.y,this}subtract(t){return this.px-=t.x,this.py-=t.y,this}offset(t,e){return this.px+=t,this.py+=e,this}rotate(t){if(t===0)return this;let e=this.px,i=this.py;if(e===0&&i===0)return this;let s=0,n=0;if(t=C.Ee(t),t===90)s=0,n=1;else if(t===180)s=-1,n=0;else if(t===270)s=0,n=-1;else{let o=t*Math.PI/180;s=Math.cos(o),n=Math.sin(o)}return this.px=s*e-n*i,this.py=n*e+s*i,this}scale(t,e){return this.px*=t,this.py*=e,this}distanceSquaredPoint(t){let e=t.x-this.px,i=t.y-this.py;return e*e+i*i}distanceSquared(t,e){let i=t-this.px,s=e-this.py;return i*i+s*s}normalize(){let t=this.px,e=this.py,i=Math.sqrt(t*t+e*e);return i>0&&(this.px=t/i,this.py=e/i),this}directionPoint(t){return this.TL(t.x-this.px,t.y-this.py)}direction(t,e){return this.TL(t-this.px,e-this.py)}TL(t,e){if(t===0)return e>0?90:e<0?270:0;if(e===0)return t>0?0:180;{if(isNaN(t)||isNaN(e))return 0;let i=Math.atan(Math.abs(e/t))*180/Math.PI;return t<0?e<0?i+=180:i=180-i:e<0&&(i=360-i),i}}static compareWithLineSegment(t,e,i,s,n,o){return C.ku(t,e,i,s,n,o)}compareWithLineSegmentPoint(t,e){return C.ku(t.x,t.y,e.x,e.y,this.x,this.y)}static intersectingLineSegments(t,e,i,s,n,o,r,a){return C.Pu(t,e,i,s,n,o,r,a)}projectOntoLineSegment(t,e,i,s){return C.Ll(t,e,i,s,this.px,this.py,this),this}projectOntoLineSegmentPoint(t,e){return C.Ll(t.x,t.y,e.x,e.y,this.px,this.py,this),this}snapToGrid(t,e,i,s){return C._g(this.px,this.py,t,e,i,s,this),this}snapToGridPoint(t,e){return C._g(this.px,this.py,t.x,t.y,e.width,e.height,this),this}setRectSpot(t,e){return this.px=t.x+e.x*t.width+e.offsetX,this.py=t.y+e.y*t.height+e.offsetY,this}setSpot(t,e,i,s,n){return this.px=t+n.x*i+n.offsetX,this.py=e+n.y*s+n.offsetY,this}v(t){return t.gt(this),this}Hi(t){return t.Ni(this),this}static distanceLineSegmentSquared(t,e,i,s,n,o){let r=n-i,a=o-s,h=r*r+a*a,l=i-t,u=s-e,c=-l*r-u*a;if(c<=0||c>=h)return r=n-t,a=o-e,Math.min(l*l+u*u,r*r+a*a);{let d=r*u-a*l;return d*d/h}}static distanceSquared(t,e,i,s){let n=i-t,o=s-e;return n*n+o*o}static direction(t,e,i,s){let n=i-t,o=s-e;if(n===0)return o>0?90:o<0?270:0;if(o===0)return n>0?0:180;{if(isNaN(n)||isNaN(o))return 0;let r=Math.atan(Math.abs(o/n))*180/Math.PI;return n<0?o<0?r+=180:r=180-r:o<0&&(r=360-r),r}}get x(){return this.px}set x(t){this.px=t}get y(){return this.py}set y(t){this.py=t}isReal(){return isFinite(this.x)&&isFinite(this.y)}static gn=new P(0,0).kt();static DL=new P(-1/0,-1/0).kt();static vL=new P(1/0,1/0).kt();static FL=new P(6,6).kt();static mn=new P(NaN,NaN).kt();static qw=[];static l(){let t=P.qw.pop();return t===void 0?new P:t}static bs(t){let e=P.qw.pop();return e===void 0?t.copy():e.h(t)}static z(t,e){let i=P.qw.pop();return i===void 0?new P(t,e):(i.x=t,i.y=e,i)}static i(t){P.qw.push(t)}}class nt{sw;sh;u;constructor(t,e){t===void 0?(this.sw=0,this.sh=0):typeof t=="number"&&(t>=0||isNaN(t))&&typeof e=="number"&&(e>=0||isNaN(e))?(this.sw=t,this.sh=e):m.o("Invalid arguments to Size constructor: "+t+", "+e),this.u=!1}h(t){return this.sw=t.sw,this.sh=t.sh,this}e(t,e){return this.sw=t,this.sh=e,this}setTo(t,e){return this.sw=t,this.sh=e,this}set(t){return this.sw=t.sw,this.sh=t.sh,this}copy(){let t=new nt;return t.sw=this.sw,t.sh=this.sh,t}kt(){return this.u=!0,Object.freeze(this),this}C(){return this.u||Object.isFrozen(this)?this:this.copy().k()}k(){return this.u||(this.u=!0),this}Hw(t){}static parse(t){if(typeof t=="string"){let e=t.split(" "),i=0,s=0;for(;e[i]==="";)i++;let n=e[i++];n&&(s=parseFloat(n));let o=0;for(;e[i]==="";)i++;return n=e[i++],n&&(o=parseFloat(n)),new nt(s,o)}else return new nt}static stringify(t){return t.width.toString()+" "+t.height.toString()}static stringifyFixed(t){return m.s(t,"number",nt,"stringifyFixed:digits"),e=>e.width.toFixed(t)+" "+e.height.toFixed(t)}toString(){return"Size("+this.width+","+this.height+")"}equals(t){return t instanceof nt?this.sw===t.width&&this.sh===t.height:!1}equalTo(t,e){return this.sw===t&&this.sh===e}equalsApprox(t){return C.c(this.sw,t.width)&&C.c(this.sh,t.height)}inflate(t,e){let i=this.width+t;this.sw=i>=0?i:0;let s=this.height+e;return this.sh=s>=0?s:0,this}get width(){return this.sw}set width(t){t<0&&m.J(t,">= 0",nt,"width"),this.sw=t}get height(){return this.sh}set height(t){t<0&&m.J(t,">= 0",nt,"height"),this.sh=t}isReal(){return isFinite(this.width)&&isFinite(this.height)}static xc=new nt(0,0).kt();static CP=new nt(1,1).kt();static RL=new nt(6,6).kt();static Su=new nt(8,8).kt();static OL=new nt(10,10).kt();static NP=new nt(1/0,1/0).kt();static jw=new nt(NaN,NaN).kt();static IL=[];static l(){let t=nt.IL.pop();return t===void 0?new nt:t}static i(t){nt.IL.push(t)}}class I{rx;ry;rw;rh;u;constructor(t,e,i,s){if(t===void 0)this.rx=0,this.ry=0,this.rw=0,this.rh=0;else if(typeof t=="number"&&typeof e=="number"&&typeof i=="number"&&(i>=0||isNaN(i))&&typeof s=="number"&&(s>=0||isNaN(s)))this.rx=t,this.ry=e,this.rw=i,this.rh=s;else if(t instanceof P){let n=t.x,o=t.y;if(e instanceof P){let r=e.x,a=e.y;this.rx=Math.min(n,r),this.ry=Math.min(o,a),this.rw=Math.abs(n-r),this.rh=Math.abs(o-a)}else e instanceof nt?(this.rx=n,this.ry=o,this.rw=e.width,this.rh=e.height):m.o("Incorrect second argument supplied to Rect constructor "+e)}else m.o("Invalid arguments to Rect constructor: "+t+", "+e+", "+i+", "+s);this.u=!1}h(t){return this.rx=t.rx,this.ry=t.ry,this.rw=t.rw,this.rh=t.rh,this}e(t,e,i,s){return this.rx=t,this.ry=e,this.rw=i,this.rh=s,this}Kn(t,e){return this.rw=t,this.rh=e,this}setTo(t,e,i,s){return this.rx=t,this.ry=e,this.rw=i,this.rh=s,this}set(t){return this.rx=t.rx,this.ry=t.ry,this.rw=t.rw,this.rh=t.rh,this}setPoint(t){return this.rx=t.x,this.ry=t.y,this}setSize(t){return this.rw=t.width,this.rh=t.height,this}copy(){let t=new I;return t.rx=this.rx,t.ry=this.ry,t.rw=this.rw,t.rh=this.rh,t}kt(){return this.u=!0,Object.freeze(this),this}C(){return this.u||Object.isFrozen(this)?this:this.copy().k()}k(){return this.u||(this.u=!0),this}ce(){return this.u&&(Object.isFrozen(this)&&m.o("cannot thaw constant: "+this),this.u=!1),this}Hw(t){}static parse(t){if(typeof t=="string"){let e=t.split(" "),i=0,s=0;for(;e[i]==="";)i++;let n=e[i++];n&&(s=parseFloat(n));let o=0;for(;e[i]==="";)i++;n=e[i++],n&&(o=parseFloat(n));let r=0;for(;e[i]==="";)i++;n=e[i++],n&&(r=parseFloat(n));let a=0;for(;e[i]==="";)i++;return n=e[i++],n&&(a=parseFloat(n)),new I(s,o,r,a)}else return new I}static stringify(t){return t.x.toString()+" "+t.y.toString()+" "+t.width.toString()+" "+t.height.toString()}static stringifyFixed(t){return m.s(t,"number",I,"stringifyFixed:digits"),e=>e.x.toFixed(t)+" "+e.y.toFixed(t)+" "+e.width.toFixed(t)+" "+e.height.toFixed(t)}toString(){return"Rect("+this.x+","+this.y+","+this.width+","+this.height+")"}equals(t){return t instanceof I?this.rx===t.x&&this.ry===t.y&&this.rw===t.width&&this.rh===t.height:!1}equalTo(t,e,i,s){return this.rx===t&&this.ry===e&&this.rw===i&&this.rh===s}equalsApprox(t){return C.c(this.rx,t.x)&&C.c(this.ry,t.y)&&C.c(this.rw,t.width)&&C.c(this.rh,t.height)}equalsApproxTo(t,e,i,s){return C.c(this.rx,t)&&C.c(this.ry,e)&&C.c(this.rw,i)&&C.c(this.rh,s)}equalsApproxClose(t){return C.X(this.rx,t.x)&&C.X(this.ry,t.y)&&C.X(this.rw,t.width)&&C.X(this.rh,t.height)}containsPoint(t){return this.rx<=t.x&&this.rx+this.rw>=t.x&&this.ry<=t.y&&this.ry+this.rh>=t.y}containsRect(t){return this.rx<=t.x&&t.x+t.width<=this.rx+this.rw&&this.ry<=t.y&&t.y+t.height<=this.ry+this.rh}contains(t,e,i,s){return i===void 0&&(i=0),s===void 0&&(s=0),this.rx<=t&&t+i<=this.rx+this.rw&&this.ry<=e&&e+s<=this.ry+this.rh}offset(t,e){return this.rx+=t,this.ry+=e,this}inflate(t,e){return this.Ww(e,t,e,t)}addMargin(t){return this.Ww(t.top,t.right,t.bottom,t.left)}subtractMargin(t){return this.Ww(-t.top,-t.right,-t.bottom,-t.left)}grow(t,e,i,s){return this.Ww(t,e,i,s)}Ww(t,e,i,s){let n=this.rw;e+s<=-n?(this.rx+=n/2,this.rw=0):(this.rx-=s,this.rw+=e+s);let o=this.rh;return t+i<=-o?(this.ry+=o/2,this.rh=0):(this.ry-=t,this.rh+=t+i),this}intersectRect(t){return this.EL(t.x,t.y,t.width,t.height)}intersect(t,e,i,s){return this.EL(t,e,i,s)}EL(t,e,i,s){let n=Math.max(this.rx,t),o=Math.max(this.ry,e),r=Math.min(this.rx+this.rw,t+i),a=Math.min(this.ry+this.rh,e+s);return this.rx=n,this.ry=o,this.rw=Math.max(0,r-n),this.rh=Math.max(0,a-o),this}intersectsRect(t){return this.intersects(t.x,t.y,t.width,t.height)}intersects(t,e,i,s){let n=this.rw,o=this.rx;if(n!==1/0&&i!==1/0&&(n+=o,i+=t,isNaN(i)||isNaN(n)||o>i||t>n))return!1;let r=this.rh,a=this.ry;return!(r!==1/0&&s!==1/0&&(r+=a,s+=e,isNaN(s)||isNaN(r)||a>s||e>r))}UL(t,e){let i=this.rw,s=t.width+e+e,n=this.rx,o=t.x-e;if(i+=n,s+=o,n>s||o>i)return!1;let r=this.rh,a=t.height+e+e,h=this.ry,l=t.y-e;return r+=h,a+=l,!(h>a||l>r)}unionPoint(t){return this.re(t.x,t.y,0,0)}unionRect(t){return this.re(t.rx,t.ry,t.rw,t.rh)}union(t,e,i,s){return i===void 0&&(i=0),s===void 0&&(s=0),this.re(t,e,i,s)}re(t,e,i,s){let n=Math.min(this.rx,t),o=Math.min(this.ry,e),r=Math.max(this.rx+this.rw,t+i),a=Math.max(this.ry+this.rh,e+s);return this.rx=n,this.ry=o,this.rw=r-n,this.rh=a-o,this}setSpot(t,e,i){return this.rx=t-i.offsetX-i.x*this.rw,this.ry=e-i.offsetY-i.y*this.rh,this}nearestSideDirection(t,e){return C.Jw(this,t,e,!0)}nearestSideDirectionPoint(t){return C.Jw(this,t.x,t.y,!0)}static contains(t,e,i,s,n,o,r,a){return r===void 0&&(r=0),a===void 0&&(a=0),t<=n&&n+r<=t+i&&e<=o&&o+a<=e+s}static intersects(t,e,i,s,n,o,r,a){let h=i,l=r,u=t,c=n;if(h+=u,l+=c,u>l||c>h)return!1;let d=s,f=a,p=e,g=o;return d+=p,f+=g,!(p>f||g>d)}static intersectsLineSegment(t,e,i,s,n,o,r,a){return C.VL(t,e,i,s,n,o,r,a)}get x(){return this.rx}set x(t){this.rx=t}get y(){return this.ry}set y(t){this.ry=t}get width(){return this.rw}set width(t){t<0&&m.J(t,">= 0",I,"width"),this.rw=t}get height(){return this.rh}set height(t){t<0&&m.J(t,">= 0",I,"height"),this.rh=t}get left(){return this.rx}set left(t){this.rx=t}get top(){return this.ry}set top(t){this.ry=t}get right(){return this.rx+this.rw}set right(t){this.rx+=t-(this.rx+this.rw)}get bottom(){return this.ry+this.rh}set bottom(t){this.ry+=t-(this.ry+this.rh)}get position(){return new P(this.rx,this.ry)}set position(t){this.rx=t.x,this.ry=t.y}get size(){return new nt(this.rw,this.rh)}set size(t){this.rw=t.width,this.rh=t.height}get center(){return new P(this.rx+this.rw/2,this.ry+this.rh/2)}set center(t){this.rx=t.x-this.rw/2,this.ry=t.y-this.rh/2}get centerX(){return this.rx+this.rw/2}set centerX(t){this.rx=t-this.rw/2}get centerY(){return this.ry+this.rh/2}set centerY(t){this.ry=t-this.rh/2}isReal(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)}isEmpty(){return this.width===0&&this.height===0}static tm=new I(0,0,0,0).kt();static YF=new I(NaN,NaN,NaN,NaN).kt();static $w=[];static l(){let t=I.$w.pop();return t===void 0?new I:t}static bs(t){let e=I.$w.pop();return e===void 0?t.copy():e.h(t)}static z(t,e,i,s){let n=I.$w.pop();return n===void 0?new I(t,e,i,s):n.e(t,e,i,s)}static i(t){I.$w.push(t)}}class Dt{mt;mr;mb;ml;constructor(t,e,i,s){t===void 0?(this.mt=0,this.mr=0,this.mb=0,this.ml=0):e===void 0?(e=t,i=t,s=t,this.mt=t,this.mr=e,this.mb=i,this.ml=s):i===void 0?(i=t,s=e,this.mt=t,this.mr=e,this.mb=i,this.ml=s):s!==void 0?(this.mt=t,this.mr=e,this.mb=i,this.ml=s):m.o("Invalid arguments to Margin constructor: "+t+", "+e+", "+i+", "+s)}setTo(t,e,i,s){return this.mt=t,this.mr=e,this.mb=i,this.ml=s,this}set(t){return this.mt=t.mt,this.mr=t.mr,this.mb=t.mb,this.ml=t.ml,this}copy(){let t=new Dt;return t.mt=this.mt,t.mr=this.mr,t.mb=this.mb,t.ml=this.ml,t}kt(){return Object.freeze(this),this}C(){return Object.isFrozen(this)?this:this.copy().kt()}Hw(t){}static parse(t){if(typeof t=="string"){let e=t.split(" "),i=0,s=NaN;for(;e[i]==="";)i++;let n=e[i++];if(n&&(s=parseFloat(n)),isNaN(s))return new Dt;let o=NaN;for(;e[i]==="";)i++;if(n=e[i++],n&&(o=parseFloat(n)),isNaN(o))return new Dt(s);let r=NaN;for(;e[i]==="";)i++;if(n=e[i++],n&&(r=parseFloat(n)),isNaN(r))return new Dt(s,o);let a=NaN;for(;e[i]==="";)i++;return n=e[i++],n&&(a=parseFloat(n)),isNaN(a)?new Dt(s,o):new Dt(s,o,r,a)}else return new Dt}static stringify(t){return t.top.toString()+" "+t.right.toString()+" "+t.bottom.toString()+" "+t.left.toString()}static stringifyFixed(t){return m.s(t,"number",Dt,"stringifyFixed:digits"),e=>e.top.toFixed(t)+" "+e.right.toFixed(t)+" "+e.bottom.toFixed(t)+" "+e.left.toFixed(t)}toString(){return"Margin("+this.top+","+this.right+","+this.bottom+","+this.left+")"}equals(t){return t instanceof Dt?this.mt===t.top&&this.mr===t.right&&this.mb===t.bottom&&this.ml===t.left:!1}equalTo(t,e,i,s){return this.mt===t&&this.mr===e&&this.mb===i&&this.ml===s}equalsApprox(t){return C.c(this.mt,t.top)&&C.c(this.mr,t.right)&&C.c(this.mb,t.bottom)&&C.c(this.ml,t.left)}get top(){return this.mt}set top(t){this.mt=t}get right(){return this.mr}set right(t){this.mr=t}get bottom(){return this.mb}set bottom(t){this.mb=t}get left(){return this.ml}set left(t){this.ml=t}isReal(){return isFinite(this.top)&&isFinite(this.right)&&isFinite(this.bottom)&&isFinite(this.left)}static em=new Dt(0,0,0,0).kt();static BL=new Dt(2,2,2,2).kt()}class T{sx;sy;ox;oy;constructor(t,e,i,s){t===void 0?(this.sx=0,this.sy=0,this.ox=0,this.oy=0):(e===void 0&&(e=0),i===void 0&&(i=0),s===void 0&&(s=0),this.sx=t,this.sy=e,this.ox=i,this.oy=s)}setTo(t,e,i,s){return this.sx=t,this.sy=e,this.ox=i,this.oy=s,this}set(t){return this.sx=t.sx,this.sy=t.sy,this.ox=t.ox,this.oy=t.oy,this}copy(){let t=new T;return t.sx=this.sx,t.sy=this.sy,t.ox=this.ox,t.oy=this.oy,t}kt(){return Object.freeze(this),this}C(){return Object.isFrozen(this)?this:this.copy().kt()}Hw(t){}qi(t){return this.sx=NaN,this.sy=NaN,this.ox=t,this.kt()}vU(t,e){(isNaN(t)||t>1||t<0)&&m.J(t,"0 <= "+e+" <= 1",T,e)}FU(t,e){(isNaN(t)||t===1/0||t===-1/0)&&m.J(t,"real number, not NaN or Infinity",T,e)}static parse(t){if(typeof t=="string"){if(t=t.trim(),t==="None")return T.None;if(t==="TopLeft")return T.TopLeft;if(t==="Top"||t==="TopCenter"||t==="MiddleTop")return T.TopCenter;if(t==="TopRight")return T.TopRight;if(t==="Left"||t==="LeftCenter"||t==="MiddleLeft")return T.LeftCenter;if(t==="Center")return T.Center;if(t==="Right"||t==="RightCenter"||t==="MiddleRight")return T.RightCenter;if(t==="BottomLeft")return T.BottomLeft;if(t==="Bottom"||t==="BottomCenter"||t==="MiddleBottom")return T.BottomCenter;if(t==="BottomRight")return T.BottomRight;if(t==="TopSide")return T.TopSide;if(t==="LeftSide")return T.LeftSide;if(t==="RightSide")return T.RightSide;if(t==="BottomSide")return T.BottomSide;if(t==="TopBottomSides")return T.TopBottomSides;if(t==="LeftRightSides")return T.LeftRightSides;if(t==="TopLeftSides")return T.TopLeftSides;if(t==="TopRightSides")return T.TopRightSides;if(t==="BottomLeftSides")return T.BottomLeftSides;if(t==="BottomRightSides")return T.BottomRightSides;if(t==="NotTopSide")return T.NotTopSide;if(t==="NotLeftSide")return T.NotLeftSide;if(t==="NotRightSide")return T.NotRightSide;if(t==="NotBottomSide")return T.NotBottomSide;if(t==="AllSides")return T.AllSides;if(t==="Default")return T.Default;let e=t.split(" "),i=0,s=0;for(;e[i]==="";)i++;let n=e[i++];n!==void 0&&n.length>0&&(s=parseFloat(n));let o=0;for(;e[i]==="";)i++;n=e[i++],n!==void 0&&n.length>0&&(o=parseFloat(n));let r=0;for(;e[i]==="";)i++;n=e[i++],n!==void 0&&n.length>0&&(r=parseFloat(n));let a=0;for(;e[i]==="";)i++;return n=e[i++],n!==void 0&&n.length>0&&(a=parseFloat(n)),new T(s,o,r,a)}else return new T}static stringify(t){return t.isSpot()?t.x.toString()+" "+t.y.toString()+" "+t.offsetX.toString()+" "+t.offsetY.toString():t.toString()}static stringifyFixed(t){return m.s(t,"number",T,"stringifyFixed:digits"),e=>e.x.toFixed(t)+" "+e.y.toFixed(t)+" "+e.offsetX.toFixed(t)+" "+e.offsetY.toFixed(t)}toString(){return this.isSpot()?this.ox===0&&this.oy===0?"Spot("+this.x+","+this.y+")":"Spot("+this.x+","+this.y+","+this.offsetX+","+this.offsetY+")":this.equals(T.None)?"None":this.equals(T.TopLeft)?"TopLeft":this.equals(T.TopCenter)?"Top":this.equals(T.TopRight)?"TopRight":this.equals(T.LeftCenter)?"Left":this.equals(T.Center)?"Center":this.equals(T.RightCenter)?"Right":this.equals(T.BottomLeft)?"BottomLeft":this.equals(T.BottomCenter)?"Bottom":this.equals(T.BottomRight)?"BottomRight":this.equals(T.TopSide)?"TopSide":this.equals(T.LeftSide)?"LeftSide":this.equals(T.RightSide)?"RightSide":this.equals(T.BottomSide)?"BottomSide":this.equals(T.TopBottomSides)?"TopBottomSides":this.equals(T.LeftRightSides)?"LeftRightSides":this.equals(T.TopLeftSides)?"TopLeftSides":this.equals(T.TopRightSides)?"TopRightSides":this.equals(T.BottomLeftSides)?"BottomLeftSides":this.equals(T.BottomRightSides)?"BottomRightSides":this.equals(T.NotTopSide)?"NotTopSide":this.equals(T.NotLeftSide)?"NotLeftSide":this.equals(T.NotRightSide)?"NotRightSide":this.equals(T.NotBottomSide)?"NotBottomSide":this.equals(T.AllSides)?"AllSides":this.equals(T.Default)?"Default":"None"}equals(t){return t instanceof T?(this.sx===t.x||isNaN(this.sx)&&isNaN(t.x))&&(this.sy===t.y||isNaN(this.sy)&&isNaN(t.y))&&this.ox===t.offsetX&&this.oy===t.offsetY:!1}opposite(){return new T(.5-(this.sx-.5),.5-(this.sy-.5),-this.ox,-this.oy)}includesSide(t){if(!this.isSide())return!1;if(!t.isSide())if(t.equals(T.Left))t=T.LeftSide;else if(t.equals(T.Right))t=T.RightSide;else if(t.equals(T.Top))t=T.TopSide;else if(t.equals(T.Bottom))t=T.BottomSide;else return!1;let e=this.oy,i=t.offsetY;return(e&i)===i}get x(){return this.sx}set x(t){this.sx=t}get y(){return this.sy}set y(t){this.sy=t}get offsetX(){return this.ox}set offsetX(t){this.ox=t}get offsetY(){return this.oy}set offsetY(t){this.oy=t}isSpot(){return!isNaN(this.x)&&!isNaN(this.y)}isNoSpot(){return isNaN(this.x)||isNaN(this.y)}isSide(){return isNaN(this.x)&&isNaN(this.y)&&this.offsetX===1&&this.offsetY!==0}isNone(){return isNaN(this.x)&&isNaN(this.y)&&this.offsetX===0&&this.offsetY===0}isDefault(){return isNaN(this.x)&&isNaN(this.y)&&this.offsetX===-1&&this.offsetY===0}static None=new T(0,0,0,0).qi(0);static Default=new T(0,0,-1,0).qi(-1);static TopLeft=new T(0,0,0,0).kt();static TopCenter=new T(.5,0,0,0).kt();static TopRight=new T(1,0,0,0).kt();static LeftCenter=new T(0,.5,0,0).kt();static Center=new T(.5,.5,0,0).kt();static RightCenter=new T(1,.5,0,0).kt();static BottomLeft=new T(0,1,0,0).kt();static BottomCenter=new T(.5,1,0,0).kt();static BottomRight=new T(1,1,0,0).kt();static MiddleTop=T.TopCenter;static MiddleLeft=T.LeftCenter;static MiddleRight=T.RightCenter;static MiddleBottom=T.BottomCenter;static Top=T.TopCenter;static Left=T.LeftCenter;static Right=T.RightCenter;static Bottom=T.BottomCenter;static TopSide=new T(0,0,1,1).qi(1);static LeftSide=new T(0,0,1,2).qi(1);static RightSide=new T(0,0,1,4).qi(1);static BottomSide=new T(0,0,1,8).qi(1);static TopBottomSides=new T(0,0,1,9).qi(1);static LeftRightSides=new T(0,0,1,6).qi(1);static TopLeftSides=new T(0,0,1,3).qi(1);static TopRightSides=new T(0,0,1,5).qi(1);static BottomLeftSides=new T(0,0,1,10).qi(1);static BottomRightSides=new T(0,0,1,12).qi(1);static NotTopSide=new T(0,0,1,14).qi(1);static NotLeftSide=new T(0,0,1,13).qi(1);static NotRightSide=new T(0,0,1,11).qi(1);static NotBottomSide=new T(0,0,1,7).qi(1);static AllSides=new T(0,0,1,15).qi(1);static LP=new T(.156,.156).kt();static AP=new T(.844,.844).kt()}class Nt{m11;m12;m21;m22;dx;dy;constructor(){this.m11=1,this.m12=0,this.m21=0,this.m22=1,this.dx=0,this.dy=0}set(t){return this.m11=t.m11,this.m12=t.m12,this.m21=t.m21,this.m22=t.m22,this.dx=t.dx,this.dy=t.dy,this}setTo(t,e,i,s,n,o){return this.m11=t,this.m12=e,this.m21=i,this.m22=s,this.dx=n,this.dy=o,this}copy(){let t=new Nt;return t.m11=this.m11,t.m12=this.m12,t.m21=this.m21,t.m22=this.m22,t.dx=this.dx,t.dy=this.dy,t}toString(){return"Transform("+this.m11+","+this.m12+","+this.m21+","+this.m22+","+this.dx+","+this.dy+")"}equals(t){return this.m11===t.m11&&this.m12===t.m12&&this.m21===t.m21&&this.m22===t.m22&&this.dx===t.dx&&this.dy===t.dy}TP(){return this.dx===0&&this.dy===0&&this.m11===1&&this.m12===0&&this.m21===0&&this.m22===1}Ue(){return this.m11=1,this.m12=0,this.m21=0,this.m22=1,this.dx=0,this.dy=0,this}bc(t){let e=this.m11*t.m11+this.m21*t.m12,i=this.m12*t.m11+this.m22*t.m12,s=this.m11*t.m21+this.m21*t.m22,n=this.m12*t.m21+this.m22*t.m22;return this.dx=this.m11*t.dx+this.m21*t.dy+this.dx,this.dy=this.m12*t.dx+this.m22*t.dy+this.dy,this.m11=e,this.m12=i,this.m21=s,this.m22=n,this}zL(t){let e=1/(t.m11*t.m22-t.m12*t.m21),i=t.m22*e,s=-t.m12*e,n=-t.m21*e,o=t.m11*e,r=e*(t.m21*t.dy-t.m22*t.dx),a=e*(t.m12*t.dx-t.m11*t.dy),h=this.m11*i+this.m21*s,l=this.m12*i+this.m22*s,u=this.m11*n+this.m21*o,c=this.m12*n+this.m22*o;return this.dx=this.m11*r+this.m21*a+this.dx,this.dy=this.m12*r+this.m22*a+this.dy,this.m11=h,this.m12=l,this.m21=u,this.m22=c,this}Zw(){let t=1/(this.m11*this.m22-this.m12*this.m21),e=this.m22*t,i=-this.m12*t,s=-this.m21*t,n=this.m11*t,o=t*(this.m21*this.dy-this.m22*this.dx),r=t*(this.m12*this.dx-this.m11*this.dy);return this.m11=e,this.m12=i,this.m21=s,this.m22=n,this.dx=o,this.dy=r,this}ks(t,e,i){if(t=C.Ee(t),t===0)return this;this.Gs(e,i);let s=0,n=0;if(t===90)s=0,n=1;else if(t===180)s=-1,n=0;else if(t===270)s=0,n=-1;else{let l=t*Math.PI/180;s=Math.cos(l),n=Math.sin(l)}let o=this.m11*s+this.m21*n,r=this.m12*s+this.m22*n,a=this.m11*-n+this.m21*s,h=this.m12*-n+this.m22*s;return this.m11=o,this.m12=r,this.m21=a,this.m22=h,this.Gs(-e,-i),this}Gs(t,e){return this.dx+=this.m11*t+this.m21*e,this.dy+=this.m12*t+this.m22*e,this}et(t,e){return e===void 0&&(e=t),this.m11*=t,this.m12*=t,this.m21*=e,this.m22*=e,this}KF(){if(this.m11===1&&this.m12===0)return 0;let t=Math.atan2(this.m12,this.m11)*180/Math.PI;return t<0&&(t+=360),t}gt(t){let e=t.x,i=t.y;return t.e(e*this.m11+i*this.m21+this.dx,e*this.m12+i*this.m22+this.dy)}Ni(t){let e=1/(this.m11*this.m22-this.m12*this.m21),i=this.m22*e,s=-this.m12*e,n=-this.m21*e,o=this.m11*e,r=t.x-this.dx,a=t.y-this.dy;return t.e(r*i+a*n,r*s+a*o)}Mu(t){let e=1/(this.m11*this.m22-this.m12*this.m21),i=this.m22*e,s=-this.m12*e,n=-this.m21*e,o=this.m11*e,r=e*(this.m21*this.dy-this.m22*this.dx),a=e*(this.m12*this.dx-this.m11*this.dy),h=t.x*1.25,l=t.y*1.2;return t.e(h*i+l*n+r,h*s+l*o+a)}im(t){let e=t.x,i=t.y,s=e+t.width,n=i+t.height,o=this.m11,r=this.m12,a=this.m21,h=this.m22,l=this.dx,u=this.dy,c=e*o+i*a+l,d=e*r+i*h+u,f=s*o+i*a+l,p=s*r+i*h+u,g=e*o+n*a+l,y=e*r+n*h+u,b=s*o+n*a+l,v=s*r+n*h+u,w=c,k=c,S=d,N=d;return w=Math.min(w,f),k=Math.max(k,f),S=Math.min(S,p),N=Math.max(N,p),w=Math.min(w,g),k=Math.max(k,g),S=Math.min(S,y),N=Math.max(N,y),w=Math.min(w,b),k=Math.max(k,b),S=Math.min(S,v),N=Math.max(N,v),t.e(w,S,k-w,N-S),t}static XL=[];static l(){let t=Nt.XL.pop();return t===void 0?new Nt:t}static i(t){Nt.XL.push(t)}static DP="54a702f3e53909c447824c6706603faf4c"}let C={HF:"7da71ca0ad381e90",Hn:4*((Math.sqrt(2)-1)/3),GL:[],Qw:x=>{if(x<=0)return 0;let t=C.GL;if(t===null){t=[];for(let e=0;e<=2e3;e++)t[e]=Math.sqrt(e);C.GL=t}if(x<1){let e=1/x;return e<=2e3?1/t[e|0]:Math.sqrt(x)}else return x<=2e3?t[x|0]:Math.sqrt(x)},c:(x,t)=>{let e=x-t;return e<.5&&e>-.5},X:(x,t)=>{let e=x-t;return e<5e-8&&e>-5e-8},Ve:(x,t,e,i,s,n,o)=>{s<=0&&(s=1e-6);let r=0,a=0,h=0,l=0;if(x<e?(a=x,r=e):(a=e,r=x),t<i?(l=t,h=i):(l=i,h=t),x===e)return l<=o&&o<=h&&x-s<=n&&n<=x+s;if(t===i)return a<=n&&n<=r&&t-s<=o&&o<=t+s;let u=r+s,c=a-s;if(c<=n&&n<=u){let d=h+s,f=l-s;if(f<=o&&o<=d)if(u-c>d-f)if(x-e>s||e-x>s){let p=(i-t)/(e-x)*(n-x)+t;if(p-s<=o&&o<=p+s)return!0}else return!0;else if(t-i>s||i-t>s){let p=(e-x)/(i-t)*(o-t)+x;if(p-s<=n&&n<=p+s)return!0}else return!0}return!1},_w:(x,t,e,i,s,n,o,r,a,h,l,u)=>{if(!C.Ve(x,t,o,r,u,e,i)||!C.Ve(x,t,o,r,u,s,n)){let c=(x+e)/2,d=(t+i)/2,f=(e+s)/2,p=(i+n)/2,g=(s+o)/2,y=(n+r)/2,b=(c+f)/2,v=(d+p)/2,w=(f+g)/2,k=(p+y)/2,S=(b+w)/2,N=(v+k)/2;return C._w(x,t,c,d,b,v,S,N,a,h,l,u)||C._w(S,N,w,k,g,y,o,r,a,h,l,u)}else return C.Ve(x,t,o,r,u,h,l)},YL:(x,t,e,i,s,n,o,r,a)=>{let h=(x+e)/2,l=(t+i)/2,u=(e+s)/2,c=(i+n)/2,d=(s+o)/2,f=(n+r)/2,p=(h+u)/2,g=(l+c)/2,y=(u+d)/2,b=(c+f)/2;return a.e((p+y)/2,(g+b)/2),a},qF:(x,t,e,i,s,n,o,r)=>{let a=(x+e)/2,h=(t+i)/2,l=(e+s)/2,u=(i+n)/2,c=(s+o)/2,d=(n+r)/2,f=(a+l)/2,p=(h+u)/2,g=(l+c)/2,y=(u+d)/2;return P.direction(f,p,g,y)},Cu:(x,t,e,i,s,n,o,r,a,h)=>{if(!C.Ve(x,t,o,r,a,e,i)||!C.Ve(x,t,o,r,a,s,n)){let l=(x+e)/2,u=(t+i)/2,c=(e+s)/2,d=(i+n)/2,f=(s+o)/2,p=(n+r)/2,g=(l+c)/2,y=(u+d)/2,b=(c+f)/2,v=(d+p)/2,w=(g+b)/2,k=(y+v)/2;C.Cu(x,t,l,u,g,y,w,k,a,h),C.Cu(w,k,b,v,f,p,o,r,a,h)}else h.re(x,t,0,0),h.re(o,r,0,0);return h},qn:(x,t,e,i,s,n,o,r,a,h)=>{if(!C.Ve(x,t,o,r,a,e,i)||!C.Ve(x,t,o,r,a,s,n)){let l=(x+e)/2,u=(t+i)/2,c=(e+s)/2,d=(i+n)/2,f=(s+o)/2,p=(n+r)/2,g=(l+c)/2,y=(u+d)/2,b=(c+f)/2,v=(d+p)/2,w=(g+b)/2,k=(y+v)/2;C.qn(x,t,l,u,g,y,w,k,a,h),C.qn(w,k,b,v,f,p,o,r,a,h)}else h.length===0&&(h.push(x),h.push(t)),h.push(o),h.push(r);return h},vP:(x,t,e,i,s,n,o,r,a,h)=>{if(C.Ve(x,t,s,n,h,e,i))return C.Ve(x,t,s,n,h,r,a);{let l=(x+e)/2,u=(t+i)/2,c=(e+s)/2,d=(i+n)/2,f=(l+c)/2,p=(u+d)/2;return C.vP(x,t,l,u,f,p,o,r,a,h)||C.vP(f,p,c,d,s,n,o,r,a,h)}},FP:(x,t,e,i,s,n,o,r)=>{if(C.Ve(x,t,s,n,o,e,i))r.re(x,t,0,0),r.re(s,n,0,0);else{let a=(x+e)/2,h=(t+i)/2,l=(e+s)/2,u=(i+n)/2,c=(a+l)/2,d=(h+u)/2;C.FP(x,t,a,h,c,d,o,r),C.FP(c,d,l,u,s,n,o,r)}return r},sm:(x,t,e,i,s,n,o,r)=>{if(C.Ve(x,t,s,n,o,e,i))r.length===0&&(r.push(x),r.push(t)),r.push(s),r.push(n);else{let a=(x+e)/2,h=(t+i)/2,l=(e+s)/2,u=(i+n)/2,c=(a+l)/2,d=(h+u)/2;C.sm(x,t,a,h,c,d,o,r),C.sm(c,d,l,u,s,n,o,r)}return r},nm:(x,t,e,i,s,n,o,r,a,h,l,u,c,d)=>{if(!C.Ve(x,t,o,r,c,e,i)||!C.Ve(x,t,o,r,c,s,n)){let f=(x+e)/2,p=(t+i)/2,g=(e+s)/2,y=(i+n)/2,b=(s+o)/2,v=(n+r)/2,w=(f+g)/2,k=(p+y)/2,S=(g+b)/2,N=(y+v)/2,D=(w+S)/2,L=(k+N)/2,M=1/0,A=!1,F=0,O=0;if(C.nm(x,t,f,p,w,k,D,L,a,h,l,u,c,d)){let E=(d.x-a)**2+(d.y-h)**2;E<M&&(M=E,A=!0,F=d.x,O=d.y)}if(C.nm(D,L,S,N,b,v,o,r,a,h,l,u,c,d)){let E=(d.x-a)**2+(d.y-h)**2;E<M&&(M=E,A=!0,F=d.x,O=d.y)}return A&&(d.x=F,d.y=O),A}else{if(!C.Pu(x,t,o,r,a,h,l,u))return!1;let f=(x-o)*(h-u)-(t-r)*(a-l);if(f===0)return!1;let p=((x*r-t*o)*(a-l)-(x-o)*(a*u-h*l))/f,g=((x*r-t*o)*(h-u)-(t-r)*(a*u-h*l))/f;return d.e(p,g),!0}},om:(x,t,e,i,s,n,o,r,a,h,l,u,c)=>{let d=0;if(!C.Ve(x,t,o,r,c,e,i)||!C.Ve(x,t,o,r,c,s,n)){let f=(x+e)/2,p=(t+i)/2,g=(e+s)/2,y=(i+n)/2,b=(s+o)/2,v=(n+r)/2,w=(f+g)/2,k=(p+y)/2,S=(g+b)/2,N=(y+v)/2,D=(w+S)/2,L=(k+N)/2;d+=C.om(x,t,f,p,w,k,D,L,a,h,l,u,c),d+=C.om(D,L,S,N,b,v,o,r,a,h,l,u,c)}else{let f=(x-o)*(h-u)-(t-r)*(a-l);if(f===0)return d;let p=((x*r-t*o)*(a-l)-(x-o)*(a*u-h*l))/f,g=((x*r-t*o)*(h-u)-(t-r)*(a*u-h*l))/f;if(p>=l)return d;let y=0,b=0;if((a>l?a-l:l-a)<(h>u?h-u:u-h)){if(t<r?(y=t,b=r):(y=r,b=t),g<y||g>b)return d}else if(x<o?(y=x,b=o):(y=o,b=x),p<y||p>b)return d;f>0?d++:f<0&&d--}return d},Ll:(x,t,e,i,s,n,o)=>{if(C.X(x,e)){let r=0,a=0;t<i?(r=t,a=i):(r=i,a=t);let h=n;return h<r?(o.e(x,r),!1):h>a?(o.e(x,a),!1):(o.e(x,h),!0)}else if(C.X(t,i)){let r=0,a=0;x<e?(r=x,a=e):(r=e,a=x);let h=s;return h<r?(o.e(r,t),!1):h>a?(o.e(a,t),!1):(o.e(h,t),!0)}else{let r=(e-x)**2+(i-t)**2,a=((x-s)*(x-e)+(t-n)*(t-i))/r;if(a<-5e-6)return o.e(x,t),!1;if(a>1.000005)return o.e(e,i),!1;{let h=x+a*(e-x),l=t+a*(i-t);return o.e(h,l),!0}}},Do:(x,t,e,i,s,n,o,r,a)=>{if(C.c(x,e)&&C.c(t,i))return a.e(x,t),!1;if(C.X(s,o)){if(C.X(x,e))return C.Ll(x,t,e,i,s,n,a),!1;{let h=(i-t)/(e-x)*(s-x)+t;return C.Ll(x,t,e,i,s,h,a)}}else{let h=(r-n)/(o-s);if(C.X(x,e)){let l=h*(x-s)+n,u=0,c=0;return t<i?(u=t,c=i):(u=i,c=t),l<u?(a.e(x,u),!1):l>c?(a.e(x,c),!1):(a.e(x,l),!0)}else{let l=(i-t)/(e-x);if(C.X(h,l))return C.Ll(x,t,e,i,s,n,a),!1;{let u=(l*x-h*s+n-t)/(l-h);if(C.X(l,0)){let c=0,d=0;return x<e?(c=x,d=e):(c=e,d=x),u<c?(a.e(c,t),!1):u>d?(a.e(d,t),!1):(a.e(u,t),!0)}else{let c=l*(u-x)+t;return C.Ll(x,t,e,i,u,c,a)}}}}},Al:(x,t,e,i,s,n,o,r,a)=>{let h=1e21,l=x,u=t;if(C.Do(x,t,x,i,s,n,o,r,a)){let c=(a.x-s)**2+(a.y-n)**2;c<h&&(h=c,l=a.x,u=a.y)}if(C.Do(e,t,e,i,s,n,o,r,a)){let c=(a.x-s)**2+(a.y-n)**2;c<h&&(h=c,l=a.x,u=a.y)}if(C.Do(x,t,e,t,s,n,o,r,a)){let c=(a.x-s)**2+(a.y-n)**2;c<h&&(h=c,l=a.x,u=a.y)}if(C.Do(x,i,e,i,s,n,o,r,a)){let c=(a.x-s)**2+(a.y-n)**2;c<h&&(h=c,l=a.x,u=a.y)}return a.e(l,u),h<1e21},tx:(x,t,e)=>C.VL(x.x,x.y,x.width,x.height,t.x,t.y,e.x,e.y),VL:(x,t,e,i,s,n,o,r)=>{let a=x,h=x+e,l=t,u=t+i;if(s===o){let c=0,d=0;return n<r?(c=n,d=r):(c=r,d=n),a<=s&&s<=h&&c<=u&&d>=l}if(n===r){let c=0,d=0;return s<o?(c=s,d=o):(c=o,d=s),l<=n&&n<=u&&c<=h&&d>=a}return!!(I.contains(x,t,e,i,s,n)||I.contains(x,t,e,i,o,r)||C.Pu(a,l,h,l,s,n,o,r)||C.Pu(h,l,h,u,s,n,o,r)||C.Pu(h,u,a,u,s,n,o,r)||C.Pu(a,u,a,l,s,n,o,r))},Pu:(x,t,e,i,s,n,o,r)=>x===e&&t===i&&s===o&&n===r?x===s&&t===n:C.ku(x,t,e,i,s,n)*C.ku(x,t,e,i,o,r)<=0&&C.ku(s,n,o,r,x,t)*C.ku(s,n,o,r,e,i)<=0,ku:(x,t,e,i,s,n)=>{let o=e-x,r=i-t,a=s-x,h=n-t,l=a*r-h*o;return l===0&&(l=a*o+h*r,l>0&&(a-=o,h-=r,l=a*o+h*r,l<0&&(l=0))),l},Jw(x,t,e,i){i===void 0&&(i=!1);let s=0,n=x===null?t:(t-x.x)/(x.width>0?x.width:1),o=x===null?e:(e-x.y)/(x.height>0?x.height:1);return n>o?n>1-o||(i||n<1-o?s=270:s=315):i||n<o?n>1-o?s=90:i||n<1-o?s=180:s=135:n<.5?s=225:n>.5&&(s=45),s},Ee:x=>(x>=360?x-=360:x<0&&(x+=360),x),jF:(x,t)=>x>t?Math.min(x-t,Math.abs(x-360-t)):t>x?Math.min(t-x,Math.abs(x-(t-360))):0,KL:(x,t,e,i,s,n)=>{let o=Math.PI;n||(i=i*(o/180),s=s*(o/180));let r=i>s?-1:1,a=1e-5,h=o*2,l=[],u=o/2,c=i,d=Math.min(h,Math.abs(s-i));if(d<a){let f=c+r*Math.min(d,u),p=x+e*Math.cos(c),g=t+e*Math.sin(c),y=x+e*Math.cos(f),b=t+e*Math.sin(f),v=(p+y)/2,w=(g+b)/2;return l.push([p,g,v,w,v,w,y,b]),l}for(;d>a;){let f=c+r*Math.min(d,u);l.push(C.WF(e,c,f,x,t)),d-=Math.abs(f-c),c=f}return l},WF:(x,t,e,i,s)=>{let n=(e-t)/2,o=x*Math.cos(n),r=x*Math.sin(n),a=o,h=-r,l=a*a+h*h,u=l+a*o+h*r,c=4/3*(Math.sqrt(2*l*u)-u)/(a*r-h*o),d=a-c*h,f=h+c*a,p=d,g=-f,y=n+t,b=Math.cos(y),v=Math.sin(y);return[i+x*Math.cos(t),s+x*Math.sin(t),i+d*b-f*v,s+d*v+f*b,i+p*b-g*v,s+p*v+g*b,i+x*Math.cos(e),s+x*Math.sin(e)]},_g:(x,t,e,i,s,n,o)=>{let r=s,a=n,h=Math.floor((x-e)/r)*r+e,l=Math.floor((t-i)/a)*a+i,u=h;h+r-x<r/2&&(u=h+r);let c=l;return l+a-t<a/2&&(c=l+a),o.e(u,c),o},HL:(x,t)=>{let e=Math.max(x,t),i=Math.min(x,t),s=1,n=1;do s=e%i,n=i,e=i,i=s;while(s>0);return n},JF:(x,t,e,i)=>{let s=e<0,n=i<0,o=0,r=0,a=0;x<t?(r=1,a=0):(r=0,a=1);let h=0,l=0,u=0,c=0;return o=r,h=o===0?x:t,u=o===0?e:i,(o===0?s:n)&&(u=-u),o=a,l=o===0?x:t,c=o===0?e:i,(o===0?s:n)&&(c=-c),C.$F(h,l,u,c,0,0)},$F:(x,t,e,i,s,n)=>{let o=0;if(i>0)if(e>0){let r=x*x,a=t*t,h=x*e,l=t*i,u=-a+l,c=-a+Math.sqrt(h*h+l*l),d=u,f=9999999999;for(let y=0;y<f&&(d=.5*(u+c),!(d===u||d===c));++y){let b=h/(d+r),v=l/(d+a),w=b*b+v*v-1;if(w>0)u=d;else if(w<0)c=d;else break}s=r*e/(d+r),n=a*i/(d+a);let p=s-e,g=n-i;o=Math.sqrt(p*p+g*g)}else s=0,n=t,o=Math.abs(i-t);else{let r=x*x-t*t,a=x*e;if(a<r){let h=a/r,l=h*h;s=x*h,n=t*Math.sqrt(Math.abs(1-l));let u=s-e;o=Math.sqrt(u*u+n*n)}else s=x,n=0,o=Math.abs(e-x)}return o},jn:{},rm:new yt,pr:new yt,yr:0,lm:100};C.za=C.HF;var Ve=(x=>(x[x.Line=1]="Line",x[x.Rectangle=2]="Rectangle",x[x.Ellipse=3]="Ellipse",x[x.Path=4]="Path",x))(Ve||{}),Ri=(x=>(x[x.None=0]="None",x[x.Default=1]="Default",x[x.Fill=2]="Fill",x[x.Uniform=6]="Uniform",x))(Ri||{});class wt{n;am;hm;kc;Nu;Lu;Wn;Jn;$n;W;Li;Ai;ni;oi;Ys;Pc;Sc;constructor(t,e){V.Je(this),this.n=2,t===void 0&&(t=4),this.W=t,this.Li=0,this.Ai=0,this.ni=0,this.oi=0,t===4?this.Ys=new q:this.Ys=wt.ex,this.am=this.Ys.rt,this.hm=new I,this.kc=null,this.Nu=null,this.Lu=NaN,this.Wn=T.TopLeft,this.Jn=T.BottomRight,this.Pc=NaN,this.Sc=NaN,this.$n=2,e&&Object.assign(this,e)}copy(){let t=new wt;if(t.n=this.n&-2,t.W=this.W,t.Li=this.Li,t.Ai=this.Ai,t.ni=this.ni,t.oi=this.oi,this.W===4){let e=this.Ys.r,i=t.Ys;for(let s=0;s<e.length;s++){let n=e[s];i.add(n.copy())}t.Ys=i}else t.Ys=this.Ys;return t.am=this.am,t.hm.h(this.hm),t.kc=this.kc,t.Nu=this.Nu,t.Lu=this.Lu,t.Wn=this.Wn.C(),t.Jn=this.Jn.C(),t.Pc=this.Pc,t.Sc=this.Sc,t.$n=this.$n,t}static Line=1;static Rectangle=2;static Ellipse=3;static Path=4;static ex=new q().k();get u(){return(this.n&1)!==0}set u(t){t?this.n|=1:this.n&=-2}get yt(){return(this.n&2)!==0}set yt(t){t?this.n|=2:this.n&=-3}k(){if(this.u=!0,this.type!==4)return this;let t=this.figures;t.k();for(let e of t)e.k();return this}equalsApprox(t){if(!(t instanceof wt))return!1;if(this.type!==t.type)return this.type===1&&t.type===4?this.qL(t):t.type===1&&this.type===4?t.qL(this):!1;if(this.type===4){let e=this.figures.r,i=t.figures.r,s=e.length;if(s!==i.length)return!1;for(let n=0;n<s;n++){let o=e[n],r=i[n];if(!o.equalsApprox(r))return!1}return!0}else return C.c(this.startX,t.startX)&&C.c(this.startY,t.startY)&&C.c(this.endX,t.endX)&&C.c(this.endY,t.endY)}qL(t){if(this.type!==1||t.type!==4)return!1;if(t.figures.count===1){let e=t.figures.elt(0);if(e.segments.count===1&&C.c(this.startX,e.startX)&&C.c(this.startY,e.startY)){let i=e.segments.elt(0);if(i.type===2&&C.c(this.endX,i.endX)&&C.c(this.endY,i.endY))return!0}}return!1}static stringify(t){return t.toString()}static stringifyFixed(t){return m.s(t,"number",wt,"stringifyFixed:digits"),e=>e.toString(t)}fe(t){t in Ve?this.type=t:m.ur(this,t)}toString(t){t===void 0&&(t=-1);let e=s=>s===0?"0":s.toFixed(t),i;switch(this.type){case 1:return t<0?"M"+this.startX.toString()+" "+this.startY.toString()+"L"+this.endX.toString()+" "+this.endY.toString():"M"+e(this.startX)+" "+e(this.startY)+"L"+e(this.endX)+" "+e(this.endY);case 2:return i=new I(this.startX,this.startY,0,0),i.union(this.endX,this.endY,0,0),t<0?"M"+i.x.toString()+" "+i.y.toString()+"H"+i.right.toString()+"V"+i.bottom.toString()+"H"+i.left.toString()+"z":"M"+e(i.x)+" "+e(i.y)+"H"+e(i.right)+"V"+e(i.bottom)+"H"+e(i.left)+"z";case 3:if(i=new I(this.startX,this.startY,0,0),i.union(this.endX,this.endY,0,0),t<0){let r=i.left.toString()+" "+(i.y+i.height/2).toString(),a=i.right.toString()+" "+(i.y+i.height/2).toString();return"M"+r+"A"+(i.width/2).toString()+" "+(i.height/2).toString()+" 0 0 1 "+a+"A"+(i.width/2).toString()+" "+(i.height/2).toString()+" 0 0 1 "+r}else{let r=e(i.left)+" "+e(i.y+i.height/2),a=e(i.right)+" "+e(i.y+i.height/2);return"M"+r+"A"+e(i.width/2)+" "+e(i.height/2)+" 0 0 1 "+a+"A"+e(i.width/2)+" "+e(i.height/2)+" 0 0 1 "+r}case 4:let s="",n=this.figures.r,o=n.length;for(let r=0;r<o;r++){let a=n[r];r>0&&(s+=" x "),a.isFilled&&(s+="F "),s+=a.toString(t)}return s;default:return Ve[this.type]}}static fillPath(t){typeof t!="string"&&m.si(t,"string",wt,"fillPath:str");let e=t.split(/[Xx]/),i=e.length,s="";for(let n=0;n<i;n++){let o=e[n];if(o.match(/[Ff]/)!==null){n===0?s+=o:s+="X"+(o[0]===" "?"":" ")+o;continue}s+=(n===0?"":"X ")+"F"+(o[0]===" "?"":" ")+o}return s}static cm="UuBbMmZzLlHhVvCcSsQqTtAaFfXx";static parse(t,e){e===void 0&&(e=!1),typeof t!="string"&&m.si(t,"string",wt,"parse:str");let i=new RegExp("(["+wt.cm+"])(["+wt.cm+"])","gm"),s=new RegExp("(["+wt.cm+"])([^s])","gm"),n=new RegExp("([^s])(["+wt.cm+"])","gm");t=t.replace(/,/gm," "),t=t.replace(i,"$1 $2"),t=t.replace(i,"$1 $2"),t=t.replace(s,"$1 $2"),t=t.replace(n,"$1 $2"),t=t.replace(/([0-9])([+\-])/gm,"$1 $2"),t=t.replace(/[\s\r\t\n]+/gm," "),t=t.replace(/^\s+|\s+$/g,"");let o=t.split(" ");for(let F=0;F<o.length;F++){let O=o[F];if(O.match(/(\.[0-9]*)(\.)/gm)!==null){let E=m.st(),B="",X=!1;for(let z=0;z<O.length;z++){let U=O[z];U==="."&&!X?(X=!0,B+=U):U==="."?(E.push(B),B="."):B+=U}E.push(B),o.splice(F,1);for(let z=0;z<E.length;z++)o.splice(F+z,0,E[z]);F+=E.length-1,m.Z(E)}}let r=-1,a="",h="",l=new P(0,0),u=new P(0,0),c=new P(0,0),d=!0;function f(){return r>=w-1||o[r+1].match(M)!==null?!0:(d=!1,!1)}function p(){return r++,o[r]}function g(F){let O=parseFloat(p()),E=parseFloat(p());a===a.toLowerCase()&&(O=c.x+O,E=c.y+E),F.e(O,E)}function y(){return g(c),c}function b(){return g(u),u}function v(){let F=h.toLowerCase();return F==="c"||F==="s"||F==="q"||F==="t"?new P(2*c.x-u.x,2*c.y-u.y):new P(c.x,c.y)}let w=o.length,k=Ne.jL(null),S=!1,N=!1,D=!1,L=!0,M=new RegExp("["+wt.cm+"]");for(;!(r>=w-1);){if(h=a,a=p(),a==="")continue;d=!0;let F=!1;switch(a.toUpperCase()){case"X":L=!0,S=!1,N=!1;break;case"M":let O=y();for(k.Ne===null||L===!0?(k.Au(O.x,O.y,S,!1,!N,D),L=!1):k.ZF(O.x,O.y),l.h(c);!f();){let E=y();k.Ks(E.x,E.y)}break;case"L":for(;!f();){let E=y();k.Ks(E.x,E.y)}d&&(F=!0);break;case"H":for(;!f();)c.e((a===a.toLowerCase()?c.x:0)+parseFloat(p()),c.y),k.Ks(c.x,c.y);break;case"V":for(;!f();)c.e(c.x,(a===a.toLowerCase()?c.y:0)+parseFloat(p())),k.Ks(c.x,c.y);d&&(F=!0);break;case"C":for(;!f();){let E=new P;g(E);let B=b(),X=y();k.wr(E.x,E.y,B.x,B.y,X.x,X.y)}d&&(F=!0);break;case"S":for(;!f();){let E=v(),B=b(),X=y();k.wr(E.x,E.y,B.x,B.y,X.x,X.y)}d&&(F=!0);break;case"Q":for(;!f();){let E=b(),B=y();k.Tu(E.x,E.y,B.x,B.y)}d&&(F=!0);break;case"T":for(;!f();){let E=v();u.h(E);let B=y();k.Tu(E.x,E.y,B.x,B.y),u.h(B)}d&&(F=!0);break;case"B":for(;!f();){let E=parseFloat(p()),B=parseFloat(p()),X=parseFloat(p()),z=parseFloat(p()),U=parseFloat(p()),tt=U,st=!1;f()||(tt=parseFloat(p()),f()||(st=parseFloat(p())!==0)),a===a.toLowerCase()&&(X+=c.x,z+=c.y),k.QF(E,B,X,z,U,tt,st)}d&&(F=!0);break;case"A":for(;!f();){let E=Math.abs(parseFloat(p())),B=Math.abs(parseFloat(p())),X=parseFloat(p()),z=!1,U=!1,tt=0,st=0,Z=p();Z.length===1?(z=!!parseFloat(Z),U=!!parseFloat(p()),tt=parseFloat(p()),st=parseFloat(p())):Z.length===2?(z=!!parseFloat(Z[0]),U=!!parseFloat(Z[1]),tt=parseFloat(p()),st=parseFloat(p())):(z=!!parseFloat(Z[0]),U=!!parseFloat(Z[1]),tt=parseFloat(Z.slice(2)),st=parseFloat(p())),a===a.toLowerCase()&&(tt=c.x+tt,st=c.y+st),c.e(tt,st),k._F(E,B,X,z,U,tt,st)}d&&(F=!0);break;case"Z":k.tR(),c.h(l);break;case"F":{let E="",B=1;for(;o[r+B];){if(o[r+B]==="0"){D=!0,B++;continue}if(o[r+B].match(/[Uu]/)!==null){B++;continue}if(o[r+B].match(M)===null){B++;continue}E=o[r+B];break}E.match(/[Mm]/)?S=!0:k.eR();break}case"U":{let E="",B=1;for(;o[r+B];){if(o[r+B].match(/[Ff]/)!==null){B++;continue}if(o[r+B].match(M)===null){B++;continue}E=o[r+B];break}E.match(/[Mm]/)?N=!0:k.iR(!1);break}default:if(a==="0"||a==="1")break;m.ne("Unknown geometry command: "+a);break}if(F){m.ne(`Bad geometry command: ${a}, next token: ${p()},
2
+ import{b as un}from"./KCEVE53E.js";import b from"./PVM4ETZ7.js";import a from"./QKJ4PGBO.js";import"./2B4SGB3I.js";import"./YKQDHR27.js";import"./J75MHJID.js";import{a as ln}from"./R67EKKSL.js";import"./BVWAUO73.js";import"./K3DQKY7V.js";import"./TEHBW75B.js";import"./ALSK2SPM.js";import"./ZCU2WWVN.js";import"./WGO4EVOV.js";import"./3IHLJADI.js";import"./BMBNSJZQ.js";import"./5HZMUGQD.js";import"./5VDDAINK.js";import"./Z4F2NZOT.js";import"./KOIDWEP3.js";import"./3KXMYZCU.js";import"./LPBP7CBN.js";import"./3FMOO3PJ.js";import"./XQQ52NKX.js";import"./JUUVYK2H.js";import"./DKD2EGQP.js";import"./4HFHJOS3.js";import"./45M33Q5G.js";import"./FES7B3SJ.js";import{b as hn}from"./KIUBUHVM.js";import{E as ms,F as ps,G as an,h as on,i as rn}from"./H5E6ISYP.js";import"./QPIMTXPL.js";export default $arcgis.t(([])=>{(function(){let K=typeof globalThis=="object"&&globalThis||typeof global=="object"&&global.global===global&&global||typeof self=="object"&&self.self===self&&self||{};K.requestAnimationFrame===void 0&&(K.setImmediate===void 0?K.requestAnimationFrame=x=>K.setTimeout(x,0):K.requestAnimationFrame=K.setImmediate);class m{static fr=K.navigator!==void 0&&K.navigator.platform!==void 0&&K.navigator.platform.match(/(iPhone|iPod|iPad|Mac)/i)!==null;static PP(t,e,i){let s=-1;return function(){let n=this,o=arguments;s!==-1&&m.yc(s),s=m.dn(()=>{s=-1,i||t.apply(n,o)},e),i&&!s&&t.apply(n,o)}}static dn(t,e){return K.setTimeout(t,e)}static yc(t){K.clearTimeout(t)}static Ci(t){return K.document.createElement(t)}static o(t){throw new Error(t)}static L(t,e){let i="The object is frozen, so its properties cannot be set: "+t.toString();e!==void 0&&(i+=" to value: "+e),m.o(i)}static se(t,e,i,s){}static s(t,e,i,s){}static LU(t,e,i){}static wc(t,e,i){if(t===null||typeof t!="object"){let s=m.LL(e);i!==void 0&&(s+="."+i),m.si(t,"object",s)}}static S(t,e,i){m.s(t,"function",e,i)}static AU(t,e,i){}static si(t,e,i,s){}static J(t,e,i,s){let n=m.LL(i);s!==void 0&&(n+="."+s),m.o(n+" is not in the range "+e+": "+t)}static Yi(t){}static ur(t,e){}static ne(t){K.console&&K.console.log(t)}static $(t){return t!==null&&typeof t=="object"}static it(t){return typeof t=="function"}static SP=[];static st(){let t=m.SP.pop();return t===void 0?[]:t}static Z(t){t.length=0,m.SP.push(t)}static TU=Object.freeze([]);static LL(t){return t===null?"*":typeof t=="string"?t:m.it(t)?t.name:""}static Yn(t){return m.it(t)?t.className?t.className:t.name:m.$(t)&&t.constructor?m.Yn(t.constructor):typeof t}static Ja(t,e){return e==null||e===""?null:m.$(t)&&e in t||t[e]?t[e]:null}static toString(t){let e=t;return m.$(t)&&(t.text?e=t.text:t.name?e=t.name:t.key!==void 0?e=t.key:t.id!==void 0?e=t.id:t.constructor===Object&&(t.Text?e=t.Text:t.Name?e=t.Name:t.Key!==void 0?e=t.Key:t.Id!==void 0?e=t.Id:t.ID!==void 0&&(e=t.ID))),e===void 0?"undefined":e===null?"null":e.toString()}static Gw(t,e){if(t.hasOwnProperty(e))return!0;let i=Object.getPrototypeOf(t);for(;i&&i!==Function;){if(i.hasOwnProperty(e))return!0;let s=i.DU;if(s&&s[e])return!0;i=Object.getPrototypeOf(i)}return!1}static XF(t){let e=[],i=0;for(i=0;i<256;i++)e[i]=i;let s=0,n=0;for(i=0;i<256;i++)s=(s+e[i]+119)%256,n=e[i],e[i]=e[s],e[s]=n;i=0,s=0;let o="";for(let r=0;r<t.length;r++)i=(i+1)%256,s=(s+e[i])%256,n=e[i],e[i]=e[s],e[s]=n,o+=String.fromCharCode(t.charCodeAt(r)^e[(e[i]+e[s])%256]);return o}static GF(t){let e="0123456789abcdef",i=[];for(let r=0;r<256;r++)i[e.charAt(r>>4)+e.charAt(r&15)]=String.fromCharCode(r);t.length%2&&(t="0"+t);let s=[],n=0;for(let r=0;r<t.length;r+=2)s[n++]=i[t.substring(r,r+2)];let o=s.join("");return o===""?"0":o}static We(t){return m.XF(m.GF(t))}static color1="@COLOR1";static color2="@COLOR2";static Yw="32ab5ff3b26f42dc0ed90f21422913b5"}m.vfo="29e647fdba";class at{MP;constructor(){this.MP=[]}toString(){return this.MP.join("")}add(t){t!==""&&this.MP.push(t)}}class yt{}class Pt{g;constructor(){this.g=[]}[Symbol.iterator](){return this.g.values()}key;value;get iterator(){return this}reset(){}next(){return!1}hasNext(){return!1}first(){return null}any(){return!1}all(){return!0}each(){return this}map(t){return this}filter(){return this}get count(){return 0}Nl(){}toString(){return"EmptyIterator"}static instance=new Pt}class ut{constructor(t){this.key=-1,this.value=t}[Symbol.iterator](){return[this.value].values()}key;value;get iterator(){return this}reset(){this.key=-1}next(){return this.key===-1?(this.key=0,!0):!1}hasNext(){return this.next()}first(){return this.key=0,this.value}any(t){return this.key=-1,t(this.value)}all(t){return this.key=-1,t(this.value)}each(t){return this.key=-1,t(this.value),this}map(t){return new ut(t(this.value))}filter(t){return t(this.value)?new ut(this.value):Pt.instance}get count(){return 1}Nl(){this.value=null}toString(){return"SingletonIterator("+this.value+")"}}class ct{qt;Xs;Gt;Tt;constructor(t){this.qt=t,this.Xs=null,t.dr=null,this.Gt=t.rt,this.Tt=-1}[Symbol.iterator](){return this.Xs===null?this.qt.r.values():this.qt.r.filter(this.Xs).values()}key;value;get iterator(){return this}get predicate(){return this.Xs}set predicate(t){this.Xs=t}reset(){let t=this.qt;t.dr=null,this.Gt=t.rt,this.Tt=-1}next(){let t=this.qt;if(t.rt!==this.Gt){if(this.key<0)return!1;m.Yi(t)}let e=t.r,i=e.length,s=++this.Tt,n=this.Xs;if(n!==null)for(;s<i;){let o=e[s];if(n(o))return this.Tt=s,this.key=s,this.value=o,!0;s++}else{if(s<i)return this.key=s,this.value=e[s],!0;this.Nl()}return!1}hasNext(){return this.next()}first(){let t=this.qt;this.Gt=t.rt,this.Tt=0;let e=t.r,i=e.length,s=this.Xs;if(s!==null){let n=0;for(;n<i;){let o=e[n];if(s(o))return this.Tt=n,this.key=n,this.value=o,o;n++}return null}else if(i>0){let n=e[0];return this.key=0,this.value=n,n}else return null}any(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=e.r,n=s.length,o=this.Xs;for(let r=0;r<n;r++){let a=s[r];if(!(o!==null&&!o(a))){if(t(a))return!0;e.rt!==i&&m.Yi(e)}}return!1}all(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=e.r,n=s.length,o=this.Xs;for(let r=0;r<n;r++){let a=s[r];if(!(o!==null&&!o(a))){if(!t(a))return!1;e.rt!==i&&m.Yi(e)}}return!0}each(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=e.r,n=s.length,o=this.Xs;for(let r=0;r<n;r++){let a=s[r];o!==null&&!o(a)||(t(a),e.rt!==i&&m.Yi(e))}return this}map(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=[],n=e.r,o=n.length,r=this.Xs;for(let h=0;h<o;h++){let l=n[h];r!==null&&!r(l)||(s.push(t(l)),e.rt!==i&&m.Yi(e))}let a=new q;return a.r=s,a.Ki(),a.iterator}filter(t){let e=this.qt;e.dr=null;let i=e.rt;this.Tt=-1;let s=[],n=e.r,o=n.length,r=this.Xs;for(let h=0;h<o;h++){let l=n[h];r!==null&&!r(l)||(t(l)&&s.push(l),e.rt!==i&&m.Yi(e))}let a=new q;return a.r=s,a.Ki(),a.iterator}get count(){let t=this.Xs;if(t!==null){let e=0,i=this.qt.r,s=i.length;for(let n=0;n<s;n++)t(i[n])&&e++;return e}else return this.qt.r.length}Nl(){this.key=-1,this.value=null,this.Gt=-1,this.Xs=null,this.qt.dr=this}toString(){return"ListIterator@"+this.Tt+"/"+this.qt.count}}class kt{qt;Gt;Tt;constructor(t){this.qt=t,t.gr=null,this.Gt=t.rt,this.Tt=t.r.length}[Symbol.iterator](){return this.qt.r.reverse().values()}key;value;get iterator(){return this}reset(){let t=this.qt;t.gr=null,this.Gt=t.rt,this.Tt=t.r.length}next(){let t=this.qt;if(t.rt!==this.Gt){if(this.key<0)return!1;m.Yi(t)}let e=--this.Tt;return e>=0?(this.key=e,this.value=t.r[e],!0):(this.Nl(),!1)}hasNext(){return this.next()}first(){let t=this.qt;this.Gt=t.rt;let e=t.r,i=e.length-1;if(this.Tt=i,i>=0){let s=e[i];return this.key=i,this.value=s,s}else return null}any(t){let e=this.qt;e.gr=null;let i=e.rt,s=e.r,n=s.length;this.Tt=n;for(let o=n-1;o>=0;o--){let r=s[o];if(t(r))return!0;e.rt!==i&&m.Yi(e)}return!1}all(t){let e=this.qt;e.gr=null;let i=e.rt,s=e.r,n=s.length;this.Tt=n;for(let o=n-1;o>=0;o--){let r=s[o];if(!t(r))return!1;e.rt!==i&&m.Yi(e)}return!0}each(t){let e=this.qt;e.gr=null;let i=e.rt,s=e.r,n=s.length;this.Tt=n;for(let o=n-1;o>=0;o--){let r=s[o];t(r),e.rt!==i&&m.Yi(e)}return this}map(t){let e=this.qt;e.gr=null;let i=e.rt,s=[],n=e.r,o=n.length;this.Tt=o;for(let a=o-1;a>=0;a--){let h=n[a];s.push(t(h)),e.rt!==i&&m.Yi(e)}let r=new q;return r.r=s,r.Ki(),r.iterator}filter(t){let e=this.qt;e.gr=null;let i=e.rt,s=[],n=e.r,o=n.length;this.Tt=o;for(let a=o-1;a>=0;a--){let h=n[a];t(h)&&s.push(h),e.rt!==i&&m.Yi(e)}let r=new q;return r.r=s,r.Ki(),r.iterator}get count(){return this.qt.r.length}Nl(){this.key=-1,this.value=null,this.Gt=-1,this.qt.gr=this}toString(){return"ListIteratorBackwards("+this.Tt+"/"+this.qt.count+")"}}class q{u;r;rt;dr;gr;constructor(t){V.Je(this),this.u=!1,this.r=[],this.rt=0,this.dr=null,this.gr=null,t!==void 0&&this.addAll(t)}[Symbol.iterator](){return this.r.values()}Ki(){let t=this.rt;t++,t>999999999&&(t=0),this.rt=t}k(){return this.u=!0,this}ce(){return this.u=!1,this}toString(){return"List()#"+V.xs(this)}add(t){return this.u&&m.L(this,t),this.r.push(t),this.Ki(),this}push(t){this.add(t)}addAll(t){if(t===null)return this;this.u&&m.L(this);let e=this.r;if(t.first){let i=t.iterator;for(;i.next();)e.push(i.value)}else for(let i of t)e.push(i);return this.Ki(),this}clear(){this.u&&m.L(this),this.r.length=0,this.Ki()}contains(t){return this.has(t)}has(t){return t===null?!1:this.r.indexOf(t)!==-1}indexOf(t){return t===null?-1:this.r.indexOf(t)}elt(t){let e=this.r;return(t<0||t>=e.length)&&m.J(t,"0 <= i < length",q,"elt:i"),e[t]}get(t){return this.elt(t)}setElt(t,e){let i=this.r;(t<0||t>=i.length)&&m.J(t,"0 <= i < length",q,"setElt:i"),this.u&&m.L(this,t),i[t]=e}set(t,e){this.setElt(t,e)}first(){let t=this.r;return t.length===0?null:t[0]}last(){let t=this.r,e=t.length;return e>0?t[e-1]:null}pop(){this.u&&m.L(this);let t=this.r;if(t.length>0){let e=t.pop();return e===void 0?null:e}return null}any(t){let e=this.r,i=this.rt,s=e.length;for(let n=0;n<s;n++){if(t(e[n]))return!0;this.rt!==i&&m.Yi(this)}return!1}all(t){let e=this.r,i=this.rt,s=e.length;for(let n=0;n<s;n++){if(!t(e[n]))return!1;this.rt!==i&&m.Yi(this)}return!0}each(t){let e=this.r,i=this.rt,s=e.length;for(let n=0;n<s;n++)t(e[n]),this.rt!==i&&m.Yi(this);return this}map(t){let e=new q,i=[],s=this.r,n=this.rt,o=s.length;for(let r=0;r<o;r++)i.push(t(s[r])),this.rt!==n&&m.Yi(this);return e.r=i,e.Ki(),e}filter(t){let e=new q,i=[],s=this.r,n=this.rt,o=s.length;for(let r=0;r<o;r++){let a=s[r];t(a)&&i.push(a),this.rt!==n&&m.Yi(this)}return e.r=i,e.Ki(),e}insertAt(t,e){t<0&&m.J(t,">= 0",q,"insertAt:i"),this.u&&m.L(this,t);let i=this.r;t>=i.length?i.push(e):i.splice(t,0,e),this.Ki()}remove(t){return this.delete(t)}delete(t){if(t===null)return!1;this.u&&m.L(this,t);let e=this.r,i=e.indexOf(t);return i===-1?!1:(i===e.length-1?e.pop():e.splice(i,1),this.Ki(),!0)}removeAt(t){let e=this.r;(t<0||t>=e.length)&&m.J(t,"0 <= i < length",q,"removeAt:i"),this.u&&m.L(this,t),t===e.length-1?e.pop():e.splice(t,1),this.Ki()}removeRange(t,e){let i=this.r,s=i.length;if(t<0)t=0;else if(t>=s)return this;if(e<0)return this;if(e>=s&&(e=s-1),t>e)return this;this.u&&m.L(this);let n=t,o=e+1;for(;o<s;)i[n++]=i[o++];return i.length=s-(e-t+1),this.Ki(),this}copy(){let t=new q,e=this.r;return e.length>0&&(t.r=Array.prototype.slice.call(e)),t}toArray(){let t=this.r,e=this.count,i=new Array(e);for(let s=0;s<e;s++)i[s]=t[s];return i}get AL(){return this.r}toSet(){let t=new V,e=this.r,i=this.count;for(let s=0;s<i;s++)t.add(e[s]);return t}sort(t){return this.u&&m.L(this),this.r.sort(t),this.Ki(),this}sortRange(t,e,i){let s=this.r,n=s.length;e===void 0&&(e=0),i===void 0&&(i=n),this.u&&m.L(this);let o=i-e;if(o<=1)return this;if((e<0||e>=n-1)&&m.J(e,"0 <= from < length",q,"sortRange:from"),o===2){let r=s[e],a=s[e+1];return t(r,a)>0&&(s[e]=a,s[e+1]=r,this.Ki()),this}if(e===0)if(i>=n)s.sort(t);else{let r=s.slice(0,i);r.sort(t);for(let a=0;a<i;a++)s[a]=r[a]}else if(i>=n){let r=s.slice(e);r.sort(t);for(let a=e;a<n;a++)s[a]=r[a-e]}else{let r=s.slice(e,i);r.sort(t);for(let a=e;a<i;a++)s[a]=r[a-e]}return this.Ki(),this}reverse(){return this.u&&m.L(this),this.r.reverse(),this.Ki(),this}get count(){return this.r.length}get size(){return this.r.length}get length(){return this.r.length}get iterator(){if(this.r.length<=0)return Pt.instance;let t=this.dr;return t!==null?(t.reset(),t):new ct(this)}get iteratorBackwards(){if(this.r.length<=0)return Pt.instance;let t=this.gr;return t!==null?(t.reset(),t):new kt(this)}}class _t{To;oe;constructor(t){this.To=t,this.oe=t.g.values()}[Symbol.iterator](){return this.To.g.values()}key;value;get iterator(){return this}reset(){let t=this.To;this.oe=t.g.values()}next(){let t=this.oe.next();return this.value=t.value,this.key=t.value,!t.done}hasNext(){return this.next()}first(){return this.To.g.size===0?null:(this.oe=this.To.g.values(),this.oe.next().value)}any(t){return this.To.any(t)}all(t){return this.To.all(t)}each(t){return this.To.each(t),this}map(t){let e=new q;return this.To.g.forEach(i=>e.add(t(i))),e.iterator}filter(t){let e=new q;return this.To.g.forEach(i=>{t(i)&&e.add(i)}),e.iterator}get count(){return this.To.count}Nl(){this.key=null,this.value=null,this.oe=null}toString(){return"SetIterator"}}class V{u;g;constructor(t){this.u=!1,this.g=new Set,t!==void 0&&this.addAll(t)}[Symbol.iterator](){return this.g.values()}values(){return this.g.values()}k(){return this.u=!0,this}ce(){return this.u=!1,this}toString(){return"Set()#"+V.xs(this)}add(t){return t===null?this:(this.g.add(t),this)}addAll(t){if(t===null)return this;if(this.u&&m.L(this),t.first){let e=t.iterator;for(;e.next();)this.g.add(e.value)}else for(let e of t)this.g.add(e);return this}has(t){return this.g.has(t)}contains(t){return this.has(t)}containsAll(t){if(t===null)return!0;if(t.first){let e=t.iterator;for(;e.next();)if(!this.has(e.value))return!1}else for(let e of t)if(!this.has(e))return!1;return!0}containsAny(t){if(t===null)return!0;if(t.first){let e=t.iterator;for(;e.next();)if(this.has(e.value))return!0}else for(let e of t)if(this.has(e))return!0;return!1}first(){return this.g.size===0?null:this.g.values().next().value}any(t){for(let e of this.g)if(t(e))return!0;return!1}all(t){for(let e of this.g)if(!t(e))return!1;return!0}each(t){for(let e of this.g)t(e);return this}map(t){let e=new V;for(let i of this.g)e.add(t(i));return e}filter(t){let e=new V;for(let i of this.g)t(i)&&e.add(i);return e}delete(t){return this.u&&m.L(this),this.g.delete(t)}remove(t){return this.delete(t)}removeAll(t){if(t===null)return this;if(this.u&&m.L(this),t.first){let e=t.iterator;for(;e.next();)this.delete(e.value)}else for(let e of t)this.delete(e);return this}retainAll(t){if(t===null)return this;if(this.count===0)return this;this.u&&m.L(this);let e=new V;e.addAll(t);let i=[];if(t.first){let s=t.iterator;for(;s.next();){let n=s.value;e.has(n)||i.push(n)}}else for(let s of t)e.has(s)||i.push(s);return this.removeAll(i),this}clear(){this.u&&m.L(this),this.g.clear()}copy(){let t=new V;return this.g.forEach(e=>t.add(e)),t}toArray(){return Array.from(this.g)}toList(){let t=new q;return this.g.forEach(e=>t.add(e)),t}get count(){return this.g.size}get size(){return this.g.size}get iterator(){return this.g.size<=0?Pt.instance:new _t(this)}entries(){return this.g.entries()}keys(){return this.g.keys()}forEach(t,e){return this.g.forEach(t,e)}static Kw=1;static Je(t){t.__gohashid=V.Kw++}static xs(t){return t.__gohashid}}class We{j;oe;constructor(t){this.j=t,this.oe=t.g.keys()}[Symbol.iterator](){return this.j.g.keys()}key;value;get iterator(){return this}reset(){let t=this.j;this.oe=t.g.keys()}next(){let t=this.oe.next();return this.value=t.value,this.key=t.value,!t.done}hasNext(){return this.next()}first(){return this.j.g.size===0?null:(this.oe=this.j.g.keys(),this.oe.next().value)}any(t){for(let e of this.j.g)if(t(e[0]))return!0;return!1}all(t){for(let e of this.j.g)if(!t(e[0]))return!1;return!0}each(t){for(let e of this.j.g)t(e[0]);return this}map(t){let e=this.j,i=new q;for(let s of e.g)i.add(t(s[0]));return i.iterator}filter(t){let e=this.j,i=new q;for(let s of e.g){let n=s[0];t(n)&&i.add(n)}return i.iterator}get count(){return this.j.size}Nl(){this.key=null,this.value=null,this.oe=null}toString(){return"MapKeySetIterator"}}class Oi extends V{j;constructor(t){super(),V.Je(this),this.u=!0,this.j=t}[Symbol.iterator](){return this.g.keys()}values(){return this.g.keys()}k(){return this}ce(){return this}toString(){return"MapKeySet("+this.j.toString()+")"}add(t){m.o("This Set is read-only: "+this.toString())}has(t){return this.j.has(t)}contains(t){return this.has(t)}delete(t){m.o("This Set is read-only: "+this.toString())}remove(t){return this.delete(t)}clear(){m.o("This Set is read-only: "+this.toString())}first(){return this.j.g.size===0?null:this.j.g.keys().next().value}any(t){for(let e of this.j.g)if(t(e[0]))return!0;return!1}all(t){for(let e of this.j.g)if(!t(e[0]))return!1;return!0}each(t){for(let e of this.j.g)t(e[0]);return this}map(t){let e=new V;for(let i of this.j.g)e.add(t(i[0]));return e}filter(t){let e=new V;for(let i of this.j.g){let s=i[0];t(s)&&e.add(s)}return e}copy(){return new Oi(this.j)}toSet(){let t=new V,e=this.j.g;for(let i of e)t.add(i[0]);return t}toArray(){let t=this.j.g,e=new Array(t.size),i=0;for(let s of t)e[i]=s[0],i++;return e}toList(){let t=new q,e=this.j.g;for(let i of e)t.add(i[0]);return t}get count(){return this.j.size}get size(){return this.j.size}get iterator(){return this.j.size<=0?Pt.instance:new We(this.j)}}class Tn{j;oe;constructor(t){this.j=t,this.oe=t.g.values()}[Symbol.iterator](){return this.j.g.values()}key;value;get iterator(){return this}reset(){let t=this.j;this.oe=t.g.values()}next(){let t=this.oe.next();return this.value=t.value,this.key=t.value,!t.done}hasNext(){return this.next()}first(){return this.j.g.size===0?null:(this.oe=this.j.g.values(),this.oe.next().value)}any(t){for(let e of this.j.g)if(t(e[1]))return!0;return!1}all(t){for(let e of this.j.g)if(!t(e[1]))return!1;return!0}each(t){for(let e of this.j.g)t(e[1]);return this}map(t){let e=this.j,i=new q;for(let s of e.g)i.add(t(s[1]));return i.iterator}filter(t){let e=this.j,i=new q;for(let s of e.g){let n=s[1];t(n)&&i.add(n)}return i.iterator}get count(){return this.j.size}Nl(){this.key=null,this.value=null,this.oe=null}toString(){return"MapValueSetIterator"}}class ye{constructor(t,e){this.key=t,this.value=e}toString(){return"{"+this.key+":"+this.value+"}"}key;value}class Ln{j;oe;constructor(t){this.j=t,this.oe=t.g.entries()}[Symbol.iterator](){return this.j.g.entries()}key;value;get iterator(){return this}reset(){let t=this.j;this.oe=t.g.entries()}next(){let t=this.oe.next();return t.done?(this.key=null,this.value=null,!1):(this.key=t.value[0],this.value=t.value[1],!0)}hasNext(){return this.next()}first(){if(this.j.g.size===0)return null;this.oe=this.j.g.entries();let t=this.oe.next().value;return this.key=t[0],this.value=t[1],new ye(t[0],t[1])}any(t){return this.j.any(t)}all(t){return this.j.all(t)}each(t){return this.j.each(t),this}map(t){let e=new q,i=null;return this.j.g.forEach((s,n)=>{i===null?i=new ye(n,s):(i.key=n,i.value=s),e.add(t(i))}),e.iterator}filter(t){let e=new q,i=null;return this.j.g.forEach((s,n)=>{i===null?i=new ye(n,s):(i.key=n,i.value=s),t(i)&&(e.add(i),i=null)}),e.iterator}get count(){return this.j.size}Nl(){this.key=null,this.value=null,this.oe=null}toString(){return"MapIterator"}}class Mt{u;g;constructor(t){V.Je(this),this.u=!1,this.g=new Map,t!==void 0&&this.addAll(t)}[Symbol.iterator](){return this.g.entries()}entries(){return this.g.entries()}k(){return this.u=!0,this}ce(){return this.u=!1,this}toString(){return"Map()#"+V.xs(this)}set(t,e){return this.u&&m.L(this,t),this.g.set(t,e),this}add(t,e){return this.set(t,e)}addAll(t){if(t===null)return this;if(this.u&&m.L(this),t instanceof Mt){let e=t.iterator;for(;e.next();)this.g.set(e.key,e.value)}else if(t.first){let e=t.iterator;for(;e.next();){let i=e.value;this.g.set(i.key,i.value)}}else for(let e of t){let i=e;Array.isArray(i)?this.g.set(i[0],i[1]):this.g.set(i.key,i.value)}return this}first(){if(this.g.size===0)return null;let t=this.g.entries().next().value;return t?new ye(t[0],t[1]):null}any(t){let e=null;for(let[i,s]of this.g)if(e===null?e=new ye(i,s):(e.key=i,e.value=s),t(e))return!0;return!1}all(t){let e=null;for(let[i,s]of this.g)if(e===null?e=new ye(i,s):(e.key=i,e.value=s),!t(e))return!1;return!0}each(t){let e=null;for(let[i,s]of this.g)e===null?e=new ye(i,s):(e.key=i,e.value=s),t(e);return this}map(t){let e=new Mt,i=null;for(let[s,n]of this.g)i===null?i=new ye(s,n):(i.key=s,i.value=n),e.set(s,t(i));return e}filter(t){let e=new Mt,i=null;for(let[s,n]of this.g)i===null?i=new ye(s,n):(i.key=s,i.value=n),t(i)&&e.set(s,n);return e}has(t){return this.g.has(t)}contains(t){return this.has(t)}get(t){let e=this.g.get(t);return e===void 0?null:e}getValue(t){return this.get(t)}delete(t){return t===null?!1:(this.u&&m.L(this,t),this.g.delete(t))}remove(t){return this.delete(t)}clear(){this.u&&m.L(this),this.g.clear()}copy(){let t=new Mt;return t.g=new Map(this.g),t}toArray(){let t=this.g,e=new Array(t.size),i=0;for(let s of t)e[i]=new ye(s[0],s[1]),i++;return e}toKeySet(){return new Oi(this)}get count(){return this.g.size}get size(){return this.g.size}get iterator(){return this.g.size<=0?Pt.instance:new Ln(this)}get iteratorKeys(){return this.count<=0?Pt.instance:new We(this)}keys(){return this.g.keys()}get iteratorValues(){return this.count<=0?Pt.instance:new Tn(this)}values(){return this.g.values()}forEach(t,e){return this.g.forEach(t,e)}}class P{px;py;u;constructor(t,e){t===void 0?(this.px=0,this.py=0):typeof t=="number"&&typeof e=="number"?(this.px=t,this.py=e):m.o("Invalid arguments to Point constructor: "+t+", "+e),this.u=!1}h(t){return this.px=t.px,this.py=t.py,this}e(t,e){return this.px=t,this.py=e,this}setTo(t,e){return this.px=t,this.py=e,this}set(t){return this.px=t.px,this.py=t.py,this}copy(){let t=new P;return t.px=this.px,t.py=this.py,t}kt(){return this.u=!0,Object.freeze(this),this}C(){return this.u||Object.isFrozen(this)?this:this.copy().k()}k(){return this.u||(this.u=!0),this}Hw(t){}static parse(t){if(typeof t=="string"){let e=t.split(" "),i=0,s=0;for(;e[i]==="";)i++;let n=e[i++];n&&(s=parseFloat(n));let o=0;for(;e[i]==="";)i++;return n=e[i++],n&&(o=parseFloat(n)),new P(s,o)}else return new P}static stringify(t){return t.x.toString()+" "+t.y.toString()}static stringifyFixed(t){return m.s(t,"number",P,"stringifyFixed:digits"),e=>e.x.toFixed(t)+" "+e.y.toFixed(t)}toString(){return"Point("+this.x+","+this.y+")"}equals(t){return t instanceof P?this.px===t.x&&this.py===t.y:!1}equalTo(t,e){return this.px===t&&this.py===e}equalsApprox(t){return C.c(this.px,t.x)&&C.c(this.py,t.y)}add(t){return this.px+=t.x,this.py+=t.y,this}subtract(t){return this.px-=t.x,this.py-=t.y,this}offset(t,e){return this.px+=t,this.py+=e,this}rotate(t){if(t===0)return this;let e=this.px,i=this.py;if(e===0&&i===0)return this;let s=0,n=0;if(t=C.Ee(t),t===90)s=0,n=1;else if(t===180)s=-1,n=0;else if(t===270)s=0,n=-1;else{let o=t*Math.PI/180;s=Math.cos(o),n=Math.sin(o)}return this.px=s*e-n*i,this.py=n*e+s*i,this}scale(t,e){return this.px*=t,this.py*=e,this}distanceSquaredPoint(t){let e=t.x-this.px,i=t.y-this.py;return e*e+i*i}distanceSquared(t,e){let i=t-this.px,s=e-this.py;return i*i+s*s}normalize(){let t=this.px,e=this.py,i=Math.sqrt(t*t+e*e);return i>0&&(this.px=t/i,this.py=e/i),this}directionPoint(t){return this.TL(t.x-this.px,t.y-this.py)}direction(t,e){return this.TL(t-this.px,e-this.py)}TL(t,e){if(t===0)return e>0?90:e<0?270:0;if(e===0)return t>0?0:180;{if(isNaN(t)||isNaN(e))return 0;let i=Math.atan(Math.abs(e/t))*180/Math.PI;return t<0?e<0?i+=180:i=180-i:e<0&&(i=360-i),i}}static compareWithLineSegment(t,e,i,s,n,o){return C.ku(t,e,i,s,n,o)}compareWithLineSegmentPoint(t,e){return C.ku(t.x,t.y,e.x,e.y,this.x,this.y)}static intersectingLineSegments(t,e,i,s,n,o,r,a){return C.Pu(t,e,i,s,n,o,r,a)}projectOntoLineSegment(t,e,i,s){return C.Ll(t,e,i,s,this.px,this.py,this),this}projectOntoLineSegmentPoint(t,e){return C.Ll(t.x,t.y,e.x,e.y,this.px,this.py,this),this}snapToGrid(t,e,i,s){return C._g(this.px,this.py,t,e,i,s,this),this}snapToGridPoint(t,e){return C._g(this.px,this.py,t.x,t.y,e.width,e.height,this),this}setRectSpot(t,e){return this.px=t.x+e.x*t.width+e.offsetX,this.py=t.y+e.y*t.height+e.offsetY,this}setSpot(t,e,i,s,n){return this.px=t+n.x*i+n.offsetX,this.py=e+n.y*s+n.offsetY,this}v(t){return t.gt(this),this}Hi(t){return t.Ni(this),this}static distanceLineSegmentSquared(t,e,i,s,n,o){let r=n-i,a=o-s,h=r*r+a*a,l=i-t,u=s-e,c=-l*r-u*a;if(c<=0||c>=h)return r=n-t,a=o-e,Math.min(l*l+u*u,r*r+a*a);{let d=r*u-a*l;return d*d/h}}static distanceSquared(t,e,i,s){let n=i-t,o=s-e;return n*n+o*o}static direction(t,e,i,s){let n=i-t,o=s-e;if(n===0)return o>0?90:o<0?270:0;if(o===0)return n>0?0:180;{if(isNaN(n)||isNaN(o))return 0;let r=Math.atan(Math.abs(o/n))*180/Math.PI;return n<0?o<0?r+=180:r=180-r:o<0&&(r=360-r),r}}get x(){return this.px}set x(t){this.px=t}get y(){return this.py}set y(t){this.py=t}isReal(){return isFinite(this.x)&&isFinite(this.y)}static gn=new P(0,0).kt();static DL=new P(-1/0,-1/0).kt();static vL=new P(1/0,1/0).kt();static FL=new P(6,6).kt();static mn=new P(NaN,NaN).kt();static qw=[];static l(){let t=P.qw.pop();return t===void 0?new P:t}static bs(t){let e=P.qw.pop();return e===void 0?t.copy():e.h(t)}static z(t,e){let i=P.qw.pop();return i===void 0?new P(t,e):(i.x=t,i.y=e,i)}static i(t){P.qw.push(t)}}class nt{sw;sh;u;constructor(t,e){t===void 0?(this.sw=0,this.sh=0):typeof t=="number"&&(t>=0||isNaN(t))&&typeof e=="number"&&(e>=0||isNaN(e))?(this.sw=t,this.sh=e):m.o("Invalid arguments to Size constructor: "+t+", "+e),this.u=!1}h(t){return this.sw=t.sw,this.sh=t.sh,this}e(t,e){return this.sw=t,this.sh=e,this}setTo(t,e){return this.sw=t,this.sh=e,this}set(t){return this.sw=t.sw,this.sh=t.sh,this}copy(){let t=new nt;return t.sw=this.sw,t.sh=this.sh,t}kt(){return this.u=!0,Object.freeze(this),this}C(){return this.u||Object.isFrozen(this)?this:this.copy().k()}k(){return this.u||(this.u=!0),this}Hw(t){}static parse(t){if(typeof t=="string"){let e=t.split(" "),i=0,s=0;for(;e[i]==="";)i++;let n=e[i++];n&&(s=parseFloat(n));let o=0;for(;e[i]==="";)i++;return n=e[i++],n&&(o=parseFloat(n)),new nt(s,o)}else return new nt}static stringify(t){return t.width.toString()+" "+t.height.toString()}static stringifyFixed(t){return m.s(t,"number",nt,"stringifyFixed:digits"),e=>e.width.toFixed(t)+" "+e.height.toFixed(t)}toString(){return"Size("+this.width+","+this.height+")"}equals(t){return t instanceof nt?this.sw===t.width&&this.sh===t.height:!1}equalTo(t,e){return this.sw===t&&this.sh===e}equalsApprox(t){return C.c(this.sw,t.width)&&C.c(this.sh,t.height)}inflate(t,e){let i=this.width+t;this.sw=i>=0?i:0;let s=this.height+e;return this.sh=s>=0?s:0,this}get width(){return this.sw}set width(t){t<0&&m.J(t,">= 0",nt,"width"),this.sw=t}get height(){return this.sh}set height(t){t<0&&m.J(t,">= 0",nt,"height"),this.sh=t}isReal(){return isFinite(this.width)&&isFinite(this.height)}static xc=new nt(0,0).kt();static CP=new nt(1,1).kt();static RL=new nt(6,6).kt();static Su=new nt(8,8).kt();static OL=new nt(10,10).kt();static NP=new nt(1/0,1/0).kt();static jw=new nt(NaN,NaN).kt();static IL=[];static l(){let t=nt.IL.pop();return t===void 0?new nt:t}static i(t){nt.IL.push(t)}}class I{rx;ry;rw;rh;u;constructor(t,e,i,s){if(t===void 0)this.rx=0,this.ry=0,this.rw=0,this.rh=0;else if(typeof t=="number"&&typeof e=="number"&&typeof i=="number"&&(i>=0||isNaN(i))&&typeof s=="number"&&(s>=0||isNaN(s)))this.rx=t,this.ry=e,this.rw=i,this.rh=s;else if(t instanceof P){let n=t.x,o=t.y;if(e instanceof P){let r=e.x,a=e.y;this.rx=Math.min(n,r),this.ry=Math.min(o,a),this.rw=Math.abs(n-r),this.rh=Math.abs(o-a)}else e instanceof nt?(this.rx=n,this.ry=o,this.rw=e.width,this.rh=e.height):m.o("Incorrect second argument supplied to Rect constructor "+e)}else m.o("Invalid arguments to Rect constructor: "+t+", "+e+", "+i+", "+s);this.u=!1}h(t){return this.rx=t.rx,this.ry=t.ry,this.rw=t.rw,this.rh=t.rh,this}e(t,e,i,s){return this.rx=t,this.ry=e,this.rw=i,this.rh=s,this}Kn(t,e){return this.rw=t,this.rh=e,this}setTo(t,e,i,s){return this.rx=t,this.ry=e,this.rw=i,this.rh=s,this}set(t){return this.rx=t.rx,this.ry=t.ry,this.rw=t.rw,this.rh=t.rh,this}setPoint(t){return this.rx=t.x,this.ry=t.y,this}setSize(t){return this.rw=t.width,this.rh=t.height,this}copy(){let t=new I;return t.rx=this.rx,t.ry=this.ry,t.rw=this.rw,t.rh=this.rh,t}kt(){return this.u=!0,Object.freeze(this),this}C(){return this.u||Object.isFrozen(this)?this:this.copy().k()}k(){return this.u||(this.u=!0),this}ce(){return this.u&&(Object.isFrozen(this)&&m.o("cannot thaw constant: "+this),this.u=!1),this}Hw(t){}static parse(t){if(typeof t=="string"){let e=t.split(" "),i=0,s=0;for(;e[i]==="";)i++;let n=e[i++];n&&(s=parseFloat(n));let o=0;for(;e[i]==="";)i++;n=e[i++],n&&(o=parseFloat(n));let r=0;for(;e[i]==="";)i++;n=e[i++],n&&(r=parseFloat(n));let a=0;for(;e[i]==="";)i++;return n=e[i++],n&&(a=parseFloat(n)),new I(s,o,r,a)}else return new I}static stringify(t){return t.x.toString()+" "+t.y.toString()+" "+t.width.toString()+" "+t.height.toString()}static stringifyFixed(t){return m.s(t,"number",I,"stringifyFixed:digits"),e=>e.x.toFixed(t)+" "+e.y.toFixed(t)+" "+e.width.toFixed(t)+" "+e.height.toFixed(t)}toString(){return"Rect("+this.x+","+this.y+","+this.width+","+this.height+")"}equals(t){return t instanceof I?this.rx===t.x&&this.ry===t.y&&this.rw===t.width&&this.rh===t.height:!1}equalTo(t,e,i,s){return this.rx===t&&this.ry===e&&this.rw===i&&this.rh===s}equalsApprox(t){return C.c(this.rx,t.x)&&C.c(this.ry,t.y)&&C.c(this.rw,t.width)&&C.c(this.rh,t.height)}equalsApproxTo(t,e,i,s){return C.c(this.rx,t)&&C.c(this.ry,e)&&C.c(this.rw,i)&&C.c(this.rh,s)}equalsApproxClose(t){return C.X(this.rx,t.x)&&C.X(this.ry,t.y)&&C.X(this.rw,t.width)&&C.X(this.rh,t.height)}containsPoint(t){return this.rx<=t.x&&this.rx+this.rw>=t.x&&this.ry<=t.y&&this.ry+this.rh>=t.y}containsRect(t){return this.rx<=t.x&&t.x+t.width<=this.rx+this.rw&&this.ry<=t.y&&t.y+t.height<=this.ry+this.rh}contains(t,e,i,s){return i===void 0&&(i=0),s===void 0&&(s=0),this.rx<=t&&t+i<=this.rx+this.rw&&this.ry<=e&&e+s<=this.ry+this.rh}offset(t,e){return this.rx+=t,this.ry+=e,this}inflate(t,e){return this.Ww(e,t,e,t)}addMargin(t){return this.Ww(t.top,t.right,t.bottom,t.left)}subtractMargin(t){return this.Ww(-t.top,-t.right,-t.bottom,-t.left)}grow(t,e,i,s){return this.Ww(t,e,i,s)}Ww(t,e,i,s){let n=this.rw;e+s<=-n?(this.rx+=n/2,this.rw=0):(this.rx-=s,this.rw+=e+s);let o=this.rh;return t+i<=-o?(this.ry+=o/2,this.rh=0):(this.ry-=t,this.rh+=t+i),this}intersectRect(t){return this.EL(t.x,t.y,t.width,t.height)}intersect(t,e,i,s){return this.EL(t,e,i,s)}EL(t,e,i,s){let n=Math.max(this.rx,t),o=Math.max(this.ry,e),r=Math.min(this.rx+this.rw,t+i),a=Math.min(this.ry+this.rh,e+s);return this.rx=n,this.ry=o,this.rw=Math.max(0,r-n),this.rh=Math.max(0,a-o),this}intersectsRect(t){return this.intersects(t.x,t.y,t.width,t.height)}intersects(t,e,i,s){let n=this.rw,o=this.rx;if(n!==1/0&&i!==1/0&&(n+=o,i+=t,isNaN(i)||isNaN(n)||o>i||t>n))return!1;let r=this.rh,a=this.ry;return!(r!==1/0&&s!==1/0&&(r+=a,s+=e,isNaN(s)||isNaN(r)||a>s||e>r))}UL(t,e){let i=this.rw,s=t.width+e+e,n=this.rx,o=t.x-e;if(i+=n,s+=o,n>s||o>i)return!1;let r=this.rh,a=t.height+e+e,h=this.ry,l=t.y-e;return r+=h,a+=l,!(h>a||l>r)}unionPoint(t){return this.re(t.x,t.y,0,0)}unionRect(t){return this.re(t.rx,t.ry,t.rw,t.rh)}union(t,e,i,s){return i===void 0&&(i=0),s===void 0&&(s=0),this.re(t,e,i,s)}re(t,e,i,s){let n=Math.min(this.rx,t),o=Math.min(this.ry,e),r=Math.max(this.rx+this.rw,t+i),a=Math.max(this.ry+this.rh,e+s);return this.rx=n,this.ry=o,this.rw=r-n,this.rh=a-o,this}setSpot(t,e,i){return this.rx=t-i.offsetX-i.x*this.rw,this.ry=e-i.offsetY-i.y*this.rh,this}nearestSideDirection(t,e){return C.Jw(this,t,e,!0)}nearestSideDirectionPoint(t){return C.Jw(this,t.x,t.y,!0)}static contains(t,e,i,s,n,o,r,a){return r===void 0&&(r=0),a===void 0&&(a=0),t<=n&&n+r<=t+i&&e<=o&&o+a<=e+s}static intersects(t,e,i,s,n,o,r,a){let h=i,l=r,u=t,c=n;if(h+=u,l+=c,u>l||c>h)return!1;let d=s,f=a,p=e,g=o;return d+=p,f+=g,!(p>f||g>d)}static intersectsLineSegment(t,e,i,s,n,o,r,a){return C.VL(t,e,i,s,n,o,r,a)}get x(){return this.rx}set x(t){this.rx=t}get y(){return this.ry}set y(t){this.ry=t}get width(){return this.rw}set width(t){t<0&&m.J(t,">= 0",I,"width"),this.rw=t}get height(){return this.rh}set height(t){t<0&&m.J(t,">= 0",I,"height"),this.rh=t}get left(){return this.rx}set left(t){this.rx=t}get top(){return this.ry}set top(t){this.ry=t}get right(){return this.rx+this.rw}set right(t){this.rx+=t-(this.rx+this.rw)}get bottom(){return this.ry+this.rh}set bottom(t){this.ry+=t-(this.ry+this.rh)}get position(){return new P(this.rx,this.ry)}set position(t){this.rx=t.x,this.ry=t.y}get size(){return new nt(this.rw,this.rh)}set size(t){this.rw=t.width,this.rh=t.height}get center(){return new P(this.rx+this.rw/2,this.ry+this.rh/2)}set center(t){this.rx=t.x-this.rw/2,this.ry=t.y-this.rh/2}get centerX(){return this.rx+this.rw/2}set centerX(t){this.rx=t-this.rw/2}get centerY(){return this.ry+this.rh/2}set centerY(t){this.ry=t-this.rh/2}isReal(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)}isEmpty(){return this.width===0&&this.height===0}static tm=new I(0,0,0,0).kt();static YF=new I(NaN,NaN,NaN,NaN).kt();static $w=[];static l(){let t=I.$w.pop();return t===void 0?new I:t}static bs(t){let e=I.$w.pop();return e===void 0?t.copy():e.h(t)}static z(t,e,i,s){let n=I.$w.pop();return n===void 0?new I(t,e,i,s):n.e(t,e,i,s)}static i(t){I.$w.push(t)}}class Dt{mt;mr;mb;ml;constructor(t,e,i,s){t===void 0?(this.mt=0,this.mr=0,this.mb=0,this.ml=0):e===void 0?(e=t,i=t,s=t,this.mt=t,this.mr=e,this.mb=i,this.ml=s):i===void 0?(i=t,s=e,this.mt=t,this.mr=e,this.mb=i,this.ml=s):s!==void 0?(this.mt=t,this.mr=e,this.mb=i,this.ml=s):m.o("Invalid arguments to Margin constructor: "+t+", "+e+", "+i+", "+s)}setTo(t,e,i,s){return this.mt=t,this.mr=e,this.mb=i,this.ml=s,this}set(t){return this.mt=t.mt,this.mr=t.mr,this.mb=t.mb,this.ml=t.ml,this}copy(){let t=new Dt;return t.mt=this.mt,t.mr=this.mr,t.mb=this.mb,t.ml=this.ml,t}kt(){return Object.freeze(this),this}C(){return Object.isFrozen(this)?this:this.copy().kt()}Hw(t){}static parse(t){if(typeof t=="string"){let e=t.split(" "),i=0,s=NaN;for(;e[i]==="";)i++;let n=e[i++];if(n&&(s=parseFloat(n)),isNaN(s))return new Dt;let o=NaN;for(;e[i]==="";)i++;if(n=e[i++],n&&(o=parseFloat(n)),isNaN(o))return new Dt(s);let r=NaN;for(;e[i]==="";)i++;if(n=e[i++],n&&(r=parseFloat(n)),isNaN(r))return new Dt(s,o);let a=NaN;for(;e[i]==="";)i++;return n=e[i++],n&&(a=parseFloat(n)),isNaN(a)?new Dt(s,o):new Dt(s,o,r,a)}else return new Dt}static stringify(t){return t.top.toString()+" "+t.right.toString()+" "+t.bottom.toString()+" "+t.left.toString()}static stringifyFixed(t){return m.s(t,"number",Dt,"stringifyFixed:digits"),e=>e.top.toFixed(t)+" "+e.right.toFixed(t)+" "+e.bottom.toFixed(t)+" "+e.left.toFixed(t)}toString(){return"Margin("+this.top+","+this.right+","+this.bottom+","+this.left+")"}equals(t){return t instanceof Dt?this.mt===t.top&&this.mr===t.right&&this.mb===t.bottom&&this.ml===t.left:!1}equalTo(t,e,i,s){return this.mt===t&&this.mr===e&&this.mb===i&&this.ml===s}equalsApprox(t){return C.c(this.mt,t.top)&&C.c(this.mr,t.right)&&C.c(this.mb,t.bottom)&&C.c(this.ml,t.left)}get top(){return this.mt}set top(t){this.mt=t}get right(){return this.mr}set right(t){this.mr=t}get bottom(){return this.mb}set bottom(t){this.mb=t}get left(){return this.ml}set left(t){this.ml=t}isReal(){return isFinite(this.top)&&isFinite(this.right)&&isFinite(this.bottom)&&isFinite(this.left)}static em=new Dt(0,0,0,0).kt();static BL=new Dt(2,2,2,2).kt()}class T{sx;sy;ox;oy;constructor(t,e,i,s){t===void 0?(this.sx=0,this.sy=0,this.ox=0,this.oy=0):(e===void 0&&(e=0),i===void 0&&(i=0),s===void 0&&(s=0),this.sx=t,this.sy=e,this.ox=i,this.oy=s)}setTo(t,e,i,s){return this.sx=t,this.sy=e,this.ox=i,this.oy=s,this}set(t){return this.sx=t.sx,this.sy=t.sy,this.ox=t.ox,this.oy=t.oy,this}copy(){let t=new T;return t.sx=this.sx,t.sy=this.sy,t.ox=this.ox,t.oy=this.oy,t}kt(){return Object.freeze(this),this}C(){return Object.isFrozen(this)?this:this.copy().kt()}Hw(t){}qi(t){return this.sx=NaN,this.sy=NaN,this.ox=t,this.kt()}vU(t,e){(isNaN(t)||t>1||t<0)&&m.J(t,"0 <= "+e+" <= 1",T,e)}FU(t,e){(isNaN(t)||t===1/0||t===-1/0)&&m.J(t,"real number, not NaN or Infinity",T,e)}static parse(t){if(typeof t=="string"){if(t=t.trim(),t==="None")return T.None;if(t==="TopLeft")return T.TopLeft;if(t==="Top"||t==="TopCenter"||t==="MiddleTop")return T.TopCenter;if(t==="TopRight")return T.TopRight;if(t==="Left"||t==="LeftCenter"||t==="MiddleLeft")return T.LeftCenter;if(t==="Center")return T.Center;if(t==="Right"||t==="RightCenter"||t==="MiddleRight")return T.RightCenter;if(t==="BottomLeft")return T.BottomLeft;if(t==="Bottom"||t==="BottomCenter"||t==="MiddleBottom")return T.BottomCenter;if(t==="BottomRight")return T.BottomRight;if(t==="TopSide")return T.TopSide;if(t==="LeftSide")return T.LeftSide;if(t==="RightSide")return T.RightSide;if(t==="BottomSide")return T.BottomSide;if(t==="TopBottomSides")return T.TopBottomSides;if(t==="LeftRightSides")return T.LeftRightSides;if(t==="TopLeftSides")return T.TopLeftSides;if(t==="TopRightSides")return T.TopRightSides;if(t==="BottomLeftSides")return T.BottomLeftSides;if(t==="BottomRightSides")return T.BottomRightSides;if(t==="NotTopSide")return T.NotTopSide;if(t==="NotLeftSide")return T.NotLeftSide;if(t==="NotRightSide")return T.NotRightSide;if(t==="NotBottomSide")return T.NotBottomSide;if(t==="AllSides")return T.AllSides;if(t==="Default")return T.Default;let e=t.split(" "),i=0,s=0;for(;e[i]==="";)i++;let n=e[i++];n!==void 0&&n.length>0&&(s=parseFloat(n));let o=0;for(;e[i]==="";)i++;n=e[i++],n!==void 0&&n.length>0&&(o=parseFloat(n));let r=0;for(;e[i]==="";)i++;n=e[i++],n!==void 0&&n.length>0&&(r=parseFloat(n));let a=0;for(;e[i]==="";)i++;return n=e[i++],n!==void 0&&n.length>0&&(a=parseFloat(n)),new T(s,o,r,a)}else return new T}static stringify(t){return t.isSpot()?t.x.toString()+" "+t.y.toString()+" "+t.offsetX.toString()+" "+t.offsetY.toString():t.toString()}static stringifyFixed(t){return m.s(t,"number",T,"stringifyFixed:digits"),e=>e.x.toFixed(t)+" "+e.y.toFixed(t)+" "+e.offsetX.toFixed(t)+" "+e.offsetY.toFixed(t)}toString(){return this.isSpot()?this.ox===0&&this.oy===0?"Spot("+this.x+","+this.y+")":"Spot("+this.x+","+this.y+","+this.offsetX+","+this.offsetY+")":this.equals(T.None)?"None":this.equals(T.TopLeft)?"TopLeft":this.equals(T.TopCenter)?"Top":this.equals(T.TopRight)?"TopRight":this.equals(T.LeftCenter)?"Left":this.equals(T.Center)?"Center":this.equals(T.RightCenter)?"Right":this.equals(T.BottomLeft)?"BottomLeft":this.equals(T.BottomCenter)?"Bottom":this.equals(T.BottomRight)?"BottomRight":this.equals(T.TopSide)?"TopSide":this.equals(T.LeftSide)?"LeftSide":this.equals(T.RightSide)?"RightSide":this.equals(T.BottomSide)?"BottomSide":this.equals(T.TopBottomSides)?"TopBottomSides":this.equals(T.LeftRightSides)?"LeftRightSides":this.equals(T.TopLeftSides)?"TopLeftSides":this.equals(T.TopRightSides)?"TopRightSides":this.equals(T.BottomLeftSides)?"BottomLeftSides":this.equals(T.BottomRightSides)?"BottomRightSides":this.equals(T.NotTopSide)?"NotTopSide":this.equals(T.NotLeftSide)?"NotLeftSide":this.equals(T.NotRightSide)?"NotRightSide":this.equals(T.NotBottomSide)?"NotBottomSide":this.equals(T.AllSides)?"AllSides":this.equals(T.Default)?"Default":"None"}equals(t){return t instanceof T?(this.sx===t.x||isNaN(this.sx)&&isNaN(t.x))&&(this.sy===t.y||isNaN(this.sy)&&isNaN(t.y))&&this.ox===t.offsetX&&this.oy===t.offsetY:!1}opposite(){return new T(.5-(this.sx-.5),.5-(this.sy-.5),-this.ox,-this.oy)}includesSide(t){if(!this.isSide())return!1;if(!t.isSide())if(t.equals(T.Left))t=T.LeftSide;else if(t.equals(T.Right))t=T.RightSide;else if(t.equals(T.Top))t=T.TopSide;else if(t.equals(T.Bottom))t=T.BottomSide;else return!1;let e=this.oy,i=t.offsetY;return(e&i)===i}get x(){return this.sx}set x(t){this.sx=t}get y(){return this.sy}set y(t){this.sy=t}get offsetX(){return this.ox}set offsetX(t){this.ox=t}get offsetY(){return this.oy}set offsetY(t){this.oy=t}isSpot(){return!isNaN(this.x)&&!isNaN(this.y)}isNoSpot(){return isNaN(this.x)||isNaN(this.y)}isSide(){return isNaN(this.x)&&isNaN(this.y)&&this.offsetX===1&&this.offsetY!==0}isNone(){return isNaN(this.x)&&isNaN(this.y)&&this.offsetX===0&&this.offsetY===0}isDefault(){return isNaN(this.x)&&isNaN(this.y)&&this.offsetX===-1&&this.offsetY===0}static None=new T(0,0,0,0).qi(0);static Default=new T(0,0,-1,0).qi(-1);static TopLeft=new T(0,0,0,0).kt();static TopCenter=new T(.5,0,0,0).kt();static TopRight=new T(1,0,0,0).kt();static LeftCenter=new T(0,.5,0,0).kt();static Center=new T(.5,.5,0,0).kt();static RightCenter=new T(1,.5,0,0).kt();static BottomLeft=new T(0,1,0,0).kt();static BottomCenter=new T(.5,1,0,0).kt();static BottomRight=new T(1,1,0,0).kt();static MiddleTop=T.TopCenter;static MiddleLeft=T.LeftCenter;static MiddleRight=T.RightCenter;static MiddleBottom=T.BottomCenter;static Top=T.TopCenter;static Left=T.LeftCenter;static Right=T.RightCenter;static Bottom=T.BottomCenter;static TopSide=new T(0,0,1,1).qi(1);static LeftSide=new T(0,0,1,2).qi(1);static RightSide=new T(0,0,1,4).qi(1);static BottomSide=new T(0,0,1,8).qi(1);static TopBottomSides=new T(0,0,1,9).qi(1);static LeftRightSides=new T(0,0,1,6).qi(1);static TopLeftSides=new T(0,0,1,3).qi(1);static TopRightSides=new T(0,0,1,5).qi(1);static BottomLeftSides=new T(0,0,1,10).qi(1);static BottomRightSides=new T(0,0,1,12).qi(1);static NotTopSide=new T(0,0,1,14).qi(1);static NotLeftSide=new T(0,0,1,13).qi(1);static NotRightSide=new T(0,0,1,11).qi(1);static NotBottomSide=new T(0,0,1,7).qi(1);static AllSides=new T(0,0,1,15).qi(1);static LP=new T(.156,.156).kt();static AP=new T(.844,.844).kt()}class Nt{m11;m12;m21;m22;dx;dy;constructor(){this.m11=1,this.m12=0,this.m21=0,this.m22=1,this.dx=0,this.dy=0}set(t){return this.m11=t.m11,this.m12=t.m12,this.m21=t.m21,this.m22=t.m22,this.dx=t.dx,this.dy=t.dy,this}setTo(t,e,i,s,n,o){return this.m11=t,this.m12=e,this.m21=i,this.m22=s,this.dx=n,this.dy=o,this}copy(){let t=new Nt;return t.m11=this.m11,t.m12=this.m12,t.m21=this.m21,t.m22=this.m22,t.dx=this.dx,t.dy=this.dy,t}toString(){return"Transform("+this.m11+","+this.m12+","+this.m21+","+this.m22+","+this.dx+","+this.dy+")"}equals(t){return this.m11===t.m11&&this.m12===t.m12&&this.m21===t.m21&&this.m22===t.m22&&this.dx===t.dx&&this.dy===t.dy}TP(){return this.dx===0&&this.dy===0&&this.m11===1&&this.m12===0&&this.m21===0&&this.m22===1}Ue(){return this.m11=1,this.m12=0,this.m21=0,this.m22=1,this.dx=0,this.dy=0,this}bc(t){let e=this.m11*t.m11+this.m21*t.m12,i=this.m12*t.m11+this.m22*t.m12,s=this.m11*t.m21+this.m21*t.m22,n=this.m12*t.m21+this.m22*t.m22;return this.dx=this.m11*t.dx+this.m21*t.dy+this.dx,this.dy=this.m12*t.dx+this.m22*t.dy+this.dy,this.m11=e,this.m12=i,this.m21=s,this.m22=n,this}zL(t){let e=1/(t.m11*t.m22-t.m12*t.m21),i=t.m22*e,s=-t.m12*e,n=-t.m21*e,o=t.m11*e,r=e*(t.m21*t.dy-t.m22*t.dx),a=e*(t.m12*t.dx-t.m11*t.dy),h=this.m11*i+this.m21*s,l=this.m12*i+this.m22*s,u=this.m11*n+this.m21*o,c=this.m12*n+this.m22*o;return this.dx=this.m11*r+this.m21*a+this.dx,this.dy=this.m12*r+this.m22*a+this.dy,this.m11=h,this.m12=l,this.m21=u,this.m22=c,this}Zw(){let t=1/(this.m11*this.m22-this.m12*this.m21),e=this.m22*t,i=-this.m12*t,s=-this.m21*t,n=this.m11*t,o=t*(this.m21*this.dy-this.m22*this.dx),r=t*(this.m12*this.dx-this.m11*this.dy);return this.m11=e,this.m12=i,this.m21=s,this.m22=n,this.dx=o,this.dy=r,this}ks(t,e,i){if(t=C.Ee(t),t===0)return this;this.Gs(e,i);let s=0,n=0;if(t===90)s=0,n=1;else if(t===180)s=-1,n=0;else if(t===270)s=0,n=-1;else{let l=t*Math.PI/180;s=Math.cos(l),n=Math.sin(l)}let o=this.m11*s+this.m21*n,r=this.m12*s+this.m22*n,a=this.m11*-n+this.m21*s,h=this.m12*-n+this.m22*s;return this.m11=o,this.m12=r,this.m21=a,this.m22=h,this.Gs(-e,-i),this}Gs(t,e){return this.dx+=this.m11*t+this.m21*e,this.dy+=this.m12*t+this.m22*e,this}et(t,e){return e===void 0&&(e=t),this.m11*=t,this.m12*=t,this.m21*=e,this.m22*=e,this}KF(){if(this.m11===1&&this.m12===0)return 0;let t=Math.atan2(this.m12,this.m11)*180/Math.PI;return t<0&&(t+=360),t}gt(t){let e=t.x,i=t.y;return t.e(e*this.m11+i*this.m21+this.dx,e*this.m12+i*this.m22+this.dy)}Ni(t){let e=1/(this.m11*this.m22-this.m12*this.m21),i=this.m22*e,s=-this.m12*e,n=-this.m21*e,o=this.m11*e,r=t.x-this.dx,a=t.y-this.dy;return t.e(r*i+a*n,r*s+a*o)}Mu(t){let e=1/(this.m11*this.m22-this.m12*this.m21),i=this.m22*e,s=-this.m12*e,n=-this.m21*e,o=this.m11*e,r=e*(this.m21*this.dy-this.m22*this.dx),a=e*(this.m12*this.dx-this.m11*this.dy),h=t.x*1.25,l=t.y*1.2;return t.e(h*i+l*n+r,h*s+l*o+a)}im(t){let e=t.x,i=t.y,s=e+t.width,n=i+t.height,o=this.m11,r=this.m12,a=this.m21,h=this.m22,l=this.dx,u=this.dy,c=e*o+i*a+l,d=e*r+i*h+u,f=s*o+i*a+l,p=s*r+i*h+u,g=e*o+n*a+l,y=e*r+n*h+u,b=s*o+n*a+l,v=s*r+n*h+u,w=c,k=c,S=d,N=d;return w=Math.min(w,f),k=Math.max(k,f),S=Math.min(S,p),N=Math.max(N,p),w=Math.min(w,g),k=Math.max(k,g),S=Math.min(S,y),N=Math.max(N,y),w=Math.min(w,b),k=Math.max(k,b),S=Math.min(S,v),N=Math.max(N,v),t.e(w,S,k-w,N-S),t}static XL=[];static l(){let t=Nt.XL.pop();return t===void 0?new Nt:t}static i(t){Nt.XL.push(t)}static DP="54a702f3e53909c447824c6706603faf4c"}let C={HF:"7da71ca0ad381e90",Hn:4*((Math.sqrt(2)-1)/3),GL:[],Qw:x=>{if(x<=0)return 0;let t=C.GL;if(t===null){t=[];for(let e=0;e<=2e3;e++)t[e]=Math.sqrt(e);C.GL=t}if(x<1){let e=1/x;return e<=2e3?1/t[e|0]:Math.sqrt(x)}else return x<=2e3?t[x|0]:Math.sqrt(x)},c:(x,t)=>{let e=x-t;return e<.5&&e>-.5},X:(x,t)=>{let e=x-t;return e<5e-8&&e>-5e-8},Ve:(x,t,e,i,s,n,o)=>{s<=0&&(s=1e-6);let r=0,a=0,h=0,l=0;if(x<e?(a=x,r=e):(a=e,r=x),t<i?(l=t,h=i):(l=i,h=t),x===e)return l<=o&&o<=h&&x-s<=n&&n<=x+s;if(t===i)return a<=n&&n<=r&&t-s<=o&&o<=t+s;let u=r+s,c=a-s;if(c<=n&&n<=u){let d=h+s,f=l-s;if(f<=o&&o<=d)if(u-c>d-f)if(x-e>s||e-x>s){let p=(i-t)/(e-x)*(n-x)+t;if(p-s<=o&&o<=p+s)return!0}else return!0;else if(t-i>s||i-t>s){let p=(e-x)/(i-t)*(o-t)+x;if(p-s<=n&&n<=p+s)return!0}else return!0}return!1},_w:(x,t,e,i,s,n,o,r,a,h,l,u)=>{if(!C.Ve(x,t,o,r,u,e,i)||!C.Ve(x,t,o,r,u,s,n)){let c=(x+e)/2,d=(t+i)/2,f=(e+s)/2,p=(i+n)/2,g=(s+o)/2,y=(n+r)/2,b=(c+f)/2,v=(d+p)/2,w=(f+g)/2,k=(p+y)/2,S=(b+w)/2,N=(v+k)/2;return C._w(x,t,c,d,b,v,S,N,a,h,l,u)||C._w(S,N,w,k,g,y,o,r,a,h,l,u)}else return C.Ve(x,t,o,r,u,h,l)},YL:(x,t,e,i,s,n,o,r,a)=>{let h=(x+e)/2,l=(t+i)/2,u=(e+s)/2,c=(i+n)/2,d=(s+o)/2,f=(n+r)/2,p=(h+u)/2,g=(l+c)/2,y=(u+d)/2,b=(c+f)/2;return a.e((p+y)/2,(g+b)/2),a},qF:(x,t,e,i,s,n,o,r)=>{let a=(x+e)/2,h=(t+i)/2,l=(e+s)/2,u=(i+n)/2,c=(s+o)/2,d=(n+r)/2,f=(a+l)/2,p=(h+u)/2,g=(l+c)/2,y=(u+d)/2;return P.direction(f,p,g,y)},Cu:(x,t,e,i,s,n,o,r,a,h)=>{if(!C.Ve(x,t,o,r,a,e,i)||!C.Ve(x,t,o,r,a,s,n)){let l=(x+e)/2,u=(t+i)/2,c=(e+s)/2,d=(i+n)/2,f=(s+o)/2,p=(n+r)/2,g=(l+c)/2,y=(u+d)/2,b=(c+f)/2,v=(d+p)/2,w=(g+b)/2,k=(y+v)/2;C.Cu(x,t,l,u,g,y,w,k,a,h),C.Cu(w,k,b,v,f,p,o,r,a,h)}else h.re(x,t,0,0),h.re(o,r,0,0);return h},qn:(x,t,e,i,s,n,o,r,a,h)=>{if(!C.Ve(x,t,o,r,a,e,i)||!C.Ve(x,t,o,r,a,s,n)){let l=(x+e)/2,u=(t+i)/2,c=(e+s)/2,d=(i+n)/2,f=(s+o)/2,p=(n+r)/2,g=(l+c)/2,y=(u+d)/2,b=(c+f)/2,v=(d+p)/2,w=(g+b)/2,k=(y+v)/2;C.qn(x,t,l,u,g,y,w,k,a,h),C.qn(w,k,b,v,f,p,o,r,a,h)}else h.length===0&&(h.push(x),h.push(t)),h.push(o),h.push(r);return h},vP:(x,t,e,i,s,n,o,r,a,h)=>{if(C.Ve(x,t,s,n,h,e,i))return C.Ve(x,t,s,n,h,r,a);{let l=(x+e)/2,u=(t+i)/2,c=(e+s)/2,d=(i+n)/2,f=(l+c)/2,p=(u+d)/2;return C.vP(x,t,l,u,f,p,o,r,a,h)||C.vP(f,p,c,d,s,n,o,r,a,h)}},FP:(x,t,e,i,s,n,o,r)=>{if(C.Ve(x,t,s,n,o,e,i))r.re(x,t,0,0),r.re(s,n,0,0);else{let a=(x+e)/2,h=(t+i)/2,l=(e+s)/2,u=(i+n)/2,c=(a+l)/2,d=(h+u)/2;C.FP(x,t,a,h,c,d,o,r),C.FP(c,d,l,u,s,n,o,r)}return r},sm:(x,t,e,i,s,n,o,r)=>{if(C.Ve(x,t,s,n,o,e,i))r.length===0&&(r.push(x),r.push(t)),r.push(s),r.push(n);else{let a=(x+e)/2,h=(t+i)/2,l=(e+s)/2,u=(i+n)/2,c=(a+l)/2,d=(h+u)/2;C.sm(x,t,a,h,c,d,o,r),C.sm(c,d,l,u,s,n,o,r)}return r},nm:(x,t,e,i,s,n,o,r,a,h,l,u,c,d)=>{if(!C.Ve(x,t,o,r,c,e,i)||!C.Ve(x,t,o,r,c,s,n)){let f=(x+e)/2,p=(t+i)/2,g=(e+s)/2,y=(i+n)/2,b=(s+o)/2,v=(n+r)/2,w=(f+g)/2,k=(p+y)/2,S=(g+b)/2,N=(y+v)/2,D=(w+S)/2,L=(k+N)/2,M=1/0,A=!1,F=0,O=0;if(C.nm(x,t,f,p,w,k,D,L,a,h,l,u,c,d)){let E=(d.x-a)**2+(d.y-h)**2;E<M&&(M=E,A=!0,F=d.x,O=d.y)}if(C.nm(D,L,S,N,b,v,o,r,a,h,l,u,c,d)){let E=(d.x-a)**2+(d.y-h)**2;E<M&&(M=E,A=!0,F=d.x,O=d.y)}return A&&(d.x=F,d.y=O),A}else{if(!C.Pu(x,t,o,r,a,h,l,u))return!1;let f=(x-o)*(h-u)-(t-r)*(a-l);if(f===0)return!1;let p=((x*r-t*o)*(a-l)-(x-o)*(a*u-h*l))/f,g=((x*r-t*o)*(h-u)-(t-r)*(a*u-h*l))/f;return d.e(p,g),!0}},om:(x,t,e,i,s,n,o,r,a,h,l,u,c)=>{let d=0;if(!C.Ve(x,t,o,r,c,e,i)||!C.Ve(x,t,o,r,c,s,n)){let f=(x+e)/2,p=(t+i)/2,g=(e+s)/2,y=(i+n)/2,b=(s+o)/2,v=(n+r)/2,w=(f+g)/2,k=(p+y)/2,S=(g+b)/2,N=(y+v)/2,D=(w+S)/2,L=(k+N)/2;d+=C.om(x,t,f,p,w,k,D,L,a,h,l,u,c),d+=C.om(D,L,S,N,b,v,o,r,a,h,l,u,c)}else{let f=(x-o)*(h-u)-(t-r)*(a-l);if(f===0)return d;let p=((x*r-t*o)*(a-l)-(x-o)*(a*u-h*l))/f,g=((x*r-t*o)*(h-u)-(t-r)*(a*u-h*l))/f;if(p>=l)return d;let y=0,b=0;if((a>l?a-l:l-a)<(h>u?h-u:u-h)){if(t<r?(y=t,b=r):(y=r,b=t),g<y||g>b)return d}else if(x<o?(y=x,b=o):(y=o,b=x),p<y||p>b)return d;f>0?d++:f<0&&d--}return d},Ll:(x,t,e,i,s,n,o)=>{if(C.X(x,e)){let r=0,a=0;t<i?(r=t,a=i):(r=i,a=t);let h=n;return h<r?(o.e(x,r),!1):h>a?(o.e(x,a),!1):(o.e(x,h),!0)}else if(C.X(t,i)){let r=0,a=0;x<e?(r=x,a=e):(r=e,a=x);let h=s;return h<r?(o.e(r,t),!1):h>a?(o.e(a,t),!1):(o.e(h,t),!0)}else{let r=(e-x)**2+(i-t)**2,a=((x-s)*(x-e)+(t-n)*(t-i))/r;if(a<-5e-6)return o.e(x,t),!1;if(a>1.000005)return o.e(e,i),!1;{let h=x+a*(e-x),l=t+a*(i-t);return o.e(h,l),!0}}},Do:(x,t,e,i,s,n,o,r,a)=>{if(C.c(x,e)&&C.c(t,i))return a.e(x,t),!1;if(C.X(s,o)){if(C.X(x,e))return C.Ll(x,t,e,i,s,n,a),!1;{let h=(i-t)/(e-x)*(s-x)+t;return C.Ll(x,t,e,i,s,h,a)}}else{let h=(r-n)/(o-s);if(C.X(x,e)){let l=h*(x-s)+n,u=0,c=0;return t<i?(u=t,c=i):(u=i,c=t),l<u?(a.e(x,u),!1):l>c?(a.e(x,c),!1):(a.e(x,l),!0)}else{let l=(i-t)/(e-x);if(C.X(h,l))return C.Ll(x,t,e,i,s,n,a),!1;{let u=(l*x-h*s+n-t)/(l-h);if(C.X(l,0)){let c=0,d=0;return x<e?(c=x,d=e):(c=e,d=x),u<c?(a.e(c,t),!1):u>d?(a.e(d,t),!1):(a.e(u,t),!0)}else{let c=l*(u-x)+t;return C.Ll(x,t,e,i,u,c,a)}}}}},Al:(x,t,e,i,s,n,o,r,a)=>{let h=1e21,l=x,u=t;if(C.Do(x,t,x,i,s,n,o,r,a)){let c=(a.x-s)**2+(a.y-n)**2;c<h&&(h=c,l=a.x,u=a.y)}if(C.Do(e,t,e,i,s,n,o,r,a)){let c=(a.x-s)**2+(a.y-n)**2;c<h&&(h=c,l=a.x,u=a.y)}if(C.Do(x,t,e,t,s,n,o,r,a)){let c=(a.x-s)**2+(a.y-n)**2;c<h&&(h=c,l=a.x,u=a.y)}if(C.Do(x,i,e,i,s,n,o,r,a)){let c=(a.x-s)**2+(a.y-n)**2;c<h&&(h=c,l=a.x,u=a.y)}return a.e(l,u),h<1e21},tx:(x,t,e)=>C.VL(x.x,x.y,x.width,x.height,t.x,t.y,e.x,e.y),VL:(x,t,e,i,s,n,o,r)=>{let a=x,h=x+e,l=t,u=t+i;if(s===o){let c=0,d=0;return n<r?(c=n,d=r):(c=r,d=n),a<=s&&s<=h&&c<=u&&d>=l}if(n===r){let c=0,d=0;return s<o?(c=s,d=o):(c=o,d=s),l<=n&&n<=u&&c<=h&&d>=a}return!!(I.contains(x,t,e,i,s,n)||I.contains(x,t,e,i,o,r)||C.Pu(a,l,h,l,s,n,o,r)||C.Pu(h,l,h,u,s,n,o,r)||C.Pu(h,u,a,u,s,n,o,r)||C.Pu(a,u,a,l,s,n,o,r))},Pu:(x,t,e,i,s,n,o,r)=>x===e&&t===i&&s===o&&n===r?x===s&&t===n:C.ku(x,t,e,i,s,n)*C.ku(x,t,e,i,o,r)<=0&&C.ku(s,n,o,r,x,t)*C.ku(s,n,o,r,e,i)<=0,ku:(x,t,e,i,s,n)=>{let o=e-x,r=i-t,a=s-x,h=n-t,l=a*r-h*o;return l===0&&(l=a*o+h*r,l>0&&(a-=o,h-=r,l=a*o+h*r,l<0&&(l=0))),l},Jw(x,t,e,i){i===void 0&&(i=!1);let s=0,n=x===null?t:(t-x.x)/(x.width>0?x.width:1),o=x===null?e:(e-x.y)/(x.height>0?x.height:1);return n>o?n>1-o||(i||n<1-o?s=270:s=315):i||n<o?n>1-o?s=90:i||n<1-o?s=180:s=135:n<.5?s=225:n>.5&&(s=45),s},Ee:x=>(x>=360?x-=360:x<0&&(x+=360),x),jF:(x,t)=>x>t?Math.min(x-t,Math.abs(x-360-t)):t>x?Math.min(t-x,Math.abs(x-(t-360))):0,KL:(x,t,e,i,s,n)=>{let o=Math.PI;n||(i=i*(o/180),s=s*(o/180));let r=i>s?-1:1,a=1e-5,h=o*2,l=[],u=o/2,c=i,d=Math.min(h,Math.abs(s-i));if(d<a){let f=c+r*Math.min(d,u),p=x+e*Math.cos(c),g=t+e*Math.sin(c),y=x+e*Math.cos(f),b=t+e*Math.sin(f),v=(p+y)/2,w=(g+b)/2;return l.push([p,g,v,w,v,w,y,b]),l}for(;d>a;){let f=c+r*Math.min(d,u);l.push(C.WF(e,c,f,x,t)),d-=Math.abs(f-c),c=f}return l},WF:(x,t,e,i,s)=>{let n=(e-t)/2,o=x*Math.cos(n),r=x*Math.sin(n),a=o,h=-r,l=a*a+h*h,u=l+a*o+h*r,c=4/3*(Math.sqrt(2*l*u)-u)/(a*r-h*o),d=a-c*h,f=h+c*a,p=d,g=-f,y=n+t,b=Math.cos(y),v=Math.sin(y);return[i+x*Math.cos(t),s+x*Math.sin(t),i+d*b-f*v,s+d*v+f*b,i+p*b-g*v,s+p*v+g*b,i+x*Math.cos(e),s+x*Math.sin(e)]},_g:(x,t,e,i,s,n,o)=>{let r=s,a=n,h=Math.floor((x-e)/r)*r+e,l=Math.floor((t-i)/a)*a+i,u=h;h+r-x<r/2&&(u=h+r);let c=l;return l+a-t<a/2&&(c=l+a),o.e(u,c),o},HL:(x,t)=>{let e=Math.max(x,t),i=Math.min(x,t),s=1,n=1;do s=e%i,n=i,e=i,i=s;while(s>0);return n},JF:(x,t,e,i)=>{let s=e<0,n=i<0,o=0,r=0,a=0;x<t?(r=1,a=0):(r=0,a=1);let h=0,l=0,u=0,c=0;return o=r,h=o===0?x:t,u=o===0?e:i,(o===0?s:n)&&(u=-u),o=a,l=o===0?x:t,c=o===0?e:i,(o===0?s:n)&&(c=-c),C.$F(h,l,u,c,0,0)},$F:(x,t,e,i,s,n)=>{let o=0;if(i>0)if(e>0){let r=x*x,a=t*t,h=x*e,l=t*i,u=-a+l,c=-a+Math.sqrt(h*h+l*l),d=u,f=9999999999;for(let y=0;y<f&&(d=.5*(u+c),!(d===u||d===c));++y){let b=h/(d+r),v=l/(d+a),w=b*b+v*v-1;if(w>0)u=d;else if(w<0)c=d;else break}s=r*e/(d+r),n=a*i/(d+a);let p=s-e,g=n-i;o=Math.sqrt(p*p+g*g)}else s=0,n=t,o=Math.abs(i-t);else{let r=x*x-t*t,a=x*e;if(a<r){let h=a/r,l=h*h;s=x*h,n=t*Math.sqrt(Math.abs(1-l));let u=s-e;o=Math.sqrt(u*u+n*n)}else s=x,n=0,o=Math.abs(e-x)}return o},jn:{},rm:new yt,pr:new yt,yr:0,lm:100};C.za=C.HF;var Ve=(x=>(x[x.Line=1]="Line",x[x.Rectangle=2]="Rectangle",x[x.Ellipse=3]="Ellipse",x[x.Path=4]="Path",x))(Ve||{}),Ri=(x=>(x[x.None=0]="None",x[x.Default=1]="Default",x[x.Fill=2]="Fill",x[x.Uniform=6]="Uniform",x))(Ri||{});class wt{n;am;hm;kc;Nu;Lu;Wn;Jn;$n;W;Li;Ai;ni;oi;Ys;Pc;Sc;constructor(t,e){V.Je(this),this.n=2,t===void 0&&(t=4),this.W=t,this.Li=0,this.Ai=0,this.ni=0,this.oi=0,t===4?this.Ys=new q:this.Ys=wt.ex,this.am=this.Ys.rt,this.hm=new I,this.kc=null,this.Nu=null,this.Lu=NaN,this.Wn=T.TopLeft,this.Jn=T.BottomRight,this.Pc=NaN,this.Sc=NaN,this.$n=2,e&&Object.assign(this,e)}copy(){let t=new wt;if(t.n=this.n&-2,t.W=this.W,t.Li=this.Li,t.Ai=this.Ai,t.ni=this.ni,t.oi=this.oi,this.W===4){let e=this.Ys.r,i=t.Ys;for(let s=0;s<e.length;s++){let n=e[s];i.add(n.copy())}t.Ys=i}else t.Ys=this.Ys;return t.am=this.am,t.hm.h(this.hm),t.kc=this.kc,t.Nu=this.Nu,t.Lu=this.Lu,t.Wn=this.Wn.C(),t.Jn=this.Jn.C(),t.Pc=this.Pc,t.Sc=this.Sc,t.$n=this.$n,t}static Line=1;static Rectangle=2;static Ellipse=3;static Path=4;static ex=new q().k();get u(){return(this.n&1)!==0}set u(t){t?this.n|=1:this.n&=-2}get yt(){return(this.n&2)!==0}set yt(t){t?this.n|=2:this.n&=-3}k(){if(this.u=!0,this.type!==4)return this;let t=this.figures;t.k();for(let e of t)e.k();return this}equalsApprox(t){if(!(t instanceof wt))return!1;if(this.type!==t.type)return this.type===1&&t.type===4?this.qL(t):t.type===1&&this.type===4?t.qL(this):!1;if(this.type===4){let e=this.figures.r,i=t.figures.r,s=e.length;if(s!==i.length)return!1;for(let n=0;n<s;n++){let o=e[n],r=i[n];if(!o.equalsApprox(r))return!1}return!0}else return C.c(this.startX,t.startX)&&C.c(this.startY,t.startY)&&C.c(this.endX,t.endX)&&C.c(this.endY,t.endY)}qL(t){if(this.type!==1||t.type!==4)return!1;if(t.figures.count===1){let e=t.figures.elt(0);if(e.segments.count===1&&C.c(this.startX,e.startX)&&C.c(this.startY,e.startY)){let i=e.segments.elt(0);if(i.type===2&&C.c(this.endX,i.endX)&&C.c(this.endY,i.endY))return!0}}return!1}static stringify(t){return t.toString()}static stringifyFixed(t){return m.s(t,"number",wt,"stringifyFixed:digits"),e=>e.toString(t)}fe(t){t in Ve?this.type=t:m.ur(this,t)}toString(t){t===void 0&&(t=-1);let e=s=>s===0?"0":s.toFixed(t),i;switch(this.type){case 1:return t<0?"M"+this.startX.toString()+" "+this.startY.toString()+"L"+this.endX.toString()+" "+this.endY.toString():"M"+e(this.startX)+" "+e(this.startY)+"L"+e(this.endX)+" "+e(this.endY);case 2:return i=new I(this.startX,this.startY,0,0),i.union(this.endX,this.endY,0,0),t<0?"M"+i.x.toString()+" "+i.y.toString()+"H"+i.right.toString()+"V"+i.bottom.toString()+"H"+i.left.toString()+"z":"M"+e(i.x)+" "+e(i.y)+"H"+e(i.right)+"V"+e(i.bottom)+"H"+e(i.left)+"z";case 3:if(i=new I(this.startX,this.startY,0,0),i.union(this.endX,this.endY,0,0),t<0){let r=i.left.toString()+" "+(i.y+i.height/2).toString(),a=i.right.toString()+" "+(i.y+i.height/2).toString();return"M"+r+"A"+(i.width/2).toString()+" "+(i.height/2).toString()+" 0 0 1 "+a+"A"+(i.width/2).toString()+" "+(i.height/2).toString()+" 0 0 1 "+r}else{let r=e(i.left)+" "+e(i.y+i.height/2),a=e(i.right)+" "+e(i.y+i.height/2);return"M"+r+"A"+e(i.width/2)+" "+e(i.height/2)+" 0 0 1 "+a+"A"+e(i.width/2)+" "+e(i.height/2)+" 0 0 1 "+r}case 4:let s="",n=this.figures.r,o=n.length;for(let r=0;r<o;r++){let a=n[r];r>0&&(s+=" x "),a.isFilled&&(s+="F "),s+=a.toString(t)}return s;default:return Ve[this.type]}}static fillPath(t){typeof t!="string"&&m.si(t,"string",wt,"fillPath:str");let e=t.split(/[Xx]/),i=e.length,s="";for(let n=0;n<i;n++){let o=e[n];if(o.match(/[Ff]/)!==null){n===0?s+=o:s+="X"+(o[0]===" "?"":" ")+o;continue}s+=(n===0?"":"X ")+"F"+(o[0]===" "?"":" ")+o}return s}static cm="UuBbMmZzLlHhVvCcSsQqTtAaFfXx";static parse(t,e){e===void 0&&(e=!1),typeof t!="string"&&m.si(t,"string",wt,"parse:str");let i=new RegExp("(["+wt.cm+"])(["+wt.cm+"])","gm"),s=new RegExp("(["+wt.cm+"])([^s])","gm"),n=new RegExp("([^s])(["+wt.cm+"])","gm");t=t.replace(/,/gm," "),t=t.replace(i,"$1 $2"),t=t.replace(i,"$1 $2"),t=t.replace(s,"$1 $2"),t=t.replace(n,"$1 $2"),t=t.replace(/([0-9])([+\-])/gm,"$1 $2"),t=t.replace(/[\s\r\t\n]+/gm," "),t=t.replace(/^\s+|\s+$/g,"");let o=t.split(" ");for(let F=0;F<o.length;F++){let O=o[F];if(O.match(/(\.[0-9]*)(\.)/gm)!==null){let E=m.st(),B="",X=!1;for(let z=0;z<O.length;z++){let U=O[z];U==="."&&!X?(X=!0,B+=U):U==="."?(E.push(B),B="."):B+=U}E.push(B),o.splice(F,1);for(let z=0;z<E.length;z++)o.splice(F+z,0,E[z]);F+=E.length-1,m.Z(E)}}let r=-1,a="",h="",l=new P(0,0),u=new P(0,0),c=new P(0,0),d=!0;function f(){return r>=w-1||o[r+1].match(M)!==null?!0:(d=!1,!1)}function p(){return r++,o[r]}function g(F){let O=parseFloat(p()),E=parseFloat(p());a===a.toLowerCase()&&(O=c.x+O,E=c.y+E),F.e(O,E)}function y(){return g(c),c}function b(){return g(u),u}function v(){let F=h.toLowerCase();return F==="c"||F==="s"||F==="q"||F==="t"?new P(2*c.x-u.x,2*c.y-u.y):new P(c.x,c.y)}let w=o.length,k=Ne.jL(null),S=!1,N=!1,D=!1,L=!0,M=new RegExp("["+wt.cm+"]");for(;!(r>=w-1);){if(h=a,a=p(),a==="")continue;d=!0;let F=!1;switch(a.toUpperCase()){case"X":L=!0,S=!1,N=!1;break;case"M":let O=y();for(k.Ne===null||L===!0?(k.Au(O.x,O.y,S,!1,!N,D),L=!1):k.ZF(O.x,O.y),l.h(c);!f();){let E=y();k.Ks(E.x,E.y)}break;case"L":for(;!f();){let E=y();k.Ks(E.x,E.y)}d&&(F=!0);break;case"H":for(;!f();)c.e((a===a.toLowerCase()?c.x:0)+parseFloat(p()),c.y),k.Ks(c.x,c.y);break;case"V":for(;!f();)c.e(c.x,(a===a.toLowerCase()?c.y:0)+parseFloat(p())),k.Ks(c.x,c.y);d&&(F=!0);break;case"C":for(;!f();){let E=new P;g(E);let B=b(),X=y();k.wr(E.x,E.y,B.x,B.y,X.x,X.y)}d&&(F=!0);break;case"S":for(;!f();){let E=v(),B=b(),X=y();k.wr(E.x,E.y,B.x,B.y,X.x,X.y)}d&&(F=!0);break;case"Q":for(;!f();){let E=b(),B=y();k.Tu(E.x,E.y,B.x,B.y)}d&&(F=!0);break;case"T":for(;!f();){let E=v();u.h(E);let B=y();k.Tu(E.x,E.y,B.x,B.y),u.h(B)}d&&(F=!0);break;case"B":for(;!f();){let E=parseFloat(p()),B=parseFloat(p()),X=parseFloat(p()),z=parseFloat(p()),U=parseFloat(p()),tt=U,st=!1;f()||(tt=parseFloat(p()),f()||(st=parseFloat(p())!==0)),a===a.toLowerCase()&&(X+=c.x,z+=c.y),k.QF(E,B,X,z,U,tt,st)}d&&(F=!0);break;case"A":for(;!f();){let E=Math.abs(parseFloat(p())),B=Math.abs(parseFloat(p())),X=parseFloat(p()),z=!1,U=!1,tt=0,st=0,Z=p();Z.length===1?(z=!!parseFloat(Z),U=!!parseFloat(p()),tt=parseFloat(p()),st=parseFloat(p())):Z.length===2?(z=!!parseFloat(Z[0]),U=!!parseFloat(Z[1]),tt=parseFloat(p()),st=parseFloat(p())):(z=!!parseFloat(Z[0]),U=!!parseFloat(Z[1]),tt=parseFloat(Z.slice(2)),st=parseFloat(p())),a===a.toLowerCase()&&(tt=c.x+tt,st=c.y+st),c.e(tt,st),k._F(E,B,X,z,U,tt,st)}d&&(F=!0);break;case"Z":k.tR(),c.h(l);break;case"F":{let E="",B=1;for(;o[r+B];){if(o[r+B]==="0"){D=!0,B++;continue}if(o[r+B].match(/[Uu]/)!==null){B++;continue}if(o[r+B].match(M)===null){B++;continue}E=o[r+B];break}E.match(/[Mm]/)?S=!0:k.eR();break}case"U":{let E="",B=1;for(;o[r+B];){if(o[r+B].match(/[Ff]/)!==null){B++;continue}if(o[r+B].match(M)===null){B++;continue}E=o[r+B];break}E.match(/[Mm]/)?N=!0:k.iR(!1);break}default:if(a==="0"||a==="1")break;m.ne("Unknown geometry command: "+a);break}if(F){m.ne(`Bad geometry command: ${a}, next token: ${p()},
3
3
  string: ${t}`);break}}let A=k.fm;if(Ne.WL(k),e){let F=A.figures.iterator;for(;F.next();){let O=F.value;O.isFilled=!0}}return A}static JL(t,e){let i=t.length,s=P.l();for(let n=0;n<i;n++){let o=t[n];s.x=o[0],s.y=o[1],e.gt(s),o[0]=s.x,o[1]=s.y,s.x=o[2],s.y=o[3],e.gt(s),o[2]=s.x,o[3]=s.y,s.x=o[4],s.y=o[5],e.gt(s),o[4]=s.x,o[5]=s.y,s.x=o[6],s.y=o[7],e.gt(s),o[6]=s.x,o[7]=s.y}P.i(s)}RP(){if(this.yt)return!0;if(this.type===4){let t=this.figures;if(this.am!==t.rt)return!0;let e=this.figures.r,i=e.length;for(let s=0;s<i;s++)if(e[s].RP())return!0}return!1}ix(){if(this.yt=!1,this.kc=null,this.Nu=null,this.Lu=NaN,this.type===4){let e=this.figures;this.am=e.rt;let i=this.figures.r,s=i.length;for(let n=0;n<s;n++)i[n].sR()}let t=this.hm;isNaN(this.Pc)||isNaN(this.Sc)?t.e(0,0,0,0):t.e(0,0,this.Pc,this.Sc),this.$L(t,!1),t.re(0,0,0,0)}computeBoundsWithoutOrigin(){let t=new I;return this.$L(t,!0),t}$L(t,e){switch(this.type){case 1:case 2:case 3:e?t.e(this.Li,this.Ai,0,0):t.re(this.Li,this.Ai,0,0),t.re(this.ni,this.oi,0,0);break;case 4:let i=this.figures,s=i.r,n=i.length;for(let o=0;o<n;o++){let r=s[o];e&&o===0?t.e(r.startX,r.startY,0,0):t.re(r.startX,r.startY,0,0);let a=r.segments.r,h=a.length,l=r.startX,u=r.startY;for(let c=0;c<h;c++){let d=a[c];switch(d.type){case 2:case 1:l=d.endX,u=d.endY,t.re(l,u,0,0);break;case 3:C.Cu(l,u,d.point1X,d.point1Y,d.point2X,d.point2Y,d.endX,d.endY,.5,t),l=d.endX,u=d.endY;break;case 4:C.FP(l,u,d.point1X,d.point1Y,d.endX,d.endY,.5,t),l=d.endX,u=d.endY;break;case 5:case 6:let f=d.type===5?d.vo(r):d.$a(r,l,u),p=f.length;if(p===0){l=d.type===5?d.centerX:d.endX,u=d.type===5?d.centerY:d.endY,t.re(l,u,0,0);break}let g=null;for(let y=0;y<p;y++)g=f[y],C.Cu(g[0],g[1],g[2],g[3],g[4],g[5],g[6],g[7],.5,t);g!==null&&(l=g[6],u=g[7]);break;default:m.o("Unknown Segment type: "+d.type)}}}break;default:m.o("Unknown Geometry type: "+this.type)}}nR(t,e){let i=this.bounds,s=t/i.width,n=e/i.height;return isFinite(s)||(s=1),isFinite(n)||(n=1),s===1&&n===1?this:this.copy().scale(s,n)}normalize(){this.u&&m.L(this);let t=this.computeBoundsWithoutOrigin();return this.offset(-t.x,-t.y),new P(-t.x,-t.y)}offset(t,e){return this.u&&m.L(this),this.v(1,0,0,1,t,e),this}scale(t,e){return this.u&&m.L(this),this.v(t,0,0,e,0,0),this}rotate(t,e,i){this.u&&m.L(this),e===void 0&&(e=0),i===void 0&&(i=0);let s=Nt.l();return s.Ue(),s.ks(t,e,i),this.v(s.m11,s.m12,s.m21,s.m22,s.dx,s.dy),Nt.i(s),this}v(t,e,i,s,n,o){let r=0,a=0;switch(this.type){case 1:case 2:case 3:r=this.Li,a=this.Ai,this.Li=r*t+a*i+n,this.Ai=r*e+a*s+o,r=this.ni,a=this.oi,this.ni=r*t+a*i+n,this.oi=r*e+a*s+o;break;case 4:let h=this.figures.r,l=h.length;for(let u=0;u<l;u++){let c=h[u];r=c.startX,a=c.startY,c.startX=r*t+a*i+n,c.startY=r*e+a*s+o;let d=c.segments.r,f=d.length;for(let p=0;p<f;p++){let g=d[p];switch(g.type){case 2:case 1:r=g.endX,a=g.endY,g.endX=r*t+a*i+n,g.endY=r*e+a*s+o;break;case 3:r=g.point1X,a=g.point1Y,g.point1X=r*t+a*i+n,g.point1Y=r*e+a*s+o,r=g.point2X,a=g.point2Y,g.point2X=r*t+a*i+n,g.point2Y=r*e+a*s+o,r=g.endX,a=g.endY,g.endX=r*t+a*i+n,g.endY=r*e+a*s+o;break;case 4:r=g.point1X,a=g.point1Y,g.point1X=r*t+a*i+n,g.point1Y=r*e+a*s+o,r=g.endX,a=g.endY,g.endX=r*t+a*i+n,g.endY=r*e+a*s+o;break;case 5:if(r=g.centerX,a=g.centerY,g.centerX=r*t+a*i+n,g.centerY=r*e+a*s+o,e!==0){let y=Math.atan2(e,t)*180/Math.PI;y<0&&(y+=360),g.startAngle+=y}t<0&&(g.startAngle=180-g.startAngle,g.sweepAngle=-g.sweepAngle),s<0&&(g.startAngle=-g.startAngle,g.sweepAngle=-g.sweepAngle),g.radiusX*=Math.sqrt(t*t+i*i),g.radiusY!==void 0&&(g.radiusY*=Math.sqrt(e*e+s*s));break;case 6:if(r=g.endX,a=g.endY,g.endX=r*t+a*i+n,g.endY=r*e+a*s+o,g.radiusX===0||g.radiusY===0)break;if(e!==0){let y=Math.atan2(e,t)*180/Math.PI;y<0&&(y+=360),g.xAxisRotation+=y}t<0&&(g.xAxisRotation=180-g.xAxisRotation,g.isClockwiseArc=!g.isClockwiseArc),s<0&&(g.xAxisRotation=-g.xAxisRotation,g.isClockwiseArc=!g.isClockwiseArc),g.radiusX*=Math.sqrt(t*t+i*i),g.radiusY*=Math.sqrt(e*e+s*s);break;default:m.o("Unknown Segment type: "+g.type)}}}break}return this.yt=!0,this}containsPoint(t,e){e===void 0&&(e=0);let i=this.Li,s=this.Ai,n=this.ni,o=this.oi;switch(this.type){case 1:return C.Ve(i,s,n,o,e,t.x,t.y);case 2:{let r=Math.min(i,n)-e,a=Math.min(s,o)-e,h=Math.abs(n-i)+e*2,l=Math.abs(o-s)+e*2,u=I.z(r,a,h,l),c=u.containsPoint(t);return I.i(u),c}case 3:{let r=Math.min(i,n)-e,a=Math.min(s,o)-e,h=Math.abs(n-i)+e*2,l=Math.abs(o-s)+e*2,u=h/2,c=l/2;return u<=0||c<=0?!1:(r=t.x-(r+u),a=t.y-(a+c),r*r/(u*u)+a*a/(c*c)<=1)}case 4:return this.OP(t,e,!0,!1);default:return!1}}OP(t,e,i,s){let n=t.x,o=t.y,r=this.bounds.x-20,a=o,h=0,l=0,u=0,c=0,d=0,f=0,p=this.figures.r,g=p.length;for(let y=0;y<g;y++){let b=p[y],v=!b.isEvenOdd;if(b.isFilled){if(i&&b.IP(n,o,e))return!0}else{if(b.IP(n,o,s?e:e+2))return!0;continue}let w=b.segments;l=b.startX,u=b.startY;let k=l,S=u,N=w.r,D=N[0];for(let L=0;L<=w.length;L++){let M;switch(L!==w.length?(D=N[L],M=D.type,d=D.endX,f=D.endY):(M=2,d=k,f=S),M){case 1:{let A=this.nx(n,o,r,a,l,u,k,S);if(isNaN(A))return!0;h+=A,k=d,S=f;break}case 2:{let A=this.nx(n,o,r,a,l,u,d,f);if(isNaN(A))return!0;h+=A;break}case 3:c=C.om(l,u,D.point1X,D.point1Y,D.point2X,D.point2Y,d,f,r,a,n,o,.5),h+=c;break;case 4:{let A=(l+2*D.point1X)/3,F=(u+2*D.point1Y)/3,O=(D.point1X*2+d)/3,E=(D.point1Y*2+f)/3;c=C.om(l,u,A,F,O,E,d,f,r,a,n,o,.5),h+=c;break}case 5:case 6:{let A=D.type===5?D.vo(b):D.$a(b,l,u),F=A.length;if(F===0){let E=this.nx(n,o,r,a,l,u,D.type===5?D.centerX:D.endX,D.type===5?D.centerY:D.endY);if(isNaN(E))return!0;h+=E;break}let O=null;for(let E=0;E<F;E++){if(O=A[E],E===0){let B=this.nx(n,o,r,a,l,u,O[0],O[1]);if(isNaN(B))return!0;h+=B}c=C.om(O[0],O[1],O[2],O[3],O[4],O[5],O[6],O[7],r,a,n,o,.5),h+=c}O!==null&&(d=O[6],f=O[7]);break}default:m.o("Unknown Segment type: "+D.type)}l=d,u=f}if(v){if(h!==0)return!0}else if(h%2!==0)return!0;h=0}return!1}nx(t,e,i,s,n,o,r,a){if(C.Ve(n,o,r,a,.05,t,e))return NaN;let h=(t-i)*(o-a);if(h===0)return 0;let l=((t*s-e*i)*(n-r)-(t-i)*(n*a-o*r))/h,u=(t*s-e*i)*(o-a)/h;if(l>=t)return 0;if((n>r?n-r:r-n)<(o>a?o-a:a-o)){if(o<a){if(u<o||u>a)return 0}else if(u<a||u>o)return 0}else if(n<r){if(l<n||l>r)return 0}else if(l<r||l>n)return 0;return h>0?1:-1}ZL(t,e,i){let s=this.figures.r,n=s.length;for(let o=0;o<n;o++)if(s[o].IP(t,e,i))return!0;return!1}getPointAlongPath(t,e){if(t<0?t=0:t>1&&(t=1),e===void 0&&(e=new P),this.type===1)return e.e(this.startX+t*(this.endX-this.startX),this.startY+t*(this.endY-this.startY)),e;let i=this.flattenedSegments,s=this.flattenedLengths,n=this.flattenedTotalLength,o=i.length,r=n*t,a=0;for(let h=0;h<o;h++){let l=s[h],u=l.length;for(let c=0;c<u;c++){let d=l[c];if(a+d>=r){let f=r-a,p=d===0?0:f/d,g=i[h],y=g[c*2],b=g[c*2+1],v=g[c*2+2],w=g[c*2+3];return e.e(y+(v-y)*p,b+(w-b)*p),e}a+=d}}return e}getAngleAlongPath(t){if(t<0?t=0:t>1&&(t=1),this.type===1)return Math.atan2(this.endY-this.startY,this.endX-this.startX)*180/Math.PI;let e=this.flattenedSegments,i=this.flattenedLengths,s=this.flattenedTotalLength,n=e.length,o=s*t,r=0;for(let a=0;a<n;a++){let h=i[a],l=h.length;for(let u=0;u<l;u++){let c=h[u];if(r+c>=o){let d=e[a],f=d[u*2],p=d[u*2+1],g=d[u*2+2],y=d[u*2+3];return Math.abs(g-f)<1&&Math.abs(y-p)<1?0:Math.abs(g-f)<1?y-p>=0?90:270:Math.abs(y-p)<1?g-f>=0?0:180:Math.atan2(y-p,g-f)*180/Math.PI}r+=c}}return NaN}getPointAndAngleAlongPath(t,e){if(t<0?t=0:t>1&&(t=1),e===void 0&&(e=[]),e.length=3,this.type===1)return e[0]=this.startX+t*(this.endX-this.startX),e[1]=this.startY+t*(this.endY-this.startY),e[2]=Math.atan2(this.endY-this.startY,this.endX-this.startX)*180/Math.PI,e;let i=this.flattenedSegments,s=this.flattenedLengths,n=this.flattenedTotalLength,o=i.length,r=n*t,a=0;for(let h=0;h<o;h++){let l=s[h],u=l.length;for(let c=0;c<u;c++){let d=l[c];if(a+d>=r){let f=r-a,p=d===0?0:f/d,g=i[h],y=g[c*2],b=g[c*2+1],v=g[c*2+2],w=g[c*2+3];e[0]=y+(v-y)*p,e[1]=b+(w-b)*p;let k;return Math.abs(v-y)<1&&Math.abs(w-b)<1?k=0:Math.abs(v-y)<1?k=w-b>=0?90:270:Math.abs(w-b)<1?k=v-y>=0?0:180:k=Math.atan2(w-b,v-y)*180/Math.PI,e[2]=k,e}a+=d}}return e}getFractionForPoint(t){if(this.type===1){let e=this.startX,i=this.startY,s=this.endX,n=this.endY;if(e===s&&i===n)return 0;{let o=t.x,r=t.y,a=0,h=0;if(e===s)return i<n?(a=i,h=n):(a=n,h=i),r<=a?a===i?0:1:r>=h?h===i?0:1:Math.abs(r-i)/(h-a);if(i===n)return e<s?(a=e,h=s):(a=s,h=e),o<=a?a===e?0:1:o>=h?h===e?0:1:Math.abs(o-e)/(h-a);{let l=(s-e)**2+(n-i)**2,u=P.l();C.Ll(e,i,s,n,o,r,u);let c=u.x,d=u.y;return P.i(u),Math.sqrt(((c-e)**2+(d-i)**2)/l)}}}else if(this.type===2){let e=this.startX,i=this.startY,s=this.endX,n=this.endY;if(e===s&&i===n)return 0;{let o=s-e,r=n-i,a=o*2+r*2,h=t.x,l=t.y;h=Math.min(Math.max(h,e),s),l=Math.min(Math.max(l,i),n);let u=Math.abs(h-e),c=Math.abs(h-s),d=Math.abs(l-i),f=Math.abs(l-n),p=Math.min(u,c,d,f);if(p===d)return h/a;if(p===c)return(o+l)/a;if(p===f)return(o*2+r-h)/a;if(p===u)return(o*2+r*2-l)/a}}else{let e=this.flattenedSegments,i=this.flattenedLengths,s=this.flattenedTotalLength,n=P.l(),o=1/0,r=0,a=0,h=e.length,l=0,u=0;for(let d=0;d<h;d++){let f=e[d],p=i[d],g=f.length;for(let y=0;y<g;y+=2){let b=f[y],v=f[y+1];if(y===0){l=b,u=v;continue}C.Ll(l,u,b,v,t.x,t.y,n);let w=(n.x-t.x)**2+(n.y-t.y)**2;w<o&&(o=w,r=a,r+=Math.sqrt((n.x-l)**2+(n.y-u)**2)),a+=p[(y-2)/2],l=b,u=v}}P.i(n);let c=r/s;return c<0?0:c>1?1:c}return 0}get flattenedSegments(){return this.QL(),this.kc}QL(){if(this.kc===null){let t=this.kc=[],e=this.Nu=[];this.oR(t,e)}}get flattenedLengths(){return this.QL(),this.Nu}get flattenedTotalLength(){let t=this.Lu;if(isNaN(t)){if(this.type===1){let e=Math.abs(this.endX-this.startX),i=Math.abs(this.endY-this.startY);t=Math.sqrt(e*e+i*i)}else if(this.type===2){let e=Math.abs(this.endX-this.startX),i=Math.abs(this.endY-this.startY);t=e*2+i*2}else{let e=this.flattenedLengths,i=e.length;t=0;for(let s=0;s<i;s++){let n=e[s],o=n.length;for(let r=0;r<o;r++)t+=n[r]}}this.Lu=t}return t}EP(t){let e=[],i=0,s=0,n=t.length;for(let o=0;o<n;o+=2){let r=t[o],a=t[o+1];if(o===0){i=r,s=a;continue}let h=Math.sqrt(P.distanceSquared(i,s,r,a));e.push(h),i=r,s=a}return e}oR(t,e){let i=[],s=[];if(this.type===1)i.push(this.startX),i.push(this.startY),i.push(this.endX),i.push(this.endY),t.push(i),s.push(Math.sqrt((this.startX-this.endX)**2+(this.startY-this.endY)**2)),e.push(s);else if(this.type===2)i.push(this.startX),i.push(this.startY),i.push(this.endX),i.push(this.startY),i.push(this.endX),i.push(this.endY),i.push(this.startX),i.push(this.endY),i.push(this.startX),i.push(this.startY),t.push(i),s.push(Math.abs(this.startX-this.endX)),s.push(Math.abs(this.startY-this.endY)),s.push(Math.abs(this.startX-this.endX)),s.push(Math.abs(this.startY-this.endY)),e.push(s);else if(this.type===3){let n=new zt;n.startX=this.endX,n.startY=(this.startY+this.endY)/2;let o=new mt(5);o.startAngle=0,o.sweepAngle=360,o.centerX=(this.startX+this.endX)/2,o.centerY=(this.startY+this.endY)/2,o.radiusX=Math.abs(this.startX-this.endX)/2,o.radiusY=Math.abs(this.startY-this.endY)/2,n.add(o);let r=o.vo(n),a=r.length;if(a===0)i.push(o.centerX),i.push(o.centerY);else{let h=n.startX,l=n.startY;for(let u=0;u<a;u++){let c=r[u];C.qn(h,l,c[2],c[3],c[4],c[5],c[6],c[7],.5,i),h=c[6],l=c[7]}}t.push(i),e.push(this.EP(i))}else{let n=this.figures.iterator;for(;n.next();){let o=n.value;i=[],i.push(o.startX),i.push(o.startY);let r=o.startX,a=o.startY,h=r,l=a,u=o.segments.r,c=u.length;for(let d=0;d<c;d++){let f=u[d];switch(f.type){case 1:i.length>=4&&(t.push(i),e.push(this.EP(i))),i=[],i.push(f.endX),i.push(f.endY),r=f.endX,a=f.endY,h=r,l=a;break;case 2:i.push(f.endX),i.push(f.endY),r=f.endX,a=f.endY;break;case 3:C.qn(r,a,f.point1X,f.point1Y,f.point2X,f.point2Y,f.endX,f.endY,.5,i),r=f.endX,a=f.endY;break;case 4:C.sm(r,a,f.point1X,f.point1Y,f.endX,f.endY,.5,i),r=f.endX,a=f.endY;break;case 5:{let p=f.vo(o),g=p.length;if(g===0){i.push(f.centerX),i.push(f.centerY),r=f.centerX,a=f.centerY;break}for(let y=0;y<g;y++){let b=p[y];C.qn(r,a,b[2],b[3],b[4],b[5],b[6],b[7],.5,i),r=b[6],a=b[7]}break}case 6:{let p=f.$a(o,r,a),g=p.length,y=f.endX,b=f.endY;if(g===0){i.push(y),i.push(b),r=y,a=b;break}for(let v=0;v<g;v++){let w=p[v];C.qn(r,a,w[2],w[3],w[4],w[5],w[6],w[7],.5,i),r=w[6],a=w[7]}break}default:m.o("Segment not of valid type: "+f.type)}f.isClosed&&(i.push(h),i.push(l))}i.length>=4&&(t.push(i),e.push(this.EP(i)))}}}get type(){return this.W}set type(t){this.W!==t&&(this.u&&m.L(this,t),this.W=t,t===4?this.Ys=new q:(wt.ex===null&&(wt.ex=new q().k()),this.Ys=wt.ex),this.yt=!0)}get startX(){return this.Li}set startX(t){this.Li!==t&&(this.u&&m.L(this,t),this.Li=t,this.yt=!0)}get startY(){return this.Ai}set startY(t){this.Ai!==t&&(this.u&&m.L(this,t),this.Ai=t,this.yt=!0)}get endX(){return this.ni}set endX(t){this.ni!==t&&(this.u&&m.L(this,t),this.ni=t,this.yt=!0)}get endY(){return this.oi}set endY(t){this.oi!==t&&(this.u&&m.L(this,t),this.oi=t,this.yt=!0)}get figures(){return this.Ys}set figures(t){this.Ys!==t&&(this.u&&m.L(this,t),this.Ys=t,this.yt=!0)}add(t){return this.Ys.add(t),this}setSpots(t,e,i,s,n,o,r,a){return this.u&&m.L(this),this.Wn=new T(t,e,n,o),this.Jn=new T(i,s,r,a),this}get spot1(){return this.Wn}set spot1(t){this.u&&m.L(this,t),this.Wn=t.C()}get spot2(){return this.Jn}set spot2(t){this.u&&m.L(this,t),this.Jn=t.C()}get defaultStretch(){return this.$n}set defaultStretch(t){this.$n=t}get bounds(){return this.RP()&&this.ix(),this.hm}polygonClosestSegment(t,e){if(e===void 0&&(e=10),this.type!==4)return null;let i=t.x,s=t.y,n=1/0,o=0,r=0,a=0,h=0,l=0,u=0,c=0,d=0;return this.figures.each(f=>{let p=f.startX,g=f.startY;f.segments.each(y=>{let b=y.endX,v=y.endY,w=0;if(y.type===2)w=P.distanceLineSegmentSquared(i,s,p,g,b,v);else{p=y.endX,g=y.endY;return}w<n&&(n=w,o=a,r=h,l=p,u=g,c=b,d=v),p=b,g=v,h++,y.isClosed&&(b=f.startX,v=f.startY,w=P.distanceLineSegmentSquared(i,s,p,g,b,v),w<n&&(n=w,o=a,r=h,l=p,u=g,c=b,d=v),h++)}),a++,h=0}),n<e*e?{figi:o,segi:r,ax:l,ay:u,bx:c,by:d}:null}get polygonArea(){if(this.type===4){let t=this.figures.iterator,e=0,i=0,s=0,n=0,o=0;for(;t.next();){let r=t.value;if(!r.isFilled)continue;e=r.startX,i=r.startY;let a=r.segments.iterator;for(;a.next();){let h=a.value;s=h.endX,n=h.endY,h.type===1||h.type!==5&&(o+=e*n-i*s),e=s,i=n}o+=e*r.startY-i*r.startX}return Math.abs(o)/2}else if(this.type===2){let t=Math.abs(this.startX-this.endX),e=Math.abs(this.startY-this.endY);return t*e}else if(this.type===3){let t=Math.abs(this.startX-this.endX),e=Math.abs(this.startY-this.endY);return Math.PI*t/2*e/2}else return 0}get polygonLength(){if(this.type===4){let t=this.figures.iterator,e=0,i=0,s=0,n=0,o=0;for(;t.next();){let r=t.value;e=r.startX,i=r.startY;let a=r.segments.iterator;for(;a.next();){let l=a.value;s=l.endX,n=l.endY,l.type===1||l.type!==5&&(o+=Math.sqrt((s-e)*(s-e)+(n-i)*(n-i))),e=s,i=n}let h=r.segments.last();h&&h.isClosed&&(s=r.startX,n=r.startY,o+=Math.sqrt((s-e)*(s-e)+(n-i)*(n-i)))}return o}else if(this.type===2){let t=Math.abs(this.startX-this.endX),e=Math.abs(this.startY-this.endY);return t*2+e*2}else if(this.type===3){let t=Math.abs(this.startX-this.endX)/2,e=Math.abs(this.startY-this.endY)/2;if(t+e===0)return 0;let i=(t-e)*(t-e)/((t+e)*(t+e)),s=i,n=1+s/4;return s*=i,n+=s/64,s*=i,n+=s/256,s*=i,n+=s*25/16384,s*=i,n+=s*49/65536,s*=i,n+=s*441/1048576,Math.PI*(t+e)*n}else{let t=this.startX,e=this.startY,i=this.endX,s=this.endY;return Math.sqrt((i-t)*(i-t)+(s-e)*(s-e))}}static computeConvexHull(t){t.sort((s,n)=>s.x===n.x?n.y-s.y:n.x-s.x);let e=[];for(let s=0;s<t.length;s++){for(;e.length>=2&&t[s].compareWithLineSegmentPoint(e[e.length-2],e[e.length-1])>=0;)e.pop();e.push(t[s])}e.pop();let i=[];for(let s=t.length-1;s>=0;s--){for(;i.length>=2&&t[s].compareWithLineSegmentPoint(i[i.length-2],i[i.length-1])>=0;)i.pop();i.push(t[s])}return i.pop(),e.concat(i)}static generatePolygon(t,e,i){e===void 0&&(e=0),i===void 0&&(i=!0);let s=new wt;if(t.length>1)if(e>0)if(i){t.push(t[0]),t.push(t[1]);let n=!0,o=new zt(0,0,i,!1);for(let a=1;a<t.length;a++){let h=(t[a-1].x+t[a].x)/2,l=(t[a-1].y+t[a].y)/2,u=t[a-1].distanceSquaredPoint(t[a]),c=.5*e/Math.sqrt(u);if(c<.5){let d=t[a-1].x+(t[a].x-t[a-1].x)*c,f=t[a-1].y+(t[a].y-t[a-1].y)*c;if(n?(n=!1,o.startX=d,o.startY=f):o.add(new mt(3,d,f,t[a-1].x,t[a-1].y,t[a-1].x,t[a-1].y)),a<t.length-1){let p=t[a].x+(t[a-1].x-t[a].x)*c,g=t[a].y+(t[a-1].y-t[a].y)*c;o.add(new mt(2,p,g))}}else n?(n=!1,o.startX=h,o.startY=l):o.add(new mt(3,h,l,t[a-1].x,t[a-1].y,t[a-1].x,t[a-1].y))}let r=o.segments.last();r&&r.close(),s.add(o)}else{let n=new zt(t[0].x,t[0].y,!1,!1);for(let o=1;o<t.length;o++){let r=(t[o-1].x+t[o].x)/2,a=(t[o-1].y+t[o].y)/2,h=t[o-1].distanceSquaredPoint(t[o]),l=.5*e/Math.sqrt(h);if(l<.5){if(o>1){let d=t[o-1].x+(t[o].x-t[o-1].x)*l,f=t[o-1].y+(t[o].y-t[o-1].y)*l;n.add(new mt(3,d,f,t[o-1].x,t[o-1].y,t[o-1].x,t[o-1].y))}let u=t[o].x+(t[o-1].x-t[o].x)*l,c=t[o].y+(t[o-1].y-t[o].y)*l;n.add(new mt(2,u,c))}else o>1&&n.add(new mt(3,r,a,t[o-1].x,t[o-1].y,t[o-1].x,t[o-1].y));o===t.length-1&&n.add(new mt(2,t[o].x,t[o].y))}s.add(n)}else{let n=new zt(t[0].x,t[0].y,i,!1);for(let o=1;o<t.length;o++)n.add(new mt(2,t[o].x,t[o].y));if(i){let o=n.segments.last();o&&o.close()}s.add(n)}return s}}wt.stringify=wt.stringify,wt.stringifyFixed=wt.stringifyFixed,wt.fillPath=wt.fillPath,wt.parse=wt.parse;class zt{n;Li;Ai;Mc;um;ji;constructor(t,e,i,s,n){i===void 0&&(i=!0),s===void 0&&(s=!0),n===void 0&&(n=!1),this.n=2|(i?4:0)|(s?8:0)|(n?16:0),t!==void 0?this.Li=t:this.Li=0,e!==void 0?this.Ai=e:this.Ai=0,this.Mc=new q,this.um=this.Mc.rt,this.ji=null}copy(){let t=new zt;t.n=this.n&-2,t.Li=this.Li,t.Ai=this.Ai;let e=this.Mc.r,i=e.length,s=t.Mc;for(let n=0;n<i;n++){let o=e[n].copy();s.add(o)}return t.um=this.um,t.ji=this.ji,t}equalsApprox(t){if(!(t instanceof zt)||!C.c(this.startX,t.startX)||!C.c(this.startY,t.startY))return!1;let e=this.segments.r,i=t.segments.r,s=e.length;if(s!==i.length)return!1;for(let n=0;n<s;n++){let o=e[n],r=i[n];if(!o.equalsApprox(r))return!1}return!0}toString(t){t===void 0&&(t=-1);let e="";if(t<0)e="M"+this.startX.toString()+" "+this.startY.toString();else{let n=o=>o===0?"0":o.toFixed(t);e="M"+n(this.startX)+" "+n(this.startY)}let i=this.segments.r,s=i.length;for(let n=0;n<s;n++){let o=i[n];e+=" "+o.toString(t)}return e}get u(){return(this.n&1)!==0}set u(t){t?this.n|=1:this.n&=-2}get yt(){return(this.n&2)!==0}set yt(t){t?this.n|=2:this.n&=-3}k(){this.u=!0;let t=this.segments;t.k();let e=t.r,i=t.length;for(let s=0;s<i;s++)e[s].k();return this}RP(){if(this.yt)return!0;let t=this.segments;if(this.um!==t.rt)return!0;for(let e of t)if(e.yt)return!0;return!1}sR(){this.yt=!1,this.ji=null;let t=this.segments;this.um=t.rt;for(let e of t)e.yt=!1,e.Hs=null}get isFilled(){return(this.n&4)!==0}set isFilled(t){this.u&&m.L(this,t),t?this.n|=4:this.n&=-5}get isShadowed(){return(this.n&8)!==0}set isShadowed(t){this.u&&m.L(this,t),t?this.n|=8:this.n&=-9}get isEvenOdd(){return(this.n&16)!==0}set isEvenOdd(t){this.u&&m.L(this,t),t?this.n|=16:this.n&=-17}get startX(){return this.Li}set startX(t){this.u&&m.L(this,t),this.Li=t,this.ji=null,this.yt=!0}get startY(){return this.Ai}set startY(t){this.u&&m.L(this,t),this.Ai=t,this.ji=null,this.yt=!0}get segments(){return this.Mc}set segments(t){this.u&&m.L(this,t),this.Mc=t,this.ji=null,this.yt=!0}add(t){return this.Mc.add(t),this.ji=null,this}IP(t,e,i){let s=this,n=s.startX,o=s.startY,r=n,a=o,h=s.segments.r,l=h.length;for(let u=0;u<l;u++){let c=h[u];switch(c.type){case 1:r=c.endX,a=c.endY,n=c.endX,o=c.endY;break;case 2:if(C.Ve(n,o,c.endX,c.endY,i,t,e))return!0;n=c.endX,o=c.endY;break;case 3:if(C._w(n,o,c.point1X,c.point1Y,c.point2X,c.point2Y,c.endX,c.endY,.5,t,e,i))return!0;n=c.endX,o=c.endY;break;case 4:if(C.vP(n,o,c.point1X,c.point1Y,c.endX,c.endY,.5,t,e,i))return!0;n=c.endX,o=c.endY;break;case 5:case 6:let d=c.type===5?c.vo(s):c.$a(s,n,o),f=d.length,p=c.type===5?c.centerX:c.endX,g=c.type===5?c.centerY:c.endY;if(f===0){if(C.Ve(n,o,p,g,i,t,e))return!0;n=p,o=g;break}let y=null;for(let b=0;b<f;b++)if(y=d[b],b===0&&C.Ve(n,o,y[0],y[1],i,t,e)||C._w(y[0],y[1],y[2],y[3],y[4],y[5],y[6],y[7],.5,t,e,i))return!0;y!==null&&(n=y[6],o=y[7]);break;default:m.o("Unknown Segment type: "+c.type)}if(c.isClosed&&(n!==r||o!==a)&&C.Ve(n,o,r,a,i,t,e))return!0}return!1}}var ni=(x=>(x[x.Move=1]="Move",x[x.Line=2]="Line",x[x.Bezier=3]="Bezier",x[x.QuadraticBezier=4]="QuadraticBezier",x[x.Arc=5]="Arc",x[x.SvgArc=6]="SvgArc",x))(ni||{});class mt{W;n;ni;oi;pn;Tl;Dl;xr;Hs;constructor(t,e,i,s,n,o,r,a){if(V.Je(this),t===void 0&&(t=2),this.W=t,this.n=2,e!==void 0?this.ni=e:this.ni=0,i!==void 0?this.oi=i:this.oi=0,s===void 0&&(s=0),n===void 0&&(n=0),o===void 0&&(o=0),r===void 0&&(r=0),t===6){let h=o;h=h%360,h<0&&(h+=360),this.pn=h,this.Tl=0,this.Dl=Math.max(s,0),this.xr=Math.max(n,0),typeof r=="boolean"?r&&(this.isLargeArc=!0):typeof r=="number"&&r&&(this.isLargeArc=!0),a&&(this.isClockwiseArc=!0)}else this.pn=s,this.Tl=n,t===5&&(o=Math.max(o,0)),this.Dl=o,typeof r=="number"?(t===5&&(r=Math.max(r,0)),this.xr=r):this.xr=0;this.Hs=null}copy(){let t=new mt;return t.W=this.W,t.n=this.n&-2,t.ni=this.ni,t.oi=this.oi,t.pn=this.pn,t.Tl=this.Tl,t.Dl=this.Dl,t.xr=this.xr,t}equalsApprox(t){if(!(t instanceof mt)||this.type!==t.type||this.isClosed!==t.isClosed)return!1;switch(this.type){case 1:case 2:return C.c(this.endX,t.endX)&&C.c(this.endY,t.endY);case 3:return C.c(this.endX,t.endX)&&C.c(this.endY,t.endY)&&C.c(this.point1X,t.point1X)&&C.c(this.point1Y,t.point1Y)&&C.c(this.point2X,t.point2X)&&C.c(this.point2Y,t.point2Y);case 4:return C.c(this.endX,t.endX)&&C.c(this.endY,t.endY)&&C.c(this.point1X,t.point1X)&&C.c(this.point1Y,t.point1Y);case 5:return C.c(this.startAngle,t.startAngle)&&C.c(this.sweepAngle,t.sweepAngle)&&C.c(this.centerX,t.centerX)&&C.c(this.centerY,t.centerY)&&C.c(this.radiusX,t.radiusX)&&C.c(this.radiusY,t.radiusY);case 6:return this.isClockwiseArc===t.isClockwiseArc&&this.isLargeArc===t.isLargeArc&&C.c(this.xAxisRotation,t.xAxisRotation)&&C.c(this.endX,t.endX)&&C.c(this.endY,t.endY)&&C.c(this.radiusX,t.radiusX)&&C.c(this.radiusY,t.radiusY);default:return!1}}fe(t){t in ni?this.type=t:m.ur(this,t)}toString(t){t===void 0&&(t=-1);let e=s=>s===0?"0":s.toFixed(t),i="";switch(this.type){case 1:t<0?i="M"+this.endX.toString()+" "+this.endY.toString():i="M"+e(this.endX)+" "+e(this.endY);break;case 2:t<0?i="L"+this.endX.toString()+" "+this.endY.toString():i="L"+e(this.endX)+" "+e(this.endY);break;case 3:t<0?i="C"+this.point1X.toString()+" "+this.point1Y.toString()+" "+this.point2X.toString()+" "+this.point2Y.toString()+" "+this.endX.toString()+" "+this.endY.toString():i="C"+e(this.point1X)+" "+e(this.point1Y)+" "+e(this.point2X)+" "+e(this.point2Y)+" "+e(this.endX)+" "+e(this.endY);break;case 4:t<0?i="Q"+this.point1X.toString()+" "+this.point1Y.toString()+" "+this.endX.toString()+" "+this.endY.toString():i="Q"+e(this.point1X)+" "+e(this.point1Y)+" "+e(this.endX)+" "+e(this.endY);break;case 5:t<0?i="B"+this.startAngle.toString()+" "+this.sweepAngle.toString()+" "+this.centerX.toString()+" "+this.centerY.toString()+" "+this.radiusX.toString()+" "+this.radiusY.toString():i="B"+e(this.startAngle)+" "+e(this.sweepAngle)+" "+e(this.centerX)+" "+e(this.centerY)+" "+e(this.radiusX)+" "+e(this.radiusY);break;case 6:t<0?i="A"+this.radiusX.toString()+" "+this.radiusY.toString()+" "+this.xAxisRotation.toString()+" "+(this.isLargeArc?1:0)+" "+(this.isClockwiseArc?1:0)+" "+this.endX.toString()+" "+this.endY.toString():i="A"+e(this.radiusX)+" "+e(this.radiusY)+" "+e(this.xAxisRotation)+" "+(this.isLargeArc?1:0)+" "+(this.isClockwiseArc?1:0)+" "+e(this.endX)+" "+e(this.endY);break;default:i=ni[this.type]}return i+(this.isClosed?"z":"")}static Move=1;static Line=2;static Bezier=3;static QuadraticBezier=4;static Arc=5;static SvgArc=6;get u(){return(this.n&1)!==0}set u(t){t?this.n|=1:this.n&=-2}get yt(){return(this.n&2)!==0}set yt(t){t?this.n|=2:this.n&=-3}k(){return this.u=!0,this}close(){return this.isClosed=!0,this}vo(t){if(this.Hs!==null&&t.yt===!1)return this.Hs;let e=this.radiusX,i=this.radiusY;if(i===void 0&&(i=e),e===0||i===0)return this.Hs=[],this.Hs;let s=this.pn,n=this.Tl,o=C.KL(0,0,e<i?e:i,this.startAngle,this.startAngle+this.sweepAngle,!1);if(e!==i){let a=Nt.l();a.Ue(),e<i?a.et(1,i/e):a.et(e/i,1),wt.JL(o,a),Nt.i(a)}let r=o.length;for(let a=0;a<r;a++){let h=o[a];h[0]+=s,h[1]+=n,h[2]+=s,h[3]+=n,h[4]+=s,h[5]+=n,h[6]+=s,h[7]+=n}return this.Hs=o,this.Hs}$a(t,e,i){if(this.Hs!==null&&t.yt===!1)return this.Hs;if(this.radiusX===0||this.radiusY===0)return this.Hs=[],this.Hs;let s=e,n=i,o=this.Dl,r=this.xr;o===0&&(o=1e-4),r===0&&(r=1e-4);let a=this.pn*(Math.PI/180),h=this.isLargeArc,l=this.isClockwiseArc,u=this.ni,c=this.oi,d=Math.cos(a),f=Math.sin(a),p=d*(s-u)/2+f*(n-c)/2,g=-f*(s-u)/2+d*(n-c)/2,y=p*p/(o*o)+g*g/(r*r);y>1&&(o*=Math.sqrt(y),r*=Math.sqrt(y));let b=(h===l?-1:1)*Math.sqrt((o*o*r*r-o*o*g*g-r*r*p*p)/(o*o*g*g+r*r*p*p));isNaN(b)&&(b=0);let v=b*o*g/r,w=b*-r*p/o;isNaN(v)&&(v=0),isNaN(w)&&(w=0);let k=(s+u)/2+d*v-f*w,S=(n+c)/2+f*v+d*w,N=(et,Q)=>Math.sqrt(et*et+Q*Q),D=(et,Q,rt,ft)=>(et*rt+Q*ft)/(N(et,Q)*N(rt,ft)),L=(et,Q,rt,ft)=>(et*ft<Q*rt?-1:1)*Math.acos(D(et,Q,rt,ft)),M=L(1,0,(p-v)/o,(g-w)/r),A=(p-v)/o,F=(g-w)/r,O=(-p-v)/o,E=(-g-w)/r,B=L(A,F,O,E),X=D(A,F,O,E);X<=-1?B=Math.PI:X>=1&&(B=0),!l&&B>0&&(B=B-2*Math.PI),l&&B<0&&(B=B+2*Math.PI);let z=o>r?o:r,U=o>r?1:o/r,tt=o>r?r/o:1,st=C.KL(0,0,z,M,M+B,!0),Z=Nt.l();return Z.Ue(),Z.Gs(k,S),Z.ks(this.pn,0,0),Z.et(U,tt),wt.JL(st,Z),Nt.i(Z),this.Hs=st,this.Hs}get isClosed(){return(this.n&8)!==0}set isClosed(t){this.isClosed!==t&&(t?this.n|=8:this.n&=-9,this.yt=!0)}get type(){return this.W}set type(t){this.u&&m.L(this,t),this.W=t,this.yt=!0}get endX(){return this.ni}set endX(t){this.u&&m.L(this,t),this.ni=t,this.yt=!0}get endY(){return this.oi}set endY(t){this.u&&m.L(this,t),this.oi=t,this.yt=!0}get point1X(){return this.pn}set point1X(t){this.u&&m.L(this,t),this.pn=t,this.yt=!0}get point1Y(){return this.Tl}set point1Y(t){this.u&&m.L(this,t),this.Tl=t,this.yt=!0}get point2X(){return this.Dl}set point2X(t){this.u&&m.L(this,t),this.Dl=t,this.yt=!0}get point2Y(){return this.xr}set point2Y(t){this.u&&m.L(this,t),this.xr=t,this.yt=!0}get centerX(){return this.pn}set centerX(t){this.u&&m.L(this,t),this.pn=t,this.yt=!0}get centerY(){return this.Tl}set centerY(t){this.u&&m.L(this,t),this.Tl=t,this.yt=!0}get radiusX(){return this.Dl}set radiusX(t){t<0&&m.J(t,">= zero",mt,"radiusX"),this.u&&m.L(this,t),this.Dl=t,this.yt=!0}get radiusY(){return this.xr}set radiusY(t){t<0&&m.J(t,">= zero",mt,"radiusY"),this.u&&m.L(this,t),this.xr=t,this.yt=!0}get startAngle(){return this.ni}set startAngle(t){this.u&&m.L(this,t),t=t%360,t<0&&(t+=360),this.ni=t,this.yt=!0}get sweepAngle(){return this.oi}set sweepAngle(t){this.u&&m.L(this,t),t>360&&(t=360),t<-360&&(t=-360),this.oi=t,this.yt=!0}get isClockwiseArc(){return(this.n&4)!==0}set isClockwiseArc(t){this.u&&m.L(this,t),t?this.n|=4:this.n&=-5,this.yt=!0}get isLargeArc(){return(this.n&16)!==0}set isLargeArc(t){this.u&&m.L(this,t),t?this.n|=16:this.n&=-17,this.yt=!0}get xAxisRotation(){return this.pn}set xAxisRotation(t){this.u&&m.L(this,t),t=t%360,t<0&&(t+=360),this.pn=t,this.yt=!0}}class te{a;lx;hx;dm;gm;mm;pm;ym;wm;xm;bm;km;Pm;Sm;Fo;Mm;Cm;Ps;Ti;constructor(){this.a=null,this.lx=new P(0,0).k(),this.hx=new P(0,0).k(),this.dm=0,this.gm=0,this.mm=1,this.pm="",this.ym="",this.wm=!1,this.xm=!1,this.bm=0,this.km=0,this.Pm=!1,this.Sm=!1,this.Fo=!1,this.Mm=null,this.Cm=0,this.Ps=null,this.Ti=null}copy(){let t=new te;return this.clone(t)}clone(t){return t.a=this.a,t.lx.h(this.viewPoint),t.hx.h(this.documentPoint),t.dm=this.dm,t.gm=this.gm,t.mm=this.mm,t.pm=this.pm,t.ym=this.ym,t.wm=this.wm,t.xm=this.xm,t.bm=this.bm,t.km=this.km,t.Pm=this.Pm,t.Sm=this.Sm,t.Fo=this.Fo,t.Mm=this.Mm,t.Cm=this.Cm,t.Ps=this.Ps,t.Ti=this.Ti,t}toString(){let t="^";return this.modifiers!==0&&(t+="M:"+this.modifiers),this.button!==0&&(t+="B:"+this.button),this.key!==""&&(t+="K:"+this.key),this.clickCount!==0&&(t+="C:"+this.clickCount),this.delta!==0&&(t+="D:"+this.delta),this.handled&&(t+="h"),this.bubbles&&(t+="b"),this.documentPoint!==null&&(t+="@"+this.documentPoint.toString()),t}get diagram(){return this.a}set diagram(t){this.a=t}get viewPoint(){return this.lx}set viewPoint(t){this.lx.h(t)}get documentPoint(){return this.hx}set documentPoint(t){this.hx.h(t)}getMultiTouchViewPoint(t,e){let i=this.diagram;return i===null||i._L(this.event,t,e),e}getMultiTouchDocumentPoint(t,e){let i=this.diagram;return i===null||(i._L(this.event,t,e),e.h(i.transformViewToDoc(e))),e}get modifiers(){return this.dm}set modifiers(t){this.dm=t}get button(){return this.gm}set button(t){if(this.gm=t,this.event===null)switch(t){case 0:this.buttons=1;return;case 1:this.buttons=4;return;case 2:this.buttons=2;return}}get buttons(){return this.mm}set buttons(t){this.mm=t}get key(){return this.pm}set key(t){this.pm=t}get code(){return this.ym}set code(t){this.ym=t}get down(){return this.wm}set down(t){this.wm=t}get up(){return this.xm}set up(t){this.xm=t}get clickCount(){return this.bm}set clickCount(t){this.bm=t}get delta(){return this.km}set delta(t){this.km=t}get isMultiTouch(){return this.Pm}set isMultiTouch(t){this.Pm=t}get handled(){return this.Sm}set handled(t){this.Sm=t}get bubbles(){return this.Fo}set bubbles(t){this.Fo=t}get event(){return this.Mm}set event(t){this.Mm=t}get isTouchEvent(){let t=this.event;return t===null?!1:t.pointerType==="touch"||t.pointerType==="pen"}get timestamp(){return this.Cm}set timestamp(t){this.Cm=t}get targetDiagram(){return this.Ps}set targetDiagram(t){this.Ps=t}get targetObject(){return this.Ti}set targetObject(t){this.Ti=t}get control(){return(this.modifiers&1)!==0}set control(t){this.modifiers=t?this.modifiers|1:this.modifiers&-2}get shift(){return(this.modifiers&4)!==0}set shift(t){this.modifiers=t?this.modifiers|4:this.modifiers&-5}get alt(){return(this.modifiers&2)!==0}set alt(t){this.modifiers=t?this.modifiers|2:this.modifiers&-3}get meta(){return(this.modifiers&8)!==0}set meta(t){this.modifiers=t?this.modifiers|8:this.modifiers&-9}get left(){let t=this.event;return t!==null&&(t.type==="mousedown"||t.type==="mouseup"||t.type==="pointerdown"||t.type==="pointerup")?this.button===0:(this.buttons&1)!==0}set left(t){t?this.buttons|=1:this.buttons&=-2}get right(){let t=this.event;return t!==null&&(t.type==="mousedown"||t.type==="mouseup"||t.type==="pointerdown"||t.type==="pointerup")?this.button===2:(this.buttons&2)!==0}set right(t){t?this.buttons|=2:this.buttons&=-3}get middle(){let t=this.event;return t!==null&&(t.type==="mousedown"||t.type==="mouseup"||t.type==="pointerdown"||t.type==="pointerup")?this.button===1:(this.buttons&4)!==0}set middle(t){t?this.buttons|=4:this.buttons&=-5}get commandKey(){let t=this.code,e=this.key;return"cxvyzagCXVYZAG".includes(e)?e.toLowerCase():t==="KeyC"?"c":t==="KeyX"?"x":t==="KeyV"?"v":t==="KeyY"?"y":t==="KeyZ"?"z":t==="KeyA"?"a":t==="KeyG"?"g":t!==""?t:e}}class wi{a;Pt;Nm;Lm;constructor(){this.a=null,this.Pt="",this.Nm=null,this.Lm=null}copy(){let t=new wi;return t.a=this.a,t.Pt=this.Pt,t.Nm=this.Nm,t.Lm=this.Lm,t}toString(){let t="*"+this.name;return this.subject!==null&&(t+=":"+this.subject.toString()),this.parameter!==null&&(t+="("+this.parameter.toString()+")"),t}get diagram(){return this.a}set diagram(t){this.a=t}get name(){return this.Pt}set name(t){this.Pt=t}get subject(){return this.Nm}set subject(t){this.Nm=t}get parameter(){return this.Lm}set parameter(t){this.Lm=t}}var Ei=(x=>(x[x.Transaction=1]="Transaction",x[x.Property=2]="Property",x[x.Insert=3]="Insert",x[x.Remove=4]="Remove",x))(Ei||{});class ze{Du;Am;yn;Le;a;vu;Cc;Nc;Lc;Ac;constructor(){this.Du=2,this.Am="",this.yn="",this.Le=null,this.a=null,this.vu=null,this.Cc=null,this.Nc=null,this.Lc=null,this.Ac=null}static Transaction=1;static Property=2;static Insert=3;static Remove=4;clear(){this.Le=null,this.a=null,this.vu=null,this.Cc=null,this.Nc=null,this.Lc=null,this.Ac=null}copy(){let t=new ze;t.Du=this.Du,t.Am=this.Am,t.yn=this.yn,t.Le=this.Le,t.a=this.a,t.vu=this.vu;let e=this.Cc;return m.$(e)&&m.it(e.copyFrozen)?t.Cc=e.copyFrozen():t.Cc=e,e=this.Nc,m.$(e)&&m.it(e.copyFrozen)?t.Nc=e.copyFrozen():t.Nc=e,e=this.Lc,m.$(e)&&m.it(e.copyFrozen)?t.Lc=e.copyFrozen():t.Lc=e,e=this.Ac,m.$(e)&&m.it(e.copyFrozen)?t.Ac=e.copyFrozen():t.Ac=e,t}fe(t){t in Ei?this.change=t:m.ur(this,t)}toString(){let t="";return this.change===1?t+="* ":this.change===2?t+=this.model!==null?"!m":"!d":t+=(this.model!==null?"!m":"!d")+this.change,this.propertyName&&typeof this.propertyName=="string"&&(t+=" "+this.propertyName),this.modelChange&&this.modelChange!==this.propertyName&&(t+=" "+this.modelChange),t+=": ",this.change===1?this.oldValue!==null&&(t+=" "+this.oldValue):(this.object!==null&&(t+=m.toString(this.object)),this.oldValue!==null&&(t+=" old: "+m.toString(this.oldValue)),this.oldParam!==null&&(t+=" "+this.oldParam),this.newValue!==null&&(t+=" new: "+m.toString(this.newValue)),this.newParam!==null&&(t+=" "+this.newParam)),t}getValue(t){return t?this.oldValue:this.newValue}getParam(t){return t?this.oldParam:this.newParam}canUndo(){return this.model!==null||this.diagram!==null}undo(){this.canUndo()&&(this.model!==null?this.model.changeState(this,!0):this.diagram!==null&&this.diagram.tA(this,!0))}canRedo(){return this.model!==null||this.diagram!==null}redo(){this.canRedo()&&(this.model!==null?this.model.changeState(this,!1):this.diagram!==null&&this.diagram.tA(this,!1))}get model(){return this.Le}set model(t){this.Le=t}get diagram(){return this.a}set diagram(t){this.a=t}get change(){return this.Du}set change(t){this.Du=t}get modelChange(){return this.Am}set modelChange(t){this.Am=t}get propertyName(){return this.yn}set propertyName(t){this.yn=t}get isTransactionFinished(){return this.Du===1&&(this.yn==="CommittedTransaction"||this.yn==="FinishedUndo"||this.yn==="FinishedRedo")}get object(){return this.vu}set object(t){this.vu=t}get oldValue(){return this.Cc}set oldValue(t){this.Cc=t}get oldParam(){return this.Nc}set oldParam(t){this.Nc=t}get newValue(){return this.Lc}set newValue(t){this.Lc=t}get newParam(){return this.Ac}set newParam(t){this.Ac=t}}class oi{eA;Pt;UP;constructor(){this.eA=new q().k(),this.Pt="",this.UP=!1}toString(t){let e="Transaction: "+this.name+" "+this.changes.count.toString()+(this.isComplete?"":", incomplete");if(t!==void 0&&t>0){let i=this.changes.count;for(let s=0;s<i;s++){let n=this.changes.elt(s);n!==null&&(e+=`
4
4
  `+n.toString())}}return e}clear(){let t=this.changes;t.ce();for(let e=t.count-1;e>=0;e--){let i=t.elt(e);i!==null&&i.clear()}t.clear(),t.k()}canUndo(){return this.isComplete}undo(){if(this.canUndo())for(let t=this.changes.count-1;t>=0;t--){let e=this.changes.elt(t);e!==null&&e.undo()}}canRedo(){return this.isComplete}redo(){if(!this.canRedo())return;let t=this.changes.count;for(let e=0;e<t;e++){let i=this.changes.elt(e);i!==null&&i.redo()}}rR(t){let e=this.changes;for(let i=e.count-1;i>=t;i--){let s=e.elt(i);s!==null&&s.undo(),e.ce(),e.removeAt(i)}e.k()}thaw(){this.changes.ce()}optimize(){if(!this.isComplete)return;let t=this.changes;t.ce();let e=new Map;for(let s=0;s<t.count;s++){let n=t.elt(s);if(n===null||n.change!==2||!n.object)continue;let o=e.get(n.object);o||(o=new Map,e.set(n.object,o));let r=o.get(n.propertyName);r===void 0?o.set(n.propertyName,-1):(r>0&&t.setElt(r,null),o.set(n.propertyName,s))}let i=0;for(let s=0;s<t.count;s++){let n=t.elt(s);n!==null&&(s>i&&t.setElt(i,n),i++)}for(;t.length>i;)t.pop();t.k()}get changes(){return this.eA}get name(){return this.Pt}set name(t){this.Pt=t}get isComplete(){return this.UP}set isComplete(t){this.UP=t}}class vi{cx;Be;iA;qs;VP;Tm;vl;BP;zP;wn;Tc;fx;js;ux;gx;Dm;mx;constructor(t){this.cx=new V,this.Be=!1,this.iA=new q().k(),this.qs=-1,this.VP=999,this.js=!1,this.Tm=null,this.vl=0,this.BP=!1,this.zP=23,this.wn=new q().k(),this.Tc=new q,this.fx=!0,this.ux=!1,this.gx=!1,this.Dm=!1,this.mx=!1,t&&Object.assign(this,t)}toString(t){let e="UndoManager "+this.historyIndex+"<"+this.history.count+"<="+this.maxHistoryLength;e+="[";let i=this.nestedTransactionNames.count;for(let s=0;s<i;s++)s>0&&(e+=" "),e+=this.nestedTransactionNames.elt(s);if(e+="]",t!==void 0&&t>0){i=this.history.count;for(let s=0;s<i;s++)e+=`
5
5
  `+this.history.elt(s).toString(t-1)}return e}clear(){let t=this.history;t.ce();for(let e=t.count-1;e>=0;e--){let i=t.elt(e);i!==null&&i.clear()}t.clear(),this.qs=-1,t.k(),this.js=!1,this.Tm=null,this.vl=0,this.wn.ce(),this.wn.clear(),this.wn.k(),this.Tc.clear(),this.ux=!1,this.gx=!1,this.Dm=!1,this.mx=!1}copyProperties(t){this.isEnabled=t.isEnabled,this.maxHistoryLength=t.maxHistoryLength,this.checksTransactionLevel=t.checksTransactionLevel}addModel(t){this.cx.add(t)}removeModel(t){this.cx.delete(t)}startTransaction(t){if(t===void 0&&(t=""),t===null&&(t=""),this.isUndoingRedoing)return!1;this.fx===!0&&(this.fx=!1,this.vl++,this.Fl||this.Rl("StartingFirstTransaction",t,this.currentTransaction),this.vl>0&&this.vl--),this.isEnabled&&(this.wn.ce(),this.wn.add(t),this.wn.k(),this.currentTransaction===null?this.Tc.add(0):this.Tc.add(this.currentTransaction.changes.count)),this.vl++;let e=this.transactionLevel===1;return e&&(this.Fl||this.Rl("StartedTransaction",t,this.currentTransaction)),e}commitTransaction(t){return t===void 0&&(t=""),this.sA(!0,t)}rollbackTransaction(){return this.sA(!1,"")}sA(t,e){if(this.isUndoingRedoing)return!1;this.checksTransactionLevel&&this.transactionLevel<1&&m.ne("Ending transaction without having started a transaction: "+e);let i=this.transactionLevel===1,s=this.currentTransaction;i&&t&&(this.Fl||this.Rl("CommittingTransaction",e,s));let n=0;if(this.transactionLevel>0&&(this.vl--,this.isEnabled)){let o=this.wn.count;o>0&&(e===""&&(e=this.wn.elt(0)),this.wn.ce(),this.wn.removeAt(o-1),this.wn.k());let r=this.Tc.count;r>0&&(n=this.Tc.elt(r-1),this.Tc.removeAt(r-1))}if(i){if(t){if(this.Dm=!1,s===null&&e!==""&&(s=this.currentTransaction),this.isEnabled&&s!==null){let o=s;o.isComplete||(o.isComplete=!0,o.name=e),this.discardHistoryAfterIndex();let r=this.history;r.ce();let a=this.maxHistoryLength;if(a>=0){if(a===0)r.clear();else if(r.count>=a){let h=r.elt(0);h!==null&&h.clear(),r.removeAt(0),this.qs--}}a!==0&&(r.count===0||r.get(r.count-1)!==o)&&(r.add(o),this.qs++),r.k(),s=o}this.Fl||this.Rl("CommittedTransaction",e,s)}else{this.js=!0;try{this.isEnabled&&s!==null&&(s.isComplete=!0,s.undo())}finally{this.Fl||this.Rl("RolledBackTransaction",e,s),this.js=!1}s!==null&&s.clear()}return this.Tm=null,this.yx&&this.clear(),this.yx=!1,this.wx=!1,!0}else return this.isEnabled&&!t&&s!==null&&s.rR(n),!1}discardHistoryAfterIndex(){if(this.isUndoingRedoing||!this.canRedo())return;let t=this.history;t.ce();for(let e=t.count-1;e>this.historyIndex;e--){let i=t.elt(e);i!==null&&i.clear(),t.removeAt(e),this.Dm=!0}t.k()}thaw(){this.history.ce()}canUndo(){if(!this.isEnabled||this.transactionLevel>0)return!1;let t=this.transactionToUndo;return!!(t!==null&&t.canUndo())}undo(){if(!this.canUndo())return;let t=this.transactionToUndo;if(t!==null)try{this.js=!0,this.Rl("StartingUndo","Undo",t),this.qs--,t.undo()}catch(e){m.ne("undo error: "+e.toString())}finally{this.Rl("FinishedUndo","Undo",t),this.js=!1}}canRedo(){if(!this.isEnabled||this.transactionLevel>0)return!1;let t=this.transactionToRedo;return!!(t!==null&&t.canRedo())}redo(){if(!this.canRedo())return;let t=this.transactionToRedo;if(t!==null)try{this.js=!0,this.Rl("StartingRedo","Redo",t),this.qs++,t.redo()}catch(e){m.ne("redo error: "+e.toString())}finally{this.Rl("FinishedRedo","Redo",t),this.js=!1}}Rl(t,e,i){let s=new ze;s.change=1,s.propertyName=t,s.object=i,s.oldValue=e;let n=this.models;for(;n.next();){let o=n.value;s.model=o,o.lR(s)}}handleChanged(t){if(this.isEnabled&&!this.isUndoingRedoing&&!this.skipsEvent(t)){let e=this.currentTransaction;e===null&&(e=new oi,this.Tm=e);let i=t.copy(),s=e.changes;if(s.ce(),s.add(i),s.k(),this.checksTransactionLevel&&this.zP>0&&this.transactionLevel<=0&&!this.fx){let n=t.diagram;if(n!==null&&n.Za===!1)return;m.ne("Change not within a transaction: "+i.toString()),this.zP--}}}skipsEvent(t){if(t===null||t.change===1)return!0;let e=t.object;if(e===null)return!1;if(e.layer!==void 0){let i=e.layer;if(i!==null&&i.isTemporary)return!0}else if(e.isTemporary)return!0;return!1}get models(){return this.cx.iterator}get isEnabled(){return this.Be}set isEnabled(t){this.Be=t}get transactionToUndo(){return this.historyIndex>=0&&this.historyIndex<=this.history.count-1?this.history.elt(this.historyIndex):null}get transactionToRedo(){return this.historyIndex<this.history.count-1?this.history.elt(this.historyIndex+1):null}get isUndoingRedoing(){return this.js}get history(){return this.iA}get maxHistoryLength(){return this.VP}set maxHistoryLength(t){this.VP=t}get historyIndex(){return this.qs}get currentTransaction(){return this.Tm}get transactionLevel(){return this.vl}get isInTransaction(){return this.vl>0}get checksTransactionLevel(){return this.BP}set checksTransactionLevel(t){this.BP=t}get nestedTransactionNames(){return this.wn}get yx(){return this.ux}set yx(t){this.ux=t}get wx(){return this.gx}set wx(t){this.gx=t}get Fl(){return this.mx}set Fl(t){this.mx=t}get isJustDiscarded(){return this.Dm}}class Zt{a;Pt;Be;XP;GP;vm;nA;constructor(){V.Je(this),this.a=Y.Fm(),this.Pt="",this.Be=!0,this.XP=!1,this.GP=null,this.nA=new te,this.vm=-1}get diagram(){return this.a}set diagram(t){t instanceof Y&&(this.a=t)}toString(){return this.name!==""?this.name+" Tool":m.Yn(this.constructor)}updateAdornments(t){}canStart(){return this.isEnabled}doStart(){}doActivate(){this.isActive=!0}doDeactivate(){this.isActive=!1}doStop(){}doCancel(){this.transactionResult=null,this.stopTool()}stopTool(){let t=this.diagram;t.currentTool===this&&(t.currentTool=null,t.currentCursor="")}doMouseDown(){!this.isActive&&this.canStart()&&this.doActivate()}doMouseMove(){}doMouseUp(){this.stopTool()}doMouseWheel(){}canStartMultiTouch(){return!0}standardPinchZoomStart(){let t=this.diagram,e=t.lastInput,i=e.getMultiTouchViewPoint(0,P.z(NaN,NaN)),s=e.getMultiTouchViewPoint(1,P.z(NaN,NaN));if(!i.isReal()||!s.isReal()){P.i(i),P.i(s);return}if(this.doCancel(),t.getInputOption("hasGestureZoom")){t.YP=t.scale;let n=s.x-i.x,o=s.y-i.y,r=Math.sqrt(n*n+o*o);t.KP=r,e.bubbles=!1}P.i(i),P.i(s)}standardPinchZoomMove(){let t=this.diagram,e=t.lastInput,i=e.getMultiTouchViewPoint(0,P.z(NaN,NaN)),s=e.getMultiTouchViewPoint(1,P.z(NaN,NaN));if(!i.isReal()||!s.isReal()){P.i(i),P.i(s);return}if(this.doCancel(),t.getInputOption("hasGestureZoom")){let n=s.x-i.x,o=s.y-i.y,r=Math.sqrt(n*n+o*o)/t.KP,a=new P((Math.min(s.x,i.x)+Math.max(s.x,i.x))/2,(Math.min(s.y,i.y)+Math.max(s.y,i.y))/2),h=t.YP*r,l=t.commandHandler;if(h!==t.scale&&l.canResetZoom(h)){let u=t.zoomPoint;t.zoomPoint=a,l.resetZoom(h),t.zoomPoint=u}e.bubbles=!1}P.i(i),P.i(s)}doKeyDown(){this.diagram.lastInput.code==="Escape"&&this.doCancel()}doKeyUp(){}startTransaction(t){return t===void 0&&(t=this.name),this.transactionResult=null,this.diagram.startTransaction(t)}stopTransaction(){let t=this.diagram;return this.transactionResult===null?t.rollbackTransaction():t.commitTransaction(this.transactionResult)}standardMouseSelect(){let t=this.diagram;if(!t.allowSelect)return;let e=t.lastInput,i=t.findPartAt(e.documentPoint,!1);if(i!==null){if(m.fr?e.meta:e.control){t.T("ChangingSelection",t.selection);let s=i;for(;s!==null&&!s.canSelect();)s=s.containingGroup;s!==null&&(s.isSelected=!s.isSelected),t.T("ChangedSelection",t.selection)}else if(e.shift){if(!i.isSelected){t.T("ChangingSelection",t.selection);let s=i;for(;s!==null&&!s.canSelect();)s=s.containingGroup;s!==null&&(s.isSelected=!0),t.T("ChangedSelection",t.selection)}}else if(!i.isSelected){let s=i;for(;s!==null&&!s.canSelect();)s=s.containingGroup;s!==null&&t.select(s)}}else e.left&&!(m.fr?e.meta:e.control)&&!e.shift&&t.clearSelection()}standardMouseClick(t,e){t===void 0&&(t=null),e===void 0&&(e=o=>!o.layer?.isTemporary);let i=this.diagram,s=i.lastInput,n=i.findObjectAt(s.documentPoint,t,e);return s.targetObject=n,this.oA(n,s,i)}oA(t,e,i){if(e.handled=!1,t!==null&&!t.isEnabledObject())return!1;let s=0;e.left?e.clickCount===1?s=1:e.clickCount===2?s=2:s=1:e.right&&e.clickCount===1&&(s=3);let n="ObjectSingleClicked";if(t!==null){switch(s){case 1:n="ObjectSingleClicked";break;case 2:n="ObjectDoubleClicked";break;case 3:n="ObjectContextClicked";break}s!==0&&i.T(n,t)}else{switch(s){case 1:n="BackgroundSingleClicked";break;case 2:n="BackgroundDoubleClicked";break;case 3:n="BackgroundContextClicked";break}s!==0&&i.T(n)}if(t!==null)for(;t!==null;){let o=null;switch(s){case 1:o=t.click;break;case 2:o=t.doubleClick?t.doubleClick:t.click;break;case 3:o=t.contextClick;break}if(o!==null&&(o(e,t),e.handled))break;t=t.panel}else{let o=null;switch(s){case 1:o=i.click;break;case 2:o=i.doubleClick?i.doubleClick:i.click;break;case 3:o=i.contextClick;break}o!==null&&o(e)}return e.handled}standardMouseOver(){let t=this.diagram,e=t.lastInput;if(t.animationManager.Pe===!0)return;let i=t.skipsUndoManager;t.skipsUndoManager=!0;let s=t.viewportBounds.containsPoint(e.documentPoint)?t.findObjectAt(e.documentPoint,null,null):null;e.event&&(e.event.type==="pointercancel"||e.event.type==="pointerout")&&(s=null),e.targetObject=s;let n=!1;if(s!==t.Dc){let o=t.Dc,r=o;for(t.Dc=s,this.rA(o,s),e.handled=!1;o!==null;){let a=o.mouseLeave;if(a!==null&&(s===o||s!==null&&s.isContainedBy(o)||(a(e,o,s),n=!0,e.handled)))break;o=o.panel}for(o=r,e.handled=!1;s!==null;){let a=s.mouseEnter;if(a!==null&&(o===s||o!==null&&o.isContainedBy(s)||(a(e,s,o),n=!0,e.handled)))break;s=s.panel}s=t.Dc}if(s!==null){let o=s,r="";for(;o!==null&&(r=o.cursor,r==="");)o=o.panel;for(t.currentCursor=r,e.handled=!1,o=s;o!==null;){let a=o.mouseOver;if(a!==null&&(a(e,o),n=!0,e.handled))break;o=o.panel}}else{this.doUpdateCursor(null);let o=t.mouseOver;o!==null&&(o(e),n=!0)}n&&t.requestUpdate(),t.skipsUndoManager=i}doUpdateCursor(t){let e=this.diagram;e&&(e.currentCursor="")}rA(t,e){}standardMouseWheel(){let t=this.diagram,e=t.lastInput,i=e.delta;if(i===0||!t.documentBounds.isReal())return;let s=t.commandHandler,n=t.toolManager.mouseWheelBehavior;if(s!==null&&(n===2&&!e.shift||n===1&&e.control)){if(i>0?s.canIncreaseZoom():s.canDecreaseZoom()){let o=t.zoomPoint;t.zoomPoint=e.viewPoint,i>0?s.increaseZoom():s.decreaseZoom(),t.zoomPoint=o}e.bubbles=!1}else if(n===2&&e.shift||n===1&&!e.control){let o=t.position.copy(),r=e.event,a=r.deltaMode,h=r.deltaX,l=r.deltaY,u="pixel";if((h!==0||l!==0)&&!e.shift){switch(a){case 0:u="pixel";break;case 1:u="line";break;case 2:u="page";break}if(h!==0&&t.allowHorizontalScroll){let c=t.scrollHorizontalLineChange;h=h*(c/16),t.scroll(u,h>0?"right":"left",Math.abs(h))}if(l!==0&&t.allowVerticalScroll){let c=t.scrollVerticalLineChange;l=l*(c/16),t.scroll(u,l>0?"down":"up",Math.abs(l))}}else!e.shift&&t.allowVerticalScroll?(i=i*3*t.scrollVerticalLineChange,t.scroll(u,i>0?"up":"down",Math.abs(i))):e.shift&&t.allowHorizontalScroll&&(i=i*3*t.scrollHorizontalLineChange,t.scroll(u,i>0?"left":"right",Math.abs(i)));this.doWheelChange(t,o,e)}}doWheelChange(t,e,i){(!t.position.equals(e)||i.event.wheelDeltaX!==0)&&(i.bubbles=!1)}standardWaitAfter(t,e){e===void 0&&(e=this.diagram.lastInput),this.cancelWaitAfter();let i=this,s=e.clone(this.nA);this.vm=m.dn(()=>i.doWaitAfter(s),t)}cancelWaitAfter(){this.vm!==-1&&m.yc(this.vm),this.vm=-1}doWaitAfter(t){}findToolHandleAt(t,e){let i=this.diagram.findObjectAt(t,s=>{for(;s!==null&&!(s.panel instanceof vt);)s=s.panel;return s});return i===null?null:i.part.category===e?i:null}isBeyondDragSize(t,e){let i=this.diagram;t===void 0&&(t=i.firstInput.viewPoint),e===void 0&&(e=i.lastInput.viewPoint);let s=i.toolManager.dragSize,n=s.width,o=s.height;return i.firstInput.isTouchEvent&&(n+=6,o+=6),Math.abs(e.x-t.x)>n||Math.abs(e.y-t.y)>o}get name(){return this.Pt}set name(t){m.s(t,"string",Zt,"name"),this.Pt=t}get isEnabled(){return this.Be}set isEnabled(t){m.s(t,"boolean",Zt,"isEnabled"),this.Be=t}get isActive(){return this.XP}set isActive(t){m.s(t,"boolean",Zt,"isActive"),this.XP=t}get transactionResult(){return this.GP}set transactionResult(t){t!==null&&m.s(t,"string",Zt,"transactionResult"),this.GP=t}}var Cs=(x=>(x[x.Scroll=1]="Scroll",x[x.Zoom=2]="Zoom",x[x.None=3]="None",x))(Cs||{}),As=(x=>(x[x.Zoom=1]="Zoom",x[x.Cancel=2]="Cancel",x[x.None=3]="None",x))(As||{});class oe extends Zt{lA;aA;hA;HP;qP;jP;WP;JP;$P;ZP;Rm;Qa;constructor(t){super(),this.name="ToolManager",this.lA=new q,this.aA=new q,this.hA=new q,this.HP=850,this.qP=850,this.jP=new nt(2,2).kt(),this.WP=5e3,this.JP=1,this.$P=1,this.ZP=null,this.Rm=null,this.Qa=-1,t&&Object.assign(this,t)}static WheelScroll=1;static WheelZoom=2;static WheelNone=3;static GestureZoom=1;static GestureCancel=2;static GestureNone=3;get mouseWheelBehavior(){return this.JP}set mouseWheelBehavior(t){this.JP=t}get gestureBehavior(){return this.$P}set gestureBehavior(t){this.$P=t}initializeStandardTools(){return this}updateAdornments(t){let e=this.currentToolTip;if(e instanceof vt&&this.Rm===t){let i=e.adornedObject;(t!==null?i!==null&&i.part===t:i===null)?this.showToolTip(e,i):this.hideToolTip()}}doMouseDown(){let t=this.diagram,e=t.lastInput;if(e.isTouchEvent&&this.gestureBehavior===2&&(e.bubbles=!1),e.isMultiTouch){if(this.cancelWaitAfter(),this.gestureBehavior===3){e.bubbles=!0;return}if(this.gestureBehavior===2)return;if(t.currentTool.canStartMultiTouch()){t.currentTool.standardPinchZoomStart();return}}let i=t.undoManager,s=this.mouseDownTools.length;for(let n=0;n<s;n++){let o=this.mouseDownTools.elt(n);if(o.diagram=this.diagram,o.canStart()){t.doFocus(),t.currentTool=o,t.currentTool===o&&(o.isActive||o.doActivate(),o.doMouseDown());return}}t.lastInput.button===1&&(this.mouseWheelBehavior===1?this.mouseWheelBehavior=2:this.mouseWheelBehavior===2&&(this.mouseWheelBehavior=1)),this.doActivate(),this.standardWaitAfter(this.holdDelay,e)}doMouseMove(){let t=this.diagram,e=t.lastInput;if(e.isMultiTouch){if(this.gestureBehavior===3){e.bubbles=!0;return}if(this.gestureBehavior===2)return;if(t.currentTool.canStartMultiTouch()){t.currentTool.standardPinchZoomMove();return}}if(this.isActive){let s=this.mouseMoveTools.length;for(let n=0;n<s;n++){let o=this.mouseMoveTools.elt(n);if(o.diagram=this.diagram,o.canStart()){t.doFocus(),t.currentTool=o,t.currentTool===o&&(o.isActive||o.doActivate(),o.doMouseMove());return}}}this.cA(t);let i=e.event;i!==null&&(i.type==="pointermove"||!i.cancelable)&&(e.bubbles=!0)}cA(t){this.standardMouseOver(),this.isBeyondDragSize()&&this.standardWaitAfter(this.isActive?this.holdDelay:this.hoverDelay,t.lastInput)}rA(t,e){let i=this.currentToolTip;i!==null&&(e!==null&&i instanceof vt&&(e===i||e.isContainedBy(i))||this.hideToolTip())}doWaitAfter(t){let e=this.diagram;if(!e.aR())return;let i=e.lastInput;if(e.lastInput=t,this.doMouseHover(),this.isActive||this.doToolTip(),t.isTouchEvent&&!e.lastInput.handled){let s=t.copy();s.button=2,e.lastInput=s,e.xx=!0,e.doMouseUp()}e.lastInput=i}doMouseHover(){let t=this.diagram,e=t.lastInput;e.targetObject===null&&(e.targetObject=t.findObjectAt(e.documentPoint,null,null));let i=e.targetObject;if(i!==null)for(e.handled=!1;i!==null;){let s=this.isActive?i.mouseHold:i.mouseHover;if(s!==null&&(s(e,i),e.handled))break;i=i.panel}else{let s=this.isActive?t.mouseHold:t.mouseHover;s!==null&&s(e)}}doToolTip(){let t=this.diagram,e=t.lastInput;e.targetObject===null&&(e.targetObject=t.findObjectAt(e.documentPoint,null,null));let i=e.targetObject;if(i!==null){let s=this.currentToolTip;if(s instanceof vt&&(i===s||i.isContainedBy(s)))return;for(;i!==null;){let n=i.toolTip;if(n!==null){this.showToolTip(n,i);return}i=i.panel}this.hideToolTip()}else{let s=t.toolTip;s!==null?this.showToolTip(s,null):this.hideToolTip()}}showToolTip(t,e){e!==null&&m.se(e,J,oe,"showToolTip:obj");let i=this.diagram;if(t!==this.currentToolTip&&this.hideToolTip(),t instanceof vt){t.layerName="Tool",t.selectable=!1,t.scale=1/i.scale,t.category="ToolTip",t.hasPlaceholder()&&(t.placeholder.scale=i.scale);let s=t.diagram;s!==null&&s!==i&&s.remove(t),i.add(t),e!==null?t.adornedObject=e:t.data=i.model,t.ensureBounds(),this.positionToolTip(t,e)}else t instanceof ge&&t!==this.currentToolTip&&t.show!==null&&t.show(e,i,this);this.currentToolTip=t,this.extendToolTip(this.toolTipDuration)}positionToolTip(t,e){if(t.hasPlaceholder())return;let i=t,s=this.diagram,n=s.lastInput.documentPoint.copy(),o=i.measuredBounds,r=s.viewportBounds;s.lastInput.isTouchEvent&&(n.x-=o.width),n.x+o.width>r.right&&(n.x-=o.width+5/s.scale),n.x<r.x&&(n.x=r.x),n.y+20/s.scale+o.height>r.bottom?n.y-=o.height+5/s.scale:n.y+=20/s.scale,n.y<r.y&&(n.y=r.y),i.position=n}extendToolTip(t){t===void 0&&(t=3e3),this.currentToolTip!==null&&(this.Qa!==-1&&(m.yc(this.Qa),this.Qa=-1),t>0&&t!==1/0&&(this.Qa=m.dn(()=>this.hideToolTip(),t)))}hideToolTip(){this.Qa!==-1&&(m.yc(this.Qa),this.Qa=-1);let t=this.diagram,e=this.currentToolTip;e!==null&&(e instanceof vt?(t.remove(e),this.Rm!==null&&this.Rm.removeAdornment(e.category),e.data=null,e.adornedObject=null):e instanceof ge&&e.hide!==null&&e.hide(t,this),this.currentToolTip=null)}get currentToolTip(){return this.ZP}set currentToolTip(t){this.ZP=t,this.Rm=t!==null&&t instanceof vt?t.adornedPart:null}doMouseUp(){this.cancelWaitAfter();let t=this.diagram;if(this.isActive){let e=this.mouseUpTools.length;for(let i=0;i<e;i++){let s=this.mouseUpTools.elt(i);if(s.diagram=this.diagram,s.canStart()){t.doFocus(),t.currentTool=s,t.currentTool===s&&(s.isActive||s.doActivate(),s.doMouseUp());return}}}t.doFocus(),this.doDeactivate()}doMouseWheel(){this.standardMouseWheel()}doKeyDown(){let t=this.diagram;t.commandHandler!==null&&t.commandHandler.doKeyDown()}doKeyUp(){let t=this.diagram;t.commandHandler!==null&&t.commandHandler.doKeyUp()}findTool(t){m.s(t,"string",oe,"findTool:name");let e=this.mouseDownTools.length;for(let i=0;i<e;i++){let s=this.mouseDownTools.elt(i);if(s.name===t)return s}e=this.mouseMoveTools.length;for(let i=0;i<e;i++){let s=this.mouseMoveTools.elt(i);if(s.name===t)return s}e=this.mouseUpTools.length;for(let i=0;i<e;i++){let s=this.mouseUpTools.elt(i);if(s.name===t)return s}return null}replaceTool(t,e){m.s(t,"string",oe,"replaceTool:name"),e!==null&&(e.diagram=this.diagram);let i=this.mouseDownTools.length;for(let s=0;s<i;s++){let n=this.mouseDownTools.elt(s);if(n.name===t)return e!==null?this.mouseDownTools.setElt(s,e):this.mouseDownTools.removeAt(s),n}i=this.mouseMoveTools.length;for(let s=0;s<i;s++){let n=this.mouseMoveTools.elt(s);if(n.name===t)return e!==null?this.mouseMoveTools.setElt(s,e):this.mouseMoveTools.removeAt(s),n}i=this.mouseUpTools.length;for(let s=0;s<i;s++){let n=this.mouseUpTools.elt(s);if(n.name===t)return e!==null?this.mouseUpTools.setElt(s,e):this.mouseUpTools.removeAt(s),n}return null}replaceStandardTool(t,e,i){this.Jt(t,e,i)}Jt(t,e,i){m.s(t,"string",oe,"replaceStandardTool:name"),e!==null&&(e.name=t,e.diagram=this.diagram),this.findTool(t)?this.replaceTool(t,e):e!==null&&i.add(e)}get mouseDownTools(){return this.lA}get mouseMoveTools(){return this.aA}get mouseUpTools(){return this.hA}get hoverDelay(){return this.HP}set hoverDelay(t){m.s(t,"number",oe,"hoverDelay"),this.HP=t}get holdDelay(){return this.qP}set holdDelay(t){m.s(t,"number",oe,"holdDelay"),this.qP=t}get dragSize(){return this.jP}set dragSize(t){this.jP=t.C()}get toolTipDuration(){return this.WP}set toolTipDuration(t){m.s(t,"number",oe,"toolTipDuration"),this.WP=t}get actionTool(){return this.findTool("Action")}set actionTool(t){this.Jt("Action",t,this.mouseDownTools)}get relinkingTool(){return this.findTool("Relinking")}set relinkingTool(t){this.Jt("Relinking",t,this.mouseDownTools)}get linkReshapingTool(){return this.findTool("LinkReshaping")}set linkReshapingTool(t){this.Jt("LinkReshaping",t,this.mouseDownTools)}get resizingTool(){return this.findTool("Resizing")}set resizingTool(t){this.Jt("Resizing",t,this.mouseDownTools)}get rotatingTool(){return this.findTool("Rotating")}set rotatingTool(t){this.Jt("Rotating",t,this.mouseDownTools)}get linkingTool(){return this.findTool("Linking")}set linkingTool(t){this.Jt("Linking",t,this.mouseMoveTools)}get draggingTool(){return this.findTool("Dragging")}set draggingTool(t){this.Jt("Dragging",t,this.mouseMoveTools)}get dragSelectingTool(){return this.findTool("DragSelecting")}set dragSelectingTool(t){this.Jt("DragSelecting",t,this.mouseMoveTools)}get panningTool(){return this.findTool("Panning")}set panningTool(t){this.Jt("Panning",t,this.mouseMoveTools)}get contextMenuTool(){return this.findTool("ContextMenu")}set contextMenuTool(t){this.Jt("ContextMenu",t,this.mouseUpTools)}get textEditingTool(){return this.findTool("TextEditing")}set textEditingTool(t){this.Jt("TextEditing",t,this.mouseUpTools)}get clickCreatingTool(){return this.findTool("ClickCreating")}set clickCreatingTool(t){this.Jt("ClickCreating",t,this.mouseUpTools)}get clickSelectingTool(){return this.findTool("ClickSelecting")}set clickSelectingTool(t){this.Jt("ClickSelecting",t,this.mouseUpTools)}}class Tt extends Zt{QP;_P;xn;tS;eS;iS;sS;vc;Om;nS;_a;br;fA;oS;Fu;Ru;rS;lS;aS;hS;static kx=new q;static le=null;static th=null;constructor(t){super(),this.name="Dragging",this.QP=!0,this.hS=!0,this._P=!0,this.xn=null,this.tS=null,this.eS=null,this.iS=null,this.sS=!1,this.Fu=!1,this.vc=new P(NaN,NaN),this.Om=new P,this.nS=!0,this._a=100,this.br=[],this.fA=new V().k(),this.oS=new Pi,this.Ru=null,this.rS="copy",this.lS="",this.aS="no-drop",t&&Object.assign(this,t)}get isCopyEnabled(){return this.QP}set isCopyEnabled(t){m.s(t,"boolean",Tt,"isCopyEnabled"),this.QP=t}get copiesEffectiveCollection(){return this._P}set copiesEffectiveCollection(t){m.s(t,"boolean",Tt,"copiesEffectiveCollection"),this._P=t}get dragOptions(){return this.oS}set dragOptions(t){this.oS=t}get isGridSnapEnabled(){return this.dragOptions.isGridSnapEnabled}set isGridSnapEnabled(t){m.s(t,"boolean",Tt,"isGridSnapEnabled"),this.dragOptions.isGridSnapEnabled=t}get isComplexRoutingRealtime(){return this.nS}set isComplexRoutingRealtime(t){this.nS=t;let e=this.diagram.findRouter("AvoidsLinks");e!==null&&(e.isRealtime=t)}get isGridSnapRealtime(){return this.dragOptions.isGridSnapRealtime}set isGridSnapRealtime(t){m.s(t,"boolean",Tt,"isGridSnapRealtime"),this.dragOptions.isGridSnapRealtime=t}get gridSnapCellSize(){return this.dragOptions.gridSnapCellSize}set gridSnapCellSize(t){this.dragOptions.gridSnapCellSize.equals(t)||(t=t.C(),this.dragOptions.gridSnapCellSize=t)}get gridSnapCellSpot(){return this.dragOptions.gridSnapCellSpot}set gridSnapCellSpot(t){this.dragOptions.gridSnapCellSpot.equals(t)||(t=t.C(),this.dragOptions.gridSnapCellSpot=t)}get gridSnapOrigin(){return this.dragOptions.gridSnapOrigin}set gridSnapOrigin(t){this.dragOptions.gridSnapOrigin.equals(t)||(t=t.C(),this.dragOptions.gridSnapOrigin=t)}get dragsLink(){return this.dragOptions.dragsLink}set dragsLink(t){m.s(t,"boolean",Tt,"dragsLink"),this.dragOptions.dragsLink=t}get dragsTree(){return this.dragOptions.dragsTree}set dragsTree(t){m.s(t,"boolean",Tt,"dragsTree"),this.dragOptions.dragsTree=t}get copyCursor(){return this.rS}set copyCursor(t){this.rS=t}get moveCursor(){return this.lS}set moveCursor(t){this.lS=t}get nodropCursor(){return this.aS}set nodropCursor(t){this.aS=t}get currentPart(){return this.tS}set currentPart(t){t!==null&&m.se(t,pt,Tt,"currentPart"),this.tS=t}get copiedParts(){return this.iS}set copiedParts(t){this.iS=t}get draggedParts(){return this.eS}set draggedParts(t){this.eS=t}get draggingParts(){return this.copiedParts!==null?this.copiedParts.toKeySet():this.draggedParts!==null?this.draggedParts.toKeySet():this.fA}get draggedLink(){return this.diagram.draggedLink}set draggedLink(t){t!==null&&m.se(t,j,Tt,"draggedLink"),this.diagram.draggedLink=t}get isDragOutStarted(){return this.sS}set isDragOutStarted(t){this.sS=t}get startPoint(){return this.Om}set startPoint(t){this.Om.equals(t)||this.Om.h(t)}get delay(){return this._a}set delay(t){m.s(t,"number",Tt,"delay"),this._a=t}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;if(t===null||t.isReadOnly&&!t.allowDragOut||!t.allowMove&&!t.allowCopy&&!t.allowDragOut||!t.allowSelect)return!1;let e=t.lastInput;return!e.left||t.currentTool!==this&&(!this.isBeyondDragSize()||e.isTouchEvent&&e.timestamp-t.firstInput.timestamp<this._a)?!1:this.findDraggablePart()!==null}findDraggablePart(){let t=this.diagram,e=t.findPartAt(t.firstInput.documentPoint,!1);if(e===null)return null;for(;e!==null&&!e.canSelect();)e=e.containingGroup;return e!==null&&(e.canMove()||e.canCopy())?e:null}standardMouseSelect(){let t=this.diagram;if(!t.allowSelect)return;let e=t.findPartAt(t.firstInput.documentPoint,!1);if(e!==null){for(;e!==null&&!e.canSelect();)e=e.containingGroup;if(this.currentPart=e,this.currentPart!==null&&!this.currentPart.isSelected){t.T("ChangingSelection",t.selection);let i=t.lastInput;!(m.fr?i.meta:i.control)&&!i.shift&&t.clearSelection(!0),this.currentPart.isSelected=!0,t.T("ChangedSelection",t.selection)}}}doActivate(){let t=this.diagram;this.Ru=null,this.currentPart===null&&this.standardMouseSelect();let e=this.currentPart;if(e===null||!e.canMove()&&!e.canCopy())return;t.cacheGroupExternalLinks(!0),Tt.le=null,this.isActive=!0,this.vc.set(t.position),this.cS(t.selection),this.br.length=0,t.animationManager.stopAnimation();let i=this.computeEffectiveCollection(t.selection,this.dragOptions);this.draggedParts=i,this.hS=!!this.diagram.layout.isRealtime,this.diagram.layout.isRealtime=!1,t.Ou=!0,t.getRenderingHint("temporaryPixelRatio")===!0&&t.avgSpf>30&&t.Px(),t.uA(this.draggedParts),t.Iu=!0,this.startTransaction("Drag"),this.startPoint=t.firstInput.documentPoint,t.isMouseCaptured=!0,t.allowDragOut&&this.hR()}cS(t){if(!this.dragsLink)return;let e=this.diagram,i=e.model.fS(),s=t.first();i&&t.count===1&&s instanceof j&&this.mayDragLink(s)?(this.draggedLink=s,this.draggedLink.canRelinkFrom()&&this.draggedLink.canRelinkTo()&&this.draggedLink.clearAdornments(),this.xn=e.toolManager.findTool("Relinking"),this.xn===null&&(this.xn=new $e,this.xn.diagram=e),this.xn.originalLink=this.draggedLink):(this.draggedLink=null,this.xn=null)}mayDragLink(t){let e=this.diagram;return e!==null&&e.allowRelink}computeEffectiveCollection(t,e){return this.diagram.commandHandler.computeEffectiveCollection(t,e)}Ws(t){return t===void 0?new Xe(P.gn):this.isGridSnapEnabled?new Xe(new P(Math.round(t.x*1e3)/1e3,Math.round(t.y*1e3)/1e3)):new Xe(t.copy())}doDeactivate(){this.isActive=!1;let t=this.diagram;this.diagram.layout.isRealtime=this.hS,t.Iu=!1,t.Ol=!0,t.cacheGroupExternalLinks(!1),t.stopAutoScroll(),this.uS(),t.dS(this.draggedParts),this.Ru=null,this.currentPart=null,this.draggedParts=null,this.isDragOutStarted=!1,this.Fu=!1,Tt.cR(),this.dA(),this.vc.e(NaN,NaN),Tt.th!==null&&(Tt.th.currentCursor=""),Tt.th=null,Tt.le=null,this.Il(),t.isMouseCaptured=!1,t.currentCursor="",t.Ou=!1,this.stopTransaction(),t.gS(!0)}stopTransaction(){let t=this.diagram,e=super.stopTransaction();return e&&t.undoManager.transactionToUndo!==null&&t.undoManager.transactionToUndo.optimize(),e}uS(){let t=this.diagram,e=t.skipsUndoManager;t.skipsUndoManager=!0;let i=t.lastInput;this.gA(i,null),t.skipsUndoManager=e,this.br.length=0}mA(){this.Il(),this.mS();let t=this.diagram;this.vc.isReal()&&(t.position=this.vc),t.stopAutoScroll()}doCancel(){this.Il(),this.mS();let t=this.diagram;this.vc.isReal()&&(t.position=this.vc),this.stopTool()}doKeyDown(){let t=this.diagram;if(!this.isActive)return;let e=t.lastInput,i=t.previousInput;e.code==="Escape"?this.doCancel():(e.code!==i.code||e.modifiers!==i.modifiers)&&this.doMouseMove()}doKeyUp(){this.isActive&&this.doMouseMove()}fR(t,e){let i=1/0,s=1/0,n=-1/0,o=-1/0,r=t.iterator;for(;r.next();){let a=r.value;if(!a.isVisible())continue;let h=a.location,l=h.x,u=h.y;isNaN(l)||isNaN(u)||(l<i&&(i=l),u<s&&(s=u),l>n&&(n=l),u>o&&(o=u))}return i===1/0?e.e(0,0,0,0):e.e(i,s,n-i,o-s),e}pS(t){if(this.copiedParts!==null)return;let e=this.diagram;if(t&&(e.isReadOnly||e.isModelReadOnly)||this.draggedParts===null)return;let i=e.undoManager;i.isEnabled&&i.isInTransaction?i.currentTransaction!==null&&i.currentTransaction.changes.count>0&&(e.undoManager.rollbackTransaction(),e.startTransaction("Drag")):this.mS(),e.skipsUndoManager=!t,e.partManager.addsToTemporaryLayer=!t,this.startPoint=e.firstInput.documentPoint;let s=this.copiesEffectiveCollection?this.draggedParts.toKeySet():e.selection,n=e.copyParts(s,e,!0);e.commandHandler.Fc(n);let o=new Mt,r=this.draggedParts.iterator;for(;r.next();){let h=r.key;if(h.Di()&&h.canCopy()){let l=n.get(h);if(l===null)continue;l.location=h.location,l.ensureBounds(),o.set(l,this.Ws(l.location))}}let a=n.iterator;for(;a.next();){let h=a.value;h instanceof j&&h.canCopy()&&o.set(h,this.Ws())}if(this.copiedParts=o,this.cS(o.toKeySet()),this.draggedLink!==null){let h=this.draggedLink,l=h.routeBounds;h.kr(this.startPoint.x-(l.x+l.width/2),this.startPoint.y-(l.y+l.height/2))}this.doUpdateCursor(null)}Il(){let t=this.diagram;if(this.copiedParts!==null){if(t.removeParts(this.copiedParts.toKeySet(),!1),this.copiedParts=null,this.draggedParts!==null){let e=this.draggedParts.iterator;for(;e.next();)if(e.key instanceof j){let i=e.value;i.point=new P(0,0)}}this.doUpdateCursor(null)}t.skipsUndoManager=!1,t.partManager.addsToTemporaryLayer=!1,this.startPoint=t.firstInput.documentPoint}dA(){this.draggedLink!==null&&(this.dragsLink&&this.xn!==null&&(this.xn.stopDraggingMouseMove(),this.xn.originalLink=null),this.draggedLink=null,this.xn=null)}Rc(t,e){if(t===null)return;let i=this.diagram,s=this.startPoint,n=P.l();n.h(i.lastInput.documentPoint),this.moveParts(t,n.subtract(s),e),P.i(n),i.getRenderingHint("temporaryPixelRatio")===!0&&i.El===null&&i.avgSpf>30&&(i.Px(),i.Eu())}moveParts(t,e,i){i===void 0&&(i=!1);let s=this.diagram;s!==null&&s.Sx(t,e,this.dragOptions,i)}mS(){if(this.draggedParts===null)return;let t=this.diagram,e=this.draggedParts.iterator;for(;e.next();){let i=e.key;i.Di()&&(i.location=e.value.point)}for(e=this.draggedParts.iterator;e.next();){let i=e.key;if(i instanceof j&&i.suspendsRouting){let s=e.value.point;this.draggedParts.set(i,this.Ws()),i.kr(-s.x,-s.y)}}t.maybeUpdate()}uR(t){if(t===null)return!0;let e=t.part;return!!(e===null||e instanceof vt||e.layer?.isTemporary||this.draggedParts&&this.draggedParts.has(e)||this.copiedParts&&this.copiedParts.has(e))}yS(t){let e=this.diagram;this.dragsLink&&(this.draggedLink!==null&&(this.draggedLink.fromNode=null,this.draggedLink.toNode=null),this.pA(!1));let i=this.findDragOverObject(t),s=e.lastInput;s.targetObject=i,this.doUpdateCursor(i);let n=e.skipsUndoManager,o=!1;try{if(e.skipsUndoManager=!0,o=this.gA(s,i),!this.isActive&&Tt.le===null)return;let r=i!==null?i.part:null;if(r===null||e.handlesDragDropForTopLevelParts&&r.isTopLevel&&!(r instanceof ht)){let a=e.mouseDragOver;a!==null&&(a(s),o=!0)}if(!this.isActive&&Tt.le===null||(this.doDragOver(t,i),!this.isActive&&Tt.le===null))return}finally{e.skipsUndoManager=n,o&&e.maybeUpdate()}this.Ru=i,!e.isReadOnly&&(e.allowMove||e.allowCopy)&&(e.allowHorizontalScroll||e.allowVerticalScroll)&&e.doAutoScroll(s.viewPoint)}findDragOverObject(t){return this.diagram.wS(t,null,e=>!this.uR(e))}doUpdateCursor(t){let e=this.diagram;(t===null||this.Ru!==t)&&(!this.diagram.currentTool.isActive||this.mayCopy()?e.currentCursor=this.copyCursor:this.mayMove()?e.currentCursor=this.moveCursor:this.mayDragOut()&&(e.currentCursor=this.nodropCursor))}gA(t,e){let i=!1,s=this.br.length,n=s>0?this.br[0]:null;if(e===n)return!1;t.handled=!1;for(let r=0;r<s;r++){let a=this.br[r],h=a.mouseDragLeave;if(h!==null&&(h(t,a,e),i=!0,t.handled))break}if(this.br.length=0,!this.isActive&&Tt.le===null||e===null)return i;t.handled=!1;let o=e;for(;o!==null;)this.br.push(o),o=this.yA(o);s=this.br.length;for(let r=0;r<s;r++){let a=this.br[r],h=a.mouseDragEnter;if(h!==null&&(h(t,a,n),i=!0,t.handled))break}return i}RU(t,e){return t===null?!1:!!(t===e||t.isContainedBy(e)||e instanceof ht&&!(t instanceof ht)&&e.handlesDragDropForMembers&&t.part?.isMemberOf(e))}yA(t){let e=t.panel;if(e!==null)return e;if(t instanceof pt&&!(t instanceof ht)){let i=t.containingGroup;if(i!==null&&i.handlesDragDropForMembers)return i}return null}wA(t,e){let i=this.diagram,s=this.xn;if(s===null)return null;let n=s.portGravity,o=i.findObjectsNear(t,n,l=>s.findValidLinkablePort(l,e)),r=P.l(),a=1/0,h=null;for(let l=o.iterator;l.next();){let u=l.value;if(u.part===null)continue;let c=u.getDocumentPoint(T.Center,r),d=t.distanceSquaredPoint(c);d<a&&(h=u,a=d)}return P.i(r),h}pA(t){let e=this.draggedLink;if(e!==null){if(e.pointsCount<2)return;let i=this.diagram;if(i.isReadOnly)return;let s=this.xn;if(s===null)return;let n=null,o=null;e.fromNode===null&&(n=this.wA(e.getPoint(0),!1),n!==null&&(o=n.part));let r=null,a=null;e.toNode===null&&(r=this.wA(e.getPoint(e.pointsCount-1),!0),r!==null&&(a=r.part)),s.isValidLink(o,n,a,r)?t?(e.defaultFromPoint=e.getPoint(0),e.defaultToPoint=e.getPoint(e.pointsCount-1),e.suspendsRouting=!1,e.fromNode=o,n!==null&&(e.fromPortId=n.portId),e.toNode=a,r!==null&&(e.toPortId=r.portId),e.fromPort!==i.xS&&i.T("LinkRelinked",e,i.xS),e.toPort!==i.bS&&i.T("LinkRelinked",e,i.bS)):s.doDraggingMouseMove(o,n,a,r):s.doDraggingMouseMove(null,null,null,null)}}doDragOver(t,e){}xA(t){let e=this.diagram;this.dragsLink&&this.pA(!0),this.uS();let i=this.findDragOverObject(t),s=e.lastInput;if(s.targetObject=i,i!==null){s.handled=!1;let a=i;for(;a!==null;){let h=a.mouseDrop;if(h!==null&&(h(s,a),s.handled))break;this.dR(s,a),a=this.yA(a)}}else{let a=e.mouseDrop;a!==null&&a(s)}if(!this.isActive&&Tt.le===null)return;let n=this.copiedParts||this.draggedParts;if(n!==null){let a=n.iterator;for(;a.next();){let h=a.key;h instanceof $&&h.linksConnected.each(l=>l.suspendsRouting=!1)}}if(this.doDropOnto(t,i),!this.isActive&&Tt.le===null)return;let o=I.l(),r=e.selection.iterator;for(;r.next();){let a=r.value;a instanceof $&&this.gR(e,a,o)}I.i(o)}dR(t,e){let i=this.diagram,s=e.part;if(i.handlesDragDropForTopLevelParts&&s!==null&&s.isTopLevel&&!(s instanceof ht)){let n=i.mouseDrop;n!==null&&n(t)}}gR(t,e,i){if(!e.canAvoid())return;let s=!1;i=e.getAvoidableRect(i),t.viewportBounds.containsRect(i)&&(s=!0);let n=this.copiedParts||this.draggedParts;if(n===null)return;let o=t.kS(i,a=>a.part,a=>a instanceof j,!0,a=>a instanceof j,s);if(o.count===0)return;let r=o.iterator;for(;r.next();){let a=r.value;n.has(a)&&n.has(e)||!a.isMemberOf(e)&&a.isAvoiding&&a.$t()}}doDropOnto(t,e){}doMouseMove(){if(!this.isActive)return;let t=this.diagram,e=t.lastInput;this.simulatedMouseMove(e.event,e.documentPoint,e.targetDiagram)||this.currentPart!==null&&this.draggedParts!==null&&(this.mayCopy()?(this.pS(!1),this.Rc(this.copiedParts,!1)):this.mayMove()?(this.Il(),this.Rc(this.draggedParts,!0)):this.mayDragOut()?(this.pS(!1),this.Rc(this.copiedParts,!1)):this.Il(),this.yS(t.lastInput.documentPoint))}doMouseUp(){if(!this.isActive)return;let t=this.diagram,e=t.lastInput;if(this.simulatedMouseUp(e.event,e.documentPoint,e.targetDiagram))return;let i=!1,s=this.mayCopy();if(s&&this.copiedParts!==null?(this.Il(),this.pS(!0),this.Rc(this.copiedParts,!1),this.copiedParts!==null&&(t.T("ChangingSelection",t.selection),t.clearSelection(!0),this.copiedParts.iteratorKeys.each(n=>{n.isSelected=!0}))):(i=!0,this.Il(),this.mayMove()&&(this.Rc(this.draggedParts,!0),this.yS(t.lastInput.documentPoint))),this.Fu=!0,this.xA(t.lastInput.documentPoint),this.isActive){let n=s&&this.copiedParts,o=n?this.copiedParts?.toKeySet():this.draggedParts?this.draggedParts.toKeySet():null;this.copiedParts=null,i&&this.mR(),t.invalidateDocumentBounds(),t.dS(this.draggedParts),this.transactionResult=n?"Copy":"Move",t.T(n?"SelectionCopied":"SelectionMoved",o)}this.stopTool(),s&&t.T("ChangedSelection",t.selection)}simulatedMouseMove(t,e,i){if(Tt.le===null)return!1;let s=Tt.le.diagram;i instanceof Y||(i=null);let n=Tt.th;if(i!==n){if(n!==null&&n!==s){n.stopAutoScroll(),Tt.le.isDragOutStarted=!1;let r=n.toolManager.findTool("Dragging");r!==null&&r.doSimulatedDragLeave()}if(Tt.th=i,i!==null&&i!==s){Tt.le.mA();let r=i.toolManager.findTool("Dragging");r!==null&&(r.bA(),r.doSimulatedDragEnter())}this.doUpdateCursor(null)}if(i===null||i===s||!i.allowDrop||i.isReadOnly||!i.allowInsert)return!1;let o=i.toolManager.findTool("Dragging");if(o!==null){let r=e;t!==null&&(t.targetTouches!==void 0&&(t.targetTouches.length>0?t=t.targetTouches[0]:t.changedTouches.length>0&&(t=t.changedTouches[0])),r=i.getMouse(t)),i.lastInput.documentPoint=r,i.lastInput.viewPoint=i.transformDocToView(r),i.lastInput.down=!1,i.lastInput.up=!1,o.doSimulatedDragOver()}return!0}simulatedMouseUp(t,e,i){if(Tt.le===null)return!1;let s=Tt.th,n=Tt.le.diagram;if(i===null)return Tt.le.doCancel(),!0;if(i!==s){if(s!==null){let r=s.toolManager.findTool("Dragging");if(s!==null&&s!==n&&r!==null)return s.stopAutoScroll(),Tt.le.isDragOutStarted=!1,r.doSimulatedDragLeave(),!1}Tt.th=i;let o=i.toolManager.findTool("Dragging");o!==null&&(Tt.le.mA(),o.bA(),o.doSimulatedDragEnter())}if(i!==this.diagram){let o=e;t!==null?(t.targetTouches!==void 0&&(t.targetTouches.length>0?t=t.targetTouches[0]:t.changedTouches.length>0&&(t=t.changedTouches[0])),o=i.getMouse(t)):o===null&&(o=new P),i.lastInput.documentPoint=o,i.lastInput.viewPoint=i.transformDocToView(o),i.lastInput.down=!1,i.lastInput.up=!0;let r=i.toolManager.findTool("Dragging");r!==null&&r.doSimulatedDrop();let a=Tt.le;if(a!==null){let h=a.mayCopy();a.transactionResult=h?"Copy":"Move",a.stopTool()}return!0}return!1}mR(){if(this.draggedParts===null)return;let t=this.draggedParts.iterator;for(;t.next();){let e=t.key;if(e instanceof $){let i=e.containingGroup;i!==null&&i.hasPlaceholder()&&!this.draggedParts.has(i)&&i.placeholder.f()}}}mayCopy(){if(!this.isCopyEnabled)return!1;let t=this.diagram;if(t.isReadOnly||t.isModelReadOnly||!t.allowInsert||!t.allowCopy||!(m.fr?t.lastInput.alt:t.lastInput.control))return!1;let e=t.selection.iterator;for(;e.next();)if(e.value.canCopy())return!0;return!!(this.draggedLink!==null&&this.dragsLink&&this.draggedLink.canCopy())}mayDragOut(){if(!this.isCopyEnabled)return!1;let t=this.diagram;if(!t.allowDragOut||!t.allowCopy||t.allowMove)return!1;let e=t.selection.iterator;for(;e.next();)if(e.value.canCopy())return!0;return!!(this.draggedLink!==null&&this.dragsLink&&this.draggedLink.canCopy())}mayMove(){let t=this.diagram;if(t.isReadOnly||!t.allowMove)return!1;let e=t.selection.iterator;for(;e.next();)if(e.value.canMove())return!0;return!!(this.draggedLink!==null&&this.dragsLink&&this.draggedLink.canMove())}bA(){Tt.kx.has(this)||Tt.kx.add(this)}static cR(){if(Tt.kx.count>0){let t=Tt.kx,e=t.length;for(let i=0;i<e;i++){let s=t.elt(i);s.dA(),s.Il(),s.uS(),s.diagram.stopAutoScroll()}t.clear()}}pR(t,e,i){return!this.Fu&&this.draggedParts!==null&&!this.draggedParts.has(t)?(i.h(e),!0):!1}get draggingSource(){return Tt.le}mayDragIn(){let t=this.diagram;if(!t.allowDrop||t.isReadOnly||t.isModelReadOnly||!t.allowInsert)return!1;let e=Tt.le;return!(e===null||e.diagram.model.dataFormat!==t.model.dataFormat)}doSimulatedDragEnter(){if(!this.mayDragIn())return;let t=this.diagram;t.animationManager.stopAnimation(),t.Pr(),t.animationManager.stopAnimation();let e=Tt.le;e!==null&&(this.diagram.Ou=!0,t.lastInput.event===null&&(t.lastInput.event=e.diagram.lastInput.event)),this.doUpdateCursor(null)}doSimulatedDragLeave(){let t=Tt.le;t!==null&&t.doSimulatedDragOut(),this.diagram.Ou=!1,this.doCancel()}doSimulatedDragOver(){let t=this.diagram;t.animationManager.Uu=!0;let e=Tt.le;if(e!==null&&e.draggedParts!==null){if(!this.mayDragIn())return;this.kA(e.draggedParts.toKeySet(),!1,t.firstInput),this.Rc(this.copiedParts,!1),this.yS(t.lastInput.documentPoint)}t.animationManager.Uu=!1}doSimulatedDrop(){let t=this.diagram,e=Tt.le;if(e!==null){let i=e.diagram;if(e.Fu=!0,this.Il(),e.draggedParts===null||!this.mayDragIn())return;t.animationManager.Uu=!0,t.T("ChangingSelection",t.selection),this.startTransaction("Drop"),this.kA(e.draggedParts.toKeySet(),!0,t.lastInput),this.Rc(this.copiedParts,!1);let s=new V;this.copiedParts!==null&&(t.clearSelection(!0),this.copiedParts.iteratorKeys.each(n=>{n.isSelected=!0,s.add(n)})),this.xA(t.lastInput.documentPoint),t.invalidateDocumentBounds(),this.copiedParts!==null&&(this.transactionResult="ExternalCopy"),this.copiedParts=null,t.doFocus(),t.Ou=!1,t.T("ExternalObjectsDropped",s,i),this.stopTransaction(),t.T("ChangedSelection",t.selection)}t.animationManager.Uu=!1}kA(t,e,i){if(this.copiedParts!==null)return;let s=this.diagram;if(s.isReadOnly||s.isModelReadOnly)return;s.skipsUndoManager=!e,s.partManager.addsToTemporaryLayer=!e,this.startPoint=i.documentPoint;let n=s.copyParts(t,s,!0);s.commandHandler.Fc(n);let o=I.l();this.fR(t,o);let r=o.x+o.width/2,a=o.y+o.height/2;I.i(o);let h=this.Om,l=new Mt,u=P.l(),c=t.iterator;for(;c.next();){let f=c.value;if(f instanceof j&&f.canCopy()){let p=n.get(f);if(p===null)continue;p.points=f.points,p.kr(h.x-r,h.y-a),p.suspendsRouting=!0,l.set(p,this.Ws())}}let d=t.iterator;for(;d.next();){let f=d.value;if(f.Di()&&f.canCopy()){let p=n.get(f);if(p===null)continue;let g=f.location;u.e(h.x-(r-g.x),h.y-(a-g.y)),p.location=u,p.ensureBounds(),l.set(p,this.Ws(u))}}if(P.i(u),this.copiedParts=l,this.cS(l.toKeySet()),this.draggedLink!==null){let f=this.draggedLink,p=f.routeBounds;f.kr(this.startPoint.x-(p.x+p.width/2),this.startPoint.y-(p.y+p.height/2))}this.doUpdateCursor(null)}hR(){this.isDragOutStarted=!0,this.Fu=!1,Tt.le=this,Tt.th=this.diagram,this.doSimulatedDragOut()}doSimulatedDragOut(){let t=this.diagram;!this.mayCopy()&&!this.mayMove()?t.currentCursor=this.nodropCursor:t.currentCursor="",this.Ru=null}computeMove(t,e,i,s){let n=this.diagram;return n!==null?n.computeMove(t,e,this.dragOptions,s):new P}}oe.prototype.doCancel=function(){Tt.le!==null&&Tt.le.doCancel(),Zt.prototype.doCancel.call(this)};class he extends Zt{PS;SS;Ul;MS;CS;eh;NS;ih;LS;AS;TS;DS;vS;FS;PA;RS;Vl;OS;constructor(){super(),this.PS=100,this.SS=!1,this.Ul="pointer",this.MS=new j({layerName:"Tool"}).add(new it({isPanelMain:!0,stroke:"blue"}).theme("stroke","tempLink"),new it({toArrow:"Standard",fill:"blue",stroke:"blue"}).theme("fill","tempLink").theme("stroke","tempLink")).It(),this.eh=new it("Rectangle",{portId:"",fill:null,stroke:"magenta",strokeWidth:2,desiredSize:nt.CP}).theme("stroke","tempPort"),this.CS=new $({selectable:!1,layerName:"Tool"}).add(this.eh).It(),this.ih=new it("Rectangle",{portId:"",fill:null,stroke:"magenta",strokeWidth:2,desiredSize:nt.CP}).theme("stroke","tempPort"),this.NS=new $({selectable:!1,layerName:"Tool"}).add(this.ih).It(),this.LS=null,this.AS=null,this.TS=null,this.DS=null,this.vS=null,this.FS=!0,this.PA=new Mt,this.RS=null,this.Vl=null,this.OS=null}doStop(){this.diagram.stopAutoScroll(),this.originalLink=null,this.originalFromNode=null,this.originalFromPort=null,this.originalToNode=null,this.originalToPort=null,this.validPortsCache.clear(),this.targetPort=null}get portGravity(){return this.PS}set portGravity(t){m.s(t,"number",he,"portGravity"),t>=0&&(this.PS=t)}get isUnconnectedLinkValid(){return this.SS}set isUnconnectedLinkValid(t){m.s(t,"boolean",he,"isUnconnectedLinkValid"),this.SS=t}get linkingCursor(){return this.Ul}set linkingCursor(t){this.Ul=t}get temporaryLink(){return this.MS}set temporaryLink(t){t.It(),this.MS=t}get temporaryFromNode(){return this.CS}set temporaryFromNode(t){t.It(),this.CS=t,t&&(this.eh=t.port)}get temporaryFromPort(){return this.eh}set temporaryFromPort(t){if(this.eh!==null){let e=this.eh.panel;if(e!==null){let i=e.D.indexOf(this.eh);e.removeAt(i),e.insertAt(i,t)}}this.eh=t}get temporaryToNode(){return this.NS}set temporaryToNode(t){t.It(),this.NS=t,t&&(this.ih=t.port)}get temporaryToPort(){return this.ih}set temporaryToPort(t){if(this.ih!==null){let e=this.ih.panel;if(e!==null){let i=e.D.indexOf(this.ih);e.removeAt(i),e.insertAt(i,t)}}this.ih=t}get originalLink(){return this.LS}set originalLink(t){t!==null&&m.se(t,j,he,"originalLink"),this.LS=t}get originalFromNode(){return this.AS}set originalFromNode(t){t!==null&&m.se(t,$,he,"originalFromNode"),this.AS=t}get originalFromPort(){return this.TS}set originalFromPort(t){t!==null&&m.se(t,J,he,"originalFromPort"),this.TS=t}get originalToNode(){return this.DS}set originalToNode(t){t!==null&&m.se(t,$,he,"originalToNode"),this.DS=t}get originalToPort(){return this.vS}set originalToPort(t){t!==null&&m.se(t,J,he,"originalToPort"),this.vS=t}get isForwards(){return this.FS}set isForwards(t){this.FS=t}get validPortsCache(){return this.PA}get targetPort(){return this.RS}set targetPort(t){t!==null&&m.se(t,J,he,"targetPort"),this.RS=t}copyPortProperties(t,e,i,s,n){if(t===null||e===null||i===null||s===null)return;let o=e.getDocumentScale(),r=nt.l();r.width=e.naturalBounds.width*o,r.height=e.naturalBounds.height*o,s.desiredSize=r,nt.i(r),n?(s.toSpot=e.toSpot,s.toEndSegmentLength=e.toEndSegmentLength):(s.fromSpot=e.fromSpot,s.fromEndSegmentLength=e.fromEndSegmentLength),i.locationSpot=T.Center;let a=P.l();i.location=e.getDocumentPoint(T.Center,a),P.i(a),s.angle=e.getDocumentAngle(),this.portTargeted!==null&&this.portTargeted(t,e,i,s,n)}setNoTargetPortProperties(t,e,i){e!==null&&(e.desiredSize=nt.CP,e.fromSpot=T.None,e.toSpot=T.None),t!==null&&(t.location=this.diagram.lastInput.documentPoint),this.portTargeted!==null&&this.portTargeted(null,null,t,e,i)}doMouseDown(){this.isActive&&this.doMouseMove()}doMouseMove(){if(this.isActive){let t=this.diagram;if(this.targetPort=this.findTargetPort(this.isForwards),this.targetPort!==null&&this.targetPort.part instanceof $){let e=this.targetPort.part;this.isForwards?this.copyPortProperties(e,this.targetPort,this.temporaryToNode,this.temporaryToPort,!0):this.copyPortProperties(e,this.targetPort,this.temporaryFromNode,this.temporaryFromPort,!1)}else this.isForwards?this.setNoTargetPortProperties(this.temporaryToNode,this.temporaryToPort,!0):this.setNoTargetPortProperties(this.temporaryFromNode,this.temporaryFromPort,!1);(t.allowHorizontalScroll||t.allowVerticalScroll)&&t.doAutoScroll(t.lastInput.viewPoint)}}findValidLinkablePort(t,e){if(t===null)return null;let i=t.part;if(!(i instanceof $))return null;for(;t!==null;){let s=e?t.toLinkable:t.fromLinkable;if(s===!0&&(t.portId!==null||t instanceof $)&&(e?this.isValidTo(i,t):this.isValidFrom(i,t)))return t;if(s===!1)return null;t=t.panel}return null}findTargetPort(t){let e=this.diagram,i=e.lastInput.documentPoint,s=this.portGravity,n=e.findObjectsNear(i,s,h=>this.findValidLinkablePort(h,t),null,!0),o=1/0,r=null,a=n.iterator;for(;a.next();){let h=a.value,l=h.part;if(!(l instanceof $))continue;let u=h.getDocumentPoint(T.Center,P.l()),c=i.x-u.x,d=i.y-u.y;P.i(u);let f=c*c+d*d;if(f<o){let p=this.validPortsCache.get(h);p!==null?p&&(r=h,o=f):t&&this.isValidLink(this.originalFromNode,this.originalFromPort,l,h)||!t&&this.isValidLink(l,h,this.originalToNode,this.originalToPort)?(this.validPortsCache.set(h,!0),r=h,o=f):this.validPortsCache.set(h,!1)}}if(r!==null){let h=r.part;if(h instanceof $&&(h.layer===null||h.layer.allowLink))return r}return null}isValidFrom(t,e){if(t===null||e===null)return this.isUnconnectedLinkValid;if(this.diagram.currentTool===this&&(t.layer!==null&&!t.layer.allowLink||e.fromLinkable!==!0))return!1;let i=e.fromMaxLinks;if(i<1/0){if(this.originalLink!==null&&t===this.originalFromNode&&e===this.originalFromPort)return!0;let s=e.portId;if(s===null&&(s=""),t.findLinksOutOf(s).count>=i)return!1}return!0}isValidTo(t,e){if(t===null||e===null)return this.isUnconnectedLinkValid;if(this.diagram.currentTool===this&&(t.layer!==null&&!t.layer.allowLink||e.toLinkable!==!0))return!1;let i=e.toMaxLinks;if(i<1/0){if(this.originalLink!==null&&t===this.originalToNode&&e===this.originalToPort)return!0;let s=e.portId;if(s===null&&(s=""),t.findLinksInto(s).count>=i)return!1}return!0}isInSameNode(t,e){if(t===null||e===null)return!1;if(t===e)return!0;let i=t.part,s=e.part;return i!==null&&i===s}isLinked(t,e){if(t===null||e===null)return!1;let i=t.part;if(!(i instanceof $))return!1;let s=t.portId;s===null&&(s="");let n=e.part;if(!(n instanceof $))return!1;let o=e.portId;o===null&&(o="");let r=n.findLinksInto(o);for(;r.next();){let a=r.value;if(a.fromNode===i&&a.fromPortId===s)return!0}return!1}isValidLink(t,e,i,s){if(!this.isValidFrom(t,e)||!this.isValidTo(i,s)||e!==null&&s!==null&&(!(e.fromLinkableSelfNode&&s.toLinkableSelfNode)&&this.isInSameNode(e,s)||!(e.fromLinkableDuplicates&&s.toLinkableDuplicates)&&this.isLinked(e,s))||this.originalLink!==null&&(t!==null&&this.isLabelDependentOnLink(t,this.originalLink)||i!==null&&this.isLabelDependentOnLink(i,this.originalLink))||t!==null&&i!==null&&(t.data===null&&i.data!==null||t.data!==null&&i.data===null)||!this.isValidCycle(t,i,this.originalLink))return!1;let n;return t!==null&&e!==null&&(n=t.linkValidation,n!==null&&!n(t,e,i,s,this.originalLink))||i!==null&&s!==null&&(n=i.linkValidation,n!==null&&!n(t,e,i,s,this.originalLink))?!1:(n=this.linkValidation,n!==null?n(t,e,i,s,this.originalLink):!0)}isLabelDependentOnLink(t,e){if(t===null)return!1;let i=t.labeledLink;if(i===null)return!1;if(i===e)return!0;let s=new V;return s.add(t),this.IS(i,e,s)}IS(t,e,i){if(t===e)return!0;let s=t.fromNode;if(s!==null&&s.labeledLink&&(i.add(s),this.IS(s.labeledLink,e,i)))return!0;let n=t.toNode;return!!(n!==null&&n.labeledLink&&(i.add(n),this.IS(n.labeledLink,e,i)))}isValidCycle(t,e,i){if(i===void 0&&(i=null),t===null||e===null)return this.isUnconnectedLinkValid;let s=this.diagram,n=1;if(s&&(s.model.Mx()?n=s.isTreePathToChildren?5:6:n=s.validCycle),n===1)return!0;if(n===5){let o=i||this.temporaryLink;if(o!==null&&!o.isTreeLink)return!0;let r=e.linksConnected;for(;r.next();){let a=r.value;if(a!==i&&a.isTreeLink&&a.toNode===e)return!1}return!this.Vu(t,e,i,!0)}else if(n===6){let o=i||this.temporaryLink;if(o!==null&&!o.isTreeLink)return!0;let r=t.linksConnected;for(;r.next();){let a=r.value;if(a!==i&&a.isTreeLink&&a.fromNode===t)return!1}return!this.Vu(t,e,i,!0)}else{if(n===2)return!this.yR(t,e,i);if(n===3)return!this.Vu(t,e,i,!1);if(n===4)return!this.wR(t,e,i)}return!0}Vu(t,e,i,s){if(t===e)return!0;if(t===null||e===null)return!1;let n=t.linksConnected;for(;n.next();){let o=n.value;if(o===i||s&&!o.isTreeLink||o.toNode!==t)continue;let r=o.fromNode;if(!(r===t||r===null)&&this.Vu(r,e,i,s))return!0}return!1}yR(t,e,i){if(t===e)return!0;let s=new Set;return s.add(e),this.SA(s,t,e,i)}SA(t,e,i,s){if(e===i)return!0;if(e===null||i===null||t.has(e))return!1;t.add(e);let n=e.linksConnected;for(;n.next();){let o=n.value;if(o===s||o.toNode!==e)continue;let r=o.fromNode;if(!(r===e||r===null)&&this.SA(t,r,i,s))return!0}return!1}wR(t,e,i){if(t===e)return!0;let s=new Set;return s.add(e),this.MA(s,t,e,i)}MA(t,e,i,s){if(e===i)return!0;if(e===null||i===null||t.has(e))return!1;t.add(e);let n=e.linksConnected;for(;n.next();){let o=n.value;if(o===s)continue;let r=o.fromNode,a=o.toNode,h=r===e?a:r;if(!(h===e||h===null)&&this.MA(t,h,i,s))return!0}return!1}get linkValidation(){return this.Vl}set linkValidation(t){t!==null&&m.S(t,he,"linkValidation"),this.Vl=t}get portTargeted(){return this.OS}set portTargeted(t){t!==null&&m.S(t,he,"portTargeted"),this.OS=t}}var Ts=(x=>(x[x.Either=1]="Either",x[x.ForwardsOnly=2]="ForwardsOnly",x[x.BackwardsOnly=3]="BackwardsOnly",x))(Ts||{});class Te extends he{ES;US;P;VS;constructor(t){super(),this.name="Linking",this.ES={},this.US=null,this.P=1,this.VS=null,t&&Object.assign(this,t)}static Either=1;static ForwardsOnly=2;static BackwardsOnly=3;get archetypeLinkData(){return this.ES}set archetypeLinkData(t){t!==null&&m.wc(t,Te,"archetypeLinkData"),t instanceof J&&m.se(t,j,Te,"archetypeLinkData"),this.ES=t}get archetypeLabelNodeData(){return this.US}set archetypeLabelNodeData(t){t!==null&&m.wc(t,Te,"archetypeLabelNodeData"),t instanceof J&&m.se(t,$,Te,"archetypeLabelNodeData"),this.US=t}get direction(){return this.P}set direction(t){this.P=t}get startObject(){return this.VS}set startObject(t){t!==null&&m.se(t,J,Te,"startObject"),this.VS=t}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;return t.isReadOnly||t.isModelReadOnly||!t.allowLink||!t.model.Cx()||!t.lastInput.left||t.currentTool!==this&&!this.isBeyondDragSize()?!1:this.findLinkablePort()!==null}findLinkablePort(){let t=this.diagram,e=this.startObject;if(e===null&&(e=t.findObjectAt(t.firstInput.documentPoint,null,null)),e===null)return null;let i=e.part;if(!(i instanceof $))return null;let s=this.direction;if(s===1||s===2){let n=this.findValidLinkablePort(e,!1);if(n!==null)return this.isForwards=!0,n;if(this.startObject===i){let o=i.port;if(this.findValidLinkablePort(o,!1))return this.isForwards=!0,o}}if(s===1||s===3){let n=this.findValidLinkablePort(e,!0);if(n!==null)return this.isForwards=!1,n;if(this.startObject===i){let o=i.port;if(this.findValidLinkablePort(o,!0))return this.isForwards=!1,o}}return null}doActivate(){let t=this.diagram,e=this.findLinkablePort();if(e===null){this.stopTool();return}if(this.startTransaction(this.name),t.isMouseCaptured=!0,t.currentCursor=this.linkingCursor,this.isForwards){this.temporaryToNode!==null&&(this.temporaryToNode.location=t.lastInput.documentPoint),this.originalFromPort=e;let i=this.originalFromPort.part;i instanceof $&&(this.originalFromNode=i),this.copyPortProperties(this.originalFromNode,this.originalFromPort,this.temporaryFromNode,this.temporaryFromPort,!1)}else{this.temporaryFromNode!==null&&(this.temporaryFromNode.location=t.lastInput.documentPoint),this.originalToPort=e;let i=this.originalToPort.part;i instanceof $&&(this.originalToNode=i),this.copyPortProperties(this.originalToNode,this.originalToPort,this.temporaryToNode,this.temporaryToPort,!0)}t.add(this.temporaryFromNode),this.temporaryFromNode&&this.temporaryFromNode.ensureBounds(),t.add(this.temporaryToNode),this.temporaryToNode&&this.temporaryToNode.ensureBounds(),this.temporaryLink!==null&&(this.temporaryFromNode!==null&&(this.temporaryLink.fromNode=this.temporaryFromNode),this.temporaryToNode!==null&&(this.temporaryLink.toNode=this.temporaryToNode),this.temporaryLink.isTreeLink=this.isNewTreeLink(),this.temporaryLink.$t(),t.add(this.temporaryLink)),this.isActive=!0}doDeactivate(){this.isActive=!1;let t=this.diagram;t.remove(this.temporaryLink),t.remove(this.temporaryFromNode),t.remove(this.temporaryToNode),t.isMouseCaptured=!1,t.currentCursor="",this.stopTransaction()}doStop(){super.doStop(),this.startObject=null}doMouseUp(){if(this.isActive){let t=this.diagram;this.transactionResult=null;let e=null,i=null,s=null,n=null,o=null;try{this.targetPort=this.findTargetPort(this.isForwards);let r=this.targetPort;if(r!==null){let a=r.part;a instanceof $&&(this.isForwards?(this.originalFromNode!==null&&(e=this.originalFromNode,i=this.originalFromPort),s=a,n=r):(e=a,i=r,this.originalToNode!==null&&(s=this.originalToNode,n=this.originalToPort)))}else this.isForwards?this.originalFromNode!==null&&this.isUnconnectedLinkValid&&(e=this.originalFromNode,i=this.originalFromPort):this.originalToNode!==null&&this.isUnconnectedLinkValid&&(s=this.originalToNode,n=this.originalToPort);e!==null||s!==null?(o=this.insertLink(e,i,s,n),o!==null?(r===null&&(this.isForwards?o.defaultToPoint=t.lastInput.documentPoint:o.defaultFromPoint=t.lastInput.documentPoint),t.allowSelect&&(t.T("ChangingSelection",t.selection),t.clearSelection(!0),o.isSelected=!0),this.transactionResult=this.name,t.T("LinkDrawn",o)):this.doNoLink(e,i,s,n)):this.isForwards?this.doNoLink(this.originalFromNode,this.originalFromPort,null,null):this.doNoLink(null,null,this.originalToNode,this.originalToPort)}finally{this.stopTool(),o&&t.allowSelect&&t.T("ChangedSelection",t.selection)}}}isNewTreeLink(){let t=this.archetypeLinkData;if(t===null)return!0;if(t instanceof j)return t.isTreeLink;let e=this.diagram;if(e===null)return!0;let i=e.partManager.getLinkCategoryForData(t),s=e.partManager.findLinkTemplateForCategory(i);return s!==null?s.isTreeLink:!0}insertLink(t,e,i,s){return this.diagram.partManager.insertLink(t,e,i,s)}doNoLink(t,e,i,s){}}class $e extends he{CA=null;NA=null;BS=null;zS=null;Ss;XS;constructor(t){super(),this.name="Relinking",this.fromHandleArchetype=new it("Diamond",{desiredSize:nt.Su,fill:"lightblue",stroke:"dodgerblue",cursor:this.linkingCursor,segmentIndex:0}).theme("fill","adornmentFill").theme("stroke","adornmentStroke"),this.toHandleArchetype=new it("Diamond",{desiredSize:nt.Su,fill:"lightblue",stroke:"dodgerblue",cursor:this.linkingCursor,segmentIndex:-1}).theme("fill","adornmentFill").theme("stroke","adornmentStroke"),this.Ss=null,this.XS=new I,t&&Object.assign(this,t)}updateAdornments(t){if(t===null||!(t instanceof j))return;let e="RelinkFrom",i=null;if(t.isSelected&&!this.diagram.isReadOnly){let s=t.selectionObject;s!==null&&t.canRelinkFrom()&&t.actualBounds.isReal()&&t.isVisible()&&s.actualBounds.isReal()&&s.isVisibleObject()&&(i=t.findAdornment(e),i===null&&(i=this.makeAdornment(s,!1),t.addAdornment(e,i)))}if(i===null&&t.removeAdornment(e),e="RelinkTo",i=null,t.isSelected&&!this.diagram.isReadOnly){let s=t.selectionObject;s!==null&&t.canRelinkTo()&&t.actualBounds.isReal()&&t.isVisible()&&s.actualBounds.isReal()&&s.isVisibleObject()&&(i=t.findAdornment(e),i===null?(i=this.makeAdornment(s,!0),t.addAdornment(e,i)):i.f())}i===null&&t.removeAdornment(e)}makeAdornment(t,e){let i=e?this.zS:this.BS;return i&&(i=i.copy(),i.adornedObject=t),i}get fromHandleArchetype(){return this.CA}set fromHandleArchetype(t){t!==null&&m.se(t,J,$e,"fromHandleArchetype"),this.CA=t,t!==null?this.BS=new vt(G.Link).add(t).It():this.BS=null}get toHandleArchetype(){return this.NA}set toHandleArchetype(t){t!==null&&m.se(t,J,$e,"toHandleArchetype"),this.NA=t,t!==null?this.zS=new vt(G.Link).add(t).It():this.zS=null}get handle(){return this.Ss}set handle(t){t!==null&&(t.part instanceof vt||m.o("new handle is not in an Adornment: "+t)),this.Ss=t}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;if(t.isReadOnly||t.isModelReadOnly||!t.allowRelink||!t.model.Cx()||!t.lastInput.left)return!1;let e=this.findToolHandleAt(t.firstInput.documentPoint,"RelinkFrom");return e===null&&(e=this.findToolHandleAt(t.firstInput.documentPoint,"RelinkTo")),e!==null}doActivate(){let t=this.diagram;if(this.originalLink===null){let i=this.handle;if(i===null&&(i=this.findToolHandleAt(t.firstInput.documentPoint,"RelinkFrom"),i===null&&(i=this.findToolHandleAt(t.firstInput.documentPoint,"RelinkTo"))),i===null)return;let s=i.part;if(!(s instanceof vt)||!(s.adornedPart instanceof j))return;this.handle=i,this.isForwards=s===null||s.category==="RelinkTo",this.originalLink=s.adornedPart}let e=this.originalLink;e!==null&&(this.startTransaction(this.name),t.isMouseCaptured=!0,t.currentCursor=this.linkingCursor,this.originalFromPort=e.fromPort,this.originalFromNode=e.fromNode,this.originalToPort=e.toPort,this.originalToNode=e.toNode,this.XS.set(e.actualBounds),e.pointsCount>0&&(e.fromNode===null&&(this.temporaryFromPort!==null&&(this.temporaryFromPort.desiredSize=nt.xc),this.temporaryFromNode!==null&&(this.temporaryFromNode.location=e.getPoint(0))),e.toNode===null&&(this.temporaryToPort!==null&&(this.temporaryToPort.desiredSize=nt.xc),this.temporaryToNode!==null&&(this.temporaryToNode.location=e.getPoint(e.pointsCount-1)))),this.copyPortProperties(this.originalFromNode,this.originalFromPort,this.temporaryFromNode,this.temporaryFromPort,!1),this.copyPortProperties(this.originalToNode,this.originalToPort,this.temporaryToNode,this.temporaryToPort,!0),t.add(this.temporaryFromNode),t.add(this.temporaryToNode),this.temporaryLink!==null&&(this.temporaryFromNode!==null&&(this.temporaryLink.fromNode=this.temporaryFromNode),this.temporaryToNode!==null&&(this.temporaryLink.toNode=this.temporaryToNode),this.copyLinkProperties(e,this.temporaryLink),this.temporaryLink.$t(),t.add(this.temporaryLink)),this.isActive=!0)}copyLinkProperties(t,e){if(t===null||e===null)return;e.adjusting=t.adjusting,e.corner=t.corner;let i=t.curve;(i===11||i===10)&&(i=0),e.curve=i,e.curviness=t.curviness,e.isTreeLink=t.isTreeLink,e.points=t.points,e.routing=t.routing,e.smoothness=t.smoothness,e.fromSpot=t.fromSpot,e.fromEndSegmentLength=t.fromEndSegmentLength,e.fromShortLength=t.fromShortLength,e.toSpot=t.toSpot,e.toEndSegmentLength=t.toEndSegmentLength,e.toShortLength=t.toShortLength}doDeactivate(){this.isActive=!1;let t=this.diagram;t.remove(this.temporaryLink),t.remove(this.temporaryFromNode),t.remove(this.temporaryToNode),t.isMouseCaptured=!1,t.currentCursor="",this.stopTransaction()}doStop(){super.doStop(),this.handle=null}doMouseUp(){if(this.isActive){let t=this.diagram;this.transactionResult=null;let e=this.originalFromNode,i=this.originalFromPort,s=this.originalToNode,n=this.originalToPort,o=this.originalLink;try{if(this.targetPort=this.findTargetPort(this.isForwards),this.targetPort!==null){let r=this.targetPort.part;r instanceof $&&(this.isForwards?(s=r,n=this.targetPort):(e=r,i=this.targetPort))}else this.isUnconnectedLinkValid?this.isForwards?(s=null,n=null):(e=null,i=null):o=null;o!==null?(this.reconnectLink(o,this.isForwards?s:e,this.isForwards?n:i,this.isForwards),this.targetPort===null&&(this.isForwards?o.defaultToPoint=t.lastInput.documentPoint:o.defaultFromPoint=t.lastInput.documentPoint,o.$t()),this.transactionResult=this.name,t.T("LinkRelinked",o,this.isForwards?this.originalToPort:this.originalFromPort)):this.originalLink!==null&&this.doNoRelink(this.originalLink,this.isForwards),this.originalLink!==null&&this.originalLink.invalidateOtherJumpOvers(this.XS)}finally{this.stopTool()}}}reconnectLink(t,e,i,s){let n=i!==null&&i.portId!==null?i.portId:"";return s?(t.toNode=e,t.toPortId=n):(t.fromNode=e,t.fromPortId=n),!0}doNoRelink(t,e){}doDraggingMouseMove(t,e,i,s){t!==null?(this.copyPortProperties(t,e,this.temporaryFromNode,this.temporaryFromPort,!1),this.diagram.add(this.temporaryFromNode)):this.diagram.remove(this.temporaryFromNode),i!==null?(this.copyPortProperties(i,s,this.temporaryToNode,this.temporaryToPort,!0),this.diagram.add(this.temporaryToNode)):this.diagram.remove(this.temporaryToNode)}stopDraggingMouseMove(){this.diagram.remove(this.temporaryFromNode),this.diagram.remove(this.temporaryToNode)}}var Ls=(x=>(x[x.None=0]="None",x[x.Horizontal=1]="Horizontal",x[x.Vertical=2]="Vertical",x[x.All=3]="All",x))(Ls||{});class Je extends Zt{Sr;GS;YS;Ss;Nx;KS;Im;constructor(t){super(),this.name="LinkReshaping",this.Sr=new it("Rectangle",{desiredSize:nt.RL,fill:"lightblue",stroke:"dodgerblue"}).theme("fill","adornmentFill").theme("stroke","adornmentStroke"),this.GS=new it("Diamond",{desiredSize:nt.Su,fill:"lightblue",stroke:"dodgerblue",cursor:"move"}).theme("fill","adornmentFill").theme("stroke","adornmentStroke"),this.YS=3,this.Ss=null,this.Nx=null,this.KS=new P,this.Im=new q,t&&Object.assign(this,t)}static None=0;static Horizontal=1;static Vertical=2;static All=3;getReshapingBehavior(t){return t?t.Mr:0}setReshapingBehavior(t,e){t.Mr=e}updateAdornments(t){if(t===null||!(t instanceof j))return;let e=null;if(t.isSelected&&!this.diagram.isReadOnly){let i=t.path;i!==null&&t.canReshape()&&t.actualBounds.isReal()&&t.isVisible()&&i.actualBounds.isReal()&&i.isVisibleObject()&&(e=t.findAdornment(this.name),(e===null||e.HS!==t.pointsCount||e.qS!==t.resegmentable)&&(e=this.makeAdornment(i),e!==null&&(e.HS=t.pointsCount,e.qS=t.resegmentable,t.addAdornment(this.name,e))))}e===null&&t.removeAdornment(this.name)}makeAdornment(t){let e=t.part,i=e.points,s=e.pointsCount,n=e.isOrthogonal,o=null;if(i!==null&&s>1){o=new vt,o.type=G.Link;let r=e.firstPickIndex,a=e.lastPickIndex,h=n?1:0;if(e.resegmentable&&(e.computeCurve()!==9||e.isOrthogonal))for(let c=r+h;c<a-h;c++){let d=this.makeResegmentHandle(t,c);d!==null&&(d.segmentIndex=c,d.segmentFraction=.5,d.fromMaxLinks=999,o.add(d))}let l=r+1,u=a-1;for(;l<=u;)if(l<u)this.jS(t,o,r,a,l),this.jS(t,o,r,a,u),l++,u--;else if(l===u){this.jS(t,o,r,a,l);break}o.adornedObject=t}return o}jS(t,e,i,s,n){let o=t.part,r=o.isOrthogonal,a=this.makeHandle(t,n);if(a!==null){if(a.segmentIndex=n,n!==i)if(n===i+1&&r){let h=o.getPoint(i),l=o.getPoint(i+1);C.c(h.x,l.x)&&C.c(h.y,l.y)?(l=o.getPoint(i-1),C.c(h.x,l.x)?(this.setReshapingBehavior(a,2),a.cursor="n-resize"):C.c(h.y,l.y)&&(this.setReshapingBehavior(a,1),a.cursor="w-resize")):C.c(h.x,l.x)?(this.setReshapingBehavior(a,2),a.cursor="n-resize"):C.c(h.y,l.y)&&(this.setReshapingBehavior(a,1),a.cursor="w-resize")}else if(n===s-1&&r){let h=o.getPoint(s-1),l=o.getPoint(s);C.c(h.x,l.x)&&C.c(h.y,l.y)?(h=o.getPoint(s+1),C.c(h.x,l.x)?(this.setReshapingBehavior(a,2),a.cursor="n-resize"):C.c(h.y,l.y)&&(this.setReshapingBehavior(a,1),a.cursor="w-resize")):C.c(h.x,l.x)?(this.setReshapingBehavior(a,2),a.cursor="n-resize"):C.c(h.y,l.y)&&(this.setReshapingBehavior(a,1),a.cursor="w-resize")}else n===s||(this.setReshapingBehavior(a,3),a.cursor="move");e.add(a)}}makeHandle(t,e){let i=this.handleArchetype;return i===null?null:i.copy().WS()}get handleArchetype(){return this.Sr}set handleArchetype(t){t!==null&&m.se(t,J,Je,"handleArchetype"),this.Sr=t}makeResegmentHandle(t,e){let i=this.midHandleArchetype;return i===null?null:i.copy().WS()}get midHandleArchetype(){return this.GS}set midHandleArchetype(t){t!==null&&m.se(t,J,Je,"midHandleArchetype"),this.GS=t}get handle(){return this.Ss}set handle(t){t!==null&&(t.part instanceof vt||m.o("new handle is not in an Adornment: "+t)),this.Ss=t}get adornedLink(){return this.Nx}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;return t.isReadOnly||!t.allowReshape||!t.lastInput.left?!1:this.findToolHandleAt(t.firstInput.documentPoint,this.name)!==null}doActivate(){let t=this.diagram;if(this.handle===null&&(this.handle=this.findToolHandleAt(t.firstInput.documentPoint,this.name)),this.handle===null)return;let e=this.handle.part.adornedPart;if(e instanceof j){if(this.Nx=e,t.isMouseCaptured=!0,this.startTransaction(this.name),e.resegmentable&&this.handle.fromMaxLinks===999){let i=e.points.copy(),s=this.getResegmentingPoint();if(i.insertAt(this.handle.segmentIndex+1,s),e.isOrthogonal&&i.insertAt(this.handle.segmentIndex+1,s),e.points=i,e.invalidateAdornments(),e.updateAdornments(),this.handle=this.findToolHandleAt(t.firstInput.documentPoint,this.name),this.handle===null){this.doDeactivate();return}}this.KS=e.getPoint(this.handle.segmentIndex),this.Im=e.points.copy(),this.isActive=!0}}doDeactivate(){this.stopTransaction(),this.handle=null,this.Nx=null;let t=this.diagram;t.isMouseCaptured=!1,this.isActive=!1}stopTransaction(){let t=this.diagram,e=super.stopTransaction();return e&&t.undoManager.transactionToUndo!==null&&t.undoManager.transactionToUndo.optimize(),e}doCancel(){let t=this.adornedLink;t!==null&&(t.points=this.Im),this.stopTool()}getResegmentingPoint(){return this.handle===null?this.diagram.lastInput.documentPoint:this.handle.getDocumentPoint(T.Center)}doMouseMove(){let t=this.diagram;if(this.isActive){let e=this.computeReshape(t.lastInput.documentPoint);this.reshape(e)}}doMouseUp(){let t=this.diagram;if(this.isActive){let e=this.computeReshape(t.lastInput.documentPoint);this.reshape(e);let i=this.adornedLink;if(i!==null&&i.resegmentable&&this.handle!==null&&(i.computeCurve()!==9||i.isOrthogonal)){let s=this.handle.segmentIndex,n=i.getPoint(s-1),o=i.getPoint(s),r=i.getPoint(s+1);if(i.isOrthogonal){if(s>i.firstPickIndex+1&&s<i.lastPickIndex-1){let a=i.getPoint(s-2);if(this.isWithinResegmentingDistance(n,o)&&(this.isInLineOrtho(a,n,o,r,!0)||this.isInLineOrtho(a,n,o,r,!1))){let h=i.points.copy();this.isInLineOrtho(a,n,o,r,!0)?(h.setElt(s-2,new P(a.x,(r.y+a.y)/2)),h.setElt(s+1,new P(r.x,(r.y+a.y)/2))):(h.setElt(s-2,new P((r.x+a.x)/2,a.y)),h.setElt(s+1,new P((r.x+a.x)/2,r.y))),h.removeAt(s),h.removeAt(s-1),i.points=h,i.invalidateAdornments()}else if(a=i.getPoint(s+2),this.isWithinResegmentingDistance(o,r)&&(this.isInLineOrtho(n,o,r,a,!0)||this.isInLineOrtho(n,o,r,a,!1))){let h=i.points.copy();this.isInLineOrtho(n,o,r,a,!0)?(h.setElt(s-1,new P(n.x,(n.y+a.y)/2)),h.setElt(s+2,new P(a.x,(n.y+a.y)/2))):(h.setElt(s-1,new P((n.x+a.x)/2,n.y)),h.setElt(s+2,new P((n.x+a.x)/2,a.y))),h.removeAt(s+1),h.removeAt(s),i.points=h,i.invalidateAdornments()}}}else{let a=P.l();if(C.Ll(n.x,n.y,r.x,r.y,o.x,o.y,a)&&a.distanceSquaredPoint(o)<this.resegmentingDistance*this.resegmentingDistance){let h=i.points.copy();h.removeAt(s),i.points=h,i.invalidateAdornments()}P.i(a)}}t.invalidateDocumentBounds(),this.transactionResult=this.name,t.T("LinkReshaped",this.adornedLink,this.Im)}this.stopTool()}isWithinResegmentingDistance(t,e){return Math.abs(t.x-e.x)<this.resegmentingDistance&&Math.abs(t.y-e.y)<this.resegmentingDistance}isInLineOrtho(t,e,i,s,n){return n?Math.abs(t.y-e.y)<this.resegmentingDistance&&Math.abs(e.y-i.y)<this.resegmentingDistance&&Math.abs(i.y-s.y)<this.resegmentingDistance:Math.abs(t.x-e.x)<this.resegmentingDistance&&Math.abs(e.x-i.x)<this.resegmentingDistance&&Math.abs(i.x-s.x)<this.resegmentingDistance}get resegmentingDistance(){return this.YS}set resegmentingDistance(t){m.s(t,"number",Je,"resegmentingDistance"),this.YS=t}reshape(t){let e=this.adornedLink;if(e===null)return;let i=this.handle;if(i===null)return;e.startRoute();let s=i.segmentIndex,n=this.getReshapingBehavior(i);if(e.isOrthogonal)if(s===e.firstPickIndex+1){let o=e.firstPickIndex+1;n===2?(e.setPointAt(o,e.getPoint(o-1).x,t.y),e.setPointAt(o+1,e.getPoint(o+2).x,t.y)):n===1&&(e.setPointAt(o,t.x,e.getPoint(o-1).y),e.setPointAt(o+1,t.x,e.getPoint(o+2).y))}else if(s===e.lastPickIndex-1){let o=e.lastPickIndex-1;n===2?(e.setPointAt(o-1,e.getPoint(o-2).x,t.y),e.setPointAt(o,e.getPoint(o+1).x,t.y)):n===1&&(e.setPointAt(o-1,t.x,e.getPoint(o-2).y),e.setPointAt(o,t.x,e.getPoint(o+1).y))}else{let o=s,r=e.getPoint(o);if(!t.equalsApprox(r)){let a=e.getPoint(o-2),h=e.getPoint(o-1),l=e.getPoint(o+1),u=e.getPoint(o+2);C.c(h.x,r.x)&&C.c(r.y,l.y)?(C.c(h.x,a.x)&&!C.c(h.y,a.y)&&!C.c(t.x,r.x)?(e.insertPointAt(o,t.x,h.y),s++,o++):e.setPointAt(o-1,t.x,h.y),C.c(l.y,u.y)&&!C.c(l.x,u.x)&&!C.c(t.y,r.y)?e.insertPointAt(o+1,l.x,t.y):e.setPointAt(o+1,l.x,t.y)):C.c(h.y,r.y)&&C.c(r.x,l.x)?(C.c(h.y,a.y)&&!C.c(h.x,a.x)&&!C.c(t.y,r.y)?(e.insertPointAt(o,h.x,t.y),s++,o++):e.setPointAt(o-1,h.x,t.y),C.c(l.x,u.x)&&!C.c(l.y,u.y)&&!C.c(t.x,r.x)?e.insertPointAt(o+1,t.x,l.y):e.setPointAt(o+1,t.x,l.y)):C.c(h.x,r.x)&&C.c(r.x,l.x)?(C.c(h.x,a.x)&&!C.c(h.y,a.y)&&!C.c(t.x,r.x)?(e.insertPointAt(o,t.x,h.y),s++,o++):e.setPointAt(o-1,t.x,h.y),C.c(l.x,u.x)&&!C.c(l.y,u.y)&&!C.c(t.x,r.x)?e.insertPointAt(o+1,t.x,l.y):e.setPointAt(o+1,t.x,l.y)):C.c(h.y,r.y)&&C.c(r.y,l.y)&&(C.c(h.y,a.y)&&!C.c(h.x,a.x)&&!C.c(t.y,r.y)?(e.insertPointAt(o,h.x,t.y),s++,o++):e.setPointAt(o-1,h.x,t.y),C.c(l.y,u.y)&&!C.c(l.x,u.x)&&!C.c(t.y,r.y)?e.insertPointAt(o+1,l.x,t.y):e.setPointAt(o+1,l.x,t.y)),e.setPointAt(s,t.x,t.y)}}else{e.setPointAt(s,t.x,t.y);let o=e.fromNode,r=e.fromPort;if(o!==null){let l=o.findVisibleNode();l!==null&&l!==o&&(o=l,r=o.port)}if(s===1&&r!==null&&e.computeSpot(!0,r).isNoSpot()){let l=r.getDocumentPoint(T.Center,P.l()),u=e.getLinkPointFromPoint(o,r,l,t,!0,P.l());e.setPointAt(0,u.x,u.y),P.i(l),P.i(u)}let a=e.toNode,h=e.toPort;if(a!==null){let l=a.findVisibleNode();l!==null&&l!==a&&(a=l,h=a.port)}if(s===e.pointsCount-2&&h!==null&&e.computeSpot(!1,h).isNoSpot()){let l=h.getDocumentPoint(T.Center,P.l()),u=e.getLinkPointFromPoint(a,h,l,t,!1,P.l());e.setPointAt(e.pointsCount-1,u.x,u.y),P.i(l),P.i(u)}}e.commitRoute()}computeReshape(t){let e=this.adornedLink;if(e===null)return t;let i=this.handle;if(i===null)return t;let s=i.segmentIndex;switch(this.getReshapingBehavior(i)){case 3:return t;case 2:{let n=e.getPoint(s);return new P(n.x,t.y)}case 1:{let n=e.getPoint(s);return new P(t.x,n.y)}default:case 0:return e.getPoint(s)}}get originalPoint(){return this.KS}get originalPoints(){return this.Im}}class Ze extends Zt{Cr;Nr;Ro;Oc;JS;Ms;Sr;Ss;Em;$S;Ic;Lx;Ax;Tx;constructor(t){super(),this.name="Resizing",this.Cr=new nt(1,1).k(),this.Nr=new nt(9999,9999).k(),this.Ro=new nt(NaN,NaN).k(),this.Oc=!1,this.JS=!0,this.Ms=null,this.Sr=new it("Rectangle",{alignmentFocus:T.Center,desiredSize:nt.RL,fill:"lightblue",stroke:"dodgerblue",strokeWidth:1,cursor:"pointer"}).theme("fill","adornmentFill").theme("stroke","adornmentStroke"),this.Ss=null,this.Em=new P,this.$S=new nt,this.Ic=new P,this.Lx=new nt(0,0),this.Ax=new nt(1/0,1/0),this.Tx=new nt(1,1),t&&Object.assign(this,t)}updateAdornments(t){if(t!==null){if(t.Lr()){let e=t.rotateObject;if(e===t||e===t.path||e.isPanelMain)return}if(t.isSelected&&!this.diagram.isReadOnly){let e=t.resizeObject,i=t.findAdornment(this.name);if(e!==null&&t.canResize()&&t.actualBounds.isReal()&&t.isVisible()&&e.actualBounds.isReal()&&e.isVisibleObject()&&((i===null||i.adornedObject!==e)&&(i=this.makeAdornment(e)),i!==null)){let s=e.getDocumentAngle();t.Bl()&&this.updateResizeHandles(i,s),t.addAdornment(this.name,i);return}}t.removeAdornment(this.name)}}makeAdornment(t){let e=null,i=t.part?.resizeAdornmentTemplate;if(i){if(e=i.copy(),e===null)return null}else{e=new vt,e.type=G.Spot,e.locationSpot=T.Center;let s=new ue;s.isPanelMain=!0,e.add(s);let n=this.makeHandle(t,T.TopLeft);n!==null&&e.add(n),n=this.makeHandle(t,T.TopRight),n!==null&&e.add(n),n=this.makeHandle(t,T.BottomRight),n!==null&&e.add(n),n=this.makeHandle(t,T.BottomLeft),n!==null&&e.add(n),n=this.makeHandle(t,T.MiddleTop),n!==null&&e.add(n),n=this.makeHandle(t,T.MiddleRight),n!==null&&e.add(n),n=this.makeHandle(t,T.MiddleBottom),n!==null&&e.add(n),n=this.makeHandle(t,T.MiddleLeft),n!==null&&e.add(n)}return e.adornedObject=t,e}makeHandle(t,e){let i=this.handleArchetype;if(i===null)return null;let s=i.copy().WS();return s.alignment=e,s}updateResizeHandles(t,e){if(t!==null){if(!t.alignment.isDefault()&&(t.cursor==="pointer"||t.cursor.indexOf("resize")>0))this.xR(t,e);else if(t instanceof G){let i=t.elements;for(;i.next();){let s=i.value;this.updateResizeHandles(s,e)}}}}xR(t,e){let i=t.alignment;i.isNoSpot()&&(i=T.Center);let s=e;if(i.x<=0)i.y<=0?s+=225:i.y>=1?s+=135:s+=180;else if(i.x>=1)i.y<=0?s+=315:i.y>=1&&(s+=45);else if(i.y<=0)s+=270;else if(i.y>=1)s+=90;else return;s=C.Ee(s),s<22.5?t.cursor="e-resize":s<67.5?t.cursor="se-resize":s<112.5?t.cursor="s-resize":s<157.5?t.cursor="sw-resize":s<202.5?t.cursor="w-resize":s<247.5?t.cursor="nw-resize":s<292.5?t.cursor="n-resize":s<337.5?t.cursor="ne-resize":t.cursor="e-resize"}get handleArchetype(){return this.Sr}set handleArchetype(t){t!==null&&m.se(t,J,Ze,"handleArchetype"),this.Sr=t}get handle(){return this.Ss}set handle(t){t!==null&&(t.part instanceof vt||m.o("new handle is not in an Adornment: "+t)),this.Ss=t}get adornedObject(){return this.Ms}set adornedObject(t){t!==null&&t.part instanceof vt&&m.o("new handle must not be in an Adornment: "+t),this.Ms=t}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;return t.isReadOnly||!t.allowResize||!t.lastInput.left?!1:this.findToolHandleAt(t.firstInput.documentPoint,this.name)!==null}doActivate(){let t=this.diagram;this.handle===null&&(this.handle=this.findToolHandleAt(t.firstInput.documentPoint,this.name)),this.handle!==null&&(this.adornedObject=this.handle.part.adornedObject,this.adornedObject!==null&&this.adornedObject.part!==null&&(t.isMouseCaptured=!0,t.animationManager.stopAnimation(),t.Iu=!0,this.startTransaction(this.name),this.Em.set(this.adornedObject.getDocumentPoint(this.handle.alignment.opposite())),this.Ic.set(this.adornedObject.part.location),this.$S.set(this.adornedObject.desiredSize),this.Tx=this.computeCellSize(),this.Lx=this.computeMinSize(),this.Ax=this.computeMaxSize(),this.isActive=!0))}doDeactivate(){let t=this.diagram;t.Iu=!1,t.Ol=!0,this.stopTransaction(),this.handle=null,this.Ms=null,t.isMouseCaptured=!1,this.isActive=!1}stopTransaction(){let t=this.diagram,e=super.stopTransaction();return e&&t.undoManager.transactionToUndo!==null&&t.undoManager.transactionToUndo.optimize(),e}doCancel(){this.adornedObject!==null&&this.adornedObject.part!==null&&(this.adornedObject.desiredSize=this.originalDesiredSize,this.adornedObject.part.location=this.originalLocation),this.stopTool()}doMouseMove(){let t=this.diagram;if(!this.isActive||this.adornedObject===null||this.handle===null)return;let e=this.Lx,i=this.Ax,s=this.Tx,n=t.lastInput.documentPoint,o=this.adornedObject.getLocalPoint(n,P.l()),r=this.computeReshape(),a=this.computeResize(o,this.handle.alignment,e,i,s,r);this.resize(a),t.maybeUpdate(),P.i(o)}doMouseUp(){let t=this.diagram;if(this.isActive&&this.adornedObject!==null&&this.handle!==null){let e=this.Lx,i=this.Ax,s=this.Tx,n=this.adornedObject.getLocalPoint(t.lastInput.documentPoint,P.l()),o=this.computeReshape(),r=this.computeResize(n,this.handle.alignment,e,i,s,o);this.resize(r),P.i(n),t.invalidateDocumentBounds(),this.transactionResult=this.name,t.T("PartResized",this.adornedObject,this.originalDesiredSize)}this.stopTool()}resize(t){let e=this.diagram,i=this.adornedObject;if(i===null)return;i.desiredSize=t.size;let s=i.part;if(s===null||this.handle===null)return;s.ensureBounds();let n=i.getDocumentPoint(this.handle.alignment.opposite());if(s instanceof ht){let o=new q;o.add(s);let r;!this.dragsMembers&&!s.hasPlaceholder()&&(r=new Pi,r.dragsMembers=!1),e.moveParts(o,this.oppositePoint.copy().subtract(n),!0,r)}else s.location=s.location.copy().subtract(n).add(this.oppositePoint);e.maybeUpdate()}computeResize(t,e,i,s,n,o){if(this.adornedObject===null)return I.tm;e.isNoSpot()&&(e=T.Center);let r=this.adornedObject.naturalBounds,a=r.x,h=r.y,l=r.x+r.width,u=r.y+r.height,c=1;if(!o){let p=r.width,g=r.height;p<=0&&(p=1),g<=0&&(g=1),c=g/p}let d=P.l();C._g(t.x,t.y,a,h,n.width,n.height,d);let f=r.copy();return e.x<=0?e.y<=0?(f.x=Math.max(d.x,l-s.width),f.x=Math.min(f.x,l-i.width),f.width=Math.max(l-f.x,i.width),f.y=Math.max(d.y,u-s.height),f.y=Math.min(f.y,u-i.height),f.height=Math.max(u-f.y,i.height),o||(f.height/f.width>=1?(f.height=Math.max(Math.min(c*f.width,s.height),i.height),f.width=f.height/c):(f.width=Math.max(Math.min(f.height/c,s.width),i.width),f.height=c*f.width),f.x=l-f.width,f.y=u-f.height)):e.y>=1?(f.x=Math.max(d.x,l-s.width),f.x=Math.min(f.x,l-i.width),f.width=Math.max(l-f.x,i.width),f.height=Math.max(Math.min(d.y-h,s.height),i.height),o||(f.height/f.width>=1?(f.height=Math.max(Math.min(c*f.width,s.height),i.height),f.width=f.height/c):(f.width=Math.max(Math.min(f.height/c,s.width),i.width),f.height=c*f.width),f.x=l-f.width)):(f.x=Math.max(d.x,l-s.width),f.x=Math.min(f.x,l-i.width),f.width=l-f.x,o||(f.height=Math.max(Math.min(c*f.width,s.height),i.height),f.width=f.height/c,f.y=h+.5*(u-h-f.height))):e.x>=1?e.y<=0?(f.width=Math.max(Math.min(d.x-a,s.width),i.width),f.y=Math.max(d.y,u-s.height),f.y=Math.min(f.y,u-i.height),f.height=Math.max(u-f.y,i.height),o||(f.height/f.width>=1?(f.height=Math.max(Math.min(c*f.width,s.height),i.height),f.width=f.height/c):(f.width=Math.max(Math.min(f.height/c,s.width),i.width),f.height=c*f.width),f.y=u-f.height)):e.y>=1?(f.width=Math.max(Math.min(d.x-a,s.width),i.width),f.height=Math.max(Math.min(d.y-h,s.height),i.height),o||(f.height/f.width>=1?(f.height=Math.max(Math.min(c*f.width,s.height),i.height),f.width=f.height/c):(f.width=Math.max(Math.min(f.height/c,s.width),i.width),f.height=c*f.width))):(f.width=Math.max(Math.min(d.x-a,s.width),i.width),o||(f.height=Math.max(Math.min(c*f.width,s.height),i.height),f.width=f.height/c,f.y=h+.5*(u-h-f.height))):e.y<=0?(f.y=Math.max(d.y,u-s.height),f.y=Math.min(f.y,u-i.height),f.height=u-f.y,o||(f.width=Math.max(Math.min(f.height/c,s.width),i.width),f.height=c*f.width,f.x=a+.5*(l-a-f.width))):e.y>=1&&(f.height=Math.max(Math.min(d.y-h,s.height),i.height),o||(f.width=Math.max(Math.min(f.height/c,s.width),i.width),f.height=c*f.width,f.x=a+.5*(l-a-f.width))),P.i(d),f}computeReshape(){let t=0;return this.adornedObject instanceof it&&(t=this.adornedObject.ZS()),!(t===6||this.diagram.lastInput.shift)}computeMinSize(){if(this.adornedObject===null)return nt.xc;let t=this.adornedObject.minSize.copy(),e=this.minSize;return!isNaN(e.width)&&e.width>t.width&&(t.width=e.width),!isNaN(e.height)&&e.height>t.height&&(t.height=e.height),t}computeMaxSize(){if(this.adornedObject===null)return nt.NP;let t=this.adornedObject.maxSize.copy(),e=this.maxSize;return!isNaN(e.width)&&e.width<t.width&&(t.width=e.width),!isNaN(e.height)&&e.height<t.height&&(t.height=e.height),t}computeCellSize(){let t=new nt(NaN,NaN),e=this.adornedObject?.part;if(e){let n=e.resizeCellSize;!isNaN(n.width)&&n.width>0&&(t.width=n.width),!isNaN(n.height)&&n.height>0&&(t.height=n.height)}let i=this.cellSize;isNaN(t.width)&&!isNaN(i.width)&&i.width>0&&(t.width=i.width),isNaN(t.height)&&!isNaN(i.height)&&i.height>0&&(t.height=i.height);let s=this.diagram;if((isNaN(t.width)||isNaN(t.height))&&s){let n=s.grid;n!==null&&n.visible&&this.isGridSnapEnabled&&(i=n.gridCellSize,isNaN(t.width)&&!isNaN(i.width)&&i.width>0&&(t.width=i.width),isNaN(t.height)&&!isNaN(i.height)&&i.height>0&&(t.height=i.height))}return(isNaN(t.width)||t.width===0||t.width===1/0)&&(t.width=1),(isNaN(t.height)||t.height===0||t.height===1/0)&&(t.height=1),t}get minSize(){return this.Cr}set minSize(t){if(!this.Cr.equals(t)){let e=t.width;isNaN(e)&&(e=0);let i=t.height;isNaN(i)&&(i=0),this.Cr.e(e,i)}}get maxSize(){return this.Nr}set maxSize(t){if(!this.Nr.equals(t)){let e=t.width;isNaN(e)&&(e=1/0);let i=t.height;isNaN(i)&&(i=1/0),this.Nr.e(e,i)}}get cellSize(){return this.Ro}set cellSize(t){this.Ro.equals(t)||this.Ro.h(t)}get isGridSnapEnabled(){return this.Oc}set isGridSnapEnabled(t){m.s(t,"boolean",Ze,"isGridSnapEnabled"),this.Oc=t}get dragsMembers(){return this.JS}set dragsMembers(t){m.s(t,"boolean",Ze,"dragsMembers"),this.JS=t}get oppositePoint(){return this.Em}set oppositePoint(t){this.Em.equals(t)||this.Em.h(t)}get originalDesiredSize(){return this.$S}get originalLocation(){return this.Ic}}class Le extends Zt{QS;_S;Ms=null;Sr=null;Dx=null;Ss=null;tM;Um;Ic;eM;iM;constructor(t){super(),this.name="Rotating",this.QS=45,this._S=2,this.Ic=new P,this.Ms=null,this.handleArchetype=new it("Ellipse",{desiredSize:nt.Su,fill:"lightblue",stroke:"dodgerblue",strokeWidth:1,cursor:"pointer"}).theme("fill","adornmentFill").theme("stroke","adornmentStroke"),this.Ss=null,this.tM=0,this.Um=new P(NaN,NaN),this.eM=0,this.iM=50,t&&Object.assign(this,t)}updateAdornments(t){if(t!==null){if(t.Lr()){let e=t.rotateObject;if(e===t||e===t.path||e.isPanelMain)return}if(t.isSelected&&!this.diagram.isReadOnly){let e=t.rotateObject;if(e!==null&&t.canRotate()&&t.actualBounds.isReal()&&t.isVisible()&&e.actualBounds.isReal()&&e.isVisibleObject()){let i=t.findAdornment(this.name);if((i===null||i.adornedObject!==e)&&(i=this.makeAdornment(e)),i!==null){i.angle=e.getDocumentAngle(),i.hasPlaceholder()||(i.location=this.computeAdornmentLocation(e)),t.addAdornment(this.name,i);return}}}t.removeAdornment(this.name)}}makeAdornment(t){let e=null,i=t.part?.rotateAdornmentTemplate;return i?e=i.copy():this.Dx!==null&&(e=this.Dx.copy()),e===null?null:(e.adornedObject=t,e)}get handleArchetype(){return this.Sr}set handleArchetype(t){t!==null&&m.se(t,J,Le,"handleArchetype"),this.Sr=t,t!==null?this.Dx=new vt(G.Position,{locationSpot:T.Center}).add(t).It():this.Dx=null}get handle(){return this.Ss}set handle(t){t!==null&&(t.part instanceof vt||m.o("new handle is not in an Adornment: "+t)),this.Ss=t}get adornedObject(){return this.Ms}set adornedObject(t){t!==null&&t.part instanceof vt&&m.o("new handle must not be in an Adornment: "+t),this.Ms=t}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;return t.isReadOnly||!t.allowRotate||!t.lastInput.left?!1:this.findToolHandleAt(t.firstInput.documentPoint,this.name)!==null}doActivate(){let t=this.diagram;if(this.adornedObject===null){if(this.handle===null&&(this.handle=this.findToolHandleAt(t.firstInput.documentPoint,this.name)),this.handle===null)return;this.adornedObject=this.handle.part.adornedObject}this.adornedObject===null||this.adornedObject.part===null||(t.isMouseCaptured=!0,t.delaysLayout=!0,this.startTransaction(this.name),this.tM=this.adornedObject.angle,this.Um=this.computeRotationPoint(this.adornedObject),this.Ic=this.adornedObject.part.location.copy(),this.isActive=!0)}computeRotationPoint(t){let e=t.part;if(e!==null){let i=e.locationObject;if(e.rotationSpot.isSpot())return t.getDocumentPoint(e.rotationSpot);if(t===e||t===i)return i.getDocumentPoint(e.locationSpot)}return t.getDocumentPoint(T.Center)}computeAdornmentLocation(t){let e=this.rotationPoint;e.isReal()||(e=this.computeRotationPoint(t));let i=t.getLocalPoint(e),s=this.handleAngle;s=C.Ee(s),s=Math.round(Math.round(s/45)*45);let n=this.handleDistance;return s===0?i.x=t.naturalBounds.width+n:s===45?(i.x=t.naturalBounds.width+n,i.y=t.naturalBounds.height+n):s===90?i.y=t.naturalBounds.height+n:s===135?(i.x=-n,i.y=t.naturalBounds.height+n):s===180?i.x=-n:s===225?(i.x=-n,i.y=-n):s===270?i.y=-n:s===315&&(i.x=t.naturalBounds.width+n,i.y=-n),t.getDocumentPoint(i)}doDeactivate(){let t=this.diagram;this.stopTransaction(),this.handle=null,this.Ms=null,this.Um=new P(NaN,NaN),t.isMouseCaptured=!1,this.isActive=!1}stopTransaction(){let t=this.diagram,e=super.stopTransaction();return e&&t.undoManager.transactionToUndo!==null&&t.undoManager.transactionToUndo.optimize(),e}doCancel(){let t=this.diagram;t.delaysLayout=!1,this.rotate(this.originalAngle),this.stopTool()}doMouseMove(){let t=this.diagram;if(this.isActive){let e=this.computeRotate(t.lastInput.documentPoint);this.rotate(e)}}doMouseUp(){let t=this.diagram;if(this.isActive){t.delaysLayout=!1;let e=this.computeRotate(t.lastInput.documentPoint);this.rotate(e),t.invalidateDocumentBounds(),this.transactionResult=this.name,t.T("PartRotated",this.adornedObject,this.originalAngle)}this.stopTool()}rotate(t){let e=this.adornedObject;if(e===null||e.part===null)return;e.angle=t;let i=e.part;i.ensureBounds();let s=i.locationObject,n=i.rotateObject;if(s===n||s.isContainedBy(n)){let o=this.Ic.copy();i.location=o.subtract(this.rotationPoint).rotate(t-this.originalAngle).add(this.rotationPoint)}this.diagram.maybeUpdate()}computeRotate(t){let e=this.rotationPoint.directionPoint(t)-this.handleAngle,i=this.adornedObject?.panel;i&&(e-=i.getDocumentAngle()),e=C.Ee(e);let s=Math.min(Math.abs(this.snapAngleMultiple),180),n=Math.min(Math.abs(this.snapAngleEpsilon),s/2);return!this.diagram.lastInput.shift&&s>0&&n>0&&(e%s<n?e=Math.floor(e/s)*s:e%s>s-n&&(e=(Math.floor(e/s)+1)*s)),C.Ee(e)}get snapAngleMultiple(){return this.QS}set snapAngleMultiple(t){m.s(t,"number",Le,"snapAngleMultiple"),this.QS=t}get snapAngleEpsilon(){return this._S}set snapAngleEpsilon(t){m.s(t,"number",Le,"snapAngleEpsilon"),this._S=t}get originalAngle(){return this.tM}get rotationPoint(){return this.Um}set rotationPoint(t){this.Um=t.copy()}get handleAngle(){return this.eM}set handleAngle(t){m.s(t,"number",Le,"handleAngle"),this.eM=t}get handleDistance(){return this.iM}set handleDistance(t){m.s(t,"number",Le,"handleDistance"),this.iM=t}}class Ds extends Zt{constructor(t){super(),this.name="ClickSelecting",t&&Object.assign(this,t)}canStart(){return!(!this.isEnabled||this.isBeyondDragSize())}doMouseUp(){this.isActive&&(this.standardMouseSelect(),this.standardMouseClick()||this.diagram.lastInput.isTouchEvent&&this.diagram.toolManager.doToolTip()),this.stopTool()}}class Fs extends Zt{Ec;constructor(t){super(),this.name="Action",this.Ec=null,t&&Object.assign(this,t)}canStart(){if(!this.isEnabled)return!1;let t=this.diagram,e=t.lastInput,i=t.findObjectAt(e.documentPoint,s=>{for(;s.panel!==null;){if(s.isActionable)return s;s=s.panel}return s});return i!==null&&i.isActionable?(this.Ec=i,t.Dc=t.findObjectAt(e.documentPoint,null,null),!0):!1}doMouseDown(){if(!this.isActive)this.canStart()&&this.doActivate();else{let t=this.diagram.lastInput,e=this.Ec;if(e===null)return;t.targetObject=e,e.actionDown!==null&&e.actionDown(t,e)}}doMouseMove(){if(this.isActive){let t=this.diagram.lastInput,e=this.Ec;if(e===null)return;t.targetObject=e,e.actionMove!==null&&e.actionMove(t,e)}}doMouseUp(){if(this.isActive){let t=this.diagram.lastInput,e=this.Ec;if(e===null)return;t.targetObject=e,e.actionUp!==null&&e.actionUp(t,e),this.standardMouseClick(i=>{for(;i.panel!==null;){if(i.isActionable&&i===e)return i;i=i.panel}return i},i=>i===e)}this.stopTool()}doCancel(){let t=this.diagram.lastInput,e=this.Ec;e!==null&&(t.targetObject=e,e.actionCancel!==null&&e.actionCancel(t,e),this.stopTool())}doStop(){this.Ec=null}}class Qe extends Zt{zl;sM;Oc;nM;constructor(t){super(),this.name="ClickCreating",this.zl=null,this.sM=!0,this.Oc=!1,this.nM=new P(0,0),t&&Object.assign(this,t)}canStart(){if(!this.isEnabled||this.archetypeNodeData===null)return!1;let t=this.diagram;if(t.isReadOnly||t.isModelReadOnly||!t.allowInsert||!t.lastInput.left||this.isBeyondDragSize())return!1;if(this.isDoubleClick){if(t.lastInput.clickCount===1&&(this.nM=t.lastInput.viewPoint.copy()),t.lastInput.clickCount!==2||this.isBeyondDragSize(this.nM))return!1}else if(t.lastInput.clickCount!==1)return!1;return!(t.currentTool!==this&&t.findPartAt(t.lastInput.documentPoint,!0)!==null)}doMouseUp(){let t=this.diagram;this.isActive&&this.insertPart(t.lastInput.documentPoint),this.stopTool()}insertPart(t){let e=this.diagram,i=this.archetypeNodeData;if(i===null)return null;let s=null;try{if(e.T("ChangingSelection",e.selection),this.startTransaction(this.name),i instanceof pt)i.Di()&&(i.It(),s=i.copy(),s!==null&&e.add(s));else if(i!==null){let n=e.model.copyNodeData(i);e.model.addNodeData(n),s=e.findPartForData(n)}if(s!==null){let n=P.z(t.x,t.y);this.isGridSnapEnabled&&this.diagram.oM(s,t,n),s.location=n,e.allowSelect&&(e.clearSelection(!0),s.isSelected=!0),P.i(n)}e.invalidateDocumentBounds(),this.transactionResult=this.name,e.T("PartCreated",s)}finally{this.stopTransaction(),e.T("ChangedSelection",e.selection)}return s}get archetypeNodeData(){return this.zl}set archetypeNodeData(t){t!==null&&m.wc(t,Qe,"archetypeNodeData"),this.zl=t}get isDoubleClick(){return this.sM}set isDoubleClick(t){m.s(t,"boolean",Qe,"isDoubleClick"),this.sM=t}get isGridSnapEnabled(){return this.Oc}set isGridSnapEnabled(t){m.s(t,"boolean",Qe,"isGridSnapEnabled"),this.Oc=t}}class ri extends Zt{_a;rM;Xl;constructor(t){super(),this.name="DragSelecting",this._a=175,this.rM=!1,this.Xl=new pt({layerName:"Tool",selectable:!1}).add(new it("Rectangle",{name:"SHAPE",fill:null,stroke:"magenta"}).theme("stroke","dragSelect")).It(),t&&Object.assign(this,t)}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;if(!t.allowSelect)return!1;let e=t.lastInput;return!(!e.left||t.currentTool!==this&&(!this.isBeyondDragSize()||e.timestamp-t.firstInput.timestamp<this.delay||t.findPartAt(e.documentPoint,!0)!==null))}doActivate(){let t=this.diagram;this.isActive=!0,t.isMouseCaptured=!0,t.skipsUndoManager=!0,this.box&&t.add(this.box),this.doMouseMove()}doDeactivate(){let t=this.diagram;t.stopAutoScroll(),this.box&&t.remove(this.box),t.skipsUndoManager=!1,t.isMouseCaptured=!1,this.isActive=!1}doMouseMove(){let t=this.diagram;if(this.isActive&&this.box!==null){let e=this.computeBoxBounds(),i=this.box.findObject("SHAPE");i===null&&(i=this.box.findMainElement());let s=nt.l().e(e.width,e.height);i!==null&&(i.desiredSize=s),this.box.Uc(e.x,e.y,!1),nt.i(s),(t.allowHorizontalScroll||t.allowVerticalScroll)&&t.doAutoScroll(t.lastInput.viewPoint)}}doMouseUp(){if(this.isActive){let t=this.diagram;this.box&&t.remove(this.box);try{t.currentCursor="wait",t.T("ChangingSelection",t.selection),this.selectInRect(this.computeBoxBounds()),t.T("ChangedSelection",t.selection)}finally{t.currentCursor=""}}this.stopTool()}computeBoxBounds(){let t=this.diagram;return new I(t.firstInput.documentPoint,t.lastInput.documentPoint)}selectInRect(t){let e=this.diagram,i=e.lastInput,s=e.findPartsIn(t,this.isPartialInclusion);if(m.fr?i.meta:i.control)if(i.shift){let n=s.iterator;for(;n.next();){let o=n.value;o.isSelected&&(o.isSelected=!1)}}else{let n=s.iterator;for(;n.next();){let o=n.value;o.isSelected=!o.isSelected}}else if(i.shift){let n=s.iterator;for(;n.next();){let o=n.value;o.isSelected||(o.isSelected=!0)}}else{let n=new q,o=e.selection.iterator;for(;o.next();){let h=o.value;s.has(h)||n.add(h)}let r=n.iterator;for(;r.next();){let h=r.value;h.isSelected=!1}let a=s.iterator;for(;a.next();){let h=a.value;h.isSelected||(h.isSelected=!0)}}}get delay(){return this._a}set delay(t){m.s(t,"number",ri,"delay"),this._a=t}get isPartialInclusion(){return this.rM}set isPartialInclusion(t){m.s(t,"boolean",ri,"isPartialInclusion"),this.rM=t}get box(){return this.Xl}set box(t){t!==null&&t.It(),this.Xl=t}}class ki extends Zt{vx;LA;Fo;lM;constructor(t){super(),this.name="Panning",this.vx=new P,this.LA=new P,this.Fo=!1;let e=this;this.lM=()=>{let i=e.diagram;i!==null&&i.Ae(K.document,"scroll",e.lM,!1),e.stopTool()},t&&Object.assign(this,t)}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;return!(!t.allowHorizontalScroll&&!t.allowVerticalScroll||!t.lastInput.left||t.currentTool!==this&&!this.isBeyondDragSize())}doActivate(){let t=this.diagram;this.Fo?(t.lastInput.bubbles=!0,t.Et(K.document,"scroll",this.lM,!1)):(t.currentCursor="move",t.isMouseCaptured=!0,this.vx.h(t.position)),this.isActive=!0}doDeactivate(){let t=this.diagram;t.currentCursor="",t.isMouseCaptured=!1,this.isActive=!1}doCancel(){let t=this.diagram;t.position=this.vx,t.isMouseCaptured=!1,this.stopTool()}doMouseMove(){this.AA()}doMouseUp(){this.AA(),this.stopTool()}AA(){let t=this.diagram;if(this.isActive&&t){if(this.Fo){t.lastInput.bubbles=!0;return}let e=t.position,i=t.firstInput.documentPoint,s=t.lastInput.documentPoint,n=e.x+i.x-s.x,o=e.y+i.y-s.y;t.allowHorizontalScroll||(n=e.x),t.allowVerticalScroll||(o=e.y),t.position=this.LA.e(n,o)}}get bubbles(){return this.Fo}set bubbles(t){m.s(t,"boolean",ki,"bubbles"),this.Fo=t}get originalPosition(){return this.vx}}class ge{Fx;Rx;aM;hM;constructor(t){this.Fx=null,this.Rx=null,this.aM=null,this.hM=null,t&&Object.assign(this,t)}get mainElement(){return this.aM}set mainElement(t){t!==null&&m.se(t,HTMLElement,ge,"mainElement"),this.aM=t}get show(){return this.Fx}set show(t){this.Fx!==t&&(t!==null&&m.S(t,ge,"show"),this.Fx=t)}get hide(){return this.Rx}set hide(t){this.Rx!==t&&(t!==null&&m.S(t,ge,"hide"),this.Rx=t)}get valueFunction(){return this.hM}set valueFunction(t){this.hM=t}}class de{ue;Ox;Vc;constructor(t,e,i){this.ue=t,this.Ox=e,this.Vc=i}}class It extends Zt{cM;Ix;fM;uM;Ex;Ux;Vm;constructor(t){super(),this.name="ContextMenu",this.cM=null,this.Ix=null,this.fM=null,this.uM=new P,this.Ex=null,this.Vm=!1;let e=this;this.Ux=()=>e.stopTool(),t&&Object.assign(this,t)}bR(){let t=new ge;t.show=(r,a,h)=>h.showDefaultContextMenu(),t.hide=(r,a)=>a.hideDefaultContextMenu(),It.Bu=t;let e=this;this.Ux=()=>e.stopTool();let i=m.Ci("div"),s=m.Ci("div");i.style.cssText="top: 0px;z-index:10002;position: fixed;display: none;text-align: center;left: 25%;width: 50%;background-color: #F5F5F5;padding: 16px;border: 16px solid #444;border-radius: 10px;margin-top: 10px",s.style.cssText="z-index:10001;position: fixed;display: none;top: 0;left: 0;width: 100%;height: 100%;background-color: black;opacity: 0.8;";let n=m.Ci("style");K.document.getElementsByTagName("head")[0].appendChild(n),n.sheet.insertRule(".goCXul { list-style: none; }",0),n.sheet.insertRule(".goCXli {font:700 1.5em Helvetica, Arial, sans-serif;position: relative;min-width: 60px; }",0),n.sheet.insertRule(".goCXa {color: #444;display: inline-block;padding: 4px;text-decoration: none;margin: 2px;border: 1px solid gray;border-radius: 10px; }",0);let o=this.diagram;o!==null&&(o.Et(i,"contextmenu",It.nh,!1),o.Et(i,"selectstart",It.nh,!1),o.Et(s,"contextmenu",It.nh,!1)),i.className="goCXforeground",s.className="goCXbackground",K.document.body&&(K.document.body.appendChild(i),K.document.body.appendChild(s)),It.Bm=i,It.zm=s,It.dM=!0}static Bu=null;static dM=!1;static zm;static Bm;static nh(t){return t.preventDefault(),!1}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;return this.isBeyondDragSize()||!t.lastInput.right||t.lastInput.clickCount>1?!1:!!(t.lastInput.isTouchEvent&&this.defaultTouchContextMenu!==null||this.findObjectWithContextMenu()!==null)}doStart(){let t=this.diagram;this.uM.set(t.firstInput.documentPoint)}doStop(){this.hideContextMenu(),this.currentObject=null,this.Vm=!1}findObjectWithContextMenu(t){t===void 0&&(t=null);let e=this.diagram,i=e.lastInput,s=null;if(t instanceof Y||(t instanceof J?s=t:s=e.findObjectAt(i.documentPoint,null,n=>!n.layer?.isTemporary)),s!==null){let n=s;for(;n!==null;){if(n.contextMenu!==null)return n;n=n.panel}if(e.lastInput.isTouchEvent&&this.defaultTouchContextMenu)return s.part}else if(e.contextMenu!==null)return e;return null}doActivate(){}doMouseDown(){if(super.doMouseDown(),this.isActive&&this.currentContextMenu instanceof vt){let t=this.diagram.toolManager.findTool("Action");t!==null&&t.canStart()&&(t.doActivate(),t.doMouseDown(),t.doDeactivate())}this.diagram.toolManager.mouseDownTools.has(this)&&this.doContextClick()}doMouseUp(){if(this.isActive&&this.currentContextMenu instanceof vt){let t=this.diagram.toolManager.findTool("Action");t!==null&&t.canStart()&&(t.doActivate(),t.doCancel(),t.doDeactivate())}this.doContextClick()}doContextClick(){let t=this.diagram;if(!this.isActive)this.canStart()&&(this.openMenu(!0),this.isActive||this.stopTool());else{let e=this.currentContextMenu;if(e===null)return;let i=null;e instanceof ge||(i=t.findObjectAt(t.lastInput.documentPoint,null,null),i!==null&&i.isContainedBy(e)&&this.standardMouseClick(null,null)),this.maybeStopTool(i)}}maybeStopTool(t){this.stopTool(),this.canStart()&&(this.diagram.currentTool=this,this.doMouseUp())}openMenu(t,e){if(e===void 0&&(e=null),this.Vm)return;this.Vm=!0;let i=!1;if(e instanceof Y){let s=this.diagram.lastInput;s.targetObject=null,i=this.oA(null,s,this.diagram)}else t&&this.standardMouseSelect(),i=this.standardMouseClick();if(this.Vm=!1,!i){this.isActive=!0;let s=It.Bu;if(e===null&&(e=this.findObjectWithContextMenu()),e!==null){let n=e.contextMenu;n!==null?(this.currentObject=e instanceof J?e:null,this.showContextMenu(n,this.currentObject)):s!==null&&this.showContextMenu(s,this.currentObject)}else s!==null&&this.showContextMenu(s,null);this.currentContextMenu instanceof vt&&!this.currentContextMenu.visible&&this.stopTool()}}doMouseMove(){let t=this.diagram.toolManager.findTool("Action");t!==null&&t.doMouseMove(),this.isActive&&this.diagram.toolManager.doMouseMove()}showContextMenu(t,e){e!==null&&m.se(e,J,It,"showContextMenu:obj");let i=this.diagram;if(t!==this.currentContextMenu&&this.hideContextMenu(),t instanceof vt){let s=t;s.layerName="Tool",s.selectable=!1,s.scale=1/i.scale,s.category=this.name,s.hasPlaceholder()&&(s.placeholder.scale=i.scale);let n=s.diagram;n!==null&&n!==i&&n.remove(s),i.add(s),e!==null?s.adornedObject=e:s.data=i.model,s.ensureBounds(),this.positionContextMenu(s,e)}else t instanceof ge&&t.show!==null&&t.show(e,i,this);this.currentContextMenu=t}positionContextMenu(t,e){if(t.hasPlaceholder())return;let i=t,s=this.diagram,n=s.lastInput.documentPoint.copy(),o=i.measuredBounds,r=s.viewportBounds;s.lastInput.isTouchEvent&&(n.x-=o.width),n.x+o.width>r.right&&(n.x-=o.width+5/s.scale),n.x<r.x&&(n.x=r.x),n.y+o.height>r.bottom&&(n.y-=o.height+5/s.scale),n.y<r.y&&(n.y=r.y),i.position=n}hideContextMenu(){let t=this.diagram,e=this.currentContextMenu;e!==null&&(e instanceof vt?(t.remove(e),this.Ix!==null&&this.Ix.removeAdornment(e.category),e.data=null,e.adornedObject=null):e instanceof ge&&(e.hide!==null?e.hide(t,this):e.mainElement!==null&&(e.mainElement.style.display="none")),this.currentContextMenu=null,this.standardMouseOver())}kR(){let t=this,e=new q;return e.add(new de("Copy",i=>i.commandHandler.copySelection(),i=>i.commandHandler.canCopySelection())),e.add(new de("Cut",i=>i.commandHandler.cutSelection(),i=>i.commandHandler.canCutSelection())),e.add(new de("Delete",i=>i.commandHandler.deleteSelection(),i=>i.commandHandler.canDeleteSelection())),e.add(new de("Paste",i=>i.commandHandler.pasteSelection(t.mouseDownPoint),i=>i.commandHandler.canPasteSelection(t.mouseDownPoint))),e.add(new de("Select All",i=>i.commandHandler.selectAll(),i=>i.commandHandler.canSelectAll())),e.add(new de("Undo",i=>i.commandHandler.undo(),i=>i.commandHandler.canUndo())),e.add(new de("Redo",i=>i.commandHandler.redo(),i=>i.commandHandler.canRedo())),e.add(new de("Scroll To Part",i=>i.commandHandler.scrollToPart(),i=>i.commandHandler.canScrollToPart())),e.add(new de("Zoom To Fit",i=>i.commandHandler.zoomToFit(),i=>i.commandHandler.canZoomToFit())),e.add(new de("Reset Zoom",i=>i.commandHandler.resetZoom(),i=>i.commandHandler.canResetZoom())),e.add(new de("Group Selection",i=>i.commandHandler.groupSelection(),i=>i.commandHandler.canGroupSelection())),e.add(new de("Ungroup Selection",i=>i.commandHandler.ungroupSelection(),i=>i.commandHandler.canUngroupSelection())),e.add(new de("Edit Text",i=>i.commandHandler.editTextBlock(),i=>i.commandHandler.canEditTextBlock())),e}showDefaultContextMenu(){let t=this.diagram;this.Ex===null&&(this.Ex=this.kR()),It.Bm.innerHTML="",It.zm.addEventListener("pointerdown",this.Ux,!1);let e=this,i=m.Ci("ul");i.className="goCXul",It.Bm.appendChild(i),i.innerHTML="";let s=this.Ex.iterator;for(;s.next();){let n=s.value,o=n.Ox,r=n.Vc;if(!m.it(o)||m.it(r)&&!r(t))continue;let a=m.Ci("li");a.className="goCXli";let h=m.Ci("a");h.className="goCXa",h.href="#",h.Ox=o,h.addEventListener("pointerdown",function(l){return this.Ox(t),e.stopTool(),l.preventDefault(),!1},!1),h.textContent=n.ue,a.appendChild(h),i.appendChild(a)}It.Bm.style.display="block",It.zm.style.display="block"}hideDefaultContextMenu(){if(this.currentContextMenu===null||this.currentContextMenu!==It.Bu)return;It.Bm.style.display="none",It.zm.style.display="none";let t=this.diagram;t!==null&&t.Ae(It.zm,"pointerdown",this.Ux,!1),this.currentContextMenu=null}doMouseWheel(){this.standardMouseWheel()}get currentContextMenu(){return this.cM}set currentContextMenu(t){this.cM=t,this.Ix=t instanceof vt?t.adornedPart:null}get defaultTouchContextMenu(){return It.dM===!1&&It.Bu===null&&Y.isUsingDOM()&&this.bR(),It.Bu}set defaultTouchContextMenu(t){t===null&&(It.dM=!0),It.Bu=t}get currentObject(){return this.fM}set currentObject(t){t!==null&&m.se(t,J,It,"currentObject"),this.fM=t}get mouseDownPoint(){return this.uM}}var Os=(x=>(x[x.LostFocus=1]="LostFocus",x[x.MouseDown=2]="MouseDown",x[x.Tab=3]="Tab",x[x.Enter=4]="Enter",x))(Os||{}),Rs=(x=>(x[x.SingleClick=1]="SingleClick",x[x.SingleClickSelected=2]="SingleClickSelected",x[x.DoubleClick=3]="DoubleClick",x))(Rs||{}),Es=(x=>(x[x.None=1]="None",x[x.Active=2]="Active",x[x.Editing=3]="Editing",x[x.Validating=4]="Validating",x[x.Invalid=5]="Invalid",x[x.Validated=6]="Validated",x))(Es||{});class re extends Zt{vi;gM;mM;Gl;Gt;pM;yM;wM;Vx;Bx;constructor(t){super(),this.name="TextEditing",this.vi=new lt,this.gM=null,this.mM=2,this.Gl=null,this.Gt=1,this.pM=1,this.yM=!0,this.wM=null,this.Vx=new ge,this.Bx=null,this.PR(this.Vx),t&&Object.assign(this,t)}static LostFocus=1;static MouseDown=2;static Tab=3;static Enter=4;static SingleClick=1;static SingleClickSelected=2;static DoubleClick=3;static StateNone=1;static StateActive=2;static StateEditing=3;static StateValidating=4;static StateInvalid=5;static StateValidated=6;PR(t){if(!Y.isUsingDOM())return;let e=m.Ci("textarea");this.Bx=e;let i=this;e.addEventListener("input",function(s){if(i.textBlock===null)return;let n=i.measureTemporaryTextBlock(this.value),o=this.textScale;this.style.width=20+Math.max(i.textBlock.measuredBounds.width,n.measuredBounds.width)*o+"px",this.rows=Math.max(i.textBlock.lineCount,n.lineCount)},!1),e.addEventListener("keydown",function(s){if(s.isComposing||i.textBlock===null)return;let n=s.key;if(n==="Enter"){i.textBlock.isMultiline===!1&&s.preventDefault(),i.acceptText(4);return}else if(n==="Tab"){i.acceptText(3),s.preventDefault();return}else n==="Escape"&&(i.doCancel(),i.diagram!==null&&i.diagram.doFocus())},!1),e.addEventListener("focus",function(s){i.SR(s)},!1),e.addEventListener("blur",function(s){i.MR(s)},!1),t.valueFunction=()=>e.value,t.mainElement=e,t.show=(s,n,o)=>{if(!(s instanceof lt)||!n||!n.div||!(o instanceof re))return;if(o.state===5){e.style.border="3px solid red",e.focus();return}let r=s.getDocumentPoint(T.Center),a=n.position,h=n.scale,l=s.getDocumentScale()*h;l<o.minimumEditorScale&&(l=o.minimumEditorScale);let u=s.naturalBounds.width*l+6,c=s.naturalBounds.height*l+2,d=(r.x-a.x)*h,f=(r.y-a.y)*h,p=s.verticalAlignment,g=(s.lineHeight+s.spacingAbove+s.spacingBelow)*s.lineCount*l,y=.5*c-.5*g,b=p.y*c-p.y*g+p.offsetY-y-g/2;e.value=s.text,n.div.style.font=s.font;let v=1;e.style.position="absolute",e.style.zIndex="100",e.style.font="inherit",e.style.fontSize=l*100+"%",e.style.lineHeight="normal",e.style.width=u+"px",e.style.left=(d-u/2|0)-v+"px",e.style.top=(f+b|0)-v+"px",e.style.textAlign=s.textAlign,e.style.margin="0",e.style.padding=v+"px",e.style.border="0",e.style.outline="none",e.style.whiteSpace="pre-wrap",e.style.overflow="hidden",e.rows=s.lineCount,e.textScale=l,e.className="goTXarea",n.div.appendChild(e),e.focus(),o.selectsTextOnActivate&&(e.select(),e.setSelectionRange(0,9999))},t.hide=(s,n)=>{s.div&&s.div.removeChild(e)}}get textBlock(){return this.gM}set textBlock(t){t!==null&&m.se(t,lt,re,"textBlock"),this.gM=t}get currentTextEditor(){return this.wM}set currentTextEditor(t){this.wM=t}get defaultTextEditor(){return this.Vx}set defaultTextEditor(t){this.Vx=t}get starting(){return this.mM}set starting(t){this.mM=t}canStart(){if(!this.isEnabled)return!1;let t=this.diagram;if(t===null||t.isReadOnly||re.Bc&&re.Bc!==this&&(re.Bc.acceptText(2),re.Bc&&re.Bc!==this)||!t.lastInput.left||this.isBeyondDragSize())return!1;let e=t.lastInput.documentPoint,i=t.findObjectAt(e);if(i===null||!(i instanceof lt)||!i.editable||i.part===null||!i.part.canEdit())return!1;let s=i.part;return!(s===null||this.starting===2&&!s.isSelected||this.starting===3&&t.lastInput.clickCount<2)}doStart(){re.Bc=this,this.textBlock!==null&&this.doActivate()}doActivate(){if(this.isActive)return;let t=this.diagram;if(t===null)return;let e=this.textBlock;if(e===null&&(e=t.findObjectAt(t.lastInput.documentPoint)),e===null||!(e instanceof lt)||(this.textBlock=e,e.part===null))return;t.animationManager.stopAnimation(),this.isActive=!0,this.Gt=2;let i=this.defaultTextEditor;e.textEditor!==null&&(i=e.textEditor),this.vi=this.textBlock.copy();let s=new I(this.textBlock.getDocumentPoint(T.TopLeft),this.textBlock.getDocumentPoint(T.BottomRight));t.scrollToRect(s),i!==null&&i.show!==null&&i.show(e,t,this),this.currentTextEditor=i}doCancel(){this.stopTool()}doMouseUp(){this.canStart()&&this.doActivate()}doMouseDown(){this.isActive&&this.acceptText(2)}acceptText(t){switch(t){case 2:this.Gt===6?this.currentTextEditor instanceof HTMLElement&&this.currentTextEditor.focus():(this.Gt===2||this.Gt===5||this.Gt===3)&&(this.Gt=4,this.TA());break;case 1:case 4:case 3:if(t===4&&this.textBlock!==null&&this.textBlock.isMultiline===!0)return;(this.Gt===2||this.Gt===5||this.Gt===3)&&(this.Gt=4,this.TA());break}}TA(){let t=this.textBlock,e=this.diagram,i=this.currentTextEditor;if(t!==null&&i!==null){let s=t.text,n="";if(i.valueFunction!==null&&(n=i.valueFunction()),!this.isValidText(t,s,n)){this.Gt=5,this.doError(s,n);return}this.startTransaction(this.name),this.Gt=6,this.transactionResult=this.name,t.text=n,this.doSuccess(s,n),e!==null&&e.T("TextEdited",t,s),this.stopTransaction(),this.stopTool(),e!==null&&e.doFocus()}}doError(t,e){let i=this.textBlock;if(i===null)return;i.errorFunction!==null&&i.errorFunction(this,t,e);let s=this.currentTextEditor;s!==null&&s.show!==null&&s.show(i,this.diagram,this)}doSuccess(t,e){let i=this.textBlock;i!==null&&i.textEdited!==null&&i.textEdited(i,t,e)}doDeactivate(){let t=this.diagram;if(t!==null){if(this.Gt=1,this.currentTextEditor!==null){let e=this.currentTextEditor;e!==null&&e.hide!==null&&e.hide(t,this)}this.textBlock=null,this.isActive=!1}}doStop(){re.Bc=null}SR(t){if(this.currentTextEditor===null||this.state===1)return;let e=this.Bx;this.Gt===2&&(this.Gt=3),m.it(e.select)&&this.selectsTextOnActivate&&(e.select(),e.setSelectionRange(0,9999))}MR(t){if(this.currentTextEditor===null||this.state===1)return;let e=this.Bx;m.it(e.focus)&&e.focus(),m.it(e.select)&&this.selectsTextOnActivate&&(e.select(),e.setSelectionRange(0,9999))}isValidText(t,e,i){let s=this.textValidation;if(s!==null&&!s(t,e,i))return!1;let n=t.textValidation;return!(n!==null&&!n(t,e,i))}get textValidation(){return this.Gl}set textValidation(t){t!==null&&m.S(t,re,"textValidation"),this.Gl=t}get minimumEditorScale(){return this.pM}set minimumEditorScale(t){t!==null&&m.s(t,"number",re,"minimumEditorScale"),this.pM=t}get selectsTextOnActivate(){return this.yM}set selectsTextOnActivate(t){t!==null&&m.s(t,"boolean",re,"selectsTextOnActivate"),this.yM=t}get state(){return this.Gt}set state(t){this.Gt!==t&&(this.Gt=t)}measureTemporaryTextBlock(t){let e=this.vi;return e.text=t,this.textBlock!==null&&e.ht(this.textBlock.Yl,1/0),e}static Bc=null}var Is=(x=>(x[x.Default=1]="Default",x[x.AnimateLocations=2]="AnimateLocations",x[x.None=3]="None",x))(Is||{});class le{a;Te;Be;Ar;Zn;Oo;xM;bM;Xm;zx;Pe;zc;bn;Gm;oh;Xx;Ym;Gx;Xc;Uu;Km;constructor(t){this.a=Y.Fm(),this.Te=!1,this.Xm=!1,this.zx=!1,this.Pe=!1,this.zc=!1,this.Gx=!0,this.Xc=1,this.Uu=!1,this.Be=!0,this.Ar=!0,this.Oo=600,this.xM=!1,this.bM=!1,this.Zn=new V,this.bn=new xe,this.Gm=new xe,this.bn.Cs=this,this.oh=new V,this.Xx=new V,this.Ym=new V,this.Km=new V,t&&Object.assign(this,t)}Io(t){this.a=t}OU(){return this.a}canStart(t){return!0}Kl(t){return!this.Be||!this.canStart(t)?!1:(this.Zn.add(t),this.defaultAnimation.isAnimating&&this.stopAnimation(),this.a.De(),this.Pe=!0,!0)}getBundleAnimation(){return this.Gm}kM(){if(!this.Be||(this.Gm.yi.count>0&&this.Gm.start(),!this.Pe))return;let t=this.bn,e=this.a,i=this.Zn.has("Model");if(i&&(this.zc=!0,this.Xc===1?(t.isViewportUnconstrained=!0,t.yi.clear(),t.add(e,"position",e.position.copy().offset(0,-200),e.position),t.add(e,"opacity",0,1)):this.Xc===3&&t.yi.clear(),this.Xc===2&&e.Yx.equals(e.ct)?this.Gx=!0:this.Gx=!1,e.T("InitialAnimationStarting",this)),i&&!this.Ar||t.yi.count===0){this.Zn.clear(),this.Pe=!1,t.yi.clear(),t.Kx(e),this.zc=!1,e.N();return}this.Zn.clear(),e.Tr=!1;let s=t.yi.get(e);e.autoScale!==1&&s!==null&&(delete s.ae.scale,delete s.Ns.scale);let n=this;K.requestAnimationFrame(()=>{n.Pe===!1||t.Te||(e.getRenderingHint("temporaryPixelRatio")&&e.Px(),e.PM(),n.Pe=!1,t.start(),t.Te&&(n.zu(),e.invalidateDocumentBounds(),t.DA(0),e.Pr(!0),n.Xu(),e.T("AnimationStarting",n)))})}SM(){return this.Zn.has("Trigger")&&this.Zn.count===1}vA(t,e,i,s){this.isTicking||this.SM()||t instanceof j&&(t.fromNode!==null||t.toNode!==null)||this.bn.add(t,"position",e,i,s)}Hx(t){return this.bn.Hx(t)}MM(t){return this.bn.MM(t)}CR(t){let e=this.oh,i=this;function s(){if(i.Ym.count>0&&(e.addAll(i.Ym),i.Ym.clear(),i.Te=!0),i.Te===!1||e.count===0){i.zx=!1;return}i.Xx.addAll(e);let n=i.Xx.iterator;for(;n.next();){let o=n.value;o.Te!==!1&&(o.NR()?o.FA(!1):o.Gc=!0)}if(i.Xx.clear(),i.Te===!1){K.requestAnimationFrame(s);return}i.zu(),i.a.Pr(),i.Xu(),K.requestAnimationFrame(s)}this.Te?this.RA(t):(this.Te=!0,this.zx?this.RA(t):(this.zx=!0,e.add(t),K.requestAnimationFrame(()=>s())))}RA(t){this.Ym.add(t)}LR(){let t=this.oh.iterator;for(;t.next();)t.value.Gc=!1}zu(){if(this.Xm)return;let t=this.a;this.xM=t.skipsUndoManager,this.bM=t.wi,t.skipsUndoManager=!0,t.wi=!0,this.Xm=!0}Xu(){let t=this.a;t.skipsUndoManager=this.xM,t.wi=this.bM,this.Xm=!1}stopAnimation(t){let e=this.bn;if(this.Pe===!0&&(this.Pe=!1,this.zc=!1,this.Zn.clear(),e.AR()&&this.a.requestUpdate()),!this.Te){e.yi.clear(),e.Kx(this.a);return}if(e.Gu(!0),e.Kx(null),t===!0){let i=this.oh.toArray();for(let s=0;s<i.length;s++)i[s].Gu(!0)}}Gu(t){this.oh.delete(t),this.oh.count===0&&(this.Te=!1,this.a.requestUpdate()),t===this.defaultAnimation&&this.a.T("AnimationFinished",this)}Yc(t,e){this.Pe&&(!this.Zn.has("Expand Tree")&&!this.Zn.has("Expand SubGraph")||(this.bn.Yc(t,e),this.OA(t)))}Kc(t,e){this.Pe&&(!this.Zn.has("Collapse Tree")&&!this.Zn.has("Collapse SubGraph")||(this.bn.Kc(t,e),this.bn.CM(e,"position",e.position,e.position),this.OA(t)))}IA(t,e){!this.Pe||t.equals(e)||this.SM()||(this.a.Za||(t=e.copy()),this.bn.CM(this.a,"position",t,e))}EA(t,e){this.Pe&&(this.SM()||this.bn.add(this.a,"scale",t,e))}NM(t,e){t.Fi&&(t.Dr=e,this.Km.add(t))}OA(t){let e=t.findLinksConnected();for(;e.next();){let i=e.value;i.Fi&&(i.Dr=i.points.copy(),this.Km.add(i))}}get isEnabled(){return this.Be}set isEnabled(t){m.s(t,"boolean",le,"isEnabled"),this.Be=t,t&&this.oh.each(e=>{!e.isAnimating&&e.runCount===1/0&&e.start()})}get duration(){return this.Oo}set duration(t){m.s(t,"number",le,"duration"),t<1&&m.J(t,">= 1",le,"duration"),this.Oo=t}get isAnimating(){return this.Te}get isTicking(){return this.Xm}get isInitial(){return this.Ar}set isInitial(t){m.s(t,"boolean",le,"isInitial"),this.Ar=t}get defaultAnimation(){return this.bn}get activeAnimations(){return this.oh}get initialAnimationStyle(){return this.Xc}set initialAnimationStyle(t){this.Xc=t}static qx=new Mt;static defineAnimationEffect(t,e){le.qx.set(t,e)}static LM(t,e,i,s,n){t===null&&(t=[0,0,0,0]),e===null&&(e=[0,0,0,0]);let o=t[0],r=t[1],a=t[2],h=t[3],l=e[0],u=e[1],c=e[2],d=e[3];a===0||a===100?(o=l,r=u):(c===0||c===100)&&(l=o,u=r),Math.abs(l-o)>180&&(l>o?o+=360:l+=360);let f=n(i,o,l-o,s)%360,p=n(i,r,u-r,s),g=n(i,a,c-a,s),y=n(i,h,d-h,s);return"hsla("+f+", "+p+"%, "+g+"%, "+y+")"}static Default=1;static AnimateLocations=2;static None=3}{let x=le.qx,t=(e,i,s,n,o,r)=>{e.position=new P(n(o,i.x,s.x-i.x,r),n(o,i.y,s.y-i.y,r))};x.set("position:diagram",t),x.set("position",t),x.set("position:part",(e,i,s,n,o,r)=>{o<r?e.Uc(n(o,i.x,s.x-i.x,r),n(o,i.y,s.y-i.y,r),!1):e.position=new P(n(o,i.x,s.x-i.x,r),n(o,i.y,s.y-i.y,r))}),x.set("location",(e,i,s,n,o,r)=>{o<r?e.Uc(n(o,i.x,s.x-i.x,r),n(o,i.y,s.y-i.y,r),!0):e.location=new P(n(o,i.x,s.x-i.x,r),n(o,i.y,s.y-i.y,r))}),x.set("position:placeholder",(e,i,s,n,o,r)=>{o<r?e.Uc(n(o,i.x,s.x-i.x,r),n(o,i.y,s.y-i.y,r),!1):e.position=new P(n(o,i.x,s.x-i.x,r),n(o,i.y,s.y-i.y,r))}),x.set("position:nodeCollapse",(e,i,s,n,o,r)=>{let a=e.actualBounds,h=s.actualBounds,l=h.x+h.width/2-a.width/2,u=h.y+h.height/2-a.height/2;o<r?e.Uc(n(o,i.x,l-i.x,r),n(o,i.y,u-i.y,r),!1):e.position=new P(n(o,i.x,l-i.x,r),n(o,i.y,u-i.y,r))}),x.set("desiredSize",(e,i,s,n,o,r)=>{e.desiredSize=new nt(n(o,i.width,s.width-i.width,r),n(o,i.height,s.height-i.height,r))}),x.set("width",(e,i,s,n,o,r)=>{e.width=n(o,i,s-i,r)}),x.set("height",(e,i,s,n,o,r)=>{e.height=n(o,i,s-i,r)}),x.set("fill",(e,i,s,n,o,r)=>{e.fill=le.LM(i,s,o,r,n)}),x.set("stroke",(e,i,s,n,o,r)=>{e.stroke=le.LM(i,s,o,r,n)}),x.set("strokeWidth",(e,i,s,n,o,r)=>{e.strokeWidth=n(o,i,s-i,r)}),x.set("strokeDashOffset",(e,i,s,n,o,r)=>{e.strokeDashOffset=n(o,i,s-i,r)}),x.set("background",(e,i,s,n,o,r)=>{e.background=le.LM(i,s,o,r,n)}),x.set("opacity",(e,i,s,n,o,r)=>{e.opacity=n(o,i,s-i,r)}),x.set("scale",(e,i,s,n,o,r)=>{e.scale=n(o,i,s-i,r)}),x.set("angle",(e,i,s,n,o,r)=>{e.angle=n(o,i,s-i,r)})}class xe{jx;Hm;Te;Yu;Oo;Ls;UA;Hc;yi;Wx;ae;Qn;Ku;qc;Jx;$x;Gc;AM;Zx;Cs;a;TM;DM;vM;constructor(t){this.a=null,this.Cs=null,this.AM=null,this.Zx=null,this.TM=!1,this.Te=!1,this.Gc=!1,this.ae=0,this.Qn=0,this.jx=xe.EaseInOutQuad,this.Hm=xe.EaseInOutQuad,this.Ku=!1,this.qc=!1,this.Jx=1,this.$x=0,this.Oo=NaN,this.Ls=NaN,this.DM=0,this.Yu=null,this.UA=P.gn,this.yi=new Mt,this.Wx=new Mt,this.Hc=new V,this.vM=1,t&&Object.assign(this,t)}suspend(){this.Gc=!0}advanceTo(t,e){e&&(this.Gc=!1),this.Ku&&t>=this.Ls&&(this.qc=!0,t=t-this.Ls),this.DM=t,this.FA(!0),this.Cs.zu(),this.a.Pr(),this.Cs.Xu(),this.a.redraw()}Kx(t){if(this.Wx.clear(),this.qc=!1,this.$x=0,this.Ls=NaN,this.Hc.count>0&&this.Hc.clear(),t!==null){let e=t.links;for(;e.next();)e.value.Dr=null}}AR(){return this.yi.count>0}start(){if(this.yi.count===0)return this;if(this.Te)return this;let t=this.a,e=this.yi.iterator;for(;e.next();){let s=e.key;t===null&&(s instanceof Y?t=s:s instanceof J&&(t=s.diagram))}if(t!==null)this.a=t,this.Cs=t.animationManager;else return this;let i=this.Cs;return i.isEnabled===!1?this:(this.Ls=isNaN(this.Oo)?i.duration:this.Oo,this.Hm=this.jx,i.zc&&i.Xc===1&&this===i.defaultAnimation&&(this.Hm=xe.EaseOutExpo,this.Ls=isNaN(this.Oo)?i.duration===600?900:i.duration:this.Oo),this.vM=t.scrollMode,this.isViewportUnconstrained&&(t.lh=2),i.zu(),this.Hc.each(s=>{s.data=null,t.add(s)}),i.Xu(),this.Te=!0,this.ae=+new Date,this.Qn=this.ae+this.Ls,i.CR(this),this)}addTemporaryPart(t,e){return t.Di()?(this.Hc.add(t),this.a=e,this):this}add(t,e,i,s,n){if(this.a===null&&(t instanceof Y?this.a=t:t instanceof J&&t.diagram!==null&&(this.a=t.diagram)),t instanceof pt){if(!t.isAnimated)return this;e==="position"&&(e="position:part")}return this.CM(t,e,i,s,n),this}CM(t,e,i,s,n){let o=this.yi,r,a,h;if(t instanceof Y&&e==="position"&&(e="position:diagram"),(e==="fill"||e==="stroke"||e==="background")&&(R.Eo(i),R.FM(),i=[R.ze.n0,R.ze.n1,R.ze.n2,R.ze.n3],R.Eo(s),R.FM(),s=[R.ze.n0,R.ze.n1,R.ze.n2,R.ze.n3]),o.has(t))r=o.get(t),a=r.ae,h=r.Ns,a[e]===void 0&&(a[e]=this.Hu(i)),h[e]=this.Hu(s);else{if(e==="position"&&i.equalsApprox(s))return;a={},h={},a[e]=this.Hu(i),h[e]=this.Hu(s),r=new Dn(a,h,n),o.set(t,r)}let l=a[e];l instanceof P&&!l.isReal()&&l.h(this.UA),n&&e.indexOf("position:")===0&&t instanceof pt?r.Qx.location=this.Hu(t.location):n&&(r.Qx[e]=this.Hu(i))}Hu(t){return t instanceof P||t instanceof nt?t.copy():t}TR(t){let e=this.yi;if(e.has(t)){let i=e.get(t);i._x=!0}}Hx(t){if(!this.Te)return!1;let e=this.yi.get(t);return e!==null&&e._x}MM(t){if(!this.Te)return!1;let e=this.yi.get(t);return e!==null&&!!(e.ae.position||e.ae["position:part"]||e.ae.location)}NR(){if(this.Hc.count>0)return!0;let t=this.yi.iterator;for(;t.next();){let e=t.key;if(e instanceof J&&e.diagram!==null||e instanceof Y)return!0}return!1}FA(t){if(this.Gc&&!t)return;let e=this.Cs;if(this.Te===!1)return;let i=+new Date,s=i>this.Qn?this.Ls:i-this.ae;t&&(s=this.DM,s<this.Ls?(this.ae=+new Date-s,this.Qn=this.ae+this.Ls):s=this.Ls),e.zu(),this.DA(s),this.a.Pr(!0),e.Xu(),i>this.Qn&&(this.Ku&&!this.qc?(this.ae=+new Date,this.Qn=this.ae+this.Ls,this.qc=!0):this.Gu(!1))}DA(t){let e=this.Ls,i=this.yi.iterator,s=this.qc;for(;i.next();){let n=i.key;if(n instanceof J&&n.diagram===null)continue;let o=i.value,r=s?o.Ns:o.ae,a=s?o.ae:o.Ns,h=le.qx;for(let l in a)l==="position"&&(a["position:placeholder"]||a["position:nodeCollapse"])||h.get(l)!==null&&h.get(l)(n,r[l],a[l],this.Hm,t,e,this)}}stop(){return this.Te?(this.Gu(!0),this):this}Gu(t){if(this.Zx!==null&&this.Zx.DR(this.AM),!this.Te)return;let e=this.a,i=this.Cs;i.zc=!1,this.Te=!1,this.Gc=!1,i.zu();let s=this.yi,n=this.Hc.iterator;for(;n.next();)e.remove(n.value);let o=this.Ku,r=s.iterator,a=le.qx;for(;r.next();){let l=r.key,u=r.value,c=o?u.Ns:u.ae,d=o?u.ae:u.Ns,f=u.Qx;for(let p in d)if(a.get(p)!==null){let g=p;u.tb&&(g==="position:nodeCollapse"||g==="position:placeholder")&&(g="position"),a.get(g)(l,c[p],f[p]!==void 0?f[p]:u.tb?c[p]:d[p],this.Hm,this.Ls,this.Ls,this)}u.tb&&f.location!==void 0&&l instanceof pt&&(l.location=f.location),u._x&&l instanceof pt&&l.Xe(!1)}this.$x++;let h=!t&&this.Jx>this.$x;if(!h&&(this===i.Gm||this===i.defaultAnimation)&&this.yi.clear(),e.eb.clear(),e.gS(!1),e.invalidateDocumentBounds(),e.N(),e.Pr(!0),i.defaultAnimation===this){let l=i.Km.iterator;for(;l.next();)l.value.vR();i.Km.clear()}if(e.Pr(!0),this.isViewportUnconstrained&&(e.scrollMode=this.vM),i.Xu(),h){this.qc=!1,this.start();return}this.Kx(null),e.VA(),i.Gu(this),this.Yu&&this.Yu(this),e.requestUpdate()}Yc(t,e){let i=e.actualBounds,s=null;if(e instanceof ht&&(s=e.placeholder),s!==null&&s.visible){let n=s.getDocumentPoint(T.TopLeft),o=s.padding;n.x+=o.left,n.y+=o.top,this.add(t,"position",n,t.position,!1)}else this.add(t,"position",new P(i.x+i.width/2,i.y+i.height/2),t.position,!1);this.add(t,"scale",.01,t.scale,!1),t instanceof ht&&this.FR(t,e)}FR(t,e){let i=t.memberParts;for(;i.next();){let s=i.value;s instanceof $&&this.Yc(s,e)}}Kc(t,e){if(!t.isVisible())return;let i=null;if(e instanceof ht&&(i=e.placeholder),i!==null&&i.visible){let s=i.getDocumentPoint(T.TopLeft),n=i.padding;s.x+=n.left,s.y+=n.top,this.add(t,"position:placeholder",t.position,s,!0)}else this.add(t,"position:nodeCollapse",t.position,e,!0);this.add(t,"scale",t.scale,.01,!0),this.TR(t),t instanceof ht&&this.RR(t,e)}RR(t,e){let i=t.memberParts;for(;i.next();){let s=i.value;s instanceof $&&this.Kc(s,e)}}get duration(){return this.Oo}set duration(t){m.s(t,"number",xe,"duration"),t<1&&m.J(t,">= 1",xe,"duration"),this.Oo=t}get reversible(){return this.Ku}set reversible(t){this.Ku=t}get runCount(){return this.Jx}set runCount(t){t>0?this.Jx=t:m.o("Animation.runCount value must be a positive integer.")}get finished(){return this.Yu}set finished(t){this.Yu!==t&&(t!==null&&m.S(t,xe,"finished"),this.Yu=t)}get easing(){return this.jx}set easing(t){this.jx=t}get isViewportUnconstrained(){return this.TM}set isViewportUnconstrained(t){this.TM=t}get isAnimating(){return this.Te}getTemporaryState(t){let e=this.Wx.get(t);return e===null&&(e={},this.Wx.set(t,e)),e}static EaseLinear=(t,e,i,s)=>i*t/s+e;static EaseInOutQuad=(t,e,i,s)=>(t/=s/2,t<1?i/2*t*t+e:-i/2*(--t*(t-2)-1)+e);static EaseInQuad=(t,e,i,s)=>i*(t/=s)*t+e;static EaseOutQuad=(t,e,i,s)=>-i*(t/=s)*(t-2)+e;static EaseInExpo=(t,e,i,s)=>t===0?e:i*Math.pow(2,10*(t/s-1))+e;static EaseOutExpo=(t,e,i,s)=>t===s?e+i:i*(-Math.pow(2,-10*t/s)+1)+e}class Dn{ae;Ns;Qx;tb;_x;constructor(t,e,i){this.ae=t,this.Ns=e,this.Qx={},this.tb=i,this._x=!1}}var Bs=(x=>(x[x.Default=1]="Default",x[x.Immediate=2]="Immediate",x[x.Bundled=3]="Bundled",x))(Bs||{});class ai{Ti;yn;qu;jc;constructor(t,e,i){this.Ti=null,this.yn=t,this.qu=i||1,this.jc=null,e!==void 0&&(this.jc=e,i===void 0&&(this.qu=2))}copy(){let t=new ai(this.yn);t.qu=this.qu;let e=this.jc;if(e!==null){let i={};e.duration!==void 0&&(i.duration=e.duration),e.finished!==void 0&&(i.finished=e.finished),e.easing!==void 0&&(i.easing=e.easing),t.jc=i}return t}get propertyName(){return this.yn}set propertyName(t){this.yn=t}get animationSettings(){return this.jc}set animationSettings(t){this.jc=t}OR(t){let e=this.jc;e!==null&&(e.duration&&(t.duration=e.duration),e.finished&&(t.finished=e.finished),e.easing&&(t.easing=e.easing))}get startCondition(){return this.qu}set startCondition(t){this.qu=t}static Default=1;static Immediate=2;static Bundled=3}class Et{a;Pt;Zt;vr;Hl;ql;jl;Wl;Jl;$l;Zl;Ql;_l;ta;ea;ia;Vc;sa;ib;qm;ju;Ct;constructor(t){V.Je(this),this.a=null,this.Ct=new q,this.Pt="",this.Zt=1,this.vr=!1,this.Hl=!0,this.ql=!0,this.jl=!0,this.Wl=!0,this.Jl=!0,this.$l=!0,this.Zl=!0,this.Ql=!0,this._l=!0,this.ta=!0,this.ea=!0,this.ia=!0,this.Vc=!0,this.sa=!0,this.ib=!0,this.qm=!1,this.ju=[],t&&Object.assign(this,t)}IR(){let t=this.Ct;for(let e=0;e<t.length;e++)t.r[e].RM(null);t.clear(),this.ju.length=0}Io(t){this.a=t}toString(t){t===void 0&&(t=0);let e='Layer "'+this.name+'"';if(t<=0)return e;let i=0,s=0,n=0,o=0,r=0,a=this.Ct.iterator;for(;a.next();){let l=a.value;l instanceof ht?n++:l instanceof $?s++:l instanceof j?o++:l instanceof vt?r++:i++}let h="";if(i>0&&(h+=i+" Parts "),s>0&&(h+=s+" Nodes "),n>0&&(h+=n+" Groups "),o>0&&(h+=o+" Links "),r>0&&(h+=r+" Adornments "),t>1){let l=this.Ct.iterator;for(;l.next();){let u=l.value;h+=`
@@ -47,4 +47,4 @@ string: ${t}`);break}}let A=k.fm;if(Ne.WL(k),e){let F=A.figures.iterator;for(;F.
47
47
  "modifiedLinkData": `;tF=`,
48
48
  "removedLinkKeys": `;Qv(t){let e=new V;for(let i=0;i<this.linkDataArray.length;i++){let s=this.linkDataArray[i];this.Tk(t,s,s,e)}return e}_N(t,e,i){if(this.linkKeyProperty===""){let c=this.skipsUndoManager;this.skipsUndoManager=!0,this.linkKeyProperty="key",this.skipsUndoManager=c}let s=super._N(t,e,i),n=this,o=new V,r=new V,a=new V;t.changes.each(c=>{if(c.model===n){if(c.modelChange==="linkDataArray")c.change===3?o.add(c.newValue):c.change===4&&a.add(c.oldValue);else if(n.containsLinkData(c.object))c.object!==null&&r.add(c.object);else if(c.object!==null)if(c.object!==null&&i.has(c.object)){let d=i.get(c.object);d&&d.each(f=>{n.containsLinkData(f)&&r.add(f)})}else{if(c.object instanceof dt||n.containsNodeData(c.object))return;n.Qv(c.object).each(d=>r.add(d))}}});let h=new V;o.each(c=>{let d=n.getKeyForLinkData(c);d!==void 0&&h.add(d),e||r.add(c)});let l=new V;a.each(c=>{let d=n.getKeyForLinkData(c);d!==void 0&&l.add(d),e&&r.add(c)});let u=s;return h.count>0&&(u+=(e?this.tF:this._v)+this.za(h.toArray(),!0)),r.count>0&&(u+=this.f3+this.za(r.toArray(),!0)),l.count>0&&(u+=(e?this._v:this.tF)+this.za(l.toArray(),!0)),u}aw(t){(t.linkCategoryProperty!==void 0&&t.linkCategoryProperty!==this.linkCategoryProperty||t.linkKeyProperty!==void 0&&t.linkKeyProperty!==this.linkKeyProperty||t.linkFromKeyProperty!==void 0&&t.linkFromKeyProperty!==this.linkFromKeyProperty||t.linkToKeyProperty!==void 0&&t.linkToKeyProperty!==this.linkToKeyProperty||t.linkFromPortIdProperty!==void 0&&t.linkFromPortIdProperty!==this.linkFromPortIdProperty||t.linkToPortIdProperty!==void 0&&t.linkToPortIdProperty!==this.linkToPortIdProperty||t.linkLabelKeysProperty!==void 0&&t.linkLabelKeysProperty!==this.linkLabelKeysProperty||t.nodeIsGroupProperty!==void 0&&t.nodeIsGroupProperty!==this.nodeIsGroupProperty||t.nodeGroupKeyProperty!==void 0&&t.nodeGroupKeyProperty!==this.nodeGroupKeyProperty)&&m.o("applyIncrementalJson cannot change Model properties"),super.aw(t);let e=t.insertedLinkKeys;if(Array.isArray(e)){let n=e.length;for(let o=0;o<n;o++){let r=e[o],a=this.findLinkDataForKey(r);a===null&&(a=this.copyLinkData({}),this.setKeyForLinkData(a,r),this.addLinkData(a))}}let i=t.modifiedLinkData;if(Array.isArray(i)){let n=i.length;for(let o=0;o<n;o++){let r=i[o],a=this.getKeyForLinkData(r),h=this.findLinkDataForKey(a);if(h!==null){for(let l in r)l==="__gohashid"||l===this.linkKeyProperty||this.setDataProperty(h,l,r[l]);this.eF(r,h)}}}let s=t.removedLinkKeys;if(Array.isArray(s)){let n=s.length;for(let o=0;o<n;o++){let r=s[o],a=this.findLinkDataForKey(r);a!==null&&this.removeLinkData(a)}}}changeState(t,e){if(!(t===null||t.model!==this)){if(t.change===2){let i=t.object,s=t.propertyName;if(i!==null&&s===this.linkKeyProperty&&this.containsLinkData(i)){let n=t.getValue(e),o=t.getValue(!e);o!==void 0&&this.Oe.delete(o),n!==void 0&&this.Oe.set(n,i),this.nt(i,s,n);return}}else if(t.change===3){let i=t.newParam;if(t.modelChange==="linkDataArray"){let s=t.newValue;if(m.$(s)&&typeof i=="number"){let n=this.getKeyForLinkData(s);e?(this.ar.delete(s),this.Is[i]===s&&this.Co(this.linkDataArray,i),n!==void 0&&this.Oe.delete(n)):(this.ar.add(s),this.Is[i]!==s&&this.lr(this.Is,i,s),n!==void 0&&this.Oe.set(n,s))}return}else if(t.modelChange==="linkLabelKeys"){let s=t.object,n=s!==null?this.getLabelKeysForLinkData(s):null;Array.isArray(n)&&typeof i=="number"&&(e?(i=n.indexOf(t.newValue),i>=0&&this.Co(n,i)):n.indexOf(t.newValue)<0&&this.lr(n,i,t.newValue));return}}else if(t.change===4){let i=t.oldParam;if(t.modelChange==="linkDataArray"){let s=t.oldValue;if(m.$(s)&&typeof i=="number"){let n=this.getKeyForLinkData(s);e?(this.ar.add(s),this.Is[i]!==s&&this.lr(this.Is,i,s),n!==void 0&&this.Oe.set(n,s)):(this.ar.delete(s),this.Is[i]===s&&this.Co(this.linkDataArray,i),n!==void 0&&this.Oe.delete(n))}return}else if(t.modelChange==="linkLabelKeys"){let s=t.object,n=s!==null?this.getLabelKeysForLinkData(s):null;Array.isArray(n)&&typeof i=="number"&&(e?n.indexOf(t.oldValue)<0&&this.lr(n,i,t.oldValue):(i=n.indexOf(t.oldValue),i>=0&&this.Co(n,i)));return}}super.changeState(t,e)}}get archetypeNodeData(){return this.zl}set archetypeNodeData(t){let e=this.zl;e!==t&&(t!==null&&m.wc(t,Xt,"archetypeNodeData"),this.zl=t,this.t("archetypeNodeData",e,t))}nL(t){if(t===void 0)return;let e=this.zl;if(e!==null){let i=this.findNodeDataForKey(t);i===null&&(i=this.copyNodeData(e),this.nt(i,this.nodeKeyProperty,t),this.addNodeData(i))}return t}get linkFromKeyProperty(){return this.No}set linkFromKeyProperty(t){let e=this.No;e!==t&&(this.Un(t,Xt,"linkFromKeyProperty"),this.No=t,this.t("linkFromKeyProperty",e,t))}getFromKeyForLinkData(t){return this.zi(t,!0)}setFromKeyForLinkData(t,e){this.bg(t,e,!0)}get linkToKeyProperty(){return this.Lo}set linkToKeyProperty(t){let e=this.Lo;e!==t&&(this.Un(t,Xt,"linkToKeyProperty"),this.Lo=t,this.t("linkToKeyProperty",e,t))}getToKeyForLinkData(t){return this.zi(t,!1)}setToKeyForLinkData(t,e){this.bg(t,e,!1)}zi(t,e){if(t===null)return;let i=e?this.No:this.Lo;if(i==="")return;let s=this.Lt(t,i);if(s!==void 0){if(this.isKeyType(s))return s;m.o((e?"FromKey":"ToKey")+" value for link data "+t+" is not a number or a string: "+s)}}bg(t,e,i){if(e===null&&(e=void 0),e!==void 0&&!this.isKeyType(e)&&m.si(e,"number or string",Xt,i?"setFromKeyForLinkData:key":"setToKeyForLinkData:key"),t===null)return;let s=i?this.No:this.Lo;if(s==="")return;if(e=this.nL(e),!this.containsLinkData(t)){this.nt(t,s,e);return}let n=this.Lt(t,s);n!==e&&(this.an(n,t),this.nt(t,s,e),this.findNodeDataForKey(e)===null&&this.hn(e,t),this.Ft(i?"linkFromKey":"linkToKey",2,s,t,n,e),typeof s=="string"&&this.updateTargetBindings(t,s))}get linkFromPortIdProperty(){return this.lc}set linkFromPortIdProperty(t){let e=this.lc;e!==t&&(this.Un(t,Xt,"linkFromPortIdProperty"),this.lc=t,this.t("linkFromPortIdProperty",e,t))}getFromPortIdForLinkData(t){return this.Mk(t,!0)}setFromPortIdForLinkData(t,e){this.kg(t,e,!0)}get linkToPortIdProperty(){return this.ac}set linkToPortIdProperty(t){let e=this.ac;e!==t&&(this.Un(t,Xt,"linkToPortIdProperty"),this.ac=t,this.t("linkToPortIdProperty",e,t))}getToPortIdForLinkData(t){return this.Mk(t,!1)}setToPortIdForLinkData(t,e){this.kg(t,e,!1)}Mk(t,e){if(t===null)return"";let i=e?this.lc:this.ac;if(i==="")return"";let s=this.Lt(t,i);return s===void 0?"":s}kg(t,e,i){if(m.s(e,"string",Xt,i?"setFromPortIdForLinkData:portname":"setToPortIdForLinkData:portname"),t===null)return;let s=i?this.lc:this.ac;if(s==="")return;if(!this.containsLinkData(t)){this.nt(t,s,e);return}let n=this.Lt(t,s);n===void 0&&(n=""),n!==e&&(this.nt(t,s,e),this.Ft(i?"linkFromPortId":"linkToPortId",2,s,t,n,e),typeof s=="string"&&this.updateTargetBindings(t,s))}get linkLabelKeysProperty(){return this.cn}set linkLabelKeysProperty(t){let e=this.cn;e!==t&&(this.Un(t,Xt,"linkLabelKeysProperty"),this.cn=t,this.t("linkLabelKeysProperty",e,t))}getLabelKeysForLinkData(t){if(t===null)return Xt.EmptyArray;let e=this.cn;if(e==="")return Xt.EmptyArray;let i=this.Lt(t,e);return i===void 0?Xt.EmptyArray:i}setLabelKeysForLinkData(t,e){if(this.eL(e,Xt,"setLabelKeysForLinkData:arr"),t===null)return;let i=this.cn;if(i==="")return;if(!this.containsLinkData(t)){this.nt(t,i,e);return}let s=this.Lt(t,i);if(s===void 0&&(s=Xt.EmptyArray),s!==e){if(Array.isArray(s)){let o=s.length;for(let r=0;r<o;r++){let a=s[r];this.an(a,t)}}this.nt(t,i,e);let n=e.length;for(let o=0;o<n;o++){let r=e[o];this.findNodeDataForKey(r)===null&&this.hn(r,t)}this.Ft("linkLabelKeys",2,i,t,s,e),typeof i=="string"&&this.updateTargetBindings(t,i)}}addLabelKeyForLinkData(t,e){if(e==null||(this.isKeyType(e)||m.si(e,"number or string",Xt,"addLabelKeyForLinkData:key"),t===null))return;let i=this.cn;if(i==="")return;let s=this.Lt(t,i);if(s===void 0){let n=[];n.push(e),this.setLabelKeysForLinkData(t,n)}else if(Array.isArray(s)){let n=s.indexOf(e);if(n>=0)return;n=s.length,s.push(e),this.containsLinkData(t)&&(this.findNodeDataForKey(e)===null&&this.hn(e,t),this.Ft("linkLabelKeys",3,i,t,null,e,null,n))}else m.o(i+" property is not an Array; cannot addLabelKeyForLinkData: "+t)}removeLabelKeyForLinkData(t,e){if(e==null||(this.isKeyType(e)||m.si(e,"number or string",Xt,"removeLabelKeyForLinkData:key"),t===null))return;let i=this.cn;if(i==="")return;let s=this.Lt(t,i);if(Array.isArray(s)){let n=s.indexOf(e);if(n<0)return;this.Co(s,n),this.containsLinkData(t)&&(this.an(e,t),this.Ft("linkLabelKeys",4,i,t,e,null,n,null))}else s!==void 0&&m.o(i+" property is not an Array; cannot removeLabelKeyforLinkData: "+t)}get linkDataArray(){return this.Is}set linkDataArray(t){let e=this.Is;if(e!==t){this.eL(t,Xt,"linkDataArray"),this.Oe.clear();let i=t.length;for(let n=0;n<i;n++){let o=t[n];m.$(o)||m.o("GraphLinksModel.linkDataArray must only contain Objects, not: "+o)}if(this.Is=t,this.linkKeyProperty!==""){let n=new q;for(let r=0;r<i;r++){let a=t[r],h=this.getKeyForLinkData(a);h===void 0||this.Oe.get(h)!==null?n.add(a):this.Oe.set(h,a)}let o=n.iterator;for(;o.next();){let r=o.value;this.makeLinkDataKeyUnique(r);let a=this.getKeyForLinkData(r);a!==void 0&&this.Oe.set(a,r)}}let s=new V;for(let n=0;n<i;n++){let o=t[n];s.add(o)}this.ar=s,this.Ft("linkDataArray",2,"linkDataArray",this,e,t);for(let n=0;n<i;n++){let o=t[n];this.oL(o)}}}get linkKeyProperty(){return this.Xa}set linkKeyProperty(t){let e=this.Xa;if(e!==t){this.Un(t,Xt,"linkKeyProperty"),this.Xa=t,this.Oe.clear();let i=this.linkDataArray.length;for(let s=0;s<i;s++){let n=this.linkDataArray[s],o=this.getKeyForLinkData(n);o===void 0&&(this.makeLinkDataKeyUnique(n),o=this.getKeyForLinkData(n)),o!==void 0&&this.Oe.set(o,n)}this.t("linkKeyProperty",e,t)}}getKeyForLinkData(t){if(t===null)return;let e=this.Xa;if(e==="")return;let i=this.Lt(t,e);if(i!==void 0){if(this.isKeyType(i))return i;m.o("Key value for link data "+t+" is not a number or a string: "+i)}}setKeyForLinkData(t,e){if((e==null||!this.isKeyType(e))&&m.si(e,"number or string",Xt,"setKeyForLinkData:key"),t===null)return;let i=this.Xa;if(i==="")return;if(!this.containsLinkData(t)){this.nt(t,i,e);return}let s=this.Lt(t,i);if(s!==e){if(this.findLinkDataForKey(e)!==null)return;this.nt(t,i,e),s!==void 0&&this.Oe.delete(s),this.Oe.set(e,t),this.Ft("linkKey",2,i,t,s,e),typeof i=="string"&&this.updateTargetBindings(t,i)}}get makeUniqueLinkKeyFunction(){return this.Zf}set makeUniqueLinkKeyFunction(t){let e=this.Zf;e!==t&&(t!==null&&m.S(t,Xt,"makeUniqueLinkKeyFunction"),this.Zf=t,this.t("makeUniqueLinkKeyFunction",e,t))}findLinkDataForKey(t){return t===null&&m.o("GraphLinksModel.findLinkDataForKey:key must not be null"),t===void 0||!this.isKeyType(t)?null:this.Oe.get(t)}Fk(t){return t===void 0?!1:this.Oe.has(t)}makeLinkDataKeyUnique(t){if(t===null)return;let e=this.Xa;if(e==="")return;let i=this.getKeyForLinkData(t);if(i!==void 0&&!this.Fk(i))return;let s=this.Zf;if(s!==null&&(i=s(this,t),i!=null&&!this.Fk(i))){this.nt(t,e,i);return}if(typeof i=="string"){let n=2;for(;this.Fk(i+n);)n++;this.nt(t,e,i+n)}else if(i===void 0||typeof i=="number"){let n=-this.Oe.count-1;for(;this.Fk(n);)n--;this.nt(t,e,n)}}containsLinkData(t){return t===null?!1:this.ar.has(t)}addLinkData(t){t!==null&&(this.containsLinkData(t)||this.Vv(t,!0))}Vv(t,e){if(this.linkKeyProperty!==""){let s=this.getKeyForLinkData(t);if(s===void 0)this.makeLinkDataKeyUnique(t),s=this.getKeyForLinkData(t);else{if(this.Oe.get(s)===t)return;this.makeLinkDataKeyUnique(t),s=this.getKeyForLinkData(t)}s===void 0&&m.o("GraphLinksModel.makeLinkDataKeyUnique failed on "+t+". Data not added to model."),this.Oe.set(s,t)}this.ar.add(t);let i=null;e&&(i=this.Is.length,this.lr(this.Is,i,t)),this.Ft("linkDataArray",3,"linkDataArray",this,null,t,null,i),this.oL(t)}addLinkDataCollection(t){if(Array.isArray(t)){let e=t.length;for(let i=0;i<e;i++)this.addLinkData(t[i])}else{let e=t.iterator;for(;e.next();){let i=e.value;this.addLinkData(i)}}}removeLinkData(t){t!==null&&this.Uv(t,!0)}Uv(t,e){this.ar.delete(t);let i=this.getKeyForLinkData(t);i!==void 0&&this.Oe.delete(i);let s=null;if(e){if(s=this.Is.indexOf(t),s<0)return;this.Co(this.Is,s)}this.Ft("linkDataArray",4,"linkDataArray",this,t,null,s,null),this.u3(t)}removeLinkDataCollection(t){if(Array.isArray(t)){let e=t.length;for(let i=0;i<e;i++)this.removeLinkData(t[i])}else{let e=t.iterator;for(;e.next();){let i=e.value;this.removeLinkData(i)}}}mergeLinkDataArray(t){if(this.linkKeyProperty===""&&m.o("GraphLinksModel.linkKeyProperty must not be an empty string for .mergeLinkDataArray() to succeed."),t===this.linkDataArray||!Array.isArray(t))return;let e=new V;e.addAll(this.Oe.iteratorKeys);let i=new V,s=t.length;for(let o=0;o<s;o++){let r=t[o],a=this.getKeyForLinkData(r);if(a!==void 0){i.add(a);let h=this.findLinkDataForKey(a);if(h===r)continue;if(h!==null)this.assignAllDataProperties(h,r),this.eF(r,h);else{let l=this.cloneDeep(r);this.setKeyForLinkData(l,a),this.addLinkData(l)}}else{let h=this.cloneDeep(r);this.addLinkData(h);let l=this.getKeyForLinkData(h);l!==void 0&&i.add(l)}}let n=e.iterator;for(;n.next();){let o=n.value;if(!i.has(o)){let r=this.findLinkDataForKey(o);r&&this.removeLinkData(r)}}}oL(t){let e=this.zi(t,!0);e=this.nL(e),this.findNodeDataForKey(e)===null&&this.hn(e,t),e=this.zi(t,!1),e=this.nL(e),this.findNodeDataForKey(e)===null&&this.hn(e,t);let i=this.getLabelKeysForLinkData(t);if(Array.isArray(i)){let s=i.length;for(let n=0;n<s;n++)e=i[n],this.findNodeDataForKey(e)===null&&this.hn(e,t)}}u3(t){let e=this.zi(t,!0);this.an(e,t),e=this.zi(t,!1),this.an(e,t);let i=this.getLabelKeysForLinkData(t);if(Array.isArray(i)){let s=i.length;for(let n=0;n<s;n++)e=i[n],this.an(e,t)}}get copyLinkDataFunction(){return this.Qf}set copyLinkDataFunction(t){let e=this.Qf;e!==t&&(t!==null&&m.S(t,Xt,"copyLinkDataFunction"),this.Qf=t,this.t("copyLinkDataFunction",e,t))}copyLinkData(t){let e=null,i=this.Qf;return i!==null?e=i(t,this):e=this.vk(t,!0),m.$(e)&&(this.No!==""&&this.nt(e,this.No,void 0),this.Lo!==""&&this.nt(e,this.Lo,void 0),this.cn!==""&&this.nt(e,this.cn,[])),e}get nodeIsGroupProperty(){return this._f}set nodeIsGroupProperty(t){let e=this._f;e!==t&&(this.Un(t,Xt,"nodeIsGroupProperty"),this._f=t,this.t("nodeIsGroupProperty",e,t))}isGroupForNodeData(t){if(t===null)return!1;let e=this._f;return e===""?!1:!!this.Lt(t,e)}isGroupForData(t){return this.isGroupForNodeData(t)}get nodeGroupKeyProperty(){return this.Ml}set nodeGroupKeyProperty(t){let e=this.Ml;e!==t&&(this.Un(t,Xt,"nodeGroupKeyProperty"),this.Ml=t,this.t("nodeGroupKeyProperty",e,t))}getGroupKeyForNodeData(t){if(t===null)return;let e=this.Ml;if(e==="")return;let i=this.Lt(t,e);if(i!==void 0){if(this.isKeyType(i))return i;m.o("GroupKey value for node data "+t+" is not a number or a string: "+i)}}getGroupForData(t){return this.getGroupKeyForNodeData(t)}setGroupKeyForNodeData(t,e){if(e===null&&(e=void 0),e!==void 0&&!this.isKeyType(e)&&m.si(e,"number or string",Xt,"setGroupKeyForNodeData:key"),t===null)return;let i=this.Ml;if(i==="")return;if(!this.containsNodeData(t)){this.nt(t,i,e);return}let s=this.Lt(t,i);s!==e&&(this.an(s,t),this.nt(t,i,e),this.findNodeDataForKey(e)===null&&this.hn(e,t),this.Ft("nodeGroupKey",2,i,t,s,e),typeof i=="string"&&this.updateTargetBindings(t,i))}setGroupForData(t,e){this.setGroupKeyForNodeData(t,e)}copyNodeData(t){let e=super.copyNodeData(t);return this.setGroupKeyForNodeData(e,void 0),e}setDataProperty(t,e,i){if(this.containsNodeData(t)){if(e===this.nodeKeyProperty){this.setKeyForNodeData(t,i);return}else if(e===this.nodeCategoryProperty){this.setCategoryForNodeData(t,i);return}else if(e===this.nodeGroupKeyProperty){this.setGroupKeyForNodeData(t,i);return}}else if(this.containsLinkData(t)){if(e===this.linkFromKeyProperty){this.bg(t,i,!0);return}else if(e===this.linkToKeyProperty){this.bg(t,i,!1);return}else if(e===this.linkFromPortIdProperty){this.kg(t,i,!0);return}else if(e===this.linkToPortIdProperty){this.kg(t,i,!1);return}else if(e===this.linkKeyProperty){this.setKeyForLinkData(t,i);return}else if(e===this.linkCategoryProperty){this.setCategoryForLinkData(t,i);return}else if(e===this.linkLabelKeysProperty){this.setLabelKeysForLinkData(t,i);return}}let s=this.Lt(t,e);s!==i&&(this.nt(t,e,i),this.raiseDataChanged(t,e,s,i))}assignAllDataProperties(t,e){if(!e)return;let i=this.containsNodeData(t),s=this.containsLinkData(t);for(let n in e)if(n!=="__gohashid"&&!(i&&n===this.nodeKeyProperty)){if(i&&n===this.nodeIsGroupProperty&&this.Lt(t,n)===e[n]||s&&n===this.linkKeyProperty)continue;this.setDataProperty(t,n,e[n])}}hw(t,e){super.hw(t,e);let i=this.ke.iterator;for(;i.next();){let n=i.value;this.rL(n,t,e)}let s=this.ar.iterator;for(;s.next();){let n=s.value;this.d3(n,t,e)}}rL(t,e,i){if(this.getGroupKeyForNodeData(t)===e){let s=this.Ml;this.nt(t,s,i),this.Ft("nodeGroupKey",2,s,t,e,i),typeof s=="string"&&this.updateTargetBindings(t,s)}}d3(t,e,i){if(this.zi(t,!0)===e){let n=this.No;this.nt(t,n,i),this.Ft("linkFromKey",2,n,t,e,i),typeof n=="string"&&this.updateTargetBindings(t,n)}if(this.zi(t,!1)===e){let n=this.Lo;this.nt(t,n,i),this.Ft("linkToKey",2,n,t,e,i),typeof n=="string"&&this.updateTargetBindings(t,n)}let s=this.getLabelKeysForLinkData(t);if(Array.isArray(s)){let n=s.length,o=this.cn;for(let r=0;r<n;r++)s[r]===e&&(this.Wv(s,r,i),this.Ft("linkLabelKeys",3,o,t,e,i,r,r))}}iL(){super.iL();let t=this.linkDataArray,e=t.length;for(let i=0;i<e;i++){let s=t[i];this.oL(s)}}Dg(t){super.Dg(t);let e=this.getKeyForNodeData(t),i=this.ew(e);if(i!==null){let s=m.st(),n=i.iterator;for(;n.next();){let o=n.value;if(this.containsNodeData(o)){if(this.getGroupKeyForNodeData(o)===e){let r=this.Ml;this.Ft("nodeGroupKey",2,r,o,e,e),typeof r=="string"&&this.updateTargetBindings(o,r),s.push(o)}}else{if(this.zi(o,!0)===e){let a=this.No;this.Ft("linkFromKey",2,a,o,e,e),typeof a=="string"&&this.updateTargetBindings(o,a),s.push(o)}if(this.zi(o,!1)===e){let a=this.Lo;this.Ft("linkToKey",2,a,o,e,e),typeof a=="string"&&this.updateTargetBindings(o,a),s.push(o)}let r=this.getLabelKeysForLinkData(o);if(Array.isArray(r)){let a=r.length,h=this.cn;for(let l=0;l<a;l++)r[l]===e&&(this.Ft("linkLabelKeys",3,h,o,e,e,l,l),s.push(o))}}}for(let o=0;o<s.length;o++)this.an(e,s[o]);m.Z(s)}}vg(t){super.vg(t);let e=this.getGroupKeyForNodeData(t);this.findNodeDataForKey(e)===null&&this.hn(e,t)}cw(t){super.cw(t);let e=this.getGroupKeyForNodeData(t);this.an(e,t)}get linkCategoryProperty(){return this.hc}set linkCategoryProperty(t){let e=this.hc;e!==t&&(this.Un(t,Xt,"linkCategoryProperty"),this.hc=t,this.t("linkCategoryProperty",e,t))}getCategoryForLinkData(t){if(t===null)return"";let e=this.hc;if(e==="")return"";let i=this.Lt(t,e);if(i===void 0)return"";if(typeof i=="string")return i;m.o("getCategoryForLinkData found a non-string category for "+t+": "+i)}getLinkCategoryForData(t){return this.getCategoryForLinkData(t)}setCategoryForLinkData(t,e){if(m.s(e,"string",Xt,"setCategoryForLinkData:cat"),t===null)return;let i=this.hc;if(i==="")return;if(!this.containsLinkData(t)){this.nt(t,i,e);return}let s=this.Lt(t,i);s===void 0&&(s=""),s!==e&&(this.nt(t,i,e),this.Ft("linkCategory",2,i,t,s,e),typeof i=="string"&&this.updateTargetBindings(t,i))}setLinkCategoryForData(t,e){this.setCategoryForLinkData(t,e)}Tg(t,e){super.Tg(t,e),this.setGroupKeyForNodeData(e,this.getGroupKeyForNodeData(t))}eF(t,e){this.setCategoryForLinkData(e,this.getCategoryForLinkData(t)),this.setFromKeyForLinkData(e,this.getFromKeyForLinkData(t)),this.setToKeyForLinkData(e,this.getToKeyForLinkData(t)),this.setLabelKeysForLinkData(e,this.getLabelKeysForLinkData(t)),this.setFromPortIdForLinkData(e,this.getFromPortIdForLinkData(t)),this.setToPortIdForLinkData(e,this.getToPortIdForLinkData(t))}get type(){return"GraphLinksModel"}fS(){return!0}jh(){return!0}Cx(){return!0}Ah(){return!0}static EmptyArray=Object.freeze([])}dt.Sl(Xt,"GraphLinksModel"),dt.jv=()=>new Xt,dt.d2=()=>new Xt;class Ue extends dt{Cl;cc;constructor(t,e){if(super(),this.Cl="parent",this.cc="parentLinkCategory",t!==void 0&&(Array.isArray(t)?this.nodeDataArray=t:e=t),e){Object.assign(this,e);let i=e.Changed;i&&(delete this.Changed,this.addChangedListener(i))}}cloneProtected(t){super.cloneProtected(t),t.Cl=this.Cl,t.cc=this.cc}toString(t){if(t===void 0&&(t=0),t>=2)return this.toJson();{let e=(this.name!==""?this.name:"")+" TreeModel";if(t>0){e+=`
49
49
  node data:`;let i=this.nodeDataArray,s=i.length;for(let n=0;n<s;n++){let o=i[n];e+=" "+this.getKeyForNodeData(o)+":"+ie.toString(o)}}return e}}Ag(){let t=super.Ag(),e="";return this.nodeParentKeyProperty!=="parent"&&typeof this.nodeParentKeyProperty=="string"&&(e+=`,
50
- "nodeParentKeyProperty": `+this.quote(this.nodeParentKeyProperty)),t+e}lw(t){super.lw(t),t.nodeParentKeyProperty&&(this.nodeParentKeyProperty=t.nodeParentKeyProperty)}aw(t){t.nodeParentKeyProperty!==void 0&&t.nodeParentKeyProperty!==this.nodeParentKeyProperty&&m.o("applyIncrementalJson cannot change Model properties"),super.aw(t)}maybeEnsureLinkReference(t){return t}get nodeParentKeyProperty(){return this.Cl}set nodeParentKeyProperty(t){let e=this.Cl;e!==t&&(this.Un(t,Ue,"nodeParentKeyProperty"),this.Cl=t,this.t("nodeParentKeyProperty",e,t))}getParentKeyForNodeData(t){if(t===null)return;let e=this.Cl;if(e==="")return;let i=this.Lt(t,e);if(i!==void 0){if(this.isKeyType(i))return i;m.o("ParentKey value for node data "+t+" is not a number or a string: "+i)}}setParentKeyForNodeData(t,e){if(e===null&&(e=void 0),e!==void 0&&!this.isKeyType(e)&&m.si(e,"number or string",Ue,"setParentKeyForNodeData:key"),t===null)return;let i=this.Cl;if(i==="")return;if(e=this.maybeEnsureLinkReference(e),!this.containsNodeData(t)){this.nt(t,i,e);return}let s=this.Lt(t,i);s!==e&&(this.an(s,t),this.nt(t,i,e),this.findNodeDataForKey(e)===null&&this.hn(e,t),this.Ft("nodeParentKey",2,i,t,s,e),typeof i=="string"&&this.updateTargetBindings(t,i))}get parentLinkCategoryProperty(){return this.cc}set parentLinkCategoryProperty(t){let e=this.cc;e!==t&&(this.Un(t,Ue,"parentLinkCategoryProperty"),this.cc=t,this.t("parentLinkCategoryProperty",e,t))}get linkCategoryProperty(){return this.parentLinkCategoryProperty}set linkCategoryProperty(t){this.parentLinkCategoryProperty=t}getParentLinkCategoryForNodeData(t){if(t===null)return"";let e=this.cc;if(e==="")return"";let i=this.Lt(t,e);if(i===void 0)return"";if(typeof i=="string")return i;m.o("getParentLinkCategoryForNodeData found a non-string category for "+t+": "+i)}getLinkCategoryForData(t){return this.getParentLinkCategoryForNodeData(t)}setParentLinkCategoryForNodeData(t,e){if(m.s(e,"string",Ue,"setParentLinkCategoryForNodeData:cat"),t===null)return;let i=this.cc;if(i==="")return;if(!this.containsNodeData(t)){this.nt(t,i,e);return}let s=this.Lt(t,i);s===void 0&&(s=""),s!==e&&(this.nt(t,i,e),this.Ft("parentLinkCategory",2,i,t,s,e),typeof i=="string"&&this.updateTargetBindings(t,i))}setLinkCategoryForData(t,e){this.setParentLinkCategoryForNodeData(t,e)}copyNodeData(t){let e=super.copyNodeData(t);return this.setParentKeyForNodeData(e,void 0),e}setDataProperty(t,e,i){if(this.containsNodeData(t)){if(e===this.nodeKeyProperty){this.setKeyForNodeData(t,i);return}else if(e===this.nodeCategoryProperty){this.setCategoryForNodeData(t,i);return}else if(e===this.nodeParentKeyProperty){this.setParentKeyForNodeData(t,i);return}else if(e===this.parentLinkCategoryProperty){this.setParentLinkCategoryForNodeData(t,i);return}}let s=this.Lt(t,e);s!==i&&(this.nt(t,e,i),this.raiseDataChanged(t,e,s,i))}hw(t,e){super.hw(t,e);let i=this.ke.iterator;for(;i.next();){let s=i.value;this.rL(s,t,e)}}rL(t,e,i){if(this.getParentKeyForNodeData(t)===e){let s=this.Cl;this.nt(t,s,i),this.Ft("nodeParentKey",2,s,t,e,i),typeof s=="string"&&this.updateTargetBindings(t,s)}}Dg(t){super.Dg(t);let e=this.getKeyForNodeData(t),i=this.ew(e);if(i!==null){let s=m.st(),n=i.iterator;for(;n.next();){let o=n.value;if(this.containsNodeData(o)&&this.getParentKeyForNodeData(o)===e){let r=this.Cl;this.Ft("nodeParentKey",2,r,o,e,e),typeof r=="string"&&this.updateTargetBindings(o,r),s.push(o)}}for(let o=0;o<s.length;o++)this.an(e,s[o]);m.Z(s)}}vg(t){super.vg(t);let e=this.getParentKeyForNodeData(t);e=this.maybeEnsureLinkReference(e),this.findNodeDataForKey(e)===null&&this.hn(e,t)}cw(t){super.cw(t);let e=this.getParentKeyForNodeData(t);this.an(e,t)}Tg(t,e){super.Tg(t,e),this.setParentLinkCategoryForNodeData(e,this.getParentLinkCategoryForNodeData(t)),this.setParentKeyForNodeData(e,this.getParentKeyForNodeData(t))}get type(){return"TreeModel"}Mx(){return!0}Cx(){return!0}}dt.Sl(Ue,"TreeModel");var ts=(x=>(x[x.ConstantSpacing=0]="ConstantSpacing",x[x.ConstantDistance=1]="ConstantDistance",x[x.ConstantAngle=2]="ConstantAngle",x[x.Packed=3]="Packed",x))(ts||{}),es=(x=>(x[x.Clockwise=10]="Clockwise",x[x.Counterclockwise=11]="Counterclockwise",x[x.BidirectionalLeft=12]="BidirectionalLeft",x[x.BidirectionalRight=13]="BidirectionalRight",x))(es||{}),is=(x=>(x[x.Forwards=20]="Forwards",x[x.Reverse=21]="Reverse",x[x.Ascending=22]="Ascending",x[x.Descending=23]="Descending",x[x.Optimized=24]="Optimized",x))(is||{}),ss=(x=>(x[x.Pythagorean=30]="Pythagorean",x[x.Circular=31]="Circular",x))(ss||{});class Ie extends ee{gi;tu;Rk;Fg;Ok;Ga;lL;aL;hL;Es;fw;uw;fc;dw;iF;Rg;Og;Ig;eu;He;P;Si;Mi;En;Eg;constructor(t){super(),this.gi=0,this.tu=0,this.Rk=0,this.Fg=360,this.Ok=0,this.Ga=0,this.lL=new P,this.aL=30,this.hL=0,this.Es=0,this.fw=0,this.uw=new Hs,this.fc=0,this.dw=0,this.iF=600,this.Rg=NaN,this.Og=1,this.Ig=0,this.eu=360,this.He=0,this.P=10,this.Si=24,this.Mi=Ee.standardComparer,this.En=6,this.Eg=30,t&&Object.assign(this,t)}cloneProtected(t){super.cloneProtected(t),t.Rg=this.Rg,t.Og=this.Og,t.Ig=this.Ig,t.eu=this.eu,t.He=this.He,t.P=this.P,t.Si=this.Si,t.Mi=this.Mi,t.En=this.En,t.Eg=this.Eg}fe(t){t in is?this.sorting=t:t in es?this.direction=t:t in ts?this.arrangement=t:t in ss?this.nodeDiameterFormula=t:super.fe(t)}createNetwork(){return new Ws(this)}g3(t,e,i){t=this.m3(t);let s=this.Ok,n=this.aL,o=this.gi,r=this.tu,a=this.Rk,h=this.Fg,l=this.Ga,u=this.hL,c=this.Es,d=this.fw;if(s=this.arrangement,n=this.nodeDiameterFormula,o=this.radius,(!isFinite(o)||o<=0)&&(o=NaN),r=this.aspectRatio,(!isFinite(r)||r<=0)&&(r=1),a=this.startAngle,isFinite(a)||(a=0),h=this.sweepAngle,(!isFinite(h)||h>360||h<1)&&(h=360),l=this.spacing,isFinite(l)||(l=NaN),s===3&&n===31?s=0:s===3&&n!==31&&(n=31,s=this.arrangement),(this.direction===12||this.direction===13)&&this.sorting!==24){for(let g=0;!(g>=t.length||(e.add(t.elt(g)),g+1>=t.length));g+=2)i.add(t.elt(g+1));this.direction===12?(this.arrangement===3&&e.reverse(),t=new q,t.addAll(e),t.addAll(i)):(this.arrangement===3&&i.reverse(),t=new q,t.addAll(i),t.addAll(e))}let f=t.length;u=0;let p=0;for(let g=0;g<t.length;g++){let y=a+h*p*(this.direction===10?1:-1)/f,b=t.elt(g).diameter;isNaN(b)&&(b=t.elt(g).Ya(y)),h<360&&(g===0||g===t.length-1)&&(b/=2),u+=b,p++}if(isNaN(o)||s===3){if(isNaN(l)&&(l=6),s!==0&&s!==3){let g=-1/0;for(let y=0;y<f;y++){let b=t.elt(y),v=t.elt(y===f-1?0:y+1);isNaN(b.diameter)&&b.Ya(0),isNaN(v.diameter)&&v.Ya(0),g=Math.max(g,(b.diameter+v.diameter)/2)}if(d=g+l,s===2){let y=2*Math.PI/f,b=(g+l)/y;r>1?(o=b,c=o*r):(c=b,o=c)}else o=this.Ik(d*(h>=360?f:f-1),r,a*Math.PI/180,h*Math.PI/180)}else o=this.Ik(u+(h>=360?f:f-1)*(s!==3?l:l*1.6),r,a*Math.PI/180,h*Math.PI/180);c=o*r}else{c=o*r;let g=this.cL(o,c,a*Math.PI/180,h*Math.PI/180);if(isNaN(l))s===0&&(l=(g-u)/(h>=360?f:f-1));else if(s===0){let y=(g-u)/(h>=360?f:f-1);y<l?(o=this.Ik(u+l*(h>=360?f:f-1),r,a*Math.PI/180,h*Math.PI/180),c=o*r):l=y}else{let y=-1/0;for(let w=0;w<f;w++){let k=t.elt(w),S=t.elt(w===f-1?0:w+1);isNaN(k.diameter)&&k.Ya(0),isNaN(S.diameter)&&S.Ya(0),y=Math.max(y,(k.diameter+S.diameter)/2)}let b=y+l,v=this.Ik(b*(h>=360?f:f-1),r,a*Math.PI/180,h*Math.PI/180);v>o?(o=v,c=o*r,d=b):d=g/(h>=360?f:f-1)}}return this.Ok=s,this.aL=n,this.gi=o,this.tu=r,this.Rk=a,this.Fg=h,this.Ga=l,this.hL=u,this.Es=c,this.fw=d,t}doLayout(t){this.network===null&&(this.network=this.makeNetwork(t)),this.arrangementOrigin=this.initialOrigin(this.arrangementOrigin);let e=this.network.vertexes;if(e.count<=1){if(e.count===1){let d=e.first();d.centerX=0,d.centerY=0}this.updateParts(),this.network=null,this.isValidLayout=!0;return}let i=new q;i.addAll(e.iterator);let s=new q,n=new q;i=this.g3(i,s,n);let o=this.Ok,r=this.gi,a=this.Rk,h=this.Fg,l=this.Ga,u=this.Es,c=this.fw;if((this.direction===12||this.direction===13)&&o===3)this.sF(i,h,a-h/2,10);else if(this.direction===12||this.direction===13){let d=0;switch(o){case 1:d=this.Ek(r,u,a,c)*180/Math.PI;break;case 0:{let f=0,p=0,g=s.first();g!==null&&(f=g.Ya(Math.PI/2));let y=n.first();y!==null&&(p=y.Ya(Math.PI/2)),d=this.Ek(r,u,a,l+(f+p)/2)*180/Math.PI;break}case 2:d=h/i.length;break}if(this.direction===12){switch(o){case 1:this.gw(s,h/2,a,11);break;case 0:this.mw(s,h/2,a,11);break;case 2:this.pw(s,h/2,a,11);break}switch(o){case 1:this.gw(n,h/2,a+d,10);break;case 0:this.mw(n,h/2,a+d,10);break;case 2:this.pw(n,h/2,a+d,10);break}}else{switch(o){case 1:this.gw(n,h/2,a,11);break;case 0:this.mw(n,h/2,a,11);break;case 2:this.pw(n,h/2,a,11);break}switch(o){case 1:this.gw(s,h/2,a+d,10);break;case 0:this.mw(s,h/2,a+d,10);break;case 2:this.pw(s,h/2,a+d,10);break}}}else switch(o){case 1:this.gw(i,h,a,this.direction);break;case 0:this.mw(i,h,a,this.direction);break;case 2:this.pw(i,h,a,this.direction);break;case 3:this.sF(i,h,a,this.direction);break}this.updateParts(),this.network=null,this.isValidLayout=!0}pw(t,e,i,s){let n=this.Fg,o=this.gi,r=this.Es,a=i*Math.PI/180,h=e*Math.PI/180,l=t.length;for(let u=0;u<l;u++){let c=a+(s===10?u*h/(n>=360?l:l-1):-(u*h)/l),d=t.elt(u),f=o*Math.tan(c)/r,p=Math.sqrt((o*o+r*r*f*f)/(1+f*f));d.centerX=p*Math.cos(c),d.centerY=p*Math.sin(c),d.actualAngle=c*180/Math.PI}}mw(t,e,i,s){let n=this.gi,o=this.Es,r=this.Ga,a=i*Math.PI/180,h=t.length;for(let l=0;l<h;l++){let u=t.elt(l),c=t.elt(l===h-1?0:l+1),d=n*Math.cos(a),f=o*Math.sin(a);u.centerX=d,u.centerY=f,u.actualAngle=a*180/Math.PI,isNaN(u.diameter)&&u.Ya(0),isNaN(c.diameter)&&c.Ya(0);let p=(u.diameter+c.diameter)/2,g=this.Ek(n,o,s===10?a:-a,p+r);a+=s===10?g:-g}}gw(t,e,i,s){let n=this.gi,o=this.Es,r=this.fw,a=i*Math.PI/180,h=t.length;for(let l=0;l<h;l++){let u=t.elt(l);u.centerX=n*Math.cos(a),u.centerY=o*Math.sin(a),u.actualAngle=a*180/Math.PI;let c=this.Ek(n,o,s===10?a:-a,r);a+=s===10?c:-c}}sF(t,e,i,s){let n=this.dw,o=this.Fg;if(this.fc=0,this.uw=new Hs,e<360){for(n=i+(s===10?o:-o);n<0;)n+=360;n%=360,n>180&&(n-=360),n*=Math.PI/180,this.dw=n,this.nF(t,e,i,s)}else this.oF(t,e,i,s);this.uw.commit(t)}oF(t,e,i,s){let n=this.gi,o=this.Es,r=this.Ga,a=this.tu,h=n*Math.cos(i*Math.PI/180),l=o*Math.sin(i*Math.PI/180),u=t.toArray();if(u.length===3){u[0].centerX=n,u[0].centerY=0,u[1].centerX=u[0].centerX-u[0].width/2-u[1].width/2-r,u[1].y=u[0].y,u[2].centerX=(u[0].centerX+u[1].centerX)/2,u[2].y=u[0].y-u[2].height-r;return}else if(u.length===4){u[0].centerX=n,u[0].centerY=0,u[2].centerX=-u[0].centerX,u[2].centerY=u[0].centerY,u[1].centerX=0,u[1].y=Math.min(u[0].y,u[2].y)-u[1].height-r,u[3].centerX=0,u[3].y=Math.max(u[0].y+u[0].height+r,u[2].y+u[2].height+r);return}let c=P.l();for(let k=0;k<u.length&&(u[k].centerX=h,u[k].centerY=l,!(k>=u.length-1));k++)this.rF(h,l,u,k,s,c)||this.lF(h,l,u,k,s,c),h=c.x,l=c.y;if(P.i(c),this.fc++,this.fc>23)return;let d=u[0].centerX,f=u[0].centerY,p=u[u.length-1].centerX,g=u[u.length-1].centerY,y=Math.abs(d-p)-((u[0].width+u[u.length-1].width)/2+r),b=Math.abs(f-g)-((u[0].height+u[u.length-1].height)/2+r),v=0;if(Math.abs(b)<1){let k=Math.abs(d-p),S=(u[0].width+u[u.length-1].width)/2;k<S&&(v=0),y=k-S}else b>0?v=b:Math.abs(y)<1?v=0:v=y;let w=!1;Math.abs(p)>Math.abs(g)?w=p>0!=f>g:w=g>0!=d<p,w=s===10?w:!w,w&&(v=-Math.abs(v),v=Math.min(v,-u[u.length-1].width),v=Math.min(v,-u[u.length-1].height)),this.uw.p3(v,u),Math.abs(v)>1&&(this.fc<8?this.gi-=v/(2*Math.PI):u.length<5&&v>10?this.gi/=2:this.gi-=v>0?1.7:-2.3,this.Es=this.gi*a,this.oF(t,e,i,s))}nF(t,e,i,s){let n=this.gi,o=this.Es,r=this.tu,a=n*Math.cos(i*Math.PI/180),h=o*Math.sin(i*Math.PI/180),l=P.l(),u=t.toArray();for(let p=0;p<u.length&&(u[p].centerX=a,u[p].centerY=h,!(p>=u.length-1));p++)this.rF(a,h,u,p,s,l)||this.lF(a,h,u,p,s,l),a=l.x,h=l.y;if(P.i(l),this.fc++,this.fc>23)return;let c=Math.atan2(h,a),d=s===10?this.dw-c:c-this.dw;d=Math.abs(d)<Math.abs(d-2*Math.PI)?d:d-2*Math.PI;let f=d*(n+o)/2;this.uw.y3(f,u),Math.abs(f)>1&&(this.fc<8?this.gi-=f/(2*Math.PI):this.gi-=f>0?1.7:-2.3,this.Es=this.gi*r,this.nF(t,e,i,s))}rF(t,e,i,s,n,o){let r=this.Ga,a=this.gi,h=this.Es,l=0,u=0,c=(i[s].width+i[s+1].width)/2+r,d=!1;if(e>=0!=(n===10)){if(l=t+c,l>a){if(l=t-c,l<-a)return o.x=l,o.y=u,!1;d=!0}}else if(l=t-c,l<-a){if(l=t+c,l>a)return o.x=l,o.y=u,!1;d=!0}return u=Math.sqrt(1-Math.min(1,l*l/(a*a)))*h,e<0!==d&&(u=-u),Math.abs(e-u)>(i[s].height+i[s+1].height)/2?(o.x=l,o.y=u,!1):(o.x=l,o.y=u,!0)}lF(t,e,i,s,n,o){let r=this.Ga,a=this.gi,h=this.Es,l=0,u=0,c=(i[s].height+i[s+1].height)/2+r,d=!1;if(t>=0!=(n===10)){if(u=e-c,u<-h){if(u=e+c,u>h)return o.x=l,o.y=u,!1;d=!0}}else if(u=e+c,u>h){if(u=e-c,u<-h)return o.x=l,o.y=u,!1;d=!0}return l=Math.sqrt(1-Math.min(1,u*u/(h*h)))*a,t<0!==d&&(l=-l),Math.abs(t-l)>(i[s].width+i[s+1].width)/2?(o.x=l,o.y=u,!1):(o.x=l,o.y=u,!0)}commitLayout(){this.commitNodes(),this.isRouting&&this.commitLinks()}commitNodes(){let t=this.group!==null&&this.group.hasPlaceholder(),e=t?this.group.location.copy():null,i=this.actualCenter;if(t?i=new P(0,0):(i.x=this.arrangementOrigin.x+this.gi,i.y=this.arrangementOrigin.y+this.Es),this.network!==null){let s=this.network.vertexes.iterator;for(;s.next();){let n=s.value;n.x+=i.x,n.y+=i.y,n.commit()}}if(t&&this.group&&e){this.group.ensureBounds();let s=this.group.position.copy(),n=this.group.location.copy(),o=e.subtract(n.subtract(s));this.group.move(o),this.lL=o.subtract(s)}}commitLinks(){if(this.network!==null){let t=this.network.edges.iterator;for(;t.next();)t.value.commit()}}cL(t,e,i,s){let n=this.iF;if(Math.abs(this.tu-1)<.001)return i!==void 0&&s!==void 0?s*t:2*Math.PI*t;let o=t>e?Math.sqrt(t*t-e*e)/t:Math.sqrt(e*e-t*t)/e,r=0,a=0;i!==void 0&&s!==void 0?a=s/(n+1):a=Math.PI/(2*(n+1));let h=0;for(let l=0;l<=n;l++){i!==void 0&&s!==void 0?h=i+l*s/n:h=l*Math.PI/(2*n);let u=Math.sin(h);r+=Math.sqrt(1-o*o*u*u)*a}return i!==void 0&&s!==void 0?(t>e?t:e)*r:4*(t>e?t:e)*r}Ik(t,e,i,s){let n=0;return i!==void 0&&s!==void 0?n=this.cL(1,e,i,s):n=this.cL(1,e),t/n}Ek(t,e,i,s){if(Math.abs(this.tu-1)<.001)return s/t;let n=t>e?Math.sqrt(t*t-e*e)/t:Math.sqrt(e*e-t*t)/e,o=0,r=2*Math.PI/(this.network.vertexes.count*700);t>e&&(i+=Math.PI/2);for(let a=0;;a++){let h=i+a*r,l=Math.sin(h);if(o+=(t>e?t:e)*Math.sqrt(1-n*n*l*l)*r,o>=s)return a*r}}m3(t){switch(this.sorting){case 20:break;case 21:t.reverse();break;case 22:t.sort(this.comparer);break;case 23:t.sort(this.comparer),t.reverse();break;case 24:return this.w3(this.x3(t));default:m.o("Invalid sorting type.")}return t}x3(t){let e=[];for(let s=0;s<t.length;s++)e.push(0);let i=new q;for(let s=0;s<t.length;s++){let n=-1,o=-1;if(s===0)for(let u=0;u<t.length;u++){let c=t.elt(u).edgesCount;c>n&&(n=c,o=u)}else for(let u=0;u<t.length;u++){let c=e[u];c>n&&(n=c,o=u)}i.add(t.elt(o)),e[o]=-1;let r=t.elt(o),a=0,h=r.sourceEdges;for(;h.next();){let u=h.value.fromVertex;a=t.indexOf(u),!(a<0)&&e[a]>=0&&e[a]++}let l=r.destinationEdges;for(;l.next();){let u=l.value.toVertex;a=t.indexOf(u),!(a<0)&&e[a]>=0&&e[a]++}}return i}w3(t){let e=[];for(let c=0;c<t.length;c++){let d=t.elt(c);e[c]=[];let f=0,p=d.destinationEdges;for(;p.next();){let y=p.value.toVertex;f=t.indexOf(y),f!==c&&e[c].indexOf(f)<0&&e[c].push(f)}let g=d.sourceEdges;for(;g.next();){let y=g.value.fromVertex;f=t.indexOf(y),f!==c&&e[c].indexOf(f)<0&&e[c].push(f)}}let i=[];for(let c=0;c<e.length;c++)i[c]=0;let s=[],n=[],o=[],r=[],a=new q,h=0;for(let c=0;c<e.length;c++){let d=e[c].length;if(d===1){r.push(c);continue}if(d===0){a.add(t.elt(c));continue}if(h===0){s.push(c),h++;continue}let f=1/0,p=1/0,g=-1,y=[];for(let b=0;b<s.length;b++)e[s[b]].indexOf(s[b===s.length-1?0:b+1])<0&&y.push(b===s.length-1?0:b+1);if(y.length===0)for(let b=0;b<s.length;b++)y.push(b);for(let b=0;b<y.length;b++){let v=y[b],w=this.b3(e[c],n,o,i,v,s),k=0;for(let S=0;S<e[c].length;S++){let N=e[c][S],D=s.indexOf(N);if(D>=0){let L=Math.abs(v-(D>=v?D+1:D));k+=L<s.length+1-L?L:s.length+1-L}}for(let S=0;S<n.length;S++){let N=i[n[S]],D=i[o[S]];if(N>=v&&N++,D>=v&&D++,N>D){let L=D;D=N,N=L}D-N<(s.length+2)/2==(N<v&&v<=D)&&k++}(w<f||w===f&&k<p)&&(f=w,p=k,g=v)}s.splice(g,0,c);for(let b=0;b<s.length;b++)i[s[b]]=b;for(let b=0;b<e[c].length;b++){let v=e[c][b];s.indexOf(v)>=0&&(n.push(c),o.push(v))}h++}let l=!1,u=s.length;for(;;){l=!0;for(let c=0;c<r.length;c++){let d=r[c],f=e[d][0],p=s.indexOf(f);if(p>=0){let g=0;for(let y=0;y<e[f].length;y++){let b=e[f][y],v=s.indexOf(b);if(v<0||v===p)continue;let w=v>p?v-p:p-v,k=u-w;g+=v<p!=w>k?1:-1}s.splice(g<0?p:p+1,0,d),r.splice(c,1),c--}else l=!1}if(l)break;s.push(r[0]),r.splice(0,1)}for(let c=0;c<s.length;c++){let d=s[c];a.add(t.elt(d))}return a}b3(t,e,i,s,n,o){let r=0;for(let a=0;a<e.length;a++){let h=e[a],l=i[a],u=s[h],c=s[l],d=0,f=0;if(u<c?(d=u,f=c):(d=c,f=u),d<n&&n<=f)for(let p=0;p<t.length;p++){let g=t[p];o.indexOf(g)<0||d<s[g]&&s[g]<f||d===s[g]||f===s[g]||r++}else for(let p=0;p<t.length;p++){let g=t[p];o.indexOf(g)<0||!(d<s[g]&&s[g]<f)||d===s[g]||f===s[g]||r++}}return r}get radius(){return this.Rg}set radius(t){this.Rg!==t&&(m.s(t,"number",Ie,"radius"),(t>0||isNaN(t))&&(this.Rg=t,this.p()))}get aspectRatio(){return this.Og}set aspectRatio(t){this.Og!==t&&(m.s(t,"number",Ie,"aspectRatio"),t>0&&(this.Og=t,this.p()))}get startAngle(){return this.Ig}set startAngle(t){this.Ig!==t&&(m.s(t,"number",Ie,"startAngle"),this.Ig=t,this.p())}get sweepAngle(){return this.eu}set sweepAngle(t){this.eu!==t&&(m.s(t,"number",Ie,"sweepAngle"),t>0&&t<=360?this.eu=t:this.eu=360,this.p())}get arrangement(){return this.He}set arrangement(t){this.He!==t&&(t===3||t===0||t===1||t===2)&&(this.He=t,this.p())}get direction(){return this.P}set direction(t){this.P!==t&&(t===10||t===11||t===12||t===13)&&(this.P=t,this.p())}get sorting(){return this.Si}set sorting(t){this.Si!==t&&(this.Si=t,this.p())}get comparer(){return this.Mi}set comparer(t){this.Mi!==t&&(m.S(t,Ie,"comparer"),this.Mi=t,this.p())}get spacing(){return this.En}set spacing(t){this.En!==t&&(m.s(t,"number",Ie,"spacing"),this.En=t,this.p())}get nodeDiameterFormula(){return this.Eg}set nodeDiameterFormula(t){this.Eg!==t&&(t===30||t===31)&&(this.Eg=t,this.p())}get actualXRadius(){return this.gi}get actualYRadius(){return this.Es}get actualSpacing(){return this.Ga}get actualCenter(){return this.lL}static ConstantSpacing=0;static ConstantDistance=1;static ConstantAngle=2;static Packed=3;static Clockwise=10;static Counterclockwise=11;static BidirectionalLeft=12;static BidirectionalRight=13;static Forwards=20;static Reverse=21;static Ascending=22;static Descending=23;static Optimized=24;static Pythagorean=30;static Circular=31}class Hs{iu;uc;su;constructor(){this.iu=-1/0,this.uc=null,this.su=null}p3(t,e){if(t>0&&this.iu<0||Math.abs(t)<Math.abs(this.iu)&&!(t<0&&this.iu>0)){this.iu=t,this.uc=[],this.su=[];for(let i=0;i<e.length;i++)this.uc[i]=e[i].bounds.x,this.su[i]=e[i].bounds.y}}y3(t,e){if(Math.abs(t)<Math.abs(this.iu)){this.iu=t,this.uc=[],this.su=[];for(let i=0;i<e.length;i++)this.uc[i]=e[i].bounds.x,this.su[i]=e[i].bounds.y}}commit(t){if(!(this.uc===null||this.su===null))for(let e=0;e<this.uc.length;e++){let i=t.elt(e);i.x=this.uc[e],i.y=this.su[e]}}}class Ws extends Re{constructor(t){super(t)}createVertex(){return new di(this)}createEdge(){return new $s(this)}}class di extends Ee{Ao;Uk;constructor(t){super(t),this.Ao=NaN,this.Uk=NaN}Ya(t){let e=this.network;if(e===null)return NaN;let i=e.layout;if(i===null)return NaN;if(i.arrangement===3){if(i.nodeDiameterFormula===31)return this.Ao=Math.max(this.width,this.height),this.Ao;{let s=Math.abs(Math.sin(t)),n=Math.abs(Math.cos(t));return s===0?this.width:n===0?this.height:(this.Ao=Math.min(this.height/s,this.width/n),this.Ao)}}else return i.nodeDiameterFormula===31?(this.Ao=Math.max(this.width,this.height),this.Ao):(this.Ao=Math.sqrt(this.width*this.width+this.height*this.height),this.Ao)}get diameter(){return this.Ao}set diameter(t){this.Ao!==t&&(m.s(t,"number",di,"diameter"),this.Ao=t)}get actualAngle(){return this.Uk}set actualAngle(t){this.Uk!==t&&(m.s(t,"number",di,"actualAngle"),this.Uk=t)}}class $s extends ei{constructor(t){super(t)}}class se extends ee{yw;Ka;Us;Ug;Vn;Gi;Vg;Bg;zg;nu;Xg;Gg;ou;ru;lu;au;Yg;Kg;hu;dc;constructor(t){super(),this.yw=0,this.Ka=0,this.Us=new nt(100,100).k(),this.Ug=!1,this.Vn=!0,this.Gi=!1,this.Vg=100,this.Bg=300,this.zg=1,this.nu=1e3,this.Xg=10,this.Gg=Math,this.ou=.05,this.ru=50,this.lu=150,this.au=0,this.Yg=10,this.Kg=5,this.hu=NaN,this.dc=10,t&&Object.assign(this,t)}cloneProtected(t){super.cloneProtected(t),t.Us.h(this.Us),t.Ug=this.Ug,t.Vn=this.Vn,t.Gi=this.Gi,t.Vg=this.Vg,t.Bg=this.Bg,t.zg=this.zg,t.nu=this.nu,t.Xg=this.Xg,t.Gg=this.Gg,t.ou=this.ou,t.ru=this.ru,t.lu=this.lu,t.au=this.au,t.Yg=this.Yg,t.Kg=this.Kg,t.hu=this.hu,t.dc=this.dc}createNetwork(){return new Js(this)}doLayout(t){this.network=this.makeNetwork(t);let e=this.network.vertexes.iterator,i=this.maxIterations;if(this.network.vertexes.count>0){for(this.network.deleteSelfEdges(),e=this.network.vertexes.iterator;e.next();){let n=e.value;n.charge=this.electricalCharge(n),n.mass=this.gravitationalMass(n)}let s=this.network.edges.iterator;for(;s.next();){let n=s.value;n.stiffness=this.springStiffness(n),n.length=this.springLength(n)}if(this.fL(),this.Ka=0,this.needsPrelayout()){let n=this.network,o=n.splitIntoSubNetworks(!1),r=o.iterator;for(;r.next();){let a=r.value;this.doConnectedSubnetLayout(a)}for(r=o.iterator,this.k3(r,n),r=o.iterator;r.next();){let a=r.value,h=a.vertexes.iterator;for(;h.next();){let u=h.value;n.addVertex(u)}let l=a.edges.iterator;for(;l.next();){let u=l.value;n.addEdge(u)}}}else this.aF(this.network,this.maxIterations);this.updateParts()}this.maxIterations=i,this.isValidLayout=!0}needsPrelayout(){if(this.network===null||this.network.vertexes.count<3)return!1;let t=0,e=0,i=this.network.vertexes.first().bounds,s=this.network.vertexes.iterator;for(;s.next();){let n=s.value,o=n.bounds;if(isNaN(n.x)||isNaN(n.y)||o.intersectsRect(i)&&(t++,t>2))return!0;if(e>10)return!1;e++}return!1}doConnectedSubnetLayout(t){let e=t.vertexes.iterator;for(;e.next();){let a=e.value;a.hierarchicalVertexes.add(a)}let i=t,s=this.hu;if(isNaN(s)&&(s=t.edges.count/t.vertexes.count),s<t.vertexes.count)for(;i.vertexes.count>Math.max(100,Math.sqrt(s*t.vertexes.count));)i=this.coarsenNetwork(i);let n=0;e=i.vertexes.iterator;let o=this.randomNumberGenerator;for(o===null&&(this.randomNumberGenerator=o=new Zs(0));e.next();){e.value.idInCluster=n++;let a=10*(o.random()-.5),h=10*(o.random()-.5);this.isFixed(e.value)||(e.value.x=a,e.value.y=h);let l=e.value.hierarchicalVertexes.iterator;for(;l.next();)this.isFixed(l.value)||(l.value.x=a,l.value.y=h)}let r=this.computePairwiseDistances(i);this.P3(i,r,this.maxPrelayoutIterations,t.vertexes.count),this.aF(t,this.maxIterations)}computePairwiseDistances(t){let e=t.vertexes.count,i=new Array(e);for(let r=0;r<e;r++)i[r]=new Array(e).fill(-1),i[r][r]=0;let s=t.vertexes.iterator,n=new Map,o=[];for(;s.next();){let r=s.value;for(o=[r],n=new Map,n.set(r.idInCluster,0);o.length>0;){let a=o.shift(),h=a.vertexes.iterator;for(;h.next();){let l=h.value;n.has(l.idInCluster)||(n.set(l.idInCluster,n.get(a.idInCluster)+1),o.push(l))}}for(let a=0;a<e;a++){let h=Math.min(i[r.idInCluster][a],i[a][r.idInCluster]),l=n.get(a);(h<0||l<h)&&(i[r.idInCluster][a]=l,i[a][r.idInCluster]=l)}}return i}coarsenNetwork(t){let e=this.createNetwork(),i=new Map,s=0,n=t.vertexes.iterator;for(;n.next();)n.value.idInCluster=s++;for(n=t.vertexes.iterator;n.next();){let r=n.value;if(i.has(r.idInCluster))continue;let a=Number.MAX_SAFE_INTEGER,h=null,l=r.vertexes.iterator;for(;l.next();){let c=l.value;i.has(c.idInCluster)||c.hierarchicalVertexes.length<a&&(a=c.hierarchicalVertexes.length,h=c)}let u=e.createVertex();u.hierarchicalVertexes.addAll(r.hierarchicalVertexes),h!=null&&u.hierarchicalVertexes.addAll(h.hierarchicalVertexes),i.set(r.idInCluster,u),h!=null&&i.set(h.idInCluster,u),e.addVertex(u)}let o=t.edges.iterator;for(;o.next();){let r=o.value,a=i.get(r.fromVertex.idInCluster),h=i.get(r.toVertex.idInCluster);if(a===h)continue;let l=e.createEdge();l.fromVertex=a||null,l.toVertex=h||null,e.addEdge(l)}return e}ix(t,e){let i=!0,s=t.vertexes.iterator;for(;s.next();){let n=s.value;i?(i=!1,e.set(n.bounds)):e.unionRect(n.bounds)}return e}k3(t,e){let i=this.arrangementSpacing,s=t.count,n=!0,o=0,r=0,a=m.st();for(let c=0;c<s+e.vertexes.count+2;c++)a[c]=null;let h=0;t.reset();let l=I.l(),u;for(;t.next();){let c=t.value;if(this.ix(c,l),n)n=!1,o=l.x+l.width/2,r=l.y+l.height/2,a[0]=new P(l.x+l.width+i.width,l.y),a[1]=new P(l.x,l.y+l.height+i.height),h=2;else{let d=this.hF(a,h,o,r,l.width,l.height,i),f=a[d],p=new P(f.x+l.width+i.width,f.y),g=new P(f.x,f.y+l.height+i.height);d+1<h&&a.splice(d+1,0,null),a[d]=p,a[d+1]=g,h++;let y=f.x-l.x,b=f.y-l.y;for(u=c.vertexes.iterator;u.next();){let v=u.value;this.isFixed(v)||(v.centerX+=y,v.centerY+=b)}}}for(I.i(l),u=e.vertexes.iterator;u.next();){let c=u.value,d=c.bounds;if(h<2){o=d.x+d.width/2,r=d.y+d.height/2,a[0]=new P(d.x+d.width+i.width,d.y),a[1]=new P(d.x,d.y+d.height+i.height),h=2;continue}let f=this.hF(a,h,o,r,d.width,d.height,i),p=a[f],g=new P(p.x+d.width+i.width,p.y),y=new P(p.x,p.y+d.height+i.height);f+1<h&&a.splice(f+1,0,null),a[f]=g,a[f+1]=y,h++,this.isFixed(c)||(c.centerX=p.x+c.width/2,c.centerY=p.y+c.height/2)}m.Z(a)}hF(t,e,i,s,n,o,r){let a=9e19,h=-1;t:for(let l=0;l<e;l++){let u=t[l],c=u.x-i,d=u.y-s,f=c*c+d*d;if(f<a){for(let p=l-1;p>=0;p--)if(t[p].y>u.y&&t[p].x-u.x<n+r.width)continue t;for(let p=l+1;p<e;p++)if(t[p].x>u.x&&t[p].y-u.y<o+r.height)continue t;h=l,a=f}}return h}fL(){if(this.network===null||!this.comments)return;let t=this.network.vertexes.iterator;for(;t.next();){let e=t.value;this.addComments(e)}}addComments(t){if(this.network===null)return;let e=t.node;if(e!==null){let i=e.findNodesConnected();for(;i.next();){let s=i.value;if(s.category!=="Comment"||!s.isVisible())continue;let n=this.network.findVertex(s);n===null&&(n=this.network.addNode(s)),n.charge=this.defaultCommentElectricalCharge;let o=null,r=n.destinationEdges;for(;r.next();){let a=r.value;if(a.toVertex===t){o=a;break}}if(o===null){let a=n.sourceEdges;for(;a.next();){let h=a.value;if(h.fromVertex===t){o=h;break}}}o===null&&(o=this.network.linkVertexes(t,n,null)),o.length=this.defaultCommentSpringLength}}}cF(t,e){let i=t.bounds,s=i.x,n=i.y,o=i.width,r=i.height,a=e.bounds,h=a.x,l=a.y,u=a.width,c=a.height;if(s+o<h)if(n>l+c){let d=s+o-h,f=n-l-c;return C.Qw(d*d+f*f)}else if(n+r<l){let d=s+o-h,f=n+r-l;return C.Qw(d*d+f*f)}else return h-(s+o);else if(s>h+u)if(n>l+c){let d=s-h-u,f=n-l-c;return C.Qw(d*d+f*f)}else if(n+r<l){let d=s-h-u,f=n+r-l;return C.Qw(d*d+f*f)}else return s-(h+u);else return n>l+c?n-(l+c):n+r<l?l-(n+r):.1}aF(t,e){let i=this.Ka+e;for(;this.Ka<i&&(this.Ka++,!!this.S3(t)););}S3(t){let e=t.vertexes.toArray();if(e.length<=0)return!1;let i=e[0];i.forceX=0,i.forceY=0;let s=i.centerX,n=s,o=i.centerY,r=o;for(let p=1;p<e.length;p++){let g=e[p];g.forceX=0,g.forceY=0;let y=g.centerX,b=g.centerY;s=Math.min(s,y),n=Math.max(n,y),o=Math.min(o,b),r=Math.max(r,b)}let a=n-s>r-o;a?e.sort((p,g)=>p===null||g===null||p===g?0:p.centerX-g.centerX):e.sort((p,g)=>p===null||g===null||p===g?0:p.centerY-g.centerY);let h=this.nu,l=0,u=0,c=0;for(let p=0;p<e.length;p++){let g=e[p],y=g.bounds,b=g.focus,v=y.x+b.x,w=y.y+b.y;u=g.charge*this.electricalFieldX(v,w),c=g.charge*this.electricalFieldY(v,w),u+=g.mass*this.gravitationalFieldX(v,w),c+=g.mass*this.gravitationalFieldY(v,w),g.forceX+=u,g.forceY+=c;for(let k=p+1;k<e.length;k++){let S=e[k];if(!this.shouldInteract(g,S)||k===p)continue;let N=S.bounds,D=S.focus,L=N.x+D.x,M=N.y+D.y;if(v-L>h||L-v>h){if(a)break;continue}if(w-M>h||M-w>h){if(!a)break;continue}let A=this.cF(g,S),F=2*g.charge,O=2*S.charge;if(A>1)l=F*O/(A*A),u=l*(v-L)/A,c=l*(w-M)/A;else{let E=this.randomNumberGenerator;E===null&&(this.randomNumberGenerator=E=new Zs(0));let B=E.random(),X=E.random();if(v>L)u=Math.abs(S.bounds.right-g.bounds.x),u=F*O*(1+u)*B;else if(v<L)u=Math.abs(S.bounds.x-g.bounds.right),u=-(F*O)*(1+u)*B;else{let z=Math.max(S.width,g.width);u=F*O*((1+z)*B-z/2)}if(w>M)c=Math.abs(S.bounds.bottom-g.bounds.y),c=F*O*(1+c)*X;else if(v<L)c=Math.abs(S.bounds.y-g.bounds.bottom),c=-(F*O)*(1+c)*X;else{let z=Math.max(S.height,g.height);c=F*O*((1+z)*X-z/2)}}g.forceX+=u,g.forceY+=c,S.forceX-=u,S.forceY-=c}}let d=t.edges.iterator;for(;d.next();){let p=d.value,g=p.fromVertex,y=p.toVertex,b=g.bounds,v=g.focus,w=b.x+v.x,k=b.y+v.y,S=y.bounds,N=y.focus,D=S.x+N.x,L=S.y+N.y,M=this.cF(g,y);M>1&&(l=.1*p.stiffness*(M-p.length),u=l*.5*(g.width+y.height)*(w-D)/M,c=l*.5*(g.width+y.height)*(k-L)/M),g.forceX-=u,g.forceY-=c,y.forceX+=u,y.forceY+=c}let f=0;for(let p=0;p<e.length;p++){let g=e[p];this.isFixed(g)?this.moveFixedVertex(g):f=Math.max(f,this.moveVertex(g)||0)}return f>this.epsilonDistance*this.epsilonDistance}P3(t,e,i,s){let n=this.Ka+i,o=Math.sqrt(s);this.yw=this.dc*t.vertexes.count;let r=t.vertexes.toArray(),a=0,h=0,l=0;for(;this.Ka<n;){this.Ka++,h=a,a=0;for(let u=0;u<r.length;u++){r[u].forceX=0,r[u].forceY=0;for(let d=0;d<r.length;d++){if(u===d)continue;let f=Math.sqrt((r[u].centerX-r[d].centerX)**2+(r[u].centerY-r[d].centerY)**2),p=e[r[u].idInCluster][r[d].idInCluster],g=(f-this.dc*o*p)/f;r[u].forceX+=g*(r[d].x-r[u].x),r[u].forceY+=g*(r[d].y-r[u].y)}let c=Math.sqrt(r[u].forceX*r[u].forceX+r[u].forceY*r[u].forceY);if(c>0){r[u].forceX=this.yw*r[u].forceX/c,r[u].forceY=this.yw*r[u].forceY/c,this.isFixed(r[u])||(r[u].x+=r[u].forceX,r[u].y+=r[u].forceY);let d=r[u].hierarchicalVertexes.iterator;for(;d.next();){let f=d.value;this.isFixed(f)||(f.centerX+=r[u].forceX,f.centerY+=r[u].forceY)}}a+=c*c}if(a>=h){if(l++,l>=5)break}else l=0;this.yw*=.95}}moveVertex(t){let e=t.forceX,i=t.forceY,s=this.moveLimit;return e<-s?e=-s:e>s&&(e=s),i<-s?i=-s:i>s&&(i=s),t.centerX+=e,t.centerY+=i,e*e+i*i}shouldInteract(t,e){return!0}moveFixedVertex(t){}commitLayout(){this.ww(),this.commitNodes(),this.isRouting&&this.commitLinks()}ww(){if(this.network===null||!this.setsPortSpots)return;let t=this.network.edges.iterator;for(;t.next();){let e=t.value.link;e!==null&&(e.fromSpot=T.Default,e.toSpot=T.Default)}}commitNodes(){if(!this.network)return;let t=0,e=0;if(this.arrangesToOrigin){let n=I.l();this.ix(this.network,n);let o=this.arrangementOrigin;t=o.x-n.x,e=o.y-n.y,I.i(n)}let i=I.l(),s=this.network.vertexes.iterator;for(;s.next();){let n=s.value;(t!==0||e!==0)&&(i.h(n.bounds),i.x+=t,i.y+=e,n.bounds=i),n.commit()}I.i(i)}commitLinks(){if(!this.network)return;let t=this.network.edges.iterator;for(;t.next();)t.value.commit()}springStiffness(t){let e=t.stiffness;return isNaN(e)?this.ou:e}springLength(t){let e=t.length;return isNaN(e)?this.ru:e}electricalCharge(t){let e=t.charge;return isNaN(e)?this.lu:e}electricalFieldX(t,e){return 0}electricalFieldY(t,e){return 0}gravitationalMass(t){let e=t.mass;return isNaN(e)?this.au:e}gravitationalFieldX(t,e){return 0}gravitationalFieldY(t,e){return 0}isFixed(t){return t.isFixed}get currentIteration(){return this.Ka}get arrangementSpacing(){return this.Us}set arrangementSpacing(t){this.Us.equals(t)||(this.Us.h(t),this.p())}get arrangesToOrigin(){return this.Ug}set arrangesToOrigin(t){this.Ug!==t&&(m.s(t,"boolean",se,"arrangesToOrigin"),this.Ug=t,this.p())}get setsPortSpots(){return this.Vn}set setsPortSpots(t){this.Vn!==t&&(m.s(t,"boolean",se,"setsPortSpots"),this.Vn=t,this.p())}get comments(){return this.Gi}set comments(t){this.Gi!==t&&(m.s(t,"boolean",se,"comments"),this.Gi=t,this.p())}get maxPrelayoutIterations(){return this.Vg}set maxPrelayoutIterations(t){this.Vg!==t&&(m.s(t,"number",se,"maxPrelayoutIterations"),t>=0&&(this.Vg=t,this.p()))}get maxIterations(){return this.Bg}set maxIterations(t){this.Bg!==t&&(m.s(t,"number",se,"maxIterations"),t>=0&&(this.Bg=t,this.p()))}get epsilonDistance(){return this.zg}set epsilonDistance(t){this.zg!==t&&(m.s(t,"number",se,"epsilonDistance"),t>0&&(this.zg=t,this.p()))}get infinityDistance(){return this.nu}set infinityDistance(t){this.nu!==t&&(m.s(t,"number",se,"infinityDistance"),t>1&&(this.nu=t,this.p()))}get moveLimit(){return this.Xg}set moveLimit(t){this.Xg!==t&&(m.s(t,"number",se,"moveLimit"),this.Xg=t,this.p())}get randomNumberGenerator(){return this.Gg}set randomNumberGenerator(t){this.Gg!==t&&(t!==null&&!m.it(t.random)&&m.o('ForceDirectedLayout.randomNumberGenerator must have a "random()" function on it: '+t),this.Gg=t)}get defaultSpringStiffness(){return this.ou}set defaultSpringStiffness(t){this.ou!==t&&(m.s(t,"number",se,"defaultSpringStiffness"),this.ou=t,this.p())}get defaultSpringLength(){return this.ru}set defaultSpringLength(t){this.ru!==t&&(m.s(t,"number",se,"defaultSpringLength"),this.ru=t,this.p())}get defaultElectricalCharge(){return this.lu}set defaultElectricalCharge(t){this.lu!==t&&(m.s(t,"number",se,"defaultElectricalCharge"),this.lu=t,this.p())}get defaultGravitationalMass(){return this.au}set defaultGravitationalMass(t){this.au!==t&&(m.s(t,"number",se,"defaultGravitationalMass"),this.au=t,this.p())}get defaultCommentSpringLength(){return this.Yg}set defaultCommentSpringLength(t){this.Yg!==t&&(m.s(t,"number",se,"defaultCommentSpringLength"),this.Yg=t,this.p())}get defaultCommentElectricalCharge(){return this.Kg}set defaultCommentElectricalCharge(t){this.Kg!==t&&(m.s(t,"number",se,"defaultCommentElectricalCharge"),this.Kg=t,this.p())}get prelayoutQuality(){return this.hu}set prelayoutQuality(t){this.hu!==t&&(m.s(t,"number",se,"prelayoutQuality"),this.hu=t,this.p())}get prelayoutSpread(){return this.dc}set prelayoutSpread(t){this.dc!==t&&(m.s(t,"number",se,"prelayoutSpread"),this.dc=t,this.p())}}class Js extends Re{constructor(t){super(t)}createVertex(){return new Be(this)}createEdge(){return new fi(this)}}class Be extends Ee{Vk;Bk;zk;Xk;Gk;hierarchicalVertexes;idInCluster;constructor(t){super(t),this.Vk=!1,this.Bk=NaN,this.zk=NaN,this.Xk=0,this.Gk=0,this.hierarchicalVertexes=new q,this.idInCluster=-1}get isFixed(){return this.Vk}set isFixed(t){this.Vk!==t&&(m.s(t,"boolean",Be,"isFixed"),this.Vk=t)}get charge(){return this.Bk}set charge(t){this.Bk!==t&&(m.s(t,"number",Be,"charge"),this.Bk=t)}get mass(){return this.zk}set mass(t){this.zk!==t&&(m.s(t,"number",Be,"mass"),this.zk=t)}get forceX(){return this.Xk}set forceX(t){this.Xk!==t&&(m.s(t,"number",Be,"forceX"),this.Xk=t)}get forceY(){return this.Gk}set forceY(t){this.Gk!==t&&(m.s(t,"number",Be,"forceY"),this.Gk=t)}}class fi extends ei{Yk;Kk;constructor(t){super(t),this.Yk=NaN,this.Kk=NaN}get stiffness(){return this.Yk}set stiffness(t){this.Yk!==t&&(m.s(t,"number",fi,"stiffness"),this.Yk=t)}get length(){return this.Kk}set length(t){this.Kk!==t&&(m.s(t,"number",fi,"length"),this.Kk=t)}}class Zs{I;R;Q;M;A;seed;constructor(t){t===void 0&&(t=42),this.seed=t,this.A=48271,this.M=2147483647,this.Q=this.M/this.A,this.R=this.M%this.A,this.I=1/this.M,this.random()}random(){let t=this.seed/this.Q,e=this.seed%this.Q,i=this.A*e-this.R*t;return i>0?this.seed=i:this.seed=i+this.M,this.seed*this.I}}var ns=(x=>(x[x.DepthFirst=0]="DepthFirst",x[x.Greedy=1]="Greedy",x[x.FromLayers=2]="FromLayers",x))(ns||{}),os=(x=>(x[x.OptimalLinkLength=10]="OptimalLinkLength",x[x.LongestPathSink=11]="LongestPathSink",x[x.LongestPathSource=12]="LongestPathSource",x))(os||{}),rs=(x=>(x[x.DepthFirstOut=20]="DepthFirstOut",x[x.DepthFirstIn=21]="DepthFirstIn",x[x.Naive=22]="Naive",x))(rs||{}),as=(x=>(x[x.None=30]="None",x[x.Less=31]="Less",x[x.More=32]="More",x))(as||{}),Qs=(x=>(x[x.None=0]="None",x[x.Expand=1]="Expand",x[x.Straighten=2]="Straighten",x[x.Median=4]="Median",x[x.MaybeExpand=8]="MaybeExpand",x[x.All=15]="All",x))(Qs||{}),_s=(x=>(x[x.None=0]="None",x[x.UpperLeft=1]="UpperLeft",x[x.UpperRight=2]="UpperRight",x[x.LowerLeft=4]="LowerLeft",x[x.LowerRight=8]="LowerRight",x[x.All=15]="All",x))(_s||{});class Ce extends ee{Vs;ti;P;cu;fu;uu;gc;du;hr;gu;Vn;_;xw;zt;Hg;Bs;ie;zs;ms;ps;Rt;qg;jg;Hk;fn;mu;cr;Bn;zn;uL;Ha;constructor(t){super(),this.Vs=25,this.ti=25,this.P=0,this.cu=0,this.fu=10,this.uu=20,this.gc=4,this.du=31,this.hr=15,this.gu=10,this.Vn=!0,this._=-1,this.xw=-1,this.zt=-1,this.Hg=0,this.Bs=0,this.ie=new Int16Array(0),this.zs=new Float32Array(0),this.ms=new Float32Array(0),this.ps=new Float32Array(0),this.Rt=new Float32Array(0),this.qg=0,this.jg=new Int16Array(0),this.Hk=new Int16Array(0),this.fn=0,this.mu=null,this.cr=new P,this.Bn=[],this.Bn.length=100,this.zn=15,this.uL=0,this.Ha=!0,t&&Object.assign(this,t)}cloneProtected(t){super.cloneProtected(t),t.Vs=this.Vs,t.ti=this.ti,t.P=this.P,t.cu=this.cu,t.fu=this.fu,t.uu=this.uu,t.gc=this.gc,t.du=this.du,t.hr=this.hr,t.gu=this.gu,t.Vn=this.Vn,t.zn=this.zn,t.Ha=this.Ha}fe(t){t in as?this.aggressiveOption=t:t in ns?this.cycleRemoveOption=t:t in rs?this.initializeOption=t:t in os?this.layeringOption=t:super.fe(t)}createNetwork(){return new tn(this)}doLayout(t){this.network===null&&(this.network=this.makeNetwork(t)),this.arrangementOrigin=this.initialOrigin(this.arrangementOrigin),this.M3(),this.network.vertexes.count>0&&(this.network.deleteSelfEdges(),this.cycleRemoveOption!==2&&this.removeCycles(),this.C3(),this.cycleRemoveOption===2&&this.removeCycles(),this.N3(),this.L3(),this.A3(),this.reduceCrossings(),this.straightenAndPack(),this.updateParts()),this.network=null,this.isValidLayout=!0}linkMinLength(t){return 1}linkLengthWeight(t){return 1}linkStraightenWeight(t){let e=t.fromVertex.node||t.fromVertex.data,i=t.toVertex.node||t.toVertex.data;return e===null&&i===null?8:e===null||i===null?4:1}nodeMinLayerSpace(t,e){return t.node===null&&t.data===null?0:this.P===90||this.P===270?e?t.focus.y+10:t.bounds.height-t.focus.y+10:e?t.focus.x+10:t.bounds.width-t.focus.x+10}nodeMinColumnSpace(t,e){if(t.node===null&&t.data===null)return 0;let i=e?t.qk:t.jk;if(i!==null)return i;let s=this.P;return s===90||s===270?e?t.qk=t.focus.x/this.ti+1|0:t.jk=(t.bounds.width-t.focus.x)/this.ti+1|0:e?t.qk=t.focus.y/this.ti+1|0:t.jk=(t.bounds.height-t.focus.y)/this.ti+1|0}ei(){let t=this.network.vertexes.count;this.jg.length<t*2&&(this.jg=new Int16Array(t*2));let e=0,i=this.network.vertexes.iterator;for(;i.next();){let s=i.value;this.jg[e]=s.column,e++,this.jg[e]=s.index,e++}return this.jg}ns(t){let e=0,i=this.network.vertexes.iterator;for(;i.next();){let s=i.value;s.column=t[e],e++,s.index=t[e],e++}}fF(t,e){let i=this.qa(t),s=this.ie[t];this.Hk.length<s*s&&(this.Hk=new Int16Array(s*s));let n=this.Hk;for(let o=0;o<s;o++){let r=0,a=i[o],h=a.near,l=0;h!==null&&h!==a&&h.layer===a.layer&&(r+=Math.max(0,Math.abs(h.index-a.index)-1));let u,c=0,d,f=0,p=0,g=0,y,b=0,v,w=0,k=0,S=0,N;if(e>=0){for(u=i[o].So,c=0;c<u.length;c++)if(d=u[c],d.valid&&d.fromVertex.layer!==t)for(f=d.fromVertex.index,p=d.portToPos,g=d.portFromPos,b=c+1;b<u.length;b++)v=u[b],v.valid&&v.fromVertex.layer!==t&&(w=v.fromVertex.index,k=v.portToPos,S=v.portFromPos,p<k&&(f>w||f===w&&g>S)&&r++,k<p&&(w>f||w===f&&S>g)&&r++)}if(e<=0){for(u=i[o].or,c=0;c<u.length;c++)if(d=u[c],d.valid&&d.toVertex.layer!==t)for(f=d.toVertex.index,p=d.portToPos,g=d.portFromPos,b=c+1;b<u.length;b++)v=u[b],v.valid&&v.toVertex.layer!==t&&(w=v.toVertex.index,k=v.portToPos,S=v.portFromPos,g<S&&(f>w||f===w&&p>k)&&r++,S<g&&(w>f||w===f&&k>p)&&r++)}for(n[o*s+o]=r,l=o+1;l<s;l++){let D=0,L=0;if(e>=0){for(y=i[o].So,N=i[l].So,c=0;c<y.length;c++)if(d=y[c],d.valid&&d.fromVertex.layer!==t)for(f=d.fromVertex.index,p=d.portToPos,g=d.portFromPos,b=0;b<N.length;b++)v=N[b],v.valid&&v.fromVertex.layer!==t&&(w=v.fromVertex.index,k=v.portToPos,S=v.portFromPos,(f<w||f===w&&g<S)&&L++,(w<f||w===f&&S<g)&&D++)}if(e<=0){for(y=i[o].or,N=i[l].or,c=0;c<y.length;c++)if(d=y[c],d.valid&&d.toVertex.layer!==t)for(f=d.toVertex.index,p=d.portToPos,g=d.portFromPos,b=0;b<N.length;b++)v=N[b],v.valid&&v.toVertex.layer!==t&&(w=v.toVertex.index,k=v.portToPos,S=v.portFromPos,(f<w||f===w&&p<k)&&L++,(w<f||w===f&&k<p)&&D++)}n[o*s+l]=D,n[l*s+o]=L}}return this.ja(t,i),n}countCrossings(){let t=0;for(let e=0;e<=this._;e++){let i=this.fF(e,1),s=this.ie[e];for(let n=0;n<s;n++)for(let o=n;o<s;o++)t+=i[n*s+o]}return t}T3(t,e,i){let s=this.qa(t),n=this.ie[t],o=0;for(let r=0;r<n;r++){let a=null;e<=0&&(a=s[r].So);let h=null;e>=0&&(h=s[r].or);let l,u=0,c=0;if(a!==null)for(let d=0;d<a.length;d++)l=a[d],l.valid&&l.fromVertex.layer!==t&&(u=l.fromVertex.column+l.portFromColOffset,c=l.toVertex.column+l.portToColOffset,i?o+=Math.abs(u-c)*this.linkStraightenWeight(l):o+=Math.abs(u-c));if(h!==null)for(let d=0;d<h.length;d++)l=h[d],l.valid&&l.toVertex.layer!==t&&(u=l.fromVertex.column+l.portFromColOffset,c=l.toVertex.column+l.portToColOffset,i?o+=(Math.abs(u-c)+1)*this.linkStraightenWeight(l):o+=Math.abs(u-c))}return this.ja(t,s),o}Wk(t){let e=0;for(let i=0;i<=this._;i++)e+=this.T3(i,1,t);return e}bw(){let t=1/0;this.zt=-1;let e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;t=Math.min(t,i.column-this.nodeMinColumnSpace(i,!0)),this.zt=Math.max(this.zt,i.column+this.nodeMinColumnSpace(i,!1))}for(e.reset();e.next();){let i=e.value;i.column-=t}this.zt-=t}kw(t,e){let i=this.qa(t),s=this.ie[t],n=new Float32Array(s);for(let o=0;o<s;o++){let r=i[o],a=null;e<=0&&(a=r.So);let h=null;e>=0&&(h=r.or);let l=0,u=0,c=r.near;c!==null&&c.layer===r.layer&&(l+=c.column-1,u++);let d;if(a!==null)for(let f=0;f<a.length;f++){d=a[f];let p=d.fromVertex;d.valid&&!d.rev&&p.layer!==t&&(l+=p.column,u++)}if(h!==null)for(let f=0;f<h.length;f++){d=h[f];let p=d.toVertex;d.valid&&!d.rev&&p.layer!==t&&(l+=p.column,u++)}u===0?n[o]=-1:n[o]=l/u}return this.ja(t,i),n}uF(t,e){let i=this.qa(t),s=this.ie[t],n=new Int16Array(s);for(let o=0;o<s;o++){let r=i[o],a=null;e<=0&&(a=r.So);let h=null;e>=0&&(h=r.or);let l=0,u=[],c=r.near;c!==null&&c.layer===r.layer&&(u[l]=c.column-1,l++);let d;if(a!==null)for(let f=0;f<a.length;f++){d=a[f];let p=d.fromVertex;d.valid&&!d.rev&&p.layer!==t&&(u[l]=p.column+d.portFromColOffset,l++)}if(h!==null)for(let f=0;f<h.length;f++){d=h[f];let p=d.toVertex;d.valid&&!d.rev&&p.layer!==t&&(u[l]=p.column+d.portToColOffset,l++)}if(l===0)n[o]=-1;else{u.sort((p,g)=>p-g);let f=l>>1;(l&1)!==0?n[o]=u[f]:n[o]=u[f-1]+u[f]>>1}}return this.ja(t,i),n}Pw(t,e,i,s,n){if(t.component===i){t.component=e;let o=0,r=0;if(s){let a=t.destinationEdges;for(;a.next();){let h=a.value,l=h.toVertex;o=t.layer-l.layer,r=this.linkMinLength(h),o===r&&this.Pw(l,e,i,s,n)}}if(n){let a=t.sourceEdges;for(;a.next();){let h=a.value,l=h.fromVertex;o=l.layer-t.layer,r=this.linkMinLength(h),o===r&&this.Pw(l,e,i,s,n)}}}}dL(t,e,i,s,n){if(t.component===i){if(t.component=e,s){let o=t.destinationEdges;for(;o.next();){let r=o.value.toVertex;this.dL(r,e,i,s,n)}}if(n){let o=t.sourceEdges;for(;o.next();){let r=o.value.fromVertex;this.dL(r,e,i,s,n)}}}}removeCycles(){let t=this.network.edges.iterator;for(;t.next();){let e=t.value;e.rev=!1}switch(this.cu){default:case 1:this.D3();break;case 0:this.v3();break;case 2:this.F3();break}}F3(){let t=this.network,e=t.vertexes.iterator,i=1/0;for(;e.next();){let s=e.value;i=Math.min(i,s.layer)}if(i<1/0){if(i<0)for(e.reset();e.next();){let r=e.value;r.layer-=i}let s=[];for(e.reset();e.next();){let r=e.value,a=s[r.layer];a===void 0?s[r.layer]=[r]:a.push(r)}let n=0;for(let r=0;r<s.length;r++){let a=s[r];if(!a||a.length===0)n++;else if(r>0)for(let h=0;h<a.length;h++){let l=a[h];l.layer-=n}}let o=t.edges.iterator;for(;o.next();){let r=o.value,a=r.fromVertex,h=r.toVertex;a.layer<h.layer&&(t.reverseEdge(r),r.rev=!0)}}}D3(){let t=this.network,e=0,i=t.vertexes.count-1,s=[];s.length=i+1;let n=t.vertexes.iterator;for(;n.next();){let r=n.value;r.ii=!0}for(;this.R3(t)!==null;){let r;for(r=this.dF(t);r!==null;)s[i]=r,i--,r.ii=!1,r=this.dF(t);for(r=this.gF(t);r!==null;)s[e]=r,e++,r.ii=!1,r=this.gF(t);r=this.O3(t),r!==null&&(s[e]=r,e++,r.ii=!1)}for(let r=0;r<t.vertexes.count;r++)s[r].index=r;let o=t.edges.iterator;for(;o.next();){let r=o.value,a=r.fromVertex,h=r.toVertex;a.index>h.index&&(t.reverseEdge(r),r.rev=!0)}}R3(t){let e=t.vertexes.iterator;for(;e.next();){let i=e.value;if(i.ii)return i}return null}dF(t){let e=t.vertexes.iterator;for(;e.next();){let i=e.value;if(i.ii){let s=!0,n=i.destinationEdges;for(;n.next();)if(n.value.toVertex.ii){s=!1;break}if(s)return i}}return null}gF(t){let e=t.vertexes.iterator;for(;e.next();){let i=e.value;if(i.ii){let s=!0,n=i.sourceEdges;for(;n.next();)if(n.value.fromVertex.ii){s=!1;break}if(s)return i}}return null}O3(t){let e=null,i=0,s=this.network.vertexes.iterator;for(;s.next();){let n=s.value;if(n.ii){let o=0,r=n.destinationEdges;for(;r.next();)r.value.toVertex.ii&&o++;let a=0,h=n.sourceEdges;for(;h.next();)h.value.fromVertex.ii&&a++;(e===null||i<o-a)&&(e=n,i=o-a)}}return e}v3(){let t=this.network.vertexes.iterator;for(;t.next();){let i=t.value;i.pu=-1,i.Qn=-1}let e=this.network.edges.iterator;for(;e.next();){let i=e.value;i.forest=!1}for(this.qg=0,t.reset();t.next();){let i=t.value;i.sourceEdges.count===0&&this.gL(i)}for(t.reset();t.next();){let i=t.value;i.pu===-1&&this.gL(i)}for(e.reset();e.next();){let i=e.value;if(!i.forest){let s=i.fromVertex,n=s.pu,o=s.Qn,r=i.toVertex,a=r.pu,h=r.Qn;a<n&&o<h&&(this.network.reverseEdge(i),i.rev=!0)}}}gL(t){t.pu=this.qg,this.qg++;let e=t.destinationEdges;for(;e.next();){let i=e.value,s=i.toVertex;s.pu===-1&&(i.forest=!0,this.gL(s))}t.Qn=this.qg,this.qg++}C3(){let t=this.network.vertexes.iterator;for(;t.next();){let s=t.value;s.layer=-1}for(this._=-1,this.assignLayers(),t.reset();t.next();){let s=t.value;this._=Math.max(this._,s.layer)}this._>=9999&&m.o("LayeredDigraphLayout, too many layers: "+this._);let e=this.direction==0||this.direction==180,i=[];for(let s=this.network.vertexes.iterator;s.next();){let n=s.value;if(n.node===null||n.centered)continue;let o=n.layer,r=i[o];r===void 0&&(r=0);let a=e?n.width:n.height;a>r&&(i[o]=a)}for(let s=this.network.vertexes.iterator;s.next();){let n=s.value;if(n.node===null||n.centered)continue;let o=i[n.layer];e?(n.focusX=o/2,n.focusY=n.focus.y,n.width=o):(n.focusX=n.focus.x,n.focusY=o/2,n.height=o)}}assignLayers(){switch(this.fu){case 11:this.mF();break;case 12:this.I3();break;default:case 10:this.E3();break}}mF(){let t=this.network.vertexes.iterator;for(;t.next();){let e=t.value,i=this.pF(e);this._=Math.max(i,this._)}}pF(t){let e=0;if(t.layer===-1){let i=t.destinationEdges;for(;i.next();){let s=i.value,n=s.toVertex,o=this.linkMinLength(s);e=Math.max(e,this.pF(n)+o)}t.layer=e}else e=t.layer;return e}I3(){let t=0,e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;t=this.yF(i),this._=Math.max(t,this._)}for(e.reset();e.next();){let i=e.value;i.layer=this._-i.layer}}yF(t){let e=0;if(t.layer===-1){let i=t.sourceEdges;for(;i.next();){let s=i.value,n=s.fromVertex,o=this.linkMinLength(s);e=Math.max(e,this.yF(n)+o)}t.layer=e}else e=t.layer;return e}E3(){this.mF();let t=this.network.vertexes.iterator;for(;t.next();){let i=t.value;i.ii=!1}for(t.reset();t.next();){let i=t.value;i.sourceEdges.count===0&&this.wF(i)}let e=1/0;for(t.reset();t.next();){let i=t.value;e=Math.min(e,i.layer)}for(this._=-1,t.reset();t.next();){let i=t.value;i.layer-=e,this._=Math.max(this._,i.layer)}}wF(t){if(!t.ii){t.ii=!0;let e=t.destinationEdges;for(;e.next();){let i=e.value.toVertex;this.wF(i)}this.U3(t),this.V3(t)}}U3(t){let e=this.network.vertexes.iterator;for(;e.next();){let r=e.value;r.component=-1}let i=0,s=1,n=t.So,o=n.length;for(let r=0;r<o;r++){let a=n[r],h=a.fromVertex,l=a.toVertex,u=this.linkMinLength(a);h.layer-l.layer>u&&this.Pw(h,i,-1,!0,!1)}for(this.Pw(t,s,-1,!0,!0);t.component!==i;){let r=0,a=1/0,h=0,l=null,u=this.network.vertexes.iterator;for(;u.next();){let c=u.value;if(c.component===s){let d=0,f=!1,p=c.So;o=p.length;for(let y=0;y<o;y++){let b=p[y],v=b.fromVertex;if(d+=this.linkLengthWeight(b),v.component!==s){r+=this.linkLengthWeight(b);let w=v.layer-c.layer,k=this.linkMinLength(b);a=Math.min(a,w-k)}}let g=c.or;o=g.length;for(let y=0;y<o;y++){let b=g[y],v=b.toVertex;d-=this.linkLengthWeight(b),v.component!==s?r-=this.linkLengthWeight(b):f=!0}(l===null||d<h)&&!f&&(l=c,h=d)}}if(r>0){for(e.reset();e.next();){let c=e.value;c.component===s&&(c.layer+=a)}t.component=i}else l.component=i}}V3(t){let e=this.network.vertexes.iterator;for(;e.next();){let n=e.value;n.component=-1}let i=0,s=1;for(this.Pw(t,s,-1,!0,!1);t.component!==i;){let n=0,o=1/0,r=0,a=null,h=this.network.vertexes.iterator;for(;h.next();){let l=h.value;if(l.component===s){let u=0,c=!1,d=l.So,f=d.length;for(let g=0;g<f;g++){let y=d[g],b=y.fromVertex;u+=this.linkLengthWeight(y),b.component!==s?n+=this.linkLengthWeight(y):c=!0}let p=l.or;f=p.length;for(let g=0;g<f;g++){let y=p[g],b=y.toVertex;if(u-=this.linkLengthWeight(y),b.component!==s){n-=this.linkLengthWeight(y);let v=l.layer-b.layer,w=this.linkMinLength(y);o=Math.min(o,v-w)}}(a===null||u>r)&&!c&&(a=l,r=u)}}if(n<0){for(e.reset();e.next();){let l=e.value;l.component===s&&(l.layer-=o)}t.component=i}else a.component=i}}N3(){let t=this.network,e=[],i=t.edges.iterator;for(;i.next();){let s=i.value;s.valid=!1,e.push(s)}for(let s=0;s<e.length;s++){let n=e[s],o=n.fromVertex,r=n.toVertex;if(n.valid||(o.node===null&&o.data===null||r.node===null&&r.data===null)&&o.layer===r.layer)continue;let a=0,h=0,l=0,u=0;if(n.link!==null){let S=n.link;if(S===null)continue;let N=o.node,D=r.node;if(N===null||D===null)continue;let L=S.fromNode,M=S.toNode,A=S.fromPort;for(;A!==null&&!A.isVisibleObject();)A=A.panel;let F=S.toPort;for(;F!==null&&!F.isVisibleObject();)F=F.panel;if(n.rev){let tt=L,st=A;L=M,A=F,M=tt,F=st}let O=o.focus,E=r.focus,B=n.rev?r.bounds:o.bounds,X=P.l();N!==L?B.isReal()&&L.isVisible()?L.actualBounds.isReal()?(L.getRelativePoint(A,T.Center,X),X.x+=L.actualBounds.x-B.x,X.y+=L.actualBounds.y-B.y):(L.getRelativePoint(A,T.Center,X),X.isReal()||X.h(O)):X.h(O):B.isReal()?(L.getRelativePoint(A,T.Center,X),X.isReal()||X.h(O)):X.h(O);let z=n.rev?o.bounds:r.bounds,U=P.l();D!==M?z.isReal()&&M.isVisible()?M.actualBounds.isReal()?(M.getRelativePoint(F,T.Center,U),U.x+=M.actualBounds.x-z.x,U.y+=M.actualBounds.y-z.y):(M.getRelativePoint(F,T.Center,U),U.isReal()||U.h(E)):U.h(E):z.isReal()?(M.getRelativePoint(F,T.Center,U),U.isReal()||U.h(E)):U.h(E),this.P===90||this.P===270?(a=Math.round((X.x-O.x)/this.ti),l=X.x,h=Math.round((U.x-E.x)/this.ti),u=U.x):(a=Math.round((X.y-O.y)/this.ti),l=X.y,h=Math.round((U.y-E.y)/this.ti),u=U.y),P.i(X),P.i(U),n.portFromColOffset=a,n.portFromPos=l,n.portToColOffset=h,n.portToPos=u}else n.portFromColOffset=0,n.portFromPos=0,n.portToColOffset=0,n.portToPos=0;let c=o.layer,d=r.layer,f=this.B3(n),p=f===1||f===3,g=f===2||f===3,y,b,v=null,w;g&&(v=this.z3(o,r),w=1,b=t.createVertex(),b.node=null,b.Jk=1,b.layer=c,b.near=o,t.addVertex(b),y=t.linkVertexes(o,b,n.link),y.valid=!1,y.rev=n.rev,y.portFromColOffset=a,y.portToColOffset=0,y.portFromPos=l,y.portToPos=0,o=b);let k=1;if(p&&k--,c-d>k&&c>0){for(n.valid=!1,b=t.createVertex(),b.node=null,b.Jk=2,b.layer=c-1,v&&w<v.length&&b.layer===v[w].layer&&(b.near=v[w++]),t.addVertex(b),y=t.linkVertexes(o,b,n.link),y.valid=!0,y.rev=n.rev,y.portFromColOffset=g?0:a,y.portToColOffset=0,y.portFromPos=g?0:l,y.portToPos=0,o=b,c--;c-d>k&&c>0;)b=t.createVertex(),b.node=null,b.Jk=3,b.layer=c-1,v&&w<v.length&&b.layer===v[w].layer&&(b.near=v[w++]),t.addVertex(b),y=t.linkVertexes(o,b,n.link),y.valid=!0,y.rev=n.rev,y.portFromColOffset=0,y.portToColOffset=0,y.portFromPos=0,y.portToPos=0,o=b,c--;y=t.linkVertexes(b,r,n.link),y.valid=!p,p&&(b.near=r),y.rev=n.rev,y.portFromColOffset=0,y.portToColOffset=h,y.portFromPos=0,y.portToPos=u}else n.valid=!0}}B3(t){let e=0,i=t.link;if(i!==null){let s=i.fromPort,n=i.toPort;if(s!==null&&n!==null){let o=i.fromNode,r=i.toNode;if(o!==null&&r!==null){let a=this.$k(!0),h=this.$k(!1),l=this.setsPortSpots?a:i.computeSpot(!0,s),u=this.setsPortSpots?h:i.computeSpot(!1,n),c=i.isOrthogonal;if(l.isSide()&&l.includesSide(h)&&u.isSide()&&u.includesSide(a))return 0;let d=i.getLinkPoint(o,s,l,!0,c,r,n,P.l()),f=i.getLinkDirection(o,s,d,l,!0,c,r,n);P.i(d),(!l.isNone()&&f===this.xF(t,!0)||this.setsPortSpots&&o!==null&&o.ports.count===1&&t.rev)&&(e+=1);let p=i.getLinkPoint(r,n,u,!1,c,o,s,P.l()),g=i.getLinkDirection(r,n,p,u,!1,c,o,s);P.i(p),(!u.isNone()&&g===this.xF(t,!1)||this.setsPortSpots&&r!==null&&r.ports.count===1&&t.rev)&&(e+=2)}}}return e}xF(t,e){return this.P===90?e&&!t.rev||!e&&t.rev?270:90:this.P===180?e&&!t.rev||!e&&t.rev?0:180:this.P===270?e&&!t.rev||!e&&t.rev?90:270:e&&!t.rev||!e&&t.rev?180:0}z3(t,e){let i=[];return i.push(e),this.bF(t,i)?i.reverse():[]}bF(t,e){let i=e[e.length-1].sourceEdges.iterator;for(;i.next();){let s=i.value;if(s.rev||!s.valid)continue;let n=s.fromVertex;if(e.push(n),n===t||this.bF(t,e))return!0;e.pop()}return!1}L3(){this.ie.length!==this._+1&&(this.ie=new Int16Array(this._+1));let t=this.ie;for(let i=0;i<=this._;i++)t[i]=0;let e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;i.index=-1}this.initializeIndices(),this.xw=-1,this.Hg=0,this.Bs=0;for(let i=0;i<=this._;i++)t[i]>t[this.Bs]&&(this.xw=t[i]-1,this.Bs=i),t[i]<t[this.Hg]&&(this.Hg=i);this.mu=[];for(let i=0;i<t.length;i++)this.mu[i]=[];for(e.reset();e.next();){let i=e.value,s=i.layer,n=this.mu[s];n[i.index]=i}}initializeIndices(){switch(this.uu){default:case 22:this.X3();break;case 20:this.G3();break;case 21:this.Y3();break}}X3(){let t=null,e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;if(i.near&&(t===null&&(t=new Map),i.layer===i.near.layer)){let s=t.get(i.near)||[];s.push(i),t.set(i.near,s)}}for(e.reset();e.next();){let i=e.value;if(i.near)continue;let s=i.layer;if(i.index=this.ie[s],this.ie[s]++,!t)continue;let n=t.get(i);Array.isArray(n)&&n.forEach(o=>{o.index=this.ie[s],this.ie[s]++})}}G3(){let t=null,e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;if(i.near&&(t===null&&(t=new Map),i.layer===i.near.layer)){let s=t.get(i.near)||[];s.push(i),t.set(i.near,s)}}for(let i=this._;i>=0;i--)for(e.reset();e.next();){let s=e.value;s.layer===i&&s.index===-1&&this.kF(s,t)}}kF(t,e){if(t.near)return;let i=t.layer;if(t.index=this.ie[i],this.ie[i]++,e){let o=e.get(t);Array.isArray(o)&&o.forEach(r=>{r.index=this.ie[i],this.ie[i]++})}let s=t.or,n=!0;for(;n;){n=!1;for(let o=0;o<s.length-1;o++){let r=s[o],a=s[o+1];r.portFromColOffset>a.portFromColOffset&&(n=!0,s[o]=a,s[o+1]=r)}}for(let o=0;o<s.length;o++){let r=s[o];if(r.valid){let a=r.toVertex;a.index===-1&&this.kF(a,e)}}}Y3(){let t=null,e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;if(i.near&&(t===null&&(t=new Map),i.layer===i.near.layer)){let s=t.get(i.near)||[];s.push(i),t.set(i.near,s)}}for(let i=0;i<=this._;i++)for(e.reset();e.next();){let s=e.value;s.layer===i&&s.index===-1&&this.PF(s,t)}}PF(t,e){if(t.near)return;let i=t.layer;if(t.index=this.ie[i],this.ie[i]++,e){let h=e.get(t);Array.isArray(h)&&h.forEach(l=>{l.index=this.ie[i],this.ie[i]++})}let s=t.So,n=!0,o=0;for(;n;)for(n=!1,o=0;o<s.length-1;o++){let h=s[o],l=s[o+1];h.portToColOffset>l.portToColOffset&&(n=!0,s[o]=l,s[o+1]=h)}let r,a;for(o=0;o<s.length;o++)a=s[o],a.valid&&(r=a.fromVertex,r.index===-1&&this.PF(r,e))}A3(){this.zt=-1;for(let t=0;t<=this._;t++){let e=this.qa(t),i=0,s=this.ie[t];for(let n=0;n<s;n++){let o=e[n];i+=this.nodeMinColumnSpace(o,!0),o.column=i,i+=1,i+=this.nodeMinColumnSpace(o,!1)}this.zt=Math.max(this.zt,i-1),this.ja(t,e)}}reduceCrossings(){let t=this.countCrossings(),e=this.ei(),i=0,s=0,n=0;for(i=0;i<this.gc;i++){for(s=0;s<=this._;s++)this.Zk(s,1),this.ys(s,1,!1,1);for(n=this.countCrossings(),n<t&&(t=n,e=this.ei()),s=this._;s>=0;s--)this.Zk(s,-1),this.ys(s,-1,!1,-1);n=this.countCrossings(),n<t&&(t=n,e=this.ei())}for(this.ns(e),i=0;i<this.gc;i++){for(s=0;s<=this._;s++)this.Zk(s,0),this.ys(s,0,!1,0);for(n=this.countCrossings(),n<t&&(t=n,e=this.ei()),s=this._;s>=0;s--)this.Zk(s,0),this.ys(s,0,!1,0);n=this.countCrossings(),n<t&&(t=n,e=this.ei())}this.ns(e);let o=!1,r=0,a=0,h=0,l=0;switch(this.du){case 30:break;case 32:for(h=t+1;(l=this.countCrossings())<h;)for(h=l,r=this._;r>=0;r--)for(a=0;a<=r;a++){for(o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,-1,!1,-1)||o;for(n=this.countCrossings(),n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,1,!1,1)||o;for(n=this.countCrossings(),n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,1,!1,1)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,-1,!1,-1)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,0,!1,0)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,0,!1,0)||o;n>=t?this.ns(e):(t=n,e=this.ei())}break;default:case 31:for(r=this._,a=0,h=t+1;(l=this.countCrossings())<h;){for(h=l,o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,-1,!1,-1)||o;for(n=this.countCrossings(),n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,1,!1,1)||o;for(n=this.countCrossings(),n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,1,!1,1)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,-1,!1,-1)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,0,!1,0)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,0,!1,0)||o;n>=t?this.ns(e):(t=n,e=this.ei())}break}this.ns(e)}Zk(t,e){let i=0,s=!1,n=this.qa(t),o=this.ie[t],r=this.uF(t,e),a=this.kw(t,e);for(i=0;i<o;i++)a[i]===-1&&(a[i]=n[i].column),r[i]===-1&&(r[i]=n[i].column);let h=!0,l;for(;h;)for(h=!1,i=0;i<o-1;i++)if(r[i+1]<r[i]||r[i+1]===r[i]&&a[i+1]<a[i]){s=!0,h=!0;let c=r[i];r[i]=r[i+1],r[i+1]=c;let d=a[i];a[i]=a[i+1],a[i+1]=d,l=n[i],n[i]=n[i+1],n[i+1]=l}let u=0;for(i=0;i<o;i++)l=n[i],l.index=i,u+=this.nodeMinColumnSpace(l,!0),l.column=u,u+=1,u+=this.nodeMinColumnSpace(l,!1);return this.ja(t,n),s}ys(t,e,i,s){let n=this.qa(t),o=this.ie[t],r=this.fF(t,e),a=0,h;if(!i||s>0)for(h=new Float32Array(o),a=0;a<o;a++)h[a]=-1;else h=this.kw(t,-1);let l;if(!i||s<0)for(l=new Float32Array(o),a=0;a<o;a++)l[a]=-1;else l=this.kw(t,1);let u=!1,c=!0;for(;c;)for(c=!1,a=0;a<o-1;a++){let d=r[n[a].index*o+n[a+1].index],f=r[n[a+1].index*o+n[a].index],p=0,g=0,y=n[a].column,b=n[a+1].column,v=this.nodeMinColumnSpace(n[a],!0),w=this.nodeMinColumnSpace(n[a],!1),k=this.nodeMinColumnSpace(n[a+1],!0),S=this.nodeMinColumnSpace(n[a+1],!1),N=y-v+k,D=b-w+S,L=0,M=0,A=0,F=0,O=0,E=0,B=0,X,z=0,U,tt=0,st=n[a].sourceEdges.iterator;if(i&&s<=0)for(;st.next();){let bt=st.value;X=bt.fromVertex,bt.valid&&X.layer!==t&&(A=this.linkStraightenWeight(bt),F=bt.portFromColOffset,O=bt.portToColOffset,E=X.column,L+=(Math.abs(y+O-(E+F))+1)*A,M+=(Math.abs(D+O-(E+F))+1)*A)}for(st.reset();st.next();){let bt=st.value;if(X=bt.fromVertex,bt.valid&&X.layer===t){for(z=0;z<n.length&&n[z]!==X;)z++;z<a&&(p+=2*(a-z),g+=2*(a+1-z)),z===a+1&&(p+=1),z>a+1&&(p+=4*(z-a),g+=4*(z-(a+1)))}}let Z=n[a].destinationEdges.iterator;if(i&&s>=0)for(;Z.next();){let bt=Z.value;U=bt.toVertex,bt.valid&&U.layer!==t&&(A=this.linkStraightenWeight(bt),F=bt.portFromColOffset,O=bt.portToColOffset,B=U.column,L+=(Math.abs(y+F-(B+O))+1)*A,M+=(Math.abs(D+F-(B+O))+1)*A)}for(Z.reset();Z.next();){let bt=Z.value;if(U=bt.toVertex,bt.valid&&U.layer===t){for(tt=0;tt<n.length&&n[tt]!==U;)tt++;tt===a+1&&(g+=1)}}let et=n[a+1].sourceEdges.iterator;if(i&&s<=0)for(;et.next();){let bt=et.value;X=bt.fromVertex,bt.valid&&X.layer!==t&&(A=this.linkStraightenWeight(bt),F=bt.portFromColOffset,O=bt.portToColOffset,E=X.column,L+=(Math.abs(b+O-(E+F))+1)*A,M+=(Math.abs(N+O-(E+F))+1)*A)}for(et.reset();et.next();){let bt=et.value;if(X=bt.fromVertex,bt.valid&&X.layer===t){for(z=0;z<n.length&&n[z]!==X;)z++;z<a&&(p+=2*(a+1-z),g+=2*(a-z)),z===a&&(g+=1),z>a+1&&(p+=4*(z-(a+1)),g+=4*(z-a))}}let Q=n[a+1].destinationEdges.iterator;if(i&&s>=0)for(;Q.next();){let bt=Q.value;U=bt.toVertex,bt.valid&&U.layer!==t&&(A=this.linkStraightenWeight(bt),F=bt.portFromColOffset,O=bt.portToColOffset,B=U.column,L+=(Math.abs(b+F-(B+O))+1)*A,M+=(Math.abs(N+F-(B+O))+1)*A)}for(Q.reset();Q.next();){let bt=Q.value;if(U=bt.toVertex,bt.valid&&U.layer===t){for(tt=0;tt<n.length&&n[tt]!==U;)tt++;tt===a&&(p+=1)}}let rt=0,ft=0,xt=h[n[a].index],Ct=l[n[a].index],_=h[n[a+1].index],St=l[n[a+1].index];if(xt!==-1&&(rt+=Math.abs(xt-y),ft+=Math.abs(xt-D)),Ct!==-1&&(rt+=Math.abs(Ct-y),ft+=Math.abs(Ct-D)),_!==-1&&(rt+=Math.abs(_-b),ft+=Math.abs(_-N)),St!==-1&&(rt+=Math.abs(St-b),ft+=Math.abs(St-N)),g<p-.5||g===p&&f<d-.5||g===p&&f===d&&M<L-.5||g===p&&f===d&&M===L&&ft<rt-.5){u=!0,c=!0,n[a].column=D,n[a+1].column=N;let bt=n[a];n[a]=n[a+1],n[a+1]=bt}}for(a=0;a<o;a++)n[a].index=a;return this.ja(t,n),u}straightenAndPack(){if(this.zn!==0){this.K3();return}let t=0,e=!1,i=(this.hr&1)!==0,s=(this.hr&8)!==0;if(this.network.edges.count>1e3&&s&&(i=!1),i){let n=[],o=0;for(o=0;o<=this._;o++)n[o]=0;let r=0,a=this.network.vertexes.iterator;for(;a.next();){let l=a.value;t=l.layer,r=l.column;let u=this.nodeMinColumnSpace(l,!1);n[t]=Math.max(n[t],r+u)}let h=8;for(a.reset();a.next();){let l=a.value;t=l.layer,r=l.column,l.column=((this.zt-n[t])*h>>1)+r*h}this.zt*=h}if((this.hr&2)!==0){e=!0;let n=0;for(;e&&n<this.gu;){for(e=!1,t=this.Bs+1;t<=this._;t++)e=this.Wg(t,1)||e;for(t=this.Bs-1;t>=0;t--)e=this.Wg(t,-1)||e;e=this.Wg(this.Bs,0)||e,n++}}if((this.hr&4)!==0){for(t=this.Bs+1;t<=this._;t++)this.mL(t,1);for(t=this.Bs-1;t>=0;t--)this.mL(t,-1);this.mL(this.Bs,0)}if(i&&(this.SF(-1),this.SF(1)),(this.hr&2)!==0){e=!0;let n=0;for(;e&&n<this.gu;){for(e=!1,e=this.Wg(this.Bs,0)||e,t=this.Bs+1;t<=this._;t++)e=this.Wg(t,0)||e;for(t=this.Bs-1;t>=0;t--)e=this.Wg(t,0)||e;n++}}}Wg(t,e){let i=!1;for(;this.H3(t,e);)i=!0;return i}H3(t,e){let i=0,s=this.qa(t),n=this.ie[t],o=this.kw(t,-1);if(e>0)for(i=0;i<n;i++)o[i]=-1;let r=this.kw(t,1);if(e<0)for(i=0;i<n;i++)r[i]=-1;let a=!1,h=!0;for(;h;)for(h=!1,i=0;i<n;i++){let l=s[i].column,u=this.nodeMinColumnSpace(s[i],!0),c=this.nodeMinColumnSpace(s[i],!1),d=0;i-1<0||l-s[i-1].column-1>u+this.nodeMinColumnSpace(s[i-1],!1)?d=l-1:d=l;let f=0;i+1>=n||s[i+1].column-l-1>c+this.nodeMinColumnSpace(s[i+1],!0)?f=l+1:f=l;let p=0,g=0,y=0,b=0,v=0,w=0;if(e<=0){let M=s[i].sourceEdges.iterator;for(;M.next();){let A=M.value,F=A.fromVertex;if(A.valid&&F.layer!==t){b=this.linkStraightenWeight(A),v=A.portFromColOffset,w=A.portToColOffset;let O=F.column;p+=(Math.abs(l+w-(O+v))+1)*b,g+=(Math.abs(d+w-(O+v))+1)*b,y+=(Math.abs(f+w-(O+v))+1)*b}}}if(e>=0){let M=s[i].destinationEdges.iterator;for(;M.next();){let A=M.value,F=A.toVertex;if(A.valid&&F.layer!==t){b=this.linkStraightenWeight(A),v=A.portFromColOffset,w=A.portToColOffset;let O=F.column;p+=(Math.abs(l+v-(O+w))+1)*b,g+=(Math.abs(d+v-(O+w))+1)*b,y+=(Math.abs(f+v-(O+w))+1)*b}}}let k=0,S=0,N=0,D=o[s[i].index],L=r[s[i].index];D!==-1&&(k+=Math.abs(D-l),S+=Math.abs(D-d),N+=Math.abs(D-f)),L!==-1&&(k+=Math.abs(L-l),S+=Math.abs(L-d),N+=Math.abs(L-f)),g<p||g===p&&S<k?(a=!0,h=!0,s[i].column=d):(y<p||y===p&&N<k)&&(a=!0,h=!0,s[i].column=f)}return this.ja(t,s),this.bw(),a}mL(t,e){let i=0,s=this.qa(t),n=this.ie[t],o=this.uF(t,e),r=new Int16Array(o),a=!1,h=!0;for(;h;)for(h=!1,i=0;i<n;i++){let l=s[i].column,u=this.nodeMinColumnSpace(s[i],!0),c=this.nodeMinColumnSpace(s[i],!1),d=0,f=0,p=0,g=0,y=0;r[i]===-1?i===0&&i===n-1?d=l:i===0?(f=s[i+1].column,f-l===c+this.nodeMinColumnSpace(s[i+1],!0)?d=l-1:d=l):i===n-1?(p=s[i-1].column,l-p===u+this.nodeMinColumnSpace(s[i-1],!1)?d=l+1:d=l):(p=s[i-1].column,y=p+this.nodeMinColumnSpace(s[i-1],!1)+u+1,f=s[i+1].column,g=f-this.nodeMinColumnSpace(s[i+1],!0)-c-1,d=(y+g)/2|0):i===0&&i===n-1?d=r[i]:i===0?(f=s[i+1].column,g=f-this.nodeMinColumnSpace(s[i+1],!0)-c-1,d=Math.min(r[i],g)):i===n-1?(p=s[i-1].column,y=p+this.nodeMinColumnSpace(s[i-1],!1)+u+1,d=Math.max(r[i],y)):(p=s[i-1].column,y=p+this.nodeMinColumnSpace(s[i-1],!1)+u+1,f=s[i+1].column,g=f-this.nodeMinColumnSpace(s[i+1],!0)-c-1,y<r[i]&&r[i]<g?d=r[i]:y>=r[i]?d=y:g<=r[i]&&(d=g)),d!==l&&(a=!0,h=!0,s[i].column=d)}return this.ja(t,s),this.bw(),a}q3(){for(let t=0;t<=this.zt;t++)for(;this.j3(t,1););this.bw()}j3(t,e){let i=!0,s=this.network.vertexes.iterator;for(;s.next();){let o=s.value,r=this.nodeMinColumnSpace(o,!0),a=this.nodeMinColumnSpace(o,!1);if(o.column-r<=t&&o.column+a>=t){i=!1;break}}let n=!1;if(i){if(e>0)for(s.reset();s.next();){let o=s.value;o.column>t&&(o.column-=1,n=!0)}if(e<0)for(s.reset();s.next();){let o=s.value;o.column<t&&(o.column+=1,n=!0)}}return n}W3(){this.q3();for(let t=0;t<this.zt;t++)for(;this.J3(t,1););this.bw()}J3(t,e){let i=t;e>0&&(i=t+1),e<0&&(i=t-1);let s=0,n=[],o=[];for(s=0;s<=this._;s++)n[s]=!1,o[s]=!1;let r=this.network.vertexes.iterator;for(;r.next();){let l=r.value,u=l.column-this.nodeMinColumnSpace(l,!0),c=l.column+this.nodeMinColumnSpace(l,!1);u<=t&&c>=t&&(n[l.layer]=!0),u<=i&&c>=i&&(o[l.layer]=!0)}let a=!0,h=!1;for(s=0;s<=this._;s++)a=a&&!(n[s]&&o[s]);if(a){if(e>0)for(r.reset();r.next();){let l=r.value;l.column>t&&(l.column-=1,h=!0)}if(e<0)for(r.reset();r.next();){let l=r.value;l.column<t&&(l.column+=1,h=!0)}}return h}SF(t){this.W3();let e=0,i,s=0,n=0,o=0;if(t>0)for(e=0;e<=this.zt;e++)for(i=this.ei(),s=this.Wk(!0),n=s+1;s<n;)n=s,this.MF(e,1),o=this.Wk(!0),o>s?this.ns(i):o<s&&(s=o,i=this.ei());if(t<0)for(e=this.zt;e>=0;e--)for(i=this.ei(),s=this.Wk(!0),n=s+1;s<n;)n=s,this.MF(e,-1),o=this.Wk(!0),o>s?this.ns(i):o<s&&(s=o,i=this.ei());this.bw()}MF(t,e){this.fn=0;let i=this.network.vertexes.iterator;for(;i.next();){let u=i.value;u.component=-1}if(e>0)for(i.reset();i.next();){let u=i.value;u.column-this.nodeMinColumnSpace(u,!0)<=t&&(u.component=this.fn)}if(e<0)for(i.reset();i.next();){let u=i.value;u.column+this.nodeMinColumnSpace(u,!1)>=t&&(u.component=this.fn)}for(this.fn++,i.reset();i.next();){let u=i.value;u.component===-1&&(this.dL(u,this.fn,-1,!0,!0),this.fn++)}let s=0,n=[];for(s=0;s<this.fn*this.fn;s++)n[s]=!1;let o=[];for(s=0;s<(this._+1)*(this.zt+1);s++)o[s]=-1;for(i.reset();i.next();){let u=i.value,c=u.layer,d=Math.max(0,u.column-this.nodeMinColumnSpace(u,!0)),f=Math.min(this.zt,u.column+this.nodeMinColumnSpace(u,!1));for(let p=d;p<=f;p++)o[c*(this.zt+1)+p]=u.component}for(let u=0;u<=this._;u++){if(e>0)for(let c=0;c<this.zt;c++)o[u*(this.zt+1)+c]!==-1&&o[u*(this.zt+1)+c+1]!==-1&&o[u*(this.zt+1)+c]!==o[u*(this.zt+1)+c+1]&&(n[o[u*(this.zt+1)+c]*this.fn+o[u*(this.zt+1)+c+1]]=!0);if(e<0)for(let c=this.zt;c>0;c--)o[u*(this.zt+1)+c]!==-1&&o[u*(this.zt+1)+c-1]!==-1&&o[u*(this.zt+1)+c]!==o[u*(this.zt+1)+c-1]&&(n[o[u*(this.zt+1)+c]*this.fn+o[u*(this.zt+1)+c-1]]=!0)}let r=[];for(s=0;s<this.fn;s++)r[s]=!0;let a=[];a.push(0);let h=0;for(;a.length!==0;)if(h=a[a.length-1],a.pop(),r[h])for(r[h]=!1,s=0;s<this.fn;s++)n[h*this.fn+s]&&a.splice(0,0,s);let l=!1;if(e>0)for(i.reset();i.next();){let u=i.value;r[u.component]&&(u.column-=1,l=!0)}if(e<0)for(i.reset();i.next();){let u=i.value;r[u.component]&&(u.column+=1,l=!0)}return l}K3(){let t=m.st(),e=this.mu.length;for(let d=0;d<=e;d++)t[d]=[];let i=this.network.vertexes.iterator;for(;i.next();){let d=i.value,f=e-d.layer,p=t[f];p[d.index]=d}let s=new V;this.$3(t,s);let n=null,o=null,r=null,a=null,h=(this.zn&1)!==0,l=(this.zn&2)!==0,u=(this.zn&4)!==0,c=(this.zn&8)!==0;h&&(this.hl(t,s,!0),n=this.Qk(t,!0,!1)),t.reverse(),u&&(this.hl(t,s,!1),r=this.Qk(t,!1,!1));for(let d of t)d.reverse();c&&(this.hl(t,s,!1),a=this.Qk(t,!1,!0)),t.reverse(),l&&(this.hl(t,s,!0),o=this.Qk(t,!0,!0)),m.Z(t),this.Z3(n,o,r,a),this.network.vertexes.each(d=>{let f=d,p=m.st();h&&p.push(n.get(f)),l&&p.push(o.get(f)),u&&p.push(r.get(f)),c&&p.push(a.get(f)),p.sort((w,k)=>w-k);let g=p.length,y=Math.floor((g-1)/2),b=Math.ceil((g-1)/2),v=(p[y]+p[b])/2;m.Z(p),f.mi=v})}$3(t,e){let i=t.length;for(let s=1;s<i-1;s++){let n=0,o=0,r=t[s],a=t[s+1];for(let h=0;o<a.length;h++){let l=a[h],u=this.Q3(l);if(h===a.length-1||u){let c=r.length-1;for(u&&(c=l.getProperSourceVertexes()[0].index);o<=h;){let d=a[o].getProperSourceEdges();for(let f of d){let p=f.fromVertex.index;(p<n||p>c)&&e.add(f)}o++}n=c}}}}Q3(t){if(t.node===null){let e=t.getProperSourceVertexes();if(e.length>0)return e[0].node===null}return!1}hl(t,e,i){this._3(t);for(let s of t){let n=-1;for(let o of s){let r=i?o.getProperSourceVertexes():o.getProperDestinationVertexes(),a=r.length;if(a>0){r.sort((l,u)=>l.Wa-u.Wa);let h=(a-1)/2;for(let l=Math.floor(h),u=Math.ceil(h);l<=u;l++)if(o.Xn===o){let c=r[l],d;i?d=c.getDestinationEdge(o):d=o.getDestinationEdge(c),!e.has(d)&&n<c.Wa&&(c.Xn=o,o.mc=c.mc,o.Xn=c.mc,n=c.Wa)}}}}}_3(t){for(let e=0;e<t.length;e++){let i=t[e];for(let s=0;s<i.length;s++){let n=i[s];n.mc=n,n.Xn=n,n.CF=e,n.Wa=s}}}Qk(t,e,i){let s=this.P===90||this.P===270;for(let o of t)for(let r of o)r.os=r,r.yu=1/0,r.mi=NaN,r.Gn=0;this.tU(t,e,i);for(let o of t)for(let r of o)r.mc===r&&this.NF(r,t);for(let o=0;o<t.length;o++){if(t[o].length<=0)continue;let r=t[o][0];if(r.os===r){r.os.yu===1/0&&(r.os.yu=0);let a=o,h=0,l;do{for(l=t[a][h];l.Xn!==l.mc;)if(l=l.Xn,a++,l.Wa>0){let u=this.LF(l,t),c=s?u.width:u.height,d=l.os.yu+l.mi+l.Gn-(u.mi+u.Gn+c+this.columnSpacing);u.os.yu=Math.min(u.os.yu,d)}h=l.Wa+1}while(a<t.length&&h<t[a].length&&l.os===t[a][h].os)}}let n=new Mt;for(let o of t)for(let r of o){r.mi=r.mi+r.os.yu+r.Gn;let a=s?r.width:r.height;n.set(r,i?-r.mi-a:r.mi)}return n}tU(t,e,i){let s=this.P===90||this.P===270;for(let n of t)for(let o of n)if(o.mc===o){let r=0,a=o;for(;a.Xn!==o;){let h=a.Xn,l=s?a.width:a.height,u=s?h.width:h.height,c,d,f,p;e?(f=a.getDestinationEdge(h),c=f.portFromPos,d=f.portToPos,f.link!==null&&(a.node&&a.node!==f.link.fromNode&&(c=s?a.focusX:a.focusY),h.node&&h.node!==f.link.toNode&&(d=s?h.focusX:h.focusY)),i?p=a.Gn+(l-c)-(u-d):p=a.Gn+c-d):(f=h.getDestinationEdge(a),c=f.portToPos,d=f.portFromPos,f.link!==null&&(a.node&&a.node!==f.link.toNode&&(c=s?a.focusX:a.focusY),h.node&&h.node!==f.link.fromNode&&(d=s?h.focusX:h.focusY)),i?p=a.Gn+(l-c)-(u-d):p=a.Gn+c-d),h.Gn=p,r=Math.min(r,p),a=a.Xn}a=o;do a.Gn=a.Gn-r,a=a.Xn;while(a!==o)}}NF(t,e){if(!isNaN(t.mi))return;t.mi=0;let i=t;do{if(i.Wa>0){let s=this.LF(i,e),n=s.mc;this.NF(n,e),t.os===t&&(t.os=n.os);let o=this.P===90||this.P===270?s.width:s.height;if(t.os===n.os){let r=n.mi+s.Gn+o-i.Gn+this.columnSpacing;t.mi=Math.max(t.mi,r)}}i=i.Xn}while(i!==t);for(;i.Xn!==t;)i=i.Xn,i.mi=t.mi,i.os=t.os}LF(t,e){let i=t.CF,s=t.Wa;return s<1&&m.o("Could not determine previous vertex in layer"),e[i][s-1]}Z3(...t){let e=-1,i=m.st(),s=m.st(),n=1/0;for(let o=0;o<4;o++){if(!t[o])continue;let r=this.eU(t[o],i,s,o);r<n&&(e=o,n=r)}for(let o=0;o<4;o++){let r=t[o];if(!r)continue;let a=o===0||o===2?i[e]-i[o]:s[e]-s[o];a!==0&&r.each(h=>{r.set(h.key,h.value+a)})}m.Z(i),m.Z(s)}eU(t,e,i,s){if(!t||t.count===0)return e[s]=0,i[s]=0,1/0;let n=1/0,o=-1/0;return t.each(r=>{let a=r.key,h=r.value,l=this.P===90||this.P===270?a.width:a.height;h<n&&(n=h),h+l>o&&(o=h+l)}),e[s]=n,i[s]=o,o-n}commitLayout(){this.ww(),this.commitNodes(),this.pL(),this.isRouting&&this.commitLinks()}ww(){if(!this.setsPortSpots)return;let t=this.$k(!0),e=this.$k(!1),i=this.network.edges.iterator;for(;i.next();){let s=i.value.link;s!==null&&(s.fromSpot=t,s.toSpot=e)}}$k(t){return this.P===270?t?T.MiddleTop:T.MiddleBottom:this.P===90?t?T.MiddleBottom:T.MiddleTop:this.P===180?t?T.MiddleLeft:T.MiddleRight:t?T.MiddleRight:T.MiddleLeft}commitNodes(){this.zs.length!==this._+1&&(this.zs=new Float32Array(this._+1)),this.ms.length!==this._+1&&(this.ms=new Float32Array(this._+1)),this.ps.length!==this._+1&&(this.ps=new Float32Array(this._+1)),this.Rt.length!==this._+1&&(this.Rt=new Float32Array(this._+1));for(let f=0;f<=this._;f++)this.zs[f]=0,this.ms[f]=0,this.ps[f]=0,this.Rt[f]=0;let t=this.network.vertexes.iterator;for(;t.next();){let f=t.value,p=f.layer;this.zs[p]=Math.max(this.zs[p],this.nodeMinLayerSpace(f,!0)),this.ms[p]=Math.max(this.ms[p],this.nodeMinLayerSpace(f,!1))}let e=0,i=this.Vs;for(let f=0;f<=this._;f++){let p=i;this.zs[f]+this.ms[f]<=0&&(p=0),f>0&&(e+=p/2),this.P===90||this.P===0?(e+=this.ms[f],this.ps[f]=e,e+=this.zs[f]):(e+=this.zs[f],this.ps[f]=e,e+=this.ms[f]),f<this._&&(e+=p/2),this.Rt[f]=e}let s=e,n=this.arrangementOrigin;for(let f=0;f<=this._;f++)this.P===270?this.ps[f]=n.y+this.ps[f]:this.P===90?(this.ps[f]=n.y+s-this.ps[f],this.Rt[f]=s-this.Rt[f]):this.P===180?this.ps[f]=n.x+this.ps[f]:(this.ps[f]=n.x+s-this.ps[f],this.Rt[f]=s-this.Rt[f]);let o=this.zn!==0;t.reset();let r=this.P===270||this.P===90,a=1/0,h=1/0,l=1/0,u=-1/0;for(;t.next();){let f=t.value,p=f.layer,g=f.column|0,y=0,b=0;r?(y=n.x+this.ti*g,b=this.ps[p]):(y=this.ps[p],b=n.y+this.ti*g),f.centerX=y,f.centerY=b,o&&isFinite(f.mi)&&(r?f.node?f.x=n.x+f.mi:f.centerX=n.x+f.mi:f.node?f.y=n.y+f.mi:f.centerY=n.y+f.mi),a=Math.min(f.x,a),h=Math.min(f.y,h),r?(l=a,u=Math.max(u,f.bounds.right)):(l=h,u=Math.max(u,f.bounds.bottom))}this.uL=u-l;let c=n.x-a,d=n.y-h;for(this.cr=new P(o&&r?0:c,o&&!r?0:d),t.reset();t.next();){let f=t.value;f.x+=c,f.y+=d,f.commit()}}pL(){let t=0,e=this.Vs;for(let n=0;n<=this._;n++)t+=this.zs[n],t+=this.ms[n];t+=this._*e;let i=[],s=this.zn!==0?this.uL:this.ti*this.zt;for(let n=this.maxLayer;n>=0;n--)this.P===270?n===0?i.push(new I(0,0,s,Math.abs(this.Rt[0]))):i.push(new I(0,this.Rt[n-1],s,Math.abs(this.Rt[n-1]-this.Rt[n]))):this.P===90?n===0?i.push(new I(0,this.Rt[0],s,Math.abs(this.Rt[0]-t))):i.push(new I(0,this.Rt[n],s,Math.abs(this.Rt[n-1]-this.Rt[n]))):this.P===180?n===0?i.push(new I(0,0,Math.abs(this.Rt[0]),s)):i.push(new I(this.Rt[n-1],0,Math.abs(this.Rt[n-1]-this.Rt[n]),s)):n===0?i.push(new I(this.Rt[0],0,Math.abs(this.Rt[0]-t),s)):i.push(new I(this.Rt[n],0,Math.abs(this.Rt[n-1]-this.Rt[n]),s));this.commitLayers(i,this.cr)}commitLayers(t,e){}commitLinks(){let t=this.network.edges.iterator,e=null;for(;t.next();)e=t.value.link,e!==null&&e.pointsCount>0&&(e.startRoute(),e.clearPoints(),e.commitRoute());for(t.reset();t.next();)e=t.value.link,e!==null&&e.updateRoute();for(t.reset();t.next();){let i=t.value;if(e=i.link,e===null||e.pointsCount===0)continue;e.startRoute();let s=e,n=s.fromNode,o=s.toNode,r=s.fromPort,a=s.toPort;if(n!==null){let A=n.findVisibleNode();A!==null&&A!==n&&(n=A,r=A.port)}if(o!==null){let A=o.findVisibleNode();A!==null&&A!==o&&(o=A,a=A.port)}let h=e.computeSpot(!0,r),l=e.computeSpot(!1,a),u=i.fromVertex,c=i.toVertex;if(i.valid){if(e.curve===9&&e.pointsCount===4)if(u.column===c.column&&this.alignOption===0){let A=e.getLinkPoint(n,r,h,!0,!1,o,a),F=e.getLinkPoint(o,a,l,!1,!1,n,r);A.isReal()||A.set(n.actualBounds.center),F.isReal()||F.set(o.actualBounds.center),e.clearPoints(),e.addPointAt(A.x,A.y),e.addPointAt((2*A.x+F.x)/3,(2*A.y+F.y)/3),e.addPointAt((A.x+2*F.x)/3,(A.y+2*F.y)/3),e.addPointAt(F.x,F.y)}else{let A=!1,F=!1;if(r!==null&&e.kl(h)&&(A=!0),a!==null&&e.kl(l)&&(F=!0),A||F){let O=null;A&&(O=e.getLinkPointFromPoint(n,r,r.getDocumentPoint(T.Center),e.getPoint(3),!0),O.isReal()||O.set(n.actualBounds.center),e.setPointAt(0,O.x,O.y));let E=null;if(F&&(E=e.getLinkPointFromPoint(o,a,a.getDocumentPoint(T.Center),e.getPoint(0),!1),E.isReal()||E.set(o.actualBounds.center),e.setPointAt(3,E.x,E.y)),O){let B=e.getPoint(2);e.setPointAt(1,(O.x*2+B.x)/3,(O.y*2+B.y)/3)}if(E){let B=e.getPoint(1);e.setPointAt(2,(E.x*2+B.x)/3,(E.y*2+B.y)/3)}}}e.commitRoute();continue}if(u.layer===c.layer){e.commitRoute();continue}let d=!1,f=!1,p=this.Vs,g=0,y=e.firstPickIndex+1;if(e.isOrthogonal)f=!0,g=e.pointsCount,g>4&&e.points.removeRange(2,g-3);else if(e.curve===9)d=!0,g=e.pointsCount,g>4&&e.points.removeRange(2,g-3),g===4&&(y=2);else{g=e.pointsCount;let A=h===T.None,F=l===T.None;g>2&&A&&F?e.points.removeRange(1,g-2):g>3&&A&&!F?e.points.removeRange(1,g-3):g>3&&!A&&F?e.points.removeRange(2,g-2):g>4&&!A&&!F&&e.points.removeRange(2,g-3)}let b,v,w=0,k=0,S=0,N=0,D=0,L=0,M=0;if(i.rev){let A=0;for(;c!==null&&u!==c;){b=null,v=null;let F=c.sourceEdges.iterator;for(;F.next();){let O=F.value;if(O.link===i.link&&(b=O.fromVertex,v=O.toVertex,b.node===null))break}if(b===null)break;if(b!==u)if(w=e.getPoint(y-1).x,k=e.getPoint(y-1).y,S=b.centerX,N=b.centerY,f)this.P===180||this.P===0?y===e.firstPickIndex+1?(e.insertPointAt(y++,w,k),e.insertPointAt(y++,w,N)):(v!==null?v.centerY:k)!==N&&(D=this.Rt[b.layer-1]+this.cr.x,e.insertPointAt(y++,D,k),e.insertPointAt(y++,D,N)):y===e.firstPickIndex+1?(e.insertPointAt(y++,w,k),e.insertPointAt(y++,S,k)):(v!==null?v.centerX:w)!==S&&(D=this.Rt[b.layer-1]+this.cr.y,e.insertPointAt(y++,w,D),e.insertPointAt(y++,S,D));else if(y===e.firstPickIndex+1)if(L=Math.max(10,this.zs[c.layer]),M=Math.max(10,this.ms[c.layer]),d)this.P===180?S<=c.bounds.x?(A=c.bounds.x,e.insertPointAt(y++,A-L,N),e.insertPointAt(y++,A,N),e.insertPointAt(y++,A+M,N)):(e.insertPointAt(y++,S-L,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S+M,N)):this.P===90?N>=c.bounds.bottom?(A=c.bounds.y+c.bounds.height,e.insertPointAt(y++,S,A+M),e.insertPointAt(y++,S,A),e.insertPointAt(y++,S,A-L)):(e.insertPointAt(y++,S,N+M),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N-L)):this.P===270?N<=c.bounds.y?(A=c.bounds.y,e.insertPointAt(y++,S,A-L),e.insertPointAt(y++,S,A),e.insertPointAt(y++,S,A+M)):(e.insertPointAt(y++,S,N-L),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N+M)):this.P===0&&(S>=c.bounds.right?(A=c.bounds.x+c.bounds.width,e.insertPointAt(y++,A+M,N),e.insertPointAt(y++,A,N),e.insertPointAt(y++,A-L,N)):(e.insertPointAt(y++,S+M,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S-L,N)));else{e.insertPointAt(y++,w,k);let O=0;this.P===180||this.P===0?((this.P===180?S>=c.bounds.right:S<=c.bounds.x)&&(O=(this.P===0?-L:M)/2),e.insertPointAt(y++,w+O,N)):((this.P===270?N>=c.bounds.bottom:N<=c.bounds.y)&&(O=(this.P===90?-L:M)/2),e.insertPointAt(y++,S,k+O)),e.insertPointAt(y++,S,N)}else L=Math.max(10,this.zs[b.layer]),M=Math.max(10,this.ms[b.layer]),d?this.P===180?(e.insertPointAt(y++,S-L-Math.max(10,p),N),e.insertPointAt(y++,Math.min(S-L+p/2,S),N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,Math.max(S+M-p/2,S),N),e.insertPointAt(y++,S+M+p,N)):this.P===90?(e.insertPointAt(y++,S,N+M+Math.max(10,p)),e.insertPointAt(y++,S,Math.max(N+M-p/2,N)),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,Math.min(N-L+p/2,N)),e.insertPointAt(y++,S,N-L-p)):this.P===270?(e.insertPointAt(y++,S,N-L-Math.max(10,p)),e.insertPointAt(y++,S,Math.min(N-L+p/2,N)),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,Math.max(N+M-p/2,N)),e.insertPointAt(y++,S,N+M+p)):(e.insertPointAt(y++,S+M+Math.max(10,p),N),e.insertPointAt(y++,Math.max(S+M-p/2,S),N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,Math.min(S-L+p/2,S),N),e.insertPointAt(y++,S-L-p,N)):(this.P===180||this.P===90||this.P,e.insertPointAt(y++,S,N));c=b}if(a===null||h!==T.None||f)if(w=e.getPoint(y-1).x,k=e.getPoint(y-1).y,S=e.getPoint(y).x,N=e.getPoint(y).y,f){let F=this.ms[u.layer],O=0;this.P===180||this.P===0?(O=k,O>=u.bounds.y&&O<=u.bounds.bottom&&(this.P===180?S>=u.bounds.x:S<=u.bounds.right)&&(A=u.centerX+(this.P===180?-F:F),O<u.bounds.y+u.bounds.height/2?O=u.bounds.y-this.ti/2:O=u.bounds.bottom+this.ti/2,e.insertPointAt(y++,A,k),e.insertPointAt(y++,A,O)),e.insertPointAt(y++,S,O),e.insertPointAt(y++,S,N)):(O=w,O>=u.bounds.x&&O<=u.bounds.right&&(this.P===270?N>=u.bounds.y:N<=u.bounds.bottom)&&(A=u.centerY+(this.P===270?-F:F),O<u.bounds.x+u.bounds.width/2?O=u.bounds.x-this.ti/2:O=u.bounds.right+this.ti/2,e.insertPointAt(y++,w,A),e.insertPointAt(y++,O,A)),e.insertPointAt(y++,O,N),e.insertPointAt(y++,S,N))}else if(d)L=Math.max(10,this.zs[u.layer]),M=Math.max(10,this.ms[u.layer]),this.P===180&&S>=u.bounds.x?(A=u.bounds.x+u.bounds.width,e.setPointAt(y-2,A,k),e.setPointAt(y-1,A+M,k)):this.P===90&&N<=u.bounds.bottom?(A=u.bounds.y,e.setPointAt(y-2,w,A),e.setPointAt(y-1,w,A-L)):this.P===270&&N>=u.bounds.y?(A=u.bounds.y+u.bounds.height,e.setPointAt(y-2,w,A),e.setPointAt(y-1,w,A+M)):this.P===0&&S<=u.bounds.right&&(A=u.bounds.x,e.setPointAt(y-2,A,k),e.setPointAt(y-1,A-L,k));else{L=Math.max(10,this.zs[u.layer]),M=Math.max(10,this.ms[u.layer]);let F=0;this.P===180||this.P===0?((this.P===180?S<=u.bounds.x:S>=u.bounds.right)&&(F=(this.P===0?M:-L)/2),e.insertPointAt(y++,S+F,k)):((this.P===270?N<=u.bounds.y:N>=u.bounds.bottom)&&(F=(this.P===90?M:-L)/2),e.insertPointAt(y++,w,N+F)),e.insertPointAt(y++,S,N)}}else{for(;u!==null&&u!==c;){b=null,v=null;let A=u.destinationEdges.iterator;for(;A.next();){let F=A.value;if(F.link===i.link&&(b=F.toVertex,v=F.fromVertex,v.node!==null&&(v=null),b.node===null))break}if(b===null)break;b!==c&&(w=e.getPoint(y-1).x,k=e.getPoint(y-1).y,S=b.centerX,N=b.centerY,f?this.P===180||this.P===0?(v!==null?v.centerY:k)!==N&&(D=this.Rt[b.layer]+this.cr.x,y===e.firstPickIndex+1&&(this.P===0?D=Math.max(D,w):D=Math.min(D,w)),e.insertPointAt(y++,D,k),e.insertPointAt(y++,D,N)):(v!==null?v.centerX:w)!==S&&(D=this.Rt[b.layer]+this.cr.y,y===e.firstPickIndex+1&&(this.P===90?D=Math.max(D,k):D=Math.min(D,k)),e.insertPointAt(y++,w,D),e.insertPointAt(y++,S,D)):(L=Math.max(10,this.zs[b.layer]),M=Math.max(10,this.ms[b.layer]),d?this.P===180?(e.insertPointAt(y++,S+M+Math.max(10,p),N),e.insertPointAt(y++,Math.max(S+M-p/2,S),N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,Math.min(S-L+p/2,S),N),e.insertPointAt(y++,S-L-p,N)):this.P===90?(e.insertPointAt(y++,S,N-L-Math.max(10,p)),e.insertPointAt(y++,S,Math.min(N-L+p/2,N)),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,Math.max(N+M-p/2,N)),e.insertPointAt(y++,S,N+M+p)):this.P===270?(e.insertPointAt(y++,S,N+M+Math.max(10,p)),e.insertPointAt(y++,S,Math.max(N+M-p/2,N)),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,Math.min(N-L+p/2,N)),e.insertPointAt(y++,S,N-L-p)):(e.insertPointAt(y++,S-L-Math.max(10,p),N),e.insertPointAt(y++,Math.min(S-L+p/2,S),N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,Math.max(S+M-p/2,S),N),e.insertPointAt(y++,S+M+p,N)):this.P===180?(e.insertPointAt(y++,S+M,N),e.insertPointAt(y++,S-L,N)):this.P===90?(e.insertPointAt(y++,S,N-L),e.insertPointAt(y++,S,N+M)):this.P===270?(e.insertPointAt(y++,S,N+M),e.insertPointAt(y++,S,N-L)):(e.insertPointAt(y++,S-L,N),e.insertPointAt(y++,S+M,N)))),u=b}f&&(w=e.getPoint(y-1).x,k=e.getPoint(y-1).y,S=e.getPoint(y).x,N=e.getPoint(y).y,this.P===180||this.P===0?k!==N&&(this.P===0?D=Math.min(Math.max((S+w)/2,this.Rt[c.layer]+this.cr.x),S):D=Math.max(Math.min((S+w)/2,this.Rt[c.layer]+this.cr.x),S),e.insertPointAt(y++,D,k),e.insertPointAt(y++,D,N)):w!==S&&(this.P===90?D=Math.min(Math.max((N+k)/2,this.Rt[c.layer]+this.cr.y),N):D=Math.max(Math.min((N+k)/2,this.Rt[c.layer]+this.cr.y),N),e.insertPointAt(y++,w,D),e.insertPointAt(y++,S,D)))}if(s!==null&&d&&e.pointsCount>=4){if(n!==null&&r!==null&&s.kl(h)){let A=r.getDocumentPoint(T.Center);A.isReal()||A.setTo(n.actualBounds.centerX,n.actualBounds.centerY);let F=e.getPoint(3),O=e.getPoint(2);this.direction===90||this.direction===270?(e.setPointAt(1,F.x,(O.y+F.y)/2),e.setPointAt(2,F.x,(O.y+F.y)/2)):(e.setPointAt(1,(O.x+F.x)/2,F.y),e.setPointAt(2,(O.x+F.x)/2,F.y));let E=e.getLinkPointFromPoint(n,r,A,e.getPoint(1),!0);e.setPointAt(0,E.x,E.y)}if(o!==null&&a!==null&&s.kl(l)){let A=a.getDocumentPoint(T.Center);A.isReal()||A.setTo(o.actualBounds.centerX,o.actualBounds.centerY);let F=e.getPoint(e.pointsCount-4),O=e.getLinkPointFromPoint(o,a,A,F,!1),E=e.getPoint(e.pointsCount-3);this.direction===90||this.direction===270?(e.setPointAt(e.pointsCount-2,F.x,(E.y+O.y)/2),e.setPointAt(e.pointsCount-3,F.x,(E.y+O.y)/2)):(e.setPointAt(e.pointsCount-2,(E.x+O.x)/2,F.y),e.setPointAt(e.pointsCount-3,(E.x+O.x)/2,F.y));let B=e.getLinkPointFromPoint(o,a,A,e.getPoint(e.pointsCount-2),!1);e.setPointAt(e.pointsCount-1,B.x,B.y)}}e.commitRoute(),i.commit()}}M3(){this.xw=-1,this.Hg=0,this.Bs=0,this.mu=null;for(let t=0;t<this.Bn.length;t++)this.Bn[t]=null}qa(t){let e,i=this.ie[t];if(i>=this.Bn.length){let n=[];for(let o=0;o<this.Bn.length;o++)n[o]=this.Bn[o];this.Bn=n}this.Bn[i]===void 0||this.Bn[i]===null?e=[]:(e=this.Bn[i],this.Bn[i]=null);let s=this.mu[t];for(let n=0;n<s.length;n++){let o=s[n];e[o.index]=o}return e}ja(t,e){this.Bn[this.ie[t]]=e}get layerSpacing(){return this.Vs}set layerSpacing(t){this.Vs!==t&&(m.s(t,"number",Ce,"layerSpacing"),t>=0&&(this.Vs=t,this.p()))}get columnSpacing(){return this.ti}set columnSpacing(t){this.ti!==t&&(m.s(t,"number",Ce,"columnSpacing"),t>0&&(this.ti=t,this.p()))}get direction(){return this.P}set direction(t){this.P!==t&&(m.s(t,"number",Ce,"direction"),t===0||t===90||t===180||t===270?(this.P=t,this.p()):m.o("LayeredDigraphLayout.direction must be 0, 90, 180, or 270"))}get cycleRemoveOption(){return this.cu}set cycleRemoveOption(t){this.cu!==t&&(t===1||t===0||t===2)&&(this.cu=t,this.p())}get layeringOption(){return this.fu}set layeringOption(t){this.fu!==t&&(t===10||t===11||t===12)&&(this.fu=t,this.p())}get initializeOption(){return this.uu}set initializeOption(t){this.uu!==t&&(t===20||t===21||t===22)&&(this.uu=t,this.p())}get iterations(){return this.gc}set iterations(t){this.gc!==t&&t>=0&&(this.gc=t,this.p())}get aggressiveOption(){return this.du}set aggressiveOption(t){this.du!==t&&(t===30||t===31||t===32)&&(this.du=t,this.p())}get packOption(){return this.hr}set packOption(t){this.hr!==t&&(m.s(t,"number",Ce,"packOption"),t>=0&&t<8&&(this.hr=t,this.p()))}get packIterations(){return this.gu}set packIterations(t){this.gu=t}get alignOption(){return this.zn}set alignOption(t){this.zn!==t&&(m.s(t,"number",Ce,"align"),t>=0&&t<16&&(this.zn=t,this.p()))}get centered(){return this.Ha}set centered(t){this.centered!==t&&(m.s(t,"boolean",Ce,"centered"),this.Ha=t,this.p())}get setsPortSpots(){return this.Vn}set setsPortSpots(t){this.Vn!==t&&(m.s(t,"boolean",Ce,"setsPortSpots"),this.Vn=t,this.p())}get maxLayer(){return this._}get maxIndex(){return this.xw}get maxColumn(){return this.zt}get minIndexLayer(){return this.Hg}get maxIndexLayer(){return this.Bs}static CycleDepthFirst=0;static CycleGreedy=1;static CycleFromLayers=2;static LayerOptimalLinkLength=10;static LayerLongestPathSink=11;static LayerLongestPathSource=12;static InitDepthFirstOut=20;static InitDepthFirstIn=21;static InitNaive=22;static AggressiveNone=30;static AggressiveLess=31;static AggressiveMore=32;static PackNone=0;static PackExpand=1;static PackStraighten=2;static PackMedian=4;static PackAll=15;static AlignNone=0;static AlignUpperLeft=1;static AlignUpperRight=2;static AlignLowerLeft=4;static AlignLowerRight=8;static AlignAll=15}class tn extends Re{constructor(t){super(t)}createVertex(){let t=new si(this);return t.centered=this.layout.centered,t}createEdge(){return new Me(this)}}class si extends Ee{pl;pa;Tt;_k;tP;Ha;ii;pu;Qn;Jk;qk;jk;mc;Xn;CF;Wa;os;yu;mi;Gn;Sw=null;Mw=null;Cw=null;Nw=null;constructor(t){super(t),this.pl=-1,this.pa=-1,this.Tt=-1,this._k=NaN,this.tP=null,this.Ha=!0,this.ii=!1,this.pu=NaN,this.Qn=NaN,this.Jk=0,this.qk=null,this.jk=null}static AF(t,e){return t.index-e.index}getProperSourceEdges(){if(!this.Cw){let t=[];for(let e of this.So){let i=e;i.valid&&t.push(i)}this.Cw=t}return this.Cw}getProperDestinationEdges(){if(!this.Nw){let t=[];for(let e of this.or){let i=e;i.valid&&t.push(i)}this.Nw=t}return this.Nw}getDestinationEdge(t){let e=this.getProperDestinationEdges();for(let i of e)if(i.toVertex===t)return i;m.o("Unable to find destination edge to given vertex")}getProperSourceVertexes(){if(!this.Sw){let t=[];for(let e of this.So){let i=e;!i.valid||i.fromVertex.layer<=i.toVertex.layer||t.push(i.fromVertex)}t.sort(si.AF),this.Sw=t}return this.Sw}getProperDestinationVertexes(){if(!this.Mw){let t=[];for(let e of this.or){let i=e;!i.valid||i.fromVertex.layer<=i.toVertex.layer||t.push(i.toVertex)}t.sort(si.AF),this.Mw=t}return this.Mw}addSourceEdge(t){super.addSourceEdge(t),this.Sw=null,this.Cw=null}deleteSourceEdge(t){super.deleteSourceEdge(t),this.Sw=null,this.Cw=null}addDestinationEdge(t){super.addDestinationEdge(t),this.Mw=null,this.Nw=null}deleteDestinationEdge(t){super.deleteDestinationEdge(t),this.Mw=null,this.Nw=null}commit(){if(this.centered)super.commit();else{let t=this.node;if(t!==null){let e=this.network.layout;if(!e)return;e.direction===180||e.direction===270?t.moveTo(this.bounds.right-t.actualBounds.width,this.bounds.bottom-t.actualBounds.height):t.moveTo(this.bounds.x,this.bounds.y)}}}get layer(){return this.pl}set layer(t){this.pl=t}get column(){return this.pa}set column(t){this.pa=t}get index(){return this.Tt}set index(t){this.Tt=t}get component(){return this._k}set component(t){this._k!==t&&(m.s(t,"number",si,"component"),this._k=t)}get near(){return this.tP}set near(t){this.tP!==t&&(this.tP=t)}get centered(){return this.Ha}set centered(t){this.Ha=t}}class Me extends ei{ii;eP;iP;sP;nP;oP;rP;constructor(t){super(t),this.ii=!1,this.eP=!1,this.iP=!1,this.sP=NaN,this.nP=NaN,this.oP=0,this.rP=0}get fromVertex(){return this.is}set fromVertex(t){this.is!==t&&(this.is=t)}get toVertex(){return this.ss}set toVertex(t){this.ss!==t&&(this.ss=t)}get valid(){return this.ii}set valid(t){this.ii!==t&&(m.s(t,"boolean",Me,"valid"),this.ii=t)}get rev(){return this.eP}set rev(t){this.eP!==t&&(m.s(t,"boolean",Me,"rev"),this.eP=t)}get forest(){return this.iP}set forest(t){this.iP!==t&&(m.s(t,"boolean",Me,"forest"),this.iP=t)}get portFromPos(){return this.sP}set portFromPos(t){this.sP!==t&&(m.s(t,"number",Me,"portFromPos"),this.sP=t)}get portToPos(){return this.nP}set portToPos(t){this.nP!==t&&(m.s(t,"number",Me,"portToPos"),this.nP=t)}get portFromColOffset(){return this.oP}set portFromColOffset(t){this.oP!==t&&(m.s(t,"number",Me,"portFromColOffset"),this.oP=t)}get portToColOffset(){return this.rP}set portToColOffset(t){this.rP!==t&&(m.s(t,"number",Me,"portToColOffset"),this.rP=t)}}var hs=(x=>(x[x.Default=0]="Default",x[x.Destination=1]="Destination",x[x.Source=2]="Source",x))(hs||{}),ls=(x=>(x[x.Forwards=10]="Forwards",x[x.Reverse=11]="Reverse",x[x.Ascending=12]="Ascending",x[x.Descending=13]="Descending",x))(ls||{}),us=(x=>(x[x.CenterSubtrees=20]="CenterSubtrees",x[x.CenterChildren=21]="CenterChildren",x[x.Start=22]="Start",x[x.End=23]="End",x[x.Bus=24]="Bus",x[x.BusBranching=25]="BusBranching",x[x.TopLeftBus=26]="TopLeftBus",x[x.BottomRightBus=27]="BottomRightBus",x[x.Custom=28]="Custom",x))(us||{}),cs=(x=>(x[x.None=30]="None",x[x.Block=31]="Block",x))(cs||{}),ds=(x=>(x[x.Layered=40]="Layered",x[x.LastParents=41]="LastParents",x[x.Alternating=42]="Alternating",x[x.RootOnly=43]="RootOnly",x))(ds||{}),fs=(x=>(x[x.Vertical=50]="Vertical",x[x.Horizontal=51]="Horizontal",x[x.FixedRoots=52]="FixedRoots",x))(fs||{}),en=(x=>(x[x.Individual=60]="Individual",x[x.Siblings=61]="Siblings",x[x.Uniform=62]="Uniform",x))(en||{});class Vt extends ee{Ie;Re;wu;Jg;yL;Gi;He;Us;V;B;lP;ws;constructor(t){super(),this.Ie=new V,this.Re=0,this.ws=1,this.wu=40,this.Jg=60,this.yL=[],this.Gi=!0,this.He=50,this.Us=new nt(10,10).k();let e=new gs(this);this.V=new Rt(e),this.B=new Rt(e),this.lP=[],t&&Object.assign(this,t)}cloneProtected(t){super.cloneProtected(t),t.Re=this.Re,t.wu=this.wu,t.Jg=this.Jg,t.Gi=this.Gi,t.He=this.He,t.Us.h(this.Us),t.V.copyInheritedPropertiesFrom(this.V),t.B.copyInheritedPropertiesFrom(this.B)}fe(t){t in us?this.alignment=t:t in fs?this.arrangement=t:t in cs?this.compaction=t:t in hs?this.path=t:t in ls?this.sorting=t:t in ds?this.treeStyle=t:super.fe(t)}createNetwork(){return new gs(this)}makeNetwork(t){let e=this.createNetwork(),i=s=>{if(s instanceof $)return!s.isLinkLabel&&s.category!=="Comment";if(s instanceof j){let n=s.fromNode;if(n===null||n.isLinkLabel||n.category==="Comment")return!1;let o=s.toNode;return!(o===null||o.isLinkLabel||o.category==="Comment")}return!1};return t instanceof Y?(e.addParts(t.nodes,!0,i),e.addParts(t.links,!0,i)):t instanceof ht?e.addParts(t.memberParts,!1,i):e.addParts(t.iterator,!1,i),e}doLayout(t){this.network===null&&(this.network=this.makeNetwork(t)),this.arrangement!==52&&(this.arrangementOrigin=this.initialOrigin(this.arrangementOrigin));let e=this.diagram;e===null&&t instanceof Y&&(e=t),this.path===0&&e!==null?this.ws=e.isTreePathToChildren?1:2:this.ws=this.path===0?1:this.path,this.network.vertexes.count>0&&(this.rU(),this.lU(),this.aU(),this.hU(),this.fL(),this.cU(),this.arrangeTrees(),this.updateParts()),this.network=null,this.Ie=new V,this.isValidLayout=!0}rU(){if(this.network===null)return;this.network.deleteSelfEdges();let t=this.network.vertexes.iterator;for(;t.next();){let n=t.value;n.initialized=!1,n.level=0,n.parent=null,n.children=[]}if(this.Ie.count>0){let n=new V,o=this.Ie.iterator;for(;o.next();){let r=o.value;if(r instanceof $){let a=this.network.findVertex(r);a!==null&&n.add(a)}else r instanceof Rt&&n.add(r)}this.Ie=n}this.Ie.count===0&&this.findRoots();let e=this.Ie.copy().iterator;for(;e.next();){let n=e.value;n.initialized||(n.initialized=!0,this.wL(n))}let i=this.network.vertexes,s=null;for(;s=this.fU(i),s.count>0;){let n=this.TF(s);n!==null&&(this.Ie.add(n),n.initialized=!0,this.wL(n)),i=s}}fU(t){let e=new V,i=t.iterator;for(;i.next();){let s=i.value;s.initialized||e.add(s)}return e}findRoots(){if(this.network===null)return;let t=this.network.vertexes,e=t.iterator;for(;e.next();){let i=e.value;switch(this.ws){case 1:i.sourceEdges.count===0&&this.Ie.add(i);break;case 2:i.destinationEdges.count===0&&this.Ie.add(i);break;default:m.o("Unhandled path value "+this.ws.toString())}}if(this.Ie.count===0){let i=this.TF(t);i!==null&&this.Ie.add(i)}}TF(t){let e=999999,i=null,s=t.iterator;for(;s.next();){let n=s.value;switch(this.ws){case 1:n.sourceEdges.count<e&&(e=n.sourceEdges.count,i=n);break;case 2:n.destinationEdges.count<e&&(e=n.destinationEdges.count,i=n);break;default:m.o("Unhandled path value "+this.ws.toString())}}return i}wL(t){if(t===null)return;switch(this.ws){case 1:if(t.destinationEdges.count>0){let s=new q,n=t.destinationVertexes;for(;n.next();){let o=n.value;this.DF(t,o)&&s.add(o)}s.count>0&&(t.children=s.toArray())}break;case 2:if(t.sourceEdges.count>0){let s=new q,n=t.sourceVertexes;for(;n.next();){let o=n.value;this.DF(t,o)&&s.add(o)}s.count>0&&(t.children=s.toArray())}break;default:m.o("Unhandled path value"+this.ws.toString())}let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];n.initialized=!0,n.level=t.level+1,n.parent=t,this.Ie.delete(n)}for(let s=0;s<i;s++){let n=e[s];this.wL(n)}}DF(t,e){return e.initialized?this.uU(e,t)||e.level>t.level?!1:(this.dU(e.parent,e),!0):!0}uU(t,e){if(e===null)return!1;let i=e.parent;for(;i!==null&&i!==t;)i=i.parent;return i===t}dU(t,e){if(t===null||e===null)return;let i=t.children,s=0;for(let n=0;n<i.length;n++)i[n]===e&&s++;if(s>0){let n=new Array(i.length-s),o=0;for(let r=0;r<i.length;r++)i[r]!==e&&(n[o++]=i[r]);t.children=n}}lU(){let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.vF(e)}}vF(t){if(t===null)return;this.initializeTreeVertexValues(t),t.alignment===25&&this.sortTreeVertexChildren(t);let e=0,i=t.childrenCount,s=0,n=t.children,o=n.length;for(let r=0;r<o;r++){let a=n[r];this.vF(a),e+=a.descendantCount+1,i=Math.max(i,a.maxChildrenCount),s=Math.max(s,a.maxGenerationCount)}t.descendantCount=e,t.maxChildrenCount=i,t.maxGenerationCount=i>0?s+1:0}gU(t){switch(this.wu){default:case 40:return t.parent!==null?t.parent:this.V;case 43:return t.parent===null?this.V:t.parent.parent===null?this.B:t.parent;case 42:return t.parent!==null?t.parent.parent!==null?t.parent.parent:this.B:this.V;case 41:{let e=!0;if(t.childrenCount===0)e=!1;else{let i=t.children,s=i.length;for(let n=0;n<s;n++)if(i[n].childrenCount>0){e=!1;break}}return e&&t.parent!==null?this.B:t.parent!==null?t.parent:this.V}}}initializeTreeVertexValues(t){let e=this.gU(t);if(t.copyInheritedPropertiesFrom(e),t.parent!==null&&t.parent.alignment===25){let i=t.angle,s=t.parent.children,n=0;for(;n<s.length&&t!==s[n];)n++;n%2===0?n!==s.length-1&&(i===90?i=180:i===180?i=270:i===270?i=180:i=270):i===90?i=0:i===180?i=90:i===270?i=0:i=90,t.angle=i}t.initialized=!0}aU(){let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.FF(e)}}FF(t){if(t===null)return;this.assignTreeVertexValues(t);let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];this.FF(n)}}assignTreeVertexValues(t){}hU(){let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.RF(e)}}RF(t){if(t===null)return;t.alignment!==25&&this.sortTreeVertexChildren(t);let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];this.RF(n)}}sortTreeVertexChildren(t){switch(t.sorting){default:case 10:break;case 11:t.children.reverse();break;case 12:t.children.sort(t.comparer);break;case 13:t.children.sort(t.comparer),t.children.reverse();break}}fL(){if(!this.comments||this.network===null)return;let t=this.network.vertexes.iterator;for(;t.next();){let e=t.value;this.addComments(e)}}addComments(t){let e=t.angle,i=t.parent,s=0,n=21,o=!1;i!==null&&(s=i.angle,n=i.alignment,o=this.isBusAlignment(n));let r=e===90||e===270,a=s===90||s===270,h=t.childrenCount===0,l=0,u=0,c=0,d=t.commentSpacing;if(t.node!==null){let f=t.node.findNodesConnected();for(;f.next();){let p=f.value;if(p.category!=="Comment"||!p.canLayout())continue;t.comments===null&&(t.comments=[]),t.comments.push(p),p.ensureBounds();let g=p.measuredBounds;r&&!h||!o&&!a&&h||o&&a&&h?(l=Math.max(l,g.width),u+=g.height+Math.abs(c)):(l+=g.width+Math.abs(c),u=Math.max(u,g.height)),c=d}}if(t.comments!==null){r&&!h||!o&&!a&&h||o&&a&&h?(l+=Math.abs(t.commentMargin),u=Math.max(0,u-t.height)):(u+=Math.abs(t.commentMargin),l=Math.max(0,l-t.width));let f=I.z(0,0,t.bounds.width+l,t.bounds.height+u);t.bounds=f,I.i(f)}}isBusAlignment(t){return t===24||t===25||t===26||t===27}Lw(t){return t===24||t===25}xL(t){let e=t.parent;if(e!==null){let i=e.alignment;if(this.isBusAlignment(i))if(this.Lw(i)){let s=e.children,n=0;for(;n<s.length&&t!==s[n];)n++;return n%2===0}else return i===26}return!1}layoutComments(t){if(t.comments!==null){let e=t.node.measuredBounds,i=t.parent,s=t.angle,n=0,o=21,r=!1;i!==null&&(n=i.angle,o=i.alignment,r=this.isBusAlignment(o));let a=s===90||s===270,h=n===90||n===270,l=t.childrenCount===0,u=this.xL(t),c=0,d=t.comments,f=d.length,p=P.l();for(let y=0;y<f;y++){let b=d[y],v=b.measuredBounds;if(a&&!l||!r&&!h&&l||r&&h&&l){if(n>135&&!r||h&&u)if(t.commentMargin>=0){p.e(t.bounds.x-t.commentMargin-v.width,t.bounds.y+c),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleLeft,k.toSpot=T.MiddleRight}}else{p.e(t.bounds.x+t.focus.x*2-t.commentMargin,t.bounds.y+c),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleRight,k.toSpot=T.MiddleLeft}}else if(t.commentMargin>=0){p.e(t.bounds.x+t.focus.x*2+t.commentMargin,t.bounds.y+c),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleRight,k.toSpot=T.MiddleLeft}}else{p.e(t.bounds.x+t.commentMargin-v.width,t.bounds.y+c),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleLeft,k.toSpot=T.MiddleRight}}t.commentSpacing>=0?c+=v.height+t.commentSpacing:c+=t.commentSpacing-v.height}else{if(n>135&&!r||!h&&u)if(t.commentMargin>=0){p.e(t.bounds.x+c,t.bounds.y-t.commentMargin-v.height),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleTop,k.toSpot=T.MiddleBottom}}else{p.e(t.bounds.x+c,t.bounds.y+t.focus.y*2-t.commentMargin),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleBottom,k.toSpot=T.MiddleTop}}else if(t.commentMargin>=0){p.e(t.bounds.x+c,t.bounds.y+t.focus.y*2+t.commentMargin),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleBottom,k.toSpot=T.MiddleTop}}else{p.e(t.bounds.x+c,t.bounds.y+t.commentMargin-v.height),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleTop,k.toSpot=T.MiddleBottom}}t.commentSpacing>=0?c+=v.width+t.commentSpacing:c+=t.commentSpacing-v.width}}P.i(p);let g=c-t.commentSpacing-(a?e.height:e.width);if(this.ws===1){let y=t.destinationEdges;for(;y.next();){let b=y.value.link;b!==null&&!b.isAvoiding&&(b.fromEndSegmentLength=g>0?g:NaN)}}else{let y=t.sourceEdges;for(;y.next();){let b=y.value.link;b!==null&&!b.isAvoiding&&(b.toEndSegmentLength=g>0?g:NaN)}}}}cU(){if(this.network===null)return;if(this.layerStyle===62){let e=[],i=this.network.vertexes.iterator;for(;i.next();){let s=i.value,n=s.parent;n===null&&(n=s);let o=n.angle===0||n.angle===180,r=e[s.level];r===void 0&&(r=0),e[s.level]=Math.max(r,o?s.width:s.height)}for(let s=0;s<e.length;s++)e[s]===void 0&&(e[s]=0);for(this.yL=e,i=this.network.vertexes.iterator;i.next();){let s=i.value,n=s.parent;n===null&&(n=s),n.angle===0||n.angle===180?(n.angle===180&&(s.focusX+=e[s.level]-s.width),s.width=e[s.level]):(n.angle===270&&(s.focusY+=e[s.level]-s.height),s.height=e[s.level])}}else if(this.layerStyle===61){let e=this.network.vertexes.iterator;for(;e.next();){let i=e.value,s=i.angle===0||i.angle===180,n=-1;for(let o=0;o<i.children.length;o++){let r=i.children[o];n=Math.max(n,s?r.width:r.height)}if(n>=0)for(let o=0;o<i.children.length;o++){let r=i.children[o];s?(i.angle===180&&(r.focusX+=n-r.width),r.width=n):(i.angle===270&&(r.focusY+=n-r.height),r.height=n)}}}let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.layoutTree(e)}}layoutTree(t){if(t===null)return;let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];this.layoutTree(n)}switch(t.compaction){case 30:this.OF(t);break;default:case 31:t.alignment===25?this.OF(t):this.mU(t);break}}OF(t){if(t.childrenCount===0){let X=!1,z=0,U=21;t.parent!==null&&(z=t.parent.angle,U=t.parent.alignment,X=this.isBusAlignment(U));let tt=this.xL(t);t.U.e(0,0),t.dt.e(t.width,t.height),t.parent!==null&&t.comments!==null&&((z===180||z===270)&&!X||tt)?z===180&&!X||(z===90||z===270)&&tt?t.at.e(t.width-t.focus.x*2,0):t.at.e(0,t.height-t.focus.y*2):t.at.e(0,0);return}let e=this.orthoAngle(t),i=e===90||e===270,s=0,n=t.children,o=n.length;for(let X=0;X<o;X++){let z=n[X];s=Math.max(s,i?z.dt.width:z.dt.height)}let r=t.alignment,a=r===22,h=r===23,l=this.isBusAlignment(r),u=Math.max(0,t.breadthLimit),c=this.computeLayerSpacing(t),d=t.nodeSpacing,f=this.computeNodeIndent(t),p=a||h?0:f/2,g=t.rowSpacing,y=0;(a||h)&&(y=Math.max(0,t.rowIndent));let b=t.width,v=t.height,w=0,k=0,S=0,N=0,D=0,L=0,M=0,A=0,F=0,O=0;if(l&&!this.Lw(r)&&e>135&&n.reverse(),this.Lw(r))if(o>1)for(let X=0;X<o;X++){let z=n[X],U=z.dt;X%2===0&&X!==o-1?F=Math.max(F,(i?U.width:U.height)+this.computeBusNodeSpacing(z)-d):X%2!==0&&(O=Math.max(O,(i?U.width:U.height)+this.computeBusNodeSpacing(z)-d))}else o===1&&(F=i?n[0].dt.width:n[0].dt.height);if(l)switch(r){case 24:case 25:let X=I.l();e<135?this.IF(t,n,F,O,w,k,X):this.EF(t,n,F,O,w,k,X),F=X.x,w=X.width,k=X.height,I.i(X);break;case 26:for(let z=0;z<o;z++){let U=n[z],tt=U.dt,st=M===0?0:g;i?(U.U.e(s-tt.width,D+st),w=Math.max(w,tt.width),k=Math.max(k,D+st+tt.height),D+=st+tt.height):(U.U.e(N+st,s-tt.height),w=Math.max(w,N+st+tt.width),k=Math.max(k,tt.height),N+=st+tt.width),M++}break;case 27:for(let z=0;z<o;z++){let U=n[z],tt=U.dt,st=M===0?0:g;i?(U.U.e(d/2+t.focus.x,D+st),w=Math.max(w,tt.width),k=Math.max(k,D+st+tt.height),D+=st+tt.height):(U.U.e(N+st,d/2+t.focus.y),w=Math.max(w,N+st+tt.width),k=Math.max(k,tt.height),N+=st+tt.width),M++}break}else for(let X=0;X<o;X++){let z=n[X],U=z.dt;if(i){u>0&&M>0&&N+d+U.width>u&&(N<s&&this.pc(t,r,s-N,0,A,X-1),L++,M=0,A=X,S=k,N=0,D=e>135?-k-g:k+g);let tt=M===0?p:d;this.aP(z,0,D),z.U.e(N+tt,D),w=Math.max(w,N+tt+U.width),k=Math.max(k,S+(L===0?0:g)+U.height),N+=tt+U.width}else{u>0&&M>0&&D+d+U.height>u&&(D<s&&this.pc(t,r,0,s-D,A,X-1),L++,M=0,A=X,S=w,D=0,N=e>135?-w-g:w+g);let tt=M===0?p:d;this.aP(z,N,0),z.U.e(N,D+tt),k=Math.max(k,D+tt+U.height),w=Math.max(w,S+(L===0?0:g)+U.width),D+=tt+U.height}M++}L>0&&(i?(k+=Math.max(0,c),N<w&&this.pc(t,r,w-N,0,A,o-1),y>0&&(h||this.xu(t,y,0,0,o-1),w+=y)):(w+=Math.max(0,c),D<k&&this.pc(t,r,0,k-D,A,o-1),y>0&&(h||this.xu(t,0,y,0,o-1),k+=y)));let E=0,B=0;switch(r){case 20:i?E+=w/2-t.focus.x-f/2:B+=k/2-t.focus.y-f/2;break;default:case 21:if(L>0)i?E+=w/2-t.focus.x-f/2:B+=k/2-t.focus.y-f/2;else{let z=o;if(i){let U=n[0].U.x+n[0].at.x,tt=n[z-1].U.x+n[z-1].at.x+n[z-1].focus.x*2;E+=U+(tt-U)/2-t.focus.x-f/2}else{let U=n[0].U.y+n[0].at.y,tt=n[z-1].U.y+n[z-1].at.y+n[z-1].focus.y*2;B+=U+(tt-U)/2-t.focus.y-f/2}}break;case 22:i?(E-=f,w+=f):(B-=f,k+=f);break;case 23:i?(E+=w-t.width+f,w+=f):(B+=k-t.height+f,k+=f);break;case 24:case 25:i?o>1?E+=F+d/2-t.focus.x:E+=n[0].focus.x-t.focus.x+n[0].at.x:o>1?B+=F+d/2-t.focus.y:B+=n[0].focus.y-t.focus.y+n[0].at.y;break;case 26:i?E+=w+d/2-t.focus.x:B+=k+d/2-t.focus.y;break;case 27:break;case 28:let X=this.customAlignment(t,E,B,w,k);E=X[0],B=X[1],w=X[2],k=X[3];break}for(let X=0;X<o;X++){let z=n[X];i?z.U.e(z.U.x+z.at.x-E,z.U.y+(e>135?(l?-k:-z.dt.height)+z.at.y-c:v+c+z.at.y)):z.U.e(z.U.x+(e>135?(l?-w:-z.dt.width)+z.at.x-c:b+c+z.at.x),z.U.y+z.at.y-B)}i?(w=this.bL(t,w,E),E<0&&(E=0),e>135&&(B+=k+c),k=Math.max(Math.max(k,v),k+v+c)):(e>135&&(E+=w+c),w=Math.max(Math.max(w,b),w+b+c),k=this.kL(t,k,B),B<0&&(B=0)),t.at.e(E,B),t.dt.e(w,k)}customAlignment(t,e,i,s,n){return[e,i,s,n]}IF(t,e,i,s,n,o,r){let a=e.length;if(a===0)return r.e(i,0,n,o),r;if(a===1){let y=e[0];return n=y.dt.width,o=y.dt.height,r.e(i,0,n,o),r}let h=t.nodeSpacing,l=t.rowSpacing,u=this.orthoAngle(t)===90,c=0,d=0,f=0;for(let y=0;y<a;y++){if(y%2!==0||a>1&&y===a-1)continue;let b=e[y],v=b.dt,w=c===0?0:l;if(u){let k=this.computeBusNodeSpacing(b)-h;b.U.e(i-(v.width+k),f+w),n=Math.max(n,v.width+k),o=Math.max(o,f+w+v.height),f+=w+v.height}else{let k=this.computeBusNodeSpacing(b)-h;b.U.e(d+w,i-(v.height+k)),o=Math.max(o,v.height+k),n=Math.max(n,d+w+v.width),d+=w+v.width}c++}c=0;let p=d,g=f;u?(d=i+h,f=0):(d=0,f=i+h);for(let y=0;y<a;y++){if(y%2===0)continue;let b=e[y],v=b.dt,w=c===0?0:l;if(u){let k=this.computeBusNodeSpacing(b)-h;b.U.e(d+k,f+w),n=Math.max(n,d+v.width+k),o=Math.max(o,f+w+v.height),f+=w+v.height}else{let k=this.computeBusNodeSpacing(b)-h;b.U.e(d+w,f+k),n=Math.max(n,d+w+v.width),o=Math.max(o,f+v.height+k),d+=w+v.width}c++}if(a>1&&a%2===1){let y=e[a-1],b=y.dt,v=this.computeBusLastRowSpacing(y,u?Math.max(Math.abs(g),Math.abs(f)):Math.max(Math.abs(p),Math.abs(d)));if(u){y.U.e(i+h/2-y.focus.x-y.at.x,o+v);let w=i+h/2-y.focus.x-y.at.x;n=Math.max(n,w+b.width),w<0&&(n-=w),o=Math.max(o,Math.max(g,f)+v+b.height),y.U.x<0&&(i=this.hP(t,y.U.x,!1,i,h))}else{y.U.e(n+v,i+h/2-y.focus.y-y.at.y),n=Math.max(n,Math.max(p,d)+v+b.width);let w=i+h/2-y.focus.y-y.at.y;o=Math.max(o,w+b.height),w<0&&(o-=w),y.U.y<0&&(i=this.hP(t,y.U.y,!0,i,h))}}return r.e(i,0,n,o),r}EF(t,e,i,s,n,o,r){let a=e.length;if(a===0)return r.e(i,0,n,o),r;if(a===1){let y=e[0];return n=y.dt.width,o=y.dt.height,r.e(i,0,n,o),r}let h=t.nodeSpacing,l=t.rowSpacing,u=this.orthoAngle(t)===270,c=0,d=0,f=0;for(let y=0;y<a;y++){if(y%2!==0||a>1&&y===a-1)continue;let b=e[y],v=b.dt,w=c===0?0:l;if(u){let k=this.computeBusNodeSpacing(b)-h;f-=w+v.height,b.U.e(i-(v.width+k),f),n=Math.max(n,v.width+k),o=Math.max(o,Math.abs(f))}else{let k=this.computeBusNodeSpacing(b)-h;d-=w+v.width,b.U.e(d,i-(v.height+k)),o=Math.max(o,v.height+k),n=Math.max(n,Math.abs(d))}c++}c=0;let p=d,g=f;u?(d=i+h,f=0):(d=0,f=i+h);for(let y=0;y<a;y++){if(y%2===0)continue;let b=e[y],v=b.dt,w=c===0?0:l;if(u){let k=this.computeBusNodeSpacing(b)-h;f-=w+v.height,b.U.e(d+k,f),n=Math.max(n,d+v.width+k),o=Math.max(o,Math.abs(f))}else{let k=this.computeBusNodeSpacing(b)-h;d-=w+v.width,b.U.e(d,f+k),o=Math.max(o,f+v.height+k),n=Math.max(n,Math.abs(d))}c++}if(a>1&&a%2===1){let y=e[a-1],b=y.dt,v=this.computeBusLastRowSpacing(y,u?Math.max(Math.abs(g),Math.abs(f)):Math.max(Math.abs(p),Math.abs(d)));if(u){y.U.e(i+h/2-y.focus.x-y.at.x,-o-b.height-v);let w=i+h/2-y.focus.x-y.at.x;n=Math.max(n,w+b.width),w<0&&(n-=w),o=Math.max(o,Math.abs(Math.min(g,f))+v+b.height),y.U.x<0&&(i=this.hP(t,y.U.x,!1,i,h))}else{y.U.e(-n-b.width-v,i+h/2-y.focus.y-y.at.y),n=Math.max(n,Math.abs(Math.min(p,d))+v+b.width);let w=i+h/2-y.focus.y-y.at.y;o=Math.max(o,w+b.height),w<0&&(o-=w),y.U.y<0&&(i=this.hP(t,y.U.y,!0,i,h))}}for(let y=0;y<a;y++){let b=e[y];u?b.U.e(b.U.x,b.U.y+o):b.U.e(b.U.x+n,b.U.y)}return r.e(i,0,n,o),r}computeBusNodeSpacing(t){return t.parent===null?0:t.parent.nodeSpacing}computeBusLastRowSpacing(t,e){return t.parent===null?0:t.parent.rowSpacing}hP(t,e,i,s,n){let o=t.children,r=o.length;for(let h=0;h<r;h++)i?o[h].U.e(o[h].U.x,o[h].U.y-e):o[h].U.e(o[h].U.x-e,o[h].U.y);let a=o[r-1];return Math.max(s,i?a.at.y+a.focus.y-n/2:a.at.x+a.focus.x-n/2)}bL(t,e,i){switch(t.alignment){case 21:case 20:let s=e;return i+t.width>s&&(s=i+t.width),i<0&&(s-=i),s;case 22:return t.width>e?t.width:e;case 23:return t.focus.x*2>e?t.width:e+t.width-t.focus.x*2;case 24:case 25:let n=Math.min(0,i),o=Math.max(e,i+t.width);return Math.max(t.width,o-n);case 26:return t.width-t.focus.x+t.nodeSpacing/2+e;case 27:return Math.max(t.width,t.focus.x+t.nodeSpacing/2+e);default:return e}}kL(t,e,i){switch(t.alignment){case 21:case 20:let s=e;return i+t.height>s&&(s=i+t.height),i<0&&(s-=i),s;case 22:return t.height>e?t.height:e;case 23:return t.focus.y*2>e?t.height:e+t.height-t.focus.y*2;case 24:case 25:let n=Math.min(0,i),o=Math.max(e,i+t.height);return Math.max(t.height,o-n);case 26:return t.height-t.focus.y+t.nodeSpacing/2+e;case 27:return Math.max(t.height,t.focus.y+t.nodeSpacing/2+e);default:return e}}PL(t,e,i){switch(t){case 20:e/=2,i/=2;break;case 21:e/=2,i/=2;break;case 22:e=0,i=0;break;case 23:break;default:m.o("Unhandled alignment value "+t.toString())}return new P(e,i)}pc(t,e,i,s,n,o){let r=this.PL(e,i,s);this.xu(t,r.x,r.y,n,o)}xu(t,e,i,s,n){if(e===0&&i===0)return;let o=t.children;for(let r=s;r<=n;r++){let a=o[r].U;a.x+=e,a.y+=i}}aP(t,e,i){let s=t.parent;switch(this.ws){case 1:{let n=t.sourceEdges;for(;n.next();){let o=n.value;o.fromVertex===s&&o.relativePoint.e(e,i)}break}case 2:{let n=t.destinationEdges;for(;n.next();){let o=n.value;o.toVertex===s&&o.relativePoint.e(e,i)}break}default:m.o("Unhandled path value "+this.ws.toString())}}mU(t){if(t.childrenCount===0){let Q=t.parent,rt=!1,ft=0,xt=21;Q!==null&&(ft=Q.angle,xt=Q.alignment,rt=this.isBusAlignment(xt));let Ct=this.xL(t);t.U.e(0,0),t.dt.e(t.width,t.height),t.parent!==null&&t.comments!==null&&((ft===180||ft===270)&&!rt||Ct)?ft===180&&!rt||(ft===90||ft===270)&&Ct?t.at.e(t.width-t.focus.x*2,0):t.at.e(0,t.height-t.focus.y*2):t.at.e(0,0),t.$g=null,t.Zg=null;return}let e=this.orthoAngle(t),i=e===90||e===270,s=0,n=t.children,o=n.length;for(let Q=0;Q<o;Q++){let rt=n[Q];s=Math.max(s,i?rt.dt.width:rt.dt.height)}let r=t.alignment,a=r===22,h=r===23,l=this.isBusAlignment(r),u=Math.max(0,t.breadthLimit),c=this.computeLayerSpacing(t),d=t.nodeSpacing,f=this.computeNodeIndent(t),p=t.rowSpacing,g=0;(a||h)&&(g=Math.max(0,t.rowIndent));let y=t.width,b=t.height,v=0,w=0,k=0,S=null,N=null,D=0,L=0,M=0,A=0,F=0,O=0,E=0,B=0,X=0;if(l&&!this.Lw(r)&&e>135&&n.reverse(),this.Lw(r))if(o>1)for(let Q=0;Q<o;Q++)Q%2===0&&Q!==o-1?B=Math.max(B,i?n[Q].dt.width:n[Q].dt.height):Q%2!==0&&(X=Math.max(X,i?n[Q].dt.width:n[Q].dt.height));else o===1&&(B=i?n[0].dt.width:n[0].dt.height);if(l){switch(r){case 24:let Q=I.l();e<135?this.IF(t,n,B,X,v,w,Q):this.EF(t,n,B,X,v,w,Q),B=Q.x,v=Q.width,w=Q.height,I.i(Q);break;case 26:for(let rt=0;rt<o;rt++){let ft=n[rt],xt=ft.dt,Ct=O===0?0:p;i?(ft.U.e(s-xt.width,A+Ct),v=Math.max(v,xt.width),w=Math.max(w,A+Ct+xt.height),A+=Ct+xt.height):(ft.U.e(M+Ct,s-xt.height),v=Math.max(v,M+Ct+xt.width),w=Math.max(w,xt.height),M+=Ct+xt.width),O++}break;case 27:for(let rt=0;rt<o;rt++){let ft=n[rt],xt=ft.dt,Ct=O===0?0:p;i?(ft.U.e(d/2+t.focus.x,A+Ct),v=Math.max(v,xt.width),w=Math.max(w,A+Ct+xt.height),A+=Ct+xt.height):(ft.U.e(M+Ct,d/2+t.focus.y),v=Math.max(v,M+Ct+xt.width),w=Math.max(w,xt.height),M+=Ct+xt.width),O++}break}S=this.pi(2),N=this.pi(2),i?(S[0].e(0,0),S[1].e(0,w),N[0].e(v,0),N[1].e(v,w)):(S[0].e(0,0),S[1].e(v,0),N[0].e(0,w),N[1].e(v,w))}else for(let Q=0;Q<o;Q++){let rt=n[Q],ft=rt.dt;if(i){u>0&&O>0&&M+d+ft.width>u&&(M<s&&this.pc(t,r,s-M,0,E,Q-1),F++,O=0,E=Q,k=w,M=0,A=e>135?-w-p:w+p),this.aP(rt,0,A);let xt=0;if(O===0)S=rt.$g,N=rt.Zg,D=ft.width,L=ft.height,(S===null||N===null||e!==this.orthoAngle(rt))&&(S=this.pi(2),N=this.pi(2),S[0].e(0,0),S[1].e(0,L),N[0].e(D,0),N[1].e(D,L));else{let Ct=m.st(),_=I.l();this.UF(t,rt,S,N,D,L,Ct,_),xt=_.x,S=Ct[0],N=Ct[1],D=_.width,L=_.height,m.Z(Ct),M<ft.width&&xt<0&&(this.xu(t,-xt,0,E,Q-1),this.cP(S,-xt,0),this.cP(N,-xt,0),xt=0),I.i(_)}rt.U.e(xt,A),v=Math.max(v,D),w=Math.max(w,k+(F===0?0:p)+ft.height),M=D}else{u>0&&O>0&&A+d+ft.height>u&&(A<s&&this.pc(t,r,0,s-A,E,Q-1),F++,O=0,E=Q,k=v,A=0,M=e>135?-v-p:v+p),this.aP(rt,M,0);let xt=0;if(O===0)S=rt.$g,N=rt.Zg,D=ft.width,L=ft.height,(S===null||N===null||e!==this.orthoAngle(rt))&&(S=this.pi(2),N=this.pi(2),S[0].e(0,0),S[1].e(D,0),N[0].e(0,L),N[1].e(D,L));else{let Ct=m.st(),_=I.l();this.UF(t,rt,S,N,D,L,Ct,_),xt=_.x,S=Ct[0],N=Ct[1],D=_.width,L=_.height,m.Z(Ct),A<ft.height&&xt<0&&(this.xu(t,0,-xt,E,Q-1),this.cP(S,0,-xt),this.cP(N,0,-xt),xt=0),I.i(_)}rt.U.e(M,xt),w=Math.max(w,L),v=Math.max(v,k+(F===0?0:p)+ft.width),A=L}O++}F>0&&(i?(w+=Math.max(0,c),M<v&&this.pc(t,r,v-M,0,E,o-1),g>0&&(h||this.xu(t,g,0,0,o-1),v+=g)):(v+=Math.max(0,c),A<w&&this.pc(t,r,0,w-A,E,o-1),g>0&&(h||this.xu(t,0,g,0,o-1),w+=g)));let z=0,U=0;switch(r){case 20:i?z+=v/2-t.focus.x-f/2:U+=w/2-t.focus.y-f/2;break;default:case 21:if(F>0)i?z+=v/2-t.focus.x-f/2:U+=w/2-t.focus.y-f/2;else{let rt=o;if(i){let ft=n[0].U.x+n[0].at.x,xt=n[rt-1].U.x+n[rt-1].at.x+n[rt-1].focus.x*2;z+=ft+(xt-ft)/2-t.focus.x-f/2}else{let ft=n[0].U.y+n[0].at.y,xt=n[rt-1].U.y+n[rt-1].at.y+n[rt-1].focus.y*2;U+=ft+(xt-ft)/2-t.focus.y-f/2}}break;case 22:i?(z-=f,v+=f):(U-=f,w+=f);break;case 23:i?(z+=v-t.width+f,v+=f):(U+=w-t.height+f,w+=f);break;case 24:i?o>1?z+=B+d/2-t.focus.x:z+=n[0].focus.x-t.focus.x+n[0].at.x:o>1?U+=B+d/2-t.focus.y:U+=n[0].focus.y-t.focus.y+n[0].at.y;break;case 26:i?z+=v+d/2-t.focus.x:U+=w+d/2-t.focus.y;break;case 27:break;case 28:let Q=this.customAlignment(t,z,U,v,w);z=Q[0],U=Q[1],v=Q[2],w=Q[3];break}for(let Q=0;Q<o;Q++){let rt=n[Q];i?rt.U.e(rt.U.x+rt.at.x-z,rt.U.y+(e>135?(l?-w:-rt.dt.height)+rt.at.y-c:b+c+rt.at.y)):rt.U.e(rt.U.x+(e>135?(l?-v:-rt.dt.width)+rt.at.x-c:y+c+rt.at.x),rt.U.y+rt.at.y-U)}let tt=0,st=0;if(l)i?(v=this.bL(t,v,z),z<0&&(z=0),e>135&&(U+=w+c),w+=b+c,r===27&&(tt+=d/2+t.focus.x),st+=b+c):(e>135&&(z+=v+c),v+=y+c,w=this.kL(t,w,U),U<0&&(U=0),r===27&&(st+=d/2+t.focus.y),tt+=y+c);else if(i){if(t.comments===null){if(y>v){let Q=this.PL(r,y-v,0);tt=Q.x,st=Q.y,v=y,z=0}}else v=this.bL(t,v,z);z<0&&(tt-=z,z=0),e>135&&(U+=w+c),w=Math.max(Math.max(w,b),w+b+c),st+=b+c}else{if(e>135&&(z+=v+c),v=Math.max(Math.max(v,y),v+y+c),t.comments===null){if(b>w){let Q=this.PL(r,0,b-w);tt=Q.x,st=Q.y,w=b,U=0}}else w=this.kL(t,w,U);U<0&&(st-=U,U=0),tt+=y+c}let Z,et;if(F>0)Z=this.pi(4),et=this.pi(4),i?(Z[2].e(0,b+c),Z[3].e(Z[2].x,w),et[2].e(v,Z[2].y),et[3].e(et[2].x,Z[3].y)):(Z[2].e(y+c,0),Z[3].e(v,Z[2].y),et[2].e(Z[2].x,w),et[3].e(Z[3].x,et[2].y));else{Z=this.pi(S.length+2),et=this.pi(N.length+2);for(let Q=0;Q<S.length;Q++){let rt=S[Q];Z[Q+2].e(rt.x+tt,rt.y+st)}for(let Q=0;Q<N.length;Q++){let rt=N[Q];et[Q+2].e(rt.x+tt,rt.y+st)}}i?(Z[0].e(z,0),Z[1].e(Z[0].x,b),Z[2].y<Z[1].y&&(Z[2].x>Z[0].x?Z[2].h(Z[1]):Z[1].h(Z[2])),Z[3].y<Z[2].y&&(Z[3].x>Z[0].x?Z[3].h(Z[2]):Z[2].h(Z[3])),et[0].e(z+y,0),et[1].e(et[0].x,b),et[2].y<et[1].y&&(et[2].x<et[0].x?et[2].h(et[1]):et[1].h(et[2])),et[3].y<et[2].y&&(et[3].x<et[0].x?et[3].h(et[2]):et[2].h(et[3])),Z[2].y-=c/2,et[2].y-=c/2):(Z[0].e(0,U),Z[1].e(y,Z[0].y),Z[2].x<Z[1].x&&(Z[2].y>Z[0].y?Z[2].h(Z[1]):Z[1].h(Z[2])),Z[3].x<Z[2].x&&(Z[3].y>Z[0].y?Z[3].h(Z[2]):Z[2].h(Z[3])),et[0].e(0,U+b),et[1].e(y,et[0].y),et[2].x<et[1].x&&(et[2].y<et[0].y?et[2].h(et[1]):et[1].h(et[2])),et[3].x<et[2].x&&(et[3].y<et[0].y?et[3].h(et[2]):et[2].h(et[3])),Z[2].x-=c/2,et[2].x-=c/2),this.un(S),this.un(N),t.$g=Z,t.Zg=et,t.at.e(z,U),t.dt.e(v,w)}cP(t,e,i){for(let s=0;s<t.length;s++){let n=t[s];n.x+=e,n.y+=i}}UF(t,e,i,s,n,o,r,a){let h=this.orthoAngle(t),l=h===90||h===270,u=t.nodeSpacing,c=i,d=s,f=n,p=o,g=e.$g,y=e.Zg,b=e.dt,v=l?Math.max(p,b.height):Math.max(f,b.width);if((g===null||h!==this.orthoAngle(e))&&(g=this.pi(2),y=this.pi(2),l?(g[0].e(0,0),g[1].e(0,b.height),y[0].e(b.width,0),y[1].e(y[0].x,g[1].y)):(g[0].e(0,0),g[1].e(b.width,0),y[0].e(0,b.height),y[1].e(g[1].x,y[0].y))),l){let w=f,k=w-this.pU(d,g,w);return k+=u,i=this.yU(c,g,k),s=this.wU(d,y,k),n=Math.max(0,k)+b.width,o=v,this.un(c),this.un(g),this.un(d),this.un(y),r[0]=i,r[1]=s,a.e(k,0,n,o),a}else{let w=p,k=w-this.xU(d,g,w);return k+=u,i=this.bU(c,g,k),s=this.kU(d,y,k),n=v,o=Math.max(0,k)+b.height,this.un(c),this.un(g),this.un(d),this.un(y),r[0]=i,r[1]=s,a.e(k,0,n,o),a}}bU(t,e,i){if(t===null||t.length<2||e===null||e.length<2)return null;let s=this.pi(t.length+e.length),n=0,o=0,r=0;for(;o<e.length&&e[o].x<t[0].x;){let l=e[o++];s[r++].e(l.x,l.y+i)}for(;n<t.length;){let l=t[n++];s[r++].e(l.x,l.y)}let a=t[t.length-1].x;for(;o<e.length&&e[o].x<=a;)o++;for(;o<e.length&&e[o].x>a;){let l=e[o++];s[r++].e(l.x,l.y+i)}let h=this.pi(r);for(n=0;n<r;n++)h[n].h(s[n]);return this.un(s),h}yU(t,e,i){if(t===null||t.length<2||e===null||e.length<2)return null;let s=this.pi(t.length+e.length),n=0,o=0,r=0;for(;o<e.length&&e[o].y<t[0].y;){let l=e[o++];s[r++].e(l.x+i,l.y)}for(;n<t.length;){let l=t[n++];s[r++].e(l.x,l.y)}let a=t[t.length-1].y;for(;o<e.length&&e[o].y<=a;)o++;for(;o<e.length&&e[o].y>a;){let l=e[o++];s[r++].e(l.x+i,l.y)}let h=this.pi(r);for(n=0;n<r;n++)h[n].h(s[n]);return this.un(s),h}kU(t,e,i){if(t===null||t.length<2||e===null||e.length<2)return null;let s=this.pi(t.length+e.length),n=0,o=0,r=0;for(;n<t.length&&t[n].x<e[0].x;){let l=t[n++];s[r++].e(l.x,l.y)}for(;o<e.length;){let l=e[o++];s[r++].e(l.x,l.y+i)}let a=e[e.length-1].x;for(;n<t.length&&t[n].x<=a;)n++;for(;n<t.length&&t[n].x>a;){let l=t[n++];s[r++].e(l.x,l.y)}let h=this.pi(r);for(n=0;n<r;n++)h[n].h(s[n]);return this.un(s),h}wU(t,e,i){if(t===null||t.length<2||e===null||e.length<2)return null;let s=this.pi(t.length+e.length),n=0,o=0,r=0;for(;n<t.length&&t[n].y<e[0].y;){let l=t[n++];s[r++].e(l.x,l.y)}for(;o<e.length;){let l=e[o++];s[r++].e(l.x+i,l.y)}let a=e[e.length-1].y;for(;n<t.length&&t[n].y<=a;)n++;for(;n<t.length&&t[n].y>a;){let l=t[n++];s[r++].e(l.x,l.y)}let h=this.pi(r);for(n=0;n<r;n++)h[n].h(s[n]);return this.un(s),h}xU(t,e,i){let s=9999999;if(t===null||t.length<2||e===null||e.length<2)return s;let n=0,o=0;for(;n<t.length&&o<e.length;){let r=t[n],a=e[o],h=a.x,l=a.y;l+=i;let u=r;n+1<t.length&&(u=t[n+1]);let c=a,d=c.x,f=c.y;o+1<e.length&&(c=e[o+1],d=c.x,f=c.y,f+=i);let p=s;r.x===h?p=l-r.y:r.x>h&&r.x<d?p=l+(r.x-h)/(d-h)*(f-l)-r.y:h>r.x&&h<u.x&&(p=l-(r.y+(h-r.x)/(u.x-r.x)*(u.y-r.y))),p<s&&(s=p),u.x<=r.x?n++:d<=h?o++:(u.x<=d&&n++,d<=u.x&&o++)}return s}pU(t,e,i){let s=9999999;if(t===null||t.length<2||e===null||e.length<2)return s;let n=0,o=0;for(;n<t.length&&o<e.length;){let r=t[n],a=e[o],h=a.x,l=a.y;h+=i;let u=r;n+1<t.length&&(u=t[n+1]);let c=a,d=c.x,f=c.y;o+1<e.length&&(c=e[o+1],d=c.x,f=c.y,d+=i);let p=s;r.y===l?p=h-r.x:r.y>l&&r.y<f?p=h+(r.y-l)/(f-l)*(d-h)-r.x:l>r.y&&l<u.y&&(p=h-(r.x+(l-r.y)/(u.y-r.y)*(u.x-r.x))),p<s&&(s=p),u.y<=r.y?n++:f<=l?o++:(u.y<=f&&n++,f<=u.y&&o++)}return s}pi(t){let e=this.lP[t];if(e!==void 0){let s=e.pop();if(s!==void 0)return s}let i=[];for(let s=0;s<t;s++)i[s]=new P;return i}un(t){if(!t)return;let e=t.length,i=this.lP[e];i===void 0&&(i=[],this.lP[e]=i),i.push(t)}arrangeTrees(){if(this.He===52){let t=this.Ie.iterator;for(;t.next();){let e=t.value;if(!(e instanceof Rt))continue;let i=e.node;if(i===null)continue;let s=i.position,n=s.x,o=s.y;isFinite(n)||(n=0),isFinite(o)||(o=0),this.SL(e,n,o)}}else{let t=[],e=this.Ie.iterator;for(;e.next();){let o=e.value;o instanceof Rt&&t.push(o)}switch(this.sorting){default:case 10:break;case 11:t.reverse();break;case 12:t.sort(this.comparer);break;case 13:t.sort(this.comparer),t.reverse();break}let i=this.arrangementOrigin,s=i.x,n=i.y;for(let o=0;o<t.length;o++){let r=t[o];switch(this.SL(r,s+r.at.x,n+r.at.y),this.He){case 50:n+=r.dt.height+this.Us.height;break;default:case 51:s+=r.dt.width+this.Us.width;break}}}}SL(t,e,i){if(t===null)return;t.x=e,t.y=i;let s=t.children,n=s.length;for(let o=0;o<n;o++){let r=s[o];this.SL(r,e+r.U.x,i+r.U.y)}}commitLayout(){this.ww(),this.commitNodes(),this.pL(),this.isRouting&&this.commitLinks()}commitNodes(){if(this.network===null)return;let t=this.network.vertexes.iterator;for(;t.next();)t.value.commit();for(t.reset();t.next();){let e=t.value;this.layoutComments(e)}}pL(){if(this.network===null||this.layerStyle!==62)return;let t=this.yL,e=[],i,s=this.network.vertexes.iterator;for(;s.next();){let h=s.value;i===void 0?i=h.bounds.copy():i.unionRect(h.bounds);let l=e[h.level];l===void 0?l=this.computeLayerSpacing(h):l=Math.max(l,this.computeLayerSpacing(h)),e[h.level]=l}if(!i)return;for(let h=0;h<e.length;h++)e[h]===void 0&&(e[h]=0);let n;this.angle===90||this.angle===270?(i.inflate(this.nodeSpacing/2,this.layerSpacing),n=new P(-this.nodeSpacing/2,-this.layerSpacing/2)):(i.inflate(this.layerSpacing,this.nodeSpacing/2),n=new P(-this.layerSpacing/2,-this.nodeSpacing/2));let o=[],r=this.angle===90||this.angle===270?i.width:i.height,a=0;if(this.angle===180||this.angle===270)for(let h=0;h<t.length;h++)a+=t[h]+e[h];for(let h=0;h<t.length;h++){let l=t[h]+e[h];this.angle===270?(a-=l,o.push(new I(0,a,r,l))):this.angle===90?(o.push(new I(0,a,r,l)),a+=l):this.angle===180?(a-=l,o.push(new I(a,0,l,r))):(o.push(new I(a,0,l,r)),a+=l)}this.commitLayers(o,n)}commitLayers(t,e){}commitLinks(){if(this.network===null)return;let t=this.network.edges.iterator;for(;t.next();)t.value.commit()}ww(){let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.VF(e)}}VF(t){if(t===null)return;this.setPortSpots(t);let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];this.VF(n)}}setPortSpots(t){let e=t.alignment;if(this.isBusAlignment(e))this.PU(t,e);else{let i=this.orthoAngle(t);if(this.ws===1){let s=t.destinationEdges;for(;s.next();){let n=s.value.link;if(n!==null){if(t.setsPortSpot)if(t.portSpot.isDefault())switch(i){case 0:n.fromSpot=T.MiddleRight;break;case 90:n.fromSpot=T.MiddleBottom;break;case 180:n.fromSpot=T.MiddleLeft;break;default:n.fromSpot=T.MiddleTop;break}else n.fromSpot=t.portSpot;if(t.setsChildPortSpot)if(t.childPortSpot.isDefault())switch(i){case 0:n.toSpot=T.MiddleLeft;break;case 90:n.toSpot=T.MiddleTop;break;case 180:n.toSpot=T.MiddleRight;break;default:n.toSpot=T.MiddleBottom;break}else n.toSpot=t.childPortSpot}}}else{let s=t.sourceEdges;for(;s.next();){let n=s.value.link;if(n!==null){if(t.setsPortSpot)if(t.portSpot.isDefault())switch(i){case 0:n.toSpot=T.MiddleRight;break;case 90:n.toSpot=T.MiddleBottom;break;case 180:n.toSpot=T.MiddleLeft;break;default:n.toSpot=T.MiddleTop;break}else n.toSpot=t.portSpot;if(t.setsChildPortSpot)if(t.childPortSpot.isDefault())switch(i){case 0:n.fromSpot=T.MiddleLeft;break;case 90:n.fromSpot=T.MiddleTop;break;case 180:n.fromSpot=T.MiddleRight;break;default:n.fromSpot=T.MiddleBottom;break}else n.fromSpot=t.childPortSpot}}}}}PU(t,e){let i=this.ws===1,s=this.orthoAngle(t),n;switch(s){case 0:n=T.MiddleRight;break;case 90:n=T.MiddleBottom;break;case 180:n=T.MiddleLeft;break;default:n=T.MiddleTop;break}let o=t.children,r=o.length;switch(e){case 24:case 25:{for(let a=0;a<r;a++){let h=o[a],l=(i?h.sourceEdges:h.destinationEdges).first();if(l===null)continue;let u=l.link;if(u!==null){let c=s===90||s===270?T.MiddleLeft:T.MiddleTop;if(r===1||a===r-1&&r%2===1)switch(s){case 0:c=T.MiddleLeft;break;case 90:c=T.MiddleTop;break;case 180:c=T.MiddleRight;break;default:c=T.MiddleBottom;break}else a%2===0&&(c=s===90||s===270?T.MiddleRight:T.MiddleBottom);i?(t.setsPortSpot&&(u.fromSpot=n),t.setsChildPortSpot&&(u.toSpot=c)):(t.setsPortSpot&&(u.fromSpot=c),t.setsChildPortSpot&&(u.toSpot=n))}}break}case 26:{let a=s===90||s===270?T.MiddleRight:T.MiddleBottom,h=i?t.destinationEdges:t.sourceEdges;for(;h.next();){let l=h.value.link;l!==null&&(i?(t.setsPortSpot&&(l.fromSpot=n),t.setsChildPortSpot&&(l.toSpot=a)):(t.setsPortSpot&&(l.fromSpot=a),t.setsChildPortSpot&&(l.toSpot=n)))}break}case 27:{let a=s===90||s===270?T.MiddleLeft:T.MiddleTop,h=i?t.destinationEdges:t.sourceEdges;for(;h.next();){let l=h.value.link;l!==null&&(i?(t.setsPortSpot&&(l.fromSpot=n),t.setsChildPortSpot&&(l.toSpot=a)):(t.setsPortSpot&&(l.fromSpot=a),t.setsChildPortSpot&&(l.toSpot=n)))}break}}}orthoAngle(t){let e=t.angle;return e<=45?0:e<=135?90:e<=225?180:e<=315?270:0}computeLayerSpacing(t){let e=this.orthoAngle(t),i=e===90||e===270,s=t.layerSpacing;if(t.layerSpacingParentOverlap>0){let n=Math.min(1,t.layerSpacingParentOverlap);s-=i?t.height*n:t.width*n}return s<(i?-t.height:-t.width)&&(s=i?-t.height:-t.width),s}computeNodeIndent(t){let e=this.orthoAngle(t),i=e===90||e===270,s=t.nodeIndent;if(t.nodeIndentPastParent>0){let n=Math.min(1,t.nodeIndentPastParent);s+=i?t.width*n:t.height*n}return s=Math.max(0,s),s}get roots(){return this.Ie}set roots(t){this.Ie!==t&&(this.Ie=t,this.p())}get path(){return this.Re}set path(t){this.Re!==t&&(this.Re=t,this.p())}get treeStyle(){return this.wu}set treeStyle(t){this.wu!==t&&(t===40||t===42||t===41||t===43)&&(this.wu=t,this.p())}get layerStyle(){return this.Jg}set layerStyle(t){this.Jg!==t&&(t===60||t===61||t===62)&&(this.Jg=t,this.p())}get comments(){return this.Gi}set comments(t){this.Gi!==t&&(m.s(t,"boolean",Vt,"comments"),this.Gi=t,this.p())}get arrangement(){return this.He}set arrangement(t){this.He!==t&&(t===50||t===51||t===52)&&(this.He=t,this.p())}get arrangementSpacing(){return this.Us}set arrangementSpacing(t){this.Us.equals(t)||(this.Us.h(t),this.p())}get rootDefaults(){return this.V}set rootDefaults(t){this.V!==t&&(this.V=t,this.p())}get alternateDefaults(){return this.B}set alternateDefaults(t){this.B!==t&&(this.B=t,this.p())}get sorting(){return this.V.sorting}set sorting(t){this.V.sorting!==t&&(this.V.sorting=t,this.p())}get comparer(){return this.V.comparer}set comparer(t){this.V.comparer!==t&&(m.S(t,Vt,"comparer"),this.V.comparer=t,this.p())}get angle(){return this.V.angle}set angle(t){this.V.angle!==t&&(m.s(t,"number",Vt,"angle"),t===0||t===90||t===180||t===270?(this.V.angle=t,this.p()):m.o("TreeLayout.angle must be 0, 90, 180, or 270"))}get alignment(){return this.V.alignment}set alignment(t){this.V.alignment!==t&&(this.V.alignment=t,this.p())}get nodeIndent(){return this.V.nodeIndent}set nodeIndent(t){this.V.nodeIndent!==t&&(m.s(t,"number",Vt,"nodeIndent"),t>=0&&(this.V.nodeIndent=t,this.p()))}get nodeIndentPastParent(){return this.V.nodeIndentPastParent}set nodeIndentPastParent(t){this.V.nodeIndentPastParent!==t&&(m.s(t,"number",Vt,"nodeIndentPastParent"),t>=0&&t<=1&&(this.V.nodeIndentPastParent=t,this.p()))}get nodeSpacing(){return this.V.nodeSpacing}set nodeSpacing(t){this.V.nodeSpacing!==t&&(m.s(t,"number",Vt,"nodeSpacing"),this.V.nodeSpacing=t,this.p())}get layerSpacing(){return this.V.layerSpacing}set layerSpacing(t){this.V.layerSpacing!==t&&(m.s(t,"number",Vt,"layerSpacing"),this.V.layerSpacing=t,this.p())}get layerSpacingParentOverlap(){return this.V.layerSpacingParentOverlap}set layerSpacingParentOverlap(t){this.V.layerSpacingParentOverlap!==t&&(m.s(t,"number",Vt,"layerSpacingParentOverlap"),t>=0&&t<=1&&(this.V.layerSpacingParentOverlap=t,this.p()))}get compaction(){return this.V.compaction}set compaction(t){this.V.compaction!==t&&(t===30||t===31)&&(this.V.compaction=t,this.p())}get breadthLimit(){return this.V.breadthLimit}set breadthLimit(t){this.V.breadthLimit!==t&&(m.s(t,"number",Vt,"breadthLimit"),t>=0&&(this.V.breadthLimit=t,this.p()))}get rowSpacing(){return this.V.rowSpacing}set rowSpacing(t){this.V.rowSpacing!==t&&(m.s(t,"number",Vt,"rowSpacing"),this.V.rowSpacing=t,this.p())}get rowIndent(){return this.V.rowIndent}set rowIndent(t){this.V.rowIndent!==t&&(m.s(t,"number",Vt,"rowIndent"),t>=0&&(this.V.rowIndent=t,this.p()))}get commentSpacing(){return this.V.commentSpacing}set commentSpacing(t){this.V.commentSpacing!==t&&(m.s(t,"number",Vt,"commentSpacing"),this.V.commentSpacing=t,this.p())}get commentMargin(){return this.V.commentMargin}set commentMargin(t){this.V.commentMargin!==t&&(m.s(t,"number",Vt,"commentMargin"),this.V.commentMargin=t,this.p())}get setsPortSpot(){return this.V.setsPortSpot}set setsPortSpot(t){this.V.setsPortSpot!==t&&(m.s(t,"boolean",Vt,"setsPortSpot"),this.V.setsPortSpot=t,this.p())}get portSpot(){return this.V.portSpot}set portSpot(t){this.V.portSpot.equals(t)||(this.V.portSpot=t,this.p())}get setsChildPortSpot(){return this.V.setsChildPortSpot}set setsChildPortSpot(t){this.V.setsChildPortSpot!==t&&(m.s(t,"boolean",Vt,"setsChildPortSpot"),this.V.setsChildPortSpot=t,this.p())}get childPortSpot(){return this.V.childPortSpot}set childPortSpot(t){this.V.childPortSpot.equals(t)||(this.V.childPortSpot=t,this.p())}get alternateSorting(){return this.B.sorting}set alternateSorting(t){this.B.sorting!==t&&(this.B.sorting=t,this.p())}get alternateComparer(){return this.B.comparer}set alternateComparer(t){this.B.comparer!==t&&(m.S(t,Vt,"alternateComparer"),this.B.comparer=t,this.p())}get alternateAngle(){return this.B.angle}set alternateAngle(t){this.B.angle!==t&&(m.s(t,"number",Vt,"alternateAngle"),(t===0||t===90||t===180||t===270)&&(this.B.angle=t,this.p()))}get alternateAlignment(){return this.B.alignment}set alternateAlignment(t){this.B.alignment!==t&&(this.B.alignment=t,this.p())}get alternateNodeIndent(){return this.B.nodeIndent}set alternateNodeIndent(t){this.B.nodeIndent!==t&&(m.s(t,"number",Vt,"alternateNodeIndent"),t>=0&&(this.B.nodeIndent=t,this.p()))}get alternateNodeIndentPastParent(){return this.B.nodeIndentPastParent}set alternateNodeIndentPastParent(t){this.B.nodeIndentPastParent!==t&&(m.s(t,"number",Vt,"alternateNodeIndentPastParent"),t>=0&&t<=1&&(this.B.nodeIndentPastParent=t,this.p()))}get alternateNodeSpacing(){return this.B.nodeSpacing}set alternateNodeSpacing(t){this.B.nodeSpacing!==t&&(m.s(t,"number",Vt,"alternateNodeSpacing"),this.B.nodeSpacing=t,this.p())}get alternateLayerSpacing(){return this.B.layerSpacing}set alternateLayerSpacing(t){this.B.layerSpacing!==t&&(m.s(t,"number",Vt,"alternateLayerSpacing"),this.B.layerSpacing=t,this.p())}get alternateLayerSpacingParentOverlap(){return this.B.layerSpacingParentOverlap}set alternateLayerSpacingParentOverlap(t){this.B.layerSpacingParentOverlap!==t&&(m.s(t,"number",Vt,"alternateLayerSpacingParentOverlap"),t>=0&&t<=1&&(this.B.layerSpacingParentOverlap=t,this.p()))}get alternateCompaction(){return this.B.compaction}set alternateCompaction(t){this.B.compaction!==t&&(t===30||t===31)&&(this.B.compaction=t,this.p())}get alternateBreadthLimit(){return this.B.breadthLimit}set alternateBreadthLimit(t){this.B.breadthLimit!==t&&(m.s(t,"number",Vt,"alternateBreadthLimit"),t>=0&&(this.B.breadthLimit=t,this.p()))}get alternateRowSpacing(){return this.B.rowSpacing}set alternateRowSpacing(t){this.B.rowSpacing!==t&&(m.s(t,"number",Vt,"alternateRowSpacing"),this.B.rowSpacing=t,this.p())}get alternateRowIndent(){return this.B.rowIndent}set alternateRowIndent(t){this.B.rowIndent!==t&&(m.s(t,"number",Vt,"alternateRowIndent"),t>=0&&(this.B.rowIndent=t,this.p()))}get alternateCommentSpacing(){return this.B.commentSpacing}set alternateCommentSpacing(t){this.B.commentSpacing!==t&&(m.s(t,"number",Vt,"alternateCommentSpacing"),this.B.commentSpacing=t,this.p())}get alternateCommentMargin(){return this.B.commentMargin}set alternateCommentMargin(t){this.B.commentMargin!==t&&(m.s(t,"number",Vt,"alternateCommentMargin"),this.B.commentMargin=t,this.p())}get alternateSetsPortSpot(){return this.B.setsPortSpot}set alternateSetsPortSpot(t){this.B.setsPortSpot!==t&&(m.s(t,"boolean",Vt,"alternateSetsPortSpot"),this.B.setsPortSpot=t,this.p())}get alternatePortSpot(){return this.B.portSpot}set alternatePortSpot(t){this.B.portSpot.equals(t)||(this.B.portSpot=t,this.p())}get alternateSetsChildPortSpot(){return this.B.setsChildPortSpot}set alternateSetsChildPortSpot(t){this.B.setsChildPortSpot!==t&&(m.s(t,"boolean",Vt,"alternateSetsChildPortSpot"),this.B.setsChildPortSpot=t,this.p())}get alternateChildPortSpot(){return this.B.childPortSpot}set alternateChildPortSpot(t){this.B.childPortSpot.equals(t)||(this.B.childPortSpot=t,this.p())}static PathDefault=0;static PathDestination=1;static PathSource=2;static SortingForwards=10;static SortingReverse=11;static SortingAscending=12;static SortingDescending=13;static AlignmentCenterSubtrees=20;static AlignmentCenterChildren=21;static AlignmentStart=22;static AlignmentEnd=23;static AlignmentBus=24;static AlignmentBusBranching=25;static AlignmentTopLeftBus=26;static AlignmentBottomRightBus=27;static CompactionNone=30;static CompactionBlock=31;static StyleLayered=40;static StyleLastParents=41;static StyleAlternating=42;static StyleRootOnly=43;static ArrangementVertical=50;static ArrangementHorizontal=51;static ArrangementFixedRoots=52;static LayerIndividual=60;static LayerSiblings=61;static LayerUniform=62}class gs extends Re{constructor(t){super(t)}createVertex(){return new Rt(this)}createEdge(){return new sn(this)}}class Rt extends Ee{U;dt;at;fP;uP;dP;gP;mP;pP;yP;Gi;$g;Zg;Si;Mi;Xt;de;Aw;Tw;Dw;Vs;vw;Fw;Rw;Ow;Iw;Ew;Uw;Vw;Bw;zw;Xw;constructor(t){super(t),this.fP=!1,this.uP=null,this.dP=[],this.gP=0,this.mP=0,this.pP=0,this.yP=0,this.Gi=null,this.U=new P(0,0),this.dt=new nt(0,0),this.at=new P(0,0),this.$g=null,this.Zg=null,this.Si=10,this.Mi=Ee.standardComparer,this.Xt=0,this.de=21,this.Aw=0,this.Tw=0,this.Dw=20,this.Vs=50,this.vw=0,this.Fw=31,this.Rw=0,this.Ow=25,this.Iw=10,this.Ew=10,this.Uw=20,this.Vw=!0,this.Bw=T.Default,this.zw=!0,this.Xw=T.Default}copyInheritedPropertiesFrom(t){t!==null&&(this.Si=t.sorting,this.Mi=t.comparer,this.Xt=t.angle,this.de=t.alignment,this.Aw=t.nodeIndent,this.Tw=t.nodeIndentPastParent,this.Dw=t.nodeSpacing,this.Vs=t.layerSpacing,this.vw=t.layerSpacingParentOverlap,this.Fw=t.compaction,this.Rw=t.breadthLimit,this.Ow=t.rowSpacing,this.Iw=t.rowIndent,this.Ew=t.commentSpacing,this.Uw=t.commentMargin,this.Vw=t.setsPortSpot,this.Bw=t.portSpot,this.zw=t.setsChildPortSpot,this.Xw=t.childPortSpot)}get initialized(){return this.fP}set initialized(t){this.fP!==t&&(m.s(t,"boolean",Rt,"initialized"),this.fP=t)}get parent(){return this.uP}set parent(t){this.uP!==t&&(this.uP=t)}get children(){return this.dP}set children(t){if(this.dP!==t){if(t!==null&&!Array.isArray(t)&&m.si(t,"Array",Rt,"children:value"),t!==null){let e=t.length;for(let i=0;i<e;i++){let s=t[i]}}this.dP=t}}get level(){return this.gP}set level(t){this.gP!==t&&(m.s(t,"number",Rt,"level"),this.gP=t)}get descendantCount(){return this.mP}set descendantCount(t){this.mP!==t&&(m.s(t,"number",Rt,"descendantCount"),this.mP=t)}get maxChildrenCount(){return this.pP}set maxChildrenCount(t){this.pP!==t&&(m.s(t,"number",Rt,"maxChildrenCount"),this.pP=t)}get maxGenerationCount(){return this.yP}set maxGenerationCount(t){this.yP!==t&&(m.s(t,"number",Rt,"maxGenerationCount"),this.yP=t)}get comments(){return this.Gi}set comments(t){if(this.Gi!==t){if(t!==null&&!Array.isArray(t)&&m.si(t,"Array",Rt,"comments:value"),t!==null){let e=t.length;for(let i=0;i<e;i++){let s=t[i]}}this.Gi=t}}get sorting(){return this.Si}set sorting(t){this.Si!==t&&(this.Si=t)}get comparer(){return this.Mi}set comparer(t){this.Mi!==t&&(m.S(t,Rt,"comparer"),this.Mi=t)}get angle(){return this.Xt}set angle(t){this.Xt!==t&&(m.s(t,"number",Rt,"angle"),this.Xt=t)}get alignment(){return this.de}set alignment(t){this.de!==t&&(this.de=t)}get nodeIndent(){return this.Aw}set nodeIndent(t){this.Aw!==t&&(m.s(t,"number",Rt,"nodeIndent"),this.Aw=t)}get nodeIndentPastParent(){return this.Tw}set nodeIndentPastParent(t){this.Tw!==t&&(m.s(t,"number",Rt,"nodeIndentPastParent"),this.Tw=t)}get nodeSpacing(){return this.Dw}set nodeSpacing(t){this.Dw!==t&&(m.s(t,"number",Rt,"nodeSpacing"),this.Dw=t)}get layerSpacing(){return this.Vs}set layerSpacing(t){this.Vs!==t&&(m.s(t,"number",Rt,"layerSpacing"),this.Vs=t)}get layerSpacingParentOverlap(){return this.vw}set layerSpacingParentOverlap(t){this.vw!==t&&(m.s(t,"number",Rt,"layerSpacingParentOverlap"),this.vw=t)}get compaction(){return this.Fw}set compaction(t){this.Fw!==t&&(this.Fw=t)}get breadthLimit(){return this.Rw}set breadthLimit(t){this.Rw!==t&&(m.s(t,"number",Rt,"breadthLimit"),this.Rw=t)}get rowSpacing(){return this.Ow}set rowSpacing(t){this.Ow!==t&&(m.s(t,"number",Rt,"rowSpacing"),this.Ow=t)}get rowIndent(){return this.Iw}set rowIndent(t){this.Iw!==t&&(m.s(t,"number",Rt,"rowIndent"),this.Iw=t)}get commentSpacing(){return this.Ew}set commentSpacing(t){this.Ew!==t&&(m.s(t,"number",Rt,"commentSpacing"),this.Ew=t)}get commentMargin(){return this.Uw}set commentMargin(t){this.Uw!==t&&(m.s(t,"number",Rt,"commentMargin"),this.Uw=t)}get setsPortSpot(){return this.Vw}set setsPortSpot(t){this.Vw!==t&&(m.s(t,"boolean",Rt,"setsPortSpot"),this.Vw=t)}get portSpot(){return this.Bw}set portSpot(t){this.Bw.equals(t)||(this.Bw=t)}get setsChildPortSpot(){return this.zw}set setsChildPortSpot(t){this.zw!==t&&(m.s(t,"boolean",Rt,"setsChildPortSpot"),this.zw=t)}get childPortSpot(){return this.Xw}set childPortSpot(t){this.Xw.equals(t)||(this.Xw=t)}get childrenCount(){return this.children.length}get relativePosition(){return this.U}set relativePosition(t){this.U.set(t)}get subtreeSize(){return this.dt}set subtreeSize(t){this.dt.set(t)}get subtreeOffset(){return this.at}set subtreeOffset(t){this.at.set(t)}}class sn extends ei{wP;constructor(t){super(t),this.wP=new P(0,0)}commit(){let t=this.link;if(t===null||t.isAvoiding)return;let e=this.network.layout,i=null,s=null;switch(e.ws){case 1:i=this.fromVertex,s=this.toVertex;break;case 2:i=this.toVertex,s=this.fromVertex;break;default:m.o("Unhandled path value "+e.ws.toString())}if(i===null||s===null)return;let n=this.wP;if(n.x===0&&n.y===0){this.SU(i,s);return}let o=i.bounds,r=e.orthoAngle(i),a=e.computeLayerSpacing(i),h=i.rowSpacing;t.updateRoute();let l=t.curve===9,u=t.isOrthogonal,c=0,d,f;if(t.startRoute(),u||l){for(c=2;t.pointsCount>4;)t.removePoint(2);d=t.getPoint(1),f=t.getPoint(2)}else{for(c=1;t.pointsCount>3;)t.removePoint(1);d=t.getPoint(0),f=t.getPoint(t.pointsCount-1)}let p=t.getPoint(t.pointsCount-1),g=0;r===0?(i.alignment===23?(g=o.bottom+n.y,n.y===0&&d.y>p.y+i.rowIndent&&(g=Math.min(g,Math.max(d.y,g-e.computeNodeIndent(i))))):i.alignment===22?(g=o.top+n.y,n.y===0&&d.y<p.y-i.rowIndent&&(g=Math.max(g,Math.min(d.y,g+e.computeNodeIndent(i))))):g=o.y+o.height/2+n.y,l?(t.insertPointAt(c,d.x,g),c++,t.insertPointAt(c,o.right+a,g),c++,t.insertPointAt(c,o.right+a+(n.x-h)/3,g),c++,t.insertPointAt(c,o.right+a+(n.x-h)*2/3,g),c++,t.insertPointAt(c,o.right+a+(n.x-h),g),c++,t.insertPointAt(c,f.x,g),c++):(u&&(t.insertPointAt(c,o.right+a/2,d.y),c++),t.insertPointAt(c,o.right+a/2,g),c++,t.insertPointAt(c,o.right+a+n.x-(u?h/2:h),g),c++,u&&(t.insertPointAt(c,t.getPoint(c-1).x,f.y),c++))):r===90?(i.alignment===23?(g=o.right+n.x,n.x===0&&d.x>p.x+i.rowIndent&&(g=Math.min(g,Math.max(d.x,g-e.computeNodeIndent(i))))):i.alignment===22?(g=o.left+n.x,n.x===0&&d.x<p.x-i.rowIndent&&(g=Math.max(g,Math.min(d.x,g+e.computeNodeIndent(i))))):g=o.x+o.width/2+n.x,l?(t.insertPointAt(c,g,d.y),c++,t.insertPointAt(c,g,o.bottom+a),c++,t.insertPointAt(c,g,o.bottom+a+(n.y-h)/3),c++,t.insertPointAt(c,g,o.bottom+a+(n.y-h)*2/3),c++,t.insertPointAt(c,g,o.bottom+a+(n.y-h)),c++,t.insertPointAt(c,g,f.y),c++):(u&&(t.insertPointAt(c,d.x,o.bottom+a/2),c++),t.insertPointAt(c,g,o.bottom+a/2),c++,t.insertPointAt(c,g,o.bottom+a+n.y-(u?h/2:h)),c++,u&&(t.insertPointAt(c,f.x,t.getPoint(c-1).y),c++))):r===180?(i.alignment===23?(g=o.bottom+n.y,n.y===0&&d.y>p.y+i.rowIndent&&(g=Math.min(g,Math.max(d.y,g-e.computeNodeIndent(i))))):i.alignment===22?(g=o.top+n.y,n.y===0&&d.y<p.y-i.rowIndent&&(g=Math.max(g,Math.min(d.y,g+e.computeNodeIndent(i))))):g=o.y+o.height/2+n.y,l?(t.insertPointAt(c,d.x,g),c++,t.insertPointAt(c,o.left-a,g),c++,t.insertPointAt(c,o.left-a+(n.x+h)/3,g),c++,t.insertPointAt(c,o.left-a+(n.x+h)*2/3,g),c++,t.insertPointAt(c,o.left-a+(n.x+h),g),c++,t.insertPointAt(c,f.x,g),c++):(u&&(t.insertPointAt(c,o.left-a/2,d.y),c++),t.insertPointAt(c,o.left-a/2,g),c++,t.insertPointAt(c,o.left-a+n.x+(u?h/2:h),g),c++,u&&(t.insertPointAt(c,t.getPoint(c-1).x,f.y),c++))):r===270?(i.alignment===23?(g=o.right+n.x,n.x===0&&d.x>p.x+i.rowIndent&&(g=Math.min(g,Math.max(d.x,g-e.computeNodeIndent(i))))):i.alignment===22?(g=o.left+n.x,n.x===0&&d.x<p.x-i.rowIndent&&(g=Math.max(g,Math.min(d.x,g+e.computeNodeIndent(i))))):g=o.x+o.width/2+n.x,l?(t.insertPointAt(c,g,d.y),c++,t.insertPointAt(c,g,o.top-a),c++,t.insertPointAt(c,g,o.top-a+(n.y+h)/3),c++,t.insertPointAt(c,g,o.top-a+(n.y+h)*2/3),c++,t.insertPointAt(c,g,o.top-a+(n.y+h)),c++,t.insertPointAt(c,g,f.y),c++):(u&&(t.insertPointAt(c,d.x,o.top-a/2),c++),t.insertPointAt(c,g,o.top-a/2),c++,t.insertPointAt(c,g,o.top-a+n.y+(u?h/2:h)),c++,u&&(t.insertPointAt(c,f.x,t.getPoint(c-1).y),c++))):m.o("Invalid angle "+r),t.commitRoute()}SU(t,e){let i=this.link;if(i===null)return;let s=this.network.layout,n=s.orthoAngle(t),o=s.orthoAngle(e);if(n===o)return;let r=s.computeLayerSpacing(t),a=t.bounds,h=e.bounds;if(n===0&&h.left-a.right<r+1||n===90&&h.top-a.bottom<r+1||n===180&&a.left-h.right<r+1||n===270&&a.top-h.bottom<r+1)return;i.updateRoute();let l=i.curve===9,u=i.isOrthogonal,c=this.fromVertex,d=s.isBusAlignment(c.alignment);if(i.startRoute(),n===0){let f=a.right+r/2;if(l){if(i.pointsCount===4){let p=i.getPoint(3).y;i.setPointAt(1,f-20,i.getPoint(1).y),i.insertPointAt(2,f-20,p),i.insertPointAt(3,f,p),i.insertPointAt(4,f+20,p),i.setPointAt(5,i.getPoint(5).x,p)}}else u?d?i.setPointAt(3,i.getPoint(2).x,i.getPoint(4).y):i.pointsCount===6&&(i.setPointAt(2,f,i.getPoint(2).y),i.setPointAt(3,f,i.getPoint(3).y)):i.pointsCount===4?i.insertPointAt(2,f,i.getPoint(2).y):i.pointsCount===3?i.setPointAt(1,f,i.getPoint(2).y):i.pointsCount===2&&i.insertPointAt(1,f,i.getPoint(1).y)}else if(n===90){let f=a.bottom+r/2;if(l){if(i.pointsCount===4){let p=i.getPoint(3).x;i.setPointAt(1,i.getPoint(1).x,f-20),i.insertPointAt(2,p,f-20),i.insertPointAt(3,p,f),i.insertPointAt(4,p,f+20),i.setPointAt(5,p,i.getPoint(5).y)}}else u?d?i.setPointAt(3,i.getPoint(2).x,i.getPoint(4).y):i.pointsCount===6&&(i.setPointAt(2,i.getPoint(2).x,f),i.setPointAt(3,i.getPoint(3).x,f)):i.pointsCount===4?i.insertPointAt(2,i.getPoint(2).x,f):i.pointsCount===3?i.setPointAt(1,i.getPoint(2).x,f):i.pointsCount===2&&i.insertPointAt(1,i.getPoint(1).x,f)}else if(n===180){let f=a.left-r/2;if(l){if(i.pointsCount===4){let p=i.getPoint(3).y;i.setPointAt(1,f+20,i.getPoint(1).y),i.insertPointAt(2,f+20,p),i.insertPointAt(3,f,p),i.insertPointAt(4,f-20,p),i.setPointAt(5,i.getPoint(5).x,p)}}else u?d?i.setPointAt(3,i.getPoint(2).x,i.getPoint(4).y):i.pointsCount===6&&(i.setPointAt(2,f,i.getPoint(2).y),i.setPointAt(3,f,i.getPoint(3).y)):i.pointsCount===4?i.insertPointAt(2,f,i.getPoint(2).y):i.pointsCount===3?i.setPointAt(1,f,i.getPoint(2).y):i.pointsCount===2&&i.insertPointAt(1,f,i.getPoint(1).y)}else if(n===270){let f=a.top-r/2;if(l){if(i.pointsCount===4){let p=i.getPoint(3).x;i.setPointAt(1,i.getPoint(1).x,f+20),i.insertPointAt(2,p,f+20),i.insertPointAt(3,p,f),i.insertPointAt(4,p,f-20),i.setPointAt(5,p,i.getPoint(5).y)}}else u?d?i.setPointAt(3,i.getPoint(2).x,i.getPoint(4).y):i.pointsCount===6&&(i.setPointAt(2,i.getPoint(2).x,f),i.setPointAt(3,i.getPoint(3).x,f)):i.pointsCount===4?i.insertPointAt(2,i.getPoint(2).x,f):i.pointsCount===3?i.setPointAt(1,i.getPoint(2).x,f):i.pointsCount===2&&i.insertPointAt(1,i.getPoint(1).x,f)}i.commitRoute()}get fromVertex(){return this.is}set fromVertex(t){this.is!==t&&(this.is=t)}get toVertex(){return this.ss}set toVertex(t){this.ss!==t&&(this.ss=t)}get relativePoint(){return this.wP}set relativePoint(t){this.wP.set(t)}}class we{constructor(){}static Light={colors:{text:"#0a0a0a",comment:"#ca8a04",link:"#0a0a0a",group:"#a3a3a344",outline:"#a3a3a3",selection:"#0ea5e9",div:"#fff",gridMinor:"#e5e5e5",gridMajor:"#a3a3a3",overviewBox:"#c026d3",tempLink:"#2563eb",tempPort:"#c026d3",adornmentFill:"#0ea5e9",adornmentStroke:"#1e40af",dragSelect:"#c026d3"},fonts:{normal:"10pt sans-serif",bold:"bold 12pt sans-serif"},numbers:{group:1,selection:3},margins:{group:new Dt(5)},arrowheads:{toArrow:"Standard"}};static Dark={colors:{text:"#f5f5f5",comment:"#facc15",link:"#f5f5f5",group:"#a3a3a388",outline:"#a3a3a3",selection:"#38bdf8",div:"#171717",gridMinor:"#262626",gridMajor:"#404040",overviewBox:"#e879f9",tempLink:"#60a5fa",tempPort:"#e879f9",adornmentFill:"#38bdf8",adornmentStroke:"#2563eb",dragSelect:"#e879f9"},fonts:{normal:"10pt sans-serif",bold:"bold 12pt sans-serif"},numbers:{group:1,selection:3},margins:{group:new Dt(5)},arrowheads:{toArrow:"Standard"}}}class je{hs=new Set;bu=new Mt;xP="light";bP="light";kP=!1;ML=!0;Qg="light";BF=t=>{let e=t.matches?"dark":"light";e!==this.Qg&&(this.Qg=e,this.bP==="system"&&this.updateDiagrams())};constructor(t){t&&Object.assign(this,t),t?.themeMap||(this.bu.set("light",{colors:{...we.Light.colors},fonts:{...we.Light.fonts},numbers:{...we.Light.numbers},margins:{...we.Light.margins},arrowheads:{...we.Light.arrowheads}}),this.bu.set("dark",{colors:{...we.Dark.colors},fonts:{...we.Dark.fonts},numbers:{...we.Dark.numbers},margins:{...we.Dark.margins},arrowheads:{...we.Dark.arrowheads}})),K.matchMedia&&(this.Qg=K.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")}get themeMap(){return this.bu}set themeMap(t){this.bu!==t&&(this.bu=t,this.updateDiagrams())}get defaultTheme(){return this.xP}set defaultTheme(t){this.xP!==t&&(m.s(t,"string",je,"defaultTheme"),this.xP=t,this.updateDiagrams())}get currentTheme(){return this.bP}set currentTheme(t){this.bP!==t&&(m.s(t,"string",je,"currentTheme"),this.bP=t,this.updateDiagrams())}get changesDivBackground(){return this.kP}set changesDivBackground(t){if(this.kP!==t&&(this.kP=t,t))for(let e of this.hs)e.setDivBackground(this.findValue("div","","fill")),e.T("ThemeChanged",this)}get readsCssVariables(){return this.ML}set readsCssVariables(t){this.ML!==t&&(this.ML=t,this.updateDiagrams())}get preferredColorScheme(){return this.Qg}addDiagram(t){return this.hs.add(t),this.CL(t),this}removeDiagram(t){return this.hs.delete(t),this.CL(t),this}eO(){this.hs.size===0&&K.matchMedia&&K.matchMedia("(prefers-color-scheme: dark)")?.addEventListener("change",this.BF)}iO(){this.hs.size===0&&K.matchMedia&&K.matchMedia("(prefers-color-scheme: dark)")?.removeEventListener("change",this.BF)}set(t,e){t===""&&(t=this.xP),t==="system"&&(t=this.Qg);let i=this.bu.get(t);return i?i=this.zF(i,e):i=e,this.bu.set(t,i),this.updateDiagrams(),this}findValue(t,e,i){return this.getValue(this.findTheme(this.currentTheme),t,e,i)||this.getValue(this.findTheme(this.defaultTheme),t,e,i)}getValue(t,e,i,s){if(!t)return;i==null&&(i="");let n=t,o=a=>{if(n===void 0||a==="")return;if(typeof a=="number"||!(Array.isArray(a)||a.includes(".")))return n[a];let h=Array.isArray(a)?a:a.split(".");for(let l=0;l<h.length;l++){let u=h[l];if(u!==""&&(n=n[u],n===void 0))return}return n},r=()=>{if(!(i!==""&&(n=o(i),n===void 0)))return Array.isArray(n)&&typeof e=="number"?n=n[e%n.length]:n=o(e),n};if(n=r(),n===void 0&&typeof s=="string"&&s.length>0){let a=t.targetPropertyMap?.get(s);if(a?n=t[a]:(a=je.MU.get(s),n=a?t[a]:t.colors),n=r(),n!==void 0)return n}return n}findTheme(t){return this.themeMap.get(t==="system"?this.Qg:t)}updateDiagrams(){for(let t of this.hs)this.CL(t)}CL(t){let e=t.skipsUndoManager;t.skipsUndoManager=!0,t.updateAllThemeBindings(),this.kP&&t.setDivBackground(this.findValue("div","","fill")),t.skipsUndoManager=e,t.T("ThemeChanged",this)}zF(t,e){for(let i in e)if(m.Gw(e,i))try{e[i]?.constructor===Object?t[i]=this.zF(t[i]??{},e[i]):t[i]=e[i]}catch{delete t[i]}return t}static MU=new Map([["background","colors"],["defaultColumnSeparatorStroke","colors"],["defaultRowSeparatorStroke","colors"],["shadowColor","colors"],["fill","colors"],["stroke","colors"],["font","fonts"],["angle","numbers"],["fromEndSegmentLength","numbers"],["fromShortLength","numbers"],["height","numbers"],["opacity","numbers"],["scale","numbers"],["toEndSegmentLength","numbers"],["toShortLength","numbers"],["width","numbers"],["defaultColumnSeparatorStrokeWidth","numbers"],["defaultRowSeparatorStrokeWidth","numbers"],["shadowBlur","numbers"],["corner","numbers"],["curviness","numbers"],["smoothness","numbers"],["parameter1","numbers"],["parameter2","numbers"],["strokeWidth","numbers"],["strokeDashOffset","numbers"],["maxLines","numbers"],["spacingAbove","numbers"],["spacingBelow","numbers"],["position","points"],["shadowOffset","points"],["desiredSize","sizes"],["maxSize","sizes"],["minSize","sizes"],["margin","margins"],["defaultSeparatorPadding","margins"],["padding","margins"],["alignment","spots"],["alignmentFocus","spots"],["fromSpot","spots"],["toSpot","spots"],["defaultAlignment","spots"],["spot1","spots"],["spot2","spots"],["verticalAlignment","spots"],["imageAlignment","spots"],["fromArrow","arrowheads"],["toArrow","arrowheads"]])}class nn{Pt;a;Be;Pl;constructor(){this.a=Y.Fm(),this.Pt="",this.Be=!0,this.Pl=!0}get name(){return this.Pt}set name(t){this.Pt=t}get isEnabled(){return this.Be}set isEnabled(t){this.Be=t}get isRealtime(){return this.Pl}set isRealtime(t){this.Pl=t}get diagram(){return this.a}set diagram(t){this.a!==t&&(this.a=t,t.Ol=!0,t.requestUpdate())}invalidateRouter(){this.a!==null&&(this.a.Ol=!0,this.a.requestUpdate())}canRoute(t){if(!this.isEnabled)return!1;let e=this.diagram;return!(e&&(!this.isRealtime&&e.Iu||e.animationManager.isTicking))}isRoutable(t,e){return!0}routeLinks(t,e){}toString(){return this.name!==""?this.name+" Router":m.Yn(this.constructor)}}class _n extends nn{constructor(t){super(),this.name="AvoidsNodes",t&&Object.assign(this,t)}canRoute(t){return(t instanceof Y?t.sp:t.diagram?.sp)?super.canRoute(t):!1}isRoutable(t,e){return!(!t.isAvoiding||t.containingGroup!==(e instanceof ht?e:null)||t.toNode===null||t.fromNode===null||t.pointsCount<4)}routeLinks(t,e){let i=e instanceof Y?null:e,s=t.iterator,n=this.diagram.getPositions(!0,i,null);for(;s.next();){let o=s.value;if(!this.isRoutable(o,e))continue;o.startRoute();let r=o.pointsCount,a=o.getPoint(1),h=o.getPoint(r-2),l=o.fromNode.actualBounds.copy();l.inflate(j.va,j.va),l.unionPoint(o.getPoint(0));let u=o.toNode.actualBounds.copy();u.inflate(j.va,j.va),u.unionPoint(o.getPoint(r-1)),this.CU(o,l,u,n)&&this.NU(o,a,o.kN,h,o.PN,l,u,n),o.commitRoute()}}CU(t,e,i,s){let n=t.diagram,o=t.pointsCount;if(n===null||!t.fromNode||!t.toNode||t.fromNode===t.toNode||!t.layer||t.layer.isTemporary||e.containsPoint(t.getPoint(o-1))&&!t.toNode.isMemberOf(t.fromNode)||i.containsPoint(t.getPoint(0))&&!t.fromNode.isMemberOf(t.toNode)||!t.isOrthogonal)return!1;if(t.segmentIndex===17)return!0;let r=t.getPoint(1),a=t.getPoint(o-2),h=t.getPoint(2);if(!s.isUnoccupied(Math.min(r.x,h.x),Math.min(r.y,h.y),Math.abs(r.x-h.x),Math.abs(r.y-h.y)))return!0;for(let u=2;u<o-3;u++){let c=t.getPoint(u),d=t.getPoint(u+1);if(!s.isUnoccupied(Math.min(c.x,d.x),Math.min(c.y,d.y),Math.abs(c.x-d.x),Math.abs(c.y-d.y)))return!0}let l=t.getPoint(o-3);return!s.isUnoccupied(Math.min(l.x,a.x),Math.min(l.y,a.y),Math.abs(l.x-a.x),Math.abs(l.y-a.y))}NU(t,e,i,s,n,o,r,a){let h=t.diagram;if(h===null)return;let l=e,u=s,c=P.mn,d=P.mn;if(h.isVirtualized){let g=a.bounds.copy(),y=t.getPoint(2),b=t.getPoint(t.pointsCount-3);g.inflate(-a.cellWidth,-a.cellHeight);let v=P.l();a.og(e.x,e.y)||(C.Al(g.x,g.y,g.x+g.width,g.y+g.height,e.x,e.y,y.x,y.y,v)?(c=e=v.copy(),i=v.directionPoint(y)):C.Al(g.x,g.y,g.x+g.width,g.y+g.height,y.x,y.y,b.x,b.y,v)?(c=e=v.copy(),i=v.directionPoint(b)):C.Al(g.x,g.y,g.x+g.width,g.y+g.height,b.x,b.y,s.x,s.y,v)&&(c=e=v.copy(),i=v.directionPoint(s))),a.og(s.x,s.y)||(C.Al(g.x,g.y,g.x+g.width,g.y+g.height,s.x,s.y,b.x,b.y,v)?(d=s=v.copy(),n=b.directionPoint(v)):C.Al(g.x,g.y,g.x+g.width,g.y+g.height,b.x,b.y,y.x,y.y,v)?(d=s=v.copy(),n=y.directionPoint(v)):C.Al(g.x,g.y,g.x+g.width,g.y+g.height,y.x,y.y,e.x,e.y,v)&&(d=s=v.copy(),n=e.directionPoint(v))),P.i(v)}let f=o.copy().unionRect(r);f.inflate(a.cellWidth*a.cf,a.cellHeight*a.cf),a.yv(e,i,s,n,f,!0);let p=a.xo(s.x,s.y);if(!a.$y&&p>=Ot.ng&&(a.TT(),f.inflate(a.cellWidth*a.I2,a.cellHeight*a.E2),a.yv(e,i,s,n,f,!1),p=a.xo(s.x,s.y)),!a.$y&&p<Ot.ng&&!a.YE(s.x,s.y)){t.points.removeRange(2,t.pointsCount-3),this.NL(t,a,s.x,s.y,n,!0);let g=0,y=90,b=180,v=270,w=t.getPoint(2);if(t.pointsCount<4)i===g||i===b?(w.x=e.x,w.y=s.y):(w.x=s.x,w.y=e.y),t.setPointAt(2,w.x,w.y),t.insertPointAt(3,w.x,w.y);else{let k=t.getPoint(3);if(i===g||i===b)if(C.c(w.x,k.x)){let S=i===g?Math.max(w.x,e.x):Math.min(w.x,e.x);t.setPointAt(2,S,e.y),t.setPointAt(3,S,k.y)}else C.c(w.y,k.y)?(Math.abs(e.y-w.y)<=a.cellHeight/2&&(t.setPointAt(2,w.x,e.y),t.setPointAt(3,k.x,e.y)),t.insertPointAt(2,w.x,e.y)):t.setPointAt(2,e.x,w.y);else if(i===y||i===v)if(C.c(w.y,k.y)){let S=i===y?Math.max(w.y,e.y):Math.min(w.y,e.y);t.setPointAt(2,e.x,S),t.setPointAt(3,k.x,S)}else C.c(w.x,k.x)?(Math.abs(e.x-w.x)<=a.cellWidth/2&&(t.setPointAt(2,e.x,w.y),t.setPointAt(3,e.x,k.y)),t.insertPointAt(2,e.x,w.y)):t.setPointAt(2,w.x,e.y)}if(c.isReal()){let k=t.getPoint(1),S=t.getPoint(2);k.x!==S.x&&k.y!==S.y?i===g||i===b?t.insertPointAt(2,k.x,S.y):t.insertPointAt(2,S.x,k.y):i===g||i===b?t.insertPointAt(2,l.x,c.y):t.insertPointAt(2,c.x,l.y)}d.isReal()&&(n===g||n===b?t.insertPointAt(t.pointsCount-2,u.x,d.y):t.insertPointAt(t.pointsCount-2,d.x,u.y))}}NL(t,e,i,s,n,o){let r=e.cellWidth,a=e.cellHeight,h=e.xo(i,s),l=i,u=s,c=l,d=u;for(n===0?c+=r:n===90?d+=a:n===180?c-=r:d-=a,t.TN&&h>Ot.sc&&e.xo(c,d)!==h-1&&(e.xo(l-r,u)===h-1?(n=180,c=l-r,d=u):e.xo(l+r,u)===h-1?(n=0,c=l+r,d=u):e.xo(l,u-a)===h-1?(n=270,c=l,d=u-a):e.xo(l,u+a)===h-1&&(n=90,c=l,d=u+a));h>Ot.sc&&e.xo(c,d)===h-1;)l=c,u=d,n===0?c+=r:n===90?d+=a:n===180?c-=r:d-=a,h-=1;if(o?h>Ot.sc&&(n===180||n===0?l=Math.floor(l/r)*r+r/2:(n===90||n===270)&&(u=Math.floor(u/a)*a+a/2)):(l=Math.floor(l/r)*r+r/2,u=Math.floor(u/a)*a+a/2),h>Ot.sc){let f=n,p=l,g=u;if(n===0?(f=90,g+=a):n===90?(f=180,p-=r):n===180?(f=270,g-=a):n===270&&(f=0,p+=r),e.xo(p,g)===h-1)this.NL(t,e,p,g,f,!1);else{let y=l,b=u;n===0?(f=270,b-=a):n===90?(f=0,y+=r):n===180?(f=90,b+=a):n===270&&(f=180,y-=r),e.xo(y,b)===h-1&&this.NL(t,e,y,b,f,!1)}}t.insertPointAt(t.pointsCount-2,l,u)}}oe.prototype.initializeStandardTools=function(){return this.Jt("Action",new Fs,this.mouseDownTools),this.Jt("Relinking",new $e,this.mouseDownTools),this.Jt("LinkReshaping",new Je,this.mouseDownTools),this.Jt("Rotating",new Le,this.mouseDownTools),this.Jt("Resizing",new Ze,this.mouseDownTools),this.Jt("Linking",new Te,this.mouseMoveTools),this.Jt("Dragging",new Tt,this.mouseMoveTools),this.Jt("DragSelecting",new ri,this.mouseMoveTools),this.Jt("Panning",new ki,this.mouseMoveTools),this.Jt("ContextMenu",new It,this.mouseUpTools),this.Jt("TextEditing",new re,this.mouseUpTools),this.Jt("ClickCreating",new Qe,this.mouseUpTools),this.Jt("ClickSelecting",new Ds,this.mouseUpTools),this},Y.u2("GraphLinksModel",Zn),Y.u2("TreeModel",Qn);let Ai=K.go,gi={get version(){return Y.version},Group:ht,List:q,Set:V,Map:Mt,Point:P,Size:nt,Rect:I,Margin:Dt,Spot:T,Geometry:wt,PathFigure:zt,PathSegment:mt,InputEvent:te,DiagramEvent:wi,ChangedEvent:ze,Model:dt,GraphLinksModel:Xt,TreeModel:Ue,Binding:ie,ThemeBinding:ii,Transaction:oi,UndoManager:vi,CommandHandler:jt,Tool:Zt,DraggingTool:Tt,DraggingInfo:Xe,DraggingOptions:Pi,LinkingBaseTool:he,LinkingTool:Te,RelinkingTool:$e,LinkReshapingTool:Je,ResizingTool:Ze,RotatingTool:Le,ClickSelectingTool:Ds,ActionTool:Fs,ClickCreatingTool:Qe,HTMLInfo:ge,ContextMenuTool:It,DragSelectingTool:ri,PanningTool:ki,TextEditingTool:re,ToolManager:oe,Animation:xe,AnimationManager:le,AnimationTrigger:ai,Layer:Et,Diagram:Y,Palette:Rn,Overview:hi,Brush:R,GraphObject:J,Panel:G,RowColumnDefinition:Kt,Shape:it,TextBlock:lt,Picture:Bt,Part:pt,Adornment:vt,Node:$,Link:j,Placeholder:ue,Layout:ee,LayoutNetwork:Re,LayoutVertex:Ee,LayoutEdge:ei,GridLayout:Ye,PanelLayout:Lt,CircularLayout:Ie,CircularNetwork:Ws,CircularVertex:di,CircularEdge:$s,ForceDirectedLayout:se,ForceDirectedNetwork:Js,ForceDirectedVertex:Be,ForceDirectedEdge:fi,LayeredDigraphLayout:Ce,LayeredDigraphNetwork:tn,LayeredDigraphVertex:si,LayeredDigraphEdge:Me,TreeLayout:Vt,TreeNetwork:gs,TreeVertex:Rt,TreeEdge:sn,Themes:we,ThemeManager:je,Router:nn,AnimationStyle:Is,AutoScale:Ii,CycleMode:Vs,Flip:Ks,TextFormat:Yi,ImageStretch:ji,LayoutConditions:Gs,LinkAdjusting:Hi,Curve:$i,Routing:Wi,Orientation:Vi,TextOverflow:js,PortSpreading:qs,ScrollMode:zs,CollapsePolicy:Xs,Sizing:zi,TriggerStart:Bs,Stretch:Bi,ViewboxStretch:Us,Wrap:Ki,BrushType:Fe,ColorSpace:Ys,GeometryStretch:Ri,GeometryType:Ve,SegmentType:ni,BindingMode:Ci,ChangeType:Ei,CircularArrangement:ts,CircularDirection:es,CircularNodeDiameterFormula:ss,CircularSorting:is,GridAlignment:Zi,GridArrangement:Qi,GridSorting:_i,LayeredDigraphAggressive:as,LayeredDigraphAlign:_s,LayeredDigraphCycleRemove:ns,LayeredDigraphInit:rs,LayeredDigraphLayering:os,LayeredDigraphPack:Qs,TreeAlignment:us,TreeArrangement:fs,TreeCompaction:cs,TreeLayerStyle:en,TreePath:hs,TreeSorting:ls,TreeStyle:ds,GestureMode:As,LinkingDirection:Ts,ReshapingBehavior:Ls,TextEditingAccept:Os,TextEditingStarting:Rs,TextEditingState:Es,WheelMode:Cs};for(let x in gi){let t=gi[x];m.it(t)&&t!==Yi&&(t.className=x)}m.$(Ai)&&Ai.version&&m.ne("WARNING: a `go` object on the root object is already defined. "+("Debug"in Ai?"debug ":"")+"version: "+Ai.version+", replaced with version: "+gi.version),Y.prototype.go=gi,K.go=gi})();var Eo=typeof global<"u"?global.go:self.go,W=typeof global<"u"?global.go:self.go,Io=W.Group,Bo=W.List,Vo=W.Set;var zo=W.Map;var cn=W.Point,pi=W.Size,Xo=W.Rect,ys=W.Margin,Ge=W.Spot,Ko=W.Geometry,Yo=W.PathFigure,Uo=W.PathSegment,jo=W.InputEvent,Go=W.DiagramEvent,qo=W.ChangedEvent,Ho=W.Model,dn=W.GraphLinksModel,Wo=W.TreeModel,$o=W.Binding,Jo=W.ThemeBinding,Zo=W.Transaction,Qo=W.UndoManager,_o=W.CommandHandler,tr=W.Tool,er=W.DraggingTool,ir=W.DraggingInfo,sr=W.DraggingOptions,nr=W.LinkingBaseTool,or=W.LinkingTool,rr=W.RelinkingTool,ar=W.LinkReshapingTool,hr=W.ResizingTool,lr=W.RotatingTool,ur=W.ClickSelectingTool,cr=W.ActionTool,dr=W.ClickCreatingTool,fr=W.HTMLInfo,gr=W.ContextMenuTool,mr=W.DragSelectingTool,pr=W.PanningTool,yr=W.TextEditingTool,xr=W.ToolManager,xs=W.Animation,br=W.AnimationManager,wr=W.AnimationTrigger,vr=W.Layer,Ti=W.Diagram,kr=W.Palette,Pr=W.Overview,Sr=W.Brush,Mr=W.GraphObject,qe=W.Panel,Nr=W.RowColumnDefinition,yi=W.Shape,Li=W.TextBlock,fn=W.Picture,Cr=W.Part,bs=W.Adornment,ws=W.Node,vs=W.Link,gn=W.Placeholder,Ar=W.Layout,Tr=W.LayoutNetwork,Lr=W.LayoutVertex,Dr=W.LayoutEdge,Fr=W.GridLayout,Or=W.PanelLayout,Rr=W.CircularLayout,Er=W.CircularNetwork,Ir=W.CircularVertex,Br=W.CircularEdge,Vr=W.ForceDirectedLayout,zr=W.ForceDirectedNetwork,Xr=W.ForceDirectedVertex,Kr=W.ForceDirectedEdge,mn=W.LayeredDigraphLayout,Yr=W.LayeredDigraphNetwork,Ur=W.LayeredDigraphVertex,jr=W.LayeredDigraphEdge,Gr=W.TreeLayout,qr=W.TreeNetwork,Hr=W.TreeVertex,Wr=W.TreeEdge,$r=W.Themes,Jr=W.ThemeManager,Zr=W.Router,Qr=W.version,_r=W.AnimationStyle,pn=W.AutoScale,ta=W.Curve,ea=W.CycleMode,ia=W.Flip,sa=W.ImageStretch,na=W.LayoutConditions,oa=W.LinkAdjusting,ra=W.Orientation,aa=W.PortSpreading,yn=W.Routing,xn=W.ScrollMode,ha=W.CollapsePolicy,la=W.Sizing,ua=W.TriggerStart,bn=W.Stretch,ca=W.TextFormat,ks=W.TextOverflow,da=W.ViewboxStretch,Ps=W.Wrap,fa=W.BrushType,ga=W.ColorSpace,ma=W.GeometryStretch,pa=W.GeometryType,ya=W.SegmentType,xa=W.BindingMode,ba=W.ChangeType,wa=W.CircularArrangement,va=W.CircularDirection,ka=W.CircularNodeDiameterFormula,Pa=W.CircularSorting,Sa=W.GridAlignment,Ma=W.GridArrangement,Na=W.GridSorting,Ca=W.LayeredDigraphAggressive,Aa=W.LayeredDigraphAlign,Ta=W.LayeredDigraphCycleRemove,La=W.LayeredDigraphInit,Da=W.LayeredDigraphLayering,Fa=W.LayeredDigraphPack,Oa=W.TreeAlignment,Ra=W.TreeArrangement,Ea=W.TreeCompaction,Ia=W.TreeLayerStyle,Ba=W.TreePath,Va=W.TreeSorting,za=W.TreeStyle,Xa=W.GestureMode,Ka=W.LinkingDirection,Ya=W.ReshapingBehavior,Ua=W.TextEditingAccept,ja=W.TextEditingStarting,Ga=W.TextEditingState,wn=W.WheelMode;var eo=on`#filter-bar{background-color:var(--calcite-color-surface-2);position:absolute;top:16px;right:196px;z-index:100;box-shadow:var(--calcite-shadow-sm)}#filteredViewButtonDiv{padding:8px}#filteredViewButtonLabel{--calcite-label-margin-bottom: 0}#graph-navigation-bar{background-color:var(--calcite-color-surface-2);position:absolute;top:16px;right:16px;z-index:100}#graph-navigation-controls{position:absolute;top:0;right:0;box-shadow:var(--calcite-shadow-sm)}.z-index-1{z-index:1}#diagram-panel{--calcite-panel-space: 0px}#diagram-shell-panel{--calcite-color-surface-1: var(--calcite-color-surface-2);padding:16px}`,io=15,so=15,no=10,xi=new pi(220,48),oo=1,ro=8,vn=new pi(48,48),ao=new pi(16,16),kn=new pi(153,17),ho='400 0.75rem "Avenir Next", Avenir, "Helvetica Neue", sans-serif',lo='500 0.75rem "Avenir Next", Avenir, "Helvetica Neue", sans-serif',uo="val(--calcite-color-surface-1)",co=bi("--calcite-color-border-1"),Pn=bi("--calcite-color-surface-2"),Di=bi("--calcite-color-text-1"),Sn=bi("--calcite-color-border-input"),fo=bi("--calcite-color-surface-2"),Fi=1,Nn=.3,Ss=1,Cn=.2,go=1;function mo(K){let m=document.createElement("div");m.style.width="100%",m.style.height="100%";let at=document.documentElement.dir==="rtl",yt=at?Ge.Right:Ge.Left,Pt=at?"right":"left";K.appendChild(m);let ut=new Ti(m,{click:Po,contentAlignment:Ge.Center,dragSelectingTool:null,hoverDelay:50,initialAutoScale:pn.Uniform,layout:new mn({columnSpacing:io,layerSpacing:so}),padding:no,scrollMode:xn.Infinite,"toolManager.hoverDelay":50,"toolManager.mouseWheelBehavior":wn.Zoom});ut.nodeTemplate=new ws("Auto",{click:So,movable:!1,opacity:Fi,toolTip:new bs("Auto",{isShadowed:!0,margin:new ys(12,16,6,16),padding:0,shadowBlur:16,shadowColor:To(Di,.05),shadowOffset:new cn(0,0)}).add(new qe("Vertical",{background:fo,margin:0}).add(new Li({margin:14,stroke:Di,alignment:yt,textAlign:Pt}).bind("text","title")))}).bind("text","title").add(new yi({desiredSize:xi,fill:Pn,geometryString:ko(xi.width,xi.height,ro,vn.width,!!Pn),height:xi.height,portId:"",stroke:co,strokeWidth:oo,width:xi.width})).add(new qe("Horizontal",{alignment:yt,stretch:bn.Horizontal}).add(new qe("Horizontal",{alignment:yt,desiredSize:vn,margin:1}).add(new qe("Horizontal",{alignment:Ge.Center,margin:16}).add(new fn({desiredSize:ao}).bind("source","",q=>un(q.itemType,q.itemTypeKeywords)))),new qe("Horizontal",{alignment:yt,margin:new ys(4,8,0,8)}).add(new qe("Vertical",{}).add(new Li({alignment:yt,textAlign:Pt,desiredSize:kn,font:lo,overflow:ks.Ellipsis,stroke:Di,wrap:Ps.None}).bind("text","title"),new Li({alignment:yt,textAlign:Pt,desiredSize:kn,font:ho,overflow:ks.Ellipsis,stroke:Di,wrap:Ps.None}).bind("text","itemTypeForDisplay"))))),ut.commandHandler.zoomFactor=1.05,ut.setDivBackground(uo);let ct=ut.toolManager.clickSelectingTool;ct.standardMouseSelect=function(){};let kt=ut.toolManager.draggingTool;return kt.isEnabled=!1,ut.linkTemplate=new vs({corner:5,movable:!1,routing:yn.Orthogonal,selectable:!1}).add(new yi({opacity:Ss,stroke:Sn}),new yi({fill:Sn,opacity:Ss,stroke:null,toArrow:"Standard"})),ut}function He(K,m){K.model=new dn(m.nodes,m.links,{linkFromPortIdProperty:"fromPort",linkToPortIdProperty:"toPort"})}function po(K,m,at,yt=!0){if(yt){let q=Mo(K,at);q.addEventListener("calciteSwitchChange",()=>document.dispatchEvent(new CustomEvent("filteredViewChanged",{detail:q.checked})))}let{resetButton:Pt,centerButton:ut,zoomInButton:ct,zoomOutButton:kt}=No(K,at);Pt.addEventListener("click",()=>Ao(m)),ut.addEventListener("click",()=>m.zoomToFit()),ct.addEventListener("click",()=>m.commandHandler.increaseZoom()),kt.addEventListener("click",()=>m.commandHandler.decreaseZoom())}function yo(K,m,at){let yt=mo(K);return He(yt,m),po(K,yt,at),yt}function An(K){let m=new Set,at=new Set;function yt(ut){ut.findLinksInto().each(ct=>{at.add(ct);let kt=ct.fromNode;kt&&!m.has(kt)&&(m.add(kt),yt(kt))})}yt(K);function Pt(ut){ut.findLinksOutOf().each(ct=>{at.add(ct);let kt=ct.toNode;kt&&!m.has(kt)&&(m.add(kt),Pt(kt))})}return Pt(K),{connectedNodes:m,connectedLinks:at}}function xo(K,m=!1,at){let yt=[],Pt=K.map(ct=>{if(ct.type!=="Group"){let kt=vo(ct);return wo(ct,kt,m,at)}else{yt.push(ct.id);return}}).filter(ct=>ct!==void 0),ut=[];return Pt.forEach(ct=>{(K.find(kt=>kt.id===ct.itemId)?.dependencies||[]).forEach(kt=>{let q=Pt.find(_t=>_t?.itemId===kt);q&&ut.push({from:q.key,fromSpot:Ge.AllSides,to:ct.key,toSpot:Ge.AllSides})})}),{nodes:Pt,links:ut,groupPseudoNodes:yt}}function bo(K,m,at,yt=!0){let Pt=K.diagram;if(!Pt)return;let ut={};if(yt){for(let ct of Pt.nodes)ut[ct.key]=ct===K?Fi:Nn;for(let ct of Pt.links){let kt=`${ct.fromNode?.key}-${ct.toNode?.key}`;ut[kt]=Cn}{let{connectedNodes:ct,connectedLinks:kt}=An(K);for(let q of ct)ut[q.key]=Fi;for(let q of kt){let _t=`${q.fromNode?.key}-${q.toNode?.key}`;ut[_t]=go}}}if(at&&(at.adornedObject=K),yt){let ct=new xs;ct.duration=1;for(let kt of Pt.nodes)ct.add(kt,"opacity",kt.opacity,ut[kt.key]);for(let kt of Pt.links){let q=`${kt.fromNode?.key}-${kt.toNode?.key}`;ct.add(kt,"opacity",kt.opacity,ut[q])}ct.start()}}function Mn(K,m,at,yt,Pt=!0){if(K.length===0)return;let ut=m[0].diagram;if(!ut)return;let ct={};if(Pt){for(let kt of ut.nodes){let q=K.includes(kt.key);ct[kt.key]=!at||q?Fi:Nn}for(let kt of ut.links){let q=`${kt.fromNode?.key}-${kt.toNode?.key}`;ct[q]=at?Cn:Ss}}if(Object.keys(yt).forEach(kt=>{yt[kt].adornedObject=null}),Pt){let kt=new xs;kt.duration=1;for(let q of ut.nodes)kt.add(q,"opacity",q.opacity,ct[q.key]);for(let q of ut.links){let _t=`${q.fromNode?.key}-${q.toNode?.key}`;kt.add(q,"opacity",q.opacity,ct[_t])}kt.start()}}function wo(K,m,at=!1,yt){return{key:m,title:K.title,itemId:K.id,itemType:K.type,itemTypeForDisplay:Co(K.type,K.typeKeywords),itemTypeKeywords:K.typeKeywords,group:K.type,url:at?`${yt}?id=${K.id}`:void 0}}function vo(K){return K.id}function ko(K,m,at,yt=0,Pt=!1){let ut="";Pt&&(ut+="F");let ct=K-2*at,kt=m-2*at;return ut+=" M0 0",ut+=` h${ct}`,ut+=` a${at} ${at} 0 0 1 ${at} ${at}`,ut+=` v${kt}`,ut+=` a${at} ${at} 0 0 1 ${-at} ${at}`,ut+=` h${-ct}`,ut+=` a${at} ${at} 0 0 1 ${-at} ${-at}`,ut+=` v${-kt}`,ut+=` a${at} ${at} 0 0 1 ${at} ${-at}`,yt>0&&(ut+=` M${yt-at} 0 v${m}`),ut}function Po(){document.dispatchEvent(new CustomEvent("clickInDiagram"))}function So(K,m){let at=m.part;at instanceof ws&&(at.selectionAdorned=!1,document.dispatchEvent(new CustomEvent("clickOnNode",{detail:at})))}function Mo(K,m){let at=document.createElement("calcite-switch");at.id="filteredViewButton",at.label=m.filteredView;let yt=document.createElement("calcite-label");yt.id="filteredViewButtonLabel",yt.setAttribute("layout","inline"),yt.innerHTML=m.filteredView,yt.appendChild(at);let Pt=document.createElement("div");Pt.id="filteredViewButtonDiv",Pt.appendChild(yt);let ut=document.createElement("calcite-action-bar");ut.id="filter-bar-controls",ut.layout="horizontal",ut.expandDisabled=!0,ut.appendChild(Pt);let ct=document.createElement("div");return ct.id="filter-bar",K.appendChild(ct),ct.appendChild(ut),at}function No(K,m){let at=document.createElement("calcite-action");at.icon="reset",at.id="showHideGrayedOutButton";let yt=document.createElement("calcite-tooltip");yt.id="resetButtonTooltip",yt.innerHTML=m.reset,yt.overlayPositioning="fixed",yt.placement="bottom",yt.referenceElement=at.id;let Pt=document.createElement("calcite-action");Pt.icon="zoom-to-object",Pt.id="centerButton";let ut=document.createElement("calcite-tooltip");ut.id="centerButtonTooltip",ut.innerHTML=m.centerDiagram,ut.overlayPositioning="fixed",ut.placement="bottom",ut.referenceElement=Pt.id;let ct=document.createElement("calcite-action");ct.icon="plus",ct.id="zoomInButton";let kt=document.createElement("calcite-tooltip");kt.id="zoomInButtonTooltip",kt.innerHTML=m.zoomIn,kt.overlayPositioning="fixed",kt.placement="bottom",kt.referenceElement=ct.id;let q=document.createElement("calcite-action");q.appearance="solid",q.icon="minus",q.id="zoomOutButton";let _t=document.createElement("calcite-tooltip");_t.id="zoomOutButtonTooltip",_t.innerHTML=m.zoomOut,_t.overlayPositioning="fixed",_t.placement="bottom",_t.referenceElement=q.id;let V=document.createElement("calcite-action-bar");V.id="graph-navigation-controls",V.layout="horizontal",V.expandDisabled=!0,V.appendChild(at),V.appendChild(yt),V.appendChild(Pt),V.appendChild(ut),V.appendChild(ct),V.appendChild(kt),V.appendChild(q),V.appendChild(_t);let We=document.createElement("div");return We.id="graph-navigation-bar",K.appendChild(We),We.appendChild(V),{resetButton:at,centerButton:Pt,zoomInButton:ct,zoomOutButton:q}}function Co(K,m){let at=K;if(K==="Feature Service"){let yt=m.indexOf("View Service")>-1,Pt=m.indexOf("Table")>-1;at=yt&&Pt?"Table (hosted, view)":Pt?"Table (hosted)":yt?"Feature Layer (hosted, view)":"Feature Layer (hosted)"}return K==="Web Mapping Application"&&(at=m.indexOf("configurableApp")>-1?"Instant App":at),at=K==="Geoprocessing Service"?"Tool":at,at=K==="Feed"?"Feed (hosted)":at,at=K==="Real Time Analytic"?"Real Time Analytic (hosted)":at,at=K==="Big Data Analytic"?"Big Data Analytic (hosted)":at,at=K==="Vector Tile Service"?"Tile Layer":at,at}function Ao(K){K.zoomToFit(),document.dispatchEvent(new CustomEvent("reset"))}function bi(K){let m=document.body;return getComputedStyle(m).getPropertyValue(K).trim()}function To(K,m){if(K=K.replace(/^#/,""),K.length===3&&(K=K.split("").map(ut=>ut+ut).join("")),K.length!==6)throw new Error("Invalid hex color");let at=parseInt(K.slice(0,2),16),yt=parseInt(K.slice(2,4),16),Pt=parseInt(K.slice(4,6),16);return`rgba(${at}, ${yt}, ${Pt}, ${m})`}var Lo=8,Do=15,Fo=Ro("--calcite-color-brand"),Oo=4;function Ro(K){let m=document.documentElement;return getComputedStyle(m).getPropertyValue(K).trim()}var Ms=class{constructor(m,at,yt,Pt){this.indexPanel=m,this.diagramPanel=at,this.diagramTranslations=yt,this.diagramKey=Pt,this.currentSelectedGroupId="",this.currentSelectedItemId="",this.diagramNeedsRedraw=!1,this.usefilteredView=!1,this.handle_clickInDiagram=ut=>{ut.stopImmediatePropagation(),(this.currentSelectedGroupId||this.currentSelectedItemId)&&(this.currentSelectedGroupId="",this.currentSelectedItemId="",this.diagramNeedsRedraw=this.usefilteredView,this.redraw())},this.handle_clickOnNode=ut=>{ut.stopImmediatePropagation();let ct=ut.detail.data.key;this.redraw(ct,ct===this.currentSelectedItemId)},this.handle_filteredViewChanged=ut=>{this.usefilteredView=ut.detail,this.diagramNeedsRedraw=!!this.currentSelectedGroupId||!!this.currentSelectedItemId,this.redraw(this.currentSelectedItemId||this.currentSelectedGroupId)},this.handle_reset=ut=>{ut.stopImmediatePropagation(),this.reset()},this.handle_solutionItemSelect=ut=>{ut.stopImmediatePropagation();let ct=ut.detail.itemId;this.redraw(ct,ct===this.currentSelectedItemId||ct===this.currentSelectedGroupId,!1)},Ti.licenseKey===""&&(Ti.licenseKey=Pt??"")}create(m,at){this.collection=m,this.index=document.createElement("solution-item-accordion"),this.index.linkType="action",this.index.listSelectionMode="single",this.index.typeKeywords=at,this.index.style.overflowY="auto",this.indexPanel.appendChild(this.index),this.index.templateInfos=m,this.allNodesAndLinks=xo(m),this.diagram=yo(this.diagramPanel,this.allNodesAndLinks,this.diagramTranslations),this.diagram.addDiagramListener("LayoutCompleted",()=>{setTimeout(()=>{this.diagram.zoomToFit()},1e3)}),vs.setRoutingParameter(44,600942),this.createNodeHighlighters(),document.addEventListener("clickInDiagram",this.handle_clickInDiagram),document.addEventListener("clickOnNode",this.handle_clickOnNode),document.addEventListener("filteredViewChanged",this.handle_filteredViewChanged),document.addEventListener("reset",this.handle_reset),this.index.addEventListener("solutionItemSelect",this.handle_solutionItemSelect)}dispose(){document.removeEventListener("clickInDiagram",this.handle_clickInDiagram),document.removeEventListener("clickOnNode",this.handle_clickOnNode),document.removeEventListener("filteredViewChanged",this.handle_filteredViewChanged),document.removeEventListener("reset",this.handle_reset),this.index.removeEventListener("solutionItemSelect",this.handle_solutionItemSelect),this.indexPanel.innerHTML="",this.diagramPanel.innerHTML=""}clearSelections(m=!0){this.index.deselectAll(),m&&this.index.collapseAll();let at=this.getNodesFromDiagram(this.diagram),yt=at.map(Pt=>Pt.data.key);Mn(yt,at,!1,this.diagramNodeHighlighterIndex)}createNodeHighlighters(){this.diagramNodeIndex={},this.diagramNodeHighlighterIndex={},this.getNodesFromDiagram(this.diagram).forEach(m=>{this.diagramNodeIndex[m.data.key]=m;let at=new bs("Auto",{background:"transparent",margin:2});at.add(new yi("RoundedRectangle",{fill:"transparent",parameter1:Lo,parameter2:Do,stroke:Fo,strokeWidth:Oo})),at.add(new gn({margin:1})),this.diagramNodeHighlighterIndex[m.data.key]=at})}getNodeById(m){return this.diagramNodeIndex[m]}getNodesFromDiagram(m){let at=[],yt=m.nodes.iterator;for(;yt.next();)at.push(yt.value);return at}redraw(m="",at=!1,yt=!0){let Pt=this.allNodesAndLinks.groupPseudoNodes.includes(m);this.diagramNeedsRedraw&&(He(this.diagram,this.allNodesAndLinks),this.createNodeHighlighters(),this.diagramNeedsRedraw=!1);let ut=!1;if(this.clearSelections(yt),!!m){if(Pt){if(this.currentSelectedItemId="",this.currentSelectedGroupId!==m?this.currentSelectedGroupId=m:at&&(this.currentSelectedGroupId=this.currentSelectedGroupId?"":m,ut=this.usefilteredView&&!this.currentSelectedGroupId),this.currentSelectedGroupId){this.usefilteredView&&(He(this.diagram,this.allNodesAndLinks),this.createNodeHighlighters());let ct=this.collection.filter(q=>q.id===m)[0],kt=ct.dependencies.map(q=>this.diagramNodeIndex[q]);if(this.usefilteredView){let q=kt.map(_t=>_t.data);He(this.diagram,{nodes:q,links:[]})}else Mn(ct.dependencies,kt,!0,this.diagramNodeHighlighterIndex);this.index.selectItem(this.currentSelectedGroupId)}}else{this.currentSelectedGroupId="",this.currentSelectedItemId!==m?this.currentSelectedItemId=m:at&&(this.currentSelectedItemId=this.currentSelectedItemId?"":m,ut=this.usefilteredView&&!this.currentSelectedItemId);let ct=this.getNodeById(m);if((!ct||this.usefilteredView)&&(He(this.diagram,this.allNodesAndLinks),this.createNodeHighlighters(),ct=this.getNodeById(m),!ct))return;if(this.currentSelectedItemId){if(this.usefilteredView){let kt=An(ct);kt.connectedNodes.add(ct);let q=Array.from(kt.connectedNodes).map(V=>V.data),_t=Array.from(kt.connectedLinks).map(V=>V.data);if(He(this.diagram,{nodes:q,links:_t}),this.createNodeHighlighters(),ct=this.getNodeById(m),!ct)return}ct&&setTimeout(()=>bo(ct,!0,this.diagramNodeHighlighterIndex[m]),1),this.index.selectItem(this.currentSelectedItemId)}}ut&&this.reset()}}reset(){this.diagramNeedsRedraw=!1,this.currentSelectedGroupId="",this.currentSelectedItemId="",He(this.diagram,this.allNodesAndLinks),this.createNodeHighlighters(),this.clearSelections()}},Ns=class extends an{constructor(){super(...arguments),this.diagramKey="",this.templateInfoGraph=[],this.typeKeywords=[],this._diagramPanel=ms(),this._diagramShell=ms(),this._translations=ln({name:"solution-item-diagram",blocking:!0})}static{this.properties={diagramKey:1,templateInfoGraph:0,typeKeywords:0,_diagramPanel:16,_diagramShell:16,_translations:16}}static{this.styles=eo}updated(){if(this.solutionDisplay&&(this.solutionDisplay.dispose(),this.solutionDisplay=void 0),this.templateInfoGraph.length>0){let m={centerDiagram:this._translations.graphTranslations.centerDiagram,filteredView:this._translations.graphTranslations.filteredView,reset:this._translations.graphTranslations.reset,zoomIn:this._translations.graphTranslations.zoomIn,zoomOut:this._translations.graphTranslations.zoomOut};this.solutionDisplay=new Ms(this._diagramShell.value,this._diagramPanel.value,m,this.diagramKey),this.solutionDisplay.create(this.templateInfoGraph,this.typeKeywords)}requestAnimationFrame(()=>this._preventDiagramScrollbars())}disconnectedCallback(){super.disconnectedCallback(),this.solutionDisplay&&(this.solutionDisplay.dispose(),this.solutionDisplay=void 0)}render(){return rn`<calcite-shell><calcite-shell-panel id=diagram-shell-panel slot=panel-start ${ps(this._diagramShell)}></calcite-shell-panel><calcite-panel class="z-index-1" id=diagram-panel slot=panel-bottom ${ps(this._diagramPanel)}></calcite-panel></calcite-shell>`}_preventDiagramScrollbars(){if(!this._diagramPanel.value)return;let m=this._diagramPanel.value.shadowRoot;if(!m)return;let at=m.querySelector(".content-wrapper");at instanceof HTMLElement&&(at.style.overflow="hidden")}};hn("solution-item-diagram",Ns);export{Ns as SolutionItemDiagram};
50
+ "nodeParentKeyProperty": `+this.quote(this.nodeParentKeyProperty)),t+e}lw(t){super.lw(t),t.nodeParentKeyProperty&&(this.nodeParentKeyProperty=t.nodeParentKeyProperty)}aw(t){t.nodeParentKeyProperty!==void 0&&t.nodeParentKeyProperty!==this.nodeParentKeyProperty&&m.o("applyIncrementalJson cannot change Model properties"),super.aw(t)}maybeEnsureLinkReference(t){return t}get nodeParentKeyProperty(){return this.Cl}set nodeParentKeyProperty(t){let e=this.Cl;e!==t&&(this.Un(t,Ue,"nodeParentKeyProperty"),this.Cl=t,this.t("nodeParentKeyProperty",e,t))}getParentKeyForNodeData(t){if(t===null)return;let e=this.Cl;if(e==="")return;let i=this.Lt(t,e);if(i!==void 0){if(this.isKeyType(i))return i;m.o("ParentKey value for node data "+t+" is not a number or a string: "+i)}}setParentKeyForNodeData(t,e){if(e===null&&(e=void 0),e!==void 0&&!this.isKeyType(e)&&m.si(e,"number or string",Ue,"setParentKeyForNodeData:key"),t===null)return;let i=this.Cl;if(i==="")return;if(e=this.maybeEnsureLinkReference(e),!this.containsNodeData(t)){this.nt(t,i,e);return}let s=this.Lt(t,i);s!==e&&(this.an(s,t),this.nt(t,i,e),this.findNodeDataForKey(e)===null&&this.hn(e,t),this.Ft("nodeParentKey",2,i,t,s,e),typeof i=="string"&&this.updateTargetBindings(t,i))}get parentLinkCategoryProperty(){return this.cc}set parentLinkCategoryProperty(t){let e=this.cc;e!==t&&(this.Un(t,Ue,"parentLinkCategoryProperty"),this.cc=t,this.t("parentLinkCategoryProperty",e,t))}get linkCategoryProperty(){return this.parentLinkCategoryProperty}set linkCategoryProperty(t){this.parentLinkCategoryProperty=t}getParentLinkCategoryForNodeData(t){if(t===null)return"";let e=this.cc;if(e==="")return"";let i=this.Lt(t,e);if(i===void 0)return"";if(typeof i=="string")return i;m.o("getParentLinkCategoryForNodeData found a non-string category for "+t+": "+i)}getLinkCategoryForData(t){return this.getParentLinkCategoryForNodeData(t)}setParentLinkCategoryForNodeData(t,e){if(m.s(e,"string",Ue,"setParentLinkCategoryForNodeData:cat"),t===null)return;let i=this.cc;if(i==="")return;if(!this.containsNodeData(t)){this.nt(t,i,e);return}let s=this.Lt(t,i);s===void 0&&(s=""),s!==e&&(this.nt(t,i,e),this.Ft("parentLinkCategory",2,i,t,s,e),typeof i=="string"&&this.updateTargetBindings(t,i))}setLinkCategoryForData(t,e){this.setParentLinkCategoryForNodeData(t,e)}copyNodeData(t){let e=super.copyNodeData(t);return this.setParentKeyForNodeData(e,void 0),e}setDataProperty(t,e,i){if(this.containsNodeData(t)){if(e===this.nodeKeyProperty){this.setKeyForNodeData(t,i);return}else if(e===this.nodeCategoryProperty){this.setCategoryForNodeData(t,i);return}else if(e===this.nodeParentKeyProperty){this.setParentKeyForNodeData(t,i);return}else if(e===this.parentLinkCategoryProperty){this.setParentLinkCategoryForNodeData(t,i);return}}let s=this.Lt(t,e);s!==i&&(this.nt(t,e,i),this.raiseDataChanged(t,e,s,i))}hw(t,e){super.hw(t,e);let i=this.ke.iterator;for(;i.next();){let s=i.value;this.rL(s,t,e)}}rL(t,e,i){if(this.getParentKeyForNodeData(t)===e){let s=this.Cl;this.nt(t,s,i),this.Ft("nodeParentKey",2,s,t,e,i),typeof s=="string"&&this.updateTargetBindings(t,s)}}Dg(t){super.Dg(t);let e=this.getKeyForNodeData(t),i=this.ew(e);if(i!==null){let s=m.st(),n=i.iterator;for(;n.next();){let o=n.value;if(this.containsNodeData(o)&&this.getParentKeyForNodeData(o)===e){let r=this.Cl;this.Ft("nodeParentKey",2,r,o,e,e),typeof r=="string"&&this.updateTargetBindings(o,r),s.push(o)}}for(let o=0;o<s.length;o++)this.an(e,s[o]);m.Z(s)}}vg(t){super.vg(t);let e=this.getParentKeyForNodeData(t);e=this.maybeEnsureLinkReference(e),this.findNodeDataForKey(e)===null&&this.hn(e,t)}cw(t){super.cw(t);let e=this.getParentKeyForNodeData(t);this.an(e,t)}Tg(t,e){super.Tg(t,e),this.setParentLinkCategoryForNodeData(e,this.getParentLinkCategoryForNodeData(t)),this.setParentKeyForNodeData(e,this.getParentKeyForNodeData(t))}get type(){return"TreeModel"}Mx(){return!0}Cx(){return!0}}dt.Sl(Ue,"TreeModel");var ts=(x=>(x[x.ConstantSpacing=0]="ConstantSpacing",x[x.ConstantDistance=1]="ConstantDistance",x[x.ConstantAngle=2]="ConstantAngle",x[x.Packed=3]="Packed",x))(ts||{}),es=(x=>(x[x.Clockwise=10]="Clockwise",x[x.Counterclockwise=11]="Counterclockwise",x[x.BidirectionalLeft=12]="BidirectionalLeft",x[x.BidirectionalRight=13]="BidirectionalRight",x))(es||{}),is=(x=>(x[x.Forwards=20]="Forwards",x[x.Reverse=21]="Reverse",x[x.Ascending=22]="Ascending",x[x.Descending=23]="Descending",x[x.Optimized=24]="Optimized",x))(is||{}),ss=(x=>(x[x.Pythagorean=30]="Pythagorean",x[x.Circular=31]="Circular",x))(ss||{});class Ie extends ee{gi;tu;Rk;Fg;Ok;Ga;lL;aL;hL;Es;fw;uw;fc;dw;iF;Rg;Og;Ig;eu;He;P;Si;Mi;En;Eg;constructor(t){super(),this.gi=0,this.tu=0,this.Rk=0,this.Fg=360,this.Ok=0,this.Ga=0,this.lL=new P,this.aL=30,this.hL=0,this.Es=0,this.fw=0,this.uw=new Hs,this.fc=0,this.dw=0,this.iF=600,this.Rg=NaN,this.Og=1,this.Ig=0,this.eu=360,this.He=0,this.P=10,this.Si=24,this.Mi=Ee.standardComparer,this.En=6,this.Eg=30,t&&Object.assign(this,t)}cloneProtected(t){super.cloneProtected(t),t.Rg=this.Rg,t.Og=this.Og,t.Ig=this.Ig,t.eu=this.eu,t.He=this.He,t.P=this.P,t.Si=this.Si,t.Mi=this.Mi,t.En=this.En,t.Eg=this.Eg}fe(t){t in is?this.sorting=t:t in es?this.direction=t:t in ts?this.arrangement=t:t in ss?this.nodeDiameterFormula=t:super.fe(t)}createNetwork(){return new Ws(this)}g3(t,e,i){t=this.m3(t);let s=this.Ok,n=this.aL,o=this.gi,r=this.tu,a=this.Rk,h=this.Fg,l=this.Ga,u=this.hL,c=this.Es,d=this.fw;if(s=this.arrangement,n=this.nodeDiameterFormula,o=this.radius,(!isFinite(o)||o<=0)&&(o=NaN),r=this.aspectRatio,(!isFinite(r)||r<=0)&&(r=1),a=this.startAngle,isFinite(a)||(a=0),h=this.sweepAngle,(!isFinite(h)||h>360||h<1)&&(h=360),l=this.spacing,isFinite(l)||(l=NaN),s===3&&n===31?s=0:s===3&&n!==31&&(n=31,s=this.arrangement),(this.direction===12||this.direction===13)&&this.sorting!==24){for(let g=0;!(g>=t.length||(e.add(t.elt(g)),g+1>=t.length));g+=2)i.add(t.elt(g+1));this.direction===12?(this.arrangement===3&&e.reverse(),t=new q,t.addAll(e),t.addAll(i)):(this.arrangement===3&&i.reverse(),t=new q,t.addAll(i),t.addAll(e))}let f=t.length;u=0;let p=0;for(let g=0;g<t.length;g++){let y=a+h*p*(this.direction===10?1:-1)/f,b=t.elt(g).diameter;isNaN(b)&&(b=t.elt(g).Ya(y)),h<360&&(g===0||g===t.length-1)&&(b/=2),u+=b,p++}if(isNaN(o)||s===3){if(isNaN(l)&&(l=6),s!==0&&s!==3){let g=-1/0;for(let y=0;y<f;y++){let b=t.elt(y),v=t.elt(y===f-1?0:y+1);isNaN(b.diameter)&&b.Ya(0),isNaN(v.diameter)&&v.Ya(0),g=Math.max(g,(b.diameter+v.diameter)/2)}if(d=g+l,s===2){let y=2*Math.PI/f,b=(g+l)/y;r>1?(o=b,c=o*r):(c=b,o=c)}else o=this.Ik(d*(h>=360?f:f-1),r,a*Math.PI/180,h*Math.PI/180)}else o=this.Ik(u+(h>=360?f:f-1)*(s!==3?l:l*1.6),r,a*Math.PI/180,h*Math.PI/180);c=o*r}else{c=o*r;let g=this.cL(o,c,a*Math.PI/180,h*Math.PI/180);if(isNaN(l))s===0&&(l=(g-u)/(h>=360?f:f-1));else if(s===0){let y=(g-u)/(h>=360?f:f-1);y<l?(o=this.Ik(u+l*(h>=360?f:f-1),r,a*Math.PI/180,h*Math.PI/180),c=o*r):l=y}else{let y=-1/0;for(let w=0;w<f;w++){let k=t.elt(w),S=t.elt(w===f-1?0:w+1);isNaN(k.diameter)&&k.Ya(0),isNaN(S.diameter)&&S.Ya(0),y=Math.max(y,(k.diameter+S.diameter)/2)}let b=y+l,v=this.Ik(b*(h>=360?f:f-1),r,a*Math.PI/180,h*Math.PI/180);v>o?(o=v,c=o*r,d=b):d=g/(h>=360?f:f-1)}}return this.Ok=s,this.aL=n,this.gi=o,this.tu=r,this.Rk=a,this.Fg=h,this.Ga=l,this.hL=u,this.Es=c,this.fw=d,t}doLayout(t){this.network===null&&(this.network=this.makeNetwork(t)),this.arrangementOrigin=this.initialOrigin(this.arrangementOrigin);let e=this.network.vertexes;if(e.count<=1){if(e.count===1){let d=e.first();d.centerX=0,d.centerY=0}this.updateParts(),this.network=null,this.isValidLayout=!0;return}let i=new q;i.addAll(e.iterator);let s=new q,n=new q;i=this.g3(i,s,n);let o=this.Ok,r=this.gi,a=this.Rk,h=this.Fg,l=this.Ga,u=this.Es,c=this.fw;if((this.direction===12||this.direction===13)&&o===3)this.sF(i,h,a-h/2,10);else if(this.direction===12||this.direction===13){let d=0;switch(o){case 1:d=this.Ek(r,u,a,c)*180/Math.PI;break;case 0:{let f=0,p=0,g=s.first();g!==null&&(f=g.Ya(Math.PI/2));let y=n.first();y!==null&&(p=y.Ya(Math.PI/2)),d=this.Ek(r,u,a,l+(f+p)/2)*180/Math.PI;break}case 2:d=h/i.length;break}if(this.direction===12){switch(o){case 1:this.gw(s,h/2,a,11);break;case 0:this.mw(s,h/2,a,11);break;case 2:this.pw(s,h/2,a,11);break}switch(o){case 1:this.gw(n,h/2,a+d,10);break;case 0:this.mw(n,h/2,a+d,10);break;case 2:this.pw(n,h/2,a+d,10);break}}else{switch(o){case 1:this.gw(n,h/2,a,11);break;case 0:this.mw(n,h/2,a,11);break;case 2:this.pw(n,h/2,a,11);break}switch(o){case 1:this.gw(s,h/2,a+d,10);break;case 0:this.mw(s,h/2,a+d,10);break;case 2:this.pw(s,h/2,a+d,10);break}}}else switch(o){case 1:this.gw(i,h,a,this.direction);break;case 0:this.mw(i,h,a,this.direction);break;case 2:this.pw(i,h,a,this.direction);break;case 3:this.sF(i,h,a,this.direction);break}this.updateParts(),this.network=null,this.isValidLayout=!0}pw(t,e,i,s){let n=this.Fg,o=this.gi,r=this.Es,a=i*Math.PI/180,h=e*Math.PI/180,l=t.length;for(let u=0;u<l;u++){let c=a+(s===10?u*h/(n>=360?l:l-1):-(u*h)/l),d=t.elt(u),f=o*Math.tan(c)/r,p=Math.sqrt((o*o+r*r*f*f)/(1+f*f));d.centerX=p*Math.cos(c),d.centerY=p*Math.sin(c),d.actualAngle=c*180/Math.PI}}mw(t,e,i,s){let n=this.gi,o=this.Es,r=this.Ga,a=i*Math.PI/180,h=t.length;for(let l=0;l<h;l++){let u=t.elt(l),c=t.elt(l===h-1?0:l+1),d=n*Math.cos(a),f=o*Math.sin(a);u.centerX=d,u.centerY=f,u.actualAngle=a*180/Math.PI,isNaN(u.diameter)&&u.Ya(0),isNaN(c.diameter)&&c.Ya(0);let p=(u.diameter+c.diameter)/2,g=this.Ek(n,o,s===10?a:-a,p+r);a+=s===10?g:-g}}gw(t,e,i,s){let n=this.gi,o=this.Es,r=this.fw,a=i*Math.PI/180,h=t.length;for(let l=0;l<h;l++){let u=t.elt(l);u.centerX=n*Math.cos(a),u.centerY=o*Math.sin(a),u.actualAngle=a*180/Math.PI;let c=this.Ek(n,o,s===10?a:-a,r);a+=s===10?c:-c}}sF(t,e,i,s){let n=this.dw,o=this.Fg;if(this.fc=0,this.uw=new Hs,e<360){for(n=i+(s===10?o:-o);n<0;)n+=360;n%=360,n>180&&(n-=360),n*=Math.PI/180,this.dw=n,this.nF(t,e,i,s)}else this.oF(t,e,i,s);this.uw.commit(t)}oF(t,e,i,s){let n=this.gi,o=this.Es,r=this.Ga,a=this.tu,h=n*Math.cos(i*Math.PI/180),l=o*Math.sin(i*Math.PI/180),u=t.toArray();if(u.length===3){u[0].centerX=n,u[0].centerY=0,u[1].centerX=u[0].centerX-u[0].width/2-u[1].width/2-r,u[1].y=u[0].y,u[2].centerX=(u[0].centerX+u[1].centerX)/2,u[2].y=u[0].y-u[2].height-r;return}else if(u.length===4){u[0].centerX=n,u[0].centerY=0,u[2].centerX=-u[0].centerX,u[2].centerY=u[0].centerY,u[1].centerX=0,u[1].y=Math.min(u[0].y,u[2].y)-u[1].height-r,u[3].centerX=0,u[3].y=Math.max(u[0].y+u[0].height+r,u[2].y+u[2].height+r);return}let c=P.l();for(let k=0;k<u.length&&(u[k].centerX=h,u[k].centerY=l,!(k>=u.length-1));k++)this.rF(h,l,u,k,s,c)||this.lF(h,l,u,k,s,c),h=c.x,l=c.y;if(P.i(c),this.fc++,this.fc>23)return;let d=u[0].centerX,f=u[0].centerY,p=u[u.length-1].centerX,g=u[u.length-1].centerY,y=Math.abs(d-p)-((u[0].width+u[u.length-1].width)/2+r),b=Math.abs(f-g)-((u[0].height+u[u.length-1].height)/2+r),v=0;if(Math.abs(b)<1){let k=Math.abs(d-p),S=(u[0].width+u[u.length-1].width)/2;k<S&&(v=0),y=k-S}else b>0?v=b:Math.abs(y)<1?v=0:v=y;let w=!1;Math.abs(p)>Math.abs(g)?w=p>0!=f>g:w=g>0!=d<p,w=s===10?w:!w,w&&(v=-Math.abs(v),v=Math.min(v,-u[u.length-1].width),v=Math.min(v,-u[u.length-1].height)),this.uw.p3(v,u),Math.abs(v)>1&&(this.fc<8?this.gi-=v/(2*Math.PI):u.length<5&&v>10?this.gi/=2:this.gi-=v>0?1.7:-2.3,this.Es=this.gi*a,this.oF(t,e,i,s))}nF(t,e,i,s){let n=this.gi,o=this.Es,r=this.tu,a=n*Math.cos(i*Math.PI/180),h=o*Math.sin(i*Math.PI/180),l=P.l(),u=t.toArray();for(let p=0;p<u.length&&(u[p].centerX=a,u[p].centerY=h,!(p>=u.length-1));p++)this.rF(a,h,u,p,s,l)||this.lF(a,h,u,p,s,l),a=l.x,h=l.y;if(P.i(l),this.fc++,this.fc>23)return;let c=Math.atan2(h,a),d=s===10?this.dw-c:c-this.dw;d=Math.abs(d)<Math.abs(d-2*Math.PI)?d:d-2*Math.PI;let f=d*(n+o)/2;this.uw.y3(f,u),Math.abs(f)>1&&(this.fc<8?this.gi-=f/(2*Math.PI):this.gi-=f>0?1.7:-2.3,this.Es=this.gi*r,this.nF(t,e,i,s))}rF(t,e,i,s,n,o){let r=this.Ga,a=this.gi,h=this.Es,l=0,u=0,c=(i[s].width+i[s+1].width)/2+r,d=!1;if(e>=0!=(n===10)){if(l=t+c,l>a){if(l=t-c,l<-a)return o.x=l,o.y=u,!1;d=!0}}else if(l=t-c,l<-a){if(l=t+c,l>a)return o.x=l,o.y=u,!1;d=!0}return u=Math.sqrt(1-Math.min(1,l*l/(a*a)))*h,e<0!==d&&(u=-u),Math.abs(e-u)>(i[s].height+i[s+1].height)/2?(o.x=l,o.y=u,!1):(o.x=l,o.y=u,!0)}lF(t,e,i,s,n,o){let r=this.Ga,a=this.gi,h=this.Es,l=0,u=0,c=(i[s].height+i[s+1].height)/2+r,d=!1;if(t>=0!=(n===10)){if(u=e-c,u<-h){if(u=e+c,u>h)return o.x=l,o.y=u,!1;d=!0}}else if(u=e+c,u>h){if(u=e-c,u<-h)return o.x=l,o.y=u,!1;d=!0}return l=Math.sqrt(1-Math.min(1,u*u/(h*h)))*a,t<0!==d&&(l=-l),Math.abs(t-l)>(i[s].width+i[s+1].width)/2?(o.x=l,o.y=u,!1):(o.x=l,o.y=u,!0)}commitLayout(){this.commitNodes(),this.isRouting&&this.commitLinks()}commitNodes(){let t=this.group!==null&&this.group.hasPlaceholder(),e=t?this.group.location.copy():null,i=this.actualCenter;if(t?i=new P(0,0):(i.x=this.arrangementOrigin.x+this.gi,i.y=this.arrangementOrigin.y+this.Es),this.network!==null){let s=this.network.vertexes.iterator;for(;s.next();){let n=s.value;n.x+=i.x,n.y+=i.y,n.commit()}}if(t&&this.group&&e){this.group.ensureBounds();let s=this.group.position.copy(),n=this.group.location.copy(),o=e.subtract(n.subtract(s));this.group.move(o),this.lL=o.subtract(s)}}commitLinks(){if(this.network!==null){let t=this.network.edges.iterator;for(;t.next();)t.value.commit()}}cL(t,e,i,s){let n=this.iF;if(Math.abs(this.tu-1)<.001)return i!==void 0&&s!==void 0?s*t:2*Math.PI*t;let o=t>e?Math.sqrt(t*t-e*e)/t:Math.sqrt(e*e-t*t)/e,r=0,a=0;i!==void 0&&s!==void 0?a=s/(n+1):a=Math.PI/(2*(n+1));let h=0;for(let l=0;l<=n;l++){i!==void 0&&s!==void 0?h=i+l*s/n:h=l*Math.PI/(2*n);let u=Math.sin(h);r+=Math.sqrt(1-o*o*u*u)*a}return i!==void 0&&s!==void 0?(t>e?t:e)*r:4*(t>e?t:e)*r}Ik(t,e,i,s){let n=0;return i!==void 0&&s!==void 0?n=this.cL(1,e,i,s):n=this.cL(1,e),t/n}Ek(t,e,i,s){if(Math.abs(this.tu-1)<.001)return s/t;let n=t>e?Math.sqrt(t*t-e*e)/t:Math.sqrt(e*e-t*t)/e,o=0,r=2*Math.PI/(this.network.vertexes.count*700);t>e&&(i+=Math.PI/2);for(let a=0;;a++){let h=i+a*r,l=Math.sin(h);if(o+=(t>e?t:e)*Math.sqrt(1-n*n*l*l)*r,o>=s)return a*r}}m3(t){switch(this.sorting){case 20:break;case 21:t.reverse();break;case 22:t.sort(this.comparer);break;case 23:t.sort(this.comparer),t.reverse();break;case 24:return this.w3(this.x3(t));default:m.o("Invalid sorting type.")}return t}x3(t){let e=[];for(let s=0;s<t.length;s++)e.push(0);let i=new q;for(let s=0;s<t.length;s++){let n=-1,o=-1;if(s===0)for(let u=0;u<t.length;u++){let c=t.elt(u).edgesCount;c>n&&(n=c,o=u)}else for(let u=0;u<t.length;u++){let c=e[u];c>n&&(n=c,o=u)}i.add(t.elt(o)),e[o]=-1;let r=t.elt(o),a=0,h=r.sourceEdges;for(;h.next();){let u=h.value.fromVertex;a=t.indexOf(u),!(a<0)&&e[a]>=0&&e[a]++}let l=r.destinationEdges;for(;l.next();){let u=l.value.toVertex;a=t.indexOf(u),!(a<0)&&e[a]>=0&&e[a]++}}return i}w3(t){let e=[];for(let c=0;c<t.length;c++){let d=t.elt(c);e[c]=[];let f=0,p=d.destinationEdges;for(;p.next();){let y=p.value.toVertex;f=t.indexOf(y),f!==c&&e[c].indexOf(f)<0&&e[c].push(f)}let g=d.sourceEdges;for(;g.next();){let y=g.value.fromVertex;f=t.indexOf(y),f!==c&&e[c].indexOf(f)<0&&e[c].push(f)}}let i=[];for(let c=0;c<e.length;c++)i[c]=0;let s=[],n=[],o=[],r=[],a=new q,h=0;for(let c=0;c<e.length;c++){let d=e[c].length;if(d===1){r.push(c);continue}if(d===0){a.add(t.elt(c));continue}if(h===0){s.push(c),h++;continue}let f=1/0,p=1/0,g=-1,y=[];for(let b=0;b<s.length;b++)e[s[b]].indexOf(s[b===s.length-1?0:b+1])<0&&y.push(b===s.length-1?0:b+1);if(y.length===0)for(let b=0;b<s.length;b++)y.push(b);for(let b=0;b<y.length;b++){let v=y[b],w=this.b3(e[c],n,o,i,v,s),k=0;for(let S=0;S<e[c].length;S++){let N=e[c][S],D=s.indexOf(N);if(D>=0){let L=Math.abs(v-(D>=v?D+1:D));k+=L<s.length+1-L?L:s.length+1-L}}for(let S=0;S<n.length;S++){let N=i[n[S]],D=i[o[S]];if(N>=v&&N++,D>=v&&D++,N>D){let L=D;D=N,N=L}D-N<(s.length+2)/2==(N<v&&v<=D)&&k++}(w<f||w===f&&k<p)&&(f=w,p=k,g=v)}s.splice(g,0,c);for(let b=0;b<s.length;b++)i[s[b]]=b;for(let b=0;b<e[c].length;b++){let v=e[c][b];s.indexOf(v)>=0&&(n.push(c),o.push(v))}h++}let l=!1,u=s.length;for(;;){l=!0;for(let c=0;c<r.length;c++){let d=r[c],f=e[d][0],p=s.indexOf(f);if(p>=0){let g=0;for(let y=0;y<e[f].length;y++){let b=e[f][y],v=s.indexOf(b);if(v<0||v===p)continue;let w=v>p?v-p:p-v,k=u-w;g+=v<p!=w>k?1:-1}s.splice(g<0?p:p+1,0,d),r.splice(c,1),c--}else l=!1}if(l)break;s.push(r[0]),r.splice(0,1)}for(let c=0;c<s.length;c++){let d=s[c];a.add(t.elt(d))}return a}b3(t,e,i,s,n,o){let r=0;for(let a=0;a<e.length;a++){let h=e[a],l=i[a],u=s[h],c=s[l],d=0,f=0;if(u<c?(d=u,f=c):(d=c,f=u),d<n&&n<=f)for(let p=0;p<t.length;p++){let g=t[p];o.indexOf(g)<0||d<s[g]&&s[g]<f||d===s[g]||f===s[g]||r++}else for(let p=0;p<t.length;p++){let g=t[p];o.indexOf(g)<0||!(d<s[g]&&s[g]<f)||d===s[g]||f===s[g]||r++}}return r}get radius(){return this.Rg}set radius(t){this.Rg!==t&&(m.s(t,"number",Ie,"radius"),(t>0||isNaN(t))&&(this.Rg=t,this.p()))}get aspectRatio(){return this.Og}set aspectRatio(t){this.Og!==t&&(m.s(t,"number",Ie,"aspectRatio"),t>0&&(this.Og=t,this.p()))}get startAngle(){return this.Ig}set startAngle(t){this.Ig!==t&&(m.s(t,"number",Ie,"startAngle"),this.Ig=t,this.p())}get sweepAngle(){return this.eu}set sweepAngle(t){this.eu!==t&&(m.s(t,"number",Ie,"sweepAngle"),t>0&&t<=360?this.eu=t:this.eu=360,this.p())}get arrangement(){return this.He}set arrangement(t){this.He!==t&&(t===3||t===0||t===1||t===2)&&(this.He=t,this.p())}get direction(){return this.P}set direction(t){this.P!==t&&(t===10||t===11||t===12||t===13)&&(this.P=t,this.p())}get sorting(){return this.Si}set sorting(t){this.Si!==t&&(this.Si=t,this.p())}get comparer(){return this.Mi}set comparer(t){this.Mi!==t&&(m.S(t,Ie,"comparer"),this.Mi=t,this.p())}get spacing(){return this.En}set spacing(t){this.En!==t&&(m.s(t,"number",Ie,"spacing"),this.En=t,this.p())}get nodeDiameterFormula(){return this.Eg}set nodeDiameterFormula(t){this.Eg!==t&&(t===30||t===31)&&(this.Eg=t,this.p())}get actualXRadius(){return this.gi}get actualYRadius(){return this.Es}get actualSpacing(){return this.Ga}get actualCenter(){return this.lL}static ConstantSpacing=0;static ConstantDistance=1;static ConstantAngle=2;static Packed=3;static Clockwise=10;static Counterclockwise=11;static BidirectionalLeft=12;static BidirectionalRight=13;static Forwards=20;static Reverse=21;static Ascending=22;static Descending=23;static Optimized=24;static Pythagorean=30;static Circular=31}class Hs{iu;uc;su;constructor(){this.iu=-1/0,this.uc=null,this.su=null}p3(t,e){if(t>0&&this.iu<0||Math.abs(t)<Math.abs(this.iu)&&!(t<0&&this.iu>0)){this.iu=t,this.uc=[],this.su=[];for(let i=0;i<e.length;i++)this.uc[i]=e[i].bounds.x,this.su[i]=e[i].bounds.y}}y3(t,e){if(Math.abs(t)<Math.abs(this.iu)){this.iu=t,this.uc=[],this.su=[];for(let i=0;i<e.length;i++)this.uc[i]=e[i].bounds.x,this.su[i]=e[i].bounds.y}}commit(t){if(!(this.uc===null||this.su===null))for(let e=0;e<this.uc.length;e++){let i=t.elt(e);i.x=this.uc[e],i.y=this.su[e]}}}class Ws extends Re{constructor(t){super(t)}createVertex(){return new di(this)}createEdge(){return new $s(this)}}class di extends Ee{Ao;Uk;constructor(t){super(t),this.Ao=NaN,this.Uk=NaN}Ya(t){let e=this.network;if(e===null)return NaN;let i=e.layout;if(i===null)return NaN;if(i.arrangement===3){if(i.nodeDiameterFormula===31)return this.Ao=Math.max(this.width,this.height),this.Ao;{let s=Math.abs(Math.sin(t)),n=Math.abs(Math.cos(t));return s===0?this.width:n===0?this.height:(this.Ao=Math.min(this.height/s,this.width/n),this.Ao)}}else return i.nodeDiameterFormula===31?(this.Ao=Math.max(this.width,this.height),this.Ao):(this.Ao=Math.sqrt(this.width*this.width+this.height*this.height),this.Ao)}get diameter(){return this.Ao}set diameter(t){this.Ao!==t&&(m.s(t,"number",di,"diameter"),this.Ao=t)}get actualAngle(){return this.Uk}set actualAngle(t){this.Uk!==t&&(m.s(t,"number",di,"actualAngle"),this.Uk=t)}}class $s extends ei{constructor(t){super(t)}}class se extends ee{yw;Ka;Us;Ug;Vn;Gi;Vg;Bg;zg;nu;Xg;Gg;ou;ru;lu;au;Yg;Kg;hu;dc;constructor(t){super(),this.yw=0,this.Ka=0,this.Us=new nt(100,100).k(),this.Ug=!1,this.Vn=!0,this.Gi=!1,this.Vg=100,this.Bg=300,this.zg=1,this.nu=1e3,this.Xg=10,this.Gg=Math,this.ou=.05,this.ru=50,this.lu=150,this.au=0,this.Yg=10,this.Kg=5,this.hu=NaN,this.dc=10,t&&Object.assign(this,t)}cloneProtected(t){super.cloneProtected(t),t.Us.h(this.Us),t.Ug=this.Ug,t.Vn=this.Vn,t.Gi=this.Gi,t.Vg=this.Vg,t.Bg=this.Bg,t.zg=this.zg,t.nu=this.nu,t.Xg=this.Xg,t.Gg=this.Gg,t.ou=this.ou,t.ru=this.ru,t.lu=this.lu,t.au=this.au,t.Yg=this.Yg,t.Kg=this.Kg,t.hu=this.hu,t.dc=this.dc}createNetwork(){return new Js(this)}doLayout(t){this.network=this.makeNetwork(t);let e=this.network.vertexes.iterator,i=this.maxIterations;if(this.network.vertexes.count>0){for(this.network.deleteSelfEdges(),e=this.network.vertexes.iterator;e.next();){let n=e.value;n.charge=this.electricalCharge(n),n.mass=this.gravitationalMass(n)}let s=this.network.edges.iterator;for(;s.next();){let n=s.value;n.stiffness=this.springStiffness(n),n.length=this.springLength(n)}if(this.fL(),this.Ka=0,this.needsPrelayout()){let n=this.network,o=n.splitIntoSubNetworks(!1),r=o.iterator;for(;r.next();){let a=r.value;this.doConnectedSubnetLayout(a)}for(r=o.iterator,this.k3(r,n),r=o.iterator;r.next();){let a=r.value,h=a.vertexes.iterator;for(;h.next();){let u=h.value;n.addVertex(u)}let l=a.edges.iterator;for(;l.next();){let u=l.value;n.addEdge(u)}}}else this.aF(this.network,this.maxIterations);this.updateParts()}this.maxIterations=i,this.isValidLayout=!0}needsPrelayout(){if(this.network===null||this.network.vertexes.count<3)return!1;let t=0,e=0,i=this.network.vertexes.first().bounds,s=this.network.vertexes.iterator;for(;s.next();){let n=s.value,o=n.bounds;if(isNaN(n.x)||isNaN(n.y)||o.intersectsRect(i)&&(t++,t>2))return!0;if(e>10)return!1;e++}return!1}doConnectedSubnetLayout(t){let e=t.vertexes.iterator;for(;e.next();){let a=e.value;a.hierarchicalVertexes.add(a)}let i=t,s=this.hu;if(isNaN(s)&&(s=t.edges.count/t.vertexes.count),s<t.vertexes.count)for(;i.vertexes.count>Math.max(100,Math.sqrt(s*t.vertexes.count));)i=this.coarsenNetwork(i);let n=0;e=i.vertexes.iterator;let o=this.randomNumberGenerator;for(o===null&&(this.randomNumberGenerator=o=new Zs(0));e.next();){e.value.idInCluster=n++;let a=10*(o.random()-.5),h=10*(o.random()-.5);this.isFixed(e.value)||(e.value.x=a,e.value.y=h);let l=e.value.hierarchicalVertexes.iterator;for(;l.next();)this.isFixed(l.value)||(l.value.x=a,l.value.y=h)}let r=this.computePairwiseDistances(i);this.P3(i,r,this.maxPrelayoutIterations,t.vertexes.count),this.aF(t,this.maxIterations)}computePairwiseDistances(t){let e=t.vertexes.count,i=new Array(e);for(let r=0;r<e;r++)i[r]=new Array(e).fill(-1),i[r][r]=0;let s=t.vertexes.iterator,n=new Map,o=[];for(;s.next();){let r=s.value;for(o=[r],n=new Map,n.set(r.idInCluster,0);o.length>0;){let a=o.shift(),h=a.vertexes.iterator;for(;h.next();){let l=h.value;n.has(l.idInCluster)||(n.set(l.idInCluster,n.get(a.idInCluster)+1),o.push(l))}}for(let a=0;a<e;a++){let h=Math.min(i[r.idInCluster][a],i[a][r.idInCluster]),l=n.get(a);(h<0||l<h)&&(i[r.idInCluster][a]=l,i[a][r.idInCluster]=l)}}return i}coarsenNetwork(t){let e=this.createNetwork(),i=new Map,s=0,n=t.vertexes.iterator;for(;n.next();)n.value.idInCluster=s++;for(n=t.vertexes.iterator;n.next();){let r=n.value;if(i.has(r.idInCluster))continue;let a=Number.MAX_SAFE_INTEGER,h=null,l=r.vertexes.iterator;for(;l.next();){let c=l.value;i.has(c.idInCluster)||c.hierarchicalVertexes.length<a&&(a=c.hierarchicalVertexes.length,h=c)}let u=e.createVertex();u.hierarchicalVertexes.addAll(r.hierarchicalVertexes),h!=null&&u.hierarchicalVertexes.addAll(h.hierarchicalVertexes),i.set(r.idInCluster,u),h!=null&&i.set(h.idInCluster,u),e.addVertex(u)}let o=t.edges.iterator;for(;o.next();){let r=o.value,a=i.get(r.fromVertex.idInCluster),h=i.get(r.toVertex.idInCluster);if(a===h)continue;let l=e.createEdge();l.fromVertex=a||null,l.toVertex=h||null,e.addEdge(l)}return e}ix(t,e){let i=!0,s=t.vertexes.iterator;for(;s.next();){let n=s.value;i?(i=!1,e.set(n.bounds)):e.unionRect(n.bounds)}return e}k3(t,e){let i=this.arrangementSpacing,s=t.count,n=!0,o=0,r=0,a=m.st();for(let c=0;c<s+e.vertexes.count+2;c++)a[c]=null;let h=0;t.reset();let l=I.l(),u;for(;t.next();){let c=t.value;if(this.ix(c,l),n)n=!1,o=l.x+l.width/2,r=l.y+l.height/2,a[0]=new P(l.x+l.width+i.width,l.y),a[1]=new P(l.x,l.y+l.height+i.height),h=2;else{let d=this.hF(a,h,o,r,l.width,l.height,i),f=a[d],p=new P(f.x+l.width+i.width,f.y),g=new P(f.x,f.y+l.height+i.height);d+1<h&&a.splice(d+1,0,null),a[d]=p,a[d+1]=g,h++;let y=f.x-l.x,b=f.y-l.y;for(u=c.vertexes.iterator;u.next();){let v=u.value;this.isFixed(v)||(v.centerX+=y,v.centerY+=b)}}}for(I.i(l),u=e.vertexes.iterator;u.next();){let c=u.value,d=c.bounds;if(h<2){o=d.x+d.width/2,r=d.y+d.height/2,a[0]=new P(d.x+d.width+i.width,d.y),a[1]=new P(d.x,d.y+d.height+i.height),h=2;continue}let f=this.hF(a,h,o,r,d.width,d.height,i),p=a[f],g=new P(p.x+d.width+i.width,p.y),y=new P(p.x,p.y+d.height+i.height);f+1<h&&a.splice(f+1,0,null),a[f]=g,a[f+1]=y,h++,this.isFixed(c)||(c.centerX=p.x+c.width/2,c.centerY=p.y+c.height/2)}m.Z(a)}hF(t,e,i,s,n,o,r){let a=9e19,h=-1;t:for(let l=0;l<e;l++){let u=t[l],c=u.x-i,d=u.y-s,f=c*c+d*d;if(f<a){for(let p=l-1;p>=0;p--)if(t[p].y>u.y&&t[p].x-u.x<n+r.width)continue t;for(let p=l+1;p<e;p++)if(t[p].x>u.x&&t[p].y-u.y<o+r.height)continue t;h=l,a=f}}return h}fL(){if(this.network===null||!this.comments)return;let t=this.network.vertexes.iterator;for(;t.next();){let e=t.value;this.addComments(e)}}addComments(t){if(this.network===null)return;let e=t.node;if(e!==null){let i=e.findNodesConnected();for(;i.next();){let s=i.value;if(s.category!=="Comment"||!s.isVisible())continue;let n=this.network.findVertex(s);n===null&&(n=this.network.addNode(s)),n.charge=this.defaultCommentElectricalCharge;let o=null,r=n.destinationEdges;for(;r.next();){let a=r.value;if(a.toVertex===t){o=a;break}}if(o===null){let a=n.sourceEdges;for(;a.next();){let h=a.value;if(h.fromVertex===t){o=h;break}}}o===null&&(o=this.network.linkVertexes(t,n,null)),o.length=this.defaultCommentSpringLength}}}cF(t,e){let i=t.bounds,s=i.x,n=i.y,o=i.width,r=i.height,a=e.bounds,h=a.x,l=a.y,u=a.width,c=a.height;if(s+o<h)if(n>l+c){let d=s+o-h,f=n-l-c;return C.Qw(d*d+f*f)}else if(n+r<l){let d=s+o-h,f=n+r-l;return C.Qw(d*d+f*f)}else return h-(s+o);else if(s>h+u)if(n>l+c){let d=s-h-u,f=n-l-c;return C.Qw(d*d+f*f)}else if(n+r<l){let d=s-h-u,f=n+r-l;return C.Qw(d*d+f*f)}else return s-(h+u);else return n>l+c?n-(l+c):n+r<l?l-(n+r):.1}aF(t,e){let i=this.Ka+e;for(;this.Ka<i&&(this.Ka++,!!this.S3(t)););}S3(t){let e=t.vertexes.toArray();if(e.length<=0)return!1;let i=e[0];i.forceX=0,i.forceY=0;let s=i.centerX,n=s,o=i.centerY,r=o;for(let p=1;p<e.length;p++){let g=e[p];g.forceX=0,g.forceY=0;let y=g.centerX,b=g.centerY;s=Math.min(s,y),n=Math.max(n,y),o=Math.min(o,b),r=Math.max(r,b)}let a=n-s>r-o;a?e.sort((p,g)=>p===null||g===null||p===g?0:p.centerX-g.centerX):e.sort((p,g)=>p===null||g===null||p===g?0:p.centerY-g.centerY);let h=this.nu,l=0,u=0,c=0;for(let p=0;p<e.length;p++){let g=e[p],y=g.bounds,b=g.focus,v=y.x+b.x,w=y.y+b.y;u=g.charge*this.electricalFieldX(v,w),c=g.charge*this.electricalFieldY(v,w),u+=g.mass*this.gravitationalFieldX(v,w),c+=g.mass*this.gravitationalFieldY(v,w),g.forceX+=u,g.forceY+=c;for(let k=p+1;k<e.length;k++){let S=e[k];if(!this.shouldInteract(g,S)||k===p)continue;let N=S.bounds,D=S.focus,L=N.x+D.x,M=N.y+D.y;if(v-L>h||L-v>h){if(a)break;continue}if(w-M>h||M-w>h){if(!a)break;continue}let A=this.cF(g,S),F=2*g.charge,O=2*S.charge;if(A>1)l=F*O/(A*A),u=l*(v-L)/A,c=l*(w-M)/A;else{let E=this.randomNumberGenerator;E===null&&(this.randomNumberGenerator=E=new Zs(0));let B=E.random(),X=E.random();if(v>L)u=Math.abs(S.bounds.right-g.bounds.x),u=F*O*(1+u)*B;else if(v<L)u=Math.abs(S.bounds.x-g.bounds.right),u=-(F*O)*(1+u)*B;else{let z=Math.max(S.width,g.width);u=F*O*((1+z)*B-z/2)}if(w>M)c=Math.abs(S.bounds.bottom-g.bounds.y),c=F*O*(1+c)*X;else if(v<L)c=Math.abs(S.bounds.y-g.bounds.bottom),c=-(F*O)*(1+c)*X;else{let z=Math.max(S.height,g.height);c=F*O*((1+z)*X-z/2)}}g.forceX+=u,g.forceY+=c,S.forceX-=u,S.forceY-=c}}let d=t.edges.iterator;for(;d.next();){let p=d.value,g=p.fromVertex,y=p.toVertex,b=g.bounds,v=g.focus,w=b.x+v.x,k=b.y+v.y,S=y.bounds,N=y.focus,D=S.x+N.x,L=S.y+N.y,M=this.cF(g,y);M>1&&(l=.1*p.stiffness*(M-p.length),u=l*.5*(g.width+y.height)*(w-D)/M,c=l*.5*(g.width+y.height)*(k-L)/M),g.forceX-=u,g.forceY-=c,y.forceX+=u,y.forceY+=c}let f=0;for(let p=0;p<e.length;p++){let g=e[p];this.isFixed(g)?this.moveFixedVertex(g):f=Math.max(f,this.moveVertex(g)||0)}return f>this.epsilonDistance*this.epsilonDistance}P3(t,e,i,s){let n=this.Ka+i,o=Math.sqrt(s);this.yw=this.dc*t.vertexes.count;let r=t.vertexes.toArray(),a=0,h=0,l=0;for(;this.Ka<n;){this.Ka++,h=a,a=0;for(let u=0;u<r.length;u++){r[u].forceX=0,r[u].forceY=0;for(let d=0;d<r.length;d++){if(u===d)continue;let f=Math.sqrt((r[u].centerX-r[d].centerX)**2+(r[u].centerY-r[d].centerY)**2),p=e[r[u].idInCluster][r[d].idInCluster],g=(f-this.dc*o*p)/f;r[u].forceX+=g*(r[d].x-r[u].x),r[u].forceY+=g*(r[d].y-r[u].y)}let c=Math.sqrt(r[u].forceX*r[u].forceX+r[u].forceY*r[u].forceY);if(c>0){r[u].forceX=this.yw*r[u].forceX/c,r[u].forceY=this.yw*r[u].forceY/c,this.isFixed(r[u])||(r[u].x+=r[u].forceX,r[u].y+=r[u].forceY);let d=r[u].hierarchicalVertexes.iterator;for(;d.next();){let f=d.value;this.isFixed(f)||(f.centerX+=r[u].forceX,f.centerY+=r[u].forceY)}}a+=c*c}if(a>=h){if(l++,l>=5)break}else l=0;this.yw*=.95}}moveVertex(t){let e=t.forceX,i=t.forceY,s=this.moveLimit;return e<-s?e=-s:e>s&&(e=s),i<-s?i=-s:i>s&&(i=s),t.centerX+=e,t.centerY+=i,e*e+i*i}shouldInteract(t,e){return!0}moveFixedVertex(t){}commitLayout(){this.ww(),this.commitNodes(),this.isRouting&&this.commitLinks()}ww(){if(this.network===null||!this.setsPortSpots)return;let t=this.network.edges.iterator;for(;t.next();){let e=t.value.link;e!==null&&(e.fromSpot=T.Default,e.toSpot=T.Default)}}commitNodes(){if(!this.network)return;let t=0,e=0;if(this.arrangesToOrigin){let n=I.l();this.ix(this.network,n);let o=this.arrangementOrigin;t=o.x-n.x,e=o.y-n.y,I.i(n)}let i=I.l(),s=this.network.vertexes.iterator;for(;s.next();){let n=s.value;(t!==0||e!==0)&&(i.h(n.bounds),i.x+=t,i.y+=e,n.bounds=i),n.commit()}I.i(i)}commitLinks(){if(!this.network)return;let t=this.network.edges.iterator;for(;t.next();)t.value.commit()}springStiffness(t){let e=t.stiffness;return isNaN(e)?this.ou:e}springLength(t){let e=t.length;return isNaN(e)?this.ru:e}electricalCharge(t){let e=t.charge;return isNaN(e)?this.lu:e}electricalFieldX(t,e){return 0}electricalFieldY(t,e){return 0}gravitationalMass(t){let e=t.mass;return isNaN(e)?this.au:e}gravitationalFieldX(t,e){return 0}gravitationalFieldY(t,e){return 0}isFixed(t){return t.isFixed}get currentIteration(){return this.Ka}get arrangementSpacing(){return this.Us}set arrangementSpacing(t){this.Us.equals(t)||(this.Us.h(t),this.p())}get arrangesToOrigin(){return this.Ug}set arrangesToOrigin(t){this.Ug!==t&&(m.s(t,"boolean",se,"arrangesToOrigin"),this.Ug=t,this.p())}get setsPortSpots(){return this.Vn}set setsPortSpots(t){this.Vn!==t&&(m.s(t,"boolean",se,"setsPortSpots"),this.Vn=t,this.p())}get comments(){return this.Gi}set comments(t){this.Gi!==t&&(m.s(t,"boolean",se,"comments"),this.Gi=t,this.p())}get maxPrelayoutIterations(){return this.Vg}set maxPrelayoutIterations(t){this.Vg!==t&&(m.s(t,"number",se,"maxPrelayoutIterations"),t>=0&&(this.Vg=t,this.p()))}get maxIterations(){return this.Bg}set maxIterations(t){this.Bg!==t&&(m.s(t,"number",se,"maxIterations"),t>=0&&(this.Bg=t,this.p()))}get epsilonDistance(){return this.zg}set epsilonDistance(t){this.zg!==t&&(m.s(t,"number",se,"epsilonDistance"),t>0&&(this.zg=t,this.p()))}get infinityDistance(){return this.nu}set infinityDistance(t){this.nu!==t&&(m.s(t,"number",se,"infinityDistance"),t>1&&(this.nu=t,this.p()))}get moveLimit(){return this.Xg}set moveLimit(t){this.Xg!==t&&(m.s(t,"number",se,"moveLimit"),this.Xg=t,this.p())}get randomNumberGenerator(){return this.Gg}set randomNumberGenerator(t){this.Gg!==t&&(t!==null&&!m.it(t.random)&&m.o('ForceDirectedLayout.randomNumberGenerator must have a "random()" function on it: '+t),this.Gg=t)}get defaultSpringStiffness(){return this.ou}set defaultSpringStiffness(t){this.ou!==t&&(m.s(t,"number",se,"defaultSpringStiffness"),this.ou=t,this.p())}get defaultSpringLength(){return this.ru}set defaultSpringLength(t){this.ru!==t&&(m.s(t,"number",se,"defaultSpringLength"),this.ru=t,this.p())}get defaultElectricalCharge(){return this.lu}set defaultElectricalCharge(t){this.lu!==t&&(m.s(t,"number",se,"defaultElectricalCharge"),this.lu=t,this.p())}get defaultGravitationalMass(){return this.au}set defaultGravitationalMass(t){this.au!==t&&(m.s(t,"number",se,"defaultGravitationalMass"),this.au=t,this.p())}get defaultCommentSpringLength(){return this.Yg}set defaultCommentSpringLength(t){this.Yg!==t&&(m.s(t,"number",se,"defaultCommentSpringLength"),this.Yg=t,this.p())}get defaultCommentElectricalCharge(){return this.Kg}set defaultCommentElectricalCharge(t){this.Kg!==t&&(m.s(t,"number",se,"defaultCommentElectricalCharge"),this.Kg=t,this.p())}get prelayoutQuality(){return this.hu}set prelayoutQuality(t){this.hu!==t&&(m.s(t,"number",se,"prelayoutQuality"),this.hu=t,this.p())}get prelayoutSpread(){return this.dc}set prelayoutSpread(t){this.dc!==t&&(m.s(t,"number",se,"prelayoutSpread"),this.dc=t,this.p())}}class Js extends Re{constructor(t){super(t)}createVertex(){return new Be(this)}createEdge(){return new fi(this)}}class Be extends Ee{Vk;Bk;zk;Xk;Gk;hierarchicalVertexes;idInCluster;constructor(t){super(t),this.Vk=!1,this.Bk=NaN,this.zk=NaN,this.Xk=0,this.Gk=0,this.hierarchicalVertexes=new q,this.idInCluster=-1}get isFixed(){return this.Vk}set isFixed(t){this.Vk!==t&&(m.s(t,"boolean",Be,"isFixed"),this.Vk=t)}get charge(){return this.Bk}set charge(t){this.Bk!==t&&(m.s(t,"number",Be,"charge"),this.Bk=t)}get mass(){return this.zk}set mass(t){this.zk!==t&&(m.s(t,"number",Be,"mass"),this.zk=t)}get forceX(){return this.Xk}set forceX(t){this.Xk!==t&&(m.s(t,"number",Be,"forceX"),this.Xk=t)}get forceY(){return this.Gk}set forceY(t){this.Gk!==t&&(m.s(t,"number",Be,"forceY"),this.Gk=t)}}class fi extends ei{Yk;Kk;constructor(t){super(t),this.Yk=NaN,this.Kk=NaN}get stiffness(){return this.Yk}set stiffness(t){this.Yk!==t&&(m.s(t,"number",fi,"stiffness"),this.Yk=t)}get length(){return this.Kk}set length(t){this.Kk!==t&&(m.s(t,"number",fi,"length"),this.Kk=t)}}class Zs{I;R;Q;M;A;seed;constructor(t){t===void 0&&(t=42),this.seed=t,this.A=48271,this.M=2147483647,this.Q=this.M/this.A,this.R=this.M%this.A,this.I=1/this.M,this.random()}random(){let t=this.seed/this.Q,e=this.seed%this.Q,i=this.A*e-this.R*t;return i>0?this.seed=i:this.seed=i+this.M,this.seed*this.I}}var ns=(x=>(x[x.DepthFirst=0]="DepthFirst",x[x.Greedy=1]="Greedy",x[x.FromLayers=2]="FromLayers",x))(ns||{}),os=(x=>(x[x.OptimalLinkLength=10]="OptimalLinkLength",x[x.LongestPathSink=11]="LongestPathSink",x[x.LongestPathSource=12]="LongestPathSource",x))(os||{}),rs=(x=>(x[x.DepthFirstOut=20]="DepthFirstOut",x[x.DepthFirstIn=21]="DepthFirstIn",x[x.Naive=22]="Naive",x))(rs||{}),as=(x=>(x[x.None=30]="None",x[x.Less=31]="Less",x[x.More=32]="More",x))(as||{}),Qs=(x=>(x[x.None=0]="None",x[x.Expand=1]="Expand",x[x.Straighten=2]="Straighten",x[x.Median=4]="Median",x[x.MaybeExpand=8]="MaybeExpand",x[x.All=15]="All",x))(Qs||{}),_s=(x=>(x[x.None=0]="None",x[x.UpperLeft=1]="UpperLeft",x[x.UpperRight=2]="UpperRight",x[x.LowerLeft=4]="LowerLeft",x[x.LowerRight=8]="LowerRight",x[x.All=15]="All",x))(_s||{});class Ce extends ee{Vs;ti;P;cu;fu;uu;gc;du;hr;gu;Vn;_;xw;zt;Hg;Bs;ie;zs;ms;ps;Rt;qg;jg;Hk;fn;mu;cr;Bn;zn;uL;Ha;constructor(t){super(),this.Vs=25,this.ti=25,this.P=0,this.cu=0,this.fu=10,this.uu=20,this.gc=4,this.du=31,this.hr=15,this.gu=10,this.Vn=!0,this._=-1,this.xw=-1,this.zt=-1,this.Hg=0,this.Bs=0,this.ie=new Int16Array(0),this.zs=new Float32Array(0),this.ms=new Float32Array(0),this.ps=new Float32Array(0),this.Rt=new Float32Array(0),this.qg=0,this.jg=new Int16Array(0),this.Hk=new Int16Array(0),this.fn=0,this.mu=null,this.cr=new P,this.Bn=[],this.Bn.length=100,this.zn=15,this.uL=0,this.Ha=!0,t&&Object.assign(this,t)}cloneProtected(t){super.cloneProtected(t),t.Vs=this.Vs,t.ti=this.ti,t.P=this.P,t.cu=this.cu,t.fu=this.fu,t.uu=this.uu,t.gc=this.gc,t.du=this.du,t.hr=this.hr,t.gu=this.gu,t.Vn=this.Vn,t.zn=this.zn,t.Ha=this.Ha}fe(t){t in as?this.aggressiveOption=t:t in ns?this.cycleRemoveOption=t:t in rs?this.initializeOption=t:t in os?this.layeringOption=t:super.fe(t)}createNetwork(){return new tn(this)}doLayout(t){this.network===null&&(this.network=this.makeNetwork(t)),this.arrangementOrigin=this.initialOrigin(this.arrangementOrigin),this.M3(),this.network.vertexes.count>0&&(this.network.deleteSelfEdges(),this.cycleRemoveOption!==2&&this.removeCycles(),this.C3(),this.cycleRemoveOption===2&&this.removeCycles(),this.N3(),this.L3(),this.A3(),this.reduceCrossings(),this.straightenAndPack(),this.updateParts()),this.network=null,this.isValidLayout=!0}linkMinLength(t){return 1}linkLengthWeight(t){return 1}linkStraightenWeight(t){let e=t.fromVertex.node||t.fromVertex.data,i=t.toVertex.node||t.toVertex.data;return e===null&&i===null?8:e===null||i===null?4:1}nodeMinLayerSpace(t,e){return t.node===null&&t.data===null?0:this.P===90||this.P===270?e?t.focus.y+10:t.bounds.height-t.focus.y+10:e?t.focus.x+10:t.bounds.width-t.focus.x+10}nodeMinColumnSpace(t,e){if(t.node===null&&t.data===null)return 0;let i=e?t.qk:t.jk;if(i!==null)return i;let s=this.P;return s===90||s===270?e?t.qk=t.focus.x/this.ti+1|0:t.jk=(t.bounds.width-t.focus.x)/this.ti+1|0:e?t.qk=t.focus.y/this.ti+1|0:t.jk=(t.bounds.height-t.focus.y)/this.ti+1|0}ei(){let t=this.network.vertexes.count;this.jg.length<t*2&&(this.jg=new Int16Array(t*2));let e=0,i=this.network.vertexes.iterator;for(;i.next();){let s=i.value;this.jg[e]=s.column,e++,this.jg[e]=s.index,e++}return this.jg}ns(t){let e=0,i=this.network.vertexes.iterator;for(;i.next();){let s=i.value;s.column=t[e],e++,s.index=t[e],e++}}fF(t,e){let i=this.qa(t),s=this.ie[t];this.Hk.length<s*s&&(this.Hk=new Int16Array(s*s));let n=this.Hk;for(let o=0;o<s;o++){let r=0,a=i[o],h=a.near,l=0;h!==null&&h!==a&&h.layer===a.layer&&(r+=Math.max(0,Math.abs(h.index-a.index)-1));let u,c=0,d,f=0,p=0,g=0,y,b=0,v,w=0,k=0,S=0,N;if(e>=0){for(u=i[o].So,c=0;c<u.length;c++)if(d=u[c],d.valid&&d.fromVertex.layer!==t)for(f=d.fromVertex.index,p=d.portToPos,g=d.portFromPos,b=c+1;b<u.length;b++)v=u[b],v.valid&&v.fromVertex.layer!==t&&(w=v.fromVertex.index,k=v.portToPos,S=v.portFromPos,p<k&&(f>w||f===w&&g>S)&&r++,k<p&&(w>f||w===f&&S>g)&&r++)}if(e<=0){for(u=i[o].or,c=0;c<u.length;c++)if(d=u[c],d.valid&&d.toVertex.layer!==t)for(f=d.toVertex.index,p=d.portToPos,g=d.portFromPos,b=c+1;b<u.length;b++)v=u[b],v.valid&&v.toVertex.layer!==t&&(w=v.toVertex.index,k=v.portToPos,S=v.portFromPos,g<S&&(f>w||f===w&&p>k)&&r++,S<g&&(w>f||w===f&&k>p)&&r++)}for(n[o*s+o]=r,l=o+1;l<s;l++){let D=0,L=0;if(e>=0){for(y=i[o].So,N=i[l].So,c=0;c<y.length;c++)if(d=y[c],d.valid&&d.fromVertex.layer!==t)for(f=d.fromVertex.index,p=d.portToPos,g=d.portFromPos,b=0;b<N.length;b++)v=N[b],v.valid&&v.fromVertex.layer!==t&&(w=v.fromVertex.index,k=v.portToPos,S=v.portFromPos,(f<w||f===w&&g<S)&&L++,(w<f||w===f&&S<g)&&D++)}if(e<=0){for(y=i[o].or,N=i[l].or,c=0;c<y.length;c++)if(d=y[c],d.valid&&d.toVertex.layer!==t)for(f=d.toVertex.index,p=d.portToPos,g=d.portFromPos,b=0;b<N.length;b++)v=N[b],v.valid&&v.toVertex.layer!==t&&(w=v.toVertex.index,k=v.portToPos,S=v.portFromPos,(f<w||f===w&&p<k)&&L++,(w<f||w===f&&k<p)&&D++)}n[o*s+l]=D,n[l*s+o]=L}}return this.ja(t,i),n}countCrossings(){let t=0;for(let e=0;e<=this._;e++){let i=this.fF(e,1),s=this.ie[e];for(let n=0;n<s;n++)for(let o=n;o<s;o++)t+=i[n*s+o]}return t}T3(t,e,i){let s=this.qa(t),n=this.ie[t],o=0;for(let r=0;r<n;r++){let a=null;e<=0&&(a=s[r].So);let h=null;e>=0&&(h=s[r].or);let l,u=0,c=0;if(a!==null)for(let d=0;d<a.length;d++)l=a[d],l.valid&&l.fromVertex.layer!==t&&(u=l.fromVertex.column+l.portFromColOffset,c=l.toVertex.column+l.portToColOffset,i?o+=Math.abs(u-c)*this.linkStraightenWeight(l):o+=Math.abs(u-c));if(h!==null)for(let d=0;d<h.length;d++)l=h[d],l.valid&&l.toVertex.layer!==t&&(u=l.fromVertex.column+l.portFromColOffset,c=l.toVertex.column+l.portToColOffset,i?o+=(Math.abs(u-c)+1)*this.linkStraightenWeight(l):o+=Math.abs(u-c))}return this.ja(t,s),o}Wk(t){let e=0;for(let i=0;i<=this._;i++)e+=this.T3(i,1,t);return e}bw(){let t=1/0;this.zt=-1;let e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;t=Math.min(t,i.column-this.nodeMinColumnSpace(i,!0)),this.zt=Math.max(this.zt,i.column+this.nodeMinColumnSpace(i,!1))}for(e.reset();e.next();){let i=e.value;i.column-=t}this.zt-=t}kw(t,e){let i=this.qa(t),s=this.ie[t],n=new Float32Array(s);for(let o=0;o<s;o++){let r=i[o],a=null;e<=0&&(a=r.So);let h=null;e>=0&&(h=r.or);let l=0,u=0,c=r.near;c!==null&&c.layer===r.layer&&(l+=c.column-1,u++);let d;if(a!==null)for(let f=0;f<a.length;f++){d=a[f];let p=d.fromVertex;d.valid&&!d.rev&&p.layer!==t&&(l+=p.column,u++)}if(h!==null)for(let f=0;f<h.length;f++){d=h[f];let p=d.toVertex;d.valid&&!d.rev&&p.layer!==t&&(l+=p.column,u++)}u===0?n[o]=-1:n[o]=l/u}return this.ja(t,i),n}uF(t,e){let i=this.qa(t),s=this.ie[t],n=new Int16Array(s);for(let o=0;o<s;o++){let r=i[o],a=null;e<=0&&(a=r.So);let h=null;e>=0&&(h=r.or);let l=0,u=[],c=r.near;c!==null&&c.layer===r.layer&&(u[l]=c.column-1,l++);let d;if(a!==null)for(let f=0;f<a.length;f++){d=a[f];let p=d.fromVertex;d.valid&&!d.rev&&p.layer!==t&&(u[l]=p.column+d.portFromColOffset,l++)}if(h!==null)for(let f=0;f<h.length;f++){d=h[f];let p=d.toVertex;d.valid&&!d.rev&&p.layer!==t&&(u[l]=p.column+d.portToColOffset,l++)}if(l===0)n[o]=-1;else{u.sort((p,g)=>p-g);let f=l>>1;(l&1)!==0?n[o]=u[f]:n[o]=u[f-1]+u[f]>>1}}return this.ja(t,i),n}Pw(t,e,i,s,n){if(t.component===i){t.component=e;let o=0,r=0;if(s){let a=t.destinationEdges;for(;a.next();){let h=a.value,l=h.toVertex;o=t.layer-l.layer,r=this.linkMinLength(h),o===r&&this.Pw(l,e,i,s,n)}}if(n){let a=t.sourceEdges;for(;a.next();){let h=a.value,l=h.fromVertex;o=l.layer-t.layer,r=this.linkMinLength(h),o===r&&this.Pw(l,e,i,s,n)}}}}dL(t,e,i,s,n){if(t.component===i){if(t.component=e,s){let o=t.destinationEdges;for(;o.next();){let r=o.value.toVertex;this.dL(r,e,i,s,n)}}if(n){let o=t.sourceEdges;for(;o.next();){let r=o.value.fromVertex;this.dL(r,e,i,s,n)}}}}removeCycles(){let t=this.network.edges.iterator;for(;t.next();){let e=t.value;e.rev=!1}switch(this.cu){default:case 1:this.D3();break;case 0:this.v3();break;case 2:this.F3();break}}F3(){let t=this.network,e=t.vertexes.iterator,i=1/0;for(;e.next();){let s=e.value;i=Math.min(i,s.layer)}if(i<1/0){if(i<0)for(e.reset();e.next();){let r=e.value;r.layer-=i}let s=[];for(e.reset();e.next();){let r=e.value,a=s[r.layer];a===void 0?s[r.layer]=[r]:a.push(r)}let n=0;for(let r=0;r<s.length;r++){let a=s[r];if(!a||a.length===0)n++;else if(r>0)for(let h=0;h<a.length;h++){let l=a[h];l.layer-=n}}let o=t.edges.iterator;for(;o.next();){let r=o.value,a=r.fromVertex,h=r.toVertex;a.layer<h.layer&&(t.reverseEdge(r),r.rev=!0)}}}D3(){let t=this.network,e=0,i=t.vertexes.count-1,s=[];s.length=i+1;let n=t.vertexes.iterator;for(;n.next();){let r=n.value;r.ii=!0}for(;this.R3(t)!==null;){let r;for(r=this.dF(t);r!==null;)s[i]=r,i--,r.ii=!1,r=this.dF(t);for(r=this.gF(t);r!==null;)s[e]=r,e++,r.ii=!1,r=this.gF(t);r=this.O3(t),r!==null&&(s[e]=r,e++,r.ii=!1)}for(let r=0;r<t.vertexes.count;r++)s[r].index=r;let o=t.edges.iterator;for(;o.next();){let r=o.value,a=r.fromVertex,h=r.toVertex;a.index>h.index&&(t.reverseEdge(r),r.rev=!0)}}R3(t){let e=t.vertexes.iterator;for(;e.next();){let i=e.value;if(i.ii)return i}return null}dF(t){let e=t.vertexes.iterator;for(;e.next();){let i=e.value;if(i.ii){let s=!0,n=i.destinationEdges;for(;n.next();)if(n.value.toVertex.ii){s=!1;break}if(s)return i}}return null}gF(t){let e=t.vertexes.iterator;for(;e.next();){let i=e.value;if(i.ii){let s=!0,n=i.sourceEdges;for(;n.next();)if(n.value.fromVertex.ii){s=!1;break}if(s)return i}}return null}O3(t){let e=null,i=0,s=this.network.vertexes.iterator;for(;s.next();){let n=s.value;if(n.ii){let o=0,r=n.destinationEdges;for(;r.next();)r.value.toVertex.ii&&o++;let a=0,h=n.sourceEdges;for(;h.next();)h.value.fromVertex.ii&&a++;(e===null||i<o-a)&&(e=n,i=o-a)}}return e}v3(){let t=this.network.vertexes.iterator;for(;t.next();){let i=t.value;i.pu=-1,i.Qn=-1}let e=this.network.edges.iterator;for(;e.next();){let i=e.value;i.forest=!1}for(this.qg=0,t.reset();t.next();){let i=t.value;i.sourceEdges.count===0&&this.gL(i)}for(t.reset();t.next();){let i=t.value;i.pu===-1&&this.gL(i)}for(e.reset();e.next();){let i=e.value;if(!i.forest){let s=i.fromVertex,n=s.pu,o=s.Qn,r=i.toVertex,a=r.pu,h=r.Qn;a<n&&o<h&&(this.network.reverseEdge(i),i.rev=!0)}}}gL(t){t.pu=this.qg,this.qg++;let e=t.destinationEdges;for(;e.next();){let i=e.value,s=i.toVertex;s.pu===-1&&(i.forest=!0,this.gL(s))}t.Qn=this.qg,this.qg++}C3(){let t=this.network.vertexes.iterator;for(;t.next();){let s=t.value;s.layer=-1}for(this._=-1,this.assignLayers(),t.reset();t.next();){let s=t.value;this._=Math.max(this._,s.layer)}this._>=9999&&m.o("LayeredDigraphLayout, too many layers: "+this._);let e=this.direction==0||this.direction==180,i=[];for(let s=this.network.vertexes.iterator;s.next();){let n=s.value;if(n.node===null||n.centered)continue;let o=n.layer,r=i[o];r===void 0&&(r=0);let a=e?n.width:n.height;a>r&&(i[o]=a)}for(let s=this.network.vertexes.iterator;s.next();){let n=s.value;if(n.node===null||n.centered)continue;let o=i[n.layer];e?(n.focusX=o/2,n.focusY=n.focus.y,n.width=o):(n.focusX=n.focus.x,n.focusY=o/2,n.height=o)}}assignLayers(){switch(this.fu){case 11:this.mF();break;case 12:this.I3();break;default:case 10:this.E3();break}}mF(){let t=this.network.vertexes.iterator;for(;t.next();){let e=t.value,i=this.pF(e);this._=Math.max(i,this._)}}pF(t){let e=0;if(t.layer===-1){let i=t.destinationEdges;for(;i.next();){let s=i.value,n=s.toVertex,o=this.linkMinLength(s);e=Math.max(e,this.pF(n)+o)}t.layer=e}else e=t.layer;return e}I3(){let t=0,e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;t=this.yF(i),this._=Math.max(t,this._)}for(e.reset();e.next();){let i=e.value;i.layer=this._-i.layer}}yF(t){let e=0;if(t.layer===-1){let i=t.sourceEdges;for(;i.next();){let s=i.value,n=s.fromVertex,o=this.linkMinLength(s);e=Math.max(e,this.yF(n)+o)}t.layer=e}else e=t.layer;return e}E3(){this.mF();let t=this.network.vertexes.iterator;for(;t.next();){let i=t.value;i.ii=!1}for(t.reset();t.next();){let i=t.value;i.sourceEdges.count===0&&this.wF(i)}let e=1/0;for(t.reset();t.next();){let i=t.value;e=Math.min(e,i.layer)}for(this._=-1,t.reset();t.next();){let i=t.value;i.layer-=e,this._=Math.max(this._,i.layer)}}wF(t){if(!t.ii){t.ii=!0;let e=t.destinationEdges;for(;e.next();){let i=e.value.toVertex;this.wF(i)}this.U3(t),this.V3(t)}}U3(t){let e=this.network.vertexes.iterator;for(;e.next();){let r=e.value;r.component=-1}let i=0,s=1,n=t.So,o=n.length;for(let r=0;r<o;r++){let a=n[r],h=a.fromVertex,l=a.toVertex,u=this.linkMinLength(a);h.layer-l.layer>u&&this.Pw(h,i,-1,!0,!1)}for(this.Pw(t,s,-1,!0,!0);t.component!==i;){let r=0,a=1/0,h=0,l=null,u=this.network.vertexes.iterator;for(;u.next();){let c=u.value;if(c.component===s){let d=0,f=!1,p=c.So;o=p.length;for(let y=0;y<o;y++){let b=p[y],v=b.fromVertex;if(d+=this.linkLengthWeight(b),v.component!==s){r+=this.linkLengthWeight(b);let w=v.layer-c.layer,k=this.linkMinLength(b);a=Math.min(a,w-k)}}let g=c.or;o=g.length;for(let y=0;y<o;y++){let b=g[y],v=b.toVertex;d-=this.linkLengthWeight(b),v.component!==s?r-=this.linkLengthWeight(b):f=!0}(l===null||d<h)&&!f&&(l=c,h=d)}}if(r>0){for(e.reset();e.next();){let c=e.value;c.component===s&&(c.layer+=a)}t.component=i}else l.component=i}}V3(t){let e=this.network.vertexes.iterator;for(;e.next();){let n=e.value;n.component=-1}let i=0,s=1;for(this.Pw(t,s,-1,!0,!1);t.component!==i;){let n=0,o=1/0,r=0,a=null,h=this.network.vertexes.iterator;for(;h.next();){let l=h.value;if(l.component===s){let u=0,c=!1,d=l.So,f=d.length;for(let g=0;g<f;g++){let y=d[g],b=y.fromVertex;u+=this.linkLengthWeight(y),b.component!==s?n+=this.linkLengthWeight(y):c=!0}let p=l.or;f=p.length;for(let g=0;g<f;g++){let y=p[g],b=y.toVertex;if(u-=this.linkLengthWeight(y),b.component!==s){n-=this.linkLengthWeight(y);let v=l.layer-b.layer,w=this.linkMinLength(y);o=Math.min(o,v-w)}}(a===null||u>r)&&!c&&(a=l,r=u)}}if(n<0){for(e.reset();e.next();){let l=e.value;l.component===s&&(l.layer-=o)}t.component=i}else a.component=i}}N3(){let t=this.network,e=[],i=t.edges.iterator;for(;i.next();){let s=i.value;s.valid=!1,e.push(s)}for(let s=0;s<e.length;s++){let n=e[s],o=n.fromVertex,r=n.toVertex;if(n.valid||(o.node===null&&o.data===null||r.node===null&&r.data===null)&&o.layer===r.layer)continue;let a=0,h=0,l=0,u=0;if(n.link!==null){let S=n.link;if(S===null)continue;let N=o.node,D=r.node;if(N===null||D===null)continue;let L=S.fromNode,M=S.toNode,A=S.fromPort;for(;A!==null&&!A.isVisibleObject();)A=A.panel;let F=S.toPort;for(;F!==null&&!F.isVisibleObject();)F=F.panel;if(n.rev){let tt=L,st=A;L=M,A=F,M=tt,F=st}let O=o.focus,E=r.focus,B=n.rev?r.bounds:o.bounds,X=P.l();N!==L?B.isReal()&&L.isVisible()?L.actualBounds.isReal()?(L.getRelativePoint(A,T.Center,X),X.x+=L.actualBounds.x-B.x,X.y+=L.actualBounds.y-B.y):(L.getRelativePoint(A,T.Center,X),X.isReal()||X.h(O)):X.h(O):B.isReal()?(L.getRelativePoint(A,T.Center,X),X.isReal()||X.h(O)):X.h(O);let z=n.rev?o.bounds:r.bounds,U=P.l();D!==M?z.isReal()&&M.isVisible()?M.actualBounds.isReal()?(M.getRelativePoint(F,T.Center,U),U.x+=M.actualBounds.x-z.x,U.y+=M.actualBounds.y-z.y):(M.getRelativePoint(F,T.Center,U),U.isReal()||U.h(E)):U.h(E):z.isReal()?(M.getRelativePoint(F,T.Center,U),U.isReal()||U.h(E)):U.h(E),this.P===90||this.P===270?(a=Math.round((X.x-O.x)/this.ti),l=X.x,h=Math.round((U.x-E.x)/this.ti),u=U.x):(a=Math.round((X.y-O.y)/this.ti),l=X.y,h=Math.round((U.y-E.y)/this.ti),u=U.y),P.i(X),P.i(U),n.portFromColOffset=a,n.portFromPos=l,n.portToColOffset=h,n.portToPos=u}else n.portFromColOffset=0,n.portFromPos=0,n.portToColOffset=0,n.portToPos=0;let c=o.layer,d=r.layer,f=this.B3(n),p=f===1||f===3,g=f===2||f===3,y,b,v=null,w;g&&(v=this.z3(o,r),w=1,b=t.createVertex(),b.node=null,b.Jk=1,b.layer=c,b.near=o,t.addVertex(b),y=t.linkVertexes(o,b,n.link),y.valid=!1,y.rev=n.rev,y.portFromColOffset=a,y.portToColOffset=0,y.portFromPos=l,y.portToPos=0,o=b);let k=1;if(p&&k--,c-d>k&&c>0){for(n.valid=!1,b=t.createVertex(),b.node=null,b.Jk=2,b.layer=c-1,v&&w<v.length&&b.layer===v[w].layer&&(b.near=v[w++]),t.addVertex(b),y=t.linkVertexes(o,b,n.link),y.valid=!0,y.rev=n.rev,y.portFromColOffset=g?0:a,y.portToColOffset=0,y.portFromPos=g?0:l,y.portToPos=0,o=b,c--;c-d>k&&c>0;)b=t.createVertex(),b.node=null,b.Jk=3,b.layer=c-1,v&&w<v.length&&b.layer===v[w].layer&&(b.near=v[w++]),t.addVertex(b),y=t.linkVertexes(o,b,n.link),y.valid=!0,y.rev=n.rev,y.portFromColOffset=0,y.portToColOffset=0,y.portFromPos=0,y.portToPos=0,o=b,c--;y=t.linkVertexes(b,r,n.link),y.valid=!p,p&&(b.near=r),y.rev=n.rev,y.portFromColOffset=0,y.portToColOffset=h,y.portFromPos=0,y.portToPos=u}else n.valid=!0}}B3(t){let e=0,i=t.link;if(i!==null){let s=i.fromPort,n=i.toPort;if(s!==null&&n!==null){let o=i.fromNode,r=i.toNode;if(o!==null&&r!==null){let a=this.$k(!0),h=this.$k(!1),l=this.setsPortSpots?a:i.computeSpot(!0,s),u=this.setsPortSpots?h:i.computeSpot(!1,n),c=i.isOrthogonal;if(l.isSide()&&l.includesSide(h)&&u.isSide()&&u.includesSide(a))return 0;let d=i.getLinkPoint(o,s,l,!0,c,r,n,P.l()),f=i.getLinkDirection(o,s,d,l,!0,c,r,n);P.i(d),(!l.isNone()&&f===this.xF(t,!0)||this.setsPortSpots&&o!==null&&o.ports.count===1&&t.rev)&&(e+=1);let p=i.getLinkPoint(r,n,u,!1,c,o,s,P.l()),g=i.getLinkDirection(r,n,p,u,!1,c,o,s);P.i(p),(!u.isNone()&&g===this.xF(t,!1)||this.setsPortSpots&&r!==null&&r.ports.count===1&&t.rev)&&(e+=2)}}}return e}xF(t,e){return this.P===90?e&&!t.rev||!e&&t.rev?270:90:this.P===180?e&&!t.rev||!e&&t.rev?0:180:this.P===270?e&&!t.rev||!e&&t.rev?90:270:e&&!t.rev||!e&&t.rev?180:0}z3(t,e){let i=[];return i.push(e),this.bF(t,i)?i.reverse():[]}bF(t,e){let i=e[e.length-1].sourceEdges.iterator;for(;i.next();){let s=i.value;if(s.rev||!s.valid)continue;let n=s.fromVertex;if(e.push(n),n===t||this.bF(t,e))return!0;e.pop()}return!1}L3(){this.ie.length!==this._+1&&(this.ie=new Int16Array(this._+1));let t=this.ie;for(let i=0;i<=this._;i++)t[i]=0;let e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;i.index=-1}this.initializeIndices(),this.xw=-1,this.Hg=0,this.Bs=0;for(let i=0;i<=this._;i++)t[i]>t[this.Bs]&&(this.xw=t[i]-1,this.Bs=i),t[i]<t[this.Hg]&&(this.Hg=i);this.mu=[];for(let i=0;i<t.length;i++)this.mu[i]=[];for(e.reset();e.next();){let i=e.value,s=i.layer,n=this.mu[s];n[i.index]=i}}initializeIndices(){switch(this.uu){default:case 22:this.X3();break;case 20:this.G3();break;case 21:this.Y3();break}}X3(){let t=null,e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;if(i.near&&(t===null&&(t=new Map),i.layer===i.near.layer)){let s=t.get(i.near)||[];s.push(i),t.set(i.near,s)}}for(e.reset();e.next();){let i=e.value;if(i.near)continue;let s=i.layer;if(i.index=this.ie[s],this.ie[s]++,!t)continue;let n=t.get(i);Array.isArray(n)&&n.forEach(o=>{o.index=this.ie[s],this.ie[s]++})}}G3(){let t=null,e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;if(i.near&&(t===null&&(t=new Map),i.layer===i.near.layer)){let s=t.get(i.near)||[];s.push(i),t.set(i.near,s)}}for(let i=this._;i>=0;i--)for(e.reset();e.next();){let s=e.value;s.layer===i&&s.index===-1&&this.kF(s,t)}}kF(t,e){if(t.near)return;let i=t.layer;if(t.index=this.ie[i],this.ie[i]++,e){let o=e.get(t);Array.isArray(o)&&o.forEach(r=>{r.index=this.ie[i],this.ie[i]++})}let s=t.or,n=!0;for(;n;){n=!1;for(let o=0;o<s.length-1;o++){let r=s[o],a=s[o+1];r.portFromColOffset>a.portFromColOffset&&(n=!0,s[o]=a,s[o+1]=r)}}for(let o=0;o<s.length;o++){let r=s[o];if(r.valid){let a=r.toVertex;a.index===-1&&this.kF(a,e)}}}Y3(){let t=null,e=this.network.vertexes.iterator;for(;e.next();){let i=e.value;if(i.near&&(t===null&&(t=new Map),i.layer===i.near.layer)){let s=t.get(i.near)||[];s.push(i),t.set(i.near,s)}}for(let i=0;i<=this._;i++)for(e.reset();e.next();){let s=e.value;s.layer===i&&s.index===-1&&this.PF(s,t)}}PF(t,e){if(t.near)return;let i=t.layer;if(t.index=this.ie[i],this.ie[i]++,e){let h=e.get(t);Array.isArray(h)&&h.forEach(l=>{l.index=this.ie[i],this.ie[i]++})}let s=t.So,n=!0,o=0;for(;n;)for(n=!1,o=0;o<s.length-1;o++){let h=s[o],l=s[o+1];h.portToColOffset>l.portToColOffset&&(n=!0,s[o]=l,s[o+1]=h)}let r,a;for(o=0;o<s.length;o++)a=s[o],a.valid&&(r=a.fromVertex,r.index===-1&&this.PF(r,e))}A3(){this.zt=-1;for(let t=0;t<=this._;t++){let e=this.qa(t),i=0,s=this.ie[t];for(let n=0;n<s;n++){let o=e[n];i+=this.nodeMinColumnSpace(o,!0),o.column=i,i+=1,i+=this.nodeMinColumnSpace(o,!1)}this.zt=Math.max(this.zt,i-1),this.ja(t,e)}}reduceCrossings(){let t=this.countCrossings(),e=this.ei(),i=0,s=0,n=0;for(i=0;i<this.gc;i++){for(s=0;s<=this._;s++)this.Zk(s,1),this.ys(s,1,!1,1);for(n=this.countCrossings(),n<t&&(t=n,e=this.ei()),s=this._;s>=0;s--)this.Zk(s,-1),this.ys(s,-1,!1,-1);n=this.countCrossings(),n<t&&(t=n,e=this.ei())}for(this.ns(e),i=0;i<this.gc;i++){for(s=0;s<=this._;s++)this.Zk(s,0),this.ys(s,0,!1,0);for(n=this.countCrossings(),n<t&&(t=n,e=this.ei()),s=this._;s>=0;s--)this.Zk(s,0),this.ys(s,0,!1,0);n=this.countCrossings(),n<t&&(t=n,e=this.ei())}this.ns(e);let o=!1,r=0,a=0,h=0,l=0;switch(this.du){case 30:break;case 32:for(h=t+1;(l=this.countCrossings())<h;)for(h=l,r=this._;r>=0;r--)for(a=0;a<=r;a++){for(o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,-1,!1,-1)||o;for(n=this.countCrossings(),n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,1,!1,1)||o;for(n=this.countCrossings(),n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,1,!1,1)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,-1,!1,-1)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,0,!1,0)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,0,!1,0)||o;n>=t?this.ns(e):(t=n,e=this.ei())}break;default:case 31:for(r=this._,a=0,h=t+1;(l=this.countCrossings())<h;){for(h=l,o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,-1,!1,-1)||o;for(n=this.countCrossings(),n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,1,!1,1)||o;for(n=this.countCrossings(),n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,1,!1,1)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,-1,!1,-1)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=r;s>=a;s--)o=this.ys(s,0,!1,0)||o;for(n>=t?this.ns(e):(t=n,e=this.ei()),o=!0;o;)for(o=!1,s=a;s<=r;s++)o=this.ys(s,0,!1,0)||o;n>=t?this.ns(e):(t=n,e=this.ei())}break}this.ns(e)}Zk(t,e){let i=0,s=!1,n=this.qa(t),o=this.ie[t],r=this.uF(t,e),a=this.kw(t,e);for(i=0;i<o;i++)a[i]===-1&&(a[i]=n[i].column),r[i]===-1&&(r[i]=n[i].column);let h=!0,l;for(;h;)for(h=!1,i=0;i<o-1;i++)if(r[i+1]<r[i]||r[i+1]===r[i]&&a[i+1]<a[i]){s=!0,h=!0;let c=r[i];r[i]=r[i+1],r[i+1]=c;let d=a[i];a[i]=a[i+1],a[i+1]=d,l=n[i],n[i]=n[i+1],n[i+1]=l}let u=0;for(i=0;i<o;i++)l=n[i],l.index=i,u+=this.nodeMinColumnSpace(l,!0),l.column=u,u+=1,u+=this.nodeMinColumnSpace(l,!1);return this.ja(t,n),s}ys(t,e,i,s){let n=this.qa(t),o=this.ie[t],r=this.fF(t,e),a=0,h;if(!i||s>0)for(h=new Float32Array(o),a=0;a<o;a++)h[a]=-1;else h=this.kw(t,-1);let l;if(!i||s<0)for(l=new Float32Array(o),a=0;a<o;a++)l[a]=-1;else l=this.kw(t,1);let u=!1,c=!0;for(;c;)for(c=!1,a=0;a<o-1;a++){let d=r[n[a].index*o+n[a+1].index],f=r[n[a+1].index*o+n[a].index],p=0,g=0,y=n[a].column,b=n[a+1].column,v=this.nodeMinColumnSpace(n[a],!0),w=this.nodeMinColumnSpace(n[a],!1),k=this.nodeMinColumnSpace(n[a+1],!0),S=this.nodeMinColumnSpace(n[a+1],!1),N=y-v+k,D=b-w+S,L=0,M=0,A=0,F=0,O=0,E=0,B=0,X,z=0,U,tt=0,st=n[a].sourceEdges.iterator;if(i&&s<=0)for(;st.next();){let bt=st.value;X=bt.fromVertex,bt.valid&&X.layer!==t&&(A=this.linkStraightenWeight(bt),F=bt.portFromColOffset,O=bt.portToColOffset,E=X.column,L+=(Math.abs(y+O-(E+F))+1)*A,M+=(Math.abs(D+O-(E+F))+1)*A)}for(st.reset();st.next();){let bt=st.value;if(X=bt.fromVertex,bt.valid&&X.layer===t){for(z=0;z<n.length&&n[z]!==X;)z++;z<a&&(p+=2*(a-z),g+=2*(a+1-z)),z===a+1&&(p+=1),z>a+1&&(p+=4*(z-a),g+=4*(z-(a+1)))}}let Z=n[a].destinationEdges.iterator;if(i&&s>=0)for(;Z.next();){let bt=Z.value;U=bt.toVertex,bt.valid&&U.layer!==t&&(A=this.linkStraightenWeight(bt),F=bt.portFromColOffset,O=bt.portToColOffset,B=U.column,L+=(Math.abs(y+F-(B+O))+1)*A,M+=(Math.abs(D+F-(B+O))+1)*A)}for(Z.reset();Z.next();){let bt=Z.value;if(U=bt.toVertex,bt.valid&&U.layer===t){for(tt=0;tt<n.length&&n[tt]!==U;)tt++;tt===a+1&&(g+=1)}}let et=n[a+1].sourceEdges.iterator;if(i&&s<=0)for(;et.next();){let bt=et.value;X=bt.fromVertex,bt.valid&&X.layer!==t&&(A=this.linkStraightenWeight(bt),F=bt.portFromColOffset,O=bt.portToColOffset,E=X.column,L+=(Math.abs(b+O-(E+F))+1)*A,M+=(Math.abs(N+O-(E+F))+1)*A)}for(et.reset();et.next();){let bt=et.value;if(X=bt.fromVertex,bt.valid&&X.layer===t){for(z=0;z<n.length&&n[z]!==X;)z++;z<a&&(p+=2*(a+1-z),g+=2*(a-z)),z===a&&(g+=1),z>a+1&&(p+=4*(z-(a+1)),g+=4*(z-a))}}let Q=n[a+1].destinationEdges.iterator;if(i&&s>=0)for(;Q.next();){let bt=Q.value;U=bt.toVertex,bt.valid&&U.layer!==t&&(A=this.linkStraightenWeight(bt),F=bt.portFromColOffset,O=bt.portToColOffset,B=U.column,L+=(Math.abs(b+F-(B+O))+1)*A,M+=(Math.abs(N+F-(B+O))+1)*A)}for(Q.reset();Q.next();){let bt=Q.value;if(U=bt.toVertex,bt.valid&&U.layer===t){for(tt=0;tt<n.length&&n[tt]!==U;)tt++;tt===a&&(p+=1)}}let rt=0,ft=0,xt=h[n[a].index],Ct=l[n[a].index],_=h[n[a+1].index],St=l[n[a+1].index];if(xt!==-1&&(rt+=Math.abs(xt-y),ft+=Math.abs(xt-D)),Ct!==-1&&(rt+=Math.abs(Ct-y),ft+=Math.abs(Ct-D)),_!==-1&&(rt+=Math.abs(_-b),ft+=Math.abs(_-N)),St!==-1&&(rt+=Math.abs(St-b),ft+=Math.abs(St-N)),g<p-.5||g===p&&f<d-.5||g===p&&f===d&&M<L-.5||g===p&&f===d&&M===L&&ft<rt-.5){u=!0,c=!0,n[a].column=D,n[a+1].column=N;let bt=n[a];n[a]=n[a+1],n[a+1]=bt}}for(a=0;a<o;a++)n[a].index=a;return this.ja(t,n),u}straightenAndPack(){if(this.zn!==0){this.K3();return}let t=0,e=!1,i=(this.hr&1)!==0,s=(this.hr&8)!==0;if(this.network.edges.count>1e3&&s&&(i=!1),i){let n=[],o=0;for(o=0;o<=this._;o++)n[o]=0;let r=0,a=this.network.vertexes.iterator;for(;a.next();){let l=a.value;t=l.layer,r=l.column;let u=this.nodeMinColumnSpace(l,!1);n[t]=Math.max(n[t],r+u)}let h=8;for(a.reset();a.next();){let l=a.value;t=l.layer,r=l.column,l.column=((this.zt-n[t])*h>>1)+r*h}this.zt*=h}if((this.hr&2)!==0){e=!0;let n=0;for(;e&&n<this.gu;){for(e=!1,t=this.Bs+1;t<=this._;t++)e=this.Wg(t,1)||e;for(t=this.Bs-1;t>=0;t--)e=this.Wg(t,-1)||e;e=this.Wg(this.Bs,0)||e,n++}}if((this.hr&4)!==0){for(t=this.Bs+1;t<=this._;t++)this.mL(t,1);for(t=this.Bs-1;t>=0;t--)this.mL(t,-1);this.mL(this.Bs,0)}if(i&&(this.SF(-1),this.SF(1)),(this.hr&2)!==0){e=!0;let n=0;for(;e&&n<this.gu;){for(e=!1,e=this.Wg(this.Bs,0)||e,t=this.Bs+1;t<=this._;t++)e=this.Wg(t,0)||e;for(t=this.Bs-1;t>=0;t--)e=this.Wg(t,0)||e;n++}}}Wg(t,e){let i=!1;for(;this.H3(t,e);)i=!0;return i}H3(t,e){let i=0,s=this.qa(t),n=this.ie[t],o=this.kw(t,-1);if(e>0)for(i=0;i<n;i++)o[i]=-1;let r=this.kw(t,1);if(e<0)for(i=0;i<n;i++)r[i]=-1;let a=!1,h=!0;for(;h;)for(h=!1,i=0;i<n;i++){let l=s[i].column,u=this.nodeMinColumnSpace(s[i],!0),c=this.nodeMinColumnSpace(s[i],!1),d=0;i-1<0||l-s[i-1].column-1>u+this.nodeMinColumnSpace(s[i-1],!1)?d=l-1:d=l;let f=0;i+1>=n||s[i+1].column-l-1>c+this.nodeMinColumnSpace(s[i+1],!0)?f=l+1:f=l;let p=0,g=0,y=0,b=0,v=0,w=0;if(e<=0){let M=s[i].sourceEdges.iterator;for(;M.next();){let A=M.value,F=A.fromVertex;if(A.valid&&F.layer!==t){b=this.linkStraightenWeight(A),v=A.portFromColOffset,w=A.portToColOffset;let O=F.column;p+=(Math.abs(l+w-(O+v))+1)*b,g+=(Math.abs(d+w-(O+v))+1)*b,y+=(Math.abs(f+w-(O+v))+1)*b}}}if(e>=0){let M=s[i].destinationEdges.iterator;for(;M.next();){let A=M.value,F=A.toVertex;if(A.valid&&F.layer!==t){b=this.linkStraightenWeight(A),v=A.portFromColOffset,w=A.portToColOffset;let O=F.column;p+=(Math.abs(l+v-(O+w))+1)*b,g+=(Math.abs(d+v-(O+w))+1)*b,y+=(Math.abs(f+v-(O+w))+1)*b}}}let k=0,S=0,N=0,D=o[s[i].index],L=r[s[i].index];D!==-1&&(k+=Math.abs(D-l),S+=Math.abs(D-d),N+=Math.abs(D-f)),L!==-1&&(k+=Math.abs(L-l),S+=Math.abs(L-d),N+=Math.abs(L-f)),g<p||g===p&&S<k?(a=!0,h=!0,s[i].column=d):(y<p||y===p&&N<k)&&(a=!0,h=!0,s[i].column=f)}return this.ja(t,s),this.bw(),a}mL(t,e){let i=0,s=this.qa(t),n=this.ie[t],o=this.uF(t,e),r=new Int16Array(o),a=!1,h=!0;for(;h;)for(h=!1,i=0;i<n;i++){let l=s[i].column,u=this.nodeMinColumnSpace(s[i],!0),c=this.nodeMinColumnSpace(s[i],!1),d=0,f=0,p=0,g=0,y=0;r[i]===-1?i===0&&i===n-1?d=l:i===0?(f=s[i+1].column,f-l===c+this.nodeMinColumnSpace(s[i+1],!0)?d=l-1:d=l):i===n-1?(p=s[i-1].column,l-p===u+this.nodeMinColumnSpace(s[i-1],!1)?d=l+1:d=l):(p=s[i-1].column,y=p+this.nodeMinColumnSpace(s[i-1],!1)+u+1,f=s[i+1].column,g=f-this.nodeMinColumnSpace(s[i+1],!0)-c-1,d=(y+g)/2|0):i===0&&i===n-1?d=r[i]:i===0?(f=s[i+1].column,g=f-this.nodeMinColumnSpace(s[i+1],!0)-c-1,d=Math.min(r[i],g)):i===n-1?(p=s[i-1].column,y=p+this.nodeMinColumnSpace(s[i-1],!1)+u+1,d=Math.max(r[i],y)):(p=s[i-1].column,y=p+this.nodeMinColumnSpace(s[i-1],!1)+u+1,f=s[i+1].column,g=f-this.nodeMinColumnSpace(s[i+1],!0)-c-1,y<r[i]&&r[i]<g?d=r[i]:y>=r[i]?d=y:g<=r[i]&&(d=g)),d!==l&&(a=!0,h=!0,s[i].column=d)}return this.ja(t,s),this.bw(),a}q3(){for(let t=0;t<=this.zt;t++)for(;this.j3(t,1););this.bw()}j3(t,e){let i=!0,s=this.network.vertexes.iterator;for(;s.next();){let o=s.value,r=this.nodeMinColumnSpace(o,!0),a=this.nodeMinColumnSpace(o,!1);if(o.column-r<=t&&o.column+a>=t){i=!1;break}}let n=!1;if(i){if(e>0)for(s.reset();s.next();){let o=s.value;o.column>t&&(o.column-=1,n=!0)}if(e<0)for(s.reset();s.next();){let o=s.value;o.column<t&&(o.column+=1,n=!0)}}return n}W3(){this.q3();for(let t=0;t<this.zt;t++)for(;this.J3(t,1););this.bw()}J3(t,e){let i=t;e>0&&(i=t+1),e<0&&(i=t-1);let s=0,n=[],o=[];for(s=0;s<=this._;s++)n[s]=!1,o[s]=!1;let r=this.network.vertexes.iterator;for(;r.next();){let l=r.value,u=l.column-this.nodeMinColumnSpace(l,!0),c=l.column+this.nodeMinColumnSpace(l,!1);u<=t&&c>=t&&(n[l.layer]=!0),u<=i&&c>=i&&(o[l.layer]=!0)}let a=!0,h=!1;for(s=0;s<=this._;s++)a=a&&!(n[s]&&o[s]);if(a){if(e>0)for(r.reset();r.next();){let l=r.value;l.column>t&&(l.column-=1,h=!0)}if(e<0)for(r.reset();r.next();){let l=r.value;l.column<t&&(l.column+=1,h=!0)}}return h}SF(t){this.W3();let e=0,i,s=0,n=0,o=0;if(t>0)for(e=0;e<=this.zt;e++)for(i=this.ei(),s=this.Wk(!0),n=s+1;s<n;)n=s,this.MF(e,1),o=this.Wk(!0),o>s?this.ns(i):o<s&&(s=o,i=this.ei());if(t<0)for(e=this.zt;e>=0;e--)for(i=this.ei(),s=this.Wk(!0),n=s+1;s<n;)n=s,this.MF(e,-1),o=this.Wk(!0),o>s?this.ns(i):o<s&&(s=o,i=this.ei());this.bw()}MF(t,e){this.fn=0;let i=this.network.vertexes.iterator;for(;i.next();){let u=i.value;u.component=-1}if(e>0)for(i.reset();i.next();){let u=i.value;u.column-this.nodeMinColumnSpace(u,!0)<=t&&(u.component=this.fn)}if(e<0)for(i.reset();i.next();){let u=i.value;u.column+this.nodeMinColumnSpace(u,!1)>=t&&(u.component=this.fn)}for(this.fn++,i.reset();i.next();){let u=i.value;u.component===-1&&(this.dL(u,this.fn,-1,!0,!0),this.fn++)}let s=0,n=[];for(s=0;s<this.fn*this.fn;s++)n[s]=!1;let o=[];for(s=0;s<(this._+1)*(this.zt+1);s++)o[s]=-1;for(i.reset();i.next();){let u=i.value,c=u.layer,d=Math.max(0,u.column-this.nodeMinColumnSpace(u,!0)),f=Math.min(this.zt,u.column+this.nodeMinColumnSpace(u,!1));for(let p=d;p<=f;p++)o[c*(this.zt+1)+p]=u.component}for(let u=0;u<=this._;u++){if(e>0)for(let c=0;c<this.zt;c++)o[u*(this.zt+1)+c]!==-1&&o[u*(this.zt+1)+c+1]!==-1&&o[u*(this.zt+1)+c]!==o[u*(this.zt+1)+c+1]&&(n[o[u*(this.zt+1)+c]*this.fn+o[u*(this.zt+1)+c+1]]=!0);if(e<0)for(let c=this.zt;c>0;c--)o[u*(this.zt+1)+c]!==-1&&o[u*(this.zt+1)+c-1]!==-1&&o[u*(this.zt+1)+c]!==o[u*(this.zt+1)+c-1]&&(n[o[u*(this.zt+1)+c]*this.fn+o[u*(this.zt+1)+c-1]]=!0)}let r=[];for(s=0;s<this.fn;s++)r[s]=!0;let a=[];a.push(0);let h=0;for(;a.length!==0;)if(h=a[a.length-1],a.pop(),r[h])for(r[h]=!1,s=0;s<this.fn;s++)n[h*this.fn+s]&&a.splice(0,0,s);let l=!1;if(e>0)for(i.reset();i.next();){let u=i.value;r[u.component]&&(u.column-=1,l=!0)}if(e<0)for(i.reset();i.next();){let u=i.value;r[u.component]&&(u.column+=1,l=!0)}return l}K3(){let t=m.st(),e=this.mu.length;for(let d=0;d<=e;d++)t[d]=[];let i=this.network.vertexes.iterator;for(;i.next();){let d=i.value,f=e-d.layer,p=t[f];p[d.index]=d}let s=new V;this.$3(t,s);let n=null,o=null,r=null,a=null,h=(this.zn&1)!==0,l=(this.zn&2)!==0,u=(this.zn&4)!==0,c=(this.zn&8)!==0;h&&(this.hl(t,s,!0),n=this.Qk(t,!0,!1)),t.reverse(),u&&(this.hl(t,s,!1),r=this.Qk(t,!1,!1));for(let d of t)d.reverse();c&&(this.hl(t,s,!1),a=this.Qk(t,!1,!0)),t.reverse(),l&&(this.hl(t,s,!0),o=this.Qk(t,!0,!0)),m.Z(t),this.Z3(n,o,r,a),this.network.vertexes.each(d=>{let f=d,p=m.st();h&&p.push(n.get(f)),l&&p.push(o.get(f)),u&&p.push(r.get(f)),c&&p.push(a.get(f)),p.sort((w,k)=>w-k);let g=p.length,y=Math.floor((g-1)/2),b=Math.ceil((g-1)/2),v=(p[y]+p[b])/2;m.Z(p),f.mi=v})}$3(t,e){let i=t.length;for(let s=1;s<i-1;s++){let n=0,o=0,r=t[s],a=t[s+1];for(let h=0;o<a.length;h++){let l=a[h],u=this.Q3(l);if(h===a.length-1||u){let c=r.length-1;for(u&&(c=l.getProperSourceVertexes()[0].index);o<=h;){let d=a[o].getProperSourceEdges();for(let f of d){let p=f.fromVertex.index;(p<n||p>c)&&e.add(f)}o++}n=c}}}}Q3(t){if(t.node===null){let e=t.getProperSourceVertexes();if(e.length>0)return e[0].node===null}return!1}hl(t,e,i){this._3(t);for(let s of t){let n=-1;for(let o of s){let r=i?o.getProperSourceVertexes():o.getProperDestinationVertexes(),a=r.length;if(a>0){r.sort((l,u)=>l.Wa-u.Wa);let h=(a-1)/2;for(let l=Math.floor(h),u=Math.ceil(h);l<=u;l++)if(o.Xn===o){let c=r[l],d;i?d=c.getDestinationEdge(o):d=o.getDestinationEdge(c),!e.has(d)&&n<c.Wa&&(c.Xn=o,o.mc=c.mc,o.Xn=c.mc,n=c.Wa)}}}}}_3(t){for(let e=0;e<t.length;e++){let i=t[e];for(let s=0;s<i.length;s++){let n=i[s];n.mc=n,n.Xn=n,n.CF=e,n.Wa=s}}}Qk(t,e,i){let s=this.P===90||this.P===270;for(let o of t)for(let r of o)r.os=r,r.yu=1/0,r.mi=NaN,r.Gn=0;this.tU(t,e,i);for(let o of t)for(let r of o)r.mc===r&&this.NF(r,t);for(let o=0;o<t.length;o++){if(t[o].length<=0)continue;let r=t[o][0];if(r.os===r){r.os.yu===1/0&&(r.os.yu=0);let a=o,h=0,l;do{for(l=t[a][h];l.Xn!==l.mc;)if(l=l.Xn,a++,l.Wa>0){let u=this.LF(l,t),c=s?u.width:u.height,d=l.os.yu+l.mi+l.Gn-(u.mi+u.Gn+c+this.columnSpacing);u.os.yu=Math.min(u.os.yu,d)}h=l.Wa+1}while(a<t.length&&h<t[a].length&&l.os===t[a][h].os)}}let n=new Mt;for(let o of t)for(let r of o){r.mi=r.mi+r.os.yu+r.Gn;let a=s?r.width:r.height;n.set(r,i?-r.mi-a:r.mi)}return n}tU(t,e,i){let s=this.P===90||this.P===270;for(let n of t)for(let o of n)if(o.mc===o){let r=0,a=o;for(;a.Xn!==o;){let h=a.Xn,l=s?a.width:a.height,u=s?h.width:h.height,c,d,f,p;e?(f=a.getDestinationEdge(h),c=f.portFromPos,d=f.portToPos,f.link!==null&&(a.node&&a.node!==f.link.fromNode&&(c=s?a.focusX:a.focusY),h.node&&h.node!==f.link.toNode&&(d=s?h.focusX:h.focusY)),i?p=a.Gn+(l-c)-(u-d):p=a.Gn+c-d):(f=h.getDestinationEdge(a),c=f.portToPos,d=f.portFromPos,f.link!==null&&(a.node&&a.node!==f.link.toNode&&(c=s?a.focusX:a.focusY),h.node&&h.node!==f.link.fromNode&&(d=s?h.focusX:h.focusY)),i?p=a.Gn+(l-c)-(u-d):p=a.Gn+c-d),h.Gn=p,r=Math.min(r,p),a=a.Xn}a=o;do a.Gn=a.Gn-r,a=a.Xn;while(a!==o)}}NF(t,e){if(!isNaN(t.mi))return;t.mi=0;let i=t;do{if(i.Wa>0){let s=this.LF(i,e),n=s.mc;this.NF(n,e),t.os===t&&(t.os=n.os);let o=this.P===90||this.P===270?s.width:s.height;if(t.os===n.os){let r=n.mi+s.Gn+o-i.Gn+this.columnSpacing;t.mi=Math.max(t.mi,r)}}i=i.Xn}while(i!==t);for(;i.Xn!==t;)i=i.Xn,i.mi=t.mi,i.os=t.os}LF(t,e){let i=t.CF,s=t.Wa;return s<1&&m.o("Could not determine previous vertex in layer"),e[i][s-1]}Z3(...t){let e=-1,i=m.st(),s=m.st(),n=1/0;for(let o=0;o<4;o++){if(!t[o])continue;let r=this.eU(t[o],i,s,o);r<n&&(e=o,n=r)}for(let o=0;o<4;o++){let r=t[o];if(!r)continue;let a=o===0||o===2?i[e]-i[o]:s[e]-s[o];a!==0&&r.each(h=>{r.set(h.key,h.value+a)})}m.Z(i),m.Z(s)}eU(t,e,i,s){if(!t||t.count===0)return e[s]=0,i[s]=0,1/0;let n=1/0,o=-1/0;return t.each(r=>{let a=r.key,h=r.value,l=this.P===90||this.P===270?a.width:a.height;h<n&&(n=h),h+l>o&&(o=h+l)}),e[s]=n,i[s]=o,o-n}commitLayout(){this.ww(),this.commitNodes(),this.pL(),this.isRouting&&this.commitLinks()}ww(){if(!this.setsPortSpots)return;let t=this.$k(!0),e=this.$k(!1),i=this.network.edges.iterator;for(;i.next();){let s=i.value.link;s!==null&&(s.fromSpot=t,s.toSpot=e)}}$k(t){return this.P===270?t?T.MiddleTop:T.MiddleBottom:this.P===90?t?T.MiddleBottom:T.MiddleTop:this.P===180?t?T.MiddleLeft:T.MiddleRight:t?T.MiddleRight:T.MiddleLeft}commitNodes(){this.zs.length!==this._+1&&(this.zs=new Float32Array(this._+1)),this.ms.length!==this._+1&&(this.ms=new Float32Array(this._+1)),this.ps.length!==this._+1&&(this.ps=new Float32Array(this._+1)),this.Rt.length!==this._+1&&(this.Rt=new Float32Array(this._+1));for(let f=0;f<=this._;f++)this.zs[f]=0,this.ms[f]=0,this.ps[f]=0,this.Rt[f]=0;let t=this.network.vertexes.iterator;for(;t.next();){let f=t.value,p=f.layer;this.zs[p]=Math.max(this.zs[p],this.nodeMinLayerSpace(f,!0)),this.ms[p]=Math.max(this.ms[p],this.nodeMinLayerSpace(f,!1))}let e=0,i=this.Vs;for(let f=0;f<=this._;f++){let p=i;this.zs[f]+this.ms[f]<=0&&(p=0),f>0&&(e+=p/2),this.P===90||this.P===0?(e+=this.ms[f],this.ps[f]=e,e+=this.zs[f]):(e+=this.zs[f],this.ps[f]=e,e+=this.ms[f]),f<this._&&(e+=p/2),this.Rt[f]=e}let s=e,n=this.arrangementOrigin;for(let f=0;f<=this._;f++)this.P===270?this.ps[f]=n.y+this.ps[f]:this.P===90?(this.ps[f]=n.y+s-this.ps[f],this.Rt[f]=s-this.Rt[f]):this.P===180?this.ps[f]=n.x+this.ps[f]:(this.ps[f]=n.x+s-this.ps[f],this.Rt[f]=s-this.Rt[f]);let o=this.zn!==0;t.reset();let r=this.P===270||this.P===90,a=1/0,h=1/0,l=1/0,u=-1/0;for(;t.next();){let f=t.value,p=f.layer,g=f.column|0,y=0,b=0;r?(y=n.x+this.ti*g,b=this.ps[p]):(y=this.ps[p],b=n.y+this.ti*g),f.centerX=y,f.centerY=b,o&&isFinite(f.mi)&&(r?f.node?f.x=n.x+f.mi:f.centerX=n.x+f.mi:f.node?f.y=n.y+f.mi:f.centerY=n.y+f.mi),a=Math.min(f.x,a),h=Math.min(f.y,h),r?(l=a,u=Math.max(u,f.bounds.right)):(l=h,u=Math.max(u,f.bounds.bottom))}this.uL=u-l;let c=n.x-a,d=n.y-h;for(this.cr=new P(o&&r?0:c,o&&!r?0:d),t.reset();t.next();){let f=t.value;f.x+=c,f.y+=d,f.commit()}}pL(){let t=0,e=this.Vs;for(let n=0;n<=this._;n++)t+=this.zs[n],t+=this.ms[n];t+=this._*e;let i=[],s=this.zn!==0?this.uL:this.ti*this.zt;for(let n=this.maxLayer;n>=0;n--)this.P===270?n===0?i.push(new I(0,0,s,Math.abs(this.Rt[0]))):i.push(new I(0,this.Rt[n-1],s,Math.abs(this.Rt[n-1]-this.Rt[n]))):this.P===90?n===0?i.push(new I(0,this.Rt[0],s,Math.abs(this.Rt[0]-t))):i.push(new I(0,this.Rt[n],s,Math.abs(this.Rt[n-1]-this.Rt[n]))):this.P===180?n===0?i.push(new I(0,0,Math.abs(this.Rt[0]),s)):i.push(new I(this.Rt[n-1],0,Math.abs(this.Rt[n-1]-this.Rt[n]),s)):n===0?i.push(new I(this.Rt[0],0,Math.abs(this.Rt[0]-t),s)):i.push(new I(this.Rt[n],0,Math.abs(this.Rt[n-1]-this.Rt[n]),s));this.commitLayers(i,this.cr)}commitLayers(t,e){}commitLinks(){let t=this.network.edges.iterator,e=null;for(;t.next();)e=t.value.link,e!==null&&e.pointsCount>0&&(e.startRoute(),e.clearPoints(),e.commitRoute());for(t.reset();t.next();)e=t.value.link,e!==null&&e.updateRoute();for(t.reset();t.next();){let i=t.value;if(e=i.link,e===null||e.pointsCount===0)continue;e.startRoute();let s=e,n=s.fromNode,o=s.toNode,r=s.fromPort,a=s.toPort;if(n!==null){let A=n.findVisibleNode();A!==null&&A!==n&&(n=A,r=A.port)}if(o!==null){let A=o.findVisibleNode();A!==null&&A!==o&&(o=A,a=A.port)}let h=e.computeSpot(!0,r),l=e.computeSpot(!1,a),u=i.fromVertex,c=i.toVertex;if(i.valid){if(e.curve===9&&e.pointsCount===4)if(u.column===c.column&&this.alignOption===0){let A=e.getLinkPoint(n,r,h,!0,!1,o,a),F=e.getLinkPoint(o,a,l,!1,!1,n,r);A.isReal()||A.set(n.actualBounds.center),F.isReal()||F.set(o.actualBounds.center),e.clearPoints(),e.addPointAt(A.x,A.y),e.addPointAt((2*A.x+F.x)/3,(2*A.y+F.y)/3),e.addPointAt((A.x+2*F.x)/3,(A.y+2*F.y)/3),e.addPointAt(F.x,F.y)}else{let A=!1,F=!1;if(r!==null&&e.kl(h)&&(A=!0),a!==null&&e.kl(l)&&(F=!0),A||F){let O=null;A&&(O=e.getLinkPointFromPoint(n,r,r.getDocumentPoint(T.Center),e.getPoint(3),!0),O.isReal()||O.set(n.actualBounds.center),e.setPointAt(0,O.x,O.y));let E=null;if(F&&(E=e.getLinkPointFromPoint(o,a,a.getDocumentPoint(T.Center),e.getPoint(0),!1),E.isReal()||E.set(o.actualBounds.center),e.setPointAt(3,E.x,E.y)),O){let B=e.getPoint(2);e.setPointAt(1,(O.x*2+B.x)/3,(O.y*2+B.y)/3)}if(E){let B=e.getPoint(1);e.setPointAt(2,(E.x*2+B.x)/3,(E.y*2+B.y)/3)}}}e.commitRoute();continue}if(u.layer===c.layer){e.commitRoute();continue}let d=!1,f=!1,p=this.Vs,g=0,y=e.firstPickIndex+1;if(e.isOrthogonal)f=!0,g=e.pointsCount,g>4&&e.points.removeRange(2,g-3);else if(e.curve===9)d=!0,g=e.pointsCount,g>4&&e.points.removeRange(2,g-3),g===4&&(y=2);else{g=e.pointsCount;let A=h===T.None,F=l===T.None;g>2&&A&&F?e.points.removeRange(1,g-2):g>3&&A&&!F?e.points.removeRange(1,g-3):g>3&&!A&&F?e.points.removeRange(2,g-2):g>4&&!A&&!F&&e.points.removeRange(2,g-3)}let b,v,w=0,k=0,S=0,N=0,D=0,L=0,M=0;if(i.rev){let A=0;for(;c!==null&&u!==c;){b=null,v=null;let F=c.sourceEdges.iterator;for(;F.next();){let O=F.value;if(O.link===i.link&&(b=O.fromVertex,v=O.toVertex,b.node===null))break}if(b===null)break;if(b!==u)if(w=e.getPoint(y-1).x,k=e.getPoint(y-1).y,S=b.centerX,N=b.centerY,f)this.P===180||this.P===0?y===e.firstPickIndex+1?(e.insertPointAt(y++,w,k),e.insertPointAt(y++,w,N)):(v!==null?v.centerY:k)!==N&&(D=this.Rt[b.layer-1]+this.cr.x,e.insertPointAt(y++,D,k),e.insertPointAt(y++,D,N)):y===e.firstPickIndex+1?(e.insertPointAt(y++,w,k),e.insertPointAt(y++,S,k)):(v!==null?v.centerX:w)!==S&&(D=this.Rt[b.layer-1]+this.cr.y,e.insertPointAt(y++,w,D),e.insertPointAt(y++,S,D));else if(y===e.firstPickIndex+1)if(L=Math.max(10,this.zs[c.layer]),M=Math.max(10,this.ms[c.layer]),d)this.P===180?S<=c.bounds.x?(A=c.bounds.x,e.insertPointAt(y++,A-L,N),e.insertPointAt(y++,A,N),e.insertPointAt(y++,A+M,N)):(e.insertPointAt(y++,S-L,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S+M,N)):this.P===90?N>=c.bounds.bottom?(A=c.bounds.y+c.bounds.height,e.insertPointAt(y++,S,A+M),e.insertPointAt(y++,S,A),e.insertPointAt(y++,S,A-L)):(e.insertPointAt(y++,S,N+M),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N-L)):this.P===270?N<=c.bounds.y?(A=c.bounds.y,e.insertPointAt(y++,S,A-L),e.insertPointAt(y++,S,A),e.insertPointAt(y++,S,A+M)):(e.insertPointAt(y++,S,N-L),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N+M)):this.P===0&&(S>=c.bounds.right?(A=c.bounds.x+c.bounds.width,e.insertPointAt(y++,A+M,N),e.insertPointAt(y++,A,N),e.insertPointAt(y++,A-L,N)):(e.insertPointAt(y++,S+M,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S-L,N)));else{e.insertPointAt(y++,w,k);let O=0;this.P===180||this.P===0?((this.P===180?S>=c.bounds.right:S<=c.bounds.x)&&(O=(this.P===0?-L:M)/2),e.insertPointAt(y++,w+O,N)):((this.P===270?N>=c.bounds.bottom:N<=c.bounds.y)&&(O=(this.P===90?-L:M)/2),e.insertPointAt(y++,S,k+O)),e.insertPointAt(y++,S,N)}else L=Math.max(10,this.zs[b.layer]),M=Math.max(10,this.ms[b.layer]),d?this.P===180?(e.insertPointAt(y++,S-L-Math.max(10,p),N),e.insertPointAt(y++,Math.min(S-L+p/2,S),N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,Math.max(S+M-p/2,S),N),e.insertPointAt(y++,S+M+p,N)):this.P===90?(e.insertPointAt(y++,S,N+M+Math.max(10,p)),e.insertPointAt(y++,S,Math.max(N+M-p/2,N)),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,Math.min(N-L+p/2,N)),e.insertPointAt(y++,S,N-L-p)):this.P===270?(e.insertPointAt(y++,S,N-L-Math.max(10,p)),e.insertPointAt(y++,S,Math.min(N-L+p/2,N)),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,Math.max(N+M-p/2,N)),e.insertPointAt(y++,S,N+M+p)):(e.insertPointAt(y++,S+M+Math.max(10,p),N),e.insertPointAt(y++,Math.max(S+M-p/2,S),N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,Math.min(S-L+p/2,S),N),e.insertPointAt(y++,S-L-p,N)):(this.P===180||this.P===90||this.P,e.insertPointAt(y++,S,N));c=b}if(a===null||h!==T.None||f)if(w=e.getPoint(y-1).x,k=e.getPoint(y-1).y,S=e.getPoint(y).x,N=e.getPoint(y).y,f){let F=this.ms[u.layer],O=0;this.P===180||this.P===0?(O=k,O>=u.bounds.y&&O<=u.bounds.bottom&&(this.P===180?S>=u.bounds.x:S<=u.bounds.right)&&(A=u.centerX+(this.P===180?-F:F),O<u.bounds.y+u.bounds.height/2?O=u.bounds.y-this.ti/2:O=u.bounds.bottom+this.ti/2,e.insertPointAt(y++,A,k),e.insertPointAt(y++,A,O)),e.insertPointAt(y++,S,O),e.insertPointAt(y++,S,N)):(O=w,O>=u.bounds.x&&O<=u.bounds.right&&(this.P===270?N>=u.bounds.y:N<=u.bounds.bottom)&&(A=u.centerY+(this.P===270?-F:F),O<u.bounds.x+u.bounds.width/2?O=u.bounds.x-this.ti/2:O=u.bounds.right+this.ti/2,e.insertPointAt(y++,w,A),e.insertPointAt(y++,O,A)),e.insertPointAt(y++,O,N),e.insertPointAt(y++,S,N))}else if(d)L=Math.max(10,this.zs[u.layer]),M=Math.max(10,this.ms[u.layer]),this.P===180&&S>=u.bounds.x?(A=u.bounds.x+u.bounds.width,e.setPointAt(y-2,A,k),e.setPointAt(y-1,A+M,k)):this.P===90&&N<=u.bounds.bottom?(A=u.bounds.y,e.setPointAt(y-2,w,A),e.setPointAt(y-1,w,A-L)):this.P===270&&N>=u.bounds.y?(A=u.bounds.y+u.bounds.height,e.setPointAt(y-2,w,A),e.setPointAt(y-1,w,A+M)):this.P===0&&S<=u.bounds.right&&(A=u.bounds.x,e.setPointAt(y-2,A,k),e.setPointAt(y-1,A-L,k));else{L=Math.max(10,this.zs[u.layer]),M=Math.max(10,this.ms[u.layer]);let F=0;this.P===180||this.P===0?((this.P===180?S<=u.bounds.x:S>=u.bounds.right)&&(F=(this.P===0?M:-L)/2),e.insertPointAt(y++,S+F,k)):((this.P===270?N<=u.bounds.y:N>=u.bounds.bottom)&&(F=(this.P===90?M:-L)/2),e.insertPointAt(y++,w,N+F)),e.insertPointAt(y++,S,N)}}else{for(;u!==null&&u!==c;){b=null,v=null;let A=u.destinationEdges.iterator;for(;A.next();){let F=A.value;if(F.link===i.link&&(b=F.toVertex,v=F.fromVertex,v.node!==null&&(v=null),b.node===null))break}if(b===null)break;b!==c&&(w=e.getPoint(y-1).x,k=e.getPoint(y-1).y,S=b.centerX,N=b.centerY,f?this.P===180||this.P===0?(v!==null?v.centerY:k)!==N&&(D=this.Rt[b.layer]+this.cr.x,y===e.firstPickIndex+1&&(this.P===0?D=Math.max(D,w):D=Math.min(D,w)),e.insertPointAt(y++,D,k),e.insertPointAt(y++,D,N)):(v!==null?v.centerX:w)!==S&&(D=this.Rt[b.layer]+this.cr.y,y===e.firstPickIndex+1&&(this.P===90?D=Math.max(D,k):D=Math.min(D,k)),e.insertPointAt(y++,w,D),e.insertPointAt(y++,S,D)):(L=Math.max(10,this.zs[b.layer]),M=Math.max(10,this.ms[b.layer]),d?this.P===180?(e.insertPointAt(y++,S+M+Math.max(10,p),N),e.insertPointAt(y++,Math.max(S+M-p/2,S),N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,Math.min(S-L+p/2,S),N),e.insertPointAt(y++,S-L-p,N)):this.P===90?(e.insertPointAt(y++,S,N-L-Math.max(10,p)),e.insertPointAt(y++,S,Math.min(N-L+p/2,N)),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,Math.max(N+M-p/2,N)),e.insertPointAt(y++,S,N+M+p)):this.P===270?(e.insertPointAt(y++,S,N+M+Math.max(10,p)),e.insertPointAt(y++,S,Math.max(N+M-p/2,N)),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,Math.min(N-L+p/2,N)),e.insertPointAt(y++,S,N-L-p)):(e.insertPointAt(y++,S-L-Math.max(10,p),N),e.insertPointAt(y++,Math.min(S-L+p/2,S),N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,S,N),e.insertPointAt(y++,Math.max(S+M-p/2,S),N),e.insertPointAt(y++,S+M+p,N)):this.P===180?(e.insertPointAt(y++,S+M,N),e.insertPointAt(y++,S-L,N)):this.P===90?(e.insertPointAt(y++,S,N-L),e.insertPointAt(y++,S,N+M)):this.P===270?(e.insertPointAt(y++,S,N+M),e.insertPointAt(y++,S,N-L)):(e.insertPointAt(y++,S-L,N),e.insertPointAt(y++,S+M,N)))),u=b}f&&(w=e.getPoint(y-1).x,k=e.getPoint(y-1).y,S=e.getPoint(y).x,N=e.getPoint(y).y,this.P===180||this.P===0?k!==N&&(this.P===0?D=Math.min(Math.max((S+w)/2,this.Rt[c.layer]+this.cr.x),S):D=Math.max(Math.min((S+w)/2,this.Rt[c.layer]+this.cr.x),S),e.insertPointAt(y++,D,k),e.insertPointAt(y++,D,N)):w!==S&&(this.P===90?D=Math.min(Math.max((N+k)/2,this.Rt[c.layer]+this.cr.y),N):D=Math.max(Math.min((N+k)/2,this.Rt[c.layer]+this.cr.y),N),e.insertPointAt(y++,w,D),e.insertPointAt(y++,S,D)))}if(s!==null&&d&&e.pointsCount>=4){if(n!==null&&r!==null&&s.kl(h)){let A=r.getDocumentPoint(T.Center);A.isReal()||A.setTo(n.actualBounds.centerX,n.actualBounds.centerY);let F=e.getPoint(3),O=e.getPoint(2);this.direction===90||this.direction===270?(e.setPointAt(1,F.x,(O.y+F.y)/2),e.setPointAt(2,F.x,(O.y+F.y)/2)):(e.setPointAt(1,(O.x+F.x)/2,F.y),e.setPointAt(2,(O.x+F.x)/2,F.y));let E=e.getLinkPointFromPoint(n,r,A,e.getPoint(1),!0);e.setPointAt(0,E.x,E.y)}if(o!==null&&a!==null&&s.kl(l)){let A=a.getDocumentPoint(T.Center);A.isReal()||A.setTo(o.actualBounds.centerX,o.actualBounds.centerY);let F=e.getPoint(e.pointsCount-4),O=e.getLinkPointFromPoint(o,a,A,F,!1),E=e.getPoint(e.pointsCount-3);this.direction===90||this.direction===270?(e.setPointAt(e.pointsCount-2,F.x,(E.y+O.y)/2),e.setPointAt(e.pointsCount-3,F.x,(E.y+O.y)/2)):(e.setPointAt(e.pointsCount-2,(E.x+O.x)/2,F.y),e.setPointAt(e.pointsCount-3,(E.x+O.x)/2,F.y));let B=e.getLinkPointFromPoint(o,a,A,e.getPoint(e.pointsCount-2),!1);e.setPointAt(e.pointsCount-1,B.x,B.y)}}e.commitRoute(),i.commit()}}M3(){this.xw=-1,this.Hg=0,this.Bs=0,this.mu=null;for(let t=0;t<this.Bn.length;t++)this.Bn[t]=null}qa(t){let e,i=this.ie[t];if(i>=this.Bn.length){let n=[];for(let o=0;o<this.Bn.length;o++)n[o]=this.Bn[o];this.Bn=n}this.Bn[i]===void 0||this.Bn[i]===null?e=[]:(e=this.Bn[i],this.Bn[i]=null);let s=this.mu[t];for(let n=0;n<s.length;n++){let o=s[n];e[o.index]=o}return e}ja(t,e){this.Bn[this.ie[t]]=e}get layerSpacing(){return this.Vs}set layerSpacing(t){this.Vs!==t&&(m.s(t,"number",Ce,"layerSpacing"),t>=0&&(this.Vs=t,this.p()))}get columnSpacing(){return this.ti}set columnSpacing(t){this.ti!==t&&(m.s(t,"number",Ce,"columnSpacing"),t>0&&(this.ti=t,this.p()))}get direction(){return this.P}set direction(t){this.P!==t&&(m.s(t,"number",Ce,"direction"),t===0||t===90||t===180||t===270?(this.P=t,this.p()):m.o("LayeredDigraphLayout.direction must be 0, 90, 180, or 270"))}get cycleRemoveOption(){return this.cu}set cycleRemoveOption(t){this.cu!==t&&(t===1||t===0||t===2)&&(this.cu=t,this.p())}get layeringOption(){return this.fu}set layeringOption(t){this.fu!==t&&(t===10||t===11||t===12)&&(this.fu=t,this.p())}get initializeOption(){return this.uu}set initializeOption(t){this.uu!==t&&(t===20||t===21||t===22)&&(this.uu=t,this.p())}get iterations(){return this.gc}set iterations(t){this.gc!==t&&t>=0&&(this.gc=t,this.p())}get aggressiveOption(){return this.du}set aggressiveOption(t){this.du!==t&&(t===30||t===31||t===32)&&(this.du=t,this.p())}get packOption(){return this.hr}set packOption(t){this.hr!==t&&(m.s(t,"number",Ce,"packOption"),t>=0&&t<8&&(this.hr=t,this.p()))}get packIterations(){return this.gu}set packIterations(t){this.gu=t}get alignOption(){return this.zn}set alignOption(t){this.zn!==t&&(m.s(t,"number",Ce,"align"),t>=0&&t<16&&(this.zn=t,this.p()))}get centered(){return this.Ha}set centered(t){this.centered!==t&&(m.s(t,"boolean",Ce,"centered"),this.Ha=t,this.p())}get setsPortSpots(){return this.Vn}set setsPortSpots(t){this.Vn!==t&&(m.s(t,"boolean",Ce,"setsPortSpots"),this.Vn=t,this.p())}get maxLayer(){return this._}get maxIndex(){return this.xw}get maxColumn(){return this.zt}get minIndexLayer(){return this.Hg}get maxIndexLayer(){return this.Bs}static CycleDepthFirst=0;static CycleGreedy=1;static CycleFromLayers=2;static LayerOptimalLinkLength=10;static LayerLongestPathSink=11;static LayerLongestPathSource=12;static InitDepthFirstOut=20;static InitDepthFirstIn=21;static InitNaive=22;static AggressiveNone=30;static AggressiveLess=31;static AggressiveMore=32;static PackNone=0;static PackExpand=1;static PackStraighten=2;static PackMedian=4;static PackAll=15;static AlignNone=0;static AlignUpperLeft=1;static AlignUpperRight=2;static AlignLowerLeft=4;static AlignLowerRight=8;static AlignAll=15}class tn extends Re{constructor(t){super(t)}createVertex(){let t=new si(this);return t.centered=this.layout.centered,t}createEdge(){return new Me(this)}}class si extends Ee{pl;pa;Tt;_k;tP;Ha;ii;pu;Qn;Jk;qk;jk;mc;Xn;CF;Wa;os;yu;mi;Gn;Sw=null;Mw=null;Cw=null;Nw=null;constructor(t){super(t),this.pl=-1,this.pa=-1,this.Tt=-1,this._k=NaN,this.tP=null,this.Ha=!0,this.ii=!1,this.pu=NaN,this.Qn=NaN,this.Jk=0,this.qk=null,this.jk=null}static AF(t,e){return t.index-e.index}getProperSourceEdges(){if(!this.Cw){let t=[];for(let e of this.So){let i=e;i.valid&&t.push(i)}this.Cw=t}return this.Cw}getProperDestinationEdges(){if(!this.Nw){let t=[];for(let e of this.or){let i=e;i.valid&&t.push(i)}this.Nw=t}return this.Nw}getDestinationEdge(t){let e=this.getProperDestinationEdges();for(let i of e)if(i.toVertex===t)return i;m.o("Unable to find destination edge to given vertex")}getProperSourceVertexes(){if(!this.Sw){let t=[];for(let e of this.So){let i=e;!i.valid||i.fromVertex.layer<=i.toVertex.layer||t.push(i.fromVertex)}t.sort(si.AF),this.Sw=t}return this.Sw}getProperDestinationVertexes(){if(!this.Mw){let t=[];for(let e of this.or){let i=e;!i.valid||i.fromVertex.layer<=i.toVertex.layer||t.push(i.toVertex)}t.sort(si.AF),this.Mw=t}return this.Mw}addSourceEdge(t){super.addSourceEdge(t),this.Sw=null,this.Cw=null}deleteSourceEdge(t){super.deleteSourceEdge(t),this.Sw=null,this.Cw=null}addDestinationEdge(t){super.addDestinationEdge(t),this.Mw=null,this.Nw=null}deleteDestinationEdge(t){super.deleteDestinationEdge(t),this.Mw=null,this.Nw=null}commit(){if(this.centered)super.commit();else{let t=this.node;if(t!==null){let e=this.network.layout;if(!e)return;e.direction===180||e.direction===270?t.moveTo(this.bounds.right-t.actualBounds.width,this.bounds.bottom-t.actualBounds.height):t.moveTo(this.bounds.x,this.bounds.y)}}}get layer(){return this.pl}set layer(t){this.pl=t}get column(){return this.pa}set column(t){this.pa=t}get index(){return this.Tt}set index(t){this.Tt=t}get component(){return this._k}set component(t){this._k!==t&&(m.s(t,"number",si,"component"),this._k=t)}get near(){return this.tP}set near(t){this.tP!==t&&(this.tP=t)}get centered(){return this.Ha}set centered(t){this.Ha=t}}class Me extends ei{ii;eP;iP;sP;nP;oP;rP;constructor(t){super(t),this.ii=!1,this.eP=!1,this.iP=!1,this.sP=NaN,this.nP=NaN,this.oP=0,this.rP=0}get fromVertex(){return this.is}set fromVertex(t){this.is!==t&&(this.is=t)}get toVertex(){return this.ss}set toVertex(t){this.ss!==t&&(this.ss=t)}get valid(){return this.ii}set valid(t){this.ii!==t&&(m.s(t,"boolean",Me,"valid"),this.ii=t)}get rev(){return this.eP}set rev(t){this.eP!==t&&(m.s(t,"boolean",Me,"rev"),this.eP=t)}get forest(){return this.iP}set forest(t){this.iP!==t&&(m.s(t,"boolean",Me,"forest"),this.iP=t)}get portFromPos(){return this.sP}set portFromPos(t){this.sP!==t&&(m.s(t,"number",Me,"portFromPos"),this.sP=t)}get portToPos(){return this.nP}set portToPos(t){this.nP!==t&&(m.s(t,"number",Me,"portToPos"),this.nP=t)}get portFromColOffset(){return this.oP}set portFromColOffset(t){this.oP!==t&&(m.s(t,"number",Me,"portFromColOffset"),this.oP=t)}get portToColOffset(){return this.rP}set portToColOffset(t){this.rP!==t&&(m.s(t,"number",Me,"portToColOffset"),this.rP=t)}}var hs=(x=>(x[x.Default=0]="Default",x[x.Destination=1]="Destination",x[x.Source=2]="Source",x))(hs||{}),ls=(x=>(x[x.Forwards=10]="Forwards",x[x.Reverse=11]="Reverse",x[x.Ascending=12]="Ascending",x[x.Descending=13]="Descending",x))(ls||{}),us=(x=>(x[x.CenterSubtrees=20]="CenterSubtrees",x[x.CenterChildren=21]="CenterChildren",x[x.Start=22]="Start",x[x.End=23]="End",x[x.Bus=24]="Bus",x[x.BusBranching=25]="BusBranching",x[x.TopLeftBus=26]="TopLeftBus",x[x.BottomRightBus=27]="BottomRightBus",x[x.Custom=28]="Custom",x))(us||{}),cs=(x=>(x[x.None=30]="None",x[x.Block=31]="Block",x))(cs||{}),ds=(x=>(x[x.Layered=40]="Layered",x[x.LastParents=41]="LastParents",x[x.Alternating=42]="Alternating",x[x.RootOnly=43]="RootOnly",x))(ds||{}),fs=(x=>(x[x.Vertical=50]="Vertical",x[x.Horizontal=51]="Horizontal",x[x.FixedRoots=52]="FixedRoots",x))(fs||{}),en=(x=>(x[x.Individual=60]="Individual",x[x.Siblings=61]="Siblings",x[x.Uniform=62]="Uniform",x))(en||{});class Vt extends ee{Ie;Re;wu;Jg;yL;Gi;He;Us;V;B;lP;ws;constructor(t){super(),this.Ie=new V,this.Re=0,this.ws=1,this.wu=40,this.Jg=60,this.yL=[],this.Gi=!0,this.He=50,this.Us=new nt(10,10).k();let e=new gs(this);this.V=new Rt(e),this.B=new Rt(e),this.lP=[],t&&Object.assign(this,t)}cloneProtected(t){super.cloneProtected(t),t.Re=this.Re,t.wu=this.wu,t.Jg=this.Jg,t.Gi=this.Gi,t.He=this.He,t.Us.h(this.Us),t.V.copyInheritedPropertiesFrom(this.V),t.B.copyInheritedPropertiesFrom(this.B)}fe(t){t in us?this.alignment=t:t in fs?this.arrangement=t:t in cs?this.compaction=t:t in hs?this.path=t:t in ls?this.sorting=t:t in ds?this.treeStyle=t:super.fe(t)}createNetwork(){return new gs(this)}makeNetwork(t){let e=this.createNetwork(),i=s=>{if(s instanceof $)return!s.isLinkLabel&&s.category!=="Comment";if(s instanceof j){let n=s.fromNode;if(n===null||n.isLinkLabel||n.category==="Comment")return!1;let o=s.toNode;return!(o===null||o.isLinkLabel||o.category==="Comment")}return!1};return t instanceof Y?(e.addParts(t.nodes,!0,i),e.addParts(t.links,!0,i)):t instanceof ht?e.addParts(t.memberParts,!1,i):e.addParts(t.iterator,!1,i),e}doLayout(t){this.network===null&&(this.network=this.makeNetwork(t)),this.arrangement!==52&&(this.arrangementOrigin=this.initialOrigin(this.arrangementOrigin));let e=this.diagram;e===null&&t instanceof Y&&(e=t),this.path===0&&e!==null?this.ws=e.isTreePathToChildren?1:2:this.ws=this.path===0?1:this.path,this.network.vertexes.count>0&&(this.rU(),this.lU(),this.aU(),this.hU(),this.fL(),this.cU(),this.arrangeTrees(),this.updateParts()),this.network=null,this.Ie=new V,this.isValidLayout=!0}rU(){if(this.network===null)return;this.network.deleteSelfEdges();let t=this.network.vertexes.iterator;for(;t.next();){let n=t.value;n.initialized=!1,n.level=0,n.parent=null,n.children=[]}if(this.Ie.count>0){let n=new V,o=this.Ie.iterator;for(;o.next();){let r=o.value;if(r instanceof $){let a=this.network.findVertex(r);a!==null&&n.add(a)}else r instanceof Rt&&n.add(r)}this.Ie=n}this.Ie.count===0&&this.findRoots();let e=this.Ie.copy().iterator;for(;e.next();){let n=e.value;n.initialized||(n.initialized=!0,this.wL(n))}let i=this.network.vertexes,s=null;for(;s=this.fU(i),s.count>0;){let n=this.TF(s);n!==null&&(this.Ie.add(n),n.initialized=!0,this.wL(n)),i=s}}fU(t){let e=new V,i=t.iterator;for(;i.next();){let s=i.value;s.initialized||e.add(s)}return e}findRoots(){if(this.network===null)return;let t=this.network.vertexes,e=t.iterator;for(;e.next();){let i=e.value;switch(this.ws){case 1:i.sourceEdges.count===0&&this.Ie.add(i);break;case 2:i.destinationEdges.count===0&&this.Ie.add(i);break;default:m.o("Unhandled path value "+this.ws.toString())}}if(this.Ie.count===0){let i=this.TF(t);i!==null&&this.Ie.add(i)}}TF(t){let e=999999,i=null,s=t.iterator;for(;s.next();){let n=s.value;switch(this.ws){case 1:n.sourceEdges.count<e&&(e=n.sourceEdges.count,i=n);break;case 2:n.destinationEdges.count<e&&(e=n.destinationEdges.count,i=n);break;default:m.o("Unhandled path value "+this.ws.toString())}}return i}wL(t){if(t===null)return;switch(this.ws){case 1:if(t.destinationEdges.count>0){let s=new q,n=t.destinationVertexes;for(;n.next();){let o=n.value;this.DF(t,o)&&s.add(o)}s.count>0&&(t.children=s.toArray())}break;case 2:if(t.sourceEdges.count>0){let s=new q,n=t.sourceVertexes;for(;n.next();){let o=n.value;this.DF(t,o)&&s.add(o)}s.count>0&&(t.children=s.toArray())}break;default:m.o("Unhandled path value"+this.ws.toString())}let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];n.initialized=!0,n.level=t.level+1,n.parent=t,this.Ie.delete(n)}for(let s=0;s<i;s++){let n=e[s];this.wL(n)}}DF(t,e){return e.initialized?this.uU(e,t)||e.level>t.level?!1:(this.dU(e.parent,e),!0):!0}uU(t,e){if(e===null)return!1;let i=e.parent;for(;i!==null&&i!==t;)i=i.parent;return i===t}dU(t,e){if(t===null||e===null)return;let i=t.children,s=0;for(let n=0;n<i.length;n++)i[n]===e&&s++;if(s>0){let n=new Array(i.length-s),o=0;for(let r=0;r<i.length;r++)i[r]!==e&&(n[o++]=i[r]);t.children=n}}lU(){let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.vF(e)}}vF(t){if(t===null)return;this.initializeTreeVertexValues(t),t.alignment===25&&this.sortTreeVertexChildren(t);let e=0,i=t.childrenCount,s=0,n=t.children,o=n.length;for(let r=0;r<o;r++){let a=n[r];this.vF(a),e+=a.descendantCount+1,i=Math.max(i,a.maxChildrenCount),s=Math.max(s,a.maxGenerationCount)}t.descendantCount=e,t.maxChildrenCount=i,t.maxGenerationCount=i>0?s+1:0}gU(t){switch(this.wu){default:case 40:return t.parent!==null?t.parent:this.V;case 43:return t.parent===null?this.V:t.parent.parent===null?this.B:t.parent;case 42:return t.parent!==null?t.parent.parent!==null?t.parent.parent:this.B:this.V;case 41:{let e=!0;if(t.childrenCount===0)e=!1;else{let i=t.children,s=i.length;for(let n=0;n<s;n++)if(i[n].childrenCount>0){e=!1;break}}return e&&t.parent!==null?this.B:t.parent!==null?t.parent:this.V}}}initializeTreeVertexValues(t){let e=this.gU(t);if(t.copyInheritedPropertiesFrom(e),t.parent!==null&&t.parent.alignment===25){let i=t.angle,s=t.parent.children,n=0;for(;n<s.length&&t!==s[n];)n++;n%2===0?n!==s.length-1&&(i===90?i=180:i===180?i=270:i===270?i=180:i=270):i===90?i=0:i===180?i=90:i===270?i=0:i=90,t.angle=i}t.initialized=!0}aU(){let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.FF(e)}}FF(t){if(t===null)return;this.assignTreeVertexValues(t);let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];this.FF(n)}}assignTreeVertexValues(t){}hU(){let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.RF(e)}}RF(t){if(t===null)return;t.alignment!==25&&this.sortTreeVertexChildren(t);let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];this.RF(n)}}sortTreeVertexChildren(t){switch(t.sorting){default:case 10:break;case 11:t.children.reverse();break;case 12:t.children.sort(t.comparer);break;case 13:t.children.sort(t.comparer),t.children.reverse();break}}fL(){if(!this.comments||this.network===null)return;let t=this.network.vertexes.iterator;for(;t.next();){let e=t.value;this.addComments(e)}}addComments(t){let e=t.angle,i=t.parent,s=0,n=21,o=!1;i!==null&&(s=i.angle,n=i.alignment,o=this.isBusAlignment(n));let r=e===90||e===270,a=s===90||s===270,h=t.childrenCount===0,l=0,u=0,c=0,d=t.commentSpacing;if(t.node!==null){let f=t.node.findNodesConnected();for(;f.next();){let p=f.value;if(p.category!=="Comment"||!p.canLayout())continue;t.comments===null&&(t.comments=[]),t.comments.push(p),p.ensureBounds();let g=p.measuredBounds;r&&!h||!o&&!a&&h||o&&a&&h?(l=Math.max(l,g.width),u+=g.height+Math.abs(c)):(l+=g.width+Math.abs(c),u=Math.max(u,g.height)),c=d}}if(t.comments!==null){r&&!h||!o&&!a&&h||o&&a&&h?(l+=Math.abs(t.commentMargin),u=Math.max(0,u-t.height)):(u+=Math.abs(t.commentMargin),l=Math.max(0,l-t.width));let f=I.z(0,0,t.bounds.width+l,t.bounds.height+u);t.bounds=f,I.i(f)}}isBusAlignment(t){return t===24||t===25||t===26||t===27}Lw(t){return t===24||t===25}xL(t){let e=t.parent;if(e!==null){let i=e.alignment;if(this.isBusAlignment(i))if(this.Lw(i)){let s=e.children,n=0;for(;n<s.length&&t!==s[n];)n++;return n%2===0}else return i===26}return!1}layoutComments(t){if(t.comments!==null){let e=t.node.measuredBounds,i=t.parent,s=t.angle,n=0,o=21,r=!1;i!==null&&(n=i.angle,o=i.alignment,r=this.isBusAlignment(o));let a=s===90||s===270,h=n===90||n===270,l=t.childrenCount===0,u=this.xL(t),c=0,d=t.comments,f=d.length,p=P.l();for(let y=0;y<f;y++){let b=d[y],v=b.measuredBounds;if(a&&!l||!r&&!h&&l||r&&h&&l){if(n>135&&!r||h&&u)if(t.commentMargin>=0){p.e(t.bounds.x-t.commentMargin-v.width,t.bounds.y+c),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleLeft,k.toSpot=T.MiddleRight}}else{p.e(t.bounds.x+t.focus.x*2-t.commentMargin,t.bounds.y+c),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleRight,k.toSpot=T.MiddleLeft}}else if(t.commentMargin>=0){p.e(t.bounds.x+t.focus.x*2+t.commentMargin,t.bounds.y+c),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleRight,k.toSpot=T.MiddleLeft}}else{p.e(t.bounds.x+t.commentMargin-v.width,t.bounds.y+c),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleLeft,k.toSpot=T.MiddleRight}}t.commentSpacing>=0?c+=v.height+t.commentSpacing:c+=t.commentSpacing-v.height}else{if(n>135&&!r||!h&&u)if(t.commentMargin>=0){p.e(t.bounds.x+c,t.bounds.y-t.commentMargin-v.height),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleTop,k.toSpot=T.MiddleBottom}}else{p.e(t.bounds.x+c,t.bounds.y+t.focus.y*2-t.commentMargin),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleBottom,k.toSpot=T.MiddleTop}}else if(t.commentMargin>=0){p.e(t.bounds.x+c,t.bounds.y+t.focus.y*2+t.commentMargin),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleBottom,k.toSpot=T.MiddleTop}}else{p.e(t.bounds.x+c,t.bounds.y+t.commentMargin-v.height),b.move(p);let w=b.findLinksInto();for(;w.next();){let k=w.value;k.fromSpot=T.MiddleTop,k.toSpot=T.MiddleBottom}}t.commentSpacing>=0?c+=v.width+t.commentSpacing:c+=t.commentSpacing-v.width}}P.i(p);let g=c-t.commentSpacing-(a?e.height:e.width);if(this.ws===1){let y=t.destinationEdges;for(;y.next();){let b=y.value.link;b!==null&&!b.isAvoiding&&(b.fromEndSegmentLength=g>0?g:NaN)}}else{let y=t.sourceEdges;for(;y.next();){let b=y.value.link;b!==null&&!b.isAvoiding&&(b.toEndSegmentLength=g>0?g:NaN)}}}}cU(){if(this.network===null)return;if(this.layerStyle===62){let e=[],i=this.network.vertexes.iterator;for(;i.next();){let s=i.value,n=s.parent;n===null&&(n=s);let o=n.angle===0||n.angle===180,r=e[s.level];r===void 0&&(r=0),e[s.level]=Math.max(r,o?s.width:s.height)}for(let s=0;s<e.length;s++)e[s]===void 0&&(e[s]=0);for(this.yL=e,i=this.network.vertexes.iterator;i.next();){let s=i.value,n=s.parent;n===null&&(n=s),n.angle===0||n.angle===180?(n.angle===180&&(s.focusX+=e[s.level]-s.width),s.width=e[s.level]):(n.angle===270&&(s.focusY+=e[s.level]-s.height),s.height=e[s.level])}}else if(this.layerStyle===61){let e=this.network.vertexes.iterator;for(;e.next();){let i=e.value,s=i.angle===0||i.angle===180,n=-1;for(let o=0;o<i.children.length;o++){let r=i.children[o];n=Math.max(n,s?r.width:r.height)}if(n>=0)for(let o=0;o<i.children.length;o++){let r=i.children[o];s?(i.angle===180&&(r.focusX+=n-r.width),r.width=n):(i.angle===270&&(r.focusY+=n-r.height),r.height=n)}}}let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.layoutTree(e)}}layoutTree(t){if(t===null)return;let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];this.layoutTree(n)}switch(t.compaction){case 30:this.OF(t);break;default:case 31:t.alignment===25?this.OF(t):this.mU(t);break}}OF(t){if(t.childrenCount===0){let X=!1,z=0,U=21;t.parent!==null&&(z=t.parent.angle,U=t.parent.alignment,X=this.isBusAlignment(U));let tt=this.xL(t);t.U.e(0,0),t.dt.e(t.width,t.height),t.parent!==null&&t.comments!==null&&((z===180||z===270)&&!X||tt)?z===180&&!X||(z===90||z===270)&&tt?t.at.e(t.width-t.focus.x*2,0):t.at.e(0,t.height-t.focus.y*2):t.at.e(0,0);return}let e=this.orthoAngle(t),i=e===90||e===270,s=0,n=t.children,o=n.length;for(let X=0;X<o;X++){let z=n[X];s=Math.max(s,i?z.dt.width:z.dt.height)}let r=t.alignment,a=r===22,h=r===23,l=this.isBusAlignment(r),u=Math.max(0,t.breadthLimit),c=this.computeLayerSpacing(t),d=t.nodeSpacing,f=this.computeNodeIndent(t),p=a||h?0:f/2,g=t.rowSpacing,y=0;(a||h)&&(y=Math.max(0,t.rowIndent));let b=t.width,v=t.height,w=0,k=0,S=0,N=0,D=0,L=0,M=0,A=0,F=0,O=0;if(l&&!this.Lw(r)&&e>135&&n.reverse(),this.Lw(r))if(o>1)for(let X=0;X<o;X++){let z=n[X],U=z.dt;X%2===0&&X!==o-1?F=Math.max(F,(i?U.width:U.height)+this.computeBusNodeSpacing(z)-d):X%2!==0&&(O=Math.max(O,(i?U.width:U.height)+this.computeBusNodeSpacing(z)-d))}else o===1&&(F=i?n[0].dt.width:n[0].dt.height);if(l)switch(r){case 24:case 25:let X=I.l();e<135?this.IF(t,n,F,O,w,k,X):this.EF(t,n,F,O,w,k,X),F=X.x,w=X.width,k=X.height,I.i(X);break;case 26:for(let z=0;z<o;z++){let U=n[z],tt=U.dt,st=M===0?0:g;i?(U.U.e(s-tt.width,D+st),w=Math.max(w,tt.width),k=Math.max(k,D+st+tt.height),D+=st+tt.height):(U.U.e(N+st,s-tt.height),w=Math.max(w,N+st+tt.width),k=Math.max(k,tt.height),N+=st+tt.width),M++}break;case 27:for(let z=0;z<o;z++){let U=n[z],tt=U.dt,st=M===0?0:g;i?(U.U.e(d/2+t.focus.x,D+st),w=Math.max(w,tt.width),k=Math.max(k,D+st+tt.height),D+=st+tt.height):(U.U.e(N+st,d/2+t.focus.y),w=Math.max(w,N+st+tt.width),k=Math.max(k,tt.height),N+=st+tt.width),M++}break}else for(let X=0;X<o;X++){let z=n[X],U=z.dt;if(i){u>0&&M>0&&N+d+U.width>u&&(N<s&&this.pc(t,r,s-N,0,A,X-1),L++,M=0,A=X,S=k,N=0,D=e>135?-k-g:k+g);let tt=M===0?p:d;this.aP(z,0,D),z.U.e(N+tt,D),w=Math.max(w,N+tt+U.width),k=Math.max(k,S+(L===0?0:g)+U.height),N+=tt+U.width}else{u>0&&M>0&&D+d+U.height>u&&(D<s&&this.pc(t,r,0,s-D,A,X-1),L++,M=0,A=X,S=w,D=0,N=e>135?-w-g:w+g);let tt=M===0?p:d;this.aP(z,N,0),z.U.e(N,D+tt),k=Math.max(k,D+tt+U.height),w=Math.max(w,S+(L===0?0:g)+U.width),D+=tt+U.height}M++}L>0&&(i?(k+=Math.max(0,c),N<w&&this.pc(t,r,w-N,0,A,o-1),y>0&&(h||this.xu(t,y,0,0,o-1),w+=y)):(w+=Math.max(0,c),D<k&&this.pc(t,r,0,k-D,A,o-1),y>0&&(h||this.xu(t,0,y,0,o-1),k+=y)));let E=0,B=0;switch(r){case 20:i?E+=w/2-t.focus.x-f/2:B+=k/2-t.focus.y-f/2;break;default:case 21:if(L>0)i?E+=w/2-t.focus.x-f/2:B+=k/2-t.focus.y-f/2;else{let z=o;if(i){let U=n[0].U.x+n[0].at.x,tt=n[z-1].U.x+n[z-1].at.x+n[z-1].focus.x*2;E+=U+(tt-U)/2-t.focus.x-f/2}else{let U=n[0].U.y+n[0].at.y,tt=n[z-1].U.y+n[z-1].at.y+n[z-1].focus.y*2;B+=U+(tt-U)/2-t.focus.y-f/2}}break;case 22:i?(E-=f,w+=f):(B-=f,k+=f);break;case 23:i?(E+=w-t.width+f,w+=f):(B+=k-t.height+f,k+=f);break;case 24:case 25:i?o>1?E+=F+d/2-t.focus.x:E+=n[0].focus.x-t.focus.x+n[0].at.x:o>1?B+=F+d/2-t.focus.y:B+=n[0].focus.y-t.focus.y+n[0].at.y;break;case 26:i?E+=w+d/2-t.focus.x:B+=k+d/2-t.focus.y;break;case 27:break;case 28:let X=this.customAlignment(t,E,B,w,k);E=X[0],B=X[1],w=X[2],k=X[3];break}for(let X=0;X<o;X++){let z=n[X];i?z.U.e(z.U.x+z.at.x-E,z.U.y+(e>135?(l?-k:-z.dt.height)+z.at.y-c:v+c+z.at.y)):z.U.e(z.U.x+(e>135?(l?-w:-z.dt.width)+z.at.x-c:b+c+z.at.x),z.U.y+z.at.y-B)}i?(w=this.bL(t,w,E),E<0&&(E=0),e>135&&(B+=k+c),k=Math.max(Math.max(k,v),k+v+c)):(e>135&&(E+=w+c),w=Math.max(Math.max(w,b),w+b+c),k=this.kL(t,k,B),B<0&&(B=0)),t.at.e(E,B),t.dt.e(w,k)}customAlignment(t,e,i,s,n){return[e,i,s,n]}IF(t,e,i,s,n,o,r){let a=e.length;if(a===0)return r.e(i,0,n,o),r;if(a===1){let y=e[0];return n=y.dt.width,o=y.dt.height,r.e(i,0,n,o),r}let h=t.nodeSpacing,l=t.rowSpacing,u=this.orthoAngle(t)===90,c=0,d=0,f=0;for(let y=0;y<a;y++){if(y%2!==0||a>1&&y===a-1)continue;let b=e[y],v=b.dt,w=c===0?0:l;if(u){let k=this.computeBusNodeSpacing(b)-h;b.U.e(i-(v.width+k),f+w),n=Math.max(n,v.width+k),o=Math.max(o,f+w+v.height),f+=w+v.height}else{let k=this.computeBusNodeSpacing(b)-h;b.U.e(d+w,i-(v.height+k)),o=Math.max(o,v.height+k),n=Math.max(n,d+w+v.width),d+=w+v.width}c++}c=0;let p=d,g=f;u?(d=i+h,f=0):(d=0,f=i+h);for(let y=0;y<a;y++){if(y%2===0)continue;let b=e[y],v=b.dt,w=c===0?0:l;if(u){let k=this.computeBusNodeSpacing(b)-h;b.U.e(d+k,f+w),n=Math.max(n,d+v.width+k),o=Math.max(o,f+w+v.height),f+=w+v.height}else{let k=this.computeBusNodeSpacing(b)-h;b.U.e(d+w,f+k),n=Math.max(n,d+w+v.width),o=Math.max(o,f+v.height+k),d+=w+v.width}c++}if(a>1&&a%2===1){let y=e[a-1],b=y.dt,v=this.computeBusLastRowSpacing(y,u?Math.max(Math.abs(g),Math.abs(f)):Math.max(Math.abs(p),Math.abs(d)));if(u){y.U.e(i+h/2-y.focus.x-y.at.x,o+v);let w=i+h/2-y.focus.x-y.at.x;n=Math.max(n,w+b.width),w<0&&(n-=w),o=Math.max(o,Math.max(g,f)+v+b.height),y.U.x<0&&(i=this.hP(t,y.U.x,!1,i,h))}else{y.U.e(n+v,i+h/2-y.focus.y-y.at.y),n=Math.max(n,Math.max(p,d)+v+b.width);let w=i+h/2-y.focus.y-y.at.y;o=Math.max(o,w+b.height),w<0&&(o-=w),y.U.y<0&&(i=this.hP(t,y.U.y,!0,i,h))}}return r.e(i,0,n,o),r}EF(t,e,i,s,n,o,r){let a=e.length;if(a===0)return r.e(i,0,n,o),r;if(a===1){let y=e[0];return n=y.dt.width,o=y.dt.height,r.e(i,0,n,o),r}let h=t.nodeSpacing,l=t.rowSpacing,u=this.orthoAngle(t)===270,c=0,d=0,f=0;for(let y=0;y<a;y++){if(y%2!==0||a>1&&y===a-1)continue;let b=e[y],v=b.dt,w=c===0?0:l;if(u){let k=this.computeBusNodeSpacing(b)-h;f-=w+v.height,b.U.e(i-(v.width+k),f),n=Math.max(n,v.width+k),o=Math.max(o,Math.abs(f))}else{let k=this.computeBusNodeSpacing(b)-h;d-=w+v.width,b.U.e(d,i-(v.height+k)),o=Math.max(o,v.height+k),n=Math.max(n,Math.abs(d))}c++}c=0;let p=d,g=f;u?(d=i+h,f=0):(d=0,f=i+h);for(let y=0;y<a;y++){if(y%2===0)continue;let b=e[y],v=b.dt,w=c===0?0:l;if(u){let k=this.computeBusNodeSpacing(b)-h;f-=w+v.height,b.U.e(d+k,f),n=Math.max(n,d+v.width+k),o=Math.max(o,Math.abs(f))}else{let k=this.computeBusNodeSpacing(b)-h;d-=w+v.width,b.U.e(d,f+k),o=Math.max(o,f+v.height+k),n=Math.max(n,Math.abs(d))}c++}if(a>1&&a%2===1){let y=e[a-1],b=y.dt,v=this.computeBusLastRowSpacing(y,u?Math.max(Math.abs(g),Math.abs(f)):Math.max(Math.abs(p),Math.abs(d)));if(u){y.U.e(i+h/2-y.focus.x-y.at.x,-o-b.height-v);let w=i+h/2-y.focus.x-y.at.x;n=Math.max(n,w+b.width),w<0&&(n-=w),o=Math.max(o,Math.abs(Math.min(g,f))+v+b.height),y.U.x<0&&(i=this.hP(t,y.U.x,!1,i,h))}else{y.U.e(-n-b.width-v,i+h/2-y.focus.y-y.at.y),n=Math.max(n,Math.abs(Math.min(p,d))+v+b.width);let w=i+h/2-y.focus.y-y.at.y;o=Math.max(o,w+b.height),w<0&&(o-=w),y.U.y<0&&(i=this.hP(t,y.U.y,!0,i,h))}}for(let y=0;y<a;y++){let b=e[y];u?b.U.e(b.U.x,b.U.y+o):b.U.e(b.U.x+n,b.U.y)}return r.e(i,0,n,o),r}computeBusNodeSpacing(t){return t.parent===null?0:t.parent.nodeSpacing}computeBusLastRowSpacing(t,e){return t.parent===null?0:t.parent.rowSpacing}hP(t,e,i,s,n){let o=t.children,r=o.length;for(let h=0;h<r;h++)i?o[h].U.e(o[h].U.x,o[h].U.y-e):o[h].U.e(o[h].U.x-e,o[h].U.y);let a=o[r-1];return Math.max(s,i?a.at.y+a.focus.y-n/2:a.at.x+a.focus.x-n/2)}bL(t,e,i){switch(t.alignment){case 21:case 20:let s=e;return i+t.width>s&&(s=i+t.width),i<0&&(s-=i),s;case 22:return t.width>e?t.width:e;case 23:return t.focus.x*2>e?t.width:e+t.width-t.focus.x*2;case 24:case 25:let n=Math.min(0,i),o=Math.max(e,i+t.width);return Math.max(t.width,o-n);case 26:return t.width-t.focus.x+t.nodeSpacing/2+e;case 27:return Math.max(t.width,t.focus.x+t.nodeSpacing/2+e);default:return e}}kL(t,e,i){switch(t.alignment){case 21:case 20:let s=e;return i+t.height>s&&(s=i+t.height),i<0&&(s-=i),s;case 22:return t.height>e?t.height:e;case 23:return t.focus.y*2>e?t.height:e+t.height-t.focus.y*2;case 24:case 25:let n=Math.min(0,i),o=Math.max(e,i+t.height);return Math.max(t.height,o-n);case 26:return t.height-t.focus.y+t.nodeSpacing/2+e;case 27:return Math.max(t.height,t.focus.y+t.nodeSpacing/2+e);default:return e}}PL(t,e,i){switch(t){case 20:e/=2,i/=2;break;case 21:e/=2,i/=2;break;case 22:e=0,i=0;break;case 23:break;default:m.o("Unhandled alignment value "+t.toString())}return new P(e,i)}pc(t,e,i,s,n,o){let r=this.PL(e,i,s);this.xu(t,r.x,r.y,n,o)}xu(t,e,i,s,n){if(e===0&&i===0)return;let o=t.children;for(let r=s;r<=n;r++){let a=o[r].U;a.x+=e,a.y+=i}}aP(t,e,i){let s=t.parent;switch(this.ws){case 1:{let n=t.sourceEdges;for(;n.next();){let o=n.value;o.fromVertex===s&&o.relativePoint.e(e,i)}break}case 2:{let n=t.destinationEdges;for(;n.next();){let o=n.value;o.toVertex===s&&o.relativePoint.e(e,i)}break}default:m.o("Unhandled path value "+this.ws.toString())}}mU(t){if(t.childrenCount===0){let Q=t.parent,rt=!1,ft=0,xt=21;Q!==null&&(ft=Q.angle,xt=Q.alignment,rt=this.isBusAlignment(xt));let Ct=this.xL(t);t.U.e(0,0),t.dt.e(t.width,t.height),t.parent!==null&&t.comments!==null&&((ft===180||ft===270)&&!rt||Ct)?ft===180&&!rt||(ft===90||ft===270)&&Ct?t.at.e(t.width-t.focus.x*2,0):t.at.e(0,t.height-t.focus.y*2):t.at.e(0,0),t.$g=null,t.Zg=null;return}let e=this.orthoAngle(t),i=e===90||e===270,s=0,n=t.children,o=n.length;for(let Q=0;Q<o;Q++){let rt=n[Q];s=Math.max(s,i?rt.dt.width:rt.dt.height)}let r=t.alignment,a=r===22,h=r===23,l=this.isBusAlignment(r),u=Math.max(0,t.breadthLimit),c=this.computeLayerSpacing(t),d=t.nodeSpacing,f=this.computeNodeIndent(t),p=t.rowSpacing,g=0;(a||h)&&(g=Math.max(0,t.rowIndent));let y=t.width,b=t.height,v=0,w=0,k=0,S=null,N=null,D=0,L=0,M=0,A=0,F=0,O=0,E=0,B=0,X=0;if(l&&!this.Lw(r)&&e>135&&n.reverse(),this.Lw(r))if(o>1)for(let Q=0;Q<o;Q++)Q%2===0&&Q!==o-1?B=Math.max(B,i?n[Q].dt.width:n[Q].dt.height):Q%2!==0&&(X=Math.max(X,i?n[Q].dt.width:n[Q].dt.height));else o===1&&(B=i?n[0].dt.width:n[0].dt.height);if(l){switch(r){case 24:let Q=I.l();e<135?this.IF(t,n,B,X,v,w,Q):this.EF(t,n,B,X,v,w,Q),B=Q.x,v=Q.width,w=Q.height,I.i(Q);break;case 26:for(let rt=0;rt<o;rt++){let ft=n[rt],xt=ft.dt,Ct=O===0?0:p;i?(ft.U.e(s-xt.width,A+Ct),v=Math.max(v,xt.width),w=Math.max(w,A+Ct+xt.height),A+=Ct+xt.height):(ft.U.e(M+Ct,s-xt.height),v=Math.max(v,M+Ct+xt.width),w=Math.max(w,xt.height),M+=Ct+xt.width),O++}break;case 27:for(let rt=0;rt<o;rt++){let ft=n[rt],xt=ft.dt,Ct=O===0?0:p;i?(ft.U.e(d/2+t.focus.x,A+Ct),v=Math.max(v,xt.width),w=Math.max(w,A+Ct+xt.height),A+=Ct+xt.height):(ft.U.e(M+Ct,d/2+t.focus.y),v=Math.max(v,M+Ct+xt.width),w=Math.max(w,xt.height),M+=Ct+xt.width),O++}break}S=this.pi(2),N=this.pi(2),i?(S[0].e(0,0),S[1].e(0,w),N[0].e(v,0),N[1].e(v,w)):(S[0].e(0,0),S[1].e(v,0),N[0].e(0,w),N[1].e(v,w))}else for(let Q=0;Q<o;Q++){let rt=n[Q],ft=rt.dt;if(i){u>0&&O>0&&M+d+ft.width>u&&(M<s&&this.pc(t,r,s-M,0,E,Q-1),F++,O=0,E=Q,k=w,M=0,A=e>135?-w-p:w+p),this.aP(rt,0,A);let xt=0;if(O===0)S=rt.$g,N=rt.Zg,D=ft.width,L=ft.height,(S===null||N===null||e!==this.orthoAngle(rt))&&(S=this.pi(2),N=this.pi(2),S[0].e(0,0),S[1].e(0,L),N[0].e(D,0),N[1].e(D,L));else{let Ct=m.st(),_=I.l();this.UF(t,rt,S,N,D,L,Ct,_),xt=_.x,S=Ct[0],N=Ct[1],D=_.width,L=_.height,m.Z(Ct),M<ft.width&&xt<0&&(this.xu(t,-xt,0,E,Q-1),this.cP(S,-xt,0),this.cP(N,-xt,0),xt=0),I.i(_)}rt.U.e(xt,A),v=Math.max(v,D),w=Math.max(w,k+(F===0?0:p)+ft.height),M=D}else{u>0&&O>0&&A+d+ft.height>u&&(A<s&&this.pc(t,r,0,s-A,E,Q-1),F++,O=0,E=Q,k=v,A=0,M=e>135?-v-p:v+p),this.aP(rt,M,0);let xt=0;if(O===0)S=rt.$g,N=rt.Zg,D=ft.width,L=ft.height,(S===null||N===null||e!==this.orthoAngle(rt))&&(S=this.pi(2),N=this.pi(2),S[0].e(0,0),S[1].e(D,0),N[0].e(0,L),N[1].e(D,L));else{let Ct=m.st(),_=I.l();this.UF(t,rt,S,N,D,L,Ct,_),xt=_.x,S=Ct[0],N=Ct[1],D=_.width,L=_.height,m.Z(Ct),A<ft.height&&xt<0&&(this.xu(t,0,-xt,E,Q-1),this.cP(S,0,-xt),this.cP(N,0,-xt),xt=0),I.i(_)}rt.U.e(M,xt),w=Math.max(w,L),v=Math.max(v,k+(F===0?0:p)+ft.width),A=L}O++}F>0&&(i?(w+=Math.max(0,c),M<v&&this.pc(t,r,v-M,0,E,o-1),g>0&&(h||this.xu(t,g,0,0,o-1),v+=g)):(v+=Math.max(0,c),A<w&&this.pc(t,r,0,w-A,E,o-1),g>0&&(h||this.xu(t,0,g,0,o-1),w+=g)));let z=0,U=0;switch(r){case 20:i?z+=v/2-t.focus.x-f/2:U+=w/2-t.focus.y-f/2;break;default:case 21:if(F>0)i?z+=v/2-t.focus.x-f/2:U+=w/2-t.focus.y-f/2;else{let rt=o;if(i){let ft=n[0].U.x+n[0].at.x,xt=n[rt-1].U.x+n[rt-1].at.x+n[rt-1].focus.x*2;z+=ft+(xt-ft)/2-t.focus.x-f/2}else{let ft=n[0].U.y+n[0].at.y,xt=n[rt-1].U.y+n[rt-1].at.y+n[rt-1].focus.y*2;U+=ft+(xt-ft)/2-t.focus.y-f/2}}break;case 22:i?(z-=f,v+=f):(U-=f,w+=f);break;case 23:i?(z+=v-t.width+f,v+=f):(U+=w-t.height+f,w+=f);break;case 24:i?o>1?z+=B+d/2-t.focus.x:z+=n[0].focus.x-t.focus.x+n[0].at.x:o>1?U+=B+d/2-t.focus.y:U+=n[0].focus.y-t.focus.y+n[0].at.y;break;case 26:i?z+=v+d/2-t.focus.x:U+=w+d/2-t.focus.y;break;case 27:break;case 28:let Q=this.customAlignment(t,z,U,v,w);z=Q[0],U=Q[1],v=Q[2],w=Q[3];break}for(let Q=0;Q<o;Q++){let rt=n[Q];i?rt.U.e(rt.U.x+rt.at.x-z,rt.U.y+(e>135?(l?-w:-rt.dt.height)+rt.at.y-c:b+c+rt.at.y)):rt.U.e(rt.U.x+(e>135?(l?-v:-rt.dt.width)+rt.at.x-c:y+c+rt.at.x),rt.U.y+rt.at.y-U)}let tt=0,st=0;if(l)i?(v=this.bL(t,v,z),z<0&&(z=0),e>135&&(U+=w+c),w+=b+c,r===27&&(tt+=d/2+t.focus.x),st+=b+c):(e>135&&(z+=v+c),v+=y+c,w=this.kL(t,w,U),U<0&&(U=0),r===27&&(st+=d/2+t.focus.y),tt+=y+c);else if(i){if(t.comments===null){if(y>v){let Q=this.PL(r,y-v,0);tt=Q.x,st=Q.y,v=y,z=0}}else v=this.bL(t,v,z);z<0&&(tt-=z,z=0),e>135&&(U+=w+c),w=Math.max(Math.max(w,b),w+b+c),st+=b+c}else{if(e>135&&(z+=v+c),v=Math.max(Math.max(v,y),v+y+c),t.comments===null){if(b>w){let Q=this.PL(r,0,b-w);tt=Q.x,st=Q.y,w=b,U=0}}else w=this.kL(t,w,U);U<0&&(st-=U,U=0),tt+=y+c}let Z,et;if(F>0)Z=this.pi(4),et=this.pi(4),i?(Z[2].e(0,b+c),Z[3].e(Z[2].x,w),et[2].e(v,Z[2].y),et[3].e(et[2].x,Z[3].y)):(Z[2].e(y+c,0),Z[3].e(v,Z[2].y),et[2].e(Z[2].x,w),et[3].e(Z[3].x,et[2].y));else{Z=this.pi(S.length+2),et=this.pi(N.length+2);for(let Q=0;Q<S.length;Q++){let rt=S[Q];Z[Q+2].e(rt.x+tt,rt.y+st)}for(let Q=0;Q<N.length;Q++){let rt=N[Q];et[Q+2].e(rt.x+tt,rt.y+st)}}i?(Z[0].e(z,0),Z[1].e(Z[0].x,b),Z[2].y<Z[1].y&&(Z[2].x>Z[0].x?Z[2].h(Z[1]):Z[1].h(Z[2])),Z[3].y<Z[2].y&&(Z[3].x>Z[0].x?Z[3].h(Z[2]):Z[2].h(Z[3])),et[0].e(z+y,0),et[1].e(et[0].x,b),et[2].y<et[1].y&&(et[2].x<et[0].x?et[2].h(et[1]):et[1].h(et[2])),et[3].y<et[2].y&&(et[3].x<et[0].x?et[3].h(et[2]):et[2].h(et[3])),Z[2].y-=c/2,et[2].y-=c/2):(Z[0].e(0,U),Z[1].e(y,Z[0].y),Z[2].x<Z[1].x&&(Z[2].y>Z[0].y?Z[2].h(Z[1]):Z[1].h(Z[2])),Z[3].x<Z[2].x&&(Z[3].y>Z[0].y?Z[3].h(Z[2]):Z[2].h(Z[3])),et[0].e(0,U+b),et[1].e(y,et[0].y),et[2].x<et[1].x&&(et[2].y<et[0].y?et[2].h(et[1]):et[1].h(et[2])),et[3].x<et[2].x&&(et[3].y<et[0].y?et[3].h(et[2]):et[2].h(et[3])),Z[2].x-=c/2,et[2].x-=c/2),this.un(S),this.un(N),t.$g=Z,t.Zg=et,t.at.e(z,U),t.dt.e(v,w)}cP(t,e,i){for(let s=0;s<t.length;s++){let n=t[s];n.x+=e,n.y+=i}}UF(t,e,i,s,n,o,r,a){let h=this.orthoAngle(t),l=h===90||h===270,u=t.nodeSpacing,c=i,d=s,f=n,p=o,g=e.$g,y=e.Zg,b=e.dt,v=l?Math.max(p,b.height):Math.max(f,b.width);if((g===null||h!==this.orthoAngle(e))&&(g=this.pi(2),y=this.pi(2),l?(g[0].e(0,0),g[1].e(0,b.height),y[0].e(b.width,0),y[1].e(y[0].x,g[1].y)):(g[0].e(0,0),g[1].e(b.width,0),y[0].e(0,b.height),y[1].e(g[1].x,y[0].y))),l){let w=f,k=w-this.pU(d,g,w);return k+=u,i=this.yU(c,g,k),s=this.wU(d,y,k),n=Math.max(0,k)+b.width,o=v,this.un(c),this.un(g),this.un(d),this.un(y),r[0]=i,r[1]=s,a.e(k,0,n,o),a}else{let w=p,k=w-this.xU(d,g,w);return k+=u,i=this.bU(c,g,k),s=this.kU(d,y,k),n=v,o=Math.max(0,k)+b.height,this.un(c),this.un(g),this.un(d),this.un(y),r[0]=i,r[1]=s,a.e(k,0,n,o),a}}bU(t,e,i){if(t===null||t.length<2||e===null||e.length<2)return null;let s=this.pi(t.length+e.length),n=0,o=0,r=0;for(;o<e.length&&e[o].x<t[0].x;){let l=e[o++];s[r++].e(l.x,l.y+i)}for(;n<t.length;){let l=t[n++];s[r++].e(l.x,l.y)}let a=t[t.length-1].x;for(;o<e.length&&e[o].x<=a;)o++;for(;o<e.length&&e[o].x>a;){let l=e[o++];s[r++].e(l.x,l.y+i)}let h=this.pi(r);for(n=0;n<r;n++)h[n].h(s[n]);return this.un(s),h}yU(t,e,i){if(t===null||t.length<2||e===null||e.length<2)return null;let s=this.pi(t.length+e.length),n=0,o=0,r=0;for(;o<e.length&&e[o].y<t[0].y;){let l=e[o++];s[r++].e(l.x+i,l.y)}for(;n<t.length;){let l=t[n++];s[r++].e(l.x,l.y)}let a=t[t.length-1].y;for(;o<e.length&&e[o].y<=a;)o++;for(;o<e.length&&e[o].y>a;){let l=e[o++];s[r++].e(l.x+i,l.y)}let h=this.pi(r);for(n=0;n<r;n++)h[n].h(s[n]);return this.un(s),h}kU(t,e,i){if(t===null||t.length<2||e===null||e.length<2)return null;let s=this.pi(t.length+e.length),n=0,o=0,r=0;for(;n<t.length&&t[n].x<e[0].x;){let l=t[n++];s[r++].e(l.x,l.y)}for(;o<e.length;){let l=e[o++];s[r++].e(l.x,l.y+i)}let a=e[e.length-1].x;for(;n<t.length&&t[n].x<=a;)n++;for(;n<t.length&&t[n].x>a;){let l=t[n++];s[r++].e(l.x,l.y)}let h=this.pi(r);for(n=0;n<r;n++)h[n].h(s[n]);return this.un(s),h}wU(t,e,i){if(t===null||t.length<2||e===null||e.length<2)return null;let s=this.pi(t.length+e.length),n=0,o=0,r=0;for(;n<t.length&&t[n].y<e[0].y;){let l=t[n++];s[r++].e(l.x,l.y)}for(;o<e.length;){let l=e[o++];s[r++].e(l.x+i,l.y)}let a=e[e.length-1].y;for(;n<t.length&&t[n].y<=a;)n++;for(;n<t.length&&t[n].y>a;){let l=t[n++];s[r++].e(l.x,l.y)}let h=this.pi(r);for(n=0;n<r;n++)h[n].h(s[n]);return this.un(s),h}xU(t,e,i){let s=9999999;if(t===null||t.length<2||e===null||e.length<2)return s;let n=0,o=0;for(;n<t.length&&o<e.length;){let r=t[n],a=e[o],h=a.x,l=a.y;l+=i;let u=r;n+1<t.length&&(u=t[n+1]);let c=a,d=c.x,f=c.y;o+1<e.length&&(c=e[o+1],d=c.x,f=c.y,f+=i);let p=s;r.x===h?p=l-r.y:r.x>h&&r.x<d?p=l+(r.x-h)/(d-h)*(f-l)-r.y:h>r.x&&h<u.x&&(p=l-(r.y+(h-r.x)/(u.x-r.x)*(u.y-r.y))),p<s&&(s=p),u.x<=r.x?n++:d<=h?o++:(u.x<=d&&n++,d<=u.x&&o++)}return s}pU(t,e,i){let s=9999999;if(t===null||t.length<2||e===null||e.length<2)return s;let n=0,o=0;for(;n<t.length&&o<e.length;){let r=t[n],a=e[o],h=a.x,l=a.y;h+=i;let u=r;n+1<t.length&&(u=t[n+1]);let c=a,d=c.x,f=c.y;o+1<e.length&&(c=e[o+1],d=c.x,f=c.y,d+=i);let p=s;r.y===l?p=h-r.x:r.y>l&&r.y<f?p=h+(r.y-l)/(f-l)*(d-h)-r.x:l>r.y&&l<u.y&&(p=h-(r.x+(l-r.y)/(u.y-r.y)*(u.x-r.x))),p<s&&(s=p),u.y<=r.y?n++:f<=l?o++:(u.y<=f&&n++,f<=u.y&&o++)}return s}pi(t){let e=this.lP[t];if(e!==void 0){let s=e.pop();if(s!==void 0)return s}let i=[];for(let s=0;s<t;s++)i[s]=new P;return i}un(t){if(!t)return;let e=t.length,i=this.lP[e];i===void 0&&(i=[],this.lP[e]=i),i.push(t)}arrangeTrees(){if(this.He===52){let t=this.Ie.iterator;for(;t.next();){let e=t.value;if(!(e instanceof Rt))continue;let i=e.node;if(i===null)continue;let s=i.position,n=s.x,o=s.y;isFinite(n)||(n=0),isFinite(o)||(o=0),this.SL(e,n,o)}}else{let t=[],e=this.Ie.iterator;for(;e.next();){let o=e.value;o instanceof Rt&&t.push(o)}switch(this.sorting){default:case 10:break;case 11:t.reverse();break;case 12:t.sort(this.comparer);break;case 13:t.sort(this.comparer),t.reverse();break}let i=this.arrangementOrigin,s=i.x,n=i.y;for(let o=0;o<t.length;o++){let r=t[o];switch(this.SL(r,s+r.at.x,n+r.at.y),this.He){case 50:n+=r.dt.height+this.Us.height;break;default:case 51:s+=r.dt.width+this.Us.width;break}}}}SL(t,e,i){if(t===null)return;t.x=e,t.y=i;let s=t.children,n=s.length;for(let o=0;o<n;o++){let r=s[o];this.SL(r,e+r.U.x,i+r.U.y)}}commitLayout(){this.ww(),this.commitNodes(),this.pL(),this.isRouting&&this.commitLinks()}commitNodes(){if(this.network===null)return;let t=this.network.vertexes.iterator;for(;t.next();)t.value.commit();for(t.reset();t.next();){let e=t.value;this.layoutComments(e)}}pL(){if(this.network===null||this.layerStyle!==62)return;let t=this.yL,e=[],i,s=this.network.vertexes.iterator;for(;s.next();){let h=s.value;i===void 0?i=h.bounds.copy():i.unionRect(h.bounds);let l=e[h.level];l===void 0?l=this.computeLayerSpacing(h):l=Math.max(l,this.computeLayerSpacing(h)),e[h.level]=l}if(!i)return;for(let h=0;h<e.length;h++)e[h]===void 0&&(e[h]=0);let n;this.angle===90||this.angle===270?(i.inflate(this.nodeSpacing/2,this.layerSpacing),n=new P(-this.nodeSpacing/2,-this.layerSpacing/2)):(i.inflate(this.layerSpacing,this.nodeSpacing/2),n=new P(-this.layerSpacing/2,-this.nodeSpacing/2));let o=[],r=this.angle===90||this.angle===270?i.width:i.height,a=0;if(this.angle===180||this.angle===270)for(let h=0;h<t.length;h++)a+=t[h]+e[h];for(let h=0;h<t.length;h++){let l=t[h]+e[h];this.angle===270?(a-=l,o.push(new I(0,a,r,l))):this.angle===90?(o.push(new I(0,a,r,l)),a+=l):this.angle===180?(a-=l,o.push(new I(a,0,l,r))):(o.push(new I(a,0,l,r)),a+=l)}this.commitLayers(o,n)}commitLayers(t,e){}commitLinks(){if(this.network===null)return;let t=this.network.edges.iterator;for(;t.next();)t.value.commit()}ww(){let t=this.Ie.iterator;for(;t.next();){let e=t.value;e instanceof Rt&&this.VF(e)}}VF(t){if(t===null)return;this.setPortSpots(t);let e=t.children,i=e.length;for(let s=0;s<i;s++){let n=e[s];this.VF(n)}}setPortSpots(t){let e=t.alignment;if(this.isBusAlignment(e))this.PU(t,e);else{let i=this.orthoAngle(t);if(this.ws===1){let s=t.destinationEdges;for(;s.next();){let n=s.value.link;if(n!==null){if(t.setsPortSpot)if(t.portSpot.isDefault())switch(i){case 0:n.fromSpot=T.MiddleRight;break;case 90:n.fromSpot=T.MiddleBottom;break;case 180:n.fromSpot=T.MiddleLeft;break;default:n.fromSpot=T.MiddleTop;break}else n.fromSpot=t.portSpot;if(t.setsChildPortSpot)if(t.childPortSpot.isDefault())switch(i){case 0:n.toSpot=T.MiddleLeft;break;case 90:n.toSpot=T.MiddleTop;break;case 180:n.toSpot=T.MiddleRight;break;default:n.toSpot=T.MiddleBottom;break}else n.toSpot=t.childPortSpot}}}else{let s=t.sourceEdges;for(;s.next();){let n=s.value.link;if(n!==null){if(t.setsPortSpot)if(t.portSpot.isDefault())switch(i){case 0:n.toSpot=T.MiddleRight;break;case 90:n.toSpot=T.MiddleBottom;break;case 180:n.toSpot=T.MiddleLeft;break;default:n.toSpot=T.MiddleTop;break}else n.toSpot=t.portSpot;if(t.setsChildPortSpot)if(t.childPortSpot.isDefault())switch(i){case 0:n.fromSpot=T.MiddleLeft;break;case 90:n.fromSpot=T.MiddleTop;break;case 180:n.fromSpot=T.MiddleRight;break;default:n.fromSpot=T.MiddleBottom;break}else n.fromSpot=t.childPortSpot}}}}}PU(t,e){let i=this.ws===1,s=this.orthoAngle(t),n;switch(s){case 0:n=T.MiddleRight;break;case 90:n=T.MiddleBottom;break;case 180:n=T.MiddleLeft;break;default:n=T.MiddleTop;break}let o=t.children,r=o.length;switch(e){case 24:case 25:{for(let a=0;a<r;a++){let h=o[a],l=(i?h.sourceEdges:h.destinationEdges).first();if(l===null)continue;let u=l.link;if(u!==null){let c=s===90||s===270?T.MiddleLeft:T.MiddleTop;if(r===1||a===r-1&&r%2===1)switch(s){case 0:c=T.MiddleLeft;break;case 90:c=T.MiddleTop;break;case 180:c=T.MiddleRight;break;default:c=T.MiddleBottom;break}else a%2===0&&(c=s===90||s===270?T.MiddleRight:T.MiddleBottom);i?(t.setsPortSpot&&(u.fromSpot=n),t.setsChildPortSpot&&(u.toSpot=c)):(t.setsPortSpot&&(u.fromSpot=c),t.setsChildPortSpot&&(u.toSpot=n))}}break}case 26:{let a=s===90||s===270?T.MiddleRight:T.MiddleBottom,h=i?t.destinationEdges:t.sourceEdges;for(;h.next();){let l=h.value.link;l!==null&&(i?(t.setsPortSpot&&(l.fromSpot=n),t.setsChildPortSpot&&(l.toSpot=a)):(t.setsPortSpot&&(l.fromSpot=a),t.setsChildPortSpot&&(l.toSpot=n)))}break}case 27:{let a=s===90||s===270?T.MiddleLeft:T.MiddleTop,h=i?t.destinationEdges:t.sourceEdges;for(;h.next();){let l=h.value.link;l!==null&&(i?(t.setsPortSpot&&(l.fromSpot=n),t.setsChildPortSpot&&(l.toSpot=a)):(t.setsPortSpot&&(l.fromSpot=a),t.setsChildPortSpot&&(l.toSpot=n)))}break}}}orthoAngle(t){let e=t.angle;return e<=45?0:e<=135?90:e<=225?180:e<=315?270:0}computeLayerSpacing(t){let e=this.orthoAngle(t),i=e===90||e===270,s=t.layerSpacing;if(t.layerSpacingParentOverlap>0){let n=Math.min(1,t.layerSpacingParentOverlap);s-=i?t.height*n:t.width*n}return s<(i?-t.height:-t.width)&&(s=i?-t.height:-t.width),s}computeNodeIndent(t){let e=this.orthoAngle(t),i=e===90||e===270,s=t.nodeIndent;if(t.nodeIndentPastParent>0){let n=Math.min(1,t.nodeIndentPastParent);s+=i?t.width*n:t.height*n}return s=Math.max(0,s),s}get roots(){return this.Ie}set roots(t){this.Ie!==t&&(this.Ie=t,this.p())}get path(){return this.Re}set path(t){this.Re!==t&&(this.Re=t,this.p())}get treeStyle(){return this.wu}set treeStyle(t){this.wu!==t&&(t===40||t===42||t===41||t===43)&&(this.wu=t,this.p())}get layerStyle(){return this.Jg}set layerStyle(t){this.Jg!==t&&(t===60||t===61||t===62)&&(this.Jg=t,this.p())}get comments(){return this.Gi}set comments(t){this.Gi!==t&&(m.s(t,"boolean",Vt,"comments"),this.Gi=t,this.p())}get arrangement(){return this.He}set arrangement(t){this.He!==t&&(t===50||t===51||t===52)&&(this.He=t,this.p())}get arrangementSpacing(){return this.Us}set arrangementSpacing(t){this.Us.equals(t)||(this.Us.h(t),this.p())}get rootDefaults(){return this.V}set rootDefaults(t){this.V!==t&&(this.V=t,this.p())}get alternateDefaults(){return this.B}set alternateDefaults(t){this.B!==t&&(this.B=t,this.p())}get sorting(){return this.V.sorting}set sorting(t){this.V.sorting!==t&&(this.V.sorting=t,this.p())}get comparer(){return this.V.comparer}set comparer(t){this.V.comparer!==t&&(m.S(t,Vt,"comparer"),this.V.comparer=t,this.p())}get angle(){return this.V.angle}set angle(t){this.V.angle!==t&&(m.s(t,"number",Vt,"angle"),t===0||t===90||t===180||t===270?(this.V.angle=t,this.p()):m.o("TreeLayout.angle must be 0, 90, 180, or 270"))}get alignment(){return this.V.alignment}set alignment(t){this.V.alignment!==t&&(this.V.alignment=t,this.p())}get nodeIndent(){return this.V.nodeIndent}set nodeIndent(t){this.V.nodeIndent!==t&&(m.s(t,"number",Vt,"nodeIndent"),t>=0&&(this.V.nodeIndent=t,this.p()))}get nodeIndentPastParent(){return this.V.nodeIndentPastParent}set nodeIndentPastParent(t){this.V.nodeIndentPastParent!==t&&(m.s(t,"number",Vt,"nodeIndentPastParent"),t>=0&&t<=1&&(this.V.nodeIndentPastParent=t,this.p()))}get nodeSpacing(){return this.V.nodeSpacing}set nodeSpacing(t){this.V.nodeSpacing!==t&&(m.s(t,"number",Vt,"nodeSpacing"),this.V.nodeSpacing=t,this.p())}get layerSpacing(){return this.V.layerSpacing}set layerSpacing(t){this.V.layerSpacing!==t&&(m.s(t,"number",Vt,"layerSpacing"),this.V.layerSpacing=t,this.p())}get layerSpacingParentOverlap(){return this.V.layerSpacingParentOverlap}set layerSpacingParentOverlap(t){this.V.layerSpacingParentOverlap!==t&&(m.s(t,"number",Vt,"layerSpacingParentOverlap"),t>=0&&t<=1&&(this.V.layerSpacingParentOverlap=t,this.p()))}get compaction(){return this.V.compaction}set compaction(t){this.V.compaction!==t&&(t===30||t===31)&&(this.V.compaction=t,this.p())}get breadthLimit(){return this.V.breadthLimit}set breadthLimit(t){this.V.breadthLimit!==t&&(m.s(t,"number",Vt,"breadthLimit"),t>=0&&(this.V.breadthLimit=t,this.p()))}get rowSpacing(){return this.V.rowSpacing}set rowSpacing(t){this.V.rowSpacing!==t&&(m.s(t,"number",Vt,"rowSpacing"),this.V.rowSpacing=t,this.p())}get rowIndent(){return this.V.rowIndent}set rowIndent(t){this.V.rowIndent!==t&&(m.s(t,"number",Vt,"rowIndent"),t>=0&&(this.V.rowIndent=t,this.p()))}get commentSpacing(){return this.V.commentSpacing}set commentSpacing(t){this.V.commentSpacing!==t&&(m.s(t,"number",Vt,"commentSpacing"),this.V.commentSpacing=t,this.p())}get commentMargin(){return this.V.commentMargin}set commentMargin(t){this.V.commentMargin!==t&&(m.s(t,"number",Vt,"commentMargin"),this.V.commentMargin=t,this.p())}get setsPortSpot(){return this.V.setsPortSpot}set setsPortSpot(t){this.V.setsPortSpot!==t&&(m.s(t,"boolean",Vt,"setsPortSpot"),this.V.setsPortSpot=t,this.p())}get portSpot(){return this.V.portSpot}set portSpot(t){this.V.portSpot.equals(t)||(this.V.portSpot=t,this.p())}get setsChildPortSpot(){return this.V.setsChildPortSpot}set setsChildPortSpot(t){this.V.setsChildPortSpot!==t&&(m.s(t,"boolean",Vt,"setsChildPortSpot"),this.V.setsChildPortSpot=t,this.p())}get childPortSpot(){return this.V.childPortSpot}set childPortSpot(t){this.V.childPortSpot.equals(t)||(this.V.childPortSpot=t,this.p())}get alternateSorting(){return this.B.sorting}set alternateSorting(t){this.B.sorting!==t&&(this.B.sorting=t,this.p())}get alternateComparer(){return this.B.comparer}set alternateComparer(t){this.B.comparer!==t&&(m.S(t,Vt,"alternateComparer"),this.B.comparer=t,this.p())}get alternateAngle(){return this.B.angle}set alternateAngle(t){this.B.angle!==t&&(m.s(t,"number",Vt,"alternateAngle"),(t===0||t===90||t===180||t===270)&&(this.B.angle=t,this.p()))}get alternateAlignment(){return this.B.alignment}set alternateAlignment(t){this.B.alignment!==t&&(this.B.alignment=t,this.p())}get alternateNodeIndent(){return this.B.nodeIndent}set alternateNodeIndent(t){this.B.nodeIndent!==t&&(m.s(t,"number",Vt,"alternateNodeIndent"),t>=0&&(this.B.nodeIndent=t,this.p()))}get alternateNodeIndentPastParent(){return this.B.nodeIndentPastParent}set alternateNodeIndentPastParent(t){this.B.nodeIndentPastParent!==t&&(m.s(t,"number",Vt,"alternateNodeIndentPastParent"),t>=0&&t<=1&&(this.B.nodeIndentPastParent=t,this.p()))}get alternateNodeSpacing(){return this.B.nodeSpacing}set alternateNodeSpacing(t){this.B.nodeSpacing!==t&&(m.s(t,"number",Vt,"alternateNodeSpacing"),this.B.nodeSpacing=t,this.p())}get alternateLayerSpacing(){return this.B.layerSpacing}set alternateLayerSpacing(t){this.B.layerSpacing!==t&&(m.s(t,"number",Vt,"alternateLayerSpacing"),this.B.layerSpacing=t,this.p())}get alternateLayerSpacingParentOverlap(){return this.B.layerSpacingParentOverlap}set alternateLayerSpacingParentOverlap(t){this.B.layerSpacingParentOverlap!==t&&(m.s(t,"number",Vt,"alternateLayerSpacingParentOverlap"),t>=0&&t<=1&&(this.B.layerSpacingParentOverlap=t,this.p()))}get alternateCompaction(){return this.B.compaction}set alternateCompaction(t){this.B.compaction!==t&&(t===30||t===31)&&(this.B.compaction=t,this.p())}get alternateBreadthLimit(){return this.B.breadthLimit}set alternateBreadthLimit(t){this.B.breadthLimit!==t&&(m.s(t,"number",Vt,"alternateBreadthLimit"),t>=0&&(this.B.breadthLimit=t,this.p()))}get alternateRowSpacing(){return this.B.rowSpacing}set alternateRowSpacing(t){this.B.rowSpacing!==t&&(m.s(t,"number",Vt,"alternateRowSpacing"),this.B.rowSpacing=t,this.p())}get alternateRowIndent(){return this.B.rowIndent}set alternateRowIndent(t){this.B.rowIndent!==t&&(m.s(t,"number",Vt,"alternateRowIndent"),t>=0&&(this.B.rowIndent=t,this.p()))}get alternateCommentSpacing(){return this.B.commentSpacing}set alternateCommentSpacing(t){this.B.commentSpacing!==t&&(m.s(t,"number",Vt,"alternateCommentSpacing"),this.B.commentSpacing=t,this.p())}get alternateCommentMargin(){return this.B.commentMargin}set alternateCommentMargin(t){this.B.commentMargin!==t&&(m.s(t,"number",Vt,"alternateCommentMargin"),this.B.commentMargin=t,this.p())}get alternateSetsPortSpot(){return this.B.setsPortSpot}set alternateSetsPortSpot(t){this.B.setsPortSpot!==t&&(m.s(t,"boolean",Vt,"alternateSetsPortSpot"),this.B.setsPortSpot=t,this.p())}get alternatePortSpot(){return this.B.portSpot}set alternatePortSpot(t){this.B.portSpot.equals(t)||(this.B.portSpot=t,this.p())}get alternateSetsChildPortSpot(){return this.B.setsChildPortSpot}set alternateSetsChildPortSpot(t){this.B.setsChildPortSpot!==t&&(m.s(t,"boolean",Vt,"alternateSetsChildPortSpot"),this.B.setsChildPortSpot=t,this.p())}get alternateChildPortSpot(){return this.B.childPortSpot}set alternateChildPortSpot(t){this.B.childPortSpot.equals(t)||(this.B.childPortSpot=t,this.p())}static PathDefault=0;static PathDestination=1;static PathSource=2;static SortingForwards=10;static SortingReverse=11;static SortingAscending=12;static SortingDescending=13;static AlignmentCenterSubtrees=20;static AlignmentCenterChildren=21;static AlignmentStart=22;static AlignmentEnd=23;static AlignmentBus=24;static AlignmentBusBranching=25;static AlignmentTopLeftBus=26;static AlignmentBottomRightBus=27;static CompactionNone=30;static CompactionBlock=31;static StyleLayered=40;static StyleLastParents=41;static StyleAlternating=42;static StyleRootOnly=43;static ArrangementVertical=50;static ArrangementHorizontal=51;static ArrangementFixedRoots=52;static LayerIndividual=60;static LayerSiblings=61;static LayerUniform=62}class gs extends Re{constructor(t){super(t)}createVertex(){return new Rt(this)}createEdge(){return new sn(this)}}class Rt extends Ee{U;dt;at;fP;uP;dP;gP;mP;pP;yP;Gi;$g;Zg;Si;Mi;Xt;de;Aw;Tw;Dw;Vs;vw;Fw;Rw;Ow;Iw;Ew;Uw;Vw;Bw;zw;Xw;constructor(t){super(t),this.fP=!1,this.uP=null,this.dP=[],this.gP=0,this.mP=0,this.pP=0,this.yP=0,this.Gi=null,this.U=new P(0,0),this.dt=new nt(0,0),this.at=new P(0,0),this.$g=null,this.Zg=null,this.Si=10,this.Mi=Ee.standardComparer,this.Xt=0,this.de=21,this.Aw=0,this.Tw=0,this.Dw=20,this.Vs=50,this.vw=0,this.Fw=31,this.Rw=0,this.Ow=25,this.Iw=10,this.Ew=10,this.Uw=20,this.Vw=!0,this.Bw=T.Default,this.zw=!0,this.Xw=T.Default}copyInheritedPropertiesFrom(t){t!==null&&(this.Si=t.sorting,this.Mi=t.comparer,this.Xt=t.angle,this.de=t.alignment,this.Aw=t.nodeIndent,this.Tw=t.nodeIndentPastParent,this.Dw=t.nodeSpacing,this.Vs=t.layerSpacing,this.vw=t.layerSpacingParentOverlap,this.Fw=t.compaction,this.Rw=t.breadthLimit,this.Ow=t.rowSpacing,this.Iw=t.rowIndent,this.Ew=t.commentSpacing,this.Uw=t.commentMargin,this.Vw=t.setsPortSpot,this.Bw=t.portSpot,this.zw=t.setsChildPortSpot,this.Xw=t.childPortSpot)}get initialized(){return this.fP}set initialized(t){this.fP!==t&&(m.s(t,"boolean",Rt,"initialized"),this.fP=t)}get parent(){return this.uP}set parent(t){this.uP!==t&&(this.uP=t)}get children(){return this.dP}set children(t){if(this.dP!==t){if(t!==null&&!Array.isArray(t)&&m.si(t,"Array",Rt,"children:value"),t!==null){let e=t.length;for(let i=0;i<e;i++){let s=t[i]}}this.dP=t}}get level(){return this.gP}set level(t){this.gP!==t&&(m.s(t,"number",Rt,"level"),this.gP=t)}get descendantCount(){return this.mP}set descendantCount(t){this.mP!==t&&(m.s(t,"number",Rt,"descendantCount"),this.mP=t)}get maxChildrenCount(){return this.pP}set maxChildrenCount(t){this.pP!==t&&(m.s(t,"number",Rt,"maxChildrenCount"),this.pP=t)}get maxGenerationCount(){return this.yP}set maxGenerationCount(t){this.yP!==t&&(m.s(t,"number",Rt,"maxGenerationCount"),this.yP=t)}get comments(){return this.Gi}set comments(t){if(this.Gi!==t){if(t!==null&&!Array.isArray(t)&&m.si(t,"Array",Rt,"comments:value"),t!==null){let e=t.length;for(let i=0;i<e;i++){let s=t[i]}}this.Gi=t}}get sorting(){return this.Si}set sorting(t){this.Si!==t&&(this.Si=t)}get comparer(){return this.Mi}set comparer(t){this.Mi!==t&&(m.S(t,Rt,"comparer"),this.Mi=t)}get angle(){return this.Xt}set angle(t){this.Xt!==t&&(m.s(t,"number",Rt,"angle"),this.Xt=t)}get alignment(){return this.de}set alignment(t){this.de!==t&&(this.de=t)}get nodeIndent(){return this.Aw}set nodeIndent(t){this.Aw!==t&&(m.s(t,"number",Rt,"nodeIndent"),this.Aw=t)}get nodeIndentPastParent(){return this.Tw}set nodeIndentPastParent(t){this.Tw!==t&&(m.s(t,"number",Rt,"nodeIndentPastParent"),this.Tw=t)}get nodeSpacing(){return this.Dw}set nodeSpacing(t){this.Dw!==t&&(m.s(t,"number",Rt,"nodeSpacing"),this.Dw=t)}get layerSpacing(){return this.Vs}set layerSpacing(t){this.Vs!==t&&(m.s(t,"number",Rt,"layerSpacing"),this.Vs=t)}get layerSpacingParentOverlap(){return this.vw}set layerSpacingParentOverlap(t){this.vw!==t&&(m.s(t,"number",Rt,"layerSpacingParentOverlap"),this.vw=t)}get compaction(){return this.Fw}set compaction(t){this.Fw!==t&&(this.Fw=t)}get breadthLimit(){return this.Rw}set breadthLimit(t){this.Rw!==t&&(m.s(t,"number",Rt,"breadthLimit"),this.Rw=t)}get rowSpacing(){return this.Ow}set rowSpacing(t){this.Ow!==t&&(m.s(t,"number",Rt,"rowSpacing"),this.Ow=t)}get rowIndent(){return this.Iw}set rowIndent(t){this.Iw!==t&&(m.s(t,"number",Rt,"rowIndent"),this.Iw=t)}get commentSpacing(){return this.Ew}set commentSpacing(t){this.Ew!==t&&(m.s(t,"number",Rt,"commentSpacing"),this.Ew=t)}get commentMargin(){return this.Uw}set commentMargin(t){this.Uw!==t&&(m.s(t,"number",Rt,"commentMargin"),this.Uw=t)}get setsPortSpot(){return this.Vw}set setsPortSpot(t){this.Vw!==t&&(m.s(t,"boolean",Rt,"setsPortSpot"),this.Vw=t)}get portSpot(){return this.Bw}set portSpot(t){this.Bw.equals(t)||(this.Bw=t)}get setsChildPortSpot(){return this.zw}set setsChildPortSpot(t){this.zw!==t&&(m.s(t,"boolean",Rt,"setsChildPortSpot"),this.zw=t)}get childPortSpot(){return this.Xw}set childPortSpot(t){this.Xw.equals(t)||(this.Xw=t)}get childrenCount(){return this.children.length}get relativePosition(){return this.U}set relativePosition(t){this.U.set(t)}get subtreeSize(){return this.dt}set subtreeSize(t){this.dt.set(t)}get subtreeOffset(){return this.at}set subtreeOffset(t){this.at.set(t)}}class sn extends ei{wP;constructor(t){super(t),this.wP=new P(0,0)}commit(){let t=this.link;if(t===null||t.isAvoiding)return;let e=this.network.layout,i=null,s=null;switch(e.ws){case 1:i=this.fromVertex,s=this.toVertex;break;case 2:i=this.toVertex,s=this.fromVertex;break;default:m.o("Unhandled path value "+e.ws.toString())}if(i===null||s===null)return;let n=this.wP;if(n.x===0&&n.y===0){this.SU(i,s);return}let o=i.bounds,r=e.orthoAngle(i),a=e.computeLayerSpacing(i),h=i.rowSpacing;t.updateRoute();let l=t.curve===9,u=t.isOrthogonal,c=0,d,f;if(t.startRoute(),u||l){for(c=2;t.pointsCount>4;)t.removePoint(2);d=t.getPoint(1),f=t.getPoint(2)}else{for(c=1;t.pointsCount>3;)t.removePoint(1);d=t.getPoint(0),f=t.getPoint(t.pointsCount-1)}let p=t.getPoint(t.pointsCount-1),g=0;r===0?(i.alignment===23?(g=o.bottom+n.y,n.y===0&&d.y>p.y+i.rowIndent&&(g=Math.min(g,Math.max(d.y,g-e.computeNodeIndent(i))))):i.alignment===22?(g=o.top+n.y,n.y===0&&d.y<p.y-i.rowIndent&&(g=Math.max(g,Math.min(d.y,g+e.computeNodeIndent(i))))):g=o.y+o.height/2+n.y,l?(t.insertPointAt(c,d.x,g),c++,t.insertPointAt(c,o.right+a,g),c++,t.insertPointAt(c,o.right+a+(n.x-h)/3,g),c++,t.insertPointAt(c,o.right+a+(n.x-h)*2/3,g),c++,t.insertPointAt(c,o.right+a+(n.x-h),g),c++,t.insertPointAt(c,f.x,g),c++):(u&&(t.insertPointAt(c,o.right+a/2,d.y),c++),t.insertPointAt(c,o.right+a/2,g),c++,t.insertPointAt(c,o.right+a+n.x-(u?h/2:h),g),c++,u&&(t.insertPointAt(c,t.getPoint(c-1).x,f.y),c++))):r===90?(i.alignment===23?(g=o.right+n.x,n.x===0&&d.x>p.x+i.rowIndent&&(g=Math.min(g,Math.max(d.x,g-e.computeNodeIndent(i))))):i.alignment===22?(g=o.left+n.x,n.x===0&&d.x<p.x-i.rowIndent&&(g=Math.max(g,Math.min(d.x,g+e.computeNodeIndent(i))))):g=o.x+o.width/2+n.x,l?(t.insertPointAt(c,g,d.y),c++,t.insertPointAt(c,g,o.bottom+a),c++,t.insertPointAt(c,g,o.bottom+a+(n.y-h)/3),c++,t.insertPointAt(c,g,o.bottom+a+(n.y-h)*2/3),c++,t.insertPointAt(c,g,o.bottom+a+(n.y-h)),c++,t.insertPointAt(c,g,f.y),c++):(u&&(t.insertPointAt(c,d.x,o.bottom+a/2),c++),t.insertPointAt(c,g,o.bottom+a/2),c++,t.insertPointAt(c,g,o.bottom+a+n.y-(u?h/2:h)),c++,u&&(t.insertPointAt(c,f.x,t.getPoint(c-1).y),c++))):r===180?(i.alignment===23?(g=o.bottom+n.y,n.y===0&&d.y>p.y+i.rowIndent&&(g=Math.min(g,Math.max(d.y,g-e.computeNodeIndent(i))))):i.alignment===22?(g=o.top+n.y,n.y===0&&d.y<p.y-i.rowIndent&&(g=Math.max(g,Math.min(d.y,g+e.computeNodeIndent(i))))):g=o.y+o.height/2+n.y,l?(t.insertPointAt(c,d.x,g),c++,t.insertPointAt(c,o.left-a,g),c++,t.insertPointAt(c,o.left-a+(n.x+h)/3,g),c++,t.insertPointAt(c,o.left-a+(n.x+h)*2/3,g),c++,t.insertPointAt(c,o.left-a+(n.x+h),g),c++,t.insertPointAt(c,f.x,g),c++):(u&&(t.insertPointAt(c,o.left-a/2,d.y),c++),t.insertPointAt(c,o.left-a/2,g),c++,t.insertPointAt(c,o.left-a+n.x+(u?h/2:h),g),c++,u&&(t.insertPointAt(c,t.getPoint(c-1).x,f.y),c++))):r===270?(i.alignment===23?(g=o.right+n.x,n.x===0&&d.x>p.x+i.rowIndent&&(g=Math.min(g,Math.max(d.x,g-e.computeNodeIndent(i))))):i.alignment===22?(g=o.left+n.x,n.x===0&&d.x<p.x-i.rowIndent&&(g=Math.max(g,Math.min(d.x,g+e.computeNodeIndent(i))))):g=o.x+o.width/2+n.x,l?(t.insertPointAt(c,g,d.y),c++,t.insertPointAt(c,g,o.top-a),c++,t.insertPointAt(c,g,o.top-a+(n.y+h)/3),c++,t.insertPointAt(c,g,o.top-a+(n.y+h)*2/3),c++,t.insertPointAt(c,g,o.top-a+(n.y+h)),c++,t.insertPointAt(c,g,f.y),c++):(u&&(t.insertPointAt(c,d.x,o.top-a/2),c++),t.insertPointAt(c,g,o.top-a/2),c++,t.insertPointAt(c,g,o.top-a+n.y+(u?h/2:h)),c++,u&&(t.insertPointAt(c,f.x,t.getPoint(c-1).y),c++))):m.o("Invalid angle "+r),t.commitRoute()}SU(t,e){let i=this.link;if(i===null)return;let s=this.network.layout,n=s.orthoAngle(t),o=s.orthoAngle(e);if(n===o)return;let r=s.computeLayerSpacing(t),a=t.bounds,h=e.bounds;if(n===0&&h.left-a.right<r+1||n===90&&h.top-a.bottom<r+1||n===180&&a.left-h.right<r+1||n===270&&a.top-h.bottom<r+1)return;i.updateRoute();let l=i.curve===9,u=i.isOrthogonal,c=this.fromVertex,d=s.isBusAlignment(c.alignment);if(i.startRoute(),n===0){let f=a.right+r/2;if(l){if(i.pointsCount===4){let p=i.getPoint(3).y;i.setPointAt(1,f-20,i.getPoint(1).y),i.insertPointAt(2,f-20,p),i.insertPointAt(3,f,p),i.insertPointAt(4,f+20,p),i.setPointAt(5,i.getPoint(5).x,p)}}else u?d?i.setPointAt(3,i.getPoint(2).x,i.getPoint(4).y):i.pointsCount===6&&(i.setPointAt(2,f,i.getPoint(2).y),i.setPointAt(3,f,i.getPoint(3).y)):i.pointsCount===4?i.insertPointAt(2,f,i.getPoint(2).y):i.pointsCount===3?i.setPointAt(1,f,i.getPoint(2).y):i.pointsCount===2&&i.insertPointAt(1,f,i.getPoint(1).y)}else if(n===90){let f=a.bottom+r/2;if(l){if(i.pointsCount===4){let p=i.getPoint(3).x;i.setPointAt(1,i.getPoint(1).x,f-20),i.insertPointAt(2,p,f-20),i.insertPointAt(3,p,f),i.insertPointAt(4,p,f+20),i.setPointAt(5,p,i.getPoint(5).y)}}else u?d?i.setPointAt(3,i.getPoint(2).x,i.getPoint(4).y):i.pointsCount===6&&(i.setPointAt(2,i.getPoint(2).x,f),i.setPointAt(3,i.getPoint(3).x,f)):i.pointsCount===4?i.insertPointAt(2,i.getPoint(2).x,f):i.pointsCount===3?i.setPointAt(1,i.getPoint(2).x,f):i.pointsCount===2&&i.insertPointAt(1,i.getPoint(1).x,f)}else if(n===180){let f=a.left-r/2;if(l){if(i.pointsCount===4){let p=i.getPoint(3).y;i.setPointAt(1,f+20,i.getPoint(1).y),i.insertPointAt(2,f+20,p),i.insertPointAt(3,f,p),i.insertPointAt(4,f-20,p),i.setPointAt(5,i.getPoint(5).x,p)}}else u?d?i.setPointAt(3,i.getPoint(2).x,i.getPoint(4).y):i.pointsCount===6&&(i.setPointAt(2,f,i.getPoint(2).y),i.setPointAt(3,f,i.getPoint(3).y)):i.pointsCount===4?i.insertPointAt(2,f,i.getPoint(2).y):i.pointsCount===3?i.setPointAt(1,f,i.getPoint(2).y):i.pointsCount===2&&i.insertPointAt(1,f,i.getPoint(1).y)}else if(n===270){let f=a.top-r/2;if(l){if(i.pointsCount===4){let p=i.getPoint(3).x;i.setPointAt(1,i.getPoint(1).x,f+20),i.insertPointAt(2,p,f+20),i.insertPointAt(3,p,f),i.insertPointAt(4,p,f-20),i.setPointAt(5,p,i.getPoint(5).y)}}else u?d?i.setPointAt(3,i.getPoint(2).x,i.getPoint(4).y):i.pointsCount===6&&(i.setPointAt(2,i.getPoint(2).x,f),i.setPointAt(3,i.getPoint(3).x,f)):i.pointsCount===4?i.insertPointAt(2,i.getPoint(2).x,f):i.pointsCount===3?i.setPointAt(1,i.getPoint(2).x,f):i.pointsCount===2&&i.insertPointAt(1,i.getPoint(1).x,f)}i.commitRoute()}get fromVertex(){return this.is}set fromVertex(t){this.is!==t&&(this.is=t)}get toVertex(){return this.ss}set toVertex(t){this.ss!==t&&(this.ss=t)}get relativePoint(){return this.wP}set relativePoint(t){this.wP.set(t)}}class we{constructor(){}static Light={colors:{text:"#0a0a0a",comment:"#ca8a04",link:"#0a0a0a",group:"#a3a3a344",outline:"#a3a3a3",selection:"#0ea5e9",div:"#fff",gridMinor:"#e5e5e5",gridMajor:"#a3a3a3",overviewBox:"#c026d3",tempLink:"#2563eb",tempPort:"#c026d3",adornmentFill:"#0ea5e9",adornmentStroke:"#1e40af",dragSelect:"#c026d3"},fonts:{normal:"10pt sans-serif",bold:"bold 12pt sans-serif"},numbers:{group:1,selection:3},margins:{group:new Dt(5)},arrowheads:{toArrow:"Standard"}};static Dark={colors:{text:"#f5f5f5",comment:"#facc15",link:"#f5f5f5",group:"#a3a3a388",outline:"#a3a3a3",selection:"#38bdf8",div:"#171717",gridMinor:"#262626",gridMajor:"#404040",overviewBox:"#e879f9",tempLink:"#60a5fa",tempPort:"#e879f9",adornmentFill:"#38bdf8",adornmentStroke:"#2563eb",dragSelect:"#e879f9"},fonts:{normal:"10pt sans-serif",bold:"bold 12pt sans-serif"},numbers:{group:1,selection:3},margins:{group:new Dt(5)},arrowheads:{toArrow:"Standard"}}}class je{hs=new Set;bu=new Mt;xP="light";bP="light";kP=!1;ML=!0;Qg="light";BF=t=>{let e=t.matches?"dark":"light";e!==this.Qg&&(this.Qg=e,this.bP==="system"&&this.updateDiagrams())};constructor(t){t&&Object.assign(this,t),t?.themeMap||(this.bu.set("light",{colors:{...we.Light.colors},fonts:{...we.Light.fonts},numbers:{...we.Light.numbers},margins:{...we.Light.margins},arrowheads:{...we.Light.arrowheads}}),this.bu.set("dark",{colors:{...we.Dark.colors},fonts:{...we.Dark.fonts},numbers:{...we.Dark.numbers},margins:{...we.Dark.margins},arrowheads:{...we.Dark.arrowheads}})),K.matchMedia&&(this.Qg=K.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")}get themeMap(){return this.bu}set themeMap(t){this.bu!==t&&(this.bu=t,this.updateDiagrams())}get defaultTheme(){return this.xP}set defaultTheme(t){this.xP!==t&&(m.s(t,"string",je,"defaultTheme"),this.xP=t,this.updateDiagrams())}get currentTheme(){return this.bP}set currentTheme(t){this.bP!==t&&(m.s(t,"string",je,"currentTheme"),this.bP=t,this.updateDiagrams())}get changesDivBackground(){return this.kP}set changesDivBackground(t){if(this.kP!==t&&(this.kP=t,t))for(let e of this.hs)e.setDivBackground(this.findValue("div","","fill")),e.T("ThemeChanged",this)}get readsCssVariables(){return this.ML}set readsCssVariables(t){this.ML!==t&&(this.ML=t,this.updateDiagrams())}get preferredColorScheme(){return this.Qg}addDiagram(t){return this.hs.add(t),this.CL(t),this}removeDiagram(t){return this.hs.delete(t),this.CL(t),this}eO(){this.hs.size===0&&K.matchMedia&&K.matchMedia("(prefers-color-scheme: dark)")?.addEventListener("change",this.BF)}iO(){this.hs.size===0&&K.matchMedia&&K.matchMedia("(prefers-color-scheme: dark)")?.removeEventListener("change",this.BF)}set(t,e){t===""&&(t=this.xP),t==="system"&&(t=this.Qg);let i=this.bu.get(t);return i?i=this.zF(i,e):i=e,this.bu.set(t,i),this.updateDiagrams(),this}findValue(t,e,i){return this.getValue(this.findTheme(this.currentTheme),t,e,i)||this.getValue(this.findTheme(this.defaultTheme),t,e,i)}getValue(t,e,i,s){if(!t)return;i==null&&(i="");let n=t,o=a=>{if(n===void 0||a==="")return;if(typeof a=="number"||!(Array.isArray(a)||a.includes(".")))return n[a];let h=Array.isArray(a)?a:a.split(".");for(let l=0;l<h.length;l++){let u=h[l];if(u!==""&&(n=n[u],n===void 0))return}return n},r=()=>{if(!(i!==""&&(n=o(i),n===void 0)))return Array.isArray(n)&&typeof e=="number"?n=n[e%n.length]:n=o(e),n};if(n=r(),n===void 0&&typeof s=="string"&&s.length>0){let a=t.targetPropertyMap?.get(s);if(a?n=t[a]:(a=je.MU.get(s),n=a?t[a]:t.colors),n=r(),n!==void 0)return n}return n}findTheme(t){return this.themeMap.get(t==="system"?this.Qg:t)}updateDiagrams(){for(let t of this.hs)this.CL(t)}CL(t){let e=t.skipsUndoManager;t.skipsUndoManager=!0,t.updateAllThemeBindings(),this.kP&&t.setDivBackground(this.findValue("div","","fill")),t.skipsUndoManager=e,t.T("ThemeChanged",this)}zF(t,e){for(let i in e)if(m.Gw(e,i))try{e[i]?.constructor===Object?t[i]=this.zF(t[i]??{},e[i]):t[i]=e[i]}catch{delete t[i]}return t}static MU=new Map([["background","colors"],["defaultColumnSeparatorStroke","colors"],["defaultRowSeparatorStroke","colors"],["shadowColor","colors"],["fill","colors"],["stroke","colors"],["font","fonts"],["angle","numbers"],["fromEndSegmentLength","numbers"],["fromShortLength","numbers"],["height","numbers"],["opacity","numbers"],["scale","numbers"],["toEndSegmentLength","numbers"],["toShortLength","numbers"],["width","numbers"],["defaultColumnSeparatorStrokeWidth","numbers"],["defaultRowSeparatorStrokeWidth","numbers"],["shadowBlur","numbers"],["corner","numbers"],["curviness","numbers"],["smoothness","numbers"],["parameter1","numbers"],["parameter2","numbers"],["strokeWidth","numbers"],["strokeDashOffset","numbers"],["maxLines","numbers"],["spacingAbove","numbers"],["spacingBelow","numbers"],["position","points"],["shadowOffset","points"],["desiredSize","sizes"],["maxSize","sizes"],["minSize","sizes"],["margin","margins"],["defaultSeparatorPadding","margins"],["padding","margins"],["alignment","spots"],["alignmentFocus","spots"],["fromSpot","spots"],["toSpot","spots"],["defaultAlignment","spots"],["spot1","spots"],["spot2","spots"],["verticalAlignment","spots"],["imageAlignment","spots"],["fromArrow","arrowheads"],["toArrow","arrowheads"]])}class nn{Pt;a;Be;Pl;constructor(){this.a=Y.Fm(),this.Pt="",this.Be=!0,this.Pl=!0}get name(){return this.Pt}set name(t){this.Pt=t}get isEnabled(){return this.Be}set isEnabled(t){this.Be=t}get isRealtime(){return this.Pl}set isRealtime(t){this.Pl=t}get diagram(){return this.a}set diagram(t){this.a!==t&&(this.a=t,t.Ol=!0,t.requestUpdate())}invalidateRouter(){this.a!==null&&(this.a.Ol=!0,this.a.requestUpdate())}canRoute(t){if(!this.isEnabled)return!1;let e=this.diagram;return!(e&&(!this.isRealtime&&e.Iu||e.animationManager.isTicking))}isRoutable(t,e){return!0}routeLinks(t,e){}toString(){return this.name!==""?this.name+" Router":m.Yn(this.constructor)}}class _n extends nn{constructor(t){super(),this.name="AvoidsNodes",t&&Object.assign(this,t)}canRoute(t){return(t instanceof Y?t.sp:t.diagram?.sp)?super.canRoute(t):!1}isRoutable(t,e){return!(!t.isAvoiding||t.containingGroup!==(e instanceof ht?e:null)||t.toNode===null||t.fromNode===null||t.pointsCount<4)}routeLinks(t,e){let i=e instanceof Y?null:e,s=t.iterator,n=this.diagram.getPositions(!0,i,null);for(;s.next();){let o=s.value;if(!this.isRoutable(o,e))continue;o.startRoute();let r=o.pointsCount,a=o.getPoint(1),h=o.getPoint(r-2),l=o.fromNode.actualBounds.copy();l.inflate(j.va,j.va),l.unionPoint(o.getPoint(0));let u=o.toNode.actualBounds.copy();u.inflate(j.va,j.va),u.unionPoint(o.getPoint(r-1)),this.CU(o,l,u,n)&&this.NU(o,a,o.kN,h,o.PN,l,u,n),o.commitRoute()}}CU(t,e,i,s){let n=t.diagram,o=t.pointsCount;if(n===null||!t.fromNode||!t.toNode||t.fromNode===t.toNode||!t.layer||t.layer.isTemporary||e.containsPoint(t.getPoint(o-1))&&!t.toNode.isMemberOf(t.fromNode)||i.containsPoint(t.getPoint(0))&&!t.fromNode.isMemberOf(t.toNode)||!t.isOrthogonal)return!1;if(t.segmentIndex===17)return!0;let r=t.getPoint(1),a=t.getPoint(o-2),h=t.getPoint(2);if(!s.isUnoccupied(Math.min(r.x,h.x),Math.min(r.y,h.y),Math.abs(r.x-h.x),Math.abs(r.y-h.y)))return!0;for(let u=2;u<o-3;u++){let c=t.getPoint(u),d=t.getPoint(u+1);if(!s.isUnoccupied(Math.min(c.x,d.x),Math.min(c.y,d.y),Math.abs(c.x-d.x),Math.abs(c.y-d.y)))return!0}let l=t.getPoint(o-3);return!s.isUnoccupied(Math.min(l.x,a.x),Math.min(l.y,a.y),Math.abs(l.x-a.x),Math.abs(l.y-a.y))}NU(t,e,i,s,n,o,r,a){let h=t.diagram;if(h===null)return;let l=e,u=s,c=P.mn,d=P.mn;if(h.isVirtualized){let g=a.bounds.copy(),y=t.getPoint(2),b=t.getPoint(t.pointsCount-3);g.inflate(-a.cellWidth,-a.cellHeight);let v=P.l();a.og(e.x,e.y)||(C.Al(g.x,g.y,g.x+g.width,g.y+g.height,e.x,e.y,y.x,y.y,v)?(c=e=v.copy(),i=v.directionPoint(y)):C.Al(g.x,g.y,g.x+g.width,g.y+g.height,y.x,y.y,b.x,b.y,v)?(c=e=v.copy(),i=v.directionPoint(b)):C.Al(g.x,g.y,g.x+g.width,g.y+g.height,b.x,b.y,s.x,s.y,v)&&(c=e=v.copy(),i=v.directionPoint(s))),a.og(s.x,s.y)||(C.Al(g.x,g.y,g.x+g.width,g.y+g.height,s.x,s.y,b.x,b.y,v)?(d=s=v.copy(),n=b.directionPoint(v)):C.Al(g.x,g.y,g.x+g.width,g.y+g.height,b.x,b.y,y.x,y.y,v)?(d=s=v.copy(),n=y.directionPoint(v)):C.Al(g.x,g.y,g.x+g.width,g.y+g.height,y.x,y.y,e.x,e.y,v)&&(d=s=v.copy(),n=e.directionPoint(v))),P.i(v)}let f=o.copy().unionRect(r);f.inflate(a.cellWidth*a.cf,a.cellHeight*a.cf),a.yv(e,i,s,n,f,!0);let p=a.xo(s.x,s.y);if(!a.$y&&p>=Ot.ng&&(a.TT(),f.inflate(a.cellWidth*a.I2,a.cellHeight*a.E2),a.yv(e,i,s,n,f,!1),p=a.xo(s.x,s.y)),!a.$y&&p<Ot.ng&&!a.YE(s.x,s.y)){t.points.removeRange(2,t.pointsCount-3),this.NL(t,a,s.x,s.y,n,!0);let g=0,y=90,b=180,v=270,w=t.getPoint(2);if(t.pointsCount<4)i===g||i===b?(w.x=e.x,w.y=s.y):(w.x=s.x,w.y=e.y),t.setPointAt(2,w.x,w.y),t.insertPointAt(3,w.x,w.y);else{let k=t.getPoint(3);if(i===g||i===b)if(C.c(w.x,k.x)){let S=i===g?Math.max(w.x,e.x):Math.min(w.x,e.x);t.setPointAt(2,S,e.y),t.setPointAt(3,S,k.y)}else C.c(w.y,k.y)?(Math.abs(e.y-w.y)<=a.cellHeight/2&&(t.setPointAt(2,w.x,e.y),t.setPointAt(3,k.x,e.y)),t.insertPointAt(2,w.x,e.y)):t.setPointAt(2,e.x,w.y);else if(i===y||i===v)if(C.c(w.y,k.y)){let S=i===y?Math.max(w.y,e.y):Math.min(w.y,e.y);t.setPointAt(2,e.x,S),t.setPointAt(3,k.x,S)}else C.c(w.x,k.x)?(Math.abs(e.x-w.x)<=a.cellWidth/2&&(t.setPointAt(2,e.x,w.y),t.setPointAt(3,e.x,k.y)),t.insertPointAt(2,e.x,w.y)):t.setPointAt(2,w.x,e.y)}if(c.isReal()){let k=t.getPoint(1),S=t.getPoint(2);k.x!==S.x&&k.y!==S.y?i===g||i===b?t.insertPointAt(2,k.x,S.y):t.insertPointAt(2,S.x,k.y):i===g||i===b?t.insertPointAt(2,l.x,c.y):t.insertPointAt(2,c.x,l.y)}d.isReal()&&(n===g||n===b?t.insertPointAt(t.pointsCount-2,u.x,d.y):t.insertPointAt(t.pointsCount-2,d.x,u.y))}}NL(t,e,i,s,n,o){let r=e.cellWidth,a=e.cellHeight,h=e.xo(i,s),l=i,u=s,c=l,d=u;for(n===0?c+=r:n===90?d+=a:n===180?c-=r:d-=a,t.TN&&h>Ot.sc&&e.xo(c,d)!==h-1&&(e.xo(l-r,u)===h-1?(n=180,c=l-r,d=u):e.xo(l+r,u)===h-1?(n=0,c=l+r,d=u):e.xo(l,u-a)===h-1?(n=270,c=l,d=u-a):e.xo(l,u+a)===h-1&&(n=90,c=l,d=u+a));h>Ot.sc&&e.xo(c,d)===h-1;)l=c,u=d,n===0?c+=r:n===90?d+=a:n===180?c-=r:d-=a,h-=1;if(o?h>Ot.sc&&(n===180||n===0?l=Math.floor(l/r)*r+r/2:(n===90||n===270)&&(u=Math.floor(u/a)*a+a/2)):(l=Math.floor(l/r)*r+r/2,u=Math.floor(u/a)*a+a/2),h>Ot.sc){let f=n,p=l,g=u;if(n===0?(f=90,g+=a):n===90?(f=180,p-=r):n===180?(f=270,g-=a):n===270&&(f=0,p+=r),e.xo(p,g)===h-1)this.NL(t,e,p,g,f,!1);else{let y=l,b=u;n===0?(f=270,b-=a):n===90?(f=0,y+=r):n===180?(f=90,b+=a):n===270&&(f=180,y-=r),e.xo(y,b)===h-1&&this.NL(t,e,y,b,f,!1)}}t.insertPointAt(t.pointsCount-2,l,u)}}oe.prototype.initializeStandardTools=function(){return this.Jt("Action",new Fs,this.mouseDownTools),this.Jt("Relinking",new $e,this.mouseDownTools),this.Jt("LinkReshaping",new Je,this.mouseDownTools),this.Jt("Rotating",new Le,this.mouseDownTools),this.Jt("Resizing",new Ze,this.mouseDownTools),this.Jt("Linking",new Te,this.mouseMoveTools),this.Jt("Dragging",new Tt,this.mouseMoveTools),this.Jt("DragSelecting",new ri,this.mouseMoveTools),this.Jt("Panning",new ki,this.mouseMoveTools),this.Jt("ContextMenu",new It,this.mouseUpTools),this.Jt("TextEditing",new re,this.mouseUpTools),this.Jt("ClickCreating",new Qe,this.mouseUpTools),this.Jt("ClickSelecting",new Ds,this.mouseUpTools),this},Y.u2("GraphLinksModel",Zn),Y.u2("TreeModel",Qn);let Ai=K.go,gi={get version(){return Y.version},Group:ht,List:q,Set:V,Map:Mt,Point:P,Size:nt,Rect:I,Margin:Dt,Spot:T,Geometry:wt,PathFigure:zt,PathSegment:mt,InputEvent:te,DiagramEvent:wi,ChangedEvent:ze,Model:dt,GraphLinksModel:Xt,TreeModel:Ue,Binding:ie,ThemeBinding:ii,Transaction:oi,UndoManager:vi,CommandHandler:jt,Tool:Zt,DraggingTool:Tt,DraggingInfo:Xe,DraggingOptions:Pi,LinkingBaseTool:he,LinkingTool:Te,RelinkingTool:$e,LinkReshapingTool:Je,ResizingTool:Ze,RotatingTool:Le,ClickSelectingTool:Ds,ActionTool:Fs,ClickCreatingTool:Qe,HTMLInfo:ge,ContextMenuTool:It,DragSelectingTool:ri,PanningTool:ki,TextEditingTool:re,ToolManager:oe,Animation:xe,AnimationManager:le,AnimationTrigger:ai,Layer:Et,Diagram:Y,Palette:Rn,Overview:hi,Brush:R,GraphObject:J,Panel:G,RowColumnDefinition:Kt,Shape:it,TextBlock:lt,Picture:Bt,Part:pt,Adornment:vt,Node:$,Link:j,Placeholder:ue,Layout:ee,LayoutNetwork:Re,LayoutVertex:Ee,LayoutEdge:ei,GridLayout:Ye,PanelLayout:Lt,CircularLayout:Ie,CircularNetwork:Ws,CircularVertex:di,CircularEdge:$s,ForceDirectedLayout:se,ForceDirectedNetwork:Js,ForceDirectedVertex:Be,ForceDirectedEdge:fi,LayeredDigraphLayout:Ce,LayeredDigraphNetwork:tn,LayeredDigraphVertex:si,LayeredDigraphEdge:Me,TreeLayout:Vt,TreeNetwork:gs,TreeVertex:Rt,TreeEdge:sn,Themes:we,ThemeManager:je,Router:nn,AnimationStyle:Is,AutoScale:Ii,CycleMode:Vs,Flip:Ks,TextFormat:Yi,ImageStretch:ji,LayoutConditions:Gs,LinkAdjusting:Hi,Curve:$i,Routing:Wi,Orientation:Vi,TextOverflow:js,PortSpreading:qs,ScrollMode:zs,CollapsePolicy:Xs,Sizing:zi,TriggerStart:Bs,Stretch:Bi,ViewboxStretch:Us,Wrap:Ki,BrushType:Fe,ColorSpace:Ys,GeometryStretch:Ri,GeometryType:Ve,SegmentType:ni,BindingMode:Ci,ChangeType:Ei,CircularArrangement:ts,CircularDirection:es,CircularNodeDiameterFormula:ss,CircularSorting:is,GridAlignment:Zi,GridArrangement:Qi,GridSorting:_i,LayeredDigraphAggressive:as,LayeredDigraphAlign:_s,LayeredDigraphCycleRemove:ns,LayeredDigraphInit:rs,LayeredDigraphLayering:os,LayeredDigraphPack:Qs,TreeAlignment:us,TreeArrangement:fs,TreeCompaction:cs,TreeLayerStyle:en,TreePath:hs,TreeSorting:ls,TreeStyle:ds,GestureMode:As,LinkingDirection:Ts,ReshapingBehavior:Ls,TextEditingAccept:Os,TextEditingStarting:Rs,TextEditingState:Es,WheelMode:Cs};for(let x in gi){let t=gi[x];m.it(t)&&t!==Yi&&(t.className=x)}m.$(Ai)&&Ai.version&&m.ne("WARNING: a `go` object on the root object is already defined. "+("Debug"in Ai?"debug ":"")+"version: "+Ai.version+", replaced with version: "+gi.version),Y.prototype.go=gi,K.go=gi})();var Eo=typeof global<"u"?global.go:self.go,W=typeof global<"u"?global.go:self.go,Io=W.Group,Bo=W.List,Vo=W.Set;var zo=W.Map;var cn=W.Point,pi=W.Size,Xo=W.Rect,ys=W.Margin,Ge=W.Spot,Ko=W.Geometry,Yo=W.PathFigure,Uo=W.PathSegment,jo=W.InputEvent,Go=W.DiagramEvent,qo=W.ChangedEvent,Ho=W.Model,dn=W.GraphLinksModel,Wo=W.TreeModel,$o=W.Binding,Jo=W.ThemeBinding,Zo=W.Transaction,Qo=W.UndoManager,_o=W.CommandHandler,tr=W.Tool,er=W.DraggingTool,ir=W.DraggingInfo,sr=W.DraggingOptions,nr=W.LinkingBaseTool,or=W.LinkingTool,rr=W.RelinkingTool,ar=W.LinkReshapingTool,hr=W.ResizingTool,lr=W.RotatingTool,ur=W.ClickSelectingTool,cr=W.ActionTool,dr=W.ClickCreatingTool,fr=W.HTMLInfo,gr=W.ContextMenuTool,mr=W.DragSelectingTool,pr=W.PanningTool,yr=W.TextEditingTool,xr=W.ToolManager,xs=W.Animation,br=W.AnimationManager,wr=W.AnimationTrigger,vr=W.Layer,Ti=W.Diagram,kr=W.Palette,Pr=W.Overview,Sr=W.Brush,Mr=W.GraphObject,qe=W.Panel,Nr=W.RowColumnDefinition,yi=W.Shape,Li=W.TextBlock,fn=W.Picture,Cr=W.Part,bs=W.Adornment,ws=W.Node,vs=W.Link,gn=W.Placeholder,Ar=W.Layout,Tr=W.LayoutNetwork,Lr=W.LayoutVertex,Dr=W.LayoutEdge,Fr=W.GridLayout,Or=W.PanelLayout,Rr=W.CircularLayout,Er=W.CircularNetwork,Ir=W.CircularVertex,Br=W.CircularEdge,Vr=W.ForceDirectedLayout,zr=W.ForceDirectedNetwork,Xr=W.ForceDirectedVertex,Kr=W.ForceDirectedEdge,mn=W.LayeredDigraphLayout,Yr=W.LayeredDigraphNetwork,Ur=W.LayeredDigraphVertex,jr=W.LayeredDigraphEdge,Gr=W.TreeLayout,qr=W.TreeNetwork,Hr=W.TreeVertex,Wr=W.TreeEdge,$r=W.Themes,Jr=W.ThemeManager,Zr=W.Router,Qr=W.version,_r=W.AnimationStyle,pn=W.AutoScale,ta=W.Curve,ea=W.CycleMode,ia=W.Flip,sa=W.ImageStretch,na=W.LayoutConditions,oa=W.LinkAdjusting,ra=W.Orientation,aa=W.PortSpreading,yn=W.Routing,xn=W.ScrollMode,ha=W.CollapsePolicy,la=W.Sizing,ua=W.TriggerStart,bn=W.Stretch,ca=W.TextFormat,ks=W.TextOverflow,da=W.ViewboxStretch,Ps=W.Wrap,fa=W.BrushType,ga=W.ColorSpace,ma=W.GeometryStretch,pa=W.GeometryType,ya=W.SegmentType,xa=W.BindingMode,ba=W.ChangeType,wa=W.CircularArrangement,va=W.CircularDirection,ka=W.CircularNodeDiameterFormula,Pa=W.CircularSorting,Sa=W.GridAlignment,Ma=W.GridArrangement,Na=W.GridSorting,Ca=W.LayeredDigraphAggressive,Aa=W.LayeredDigraphAlign,Ta=W.LayeredDigraphCycleRemove,La=W.LayeredDigraphInit,Da=W.LayeredDigraphLayering,Fa=W.LayeredDigraphPack,Oa=W.TreeAlignment,Ra=W.TreeArrangement,Ea=W.TreeCompaction,Ia=W.TreeLayerStyle,Ba=W.TreePath,Va=W.TreeSorting,za=W.TreeStyle,Xa=W.GestureMode,Ka=W.LinkingDirection,Ya=W.ReshapingBehavior,Ua=W.TextEditingAccept,ja=W.TextEditingStarting,Ga=W.TextEditingState,wn=W.WheelMode;var eo=on`#filter-bar{background-color:var(--calcite-color-surface-2);position:absolute;top:16px;right:196px;z-index:100;box-shadow:var(--calcite-shadow-sm)}#filteredViewButtonDiv{padding:8px}#filteredViewButtonLabel{--calcite-label-margin-bottom: 0}#graph-navigation-bar{background-color:var(--calcite-color-surface-2);position:absolute;top:16px;right:16px;z-index:100}#graph-navigation-controls{position:absolute;top:0;right:0;box-shadow:var(--calcite-shadow-sm)}.z-index-1{z-index:1}#diagram-panel{--calcite-panel-space: 0px}#diagram-shell-panel{--calcite-color-surface-1: var(--calcite-color-surface-2);padding:16px}`,io=15,so=15,no=10,xi=new pi(220,48),oo=1,ro=8,vn=new pi(48,48),ao=new pi(16,16),kn=new pi(153,17),ho='400 0.75rem "Avenir Next", Avenir, "Helvetica Neue", sans-serif',lo='500 0.75rem "Avenir Next", Avenir, "Helvetica Neue", sans-serif',uo="val(--calcite-color-surface-1)",co=bi("--calcite-color-border-1"),Pn=bi("--calcite-color-surface-2"),Di=bi("--calcite-color-text-1"),Sn=bi("--calcite-color-border-input"),fo=bi("--calcite-color-surface-2"),Fi=1,Nn=.3,Ss=1,Cn=.2,go=1;function mo(K){let m=document.createElement("div");m.style.width="100%",m.style.height="100%";let at=document.documentElement.dir==="rtl",yt=at?Ge.Right:Ge.Left,Pt=at?"right":"left";K.appendChild(m);let ut=new Ti(m,{click:Po,contentAlignment:Ge.Center,dragSelectingTool:null,hoverDelay:50,initialAutoScale:pn.Uniform,layout:new mn({columnSpacing:io,layerSpacing:so}),padding:no,scrollMode:xn.Infinite,"toolManager.hoverDelay":50,"toolManager.mouseWheelBehavior":wn.Zoom});ut.nodeTemplate=new ws("Auto",{click:So,movable:!1,opacity:Fi,toolTip:new bs("Auto",{isShadowed:!0,margin:new ys(12,16,6,16),padding:0,shadowBlur:16,shadowColor:To(Di,.05),shadowOffset:new cn(0,0)}).add(new qe("Vertical",{background:fo,margin:0}).add(new Li({margin:14,stroke:Di,alignment:yt,textAlign:Pt}).bind("text","title")))}).bind("text","title").add(new yi({desiredSize:xi,fill:Pn,geometryString:ko(xi.width,xi.height,ro,vn.width,!!Pn),height:xi.height,portId:"",stroke:co,strokeWidth:oo,width:xi.width})).add(new qe("Horizontal",{alignment:yt,stretch:bn.Horizontal}).add(new qe("Horizontal",{alignment:yt,desiredSize:vn,margin:1}).add(new qe("Horizontal",{alignment:Ge.Center,margin:16}).add(new fn({desiredSize:ao}).bind("source","",q=>un(q.itemType,q.itemTypeKeywords)))),new qe("Horizontal",{alignment:yt,margin:new ys(4,8,0,8)}).add(new qe("Vertical",{}).add(new Li({alignment:yt,textAlign:Pt,desiredSize:kn,font:lo,overflow:ks.Ellipsis,stroke:Di,wrap:Ps.None}).bind("text","title"),new Li({alignment:yt,textAlign:Pt,desiredSize:kn,font:ho,overflow:ks.Ellipsis,stroke:Di,wrap:Ps.None}).bind("text","itemTypeForDisplay"))))),ut.commandHandler.zoomFactor=1.05,ut.setDivBackground(uo);let ct=ut.toolManager.clickSelectingTool;ct.standardMouseSelect=function(){};let kt=ut.toolManager.draggingTool;return kt.isEnabled=!1,ut.linkTemplate=new vs({corner:5,movable:!1,routing:yn.Orthogonal,selectable:!1}).add(new yi({opacity:Ss,stroke:Sn}),new yi({fill:Sn,opacity:Ss,stroke:null,toArrow:"Standard"})),ut}function He(K,m){K.model=new dn(m.nodes,m.links,{linkFromPortIdProperty:"fromPort",linkToPortIdProperty:"toPort"})}function po(K,m,at,yt=!0){if(yt){let q=Mo(K,at);q.addEventListener("calciteSwitchChange",()=>document.dispatchEvent(new CustomEvent("filteredViewChanged",{detail:q.checked})))}let{resetButton:Pt,centerButton:ut,zoomInButton:ct,zoomOutButton:kt}=No(K,at);Pt.addEventListener("click",()=>Ao(m)),ut.addEventListener("click",()=>m.zoomToFit()),ct.addEventListener("click",()=>m.commandHandler.increaseZoom()),kt.addEventListener("click",()=>m.commandHandler.decreaseZoom())}function yo(K,m,at){let yt=mo(K);return He(yt,m),po(K,yt,at),yt}function An(K){let m=new Set,at=new Set;function yt(ut){ut.findLinksInto().each(ct=>{at.add(ct);let kt=ct.fromNode;kt&&!m.has(kt)&&(m.add(kt),yt(kt))})}yt(K);function Pt(ut){ut.findLinksOutOf().each(ct=>{at.add(ct);let kt=ct.toNode;kt&&!m.has(kt)&&(m.add(kt),Pt(kt))})}return Pt(K),{connectedNodes:m,connectedLinks:at}}function xo(K,m=!1,at){let yt=[],Pt=K.map(ct=>{if(ct.type!=="Group"){let kt=vo(ct);return wo(ct,kt,m,at)}else{yt.push(ct.id);return}}).filter(ct=>ct!==void 0),ut=[];return Pt.forEach(ct=>{(K.find(kt=>kt.id===ct.itemId)?.dependencies||[]).forEach(kt=>{let q=Pt.find(_t=>_t?.itemId===kt);q&&ut.push({from:q.key,fromSpot:Ge.AllSides,to:ct.key,toSpot:Ge.AllSides})})}),{nodes:Pt,links:ut,groupPseudoNodes:yt}}function bo(K,m,at,yt=!0){let Pt=K.diagram;if(!Pt)return;let ut={};if(yt){for(let ct of Pt.nodes)ut[ct.key]=ct===K?Fi:Nn;for(let ct of Pt.links){let kt=`${ct.fromNode?.key}-${ct.toNode?.key}`;ut[kt]=Cn}{let{connectedNodes:ct,connectedLinks:kt}=An(K);for(let q of ct)ut[q.key]=Fi;for(let q of kt){let _t=`${q.fromNode?.key}-${q.toNode?.key}`;ut[_t]=go}}}if(at&&(at.adornedObject=K),yt){let ct=new xs;ct.duration=1;for(let kt of Pt.nodes)ct.add(kt,"opacity",kt.opacity,ut[kt.key]);for(let kt of Pt.links){let q=`${kt.fromNode?.key}-${kt.toNode?.key}`;ct.add(kt,"opacity",kt.opacity,ut[q])}ct.start()}}function Mn(K,m,at,yt,Pt=!0){if(K.length===0)return;let ut=m[0].diagram;if(!ut)return;let ct={};if(Pt){for(let kt of ut.nodes){let q=K.includes(kt.key);ct[kt.key]=!at||q?Fi:Nn}for(let kt of ut.links){let q=`${kt.fromNode?.key}-${kt.toNode?.key}`;ct[q]=at?Cn:Ss}}if(Object.keys(yt).forEach(kt=>{yt[kt].adornedObject=null}),Pt){let kt=new xs;kt.duration=1;for(let q of ut.nodes)kt.add(q,"opacity",q.opacity,ct[q.key]);for(let q of ut.links){let _t=`${q.fromNode?.key}-${q.toNode?.key}`;kt.add(q,"opacity",q.opacity,ct[_t])}kt.start()}}function wo(K,m,at=!1,yt){return{key:m,title:K.title,itemId:K.id,itemType:K.type,itemTypeForDisplay:Co(K.type,K.typeKeywords),itemTypeKeywords:K.typeKeywords,group:K.type,url:at?`${yt}?id=${K.id}`:void 0}}function vo(K){return K.id}function ko(K,m,at,yt=0,Pt=!1){let ut="";Pt&&(ut+="F");let ct=K-2*at,kt=m-2*at;return ut+=" M0 0",ut+=` h${ct}`,ut+=` a${at} ${at} 0 0 1 ${at} ${at}`,ut+=` v${kt}`,ut+=` a${at} ${at} 0 0 1 ${-at} ${at}`,ut+=` h${-ct}`,ut+=` a${at} ${at} 0 0 1 ${-at} ${-at}`,ut+=` v${-kt}`,ut+=` a${at} ${at} 0 0 1 ${at} ${-at}`,yt>0&&(ut+=` M${yt-at} 0 v${m}`),ut}function Po(){document.dispatchEvent(new CustomEvent("clickInDiagram"))}function So(K,m){let at=m.part;at instanceof ws&&(at.selectionAdorned=!1,document.dispatchEvent(new CustomEvent("clickOnNode",{detail:at})))}function Mo(K,m){let at=document.createElement("calcite-switch");at.id="filteredViewButton",at.label=m.filteredView;let yt=document.createElement("calcite-label");yt.id="filteredViewButtonLabel",yt.setAttribute("layout","inline"),yt.innerHTML=m.filteredView,yt.appendChild(at);let Pt=document.createElement("div");Pt.id="filteredViewButtonDiv",Pt.appendChild(yt);let ut=document.createElement("calcite-action-bar");ut.id="filter-bar-controls",ut.layout="horizontal",ut.expandDisabled=!0,ut.appendChild(Pt);let ct=document.createElement("div");return ct.id="filter-bar",K.appendChild(ct),ct.appendChild(ut),at}function No(K,m){let at=document.createElement("calcite-action");at.icon="reset",at.id="showHideGrayedOutButton";let yt=document.createElement("calcite-tooltip");yt.id="resetButtonTooltip",yt.innerHTML=m.reset,yt.overlayPositioning="fixed",yt.placement="bottom",yt.referenceElement=at.id;let Pt=document.createElement("calcite-action");Pt.icon="zoom-to-object",Pt.id="centerButton";let ut=document.createElement("calcite-tooltip");ut.id="centerButtonTooltip",ut.innerHTML=m.centerDiagram,ut.overlayPositioning="fixed",ut.placement="bottom",ut.referenceElement=Pt.id;let ct=document.createElement("calcite-action");ct.icon="plus",ct.id="zoomInButton";let kt=document.createElement("calcite-tooltip");kt.id="zoomInButtonTooltip",kt.innerHTML=m.zoomIn,kt.overlayPositioning="fixed",kt.placement="bottom",kt.referenceElement=ct.id;let q=document.createElement("calcite-action");q.appearance="solid",q.icon="minus",q.id="zoomOutButton";let _t=document.createElement("calcite-tooltip");_t.id="zoomOutButtonTooltip",_t.innerHTML=m.zoomOut,_t.overlayPositioning="fixed",_t.placement="bottom",_t.referenceElement=q.id;let V=document.createElement("calcite-action-bar");V.id="graph-navigation-controls",V.layout="horizontal",V.expandDisabled=!0,V.appendChild(at),V.appendChild(yt),V.appendChild(Pt),V.appendChild(ut),V.appendChild(ct),V.appendChild(kt),V.appendChild(q),V.appendChild(_t);let We=document.createElement("div");return We.id="graph-navigation-bar",K.appendChild(We),We.appendChild(V),{resetButton:at,centerButton:Pt,zoomInButton:ct,zoomOutButton:q}}function Co(K,m){let at=K;if(K==="Feature Service"){let yt=m.indexOf("View Service")>-1,Pt=m.indexOf("Table")>-1;at=yt&&Pt?"Table (hosted, view)":Pt?"Table (hosted)":yt?"Feature Layer (hosted, view)":"Feature Layer (hosted)"}return K==="Web Mapping Application"&&(at=m.indexOf("configurableApp")>-1?"Instant App":at),at=K==="Geoprocessing Service"?"Tool":at,at=K==="Feed"?"Feed (hosted)":at,at=K==="Real Time Analytic"?"Real Time Analytic (hosted)":at,at=K==="Big Data Analytic"?"Big Data Analytic (hosted)":at,at=K==="Vector Tile Service"?"Tile Layer":at,at}function Ao(K){K.zoomToFit(),document.dispatchEvent(new CustomEvent("reset"))}function bi(K){let m=document.body;return getComputedStyle(m).getPropertyValue(K).trim()}function To(K,m){if(K=K.replace(/^#/,""),K.length===3&&(K=K.split("").map(ut=>ut+ut).join("")),K.length!==6)throw new Error("Invalid hex color");let at=parseInt(K.slice(0,2),16),yt=parseInt(K.slice(2,4),16),Pt=parseInt(K.slice(4,6),16);return`rgba(${at}, ${yt}, ${Pt}, ${m})`}var Lo=8,Do=15,Fo=Ro("--calcite-color-brand"),Oo=4;function Ro(K){let m=document.documentElement;return getComputedStyle(m).getPropertyValue(K).trim()}var Ms=class{constructor(m,at,yt,Pt){this.indexPanel=m,this.diagramPanel=at,this.diagramTranslations=yt,this.diagramKey=Pt,this.currentSelectedGroupId="",this.currentSelectedItemId="",this.diagramNeedsRedraw=!1,this.usefilteredView=!1,this.handle_clickInDiagram=ut=>{ut.stopImmediatePropagation(),(this.currentSelectedGroupId||this.currentSelectedItemId)&&(this.currentSelectedGroupId="",this.currentSelectedItemId="",this.diagramNeedsRedraw=this.usefilteredView,this.redraw())},this.handle_clickOnNode=ut=>{ut.stopImmediatePropagation();let ct=ut.detail.data.key;this.redraw(ct,ct===this.currentSelectedItemId)},this.handle_filteredViewChanged=ut=>{this.usefilteredView=ut.detail,this.diagramNeedsRedraw=!!this.currentSelectedGroupId||!!this.currentSelectedItemId,this.redraw(this.currentSelectedItemId||this.currentSelectedGroupId)},this.handle_reset=ut=>{ut.stopImmediatePropagation(),this.reset()},this.handle_solutionItemSelect=ut=>{ut.stopImmediatePropagation();let ct=ut.detail.itemId;this.redraw(ct,ct===this.currentSelectedItemId||ct===this.currentSelectedGroupId,!1)},Ti.licenseKey===""&&(Ti.licenseKey=Pt??"")}create(m,at){this.collection=m,this.index=document.createElement("solution-item-accordion"),this.index.linkType="action",this.index.listSelectionMode="single",this.index.typeKeywords=at,this.index.style.overflowY="auto",this.indexPanel.appendChild(this.index),this.index.templateInfos=m,this.allNodesAndLinks=xo(m),this.diagram=yo(this.diagramPanel,this.allNodesAndLinks,this.diagramTranslations),this.diagram.addDiagramListener("LayoutCompleted",()=>{setTimeout(()=>{this.diagram.zoomToFit()},1e3)}),vs.setRoutingParameter(44,600942),this.createNodeHighlighters(),document.addEventListener("clickInDiagram",this.handle_clickInDiagram),document.addEventListener("clickOnNode",this.handle_clickOnNode),document.addEventListener("filteredViewChanged",this.handle_filteredViewChanged),document.addEventListener("reset",this.handle_reset),this.index.addEventListener("solutionItemSelect",this.handle_solutionItemSelect)}dispose(){document.removeEventListener("clickInDiagram",this.handle_clickInDiagram),document.removeEventListener("clickOnNode",this.handle_clickOnNode),document.removeEventListener("filteredViewChanged",this.handle_filteredViewChanged),document.removeEventListener("reset",this.handle_reset),this.index.removeEventListener("solutionItemSelect",this.handle_solutionItemSelect),this.indexPanel.innerHTML="",this.diagramPanel.innerHTML=""}clearSelections(m=!0){this.index.deselectAll(),m&&this.index.collapseAll();let at=this.getNodesFromDiagram(this.diagram),yt=at.map(Pt=>Pt.data.key);Mn(yt,at,!1,this.diagramNodeHighlighterIndex)}createNodeHighlighters(){this.diagramNodeIndex={},this.diagramNodeHighlighterIndex={},this.getNodesFromDiagram(this.diagram).forEach(m=>{this.diagramNodeIndex[m.data.key]=m;let at=new bs("Auto",{background:"transparent",margin:2});at.add(new yi("RoundedRectangle",{fill:"transparent",parameter1:Lo,parameter2:Do,stroke:Fo,strokeWidth:Oo})),at.add(new gn({margin:1})),this.diagramNodeHighlighterIndex[m.data.key]=at})}getNodeById(m){return this.diagramNodeIndex[m]}getNodesFromDiagram(m){let at=[],yt=m.nodes.iterator;for(;yt.next();)at.push(yt.value);return at}redraw(m="",at=!1,yt=!0){let Pt=this.allNodesAndLinks.groupPseudoNodes.includes(m);this.diagramNeedsRedraw&&(He(this.diagram,this.allNodesAndLinks),this.createNodeHighlighters(),this.diagramNeedsRedraw=!1);let ut=!1;if(this.clearSelections(yt),!!m){if(Pt){if(this.currentSelectedItemId="",this.currentSelectedGroupId!==m?this.currentSelectedGroupId=m:at&&(this.currentSelectedGroupId=this.currentSelectedGroupId?"":m,ut=this.usefilteredView&&!this.currentSelectedGroupId),this.currentSelectedGroupId){this.usefilteredView&&(He(this.diagram,this.allNodesAndLinks),this.createNodeHighlighters());let ct=this.collection.filter(q=>q.id===m)[0],kt=ct.dependencies.map(q=>this.diagramNodeIndex[q]);if(this.usefilteredView){let q=kt.map(_t=>_t.data);He(this.diagram,{nodes:q,links:[]})}else Mn(ct.dependencies,kt,!0,this.diagramNodeHighlighterIndex);this.index.selectItem(this.currentSelectedGroupId)}}else{this.currentSelectedGroupId="",this.currentSelectedItemId!==m?this.currentSelectedItemId=m:at&&(this.currentSelectedItemId=this.currentSelectedItemId?"":m,ut=this.usefilteredView&&!this.currentSelectedItemId);let ct=this.getNodeById(m);if((!ct||this.usefilteredView)&&(He(this.diagram,this.allNodesAndLinks),this.createNodeHighlighters(),ct=this.getNodeById(m),!ct))return;if(this.currentSelectedItemId){if(this.usefilteredView){let kt=An(ct);kt.connectedNodes.add(ct);let q=Array.from(kt.connectedNodes).map(V=>V.data),_t=Array.from(kt.connectedLinks).map(V=>V.data);if(He(this.diagram,{nodes:q,links:_t}),this.createNodeHighlighters(),ct=this.getNodeById(m),!ct)return}ct&&setTimeout(()=>bo(ct,!0,this.diagramNodeHighlighterIndex[m]),1),this.index.selectItem(this.currentSelectedItemId)}}ut&&this.reset()}}reset(){this.diagramNeedsRedraw=!1,this.currentSelectedGroupId="",this.currentSelectedItemId="",He(this.diagram,this.allNodesAndLinks),this.createNodeHighlighters(),this.clearSelections()}},Ns=class extends an{constructor(){super(...arguments),this.diagramKey="",this.templateInfoGraph=[],this.typeKeywords=[],this._diagramPanel=ms(),this._diagramShell=ms(),this._translations=ln({name:"solution-item-diagram",blocking:!0})}static{this.properties={diagramKey:1,templateInfoGraph:0,typeKeywords:0,_diagramPanel:16,_diagramShell:16,_translations:16}}static{this.styles=eo}updated(){if(this.solutionDisplay&&(this.solutionDisplay.dispose(),this.solutionDisplay=void 0),this.templateInfoGraph.length>0){let m={centerDiagram:this._translations.graphTranslations.centerDiagram,filteredView:this._translations.graphTranslations.filteredView,reset:this._translations.graphTranslations.reset,zoomIn:this._translations.graphTranslations.zoomIn,zoomOut:this._translations.graphTranslations.zoomOut};this.solutionDisplay=new Ms(this._diagramShell.value,this._diagramPanel.value,m,this.diagramKey),this.solutionDisplay.create(this.templateInfoGraph,this.typeKeywords)}requestAnimationFrame(()=>this._preventDiagramScrollbars())}disconnectedCallback(){super.disconnectedCallback(),this.solutionDisplay&&(this.solutionDisplay.dispose(),this.solutionDisplay=void 0)}render(){return rn`<calcite-shell><calcite-shell-panel id=diagram-shell-panel slot=panel-start ${ps(this._diagramShell)}></calcite-shell-panel><calcite-panel class="z-index-1" id=diagram-panel slot=panel-bottom ${ps(this._diagramPanel)}></calcite-panel></calcite-shell>`}_preventDiagramScrollbars(){if(!this._diagramPanel.value)return;let m=this._diagramPanel.value.shadowRoot;if(!m)return;let at=m.querySelector(".content-wrapper");at instanceof HTMLElement&&(at.style.overflow="hidden")}};hn("solution-item-diagram",Ns);return Ns},a,b)