@chrome-acp/proxy-server 1.0.14 → 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mcp/types.d.ts +29 -32
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +26 -4
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
- package/public/assets/{architectureDiagram-VXUJARFQ-wjPFzNar.js → architectureDiagram-VXUJARFQ-ERfmZBZO.js} +2 -2
- package/public/assets/{architectureDiagram-VXUJARFQ-wjPFzNar.js.map → architectureDiagram-VXUJARFQ-ERfmZBZO.js.map} +1 -1
- package/public/assets/{blockDiagram-VD42YOAC-Bow3HM3P.js → blockDiagram-VD42YOAC-Do2HjB0Z.js} +2 -2
- package/public/assets/{blockDiagram-VD42YOAC-Bow3HM3P.js.map → blockDiagram-VD42YOAC-Do2HjB0Z.js.map} +1 -1
- package/public/assets/{c4Diagram-YG6GDRKO-SQHtWv3g.js → c4Diagram-YG6GDRKO-DJnxx7fH.js} +2 -2
- package/public/assets/{c4Diagram-YG6GDRKO-SQHtWv3g.js.map → c4Diagram-YG6GDRKO-DJnxx7fH.js.map} +1 -1
- package/public/assets/channel-ByUlP8on.js +2 -0
- package/public/assets/{channel-pKLLLs1E.js.map → channel-ByUlP8on.js.map} +1 -1
- package/public/assets/{chunk-ABZYJK2D-x9qEUFTA.js → chunk-ABZYJK2D-4V3xBx2D.js} +3 -3
- package/public/assets/{chunk-ABZYJK2D-x9qEUFTA.js.map → chunk-ABZYJK2D-4V3xBx2D.js.map} +1 -1
- package/public/assets/{chunk-ATLVNIR6-D0SaqbxC.js → chunk-ATLVNIR6-DCub4004.js} +2 -2
- package/public/assets/{chunk-ATLVNIR6-D0SaqbxC.js.map → chunk-ATLVNIR6-DCub4004.js.map} +1 -1
- package/public/assets/{chunk-B4BG7PRW-CSi9IqPy.js → chunk-B4BG7PRW-DH_dyws5.js} +2 -2
- package/public/assets/{chunk-B4BG7PRW-CSi9IqPy.js.map → chunk-B4BG7PRW-DH_dyws5.js.map} +1 -1
- package/public/assets/{chunk-DI55MBZ5-CjGu8W9o.js → chunk-DI55MBZ5-BdKNset0.js} +2 -2
- package/public/assets/{chunk-DI55MBZ5-CjGu8W9o.js.map → chunk-DI55MBZ5-BdKNset0.js.map} +1 -1
- package/public/assets/{chunk-EXTU4WIE-FY5Pwz_y.js → chunk-EXTU4WIE-BhjM7T9E.js} +2 -2
- package/public/assets/{chunk-EXTU4WIE-FY5Pwz_y.js.map → chunk-EXTU4WIE-BhjM7T9E.js.map} +1 -1
- package/public/assets/{chunk-JA3XYJ7Z-BkoNu2jJ.js → chunk-JA3XYJ7Z-DFEpfAPm.js} +2 -2
- package/public/assets/{chunk-JA3XYJ7Z-BkoNu2jJ.js.map → chunk-JA3XYJ7Z-DFEpfAPm.js.map} +1 -1
- package/public/assets/{chunk-JZLCHNYA-DC3nqPAp.js → chunk-JZLCHNYA--0HCyKSB.js} +2 -2
- package/public/assets/{chunk-JZLCHNYA-DC3nqPAp.js.map → chunk-JZLCHNYA--0HCyKSB.js.map} +1 -1
- package/public/assets/{chunk-N4CR4FBY-B6bbaafi.js → chunk-N4CR4FBY-BbZEJGzH.js} +3 -3
- package/public/assets/{chunk-N4CR4FBY-B6bbaafi.js.map → chunk-N4CR4FBY-BbZEJGzH.js.map} +1 -1
- package/public/assets/{chunk-QN33PNHL-DKVBKRLD.js → chunk-QN33PNHL-BUlRs8Gu.js} +2 -2
- package/public/assets/{chunk-QN33PNHL-DKVBKRLD.js.map → chunk-QN33PNHL-BUlRs8Gu.js.map} +1 -1
- package/public/assets/{chunk-QXUST7PY-CV4pkmTu.js → chunk-QXUST7PY-t91kbxTi.js} +2 -2
- package/public/assets/{chunk-QXUST7PY-CV4pkmTu.js.map → chunk-QXUST7PY-t91kbxTi.js.map} +1 -1
- package/public/assets/{chunk-S3R3BYOJ-6YeBT-eZ.js → chunk-S3R3BYOJ-DKNuA38_.js} +2 -2
- package/public/assets/{chunk-S3R3BYOJ-6YeBT-eZ.js.map → chunk-S3R3BYOJ-DKNuA38_.js.map} +1 -1
- package/public/assets/{chunk-TZMSLE5B-CZ4oRZWD.js → chunk-TZMSLE5B-ZI5Is7DP.js} +2 -2
- package/public/assets/{chunk-TZMSLE5B-CZ4oRZWD.js.map → chunk-TZMSLE5B-ZI5Is7DP.js.map} +1 -1
- package/public/assets/classDiagram-2ON5EDUG-DvJh-abz.js +2 -0
- package/public/assets/{classDiagram-2ON5EDUG-D8v77MD7.js.map → classDiagram-2ON5EDUG-DvJh-abz.js.map} +1 -1
- package/public/assets/classDiagram-v2-WZHVMYZB-DPnIn5s9.js +2 -0
- package/public/assets/{classDiagram-v2-WZHVMYZB-DrGCW_EL.js.map → classDiagram-v2-WZHVMYZB-DPnIn5s9.js.map} +1 -1
- package/public/assets/clone--vBohEtN.js +2 -0
- package/public/assets/{clone-cscKn85s.js.map → clone--vBohEtN.js.map} +1 -1
- package/public/assets/{code-block-IT6T5CEO-Cir7lBBX.js → code-block-IT6T5CEO-nC1YczKC.js} +2 -2
- package/public/assets/{code-block-IT6T5CEO-Cir7lBBX.js.map → code-block-IT6T5CEO-nC1YczKC.js.map} +1 -1
- package/public/assets/{dagre-6UL2VRFP-CW0qvz_s.js → dagre-6UL2VRFP-CUvrKiYW.js} +2 -2
- package/public/assets/{dagre-6UL2VRFP-CW0qvz_s.js.map → dagre-6UL2VRFP-CUvrKiYW.js.map} +1 -1
- package/public/assets/{dagre-Cl3mneui.js → dagre-yyBB715u.js} +2 -2
- package/public/assets/{dagre-Cl3mneui.js.map → dagre-yyBB715u.js.map} +1 -1
- package/public/assets/{diagram-PSM6KHXK-CsGot5qe.js → diagram-PSM6KHXK-D1PbEKpY.js} +2 -2
- package/public/assets/{diagram-PSM6KHXK-CsGot5qe.js.map → diagram-PSM6KHXK-D1PbEKpY.js.map} +1 -1
- package/public/assets/{diagram-QEK2KX5R-Dk_Ips1R.js → diagram-QEK2KX5R-43BWK26_.js} +2 -2
- package/public/assets/{diagram-QEK2KX5R-Dk_Ips1R.js.map → diagram-QEK2KX5R-43BWK26_.js.map} +1 -1
- package/public/assets/{diagram-S2PKOQOG-DVCkBYgt.js → diagram-S2PKOQOG-BqCGm98C.js} +2 -2
- package/public/assets/{diagram-S2PKOQOG-DVCkBYgt.js.map → diagram-S2PKOQOG-BqCGm98C.js.map} +1 -1
- package/public/assets/{erDiagram-Q2GNP2WA-CDMoNqWr.js → erDiagram-Q2GNP2WA-DT8X0Bkj.js} +2 -2
- package/public/assets/{erDiagram-Q2GNP2WA-CDMoNqWr.js.map → erDiagram-Q2GNP2WA-DT8X0Bkj.js.map} +1 -1
- package/public/assets/{flowDiagram-NV44I4VS-CRYIfhzR.js → flowDiagram-NV44I4VS-t9Tw5aTg.js} +2 -2
- package/public/assets/{flowDiagram-NV44I4VS-CRYIfhzR.js.map → flowDiagram-NV44I4VS-t9Tw5aTg.js.map} +1 -1
- package/public/assets/{ganttDiagram-JELNMOA3-BbkuHdg9.js → ganttDiagram-JELNMOA3-BBKujC33.js} +2 -2
- package/public/assets/{ganttDiagram-JELNMOA3-BbkuHdg9.js.map → ganttDiagram-JELNMOA3-BBKujC33.js.map} +1 -1
- package/public/assets/{gitGraphDiagram-NY62KEGX-o3Bg7nmx.js → gitGraphDiagram-NY62KEGX-9rrEkUeV.js} +2 -2
- package/public/assets/{gitGraphDiagram-NY62KEGX-o3Bg7nmx.js.map → gitGraphDiagram-NY62KEGX-9rrEkUeV.js.map} +1 -1
- package/public/assets/{graphlib-CJzlAqCt.js → graphlib-CDA3kMcX.js} +2 -2
- package/public/assets/{graphlib-CJzlAqCt.js.map → graphlib-CDA3kMcX.js.map} +1 -1
- package/public/assets/{infoDiagram-WHAUD3N6-BIutCfum.js → infoDiagram-WHAUD3N6-BGL4Sxno.js} +2 -2
- package/public/assets/{infoDiagram-WHAUD3N6-BIutCfum.js.map → infoDiagram-WHAUD3N6-BGL4Sxno.js.map} +1 -1
- package/public/assets/{journeyDiagram-XKPGCS4Q-TLxotP0p.js → journeyDiagram-XKPGCS4Q-CHcHWwKh.js} +2 -2
- package/public/assets/{journeyDiagram-XKPGCS4Q-TLxotP0p.js.map → journeyDiagram-XKPGCS4Q-CHcHWwKh.js.map} +1 -1
- package/public/assets/{kanban-definition-3W4ZIXB7-B_QHM6Sw.js → kanban-definition-3W4ZIXB7-BMr9yQtH.js} +2 -2
- package/public/assets/{kanban-definition-3W4ZIXB7-B_QHM6Sw.js.map → kanban-definition-3W4ZIXB7-BMr9yQtH.js.map} +1 -1
- package/public/assets/katex-BXZ6-Hmb.js +1 -0
- package/public/assets/{line-B9W3o98k.js → line-BxFlNVl2.js} +2 -2
- package/public/assets/{line-B9W3o98k.js.map → line-BxFlNVl2.js.map} +1 -1
- package/public/assets/main-rtUrro6N.js +379 -0
- package/public/assets/main-rtUrro6N.js.map +1 -0
- package/public/assets/mermaid-VLURNSYL-Dt6lsMZf.js +1 -0
- package/public/assets/{mermaid.core-CpgIepIq.js → mermaid.core-CHOGuA8G.js} +4 -4
- package/public/assets/{mermaid.core-CpgIepIq.js.map → mermaid.core-CHOGuA8G.js.map} +1 -1
- package/public/assets/{mindmap-definition-VGOIOE7T-BJ758uf4.js → mindmap-definition-VGOIOE7T-CQ3jo7T_.js} +2 -2
- package/public/assets/{mindmap-definition-VGOIOE7T-BJ758uf4.js.map → mindmap-definition-VGOIOE7T-CQ3jo7T_.js.map} +1 -1
- package/public/assets/{pieDiagram-ADFJNKIX-Dd8dtgHZ.js → pieDiagram-ADFJNKIX-BskQ5vji.js} +2 -2
- package/public/assets/{pieDiagram-ADFJNKIX-Dd8dtgHZ.js.map → pieDiagram-ADFJNKIX-BskQ5vji.js.map} +1 -1
- package/public/assets/{quadrantDiagram-AYHSOK5B-DelknGes.js → quadrantDiagram-AYHSOK5B-Bim0kCz4.js} +2 -2
- package/public/assets/{quadrantDiagram-AYHSOK5B-DelknGes.js.map → quadrantDiagram-AYHSOK5B-Bim0kCz4.js.map} +1 -1
- package/public/assets/radix-CWcw-_TU.js +2 -0
- package/public/assets/radix-CWcw-_TU.js.map +1 -0
- package/public/assets/react-DC6mq9sj.js +10 -0
- package/public/assets/react-DC6mq9sj.js.map +1 -0
- package/public/assets/{requirementDiagram-UZGBJVZJ-CGCbxKd6.js → requirementDiagram-UZGBJVZJ-BThYhHgo.js} +2 -2
- package/public/assets/{requirementDiagram-UZGBJVZJ-CGCbxKd6.js.map → requirementDiagram-UZGBJVZJ-BThYhHgo.js.map} +1 -1
- package/public/assets/{sankeyDiagram-TZEHDZUN-UOBpib_k.js → sankeyDiagram-TZEHDZUN-Cu7jxbPR.js} +2 -2
- package/public/assets/{sankeyDiagram-TZEHDZUN-UOBpib_k.js.map → sankeyDiagram-TZEHDZUN-Cu7jxbPR.js.map} +1 -1
- package/public/assets/{sequenceDiagram-WL72ISMW-BuIva0Lb.js → sequenceDiagram-WL72ISMW-CYpkyiQa.js} +2 -2
- package/public/assets/{sequenceDiagram-WL72ISMW-BuIva0Lb.js.map → sequenceDiagram-WL72ISMW-CYpkyiQa.js.map} +1 -1
- package/public/assets/{stateDiagram-FKZM4ZOC-DMM22UFw.js → stateDiagram-FKZM4ZOC-CpduAaAE.js} +2 -2
- package/public/assets/{stateDiagram-FKZM4ZOC-DMM22UFw.js.map → stateDiagram-FKZM4ZOC-CpduAaAE.js.map} +1 -1
- package/public/assets/stateDiagram-v2-4FDKWEC3-BbGisRuk.js +2 -0
- package/public/assets/{stateDiagram-v2-4FDKWEC3-DoQv2RVT.js.map → stateDiagram-v2-4FDKWEC3-BbGisRuk.js.map} +1 -1
- package/public/assets/{timeline-definition-IT6M3QCI-BuulvLu6.js → timeline-definition-IT6M3QCI-zPIkl5WF.js} +2 -2
- package/public/assets/{timeline-definition-IT6M3QCI-BuulvLu6.js.map → timeline-definition-IT6M3QCI-zPIkl5WF.js.map} +1 -1
- package/public/assets/{xychartDiagram-PRI3JC2R-BNUCwm4v.js → xychartDiagram-PRI3JC2R-BqEbqHoy.js} +2 -2
- package/public/assets/{xychartDiagram-PRI3JC2R-BNUCwm4v.js.map → xychartDiagram-PRI3JC2R-BqEbqHoy.js.map} +1 -1
- package/public/index.html +3 -3
- package/public/sw.js +2 -1
- package/public/assets/channel-pKLLLs1E.js +0 -2
- package/public/assets/classDiagram-2ON5EDUG-D8v77MD7.js +0 -2
- package/public/assets/classDiagram-v2-WZHVMYZB-DrGCW_EL.js +0 -2
- package/public/assets/clone-cscKn85s.js +0 -2
- package/public/assets/katex-Bnbp0kKK.js +0 -1
- package/public/assets/main-BxrWPNWG.js +0 -379
- package/public/assets/main-BxrWPNWG.js.map +0 -1
- package/public/assets/mermaid-VLURNSYL-Dwtbd3VO.js +0 -1
- package/public/assets/radix-CyrXeX7S.js +0 -2
- package/public/assets/radix-CyrXeX7S.js.map +0 -1
- package/public/assets/react-BU7bKLEa.js +0 -10
- package/public/assets/react-BU7bKLEa.js.map +0 -1
- package/public/assets/stateDiagram-v2-4FDKWEC3-DoQv2RVT.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-JZLCHNYA-DC3nqPAp.js","names":["t","n","o","e","a","s","h","r","i","c","l","u","p","f","d","g","M","k","b","y","m","P","v","S","O","L","T","D","A","select","i","p","x","y","w","h","select2","s","select3","rough","q","rough2","rough3","d","rough4","rough5","rough6","r","rough7","rough8","rough9","rough10","rough11","rough12","rough13","rough14","rough15","rough16","rough17","rough18","rough19","m","rough20","rough21","rough22","rough23","rough24","rough25","rough26","rough27","rough28","rough29","rough30","rough31","rough32","rough33","rough34","rough35","rough36","rough37","g","select4","rough38","rough39","rough40","rough41","rough42","rough43","rough44","rough45","rough46","rough47","rough48","rough49","rough50","rough51","rough52","rough53","rough54","rough55","select5","e","sanitizeText2","select6","rough56","select7","rough57","select8","rough58","rough59","rough60"],"sources":["../../../../node_modules/roughjs/bundled/rough.esm.js","../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-JZLCHNYA.mjs"],"sourcesContent":["function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;e<t.length-1;e++){const s=t[e],n=t[e+1];if(s[1]!==n[1]){const t=Math.min(s[1],n[1]);h.push({ymin:t,ymax:Math.max(s[1],n[1]),x:t===s[1]?s[0]:n[0],islope:(n[0]-s[0])/(n[1]-s[1])})}}if(h.sort(((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!h.length)return a;let r=[],i=h[0].ymin,c=0;for(;r.length||h.length;){if(h.length){let t=-1;for(let e=0;e<h.length&&!(h[e].ymin>i);e++)t=e;h.splice(0,t+1).forEach((t=>{r.push({s:i,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=i))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==n||c%s==0)&&r.length>1)for(let t=0;t<r.length;t+=2){const e=t+1;if(e>=r.length)break;const s=r[t].edge,n=r[e].edge;a.push([[Math.round(s.x),i],[Math.round(n.x),i]])}i+=n,r.forEach((t=>{t.edge.x=t.edge.x+n*t.edge.islope})),c++}return a}(i,r,a);if(h){for(const e of i)t(e,c,-h);!function(e,s,n){const o=[];e.forEach((t=>o.push(...t))),t(o,s,n)}(l,c,-h)}return l}function n(t,e){var n;const o=e.hachureAngle+90;let a=e.hachureGap;a<0&&(a=4*e.strokeWidth),a=Math.round(Math.max(a,.1));let h=1;return e.roughness>=1&&((null===(n=e.randomizer)||void 0===n?void 0:n.next())||Math.random())>.7&&(h=a),s(t,a,o,h||1)}class o{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.renderLines(s,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}function a(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class h extends o{fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth),s=Math.max(s,.1);const o=n(t,Object.assign({},e,{hachureGap:s})),h=Math.PI/180*e.hachureAngle,r=[],i=.5*s*Math.cos(h),c=.5*s*Math.sin(h);for(const[t,e]of o)a([t,e])&&r.push([[t[0]-i,t[1]+c],[...e]],[[t[0]+i,t[1]-c],[...e]]);return{type:\"fillSketch\",ops:this.renderLines(r,e)}}}class r extends o{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,n);return s.ops=s.ops.concat(o.ops),s}}class i{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){const s=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const h=n/4;for(const r of t){const t=a(r),i=t/n,c=Math.ceil(i)-1,l=t-c*n,u=(r[0][0]+r[1][0])/2-n/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t<c;t++){const a=p+l+t*n,r=u-h+2*Math.random()*h,i=a-h+2*Math.random()*h,c=this.helper.ellipse(r,i,o,o,e);s.push(...c.ops)}}return{type:\"fillSketch\",ops:s}}}class c{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.dashedLine(s,e)}}dashedLine(t,e){const s=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,n=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,o=[];return t.forEach((t=>{const h=a(t),r=Math.floor(h/(s+n)),i=(h+n-r*(s+n))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t<r;t++){const a=t*(s+n),h=a+s,r=[c[0]+a*Math.cos(u)+i*Math.cos(u),c[1]+a*Math.sin(u)+i*Math.sin(u)],l=[c[0]+h*Math.cos(u)+i*Math.cos(u),c[1]+h*Math.sin(u)+i*Math.sin(u)];o.push(...this.helper.doubleLineOps(r[0],r[1],l[0],l[1],e))}})),o}}class l{constructor(t){this.helper=t}fillPolygons(t,e){const s=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,o=e.zigzagOffset<0?s:e.zigzagOffset,a=n(t,e=Object.assign({},e,{hachureGap:s+o}));return{type:\"fillSketch\",ops:this.zigzagLines(a,o,e)}}zigzagLines(t,e,s){const n=[];return t.forEach((t=>{const o=a(t),h=Math.round(o/(2*e));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;t<h;t++){const o=2*t*e,a=2*(t+1)*e,h=Math.sqrt(2*Math.pow(e,2)),i=[r[0]+o*Math.cos(c),r[1]+o*Math.sin(c)],l=[r[0]+a*Math.cos(c),r[1]+a*Math.sin(c)],u=[i[0]+h*Math.cos(c+Math.PI/4),i[1]+h*Math.sin(c+Math.PI/4)];n.push(...this.helper.doubleLineOps(i[0],i[1],u[0],u[1],s),...this.helper.doubleLineOps(u[0],u[1],l[0],l[1],s))}})),n}}const u={};class p{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const f=0,d=1,g=2,M={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function k(t,e){return t.type===e}function b(t){const e=[],s=function(t){const e=new Array;for(;\"\"!==t;)if(t.match(/^([ \\t\\r\\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:f,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:d,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:g,text:\"\"},e}(t);let n=\"BOD\",o=0,a=s[o];for(;!k(a,g);){let h=0;const r=[];if(\"BOD\"===n){if(\"M\"!==a.text&&\"m\"!==a.text)return b(\"M0,0\"+t);o++,h=M[a.text],n=a.text}else k(a,d)?h=M[n]:(o++,h=M[a.text],n=a.text);if(!(o+h<s.length))throw new Error(\"Path data ended short\");for(let t=o;t<o+h;t++){const e=s[t];if(!k(e,d))throw new Error(\"Param not a number: \"+n+\",\"+e.text);r[r.length]=+e.text}if(\"number\"!=typeof M[n])throw new Error(\"Bad segment: \"+n);{const t={key:n,data:r};e.push(t),o+=h,a=s[o],\"M\"===n&&(n=\"L\"),\"m\"===n&&(n=\"l\")}}return e}function y(t){let e=0,s=0,n=0,o=0;const a=[];for(const{key:h,data:r}of t)switch(h){case\"M\":a.push({key:\"M\",data:[...r]}),[e,s]=r,[n,o]=r;break;case\"m\":e+=r[0],s+=r[1],a.push({key:\"M\",data:[e,s]}),n=e,o=s;break;case\"L\":a.push({key:\"L\",data:[...r]}),[e,s]=r;break;case\"l\":e+=r[0],s+=r[1],a.push({key:\"L\",data:[e,s]});break;case\"C\":a.push({key:\"C\",data:[...r]}),e=r[4],s=r[5];break;case\"c\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":a.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":a.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],a.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":a.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],a.push({key:\"H\",data:[e]});break;case\"V\":a.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],a.push({key:\"V\",data:[s]});break;case\"S\":a.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":a.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],a.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":a.push({key:\"Z\",data:[]}),e=n,s=o}return a}function m(t){const e=[];let s=\"\",n=0,o=0,a=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,o]=l,[a,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],o=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,o]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,o]});break;case\"V\":o=l[0],e.push({key:\"L\",data:[n,o]});break;case\"S\":{let t=0,a=0;\"C\"===s||\"S\"===s?(t=n+(n-r),a=o+(o-i)):(t=n,a=o),e.push({key:\"C\",data:[t,a,...l]}),r=l[0],i=l[1],n=l[2],o=l[3];break}case\"T\":{const[t,a]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=o+(o-i)):(h=n,c=o);const u=n+2*(h-n)/3,p=o+2*(c-o)/3,f=t+2*(h-t)/3,d=a+2*(c-a)/3;e.push({key:\"C\",data:[u,p,f,d,t,a]}),r=h,i=c,n=t,o=a;break}case\"Q\":{const[t,s,a,h]=l,c=n+2*(t-n)/3,u=o+2*(s-o)/3,p=a+2*(t-a)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,a,h]}),r=t,i=s,n=a,o=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),a=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,o,i,c,i,c]}),n=i,o=c;else if(n!==i||o!==c){x(n,o,i,c,t,s,a,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,o=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=a,o=h}s=c}return e}function w(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function x(t,e,s,n,o,a,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,M=0;if(c)[f,d,g,M]=c;else{[t,e]=w(t,e,-l),[s,n]=w(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(o*o)+c*c/(a*a);u>1&&(u=Math.sqrt(u),o*=u,a*=u);const p=o*o,k=a*a,b=p*k-p*c*c-k*h*h,y=p*c*c+k*h*h,m=(r===i?-1:1)*Math.sqrt(Math.abs(b/y));g=m*o*c/a+(t+s)/2,M=m*-a*h/o+(e+n)/2,f=Math.asin(parseFloat(((e-M)/a).toFixed(9))),d=Math.asin(parseFloat(((n-M)/a).toFixed(9))),t<g&&(f=Math.PI-f),s<g&&(d=Math.PI-d),f<0&&(f=2*Math.PI+f),d<0&&(d=2*Math.PI+d),i&&f>d&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let k=d-f;if(Math.abs(k)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=x(s=g+o*Math.cos(d),n=M+a*Math.sin(d),e,r,o,a,h,0,i,[d,t,g,M])}k=d-f;const b=Math.cos(f),y=Math.sin(f),m=Math.cos(d),P=Math.sin(d),v=Math.tan(k/4),S=4/3*o*v,O=4/3*a*v,L=[t,e],T=[t+S*y,e-O*b],D=[s+S*P,n-O*m],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e<p.length;e+=3){const s=w(p[e][0],p[e][1],l),n=w(p[e+1][0],p[e+1][1],l),o=w(p[e+2][0],p[e+2][1],l);t.push([s[0],s[1],n[0],n[1],o[0],o[1]])}return t}}const P={randOffset:function(t,e){return G(t,e)},randOffsetWithRange:function(t,e,s){return E(t,e,s)},ellipse:function(t,e,s,n,o){const a=T(s,n,o);return D(t,e,o,a).opset},doubleLineOps:function(t,e,s,n,o){return $(t,e,s,n,o,!0)}};function v(t,e,s,n,o){return{type:\"path\",ops:$(t,e,s,n,o)}}function S(t,e,s){const n=(t||[]).length;if(n>2){const o=[];for(let e=0;e<n-1;e++)o.push(...$(t[e][0],t[e][1],t[e+1][0],t[e+1][1],s));return e&&o.push(...$(t[n-1][0],t[n-1][1],t[0][0],t[0][1],s)),{type:\"path\",ops:o}}return 2===n?v(t[0][0],t[0][1],t[1][0],t[1][1],s):{type:\"path\",ops:[]}}function O(t,e,s,n,o){return function(t,e){return S(t,!0,e)}([[t,e],[t+s,e],[t+s,e+n],[t,e+n]],o)}function L(t,e){if(t.length){const s=\"number\"==typeof t[0][0]?[t]:t,n=j(s[0],1*(1+.2*e.roughness),e),o=e.disableMultiStroke?[]:j(s[0],1.5*(1+.22*e.roughness),z(e));for(let t=1;t<s.length;t++){const a=s[t];if(a.length){const t=j(a,1*(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:j(a,1.5*(1+.22*e.roughness),z(e));for(const e of t)\"move\"!==e.op&&n.push(e);for(const t of s)\"move\"!==t.op&&o.push(t)}}return{type:\"path\",ops:n.concat(o)}}return{type:\"path\",ops:[]}}function T(t,e,s){const n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(s.curveStepCount,s.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/o;let h=Math.abs(t/2),r=Math.abs(e/2);const i=1-s.curveFitting;return h+=G(h*i,s),r+=G(r*i,s),{increment:a,rx:h,ry:r}}function D(t,e,s,n){const[o,a]=F(n.increment,t,e,n.rx,n.ry,1,n.increment*E(.1,E(.4,1,s),s),s);let h=q(o,null,s);if(!s.disableMultiStroke&&0!==s.roughness){const[o]=F(n.increment,t,e,n.rx,n.ry,1.5,0,s),a=q(o,null,s);h=h.concat(a)}return{estimatedPoints:a,opset:{type:\"path\",ops:h}}}function A(t,e,s,n,o,a,h,r,i){const c=t,l=e;let u=Math.abs(s/2),p=Math.abs(n/2);u+=G(.01*u,i),p+=G(.01*p,i);let f=o,d=a;for(;f<0;)f+=2*Math.PI,d+=2*Math.PI;d-f>2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=V(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=V(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...$(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...$(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function _(t,e){const s=m(y(b(t))),n=[];let o=[0,0],a=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":a=[h[0],h[1]],o=[h[0],h[1]];break;case\"L\":n.push(...$(a[0],a[1],h[0],h[1],e)),a=[h[0],h[1]];break;case\"C\":{const[t,s,o,r,i,c]=h;n.push(...Z(t,s,o,r,i,c,a,e)),a=[i,c];break}case\"Z\":n.push(...$(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]]}return{type:\"path\",ops:n}}function I(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,o=n.length;if(o>2){s.push({op:\"move\",data:[n[0][0]+G(t,e),n[0][1]+G(t,e)]});for(let a=1;a<o;a++)s.push({op:\"lineTo\",data:[n[a][0]+G(t,e),n[a][1]+G(t,e)]})}}return{type:\"fillPath\",ops:s}}function C(t,e){return function(t,e){let s=t.fillStyle||\"hachure\";if(!u[s])switch(s){case\"zigzag\":u[s]||(u[s]=new h(e));break;case\"cross-hatch\":u[s]||(u[s]=new r(e));break;case\"dots\":u[s]||(u[s]=new i(e));break;case\"dashed\":u[s]||(u[s]=new c(e));break;case\"zigzag-line\":u[s]||(u[s]=new l(e));break;default:s=\"hachure\",u[s]||(u[s]=new o(e))}return u[s]}(e,P).fillPolygons(t,e)}function z(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function W(t){return t.randomizer||(t.randomizer=new p(t.seed||0)),t.randomizer.next()}function E(t,e,s,n=1){return s.roughness*n*(W(s)*(e-t)+t)}function G(t,e,s=1){return E(-t,t,e,s)}function $(t,e,s,n,o,a=!1){const h=a?o.disableMultiStrokeFill:o.disableMultiStroke,r=R(t,e,s,n,o,!0,!1);if(h)return r;const i=R(t,e,s,n,o,!0,!0);return r.concat(i)}function R(t,e,s,n,o,a,h){const r=Math.pow(t-s,2)+Math.pow(e-n,2),i=Math.sqrt(r);let c=1;c=i<200?1:i>500?.4:-.0016668*i+1.233334;let l=o.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*W(o);let f=o.bowing*o.maxRandomnessOffset*(n-e)/200,d=o.bowing*o.maxRandomnessOffset*(t-s)/200;f=G(f,o,c),d=G(d,o,c);const g=[],M=()=>G(u,o,c),k=()=>G(l,o,c),b=o.preserveVertices;return a&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:G(l,o,c)),e+(b?0:G(l,o,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function j(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]),n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]);for(let o=1;o<t.length;o++)n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]),o===t.length-1&&n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]);return q(n,null,s)}function q(t,e,s){const n=t.length,o=[];if(n>3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+2<n;e++){const s=t[e];a[0]=[s[0],s[1]],a[1]=[s[0]+(h*t[e+1][0]-h*t[e-1][0])/6,s[1]+(h*t[e+1][1]-h*t[e-1][1])/6],a[2]=[t[e+1][0]+(h*t[e][0]-h*t[e+2][0])/6,t[e+1][1]+(h*t[e][1]-h*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],o.push({op:\"bcurveTo\",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){const t=s.maxRandomnessOffset;o.push({op:\"lineTo\",data:[e[0]+G(t,s),e[1]+G(t,s)]})}}else 3===n?(o.push({op:\"move\",data:[t[1][0],t[1][1]]}),o.push({op:\"bcurveTo\",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===n&&o.push(...R(t[0][0],t[0][1],t[1][0],t[1][1],s,!0,!0));return o}function F(t,e,s,n,o,a,h,r){const i=[],c=[];if(0===r.roughness){t/=4,c.push([e+n*Math.cos(-t),s+o*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){const t=[e+n*Math.cos(a),s+o*Math.sin(a)];i.push(t),c.push(t)}c.push([e+n*Math.cos(0),s+o*Math.sin(0)]),c.push([e+n*Math.cos(t),s+o*Math.sin(t)])}else{const l=G(.5,r)-Math.PI/2;c.push([G(a,r)+e+.9*n*Math.cos(l-t),G(a,r)+s+.9*o*Math.sin(l-t)]);const u=2*Math.PI+l-.01;for(let h=l;h<u;h+=t){const t=[G(a,r)+e+n*Math.cos(h),G(a,r)+s+o*Math.sin(h)];i.push(t),c.push(t)}c.push([G(a,r)+e+n*Math.cos(l+2*Math.PI+.5*h),G(a,r)+s+o*Math.sin(l+2*Math.PI+.5*h)]),c.push([G(a,r)+e+.98*n*Math.cos(l+h),G(a,r)+s+.98*o*Math.sin(l+h)]),c.push([G(a,r)+e+.9*n*Math.cos(l+.5*h),G(a,r)+s+.9*o*Math.sin(l+.5*h)])}return[c,i]}function V(t,e,s,n,o,a,h,r,i){const c=a+G(.1,i),l=[];l.push([G(r,i)+e+.9*n*Math.cos(c-t),G(r,i)+s+.9*o*Math.sin(c-t)]);for(let a=c;a<=h;a+=t)l.push([G(r,i)+e+n*Math.cos(a),G(r,i)+s+o*Math.sin(a)]);return l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),q(l,null,i)}function Z(t,e,s,n,o,a,h,r){const i=[],c=[r.maxRandomnessOffset||1,(r.maxRandomnessOffset||1)+.3];let l=[0,0];const u=r.disableMultiStroke?1:2,p=r.preserveVertices;for(let f=0;f<u;f++)0===f?i.push({op:\"move\",data:[h[0],h[1]]}):i.push({op:\"move\",data:[h[0]+(p?0:G(c[0],r)),h[1]+(p?0:G(c[0],r))]}),l=p?[o,a]:[o+G(c[f],r),a+G(c[f],r)],i.push({op:\"bcurveTo\",data:[t+G(c[f],r),e+G(c[f],r),s+G(c[f],r),n+G(c[f],r),l[0],l[1]]});return i}function Q(t){return[...t]}function H(t,e=0){const s=t.length;if(s<3)throw new Error(\"A curve must have at least three points.\");const n=[];if(3===s)n.push(Q(t[0]),Q(t[1]),Q(t[2]),Q(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e<t.length;e++)s.push(t[e]),e===t.length-1&&s.push(t[e]);const o=[],a=1-e;n.push(Q(s[0]));for(let t=1;t+2<s.length;t++){const e=s[t];o[0]=[e[0],e[1]],o[1]=[e[0]+(a*s[t+1][0]-a*s[t-1][0])/6,e[1]+(a*s[t+1][1]-a*s[t-1][1])/6],o[2]=[s[t+1][0]+(a*s[t][0]-a*s[t+2][0])/6,s[t+1][1]+(a*s[t][1]-a*s[t+2][1])/6],o[3]=[s[t+1][0],s[t+1][1]],n.push(o[1],o[2],o[3])}}return n}function N(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function B(t,e,s){const n=N(e,s);if(0===n)return N(t,e);let o=((t[0]-e[0])*(s[0]-e[0])+(t[1]-e[1])*(s[1]-e[1]))/n;return o=Math.max(0,Math.min(1,o)),N(t,J(e,s,o))}function J(t,e,s){return[t[0]+(e[0]-t[0])*s,t[1]+(e[1]-t[1])*s]}function K(t,e,s,n){const o=n||[];if(function(t,e){const s=t[e+0],n=t[e+1],o=t[e+2],a=t[e+3];let h=3*n[0]-2*s[0]-a[0];h*=h;let r=3*n[1]-2*s[1]-a[1];r*=r;let i=3*o[0]-2*a[0]-s[0];i*=i;let c=3*o[1]-2*a[1]-s[1];return c*=c,h<i&&(h=i),r<c&&(r=c),h+r}(t,e)<s){const s=t[e+0];if(o.length){(a=o[o.length-1],h=s,Math.sqrt(N(a,h)))>1&&o.push(s)}else o.push(s);o.push(t[e+3])}else{const n=.5,a=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=J(a,h,n),l=J(h,r,n),u=J(r,i,n),p=J(c,l,n),f=J(l,u,n),d=J(p,f,n);K([a,c,p,d],0,s,o),K([d,f,u,i],0,s,o)}var a,h;return o}function U(t,e){return X(t,0,t.length,e)}function X(t,e,s,n,o){const a=o||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;n<s-1;++n){const e=B(t[n],h,r);e>i&&(i=e,c=n)}return Math.sqrt(i)>n?(X(t,e,c+1,n,a),X(t,c,s,n,a)):(a.length||a.push(h),a.push(r)),a}function Y(t,e=.15,s){const n=[],o=(t.length-1)/3;for(let s=0;s<o;s++){K(t,3*s,e,n)}return s&&s>0?X(n,0,n.length,s):n}const tt=\"none\";class et{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,o){const a=this._o(o);return this._d(\"line\",[v(t,e,s,n,a)],a)}rectangle(t,e,s,n,o){const a=this._o(o),h=[],r=O(t,e,s,n,a);if(a.fill){const o=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===a.fillStyle?h.push(I([o],a)):h.push(C([o],a))}return a.stroke!==tt&&h.push(r),this._d(\"rectangle\",h,a)}ellipse(t,e,s,n,o){const a=this._o(o),h=[],r=T(s,n,a),i=D(t,e,a,r);if(a.fill)if(\"solid\"===a.fillStyle){const s=D(t,e,a,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(C([i.estimatedPoints],a));return a.stroke!==tt&&h.push(i.opset),this._d(\"ellipse\",h,a)}circle(t,e,s,n){const o=this.ellipse(t,e,s,s,n);return o.shape=\"circle\",o}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[S(t,!1,s)],s)}arc(t,e,s,n,o,a,h=!1,r){const i=this._o(r),c=[],l=A(t,e,s,n,o,a,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=A(t,e,s,n,o,a,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,o,a,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=G(.01*c,h),l+=G(.01*l,h);let u=o,p=a;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),C([d],h)}(t,e,s,n,o,a,i));return i.stroke!==tt&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],o=L(t,s);if(s.fill&&s.fill!==tt)if(\"solid\"===s.fillStyle){const e=L(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t=\"number\"==typeof o[0][0]?[o]:o;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Y(H([n[0],n[0],n[1],n[2]]),10,(1+s.roughness)/2)):e.push(...Y(H(n),10,(1+s.roughness)/2))}e.length&&n.push(C([e],s))}return s.stroke!==tt&&n.push(o),this._d(\"curve\",n,s)}polygon(t,e){const s=this._o(e),n=[],o=S(t,!0,s);return s.fill&&(\"solid\"===s.fillStyle?n.push(I([t],s)):n.push(C([t],s))),s.stroke!==tt&&n.push(o),this._d(\"polygon\",n,s)}path(t,e){const s=this._o(e),n=[];if(!t)return this._d(\"path\",n,s);t=(t||\"\").replace(/\\n/g,\" \").replace(/(-\\s)/g,\"-\").replace(\"/(ss)/g\",\" \");const o=s.fill&&\"transparent\"!==s.fill&&s.fill!==tt,a=s.stroke!==tt,h=!!(s.simplification&&s.simplification<1),r=function(t,e,s){const n=m(y(b(t))),o=[];let a=[],h=[0,0],r=[];const i=()=>{r.length>=4&&a.push(...Y(r,e)),r=[]},c=()=>{i(),a.length&&(o.push(a),a=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],a.push(h);break;case\"L\":i(),a.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=a.length?a[a.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),a.push([h[0],h[1]])}if(c(),!s)return o;const l=[];for(const t of o){const e=U(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*(s.simplification||1):(1+s.roughness)/2),i=_(t,s);if(o)if(\"solid\"===s.fillStyle)if(1===r.length){const e=_(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else n.push(I(r,s));else n.push(C(r,s));return a&&(h?r.forEach((t=>{n.push(S(t,!1,s))})):n.push(i)),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tt};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:tt,strokeWidth:0,fill:s.fill||tt};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tt,strokeWidth:s,fill:tt}}_mergedShape(t){return t.filter(((t,e)=>0===e||\"move\"!==t.op))}}class st{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,a,o),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,a,o,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,a,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a),a}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a),a}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a),a}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o),o}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const nt=\"http://www.w3.org/2000/svg\";class ot{constructor(t,e){this.svg=t,this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(nt,\"g\"),a=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&o.appendChild(e)}return o}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const o=t.createElementNS(nt,\"path\");return o.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),o.setAttribute(\"stroke\",s.fill||\"\"),o.setAttribute(\"stroke-width\",n+\"\"),o.setAttribute(\"fill\",\"none\"),s.fillLineDash&&o.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&o.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a)}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a)}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a)}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var at={canvas:(t,e)=>new st(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new et(t),newSeed:()=>et.newSeed()};export{at as default};\n","import {\n getSubGraphTitleMargins\n} from \"./chunk-CVBHYZKI.mjs\";\nimport {\n compileStyles,\n solidStateFill,\n styles2String,\n userNodeOverrides\n} from \"./chunk-ATLVNIR6.mjs\";\nimport {\n createText,\n getIconSVG\n} from \"./chunk-JA3XYJ7Z.mjs\";\nimport {\n calculateTextWidth,\n decodeEntities,\n handleUndefinedAttr,\n parseFontSize\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n common_default,\n defaultConfig_default,\n evaluate,\n getConfig,\n getConfig2,\n hasKatex,\n parseGenericTypes,\n renderKatexSanitized,\n sanitizeText,\n sanitizeText2\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/rendering-elements/shapes/util.ts\nimport { select } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes) => {\n let cssClasses;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig2()?.htmlLabels);\n if (!_classes) {\n cssClasses = \"node default\";\n } else {\n cssClasses = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", handleUndefinedAttr(node.labelStyle));\n let label;\n if (node.label === void 0) {\n label = \"\";\n } else {\n label = typeof node.label === \"string\" ? node.label : node.label[0];\n }\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: node.width || getConfig2().flowchart?.wrappingWidth,\n // @ts-expect-error -- This is currently not used. Should this be `classes` instead?\n cssClasses: \"markdown-node-label\",\n style: node.labelStyle,\n addSvgBackground: !!node.icon || !!node.img\n });\n let bbox = text2.getBBox();\n const halfPadding = (node?.padding ?? 0) / 2;\n if (useHtmlLabels) {\n const div = text2.children[0];\n const dv = select(text2);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = label.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig2().fontSize ? getConfig2().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);\n const width = parsedBodyFontSize * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label: labelEl };\n}, \"labelHelper\");\nvar insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {\n const useHtmlLabels = options.useHtmlLabels || evaluate(getConfig2()?.flowchart?.htmlLabels);\n const labelEl = parent.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", options.labelStyle || \"\");\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: options.width || getConfig2()?.flowchart?.wrappingWidth,\n style: options.labelStyle,\n addSvgBackground: !!options.icon || !!options.img\n });\n let bbox = text2.getBBox();\n const halfPadding = options.padding / 2;\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div = text2.children[0];\n const dv = select(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (options.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n}, \"insertLabel\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nvar getNodeClasses = /* @__PURE__ */ __name((node, extra) => (node.look === \"handDrawn\" ? \"rough-node\" : \"node\") + \" \" + node.cssClasses + \" \" + (extra || \"\"), \"getNodeClasses\");\nfunction createPathFromPoints(points) {\n const pointStrings = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x},${p.y}`);\n pointStrings.push(\"Z\");\n return pointStrings.join(\" \");\n}\n__name(createPathFromPoints, \"createPathFromPoints\");\nfunction generateFullSineWavePoints(x1, y1, x2, y2, amplitude, numCycles) {\n const points = [];\n const steps = 50;\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n const cycleLength = deltaX / numCycles;\n const frequency = 2 * Math.PI / cycleLength;\n const midY = y1 + deltaY / 2;\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n const x = x1 + t * deltaX;\n const y = midY + amplitude * Math.sin(frequency * (x - x1));\n points.push({ x, y });\n }\n return points;\n}\n__name(generateFullSineWavePoints, \"generateFullSineWavePoints\");\nfunction generateCirclePoints(centerX, centerY, radius, numPoints, startAngle, endAngle) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints, \"generateCirclePoints\");\n\n// src/rendering-util/rendering-elements/clusters.js\nimport { select as select3 } from \"d3\";\nimport rough from \"roughjs\";\n\n// src/rendering-util/rendering-elements/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point) => {\n var x = node.x;\n var y = node.y;\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/rendering-util/rendering-elements/createLabel.js\nimport { select as select2 } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n__name(applyStyle, \"applyStyle\");\nasync function addHtmlLabel(node) {\n const fo = select2(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const config = getConfig2();\n let label = node.label;\n if (node.label && hasKatex(node.label)) {\n label = await renderKatexSanitized(node.label.replace(common_default.lineBreakRegex, \"\\n\"), config);\n }\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n const labelSpan = '<span class=\"' + labelClass + '\" ' + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : \"\") + // codeql [js/html-constructed-from-input] : false positive\n \">\" + label + \"</span>\";\n div.html(sanitizeText(labelSpan, config));\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"padding-right\", \"1px\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name(async (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"<br />\");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n labelStyle: style ? style.replace(\"fill:\", \"color:\") : style\n };\n let vertexNode = await addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/rendering-util/rendering-elements/shapes/roundedRectPath.ts\nvar createRoundedRectPathD = /* @__PURE__ */ __name((x, y, totalWidth, totalHeight, radius) => [\n \"M\",\n x + radius,\n y,\n // Move to the first point\n \"H\",\n x + totalWidth - radius,\n // Draw horizontal line to the beginning of the right corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius,\n // Draw arc to the right top corner\n \"V\",\n y + totalHeight - radius,\n // Draw vertical line down to the beginning of the right bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight,\n // Draw arc to the right bottom corner\n \"H\",\n x + radius,\n // Draw horizontal line to the beginning of the left bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius,\n // Draw arc to the left bottom corner\n \"V\",\n y + radius,\n // Draw vertical line up to the beginning of the left top corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y,\n // Draw arc to the left top corner\n \"Z\"\n // Close the path\n].join(\" \"), \"createRoundedRectPathD\");\n\n// src/rendering-util/rendering-elements/clusters.js\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"rect\");\nvar noteGroup = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n}, \"noteGroup\");\nvar roundedWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n let innerRect = shapeSvg.append(\"rect\");\n const text2 = label.node().appendChild(await createLabel_default(node.label, node.labelStyle, void 0, true));\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n let rect2;\n if (node.look === \"handDrawn\") {\n const isAlt = node.cssClasses.includes(\"statediagram-cluster-alt\");\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = node.rx || node.ry ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n }) : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? \"hachure\" : \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"outer\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", x).attr(\"y\", innerY).attr(\"width\", width).attr(\"height\", innerHeight);\n }\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"roundedWithTitle\");\nvar kanbanSection = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 4,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"kanbanSection\");\nvar divider = /* @__PURE__ */ __name((parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const padding = 0 * node.padding;\n const width = node.width + padding;\n node.diff = -node.padding;\n const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: \"lightgrey\",\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"divider\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n }\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = 0;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: {} };\n}, \"divider\");\nvar squareRect = rect;\nvar shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection\n};\nvar clusterElems = /* @__PURE__ */ new Map();\nvar insertCluster = /* @__PURE__ */ __name(async (elem, node) => {\n const shape = node.shape || \"rect\";\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n}, \"insertCluster\");\nvar clear = /* @__PURE__ */ __name(() => {\n clusterElems = /* @__PURE__ */ new Map();\n}, \"clear\");\n\n// src/rendering-util/rendering-elements/intersect/intersect-node.js\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/rendering-util/rendering-elements/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point.x;\n var py = cy - point.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/rendering-util/rendering-elements/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point) {\n return intersect_ellipse_default(node, rx, rx, point);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/rendering-util/rendering-elements/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n {\n const a1 = p2.y - p1.y;\n const b1 = p1.x - p2.x;\n const c1 = p2.x * p1.y - p1.x * p2.y;\n const r3 = a1 * q1.x + b1 * q1.y + c1;\n const r4 = a1 * q2.x + b1 * q2.y + c1;\n const epsilon = 1e-6;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n const a2 = q2.y - q1.y;\n const b2 = q1.x - q2.x;\n const c2 = q2.x * q1.y - q1.x * q2.y;\n const r1 = a2 * p1.x + b2 * p1.y + c2;\n const r2 = a2 * p2.x + b2 * p2.y + c2;\n if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {\n return;\n }\n const denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n const offset = Math.abs(denom / 2);\n let num = b1 * c2 - b2 * c1;\n const x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n const y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n }\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/rendering-util/rendering-elements/intersect/intersect-polygon.js\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n let intersections = [];\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let intersect = intersect_line_default(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\nvar intersect_polygon_default = intersectPolygon;\n\n// src/rendering-util/rendering-elements/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/rendering-util/rendering-elements/shapes/anchor.ts\nimport rough2 from \"roughjs\";\nfunction anchor(parent, node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = \"anchor\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const radius = 1;\n const { cssStyles } = node;\n const rc = rough2.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"black\", stroke: \"none\", fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"anchor\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(anchor, \"anchor\");\n\n// src/rendering-util/rendering-elements/shapes/bowTieRect.ts\nimport rough3 from \"roughjs\";\nfunction generateArcPoints(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints, \"generateArcPoints\");\nasync function bowTieRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding + 20;\n const h = bbox.height + node.padding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const { cssStyles } = node;\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true)\n ];\n const rc = rough3.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, \":first-child\");\n bowTieRectShape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n bowTieRectShape.attr(\"transform\", `translate(${rx / 2}, 0)`);\n updateNodeBounds(node, bowTieRectShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(bowTieRect, \"bowTieRect\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nimport rough4 from \"roughjs\";\n\n// src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nasync function card(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const padding = 12;\n const w = bbox.width + node.padding + padding;\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + padding, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + padding },\n { x: left + padding, y: top }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough4.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(card, \"card\");\n\n// src/rendering-util/rendering-elements/shapes/choice.ts\nimport rough5 from \"roughjs\";\nfunction choice(parent, node) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const s = Math.max(28, node.width ?? 0);\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const rc = rough5.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = 28;\n node.height = 28;\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(choice, \"choice\");\n\n// src/rendering-util/rendering-elements/shapes/circle.ts\nimport rough6 from \"roughjs\";\nasync function circle(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const padding = options?.padding ?? halfPadding;\n const radius = bbox.width / 2 + padding;\n let circleElem;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough6.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options2);\n circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg.insert(\"circle\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"r\", radius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleElem);\n node.calcIntersect = function(bounds, point) {\n const radius2 = bounds.width / 2;\n return intersect_default.circle(bounds, radius2, point);\n };\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(circle, \"circle\");\n\n// src/rendering-util/rendering-elements/shapes/crossedCircle.ts\nimport rough7 from \"roughjs\";\nfunction createLine(r) {\n const xAxis45 = Math.cos(Math.PI / 4);\n const yAxis45 = Math.sin(Math.PI / 4);\n const lineLength = r * 2;\n const pointQ1 = { x: lineLength / 2 * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 };\n const pointQ4 = { x: lineLength / 2 * xAxis45, y: -(lineLength / 2) * yAxis45 };\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n__name(createLine, \"createLine\");\nfunction crossedCircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n const rc = rough7.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n const crossedCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n crossedCircle2.insert(() => lineNode);\n if (cssStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, crossedCircle2);\n node.intersect = function(point) {\n log.info(\"crossedCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(crossedCircle, \"crossedCircle\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts\nimport rough8 from \"roughjs\";\nfunction generateCirclePoints2(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints2, \"generateCirclePoints\");\nasync function curlyBraceLeft(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints2(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints2(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints2(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints2(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius }\n ];\n const rc = rough8.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace(\"Z\", \"\");\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceLeftShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, \":first-child\");\n curlyBraceLeftShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceLeftShape.attr(\"transform\", `translate(${radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceLeftShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceLeft, \"curlyBraceLeft\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts\nimport rough9 from \"roughjs\";\nfunction generateCirclePoints3(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateCirclePoints3, \"generateCirclePoints\");\nasync function curlyBraceRight(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius }\n ];\n const rc = rough9.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace(\"Z\", \"\");\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceRightShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, \":first-child\");\n curlyBraceRightShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceRightShape.attr(\"transform\", `translate(${-radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceRightShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceRight, \"curlyBraceRight\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraces.ts\nimport rough10 from \"roughjs\";\nfunction generateCirclePoints4(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints4, \"generateCirclePoints\");\nasync function curlyBraces(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const leftCurlyBracePoints = [\n ...generateCirclePoints4(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rightCurlyBracePoints = [\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints4(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rc = rough10.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace(\"Z\", \"\");\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace(\"Z\", \"\");\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBracesShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, \":first-child\");\n curlyBracesShape.insert(() => rightCurlyBraceNode, \":first-child\");\n curlyBracesShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBracesShape.attr(\"transform\", `translate(${radius - radius / 4}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBracesShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraces, \"curlyBraces\");\n\n// src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts\nimport rough11 from \"roughjs\";\nasync function curvedTrapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 80, minHeight = 20;\n const w = Math.max(minWidth, (bbox.width + (node.padding ?? 0) * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough11.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const totalWidth = w, totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curvedTrapezoid, \"curvedTrapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/cylinder.ts\nimport rough12 from \"roughjs\";\nvar createCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function cylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + node.padding, node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + node.padding, node.height ?? 0);\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough12.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(cylinder, \"cylinder\");\n\n// src/rendering-util/rendering-elements/shapes/dividedRect.ts\nimport rough13 from \"roughjs\";\nasync function dividedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const rectOffset = h * 0.2;\n const x = -w / 2;\n const y = -h / 2 - rectOffset / 2;\n const { cssStyles } = node;\n const rc = rough13.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pts = [\n { x, y: y + rectOffset },\n { x: -x, y: y + rectOffset },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset }\n ];\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n const polygon = shapeSvg.insert(() => poly, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(dividedRectangle, \"dividedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/doubleCircle.ts\nimport rough14 from \"roughjs\";\nasync function doublecircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const gap = 5;\n const outerRadius = bbox.width / 2 + halfPadding + gap;\n const innerRadius = bbox.width / 2 + halfPadding;\n let circleGroup;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough14.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n circleGroup.attr(\"class\", handleUndefinedAttr(node.cssClasses)).attr(\"style\", handleUndefinedAttr(cssStyles));\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\", \":first-child\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n outerCircle.attr(\"class\", \"outer-circle\").attr(\"style\", nodeStyles).attr(\"r\", outerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n innerCircle.attr(\"class\", \"inner-circle\").attr(\"style\", nodeStyles).attr(\"r\", innerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleGroup);\n node.intersect = function(point) {\n log.info(\"DoubleCircle intersect\", node, outerRadius, point);\n return intersect_default.circle(node, outerRadius, point);\n };\n return shapeSvg;\n}\n__name(doublecircle, \"doublecircle\");\n\n// src/rendering-util/rendering-elements/shapes/filledCircle.ts\nimport rough15 from \"roughjs\";\nfunction filledCircle(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n const rc = rough15.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const filledCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n filledCircle2.selectAll(\"path\").attr(\"style\", `fill: ${nodeBorder} !important;`);\n if (cssStyles && cssStyles.length > 0 && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, filledCircle2);\n node.intersect = function(point) {\n log.info(\"filledCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(filledCircle, \"filledCircle\");\n\n// src/rendering-util/rendering-elements/shapes/flippedTriangle.ts\nimport rough16 from \"roughjs\";\nasync function flippedTriangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 }\n ];\n const { cssStyles } = node;\n const rc = rough16.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const flippedTriangle2 = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, flippedTriangle2);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(flippedTriangle, \"flippedTriangle\");\n\n// src/rendering-util/rendering-elements/shapes/forkJoin.ts\nimport rough17 from \"roughjs\";\nfunction forkJoin(parent, node, { dir, config: { state: state2, themeVariables } }) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n if (dir === \"LR\") {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n const x = -1 * width / 2;\n const y = -1 * height / 2;\n const rc = rough17.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.rectangle(x, y, width, height, options);\n const shape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, shape);\n const padding = state2?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(forkJoin, \"forkJoin\");\n\n// src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts\nimport rough18 from \"roughjs\";\nasync function halfRoundedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 80, minHeight = 50;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough18.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { radius, point });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(halfRoundedRectangle, \"halfRoundedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/hexagon.ts\nimport rough19 from \"roughjs\";\nasync function hexagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + (node.padding ?? 0);\n const w = bbox.width + (node.padding ?? 0) * 2.5;\n const { cssStyles } = node;\n const rc = rough19.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let halfWidth = w / 2;\n const m = halfWidth / 6;\n halfWidth = halfWidth + m;\n const halfHeight = h / 2;\n const fixedLength = halfHeight / 2;\n const deducedWidth = halfWidth - fixedLength;\n const points = [\n { x: -deducedWidth, y: -halfHeight },\n { x: 0, y: -halfHeight },\n { x: deducedWidth, y: -halfHeight },\n { x: halfWidth, y: 0 },\n { x: deducedWidth, y: halfHeight },\n { x: 0, y: halfHeight },\n { x: -deducedWidth, y: halfHeight },\n { x: -halfWidth, y: 0 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(hexagon, \"hexagon\");\n\n// src/rendering-util/rendering-elements/shapes/hourglass.ts\nimport rough20 from \"roughjs\";\nasync function hourglass(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough20.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { points });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(hourglass, \"hourglass\");\n\n// src/rendering-util/rendering-elements/shapes/icon.ts\nimport rough21 from \"roughjs\";\nasync function icon(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const topLabel = node.pos === \"t\";\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough21.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: \"none\", fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const iconNode = rc.rectangle(x, y, width, height, options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(icon, \"icon\");\n\n// src/rendering-util/rendering-elements/shapes/iconCircle.ts\nimport rough22 from \"roughjs\";\nasync function iconCircle(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const padding = 20;\n const labelPadding = node.label ? 8 : 0;\n const topLabel = node.pos === \"t\";\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const rc = rough22.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconElem = shapeSvg.append(\"g\");\n if (node.icon) {\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n }\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding * 2;\n const iconNode = rc.circle(0, 0, diameter, options);\n const outerWidth = Math.max(diameter, bbox.width);\n const outerHeight = diameter + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconCircle, \"iconCircle\");\n\n// src/rendering-util/rendering-elements/shapes/iconRounded.ts\nimport rough23 from \"roughjs\";\nasync function iconRounded(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough23.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 5), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\").attr(\"class\", \"icon-shape2\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconRounded, \"iconRounded\");\n\n// src/rendering-util/rendering-elements/shapes/iconSquare.ts\nimport rough24 from \"roughjs\";\nasync function iconSquare(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough24.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 0.1), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconSquare, \"iconSquare\");\n\n// src/rendering-util/rendering-elements/shapes/imageSquare.ts\nimport rough25 from \"roughjs\";\nasync function imageSquare(parent, node, { config: { flowchart } }) {\n const img = new Image();\n img.src = node?.img ?? \"\";\n await img.decode();\n const imageNaturalWidth = Number(img.naturalWidth.toString().replace(\"px\", \"\"));\n const imageNaturalHeight = Number(img.naturalHeight.toString().replace(\"px\", \"\"));\n node.imageAspectRatio = imageNaturalWidth / imageNaturalHeight;\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const defaultWidth = flowchart?.wrappingWidth;\n node.defaultWidth = flowchart?.wrappingWidth;\n const imageRawWidth = Math.max(\n node.label ? defaultWidth ?? 0 : 0,\n node?.assetWidth ?? imageNaturalWidth\n );\n const imageWidth = node.constraint === \"on\" ? node?.assetHeight ? node.assetHeight * node.imageAspectRatio : imageRawWidth : imageRawWidth;\n const imageHeight = node.constraint === \"on\" ? imageWidth / node.imageAspectRatio : node?.assetHeight ?? imageNaturalHeight;\n node.width = Math.max(imageWidth, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"image-shape default\");\n const topLabel = node.pos === \"t\";\n const x = -imageWidth / 2;\n const y = -imageHeight / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough25.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const imageNode = rc.rectangle(x, y, imageWidth, imageHeight, options);\n const outerWidth = Math.max(imageWidth, bbox.width);\n const outerHeight = imageHeight + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"none\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => imageNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.img) {\n const image = shapeSvg.append(\"image\");\n image.attr(\"href\", node.img);\n image.attr(\"width\", imageWidth);\n image.attr(\"height\", imageHeight);\n image.attr(\"preserveAspectRatio\", \"none\");\n image.attr(\n \"transform\",\n `translate(${-imageWidth / 2},${topLabel ? outerHeight / 2 - imageHeight : -outerHeight / 2})`\n );\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -imageHeight / 2 - bbox.height / 2 - labelPadding / 2 : imageHeight / 2 - bbox.height / 2 + labelPadding / 2})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(imageSquare, \"imageSquare\");\n\n// src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts\nimport rough26 from \"roughjs\";\nasync function inv_trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: -3 * h / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough26.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(inv_trapezoid, \"inv_trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/drawRect.ts\nimport rough27 from \"roughjs\";\nasync function drawRect(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0);\n const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n let rect2;\n let { rx, ry } = node;\n const { cssStyles } = node;\n if (options?.rx && options.ry) {\n rx = options.rx;\n ry = options.ry;\n }\n if (node.look === \"handDrawn\") {\n const rc = rough27.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", handleUndefinedAttr(rx)).attr(\"ry\", handleUndefinedAttr(ry)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n }\n updateNodeBounds(node, rect2);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(drawRect, \"drawRect\");\n\n// src/rendering-util/rendering-elements/shapes/labelRect.ts\nasync function labelRect(parent, node) {\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"label\");\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0.1;\n const totalHeight = 0.1;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(labelRect, \"labelRect\");\n\n// src/rendering-util/rendering-elements/shapes/leanLeft.ts\nimport rough28 from \"roughjs\";\nasync function lean_left(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: -(3 * h) / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough28.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_left, \"lean_left\");\n\n// src/rendering-util/rendering-elements/shapes/leanRight.ts\nimport rough29 from \"roughjs\";\nasync function lean_right(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough29.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_right, \"lean_right\");\n\n// src/rendering-util/rendering-elements/shapes/lightningBolt.ts\nimport rough30 from \"roughjs\";\nfunction lightningBolt(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const width = Math.max(35, node?.width ?? 0);\n const height = Math.max(35, node?.height ?? 0);\n const gap = 7;\n const points = [\n { x: width, y: 0 },\n { x: 0, y: height + gap / 2 },\n { x: width - 2 * gap, y: height + gap / 2 },\n { x: 0, y: 2 * height },\n { x: width, y: height - gap / 2 },\n { x: 2 * gap, y: height - gap / 2 }\n ];\n const rc = rough30.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const linePath = createPathFromPoints(points);\n const lineNode = rc.path(linePath, options);\n const lightningBolt2 = shapeSvg.insert(() => lineNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n lightningBolt2.attr(\"transform\", `translate(-${width / 2},${-height})`);\n updateNodeBounds(node, lightningBolt2);\n node.intersect = function(point) {\n log.info(\"lightningBolt intersect\", node, point);\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(lightningBolt, \"lightningBolt\");\n\n// src/rendering-util/rendering-elements/shapes/linedCylinder.ts\nimport rough31 from \"roughjs\";\nvar createCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function linedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + (node.padding ?? 0), node.height ?? 0);\n const outerOffset = h * 0.1;\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough31.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n const innerPathData = createInnerCylinderPathD2(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, options);\n const innerLineEl = shapeSvg.insert(() => innerLine, \":first-child\");\n innerLineEl.attr(\"class\", \"line\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(linedCylinder, \"linedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts\nimport rough32 from \"roughjs\";\nasync function linedWaveEdgedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough32.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2, y: -finalH / 2 },\n { x: -w / 2, y: finalH / 2 * 1.1 },\n { x: -w / 2, y: -finalH / 2 }\n ];\n const poly = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const waveEdgeRect = shapeSvg.insert(() => poly, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) + w / 2 * 0.1 / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(linedWaveEdgedRect, \"linedWaveEdgedRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiRect.ts\nimport rough33 from \"roughjs\";\nasync function multiRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough33.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y },\n { x, y }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, { ...options, fill: \"none\" });\n const multiRect2 = shapeSvg.insert(() => innerNode, \":first-child\");\n multiRect2.insert(() => outerNode, \":first-child\");\n multiRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, multiRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiRect, \"multiRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts\nimport rough34 from \"roughjs\";\nasync function multiWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const x = -w / 2;\n const y = -finalH / 2;\n const rectOffset = 5;\n const { cssStyles } = node;\n const wavePoints = generateFullSineWavePoints(\n x - rectOffset,\n y + finalH + rectOffset,\n x + w - rectOffset,\n y + finalH + rectOffset,\n waveAmplitude,\n 0.8\n );\n const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + finalH + rectOffset },\n ...wavePoints,\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y },\n { x, y }\n ];\n const rc = rough34.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, options);\n const shape = shapeSvg.insert(() => outerNode, \":first-child\");\n shape.insert(() => innerNode);\n shape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n shape.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, shape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiWaveEdgedRectangle, \"multiWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/note.ts\nimport rough35 from \"roughjs\";\nasync function note(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart?.htmlLabels !== false;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n const rc = rough35.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n fill: themeVariables.noteBkgColor,\n stroke: themeVariables.noteBorderColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const noteShapeNode = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => noteShapeNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(note, \"note\");\n\n// src/rendering-util/rendering-elements/shapes/question.ts\nimport rough36 from \"roughjs\";\nvar createDecisionBoxPathD = /* @__PURE__ */ __name((x, y, size) => {\n return [\n `M${x + size / 2},${y}`,\n `L${x + size},${y - size / 2}`,\n `L${x + size / 2},${y - size}`,\n `L${x},${y - size / 2}`,\n \"Z\"\n ].join(\" \");\n}, \"createDecisionBoxPathD\");\nasync function question(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const adjustment = 0.5;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough36.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createDecisionBoxPathD(0, 0, s);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, s, s, points);\n polygon.attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.calcIntersect = function(bounds, point) {\n const s2 = bounds.width;\n const points2 = [\n { x: s2 / 2, y: 0 },\n { x: s2, y: -s2 / 2 },\n { x: s2 / 2, y: -s2 },\n { x: 0, y: -s2 / 2 }\n ];\n const res = intersect_default.polygon(bounds, points2, point);\n return { x: res.x - 0.5, y: res.y - 0.5 };\n };\n node.intersect = function(point) {\n return this.calcIntersect(node, point);\n };\n return shapeSvg;\n}\n__name(question, \"question\");\n\n// src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts\nimport rough37 from \"roughjs\";\nasync function rect_left_inv_arrow(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const notch = y / 2;\n const points = [\n { x: x + notch, y },\n { x, y: 0 },\n { x: x + notch, y: -y },\n { x: -x, y: -y },\n { x: -x, y }\n ];\n const { cssStyles } = node;\n const rc = rough37.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-notch / 2},0)`);\n label.attr(\n \"transform\",\n `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(rect_left_inv_arrow, \"rect_left_inv_arrow\");\n\n// src/rendering-util/rendering-elements/shapes/rectWithTitle.ts\nimport { select as select4 } from \"d3\";\nimport rough38 from \"roughjs\";\nasync function rectWithTitle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n let classes;\n if (!node.cssClasses) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.cssClasses;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const g = shapeSvg.insert(\"g\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", nodeStyles);\n const description = node.description;\n const title = node.label;\n const text2 = label.node().appendChild(await createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div2 = text2.children[0];\n const dv2 = select4(text2);\n bbox = div2.getBoundingClientRect();\n dv2.attr(\"width\", bbox.width);\n dv2.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", description);\n const textRows = description || [];\n const titleBox = text2.getBBox();\n const descr = label.node().appendChild(\n await createLabel_default(\n textRows.join ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n const halfPadding = (node.padding || 0) / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text2).attr(\n \"transform\",\n \"translate( \" + (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect2;\n let innerLine;\n if (node.look === \"handDrawn\") {\n const rc = rough38.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n innerLine = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughLine;\n }, \":first-child\");\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n } else {\n rect2 = g.insert(\"rect\", \":first-child\");\n innerLine = g.insert(\"line\");\n rect2.attr(\"class\", \"outer title-state\").attr(\"style\", nodeStyles).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + (node.padding || 0)).attr(\"height\", bbox.height + (node.padding || 0));\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(rectWithTitle, \"rectWithTitle\");\n\n// src/rendering-util/rendering-elements/shapes/roundedRect.ts\nimport rough39 from \"roughjs\";\nfunction generateArcPoints2(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints2, \"generateArcPoints\");\nasync function roundedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node?.padding ?? 0;\n const labelPaddingY = node?.padding ?? 0;\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const radius = node.radius || 5;\n const taper = node.taper || 5;\n const { cssStyles } = node;\n const rc = rough39.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.stroke) {\n options.stroke = node.stroke;\n }\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n // Top edge (left to right)\n { x: -w / 2 + taper, y: -h / 2 },\n // Top-left corner start (1)\n { x: w / 2 - taper, y: -h / 2 },\n // Top-right corner start (2)\n ...generateArcPoints2(w / 2 - taper, -h / 2, w / 2, -h / 2 + taper, radius, radius, true),\n // Top-left arc (2 to 3)\n // Right edge (top to bottom)\n { x: w / 2, y: -h / 2 + taper },\n // Top-right taper point (3)\n { x: w / 2, y: h / 2 - taper },\n // Bottom-right taper point (4)\n ...generateArcPoints2(w / 2, h / 2 - taper, w / 2 - taper, h / 2, radius, radius, true),\n // Top-left arc (4 to 5)\n // Bottom edge (right to left)\n { x: w / 2 - taper, y: h / 2 },\n // Bottom-right corner start (5)\n { x: -w / 2 + taper, y: h / 2 },\n // Bottom-left corner start (6)\n ...generateArcPoints2(-w / 2 + taper, h / 2, -w / 2, h / 2 - taper, radius, radius, true),\n // Top-left arc (4 to 5)\n // Left edge (bottom to top)\n { x: -w / 2, y: h / 2 - taper },\n // Bottom-left taper point (7)\n { x: -w / 2, y: -h / 2 + taper },\n // Top-left taper point (8)\n ...generateArcPoints2(-w / 2, -h / 2 + taper, -w / 2 + taper, -h / 2, radius, radius, true)\n // Top-left arc (4 to 5)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough40 from \"roughjs\";\nasync function shadedProcess(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = node?.padding ?? 0;\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const { cssStyles } = node;\n const rc = rough40.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x: x + w + 8, y },\n { x: x + w + 8, y: y + h },\n { x: x - 8, y: y + h },\n { x: x - 8, y },\n { x, y },\n { x, y: y + h }\n ];\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(shadedProcess, \"shadedProcess\");\n\n// src/rendering-util/rendering-elements/shapes/slopedRect.ts\nimport rough41 from \"roughjs\";\nasync function slopedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough41.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(0, ${h / 4})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(slopedRect, \"slopedRect\");\n\n// src/rendering-util/rendering-elements/shapes/squareRect.ts\nasync function squareRect2(parent, node) {\n const options = {\n rx: 0,\n ry: 0,\n classes: \"\",\n labelPaddingX: node.labelPaddingX ?? (node?.padding || 0) * 2,\n labelPaddingY: (node?.padding || 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough42 from \"roughjs\";\nasync function stadium(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough42.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 + radius, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2 - radius, 0, radius, 50, 270, 450)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(stadium, \"stadium\");\n\n// src/rendering-util/rendering-elements/shapes/state.ts\nasync function state(parent, node) {\n const options = {\n rx: 5,\n ry: 5,\n classes: \"flowchart-node\"\n };\n return drawRect(parent, node, options);\n}\n__name(state, \"state\");\n\n// src/rendering-util/rendering-elements/shapes/stateEnd.ts\nimport rough43 from \"roughjs\";\nfunction stateEnd(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const rc = rough43.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.circle(0, 0, 14, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2\n });\n const innerFill = stateBorder ?? nodeBorder;\n const roughInnerNode = rc.circle(0, 0, 5, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: \"solid\"\n });\n const circle2 = shapeSvg.insert(() => roughNode, \":first-child\");\n circle2.insert(() => roughInnerNode);\n if (cssStyles) {\n circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough44 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n const { lineColor } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let circle2;\n if (node.look === \"handDrawn\") {\n const rc = rough44.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n circle2 = shapeSvg.insert(() => roughNode);\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n } else {\n circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough45 from \"roughjs\";\nasync function subroutine(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = (node?.padding || 0) / 2;\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n if (node.look === \"handDrawn\") {\n const rc = rough45.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.rectangle(x - 8, y, w + 16, h, options);\n const l1 = rc.line(x, y, x, y + h, options);\n const l2 = rc.line(x + w, y, x + w, y + h, options);\n shapeSvg.insert(() => l1, \":first-child\");\n shapeSvg.insert(() => l2, \":first-child\");\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n const { cssStyles } = node;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect2);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(subroutine, \"subroutine\");\n\n// src/rendering-util/rendering-elements/shapes/taggedRect.ts\nimport rough46 from \"roughjs\";\nasync function taggedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const tagWidth = 0.2 * h;\n const tagHeight = 0.2 * h;\n const { cssStyles } = node;\n const rc = rough46.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h }\n ];\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: \"solid\" });\n const taggedRect2 = shapeSvg.insert(() => tagNode, \":first-child\");\n taggedRect2.insert(() => rectNode, \":first-child\");\n taggedRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, taggedRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedRect, \"taggedRect\");\n\n// src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts\nimport rough47 from \"roughjs\";\nasync function taggedWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough47.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 }\n ];\n const x = -w / 2 + w / 2 * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.4 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.3,\n x + w - tagWidth,\n (y + h) * 1.5,\n -h * 0.03,\n 0.5\n )\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: \"solid\"\n });\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, \":first-child\");\n waveEdgeRect.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedWaveEdgedRectangle, \"taggedWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/text.ts\nasync function text(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + node.padding, node?.width || 0);\n const totalHeight = Math.max(bbox.height + node.padding, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"text\").attr(\"style\", nodeStyles).attr(\"rx\", 0).attr(\"ry\", 0).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(text, \"text\");\n\n// src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts\nimport rough48 from \"roughjs\";\nvar createCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function tiltedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label, halfPadding } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const labelPadding = node.look === \"neo\" ? halfPadding * 2 : halfPadding;\n const h = bbox.height + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = bbox.width + rx + labelPadding;\n const { cssStyles } = node;\n let cylinder2;\n if (node.look === \"handDrawn\") {\n const rc = rough48.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD3(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD3(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD3(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n }\n cylinder2.attr(\"label-offset-x\", rx);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${h / 2} )`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, cylinder2);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n if (ry != 0 && (Math.abs(y) < (node.height ?? 0) / 2 || Math.abs(y) == (node.height ?? 0) / 2 && Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx)) {\n let x = rx * rx * (1 - y * y / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(Math.abs(x));\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n pos.x += x;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(tiltedCylinder, \"tiltedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoid.ts\nimport rough49 from \"roughjs\";\nasync function trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough49.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(trapezoid, \"trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts\nimport rough50 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 60, minHeight = 20;\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough50.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 * 0.8, y: -h / 2 },\n { x: w / 2 * 0.8, y: -h / 2 },\n { x: w / 2, y: -h / 2 * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: -h / 2 * 0.6 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(trapezoidalPentagon, \"trapezoidalPentagon\");\n\n// src/rendering-util/rendering-elements/shapes/triangle.ts\nimport rough51 from \"roughjs\";\nasync function triangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h }\n ];\n const { cssStyles } = node;\n const rc = rough51.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(triangle, \"triangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts\nimport rough52 from \"roughjs\";\nasync function waveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const minWidth = 70;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n const rc = rough52.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 }\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveEdgedRectangle, \"waveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveRectangle.ts\nimport rough53 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 100;\n const minHeight = 50;\n const baseWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const baseHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const aspectRatio = baseWidth / baseHeight;\n let w = baseWidth;\n let h = baseHeight;\n if (w > h * aspectRatio) {\n h = w / aspectRatio;\n } else {\n w = h * aspectRatio;\n }\n w = Math.max(w, minWidth);\n h = Math.max(h, minHeight);\n const waveAmplitude = Math.min(h * 0.2, h / 4);\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n const rc = rough53.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1)\n ];\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n const waveRect = shapeSvg.insert(() => waveRectNode, \":first-child\");\n waveRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, waveRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveRectangle, \"waveRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/windowPane.ts\nimport rough54 from \"roughjs\";\nasync function windowPane(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough54.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset }\n ];\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const no = rc.path(path, options);\n const windowPane2 = shapeSvg.insert(() => no, \":first-child\");\n windowPane2.attr(\"transform\", `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n windowPane2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, windowPane2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(windowPane, \"windowPane\");\n\n// src/rendering-util/rendering-elements/shapes/erBox.ts\nimport rough55 from \"roughjs\";\nimport { select as select5 } from \"d3\";\nasync function erBox(parent, node) {\n const entityNode = node;\n if (entityNode.alias) {\n node.label = entityNode.alias;\n }\n if (node.look === \"handDrawn\") {\n const { themeVariables: themeVariables2 } = getConfig();\n const { background } = themeVariables2;\n const backgroundNode = {\n ...node,\n id: node.id + \"-background\",\n look: \"default\",\n cssStyles: [\"stroke: none\", `fill: ${background}`]\n };\n await erBox(parent, backgroundNode);\n }\n const config = getConfig();\n node.useHtmlLabels = config.htmlLabels;\n let PADDING = config.er?.diagramPadding ?? 10;\n let TEXT_PADDING = config.er?.entityPadding ?? 6;\n const { cssStyles } = node;\n const { labelStyles, nodeStyles } = styles2String(node);\n if (entityNode.attributes.length === 0 && node.label) {\n const options2 = {\n rx: 0,\n ry: 0,\n labelPaddingX: PADDING,\n labelPaddingY: PADDING * 1.5,\n classes: \"\"\n };\n if (calculateTextWidth(node.label, config) + options2.labelPaddingX * 2 < config.er.minEntityWidth) {\n node.width = config.er.minEntityWidth;\n }\n const shapeSvg2 = await drawRect(parent, node, options2);\n if (!evaluate(config.htmlLabels)) {\n const textElement = shapeSvg2.select(\"text\");\n const bbox = textElement.node()?.getBBox();\n textElement.attr(\"transform\", `translate(${-bbox.width / 2}, 0)`);\n }\n return shapeSvg2;\n }\n if (!config.htmlLabels) {\n PADDING *= 1.25;\n TEXT_PADDING *= 1.25;\n }\n let cssClasses = getNodeClasses(node);\n if (!cssClasses) {\n cssClasses = \"node default\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const nameBBox = await addText(shapeSvg, node.label ?? \"\", config, 0, 0, [\"name\"], labelStyles);\n nameBBox.height += TEXT_PADDING;\n let yOffset = 0;\n const yOffsets = [];\n const rows = [];\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeysWidth = 0;\n let maxCommentWidth = 0;\n let keysPresent = true;\n let commentPresent = true;\n for (const attribute of entityNode.attributes) {\n const typeBBox = await addText(\n shapeSvg,\n attribute.type,\n config,\n 0,\n yOffset,\n [\"attribute-type\"],\n labelStyles\n );\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width + PADDING);\n const nameBBox2 = await addText(\n shapeSvg,\n attribute.name,\n config,\n 0,\n yOffset,\n [\"attribute-name\"],\n labelStyles\n );\n maxNameWidth = Math.max(maxNameWidth, nameBBox2.width + PADDING);\n const keysBBox = await addText(\n shapeSvg,\n attribute.keys.join(),\n config,\n 0,\n yOffset,\n [\"attribute-keys\"],\n labelStyles\n );\n maxKeysWidth = Math.max(maxKeysWidth, keysBBox.width + PADDING);\n const commentBBox = await addText(\n shapeSvg,\n attribute.comment,\n config,\n 0,\n yOffset,\n [\"attribute-comment\"],\n labelStyles\n );\n maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING);\n const rowHeight = Math.max(typeBBox.height, nameBBox2.height, keysBBox.height, commentBBox.height) + TEXT_PADDING;\n rows.push({ yOffset, rowHeight });\n yOffset += rowHeight;\n }\n let totalWidthSections = 4;\n if (maxKeysWidth <= PADDING) {\n keysPresent = false;\n maxKeysWidth = 0;\n totalWidthSections--;\n }\n if (maxCommentWidth <= PADDING) {\n commentPresent = false;\n maxCommentWidth = 0;\n totalWidthSections--;\n }\n const shapeBBox = shapeSvg.node().getBBox();\n if (nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth) > 0) {\n const difference = nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth);\n maxTypeWidth += difference / totalWidthSections;\n maxNameWidth += difference / totalWidthSections;\n if (maxKeysWidth > 0) {\n maxKeysWidth += difference / totalWidthSections;\n }\n if (maxCommentWidth > 0) {\n maxCommentWidth += difference / totalWidthSections;\n }\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth;\n const rc = rough55.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let totalShapeBBoxHeight = 0;\n if (rows.length > 0) {\n totalShapeBBoxHeight = rows.reduce((sum, row) => sum + (row?.rowHeight ?? 0), 0);\n }\n const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth);\n const h = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node?.height || 0);\n const x = -w / 2;\n const y = -h / 2;\n shapeSvg.selectAll(\"g:not(:first-child)\").each((_, i, nodes) => {\n const text2 = select5(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n if (text2.attr(\"class\").includes(\"attribute-name\")) {\n translateX += maxTypeWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-keys\")) {\n translateX += maxTypeWidth + maxNameWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-comment\")) {\n translateX += maxTypeWidth + maxNameWidth + maxKeysWidth;\n }\n }\n }\n text2.attr(\n \"transform\",\n `translate(${x + PADDING / 2 + translateX}, ${translateY + y + nameBBox.height + TEXT_PADDING / 2})`\n );\n });\n shapeSvg.select(\".name\").attr(\"transform\", \"translate(\" + -nameBBox.width / 2 + \", \" + (y + TEXT_PADDING / 2) + \")\");\n const roughRect = rc.rectangle(x, y, w, h, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\").attr(\"style\", cssStyles.join(\"\"));\n const { themeVariables } = getConfig();\n const { rowEven, rowOdd, nodeBorder } = themeVariables;\n yOffsets.push(0);\n for (const [i, row] of rows.entries()) {\n const contentRowIndex = i + 1;\n const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0;\n const roughRect2 = rc.rectangle(x, nameBBox.height + y + row?.yOffset, w, row?.rowHeight, {\n ...options,\n fill: isEven ? rowEven : rowOdd,\n stroke: nodeBorder\n });\n shapeSvg.insert(() => roughRect2, \"g.label\").attr(\"style\", cssStyles.join(\"\")).attr(\"class\", `row-rect-${isEven ? \"even\" : \"odd\"}`);\n }\n let roughLine = rc.line(x, nameBBox.height + y, w + x, nameBBox.height + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n roughLine = rc.line(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n if (keysPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n if (commentPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n for (const yOffset2 of yOffsets) {\n roughLine = rc.line(\n x,\n nameBBox.height + y + yOffset2,\n w + x,\n nameBBox.height + y + yOffset2,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n updateNodeBounds(node, rect2);\n if (nodeStyles && node.look !== \"handDrawn\") {\n const allStyle = nodeStyles.split(\";\");\n const strokeStyles = allStyle?.filter((e) => {\n return e.includes(\"stroke\");\n })?.map((s) => `${s}`).join(\"; \");\n shapeSvg.selectAll(\"path\").attr(\"style\", strokeStyles ?? \"\");\n shapeSvg.selectAll(\".row-rect-even path\").attr(\"style\", nodeStyles);\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(erBox, \"erBox\");\nasync function addText(shapeSvg, labelText, config, translateX = 0, translateY = 0, classes = [], style = \"\") {\n const label = shapeSvg.insert(\"g\").attr(\"class\", `label ${classes.join(\" \")}`).attr(\"transform\", `translate(${translateX}, ${translateY})`).attr(\"style\", style);\n if (labelText !== parseGenericTypes(labelText)) {\n labelText = parseGenericTypes(labelText);\n labelText = labelText.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n const text2 = label.node().appendChild(\n await createText(\n label,\n labelText,\n {\n width: calculateTextWidth(labelText, config) + 100,\n style,\n useHtmlLabels: config.htmlLabels\n },\n config\n )\n );\n if (labelText.includes(\"<\") || labelText.includes(\">\")) {\n let child = text2.children[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n while (child.childNodes[0]) {\n child = child.childNodes[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n }\n let bbox = text2.getBBox();\n if (evaluate(config.htmlLabels)) {\n const div = text2.children[0];\n div.style.textAlign = \"start\";\n const dv = select5(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n return bbox;\n}\n__name(addText, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select7 } from \"d3\";\nimport rough56 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select6 } from \"d3\";\nasync function textHelper(parent, node, config, useHtmlLabels, GAP = config.class.padding ?? 12) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId || node.id);\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n annotationGroup = shapeSvg.insert(\"g\").attr(\"class\", \"annotation-group text\");\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText2(annotationGroup, { text: `\\xAB${annotation}\\xBB` }, 0);\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n labelGroup = shapeSvg.insert(\"g\").attr(\"class\", \"label-group text\");\n await addText2(labelGroup, node, 0, [\"font-weight: bolder\"]);\n const labelGroupBBox = labelGroup.node().getBBox();\n labelGroupHeight = labelGroupBBox.height;\n membersGroup = shapeSvg.insert(\"g\").attr(\"class\", \"members-group text\");\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText2(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node().getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n methodsGroup = shapeSvg.insert(\"g\").attr(\"class\", \"methods-group text\");\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText2(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n let bbox = shapeSvg.node().getBBox();\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroup.attr(\"transform\", `translate(${-annotationGroupBBox.width / 2})`);\n }\n labelGroup.attr(\"transform\", `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n bbox = shapeSvg.node().getBBox();\n membersGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node().getBBox();\n methodsGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n bbox = shapeSvg.node().getBBox();\n return { shapeSvg, bbox };\n}\n__name(textHelper, \"textHelper\");\nasync function addText2(parentGroup, node, yOffset, styles = []) {\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", styles.join(\"; \"));\n const config = getConfig();\n let useHtmlLabels = \"useHtmlLabels\" in node ? node.useHtmlLabels : evaluate(config.htmlLabels) ?? true;\n let textContent = \"\";\n if (\"text\" in node) {\n textContent = node.text;\n } else {\n textContent = node.label;\n }\n if (!useHtmlLabels && textContent.startsWith(\"\\\\\")) {\n textContent = textContent.substring(1);\n }\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n if (!useHtmlLabels) {\n if (styles.includes(\"font-weight: bolder\")) {\n select6(text2).selectAll(\"tspan\").attr(\"font-weight\", \"\");\n }\n numberOfLines = text2.children.length;\n const textChild = text2.children[0];\n if (text2.textContent === \"\" || text2.textContent.includes(\">\")) {\n textChild.textContent = textContent[0] + textContent.substring(1).replaceAll(\">\", \">\").replaceAll(\"<\", \"<\").trim();\n const preserveSpace = textContent[1] === \" \";\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + \" \" + textChild.textContent.substring(1);\n }\n }\n if (textChild.textContent === \"undefined\") {\n textChild.textContent = \"\";\n }\n bbox = text2.getBBox();\n } else {\n const div = text2.children[0];\n const dv = select6(text2);\n numberOfLines = div.innerHTML.split(\"<br>\").length;\n if (div.innerHTML.includes(\"</math>\")) {\n numberOfLines += div.innerHTML.split(\"<mrow>\").length - 1;\n }\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = textContent.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config.fontSize?.toString() ?? window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", \"translate(0,\" + (-bbox.height / (2 * numberOfLines) + yOffset) + \")\");\n return bbox.height;\n}\n__name(addText2, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nasync function classBox(parent, node) {\n const config = getConfig2();\n const PADDING = config.class.padding ?? 12;\n const GAP = PADDING;\n const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n const classNode = node;\n classNode.annotations = classNode.annotations ?? [];\n classNode.members = classNode.members ?? [];\n classNode.methods = classNode.methods ?? [];\n const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.cssStyles = classNode.styles || \"\";\n const styles = classNode.styles?.join(\";\") || nodeStyles || \"\";\n if (!node.cssStyles) {\n node.cssStyles = styles.replaceAll(\"!important\", \"\").split(\";\");\n }\n const renderExtraBox = classNode.members.length === 0 && classNode.methods.length === 0 && !config.class?.hideEmptyMembersBox;\n const rc = rough56.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const w = bbox.width;\n let h = bbox.height;\n if (classNode.members.length === 0 && classNode.methods.length === 0) {\n h += GAP;\n } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n h += GAP * 2;\n }\n const x = -w / 2;\n const y = -h / 2;\n const roughRect = rc.rectangle(\n x - PADDING,\n y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0),\n w + 2 * PADDING,\n h + 2 * PADDING + (renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0),\n options\n );\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n const rectBBox = rect2.node().getBBox();\n shapeSvg.selectAll(\".text\").each((_, i, nodes) => {\n const text2 = select7(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateY = parseFloat(translate[2]);\n }\n }\n let newTranslateY = translateY + y + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0);\n if (!useHtmlLabels) {\n newTranslateY -= 4;\n }\n let newTranslateX = x;\n if (text2.attr(\"class\").includes(\"label-group\") || text2.attr(\"class\").includes(\"annotation-group\")) {\n newTranslateX = -text2.node()?.getBBox().width / 2 || 0;\n shapeSvg.selectAll(\"text\").each(function(_2, i2, nodes2) {\n if (window.getComputedStyle(nodes2[i2]).textAnchor === \"middle\") {\n newTranslateX = 0;\n }\n });\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY})`);\n });\n const annotationGroupHeight = shapeSvg.select(\".annotation-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const labelGroupHeight = shapeSvg.select(\".label-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const membersGroupHeight = shapeSvg.select(\".members-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + PADDING + GAP * 2,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (classNode.look !== \"handDrawn\") {\n shapeSvg.selectAll(\"path\").attr(\"style\", styles);\n }\n rect2.select(\":nth-child(2)\").attr(\"style\", styles);\n shapeSvg.selectAll(\".divider\").select(\"path\").attr(\"style\", styles);\n if (node.labelStyle) {\n shapeSvg.selectAll(\"span\").attr(\"style\", node.labelStyle);\n } else {\n shapeSvg.selectAll(\"span\").attr(\"style\", styles);\n }\n if (!useHtmlLabels) {\n const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n const match = colorRegex.exec(styles);\n if (match) {\n const colorStyle = match[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n } else if (labelStyles) {\n const match2 = colorRegex.exec(labelStyles);\n if (match2) {\n const colorStyle = match2[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n }\n }\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(classBox, \"classBox\");\n\n// src/rendering-util/rendering-elements/shapes/requirementBox.ts\nimport rough57 from \"roughjs\";\nimport { select as select8 } from \"d3\";\nasync function requirementBox(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const requirementNode = node;\n const elementNode = node;\n const padding = 20;\n const gap = 20;\n const isRequirementNode = \"verifyMethod\" in node;\n const classes = getNodeClasses(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId ?? node.id);\n let typeHeight;\n if (isRequirementNode) {\n typeHeight = await addText3(\n shapeSvg,\n `<<${requirementNode.type}>>`,\n 0,\n node.labelStyle\n );\n } else {\n typeHeight = await addText3(shapeSvg, \"<<Element>>\", 0, node.labelStyle);\n }\n let accumulativeHeight = typeHeight;\n const nameHeight = await addText3(\n shapeSvg,\n requirementNode.name,\n accumulativeHeight,\n node.labelStyle + \"; font-weight: bold;\"\n );\n accumulativeHeight += nameHeight + gap;\n if (isRequirementNode) {\n const idHeight = await addText3(\n shapeSvg,\n `${requirementNode.requirementId ? `ID: ${requirementNode.requirementId}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += idHeight;\n const textHeight = await addText3(\n shapeSvg,\n `${requirementNode.text ? `Text: ${requirementNode.text}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += textHeight;\n const riskHeight = await addText3(\n shapeSvg,\n `${requirementNode.risk ? `Risk: ${requirementNode.risk}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += riskHeight;\n await addText3(\n shapeSvg,\n `${requirementNode.verifyMethod ? `Verification: ${requirementNode.verifyMethod}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n } else {\n const typeHeight2 = await addText3(\n shapeSvg,\n `${elementNode.type ? `Type: ${elementNode.type}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += typeHeight2;\n await addText3(\n shapeSvg,\n `${elementNode.docRef ? `Doc Ref: ${elementNode.docRef}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n }\n const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding;\n const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rc = rough57.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughRect = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n shapeSvg.selectAll(\".label\").each((_, i, nodes) => {\n const text2 = select8(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n }\n }\n const newTranslateY = translateY - totalHeight / 2;\n let newTranslateX = x + padding / 2;\n if (i === 0 || i === 1) {\n newTranslateX = translateX;\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY + padding})`);\n });\n if (accumulativeHeight > typeHeight + nameHeight + gap) {\n const roughLine = rc.line(\n x,\n y + typeHeight + nameHeight + gap,\n x + totalWidth,\n y + typeHeight + nameHeight + gap,\n options\n );\n const dividerLine = shapeSvg.insert(() => roughLine);\n dividerLine.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(requirementBox, \"requirementBox\");\nasync function addText3(parentGroup, inputText, yOffset, style = \"\") {\n if (inputText === \"\") {\n return 0;\n }\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", style);\n const config = getConfig2();\n const useHtmlLabels = config.htmlLabels ?? true;\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(inputText)),\n {\n width: calculateTextWidth(inputText, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels,\n style\n },\n config\n );\n let bbox;\n if (!useHtmlLabels) {\n const textChild = text2.children[0];\n for (const child of textChild.children) {\n child.textContent = child.textContent.replaceAll(\">\", \">\").replaceAll(\"<\", \"<\");\n if (style) {\n child.setAttribute(\"style\", style);\n }\n }\n bbox = text2.getBBox();\n bbox.height += 6;\n } else {\n const div = text2.children[0];\n const dv = select8(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", `translate(${-bbox.width / 2},${-bbox.height / 2 + yOffset})`);\n return bbox.height;\n}\n__name(addText3, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/kanbanItem.ts\nimport rough58 from \"roughjs\";\nvar colorFromPriority = /* @__PURE__ */ __name((priority) => {\n switch (priority) {\n case \"Very High\":\n return \"red\";\n case \"High\":\n return \"orange\";\n case \"Medium\":\n return null;\n // no stroke\n case \"Low\":\n return \"blue\";\n case \"Very Low\":\n return \"lightblue\";\n }\n}, \"colorFromPriority\");\nasync function kanbanItem(parent, kanbanNode, { config }) {\n const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n kanbanNode.labelStyle = labelStyles || \"\";\n const labelPaddingX = 10;\n const orgWidth = kanbanNode.width;\n kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n const {\n shapeSvg,\n bbox,\n label: labelElTitle\n } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n const padding = kanbanNode.padding || 10;\n let ticketUrl = \"\";\n let link;\n if (\"ticket\" in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n ticketUrl = config?.kanban?.ticketBaseUrl.replace(\"#TICKET#\", kanbanNode.ticket);\n link = shapeSvg.insert(\"svg:a\", \":first-child\").attr(\"class\", \"kanban-ticket-link\").attr(\"xlink:href\", ticketUrl).attr(\"target\", \"_blank\");\n }\n const options = {\n useHtmlLabels: kanbanNode.useHtmlLabels,\n labelStyle: kanbanNode.labelStyle || \"\",\n width: kanbanNode.width,\n img: kanbanNode.img,\n padding: kanbanNode.padding || 8,\n centerLabel: false\n };\n let labelEl, bbox2;\n if (link) {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n link,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n } else {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n shapeSvg,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n }\n const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n shapeSvg,\n \"assigned\" in kanbanNode && kanbanNode.assigned || \"\",\n options\n );\n kanbanNode.width = orgWidth;\n const labelPaddingY = 10;\n const totalWidth = kanbanNode?.width || 0;\n const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n const totalHeight = Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n labelElTitle.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj - bbox.height / 2) + \")\"\n );\n labelEl.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n labelElAssigned.attr(\n \"transform\",\n \"translate(\" + (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n let rect2;\n const { rx, ry } = kanbanNode;\n const { cssStyles } = kanbanNode;\n if (kanbanNode.look === \"handDrawn\") {\n const rc = rough58.svg(shapeSvg);\n const options2 = userNodeOverrides(kanbanNode, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", cssStyles ? cssStyles : null);\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container __APA__\").attr(\"style\", nodeStyles).attr(\"rx\", rx ?? 5).attr(\"ry\", ry ?? 5).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n const priority = \"priority\" in kanbanNode && kanbanNode.priority;\n if (priority) {\n const line = shapeSvg.append(\"line\");\n const lineX = x + 2;\n const y1 = y + Math.floor((rx ?? 0) / 2);\n const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n line.attr(\"x1\", lineX).attr(\"y1\", y1).attr(\"x2\", lineX).attr(\"y2\", y2).attr(\"stroke-width\", \"4\").attr(\"stroke\", colorFromPriority(priority));\n }\n }\n updateNodeBounds(kanbanNode, rect2);\n kanbanNode.height = totalHeight;\n kanbanNode.intersect = function(point) {\n return intersect_default.rect(kanbanNode, point);\n };\n return shapeSvg;\n}\n__name(kanbanItem, \"kanbanItem\");\n\n// src/rendering-util/rendering-elements/shapes/bang.ts\nimport rough59 from \"roughjs\";\nasync function bang(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 10 * halfPadding;\n const h = bbox.height + 8 * halfPadding;\n const r = 0.15 * w;\n const { cssStyles } = node;\n const minWidth = bbox.width + 20;\n const minHeight = bbox.height + 20;\n const effectiveWidth = Math.max(w, minWidth);\n const effectiveHeight = Math.max(h, minHeight);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n let bangElem;\n const path = `M0 0 \n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${-1 * effectiveHeight * 0.1}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${effectiveHeight * 0.1}\n\n a${r},${r} 1 0,0 ${effectiveWidth * 0.15},${effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.15},${effectiveHeight * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${effectiveHeight * 0.15}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${-1 * effectiveHeight * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${-1 * effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough59.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n bangElem = shapeSvg.insert(() => roughNode, \":first-child\");\n bangElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n bangElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n bangElem.attr(\"transform\", `translate(${-effectiveWidth / 2}, ${-effectiveHeight / 2})`);\n updateNodeBounds(node, bangElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Bang intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(bang, \"bang\");\n\n// src/rendering-util/rendering-elements/shapes/cloud.ts\nimport rough60 from \"roughjs\";\nasync function cloud(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 2 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n const { cssStyles } = node;\n let cloudElem;\n const path = `M0 0 \n a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},0\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough60.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n cloudElem = shapeSvg.insert(() => roughNode, \":first-child\");\n cloudElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n cloudElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n cloudElem.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, cloudElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Cloud intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(cloud, \"cloud\");\n\n// src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts\nasync function defaultMindmapNode(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 8 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const rd = 5;\n const rectPath = `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - 2 * rd}\n q0,${rd} -${rd},${rd}\n h${-w + 2 * rd}\n q-${rd},0 -${rd},-${rd}\n Z\n `;\n const bg = shapeSvg.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\"style\", nodeStyles).attr(\"d\", rectPath);\n shapeSvg.append(\"line\").attr(\"class\", \"node-line-\").attr(\"x1\", -w / 2).attr(\"y1\", h / 2).attr(\"x2\", w / 2).attr(\"y2\", h / 2);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n shapeSvg.append(() => label.node());\n updateNodeBounds(node, bg);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(defaultMindmapNode, \"defaultMindmapNode\");\n\n// src/rendering-util/rendering-elements/shapes/mindmapCircle.ts\nasync function mindmapCircle(parent, node) {\n const options = {\n padding: node.padding ?? 0\n };\n return circle(parent, node, options);\n}\n__name(mindmapCircle, \"mindmapCircle\");\n\n// src/rendering-util/rendering-elements/shapes.ts\nvar shapesDefs = [\n {\n semanticName: \"Process\",\n name: \"Rectangle\",\n shortName: \"rect\",\n description: \"Standard process shape\",\n aliases: [\"proc\", \"process\", \"rectangle\"],\n internalAliases: [\"squareRect\"],\n handler: squareRect2\n },\n {\n semanticName: \"Event\",\n name: \"Rounded Rectangle\",\n shortName: \"rounded\",\n description: \"Represents an event\",\n aliases: [\"event\"],\n internalAliases: [\"roundedRect\"],\n handler: roundedRect\n },\n {\n semanticName: \"Terminal Point\",\n name: \"Stadium\",\n shortName: \"stadium\",\n description: \"Terminal point\",\n aliases: [\"terminal\", \"pill\"],\n handler: stadium\n },\n {\n semanticName: \"Subprocess\",\n name: \"Framed Rectangle\",\n shortName: \"fr-rect\",\n description: \"Subprocess\",\n aliases: [\"subprocess\", \"subproc\", \"framed-rectangle\", \"subroutine\"],\n handler: subroutine\n },\n {\n semanticName: \"Database\",\n name: \"Cylinder\",\n shortName: \"cyl\",\n description: \"Database storage\",\n aliases: [\"db\", \"database\", \"cylinder\"],\n handler: cylinder\n },\n {\n semanticName: \"Start\",\n name: \"Circle\",\n shortName: \"circle\",\n description: \"Starting point\",\n aliases: [\"circ\"],\n handler: circle\n },\n {\n semanticName: \"Bang\",\n name: \"Bang\",\n shortName: \"bang\",\n description: \"Bang\",\n aliases: [\"bang\"],\n handler: bang\n },\n {\n semanticName: \"Cloud\",\n name: \"Cloud\",\n shortName: \"cloud\",\n description: \"cloud\",\n aliases: [\"cloud\"],\n handler: cloud\n },\n {\n semanticName: \"Decision\",\n name: \"Diamond\",\n shortName: \"diam\",\n description: \"Decision-making step\",\n aliases: [\"decision\", \"diamond\", \"question\"],\n handler: question\n },\n {\n semanticName: \"Prepare Conditional\",\n name: \"Hexagon\",\n shortName: \"hex\",\n description: \"Preparation or condition step\",\n aliases: [\"hexagon\", \"prepare\"],\n handler: hexagon\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Right\",\n shortName: \"lean-r\",\n description: \"Represents input or output\",\n aliases: [\"lean-right\", \"in-out\"],\n internalAliases: [\"lean_right\"],\n handler: lean_right\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Left\",\n shortName: \"lean-l\",\n description: \"Represents output or input\",\n aliases: [\"lean-left\", \"out-in\"],\n internalAliases: [\"lean_left\"],\n handler: lean_left\n },\n {\n semanticName: \"Priority Action\",\n name: \"Trapezoid Base Bottom\",\n shortName: \"trap-b\",\n description: \"Priority action\",\n aliases: [\"priority\", \"trapezoid-bottom\", \"trapezoid\"],\n handler: trapezoid\n },\n {\n semanticName: \"Manual Operation\",\n name: \"Trapezoid Base Top\",\n shortName: \"trap-t\",\n description: \"Represents a manual task\",\n aliases: [\"manual\", \"trapezoid-top\", \"inv-trapezoid\"],\n internalAliases: [\"inv_trapezoid\"],\n handler: inv_trapezoid\n },\n {\n semanticName: \"Stop\",\n name: \"Double Circle\",\n shortName: \"dbl-circ\",\n description: \"Represents a stop point\",\n aliases: [\"double-circle\"],\n internalAliases: [\"doublecircle\"],\n handler: doublecircle\n },\n {\n semanticName: \"Text Block\",\n name: \"Text Block\",\n shortName: \"text\",\n description: \"Text block\",\n handler: text\n },\n {\n semanticName: \"Card\",\n name: \"Notched Rectangle\",\n shortName: \"notch-rect\",\n description: \"Represents a card\",\n aliases: [\"card\", \"notched-rectangle\"],\n handler: card\n },\n {\n semanticName: \"Lined/Shaded Process\",\n name: \"Lined Rectangle\",\n shortName: \"lin-rect\",\n description: \"Lined process shape\",\n aliases: [\"lined-rectangle\", \"lined-process\", \"lin-proc\", \"shaded-process\"],\n handler: shadedProcess\n },\n {\n semanticName: \"Start\",\n name: \"Small Circle\",\n shortName: \"sm-circ\",\n description: \"Small starting point\",\n aliases: [\"start\", \"small-circle\"],\n internalAliases: [\"stateStart\"],\n handler: stateStart\n },\n {\n semanticName: \"Stop\",\n name: \"Framed Circle\",\n shortName: \"fr-circ\",\n description: \"Stop point\",\n aliases: [\"stop\", \"framed-circle\"],\n internalAliases: [\"stateEnd\"],\n handler: stateEnd\n },\n {\n semanticName: \"Fork/Join\",\n name: \"Filled Rectangle\",\n shortName: \"fork\",\n description: \"Fork or join in process flow\",\n aliases: [\"join\"],\n internalAliases: [\"forkJoin\"],\n handler: forkJoin\n },\n {\n semanticName: \"Collate\",\n name: \"Hourglass\",\n shortName: \"hourglass\",\n description: \"Represents a collate operation\",\n aliases: [\"hourglass\", \"collate\"],\n handler: hourglass\n },\n {\n semanticName: \"Comment\",\n name: \"Curly Brace\",\n shortName: \"brace\",\n description: \"Adds a comment\",\n aliases: [\"comment\", \"brace-l\"],\n handler: curlyBraceLeft\n },\n {\n semanticName: \"Comment Right\",\n name: \"Curly Brace\",\n shortName: \"brace-r\",\n description: \"Adds a comment\",\n handler: curlyBraceRight\n },\n {\n semanticName: \"Comment with braces on both sides\",\n name: \"Curly Braces\",\n shortName: \"braces\",\n description: \"Adds a comment\",\n handler: curlyBraces\n },\n {\n semanticName: \"Com Link\",\n name: \"Lightning Bolt\",\n shortName: \"bolt\",\n description: \"Communication link\",\n aliases: [\"com-link\", \"lightning-bolt\"],\n handler: lightningBolt\n },\n {\n semanticName: \"Document\",\n name: \"Document\",\n shortName: \"doc\",\n description: \"Represents a document\",\n aliases: [\"doc\", \"document\"],\n handler: waveEdgedRectangle\n },\n {\n semanticName: \"Delay\",\n name: \"Half-Rounded Rectangle\",\n shortName: \"delay\",\n description: \"Represents a delay\",\n aliases: [\"half-rounded-rectangle\"],\n handler: halfRoundedRectangle\n },\n {\n semanticName: \"Direct Access Storage\",\n name: \"Horizontal Cylinder\",\n shortName: \"h-cyl\",\n description: \"Direct access storage\",\n aliases: [\"das\", \"horizontal-cylinder\"],\n handler: tiltedCylinder\n },\n {\n semanticName: \"Disk Storage\",\n name: \"Lined Cylinder\",\n shortName: \"lin-cyl\",\n description: \"Disk storage\",\n aliases: [\"disk\", \"lined-cylinder\"],\n handler: linedCylinder\n },\n {\n semanticName: \"Display\",\n name: \"Curved Trapezoid\",\n shortName: \"curv-trap\",\n description: \"Represents a display\",\n aliases: [\"curved-trapezoid\", \"display\"],\n handler: curvedTrapezoid\n },\n {\n semanticName: \"Divided Process\",\n name: \"Divided Rectangle\",\n shortName: \"div-rect\",\n description: \"Divided process shape\",\n aliases: [\"div-proc\", \"divided-rectangle\", \"divided-process\"],\n handler: dividedRectangle\n },\n {\n semanticName: \"Extract\",\n name: \"Triangle\",\n shortName: \"tri\",\n description: \"Extraction process\",\n aliases: [\"extract\", \"triangle\"],\n handler: triangle\n },\n {\n semanticName: \"Internal Storage\",\n name: \"Window Pane\",\n shortName: \"win-pane\",\n description: \"Internal storage\",\n aliases: [\"internal-storage\", \"window-pane\"],\n handler: windowPane\n },\n {\n semanticName: \"Junction\",\n name: \"Filled Circle\",\n shortName: \"f-circ\",\n description: \"Junction point\",\n aliases: [\"junction\", \"filled-circle\"],\n handler: filledCircle\n },\n {\n semanticName: \"Loop Limit\",\n name: \"Trapezoidal Pentagon\",\n shortName: \"notch-pent\",\n description: \"Loop limit step\",\n aliases: [\"loop-limit\", \"notched-pentagon\"],\n handler: trapezoidalPentagon\n },\n {\n semanticName: \"Manual File\",\n name: \"Flipped Triangle\",\n shortName: \"flip-tri\",\n description: \"Manual file operation\",\n aliases: [\"manual-file\", \"flipped-triangle\"],\n handler: flippedTriangle\n },\n {\n semanticName: \"Manual Input\",\n name: \"Sloped Rectangle\",\n shortName: \"sl-rect\",\n description: \"Manual input step\",\n aliases: [\"manual-input\", \"sloped-rectangle\"],\n handler: slopedRect\n },\n {\n semanticName: \"Multi-Document\",\n name: \"Stacked Document\",\n shortName: \"docs\",\n description: \"Multiple documents\",\n aliases: [\"documents\", \"st-doc\", \"stacked-document\"],\n handler: multiWaveEdgedRectangle\n },\n {\n semanticName: \"Multi-Process\",\n name: \"Stacked Rectangle\",\n shortName: \"st-rect\",\n description: \"Multiple processes\",\n aliases: [\"procs\", \"processes\", \"stacked-rectangle\"],\n handler: multiRect\n },\n {\n semanticName: \"Stored Data\",\n name: \"Bow Tie Rectangle\",\n shortName: \"bow-rect\",\n description: \"Stored data\",\n aliases: [\"stored-data\", \"bow-tie-rectangle\"],\n handler: bowTieRect\n },\n {\n semanticName: \"Summary\",\n name: \"Crossed Circle\",\n shortName: \"cross-circ\",\n description: \"Summary\",\n aliases: [\"summary\", \"crossed-circle\"],\n handler: crossedCircle\n },\n {\n semanticName: \"Tagged Document\",\n name: \"Tagged Document\",\n shortName: \"tag-doc\",\n description: \"Tagged document\",\n aliases: [\"tag-doc\", \"tagged-document\"],\n handler: taggedWaveEdgedRectangle\n },\n {\n semanticName: \"Tagged Process\",\n name: \"Tagged Rectangle\",\n shortName: \"tag-rect\",\n description: \"Tagged process\",\n aliases: [\"tagged-rectangle\", \"tag-proc\", \"tagged-process\"],\n handler: taggedRect\n },\n {\n semanticName: \"Paper Tape\",\n name: \"Flag\",\n shortName: \"flag\",\n description: \"Paper tape\",\n aliases: [\"paper-tape\"],\n handler: waveRectangle\n },\n {\n semanticName: \"Odd\",\n name: \"Odd\",\n shortName: \"odd\",\n description: \"Odd shape\",\n internalAliases: [\"rect_left_inv_arrow\"],\n handler: rect_left_inv_arrow\n },\n {\n semanticName: \"Lined Document\",\n name: \"Lined Document\",\n shortName: \"lin-doc\",\n description: \"Lined document\",\n aliases: [\"lined-document\"],\n handler: linedWaveEdgedRect\n }\n];\nvar generateShapeMap = /* @__PURE__ */ __name(() => {\n const undocumentedShapes = {\n // States\n state,\n choice,\n note,\n // Rectangles\n rectWithTitle,\n labelRect,\n // Icons\n iconSquare,\n iconCircle,\n icon,\n iconRounded,\n imageSquare,\n anchor,\n // Kanban diagram\n kanbanItem,\n //Mindmap diagram\n mindmapCircle,\n defaultMindmapNode,\n // class diagram\n classBox,\n // er diagram\n erBox,\n // Requirement diagram\n requirementBox\n };\n const entries = [\n ...Object.entries(undocumentedShapes),\n ...shapesDefs.flatMap((shape) => {\n const aliases = [\n shape.shortName,\n ...\"aliases\" in shape ? shape.aliases : [],\n ...\"internalAliases\" in shape ? shape.internalAliases : []\n ];\n return aliases.map((alias) => [alias, shape.handler]);\n })\n ];\n return Object.fromEntries(entries);\n}, \"generateShapeMap\");\nvar shapes2 = generateShapeMap();\nfunction isValidShape(shape) {\n return shape in shapes2;\n}\n__name(isValidShape, \"isValidShape\");\n\n// src/rendering-util/rendering-elements/nodes.ts\nvar nodeElems = /* @__PURE__ */ new Map();\nasync function insertNode(elem, node, renderOptions) {\n let newEl;\n let el;\n if (node.shape === \"rect\") {\n if (node.rx && node.ry) {\n node.shape = \"roundedRect\";\n } else {\n node.shape = \"squareRect\";\n }\n }\n const shapeHandler = node.shape ? shapes2[node.shape] : void 0;\n if (!shapeHandler) {\n throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n }\n if (node.link) {\n let target;\n if (renderOptions.config.securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target ?? null);\n el = await shapeHandler(newEl, node, renderOptions);\n } else {\n el = await shapeHandler(elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n nodeElems.set(node.id, newEl);\n if (node.haveCallback) {\n newEl.attr(\"class\", newEl.attr(\"class\") + \" clickable\");\n }\n return newEl;\n}\n__name(insertNode, \"insertNode\");\nvar setNodeElem = /* @__PURE__ */ __name((elem, node) => {\n nodeElems.set(node.id, elem);\n}, \"setNodeElem\");\nvar clear2 = /* @__PURE__ */ __name(() => {\n nodeElems.clear();\n}, \"clear\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems.get(node.id);\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\nexport {\n labelHelper,\n updateNodeBounds,\n createLabel_default,\n isValidShape,\n insertCluster,\n clear,\n insertNode,\n setNodeElem,\n clear2,\n positionNode\n};\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chunk-JZLCHNYA--0HCyKSB.js","names":["t","n","o","e","a","s","h","r","i","c","l","u","p","f","d","g","M","k","b","y","m","P","v","S","O","L","T","D","A","select","i","p","x","y","w","h","select2","s","select3","rough","q","rough2","rough3","d","rough4","rough5","rough6","r","rough7","rough8","rough9","rough10","rough11","rough12","rough13","rough14","rough15","rough16","rough17","rough18","rough19","m","rough20","rough21","rough22","rough23","rough24","rough25","rough26","rough27","rough28","rough29","rough30","rough31","rough32","rough33","rough34","rough35","rough36","rough37","g","select4","rough38","rough39","rough40","rough41","rough42","rough43","rough44","rough45","rough46","rough47","rough48","rough49","rough50","rough51","rough52","rough53","rough54","rough55","select5","e","sanitizeText2","select6","rough56","select7","rough57","select8","rough58","rough59","rough60"],"sources":["../../../../node_modules/roughjs/bundled/rough.esm.js","../../../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-JZLCHNYA.mjs"],"sourcesContent":["function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;e<t.length-1;e++){const s=t[e],n=t[e+1];if(s[1]!==n[1]){const t=Math.min(s[1],n[1]);h.push({ymin:t,ymax:Math.max(s[1],n[1]),x:t===s[1]?s[0]:n[0],islope:(n[0]-s[0])/(n[1]-s[1])})}}if(h.sort(((t,e)=>t.ymin<e.ymin?-1:t.ymin>e.ymin?1:t.x<e.x?-1:t.x>e.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!h.length)return a;let r=[],i=h[0].ymin,c=0;for(;r.length||h.length;){if(h.length){let t=-1;for(let e=0;e<h.length&&!(h[e].ymin>i);e++)t=e;h.splice(0,t+1).forEach((t=>{r.push({s:i,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=i))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==n||c%s==0)&&r.length>1)for(let t=0;t<r.length;t+=2){const e=t+1;if(e>=r.length)break;const s=r[t].edge,n=r[e].edge;a.push([[Math.round(s.x),i],[Math.round(n.x),i]])}i+=n,r.forEach((t=>{t.edge.x=t.edge.x+n*t.edge.islope})),c++}return a}(i,r,a);if(h){for(const e of i)t(e,c,-h);!function(e,s,n){const o=[];e.forEach((t=>o.push(...t))),t(o,s,n)}(l,c,-h)}return l}function n(t,e){var n;const o=e.hachureAngle+90;let a=e.hachureGap;a<0&&(a=4*e.strokeWidth),a=Math.round(Math.max(a,.1));let h=1;return e.roughness>=1&&((null===(n=e.randomizer)||void 0===n?void 0:n.next())||Math.random())>.7&&(h=a),s(t,a,o,h||1)}class o{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.renderLines(s,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}function a(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}class h extends o{fillPolygons(t,e){let s=e.hachureGap;s<0&&(s=4*e.strokeWidth),s=Math.max(s,.1);const o=n(t,Object.assign({},e,{hachureGap:s})),h=Math.PI/180*e.hachureAngle,r=[],i=.5*s*Math.cos(h),c=.5*s*Math.sin(h);for(const[t,e]of o)a([t,e])&&r.push([[t[0]-i,t[1]+c],[...e]],[[t[0]+i,t[1]-c],[...e]]);return{type:\"fillSketch\",ops:this.renderLines(r,e)}}}class r extends o{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),o=this._fillPolygons(t,n);return s.ops=s.ops.concat(o.ops),s}}class i{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(s,e)}dotsOnLines(t,e){const s=[];let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.max(n,.1);let o=e.fillWeight;o<0&&(o=e.strokeWidth/2);const h=n/4;for(const r of t){const t=a(r),i=t/n,c=Math.ceil(i)-1,l=t-c*n,u=(r[0][0]+r[1][0])/2-n/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t<c;t++){const a=p+l+t*n,r=u-h+2*Math.random()*h,i=a-h+2*Math.random()*h,c=this.helper.ellipse(r,i,o,o,e);s.push(...c.ops)}}return{type:\"fillSketch\",ops:s}}}class c{constructor(t){this.helper=t}fillPolygons(t,e){const s=n(t,e);return{type:\"fillSketch\",ops:this.dashedLine(s,e)}}dashedLine(t,e){const s=e.dashOffset<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashOffset,n=e.dashGap<0?e.hachureGap<0?4*e.strokeWidth:e.hachureGap:e.dashGap,o=[];return t.forEach((t=>{const h=a(t),r=Math.floor(h/(s+n)),i=(h+n-r*(s+n))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t<r;t++){const a=t*(s+n),h=a+s,r=[c[0]+a*Math.cos(u)+i*Math.cos(u),c[1]+a*Math.sin(u)+i*Math.sin(u)],l=[c[0]+h*Math.cos(u)+i*Math.cos(u),c[1]+h*Math.sin(u)+i*Math.sin(u)];o.push(...this.helper.doubleLineOps(r[0],r[1],l[0],l[1],e))}})),o}}class l{constructor(t){this.helper=t}fillPolygons(t,e){const s=e.hachureGap<0?4*e.strokeWidth:e.hachureGap,o=e.zigzagOffset<0?s:e.zigzagOffset,a=n(t,e=Object.assign({},e,{hachureGap:s+o}));return{type:\"fillSketch\",ops:this.zigzagLines(a,o,e)}}zigzagLines(t,e,s){const n=[];return t.forEach((t=>{const o=a(t),h=Math.round(o/(2*e));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;t<h;t++){const o=2*t*e,a=2*(t+1)*e,h=Math.sqrt(2*Math.pow(e,2)),i=[r[0]+o*Math.cos(c),r[1]+o*Math.sin(c)],l=[r[0]+a*Math.cos(c),r[1]+a*Math.sin(c)],u=[i[0]+h*Math.cos(c+Math.PI/4),i[1]+h*Math.sin(c+Math.PI/4)];n.push(...this.helper.doubleLineOps(i[0],i[1],u[0],u[1],s),...this.helper.doubleLineOps(u[0],u[1],l[0],l[1],s))}})),n}}const u={};class p{constructor(t){this.seed=t}next(){return this.seed?(2**31-1&(this.seed=Math.imul(48271,this.seed)))/2**31:Math.random()}}const f=0,d=1,g=2,M={A:7,a:7,C:6,c:6,H:1,h:1,L:2,l:2,M:2,m:2,Q:4,q:4,S:4,s:4,T:2,t:2,V:1,v:1,Z:0,z:0};function k(t,e){return t.type===e}function b(t){const e=[],s=function(t){const e=new Array;for(;\"\"!==t;)if(t.match(/^([ \\t\\r\\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([aAcChHlLmMqQsStTvVzZ])/))e[e.length]={type:f,text:RegExp.$1},t=t.substr(RegExp.$1.length);else{if(!t.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];e[e.length]={type:d,text:`${parseFloat(RegExp.$1)}`},t=t.substr(RegExp.$1.length)}return e[e.length]={type:g,text:\"\"},e}(t);let n=\"BOD\",o=0,a=s[o];for(;!k(a,g);){let h=0;const r=[];if(\"BOD\"===n){if(\"M\"!==a.text&&\"m\"!==a.text)return b(\"M0,0\"+t);o++,h=M[a.text],n=a.text}else k(a,d)?h=M[n]:(o++,h=M[a.text],n=a.text);if(!(o+h<s.length))throw new Error(\"Path data ended short\");for(let t=o;t<o+h;t++){const e=s[t];if(!k(e,d))throw new Error(\"Param not a number: \"+n+\",\"+e.text);r[r.length]=+e.text}if(\"number\"!=typeof M[n])throw new Error(\"Bad segment: \"+n);{const t={key:n,data:r};e.push(t),o+=h,a=s[o],\"M\"===n&&(n=\"L\"),\"m\"===n&&(n=\"l\")}}return e}function y(t){let e=0,s=0,n=0,o=0;const a=[];for(const{key:h,data:r}of t)switch(h){case\"M\":a.push({key:\"M\",data:[...r]}),[e,s]=r,[n,o]=r;break;case\"m\":e+=r[0],s+=r[1],a.push({key:\"M\",data:[e,s]}),n=e,o=s;break;case\"L\":a.push({key:\"L\",data:[...r]}),[e,s]=r;break;case\"l\":e+=r[0],s+=r[1],a.push({key:\"L\",data:[e,s]});break;case\"C\":a.push({key:\"C\",data:[...r]}),e=r[4],s=r[5];break;case\"c\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":a.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":a.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],a.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":a.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],a.push({key:\"H\",data:[e]});break;case\"V\":a.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],a.push({key:\"V\",data:[s]});break;case\"S\":a.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));a.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":a.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],a.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":a.push({key:\"Z\",data:[]}),e=n,s=o}return a}function m(t){const e=[];let s=\"\",n=0,o=0,a=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,o]=l,[a,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],o=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,o]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,o]});break;case\"V\":o=l[0],e.push({key:\"L\",data:[n,o]});break;case\"S\":{let t=0,a=0;\"C\"===s||\"S\"===s?(t=n+(n-r),a=o+(o-i)):(t=n,a=o),e.push({key:\"C\",data:[t,a,...l]}),r=l[0],i=l[1],n=l[2],o=l[3];break}case\"T\":{const[t,a]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=o+(o-i)):(h=n,c=o);const u=n+2*(h-n)/3,p=o+2*(c-o)/3,f=t+2*(h-t)/3,d=a+2*(c-a)/3;e.push({key:\"C\",data:[u,p,f,d,t,a]}),r=h,i=c,n=t,o=a;break}case\"Q\":{const[t,s,a,h]=l,c=n+2*(t-n)/3,u=o+2*(s-o)/3,p=a+2*(t-a)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,a,h]}),r=t,i=s,n=a,o=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),a=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,o,i,c,i,c]}),n=i,o=c;else if(n!==i||o!==c){x(n,o,i,c,t,s,a,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,o=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=a,o=h}s=c}return e}function w(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function x(t,e,s,n,o,a,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,M=0;if(c)[f,d,g,M]=c;else{[t,e]=w(t,e,-l),[s,n]=w(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(o*o)+c*c/(a*a);u>1&&(u=Math.sqrt(u),o*=u,a*=u);const p=o*o,k=a*a,b=p*k-p*c*c-k*h*h,y=p*c*c+k*h*h,m=(r===i?-1:1)*Math.sqrt(Math.abs(b/y));g=m*o*c/a+(t+s)/2,M=m*-a*h/o+(e+n)/2,f=Math.asin(parseFloat(((e-M)/a).toFixed(9))),d=Math.asin(parseFloat(((n-M)/a).toFixed(9))),t<g&&(f=Math.PI-f),s<g&&(d=Math.PI-d),f<0&&(f=2*Math.PI+f),d<0&&(d=2*Math.PI+d),i&&f>d&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let k=d-f;if(Math.abs(k)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=x(s=g+o*Math.cos(d),n=M+a*Math.sin(d),e,r,o,a,h,0,i,[d,t,g,M])}k=d-f;const b=Math.cos(f),y=Math.sin(f),m=Math.cos(d),P=Math.sin(d),v=Math.tan(k/4),S=4/3*o*v,O=4/3*a*v,L=[t,e],T=[t+S*y,e-O*b],D=[s+S*P,n-O*m],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e<p.length;e+=3){const s=w(p[e][0],p[e][1],l),n=w(p[e+1][0],p[e+1][1],l),o=w(p[e+2][0],p[e+2][1],l);t.push([s[0],s[1],n[0],n[1],o[0],o[1]])}return t}}const P={randOffset:function(t,e){return G(t,e)},randOffsetWithRange:function(t,e,s){return E(t,e,s)},ellipse:function(t,e,s,n,o){const a=T(s,n,o);return D(t,e,o,a).opset},doubleLineOps:function(t,e,s,n,o){return $(t,e,s,n,o,!0)}};function v(t,e,s,n,o){return{type:\"path\",ops:$(t,e,s,n,o)}}function S(t,e,s){const n=(t||[]).length;if(n>2){const o=[];for(let e=0;e<n-1;e++)o.push(...$(t[e][0],t[e][1],t[e+1][0],t[e+1][1],s));return e&&o.push(...$(t[n-1][0],t[n-1][1],t[0][0],t[0][1],s)),{type:\"path\",ops:o}}return 2===n?v(t[0][0],t[0][1],t[1][0],t[1][1],s):{type:\"path\",ops:[]}}function O(t,e,s,n,o){return function(t,e){return S(t,!0,e)}([[t,e],[t+s,e],[t+s,e+n],[t,e+n]],o)}function L(t,e){if(t.length){const s=\"number\"==typeof t[0][0]?[t]:t,n=j(s[0],1*(1+.2*e.roughness),e),o=e.disableMultiStroke?[]:j(s[0],1.5*(1+.22*e.roughness),z(e));for(let t=1;t<s.length;t++){const a=s[t];if(a.length){const t=j(a,1*(1+.2*e.roughness),e),s=e.disableMultiStroke?[]:j(a,1.5*(1+.22*e.roughness),z(e));for(const e of t)\"move\"!==e.op&&n.push(e);for(const t of s)\"move\"!==t.op&&o.push(t)}}return{type:\"path\",ops:n.concat(o)}}return{type:\"path\",ops:[]}}function T(t,e,s){const n=Math.sqrt(2*Math.PI*Math.sqrt((Math.pow(t/2,2)+Math.pow(e/2,2))/2)),o=Math.ceil(Math.max(s.curveStepCount,s.curveStepCount/Math.sqrt(200)*n)),a=2*Math.PI/o;let h=Math.abs(t/2),r=Math.abs(e/2);const i=1-s.curveFitting;return h+=G(h*i,s),r+=G(r*i,s),{increment:a,rx:h,ry:r}}function D(t,e,s,n){const[o,a]=F(n.increment,t,e,n.rx,n.ry,1,n.increment*E(.1,E(.4,1,s),s),s);let h=q(o,null,s);if(!s.disableMultiStroke&&0!==s.roughness){const[o]=F(n.increment,t,e,n.rx,n.ry,1.5,0,s),a=q(o,null,s);h=h.concat(a)}return{estimatedPoints:a,opset:{type:\"path\",ops:h}}}function A(t,e,s,n,o,a,h,r,i){const c=t,l=e;let u=Math.abs(s/2),p=Math.abs(n/2);u+=G(.01*u,i),p+=G(.01*p,i);let f=o,d=a;for(;f<0;)f+=2*Math.PI,d+=2*Math.PI;d-f>2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=V(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=V(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...$(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...$(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function _(t,e){const s=m(y(b(t))),n=[];let o=[0,0],a=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":a=[h[0],h[1]],o=[h[0],h[1]];break;case\"L\":n.push(...$(a[0],a[1],h[0],h[1],e)),a=[h[0],h[1]];break;case\"C\":{const[t,s,o,r,i,c]=h;n.push(...Z(t,s,o,r,i,c,a,e)),a=[i,c];break}case\"Z\":n.push(...$(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]]}return{type:\"path\",ops:n}}function I(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,o=n.length;if(o>2){s.push({op:\"move\",data:[n[0][0]+G(t,e),n[0][1]+G(t,e)]});for(let a=1;a<o;a++)s.push({op:\"lineTo\",data:[n[a][0]+G(t,e),n[a][1]+G(t,e)]})}}return{type:\"fillPath\",ops:s}}function C(t,e){return function(t,e){let s=t.fillStyle||\"hachure\";if(!u[s])switch(s){case\"zigzag\":u[s]||(u[s]=new h(e));break;case\"cross-hatch\":u[s]||(u[s]=new r(e));break;case\"dots\":u[s]||(u[s]=new i(e));break;case\"dashed\":u[s]||(u[s]=new c(e));break;case\"zigzag-line\":u[s]||(u[s]=new l(e));break;default:s=\"hachure\",u[s]||(u[s]=new o(e))}return u[s]}(e,P).fillPolygons(t,e)}function z(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}function W(t){return t.randomizer||(t.randomizer=new p(t.seed||0)),t.randomizer.next()}function E(t,e,s,n=1){return s.roughness*n*(W(s)*(e-t)+t)}function G(t,e,s=1){return E(-t,t,e,s)}function $(t,e,s,n,o,a=!1){const h=a?o.disableMultiStrokeFill:o.disableMultiStroke,r=R(t,e,s,n,o,!0,!1);if(h)return r;const i=R(t,e,s,n,o,!0,!0);return r.concat(i)}function R(t,e,s,n,o,a,h){const r=Math.pow(t-s,2)+Math.pow(e-n,2),i=Math.sqrt(r);let c=1;c=i<200?1:i>500?.4:-.0016668*i+1.233334;let l=o.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*W(o);let f=o.bowing*o.maxRandomnessOffset*(n-e)/200,d=o.bowing*o.maxRandomnessOffset*(t-s)/200;f=G(f,o,c),d=G(d,o,c);const g=[],M=()=>G(u,o,c),k=()=>G(l,o,c),b=o.preserveVertices;return a&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:G(l,o,c)),e+(b?0:G(l,o,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function j(t,e,s){if(!t.length)return[];const n=[];n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]),n.push([t[0][0]+G(e,s),t[0][1]+G(e,s)]);for(let o=1;o<t.length;o++)n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]),o===t.length-1&&n.push([t[o][0]+G(e,s),t[o][1]+G(e,s)]);return q(n,null,s)}function q(t,e,s){const n=t.length,o=[];if(n>3){const a=[],h=1-s.curveTightness;o.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+2<n;e++){const s=t[e];a[0]=[s[0],s[1]],a[1]=[s[0]+(h*t[e+1][0]-h*t[e-1][0])/6,s[1]+(h*t[e+1][1]-h*t[e-1][1])/6],a[2]=[t[e+1][0]+(h*t[e][0]-h*t[e+2][0])/6,t[e+1][1]+(h*t[e][1]-h*t[e+2][1])/6],a[3]=[t[e+1][0],t[e+1][1]],o.push({op:\"bcurveTo\",data:[a[1][0],a[1][1],a[2][0],a[2][1],a[3][0],a[3][1]]})}if(e&&2===e.length){const t=s.maxRandomnessOffset;o.push({op:\"lineTo\",data:[e[0]+G(t,s),e[1]+G(t,s)]})}}else 3===n?(o.push({op:\"move\",data:[t[1][0],t[1][1]]}),o.push({op:\"bcurveTo\",data:[t[1][0],t[1][1],t[2][0],t[2][1],t[2][0],t[2][1]]})):2===n&&o.push(...R(t[0][0],t[0][1],t[1][0],t[1][1],s,!0,!0));return o}function F(t,e,s,n,o,a,h,r){const i=[],c=[];if(0===r.roughness){t/=4,c.push([e+n*Math.cos(-t),s+o*Math.sin(-t)]);for(let a=0;a<=2*Math.PI;a+=t){const t=[e+n*Math.cos(a),s+o*Math.sin(a)];i.push(t),c.push(t)}c.push([e+n*Math.cos(0),s+o*Math.sin(0)]),c.push([e+n*Math.cos(t),s+o*Math.sin(t)])}else{const l=G(.5,r)-Math.PI/2;c.push([G(a,r)+e+.9*n*Math.cos(l-t),G(a,r)+s+.9*o*Math.sin(l-t)]);const u=2*Math.PI+l-.01;for(let h=l;h<u;h+=t){const t=[G(a,r)+e+n*Math.cos(h),G(a,r)+s+o*Math.sin(h)];i.push(t),c.push(t)}c.push([G(a,r)+e+n*Math.cos(l+2*Math.PI+.5*h),G(a,r)+s+o*Math.sin(l+2*Math.PI+.5*h)]),c.push([G(a,r)+e+.98*n*Math.cos(l+h),G(a,r)+s+.98*o*Math.sin(l+h)]),c.push([G(a,r)+e+.9*n*Math.cos(l+.5*h),G(a,r)+s+.9*o*Math.sin(l+.5*h)])}return[c,i]}function V(t,e,s,n,o,a,h,r,i){const c=a+G(.1,i),l=[];l.push([G(r,i)+e+.9*n*Math.cos(c-t),G(r,i)+s+.9*o*Math.sin(c-t)]);for(let a=c;a<=h;a+=t)l.push([G(r,i)+e+n*Math.cos(a),G(r,i)+s+o*Math.sin(a)]);return l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),l.push([e+n*Math.cos(h),s+o*Math.sin(h)]),q(l,null,i)}function Z(t,e,s,n,o,a,h,r){const i=[],c=[r.maxRandomnessOffset||1,(r.maxRandomnessOffset||1)+.3];let l=[0,0];const u=r.disableMultiStroke?1:2,p=r.preserveVertices;for(let f=0;f<u;f++)0===f?i.push({op:\"move\",data:[h[0],h[1]]}):i.push({op:\"move\",data:[h[0]+(p?0:G(c[0],r)),h[1]+(p?0:G(c[0],r))]}),l=p?[o,a]:[o+G(c[f],r),a+G(c[f],r)],i.push({op:\"bcurveTo\",data:[t+G(c[f],r),e+G(c[f],r),s+G(c[f],r),n+G(c[f],r),l[0],l[1]]});return i}function Q(t){return[...t]}function H(t,e=0){const s=t.length;if(s<3)throw new Error(\"A curve must have at least three points.\");const n=[];if(3===s)n.push(Q(t[0]),Q(t[1]),Q(t[2]),Q(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e<t.length;e++)s.push(t[e]),e===t.length-1&&s.push(t[e]);const o=[],a=1-e;n.push(Q(s[0]));for(let t=1;t+2<s.length;t++){const e=s[t];o[0]=[e[0],e[1]],o[1]=[e[0]+(a*s[t+1][0]-a*s[t-1][0])/6,e[1]+(a*s[t+1][1]-a*s[t-1][1])/6],o[2]=[s[t+1][0]+(a*s[t][0]-a*s[t+2][0])/6,s[t+1][1]+(a*s[t][1]-a*s[t+2][1])/6],o[3]=[s[t+1][0],s[t+1][1]],n.push(o[1],o[2],o[3])}}return n}function N(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)}function B(t,e,s){const n=N(e,s);if(0===n)return N(t,e);let o=((t[0]-e[0])*(s[0]-e[0])+(t[1]-e[1])*(s[1]-e[1]))/n;return o=Math.max(0,Math.min(1,o)),N(t,J(e,s,o))}function J(t,e,s){return[t[0]+(e[0]-t[0])*s,t[1]+(e[1]-t[1])*s]}function K(t,e,s,n){const o=n||[];if(function(t,e){const s=t[e+0],n=t[e+1],o=t[e+2],a=t[e+3];let h=3*n[0]-2*s[0]-a[0];h*=h;let r=3*n[1]-2*s[1]-a[1];r*=r;let i=3*o[0]-2*a[0]-s[0];i*=i;let c=3*o[1]-2*a[1]-s[1];return c*=c,h<i&&(h=i),r<c&&(r=c),h+r}(t,e)<s){const s=t[e+0];if(o.length){(a=o[o.length-1],h=s,Math.sqrt(N(a,h)))>1&&o.push(s)}else o.push(s);o.push(t[e+3])}else{const n=.5,a=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=J(a,h,n),l=J(h,r,n),u=J(r,i,n),p=J(c,l,n),f=J(l,u,n),d=J(p,f,n);K([a,c,p,d],0,s,o),K([d,f,u,i],0,s,o)}var a,h;return o}function U(t,e){return X(t,0,t.length,e)}function X(t,e,s,n,o){const a=o||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;n<s-1;++n){const e=B(t[n],h,r);e>i&&(i=e,c=n)}return Math.sqrt(i)>n?(X(t,e,c+1,n,a),X(t,c,s,n,a)):(a.length||a.push(h),a.push(r)),a}function Y(t,e=.15,s){const n=[],o=(t.length-1)/3;for(let s=0;s<o;s++){K(t,3*s,e,n)}return s&&s>0?X(n,0,n.length,s):n}const tt=\"none\";class et{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,o){const a=this._o(o);return this._d(\"line\",[v(t,e,s,n,a)],a)}rectangle(t,e,s,n,o){const a=this._o(o),h=[],r=O(t,e,s,n,a);if(a.fill){const o=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===a.fillStyle?h.push(I([o],a)):h.push(C([o],a))}return a.stroke!==tt&&h.push(r),this._d(\"rectangle\",h,a)}ellipse(t,e,s,n,o){const a=this._o(o),h=[],r=T(s,n,a),i=D(t,e,a,r);if(a.fill)if(\"solid\"===a.fillStyle){const s=D(t,e,a,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(C([i.estimatedPoints],a));return a.stroke!==tt&&h.push(i.opset),this._d(\"ellipse\",h,a)}circle(t,e,s,n){const o=this.ellipse(t,e,s,s,n);return o.shape=\"circle\",o}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[S(t,!1,s)],s)}arc(t,e,s,n,o,a,h=!1,r){const i=this._o(r),c=[],l=A(t,e,s,n,o,a,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=A(t,e,s,n,o,a,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,o,a,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=G(.01*c,h),l+=G(.01*l,h);let u=o,p=a;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),C([d],h)}(t,e,s,n,o,a,i));return i.stroke!==tt&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],o=L(t,s);if(s.fill&&s.fill!==tt)if(\"solid\"===s.fillStyle){const e=L(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else{const e=[],o=t;if(o.length){const t=\"number\"==typeof o[0][0]?[o]:o;for(const n of t)n.length<3?e.push(...n):3===n.length?e.push(...Y(H([n[0],n[0],n[1],n[2]]),10,(1+s.roughness)/2)):e.push(...Y(H(n),10,(1+s.roughness)/2))}e.length&&n.push(C([e],s))}return s.stroke!==tt&&n.push(o),this._d(\"curve\",n,s)}polygon(t,e){const s=this._o(e),n=[],o=S(t,!0,s);return s.fill&&(\"solid\"===s.fillStyle?n.push(I([t],s)):n.push(C([t],s))),s.stroke!==tt&&n.push(o),this._d(\"polygon\",n,s)}path(t,e){const s=this._o(e),n=[];if(!t)return this._d(\"path\",n,s);t=(t||\"\").replace(/\\n/g,\" \").replace(/(-\\s)/g,\"-\").replace(\"/(ss)/g\",\" \");const o=s.fill&&\"transparent\"!==s.fill&&s.fill!==tt,a=s.stroke!==tt,h=!!(s.simplification&&s.simplification<1),r=function(t,e,s){const n=m(y(b(t))),o=[];let a=[],h=[0,0],r=[];const i=()=>{r.length>=4&&a.push(...Y(r,e)),r=[]},c=()=>{i(),a.length&&(o.push(a),a=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],a.push(h);break;case\"L\":i(),a.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=a.length?a[a.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),a.push([h[0],h[1]])}if(c(),!s)return o;const l=[];for(const t of o){const e=U(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*(s.simplification||1):(1+s.roughness)/2),i=_(t,s);if(o)if(\"solid\"===s.fillStyle)if(1===r.length){const e=_(t,Object.assign(Object.assign({},s),{disableMultiStroke:!0,roughness:s.roughness?s.roughness+s.fillShapeRoughnessGain:0}));n.push({type:\"fillPath\",ops:this._mergedShape(e.ops)})}else n.push(I(r,s));else n.push(C(r,s));return a&&(h?r.forEach((t=>{n.push(S(t,!1,s))})):n.push(i)),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:tt};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:tt,strokeWidth:0,fill:s.fill||tt};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||tt,strokeWidth:s,fill:tt}}_mergedShape(t){return t.filter(((t,e)=>0===e||\"move\"!==t.op))}}class st{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,o=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,a,o),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,a,o,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,a,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a),a}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a),a}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a),a}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o),o}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const nt=\"http://www.w3.org/2000/svg\";class ot{constructor(t,e){this.svg=t,this.gen=new et(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,o=n.createElementNS(nt,\"g\"),a=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(nt,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,a)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&o.appendChild(e)}return o}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const o=t.createElementNS(nt,\"path\");return o.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),o.setAttribute(\"stroke\",s.fill||\"\"),o.setAttribute(\"stroke-width\",n+\"\"),o.setAttribute(\"fill\",\"none\"),s.fillLineDash&&o.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&o.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),o}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,o){const a=this.gen.line(t,e,s,n,o);return this.draw(a)}rectangle(t,e,s,n,o){const a=this.gen.rectangle(t,e,s,n,o);return this.draw(a)}ellipse(t,e,s,n,o){const a=this.gen.ellipse(t,e,s,n,o);return this.draw(a)}circle(t,e,s,n){const o=this.gen.circle(t,e,s,n);return this.draw(o)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,o,a,h=!1,r){const i=this.gen.arc(t,e,s,n,o,a,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var at={canvas:(t,e)=>new st(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new et(t),newSeed:()=>et.newSeed()};export{at as default};\n","import {\n getSubGraphTitleMargins\n} from \"./chunk-CVBHYZKI.mjs\";\nimport {\n compileStyles,\n solidStateFill,\n styles2String,\n userNodeOverrides\n} from \"./chunk-ATLVNIR6.mjs\";\nimport {\n createText,\n getIconSVG\n} from \"./chunk-JA3XYJ7Z.mjs\";\nimport {\n calculateTextWidth,\n decodeEntities,\n handleUndefinedAttr,\n parseFontSize\n} from \"./chunk-S3R3BYOJ.mjs\";\nimport {\n common_default,\n defaultConfig_default,\n evaluate,\n getConfig,\n getConfig2,\n hasKatex,\n parseGenericTypes,\n renderKatexSanitized,\n sanitizeText,\n sanitizeText2\n} from \"./chunk-ABZYJK2D.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/rendering-util/rendering-elements/shapes/util.ts\nimport { select } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes) => {\n let cssClasses;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig2()?.htmlLabels);\n if (!_classes) {\n cssClasses = \"node default\";\n } else {\n cssClasses = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", handleUndefinedAttr(node.labelStyle));\n let label;\n if (node.label === void 0) {\n label = \"\";\n } else {\n label = typeof node.label === \"string\" ? node.label : node.label[0];\n }\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: node.width || getConfig2().flowchart?.wrappingWidth,\n // @ts-expect-error -- This is currently not used. Should this be `classes` instead?\n cssClasses: \"markdown-node-label\",\n style: node.labelStyle,\n addSvgBackground: !!node.icon || !!node.img\n });\n let bbox = text2.getBBox();\n const halfPadding = (node?.padding ?? 0) / 2;\n if (useHtmlLabels) {\n const div = text2.children[0];\n const dv = select(text2);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = label.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig2().fontSize ? getConfig2().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);\n const width = parsedBodyFontSize * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label: labelEl };\n}, \"labelHelper\");\nvar insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {\n const useHtmlLabels = options.useHtmlLabels || evaluate(getConfig2()?.flowchart?.htmlLabels);\n const labelEl = parent.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", options.labelStyle || \"\");\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: options.width || getConfig2()?.flowchart?.wrappingWidth,\n style: options.labelStyle,\n addSvgBackground: !!options.icon || !!options.img\n });\n let bbox = text2.getBBox();\n const halfPadding = options.padding / 2;\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div = text2.children[0];\n const dv = select(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (options.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n}, \"insertLabel\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nvar getNodeClasses = /* @__PURE__ */ __name((node, extra) => (node.look === \"handDrawn\" ? \"rough-node\" : \"node\") + \" \" + node.cssClasses + \" \" + (extra || \"\"), \"getNodeClasses\");\nfunction createPathFromPoints(points) {\n const pointStrings = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x},${p.y}`);\n pointStrings.push(\"Z\");\n return pointStrings.join(\" \");\n}\n__name(createPathFromPoints, \"createPathFromPoints\");\nfunction generateFullSineWavePoints(x1, y1, x2, y2, amplitude, numCycles) {\n const points = [];\n const steps = 50;\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n const cycleLength = deltaX / numCycles;\n const frequency = 2 * Math.PI / cycleLength;\n const midY = y1 + deltaY / 2;\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n const x = x1 + t * deltaX;\n const y = midY + amplitude * Math.sin(frequency * (x - x1));\n points.push({ x, y });\n }\n return points;\n}\n__name(generateFullSineWavePoints, \"generateFullSineWavePoints\");\nfunction generateCirclePoints(centerX, centerY, radius, numPoints, startAngle, endAngle) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints, \"generateCirclePoints\");\n\n// src/rendering-util/rendering-elements/clusters.js\nimport { select as select3 } from \"d3\";\nimport rough from \"roughjs\";\n\n// src/rendering-util/rendering-elements/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point) => {\n var x = node.x;\n var y = node.y;\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/rendering-util/rendering-elements/createLabel.js\nimport { select as select2 } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n__name(applyStyle, \"applyStyle\");\nasync function addHtmlLabel(node) {\n const fo = select2(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const config = getConfig2();\n let label = node.label;\n if (node.label && hasKatex(node.label)) {\n label = await renderKatexSanitized(node.label.replace(common_default.lineBreakRegex, \"\\n\"), config);\n }\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n const labelSpan = '<span class=\"' + labelClass + '\" ' + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : \"\") + // codeql [js/html-constructed-from-input] : false positive\n \">\" + label + \"</span>\";\n div.html(sanitizeText(labelSpan, config));\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"padding-right\", \"1px\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name(async (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"<br />\");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => `<i class='${s.replace(\":\", \" \")}'></i>`\n ),\n labelStyle: style ? style.replace(\"fill:\", \"color:\") : style\n };\n let vertexNode = await addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/rendering-util/rendering-elements/shapes/roundedRectPath.ts\nvar createRoundedRectPathD = /* @__PURE__ */ __name((x, y, totalWidth, totalHeight, radius) => [\n \"M\",\n x + radius,\n y,\n // Move to the first point\n \"H\",\n x + totalWidth - radius,\n // Draw horizontal line to the beginning of the right corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius,\n // Draw arc to the right top corner\n \"V\",\n y + totalHeight - radius,\n // Draw vertical line down to the beginning of the right bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight,\n // Draw arc to the right bottom corner\n \"H\",\n x + radius,\n // Draw horizontal line to the beginning of the left bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius,\n // Draw arc to the left bottom corner\n \"V\",\n y + radius,\n // Draw vertical line up to the beginning of the left top corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y,\n // Draw arc to the left top corner\n \"Z\"\n // Close the path\n].join(\" \"), \"createRoundedRectPathD\");\n\n// src/rendering-util/rendering-elements/clusters.js\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"rect\");\nvar noteGroup = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n}, \"noteGroup\");\nvar roundedWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n let innerRect = shapeSvg.append(\"rect\");\n const text2 = label.node().appendChild(await createLabel_default(node.label, node.labelStyle, void 0, true));\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n let rect2;\n if (node.look === \"handDrawn\") {\n const isAlt = node.cssClasses.includes(\"statediagram-cluster-alt\");\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = node.rx || node.ry ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n }) : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? \"hachure\" : \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"outer\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", x).attr(\"y\", innerY).attr(\"width\", width).attr(\"height\", innerHeight);\n }\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"roundedWithTitle\");\nvar kanbanSection = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 4,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"kanbanSection\");\nvar divider = /* @__PURE__ */ __name((parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const padding = 0 * node.padding;\n const width = node.width + padding;\n node.diff = -node.padding;\n const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: \"lightgrey\",\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"divider\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n }\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = 0;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: {} };\n}, \"divider\");\nvar squareRect = rect;\nvar shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection\n};\nvar clusterElems = /* @__PURE__ */ new Map();\nvar insertCluster = /* @__PURE__ */ __name(async (elem, node) => {\n const shape = node.shape || \"rect\";\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n}, \"insertCluster\");\nvar clear = /* @__PURE__ */ __name(() => {\n clusterElems = /* @__PURE__ */ new Map();\n}, \"clear\");\n\n// src/rendering-util/rendering-elements/intersect/intersect-node.js\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/rendering-util/rendering-elements/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point.x;\n var py = cy - point.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/rendering-util/rendering-elements/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point) {\n return intersect_ellipse_default(node, rx, rx, point);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/rendering-util/rendering-elements/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n {\n const a1 = p2.y - p1.y;\n const b1 = p1.x - p2.x;\n const c1 = p2.x * p1.y - p1.x * p2.y;\n const r3 = a1 * q1.x + b1 * q1.y + c1;\n const r4 = a1 * q2.x + b1 * q2.y + c1;\n const epsilon = 1e-6;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n const a2 = q2.y - q1.y;\n const b2 = q1.x - q2.x;\n const c2 = q2.x * q1.y - q1.x * q2.y;\n const r1 = a2 * p1.x + b2 * p1.y + c2;\n const r2 = a2 * p2.x + b2 * p2.y + c2;\n if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {\n return;\n }\n const denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n const offset = Math.abs(denom / 2);\n let num = b1 * c2 - b2 * c1;\n const x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n const y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n }\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/rendering-util/rendering-elements/intersect/intersect-polygon.js\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n let intersections = [];\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let intersect = intersect_line_default(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\nvar intersect_polygon_default = intersectPolygon;\n\n// src/rendering-util/rendering-elements/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/rendering-util/rendering-elements/shapes/anchor.ts\nimport rough2 from \"roughjs\";\nfunction anchor(parent, node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = \"anchor\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const radius = 1;\n const { cssStyles } = node;\n const rc = rough2.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"black\", stroke: \"none\", fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"anchor\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(anchor, \"anchor\");\n\n// src/rendering-util/rendering-elements/shapes/bowTieRect.ts\nimport rough3 from \"roughjs\";\nfunction generateArcPoints(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints, \"generateArcPoints\");\nasync function bowTieRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding + 20;\n const h = bbox.height + node.padding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const { cssStyles } = node;\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true)\n ];\n const rc = rough3.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, \":first-child\");\n bowTieRectShape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n bowTieRectShape.attr(\"transform\", `translate(${rx / 2}, 0)`);\n updateNodeBounds(node, bowTieRectShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(bowTieRect, \"bowTieRect\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nimport rough4 from \"roughjs\";\n\n// src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nasync function card(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const padding = 12;\n const w = bbox.width + node.padding + padding;\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + padding, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + padding },\n { x: left + padding, y: top }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough4.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(card, \"card\");\n\n// src/rendering-util/rendering-elements/shapes/choice.ts\nimport rough5 from \"roughjs\";\nfunction choice(parent, node) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const s = Math.max(28, node.width ?? 0);\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const rc = rough5.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = 28;\n node.height = 28;\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(choice, \"choice\");\n\n// src/rendering-util/rendering-elements/shapes/circle.ts\nimport rough6 from \"roughjs\";\nasync function circle(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const padding = options?.padding ?? halfPadding;\n const radius = bbox.width / 2 + padding;\n let circleElem;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough6.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options2);\n circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg.insert(\"circle\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"r\", radius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleElem);\n node.calcIntersect = function(bounds, point) {\n const radius2 = bounds.width / 2;\n return intersect_default.circle(bounds, radius2, point);\n };\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(circle, \"circle\");\n\n// src/rendering-util/rendering-elements/shapes/crossedCircle.ts\nimport rough7 from \"roughjs\";\nfunction createLine(r) {\n const xAxis45 = Math.cos(Math.PI / 4);\n const yAxis45 = Math.sin(Math.PI / 4);\n const lineLength = r * 2;\n const pointQ1 = { x: lineLength / 2 * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 };\n const pointQ4 = { x: lineLength / 2 * xAxis45, y: -(lineLength / 2) * yAxis45 };\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n__name(createLine, \"createLine\");\nfunction crossedCircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n const rc = rough7.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n const crossedCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n crossedCircle2.insert(() => lineNode);\n if (cssStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, crossedCircle2);\n node.intersect = function(point) {\n log.info(\"crossedCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(crossedCircle, \"crossedCircle\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts\nimport rough8 from \"roughjs\";\nfunction generateCirclePoints2(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints2, \"generateCirclePoints\");\nasync function curlyBraceLeft(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints2(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints2(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints2(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints2(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius }\n ];\n const rc = rough8.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace(\"Z\", \"\");\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceLeftShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, \":first-child\");\n curlyBraceLeftShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceLeftShape.attr(\"transform\", `translate(${radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceLeftShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceLeft, \"curlyBraceLeft\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts\nimport rough9 from \"roughjs\";\nfunction generateCirclePoints3(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateCirclePoints3, \"generateCirclePoints\");\nasync function curlyBraceRight(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius }\n ];\n const rc = rough9.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace(\"Z\", \"\");\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceRightShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, \":first-child\");\n curlyBraceRightShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceRightShape.attr(\"transform\", `translate(${-radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceRightShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceRight, \"curlyBraceRight\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraces.ts\nimport rough10 from \"roughjs\";\nfunction generateCirclePoints4(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints4, \"generateCirclePoints\");\nasync function curlyBraces(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const leftCurlyBracePoints = [\n ...generateCirclePoints4(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rightCurlyBracePoints = [\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints4(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rc = rough10.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace(\"Z\", \"\");\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace(\"Z\", \"\");\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBracesShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, \":first-child\");\n curlyBracesShape.insert(() => rightCurlyBraceNode, \":first-child\");\n curlyBracesShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBracesShape.attr(\"transform\", `translate(${radius - radius / 4}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBracesShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraces, \"curlyBraces\");\n\n// src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts\nimport rough11 from \"roughjs\";\nasync function curvedTrapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 80, minHeight = 20;\n const w = Math.max(minWidth, (bbox.width + (node.padding ?? 0) * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough11.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const totalWidth = w, totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curvedTrapezoid, \"curvedTrapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/cylinder.ts\nimport rough12 from \"roughjs\";\nvar createCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function cylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + node.padding, node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + node.padding, node.height ?? 0);\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough12.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(cylinder, \"cylinder\");\n\n// src/rendering-util/rendering-elements/shapes/dividedRect.ts\nimport rough13 from \"roughjs\";\nasync function dividedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const rectOffset = h * 0.2;\n const x = -w / 2;\n const y = -h / 2 - rectOffset / 2;\n const { cssStyles } = node;\n const rc = rough13.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pts = [\n { x, y: y + rectOffset },\n { x: -x, y: y + rectOffset },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset }\n ];\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n const polygon = shapeSvg.insert(() => poly, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(dividedRectangle, \"dividedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/doubleCircle.ts\nimport rough14 from \"roughjs\";\nasync function doublecircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const gap = 5;\n const outerRadius = bbox.width / 2 + halfPadding + gap;\n const innerRadius = bbox.width / 2 + halfPadding;\n let circleGroup;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough14.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n circleGroup.attr(\"class\", handleUndefinedAttr(node.cssClasses)).attr(\"style\", handleUndefinedAttr(cssStyles));\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\", \":first-child\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n outerCircle.attr(\"class\", \"outer-circle\").attr(\"style\", nodeStyles).attr(\"r\", outerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n innerCircle.attr(\"class\", \"inner-circle\").attr(\"style\", nodeStyles).attr(\"r\", innerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleGroup);\n node.intersect = function(point) {\n log.info(\"DoubleCircle intersect\", node, outerRadius, point);\n return intersect_default.circle(node, outerRadius, point);\n };\n return shapeSvg;\n}\n__name(doublecircle, \"doublecircle\");\n\n// src/rendering-util/rendering-elements/shapes/filledCircle.ts\nimport rough15 from \"roughjs\";\nfunction filledCircle(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n const rc = rough15.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const filledCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n filledCircle2.selectAll(\"path\").attr(\"style\", `fill: ${nodeBorder} !important;`);\n if (cssStyles && cssStyles.length > 0 && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, filledCircle2);\n node.intersect = function(point) {\n log.info(\"filledCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(filledCircle, \"filledCircle\");\n\n// src/rendering-util/rendering-elements/shapes/flippedTriangle.ts\nimport rough16 from \"roughjs\";\nasync function flippedTriangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 }\n ];\n const { cssStyles } = node;\n const rc = rough16.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const flippedTriangle2 = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, flippedTriangle2);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(flippedTriangle, \"flippedTriangle\");\n\n// src/rendering-util/rendering-elements/shapes/forkJoin.ts\nimport rough17 from \"roughjs\";\nfunction forkJoin(parent, node, { dir, config: { state: state2, themeVariables } }) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n if (dir === \"LR\") {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n const x = -1 * width / 2;\n const y = -1 * height / 2;\n const rc = rough17.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.rectangle(x, y, width, height, options);\n const shape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, shape);\n const padding = state2?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(forkJoin, \"forkJoin\");\n\n// src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts\nimport rough18 from \"roughjs\";\nasync function halfRoundedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 80, minHeight = 50;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough18.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { radius, point });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(halfRoundedRectangle, \"halfRoundedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/hexagon.ts\nimport rough19 from \"roughjs\";\nasync function hexagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + (node.padding ?? 0);\n const w = bbox.width + (node.padding ?? 0) * 2.5;\n const { cssStyles } = node;\n const rc = rough19.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let halfWidth = w / 2;\n const m = halfWidth / 6;\n halfWidth = halfWidth + m;\n const halfHeight = h / 2;\n const fixedLength = halfHeight / 2;\n const deducedWidth = halfWidth - fixedLength;\n const points = [\n { x: -deducedWidth, y: -halfHeight },\n { x: 0, y: -halfHeight },\n { x: deducedWidth, y: -halfHeight },\n { x: halfWidth, y: 0 },\n { x: deducedWidth, y: halfHeight },\n { x: 0, y: halfHeight },\n { x: -deducedWidth, y: halfHeight },\n { x: -halfWidth, y: 0 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(hexagon, \"hexagon\");\n\n// src/rendering-util/rendering-elements/shapes/hourglass.ts\nimport rough20 from \"roughjs\";\nasync function hourglass(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough20.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { points });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(hourglass, \"hourglass\");\n\n// src/rendering-util/rendering-elements/shapes/icon.ts\nimport rough21 from \"roughjs\";\nasync function icon(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const topLabel = node.pos === \"t\";\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough21.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: \"none\", fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const iconNode = rc.rectangle(x, y, width, height, options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(icon, \"icon\");\n\n// src/rendering-util/rendering-elements/shapes/iconCircle.ts\nimport rough22 from \"roughjs\";\nasync function iconCircle(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const padding = 20;\n const labelPadding = node.label ? 8 : 0;\n const topLabel = node.pos === \"t\";\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const rc = rough22.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconElem = shapeSvg.append(\"g\");\n if (node.icon) {\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n }\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n const diameter = Math.max(iconWidth, iconHeight) * Math.SQRT2 + padding * 2;\n const iconNode = rc.circle(0, 0, diameter, options);\n const outerWidth = Math.max(diameter, bbox.width);\n const outerHeight = diameter + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconCircle, \"iconCircle\");\n\n// src/rendering-util/rendering-elements/shapes/iconRounded.ts\nimport rough23 from \"roughjs\";\nasync function iconRounded(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough23.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 5), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\").attr(\"class\", \"icon-shape2\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconRounded, \"iconRounded\");\n\n// src/rendering-util/rendering-elements/shapes/iconSquare.ts\nimport rough24 from \"roughjs\";\nasync function iconSquare(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n \"icon-shape default\"\n );\n const topLabel = node.pos === \"t\";\n const height = iconSize + halfPadding * 2;\n const width = iconSize + halfPadding * 2;\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough24.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const fill = stylesMap.get(\"fill\");\n options.stroke = fill ?? mainBkg;\n const iconNode = rc.path(createRoundedRectPathD(x, y, width, height, 0.1), options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `<g>${await getIconSVG(node.icon, {\n height: iconSize,\n width: iconSize,\n fallbackPrefix: \"\"\n })}</g>`\n );\n const iconBBox = iconElem.node().getBBox();\n const iconWidth = iconBBox.width;\n const iconHeight = iconBBox.height;\n const iconX = iconBBox.x;\n const iconY = iconBBox.y;\n iconElem.attr(\n \"transform\",\n `translate(${-iconWidth / 2 - iconX},${topLabel ? bbox.height / 2 + labelPadding / 2 - iconHeight / 2 - iconY : -bbox.height / 2 - labelPadding / 2 - iconHeight / 2 - iconY})`\n );\n iconElem.attr(\"style\", `color: ${stylesMap.get(\"stroke\") ?? nodeBorder};`);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -outerHeight / 2 : outerHeight / 2 - bbox.height})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy + nodeHeight / 2 },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 },\n { x: dx + width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + height },\n { x: dx - width / 2, y: dy - nodeHeight / 2 + height }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(iconSquare, \"iconSquare\");\n\n// src/rendering-util/rendering-elements/shapes/imageSquare.ts\nimport rough25 from \"roughjs\";\nasync function imageSquare(parent, node, { config: { flowchart } }) {\n const img = new Image();\n img.src = node?.img ?? \"\";\n await img.decode();\n const imageNaturalWidth = Number(img.naturalWidth.toString().replace(\"px\", \"\"));\n const imageNaturalHeight = Number(img.naturalHeight.toString().replace(\"px\", \"\"));\n node.imageAspectRatio = imageNaturalWidth / imageNaturalHeight;\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const defaultWidth = flowchart?.wrappingWidth;\n node.defaultWidth = flowchart?.wrappingWidth;\n const imageRawWidth = Math.max(\n node.label ? defaultWidth ?? 0 : 0,\n node?.assetWidth ?? imageNaturalWidth\n );\n const imageWidth = node.constraint === \"on\" ? node?.assetHeight ? node.assetHeight * node.imageAspectRatio : imageRawWidth : imageRawWidth;\n const imageHeight = node.constraint === \"on\" ? imageWidth / node.imageAspectRatio : node?.assetHeight ?? imageNaturalHeight;\n node.width = Math.max(imageWidth, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"image-shape default\");\n const topLabel = node.pos === \"t\";\n const x = -imageWidth / 2;\n const y = -imageHeight / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough25.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const imageNode = rc.rectangle(x, y, imageWidth, imageHeight, options);\n const outerWidth = Math.max(imageWidth, bbox.width);\n const outerHeight = imageHeight + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"none\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => imageNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.img) {\n const image = shapeSvg.append(\"image\");\n image.attr(\"href\", node.img);\n image.attr(\"width\", imageWidth);\n image.attr(\"height\", imageHeight);\n image.attr(\"preserveAspectRatio\", \"none\");\n image.attr(\n \"transform\",\n `translate(${-imageWidth / 2},${topLabel ? outerHeight / 2 - imageHeight : -outerHeight / 2})`\n );\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))},${topLabel ? -imageHeight / 2 - bbox.height / 2 - labelPadding / 2 : imageHeight / 2 - bbox.height / 2 + labelPadding / 2})`\n );\n iconShape.attr(\n \"transform\",\n `translate(${0},${topLabel ? bbox.height / 2 + labelPadding / 2 : -bbox.height / 2 - labelPadding / 2})`\n );\n updateNodeBounds(node, outerShape);\n node.intersect = function(point) {\n log.info(\"iconSquare intersect\", node, point);\n if (!node.label) {\n return intersect_default.rect(node, point);\n }\n const dx = node.x ?? 0;\n const dy = node.y ?? 0;\n const nodeHeight = node.height ?? 0;\n let points = [];\n if (topLabel) {\n points = [\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx + imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy + nodeHeight / 2 },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + bbox.height + labelPadding }\n ];\n } else {\n points = [\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 },\n { x: dx + imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx + bbox.width / 2 / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy + nodeHeight / 2 },\n { x: dx - bbox.width / 2, y: dy - nodeHeight / 2 + imageHeight },\n { x: dx - imageWidth / 2, y: dy - nodeHeight / 2 + imageHeight }\n ];\n }\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(imageSquare, \"imageSquare\");\n\n// src/rendering-util/rendering-elements/shapes/invertedTrapezoid.ts\nimport rough26 from \"roughjs\";\nasync function inv_trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: -3 * h / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough26.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(inv_trapezoid, \"inv_trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/drawRect.ts\nimport rough27 from \"roughjs\";\nasync function drawRect(parent, node, options) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + options.labelPaddingX * 2, node?.width || 0);\n const totalHeight = Math.max(bbox.height + options.labelPaddingY * 2, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n let rect2;\n let { rx, ry } = node;\n const { cssStyles } = node;\n if (options?.rx && options.ry) {\n rx = options.rx;\n ry = options.ry;\n }\n if (node.look === \"handDrawn\") {\n const rc = rough27.svg(shapeSvg);\n const options2 = userNodeOverrides(node, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", handleUndefinedAttr(rx)).attr(\"ry\", handleUndefinedAttr(ry)).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n }\n updateNodeBounds(node, rect2);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(drawRect, \"drawRect\");\n\n// src/rendering-util/rendering-elements/shapes/labelRect.ts\nasync function labelRect(parent, node) {\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"label\");\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0.1;\n const totalHeight = 0.1;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(labelRect, \"labelRect\");\n\n// src/rendering-util/rendering-elements/shapes/leanLeft.ts\nimport rough28 from \"roughjs\";\nasync function lean_left(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: 0, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: -(3 * h) / 6, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough28.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_left, \"lean_left\");\n\n// src/rendering-util/rendering-elements/shapes/leanRight.ts\nimport rough29 from \"roughjs\";\nasync function lean_right(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w, y: 0 },\n { x: w + 3 * h / 6, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough29.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(lean_right, \"lean_right\");\n\n// src/rendering-util/rendering-elements/shapes/lightningBolt.ts\nimport rough30 from \"roughjs\";\nfunction lightningBolt(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const width = Math.max(35, node?.width ?? 0);\n const height = Math.max(35, node?.height ?? 0);\n const gap = 7;\n const points = [\n { x: width, y: 0 },\n { x: 0, y: height + gap / 2 },\n { x: width - 2 * gap, y: height + gap / 2 },\n { x: 0, y: 2 * height },\n { x: width, y: height - gap / 2 },\n { x: 2 * gap, y: height - gap / 2 }\n ];\n const rc = rough30.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const linePath = createPathFromPoints(points);\n const lineNode = rc.path(linePath, options);\n const lightningBolt2 = shapeSvg.insert(() => lineNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n lightningBolt2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n lightningBolt2.attr(\"transform\", `translate(-${width / 2},${-height})`);\n updateNodeBounds(node, lightningBolt2);\n node.intersect = function(point) {\n log.info(\"lightningBolt intersect\", node, point);\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(lightningBolt, \"lightningBolt\");\n\n// src/rendering-util/rendering-elements/shapes/linedCylinder.ts\nimport rough31 from \"roughjs\";\nvar createCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry, outerOffset) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`,\n `M${x},${y + ry + outerOffset}`,\n `a${rx},${ry} 0,0,0 ${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD2 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function linedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + (node.padding ?? 0), node.height ?? 0);\n const outerOffset = h * 0.1;\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough31.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n const innerPathData = createInnerCylinderPathD2(0, ry, w, h, rx, ry);\n const options = userNodeOverrides(node, {});\n const outerNode = rc.path(outerPathData, options);\n const innerLine = rc.path(innerPathData, options);\n const innerLineEl = shapeSvg.insert(() => innerLine, \":first-child\");\n innerLineEl.attr(\"class\", \"line\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD2(0, 0, w, h, rx, ry, outerOffset);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(linedCylinder, \"linedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts\nimport rough32 from \"roughjs\";\nasync function linedWaveEdgedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough32.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2, y: -finalH / 2 },\n { x: -w / 2, y: finalH / 2 * 1.1 },\n { x: -w / 2, y: -finalH / 2 }\n ];\n const poly = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const waveEdgeRect = shapeSvg.insert(() => poly, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) + w / 2 * 0.1 / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(linedWaveEdgedRect, \"linedWaveEdgedRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiRect.ts\nimport rough33 from \"roughjs\";\nasync function multiRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough33.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y + h - rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y },\n { x, y }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, { ...options, fill: \"none\" });\n const multiRect2 = shapeSvg.insert(() => innerNode, \":first-child\");\n multiRect2.insert(() => outerNode, \":first-child\");\n multiRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n multiRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, multiRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiRect, \"multiRect\");\n\n// src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts\nimport rough34 from \"roughjs\";\nasync function multiWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const finalH = h + waveAmplitude;\n const x = -w / 2;\n const y = -finalH / 2;\n const rectOffset = 5;\n const { cssStyles } = node;\n const wavePoints = generateFullSineWavePoints(\n x - rectOffset,\n y + finalH + rectOffset,\n x + w - rectOffset,\n y + finalH + rectOffset,\n waveAmplitude,\n 0.8\n );\n const lastWavePoint = wavePoints?.[wavePoints.length - 1];\n const outerPathPoints = [\n { x: x - rectOffset, y: y + rectOffset },\n { x: x - rectOffset, y: y + finalH + rectOffset },\n ...wavePoints,\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: lastWavePoint.y - 2 * rectOffset },\n { x: x + w + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y: y - rectOffset },\n { x: x + rectOffset, y },\n { x, y },\n { x, y: y + rectOffset }\n ];\n const innerPathPoints = [\n { x, y: y + rectOffset },\n { x: x + w - rectOffset, y: y + rectOffset },\n { x: x + w - rectOffset, y: lastWavePoint.y - rectOffset },\n { x: x + w, y: lastWavePoint.y - rectOffset },\n { x: x + w, y },\n { x, y }\n ];\n const rc = rough34.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const outerPath = createPathFromPoints(outerPathPoints);\n const outerNode = rc.path(outerPath, options);\n const innerPath = createPathFromPoints(innerPathPoints);\n const innerNode = rc.path(innerPath, options);\n const shape = shapeSvg.insert(() => outerNode, \":first-child\");\n shape.insert(() => innerNode);\n shape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n shape.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, shape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(multiWaveEdgedRectangle, \"multiWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/note.ts\nimport rough35 from \"roughjs\";\nasync function note(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart?.htmlLabels !== false;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const totalHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const { cssStyles } = node;\n const rc = rough35.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n fill: themeVariables.noteBkgColor,\n stroke: themeVariables.noteBorderColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const noteShapeNode = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => noteShapeNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(note, \"note\");\n\n// src/rendering-util/rendering-elements/shapes/question.ts\nimport rough36 from \"roughjs\";\nvar createDecisionBoxPathD = /* @__PURE__ */ __name((x, y, size) => {\n return [\n `M${x + size / 2},${y}`,\n `L${x + size},${y - size / 2}`,\n `L${x + size / 2},${y - size}`,\n `L${x},${y - size / 2}`,\n \"Z\"\n ].join(\" \");\n}, \"createDecisionBoxPathD\");\nasync function question(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const adjustment = 0.5;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough36.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createDecisionBoxPathD(0, 0, s);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, s, s, points);\n polygon.attr(\"transform\", `translate(${-s / 2 + adjustment}, ${s / 2})`);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.calcIntersect = function(bounds, point) {\n const s2 = bounds.width;\n const points2 = [\n { x: s2 / 2, y: 0 },\n { x: s2, y: -s2 / 2 },\n { x: s2 / 2, y: -s2 },\n { x: 0, y: -s2 / 2 }\n ];\n const res = intersect_default.polygon(bounds, points2, point);\n return { x: res.x - 0.5, y: res.y - 0.5 };\n };\n node.intersect = function(point) {\n return this.calcIntersect(node, point);\n };\n return shapeSvg;\n}\n__name(question, \"question\");\n\n// src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts\nimport rough37 from \"roughjs\";\nasync function rect_left_inv_arrow(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0), node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0), node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const notch = y / 2;\n const points = [\n { x: x + notch, y },\n { x, y: 0 },\n { x: x + notch, y: -y },\n { x: -x, y: -y },\n { x: -x, y }\n ];\n const { cssStyles } = node;\n const rc = rough37.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-notch / 2},0)`);\n label.attr(\n \"transform\",\n `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(rect_left_inv_arrow, \"rect_left_inv_arrow\");\n\n// src/rendering-util/rendering-elements/shapes/rectWithTitle.ts\nimport { select as select4 } from \"d3\";\nimport rough38 from \"roughjs\";\nasync function rectWithTitle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n let classes;\n if (!node.cssClasses) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.cssClasses;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const g = shapeSvg.insert(\"g\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", nodeStyles);\n const description = node.description;\n const title = node.label;\n const text2 = label.node().appendChild(await createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div2 = text2.children[0];\n const dv2 = select4(text2);\n bbox = div2.getBoundingClientRect();\n dv2.attr(\"width\", bbox.width);\n dv2.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", description);\n const textRows = description || [];\n const titleBox = text2.getBBox();\n const descr = label.node().appendChild(\n await createLabel_default(\n textRows.join ? textRows.join(\"<br/>\") : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n const halfPadding = (node.padding || 0) / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text2).attr(\n \"transform\",\n \"translate( \" + (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect2;\n let innerLine;\n if (node.look === \"handDrawn\") {\n const rc = rough38.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n innerLine = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughLine;\n }, \":first-child\");\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n } else {\n rect2 = g.insert(\"rect\", \":first-child\");\n innerLine = g.insert(\"line\");\n rect2.attr(\"class\", \"outer title-state\").attr(\"style\", nodeStyles).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + (node.padding || 0)).attr(\"height\", bbox.height + (node.padding || 0));\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(rectWithTitle, \"rectWithTitle\");\n\n// src/rendering-util/rendering-elements/shapes/roundedRect.ts\nimport rough39 from \"roughjs\";\nfunction generateArcPoints2(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints2, \"generateArcPoints\");\nasync function roundedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const labelPaddingX = node?.padding ?? 0;\n const labelPaddingY = node?.padding ?? 0;\n const w = (node?.width ? node?.width : bbox.width) + labelPaddingX * 2;\n const h = (node?.height ? node?.height : bbox.height) + labelPaddingY * 2;\n const radius = node.radius || 5;\n const taper = node.taper || 5;\n const { cssStyles } = node;\n const rc = rough39.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.stroke) {\n options.stroke = node.stroke;\n }\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n // Top edge (left to right)\n { x: -w / 2 + taper, y: -h / 2 },\n // Top-left corner start (1)\n { x: w / 2 - taper, y: -h / 2 },\n // Top-right corner start (2)\n ...generateArcPoints2(w / 2 - taper, -h / 2, w / 2, -h / 2 + taper, radius, radius, true),\n // Top-left arc (2 to 3)\n // Right edge (top to bottom)\n { x: w / 2, y: -h / 2 + taper },\n // Top-right taper point (3)\n { x: w / 2, y: h / 2 - taper },\n // Bottom-right taper point (4)\n ...generateArcPoints2(w / 2, h / 2 - taper, w / 2 - taper, h / 2, radius, radius, true),\n // Top-left arc (4 to 5)\n // Bottom edge (right to left)\n { x: w / 2 - taper, y: h / 2 },\n // Bottom-right corner start (5)\n { x: -w / 2 + taper, y: h / 2 },\n // Bottom-left corner start (6)\n ...generateArcPoints2(-w / 2 + taper, h / 2, -w / 2, h / 2 - taper, radius, radius, true),\n // Top-left arc (4 to 5)\n // Left edge (bottom to top)\n { x: -w / 2, y: h / 2 - taper },\n // Bottom-left taper point (7)\n { x: -w / 2, y: -h / 2 + taper },\n // Top-left taper point (8)\n ...generateArcPoints2(-w / 2, -h / 2 + taper, -w / 2 + taper, -h / 2, radius, radius, true)\n // Top-left arc (4 to 5)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough40 from \"roughjs\";\nasync function shadedProcess(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = node?.padding ?? 0;\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const { cssStyles } = node;\n const rc = rough40.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x: x + w + 8, y },\n { x: x + w + 8, y: y + h },\n { x: x - 8, y: y + h },\n { x: x - 8, y },\n { x, y },\n { x, y: y + h }\n ];\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(shadedProcess, \"shadedProcess\");\n\n// src/rendering-util/rendering-elements/shapes/slopedRect.ts\nimport rough41 from \"roughjs\";\nasync function slopedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough41.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(0, ${h / 4})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(slopedRect, \"slopedRect\");\n\n// src/rendering-util/rendering-elements/shapes/squareRect.ts\nasync function squareRect2(parent, node) {\n const options = {\n rx: 0,\n ry: 0,\n classes: \"\",\n labelPaddingX: node.labelPaddingX ?? (node?.padding || 0) * 2,\n labelPaddingY: (node?.padding || 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough42 from \"roughjs\";\nasync function stadium(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough42.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 + radius, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n ...generateCirclePoints(w / 2 - radius, 0, radius, 50, 270, 450)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container outer-path\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(stadium, \"stadium\");\n\n// src/rendering-util/rendering-elements/shapes/state.ts\nasync function state(parent, node) {\n const options = {\n rx: 5,\n ry: 5,\n classes: \"flowchart-node\"\n };\n return drawRect(parent, node, options);\n}\n__name(state, \"state\");\n\n// src/rendering-util/rendering-elements/shapes/stateEnd.ts\nimport rough43 from \"roughjs\";\nfunction stateEnd(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const rc = rough43.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.circle(0, 0, 14, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2\n });\n const innerFill = stateBorder ?? nodeBorder;\n const roughInnerNode = rc.circle(0, 0, 5, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: \"solid\"\n });\n const circle2 = shapeSvg.insert(() => roughNode, \":first-child\");\n circle2.insert(() => roughInnerNode);\n if (cssStyles) {\n circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough44 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n const { lineColor } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let circle2;\n if (node.look === \"handDrawn\") {\n const rc = rough44.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n circle2 = shapeSvg.insert(() => roughNode);\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n } else {\n circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough45 from \"roughjs\";\nasync function subroutine(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = (node?.padding || 0) / 2;\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n if (node.look === \"handDrawn\") {\n const rc = rough45.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.rectangle(x - 8, y, w + 16, h, options);\n const l1 = rc.line(x, y, x, y + h, options);\n const l2 = rc.line(x + w, y, x + w, y + h, options);\n shapeSvg.insert(() => l1, \":first-child\");\n shapeSvg.insert(() => l2, \":first-child\");\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n const { cssStyles } = node;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect2);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(subroutine, \"subroutine\");\n\n// src/rendering-util/rendering-elements/shapes/taggedRect.ts\nimport rough46 from \"roughjs\";\nasync function taggedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const tagWidth = 0.2 * h;\n const tagHeight = 0.2 * h;\n const { cssStyles } = node;\n const rc = rough46.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h }\n ];\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: \"solid\" });\n const taggedRect2 = shapeSvg.insert(() => tagNode, \":first-child\");\n taggedRect2.insert(() => rectNode, \":first-child\");\n taggedRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, taggedRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedRect, \"taggedRect\");\n\n// src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts\nimport rough47 from \"roughjs\";\nasync function taggedWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough47.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 }\n ];\n const x = -w / 2 + w / 2 * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.4 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.3,\n x + w - tagWidth,\n (y + h) * 1.5,\n -h * 0.03,\n 0.5\n )\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: \"solid\"\n });\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, \":first-child\");\n waveEdgeRect.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedWaveEdgedRectangle, \"taggedWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/text.ts\nasync function text(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + node.padding, node?.width || 0);\n const totalHeight = Math.max(bbox.height + node.padding, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"text\").attr(\"style\", nodeStyles).attr(\"rx\", 0).attr(\"ry\", 0).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(text, \"text\");\n\n// src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts\nimport rough48 from \"roughjs\";\nvar createCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function tiltedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label, halfPadding } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const labelPadding = node.look === \"neo\" ? halfPadding * 2 : halfPadding;\n const h = bbox.height + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = bbox.width + rx + labelPadding;\n const { cssStyles } = node;\n let cylinder2;\n if (node.look === \"handDrawn\") {\n const rc = rough48.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD3(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD3(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD3(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n }\n cylinder2.attr(\"label-offset-x\", rx);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${h / 2} )`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, cylinder2);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n if (ry != 0 && (Math.abs(y) < (node.height ?? 0) / 2 || Math.abs(y) == (node.height ?? 0) / 2 && Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx)) {\n let x = rx * rx * (1 - y * y / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(Math.abs(x));\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n pos.x += x;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(tiltedCylinder, \"tiltedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoid.ts\nimport rough49 from \"roughjs\";\nasync function trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough49.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(trapezoid, \"trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts\nimport rough50 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 60, minHeight = 20;\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough50.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 * 0.8, y: -h / 2 },\n { x: w / 2 * 0.8, y: -h / 2 },\n { x: w / 2, y: -h / 2 * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: -h / 2 * 0.6 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(trapezoidalPentagon, \"trapezoidalPentagon\");\n\n// src/rendering-util/rendering-elements/shapes/triangle.ts\nimport rough51 from \"roughjs\";\nasync function triangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h }\n ];\n const { cssStyles } = node;\n const rc = rough51.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(triangle, \"triangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts\nimport rough52 from \"roughjs\";\nasync function waveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const minWidth = 70;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n const rc = rough52.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 }\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveEdgedRectangle, \"waveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveRectangle.ts\nimport rough53 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 100;\n const minHeight = 50;\n const baseWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const baseHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const aspectRatio = baseWidth / baseHeight;\n let w = baseWidth;\n let h = baseHeight;\n if (w > h * aspectRatio) {\n h = w / aspectRatio;\n } else {\n w = h * aspectRatio;\n }\n w = Math.max(w, minWidth);\n h = Math.max(h, minHeight);\n const waveAmplitude = Math.min(h * 0.2, h / 4);\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n const rc = rough53.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1)\n ];\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n const waveRect = shapeSvg.insert(() => waveRectNode, \":first-child\");\n waveRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, waveRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveRectangle, \"waveRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/windowPane.ts\nimport rough54 from \"roughjs\";\nasync function windowPane(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough54.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset }\n ];\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const no = rc.path(path, options);\n const windowPane2 = shapeSvg.insert(() => no, \":first-child\");\n windowPane2.attr(\"transform\", `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n windowPane2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, windowPane2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(windowPane, \"windowPane\");\n\n// src/rendering-util/rendering-elements/shapes/erBox.ts\nimport rough55 from \"roughjs\";\nimport { select as select5 } from \"d3\";\nasync function erBox(parent, node) {\n const entityNode = node;\n if (entityNode.alias) {\n node.label = entityNode.alias;\n }\n if (node.look === \"handDrawn\") {\n const { themeVariables: themeVariables2 } = getConfig();\n const { background } = themeVariables2;\n const backgroundNode = {\n ...node,\n id: node.id + \"-background\",\n look: \"default\",\n cssStyles: [\"stroke: none\", `fill: ${background}`]\n };\n await erBox(parent, backgroundNode);\n }\n const config = getConfig();\n node.useHtmlLabels = config.htmlLabels;\n let PADDING = config.er?.diagramPadding ?? 10;\n let TEXT_PADDING = config.er?.entityPadding ?? 6;\n const { cssStyles } = node;\n const { labelStyles, nodeStyles } = styles2String(node);\n if (entityNode.attributes.length === 0 && node.label) {\n const options2 = {\n rx: 0,\n ry: 0,\n labelPaddingX: PADDING,\n labelPaddingY: PADDING * 1.5,\n classes: \"\"\n };\n if (calculateTextWidth(node.label, config) + options2.labelPaddingX * 2 < config.er.minEntityWidth) {\n node.width = config.er.minEntityWidth;\n }\n const shapeSvg2 = await drawRect(parent, node, options2);\n if (!evaluate(config.htmlLabels)) {\n const textElement = shapeSvg2.select(\"text\");\n const bbox = textElement.node()?.getBBox();\n textElement.attr(\"transform\", `translate(${-bbox.width / 2}, 0)`);\n }\n return shapeSvg2;\n }\n if (!config.htmlLabels) {\n PADDING *= 1.25;\n TEXT_PADDING *= 1.25;\n }\n let cssClasses = getNodeClasses(node);\n if (!cssClasses) {\n cssClasses = \"node default\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const nameBBox = await addText(shapeSvg, node.label ?? \"\", config, 0, 0, [\"name\"], labelStyles);\n nameBBox.height += TEXT_PADDING;\n let yOffset = 0;\n const yOffsets = [];\n const rows = [];\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeysWidth = 0;\n let maxCommentWidth = 0;\n let keysPresent = true;\n let commentPresent = true;\n for (const attribute of entityNode.attributes) {\n const typeBBox = await addText(\n shapeSvg,\n attribute.type,\n config,\n 0,\n yOffset,\n [\"attribute-type\"],\n labelStyles\n );\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width + PADDING);\n const nameBBox2 = await addText(\n shapeSvg,\n attribute.name,\n config,\n 0,\n yOffset,\n [\"attribute-name\"],\n labelStyles\n );\n maxNameWidth = Math.max(maxNameWidth, nameBBox2.width + PADDING);\n const keysBBox = await addText(\n shapeSvg,\n attribute.keys.join(),\n config,\n 0,\n yOffset,\n [\"attribute-keys\"],\n labelStyles\n );\n maxKeysWidth = Math.max(maxKeysWidth, keysBBox.width + PADDING);\n const commentBBox = await addText(\n shapeSvg,\n attribute.comment,\n config,\n 0,\n yOffset,\n [\"attribute-comment\"],\n labelStyles\n );\n maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING);\n const rowHeight = Math.max(typeBBox.height, nameBBox2.height, keysBBox.height, commentBBox.height) + TEXT_PADDING;\n rows.push({ yOffset, rowHeight });\n yOffset += rowHeight;\n }\n let totalWidthSections = 4;\n if (maxKeysWidth <= PADDING) {\n keysPresent = false;\n maxKeysWidth = 0;\n totalWidthSections--;\n }\n if (maxCommentWidth <= PADDING) {\n commentPresent = false;\n maxCommentWidth = 0;\n totalWidthSections--;\n }\n const shapeBBox = shapeSvg.node().getBBox();\n if (nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth) > 0) {\n const difference = nameBBox.width + PADDING * 2 - (maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth);\n maxTypeWidth += difference / totalWidthSections;\n maxNameWidth += difference / totalWidthSections;\n if (maxKeysWidth > 0) {\n maxKeysWidth += difference / totalWidthSections;\n }\n if (maxCommentWidth > 0) {\n maxCommentWidth += difference / totalWidthSections;\n }\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeysWidth + maxCommentWidth;\n const rc = rough55.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n let totalShapeBBoxHeight = 0;\n if (rows.length > 0) {\n totalShapeBBoxHeight = rows.reduce((sum, row) => sum + (row?.rowHeight ?? 0), 0);\n }\n const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth);\n const h = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node?.height || 0);\n const x = -w / 2;\n const y = -h / 2;\n shapeSvg.selectAll(\"g:not(:first-child)\").each((_, i, nodes) => {\n const text2 = select5(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n if (text2.attr(\"class\").includes(\"attribute-name\")) {\n translateX += maxTypeWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-keys\")) {\n translateX += maxTypeWidth + maxNameWidth;\n } else if (text2.attr(\"class\").includes(\"attribute-comment\")) {\n translateX += maxTypeWidth + maxNameWidth + maxKeysWidth;\n }\n }\n }\n text2.attr(\n \"transform\",\n `translate(${x + PADDING / 2 + translateX}, ${translateY + y + nameBBox.height + TEXT_PADDING / 2})`\n );\n });\n shapeSvg.select(\".name\").attr(\"transform\", \"translate(\" + -nameBBox.width / 2 + \", \" + (y + TEXT_PADDING / 2) + \")\");\n const roughRect = rc.rectangle(x, y, w, h, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\").attr(\"style\", cssStyles.join(\"\"));\n const { themeVariables } = getConfig();\n const { rowEven, rowOdd, nodeBorder } = themeVariables;\n yOffsets.push(0);\n for (const [i, row] of rows.entries()) {\n const contentRowIndex = i + 1;\n const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0;\n const roughRect2 = rc.rectangle(x, nameBBox.height + y + row?.yOffset, w, row?.rowHeight, {\n ...options,\n fill: isEven ? rowEven : rowOdd,\n stroke: nodeBorder\n });\n shapeSvg.insert(() => roughRect2, \"g.label\").attr(\"style\", cssStyles.join(\"\")).attr(\"class\", `row-rect-${isEven ? \"even\" : \"odd\"}`);\n }\n let roughLine = rc.line(x, nameBBox.height + y, w + x, nameBBox.height + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n roughLine = rc.line(maxTypeWidth + x, nameBBox.height + y, maxTypeWidth + x, h + y, options);\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n if (keysPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n if (commentPresent) {\n roughLine = rc.line(\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n nameBBox.height + y,\n maxTypeWidth + maxNameWidth + maxKeysWidth + x,\n h + y,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n for (const yOffset2 of yOffsets) {\n roughLine = rc.line(\n x,\n nameBBox.height + y + yOffset2,\n w + x,\n nameBBox.height + y + yOffset2,\n options\n );\n shapeSvg.insert(() => roughLine).attr(\"class\", \"divider\");\n }\n updateNodeBounds(node, rect2);\n if (nodeStyles && node.look !== \"handDrawn\") {\n const allStyle = nodeStyles.split(\";\");\n const strokeStyles = allStyle?.filter((e) => {\n return e.includes(\"stroke\");\n })?.map((s) => `${s}`).join(\"; \");\n shapeSvg.selectAll(\"path\").attr(\"style\", strokeStyles ?? \"\");\n shapeSvg.selectAll(\".row-rect-even path\").attr(\"style\", nodeStyles);\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(erBox, \"erBox\");\nasync function addText(shapeSvg, labelText, config, translateX = 0, translateY = 0, classes = [], style = \"\") {\n const label = shapeSvg.insert(\"g\").attr(\"class\", `label ${classes.join(\" \")}`).attr(\"transform\", `translate(${translateX}, ${translateY})`).attr(\"style\", style);\n if (labelText !== parseGenericTypes(labelText)) {\n labelText = parseGenericTypes(labelText);\n labelText = labelText.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n const text2 = label.node().appendChild(\n await createText(\n label,\n labelText,\n {\n width: calculateTextWidth(labelText, config) + 100,\n style,\n useHtmlLabels: config.htmlLabels\n },\n config\n )\n );\n if (labelText.includes(\"<\") || labelText.includes(\">\")) {\n let child = text2.children[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n while (child.childNodes[0]) {\n child = child.childNodes[0];\n child.textContent = child.textContent.replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");\n }\n }\n let bbox = text2.getBBox();\n if (evaluate(config.htmlLabels)) {\n const div = text2.children[0];\n div.style.textAlign = \"start\";\n const dv = select5(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n return bbox;\n}\n__name(addText, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select7 } from \"d3\";\nimport rough56 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select6 } from \"d3\";\nasync function textHelper(parent, node, config, useHtmlLabels, GAP = config.class.padding ?? 12) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId || node.id);\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n annotationGroup = shapeSvg.insert(\"g\").attr(\"class\", \"annotation-group text\");\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText2(annotationGroup, { text: `\\xAB${annotation}\\xBB` }, 0);\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n labelGroup = shapeSvg.insert(\"g\").attr(\"class\", \"label-group text\");\n await addText2(labelGroup, node, 0, [\"font-weight: bolder\"]);\n const labelGroupBBox = labelGroup.node().getBBox();\n labelGroupHeight = labelGroupBBox.height;\n membersGroup = shapeSvg.insert(\"g\").attr(\"class\", \"members-group text\");\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText2(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node().getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n methodsGroup = shapeSvg.insert(\"g\").attr(\"class\", \"methods-group text\");\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText2(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n let bbox = shapeSvg.node().getBBox();\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroup.attr(\"transform\", `translate(${-annotationGroupBBox.width / 2})`);\n }\n labelGroup.attr(\"transform\", `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n bbox = shapeSvg.node().getBBox();\n membersGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node().getBBox();\n methodsGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n bbox = shapeSvg.node().getBBox();\n return { shapeSvg, bbox };\n}\n__name(textHelper, \"textHelper\");\nasync function addText2(parentGroup, node, yOffset, styles = []) {\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", styles.join(\"; \"));\n const config = getConfig();\n let useHtmlLabels = \"useHtmlLabels\" in node ? node.useHtmlLabels : evaluate(config.htmlLabels) ?? true;\n let textContent = \"\";\n if (\"text\" in node) {\n textContent = node.text;\n } else {\n textContent = node.label;\n }\n if (!useHtmlLabels && textContent.startsWith(\"\\\\\")) {\n textContent = textContent.substring(1);\n }\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n if (!useHtmlLabels) {\n if (styles.includes(\"font-weight: bolder\")) {\n select6(text2).selectAll(\"tspan\").attr(\"font-weight\", \"\");\n }\n numberOfLines = text2.children.length;\n const textChild = text2.children[0];\n if (text2.textContent === \"\" || text2.textContent.includes(\">\")) {\n textChild.textContent = textContent[0] + textContent.substring(1).replaceAll(\">\", \">\").replaceAll(\"<\", \"<\").trim();\n const preserveSpace = textContent[1] === \" \";\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + \" \" + textChild.textContent.substring(1);\n }\n }\n if (textChild.textContent === \"undefined\") {\n textChild.textContent = \"\";\n }\n bbox = text2.getBBox();\n } else {\n const div = text2.children[0];\n const dv = select6(text2);\n numberOfLines = div.innerHTML.split(\"<br>\").length;\n if (div.innerHTML.includes(\"</math>\")) {\n numberOfLines += div.innerHTML.split(\"<mrow>\").length - 1;\n }\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = textContent.replace(/<img[^>]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config.fontSize?.toString() ?? window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", \"translate(0,\" + (-bbox.height / (2 * numberOfLines) + yOffset) + \")\");\n return bbox.height;\n}\n__name(addText2, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nasync function classBox(parent, node) {\n const config = getConfig2();\n const PADDING = config.class.padding ?? 12;\n const GAP = PADDING;\n const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n const classNode = node;\n classNode.annotations = classNode.annotations ?? [];\n classNode.members = classNode.members ?? [];\n classNode.methods = classNode.methods ?? [];\n const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.cssStyles = classNode.styles || \"\";\n const styles = classNode.styles?.join(\";\") || nodeStyles || \"\";\n if (!node.cssStyles) {\n node.cssStyles = styles.replaceAll(\"!important\", \"\").split(\";\");\n }\n const renderExtraBox = classNode.members.length === 0 && classNode.methods.length === 0 && !config.class?.hideEmptyMembersBox;\n const rc = rough56.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const w = bbox.width;\n let h = bbox.height;\n if (classNode.members.length === 0 && classNode.methods.length === 0) {\n h += GAP;\n } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n h += GAP * 2;\n }\n const x = -w / 2;\n const y = -h / 2;\n const roughRect = rc.rectangle(\n x - PADDING,\n y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0),\n w + 2 * PADDING,\n h + 2 * PADDING + (renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0),\n options\n );\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n const rectBBox = rect2.node().getBBox();\n shapeSvg.selectAll(\".text\").each((_, i, nodes) => {\n const text2 = select7(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateY = parseFloat(translate[2]);\n }\n }\n let newTranslateY = translateY + y + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0);\n if (!useHtmlLabels) {\n newTranslateY -= 4;\n }\n let newTranslateX = x;\n if (text2.attr(\"class\").includes(\"label-group\") || text2.attr(\"class\").includes(\"annotation-group\")) {\n newTranslateX = -text2.node()?.getBBox().width / 2 || 0;\n shapeSvg.selectAll(\"text\").each(function(_2, i2, nodes2) {\n if (window.getComputedStyle(nodes2[i2]).textAnchor === \"middle\") {\n newTranslateX = 0;\n }\n });\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY})`);\n });\n const annotationGroupHeight = shapeSvg.select(\".annotation-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const labelGroupHeight = shapeSvg.select(\".label-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const membersGroupHeight = shapeSvg.select(\".members-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + PADDING + GAP * 2,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (classNode.look !== \"handDrawn\") {\n shapeSvg.selectAll(\"path\").attr(\"style\", styles);\n }\n rect2.select(\":nth-child(2)\").attr(\"style\", styles);\n shapeSvg.selectAll(\".divider\").select(\"path\").attr(\"style\", styles);\n if (node.labelStyle) {\n shapeSvg.selectAll(\"span\").attr(\"style\", node.labelStyle);\n } else {\n shapeSvg.selectAll(\"span\").attr(\"style\", styles);\n }\n if (!useHtmlLabels) {\n const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n const match = colorRegex.exec(styles);\n if (match) {\n const colorStyle = match[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n } else if (labelStyles) {\n const match2 = colorRegex.exec(labelStyles);\n if (match2) {\n const colorStyle = match2[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n }\n }\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(classBox, \"classBox\");\n\n// src/rendering-util/rendering-elements/shapes/requirementBox.ts\nimport rough57 from \"roughjs\";\nimport { select as select8 } from \"d3\";\nasync function requirementBox(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const requirementNode = node;\n const elementNode = node;\n const padding = 20;\n const gap = 20;\n const isRequirementNode = \"verifyMethod\" in node;\n const classes = getNodeClasses(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId ?? node.id);\n let typeHeight;\n if (isRequirementNode) {\n typeHeight = await addText3(\n shapeSvg,\n `<<${requirementNode.type}>>`,\n 0,\n node.labelStyle\n );\n } else {\n typeHeight = await addText3(shapeSvg, \"<<Element>>\", 0, node.labelStyle);\n }\n let accumulativeHeight = typeHeight;\n const nameHeight = await addText3(\n shapeSvg,\n requirementNode.name,\n accumulativeHeight,\n node.labelStyle + \"; font-weight: bold;\"\n );\n accumulativeHeight += nameHeight + gap;\n if (isRequirementNode) {\n const idHeight = await addText3(\n shapeSvg,\n `${requirementNode.requirementId ? `ID: ${requirementNode.requirementId}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += idHeight;\n const textHeight = await addText3(\n shapeSvg,\n `${requirementNode.text ? `Text: ${requirementNode.text}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += textHeight;\n const riskHeight = await addText3(\n shapeSvg,\n `${requirementNode.risk ? `Risk: ${requirementNode.risk}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += riskHeight;\n await addText3(\n shapeSvg,\n `${requirementNode.verifyMethod ? `Verification: ${requirementNode.verifyMethod}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n } else {\n const typeHeight2 = await addText3(\n shapeSvg,\n `${elementNode.type ? `Type: ${elementNode.type}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n accumulativeHeight += typeHeight2;\n await addText3(\n shapeSvg,\n `${elementNode.docRef ? `Doc Ref: ${elementNode.docRef}` : \"\"}`,\n accumulativeHeight,\n node.labelStyle\n );\n }\n const totalWidth = (shapeSvg.node()?.getBBox().width ?? 200) + padding;\n const totalHeight = (shapeSvg.node()?.getBBox().height ?? 200) + padding;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rc = rough57.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughRect = rc.rectangle(x, y, totalWidth, totalHeight, options);\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n shapeSvg.selectAll(\".label\").each((_, i, nodes) => {\n const text2 = select8(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateX = 0;\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateX = parseFloat(translate[1]);\n translateY = parseFloat(translate[2]);\n }\n }\n const newTranslateY = translateY - totalHeight / 2;\n let newTranslateX = x + padding / 2;\n if (i === 0 || i === 1) {\n newTranslateX = translateX;\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY + padding})`);\n });\n if (accumulativeHeight > typeHeight + nameHeight + gap) {\n const roughLine = rc.line(\n x,\n y + typeHeight + nameHeight + gap,\n x + totalWidth,\n y + typeHeight + nameHeight + gap,\n options\n );\n const dividerLine = shapeSvg.insert(() => roughLine);\n dividerLine.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(requirementBox, \"requirementBox\");\nasync function addText3(parentGroup, inputText, yOffset, style = \"\") {\n if (inputText === \"\") {\n return 0;\n }\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", style);\n const config = getConfig2();\n const useHtmlLabels = config.htmlLabels ?? true;\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(inputText)),\n {\n width: calculateTextWidth(inputText, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels,\n style\n },\n config\n );\n let bbox;\n if (!useHtmlLabels) {\n const textChild = text2.children[0];\n for (const child of textChild.children) {\n child.textContent = child.textContent.replaceAll(\">\", \">\").replaceAll(\"<\", \"<\");\n if (style) {\n child.setAttribute(\"style\", style);\n }\n }\n bbox = text2.getBBox();\n bbox.height += 6;\n } else {\n const div = text2.children[0];\n const dv = select8(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", `translate(${-bbox.width / 2},${-bbox.height / 2 + yOffset})`);\n return bbox.height;\n}\n__name(addText3, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/kanbanItem.ts\nimport rough58 from \"roughjs\";\nvar colorFromPriority = /* @__PURE__ */ __name((priority) => {\n switch (priority) {\n case \"Very High\":\n return \"red\";\n case \"High\":\n return \"orange\";\n case \"Medium\":\n return null;\n // no stroke\n case \"Low\":\n return \"blue\";\n case \"Very Low\":\n return \"lightblue\";\n }\n}, \"colorFromPriority\");\nasync function kanbanItem(parent, kanbanNode, { config }) {\n const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n kanbanNode.labelStyle = labelStyles || \"\";\n const labelPaddingX = 10;\n const orgWidth = kanbanNode.width;\n kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n const {\n shapeSvg,\n bbox,\n label: labelElTitle\n } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n const padding = kanbanNode.padding || 10;\n let ticketUrl = \"\";\n let link;\n if (\"ticket\" in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n ticketUrl = config?.kanban?.ticketBaseUrl.replace(\"#TICKET#\", kanbanNode.ticket);\n link = shapeSvg.insert(\"svg:a\", \":first-child\").attr(\"class\", \"kanban-ticket-link\").attr(\"xlink:href\", ticketUrl).attr(\"target\", \"_blank\");\n }\n const options = {\n useHtmlLabels: kanbanNode.useHtmlLabels,\n labelStyle: kanbanNode.labelStyle || \"\",\n width: kanbanNode.width,\n img: kanbanNode.img,\n padding: kanbanNode.padding || 8,\n centerLabel: false\n };\n let labelEl, bbox2;\n if (link) {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n link,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n } else {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n shapeSvg,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n }\n const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n shapeSvg,\n \"assigned\" in kanbanNode && kanbanNode.assigned || \"\",\n options\n );\n kanbanNode.width = orgWidth;\n const labelPaddingY = 10;\n const totalWidth = kanbanNode?.width || 0;\n const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n const totalHeight = Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n labelElTitle.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj - bbox.height / 2) + \")\"\n );\n labelEl.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n labelElAssigned.attr(\n \"transform\",\n \"translate(\" + (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n let rect2;\n const { rx, ry } = kanbanNode;\n const { cssStyles } = kanbanNode;\n if (kanbanNode.look === \"handDrawn\") {\n const rc = rough58.svg(shapeSvg);\n const options2 = userNodeOverrides(kanbanNode, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", cssStyles ? cssStyles : null);\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container __APA__\").attr(\"style\", nodeStyles).attr(\"rx\", rx ?? 5).attr(\"ry\", ry ?? 5).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n const priority = \"priority\" in kanbanNode && kanbanNode.priority;\n if (priority) {\n const line = shapeSvg.append(\"line\");\n const lineX = x + 2;\n const y1 = y + Math.floor((rx ?? 0) / 2);\n const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n line.attr(\"x1\", lineX).attr(\"y1\", y1).attr(\"x2\", lineX).attr(\"y2\", y2).attr(\"stroke-width\", \"4\").attr(\"stroke\", colorFromPriority(priority));\n }\n }\n updateNodeBounds(kanbanNode, rect2);\n kanbanNode.height = totalHeight;\n kanbanNode.intersect = function(point) {\n return intersect_default.rect(kanbanNode, point);\n };\n return shapeSvg;\n}\n__name(kanbanItem, \"kanbanItem\");\n\n// src/rendering-util/rendering-elements/shapes/bang.ts\nimport rough59 from \"roughjs\";\nasync function bang(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 10 * halfPadding;\n const h = bbox.height + 8 * halfPadding;\n const r = 0.15 * w;\n const { cssStyles } = node;\n const minWidth = bbox.width + 20;\n const minHeight = bbox.height + 20;\n const effectiveWidth = Math.max(w, minWidth);\n const effectiveHeight = Math.max(h, minHeight);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n let bangElem;\n const path = `M0 0 \n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${-1 * effectiveHeight * 0.1}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${0}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.25},${effectiveHeight * 0.1}\n\n a${r},${r} 1 0,0 ${effectiveWidth * 0.15},${effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.15},${effectiveHeight * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${effectiveHeight * 0.15}\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},0\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.25},${-1 * effectiveHeight * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 0,${-1 * effectiveHeight * 0.34}\n a${r},${r} 1 0,0 ${effectiveWidth * 0.1},${-1 * effectiveHeight * 0.33}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough59.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n bangElem = shapeSvg.insert(() => roughNode, \":first-child\");\n bangElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n bangElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n bangElem.attr(\"transform\", `translate(${-effectiveWidth / 2}, ${-effectiveHeight / 2})`);\n updateNodeBounds(node, bangElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Bang intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(bang, \"bang\");\n\n// src/rendering-util/rendering-elements/shapes/cloud.ts\nimport rough60 from \"roughjs\";\nasync function cloud(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 2 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n const { cssStyles } = node;\n let cloudElem;\n const path = `M0 0 \n a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},0\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n H0 V0 Z`;\n if (node.look === \"handDrawn\") {\n const rc = rough60.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(path, options);\n cloudElem = shapeSvg.insert(() => roughNode, \":first-child\");\n cloudElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n cloudElem = shapeSvg.insert(\"path\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"d\", path);\n }\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n cloudElem.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, cloudElem);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n log.info(\"Cloud intersect\", node, point);\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(cloud, \"cloud\");\n\n// src/rendering-util/rendering-elements/shapes/defaultMindmapNode.ts\nasync function defaultMindmapNode(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding, label } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const w = bbox.width + 8 * halfPadding;\n const h = bbox.height + 2 * halfPadding;\n const rd = 5;\n const rectPath = `\n M${-w / 2} ${h / 2 - rd}\n v${-h + 2 * rd}\n q0,-${rd} ${rd},-${rd}\n h${w - 2 * rd}\n q${rd},0 ${rd},${rd}\n v${h - 2 * rd}\n q0,${rd} -${rd},${rd}\n h${-w + 2 * rd}\n q-${rd},0 -${rd},-${rd}\n Z\n `;\n const bg = shapeSvg.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\"style\", nodeStyles).attr(\"d\", rectPath);\n shapeSvg.append(\"line\").attr(\"class\", \"node-line-\").attr(\"x1\", -w / 2).attr(\"y1\", h / 2).attr(\"x2\", w / 2).attr(\"y2\", h / 2);\n label.attr(\"transform\", `translate(${-bbox.width / 2}, ${-bbox.height / 2})`);\n shapeSvg.append(() => label.node());\n updateNodeBounds(node, bg);\n node.calcIntersect = function(bounds, point) {\n return intersect_default.rect(bounds, point);\n };\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(defaultMindmapNode, \"defaultMindmapNode\");\n\n// src/rendering-util/rendering-elements/shapes/mindmapCircle.ts\nasync function mindmapCircle(parent, node) {\n const options = {\n padding: node.padding ?? 0\n };\n return circle(parent, node, options);\n}\n__name(mindmapCircle, \"mindmapCircle\");\n\n// src/rendering-util/rendering-elements/shapes.ts\nvar shapesDefs = [\n {\n semanticName: \"Process\",\n name: \"Rectangle\",\n shortName: \"rect\",\n description: \"Standard process shape\",\n aliases: [\"proc\", \"process\", \"rectangle\"],\n internalAliases: [\"squareRect\"],\n handler: squareRect2\n },\n {\n semanticName: \"Event\",\n name: \"Rounded Rectangle\",\n shortName: \"rounded\",\n description: \"Represents an event\",\n aliases: [\"event\"],\n internalAliases: [\"roundedRect\"],\n handler: roundedRect\n },\n {\n semanticName: \"Terminal Point\",\n name: \"Stadium\",\n shortName: \"stadium\",\n description: \"Terminal point\",\n aliases: [\"terminal\", \"pill\"],\n handler: stadium\n },\n {\n semanticName: \"Subprocess\",\n name: \"Framed Rectangle\",\n shortName: \"fr-rect\",\n description: \"Subprocess\",\n aliases: [\"subprocess\", \"subproc\", \"framed-rectangle\", \"subroutine\"],\n handler: subroutine\n },\n {\n semanticName: \"Database\",\n name: \"Cylinder\",\n shortName: \"cyl\",\n description: \"Database storage\",\n aliases: [\"db\", \"database\", \"cylinder\"],\n handler: cylinder\n },\n {\n semanticName: \"Start\",\n name: \"Circle\",\n shortName: \"circle\",\n description: \"Starting point\",\n aliases: [\"circ\"],\n handler: circle\n },\n {\n semanticName: \"Bang\",\n name: \"Bang\",\n shortName: \"bang\",\n description: \"Bang\",\n aliases: [\"bang\"],\n handler: bang\n },\n {\n semanticName: \"Cloud\",\n name: \"Cloud\",\n shortName: \"cloud\",\n description: \"cloud\",\n aliases: [\"cloud\"],\n handler: cloud\n },\n {\n semanticName: \"Decision\",\n name: \"Diamond\",\n shortName: \"diam\",\n description: \"Decision-making step\",\n aliases: [\"decision\", \"diamond\", \"question\"],\n handler: question\n },\n {\n semanticName: \"Prepare Conditional\",\n name: \"Hexagon\",\n shortName: \"hex\",\n description: \"Preparation or condition step\",\n aliases: [\"hexagon\", \"prepare\"],\n handler: hexagon\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Right\",\n shortName: \"lean-r\",\n description: \"Represents input or output\",\n aliases: [\"lean-right\", \"in-out\"],\n internalAliases: [\"lean_right\"],\n handler: lean_right\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Left\",\n shortName: \"lean-l\",\n description: \"Represents output or input\",\n aliases: [\"lean-left\", \"out-in\"],\n internalAliases: [\"lean_left\"],\n handler: lean_left\n },\n {\n semanticName: \"Priority Action\",\n name: \"Trapezoid Base Bottom\",\n shortName: \"trap-b\",\n description: \"Priority action\",\n aliases: [\"priority\", \"trapezoid-bottom\", \"trapezoid\"],\n handler: trapezoid\n },\n {\n semanticName: \"Manual Operation\",\n name: \"Trapezoid Base Top\",\n shortName: \"trap-t\",\n description: \"Represents a manual task\",\n aliases: [\"manual\", \"trapezoid-top\", \"inv-trapezoid\"],\n internalAliases: [\"inv_trapezoid\"],\n handler: inv_trapezoid\n },\n {\n semanticName: \"Stop\",\n name: \"Double Circle\",\n shortName: \"dbl-circ\",\n description: \"Represents a stop point\",\n aliases: [\"double-circle\"],\n internalAliases: [\"doublecircle\"],\n handler: doublecircle\n },\n {\n semanticName: \"Text Block\",\n name: \"Text Block\",\n shortName: \"text\",\n description: \"Text block\",\n handler: text\n },\n {\n semanticName: \"Card\",\n name: \"Notched Rectangle\",\n shortName: \"notch-rect\",\n description: \"Represents a card\",\n aliases: [\"card\", \"notched-rectangle\"],\n handler: card\n },\n {\n semanticName: \"Lined/Shaded Process\",\n name: \"Lined Rectangle\",\n shortName: \"lin-rect\",\n description: \"Lined process shape\",\n aliases: [\"lined-rectangle\", \"lined-process\", \"lin-proc\", \"shaded-process\"],\n handler: shadedProcess\n },\n {\n semanticName: \"Start\",\n name: \"Small Circle\",\n shortName: \"sm-circ\",\n description: \"Small starting point\",\n aliases: [\"start\", \"small-circle\"],\n internalAliases: [\"stateStart\"],\n handler: stateStart\n },\n {\n semanticName: \"Stop\",\n name: \"Framed Circle\",\n shortName: \"fr-circ\",\n description: \"Stop point\",\n aliases: [\"stop\", \"framed-circle\"],\n internalAliases: [\"stateEnd\"],\n handler: stateEnd\n },\n {\n semanticName: \"Fork/Join\",\n name: \"Filled Rectangle\",\n shortName: \"fork\",\n description: \"Fork or join in process flow\",\n aliases: [\"join\"],\n internalAliases: [\"forkJoin\"],\n handler: forkJoin\n },\n {\n semanticName: \"Collate\",\n name: \"Hourglass\",\n shortName: \"hourglass\",\n description: \"Represents a collate operation\",\n aliases: [\"hourglass\", \"collate\"],\n handler: hourglass\n },\n {\n semanticName: \"Comment\",\n name: \"Curly Brace\",\n shortName: \"brace\",\n description: \"Adds a comment\",\n aliases: [\"comment\", \"brace-l\"],\n handler: curlyBraceLeft\n },\n {\n semanticName: \"Comment Right\",\n name: \"Curly Brace\",\n shortName: \"brace-r\",\n description: \"Adds a comment\",\n handler: curlyBraceRight\n },\n {\n semanticName: \"Comment with braces on both sides\",\n name: \"Curly Braces\",\n shortName: \"braces\",\n description: \"Adds a comment\",\n handler: curlyBraces\n },\n {\n semanticName: \"Com Link\",\n name: \"Lightning Bolt\",\n shortName: \"bolt\",\n description: \"Communication link\",\n aliases: [\"com-link\", \"lightning-bolt\"],\n handler: lightningBolt\n },\n {\n semanticName: \"Document\",\n name: \"Document\",\n shortName: \"doc\",\n description: \"Represents a document\",\n aliases: [\"doc\", \"document\"],\n handler: waveEdgedRectangle\n },\n {\n semanticName: \"Delay\",\n name: \"Half-Rounded Rectangle\",\n shortName: \"delay\",\n description: \"Represents a delay\",\n aliases: [\"half-rounded-rectangle\"],\n handler: halfRoundedRectangle\n },\n {\n semanticName: \"Direct Access Storage\",\n name: \"Horizontal Cylinder\",\n shortName: \"h-cyl\",\n description: \"Direct access storage\",\n aliases: [\"das\", \"horizontal-cylinder\"],\n handler: tiltedCylinder\n },\n {\n semanticName: \"Disk Storage\",\n name: \"Lined Cylinder\",\n shortName: \"lin-cyl\",\n description: \"Disk storage\",\n aliases: [\"disk\", \"lined-cylinder\"],\n handler: linedCylinder\n },\n {\n semanticName: \"Display\",\n name: \"Curved Trapezoid\",\n shortName: \"curv-trap\",\n description: \"Represents a display\",\n aliases: [\"curved-trapezoid\", \"display\"],\n handler: curvedTrapezoid\n },\n {\n semanticName: \"Divided Process\",\n name: \"Divided Rectangle\",\n shortName: \"div-rect\",\n description: \"Divided process shape\",\n aliases: [\"div-proc\", \"divided-rectangle\", \"divided-process\"],\n handler: dividedRectangle\n },\n {\n semanticName: \"Extract\",\n name: \"Triangle\",\n shortName: \"tri\",\n description: \"Extraction process\",\n aliases: [\"extract\", \"triangle\"],\n handler: triangle\n },\n {\n semanticName: \"Internal Storage\",\n name: \"Window Pane\",\n shortName: \"win-pane\",\n description: \"Internal storage\",\n aliases: [\"internal-storage\", \"window-pane\"],\n handler: windowPane\n },\n {\n semanticName: \"Junction\",\n name: \"Filled Circle\",\n shortName: \"f-circ\",\n description: \"Junction point\",\n aliases: [\"junction\", \"filled-circle\"],\n handler: filledCircle\n },\n {\n semanticName: \"Loop Limit\",\n name: \"Trapezoidal Pentagon\",\n shortName: \"notch-pent\",\n description: \"Loop limit step\",\n aliases: [\"loop-limit\", \"notched-pentagon\"],\n handler: trapezoidalPentagon\n },\n {\n semanticName: \"Manual File\",\n name: \"Flipped Triangle\",\n shortName: \"flip-tri\",\n description: \"Manual file operation\",\n aliases: [\"manual-file\", \"flipped-triangle\"],\n handler: flippedTriangle\n },\n {\n semanticName: \"Manual Input\",\n name: \"Sloped Rectangle\",\n shortName: \"sl-rect\",\n description: \"Manual input step\",\n aliases: [\"manual-input\", \"sloped-rectangle\"],\n handler: slopedRect\n },\n {\n semanticName: \"Multi-Document\",\n name: \"Stacked Document\",\n shortName: \"docs\",\n description: \"Multiple documents\",\n aliases: [\"documents\", \"st-doc\", \"stacked-document\"],\n handler: multiWaveEdgedRectangle\n },\n {\n semanticName: \"Multi-Process\",\n name: \"Stacked Rectangle\",\n shortName: \"st-rect\",\n description: \"Multiple processes\",\n aliases: [\"procs\", \"processes\", \"stacked-rectangle\"],\n handler: multiRect\n },\n {\n semanticName: \"Stored Data\",\n name: \"Bow Tie Rectangle\",\n shortName: \"bow-rect\",\n description: \"Stored data\",\n aliases: [\"stored-data\", \"bow-tie-rectangle\"],\n handler: bowTieRect\n },\n {\n semanticName: \"Summary\",\n name: \"Crossed Circle\",\n shortName: \"cross-circ\",\n description: \"Summary\",\n aliases: [\"summary\", \"crossed-circle\"],\n handler: crossedCircle\n },\n {\n semanticName: \"Tagged Document\",\n name: \"Tagged Document\",\n shortName: \"tag-doc\",\n description: \"Tagged document\",\n aliases: [\"tag-doc\", \"tagged-document\"],\n handler: taggedWaveEdgedRectangle\n },\n {\n semanticName: \"Tagged Process\",\n name: \"Tagged Rectangle\",\n shortName: \"tag-rect\",\n description: \"Tagged process\",\n aliases: [\"tagged-rectangle\", \"tag-proc\", \"tagged-process\"],\n handler: taggedRect\n },\n {\n semanticName: \"Paper Tape\",\n name: \"Flag\",\n shortName: \"flag\",\n description: \"Paper tape\",\n aliases: [\"paper-tape\"],\n handler: waveRectangle\n },\n {\n semanticName: \"Odd\",\n name: \"Odd\",\n shortName: \"odd\",\n description: \"Odd shape\",\n internalAliases: [\"rect_left_inv_arrow\"],\n handler: rect_left_inv_arrow\n },\n {\n semanticName: \"Lined Document\",\n name: \"Lined Document\",\n shortName: \"lin-doc\",\n description: \"Lined document\",\n aliases: [\"lined-document\"],\n handler: linedWaveEdgedRect\n }\n];\nvar generateShapeMap = /* @__PURE__ */ __name(() => {\n const undocumentedShapes = {\n // States\n state,\n choice,\n note,\n // Rectangles\n rectWithTitle,\n labelRect,\n // Icons\n iconSquare,\n iconCircle,\n icon,\n iconRounded,\n imageSquare,\n anchor,\n // Kanban diagram\n kanbanItem,\n //Mindmap diagram\n mindmapCircle,\n defaultMindmapNode,\n // class diagram\n classBox,\n // er diagram\n erBox,\n // Requirement diagram\n requirementBox\n };\n const entries = [\n ...Object.entries(undocumentedShapes),\n ...shapesDefs.flatMap((shape) => {\n const aliases = [\n shape.shortName,\n ...\"aliases\" in shape ? shape.aliases : [],\n ...\"internalAliases\" in shape ? shape.internalAliases : []\n ];\n return aliases.map((alias) => [alias, shape.handler]);\n })\n ];\n return Object.fromEntries(entries);\n}, \"generateShapeMap\");\nvar shapes2 = generateShapeMap();\nfunction isValidShape(shape) {\n return shape in shapes2;\n}\n__name(isValidShape, \"isValidShape\");\n\n// src/rendering-util/rendering-elements/nodes.ts\nvar nodeElems = /* @__PURE__ */ new Map();\nasync function insertNode(elem, node, renderOptions) {\n let newEl;\n let el;\n if (node.shape === \"rect\") {\n if (node.rx && node.ry) {\n node.shape = \"roundedRect\";\n } else {\n node.shape = \"squareRect\";\n }\n }\n const shapeHandler = node.shape ? shapes2[node.shape] : void 0;\n if (!shapeHandler) {\n throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n }\n if (node.link) {\n let target;\n if (renderOptions.config.securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target ?? null);\n el = await shapeHandler(newEl, node, renderOptions);\n } else {\n el = await shapeHandler(elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n nodeElems.set(node.id, newEl);\n if (node.haveCallback) {\n newEl.attr(\"class\", newEl.attr(\"class\") + \" clickable\");\n }\n return newEl;\n}\n__name(insertNode, \"insertNode\");\nvar setNodeElem = /* @__PURE__ */ __name((elem, node) => {\n nodeElems.set(node.id, elem);\n}, \"setNodeElem\");\nvar clear2 = /* @__PURE__ */ __name(() => {\n nodeElems.clear();\n}, \"clear\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems.get(node.id);\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\nexport {\n labelHelper,\n updateNodeBounds,\n createLabel_default,\n isValidShape,\n insertCluster,\n clear,\n insertNode,\n setNodeElem,\n clear2,\n positionNode\n};\n"],"x_google_ignoreList":[0,1],"mappings":"yZAAA,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,GAAGA,GAAGA,EAAE,OAAO,CAAC,GAAK,CAACC,EAAEC,GAAGC,EAAEC,EAAE,KAAK,GAAG,IAAIC,EAAEC,EAAE,KAAK,IAAIF,EAAE,CAACG,EAAE,KAAK,IAAIH,EAAE,CAAC,IAAI,IAAMD,KAAKH,EAAE,CAAC,GAAK,CAACA,EAAEK,GAAGF,EAAE,EAAE,IAAIH,EAAEC,GAAGK,GAAGD,EAAEH,GAAGK,EAAEN,EAAE,EAAE,IAAID,EAAEC,GAAGM,GAAGF,EAAEH,GAAGI,EAAEJ,IAAI,SAAS,EAAE,EAAE,EAAE,CAAC,OAAOF,EAAE,KAAKG,EAAE,IAAIH,EAAE,KAAKG,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMG,EAAEJ,EAAEK,EAAE,KAAK,IAAIN,EAAE,GAAG,CAACO,EAAEH,EAAE,IAAIA,EAAE,GAAG,IAAc,OAAOA,EAAE,GAAG,IAAtB,SAAyB,CAACA,EAAE,CAACA,EAAEI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAGH,EAAE,IAAI,IAAMH,KAAKK,EAAE,EAAEL,EAAEM,EAAEH,EAAE,CAAC,IAAMI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,IAAMR,EAAE,EAAE,CAAC,IAAI,IAAMG,KAAKL,EAAE,CAAC,IAAMA,EAAE,CAAC,GAAGK,EAAE,CAAC,EAAEL,EAAE,GAAGA,EAAEA,EAAE,OAAO,GAAG,EAAEA,EAAE,KAAK,CAACA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,CAAC,CAACA,EAAE,OAAO,GAAGE,EAAE,KAAKF,EAAE,CAAC,IAAMI,EAAE,EAAE,CAAC,EAAE,KAAK,IAAIC,EAAE,GAAG,CAAC,IAAMC,EAAE,EAAE,CAAC,IAAI,IAAMN,KAAKE,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAEH,EAAE,OAAO,EAAE,IAAI,CAAC,IAAMK,EAAEL,EAAEG,GAAGF,EAAED,EAAEG,EAAE,GAAG,GAAGE,EAAE,KAAKJ,EAAE,GAAG,CAAC,IAAMD,EAAE,KAAK,IAAIK,EAAE,GAAGJ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,KAAKD,EAAE,KAAK,KAAK,IAAIK,EAAE,GAAGJ,EAAE,GAAG,CAAC,EAAED,IAAIK,EAAE,GAAGA,EAAE,GAAGJ,EAAE,GAAG,QAAQA,EAAE,GAAGI,EAAE,KAAKJ,EAAE,GAAGI,EAAE,IAAI,CAAC,EAAE,GAAGC,EAAE,OAAO,EAAE,IAAIN,EAAE,KAAKG,EAAE,KAAK,GAAGH,EAAE,KAAKG,EAAE,KAAK,EAAEH,EAAE,EAAEG,EAAE,EAAE,GAAGH,EAAE,EAAEG,EAAE,EAAE,EAAEH,EAAE,OAAOG,EAAE,KAAK,GAAGH,EAAE,KAAKG,EAAE,MAAM,KAAK,IAAIH,EAAE,KAAKG,EAAE,KAAK,EAAE,CAAC,CAACG,EAAE,OAAO,OAAOF,EAAE,IAAIG,EAAE,EAAE,CAACC,EAAEF,EAAE,GAAG,KAAKG,EAAE,EAAE,KAAKF,EAAE,QAAQD,EAAE,QAAQ,CAAC,GAAGA,EAAE,OAAO,CAAC,IAAIN,EAAE,GAAG,IAAI,IAAIG,EAAE,EAAEA,EAAEG,EAAE,QAAQ,EAAEA,EAAEH,GAAG,KAAKK,GAAG,IAAI,EAAEL,EAAE,EAAE,OAAO,EAAEH,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAGQ,EAAE,KAAKR,EAAE,CAAC,GAAG,CAAC,GAAG,EAAEO,EAAE,QAAQ,GAAG,EAAEP,EAAE,KAAK,MAAMQ,IAAI,CAACD,EAAE,OAAO,EAAE,IAAIP,EAAE,KAAK,IAAIG,EAAE,KAAK,EAAE,GAAGH,EAAE,KAAK,EAAEG,EAAE,KAAK,GAAG,KAAK,IAAIH,EAAE,KAAK,EAAEG,EAAE,KAAK,EAAE,EAAE,EAAMF,IAAJ,GAAOQ,EAAEJ,GAAG,IAAIE,EAAE,OAAO,EAAE,IAAI,IAAIP,EAAE,EAAEA,EAAEO,EAAE,OAAO,GAAG,EAAE,CAAC,IAAMJ,EAAEH,EAAE,EAAE,GAAGG,GAAGI,EAAE,OAAO,MAAM,IAAMF,EAAEE,EAAEP,GAAG,KAAKC,EAAEM,EAAEJ,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,MAAME,EAAE,EAAE,CAACG,EAAE,CAAC,CAAC,KAAK,MAAMP,EAAE,EAAE,CAACO,EAAE,CAAC,CAAC,CAAC,GAAGP,EAAEM,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,EAAEP,EAAE,KAAK,EAAEC,EAAED,EAAE,KAAK,SAAS,CAAC,IAAI,OAAOI,GAAGI,EAAED,EAAEH,EAAE,CAAC,GAAGE,EAAE,CAAC,IAAI,IAAMH,KAAKK,EAAE,EAAEL,EAAEM,EAAE,CAACH,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,IAAMJ,EAAE,EAAE,CAAC,EAAE,SAAS,GAAGA,EAAE,KAAK,GAAGF,EAAE,EAAE,CAAC,EAAEE,EAAEG,EAAEJ,EAAE,GAAES,EAAED,EAAE,CAACH,EAAE,CAAC,OAAOI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAO,IAAMR,EAAEC,EAAE,aAAa,GAAOC,EAAED,EAAE,WAAW,EAAE,IAAI,EAAE,EAAEA,EAAE,aAAa,EAAE,KAAK,MAAM,KAAK,IAAIC,EAAE,GAAG,CAAC,CAAC,IAAIE,EAAE,EAAE,OAAOH,EAAE,WAAW,IAAeA,EAAE,YAAiC,MAAM,EAAG,KAAK,QAAQ,EAAE,KAAK,EAAEC,GAAG,EAAEJ,EAAEI,EAAEF,EAAEI,GAAG,EAAE,CAAC,IAAM,EAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,OAAON,EAAE,aAAa,EAAE,EAAE,CAAC,OAAO,KAAK,cAAcA,EAAEG,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,IAAME,EAAE,EAAEL,EAAEG,EAAE,CAAC,MAAM,CAAC,KAAK,aAAa,IAAI,KAAK,YAAYE,EAAEF,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,IAAME,EAAE,EAAE,CAAC,IAAI,IAAMJ,KAAKD,EAAE,EAAE,KAAK,GAAG,KAAK,OAAO,cAAcC,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGE,EAAE,CAAC,CAAC,OAAOE,IAAG,SAAS,EAAE,EAAE,CAAC,IAAMF,EAAEH,EAAE,GAAGK,EAAEL,EAAE,GAAG,OAAO,KAAK,MAAcG,EAAE,GAAGE,EAAE,KAAG,GAAYF,EAAE,GAAGE,EAAE,KAAG,EAAG,CAAC,IAAM,EAAN,cAAgB,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAIA,EAAEF,EAAE,WAAW,EAAE,IAAI,EAAE,EAAEA,EAAE,aAAa,EAAE,KAAK,IAAIE,EAAE,GAAG,CAAC,IAAMH,EAAE,EAAEF,EAAE,OAAO,OAAO,EAAE,CAACG,EAAE,CAAC,WAAWE,EAAE,CAAC,CAAC,CAACC,EAAE,KAAK,GAAG,IAAIH,EAAE,aAAaI,EAAE,EAAE,CAACC,EAAE,GAAGH,EAAE,KAAK,IAAIC,EAAE,CAACG,EAAE,GAAGJ,EAAE,KAAK,IAAIC,EAAE,CAAC,IAAI,GAAK,CAACN,EAAEG,KAAKD,EAAE,EAAE,CAACF,EAAEG,EAAE,CAAC,EAAEI,EAAE,KAAK,CAAC,CAACP,EAAE,GAAGQ,EAAER,EAAE,GAAGS,EAAE,CAAC,CAAC,GAAGN,EAAE,CAAC,CAAC,CAAC,CAACH,EAAE,GAAGQ,EAAER,EAAE,GAAGS,EAAE,CAAC,CAAC,GAAGN,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa,IAAI,KAAK,YAAYI,EAAEJ,EAAE,CAAC,GAAQ,EAAN,cAAgB,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAME,EAAE,KAAK,cAAcL,EAAEG,EAAE,CAACF,EAAE,OAAO,OAAO,EAAE,CAACE,EAAE,CAAC,aAAaA,EAAE,aAAa,GAAG,CAAC,CAACD,EAAE,KAAK,cAAcF,EAAEC,EAAE,CAAC,MAAO,GAAE,IAAII,EAAE,IAAI,OAAOH,EAAE,IAAI,CAACG,IAAS,EAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,OAAOL,EAAE,aAAa,EAAE,EAAE,CAAC,IAAMK,EAAE,EAAEL,EAAE,EAAE,OAAO,OAAO,EAAE,CAACG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,YAAYE,EAAEF,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,IAAME,EAAE,EAAE,CAAKJ,EAAEE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAEA,EAAE,aAAa,EAAE,KAAK,IAAIF,EAAE,GAAG,CAAC,IAAIC,EAAEC,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,YAAY,GAAG,IAAMG,EAAEL,EAAE,EAAE,IAAI,IAAMM,KAAKP,EAAE,CAAC,IAAMA,EAAE,EAAEO,EAAE,CAACC,EAAER,EAAEC,EAAEQ,EAAE,KAAK,KAAKD,EAAE,CAAC,EAAEE,EAAEV,EAAES,EAAER,EAAEU,GAAGJ,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAI,EAAEN,EAAE,EAAEW,EAAE,KAAK,IAAIL,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,CAAC,IAAI,IAAIP,EAAE,EAAEA,EAAES,EAAE,IAAI,CAAC,IAAML,EAAEQ,EAAEF,EAAEV,EAAEC,EAAEM,EAAEI,EAAEL,EAAE,EAAE,KAAK,QAAQ,CAACA,EAAEE,EAAEJ,EAAEE,EAAE,EAAE,KAAK,QAAQ,CAACA,EAAEG,EAAE,KAAK,OAAO,QAAQF,EAAEC,EAAEN,EAAEA,EAAEC,EAAE,CAAC,EAAE,KAAK,GAAGM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,aAAa,IAAIJ,EAAE,GAAQ,EAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,OAAOL,EAAE,aAAa,EAAE,EAAE,CAAC,IAAMK,EAAE,EAAEL,EAAEG,EAAE,CAAC,MAAM,CAAC,KAAK,aAAa,IAAI,KAAK,WAAWE,EAAEF,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAME,EAAEF,EAAE,WAAW,EAAEA,EAAE,WAAW,EAAE,EAAEA,EAAE,YAAYA,EAAE,WAAWA,EAAE,WAAWF,EAAEE,EAAE,QAAQ,EAAEA,EAAE,WAAW,EAAE,EAAEA,EAAE,YAAYA,EAAE,WAAWA,EAAE,QAAQD,EAAE,EAAE,CAAC,OAAOF,EAAE,SAAS,GAAG,CAAC,IAAMM,EAAE,EAAEN,EAAE,CAACO,EAAE,KAAK,MAAMD,GAAGD,EAAEJ,GAAG,CAACO,GAAGF,EAAEL,EAAEM,GAAGF,EAAEJ,IAAI,EAAMQ,EAAET,EAAE,GAAGU,EAAEV,EAAE,GAAG,EAAE,GAAGU,EAAE,KAAK,EAAEV,EAAE,GAAG,EAAEA,EAAE,IAAI,IAAMW,EAAE,KAAK,MAAMD,EAAE,GAAGD,EAAE,KAAKC,EAAE,GAAGD,EAAE,IAAI,CAAC,IAAI,IAAIT,EAAE,EAAEA,EAAEO,EAAE,IAAI,CAAC,IAAMH,EAAEJ,GAAGK,EAAEJ,GAAGK,EAAEF,EAAEC,EAAEE,EAAE,CAACE,EAAE,GAAGL,EAAE,KAAK,IAAIO,EAAE,CAACH,EAAE,KAAK,IAAIG,EAAE,CAACF,EAAE,GAAGL,EAAE,KAAK,IAAIO,EAAE,CAACH,EAAE,KAAK,IAAIG,EAAE,CAAC,CAACD,EAAE,CAACD,EAAE,GAAGH,EAAE,KAAK,IAAIK,EAAE,CAACH,EAAE,KAAK,IAAIG,EAAE,CAACF,EAAE,GAAGH,EAAE,KAAK,IAAIK,EAAE,CAACH,EAAE,KAAK,IAAIG,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,OAAO,cAAcJ,EAAE,GAAGA,EAAE,GAAGG,EAAE,GAAGA,EAAE,GAAGP,EAAE,CAAC,IAAI,CAACD,IAAS,EAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,OAAOF,EAAE,aAAa,EAAE,EAAE,CAAC,IAAMK,EAAEF,EAAE,WAAW,EAAE,EAAEA,EAAE,YAAYA,EAAE,WAAWD,EAAEC,EAAE,aAAa,EAAEE,EAAEF,EAAE,aAAaC,EAAE,EAAEJ,EAAE,EAAE,OAAO,OAAO,EAAE,CAACG,EAAE,CAAC,WAAWE,EAAEH,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa,IAAI,KAAK,YAAYE,EAAEF,EAAEC,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,IAAMF,EAAE,EAAE,CAAC,OAAOD,EAAE,SAAS,GAAG,CAAC,IAAME,EAAE,EAAEF,EAAE,CAACM,EAAE,KAAK,MAAMJ,GAAG,EAAEC,GAAG,CAAKI,EAAEP,EAAE,GAAGQ,EAAER,EAAE,GAAG,EAAE,GAAGQ,EAAE,KAAK,EAAER,EAAE,GAAG,EAAEA,EAAE,IAAI,IAAMS,EAAE,KAAK,MAAMD,EAAE,GAAGD,EAAE,KAAKC,EAAE,GAAGD,EAAE,IAAI,CAAC,IAAI,IAAIP,EAAE,EAAEA,EAAEM,EAAE,IAAI,CAAC,IAAMJ,EAAE,EAAEF,EAAEG,EAAEC,EAAE,GAAGJ,EAAE,GAAGG,EAAEG,EAAE,KAAK,KAAK,EAAWH,GAAE,EAAG,CAACK,EAAE,CAACD,EAAE,GAAGL,EAAE,KAAK,IAAIO,EAAE,CAACF,EAAE,GAAGL,EAAE,KAAK,IAAIO,EAAE,CAAC,CAACC,EAAE,CAACH,EAAE,GAAGH,EAAE,KAAK,IAAIK,EAAE,CAACF,EAAE,GAAGH,EAAE,KAAK,IAAIK,EAAE,CAAC,CAACE,EAAE,CAACH,EAAE,GAAGF,EAAE,KAAK,IAAIG,EAAE,KAAK,GAAG,EAAE,CAACD,EAAE,GAAGF,EAAE,KAAK,IAAIG,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,OAAO,cAAcD,EAAE,GAAGA,EAAE,GAAGG,EAAE,GAAGA,EAAE,GAAGN,EAAE,CAAC,GAAG,KAAK,OAAO,cAAcM,EAAE,GAAGA,EAAE,GAAGD,EAAE,GAAGA,EAAE,GAAGL,EAAE,CAAC,IAAI,CAACJ,IAAS,EAAE,EAAE,CAAO,EAAN,KAAO,CAAC,YAAY,EAAE,CAAC,KAAK,KAAKD,EAAE,MAAM,CAAC,OAAO,KAAK,MAAM,GAAG,GAAG,GAAG,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,GAAG,GAAG,GAAG,KAAK,QAAQ,GAAQ,GAAE,EAAE,GAAE,EAAE,GAAE,EAAE,GAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,CAAC,OAAOA,EAAE,OAAOG,EAAE,SAAS,GAAE,EAAE,CAAC,IAAMA,EAAE,EAAE,CAACE,EAAE,SAAS,EAAE,CAAC,IAAMF,EAAE,EAAS,CAAC,KAAUH,IAAL,IAAQ,GAAGA,EAAE,MAAM,iBAAiB,CAAC,EAAEA,EAAE,OAAO,OAAO,GAAG,OAAO,SAASA,EAAE,MAAM,4BAA4B,CAAC,EAAEG,EAAE,QAAQ,CAAC,KAAK,GAAE,KAAK,OAAO,GAAG,CAAC,EAAEH,EAAE,OAAO,OAAO,GAAG,OAAO,KAAK,CAAC,GAAG,CAACA,EAAE,MAAM,8DAA8D,CAAC,MAAM,EAAE,CAAC,EAAEG,EAAE,QAAQ,CAAC,KAAK,GAAE,KAAK,GAAG,WAAW,OAAO,GAAG,GAAG,CAAC,EAAEH,EAAE,OAAO,OAAO,GAAG,OAAO,CAAC,MAAO,GAAEG,EAAE,QAAQ,CAAC,KAAK,GAAE,KAAK,GAAG,CAACA,GAAGH,EAAE,CAAKC,EAAE,MAAMC,EAAE,EAAEE,EAAEC,EAAEH,GAAG,KAAK,CAAC,GAAEE,EAAE,GAAE,EAAE,CAAC,IAAIE,EAAE,EAAQC,EAAE,EAAE,CAAC,GAAWN,IAAR,MAAU,CAAC,GAASG,EAAE,OAAR,KAAoBA,EAAE,OAAR,IAAa,OAAO,GAAE,OAAOJ,EAAE,CAAC,IAAI,EAAE,GAAEI,EAAE,MAAM,EAAEA,EAAE,UAAU,GAAEA,EAAE,GAAE,CAAC,EAAE,GAAEH,IAAI,IAAI,EAAE,GAAEG,EAAE,MAAM,EAAEA,EAAE,MAAM,GAAG,EAAEF,EAAEI,EAAED,EAAE,QAAQ,MAAU,MAAM,wBAAwB,CAAC,IAAI,IAAIL,EAAEE,EAAEF,EAAEE,EAAEI,EAAE,IAAI,CAAC,IAAMH,EAAEE,EAAEL,GAAG,GAAG,CAAC,GAAEG,EAAE,GAAE,CAAC,MAAU,MAAM,uBAAuBF,EAAE,IAAIE,EAAE,KAAK,CAAC,EAAEI,EAAE,QAAQ,CAACJ,EAAE,KAAK,GAAa,OAAO,GAAEF,IAAnB,SAAsB,MAAU,MAAM,gBAAgBA,EAAE,CAAC,CAAC,IAAMD,EAAE,CAAC,IAAIC,EAAE,KAAKM,EAAE,CAAC,EAAE,KAAKP,EAAE,CAAC,GAAGM,EAAE,EAAED,EAAEH,GAASD,IAAN,MAAU,EAAE,KAAWA,IAAN,MAAU,EAAE,MAAM,OAAOE,EAAE,SAAS,EAAE,EAAE,CAAC,IAAIA,EAAE,EAAEE,EAAE,EAAEJ,EAAE,EAAEC,EAAE,EAAQE,EAAE,EAAE,CAAC,IAAI,GAAK,CAAC,IAAIE,EAAE,KAAKC,KAAKP,EAAE,OAAOM,EAAP,CAAU,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,CAACJ,EAAEE,GAAGE,EAAE,CAACN,EAAEC,GAAGK,EAAE,MAAM,IAAI,IAAI,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAGH,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACD,EAAEE,EAAE,CAAC,CAAC,CAAC,EAAEF,EAAE,EAAEE,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,CAACJ,EAAEE,GAAGE,EAAE,MAAM,IAAI,IAAI,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAGH,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACD,EAAEE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,IAAMP,EAAEO,EAAE,MAAM,EAAE,IAAIN,EAAE,EAAED,EAAEK,EAAEL,EAAEG,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,KAAKH,EAAE,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGO,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,IAAMP,EAAEO,EAAE,MAAM,EAAE,IAAIN,EAAE,EAAED,EAAEK,EAAEL,EAAEG,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,KAAKH,EAAE,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGO,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAGH,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACG,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGJ,EAAEE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,GAAGA,EAAE,GAAGH,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACD,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGI,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,GAAGA,EAAE,GAAGH,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGE,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,IAAMP,EAAEO,EAAE,MAAM,EAAE,IAAIN,EAAE,EAAED,EAAEK,EAAEL,EAAEG,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,KAAKH,EAAE,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGO,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAGH,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACD,EAAEE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAEJ,EAAE,EAAEC,EAAE,OAAOE,EAAE,SAAS,GAAE,EAAE,CAAC,IAAMD,EAAE,EAAE,CAAKE,EAAE,GAAGJ,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,IAAI,GAAK,CAAC,IAAIC,EAAE,KAAKC,KAAKV,EAAE,CAAC,OAAOS,EAAP,CAAU,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGC,EAAE,CAAC,CAAC,CAAC,CAACT,EAAEC,GAAGQ,EAAE,CAACN,EAAEE,GAAGI,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGA,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAGA,EAAE,CAAC,CAAC,CAAC,CAACT,EAAEC,GAAGQ,EAAE,MAAM,IAAI,IAAI,EAAEA,EAAE,GAAGP,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACF,EAAEC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAEQ,EAAE,GAAGP,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACF,EAAEC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAIF,EAAE,EAAEI,EAAE,EAAQC,IAAN,KAAeA,IAAN,KAAS,EAAEJ,GAAGA,EAAEM,GAAG,EAAEL,GAAGA,EAAEM,KAAK,EAAEP,EAAE,EAAEC,GAAGC,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACH,EAAEI,EAAE,GAAGM,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,EAAEA,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,GAAK,CAACV,EAAEI,GAAGM,EAAMJ,EAAE,EAAEG,EAAE,EAAQJ,IAAN,KAAeA,IAAN,KAAS,EAAEJ,GAAGA,EAAEM,GAAG,EAAEL,GAAGA,EAAEM,KAAK,EAAEP,EAAE,EAAEC,GAAG,IAAMS,EAAEV,EAAE,GAAGK,EAAEL,GAAG,EAAEW,EAAEV,EAAE,GAAGO,EAAEP,GAAG,EAAEW,EAAEb,EAAE,GAAGM,EAAEN,GAAG,EAAEc,EAAEV,EAAE,GAAGK,EAAEL,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACO,EAAEC,EAAEC,EAAEC,EAAEd,EAAEI,EAAE,CAAC,CAAC,CAAC,EAAEE,EAAE,EAAEG,EAAE,EAAET,EAAE,EAAEI,EAAE,MAAM,IAAI,IAAI,CAAC,GAAK,CAACJ,EAAEK,EAAED,EAAEE,GAAGI,EAAED,EAAER,EAAE,GAAGD,EAAEC,GAAG,EAAEU,EAAET,EAAE,GAAGG,EAAEH,GAAG,EAAEU,EAAER,EAAE,GAAGJ,EAAEI,GAAG,EAAES,EAAEP,EAAE,GAAGD,EAAEC,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACG,EAAEE,EAAEC,EAAEC,EAAET,EAAEE,EAAE,CAAC,CAAC,CAAC,EAAEN,EAAE,EAAEK,EAAE,EAAED,EAAE,EAAEE,EAAE,MAAM,IAAI,IAAI,CAAC,IAAMN,EAAE,KAAK,IAAIU,EAAE,GAAG,CAACL,EAAE,KAAK,IAAIK,EAAE,GAAG,CAACN,EAAEM,EAAE,GAAGJ,EAAEI,EAAE,GAAGH,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,GAAUV,IAAJ,GAAWK,IAAJ,GAAM,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAACJ,EAAEC,EAAEM,EAAEC,EAAED,EAAEC,EAAE,CAAC,CAAC,CAAC,EAAED,EAAE,EAAEC,IAAUR,IAAIO,GAAGN,IAAIO,KAAG,GAAER,EAAEC,EAAEM,EAAEC,EAAET,EAAEK,EAAED,EAAEE,EAAEC,EAAE,CAAC,SAAS,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,KAAKP,EAAE,CAAC,GAAG,CAAC,EAAEQ,EAAE,EAAEC,GAAE,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAEL,EAAE,EAAEE,EAAE,EAAEG,EAAE,OAAON,EAAE,SAAS,GAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAACH,EAAE,KAAK,IAAIK,EAAE,CAACF,EAAE,KAAK,IAAIE,EAAE,CAACL,EAAE,KAAK,IAAIK,EAAE,CAACF,EAAE,KAAK,IAAIE,EAAE,CAAC,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMK,GAAG,EAAEJ,EAAE,KAAK,GAAGK,EAAE,KAAK,IAAIA,EAAE,IAAIC,EAAE,EAAE,CAACC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE,GAAGP,EAAE,CAACI,EAAEC,EAAEC,EAAEC,GAAGP,MAAM,CAAC,CAACT,EAAEG,GAAG,GAAEH,EAAEG,EAAE,CAACO,EAAE,CAAC,CAACL,EAAEJ,GAAG,GAAEI,EAAEJ,EAAE,CAACS,EAAE,CAAC,IAAMJ,GAAGN,EAAEK,GAAG,EAAEI,GAAGN,EAAEF,GAAG,EAAMU,EAAEL,EAAEA,GAAGJ,EAAEA,GAAGO,EAAEA,GAAGL,EAAEA,GAAG,EAAE,IAAI,EAAE,KAAK,KAAKO,EAAE,CAAC,GAAGA,EAAE,GAAGA,GAAG,IAAMC,EAAEV,EAAEA,EAAEe,EAAEb,EAAEA,EAAEc,EAAEN,EAAEK,EAAEL,EAAEH,EAAEA,EAAEQ,EAAEX,EAAEA,EAAEa,EAAEP,EAAEH,EAAEA,EAAEQ,EAAEX,EAAEA,EAAEc,GAAGb,IAAIC,EAAE,GAAG,GAAG,KAAK,KAAK,KAAK,IAAIU,EAAEC,EAAE,CAAC,CAAC,EAAEC,EAAElB,EAAEO,EAAEL,GAAGJ,EAAEK,GAAG,EAAE,EAAEe,EAAE,CAAChB,EAAEE,EAAEJ,GAAGC,EAAEF,GAAG,EAAE,EAAE,KAAK,KAAK,aAAaE,EAAEa,GAAGZ,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,aAAaH,EAAEe,GAAGZ,GAAG,QAAQ,EAAE,CAAC,CAAC,CAACJ,EAAEe,IAAI,EAAE,KAAK,GAAGF,GAAGR,EAAEU,IAAI,EAAE,KAAK,GAAGD,GAAGD,EAAE,IAAI,EAAE,EAAE,KAAK,GAAGA,GAAGC,EAAE,IAAI,EAAE,EAAE,KAAK,GAAGA,GAAGN,GAAGK,EAAEC,IAAI,GAAG,EAAE,KAAK,IAAI,CAACN,GAAGM,EAAED,IAAI,GAAG,EAAE,KAAK,IAAI,IAAII,EAAEH,EAAED,EAAE,GAAG,KAAK,IAAII,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAMjB,EAAEc,EAAEX,EAAEE,EAAEE,EAAEN,EAAE,EAAEO,GAAGM,EAAED,EAAEA,EAAE,IAAI,KAAK,GAAG,IAAI,EAAEA,EAAE,IAAI,KAAK,GAAG,IAAI,GAAG,EAAE,GAAE,EAAEE,EAAEb,EAAE,KAAK,IAAIY,EAAE,CAAC,EAAEE,EAAEZ,EAAE,KAAK,IAAIU,EAAE,CAACX,EAAEI,EAAEL,EAAEE,EAAEE,EAAE,EAAEE,EAAE,CAACM,EAAEd,EAAEe,EAAEC,EAAE,CAAC,CAAC,EAAEF,EAAED,EAAE,IAAMK,EAAE,KAAK,IAAIL,EAAE,CAACM,EAAE,KAAK,IAAIN,EAAE,CAACO,EAAE,KAAK,IAAIN,EAAE,CAACO,EAAE,KAAK,IAAIP,EAAE,CAACQ,EAAE,KAAK,IAAIL,EAAE,EAAE,CAACM,EAAE,EAAE,EAAErB,EAAEoB,EAAEE,EAAE,EAAE,EAAEpB,EAAEkB,EAAEG,EAAE,CAACzB,EAAEG,EAAE,CAACuB,EAAE,CAAC1B,EAAEuB,EAAEJ,EAAEhB,EAAEqB,EAAEN,EAAE,CAACS,EAAE,CAACtB,EAAEkB,EAAEF,EAAEpB,EAAEuB,EAAEJ,EAAE,CAACQ,EAAE,CAACvB,EAAEJ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAEwB,EAAE,GAAGC,EAAE,GAAG,EAAE,GAAG,EAAED,EAAE,GAAGC,EAAE,GAAGjB,EAAE,MAAM,CAACiB,EAAEC,EAAEC,EAAE,CAAC,OAAOhB,EAAE,CAAC,CAAC,EAAE,CAACc,EAAEC,EAAEC,EAAE,CAAC,OAAOhB,EAAE,CAAC,IAAMZ,EAAE,EAAE,CAAC,IAAI,IAAIG,EAAE,EAAEA,EAAES,EAAE,OAAO,GAAG,EAAE,CAAC,IAAMP,EAAE,GAAEO,EAAET,GAAG,GAAGS,EAAET,GAAG,GAAGO,EAAE,CAACT,EAAE,GAAEW,EAAET,EAAE,GAAG,GAAGS,EAAET,EAAE,GAAG,GAAGO,EAAE,CAACR,EAAE,GAAEU,EAAET,EAAE,GAAG,GAAGS,EAAET,EAAE,GAAG,GAAGO,EAAE,CAAC,EAAE,KAAK,CAACL,EAAE,GAAGA,EAAE,GAAGJ,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,OAAOF,GAAG,IAAM,GAAE,CAAC,WAAW,SAAS,EAAE,EAAE,CAAC,OAAO,EAAEA,EAAEG,EAAE,EAAE,oBAAoB,SAAS,EAAE,EAAE,EAAE,CAAC,OAAO,GAAEH,EAAEG,EAAEE,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAkB,OAAO,GAAEL,EAAEG,EAAED,EAAtB,GAAEG,EAAEJ,EAAEC,EAAE,CAAkB,CAAC,OAAO,cAAc,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,EAAEF,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,OAAO,IAAI,EAAEF,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,CAAC,IAAMD,GAAGD,GAAG,EAAE,EAAE,OAAO,GAAGC,EAAE,EAAE,CAAC,IAAMC,EAAE,EAAE,CAAC,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,EAAED,EAAEG,GAAG,GAAGH,EAAEG,GAAG,GAAGH,EAAEG,EAAE,GAAG,GAAGH,EAAEG,EAAE,GAAG,GAAGE,EAAE,CAAC,CAAC,OAAOF,GAAGD,EAAE,KAAK,GAAG,EAAEF,EAAEC,EAAE,GAAG,GAAGD,EAAEC,EAAE,GAAG,GAAGD,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGK,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,IAAIH,EAAE,CAAC,OAAWD,IAAJ,EAAM,GAAED,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGK,EAAE,CAAC,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,SAAS,EAAE,EAAE,CAAC,OAAO,GAAEL,EAAE,CAAC,EAAEG,EAAE,EAAE,CAAC,CAACH,EAAEG,EAAE,CAAC,CAACH,EAAEK,EAAEF,EAAE,CAAC,CAACH,EAAEK,EAAEF,EAAEF,EAAE,CAAC,CAACD,EAAEG,EAAEF,EAAE,CAAC,CAACC,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,CAAC,GAAGF,EAAE,OAAO,CAAC,IAAMK,EAAY,OAAOL,EAAE,GAAG,IAAtB,SAAyB,CAACA,EAAE,CAACA,EAAEC,EAAE,GAAEI,EAAE,GAAG,GAAG,EAAE,GAAGF,EAAE,WAAWA,EAAE,CAACD,EAAEC,EAAE,mBAAmB,EAAE,CAAC,GAAEE,EAAE,GAAG,KAAK,EAAE,IAAIF,EAAE,WAAW,GAAEA,EAAE,CAAC,CAAC,IAAI,IAAIH,EAAE,EAAEA,EAAEK,EAAE,OAAO,IAAI,CAAC,IAAMD,EAAEC,EAAEL,GAAG,GAAGI,EAAE,OAAO,CAAC,IAAMJ,EAAE,GAAEI,EAAE,GAAG,EAAE,GAAGD,EAAE,WAAWA,EAAE,CAACE,EAAEF,EAAE,mBAAmB,EAAE,CAAC,GAAEC,EAAE,KAAK,EAAE,IAAID,EAAE,WAAW,GAAEA,EAAE,CAAC,CAAC,IAAI,IAAMA,KAAKH,EAAWG,EAAE,KAAX,QAAeF,EAAE,KAAKE,EAAE,CAAC,IAAI,IAAMH,KAAKK,EAAWL,EAAE,KAAX,QAAeE,EAAE,KAAKF,EAAE,EAAE,MAAM,CAAC,KAAK,OAAO,IAAIC,EAAE,OAAOC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,CAAC,IAAMD,EAAE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,OAAeD,EAAE,IAAE,GAAYG,EAAE,IAAE,GAAI,EAAE,CAAC,CAACD,EAAE,KAAK,KAAK,KAAK,IAAIG,EAAE,eAAeA,EAAE,eAAe,KAAK,KAAK,IAAI,CAACJ,EAAE,CAAC,CAACG,EAAE,EAAE,KAAK,GAAGF,EAAMI,EAAE,KAAK,IAAIN,EAAE,EAAE,CAACO,EAAE,KAAK,IAAIJ,EAAE,EAAE,CAAOK,EAAE,EAAEH,EAAE,aAAa,MAAO,IAAG,EAAEC,EAAEE,EAAEH,EAAE,CAAC,GAAG,EAAEE,EAAEC,EAAEH,EAAE,CAAC,CAAC,UAAUD,EAAE,GAAGE,EAAE,GAAGC,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAK,CAACL,EAAEE,GAAG,GAAEH,EAAE,UAAUD,EAAEG,EAAEF,EAAE,GAAGA,EAAE,GAAG,EAAEA,EAAE,UAAU,GAAE,GAAG,GAAE,GAAG,EAAEI,EAAE,CAACA,EAAE,CAACA,EAAE,CAAKC,EAAE,GAAEJ,EAAE,KAAKG,EAAE,CAAC,GAAG,CAACA,EAAE,oBAAwBA,EAAE,YAAN,EAAgB,CAAC,GAAK,CAACH,GAAG,GAAED,EAAE,UAAUD,EAAEG,EAAEF,EAAE,GAAGA,EAAE,GAAG,IAAI,EAAEI,EAAE,CAACD,EAAE,GAAEF,EAAE,KAAKG,EAAE,CAAC,EAAEC,EAAE,OAAOF,EAAE,CAAC,MAAM,CAAC,gBAAgBA,EAAE,MAAM,CAAC,KAAK,OAAO,IAAIE,EAAE,CAAC,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMG,EAAET,EAAEU,EAAEP,EAAMQ,EAAE,KAAK,IAAIN,EAAE,EAAE,CAACO,EAAE,KAAK,IAAIX,EAAE,EAAE,CAAC,GAAG,EAAE,IAAIU,EAAEH,EAAE,CAAC,GAAG,EAAE,IAAII,EAAEJ,EAAE,CAAC,IAAIK,EAAEX,EAAEY,EAAEV,EAAE,KAAKS,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,EAAEA,EAAE,EAAE,KAAK,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,IAAI,IAAME,EAAE,EAAE,KAAK,GAAGP,EAAE,eAAeQ,EAAE,KAAK,IAAID,EAAE,GAAGD,EAAED,GAAG,EAAE,CAACI,EAAE,GAAED,EAAEP,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,EAAEN,EAAE,CAAC,GAAG,CAACA,EAAE,mBAAmB,CAAC,IAAMR,EAAE,GAAEgB,EAAEP,EAAEC,EAAEC,EAAEC,EAAEC,EAAEC,EAAE,IAAIN,EAAE,CAAC,EAAE,KAAK,GAAGR,EAAE,CAAC,OAAOM,IAAIC,EAAEU,EAAE,KAAK,GAAG,EAAER,EAAEC,EAAED,EAAEE,EAAE,KAAK,IAAIE,EAAE,CAACH,EAAEE,EAAE,KAAK,IAAIC,EAAE,CAACL,EAAE,CAAC,GAAG,EAAEC,EAAEC,EAAED,EAAEE,EAAE,KAAK,IAAIG,EAAE,CAACJ,EAAEE,EAAE,KAAK,IAAIE,EAAE,CAACN,EAAE,CAAC,CAACS,EAAE,KAAK,CAAC,GAAG,SAAS,KAAK,CAACR,EAAEC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,CAACD,EAAEE,EAAE,KAAK,IAAIE,EAAE,CAACH,EAAEE,EAAE,KAAK,IAAIC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,IAAII,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,CAAC,IAAMZ,EAAE,GAAE,EAAE,GAAEL,EAAE,CAAC,CAAC,CAACC,EAAE,EAAE,CAAKC,EAAE,CAAC,EAAE,EAAE,CAACE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,GAAK,CAAC,IAAIJ,EAAE,KAAKM,KAAKD,EAAE,OAAOL,EAAP,CAAU,IAAI,IAAI,EAAE,CAACM,EAAE,GAAGA,EAAE,GAAG,CAAC,EAAE,CAACA,EAAE,GAAGA,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,GAAG,EAAEF,EAAE,GAAGA,EAAE,GAAGE,EAAE,GAAGA,EAAE,GAAGH,EAAE,CAAC,CAAC,EAAE,CAACG,EAAE,GAAGA,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,GAAK,CAACN,EAAEK,EAAEH,EAAEK,EAAEC,EAAEC,GAAGH,EAAE,EAAE,KAAK,GAAG,GAAEN,EAAEK,EAAEH,EAAEK,EAAEC,EAAEC,EAAEL,EAAED,EAAE,CAAC,CAAC,EAAE,CAACK,EAAEC,EAAE,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,GAAG,EAAEL,EAAE,GAAGA,EAAE,GAAGF,EAAE,GAAGA,EAAE,GAAGC,EAAE,CAAC,CAAC,EAAE,CAACD,EAAE,GAAGA,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,IAAID,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,CAAC,IAAMI,EAAE,EAAE,CAAC,IAAI,IAAMJ,KAAKD,EAAE,GAAGC,EAAE,OAAO,CAAC,IAAMD,EAAEG,EAAE,qBAAqB,EAAED,EAAED,EAAE,OAAO,GAAGC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACD,EAAE,GAAG,GAAG,EAAED,EAAEG,EAAE,CAACF,EAAE,GAAG,GAAG,EAAED,EAAEG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,SAAS,KAAK,CAACD,EAAEG,GAAG,GAAG,EAAEJ,EAAEG,EAAE,CAACF,EAAEG,GAAG,GAAG,EAAEJ,EAAEG,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,WAAW,IAAIE,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,CAAC,OAAO,SAAS,EAAE,EAAE,CAAC,IAAIA,EAAEL,EAAE,WAAW,UAAU,GAAG,CAAC,EAAEK,GAAG,OAAOA,EAAP,CAAU,IAAI,SAAS,EAAEA,KAAK,EAAEA,GAAG,IAAI,EAAEF,EAAE,EAAE,MAAM,IAAI,cAAc,EAAEE,KAAK,EAAEA,GAAG,IAAI,EAAEF,EAAE,EAAE,MAAM,IAAI,OAAO,EAAEE,KAAK,EAAEA,GAAG,IAAI,EAAEF,EAAE,EAAE,MAAM,IAAI,SAAS,EAAEE,KAAK,EAAEA,GAAG,IAAI,EAAEF,EAAE,EAAE,MAAM,IAAI,cAAc,EAAEE,KAAK,EAAEA,GAAG,IAAI,EAAEF,EAAE,EAAE,MAAM,QAAQ,EAAE,UAAU,EAAEE,KAAK,EAAEA,GAAG,IAAI,EAAEF,EAAE,EAAE,OAAO,EAAEE,IAAIF,EAAE,GAAE,CAAC,aAAaH,EAAEG,EAAE,CAAC,SAAS,GAAE,EAAE,CAAC,IAAMA,EAAE,OAAO,OAAO,EAAE,CAACH,EAAE,CAAC,MAAO,GAAE,WAAW,IAAK,GAAEA,EAAE,OAAO,EAAE,KAAKA,EAAE,KAAK,GAAGG,EAAE,SAAS,GAAE,EAAE,CAAC,MAAOH,CAAe,EAAE,aAAW,IAAI,EAAEA,EAAE,MAAM,EAAE,CAAEA,EAAE,WAAW,MAAM,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,OAAOK,EAAE,UAAUJ,GAAG,GAAEI,EAAE,EAAEF,EAAEH,GAAGA,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,GAAE,CAACA,EAAEA,EAAEG,EAAEE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAMC,EAAEF,EAAEF,EAAE,uBAAuBA,EAAE,mBAAmBK,EAAE,GAAEP,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAGI,EAAE,OAAOC,EAAE,IAAMC,EAAE,GAAER,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAOK,EAAE,OAAOC,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMD,GAAWP,EAAEK,IAAE,GAAYF,EAAEF,IAAE,EAAGO,EAAE,KAAK,KAAKD,EAAE,CAAKE,EAAE,EAAE,EAAED,EAAE,IAAI,EAAEA,EAAE,IAAI,GAAG,UAAUA,EAAE,SAAS,IAAIE,EAAER,EAAE,qBAAqB,EAAE,EAAEQ,EAAE,IAAIH,IAAI,EAAEC,EAAE,IAAI,IAAMG,EAAED,EAAE,EAAEE,EAAE,GAAG,GAAG,GAAEV,EAAE,CAAKW,EAAEX,EAAE,OAAOA,EAAE,qBAAqBD,EAAEE,GAAG,IAAIW,EAAEZ,EAAE,OAAOA,EAAE,qBAAqBF,EAAEK,GAAG,IAAI,EAAE,EAAEQ,EAAEX,EAAEO,EAAE,CAAC,EAAE,EAAEK,EAAEZ,EAAEO,EAAE,CAAC,IAAMM,EAAE,EAAE,CAACC,MAAM,EAAEL,EAAET,EAAEO,EAAE,CAACQ,MAAM,EAAEP,EAAER,EAAEO,EAAE,CAACS,EAAEhB,EAAE,iBAAiB,OAAOE,IAAIE,EAAES,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACf,GAAGkB,EAAE,EAAEF,GAAG,EAAEb,GAAGe,EAAE,EAAEF,GAAG,EAAE,CAAC,CAAC,CAACD,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACf,GAAGkB,EAAE,EAAE,EAAER,EAAER,EAAEO,EAAE,EAAEN,GAAGe,EAAE,EAAE,EAAER,EAAER,EAAEO,EAAE,EAAE,CAAC,CAAC,EAAEH,EAAES,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACF,EAAEb,GAAGK,EAAEL,GAAGY,EAAEI,GAAG,CAACF,EAAEX,GAAGF,EAAEE,GAAGS,EAAEI,GAAG,CAACH,EAAEb,EAAE,GAAGK,EAAEL,GAAGY,EAAEI,GAAG,CAACF,EAAEX,EAAE,GAAGF,EAAEE,GAAGS,EAAEI,GAAG,CAACX,GAAGa,EAAE,EAAEF,GAAG,EAAEf,GAAGiB,EAAE,EAAEF,GAAG,EAAE,CAAC,CAAC,CAACD,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACF,EAAEb,GAAGK,EAAEL,GAAGY,EAAEK,GAAG,CAACH,EAAEX,GAAGF,EAAEE,GAAGS,EAAEK,GAAG,CAACJ,EAAEb,EAAE,GAAGK,EAAEL,GAAGY,EAAEK,GAAG,CAACH,EAAEX,EAAE,GAAGF,EAAEE,GAAGS,EAAEK,GAAG,CAACZ,GAAGa,EAAE,EAAED,GAAG,EAAEhB,GAAGiB,EAAE,EAAED,GAAG,EAAE,CAAC,CAAC,CAACF,EAAE,SAAS,GAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAACf,EAAE,OAAO,MAAM,EAAE,CAAC,IAAMC,EAAE,EAAE,CAAC,EAAE,KAAK,CAACD,EAAE,GAAG,GAAG,EAAEG,EAAEE,EAAE,CAACL,EAAE,GAAG,GAAG,EAAEG,EAAEE,EAAE,CAAC,CAAC,CAACJ,EAAE,KAAK,CAACD,EAAE,GAAG,GAAG,EAAEG,EAAEE,EAAE,CAACL,EAAE,GAAG,GAAG,EAAEG,EAAEE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAIH,EAAE,EAAEA,EAAEF,EAAE,OAAO,IAAI,EAAE,KAAK,CAACA,EAAEE,GAAG,GAAG,EAAEC,EAAEE,EAAE,CAACL,EAAEE,GAAG,GAAG,EAAEC,EAAEE,EAAE,CAAC,CAAC,CAACH,IAAIF,EAAE,OAAO,GAAGC,EAAE,KAAK,CAACD,EAAEE,GAAG,GAAG,EAAEC,EAAEE,EAAE,CAACL,EAAEE,GAAG,GAAG,EAAEC,EAAEE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAEJ,EAAE,KAAKI,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,CAAC,IAAMJ,EAAED,EAAE,OAAOE,EAAE,EAAE,CAAC,GAAGD,EAAE,EAAE,CAAC,IAAMG,EAAE,EAAE,CAACE,EAAE,EAAED,EAAE,eAAe,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACL,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,IAAIG,EAAE,EAAEA,EAAE,EAAEF,EAAE,IAAI,CAAC,IAAMI,EAAEL,EAAEG,GAAG,EAAE,GAAG,CAACE,EAAE,GAAGA,EAAE,GAAG,CAAC,EAAE,GAAG,CAACA,EAAE,IAAIC,EAAEN,EAAEG,EAAE,GAAG,GAAGG,EAAEN,EAAEG,EAAE,GAAG,IAAI,EAAEE,EAAE,IAAIC,EAAEN,EAAEG,EAAE,GAAG,GAAGG,EAAEN,EAAEG,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAACH,EAAEG,EAAE,GAAG,IAAIG,EAAEN,EAAEG,GAAG,GAAGG,EAAEN,EAAEG,EAAE,GAAG,IAAI,EAAEH,EAAEG,EAAE,GAAG,IAAIG,EAAEN,EAAEG,GAAG,GAAGG,EAAEN,EAAEG,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAACH,EAAEG,EAAE,GAAG,GAAGH,EAAEG,EAAE,GAAG,GAAG,CAACD,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACE,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAGD,GAAOA,EAAE,SAAN,EAAa,CAAC,IAAMH,EAAEK,EAAE,oBAAoB,EAAE,KAAK,CAAC,GAAG,SAAS,KAAK,CAACF,EAAE,GAAG,EAAEH,EAAEK,EAAE,CAACF,EAAE,GAAG,EAAEH,EAAEK,EAAE,CAAC,CAAC,CAAC,OAAWJ,IAAJ,GAAOC,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACF,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,CAAC,CAAC,CAACE,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACF,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,CAAC,CAAC,EAAMC,IAAJ,GAAOC,EAAE,KAAK,GAAG,GAAEF,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAOH,EAAE,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMM,EAAE,EAAE,CAACC,EAAE,EAAE,CAAC,GAAOF,EAAE,YAAN,EAAgB,CAAC,GAAG,EAAEE,EAAE,KAAK,CAACN,EAAEF,EAAE,KAAK,IAAI,CAACD,EAAE,CAACK,EAAEH,EAAE,KAAK,IAAI,CAACF,EAAE,CAAC,CAAC,CAAC,IAAI,IAAII,EAAE,EAAEA,GAAG,EAAE,KAAK,GAAG,GAAGJ,EAAE,CAAC,IAAMA,EAAE,CAACG,EAAEF,EAAE,KAAK,IAAIG,EAAE,CAACC,EAAEH,EAAE,KAAK,IAAIE,EAAE,CAAC,CAAC,EAAE,KAAKJ,EAAE,CAACS,EAAE,KAAKT,EAAE,CAAC,EAAE,KAAK,CAACG,EAAEF,EAAE,KAAK,IAAI,EAAE,CAACI,EAAEH,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAACO,EAAE,KAAK,CAACN,EAAEF,EAAE,KAAK,IAAID,EAAE,CAACK,EAAEH,EAAE,KAAK,IAAIF,EAAE,CAAC,CAAC,KAAK,CAAC,IAAMU,EAAE,EAAE,GAAGH,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,KAAK,CAAC,EAAEH,EAAEG,EAAE,CAACJ,EAAE,GAAGF,EAAE,KAAK,IAAIS,EAAEV,EAAE,CAAC,EAAEI,EAAEG,EAAE,CAACF,EAAE,GAAGH,EAAE,KAAK,IAAIQ,EAAEV,EAAE,CAAC,CAAC,CAAC,IAAMW,EAAE,EAAE,KAAK,GAAGD,EAAE,IAAI,IAAI,IAAIJ,EAAEI,EAAEJ,EAAEK,EAAE,GAAGX,EAAE,CAAC,IAAMA,EAAE,CAAC,EAAEI,EAAEG,EAAE,CAACJ,EAAEF,EAAE,KAAK,IAAIK,EAAE,CAAC,EAAEF,EAAEG,EAAE,CAACF,EAAEH,EAAE,KAAK,IAAII,EAAE,CAAC,CAAC,EAAE,KAAKN,EAAE,CAACS,EAAE,KAAKT,EAAE,CAAC,EAAE,KAAK,CAAC,EAAEI,EAAEG,EAAE,CAACJ,EAAEF,EAAE,KAAK,IAAIS,EAAE,EAAE,KAAK,GAAG,GAAGJ,EAAE,CAAC,EAAEF,EAAEG,EAAE,CAACF,EAAEH,EAAE,KAAK,IAAIQ,EAAE,EAAE,KAAK,GAAG,GAAGJ,EAAE,CAAC,CAAC,CAACG,EAAE,KAAK,CAAC,EAAEL,EAAEG,EAAE,CAACJ,EAAE,IAAIF,EAAE,KAAK,IAAIS,EAAEJ,EAAE,CAAC,EAAEF,EAAEG,EAAE,CAACF,EAAE,IAAIH,EAAE,KAAK,IAAIQ,EAAEJ,EAAE,CAAC,CAAC,CAACG,EAAE,KAAK,CAAC,EAAEL,EAAEG,EAAE,CAACJ,EAAE,GAAGF,EAAE,KAAK,IAAIS,EAAE,GAAGJ,EAAE,CAAC,EAAEF,EAAEG,EAAE,CAACF,EAAE,GAAGH,EAAE,KAAK,IAAIQ,EAAE,GAAGJ,EAAE,CAAC,CAAC,CAAC,MAAM,CAACG,EAAED,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMC,EAAEL,EAAE,EAAE,GAAGI,EAAE,CAACE,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAEH,EAAEC,EAAE,CAACL,EAAE,GAAGF,EAAE,KAAK,IAAIQ,EAAET,EAAE,CAAC,EAAEO,EAAEC,EAAE,CAACH,EAAE,GAAGH,EAAE,KAAK,IAAIO,EAAET,EAAE,CAAC,CAAC,CAAC,IAAI,IAAII,EAAEK,EAAEL,GAAGE,EAAE,GAAGN,EAAE,EAAE,KAAK,CAAC,EAAEO,EAAEC,EAAE,CAACL,EAAEF,EAAE,KAAK,IAAIG,EAAE,CAAC,EAAEG,EAAEC,EAAE,CAACH,EAAEH,EAAE,KAAK,IAAIE,EAAE,CAAC,CAAC,CAAC,OAAOM,EAAE,KAAK,CAACP,EAAEF,EAAE,KAAK,IAAIK,EAAE,CAACD,EAAEH,EAAE,KAAK,IAAII,EAAE,CAAC,CAAC,CAACI,EAAE,KAAK,CAACP,EAAEF,EAAE,KAAK,IAAIK,EAAE,CAACD,EAAEH,EAAE,KAAK,IAAII,EAAE,CAAC,CAAC,CAAC,GAAEI,EAAE,KAAKF,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMA,EAAE,EAAE,CAACC,EAAE,CAACF,EAAE,qBAAqB,GAAGA,EAAE,qBAAqB,GAAG,GAAG,CAAKG,EAAE,CAAC,EAAE,EAAE,CAAOC,EAAEJ,EAAE,mBAAmB,EAAE,EAAEK,EAAEL,EAAE,iBAAiB,IAAI,IAAIM,EAAE,EAAEA,EAAEF,EAAE,IAAQE,IAAJ,EAAML,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACF,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,CAACE,EAAE,KAAK,CAAC,GAAG,OAAO,KAAK,CAACF,EAAE,IAAIM,EAAE,EAAE,EAAEH,EAAE,GAAGF,EAAE,EAAED,EAAE,IAAIM,EAAE,EAAE,EAAEH,EAAE,GAAGF,EAAE,EAAE,CAAC,CAAC,CAAC,EAAEK,EAAE,CAACV,EAAEE,EAAE,CAAC,CAACF,EAAE,EAAEO,EAAEI,GAAGN,EAAE,CAACH,EAAE,EAAEK,EAAEI,GAAGN,EAAE,CAAC,CAACC,EAAE,KAAK,CAAC,GAAG,WAAW,KAAK,CAACR,EAAE,EAAES,EAAEI,GAAGN,EAAE,CAACJ,EAAE,EAAEM,EAAEI,GAAGN,EAAE,CAACF,EAAE,EAAEI,EAAEI,GAAGN,EAAE,CAACN,EAAE,EAAEQ,EAAEI,GAAGN,EAAE,CAACG,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,CAAC,OAAOF,EAAE,SAAS,GAAE,EAAE,CAAC,MAAM,CAAC,GAAGR,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,CAAC,IAAMK,EAAEL,EAAE,OAAO,GAAGK,EAAE,EAAE,MAAU,MAAM,2CAA2C,CAAC,IAAMJ,EAAE,EAAE,CAAC,GAAOI,IAAJ,EAAM,EAAE,KAAK,GAAEL,EAAE,GAAG,CAAC,GAAEA,EAAE,GAAG,CAAC,GAAEA,EAAE,GAAG,CAAC,GAAEA,EAAE,GAAG,CAAC,KAAK,CAAC,IAAMK,EAAE,EAAE,CAAC,EAAE,KAAKL,EAAE,GAAGA,EAAE,GAAG,CAAC,IAAI,IAAIG,EAAE,EAAEA,EAAEH,EAAE,OAAO,IAAI,EAAE,KAAKA,EAAEG,GAAG,CAACA,IAAIH,EAAE,OAAO,GAAGK,EAAE,KAAKL,EAAEG,GAAG,CAAC,IAAMD,EAAE,EAAE,CAACE,EAAE,EAAED,EAAE,EAAE,KAAK,GAAEE,EAAE,GAAG,CAAC,CAAC,IAAI,IAAIL,EAAE,EAAEA,EAAE,EAAEK,EAAE,OAAO,IAAI,CAAC,IAAMF,EAAEE,EAAEL,GAAG,EAAE,GAAG,CAACG,EAAE,GAAGA,EAAE,GAAG,CAAC,EAAE,GAAG,CAACA,EAAE,IAAIC,EAAEC,EAAEL,EAAE,GAAG,GAAGI,EAAEC,EAAEL,EAAE,GAAG,IAAI,EAAEG,EAAE,IAAIC,EAAEC,EAAEL,EAAE,GAAG,GAAGI,EAAEC,EAAEL,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAACK,EAAEL,EAAE,GAAG,IAAII,EAAEC,EAAEL,GAAG,GAAGI,EAAEC,EAAEL,EAAE,GAAG,IAAI,EAAEK,EAAEL,EAAE,GAAG,IAAII,EAAEC,EAAEL,GAAG,GAAGI,EAAEC,EAAEL,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAACK,EAAEL,EAAE,GAAG,GAAGK,EAAEL,EAAE,GAAG,GAAG,CAACC,EAAE,KAAKC,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,EAAE,OAAOD,EAAE,SAAS,GAAE,EAAE,EAAE,CAAC,OAAgBD,EAAE,GAAGG,EAAE,KAAG,GAAYH,EAAE,GAAGG,EAAE,KAAG,EAAG,SAAS,GAAE,EAAE,EAAE,EAAE,CAAC,IAAMF,EAAE,GAAEE,EAAEE,EAAE,CAAC,GAAOJ,IAAJ,EAAM,OAAO,GAAED,EAAEG,EAAE,CAAC,IAAID,IAAIF,EAAE,GAAGG,EAAE,KAAKE,EAAE,GAAGF,EAAE,KAAKH,EAAE,GAAGG,EAAE,KAAKE,EAAE,GAAGF,EAAE,KAAKF,EAAE,MAAO,GAAE,KAAK,IAAI,EAAE,KAAK,IAAI,EAAEC,EAAE,CAAC,CAAC,GAAEF,EAAE,GAAEG,EAAEE,EAAEH,EAAE,CAAC,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAACF,EAAE,IAAIG,EAAE,GAAGH,EAAE,IAAIK,EAAEL,EAAE,IAAIG,EAAE,GAAGH,EAAE,IAAIK,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMH,EAAED,GAAG,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,IAAMI,EAAEL,EAAEG,EAAE,GAAGF,EAAED,EAAEG,EAAE,GAAGD,EAAEF,EAAEG,EAAE,GAAGC,EAAEJ,EAAEG,EAAE,GAAOG,EAAE,EAAEL,EAAE,GAAG,EAAEI,EAAE,GAAGD,EAAE,GAAG,GAAGE,EAAE,IAAIC,EAAE,EAAEN,EAAE,GAAG,EAAEI,EAAE,GAAGD,EAAE,GAAG,GAAGG,EAAE,IAAIC,EAAE,EAAEN,EAAE,GAAG,EAAEE,EAAE,GAAGC,EAAE,GAAG,GAAGG,EAAE,IAAIC,EAAE,EAAEP,EAAE,GAAG,EAAEE,EAAE,GAAGC,EAAE,GAAG,MAAO,IAAGI,EAAEH,EAAEE,IAAI,EAAEA,GAAGD,EAAEE,IAAI,EAAEA,GAAGH,EAAEC,GAAGP,EAAEG,EAAE,CAACE,EAAE,CAAC,IAAMA,EAAEL,EAAEG,EAAE,GAAMD,EAAE,QAAS,EAAEA,EAAEA,EAAE,OAAO,GAAG,EAAEG,EAAE,KAAK,KAAK,GAAED,EAAEE,EAAE,CAAC,EAAE,GAAGJ,EAAE,KAAKG,EAAE,CAAM,EAAE,KAAKA,EAAE,CAAC,EAAE,KAAKL,EAAEG,EAAE,GAAG,KAAK,CAAC,IAAMF,EAAE,GAAGG,EAAEJ,EAAEG,EAAE,GAAGG,EAAEN,EAAEG,EAAE,GAAGI,EAAEP,EAAEG,EAAE,GAAGK,EAAER,EAAEG,EAAE,GAAGM,EAAE,GAAEL,EAAEE,EAAEL,EAAE,CAACS,EAAE,GAAEJ,EAAEC,EAAEN,EAAE,CAACU,EAAE,GAAEJ,EAAEC,EAAEP,EAAE,CAACW,EAAE,GAAEH,EAAEC,EAAET,EAAE,CAACY,EAAE,GAAEH,EAAEC,EAAEV,EAAE,CAACa,EAAE,GAAEF,EAAEC,EAAEZ,EAAE,CAAC,GAAE,CAACG,EAAEK,EAAEG,EAAEE,EAAE,CAAC,EAAET,EAAEH,EAAE,CAAC,GAAE,CAACY,EAAED,EAAEF,EAAEH,EAAE,CAAC,EAAEH,EAAEH,EAAE,CAAC,IAAIE,EAAEE,EAAE,OAAOJ,EAAE,SAAS,GAAE,EAAE,EAAE,CAAC,OAAO,GAAEF,EAAE,EAAEA,EAAE,OAAOG,EAAE,CAAC,SAAS,GAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMC,EAAEF,GAAG,EAAE,CAACI,EAAEN,EAAEG,GAAGI,EAAEP,EAAEK,EAAE,GAAOG,EAAE,EAAEC,EAAE,EAAE,IAAI,IAAIR,EAAEE,EAAE,EAAEF,EAAEI,EAAE,EAAE,EAAEJ,EAAE,CAAC,IAAME,EAAE,GAAEH,EAAEC,GAAGK,EAAEC,EAAE,CAAC,EAAEC,IAAI,EAAEL,EAAE,EAAEF,GAAG,OAAO,KAAK,KAAKO,EAAE,CAACP,GAAG,GAAED,EAAEG,EAAEM,EAAE,EAAER,EAAEG,EAAE,CAAC,GAAEJ,EAAES,EAAEJ,EAAEJ,EAAEG,EAAE,GAAGA,EAAE,QAAQA,EAAE,KAAKE,EAAE,CAACF,EAAE,KAAKG,EAAE,EAAEH,EAAE,SAAS,GAAE,EAAE,EAAE,IAAI,EAAE,CAAC,IAAMH,EAAE,EAAE,CAACC,GAAGF,EAAE,OAAO,GAAG,EAAE,IAAI,IAAIK,EAAE,EAAEA,EAAEH,EAAE,IAAK,GAAEF,EAAE,EAAEK,EAAEF,EAAEF,EAAE,CAAC,OAAOI,GAAGA,EAAE,EAAE,GAAEJ,EAAE,EAAEA,EAAE,OAAOI,EAAE,CAACJ,EAAE,IAAM,EAAG,OAAa,GAAN,KAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,eAAe,CAAC,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,OAAO,YAAY,EAAE,eAAe,EAAE,aAAa,IAAI,eAAe,EAAE,UAAU,UAAU,WAAW,GAAG,aAAa,IAAI,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,KAAK,EAAE,mBAAmB,CAAC,EAAE,uBAAuB,CAAC,EAAE,iBAAiB,CAAC,EAAE,uBAAuB,GAAG,CAAC,KAAK,OAAOD,GAAG,EAAE,CAAC,KAAK,OAAO,UAAU,KAAK,eAAe,KAAK,GAAG,KAAK,OAAO,QAAQ,EAAE,OAAO,SAAS,CAAC,OAAO,KAAK,MAAM,KAAK,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,OAAOA,EAAE,OAAO,OAAO,EAAE,CAAC,KAAK,eAAeA,EAAE,CAAC,KAAK,eAAe,GAAG,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAMA,EAAE,KAAKG,GAAG,EAAE,CAAC,QAAQE,GAAG,KAAK,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMD,EAAE,KAAK,GAAGF,EAAE,CAAC,OAAO,KAAK,GAAG,OAAO,CAAC,GAAEF,EAAEG,EAAEE,EAAEJ,EAAEG,EAAE,CAAC,CAACA,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,GAAGF,EAAE,CAACI,EAAE,EAAE,CAACC,EAAE,GAAEP,EAAEG,EAAEE,EAAEJ,EAAEG,EAAE,CAAC,GAAGA,EAAE,KAAK,CAAC,IAAMF,EAAE,CAAC,CAACF,EAAEG,EAAE,CAAC,CAACH,EAAEK,EAAEF,EAAE,CAAC,CAACH,EAAEK,EAAEF,EAAEF,EAAE,CAAC,CAACD,EAAEG,EAAEF,EAAE,CAAC,CAAWG,EAAE,YAAZ,QAAsBE,EAAE,KAAK,GAAE,CAACJ,EAAE,CAACE,EAAE,CAAC,CAACE,EAAE,KAAK,GAAE,CAACJ,EAAE,CAACE,EAAE,CAAC,CAAC,OAAOA,EAAE,SAAS,GAAIE,EAAE,KAAKC,EAAE,CAAC,KAAK,GAAG,YAAYD,EAAEF,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,GAAGF,EAAE,CAACI,EAAE,EAAE,CAACC,EAAE,GAAEF,EAAEJ,EAAEG,EAAE,CAACI,EAAE,GAAER,EAAEG,EAAEC,EAAEG,EAAE,CAAC,GAAGH,EAAE,KAAK,GAAaA,EAAE,YAAZ,QAAsB,CAAC,IAAMC,EAAE,GAAEL,EAAEG,EAAEC,EAAEG,EAAE,CAAC,MAAM,EAAE,KAAK,WAAWD,EAAE,KAAKD,EAAE,MAAM,EAAE,KAAK,GAAE,CAACG,EAAE,gBAAgB,CAACJ,EAAE,CAAC,CAAC,OAAOA,EAAE,SAAS,GAAIE,EAAE,KAAKE,EAAE,MAAM,CAAC,KAAK,GAAG,UAAUF,EAAEF,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMF,EAAE,KAAK,QAAQF,EAAEG,EAAEE,EAAEA,EAAEJ,EAAE,CAAC,MAAO,GAAE,MAAM,SAASC,EAAE,WAAW,EAAE,EAAE,CAAC,IAAMG,EAAE,KAAK,GAAGF,EAAE,CAAC,OAAO,KAAK,GAAG,aAAa,CAAC,GAAEH,EAAE,CAAC,EAAEK,EAAE,CAAC,CAACA,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAMG,EAAE,KAAK,GAAGD,EAAE,CAACE,EAAE,EAAE,CAACC,EAAE,GAAEV,EAAEG,EAAEE,EAAEJ,EAAEC,EAAEE,EAAEE,EAAE,CAAC,EAAEE,EAAE,CAAC,GAAGF,GAAGE,EAAE,KAAK,GAAaA,EAAE,YAAZ,QAAsB,CAAC,IAAMF,EAAE,OAAO,OAAO,EAAE,CAACE,EAAE,CAAC,EAAE,mBAAmB,CAAC,EAAE,IAAMD,EAAE,GAAEP,EAAEG,EAAEE,EAAEJ,EAAEC,EAAEE,EAAE,CAAC,EAAE,CAAC,EAAEE,EAAE,CAAC,EAAE,KAAK,WAAWG,EAAE,KAAKF,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMA,EAAEP,EAAEQ,EAAEL,EAAMM,EAAE,KAAK,IAAIJ,EAAE,EAAE,CAACK,EAAE,KAAK,IAAIT,EAAE,EAAE,CAAC,GAAG,EAAE,IAAIQ,EAAEH,EAAE,CAAC,GAAG,EAAE,IAAII,EAAEJ,EAAE,CAAC,IAAIK,EAAET,EAAEU,EAAER,EAAE,KAAKO,EAAE,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,GAAG,EAAEA,EAAE,EAAE,KAAK,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,IAAI,IAAME,GAAGD,EAAED,GAAGL,EAAE,eAAeQ,EAAE,EAAE,CAAC,IAAI,IAAId,EAAEW,EAAEX,GAAGY,EAAE,GAAGC,EAAE,EAAE,KAAK,CAACN,EAAEE,EAAE,KAAK,IAAIT,EAAE,CAACQ,EAAEE,EAAE,KAAK,IAAIV,EAAE,CAAC,CAAC,CAAC,OAAOc,EAAE,KAAK,CAACP,EAAEE,EAAE,KAAK,IAAIG,EAAE,CAACJ,EAAEE,EAAE,KAAK,IAAIE,EAAE,CAAC,CAAC,CAACE,EAAE,KAAK,CAACP,EAAEC,EAAE,CAAC,CAAC,GAAE,CAACM,EAAE,CAACR,EAAE,EAAEN,EAAEG,EAAEE,EAAEJ,EAAEC,EAAEE,EAAEI,EAAE,CAAC,CAAC,OAAOA,EAAE,SAAS,GAAIC,EAAE,KAAKC,EAAE,CAAC,KAAK,GAAG,MAAMD,EAAED,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAMH,EAAE,KAAK,GAAGF,EAAE,CAACF,EAAE,EAAE,CAACC,EAAE,GAAEF,EAAEK,EAAE,CAAC,GAAGA,EAAE,MAAMA,EAAE,OAAO,EAAG,GAAaA,EAAE,YAAZ,QAAsB,CAAC,IAAMF,EAAE,GAAEH,EAAE,OAAO,OAAO,OAAO,OAAO,EAAE,CAACK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,UAAUA,EAAE,UAAUA,EAAE,UAAUA,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,WAAW,IAAI,KAAK,aAAaF,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAMA,EAAE,EAAE,CAACD,EAAEF,EAAE,GAAGE,EAAE,OAAO,CAAC,IAAMF,EAAY,OAAOE,EAAE,GAAG,IAAtB,SAAyB,CAACA,EAAE,CAACA,EAAE,IAAI,IAAMD,KAAKD,EAAE,EAAE,OAAO,EAAEG,EAAE,KAAK,GAAGF,EAAE,CAAKA,EAAE,SAAN,EAAaE,EAAE,KAAK,GAAG,GAAE,GAAE,CAACF,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,IAAI,EAAEI,EAAE,WAAW,EAAE,CAAC,CAACF,EAAE,KAAK,GAAG,GAAE,GAAEF,EAAE,CAAC,IAAI,EAAEI,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQJ,EAAE,KAAK,GAAE,CAACE,EAAE,CAACE,EAAE,CAAC,CAAC,OAAOA,EAAE,SAAS,GAAIJ,EAAE,KAAKC,EAAE,CAAC,KAAK,GAAG,QAAQD,EAAEI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,GAAGF,EAAE,CAACF,EAAE,EAAE,CAACC,EAAE,GAAEF,EAAE,CAAC,EAAEK,EAAE,CAAC,OAAOA,EAAE,OAAiBA,EAAE,YAAZ,QAAsBJ,EAAE,KAAK,GAAE,CAACD,EAAE,CAACK,EAAE,CAAC,CAACJ,EAAE,KAAK,GAAE,CAACD,EAAE,CAACK,EAAE,CAAC,EAAEA,EAAE,SAAS,GAAIJ,EAAE,KAAKC,EAAE,CAAC,KAAK,GAAG,UAAUD,EAAEI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,GAAGF,EAAE,CAACF,EAAE,EAAE,CAAC,GAAG,CAACD,EAAE,OAAO,KAAK,GAAG,OAAOC,EAAEI,EAAE,CAAC,GAAGL,GAAG,IAAI,QAAQ,MAAM,IAAI,CAAC,QAAQ,SAAS,IAAI,CAAC,QAAQ,UAAU,IAAI,CAAC,IAAME,EAAEG,EAAE,MAAsBA,EAAE,OAAlB,eAAwBA,EAAE,OAAO,EAAGD,EAAEC,EAAE,SAAS,EAAGC,EAAE,CAAC,EAAED,EAAE,gBAAgBA,EAAE,eAAe,GAAGE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,IAAMN,EAAE,GAAE,EAAE,GAAED,EAAE,CAAC,CAAC,CAACE,EAAE,EAAE,CAAKE,EAAE,EAAE,CAACE,EAAE,CAAC,EAAE,EAAE,CAACC,EAAE,EAAE,CAAOC,MAAM,CAAC,EAAE,QAAQ,GAAGJ,EAAE,KAAK,GAAG,GAAEG,EAAEJ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAEM,MAAM,CAAC,GAAG,CAACL,EAAE,SAASF,EAAE,KAAKE,EAAE,CAAC,EAAE,EAAE,GAAG,IAAI,GAAK,CAAC,IAAIJ,EAAE,KAAKG,KAAKF,EAAE,OAAOD,EAAP,CAAU,IAAI,IAAI,GAAG,CAAC,EAAE,CAACG,EAAE,GAAGA,EAAE,GAAG,CAACC,EAAE,KAAKE,EAAE,CAAC,MAAM,IAAI,IAAI,GAAG,CAACF,EAAE,KAAK,CAACD,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,GAAG,CAACI,EAAE,OAAO,CAAC,IAAMP,EAAEI,EAAE,OAAOA,EAAEA,EAAE,OAAO,GAAGE,EAAE,EAAE,KAAK,CAACN,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAACG,EAAE,GAAGA,EAAE,GAAG,CAAC,CAACI,EAAE,KAAK,CAACJ,EAAE,GAAGA,EAAE,GAAG,CAAC,CAACI,EAAE,KAAK,CAACJ,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,GAAG,CAACC,EAAE,KAAK,CAACE,EAAE,GAAGA,EAAE,GAAG,CAAC,CAAC,GAAGG,GAAG,CAAC,CAACJ,EAAE,OAAOH,EAAE,IAAMQ,EAAE,EAAE,CAAC,IAAI,IAAMV,KAAKE,EAAE,CAAC,IAAMC,EAAE,GAAEH,EAAEK,EAAE,CAAC,EAAE,QAAQK,EAAE,KAAKP,EAAE,CAAC,OAAOO,GAAGV,EAAE,EAAEM,EAAE,EAAE,GAAGD,EAAE,gBAAgB,IAAI,EAAEA,EAAE,WAAW,EAAE,CAACG,EAAE,GAAER,EAAEK,EAAE,CAAC,GAAGH,EAAE,GAAaG,EAAE,YAAZ,QAAsB,GAAOE,EAAE,SAAN,EAAa,CAAC,IAAMJ,EAAE,GAAEH,EAAE,OAAO,OAAO,OAAO,OAAO,EAAE,CAACK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,UAAUA,EAAE,UAAUA,EAAE,UAAUA,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,WAAW,IAAI,KAAK,aAAaF,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,GAAEI,EAAEF,EAAE,CAAC,MAAM,EAAE,KAAK,GAAEE,EAAEF,EAAE,CAAC,CAAC,OAAOD,IAAIE,EAAEC,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,GAAEP,EAAE,CAAC,EAAEK,EAAE,CAAC,GAAG,CAACJ,EAAE,KAAKO,EAAE,EAAE,KAAK,GAAG,OAAOP,EAAEI,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,IAAIA,EAAE,GAAG,IAAI,IAAMJ,KAAKD,EAAE,IAAI,CAAC,IAAMA,EAAY,OAAOG,GAAjB,UAAoBA,GAAG,EAAEF,EAAE,KAAK,KAAK,GAAG,CAACD,EAAE,QAAQG,EAAE,EAAE,CAACF,EAAE,KAAK,OAAOA,EAAE,GAAT,CAAa,IAAI,OAAO,GAAG,IAAID,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,MAAM,IAAI,WAAW,GAAG,IAAIA,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIA,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIA,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,MAAM,IAAI,SAAS,GAAG,IAAIA,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAI,OAAOK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAMF,EAAEH,EAAE,MAAM,EAAE,CAACK,EAAEL,EAAE,SAAS,KAAK,eAAeC,EAAE,EAAE,CAAC,IAAI,IAAMD,KAAKG,EAAE,CAAC,IAAIA,EAAE,KAAK,OAAOH,EAAE,KAAT,CAAe,IAAI,OAAO,EAAE,CAAC,EAAE,KAAK,UAAUA,EAAE,CAAC,OAAOK,EAAE,OAAO,YAAYA,EAAE,YAAY,KAAK,EAAG,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC,EAAE,KAAK,UAAUL,EAAE,CAAC,OAAO,EAAG,YAAY,EAAE,KAAKK,EAAE,MAAM,EAAG,CAAC,MAAM,IAAI,aAAa,EAAE,KAAK,WAAWL,EAAEK,EAAE,CAAC,GAAGJ,EAAE,KAAKE,EAAE,CAAC,OAAOF,EAAE,WAAW,EAAE,EAAE,CAAC,IAAII,EAAEF,EAAE,WAAW,OAAOE,EAAE,IAAI,EAAEF,EAAE,YAAY,GAAG,CAAC,EAAE,KAAK,UAAUH,EAAE,CAAC,OAAOG,EAAE,MAAM,EAAG,YAAYE,EAAE,KAAK,EAAG,CAAC,aAAa,EAAE,CAAC,OAAOL,EAAE,SAAS,EAAE,IAAQG,IAAJ,GAAgBH,EAAE,KAAX,QAAe,GAAQ,GAAN,KAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,KAAK,OAAOA,EAAE,KAAK,IAAI,KAAK,OAAO,WAAW,KAAK,CAAC,KAAK,IAAI,IAAI,GAAGG,EAAE,CAAC,KAAK,EAAE,CAAC,IAAMA,EAAEH,EAAE,MAAM,EAAE,CAACK,EAAEL,EAAE,SAAS,KAAK,mBAAmB,CAACC,EAAE,KAAK,IAAIC,EAAEF,EAAE,QAAQ,wBAAwB,IAAI,IAAMI,KAAKD,EAAE,OAAOC,EAAE,KAAT,CAAe,IAAI,OAAO,EAAE,MAAM,CAAC,EAAE,YAAqBC,EAAE,SAAX,OAAkB,cAAcA,EAAE,OAAO,EAAE,UAAUA,EAAE,YAAYA,EAAE,gBAAgBJ,EAAE,YAAYI,EAAE,eAAe,CAACA,EAAE,uBAAuB,EAAE,eAAeA,EAAE,sBAAsB,KAAK,eAAeJ,EAAEG,EAAEF,EAAE,CAACD,EAAE,SAAS,CAAC,MAAM,IAAI,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE,UAAUI,EAAE,MAAM,GAAG,IAAMF,EAAYH,EAAE,QAAZ,SAA+BA,EAAE,QAAd,WAA8BA,EAAE,QAAX,OAAiB,UAAU,UAAU,KAAK,eAAeC,EAAEG,EAAEF,EAAEC,EAAE,CAACF,EAAE,SAAS,CAAC,MAAM,IAAI,aAAa,KAAK,WAAWA,EAAEG,EAAEC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAIJ,EAAEI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,YAAY,GAAGL,EAAE,MAAM,CAACK,EAAE,cAAcL,EAAE,YAAYK,EAAE,aAAa,CAACA,EAAE,qBAAqB,EAAE,eAAeA,EAAE,oBAAoB,EAAE,YAAYA,EAAE,MAAM,GAAG,EAAE,UAAUJ,EAAE,KAAK,eAAeD,EAAEG,EAAEE,EAAE,wBAAwB,CAACL,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,WAAW,CAAC,IAAI,IAAMC,KAAKE,EAAE,IAAI,CAAC,IAAMA,EAAY,OAAOE,GAAjB,UAAoBA,GAAG,EAAEJ,EAAE,KAAK,KAAK,GAAG,CAACD,EAAE,QAAQK,EAAE,EAAE,CAACJ,EAAE,KAAK,OAAOA,EAAE,GAAT,CAAa,IAAI,OAAO,EAAE,OAAOE,EAAE,GAAGA,EAAE,GAAG,CAAC,MAAM,IAAI,WAAW,EAAE,cAAcA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,OAAOA,EAAE,GAAGA,EAAE,GAAG,EAAeA,EAAE,OAAf,WAAoBH,EAAE,KAAKC,EAAE,CAACD,EAAE,QAAQ,CAAC,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,mBAAmB,CAAC,OAAO,KAAK,IAAI,eAAe,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMI,EAAE,KAAK,IAAI,KAAKJ,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAACA,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,IAAI,UAAUJ,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAACA,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,IAAI,QAAQJ,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAACA,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMF,EAAE,KAAK,IAAI,OAAOF,EAAEG,EAAEE,EAAEJ,EAAE,CAAC,OAAO,KAAK,KAAKC,EAAE,CAACA,EAAE,WAAW,EAAE,EAAE,CAAC,IAAMG,EAAE,KAAK,IAAI,WAAWL,EAAEG,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAACA,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,IAAI,QAAQL,EAAEG,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAACA,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAMG,EAAE,KAAK,IAAI,IAAIR,EAAEG,EAAEE,EAAEJ,EAAEC,EAAEE,EAAEE,EAAEC,EAAE,CAAC,OAAO,KAAK,KAAKC,EAAE,CAACA,EAAE,MAAM,EAAE,EAAE,CAAC,IAAMH,EAAE,KAAK,IAAI,MAAML,EAAEG,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAACA,EAAE,KAAK,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,IAAI,KAAKL,EAAEG,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAACA,IAAS,GAAG,6BAAmC,GAAN,KAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,KAAK,IAAIL,EAAE,KAAK,IAAI,IAAI,GAAGG,EAAE,CAAC,KAAK,EAAE,CAAC,IAAMA,EAAEH,EAAE,MAAM,EAAE,CAACK,EAAEL,EAAE,SAAS,KAAK,mBAAmB,CAACC,EAAE,KAAK,IAAI,eAAe,OAAO,SAASC,EAAED,EAAE,gBAAgB,GAAG,IAAI,CAACG,EAAEJ,EAAE,QAAQ,wBAAwB,IAAI,IAAMM,KAAKH,EAAE,CAAC,IAAIA,EAAE,KAAK,OAAOG,EAAE,KAAT,CAAe,IAAI,OAAO,EAAEL,EAAE,gBAAgB,GAAG,OAAO,CAACE,EAAE,aAAa,IAAI,KAAK,UAAUG,EAAEF,EAAE,CAAC,CAACD,EAAE,aAAa,SAASE,EAAE,OAAO,CAACF,EAAE,aAAa,eAAeE,EAAE,YAAY,GAAG,CAACF,EAAE,aAAa,OAAO,OAAO,CAACE,EAAE,gBAAgBF,EAAE,aAAa,mBAAmBE,EAAE,eAAe,KAAK,IAAI,CAAC,MAAM,CAAC,CAACA,EAAE,sBAAsBF,EAAE,aAAa,oBAAoB,GAAGE,EAAE,uBAAuB,CAAC,MAAM,IAAI,WAAW,EAAEJ,EAAE,gBAAgB,GAAG,OAAO,CAACE,EAAE,aAAa,IAAI,KAAK,UAAUG,EAAEF,EAAE,CAAC,CAACD,EAAE,aAAa,SAAS,OAAO,CAACA,EAAE,aAAa,eAAe,IAAI,CAACA,EAAE,aAAa,OAAOE,EAAE,MAAM,GAAG,CAAWL,EAAE,QAAZ,SAA+BA,EAAE,QAAd,WAAqBG,EAAE,aAAa,YAAY,UAAU,CAAC,MAAM,IAAI,aAAa,EAAE,KAAK,WAAWF,EAAEK,EAAED,EAAE,CAAC,GAAGH,EAAE,YAAYC,EAAE,CAAC,OAAOD,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAID,EAAEI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,YAAY,GAAG,IAAMH,EAAEF,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAOE,EAAE,aAAa,IAAI,KAAK,UAAUC,EAAEE,EAAE,wBAAwB,CAAC,CAACH,EAAE,aAAa,SAASG,EAAE,MAAM,GAAG,CAACH,EAAE,aAAa,eAAeD,EAAE,GAAG,CAACC,EAAE,aAAa,OAAO,OAAO,CAACG,EAAE,cAAcH,EAAE,aAAa,mBAAmBG,EAAE,aAAa,KAAK,IAAI,CAAC,MAAM,CAAC,CAACA,EAAE,oBAAoBH,EAAE,aAAa,oBAAoB,GAAGG,EAAE,qBAAqB,CAACH,EAAE,IAAI,WAAW,CAAC,OAAO,KAAK,IAAI,mBAAmB,CAAC,OAAO,KAAK,IAAI,eAAe,UAAU,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,UAAUF,EAAEG,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMC,EAAE,KAAK,IAAI,KAAKJ,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,IAAI,UAAUJ,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,IAAI,QAAQJ,EAAEG,EAAEE,EAAEJ,EAAEC,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,IAAMF,EAAE,KAAK,IAAI,OAAOF,EAAEG,EAAEE,EAAEJ,EAAE,CAAC,OAAO,KAAK,KAAKC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,IAAMG,EAAE,KAAK,IAAI,WAAWL,EAAEG,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,IAAI,QAAQL,EAAEG,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAMG,EAAE,KAAK,IAAI,IAAIR,EAAEG,EAAEE,EAAEJ,EAAEC,EAAEE,EAAEE,EAAEC,EAAE,CAAC,OAAO,KAAK,KAAKC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAMH,EAAE,KAAK,IAAI,MAAML,EAAEG,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAMA,EAAE,KAAK,IAAI,KAAKL,EAAEG,EAAE,CAAC,OAAO,KAAK,KAAKE,EAAE,GAAM,EAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,GAAGL,EAAEG,EAAE,CAAC,KAAK,EAAE,IAAI,IAAI,GAAGH,EAAEG,EAAE,CAAC,UAAU,GAAG,IAAI,GAAGH,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,CCsCxk2B,EAA8B,EAAO,MAAO,EAAQ,EAAM,IAAa,CACzE,IAAI,EACE,EAAgB,EAAK,eAAiB,EAAS,GAAY,EAAE,WAAW,CAC9E,AACE,EADG,GACU,eAIf,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CACzF,EAAU,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,QAAQ,CAAC,KAAK,QAAS,EAAoB,EAAK,WAAW,CAAC,CAC3G,EACJ,AAGE,EAHE,EAAK,QAAU,IAAK,GACd,GAEA,OAAO,EAAK,OAAU,SAAW,EAAK,MAAQ,EAAK,MAAM,GAEnE,IAAM,EAAQ,MAAM,EAAW,EAAS,EAAa,EAAe,EAAM,CAAE,GAAY,CAAC,CAAE,CACzF,gBACA,MAAO,EAAK,OAAS,GAAY,CAAC,WAAW,cAE7C,WAAY,sBACZ,MAAO,EAAK,WACZ,iBAAkB,CAAC,CAAC,EAAK,MAAQ,CAAC,CAAC,EAAK,IACzC,CAAC,CACE,EAAO,EAAM,SAAS,CACpB,GAAe,GAAM,SAAW,GAAK,EAC3C,GAAI,EAAe,CACjB,IAAM,EAAM,EAAM,SAAS,GACrB,EAAK6B,EAAO,EAAM,CAClB,EAAS,EAAI,qBAAqB,MAAM,CAC9C,GAAI,EAAQ,CACV,IAAM,EAAY,EAAM,QAAQ,cAAe,GAAG,CAAC,MAAM,GAAK,GAC9D,MAAM,QAAQ,IACZ,CAAC,GAAG,EAAO,CAAC,IACT,GAAQ,IAAI,QAAS,GAAQ,CAC5B,SAAS,GAAa,CAGpB,GAFA,EAAI,MAAM,QAAU,OACpB,EAAI,MAAM,cAAgB,SACtB,EAAW,CACb,GAEM,CAAC,EAAqB,EAAsB,UAAY,EAFzC,GAAY,CAAC,SAAW,GAAY,CAAC,SAAW,OAAO,iBAAiB,SAAS,KAAK,CAAC,SAEnB,CACnF,EAAQ,EAAqB,EAAkB,KACrD,EAAI,MAAM,SAAW,EACrB,EAAI,MAAM,SAAW,OAErB,EAAI,MAAM,MAAQ,OAEpB,EAAI,EAAI,CAEV,EAAO,EAAY,aAAa,CAChC,eAAiB,CACX,EAAI,UACN,GAAY,EAEd,CACF,EAAI,iBAAiB,QAAS,EAAW,CACzC,EAAI,iBAAiB,OAAQ,EAAW,EACxC,CACH,CACF,CAEH,EAAO,EAAI,uBAAuB,CAClC,EAAG,KAAK,QAAS,EAAK,MAAM,CAC5B,EAAG,KAAK,SAAU,EAAK,OAAO,CAWhC,OATI,EACF,EAAQ,KAAK,YAAa,aAAe,CAAC,EAAK,MAAQ,EAAI,KAAO,CAAC,EAAK,OAAS,EAAI,IAAI,CAEzF,EAAQ,KAAK,YAAa,gBAAkB,CAAC,EAAK,OAAS,EAAI,IAAI,CAEjE,EAAK,aACP,EAAQ,KAAK,YAAa,aAAe,CAAC,EAAK,MAAQ,EAAI,KAAO,CAAC,EAAK,OAAS,EAAI,IAAI,CAE3F,EAAQ,OAAO,OAAQ,eAAe,CAC/B,CAAE,WAAU,OAAM,cAAa,MAAO,EAAS,EACrD,cAAc,CACb,GAA8B,EAAO,MAAO,EAAQ,EAAO,IAAY,CACzE,IAAM,EAAgB,EAAQ,eAAiB,EAAS,GAAY,EAAE,WAAW,WAAW,CACtF,EAAU,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,QAAQ,CAAC,KAAK,QAAS,EAAQ,YAAc,GAAG,CAC3F,EAAQ,MAAM,EAAW,EAAS,EAAa,EAAe,EAAM,CAAE,GAAY,CAAC,CAAE,CACzF,gBACA,MAAO,EAAQ,OAAS,GAAY,EAAE,WAAW,cACjD,MAAO,EAAQ,WACf,iBAAkB,CAAC,CAAC,EAAQ,MAAQ,CAAC,CAAC,EAAQ,IAC/C,CAAC,CACE,EAAO,EAAM,SAAS,CACpB,EAAc,EAAQ,QAAU,EACtC,GAAI,EAAS,GAAY,EAAE,WAAW,WAAW,CAAE,CACjD,IAAM,EAAM,EAAM,SAAS,GACrB,EAAKA,EAAO,EAAM,CACxB,EAAO,EAAI,uBAAuB,CAClC,EAAG,KAAK,QAAS,EAAK,MAAM,CAC5B,EAAG,KAAK,SAAU,EAAK,OAAO,CAWhC,OATI,EACF,EAAQ,KAAK,YAAa,aAAe,CAAC,EAAK,MAAQ,EAAI,KAAO,CAAC,EAAK,OAAS,EAAI,IAAI,CAEzF,EAAQ,KAAK,YAAa,gBAAkB,CAAC,EAAK,OAAS,EAAI,IAAI,CAEjE,EAAQ,aACV,EAAQ,KAAK,YAAa,aAAe,CAAC,EAAK,MAAQ,EAAI,KAAO,CAAC,EAAK,OAAS,EAAI,IAAI,CAE3F,EAAQ,OAAO,OAAQ,eAAe,CAC/B,CAAE,SAAU,EAAQ,OAAM,cAAa,MAAO,EAAS,EAC7D,cAAc,CACb,EAAmC,GAAQ,EAAM,IAAY,CAC/D,IAAM,EAAO,EAAQ,MAAM,CAAC,SAAS,CACrC,EAAK,MAAQ,EAAK,MAClB,EAAK,OAAS,EAAK,QAClB,mBAAmB,CAClB,EAAiC,GAAQ,EAAM,KAAW,EAAK,OAAS,YAAc,aAAe,QAAU,IAAM,EAAK,WAAa,KAAO,GAAS,IAAK,iBAAiB,CACjL,SAAS,EAAqB,EAAQ,CACpC,IAAM,EAAe,EAAO,KAAK,EAAG,IAAM,GAAGC,IAAM,EAAI,IAAM,MAAMC,EAAE,EAAE,GAAGA,EAAE,IAAI,CAEhF,OADA,EAAa,KAAK,IAAI,CACf,EAAa,KAAK,IAAI,CAE/B,EAAO,EAAsB,uBAAuB,CACpD,SAAS,EAA2B,EAAI,EAAI,EAAI,EAAI,EAAW,EAAW,CACxE,IAAM,EAAS,EAAE,CAEX,EAAS,EAAK,EACd,EAAS,EAAK,EACd,EAAc,EAAS,EACvB,EAAY,EAAI,KAAK,GAAK,EAC1B,EAAO,EAAK,EAAS,EAC3B,IAAK,IAAID,EAAI,EAAGA,GAAK,GAAO,IAAK,CAE/B,IAAME,EAAI,EADAF,EAAI,GACK,EACbG,EAAI,EAAO,EAAY,KAAK,IAAI,GAAaD,EAAI,GAAI,CAC3D,EAAO,KAAK,CAAE,EAAA,EAAG,EAAA,EAAG,CAAC,CAEvB,OAAO,EAET,EAAO,EAA4B,6BAA6B,CAChE,SAAS,GAAqB,EAAS,EAAS,EAAQ,EAAW,EAAY,EAAU,CACvF,IAAM,EAAS,EAAE,CACX,EAAgB,EAAa,KAAK,GAAK,IAGvC,GAFc,EAAW,KAAK,GAAK,IACR,IACD,EAAY,GAC5C,IAAK,IAAIF,EAAI,EAAGA,EAAI,EAAW,IAAK,CAClC,IAAM,EAAQ,EAAgBA,EAAI,EAC5BE,EAAI,EAAU,EAAS,KAAK,IAAI,EAAM,CACtCC,EAAI,EAAU,EAAS,KAAK,IAAI,EAAM,CAC5C,EAAO,KAAK,CAAE,EAAG,CAACD,EAAG,EAAG,CAACC,EAAG,CAAC,CAE/B,OAAO,EAET,EAAO,GAAsB,uBAAuB,CA8BpD,IAAI,GAvBgC,GAAQ,EAAM,IAAU,CAC1D,IAAID,EAAI,EAAK,EACTC,EAAI,EAAK,EACT,EAAK,EAAM,EAAID,EACf,EAAK,EAAM,EAAIC,EACfC,EAAI,EAAK,MAAQ,EACjBC,EAAI,EAAK,OAAS,EAClB,EAAI,EAcR,OAbI,KAAK,IAAI,EAAG,CAAGD,EAAI,KAAK,IAAI,EAAG,CAAGC,GAChC,EAAK,IACP,EAAI,CAACA,GAEP,EAAK,IAAO,EAAI,EAAIA,EAAI,EAAK,EAC7B,EAAKA,IAED,EAAK,IACP,EAAI,CAACD,GAEP,EAAKA,EACL,EAAK,IAAO,EAAI,EAAIA,EAAI,EAAK,GAExB,CAAE,EAAGF,EAAI,EAAI,EAAGC,EAAI,EAAI,EAC9B,gBAAgB,CAKnB,SAAS,GAAW,EAAK,EAAS,CAC5B,GACF,EAAI,KAAK,QAAS,EAAQ,CAG9B,EAAO,GAAY,aAAa,CAChC,eAAe,GAAa,EAAM,CAChC,IAAM,EAAKG,EAAQ,SAAS,gBAAgB,6BAA8B,gBAAgB,CAAC,CACrF,EAAM,EAAG,OAAO,YAAY,CAC5B,EAAS,GAAY,CACvB,EAAQ,EAAK,MACb,EAAK,OAAS,EAAS,EAAK,MAAM,GACpC,EAAQ,MAAM,EAAqB,EAAK,MAAM,QAAQ,EAAe,eAAgB;EAAK,CAAE,EAAO,EAGrG,IAAM,EAAY,iBADC,EAAK,OAAS,YAAc,aACE,MAAQ,EAAK,WAAa,UAAY,EAAK,WAAa,IAAM,IAC/G,IAAM,EAAQ,UAOd,OANA,EAAI,KAAK,EAAa,EAAW,EAAO,CAAC,CACzC,GAAW,EAAK,EAAK,WAAW,CAChC,EAAI,MAAM,UAAW,eAAe,CACpC,EAAI,MAAM,gBAAiB,MAAM,CACjC,EAAI,MAAM,cAAe,SAAS,CAClC,EAAI,KAAK,QAAS,+BAA+B,CAC1C,EAAG,MAAM,CAElB,EAAO,GAAc,eAAe,CA8CpC,IAAI,GA7C8B,EAAO,MAAO,EAAa,EAAO,EAAS,IAAW,CACtF,IAAI,EAAa,GAAe,GAIhC,GAHI,OAAO,GAAe,WACxB,EAAa,EAAW,IAEtB,EAAS,GAAY,CAAC,UAAU,WAAW,CAY7C,MAXA,GAAa,EAAW,QAAQ,UAAW,SAAS,CACpD,EAAI,KAAK,aAAe,EAAW,CASlB,MAAM,GARV,CACX,SACA,MAAO,EAAe,EAAW,CAAC,QAChC,uBACC,GAAM,aAAaC,EAAE,QAAQ,IAAK,IAAI,CAAC,QACzC,CACD,WAAY,GAAQ,EAAM,QAAQ,QAAS,SAAS,CACrD,CACwC,CAEpC,CACL,IAAM,EAAW,SAAS,gBAAgB,6BAA8B,OAAO,CAC/E,EAAS,aAAa,QAAS,EAAM,QAAQ,SAAU,QAAQ,CAAC,CAChE,IAAI,EAAO,EAAE,CACb,AAKE,EALE,OAAO,GAAe,SACjB,EAAW,MAAM,sBAAsB,CACrC,MAAM,QAAQ,EAAW,CAC3B,EAEA,EAAE,CAEX,IAAK,IAAM,KAAO,EAAM,CACtB,IAAM,EAAQ,SAAS,gBAAgB,6BAA8B,QAAQ,CAC7E,EAAM,eAAe,uCAAwC,YAAa,WAAW,CACrF,EAAM,aAAa,KAAM,MAAM,CAC/B,EAAM,aAAa,IAAK,IAAI,CACxB,EACF,EAAM,aAAa,QAAS,YAAY,CAExC,EAAM,aAAa,QAAS,MAAM,CAEpC,EAAM,YAAc,EAAI,MAAM,CAC9B,EAAS,YAAY,EAAM,CAE7B,OAAO,IAER,cAAc,CAIb,EAAyC,GAAQ,EAAG,EAAG,EAAY,EAAa,IAAW,CAC7F,IACAL,EAAI,EACJC,EAEA,IACAD,EAAI,EAAa,EAEjB,IACA,EACA,EACA,EACA,EACA,EACAA,EAAI,EACJC,EAAI,EAEJ,IACAA,EAAI,EAAc,EAElB,IACA,EACA,EACA,EACA,EACA,EACAD,EAAI,EAAa,EACjBC,EAAI,EAEJ,IACAD,EAAI,EAEJ,IACA,EACA,EACA,EACA,EACA,EACAA,EACAC,EAAI,EAAc,EAElB,IACAA,EAAI,EAEJ,IACA,EACA,EACA,EACA,EACA,EACAD,EAAI,EACJC,EAEA,IAED,CAAC,KAAK,IAAI,CAAE,yBAAyB,CAGlC,GAAuB,EAAO,MAAO,EAAQ,IAAS,CACxD,EAAI,KAAK,8BAA+B,EAAK,GAAI,EAAK,CACtD,IAAM,EAAa,GAAY,CACzB,CAAE,iBAAgB,iBAAkB,EACpC,CAAE,aAAY,iBAAkB,EAChC,CAAE,cAAa,aAAY,eAAc,oBAAqB,EAAc,EAAK,CACjF,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,WAAa,EAAK,WAAW,CAAC,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,YAAa,EAAK,KAAK,CAC1H,EAAgB,EAAS,EAAW,UAAU,WAAW,CACzD,EAAU,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,iBAAiB,CAC9D,EAAQ,MAAM,EAAW,EAAS,EAAK,MAAO,CAClD,MAAO,EAAK,WACZ,gBACA,OAAQ,GACT,CAAC,CACE,EAAO,EAAM,SAAS,CAC1B,GAAI,EAAS,EAAW,UAAU,WAAW,CAAE,CAC7C,IAAM,EAAM,EAAM,SAAS,GACrB,EAAKK,EAAQ,EAAM,CACzB,EAAO,EAAI,uBAAuB,CAClC,EAAG,KAAK,QAAS,EAAK,MAAM,CAC5B,EAAG,KAAK,SAAU,EAAK,OAAO,CAEhC,IAAM,EAAQ,EAAK,OAAS,EAAK,MAAQ,EAAK,QAAU,EAAK,MAAQ,EAAK,QAAU,EAAK,MACrF,EAAK,OAAS,EAAK,MAAQ,EAAK,QAClC,EAAK,MAAQ,EAAQ,EAAK,OAAS,EAAI,EAAK,QAE5C,EAAK,KAAO,CAAC,EAAK,QAEpB,IAAM,EAAS,EAAK,OACdN,EAAI,EAAK,EAAI,EAAQ,EACrBC,EAAI,EAAK,EAAI,EAAS,EAC5B,EAAI,MAAM,QAAS,EAAM,KAAK,UAAU,EAAK,CAAC,CAC9C,IAAI,EACJ,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKM,EAAM,IAAI,EAAS,CACxB,EAAU,EAAkB,EAAM,CACtC,UAAW,GACX,KAAM,EAEN,OAAQ,EACR,WAAY,EACZ,KAAM,EACP,CAAC,CACI,EAAY,EAAG,KAAK,EAAuBP,EAAGC,EAAG,EAAO,EAAQ,EAAE,CAAE,EAAQ,CAClF,EAAQ,EAAS,YACf,EAAI,MAAM,wBAAyB,EAAU,CACtC,GACN,eAAe,CAClB,EAAM,OAAO,oBAAoB,CAAC,KAAK,QAAS,EAAa,KAAK,IAAI,CAAC,CACvE,EAAM,OAAO,OAAO,CAAC,KAAK,QAAS,EAAiB,KAAK,IAAI,CAAC,QAAQ,OAAQ,SAAS,CAAC,MAExF,EAAQ,EAAS,OAAO,OAAQ,eAAe,CAC/C,EAAM,KAAK,QAAS,EAAW,CAAC,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,IAAKD,EAAE,CAAC,KAAK,IAAKC,EAAE,CAAC,KAAK,QAAS,EAAM,CAAC,KAAK,SAAU,EAAO,CAE/I,GAAM,CAAE,0BAA2B,EAAwB,EAAW,CAMtE,GALA,EAAQ,KACN,YAEA,aAAa,EAAK,EAAI,EAAK,MAAQ,EAAE,IAAI,EAAK,EAAI,EAAK,OAAS,EAAI,EAAuB,GAC5F,CACG,EAAa,CACf,IAAM,EAAO,EAAQ,OAAO,OAAO,CAC/B,GACF,EAAK,KAAK,QAAS,EAAY,CAGnC,IAAM,EAAU,EAAM,MAAM,CAAC,SAAS,CAQtC,MAPA,GAAK,QAAU,EACf,EAAK,MAAQ,EAAQ,MACrB,EAAK,OAAS,EAAQ,OACtB,EAAK,QAAU,EAAK,OAAS,EAAK,QAAU,EAC5C,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,GAAuB,EAAM,EAAM,EAErC,CAAE,QAAS,EAAU,UAAW,EAAM,EAC5C,OAAO,CA0MN,GAAS,CACX,QACA,WAHe,GAIf,iBA9LqC,EAAO,MAAO,EAAQ,IAAS,CACpE,IAAM,EAAa,GAAY,CACzB,CAAE,iBAAgB,iBAAkB,EACpC,CAAE,gBAAe,sBAAqB,2BAA0B,cAAe,EAC/E,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAK,WAAW,CAAC,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,UAAW,EAAK,GAAG,CAAC,KAAK,YAAa,EAAK,KAAK,CACtI,EAAa,EAAS,OAAO,IAAK,eAAe,CACjD,EAAQ,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,gBAAgB,CAC7D,EAAY,EAAS,OAAO,OAAO,CACjC,EAAQ,EAAM,MAAM,CAAC,YAAY,MAAM,GAAoB,EAAK,MAAO,EAAK,WAAY,IAAK,GAAG,GAAK,CAAC,CACxG,EAAO,EAAM,SAAS,CAC1B,GAAI,EAAS,EAAW,UAAU,WAAW,CAAE,CAC7C,IAAM,EAAM,EAAM,SAAS,GACrB,EAAKK,EAAQ,EAAM,CACzB,EAAO,EAAI,uBAAuB,CAClC,EAAG,KAAK,QAAS,EAAK,MAAM,CAC5B,EAAG,KAAK,SAAU,EAAK,OAAO,CAEhC,IAAM,EAAU,EAAI,EAAK,QACnB,EAAc,EAAU,EACxB,GAAS,EAAK,OAAS,EAAK,MAAQ,EAAK,QAAU,EAAK,MAAQ,EAAK,QAAU,EAAK,OAAS,EAC/F,EAAK,OAAS,EAAK,MAAQ,EAAK,QAClC,EAAK,MAAQ,EAAQ,EAAK,OAAS,EAAI,EAAK,QAE5C,EAAK,KAAO,CAAC,EAAK,QAEpB,IAAM,EAAS,EAAK,OAAS,EACvB,EAAc,EAAK,OAAS,EAAU,EAAK,OAAS,EACpDN,EAAI,EAAK,EAAI,EAAQ,EACrBC,EAAI,EAAK,EAAI,EAAS,EAC5B,EAAK,MAAQ,EACb,IAAM,EAAS,EAAK,EAAI,EAAK,OAAS,EAAI,EAAc,EAAK,OAAS,EAClE,EACJ,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAQ,EAAK,WAAW,SAAS,2BAA2B,CAC5D,EAAKM,EAAM,IAAI,EAAS,CACxB,EAAiB,EAAK,IAAM,EAAK,GAAK,EAAG,KAAK,EAAuBP,EAAGC,EAAG,EAAO,EAAQ,GAAG,CAAE,CACnG,UAAW,GACX,KAAM,EACN,UAAW,QACX,OAAQ,EACR,KAAM,EACP,CAAC,CAAG,EAAG,UAAUD,EAAGC,EAAG,EAAO,EAAQ,CAAE,KAAM,EAAe,CAAC,CAC/D,EAAQ,EAAS,WAAa,EAAgB,eAAe,CAC7D,IAAM,EAAiB,EAAG,UAAUD,EAAG,EAAQ,EAAO,EAAa,CACjE,KAAM,EAAQ,EAAgB,EAC9B,UAAW,EAAQ,UAAY,QAC/B,OAAQ,EACR,KAAM,EACP,CAAC,CACF,EAAQ,EAAS,WAAa,EAAgB,eAAe,CAC7D,EAAY,EAAS,WAAa,EAAe,MAEjD,EAAQ,EAAW,OAAO,OAAQ,eAAe,CAEjD,EAAM,KAAK,QADY,QACY,CAAC,KAAK,IAAKA,EAAE,CAAC,KAAK,IAAKC,EAAE,CAAC,KAAK,QAAS,EAAM,CAAC,KAAK,SAAU,EAAO,CAAC,KAAK,YAAa,EAAK,KAAK,CACtI,EAAU,KAAK,QAAS,QAAQ,CAAC,KAAK,IAAKD,EAAE,CAAC,KAAK,IAAK,EAAO,CAAC,KAAK,QAAS,EAAM,CAAC,KAAK,SAAU,EAAY,CAclH,OAZA,EAAM,KACJ,YACA,aAAa,EAAK,EAAI,EAAK,MAAQ,EAAE,IAAIC,EAAI,GAAK,EAAS,EAAW,UAAU,WAAW,CAAG,EAAI,GAAG,GACtG,CAED,EAAK,OADW,EAAM,MAAM,CAAC,SAAS,CAChB,OACtB,EAAK,QAAU,EACf,EAAK,QAAU,EAAK,OAAS,EAAK,QAAU,EAC5C,EAAK,UAAY,EACjB,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,GAAuB,EAAM,EAAM,EAErC,CAAE,QAAS,EAAU,UAAW,EAAM,EAC5C,mBAAmB,CAyHpB,UA7M8B,GAAQ,EAAQ,IAAS,CACvD,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,eAAe,CAAC,KAAK,KAAM,EAAK,GAAG,CAC/E,EAAQ,EAAS,OAAO,OAAQ,eAAe,CAC/C,EAAU,EAAI,EAAK,QACnB,EAAc,EAAU,EAC9B,EAAM,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,IAAK,EAAK,EAAI,EAAK,MAAQ,EAAI,EAAY,CAAC,KAAK,IAAK,EAAK,EAAI,EAAK,OAAS,EAAI,EAAY,CAAC,KAAK,QAAS,EAAK,MAAQ,EAAQ,CAAC,KAAK,SAAU,EAAK,OAAS,EAAQ,CAAC,KAAK,OAAQ,OAAO,CAC/O,IAAM,EAAU,EAAM,MAAM,CAAC,SAAS,CAMtC,MALA,GAAK,MAAQ,EAAQ,MACrB,EAAK,OAAS,EAAQ,OACtB,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,GAAuB,EAAM,EAAM,EAErC,CAAE,QAAS,EAAU,UAAW,CAAE,MAAO,EAAG,OAAQ,EAAG,CAAE,EAC/D,YAAY,CAiMb,QA5C4B,GAAQ,EAAQ,IAAS,CAErD,GAAM,CAAE,iBAAgB,iBADL,GAAY,CAEzB,CAAE,cAAe,EACjB,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAK,WAAW,CAAC,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,YAAa,EAAK,KAAK,CAC7G,EAAa,EAAS,OAAO,IAAK,eAAe,CACjD,EAAU,EAAI,EAAK,QACnB,EAAQ,EAAK,MAAQ,EAC3B,EAAK,KAAO,CAAC,EAAK,QAClB,IAAM,EAAS,EAAK,OAAS,EACvBD,EAAI,EAAK,EAAI,EAAQ,EACrBC,EAAI,EAAK,EAAI,EAAS,EAC5B,EAAK,MAAQ,EACb,IAAI,EACJ,GAAI,EAAK,OAAS,YAAa,CAE7B,IAAM,EADKM,EAAM,IAAI,EAAS,CACJ,UAAUP,EAAGC,EAAG,EAAO,EAAQ,CACvD,KAAM,YACN,UAAW,GACX,eAAgB,CAAC,EAAE,CACnB,OAAQ,EACR,KAAM,EACP,CAAC,CACF,EAAQ,EAAS,WAAa,EAAgB,eAAe,MAE7D,EAAQ,EAAW,OAAO,OAAQ,eAAe,CAEjD,EAAM,KAAK,QADY,UACY,CAAC,KAAK,IAAKD,EAAE,CAAC,KAAK,IAAKC,EAAE,CAAC,KAAK,QAAS,EAAM,CAAC,KAAK,SAAU,EAAO,CAAC,KAAK,YAAa,EAAK,KAAK,CASxI,MANA,GAAK,OADW,EAAM,MAAM,CAAC,SAAS,CAChB,OACtB,EAAK,QAAU,EACf,EAAK,QAAU,EACf,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,GAAuB,EAAM,EAAM,EAErC,CAAE,QAAS,EAAU,UAAW,EAAE,CAAE,EAC1C,UAAU,CAQX,cA1HkC,EAAO,MAAO,EAAQ,IAAS,CACjE,EAAI,KAAK,8BAA+B,EAAK,GAAI,EAAK,CACtD,IAAM,EAAa,GAAY,CACzB,CAAE,iBAAgB,iBAAkB,EACpC,CAAE,aAAY,iBAAkB,EAChC,CAAE,cAAa,aAAY,eAAc,oBAAqB,EAAc,EAAK,CACjF,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,WAAa,EAAK,WAAW,CAAC,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,YAAa,EAAK,KAAK,CAC1H,EAAgB,EAAS,EAAW,UAAU,WAAW,CACzD,EAAU,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,iBAAiB,CAC9D,EAAQ,MAAM,EAAW,EAAS,EAAK,MAAO,CAClD,MAAO,EAAK,WACZ,gBACA,OAAQ,GACR,MAAO,EAAK,MACb,CAAC,CACE,EAAO,EAAM,SAAS,CAC1B,GAAI,EAAS,EAAW,UAAU,WAAW,CAAE,CAC7C,IAAM,EAAM,EAAM,SAAS,GACrB,EAAKK,EAAQ,EAAM,CACzB,EAAO,EAAI,uBAAuB,CAClC,EAAG,KAAK,QAAS,EAAK,MAAM,CAC5B,EAAG,KAAK,SAAU,EAAK,OAAO,CAEhC,IAAM,EAAQ,EAAK,OAAS,EAAK,MAAQ,EAAK,QAAU,EAAK,MAAQ,EAAK,QAAU,EAAK,MACrF,EAAK,OAAS,EAAK,MAAQ,EAAK,QAClC,EAAK,MAAQ,EAAQ,EAAK,OAAS,EAAI,EAAK,QAE5C,EAAK,KAAO,CAAC,EAAK,QAEpB,IAAM,EAAS,EAAK,OACdN,EAAI,EAAK,EAAI,EAAQ,EACrBC,EAAI,EAAK,EAAI,EAAS,EAC5B,EAAI,MAAM,QAAS,EAAM,KAAK,UAAU,EAAK,CAAC,CAC9C,IAAI,EACJ,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKM,EAAM,IAAI,EAAS,CACxB,EAAU,EAAkB,EAAM,CACtC,UAAW,GACX,KAAM,EAEN,OAAQ,EACR,WAAY,EACZ,KAAM,EACP,CAAC,CACI,EAAY,EAAG,KAAK,EAAuBP,EAAGC,EAAG,EAAO,EAAQ,EAAK,GAAG,CAAE,EAAQ,CACxF,EAAQ,EAAS,YACf,EAAI,MAAM,wBAAyB,EAAU,CACtC,GACN,eAAe,CAClB,EAAM,OAAO,oBAAoB,CAAC,KAAK,QAAS,EAAa,KAAK,IAAI,CAAC,CACvE,EAAM,OAAO,OAAO,CAAC,KAAK,QAAS,EAAiB,KAAK,IAAI,CAAC,QAAQ,OAAQ,SAAS,CAAC,MAExF,EAAQ,EAAS,OAAO,OAAQ,eAAe,CAC/C,EAAM,KAAK,QAAS,EAAW,CAAC,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,KAAM,EAAK,GAAG,CAAC,KAAK,IAAKD,EAAE,CAAC,KAAK,IAAKC,EAAE,CAAC,KAAK,QAAS,EAAM,CAAC,KAAK,SAAU,EAAO,CAE/I,GAAM,CAAE,0BAA2B,EAAwB,EAAW,CAMtE,GALA,EAAQ,KACN,YAEA,aAAa,EAAK,EAAI,EAAK,MAAQ,EAAE,IAAI,EAAK,EAAI,EAAK,OAAS,EAAI,EAAuB,GAC5F,CACG,EAAa,CACf,IAAM,EAAO,EAAQ,OAAO,OAAO,CAC/B,GACF,EAAK,KAAK,QAAS,EAAY,CAGnC,IAAM,EAAU,EAAM,MAAM,CAAC,SAAS,CAQtC,MAPA,GAAK,QAAU,EACf,EAAK,MAAQ,EAAQ,MACrB,EAAK,OAAS,EAAQ,OACtB,EAAK,QAAU,EAAK,OAAS,EAAK,QAAU,EAC5C,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,GAAuB,EAAM,EAAM,EAErC,CAAE,QAAS,EAAU,UAAW,EAAM,EAC5C,gBAAgB,CA+ClB,CACG,GAA+B,IAAI,IACnC,GAAgC,EAAO,MAAO,EAAM,IAAS,CAE/D,IAAM,EAAU,MAAM,GADR,EAAK,OAAS,QACQ,EAAM,EAAK,CAE/C,OADA,GAAa,IAAI,EAAK,GAAI,EAAQ,CAC3B,GACN,gBAAgB,CACf,GAAwB,MAAa,CACvC,GAA+B,IAAI,KAClC,QAAQ,CAGX,SAAS,GAAc,EAAM,EAAO,CAClC,OAAO,EAAK,UAAU,EAAM,CAE9B,EAAO,GAAe,gBAAgB,CACtC,IAAI,GAAyB,GAG7B,SAAS,GAAiB,EAAM,EAAI,EAAI,EAAO,CAC7C,IAAI,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EAAM,EAChB,EAAK,EAAK,EAAM,EAChB,EAAM,KAAK,KAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAG,CACtD,EAAK,KAAK,IAAI,EAAK,EAAK,EAAK,EAAI,CACjC,EAAM,EAAI,IACZ,EAAK,CAAC,GAER,IAAI,EAAK,KAAK,IAAI,EAAK,EAAK,EAAK,EAAI,CAIrC,OAHI,EAAM,EAAI,IACZ,EAAK,CAAC,GAED,CAAE,EAAG,EAAK,EAAI,EAAG,EAAK,EAAI,CAEnC,EAAO,GAAkB,mBAAmB,CAC5C,IAAI,GAA4B,GAGhC,SAAS,GAAgB,EAAM,EAAI,EAAO,CACxC,OAAO,GAA0B,EAAM,EAAI,EAAI,EAAM,CAEvD,EAAO,GAAiB,kBAAkB,CAC1C,IAAI,GAA2B,GAG/B,SAAS,GAAc,EAAI,EAAI,EAAI,EAAI,CACrC,CACE,IAAM,EAAK,EAAG,EAAI,EAAG,EACf,EAAK,EAAG,EAAI,EAAG,EACf,EAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAC7B,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAAI,EAC7B,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAAI,EAC7B,EAAU,KAChB,GAAI,IAAO,GAAK,IAAO,GAAK,GAAS,EAAI,EAAG,CAC1C,OAEF,IAAM,EAAK,EAAG,EAAI,EAAG,EACf,EAAK,EAAG,EAAI,EAAG,EACf,EAAK,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAC7B,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAAI,EAC7B,EAAK,EAAK,EAAG,EAAI,EAAK,EAAG,EAAI,EACnC,GAAI,KAAK,IAAI,EAAG,CAAG,GAAW,KAAK,IAAI,EAAG,CAAG,GAAW,GAAS,EAAI,EAAG,CACtE,OAEF,IAAM,EAAQ,EAAK,EAAK,EAAK,EAC7B,GAAI,IAAU,EACZ,OAEF,IAAM,EAAS,KAAK,IAAI,EAAQ,EAAE,CAC9B,EAAM,EAAK,EAAK,EAAK,EACnBD,EAAI,EAAM,GAAK,EAAM,GAAU,GAAS,EAAM,GAAU,EAG9D,MAFA,GAAM,EAAK,EAAK,EAAK,EAEd,CAAE,EAAA,EAAG,EADF,EAAM,GAAK,EAAM,GAAU,GAAS,EAAM,GAAU,EAC/C,EAGnB,EAAO,GAAe,gBAAgB,CACtC,SAAS,GAAS,EAAI,EAAI,CACxB,OAAO,EAAK,EAAK,EAEnB,EAAO,GAAU,WAAW,CAC5B,IAAI,GAAyB,GAG7B,SAAS,GAAiB,EAAM,EAAY,EAAO,CACjD,IAAI,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAgB,EAAE,CAClB,EAAO,IACP,EAAO,IACP,OAAO,EAAW,SAAY,WAChC,EAAW,QAAQ,SAAS,EAAO,CACjC,EAAO,KAAK,IAAI,EAAM,EAAM,EAAE,CAC9B,EAAO,KAAK,IAAI,EAAM,EAAM,EAAE,EAC9B,EAEF,EAAO,KAAK,IAAI,EAAM,EAAW,EAAE,CACnC,EAAO,KAAK,IAAI,EAAM,EAAW,EAAE,EAErC,IAAI,EAAO,EAAK,EAAK,MAAQ,EAAI,EAC7B,EAAM,EAAK,EAAK,OAAS,EAAI,EACjC,IAAK,IAAIF,EAAI,EAAGA,EAAI,EAAW,OAAQ,IAAK,CAC1C,IAAI,EAAK,EAAWA,GAChB,EAAK,EAAWA,EAAI,EAAW,OAAS,EAAIA,EAAI,EAAI,GACpD,EAAY,GACd,EACA,EACA,CAAE,EAAG,EAAO,EAAG,EAAG,EAAG,EAAM,EAAG,EAAG,CACjC,CAAE,EAAG,EAAO,EAAG,EAAG,EAAG,EAAM,EAAG,EAAG,CAClC,CACG,GACF,EAAc,KAAK,EAAU,CAiBjC,OAdK,EAAc,QAGf,EAAc,OAAS,GACzB,EAAc,KAAK,SAAS,EAAG,EAAG,CAChC,IAAI,EAAMC,EAAE,EAAI,EAAM,EAClB,EAAMA,EAAE,EAAI,EAAM,EAClB,EAAQ,KAAK,KAAK,EAAM,EAAM,EAAM,EAAI,CACxC,EAAMS,EAAE,EAAI,EAAM,EAClB,EAAMA,EAAE,EAAI,EAAM,EAClB,EAAQ,KAAK,KAAK,EAAM,EAAM,EAAM,EAAI,CAC5C,OAAO,EAAQ,EAAQ,GAAK,IAAU,EAAQ,EAAI,GAClD,CAEG,EAAc,IAbZ,EAeX,EAAO,GAAkB,mBAAmB,CAI5C,IAAI,EAAoB,CACtB,KAAM,GACN,OAAQ,GACR,QAAS,GACT,QAP8B,GAQ9B,KAAM,GACP,CAID,SAAS,GAAO,EAAQ,EAAM,CAC5B,GAAM,CAAE,eAAgB,EAAc,EAAK,CAC3C,EAAK,WAAa,EAClB,IAAM,EAAU,EAAe,EAAK,CAChC,EAAa,EACZ,IACH,EAAa,UAEf,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CAEzF,CAAE,aAAc,EAChB,EAAKC,EAAO,IAAI,EAAS,CACzB,EAAU,EAAkB,EAAM,CAAE,KAAM,QAAS,OAAQ,OAAQ,UAAW,QAAS,CAAC,CAC1F,EAAK,OAAS,cAChB,EAAQ,UAAY,GAEtB,IAAM,EAAY,EAAG,OAAO,EAAG,EAAG,EAAY,EAAQ,CAChD,EAAa,EAAS,WAAa,EAAW,eAAe,CAOnE,OANA,EAAW,KAAK,QAAS,SAAS,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,CAChF,EAAiB,EAAM,EAAW,CAClC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADA,EAAI,KAAK,mBAAoB,EAAM,EAAQ,EAAM,CAC1C,EAAkB,OAAO,EAAM,EAAQ,EAAM,EAE/C,EAET,EAAO,GAAQ,SAAS,CAIxB,SAAS,GAAkB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAW,CAC5D,IACM,GAAQ,EAAK,GAAM,EACnB,GAAQ,EAAK,GAAM,EACnB,EAAQ,KAAK,MAAM,EAAK,EAAI,EAAK,EAAG,CACpC,GAAM,EAAK,GAAM,EACjB,GAAM,EAAK,GAAM,EACjB,EAAe,EAAK,EACpB,EAAe,EAAK,EACpB,EAAW,KAAK,KAAK,GAAgB,EAAI,GAAgB,EAAE,CACjE,GAAI,EAAW,EACb,MAAU,MAAM,qEAAqE,CAEvF,IAAM,EAAuB,KAAK,KAAK,EAAI,GAAY,EAAE,CACnD,EAAU,EAAO,EAAuB,EAAK,KAAK,IAAI,EAAM,EAAI,EAAY,GAAK,GACjF,EAAU,EAAO,EAAuB,EAAK,KAAK,IAAI,EAAM,EAAI,EAAY,GAAK,GACjF,EAAa,KAAK,OAAO,EAAK,GAAW,GAAK,EAAK,GAAW,EAAG,CAEnE,EADa,KAAK,OAAO,EAAK,GAAW,GAAK,EAAK,GAAW,EAAG,CACzC,EACxB,GAAa,EAAa,IAC5B,GAAc,EAAI,KAAK,IAErB,CAAC,GAAa,EAAa,IAC7B,GAAc,EAAI,KAAK,IAEzB,IAAM,EAAS,EAAE,CACjB,IAAK,IAAIX,EAAI,EAAGA,EAAI,GAAW,IAAK,CAElC,IAAM,EAAS,EADLA,EAAK,GACiB,EAC1BE,EAAI,EAAU,EAAK,KAAK,IAAI,EAAO,CACnCC,EAAI,EAAU,EAAK,KAAK,IAAI,EAAO,CACzC,EAAO,KAAK,CAAE,EAAA,EAAG,EAAA,EAAG,CAAC,CAEvB,OAAO,EAET,EAAO,GAAmB,oBAAoB,CAC9C,eAAe,GAAW,EAAQ,EAAM,CACtC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1EC,EAAI,EAAK,MAAQ,EAAK,QAAU,GAChCC,EAAI,EAAK,OAAS,EAAK,QACvB,EAAKA,EAAI,EACT,EAAK,GAAM,IAAMA,EAAI,IACrB,CAAE,aAAc,EAChB,EAAS,CACb,CAAE,EAAGD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAG,CACvB,CAAE,EAAG,CAACD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAG,CACxB,GAAG,GAAkB,CAACD,EAAI,EAAG,CAACC,EAAI,EAAG,CAACD,EAAI,EAAGC,EAAI,EAAG,EAAI,EAAI,GAAM,CAClE,CAAE,EAAGD,EAAI,EAAG,EAAGC,EAAI,EAAG,CACtB,GAAG,GAAkBD,EAAI,EAAGC,EAAI,EAAGD,EAAI,EAAG,CAACC,EAAI,EAAG,EAAI,EAAI,GAAK,CAChE,CACK,EAAKO,EAAO,IAAI,EAAS,CACzB,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAiB,EAAqB,EAAO,CAC7C,EAAsB,EAAG,KAAK,EAAgB,EAAQ,CACtD,EAAkB,EAAS,WAAa,EAAqB,eAAe,CAclF,OAbA,EAAgB,KAAK,QAAS,wBAAwB,CAClD,GAAa,EAAK,OAAS,aAC7B,EAAgB,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAExD,GAAc,EAAK,OAAS,aAC9B,EAAgB,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAE7D,EAAgB,KAAK,YAAa,aAAa,EAAK,EAAE,MAAM,CAC5D,EAAiB,EAAM,EAAgB,CACvC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAY,aAAa,CAMhC,SAAS,EAAmB,EAAQ,EAAG,EAAG,EAAQ,CAChD,OAAO,EAAO,OAAO,UAAW,eAAe,CAAC,KAC9C,SACA,EAAO,IAAI,SAAS,EAAG,CACrB,OAAOC,EAAE,EAAI,IAAMA,EAAE,GACrB,CAAC,KAAK,IAAI,CACb,CAAC,KAAK,QAAS,kBAAkB,CAAC,KAAK,YAAa,aAAe,CAACT,EAAI,EAAI,IAAMC,EAAI,EAAI,IAAI,CAEjG,EAAO,EAAoB,qBAAqB,CAGhD,eAAe,GAAK,EAAQ,EAAM,CAChC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1EA,EAAI,EAAK,OAAS,EAAK,QAEvBD,EAAI,EAAK,MAAQ,EAAK,QAAU,GAEhC,EAAQA,EACR,EAAM,CAACC,EAEP,EAAS,CACb,CAAE,EAAG,GAAgB,EAAG,EAAK,CAC7B,CAAE,EAAG,EAAO,EAAG,EAAK,CACpB,CAAE,EAAG,EAAO,EAAG,EAAQ,CACvB,CAAE,EAAG,EAAM,EAAG,EAAQ,CACtB,CAAE,EAAG,EAAM,EAAG,EAAM,GAAS,CAC7B,CAAE,EAAG,GAAgB,EAAG,EAAK,CAC9B,CACG,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKS,EAAO,IAAI,EAAS,CACzB,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CAC5C,EAAU,EAAS,WAAa,EAAW,eAAe,CAAC,KAAK,YAAa,aAAa,CAACV,EAAI,EAAE,IAAIC,EAAI,EAAE,GAAG,CAC1G,GACF,EAAQ,KAAK,QAAS,EAAU,MAGlC,EAAU,EAAmB,EAAUD,EAAGC,EAAG,EAAO,CAStD,OAPI,GACF,EAAQ,KAAK,QAAS,EAAW,CAEnC,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAM,OAAO,CAIpB,SAAS,GAAO,EAAQ,EAAM,CAC5B,GAAM,CAAE,cAAe,EAAc,EAAK,CAC1C,EAAK,MAAQ,GACb,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAe,EAAK,CAAC,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CACnG,CAAE,aAAc,EAChBE,EAAI,KAAK,IAAI,GAAI,EAAK,OAAS,EAAE,CACjC,EAAS,CACb,CAAE,EAAG,EAAG,EAAGA,EAAI,EAAG,CAClB,CAAE,EAAGA,EAAI,EAAG,EAAG,EAAG,CAClB,CAAE,EAAG,EAAG,EAAG,CAACA,EAAI,EAAG,CACnB,CAAE,EAAG,CAACA,EAAI,EAAG,EAAG,EAAG,CACpB,CACK,EAAKQ,EAAO,IAAI,EAAS,CACzB,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAa,EAAqB,EAAO,CACzC,EAAY,EAAG,KAAK,EAAY,EAAQ,CACxC,EAAc,EAAS,WAAa,EAAW,eAAe,CAYpE,OAXI,GAAa,EAAK,OAAS,aAC7B,EAAY,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEpD,GAAc,EAAK,OAAS,aAC9B,EAAY,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAEzD,EAAK,MAAQ,GACb,EAAK,OAAS,GACd,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAQ,SAAS,CAIxB,eAAe,GAAO,EAAQ,EAAM,EAAS,CAC3C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,eAAgB,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACvF,EAAU,GAAS,SAAW,EAC9B,EAAS,EAAK,MAAQ,EAAI,EAC5B,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKC,EAAO,IAAI,EAAS,CACzB,EAAW,EAAkB,EAAM,EAAE,CAAC,CACtC,EAAY,EAAG,OAAO,EAAG,EAAG,EAAS,EAAG,EAAS,CACvD,EAAa,EAAS,WAAa,EAAW,eAAe,CAC7D,EAAW,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,MAE/F,EAAa,EAAS,OAAO,SAAU,eAAe,CAAC,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,IAAK,EAAO,CAAC,KAAK,KAAM,EAAE,CAAC,KAAK,KAAM,EAAE,CAWvK,OATA,EAAiB,EAAM,EAAW,CAClC,EAAK,cAAgB,SAAS,EAAQ,EAAO,CAC3C,IAAM,EAAU,EAAO,MAAQ,EAC/B,OAAO,EAAkB,OAAO,EAAQ,EAAS,EAAM,EAEzD,EAAK,UAAY,SAAS,EAAO,CAE/B,OADA,EAAI,KAAK,mBAAoB,EAAM,EAAQ,EAAM,CAC1C,EAAkB,OAAO,EAAM,EAAQ,EAAM,EAE/C,EAET,EAAO,GAAQ,SAAS,CAIxB,SAAS,GAAW,EAAG,CACrB,IAAM,EAAU,KAAK,IAAI,KAAK,GAAK,EAAE,CAC/B,EAAU,KAAK,IAAI,KAAK,GAAK,EAAE,CAC/B,EAAaC,EAAI,EACjB,EAAU,CAAE,EAAG,EAAa,EAAI,EAAS,EAAG,EAAa,EAAI,EAAS,CACtE,EAAU,CAAE,EAAG,EAAE,EAAa,GAAK,EAAS,EAAG,EAAa,EAAI,EAAS,CACzE,EAAU,CAAE,EAAG,EAAE,EAAa,GAAK,EAAS,EAAG,EAAE,EAAa,GAAK,EAAS,CAC5E,EAAU,CAAE,EAAG,EAAa,EAAI,EAAS,EAAG,EAAE,EAAa,GAAK,EAAS,CAC/E,MAAO,KAAK,EAAQ,EAAE,GAAG,EAAQ,EAAE,KAAK,EAAQ,EAAE,GAAG,EAAQ,EAAE;uBAC1C,EAAQ,EAAE,GAAG,EAAQ,EAAE,KAAK,EAAQ,EAAE,GAAG,EAAQ,IAExE,EAAO,GAAY,aAAa,CAChC,SAAS,GAAc,EAAQ,EAAM,CACnC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,EAAK,MAAQ,GACb,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAe,EAAK,CAAC,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CACnG,EAAS,KAAK,IAAI,GAAI,GAAM,OAAS,EAAE,CACvC,CAAE,aAAc,EAChB,EAAKC,EAAO,IAAI,EAAS,CACzB,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAa,EAAG,OAAO,EAAG,EAAG,EAAS,EAAG,EAAQ,CACjD,EAAW,GAAW,EAAO,CAC7B,EAAW,EAAG,KAAK,EAAU,EAAQ,CACrC,EAAiB,EAAS,WAAa,EAAY,eAAe,CAcxE,OAbA,EAAe,WAAa,EAAS,CACjC,GAAa,EAAK,OAAS,aAC7B,EAAe,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEvD,GAAc,EAAK,OAAS,aAC9B,EAAe,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAE5D,EAAiB,EAAM,EAAe,CACtC,EAAK,UAAY,SAAS,EAAO,CAG/B,OAFA,EAAI,KAAK,0BAA2B,EAAM,CAAE,SAAQ,QAAO,CAAC,CAChD,EAAkB,OAAO,EAAM,EAAQ,EAAM,EAGpD,EAET,EAAO,GAAe,gBAAgB,CAItC,SAAS,EAAsB,EAAS,EAAS,EAAQ,EAAY,IAAK,EAAa,EAAG,EAAW,IAAK,CACxG,IAAM,EAAS,EAAE,CACX,EAAgB,EAAa,KAAK,GAAK,IAGvC,GAFc,EAAW,KAAK,GAAK,IACR,IACD,EAAY,GAC5C,IAAK,IAAIlB,EAAI,EAAGA,EAAI,EAAW,IAAK,CAClC,IAAM,EAAQ,EAAgBA,EAAI,EAC5BE,EAAI,EAAU,EAAS,KAAK,IAAI,EAAM,CACtCC,EAAI,EAAU,EAAS,KAAK,IAAI,EAAM,CAC5C,EAAO,KAAK,CAAE,EAAG,CAACD,EAAG,EAAG,CAACC,EAAG,CAAC,CAE/B,OAAO,EAET,EAAO,EAAuB,uBAAuB,CACrD,eAAe,GAAe,EAAQ,EAAM,CAC1C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFC,EAAI,EAAK,OAAS,EAAK,SAAW,GAClCC,EAAI,EAAK,QAAU,EAAK,SAAW,GACnC,EAAS,KAAK,IAAI,EAAGA,EAAI,GAAI,CAC7B,CAAE,aAAc,EAChB,EAAS,CACb,GAAG,EAAsBD,EAAI,EAAG,CAACC,EAAI,EAAG,EAAQ,GAAI,IAAK,EAAE,CAC3D,CAAE,EAAG,CAACD,EAAI,EAAI,EAAQ,EAAG,EAAQ,CACjC,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,CAAC,EAAQ,EAAQ,GAAI,KAAM,KAAK,CAC7E,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,EAAQ,EAAQ,GAAI,IAAK,KAAK,CAC3E,CAAE,EAAG,CAACA,EAAI,EAAI,EAAQ,EAAG,CAACC,EAAI,EAAG,CACjC,GAAG,EAAsBD,EAAI,EAAGC,EAAI,EAAG,EAAQ,GAAI,EAAG,GAAG,CAC1D,CACK,EAAa,CACjB,CAAE,EAAGD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAQ,CAChC,CAAE,EAAG,CAACD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAQ,CACjC,GAAG,EAAsBD,EAAI,EAAG,CAACC,EAAI,EAAG,EAAQ,GAAI,IAAK,EAAE,CAC3D,CAAE,EAAG,CAACD,EAAI,EAAI,EAAQ,EAAG,CAAC,EAAQ,CAClC,GAAG,EAAsBA,EAAI,EAAIA,EAAI,GAAK,CAAC,EAAQ,EAAQ,GAAI,KAAM,KAAK,CAC1E,GAAG,EAAsBA,EAAI,EAAIA,EAAI,GAAK,EAAQ,EAAQ,GAAI,IAAK,KAAK,CACxE,CAAE,EAAG,CAACA,EAAI,EAAI,EAAQ,EAAGC,EAAI,EAAG,CAChC,GAAG,EAAsBD,EAAI,EAAGC,EAAI,EAAG,EAAQ,GAAI,EAAG,GAAG,CACzD,CAAE,EAAG,CAACD,EAAI,EAAG,EAAGC,EAAI,EAAI,EAAQ,CAChC,CAAE,EAAGD,EAAI,EAAG,EAAGC,EAAI,EAAI,EAAQ,CAChC,CACK,EAAKc,EAAO,IAAI,EAAS,CACzB,EAAU,EAAkB,EAAM,CAAE,KAAM,OAAQ,CAAC,CACrD,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAGtB,IAAM,EADqB,EAAqB,EAAO,CACV,QAAQ,IAAK,GAAG,CACvD,EAAqB,EAAG,KAAK,EAAmB,EAAQ,CACxD,EAAW,EAAqB,EAAW,CAC3C,EAAY,EAAG,KAAK,EAAU,CAAE,GAAG,EAAS,CAAC,CAC7C,EAAsB,EAAS,OAAO,IAAK,eAAe,CAoBhE,OAnBA,EAAoB,WAAa,EAAW,eAAe,CAAC,KAAK,iBAAkB,EAAE,CACrF,EAAoB,WAAa,EAAoB,eAAe,CACpE,EAAoB,KAAK,QAAS,OAAO,CACrC,GAAa,EAAK,OAAS,aAC7B,EAAoB,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAE5D,GAAc,EAAK,OAAS,aAC9B,EAAoB,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAEjE,EAAoB,KAAK,YAAa,aAAa,EAAO,MAAM,CAChE,EAAM,KACJ,YACA,aAAa,CAACf,EAAI,EAAI,GAAU,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,CAACC,EAAI,GAAK,EAAK,SAAW,GAAK,GAAK,EAAK,GAAK,EAAK,KAAO,IAAI,GAC7H,CACD,EAAiB,EAAM,EAAoB,CAC3C,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAY,EAAM,EAGzD,EAET,EAAO,GAAgB,iBAAiB,CAIxC,SAAS,EAAsB,EAAS,EAAS,EAAQ,EAAY,IAAK,EAAa,EAAG,EAAW,IAAK,CACxG,IAAM,EAAS,EAAE,CACX,EAAgB,EAAa,KAAK,GAAK,IAGvC,GAFc,EAAW,KAAK,GAAK,IACR,IACD,EAAY,GAC5C,IAAK,IAAIL,EAAI,EAAGA,EAAI,EAAW,IAAK,CAClC,IAAM,EAAQ,EAAgBA,EAAI,EAC5BE,EAAI,EAAU,EAAS,KAAK,IAAI,EAAM,CACtCC,EAAI,EAAU,EAAS,KAAK,IAAI,EAAM,CAC5C,EAAO,KAAK,CAAE,EAAA,EAAG,EAAA,EAAG,CAAC,CAEvB,OAAO,EAET,EAAO,EAAuB,uBAAuB,CACrD,eAAe,GAAgB,EAAQ,EAAM,CAC3C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFC,EAAI,EAAK,OAAS,EAAK,SAAW,GAClCC,EAAI,EAAK,QAAU,EAAK,SAAW,GACnC,EAAS,KAAK,IAAI,EAAGA,EAAI,GAAI,CAC7B,CAAE,aAAc,EAChB,EAAS,CACb,GAAG,EAAsBD,EAAI,EAAG,CAACC,EAAI,EAAG,EAAQ,GAAI,IAAK,EAAE,CAC3D,CAAE,EAAGD,EAAI,EAAI,EAAQ,EAAG,CAAC,EAAQ,CACjC,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,CAAC,EAAQ,EAAQ,GAAI,KAAM,KAAK,CAC7E,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,EAAQ,EAAQ,GAAI,IAAK,KAAK,CAC3E,CAAE,EAAGA,EAAI,EAAI,EAAQ,EAAGC,EAAI,EAAG,CAC/B,GAAG,EAAsBD,EAAI,EAAGC,EAAI,EAAG,EAAQ,GAAI,EAAG,GAAG,CAC1D,CACK,EAAa,CACjB,CAAE,EAAG,CAACD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAQ,CACjC,CAAE,EAAGD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAQ,CAChC,GAAG,EAAsBD,EAAI,EAAG,CAACC,EAAI,EAAG,EAAQ,GAAI,IAAK,EAAE,CAC3D,CAAE,EAAGD,EAAI,EAAI,EAAQ,EAAG,CAAC,EAAQ,CACjC,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,CAAC,EAAQ,EAAQ,GAAI,KAAM,KAAK,CAC7E,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,EAAQ,EAAQ,GAAI,IAAK,KAAK,CAC3E,CAAE,EAAGA,EAAI,EAAI,EAAQ,EAAGC,EAAI,EAAG,CAC/B,GAAG,EAAsBD,EAAI,EAAGC,EAAI,EAAG,EAAQ,GAAI,EAAG,GAAG,CACzD,CAAE,EAAGD,EAAI,EAAG,EAAGC,EAAI,EAAI,EAAQ,CAC/B,CAAE,EAAG,CAACD,EAAI,EAAG,EAAGC,EAAI,EAAI,EAAQ,CACjC,CACK,EAAKe,EAAO,IAAI,EAAS,CACzB,EAAU,EAAkB,EAAM,CAAE,KAAM,OAAQ,CAAC,CACrD,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAGtB,IAAM,EADsB,EAAqB,EAAO,CACV,QAAQ,IAAK,GAAG,CACxD,EAAsB,EAAG,KAAK,EAAmB,EAAQ,CACzD,EAAW,EAAqB,EAAW,CAC3C,EAAY,EAAG,KAAK,EAAU,CAAE,GAAG,EAAS,CAAC,CAC7C,EAAuB,EAAS,OAAO,IAAK,eAAe,CAoBjE,OAnBA,EAAqB,WAAa,EAAW,eAAe,CAAC,KAAK,iBAAkB,EAAE,CACtF,EAAqB,WAAa,EAAqB,eAAe,CACtE,EAAqB,KAAK,QAAS,OAAO,CACtC,GAAa,EAAK,OAAS,aAC7B,EAAqB,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAE7D,GAAc,EAAK,OAAS,aAC9B,EAAqB,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAElE,EAAqB,KAAK,YAAa,aAAa,CAAC,EAAO,MAAM,CAClE,EAAM,KACJ,YACA,aAAa,CAAChB,EAAI,GAAK,EAAK,SAAW,GAAK,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,CAACC,EAAI,GAAK,EAAK,SAAW,GAAK,GAAK,EAAK,GAAK,EAAK,KAAO,IAAI,GAC9I,CACD,EAAiB,EAAM,EAAqB,CAC5C,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAY,EAAM,EAGzD,EAET,EAAO,GAAiB,kBAAkB,CAI1C,SAAS,EAAsB,EAAS,EAAS,EAAQ,EAAY,IAAK,EAAa,EAAG,EAAW,IAAK,CACxG,IAAM,EAAS,EAAE,CACX,EAAgB,EAAa,KAAK,GAAK,IAGvC,GAFc,EAAW,KAAK,GAAK,IACR,IACD,EAAY,GAC5C,IAAK,IAAIL,EAAI,EAAGA,EAAI,EAAW,IAAK,CAClC,IAAM,EAAQ,EAAgBA,EAAI,EAC5BE,EAAI,EAAU,EAAS,KAAK,IAAI,EAAM,CACtCC,EAAI,EAAU,EAAS,KAAK,IAAI,EAAM,CAC5C,EAAO,KAAK,CAAE,EAAG,CAACD,EAAG,EAAG,CAACC,EAAG,CAAC,CAE/B,OAAO,EAET,EAAO,EAAuB,uBAAuB,CACrD,eAAe,GAAY,EAAQ,EAAM,CACvC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFC,EAAI,EAAK,OAAS,EAAK,SAAW,GAClCC,EAAI,EAAK,QAAU,EAAK,SAAW,GACnC,EAAS,KAAK,IAAI,EAAGA,EAAI,GAAI,CAC7B,CAAE,aAAc,EAChB,EAAuB,CAC3B,GAAG,EAAsBD,EAAI,EAAG,CAACC,EAAI,EAAG,EAAQ,GAAI,IAAK,EAAE,CAC3D,CAAE,EAAG,CAACD,EAAI,EAAI,EAAQ,EAAG,EAAQ,CACjC,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,CAAC,EAAQ,EAAQ,GAAI,KAAM,KAAK,CAC7E,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,EAAQ,EAAQ,GAAI,IAAK,KAAK,CAC3E,CAAE,EAAG,CAACA,EAAI,EAAI,EAAQ,EAAG,CAACC,EAAI,EAAG,CACjC,GAAG,EAAsBD,EAAI,EAAGC,EAAI,EAAG,EAAQ,GAAI,EAAG,GAAG,CAC1D,CACK,EAAwB,CAC5B,GAAG,EAAsB,CAACD,EAAI,EAAI,EAAS,EAAS,EAAG,CAACC,EAAI,EAAG,EAAQ,GAAI,IAAK,KAAK,CACrF,CAAE,EAAGD,EAAI,EAAI,EAAS,EAAG,EAAG,EAAQ,CACpC,GAAG,EAAsB,CAACA,EAAI,EAAI,EAAS,EAAG,CAAC,EAAQ,EAAQ,GAAI,EAAG,GAAG,CACzE,GAAG,EAAsB,CAACA,EAAI,EAAI,EAAS,EAAG,EAAQ,EAAQ,GAAI,IAAK,EAAE,CACzE,CAAE,EAAGA,EAAI,EAAI,EAAS,EAAG,EAAG,CAAC,EAAQ,CACrC,GAAG,EAAsB,CAACA,EAAI,EAAI,EAAS,EAAS,EAAGC,EAAI,EAAG,EAAQ,GAAI,KAAM,KAAK,CACtF,CACK,EAAa,CACjB,CAAE,EAAGD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAQ,CAChC,CAAE,EAAG,CAACD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAQ,CACjC,GAAG,EAAsBD,EAAI,EAAG,CAACC,EAAI,EAAG,EAAQ,GAAI,IAAK,EAAE,CAC3D,CAAE,EAAG,CAACD,EAAI,EAAI,EAAQ,EAAG,CAAC,EAAQ,CAClC,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,CAAC,EAAQ,EAAQ,GAAI,KAAM,KAAK,CAC7E,GAAG,EAAsBA,EAAI,EAAI,EAAS,EAAG,EAAQ,EAAQ,GAAI,IAAK,KAAK,CAC3E,CAAE,EAAG,CAACA,EAAI,EAAI,EAAQ,EAAGC,EAAI,EAAG,CAChC,GAAG,EAAsBD,EAAI,EAAGC,EAAI,EAAG,EAAQ,GAAI,EAAG,GAAG,CACzD,CAAE,EAAG,CAACD,EAAI,EAAG,EAAGC,EAAI,EAAI,EAAQ,CAChC,CAAE,EAAGD,EAAI,EAAI,EAAS,EAAS,EAAG,EAAGC,EAAI,EAAI,EAAQ,CACrD,GAAG,EAAsB,CAACD,EAAI,EAAI,EAAS,EAAS,EAAG,CAACC,EAAI,EAAG,EAAQ,GAAI,IAAK,KAAK,CACrF,CAAE,EAAGD,EAAI,EAAI,EAAS,EAAG,EAAG,EAAQ,CACpC,GAAG,EAAsB,CAACA,EAAI,EAAI,EAAS,EAAG,CAAC,EAAQ,EAAQ,GAAI,EAAG,GAAG,CACzE,GAAG,EAAsB,CAACA,EAAI,EAAI,EAAS,EAAG,EAAQ,EAAQ,GAAI,IAAK,EAAE,CACzE,CAAE,EAAGA,EAAI,EAAI,EAAS,EAAG,EAAG,CAAC,EAAQ,CACrC,GAAG,EAAsB,CAACA,EAAI,EAAI,EAAS,EAAS,EAAGC,EAAI,EAAG,EAAQ,GAAI,KAAM,KAAK,CACtF,CACK,EAAKgB,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,CAAE,KAAM,OAAQ,CAAC,CACrD,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAGtB,IAAM,EADqB,EAAqB,EAAqB,CACpB,QAAQ,IAAK,GAAG,CAC3D,EAAqB,EAAG,KAAK,EAAuB,EAAQ,CAE5D,EADsB,EAAqB,EAAsB,CACpB,QAAQ,IAAK,GAAG,CAC7D,EAAsB,EAAG,KAAK,EAAwB,EAAQ,CAC9D,EAAW,EAAqB,EAAW,CAC3C,EAAY,EAAG,KAAK,EAAU,CAAE,GAAG,EAAS,CAAC,CAC7C,EAAmB,EAAS,OAAO,IAAK,eAAe,CAqB7D,OApBA,EAAiB,WAAa,EAAW,eAAe,CAAC,KAAK,iBAAkB,EAAE,CAClF,EAAiB,WAAa,EAAoB,eAAe,CACjE,EAAiB,WAAa,EAAqB,eAAe,CAClE,EAAiB,KAAK,QAAS,OAAO,CAClC,GAAa,EAAK,OAAS,aAC7B,EAAiB,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEzD,GAAc,EAAK,OAAS,aAC9B,EAAiB,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAE9D,EAAiB,KAAK,YAAa,aAAa,EAAS,EAAS,EAAE,MAAM,CAC1E,EAAM,KACJ,YACA,aAAa,CAACjB,EAAI,GAAK,EAAK,SAAW,GAAK,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,CAACC,EAAI,GAAK,EAAK,SAAW,GAAK,GAAK,EAAK,GAAK,EAAK,KAAO,IAAI,GAC9I,CACD,EAAiB,EAAM,EAAiB,CACxC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAY,EAAM,EAGzD,EAET,EAAO,GAAa,cAAc,CAIlC,eAAe,GAAgB,EAAQ,EAAM,CAC3C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAE1ED,EAAI,KAAK,IAAI,IAAW,EAAK,OAAS,EAAK,SAAW,GAAK,GAAK,KAAM,GAAM,OAAS,EAAE,CACvFC,EAAI,KAAK,IAAI,GAAW,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACjF,EAASA,EAAI,EACb,CAAE,aAAc,EAChB,EAAKiB,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAalB,EAAG,EAAcC,EAC9B,EAAK,EAAa,EAClB,EAAK,EAAc,EACnB,EAAS,CACb,CAAE,EAAG,EAAI,EAAG,EAAG,CACf,CAAE,EAAG,EAAI,EAAG,EAAG,CACf,CAAE,EAAG,EAAG,EAAG,EAAc,EAAG,CAC5B,CAAE,EAAG,EAAI,EAAG,EAAa,CACzB,CAAE,EAAG,EAAI,EAAG,EAAa,CACzB,GAAG,GAAqB,CAAC,EAAI,CAAC,EAAc,EAAG,EAAQ,GAAI,IAAK,GAAG,CACpE,CACK,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAchE,OAbA,EAAQ,KAAK,QAAS,wBAAwB,CAC1C,GAAa,EAAK,OAAS,aAC7B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAQ,KAAK,YAAa,aAAa,CAACD,EAAI,EAAE,IAAI,CAACC,EAAI,EAAE,GAAG,CAC5D,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAiB,kBAAkB,CAI1C,IAAI,GAAsC,GAAQ,EAAG,EAAG,EAAO,EAAQ,EAAI,IAClE,CACL,IAAIH,EAAE,GAAGC,EAAI,IACb,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAC5B,IAAI,EAAG,GAAG,EAAG,SAAS,CAAC,EAAM,IAC7B,MAAM,IACN,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAC5B,MAAM,CAAC,IACR,CAAC,KAAK,IAAI,CACV,sBAAsB,CACrB,GAA2C,GAAQ,EAAG,EAAG,EAAO,EAAQ,EAAI,IACvE,CACL,IAAID,EAAE,GAAGC,EAAI,IACb,IAAID,EAAI,EAAM,GAAGC,EAAI,IACrB,IAAI,EAAG,GAAG,EAAG,SAAS,CAAC,EAAM,IAC7B,MAAM,IACN,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAC5B,MAAM,CAAC,IACR,CAAC,KAAK,IAAI,CACV,2BAA2B,CAC1B,GAA2C,GAAQ,EAAG,EAAG,EAAO,EAAQ,EAAI,IACvE,CAAC,IAAID,EAAI,EAAQ,EAAE,GAAG,CAAC,EAAS,IAAK,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAAI,CAAC,KAAK,IAAI,CACrF,2BAA2B,CAC9B,eAAe,GAAS,EAAQ,EAAM,CACpC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFE,EAAI,KAAK,IAAI,EAAK,MAAQ,EAAK,QAAS,EAAK,OAAS,EAAE,CACxD,EAAKA,EAAI,EACT,EAAK,GAAM,IAAMA,EAAI,IACrBC,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,EAAK,QAAS,EAAK,QAAU,EAAE,CACjE,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKkB,EAAQ,IAAI,EAAS,CAC1B,EAAgB,GAAyB,EAAG,EAAGnB,EAAGC,EAAG,EAAI,EAAG,CAC5D,EAAgB,GAAyB,EAAG,EAAID,EAAGC,EAAG,EAAI,EAAG,CAC7D,EAAY,EAAG,KAAK,EAAe,EAAkB,EAAM,EAAE,CAAC,CAAC,CAC/D,EAAY,EAAG,KAAK,EAAe,EAAkB,EAAM,CAAE,KAAM,OAAQ,CAAC,CAAC,CACnF,EAAY,EAAS,WAAa,EAAW,eAAe,CAC5D,EAAY,EAAS,WAAa,EAAW,eAAe,CAC5D,EAAU,KAAK,QAAS,wBAAwB,CAC5C,GACF,EAAU,KAAK,QAAS,EAAU,KAE/B,CACL,IAAM,EAAW,GAAoB,EAAG,EAAGD,EAAGC,EAAG,EAAI,EAAG,CACxD,EAAY,EAAS,OAAO,OAAQ,eAAe,CAAC,KAAK,IAAK,EAAS,CAAC,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,CAAC,KAAK,QAAS,EAAW,CAyBxL,OAvBA,EAAU,KAAK,iBAAkB,EAAG,CACpC,EAAU,KAAK,YAAa,aAAa,CAACD,EAAI,EAAE,IAAI,EAAEC,EAAI,EAAI,GAAI,GAAG,CACrE,EAAiB,EAAM,EAAU,CACjC,EAAM,KACJ,YACA,aAAa,EAAE,EAAK,MAAQ,IAAM,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,EAAE,EAAK,OAAS,IAAM,EAAK,SAAW,GAAK,KAAO,EAAK,GAAK,EAAK,KAAO,IAAI,GAC9I,CACD,EAAK,UAAY,SAAS,EAAO,CAC/B,IAAM,EAAM,EAAkB,KAAK,EAAM,EAAM,CACzCH,EAAI,EAAI,GAAK,EAAK,GAAK,GAC7B,GAAI,GAAM,IAAM,KAAK,IAAIA,EAAE,EAAI,EAAK,OAAS,GAAK,GAAK,KAAK,IAAIA,EAAE,GAAK,EAAK,OAAS,GAAK,GAAK,KAAK,IAAI,EAAI,GAAK,EAAK,GAAK,GAAG,EAAI,EAAK,QAAU,GAAK,EAAI,GAAK,CAC7J,IAAIC,EAAI,EAAK,GAAM,EAAID,EAAIA,GAAK,EAAK,IACjCC,EAAI,IACN,EAAI,KAAK,KAAKA,EAAE,EAElB,EAAI,EAAKA,EACL,EAAM,GAAK,EAAK,GAAK,GAAK,IAC5B,EAAI,CAACA,GAEP,EAAI,GAAKA,EAEX,OAAO,GAEF,EAET,EAAO,GAAU,WAAW,CAI5B,eAAe,GAAiB,EAAQ,EAAM,CAC5C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFC,EAAI,EAAK,MAAQ,EAAK,QACtBC,EAAI,EAAK,OAAS,EAAK,QACvB,EAAaA,EAAI,GACjBH,EAAI,CAACE,EAAI,EACTD,EAAI,CAACE,EAAI,EAAI,EAAa,EAC1B,CAAE,aAAc,EAChB,EAAKmB,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAM,CACV,CAAE,EAAA,EAAG,EAAGrB,EAAI,EAAY,CACxB,CAAE,EAAG,CAACD,EAAG,EAAGC,EAAI,EAAY,CAC5B,CAAE,EAAG,CAACD,EAAG,EAAG,CAACC,EAAG,CAChB,CAAE,EAAA,EAAG,EAAG,CAACA,EAAG,CACZ,CAAE,EAAA,EAAG,EAAA,EAAG,CACR,CAAE,EAAG,CAACD,EAAG,EAAA,EAAG,CACZ,CAAE,EAAG,CAACA,EAAG,EAAGC,EAAI,EAAY,CAC7B,CACK,EAAO,EAAG,QACd,EAAI,IAAK,GAAM,CAACF,EAAE,EAAGA,EAAE,EAAE,CAAC,CAC1B,EACD,CACK,EAAU,EAAS,WAAa,EAAM,eAAe,CAiB3D,OAhBA,EAAQ,KAAK,QAAS,wBAAwB,CAC1C,GAAa,EAAK,OAAS,aAC7B,EAAQ,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEhD,GAAc,EAAK,OAAS,aAC9B,EAAQ,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAErD,EAAM,KACJ,YACA,aAAaC,GAAK,EAAK,SAAW,GAAK,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAIC,EAAI,GAAc,EAAK,SAAW,GAAK,GAAK,EAAK,GAAK,EAAK,KAAO,IAAI,GAClJ,CACD,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,KAAK,EAAM,EAAM,EAG1C,EAET,EAAO,GAAkB,mBAAmB,CAI5C,eAAe,GAAa,EAAQ,EAAM,CACxC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,eAAgB,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAEvF,EAAc,EAAK,MAAQ,EAAI,EADzB,EAEN,EAAc,EAAK,MAAQ,EAAI,EACjC,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKsB,EAAQ,IAAI,EAAS,CAC1B,EAAe,EAAkB,EAAM,CAAE,UAAW,GAAK,YAAa,IAAK,CAAC,CAC5E,EAAe,EAAkB,EAAM,CAAE,UAAW,GAAK,YAAa,IAAK,CAAC,CAC5E,EAAiB,EAAG,OAAO,EAAG,EAAG,EAAc,EAAG,EAAa,CAC/D,EAAiB,EAAG,OAAO,EAAG,EAAG,EAAc,EAAG,EAAa,CACrE,EAAc,EAAS,OAAO,IAAK,eAAe,CAClD,EAAY,KAAK,QAAS,EAAoB,EAAK,WAAW,CAAC,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,CAC7G,EAAY,MAAM,EAAE,YAAY,EAAe,CAC/C,EAAY,MAAM,EAAE,YAAY,EAAe,KAC1C,CACL,EAAc,EAAS,OAAO,IAAK,eAAe,CAClD,IAAM,EAAc,EAAY,OAAO,SAAU,eAAe,CAC1D,EAAc,EAAY,OAAO,SAAS,CAChD,EAAY,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAW,CAC5E,EAAY,KAAK,QAAS,eAAe,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,IAAK,EAAY,CAAC,KAAK,KAAM,EAAE,CAAC,KAAK,KAAM,EAAE,CACtH,EAAY,KAAK,QAAS,eAAe,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,IAAK,EAAY,CAAC,KAAK,KAAM,EAAE,CAAC,KAAK,KAAM,EAAE,CAOxH,OALA,EAAiB,EAAM,EAAY,CACnC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADA,EAAI,KAAK,yBAA0B,EAAM,EAAa,EAAM,CACrD,EAAkB,OAAO,EAAM,EAAa,EAAM,EAEpD,EAET,EAAO,GAAc,eAAe,CAIpC,SAAS,GAAa,EAAQ,EAAM,CAAE,OAAQ,CAAE,mBAAoB,CAClE,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,MAAQ,GACb,EAAK,WAAa,EAClB,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAe,EAAK,CAAC,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CAEnG,CAAE,aAAc,EAChB,EAAKC,EAAQ,IAAI,EAAS,CAC1B,CAAE,cAAe,EACjB,EAAU,EAAkB,EAAM,CAAE,UAAW,QAAS,CAAC,CAC3D,EAAK,OAAS,cAChB,EAAQ,UAAY,GAEtB,IAAM,EAAa,EAAG,OAAO,EAAG,EAAG,GAAY,EAAQ,CACjD,EAAgB,EAAS,WAAa,EAAY,eAAe,CAcvE,OAbA,EAAc,UAAU,OAAO,CAAC,KAAK,QAAS,SAAS,EAAW,cAAc,CAC5E,GAAa,EAAU,OAAS,GAAK,EAAK,OAAS,aACrD,EAAc,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEtD,GAAc,EAAK,OAAS,aAC9B,EAAc,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAE3D,EAAiB,EAAM,EAAc,CACrC,EAAK,UAAY,SAAS,EAAO,CAG/B,OAFA,EAAI,KAAK,yBAA0B,EAAM,CAAE,SAAQ,QAAO,CAAC,CAC/C,EAAkB,OAAO,EAAM,EAAQ,EAAM,EAGpD,EAET,EAAO,GAAc,eAAe,CAIpC,eAAe,GAAgB,EAAQ,EAAM,CAC3C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFtB,EAAI,EAAK,OAAS,EAAK,SAAW,GAClCC,EAAID,EAAI,EAAK,OACb,EAAKA,EAAI,EAAK,OACd,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,CAACC,EAAG,CACf,CAAE,EAAG,EAAI,EAAG,CAACA,EAAG,CAChB,CAAE,EAAG,EAAK,EAAG,EAAG,EAAG,CACpB,CACK,CAAE,aAAc,EAChB,EAAKsB,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAmB,EAAS,WAAa,EAAW,eAAe,CAAC,KAAK,YAAa,aAAa,CAACtB,EAAI,EAAE,IAAIA,EAAI,EAAE,GAAG,CAkB7H,OAjBI,GAAa,EAAK,OAAS,aAC7B,EAAiB,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAE9D,GAAc,EAAK,OAAS,aAC9B,EAAiB,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAEnE,EAAK,MAAQD,EACb,EAAK,OAASC,EACd,EAAiB,EAAM,EAAiB,CACxC,EAAM,KACJ,YACA,aAAa,CAAC,EAAK,MAAQ,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,CAACA,EAAI,GAAK,EAAK,SAAW,GAAK,GAAK,EAAK,GAAK,EAAK,KAAO,IAAI,GAC9H,CACD,EAAK,UAAY,SAAS,EAAO,CAE/B,OADA,EAAI,KAAK,qBAAsB,EAAM,EAAQ,EAAM,CAC5C,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAiB,kBAAkB,CAI1C,SAAS,GAAS,EAAQ,EAAM,CAAE,MAAK,OAAQ,CAAE,MAAO,EAAQ,mBAAoB,CAClF,GAAM,CAAE,cAAe,EAAc,EAAK,CAC1C,EAAK,MAAQ,GACb,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAe,EAAK,CAAC,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CACnG,CAAE,aAAc,EAClB,EAAQ,KAAK,IAAI,GAAI,GAAM,OAAS,EAAE,CACtC,EAAS,KAAK,IAAI,GAAI,GAAM,QAAU,EAAE,CACxC,IAAQ,OACV,EAAQ,KAAK,IAAI,GAAI,GAAM,OAAS,EAAE,CACtC,EAAS,KAAK,IAAI,GAAI,GAAM,QAAU,EAAE,EAE1C,IAAMH,EAAI,GAAK,EAAQ,EACjBC,EAAI,GAAK,EAAS,EAClB,EAAKyB,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,CACtC,OAAQ,EAAe,UACvB,KAAM,EAAe,UACtB,CAAC,CACE,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAY,EAAG,UAAU1B,EAAGC,EAAG,EAAO,EAAQ,EAAQ,CACtD,EAAQ,EAAS,WAAa,EAAW,eAAe,CAC1D,GAAa,EAAK,OAAS,aAC7B,EAAM,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAE9C,GAAc,EAAK,OAAS,aAC9B,EAAM,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAEnD,EAAiB,EAAM,EAAM,CAC7B,IAAM,EAAU,GAAQ,SAAW,EAQnC,OAPI,EAAK,OAAS,EAAK,SACrB,EAAK,OAAS,EAAU,GAAK,EAC7B,EAAK,QAAU,EAAU,GAAK,GAEhC,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAU,WAAW,CAI5B,eAAe,GAAqB,EAAQ,EAAM,CAChD,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GACM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1EC,EAAI,KAAK,IAAI,GAAU,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CAC9EC,EAAI,KAAK,IAAI,GAAW,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACjF,EAASA,EAAI,EACb,CAAE,aAAc,EAChB,EAAKwB,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAG,CAACzB,EAAI,EAAG,EAAG,CAACC,EAAI,EAAG,CACxB,CAAE,EAAGD,EAAI,EAAI,EAAQ,EAAG,CAACC,EAAI,EAAG,CAChC,GAAG,GAAqB,CAACD,EAAI,EAAI,EAAQ,EAAG,EAAQ,GAAI,GAAI,IAAI,CAChE,CAAE,EAAGA,EAAI,EAAI,EAAQ,EAAGC,EAAI,EAAG,CAC/B,CAAE,EAAG,CAACD,EAAI,EAAG,EAAGC,EAAI,EAAG,CACxB,CACK,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAchE,OAbA,EAAQ,KAAK,QAAS,wBAAwB,CAC1C,GAAa,EAAK,OAAS,aAC7B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAG/B,OAFA,EAAI,KAAK,iBAAkB,EAAM,CAAE,SAAQ,QAAO,CAAC,CACvC,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAsB,uBAAuB,CAIpD,eAAe,GAAQ,EAAQ,EAAM,CACnC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1EA,EAAI,EAAK,QAAU,EAAK,SAAW,GACnCD,EAAI,EAAK,OAAS,EAAK,SAAW,GAAK,IACvC,CAAE,aAAc,EAChB,EAAK0B,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAI,EAAY1B,EAAI,EACd2B,EAAI,EAAY,EACtB,GAAwBA,EACxB,IAAM,EAAa1B,EAAI,EACjB,EAAc,EAAa,EAC3B,EAAe,EAAY,EAC3B,EAAS,CACb,CAAE,EAAG,CAAC,EAAc,EAAG,CAAC,EAAY,CACpC,CAAE,EAAG,EAAG,EAAG,CAAC,EAAY,CACxB,CAAE,EAAG,EAAc,EAAG,CAAC,EAAY,CACnC,CAAE,EAAG,EAAW,EAAG,EAAG,CACtB,CAAE,EAAG,EAAc,EAAG,EAAY,CAClC,CAAE,EAAG,EAAG,EAAG,EAAY,CACvB,CAAE,EAAG,CAAC,EAAc,EAAG,EAAY,CACnC,CAAE,EAAG,CAAC,EAAW,EAAG,EAAG,CACxB,CACK,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAchE,OAbA,EAAQ,KAAK,QAAS,wBAAwB,CAC1C,GAAa,EAAK,OAAS,aAC7B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAK,MAAQD,EACb,EAAK,OAASC,EACd,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAS,UAAU,CAI1B,eAAe,GAAU,EAAQ,EAAM,CACrC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,MAAQ,GACb,EAAK,WAAa,EAClB,GAAM,CAAE,YAAa,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACpED,EAAI,KAAK,IAAI,GAAI,GAAM,OAAS,EAAE,CAClCC,EAAI,KAAK,IAAI,GAAI,GAAM,QAAU,EAAE,CACnC,CAAE,aAAc,EAChB,EAAK2B,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,EAAG,CACd,CAAE,EAAG5B,EAAG,EAAG,EAAG,CACd,CAAE,EAAG,EAAG,EAAGC,EAAG,CACd,CAAE,EAAGD,EAAG,EAAGC,EAAG,CACf,CACK,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAehE,OAdA,EAAQ,KAAK,QAAS,wBAAwB,CAC1C,GAAa,EAAK,OAAS,aAC7B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAQ,KAAK,YAAa,aAAa,CAACD,EAAI,EAAE,IAAI,CAACC,EAAI,EAAE,GAAG,CAC5D,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAG/B,OAFA,EAAI,KAAK,iBAAkB,EAAM,CAAE,SAAQ,CAAC,CAChC,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAW,YAAY,CAI9B,eAAe,GAAK,EAAQ,EAAM,CAAE,OAAQ,CAAE,iBAAgB,cAAe,CAC3E,GAAM,CAAE,eAAgB,EAAc,EAAK,CAC3C,EAAK,WAAa,EAClB,IAAM,EAAc,EAAK,aAAe,GAClC,EAAa,EAAK,YAAc,GAChC,EAAW,KAAK,IAAI,EAAa,EAAW,CAC5C,EAAe,GAAW,cAChC,EAAK,MAAQ,KAAK,IAAI,EAAU,GAAgB,EAAE,CAClD,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,qBAAqB,CACjF,EAAW,EAAK,MAAQ,IACxB,EAAS,EACT,EAAQ,EACR,CAAE,cAAe,EACjB,CAAE,aAAc,EAAc,EAAK,CACnCH,EAAI,CAAC,EAAQ,EACbC,EAAI,CAAC,EAAS,EACd,EAAe,EAAK,MAAQ,EAAI,EAChC,EAAK8B,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,CAAE,OAAQ,OAAQ,KAAM,OAAQ,CAAC,CACrE,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAW,EAAG,UAAU/B,EAAGC,EAAG,EAAO,EAAQ,EAAQ,CACrD,EAAa,KAAK,IAAI,EAAO,EAAK,MAAM,CACxC,EAAc,EAAS,EAAK,OAAS,EACrC,EAAY,EAAG,UAAU,CAAC,EAAa,EAAG,CAAC,EAAc,EAAG,EAAY,EAAa,CACzF,GAAG,EACH,KAAM,cACN,OAAQ,OACT,CAAC,CACI,EAAY,EAAS,WAAa,EAAU,eAAe,CAC3D,EAAa,EAAS,WAAa,EAAU,CACnD,GAAI,EAAK,KAAM,CACb,IAAM,EAAW,EAAS,OAAO,IAAI,CACrC,EAAS,KACP,MAAM,MAAM,EAAW,EAAK,KAAM,CAChC,OAAQ,EACR,MAAO,EACP,eAAgB,GACjB,CAAC,CAAC,MACJ,CACD,IAAM,EAAW,EAAS,MAAM,CAAC,SAAS,CACpC,EAAY,EAAS,MACrB,EAAa,EAAS,OACtB,EAAQ,EAAS,EACjB,EAAQ,EAAS,EACvB,EAAS,KACP,YACA,aAAa,CAAC,EAAY,EAAI,EAAM,GAAG,EAAW,EAAK,OAAS,EAAI,EAAe,EAAI,EAAa,EAAI,EAAQ,CAAC,EAAK,OAAS,EAAI,EAAe,EAAI,EAAa,EAAI,EAAM,GAC9K,CACD,EAAS,KAAK,QAAS,UAAU,EAAU,IAAI,SAAS,EAAI,EAAW,GAAG,CA8C5E,OA5CA,EAAM,KACJ,YACA,aAAa,CAAC,EAAK,MAAQ,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,EAAW,CAAC,EAAc,EAAI,EAAc,EAAI,EAAK,OAAO,GAC3H,CACD,EAAU,KACR,YACA,eAAkB,EAAW,EAAK,OAAS,EAAI,EAAe,EAAI,CAAC,EAAK,OAAS,EAAI,EAAe,EAAE,GACvG,CACD,EAAiB,EAAM,EAAW,CAClC,EAAK,UAAY,SAAS,EAAO,CAE/B,GADA,EAAI,KAAK,uBAAwB,EAAM,EAAM,CACzC,CAAC,EAAK,MACR,OAAO,EAAkB,KAAK,EAAM,EAAM,CAE5C,IAAM,EAAK,EAAK,GAAK,EACf,EAAK,EAAK,GAAK,EACf,EAAa,EAAK,QAAU,EAC9B,EAAS,EAAE,CAyBf,MAxBA,CAYE,EAZE,EACO,CACP,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC/E,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC1E,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC1E,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAChF,CAEQ,CACP,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CACtD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CAC3D,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAI,EAAG,EAAG,EAAK,EAAa,EAAG,CACtD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CAC3D,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CACvD,CAES,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAM,OAAO,CAIpB,eAAe,GAAW,EAAQ,EAAM,CAAE,OAAQ,CAAE,iBAAgB,cAAe,CACjF,GAAM,CAAE,eAAgB,EAAc,EAAK,CAC3C,EAAK,WAAa,EAClB,IAAM,EAAc,EAAK,aAAe,GAClC,EAAa,EAAK,YAAc,GAChC,EAAW,KAAK,IAAI,EAAa,EAAW,CAC5C,EAAe,GAAW,cAChC,EAAK,MAAQ,KAAK,IAAI,EAAU,GAAgB,EAAE,CAClD,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,qBAAqB,CAEjF,EAAe,EAAK,MAAQ,EAAI,EAChC,EAAW,EAAK,MAAQ,IACxB,CAAE,aAAY,WAAY,EAC1B,CAAE,aAAc,EAAc,EAAK,CACnC,EAAK+B,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAGtB,EAAQ,OADK,EAAU,IAAI,OAAO,EACT,EACzB,IAAM,EAAW,EAAS,OAAO,IAAI,CACjC,EAAK,MACP,EAAS,KACP,MAAM,MAAM,EAAW,EAAK,KAAM,CAChC,OAAQ,EACR,MAAO,EACP,eAAgB,GACjB,CAAC,CAAC,MACJ,CAEH,IAAM,EAAW,EAAS,MAAM,CAAC,SAAS,CACpC,EAAY,EAAS,MACrB,EAAa,EAAS,OACtB,EAAQ,EAAS,EACjB,EAAQ,EAAS,EACjB,EAAW,KAAK,IAAI,EAAW,EAAW,CAAG,KAAK,MAAQ,GAC1D,EAAW,EAAG,OAAO,EAAG,EAAG,EAAU,EAAQ,CAC7C,EAAa,KAAK,IAAI,EAAU,EAAK,MAAM,CAC3C,EAAc,EAAW,EAAK,OAAS,EACvC,EAAY,EAAG,UAAU,CAAC,EAAa,EAAG,CAAC,EAAc,EAAG,EAAY,EAAa,CACzF,GAAG,EACH,KAAM,cACN,OAAQ,OACT,CAAC,CACI,EAAY,EAAS,WAAa,EAAU,eAAe,CAC3D,EAAa,EAAS,WAAa,EAAU,CAoBnD,OAnBA,EAAS,KACP,YACA,aAAa,CAAC,EAAY,EAAI,EAAM,GAAG,EAAW,EAAK,OAAS,EAAI,EAAe,EAAI,EAAa,EAAI,EAAQ,CAAC,EAAK,OAAS,EAAI,EAAe,EAAI,EAAa,EAAI,EAAM,GAC9K,CACD,EAAS,KAAK,QAAS,UAAU,EAAU,IAAI,SAAS,EAAI,EAAW,GAAG,CAC1E,EAAM,KACJ,YACA,aAAa,CAAC,EAAK,MAAQ,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,EAAW,CAAC,EAAc,EAAI,EAAc,EAAI,EAAK,OAAO,GAC3H,CACD,EAAU,KACR,YACA,eAAkB,EAAW,EAAK,OAAS,EAAI,EAAe,EAAI,CAAC,EAAK,OAAS,EAAI,EAAe,EAAE,GACvG,CACD,EAAiB,EAAM,EAAW,CAClC,EAAK,UAAY,SAAS,EAAO,CAG/B,OAFA,EAAI,KAAK,uBAAwB,EAAM,EAAM,CACjC,EAAkB,KAAK,EAAM,EAAM,EAG1C,EAET,EAAO,GAAY,aAAa,CAIhC,eAAe,GAAY,EAAQ,EAAM,CAAE,OAAQ,CAAE,iBAAgB,cAAe,CAClF,GAAM,CAAE,eAAgB,EAAc,EAAK,CAC3C,EAAK,WAAa,EAClB,IAAM,EAAc,EAAK,aAAe,GAClC,EAAa,EAAK,YAAc,GAChC,EAAW,KAAK,IAAI,EAAa,EAAW,CAC5C,EAAe,GAAW,cAChC,EAAK,MAAQ,KAAK,IAAI,EAAU,GAAgB,EAAE,CAClD,GAAM,CAAE,WAAU,OAAM,cAAa,SAAU,MAAM,EACnD,EACA,EACA,qBACD,CACK,EAAW,EAAK,MAAQ,IACxB,EAAS,EAAW,EAAc,EAClC,EAAQ,EAAW,EAAc,EACjC,CAAE,aAAY,WAAY,EAC1B,CAAE,aAAc,EAAc,EAAK,CACnChC,EAAI,CAAC,EAAQ,EACbC,EAAI,CAAC,EAAS,EACd,EAAe,EAAK,MAAQ,EAAI,EAChC,EAAKgC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAGtB,EAAQ,OADK,EAAU,IAAI,OAAO,EACT,EACzB,IAAM,EAAW,EAAG,KAAK,EAAuBjC,EAAGC,EAAG,EAAO,EAAQ,EAAE,CAAE,EAAQ,CAC3E,EAAa,KAAK,IAAI,EAAO,EAAK,MAAM,CACxC,EAAc,EAAS,EAAK,OAAS,EACrC,EAAY,EAAG,UAAU,CAAC,EAAa,EAAG,CAAC,EAAc,EAAG,EAAY,EAAa,CACzF,GAAG,EACH,KAAM,cACN,OAAQ,OACT,CAAC,CACI,EAAY,EAAS,WAAa,EAAU,eAAe,CAAC,KAAK,QAAS,cAAc,CACxF,EAAa,EAAS,WAAa,EAAU,CACnD,GAAI,EAAK,KAAM,CACb,IAAM,EAAW,EAAS,OAAO,IAAI,CACrC,EAAS,KACP,MAAM,MAAM,EAAW,EAAK,KAAM,CAChC,OAAQ,EACR,MAAO,EACP,eAAgB,GACjB,CAAC,CAAC,MACJ,CACD,IAAM,EAAW,EAAS,MAAM,CAAC,SAAS,CACpC,EAAY,EAAS,MACrB,EAAa,EAAS,OACtB,EAAQ,EAAS,EACjB,EAAQ,EAAS,EACvB,EAAS,KACP,YACA,aAAa,CAAC,EAAY,EAAI,EAAM,GAAG,EAAW,EAAK,OAAS,EAAI,EAAe,EAAI,EAAa,EAAI,EAAQ,CAAC,EAAK,OAAS,EAAI,EAAe,EAAI,EAAa,EAAI,EAAM,GAC9K,CACD,EAAS,KAAK,QAAS,UAAU,EAAU,IAAI,SAAS,EAAI,EAAW,GAAG,CA8C5E,OA5CA,EAAM,KACJ,YACA,aAAa,CAAC,EAAK,MAAQ,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,EAAW,CAAC,EAAc,EAAI,EAAc,EAAI,EAAK,OAAO,GAC3H,CACD,EAAU,KACR,YACA,eAAkB,EAAW,EAAK,OAAS,EAAI,EAAe,EAAI,CAAC,EAAK,OAAS,EAAI,EAAe,EAAE,GACvG,CACD,EAAiB,EAAM,EAAW,CAClC,EAAK,UAAY,SAAS,EAAO,CAE/B,GADA,EAAI,KAAK,uBAAwB,EAAM,EAAM,CACzC,CAAC,EAAK,MACR,OAAO,EAAkB,KAAK,EAAM,EAAM,CAE5C,IAAM,EAAK,EAAK,GAAK,EACf,EAAK,EAAK,GAAK,EACf,EAAa,EAAK,QAAU,EAC9B,EAAS,EAAE,CAyBf,MAxBA,CAYE,EAZE,EACO,CACP,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC/E,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC1E,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC1E,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAChF,CAEQ,CACP,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CACtD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CAC3D,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAI,EAAG,EAAG,EAAK,EAAa,EAAG,CACtD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CAC3D,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CACvD,CAES,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAa,cAAc,CAIlC,eAAe,GAAW,EAAQ,EAAM,CAAE,OAAQ,CAAE,iBAAgB,cAAe,CACjF,GAAM,CAAE,eAAgB,EAAc,EAAK,CAC3C,EAAK,WAAa,EAClB,IAAM,EAAc,EAAK,aAAe,GAClC,EAAa,EAAK,YAAc,GAChC,EAAW,KAAK,IAAI,EAAa,EAAW,CAC5C,EAAe,GAAW,cAChC,EAAK,MAAQ,KAAK,IAAI,EAAU,GAAgB,EAAE,CAClD,GAAM,CAAE,WAAU,OAAM,cAAa,SAAU,MAAM,EACnD,EACA,EACA,qBACD,CACK,EAAW,EAAK,MAAQ,IACxB,EAAS,EAAW,EAAc,EAClC,EAAQ,EAAW,EAAc,EACjC,CAAE,aAAY,WAAY,EAC1B,CAAE,aAAc,EAAc,EAAK,CACnCD,EAAI,CAAC,EAAQ,EACbC,EAAI,CAAC,EAAS,EACd,EAAe,EAAK,MAAQ,EAAI,EAChC,EAAKiC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAGtB,EAAQ,OADK,EAAU,IAAI,OAAO,EACT,EACzB,IAAM,EAAW,EAAG,KAAK,EAAuBlC,EAAGC,EAAG,EAAO,EAAQ,GAAI,CAAE,EAAQ,CAC7E,EAAa,KAAK,IAAI,EAAO,EAAK,MAAM,CACxC,EAAc,EAAS,EAAK,OAAS,EACrC,EAAY,EAAG,UAAU,CAAC,EAAa,EAAG,CAAC,EAAc,EAAG,EAAY,EAAa,CACzF,GAAG,EACH,KAAM,cACN,OAAQ,OACT,CAAC,CACI,EAAY,EAAS,WAAa,EAAU,eAAe,CAC3D,EAAa,EAAS,WAAa,EAAU,CACnD,GAAI,EAAK,KAAM,CACb,IAAM,EAAW,EAAS,OAAO,IAAI,CACrC,EAAS,KACP,MAAM,MAAM,EAAW,EAAK,KAAM,CAChC,OAAQ,EACR,MAAO,EACP,eAAgB,GACjB,CAAC,CAAC,MACJ,CACD,IAAM,EAAW,EAAS,MAAM,CAAC,SAAS,CACpC,EAAY,EAAS,MACrB,EAAa,EAAS,OACtB,EAAQ,EAAS,EACjB,EAAQ,EAAS,EACvB,EAAS,KACP,YACA,aAAa,CAAC,EAAY,EAAI,EAAM,GAAG,EAAW,EAAK,OAAS,EAAI,EAAe,EAAI,EAAa,EAAI,EAAQ,CAAC,EAAK,OAAS,EAAI,EAAe,EAAI,EAAa,EAAI,EAAM,GAC9K,CACD,EAAS,KAAK,QAAS,UAAU,EAAU,IAAI,SAAS,EAAI,EAAW,GAAG,CA8C5E,OA5CA,EAAM,KACJ,YACA,aAAa,CAAC,EAAK,MAAQ,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,EAAW,CAAC,EAAc,EAAI,EAAc,EAAI,EAAK,OAAO,GAC3H,CACD,EAAU,KACR,YACA,eAAkB,EAAW,EAAK,OAAS,EAAI,EAAe,EAAI,CAAC,EAAK,OAAS,EAAI,EAAe,EAAE,GACvG,CACD,EAAiB,EAAM,EAAW,CAClC,EAAK,UAAY,SAAS,EAAO,CAE/B,GADA,EAAI,KAAK,uBAAwB,EAAM,EAAM,CACzC,CAAC,EAAK,MACR,OAAO,EAAkB,KAAK,EAAM,EAAM,CAE5C,IAAM,EAAK,EAAK,GAAK,EACf,EAAK,EAAK,GAAK,EACf,EAAa,EAAK,QAAU,EAC9B,EAAS,EAAE,CAyBf,MAxBA,CAYE,EAZE,EACO,CACP,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC/E,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC1E,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC1E,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAChF,CAEQ,CACP,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAC7C,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CACtD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CAC3D,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAI,EAAG,EAAG,EAAK,EAAa,EAAG,CACtD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CAC3D,CAAE,EAAG,EAAK,EAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAQ,CACvD,CAES,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAY,aAAa,CAIhC,eAAe,GAAY,EAAQ,EAAM,CAAE,OAAQ,CAAE,cAAe,CAClE,IAAM,EAAM,IAAI,MAChB,EAAI,IAAM,GAAM,KAAO,GACvB,MAAM,EAAI,QAAQ,CAClB,IAAM,EAAoB,OAAO,EAAI,aAAa,UAAU,CAAC,QAAQ,KAAM,GAAG,CAAC,CACzE,EAAqB,OAAO,EAAI,cAAc,UAAU,CAAC,QAAQ,KAAM,GAAG,CAAC,CACjF,EAAK,iBAAmB,EAAoB,EAC5C,GAAM,CAAE,eAAgB,EAAc,EAAK,CAC3C,EAAK,WAAa,EAClB,IAAM,EAAe,GAAW,cAChC,EAAK,aAAe,GAAW,cAC/B,IAAM,EAAgB,KAAK,IACzB,EAAK,MAAQ,GAAgB,EAAI,EACjC,GAAM,YAAc,EACrB,CACK,EAAa,EAAK,aAAe,MAAO,GAAM,YAAc,EAAK,YAAc,EAAK,iBAAmB,EACvG,EAAc,EAAK,aAAe,KAAO,EAAa,EAAK,iBAAmB,GAAM,aAAe,EACzG,EAAK,MAAQ,KAAK,IAAI,EAAY,GAAgB,EAAE,CACpD,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,sBAAsB,CAClF,EAAW,EAAK,MAAQ,IACxBD,EAAI,CAAC,EAAa,EAClBC,EAAI,CAAC,EAAc,EACnB,EAAe,EAAK,MAAQ,EAAI,EAChC,EAAKkC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAY,EAAG,UAAUnC,EAAGC,EAAG,EAAY,EAAa,EAAQ,CAChE,EAAa,KAAK,IAAI,EAAY,EAAK,MAAM,CAC7C,EAAc,EAAc,EAAK,OAAS,EAC1C,EAAY,EAAG,UAAU,CAAC,EAAa,EAAG,CAAC,EAAc,EAAG,EAAY,EAAa,CACzF,GAAG,EACH,KAAM,OACN,OAAQ,OACT,CAAC,CACI,EAAY,EAAS,WAAa,EAAW,eAAe,CAC5D,EAAa,EAAS,WAAa,EAAU,CACnD,GAAI,EAAK,IAAK,CACZ,IAAM,EAAQ,EAAS,OAAO,QAAQ,CACtC,EAAM,KAAK,OAAQ,EAAK,IAAI,CAC5B,EAAM,KAAK,QAAS,EAAW,CAC/B,EAAM,KAAK,SAAU,EAAY,CACjC,EAAM,KAAK,sBAAuB,OAAO,CACzC,EAAM,KACJ,YACA,aAAa,CAAC,EAAa,EAAE,GAAG,EAAW,EAAc,EAAI,EAAc,CAAC,EAAc,EAAE,GAC7F,CA8CH,OA5CA,EAAM,KACJ,YACA,aAAa,CAAC,EAAK,MAAQ,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,EAAW,CAAC,EAAc,EAAI,EAAK,OAAS,EAAI,EAAe,EAAI,EAAc,EAAI,EAAK,OAAS,EAAI,EAAe,EAAE,GACvL,CACD,EAAU,KACR,YACA,eAAkB,EAAW,EAAK,OAAS,EAAI,EAAe,EAAI,CAAC,EAAK,OAAS,EAAI,EAAe,EAAE,GACvG,CACD,EAAiB,EAAM,EAAW,CAClC,EAAK,UAAY,SAAS,EAAO,CAE/B,GADA,EAAI,KAAK,uBAAwB,EAAM,EAAM,CACzC,CAAC,EAAK,MACR,OAAO,EAAkB,KAAK,EAAM,EAAM,CAE5C,IAAM,EAAK,EAAK,GAAK,EACf,EAAK,EAAK,GAAK,EACf,EAAa,EAAK,QAAU,EAC9B,EAAS,EAAE,CAyBf,MAxBA,CAYE,EAZE,EACO,CACP,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC/E,CAAE,EAAG,EAAK,EAAa,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC/E,CAAE,EAAG,EAAK,EAAa,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAa,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAa,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAC/E,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAK,OAAS,EAAc,CAChF,CAEQ,CACP,CAAE,EAAG,EAAK,EAAa,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAa,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAa,EAAG,EAAG,EAAK,EAAa,EAAI,EAAa,CAChE,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAa,CAChE,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAI,EAAG,EAAG,EAAK,EAAa,EAAG,CACtD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAG,CAClD,CAAE,EAAG,EAAK,EAAK,MAAQ,EAAG,EAAG,EAAK,EAAa,EAAI,EAAa,CAChE,CAAE,EAAG,EAAK,EAAa,EAAG,EAAG,EAAK,EAAa,EAAI,EAAa,CACjE,CAES,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAa,cAAc,CAIlC,eAAe,GAAc,EAAQ,EAAM,CACzC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1EC,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACtE,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,EAAG,CACd,CAAE,EAAGD,EAAG,EAAG,EAAG,CACd,CAAE,EAAGA,EAAI,EAAIC,EAAI,EAAG,EAAG,CAACA,EAAG,CAC3B,CAAE,EAAG,GAAKA,EAAI,EAAG,EAAG,CAACA,EAAG,CACzB,CACG,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKiC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CAC5C,EAAU,EAAS,WAAa,EAAW,eAAe,CAAC,KAAK,YAAa,aAAa,CAAClC,EAAI,EAAE,IAAIC,EAAI,EAAE,GAAG,CAC1G,GACF,EAAQ,KAAK,QAAS,EAAU,MAGlC,EAAU,EAAmB,EAAUD,EAAGC,EAAG,EAAO,CAWtD,OATI,GACF,EAAQ,KAAK,QAAS,EAAW,CAEnC,EAAK,MAAQD,EACb,EAAK,OAASC,EACd,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAe,gBAAgB,CAItC,eAAe,GAAS,EAAQ,EAAM,EAAS,CAC7C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1E,EAAa,KAAK,IAAI,EAAK,MAAQ,EAAQ,cAAgB,EAAG,GAAM,OAAS,EAAE,CAC/E,EAAc,KAAK,IAAI,EAAK,OAAS,EAAQ,cAAgB,EAAG,GAAM,QAAU,EAAE,CAClFH,EAAI,CAAC,EAAa,EAClBC,EAAI,CAAC,EAAc,EACrB,EACA,CAAE,KAAI,MAAO,EACX,CAAE,aAAc,EAKtB,GAJI,GAAS,IAAM,EAAQ,KACzB,EAAK,EAAQ,GACb,EAAK,EAAQ,IAEX,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKoC,EAAQ,IAAI,EAAS,CAC1B,EAAW,EAAkB,EAAM,EAAE,CAAC,CACtC,EAAY,GAAM,EAAK,EAAG,KAAK,EAAuBrC,EAAGC,EAAG,EAAY,EAAa,GAAM,EAAE,CAAE,EAAS,CAAG,EAAG,UAAUD,EAAGC,EAAG,EAAY,EAAa,EAAS,CACtK,EAAQ,EAAS,WAAa,EAAW,eAAe,CACxD,EAAM,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,MAE1F,EAAQ,EAAS,OAAO,OAAQ,eAAe,CAC/C,EAAM,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,KAAM,EAAoB,EAAG,CAAC,CAAC,KAAK,KAAM,EAAoB,EAAG,CAAC,CAAC,KAAK,IAAKD,EAAE,CAAC,KAAK,IAAKC,EAAE,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,SAAU,EAAY,CAShO,OAPA,EAAiB,EAAM,EAAM,CAC7B,EAAK,cAAgB,SAAS,EAAQ,EAAO,CAC3C,OAAO,EAAkB,KAAK,EAAQ,EAAM,EAE9C,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAU,WAAW,CAG5B,eAAe,GAAU,EAAQ,EAAM,CACrC,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,QAAQ,CACpE,EAAQ,EAAS,OAAO,OAAQ,eAAe,CAarD,OAVA,EAAM,KAAK,QAFQ,GAEY,CAAC,KAAK,SADjB,GACuC,CAC3D,EAAS,KAAK,QAAS,kBAAkB,CACzC,EAAM,KACJ,YACA,aAAa,EAAE,EAAK,MAAQ,IAAM,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,EAAE,EAAK,OAAS,IAAM,EAAK,GAAK,EAAK,KAAO,IAAI,GAClH,CACD,EAAiB,EAAM,EAAM,CAC7B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAW,YAAY,CAI9B,eAAe,GAAU,EAAQ,EAAM,CACrC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1EC,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAI,GAAM,OAAS,EAAE,CAChEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAI,GAAM,QAAU,EAAE,CAClE,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,EAAG,CACd,CAAE,EAAGD,EAAI,EAAIC,EAAI,EAAG,EAAG,EAAG,CAC1B,CAAE,EAAGD,EAAG,EAAG,CAACC,EAAG,CACf,CAAE,EAAG,EAAE,EAAIA,GAAK,EAAG,EAAG,CAACA,EAAG,CAC3B,CACG,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKmC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CAC5C,EAAU,EAAS,WAAa,EAAW,eAAe,CAAC,KAAK,YAAa,aAAa,CAACpC,EAAI,EAAE,IAAIC,EAAI,EAAE,GAAG,CAC1G,GACF,EAAQ,KAAK,QAAS,EAAU,MAGlC,EAAU,EAAmB,EAAUD,EAAGC,EAAG,EAAO,CAWtD,OATI,GACF,EAAQ,KAAK,QAAS,EAAW,CAEnC,EAAK,MAAQD,EACb,EAAK,OAASC,EACd,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAW,YAAY,CAI9B,eAAe,GAAW,EAAQ,EAAM,CACtC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1ED,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAI,GAAM,OAAS,EAAE,CAChEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAI,GAAM,QAAU,EAAE,CAClE,EAAS,CACb,CAAE,EAAG,GAAKA,EAAI,EAAG,EAAG,EAAG,CACvB,CAAE,EAAGD,EAAG,EAAG,EAAG,CACd,CAAE,EAAGA,EAAI,EAAIC,EAAI,EAAG,EAAG,CAACA,EAAG,CAC3B,CAAE,EAAG,EAAG,EAAG,CAACA,EAAG,CAChB,CACG,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKoC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CAC5C,EAAU,EAAS,WAAa,EAAW,eAAe,CAAC,KAAK,YAAa,aAAa,CAACrC,EAAI,EAAE,IAAIC,EAAI,EAAE,GAAG,CAC1G,GACF,EAAQ,KAAK,QAAS,EAAU,MAGlC,EAAU,EAAmB,EAAUD,EAAGC,EAAG,EAAO,CAWtD,OATI,GACF,EAAQ,KAAK,QAAS,EAAW,CAEnC,EAAK,MAAQD,EACb,EAAK,OAASC,EACd,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAY,aAAa,CAIhC,SAAS,GAAc,EAAQ,EAAM,CACnC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,MAAQ,GACb,EAAK,WAAa,EAClB,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAe,EAAK,CAAC,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CACnG,CAAE,aAAc,EAChB,EAAQ,KAAK,IAAI,GAAI,GAAM,OAAS,EAAE,CACtC,EAAS,KAAK,IAAI,GAAI,GAAM,QAAU,EAAE,CAExC,EAAS,CACb,CAAE,EAAG,EAAO,EAAG,EAAG,CAClB,CAAE,EAAG,EAAG,EAAG,EAAS,EAAM,EAAG,CAC7B,CAAE,EAAG,EAAQ,GAAS,EAAG,EAAS,EAAM,EAAG,CAC3C,CAAE,EAAG,EAAG,EAAG,EAAI,EAAQ,CACvB,CAAE,EAAG,EAAO,EAAG,EAAS,EAAM,EAAG,CACjC,CAAE,EAAG,GAAS,EAAG,EAAS,EAAM,EAAG,CACpC,CACK,EAAKqC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAW,EAAqB,EAAO,CACvC,EAAW,EAAG,KAAK,EAAU,EAAQ,CACrC,EAAiB,EAAS,WAAa,EAAU,eAAe,CActE,OAbI,GAAa,EAAK,OAAS,aAC7B,EAAe,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEvD,GAAc,EAAK,OAAS,aAC9B,EAAe,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAE5D,EAAe,KAAK,YAAa,cAAc,EAAQ,EAAE,GAAG,CAAC,EAAO,GAAG,CACvE,EAAiB,EAAM,EAAe,CACtC,EAAK,UAAY,SAAS,EAAO,CAG/B,OAFA,EAAI,KAAK,0BAA2B,EAAM,EAAM,CACpC,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAe,gBAAgB,CAItC,IAAI,GAAuC,GAAQ,EAAG,EAAG,EAAO,EAAQ,EAAI,EAAI,IACvE,CACL,IAAIxC,EAAE,GAAGC,EAAI,IACb,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAC5B,IAAI,EAAG,GAAG,EAAG,SAAS,CAAC,EAAM,IAC7B,MAAM,IACN,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAC5B,MAAM,CAAC,IACP,IAAID,EAAE,GAAGC,EAAI,EAAK,IAClB,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAC7B,CAAC,KAAK,IAAI,CACV,sBAAsB,CACrB,GAA4C,GAAQ,EAAG,EAAG,EAAO,EAAQ,EAAI,EAAI,IAC5E,CACL,IAAID,EAAE,GAAGC,EAAI,IACb,IAAID,EAAI,EAAM,GAAGC,EAAI,IACrB,IAAI,EAAG,GAAG,EAAG,SAAS,CAAC,EAAM,IAC7B,MAAM,IACN,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAC5B,MAAM,CAAC,IACP,IAAID,EAAE,GAAGC,EAAI,EAAK,IAClB,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAC7B,CAAC,KAAK,IAAI,CACV,2BAA2B,CAC1B,GAA4C,GAAQ,EAAG,EAAG,EAAO,EAAQ,EAAI,IACxE,CAAC,IAAID,EAAI,EAAQ,EAAE,GAAG,CAAC,EAAS,IAAK,IAAI,EAAG,GAAG,EAAG,SAAS,EAAM,IAAI,CAAC,KAAK,IAAI,CACrF,2BAA2B,CAC9B,eAAe,GAAc,EAAQ,EAAM,CACzC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFE,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAI,EAAK,OAAS,EAAE,CAC/D,EAAKA,EAAI,EACT,EAAK,GAAM,IAAMA,EAAI,IACrBC,EAAI,KAAK,IAAI,EAAK,OAAS,GAAM,EAAK,SAAW,GAAI,EAAK,QAAU,EAAE,CACtE,EAAcA,EAAI,GACpB,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKsC,EAAQ,IAAI,EAAS,CAC1B,EAAgB,GAA0B,EAAG,EAAGvC,EAAGC,EAAG,EAAI,EAAI,EAAY,CAC1E,EAAgB,GAA0B,EAAG,EAAID,EAAGC,EAAG,EAAI,EAAG,CAC9D,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAY,EAAG,KAAK,EAAe,EAAQ,CAC3C,EAAY,EAAG,KAAK,EAAe,EAAQ,CAC7B,EAAS,WAAa,EAAW,eAAe,CACxD,KAAK,QAAS,OAAO,CACjC,EAAY,EAAS,WAAa,EAAW,eAAe,CAC5D,EAAU,KAAK,QAAS,wBAAwB,CAC5C,GACF,EAAU,KAAK,QAAS,EAAU,KAE/B,CACL,IAAM,EAAW,GAAqB,EAAG,EAAGD,EAAGC,EAAG,EAAI,EAAI,EAAY,CACtE,EAAY,EAAS,OAAO,OAAQ,eAAe,CAAC,KAAK,IAAK,EAAS,CAAC,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,CAAC,KAAK,QAAS,EAAW,CAyBxL,OAvBA,EAAU,KAAK,iBAAkB,EAAG,CACpC,EAAU,KAAK,YAAa,aAAa,CAACD,EAAI,EAAE,IAAI,EAAEC,EAAI,EAAI,GAAI,GAAG,CACrE,EAAiB,EAAM,EAAU,CACjC,EAAM,KACJ,YACA,aAAa,EAAE,EAAK,MAAQ,IAAM,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,EAAE,EAAK,OAAS,GAAK,GAAM,EAAK,GAAK,EAAK,KAAO,IAAI,GACvH,CACD,EAAK,UAAY,SAAS,EAAO,CAC/B,IAAM,EAAM,EAAkB,KAAK,EAAM,EAAM,CACzCH,EAAI,EAAI,GAAK,EAAK,GAAK,GAC7B,GAAI,GAAM,IAAM,KAAK,IAAIA,EAAE,EAAI,EAAK,OAAS,GAAK,GAAK,KAAK,IAAIA,EAAE,GAAK,EAAK,OAAS,GAAK,GAAK,KAAK,IAAI,EAAI,GAAK,EAAK,GAAK,GAAG,EAAI,EAAK,QAAU,GAAK,EAAI,GAAK,CAC7J,IAAIC,EAAI,EAAK,GAAM,EAAID,EAAIA,GAAK,EAAK,IACjCC,EAAI,IACN,EAAI,KAAK,KAAKA,EAAE,EAElB,EAAI,EAAKA,EACL,EAAM,GAAK,EAAK,GAAK,GAAK,IAC5B,EAAI,CAACA,GAEP,EAAI,GAAKA,EAEX,OAAO,GAEF,EAET,EAAO,GAAe,gBAAgB,CAItC,eAAe,GAAmB,EAAQ,EAAM,CAC9C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFC,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACtE,EAAgBA,EAAI,EACpB,EAASA,EAAI,EACb,CAAE,aAAc,EAChB,EAAKuC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAG,CAACxC,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAAC,EAAS,EAAG,CAC3C,CAAE,EAAG,CAACA,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,EAAS,EAAG,CAC1C,GAAG,EACD,CAACA,EAAI,EAAIA,EAAI,EAAI,GACjB,EAAS,EACTA,EAAI,EAAIA,EAAI,EAAI,GAChB,EAAS,EACT,EACA,GACD,CACD,CAAE,EAAGA,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAAC,EAAS,EAAG,CAC1C,CAAE,EAAG,CAACA,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAAC,EAAS,EAAG,CAC3C,CAAE,EAAG,CAACA,EAAI,EAAG,EAAG,CAAC,EAAS,EAAG,CAC7B,CAAE,EAAG,CAACA,EAAI,EAAG,EAAG,EAAS,EAAI,IAAK,CAClC,CAAE,EAAG,CAACA,EAAI,EAAG,EAAG,CAAC,EAAS,EAAG,CAC9B,CACK,EAAO,EAAG,QACd,EAAO,IAAK,GAAM,CAACH,EAAE,EAAGA,EAAE,EAAE,CAAC,CAC7B,EACD,CACK,EAAe,EAAS,WAAa,EAAM,eAAe,CAkBhE,OAjBA,EAAa,KAAK,QAAS,wBAAwB,CAC/C,GAAa,EAAK,OAAS,aAC7B,EAAa,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAa,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAa,KAAK,YAAa,eAAe,CAAC,EAAgB,EAAE,GAAG,CACpE,EAAM,KACJ,YACA,aAAa,CAACG,EAAI,GAAK,EAAK,SAAW,GAAKA,EAAI,EAAI,GAAM,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,CAACC,EAAI,GAAK,EAAK,SAAW,GAAK,EAAgB,GAAK,EAAK,GAAK,EAAK,KAAO,IAAI,GAC5K,CACD,EAAiB,EAAM,EAAa,CACpC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAoB,qBAAqB,CAIhD,eAAe,GAAU,EAAQ,EAAM,CACrC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFD,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CAEtEH,EAAI,CAACE,EAAI,EACTD,EAAI,CAACE,EAAI,EACT,CAAE,aAAc,EAChB,EAAKwC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAkB,CACtB,CAAE,EAAG3C,EAAI,EAAY,EAAGC,EAAI,EAAY,CACxC,CAAE,EAAGD,EAAI,EAAY,EAAGC,EAAIE,EAAI,EAAY,CAC5C,CAAE,EAAGH,EAAIE,EAAI,EAAY,EAAGD,EAAIE,EAAI,EAAY,CAChD,CAAE,EAAGH,EAAIE,EAAI,EAAY,EAAGD,EAAIE,EAAG,CACnC,CAAE,EAAGH,EAAIE,EAAG,EAAGD,EAAIE,EAAG,CACtB,CAAE,EAAGH,EAAIE,EAAG,EAAGD,EAAIE,EAAI,EAAY,CACnC,CAAE,EAAGH,EAAIE,EAAI,EAAY,EAAGD,EAAIE,EAAI,EAAY,CAChD,CAAE,EAAGH,EAAIE,EAAI,EAAY,EAAGD,EAAI,EAAY,CAC5C,CAAE,EAAGD,EAAI,EAAY,EAAGC,EAAI,EAAY,CACxC,CAAE,EAAGD,EAAI,EAAY,EAAA,EAAG,CACxB,CAAE,EAAA,EAAG,EAAA,EAAG,CACR,CAAE,EAAA,EAAG,EAAGC,EAAI,EAAY,CACzB,CACK,EAAkB,CACtB,CAAE,EAAA,EAAG,EAAGA,EAAI,EAAY,CACxB,CAAE,EAAGD,EAAIE,EAAI,EAAY,EAAGD,EAAI,EAAY,CAC5C,CAAE,EAAGD,EAAIE,EAAI,EAAY,EAAGD,EAAIE,EAAG,CACnC,CAAE,EAAGH,EAAIE,EAAG,EAAGD,EAAIE,EAAG,CACtB,CAAE,EAAGH,EAAIE,EAAG,EAAA,EAAG,CACf,CAAE,EAAA,EAAG,EAAA,EAAG,CACT,CACG,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAY,EAAqB,EAAgB,CACjD,EAAY,EAAG,KAAK,EAAW,EAAQ,CACvC,EAAY,EAAqB,EAAgB,CACjD,EAAY,EAAG,KAAK,EAAW,CAAE,GAAG,EAAS,KAAM,OAAQ,CAAC,CAC5D,EAAa,EAAS,WAAa,EAAW,eAAe,CAkBnE,OAjBA,EAAW,WAAa,EAAW,eAAe,CAClD,EAAW,KAAK,QAAS,wBAAwB,CAC7C,GAAa,EAAK,OAAS,aAC7B,EAAW,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEnD,GAAc,EAAK,OAAS,aAC9B,EAAW,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAExD,EAAM,KACJ,YACA,aAAa,EAAE,EAAK,MAAQ,GAAK,GAAc,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,EAAE,EAAK,OAAS,GAAK,GAAc,EAAK,GAAK,EAAK,KAAO,IAAI,GAC5I,CACD,EAAiB,EAAM,EAAW,CAClC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAiB,EAAM,EAG9D,EAET,EAAO,GAAW,YAAY,CAI9B,eAAe,GAAwB,EAAQ,EAAM,CACnD,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFA,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACtE,EAAgBA,EAAI,EACpB,EAASA,EAAI,EACbH,EAAI,CAACE,EAAI,EACTD,EAAI,CAAC,EAAS,EAEd,CAAE,aAAc,EAChB,EAAa,EACjBD,EAAI,EACJC,EAAI,EAAS,EACbD,EAAIE,EAAI,EACRD,EAAI,EAAS,EACb,EACA,GACD,CACK,EAAgB,IAAa,EAAW,OAAS,GACjD,EAAkB,CACtB,CAAE,EAAGD,EAAI,EAAY,EAAGC,EAAI,EAAY,CACxC,CAAE,EAAGD,EAAI,EAAY,EAAGC,EAAI,EAAS,EAAY,CACjD,GAAG,EACH,CAAE,EAAGD,EAAIE,EAAI,EAAY,EAAG,EAAc,EAAI,EAAY,CAC1D,CAAE,EAAGF,EAAIE,EAAG,EAAG,EAAc,EAAI,EAAY,CAC7C,CAAE,EAAGF,EAAIE,EAAG,EAAG,EAAc,EAAI,GAAgB,CACjD,CAAE,EAAGF,EAAIE,EAAI,EAAY,EAAG,EAAc,EAAI,GAAgB,CAC9D,CAAE,EAAGF,EAAIE,EAAI,EAAY,EAAGD,EAAI,EAAY,CAC5C,CAAE,EAAGD,EAAI,EAAY,EAAGC,EAAI,EAAY,CACxC,CAAE,EAAGD,EAAI,EAAY,EAAA,EAAG,CACxB,CAAE,EAAA,EAAG,EAAA,EAAG,CACR,CAAE,EAAA,EAAG,EAAGC,EAAI,EAAY,CACzB,CACK,EAAkB,CACtB,CAAE,EAAA,EAAG,EAAGA,EAAI,EAAY,CACxB,CAAE,EAAGD,EAAIE,EAAI,EAAY,EAAGD,EAAI,EAAY,CAC5C,CAAE,EAAGD,EAAIE,EAAI,EAAY,EAAG,EAAc,EAAI,EAAY,CAC1D,CAAE,EAAGF,EAAIE,EAAG,EAAG,EAAc,EAAI,EAAY,CAC7C,CAAE,EAAGF,EAAIE,EAAG,EAAA,EAAG,CACf,CAAE,EAAA,EAAG,EAAA,EAAG,CACT,CACK,EAAK0C,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAY,EAAqB,EAAgB,CACjD,EAAY,EAAG,KAAK,EAAW,EAAQ,CACvC,EAAY,EAAqB,EAAgB,CACjD,EAAY,EAAG,KAAK,EAAW,EAAQ,CACvC,EAAQ,EAAS,WAAa,EAAW,eAAe,CAmB9D,OAlBA,EAAM,WAAa,EAAU,CAC7B,EAAM,KAAK,QAAS,wBAAwB,CACxC,GAAa,EAAK,OAAS,aAC7B,EAAM,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAE9C,GAAc,EAAK,OAAS,aAC9B,EAAM,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAEnD,EAAM,KAAK,YAAa,eAAe,CAAC,EAAgB,EAAE,GAAG,CAC7D,EAAM,KACJ,YACA,aAAa,EAAE,EAAK,MAAQ,GAAK,GAAc,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,EAAE,EAAK,OAAS,GAAK,EAAa,EAAgB,GAAK,EAAK,GAAK,EAAK,KAAO,IAAI,GAChK,CACD,EAAiB,EAAM,EAAM,CAC7B,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAiB,EAAM,EAG9D,EAET,EAAO,GAAyB,0BAA0B,CAI1D,eAAe,GAAK,EAAQ,EAAM,CAAE,OAAQ,CAAE,mBAAoB,CAChE,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EACI,EAAK,eAAiB,GAAW,CAAC,WAAW,aAAe,KAEhF,EAAK,YAAc,IAErB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjF,EAAa,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CAC7E,EAAc,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CAChF5C,EAAI,CAAC,EAAa,EAClBC,EAAI,CAAC,EAAc,EACnB,CAAE,aAAc,EAChB,EAAK4C,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,CACtC,KAAM,EAAe,aACrB,OAAQ,EAAe,gBACxB,CAAC,CACE,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAgB,EAAG,UAAU7C,EAAGC,EAAG,EAAY,EAAa,EAAQ,CACpE,EAAQ,EAAS,WAAa,EAAe,eAAe,CAgBlE,OAfA,EAAM,KAAK,QAAS,wBAAwB,CACxC,GAAa,EAAK,OAAS,aAC7B,EAAM,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAE9C,GAAc,EAAK,OAAS,aAC9B,EAAM,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAEnD,EAAM,KACJ,YACA,aAAa,CAAC,EAAK,MAAQ,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,EAAE,EAAK,OAAS,IAAM,EAAK,GAAK,EAAK,KAAO,IAAI,GAChH,CACD,EAAiB,EAAM,EAAM,CAC7B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAM,OAAO,CAIpB,IAAI,GAAyC,GAAQ,EAAG,EAAG,IAClD,CACL,IAAID,EAAI,EAAO,EAAE,GAAGC,IACpB,IAAID,EAAI,EAAK,GAAGC,EAAI,EAAO,IAC3B,IAAID,EAAI,EAAO,EAAE,GAAGC,EAAI,IACxB,IAAID,EAAE,GAAGC,EAAI,EAAO,IACpB,IACD,CAAC,KAAK,IAAI,CACV,yBAAyB,CAC5B,eAAe,GAAS,EAAQ,EAAM,CACpC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAG1EI,EAFI,EAAK,MAAQ,EAAK,SAClB,EAAK,OAAS,EAAK,SAEvB,EAAa,GACb,EAAS,CACb,CAAE,EAAGA,EAAI,EAAG,EAAG,EAAG,CAClB,CAAE,EAAGA,EAAG,EAAG,CAACA,EAAI,EAAG,CACnB,CAAE,EAAGA,EAAI,EAAG,EAAG,CAACA,EAAG,CACnB,CAAE,EAAG,EAAG,EAAG,CAACA,EAAI,EAAG,CACpB,CACG,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKyC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAW,GAAuB,EAAG,EAAGzC,EAAE,CAC1C,EAAY,EAAG,KAAK,EAAU,EAAQ,CAC5C,EAAU,EAAS,WAAa,EAAW,eAAe,CAAC,KAAK,YAAa,aAAa,CAACA,EAAI,EAAI,EAAW,IAAIA,EAAI,EAAE,GAAG,CACvH,GACF,EAAQ,KAAK,QAAS,EAAU,MAGlC,EAAU,EAAmB,EAAUA,EAAGA,EAAG,EAAO,CACpD,EAAQ,KAAK,YAAa,aAAa,CAACA,EAAI,EAAI,EAAW,IAAIA,EAAI,EAAE,GAAG,CAoB1E,OAlBI,GACF,EAAQ,KAAK,QAAS,EAAW,CAEnC,EAAiB,EAAM,EAAQ,CAC/B,EAAK,cAAgB,SAAS,EAAQ,EAAO,CAC3C,IAAM,EAAK,EAAO,MACZ,EAAU,CACd,CAAE,EAAG,EAAK,EAAG,EAAG,EAAG,CACnB,CAAE,EAAG,EAAI,EAAG,CAAC,EAAK,EAAG,CACrB,CAAE,EAAG,EAAK,EAAG,EAAG,CAAC,EAAI,CACrB,CAAE,EAAG,EAAG,EAAG,CAAC,EAAK,EAAG,CACrB,CACK,EAAM,EAAkB,QAAQ,EAAQ,EAAS,EAAM,CAC7D,MAAO,CAAE,EAAG,EAAI,EAAI,GAAK,EAAG,EAAI,EAAI,GAAK,EAE3C,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,KAAK,cAAc,EAAM,EAAM,EAEjC,EAET,EAAO,GAAU,WAAW,CAI5B,eAAe,GAAoB,EAAQ,EAAM,CAC/C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFH,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAI,GAAM,OAAS,EAAE,CAChEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAI,GAAM,QAAU,EAAE,CAClEH,EAAI,CAACE,EAAI,EACTD,EAAI,CAACE,EAAI,EACT,EAAQF,EAAI,EACZ,EAAS,CACb,CAAE,EAAGD,EAAI,EAAO,EAAA,EAAG,CACnB,CAAE,EAAA,EAAG,EAAG,EAAG,CACX,CAAE,EAAGA,EAAI,EAAO,EAAG,CAACC,EAAG,CACvB,CAAE,EAAG,CAACD,EAAG,EAAG,CAACC,EAAG,CAChB,CAAE,EAAG,CAACD,EAAG,EAAA,EAAG,CACb,CACK,CAAE,aAAc,EAChB,EAAK+C,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAiBhE,OAhBA,EAAQ,KAAK,QAAS,wBAAwB,CAC1C,GAAa,EAAK,OAAS,aAC7B,EAAQ,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEhD,GAAc,EAAK,OAAS,aAC9B,EAAQ,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAErD,EAAQ,KAAK,YAAa,aAAa,CAAC,EAAQ,EAAE,KAAK,CACvD,EAAM,KACJ,YACA,aAAa,CAAC,EAAQ,EAAI,EAAK,MAAQ,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,EAAE,EAAK,OAAS,IAAM,EAAK,GAAK,EAAK,KAAO,IAAI,GAC5H,CACD,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAqB,sBAAsB,CAKlD,eAAe,GAAc,EAAQ,EAAM,CACzC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,IAAI,EACJ,AACE,EADG,EAAK,WAGE,QAAU,EAAK,WAFf,eAIZ,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAQ,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CACtFC,EAAI,EAAS,OAAO,IAAI,CACxB,EAAQ,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,QAAQ,CAAC,KAAK,QAAS,EAAW,CAC7E,EAAc,EAAK,YACnB,EAAQ,EAAK,MACb,EAAQ,EAAM,MAAM,CAAC,YAAY,MAAM,GAAoB,EAAO,EAAK,WAAY,GAAM,GAAK,CAAC,CACjG,EAAO,CAAE,MAAO,EAAG,OAAQ,EAAG,CAClC,GAAI,EAAS,GAAY,EAAE,WAAW,WAAW,CAAE,CACjD,IAAM,EAAO,EAAM,SAAS,GACtB,EAAMC,EAAQ,EAAM,CAC1B,EAAO,EAAK,uBAAuB,CACnC,EAAI,KAAK,QAAS,EAAK,MAAM,CAC7B,EAAI,KAAK,SAAU,EAAK,OAAO,CAEjC,EAAI,KAAK,SAAU,EAAY,CAC/B,IAAM,EAAW,GAAe,EAAE,CAC5B,EAAW,EAAM,SAAS,CAC1B,EAAQ,EAAM,MAAM,CAAC,YACzB,MAAM,GACJ,EAAS,KAAO,EAAS,KAAK,QAAQ,CAAG,EACzC,EAAK,WACL,GACA,GACD,CACF,CACK,EAAM,EAAM,SAAS,GACrB,EAAKA,EAAQ,EAAM,CACzB,EAAO,EAAI,uBAAuB,CAClC,EAAG,KAAK,QAAS,EAAK,MAAM,CAC5B,EAAG,KAAK,SAAU,EAAK,OAAO,CAC9B,IAAM,GAAe,EAAK,SAAW,GAAK,EAC1C,EAAQ,EAAM,CAAC,KACb,YACA,eAAiB,EAAK,MAAQ,EAAS,MAAQ,GAAK,EAAS,MAAQ,EAAK,OAAS,GAAK,MAAQ,EAAS,OAAS,EAAc,GAAK,IACtI,CACD,EAAQ,EAAM,CAAC,KACb,YACA,eAAiB,EAAK,MAAQ,EAAS,MAAQ,EAAI,EAAE,EAAS,MAAQ,EAAK,OAAS,GAAK,OAC1F,CACD,EAAO,EAAM,MAAM,CAAC,SAAS,CAC7B,EAAM,KACJ,YACA,aAAe,CAAC,EAAK,MAAQ,EAAI,MAAQ,CAAC,EAAK,OAAS,EAAI,EAAc,GAAK,IAChF,CACD,IAAM,EAAa,EAAK,OAAS,EAAK,SAAW,GAC3C,EAAc,EAAK,QAAU,EAAK,SAAW,GAC7CjD,EAAI,CAAC,EAAK,MAAQ,EAAI,EACtBC,EAAI,CAAC,EAAK,OAAS,EAAI,EACzB,EACA,EACJ,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKiD,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAY,EAAG,KACnB,EAAuBlD,EAAGC,EAAG,EAAY,EAAa,EAAK,IAAM,EAAE,CACnE,EACD,CACK,EAAY,EAAG,KACnB,CAAC,EAAK,MAAQ,EAAI,EAClB,CAAC,EAAK,OAAS,EAAI,EAAc,EAAS,OAAS,EACnD,EAAK,MAAQ,EAAI,EACjB,CAAC,EAAK,OAAS,EAAI,EAAc,EAAS,OAAS,EACnD,EACD,CACD,EAAY,EAAS,YACnB,EAAI,MAAM,wBAAyB,EAAU,CACtC,GACN,eAAe,CAClB,EAAQ,EAAS,YACf,EAAI,MAAM,wBAAyB,EAAU,CACtC,GACN,eAAe,MAElB,EAAQ+C,EAAE,OAAO,OAAQ,eAAe,CACxC,EAAYA,EAAE,OAAO,OAAO,CAC5B,EAAM,KAAK,QAAS,oBAAoB,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,IAAK,CAAC,EAAK,MAAQ,EAAI,EAAY,CAAC,KAAK,IAAK,CAAC,EAAK,OAAS,EAAI,EAAY,CAAC,KAAK,QAAS,EAAK,OAAS,EAAK,SAAW,GAAG,CAAC,KAAK,SAAU,EAAK,QAAU,EAAK,SAAW,GAAG,CACvP,EAAU,KAAK,QAAS,UAAU,CAAC,KAAK,KAAM,CAAC,EAAK,MAAQ,EAAI,EAAY,CAAC,KAAK,KAAM,EAAK,MAAQ,EAAI,EAAY,CAAC,KAAK,KAAM,CAAC,EAAK,OAAS,EAAI,EAAc,EAAS,OAAS,EAAY,CAAC,KAAK,KAAM,CAAC,EAAK,OAAS,EAAI,EAAc,EAAS,OAAS,EAAY,CAM7Q,OAJA,EAAiB,EAAM,EAAM,CAC7B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAe,gBAAgB,CAItC,SAAS,GAAmB,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAW,CAC7D,IACM,GAAQ,EAAK,GAAM,EACnB,GAAQ,EAAK,GAAM,EACnB,EAAQ,KAAK,MAAM,EAAK,EAAI,EAAK,EAAG,CACpC,GAAM,EAAK,GAAM,EACjB,GAAM,EAAK,GAAM,EACjB,EAAe,EAAK,EACpB,EAAe,EAAK,EACpB,EAAW,KAAK,KAAK,GAAgB,EAAI,GAAgB,EAAE,CACjE,GAAI,EAAW,EACb,MAAU,MAAM,qEAAqE,CAEvF,IAAM,EAAuB,KAAK,KAAK,EAAI,GAAY,EAAE,CACnD,EAAU,EAAO,EAAuB,EAAK,KAAK,IAAI,EAAM,EAAI,EAAY,GAAK,GACjF,EAAU,EAAO,EAAuB,EAAK,KAAK,IAAI,EAAM,EAAI,EAAY,GAAK,GACjF,EAAa,KAAK,OAAO,EAAK,GAAW,GAAK,EAAK,GAAW,EAAG,CAEnE,EADa,KAAK,OAAO,EAAK,GAAW,GAAK,EAAK,GAAW,EAAG,CACzC,EACxB,GAAa,EAAa,IAC5B,GAAc,EAAI,KAAK,IAErB,CAAC,GAAa,EAAa,IAC7B,GAAc,EAAI,KAAK,IAEzB,IAAM,EAAS,EAAE,CACjB,IAAK,IAAIlD,EAAI,EAAGA,EAAI,GAAW,IAAK,CAElC,IAAM,EAAS,EADLA,EAAK,GACiB,EAC1BE,EAAI,EAAU,EAAK,KAAK,IAAI,EAAO,CACnCC,EAAI,EAAU,EAAK,KAAK,IAAI,EAAO,CACzC,EAAO,KAAK,CAAE,EAAA,EAAG,EAAA,EAAG,CAAC,CAEvB,OAAO,EAET,EAAO,GAAoB,oBAAoB,CAC/C,eAAe,GAAY,EAAQ,EAAM,CACvC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1E,EAAgB,GAAM,SAAW,EACjC,EAAgB,GAAM,SAAW,EACjCC,GAAK,GAAM,MAAQ,GAAM,MAAQ,EAAK,OAAS,EAAgB,EAC/DC,GAAK,GAAM,OAAS,GAAM,OAAS,EAAK,QAAU,EAAgB,EAClE,EAAS,EAAK,QAAU,EACxB,EAAQ,EAAK,OAAS,EACtB,CAAE,aAAc,EAChB,EAAKgD,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,SACP,EAAQ,OAAS,EAAK,QAEpB,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CAEb,CAAE,EAAG,CAACjD,EAAI,EAAI,EAAO,EAAG,CAACC,EAAI,EAAG,CAEhC,CAAE,EAAGD,EAAI,EAAI,EAAO,EAAG,CAACC,EAAI,EAAG,CAE/B,GAAG,GAAmBD,EAAI,EAAI,EAAO,CAACC,EAAI,EAAGD,EAAI,EAAG,CAACC,EAAI,EAAI,EAAO,EAAQ,EAAQ,GAAK,CAGzF,CAAE,EAAGD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAO,CAE/B,CAAE,EAAGD,EAAI,EAAG,EAAGC,EAAI,EAAI,EAAO,CAE9B,GAAG,GAAmBD,EAAI,EAAGC,EAAI,EAAI,EAAOD,EAAI,EAAI,EAAOC,EAAI,EAAG,EAAQ,EAAQ,GAAK,CAGvF,CAAE,EAAGD,EAAI,EAAI,EAAO,EAAGC,EAAI,EAAG,CAE9B,CAAE,EAAG,CAACD,EAAI,EAAI,EAAO,EAAGC,EAAI,EAAG,CAE/B,GAAG,GAAmB,CAACD,EAAI,EAAI,EAAOC,EAAI,EAAG,CAACD,EAAI,EAAGC,EAAI,EAAI,EAAO,EAAQ,EAAQ,GAAK,CAGzF,CAAE,EAAG,CAACD,EAAI,EAAG,EAAGC,EAAI,EAAI,EAAO,CAE/B,CAAE,EAAG,CAACD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,EAAO,CAEhC,GAAG,GAAmB,CAACD,EAAI,EAAG,CAACC,EAAI,EAAI,EAAO,CAACD,EAAI,EAAI,EAAO,CAACC,EAAI,EAAG,EAAQ,EAAQ,GAAK,CAE5F,CACK,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAahE,OAZA,EAAQ,KAAK,QAAS,mCAAmC,CACrD,GAAa,EAAK,OAAS,aAC7B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAa,cAAc,CAIlC,eAAe,GAAc,EAAQ,EAAM,CACzC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjF,EAAc,GAAM,SAAW,EAC/BD,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACtEH,EAAI,CAAC,EAAK,MAAQ,EAAI,EACtBC,EAAI,CAAC,EAAK,OAAS,EAAI,EACvB,CAAE,aAAc,EAChB,EAAKmD,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAA,EAAG,EAAA,EAAG,CACR,CAAE,EAAGpD,EAAIE,EAAI,EAAG,EAAA,EAAG,CACnB,CAAE,EAAGF,EAAIE,EAAI,EAAG,EAAGD,EAAIE,EAAG,CAC1B,CAAE,EAAGH,EAAI,EAAG,EAAGC,EAAIE,EAAG,CACtB,CAAE,EAAGH,EAAI,EAAG,EAAA,EAAG,CACf,CAAE,EAAA,EAAG,EAAA,EAAG,CACR,CAAE,EAAA,EAAG,EAAGC,EAAIE,EAAG,CAChB,CACK,EAAY,EAAG,QACnB,EAAO,IAAK,GAAM,CAACJ,EAAE,EAAGA,EAAE,EAAE,CAAC,CAC7B,EACD,CACK,EAAQ,EAAS,WAAa,EAAW,eAAe,CAgB9D,OAfA,EAAM,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,CACtF,GAAc,EAAK,OAAS,aAC9B,EAAM,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAE/C,GAAa,EAAK,OAAS,aAC7B,EAAM,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAEnD,EAAM,KACJ,YACA,aAAa,CAACG,EAAI,EAAI,GAAK,EAAK,SAAW,IAAM,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,CAACC,EAAI,GAAK,EAAK,SAAW,IAAM,EAAK,GAAK,EAAK,KAAO,IAAI,GAC1I,CACD,EAAiB,EAAM,EAAM,CAC7B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAe,gBAAgB,CAItC,eAAe,GAAW,EAAQ,EAAM,CACtC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFD,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACtEH,EAAI,CAACE,EAAI,EACTD,EAAI,CAACE,EAAI,EACT,CAAE,aAAc,EAChB,EAAKkD,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAA,EAAG,EAAA,EAAG,CACR,CAAE,EAAA,EAAG,EAAGpD,EAAIE,EAAG,CACf,CAAE,EAAGH,EAAIE,EAAG,EAAGD,EAAIE,EAAG,CACtB,CAAE,EAAGH,EAAIE,EAAG,EAAGD,EAAIE,EAAI,EAAG,CAC3B,CACK,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAkBhE,OAjBA,EAAQ,KAAK,QAAS,wBAAwB,CAC1C,GAAa,EAAK,OAAS,aAC7B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAQ,KAAK,YAAa,gBAAgBA,EAAI,EAAE,GAAG,CACnD,EAAM,KACJ,YACA,aAAa,CAACD,EAAI,GAAK,EAAK,SAAW,IAAM,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,CAACC,EAAI,GAAK,EAAK,SAAW,IAAM,EAAK,GAAK,EAAK,KAAO,IAAI,GACvI,CACD,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAY,aAAa,CAGhC,eAAe,GAAY,EAAQ,EAAM,CAQvC,OAAO,GAAS,EAAQ,EAPR,CACd,GAAI,EACJ,GAAI,EACJ,QAAS,GACT,cAAe,EAAK,gBAAkB,GAAM,SAAW,GAAK,EAC5D,eAAgB,GAAM,SAAW,GAAK,EACvC,CACqC,CAExC,EAAO,GAAa,aAAa,CAIjC,eAAe,GAAQ,EAAQ,EAAM,CACnC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1EA,EAAI,EAAK,OAAS,EAAK,QACvBD,EAAI,EAAK,MAAQC,EAAI,EAAI,EAAK,QAC9B,EAASA,EAAI,EACb,CAAE,aAAc,EAChB,EAAKmD,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAG,CAACpD,EAAI,EAAI,EAAQ,EAAG,CAACC,EAAI,EAAG,CACjC,CAAE,EAAGD,EAAI,EAAI,EAAQ,EAAG,CAACC,EAAI,EAAG,CAChC,GAAG,GAAqB,CAACD,EAAI,EAAI,EAAQ,EAAG,EAAQ,GAAI,GAAI,IAAI,CAChE,CAAE,EAAGA,EAAI,EAAI,EAAQ,EAAGC,EAAI,EAAG,CAC/B,GAAG,GAAqBD,EAAI,EAAI,EAAQ,EAAG,EAAQ,GAAI,IAAK,IAAI,CACjE,CACK,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAahE,OAZA,EAAQ,KAAK,QAAS,mCAAmC,CACrD,GAAa,EAAK,OAAS,aAC7B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAS,UAAU,CAG1B,eAAe,GAAM,EAAQ,EAAM,CAMjC,OAAO,GAAS,EAAQ,EALR,CACd,GAAI,EACJ,GAAI,EACJ,QAAS,iBACV,CACqC,CAExC,EAAO,GAAO,QAAQ,CAItB,SAAS,GAAS,EAAQ,EAAM,CAAE,OAAQ,CAAE,mBAAoB,CAC9D,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,aAAc,EAChB,CAAE,YAAW,cAAa,cAAe,EACzC,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,eAAe,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CAC7F,EAAKqD,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAY,EAAG,OAAO,EAAG,EAAG,GAAI,CACpC,GAAG,EACH,OAAQ,EACR,YAAa,EACd,CAAC,CACI,EAAY,GAAe,EAC3B,EAAiB,EAAG,OAAO,EAAG,EAAG,EAAG,CACxC,GAAG,EACH,KAAM,EACN,OAAQ,EACR,YAAa,EACb,UAAW,QACZ,CAAC,CACI,EAAU,EAAS,WAAa,EAAW,eAAe,CAYhE,OAXA,EAAQ,WAAa,EAAe,CAChC,GACF,EAAQ,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEhD,GACF,EAAQ,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAErD,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,OAAO,EAAM,EAAG,EAAM,EAE1C,EAET,EAAO,GAAU,WAAW,CAI5B,SAAS,GAAW,EAAQ,EAAM,CAAE,OAAQ,CAAE,mBAAoB,CAChE,GAAM,CAAE,aAAc,EAChB,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,eAAe,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CAC/F,EACJ,GAAI,EAAK,OAAS,YAAa,CAE7B,IAAM,EADKC,EAAQ,IAAI,EAAS,CACX,OAAO,EAAG,EAAG,GAAI,EAAe,EAAU,CAAC,CAChE,EAAU,EAAS,WAAa,EAAU,CAC1C,EAAQ,KAAK,QAAS,cAAc,CAAC,KAAK,IAAK,EAAE,CAAC,KAAK,QAAS,GAAG,CAAC,KAAK,SAAU,GAAG,MAEtF,EAAU,EAAS,OAAO,SAAU,eAAe,CACnD,EAAQ,KAAK,QAAS,cAAc,CAAC,KAAK,IAAK,EAAE,CAAC,KAAK,QAAS,GAAG,CAAC,KAAK,SAAU,GAAG,CAMxF,OAJA,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,OAAO,EAAM,EAAG,EAAM,EAE1C,EAET,EAAO,GAAY,aAAa,CAIhC,eAAe,GAAW,EAAQ,EAAM,CACtC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1E,GAAe,GAAM,SAAW,GAAK,EACrCtD,EAAI,EAAK,MAAQ,EAAK,QACtBC,EAAI,EAAK,OAAS,EAAK,QACvBH,EAAI,CAAC,EAAK,MAAQ,EAAI,EACtBC,EAAI,CAAC,EAAK,OAAS,EAAI,EACvB,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,EAAG,CACd,CAAE,EAAGC,EAAG,EAAG,EAAG,CACd,CAAE,EAAGA,EAAG,EAAG,CAACC,EAAG,CACf,CAAE,EAAG,EAAG,EAAG,CAACA,EAAG,CACf,CAAE,EAAG,EAAG,EAAG,EAAG,CACd,CAAE,EAAG,GAAI,EAAG,EAAG,CACf,CAAE,EAAGD,EAAI,EAAG,EAAG,EAAG,CAClB,CAAE,EAAGA,EAAI,EAAG,EAAG,CAACC,EAAG,CACnB,CAAE,EAAG,GAAI,EAAG,CAACA,EAAG,CAChB,CAAE,EAAG,GAAI,EAAG,EAAG,CAChB,CACD,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAKsD,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAY,EAAG,UAAUzD,EAAI,EAAGC,EAAGC,EAAI,GAAIC,EAAG,EAAQ,CACtD,EAAK,EAAG,KAAKH,EAAGC,EAAGD,EAAGC,EAAIE,EAAG,EAAQ,CACrC,EAAK,EAAG,KAAKH,EAAIE,EAAGD,EAAGD,EAAIE,EAAGD,EAAIE,EAAG,EAAQ,CACnD,EAAS,WAAa,EAAI,eAAe,CACzC,EAAS,WAAa,EAAI,eAAe,CACzC,IAAM,EAAQ,EAAS,WAAa,EAAW,eAAe,CACxD,CAAE,aAAc,EACtB,EAAM,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,CAC1F,EAAiB,EAAM,EAAM,KACxB,CACL,IAAM,EAAK,EAAmB,EAAUD,EAAGC,EAAG,EAAO,CACjD,GACF,EAAG,KAAK,QAAS,EAAW,CAE9B,EAAiB,EAAM,EAAG,CAK5B,MAHA,GAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAY,aAAa,CAIhC,eAAe,GAAW,EAAQ,EAAM,CACtC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1ED,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACtEH,EAAI,CAACE,EAAI,EACTD,EAAI,CAACE,EAAI,EACT,EAAW,GAAMA,EACjB,EAAY,GAAMA,EAClB,CAAE,aAAc,EAChB,EAAKuD,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAa,CACjB,CAAE,EAAG1D,EAAI,EAAW,EAAG,EAAA,EAAG,CAC1B,CAAE,EAAGA,EAAIE,EAAI,EAAW,EAAG,EAAA,EAAG,CAC9B,CAAE,EAAGF,EAAIE,EAAI,EAAW,EAAG,EAAGD,EAAIE,EAAG,CACrC,CAAE,EAAGH,EAAI,EAAW,EAAG,EAAGC,EAAIE,EAAG,CAClC,CACK,EAAY,CAChB,CAAE,EAAGH,EAAIE,EAAI,EAAW,EAAG,EAAGD,EAAIE,EAAG,CACrC,CAAE,EAAGH,EAAIE,EAAI,EAAW,EAAG,EAAGD,EAAIE,EAAG,CACrC,CAAE,EAAGH,EAAIE,EAAI,EAAW,EAAG,EAAGD,EAAIE,EAAI,EAAW,CAClD,CACG,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAW,EAAqB,EAAW,CAC3C,EAAW,EAAG,KAAK,EAAU,EAAQ,CACrC,EAAU,EAAqB,EAAU,CACzC,EAAU,EAAG,KAAK,EAAS,CAAE,GAAG,EAAS,UAAW,QAAS,CAAC,CAC9D,EAAc,EAAS,WAAa,EAAS,eAAe,CAclE,OAbA,EAAY,WAAa,EAAU,eAAe,CAClD,EAAY,KAAK,QAAS,wBAAwB,CAC9C,GAAa,EAAK,OAAS,aAC7B,EAAY,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEpD,GAAc,EAAK,OAAS,aAC9B,EAAY,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAEzD,EAAiB,EAAM,EAAY,CACnC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAY,EAAM,EAGzD,EAET,EAAO,GAAY,aAAa,CAIhC,eAAe,GAAyB,EAAQ,EAAM,CACpD,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFD,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACtE,EAAgBA,EAAI,EACpB,EAAW,GAAMD,EACjB,EAAY,GAAMC,EAClB,EAASA,EAAI,EACb,CAAE,aAAc,EAChB,EAAKwD,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAG,CAACzD,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,EAAS,EAAG,CAC1C,GAAG,EACD,CAACA,EAAI,EAAIA,EAAI,EAAI,GACjB,EAAS,EACTA,EAAI,EAAIA,EAAI,EAAI,GAChB,EAAS,EACT,EACA,GACD,CACD,CAAE,EAAGA,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAAC,EAAS,EAAG,CAC1C,CAAE,EAAG,CAACA,EAAI,EAAIA,EAAI,EAAI,GAAK,EAAG,CAAC,EAAS,EAAG,CAC5C,CACKF,EAAI,CAACE,EAAI,EAAIA,EAAI,EAAI,GACrBD,EAAI,CAAC,EAAS,EAAI,EAAY,GAC9B,EAAY,CAChB,CAAE,EAAGD,EAAIE,EAAI,EAAU,GAAID,EAAIE,GAAK,IAAK,CACzC,CAAE,EAAGH,EAAIE,EAAG,EAAGD,EAAIE,EAAI,EAAW,CAClC,CAAE,EAAGH,EAAIE,EAAG,GAAID,EAAIE,GAAK,GAAK,CAC9B,GAAG,EACDH,EAAIE,GACHD,EAAIE,GAAK,IACVH,EAAIE,EAAI,GACPD,EAAIE,GAAK,IACV,CAACA,EAAI,IACL,GACD,CACF,CACK,EAAmB,EAAqB,EAAO,CAC/C,EAAmB,EAAG,KAAK,EAAkB,EAAQ,CACrD,EAAyB,EAAqB,EAAU,CACxD,EAAyB,EAAG,KAAK,EAAwB,CAC7D,GAAG,EACH,UAAW,QACZ,CAAC,CACI,EAAe,EAAS,WAAa,EAAwB,eAAe,CAmBlF,OAlBA,EAAa,WAAa,EAAkB,eAAe,CAC3D,EAAa,KAAK,QAAS,wBAAwB,CAC/C,GAAa,EAAK,OAAS,aAC7B,EAAa,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAa,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAa,KAAK,YAAa,eAAe,CAAC,EAAgB,EAAE,GAAG,CACpE,EAAM,KACJ,YACA,aAAa,CAACD,EAAI,GAAK,EAAK,SAAW,IAAM,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,CAACC,EAAI,GAAK,EAAK,SAAW,GAAK,EAAgB,GAAK,EAAK,GAAK,EAAK,KAAO,IAAI,GAC1J,CACD,EAAiB,EAAM,EAAa,CACpC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAA0B,2BAA2B,CAG5D,eAAe,GAAK,EAAQ,EAAM,CAChC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1E,EAAa,KAAK,IAAI,EAAK,MAAQ,EAAK,QAAS,GAAM,OAAS,EAAE,CAClE,EAAc,KAAK,IAAI,EAAK,OAAS,EAAK,QAAS,GAAM,QAAU,EAAE,CACrEH,EAAI,CAAC,EAAa,EAClBC,EAAI,CAAC,EAAc,EACnB,EAAQ,EAAS,OAAO,OAAQ,eAAe,CAMrD,OALA,EAAM,KAAK,QAAS,OAAO,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,KAAM,EAAE,CAAC,KAAK,KAAM,EAAE,CAAC,KAAK,IAAKD,EAAE,CAAC,KAAK,IAAKC,EAAE,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,SAAU,EAAY,CACjK,EAAiB,EAAM,EAAM,CAC7B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAM,OAAO,CAIpB,IAAI,GAAuC,GAAQ,EAAG,EAAG,EAAO,EAAQ,EAAI,IACnE,IAAID,EAAE,GAAGC,EAAE;OACb,EAAG,GAAG,EAAG,WAAc,CAAC,EAAO;OAC/B,EAAM;OACN,EAAG,GAAG,EAAG,WAAc,EAAO;OAC9B,EAAM,GAAG,CAAC,EAAO;OACjB,EAAG,GAAG,EAAG,WAAc,EAAO;OAC9B,CAAC,EAAM,IACX,sBAAsB,CACrB,GAA4C,GAAQ,EAAG,EAAG,EAAO,EAAQ,EAAI,IACxE,CACL,IAAID,EAAE,GAAGC,IACT,IAAID,EAAI,EAAM,GAAGC,IACjB,IAAI,EAAG,GAAG,EAAG,WAAc,CAAC,IAC5B,IAAI,CAAC,EAAM,IACX,IAAI,EAAG,GAAG,EAAG,WAAc,IAC3B,IAAI,EAAM,IACX,CAAC,KAAK,IAAI,CACV,2BAA2B,CAC1B,GAA4C,GAAQ,EAAG,EAAG,EAAO,EAAQ,EAAI,IACxE,CAAC,IAAID,EAAI,EAAQ,EAAE,GAAG,CAAC,EAAS,IAAK,IAAI,EAAG,GAAG,EAAG,WAAW,IAAS,CAAC,KAAK,IAAI,CACtF,2BAA2B,CAC9B,eAAe,GAAe,EAAQ,EAAM,CAC1C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,QAAO,eAAgB,MAAM,EACnD,EACA,EACA,EAAe,EAAK,CACrB,CACK,EAAe,EAAK,OAAS,MAAQ,EAAc,EAAI,EACvDG,EAAI,EAAK,OAAS,EAClB,EAAKA,EAAI,EACT,EAAK,GAAM,IAAMA,EAAI,IACrBD,EAAI,EAAK,MAAQ,EAAK,EACtB,CAAE,aAAc,EAClB,EACJ,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAK0D,EAAQ,IAAI,EAAS,CAC1B,EAAgB,GAA0B,EAAG,EAAG1D,EAAGC,EAAG,EAAI,EAAG,CAC7D,EAAgB,GAA0B,EAAG,EAAGD,EAAGC,EAAG,EAAI,EAAG,CAC7D,EAAY,EAAG,KAAK,EAAe,EAAkB,EAAM,EAAE,CAAC,CAAC,CAC/D,EAAY,EAAG,KAAK,EAAe,EAAkB,EAAM,CAAE,KAAM,OAAQ,CAAC,CAAC,CACnF,EAAY,EAAS,WAAa,EAAW,eAAe,CAC5D,EAAY,EAAS,WAAa,EAAW,eAAe,CAC5D,EAAU,KAAK,QAAS,wBAAwB,CAC5C,GACF,EAAU,KAAK,QAAS,EAAU,KAE/B,CACL,IAAM,EAAW,GAAqB,EAAG,EAAGD,EAAGC,EAAG,EAAI,EAAG,CACzD,EAAY,EAAS,OAAO,OAAQ,eAAe,CAAC,KAAK,IAAK,EAAS,CAAC,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,CAAC,KAAK,QAAS,EAAW,CACtL,EAAU,KAAK,QAAS,wBAAwB,CAC5C,GACF,EAAU,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAElD,GACF,EAAU,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CA0BzD,OAvBA,EAAU,KAAK,iBAAkB,EAAG,CACpC,EAAU,KAAK,YAAa,aAAa,CAACD,EAAI,EAAE,IAAIC,EAAI,EAAE,IAAI,CAC9D,EAAM,KACJ,YACA,aAAa,EAAE,EAAK,MAAQ,GAAK,GAAM,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,EAAE,EAAK,OAAS,IAAM,EAAK,GAAK,EAAK,KAAO,IAAI,GACvH,CACD,EAAiB,EAAM,EAAU,CACjC,EAAK,UAAY,SAAS,EAAO,CAC/B,IAAM,EAAM,EAAkB,KAAK,EAAM,EAAM,CACzCF,EAAI,EAAI,GAAK,EAAK,GAAK,GAC7B,GAAI,GAAM,IAAM,KAAK,IAAIA,EAAE,EAAI,EAAK,QAAU,GAAK,GAAK,KAAK,IAAIA,EAAE,GAAK,EAAK,QAAU,GAAK,GAAK,KAAK,IAAI,EAAI,GAAK,EAAK,GAAK,GAAG,EAAI,EAAK,OAAS,GAAK,EAAI,GAAK,CAC9J,IAAID,EAAI,EAAK,GAAM,EAAIC,EAAIA,GAAK,EAAK,IACjCD,GAAK,IACP,EAAI,KAAK,KAAK,KAAK,IAAIA,EAAE,CAAC,EAE5B,EAAI,EAAKA,EACL,EAAM,GAAK,EAAK,GAAK,GAAK,IAC5B,EAAI,CAACA,GAEP,EAAI,GAAKA,EAEX,OAAO,GAEF,EAET,EAAO,GAAgB,iBAAiB,CAIxC,eAAe,GAAU,EAAQ,EAAM,CACrC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAC1EE,EAAI,EAAK,MAAQ,EAAK,QACtBC,EAAI,EAAK,OAAS,EAAK,QACvB,EAAS,CACb,CAAE,EAAG,GAAKA,EAAI,EAAG,EAAG,EAAG,CACvB,CAAE,EAAGD,EAAI,EAAIC,EAAI,EAAG,EAAG,EAAG,CAC1B,CAAE,EAAGD,EAAG,EAAG,CAACC,EAAG,CACf,CAAE,EAAG,EAAG,EAAG,CAACA,EAAG,CAChB,CACG,EACE,CAAE,aAAc,EACtB,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAK0D,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CAC5C,EAAU,EAAS,WAAa,EAAW,eAAe,CAAC,KAAK,YAAa,aAAa,CAAC3D,EAAI,EAAE,IAAIC,EAAI,EAAE,GAAG,CAC1G,GACF,EAAQ,KAAK,QAAS,EAAU,MAGlC,EAAU,EAAmB,EAAUD,EAAGC,EAAG,EAAO,CAWtD,OATI,GACF,EAAQ,KAAK,QAAS,EAAW,CAEnC,EAAK,MAAQD,EACb,EAAK,OAASC,EACd,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAW,YAAY,CAI9B,eAAe,GAAoB,EAAQ,EAAM,CAC/C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAE1ED,EAAI,KAAK,IAAI,GAAU,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CAC9EC,EAAI,KAAK,IAAI,GAAW,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACjF,CAAE,aAAc,EAChB,EAAK2D,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAG,CAAC5D,EAAI,EAAI,GAAK,EAAG,CAACC,EAAI,EAAG,CAC9B,CAAE,EAAGD,EAAI,EAAI,GAAK,EAAG,CAACC,EAAI,EAAG,CAC7B,CAAE,EAAGD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,GAAK,CAC7B,CAAE,EAAGD,EAAI,EAAG,EAAGC,EAAI,EAAG,CACtB,CAAE,EAAG,CAACD,EAAI,EAAG,EAAGC,EAAI,EAAG,CACvB,CAAE,EAAG,CAACD,EAAI,EAAG,EAAG,CAACC,EAAI,EAAI,GAAK,CAC/B,CACK,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAahE,OAZA,EAAQ,KAAK,QAAS,wBAAwB,CAC1C,GAAa,EAAK,OAAS,aAC7B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAiB,EAAM,EAAQ,CAC/B,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAqB,sBAAsB,CAIlD,eAAe,GAAS,EAAQ,EAAM,CACpC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjF,EAAgB,EAAS,GAAY,CAAC,WAAW,WAAW,CAC5DD,EAAI,EAAK,OAAS,EAAK,SAAW,GAClCC,EAAID,EAAI,EAAK,OACb,EAAKA,EAAI,EAAK,OACd,EAAS,CACb,CAAE,EAAG,EAAG,EAAG,EAAG,CACd,CAAE,EAAG,EAAI,EAAG,EAAG,CACf,CAAE,EAAG,EAAK,EAAG,EAAG,CAACC,EAAG,CACrB,CACK,CAAE,aAAc,EAChB,EAAK4D,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAW,EAAqB,EAAO,CACvC,EAAY,EAAG,KAAK,EAAU,EAAQ,CACtC,EAAU,EAAS,WAAa,EAAW,eAAe,CAAC,KAAK,YAAa,aAAa,CAAC5D,EAAI,EAAE,IAAIA,EAAI,EAAE,GAAG,CAkBpH,OAjBI,GAAa,EAAK,OAAS,aAC7B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAQ,eAAe,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAK,MAAQD,EACb,EAAK,OAASC,EACd,EAAiB,EAAM,EAAQ,CAC/B,EAAM,KACJ,YACA,aAAa,CAAC,EAAK,MAAQ,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAIA,EAAI,GAAK,EAAK,QAAU,EAAK,SAAW,IAAM,EAAgB,EAAI,IAAM,EAAK,GAAK,EAAK,KAAO,KAAK,GACnK,CACD,EAAK,UAAY,SAAS,EAAO,CAE/B,OADA,EAAI,KAAK,qBAAsB,EAAM,EAAQ,EAAM,CAC5C,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAEhD,EAET,EAAO,GAAU,WAAW,CAI5B,eAAe,GAAmB,EAAQ,EAAM,CAC9C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFD,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CACtE,EAAgBA,EAAI,EACpB,EAASA,EAAI,EACb,CAAE,aAAc,EAEhB,EADW,GACWD,EACtB,EAAS,EAAW,EAAI,EAAW,EAAI,EACvC,EAAK8D,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAG,CAAC9D,EAAI,EAAI,EAAQ,EAAG,EAAS,EAAG,CACrC,GAAG,EACD,CAACA,EAAI,EAAI,EACT,EAAS,EACTA,EAAI,EAAI,EACR,EAAS,EACT,EACA,GACD,CACD,CAAE,EAAGA,EAAI,EAAI,EAAQ,EAAG,CAAC,EAAS,EAAG,CACrC,CAAE,EAAG,CAACA,EAAI,EAAI,EAAQ,EAAG,CAAC,EAAS,EAAG,CACvC,CACK,EAAmB,EAAqB,EAAO,CAC/C,EAAmB,EAAG,KAAK,EAAkB,EAAQ,CACrD,EAAe,EAAS,WAAa,EAAkB,eAAe,CAkB5E,OAjBA,EAAa,KAAK,QAAS,wBAAwB,CAC/C,GAAa,EAAK,OAAS,aAC7B,EAAa,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAErD,GAAc,EAAK,OAAS,aAC9B,EAAa,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAE1D,EAAa,KAAK,YAAa,eAAe,CAAC,EAAgB,EAAE,GAAG,CACpE,EAAM,KACJ,YACA,aAAa,CAACA,EAAI,GAAK,EAAK,SAAW,IAAM,EAAK,GAAK,EAAK,MAAQ,IAAI,GAAG,CAACC,EAAI,GAAK,EAAK,SAAW,GAAK,GAAiB,EAAK,GAAK,EAAK,KAAO,IAAI,GACtJ,CACD,EAAiB,EAAM,EAAa,CACpC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAoB,qBAAqB,CAIhD,eAAe,GAAc,EAAQ,EAAM,CACzC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,QAAS,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CAG1E,EAAY,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CAC5E,EAAa,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CAC/E,EAAc,EAAY,EAC5BD,EAAI,EACJC,EAAI,EACJD,EAAIC,EAAI,EACV,EAAID,EAAI,EAER,EAAIC,EAAI,EAEV,EAAI,KAAK,IAAID,EAAG,IAAS,CACzB,EAAI,KAAK,IAAIC,EAAG,GAAU,CAC1B,IAAM,EAAgB,KAAK,IAAIA,EAAI,GAAKA,EAAI,EAAE,CACxC,EAASA,EAAI,EAAgB,EAC7B,CAAE,aAAc,EAChB,EAAK8D,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAS,CACb,CAAE,EAAG,CAAC/D,EAAI,EAAG,EAAG,EAAS,EAAG,CAC5B,GAAG,EAA2B,CAACA,EAAI,EAAG,EAAS,EAAGA,EAAI,EAAG,EAAS,EAAG,EAAe,EAAE,CACtF,CAAE,EAAGA,EAAI,EAAG,EAAG,CAAC,EAAS,EAAG,CAC5B,GAAG,EAA2BA,EAAI,EAAG,CAAC,EAAS,EAAG,CAACA,EAAI,EAAG,CAAC,EAAS,EAAG,EAAe,GAAG,CAC1F,CACK,EAAe,EAAqB,EAAO,CAC3C,EAAe,EAAG,KAAK,EAAc,EAAQ,CAC7C,EAAW,EAAS,WAAa,EAAc,eAAe,CAapE,OAZA,EAAS,KAAK,QAAS,wBAAwB,CAC3C,GAAa,EAAK,OAAS,aAC7B,EAAS,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEjD,GAAc,EAAK,OAAS,aAC9B,EAAS,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAEtD,EAAiB,EAAM,EAAS,CAChC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAQ,EAAM,EAGrD,EAET,EAAO,GAAe,gBAAgB,CAItC,eAAe,GAAW,EAAQ,EAAM,CACtC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,SAAU,MAAM,EAAY,EAAQ,EAAM,EAAe,EAAK,CAAC,CACjFA,EAAI,KAAK,IAAI,EAAK,OAAS,EAAK,SAAW,GAAK,EAAG,GAAM,OAAS,EAAE,CACpEC,EAAI,KAAK,IAAI,EAAK,QAAU,EAAK,SAAW,GAAK,EAAG,GAAM,QAAU,EAAE,CAEtEH,EAAI,CAACE,EAAI,EACTD,EAAI,CAACE,EAAI,EACT,CAAE,aAAc,EAChB,EAAK+D,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAkB,CACtB,CAAE,EAAGlE,EAAI,EAAY,EAAGC,EAAI,EAAY,CACxC,CAAE,EAAGD,EAAI,EAAY,EAAGC,EAAIE,EAAG,CAC/B,CAAE,EAAGH,EAAIE,EAAG,EAAGD,EAAIE,EAAG,CACtB,CAAE,EAAGH,EAAIE,EAAG,EAAGD,EAAI,EAAY,CAChC,CACK,EAAO,IAAID,EAAI,EAAW,GAAGC,EAAI,EAAW,IAAID,EAAIE,EAAE,GAAGD,EAAI,EAAW,IAAID,EAAIE,EAAE,GAAGD,EAAIE,EAAE,IAAIH,EAAI,EAAW,GAAGC,EAAIE,EAAE,IAAIH,EAAI,EAAW,GAAGC,EAAI,EAAW;mBACjJD,EAAI,EAAW,GAAGC,EAAE,IAAID,EAAIE,EAAE,GAAGD,EAAE;mBACnCD,EAAE,GAAGC,EAAI,EAAW,IAAID,EAAE,GAAGC,EAAIE,IAC9C,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAK,EAAG,KAAK,EAAM,EAAQ,CAC3B,EAAc,EAAS,WAAa,EAAI,eAAe,CAkB7D,OAjBA,EAAY,KAAK,YAAa,aAAa,EAAa,EAAE,IAAI,EAAa,EAAE,GAAG,CAChF,EAAY,KAAK,QAAS,wBAAwB,CAC9C,GAAa,EAAK,OAAS,aAC7B,EAAY,UAAU,OAAO,CAAC,KAAK,QAAS,EAAU,CAEpD,GAAc,EAAK,OAAS,aAC9B,EAAY,UAAU,OAAO,CAAC,KAAK,QAAS,EAAW,CAEzD,EAAM,KACJ,YACA,aAAa,EAAE,EAAK,MAAQ,GAAK,EAAa,GAAK,EAAK,GAAK,EAAK,MAAQ,IAAI,IAAI,EAAE,EAAK,OAAS,GAAK,EAAa,GAAK,EAAK,GAAK,EAAK,KAAO,IAAI,GACpJ,CACD,EAAiB,EAAM,EAAY,CACnC,EAAK,UAAY,SAAS,EAAO,CAE/B,OADY,EAAkB,QAAQ,EAAM,EAAiB,EAAM,EAG9D,EAET,EAAO,GAAY,aAAa,CAKhC,eAAe,GAAM,EAAQ,EAAM,CACjC,IAAM,EAAa,EAInB,GAHI,EAAW,QACb,EAAK,MAAQ,EAAW,OAEtB,EAAK,OAAS,YAAa,CAC7B,GAAM,CAAE,eAAgB,GAAoB,GAAW,CACjD,CAAE,cAAe,EAOvB,MAAM,GAAM,EANW,CACrB,GAAG,EACH,GAAI,EAAK,GAAK,cACd,KAAM,UACN,UAAW,CAAC,eAAgB,SAAS,IAAa,CACnD,CACkC,CAErC,IAAM,EAAS,GAAW,CAC1B,EAAK,cAAgB,EAAO,WAC5B,IAAI,EAAU,EAAO,IAAI,gBAAkB,GACvC,EAAe,EAAO,IAAI,eAAiB,EACzC,CAAE,aAAc,EAChB,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,GAAI,EAAW,WAAW,SAAW,GAAK,EAAK,MAAO,CACpD,IAAM,EAAW,CACf,GAAI,EACJ,GAAI,EACJ,cAAe,EACf,cAAe,EAAU,IACzB,QAAS,GACV,CACG,EAAmB,EAAK,MAAO,EAAO,CAAG,EAAS,cAAgB,EAAI,EAAO,GAAG,iBAClF,EAAK,MAAQ,EAAO,GAAG,gBAEzB,IAAM,EAAY,MAAM,GAAS,EAAQ,EAAM,EAAS,CACxD,GAAI,CAAC,EAAS,EAAO,WAAW,CAAE,CAChC,IAAM,EAAc,EAAU,OAAO,OAAO,CACtC,EAAO,EAAY,MAAM,EAAE,SAAS,CAC1C,EAAY,KAAK,YAAa,aAAa,CAAC,EAAK,MAAQ,EAAE,MAAM,CAEnE,OAAO,EAEJ,EAAO,aACV,GAAW,KACX,GAAgB,MAElB,IAAI,EAAa,EAAe,EAAK,CACrC,AACE,IAAa,eAEf,IAAM,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CACzF,EAAW,MAAM,GAAQ,EAAU,EAAK,OAAS,GAAI,EAAQ,EAAG,EAAG,CAAC,OAAO,CAAE,EAAY,CAC/F,EAAS,QAAU,EACnB,IAAI,EAAU,EACR,EAAW,EAAE,CACb,EAAO,EAAE,CACX,EAAe,EACf,EAAe,EACf,EAAe,EACf,EAAkB,EAClB,EAAc,GACd,EAAiB,GACrB,IAAK,IAAM,KAAa,EAAW,WAAY,CAC7C,IAAM,EAAW,MAAM,GACrB,EACA,EAAU,KACV,EACA,EACA,EACA,CAAC,iBAAiB,CAClB,EACD,CACD,EAAe,KAAK,IAAI,EAAc,EAAS,MAAQ,EAAQ,CAC/D,IAAM,EAAY,MAAM,GACtB,EACA,EAAU,KACV,EACA,EACA,EACA,CAAC,iBAAiB,CAClB,EACD,CACD,EAAe,KAAK,IAAI,EAAc,EAAU,MAAQ,EAAQ,CAChE,IAAM,EAAW,MAAM,GACrB,EACA,EAAU,KAAK,MAAM,CACrB,EACA,EACA,EACA,CAAC,iBAAiB,CAClB,EACD,CACD,EAAe,KAAK,IAAI,EAAc,EAAS,MAAQ,EAAQ,CAC/D,IAAM,EAAc,MAAM,GACxB,EACA,EAAU,QACV,EACA,EACA,EACA,CAAC,oBAAoB,CACrB,EACD,CACD,EAAkB,KAAK,IAAI,EAAiB,EAAY,MAAQ,EAAQ,CACxE,IAAM,EAAY,KAAK,IAAI,EAAS,OAAQ,EAAU,OAAQ,EAAS,OAAQ,EAAY,OAAO,CAAG,EACrG,EAAK,KAAK,CAAE,UAAS,YAAW,CAAC,CACjC,GAAW,EAEb,IAAI,EAAqB,EACrB,GAAgB,IAClB,EAAc,GACd,EAAe,EACf,KAEE,GAAmB,IACrB,EAAiB,GACjB,EAAkB,EAClB,KAEF,IAAM,EAAY,EAAS,MAAM,CAAC,SAAS,CAC3C,GAAI,EAAS,MAAQ,EAAU,GAAK,EAAe,EAAe,EAAe,GAAmB,EAAG,CACrG,IAAM,EAAa,EAAS,MAAQ,EAAU,GAAK,EAAe,EAAe,EAAe,GAChG,GAAgB,EAAa,EAC7B,GAAgB,EAAa,EACzB,EAAe,IACjB,GAAgB,EAAa,GAE3B,EAAkB,IACpB,GAAmB,EAAa,GAGpC,IAAM,EAAW,EAAe,EAAe,EAAe,EACxD,EAAKgE,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAI,EAAuB,EACvB,EAAK,OAAS,IAChB,EAAuB,EAAK,QAAQ,EAAK,IAAQ,GAAO,GAAK,WAAa,GAAI,EAAE,EAElF,IAAMjE,EAAI,KAAK,IAAI,EAAU,MAAQ,EAAU,EAAG,GAAM,OAAS,EAAG,EAAS,CACvEC,EAAI,KAAK,KAAK,GAAwB,GAAK,EAAS,OAAQ,GAAM,QAAU,EAAE,CAC9EH,EAAI,CAACE,EAAI,EACTD,EAAI,CAACE,EAAI,EACf,EAAS,UAAU,sBAAsB,CAAC,MAAM,EAAG,EAAG,IAAU,CAC9D,IAAM,EAAQiE,EAAQ,EAAMtE,GAAG,CACzB,EAAY,EAAM,KAAK,YAAY,CACrC,EAAa,EACb,EAAa,EACjB,GAAI,EAAW,CAEb,IAAM,EADQ,OAAO,+BAA+B,CAC5B,KAAK,EAAU,CACnC,IACF,EAAa,WAAW,EAAU,GAAG,CACrC,EAAa,WAAW,EAAU,GAAG,CACjC,EAAM,KAAK,QAAQ,CAAC,SAAS,iBAAiB,CAChD,GAAc,EACL,EAAM,KAAK,QAAQ,CAAC,SAAS,iBAAiB,CACvD,GAAc,EAAe,EACpB,EAAM,KAAK,QAAQ,CAAC,SAAS,oBAAoB,GAC1D,GAAc,EAAe,EAAe,IAIlD,EAAM,KACJ,YACA,aAAaE,EAAI,EAAU,EAAI,EAAW,IAAI,EAAaC,EAAI,EAAS,OAAS,EAAe,EAAE,GACnG,EACD,CACF,EAAS,OAAO,QAAQ,CAAC,KAAK,YAAa,aAAe,CAAC,EAAS,MAAQ,EAAI,MAAQA,EAAI,EAAe,GAAK,IAAI,CACpH,IAAM,GAAY,EAAG,UAAUD,EAAGC,EAAGC,EAAGC,EAAG,EAAQ,CAC7C,GAAQ,EAAS,WAAa,GAAW,eAAe,CAAC,KAAK,QAAS,EAAU,KAAK,GAAG,CAAC,CAC1F,CAAE,mBAAmB,GAAW,CAChC,CAAE,WAAS,UAAQ,eAAe,GACxC,EAAS,KAAK,EAAE,CAChB,IAAK,GAAM,CAACL,EAAG,KAAQ,EAAK,SAAS,CAAE,CAErC,IAAM,GADkBA,EAAI,GACK,GAAM,GAAK,EAAI,UAAY,EACtD,EAAa,EAAG,UAAUE,EAAG,EAAS,OAASC,EAAI,GAAK,QAASC,EAAG,GAAK,UAAW,CACxF,GAAG,EACH,KAAM,EAAS,GAAU,GACzB,OAAQ,GACT,CAAC,CACF,EAAS,WAAa,EAAY,UAAU,CAAC,KAAK,QAAS,EAAU,KAAK,GAAG,CAAC,CAAC,KAAK,QAAS,YAAY,EAAS,OAAS,QAAQ,CAErI,IAAI,EAAY,EAAG,KAAKF,EAAG,EAAS,OAASC,EAAGC,EAAIF,EAAG,EAAS,OAASC,EAAG,EAAQ,CACpF,EAAS,WAAa,EAAU,CAAC,KAAK,QAAS,UAAU,CACzD,EAAY,EAAG,KAAK,EAAeD,EAAG,EAAS,OAASC,EAAG,EAAeD,EAAGG,EAAIF,EAAG,EAAQ,CAC5F,EAAS,WAAa,EAAU,CAAC,KAAK,QAAS,UAAU,CACrD,IACF,EAAY,EAAG,KACb,EAAe,EAAeD,EAC9B,EAAS,OAASC,EAClB,EAAe,EAAeD,EAC9BG,EAAIF,EACJ,EACD,CACD,EAAS,WAAa,EAAU,CAAC,KAAK,QAAS,UAAU,EAEvD,IACF,EAAY,EAAG,KACb,EAAe,EAAe,EAAeD,EAC7C,EAAS,OAASC,EAClB,EAAe,EAAe,EAAeD,EAC7CG,EAAIF,EACJ,EACD,CACD,EAAS,WAAa,EAAU,CAAC,KAAK,QAAS,UAAU,EAE3D,IAAK,IAAM,KAAY,EACrB,EAAY,EAAG,KACbD,EACA,EAAS,OAASC,EAAI,EACtBC,EAAIF,EACJ,EAAS,OAASC,EAAI,EACtB,EACD,CACD,EAAS,WAAa,EAAU,CAAC,KAAK,QAAS,UAAU,CAG3D,GADA,EAAiB,EAAM,GAAM,CACzB,GAAc,EAAK,OAAS,YAAa,CAE3C,IAAM,EADW,EAAW,MAAM,IAAI,EACP,OAAQ,GAC9BoE,EAAE,SAAS,SAAS,CAC3B,EAAE,IAAK,GAAM,GAAGhE,IAAI,CAAC,KAAK,KAAK,CACjC,EAAS,UAAU,OAAO,CAAC,KAAK,QAAS,GAAgB,GAAG,CAC5D,EAAS,UAAU,sBAAsB,CAAC,KAAK,QAAS,EAAW,CAKrE,MAHA,GAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAO,QAAQ,CACtB,eAAe,GAAQ,EAAU,EAAW,EAAQ,EAAa,EAAG,EAAa,EAAG,EAAU,EAAE,CAAE,EAAQ,GAAI,CAC5G,IAAM,EAAQ,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,SAAS,EAAQ,KAAK,IAAI,GAAG,CAAC,KAAK,YAAa,aAAa,EAAW,IAAI,EAAW,GAAG,CAAC,KAAK,QAAS,EAAM,CAC5J,IAAc,EAAkB,EAAU,GAC5C,EAAY,EAAkB,EAAU,CACxC,EAAY,EAAU,WAAW,IAAK,OAAO,CAAC,WAAW,IAAK,OAAO,EAEvE,IAAM,EAAQ,EAAM,MAAM,CAAC,YACzB,MAAM,EACJ,EACA,EACA,CACE,MAAO,EAAmB,EAAW,EAAO,CAAG,IAC/C,QACA,cAAe,EAAO,WACvB,CACD,EACD,CACF,CACD,GAAI,EAAU,SAAS,OAAO,EAAI,EAAU,SAAS,OAAO,CAAE,CAC5D,IAAI,EAAQ,EAAM,SAAS,GAE3B,IADA,EAAM,YAAc,EAAM,YAAY,WAAW,OAAQ,IAAI,CAAC,WAAW,OAAQ,IAAI,CAC9E,EAAM,WAAW,IACtB,EAAQ,EAAM,WAAW,GACzB,EAAM,YAAc,EAAM,YAAY,WAAW,OAAQ,IAAI,CAAC,WAAW,OAAQ,IAAI,CAGzF,IAAI,EAAO,EAAM,SAAS,CAC1B,GAAI,EAAS,EAAO,WAAW,CAAE,CAC/B,IAAM,EAAM,EAAM,SAAS,GAC3B,EAAI,MAAM,UAAY,QACtB,IAAM,EAAK+D,EAAQ,EAAM,CACzB,EAAO,EAAI,uBAAuB,CAClC,EAAG,KAAK,QAAS,EAAK,MAAM,CAC5B,EAAG,KAAK,SAAU,EAAK,OAAO,CAEhC,OAAO,EAET,EAAO,GAAS,UAAU,CAQ1B,eAAe,GAAW,EAAQ,EAAM,EAAQ,EAAe,EAAM,EAAO,MAAM,SAAW,GAAI,CAC/F,IAAM,EAAgB,EAAoB,EAAJ,EAChC,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAe,EAAK,CAAC,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CACrG,EAAkB,KAClB,EAAa,KACb,EAAe,KACf,EAAe,KACf,EAAwB,EACxB,EAAmB,EACnB,EAAqB,EAEzB,GADA,EAAkB,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,wBAAwB,CACzE,EAAK,YAAY,OAAS,EAAG,CAC/B,IAAM,EAAa,EAAK,YAAY,GACpC,MAAM,GAAS,EAAiB,CAAE,KAAM,OAAO,EAAW,MAAO,CAAE,EAAE,CAErE,EAD4B,EAAgB,MAAM,CAAC,SAAS,CAChB,OAE9C,EAAa,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,mBAAmB,CACnE,MAAM,GAAS,EAAY,EAAM,EAAG,CAAC,sBAAsB,CAAC,CAC5D,IAAM,EAAiB,EAAW,MAAM,CAAC,SAAS,CAClD,EAAmB,EAAe,OAClC,EAAe,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,qBAAqB,CACvE,IAAI,EAAU,EACd,IAAK,IAAM,KAAU,EAAK,QAAS,CACjC,IAAM,EAAS,MAAM,GAAS,EAAc,EAAQ,EAAS,CAAC,EAAO,iBAAiB,CAAC,CAAC,CACxF,GAAW,EAAS,EAEtB,EAAqB,EAAa,MAAM,CAAC,SAAS,CAAC,OAC/C,GAAsB,IACxB,EAAqB,EAAM,GAE7B,EAAe,EAAS,OAAO,IAAI,CAAC,KAAK,QAAS,qBAAqB,CACvE,IAAI,EAAiB,EACrB,IAAK,IAAM,KAAU,EAAK,QAAS,CACjC,IAAM,EAAS,MAAM,GAAS,EAAc,EAAQ,EAAgB,CAAC,EAAO,iBAAiB,CAAC,CAAC,CAC/F,GAAkB,EAAS,EAE7B,IAAI,EAAO,EAAS,MAAM,CAAC,SAAS,CACpC,GAAI,IAAoB,KAAM,CAC5B,IAAM,EAAsB,EAAgB,MAAM,CAAC,SAAS,CAC5D,EAAgB,KAAK,YAAa,aAAa,CAAC,EAAoB,MAAQ,EAAE,GAAG,CAcnF,OAZA,EAAW,KAAK,YAAa,aAAa,CAAC,EAAe,MAAQ,EAAE,IAAI,EAAsB,GAAG,CACjG,EAAO,EAAS,MAAM,CAAC,SAAS,CAChC,EAAa,KACX,YACA,gBAAmB,EAAwB,EAAmB,EAAM,EAAE,GACvE,CACD,EAAO,EAAS,MAAM,CAAC,SAAS,CAChC,EAAa,KACX,YACA,gBAAmB,EAAwB,GAAoB,EAAqB,EAAqB,EAAM,EAAI,EAAM,GAAG,GAC7H,CACD,EAAO,EAAS,MAAM,CAAC,SAAS,CACzB,CAAE,WAAU,OAAM,CAE3B,EAAO,GAAY,aAAa,CAChC,eAAe,GAAS,EAAa,EAAM,EAAS,EAAS,EAAE,CAAE,CAC/D,IAAM,EAAS,EAAY,OAAO,IAAI,CAAC,KAAK,QAAS,QAAQ,CAAC,KAAK,QAAS,EAAO,KAAK,KAAK,CAAC,CACxF,EAAS,GAAW,CACtB,EAAgB,kBAAmB,EAAO,EAAK,cAAgB,EAAS,EAAO,WAAW,EAAI,GAC9F,EAAc,GAClB,AAGE,EAHE,SAAU,EACE,EAAK,KAEL,EAAK,MAEjB,CAAC,GAAiB,EAAY,WAAW,KAAK,GAChD,EAAc,EAAY,UAAU,EAAE,EAEpC,EAAS,EAAY,GACvB,EAAgB,IAElB,IAAM,EAAQ,MAAM,EAClB,EACAE,EAAc,EAAe,EAAY,CAAC,CAC1C,CACE,MAAO,EAAmB,EAAa,EAAO,CAAG,GAEjD,QAAS,sBACT,gBACD,CACD,EACD,CACG,EACA,EAAgB,EACpB,GAAK,EAiBE,CACL,IAAM,EAAM,EAAM,SAAS,GACrB,EAAKC,EAAQ,EAAM,CACzB,EAAgB,EAAI,UAAU,MAAM,OAAO,CAAC,OACxC,EAAI,UAAU,SAAS,UAAU,GACnC,GAAiB,EAAI,UAAU,MAAM,SAAS,CAAC,OAAS,GAE1D,IAAM,EAAS,EAAI,qBAAqB,MAAM,CAC9C,GAAI,EAAQ,CACV,IAAM,EAAY,EAAY,QAAQ,cAAe,GAAG,CAAC,MAAM,GAAK,GACpE,MAAM,QAAQ,IACZ,CAAC,GAAG,EAAO,CAAC,IACT,GAAQ,IAAI,QAAS,GAAQ,CAC5B,SAAS,GAAa,CAGpB,GAFA,EAAI,MAAM,QAAU,OACpB,EAAI,MAAM,cAAgB,SACtB,EAAW,CACb,IAAM,EAAe,EAAO,UAAU,UAAU,EAAI,OAAO,iBAAiB,SAAS,KAAK,CAAC,SAErF,EAAQ,SAAS,EAAc,GAAG,CADhB,EACqC,KAC7D,EAAI,MAAM,SAAW,EACrB,EAAI,MAAM,SAAW,OAErB,EAAI,MAAM,MAAQ,OAEpB,EAAI,EAAI,CAEV,EAAO,EAAY,aAAa,CAChC,eAAiB,CACX,EAAI,UACN,GAAY,EAEd,CACF,EAAI,iBAAiB,QAAS,EAAW,CACzC,EAAI,iBAAiB,OAAQ,EAAW,EACxC,CACH,CACF,CAEH,EAAO,EAAI,uBAAuB,CAClC,EAAG,KAAK,QAAS,EAAK,MAAM,CAC5B,EAAG,KAAK,SAAU,EAAK,OAAO,KA1DZ,CACd,EAAO,SAAS,sBAAsB,EACxC,EAAQ,EAAM,CAAC,UAAU,QAAQ,CAAC,KAAK,cAAe,GAAG,CAE3D,EAAgB,EAAM,SAAS,OAC/B,IAAM,EAAY,EAAM,SAAS,IAC7B,EAAM,cAAgB,IAAM,EAAM,YAAY,SAAS,MAAM,IAC/D,EAAU,YAAc,EAAY,GAAK,EAAY,UAAU,EAAE,CAAC,WAAW,OAAQ,IAAI,CAAC,WAAW,OAAQ,IAAI,CAAC,MAAM,CAClG,EAAY,KAAO,MAEvC,EAAU,YAAc,EAAU,YAAY,GAAK,IAAM,EAAU,YAAY,UAAU,EAAE,GAG3F,EAAU,cAAgB,cAC5B,EAAU,YAAc,IAE1B,EAAO,EAAM,SAAS,CA6CxB,OADA,EAAO,KAAK,YAAa,gBAAkB,CAAC,EAAK,QAAU,EAAI,GAAiB,GAAW,IAAI,CACxF,EAAK,OAEd,EAAO,GAAU,UAAU,CAG3B,eAAe,GAAS,EAAQ,EAAM,CACpC,IAAM,EAAS,GAAY,CACrB,EAAU,EAAO,MAAM,SAAW,GAClC,EAAM,EACN,EAAgB,EAAK,eAAiB,EAAS,EAAO,WAAW,EAAI,GACrE,EAAY,EAClB,EAAU,YAAc,EAAU,aAAe,EAAE,CACnD,EAAU,QAAU,EAAU,SAAW,EAAE,CAC3C,EAAU,QAAU,EAAU,SAAW,EAAE,CAC3C,GAAM,CAAE,WAAU,QAAS,MAAM,GAAW,EAAQ,EAAM,EAAQ,EAAe,EAAI,CAC/E,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,EAAK,UAAY,EAAU,QAAU,GACrC,IAAM,EAAS,EAAU,QAAQ,KAAK,IAAI,EAAI,GAAc,GAC5D,AACE,EAAK,YAAY,EAAO,WAAW,aAAc,GAAG,CAAC,MAAM,IAAI,CAEjE,IAAM,EAAiB,EAAU,QAAQ,SAAW,GAAK,EAAU,QAAQ,SAAW,GAAK,CAAC,EAAO,OAAO,oBACpG,EAAKC,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAMtE,EAAI,EAAK,MACXC,EAAI,EAAK,OACT,EAAU,QAAQ,SAAW,GAAK,EAAU,QAAQ,SAAW,EACjE,GAAK,EACI,EAAU,QAAQ,OAAS,GAAK,EAAU,QAAQ,SAAW,IACtE,GAAK,EAAM,GAEb,IAAMH,EAAI,CAACE,EAAI,EACTD,EAAI,CAACE,EAAI,EACT,EAAY,EAAG,UACnBH,EAAI,EACJC,EAAI,GAAW,EAAiB,EAAU,EAAU,QAAQ,SAAW,GAAK,EAAU,QAAQ,SAAW,EAAI,CAAC,EAAU,EAAI,GAC5HC,EAAI,EAAI,EACRC,EAAI,EAAI,GAAW,EAAiB,EAAU,EAAI,EAAU,QAAQ,SAAW,GAAK,EAAU,QAAQ,SAAW,EAAI,CAAC,EAAU,GAChI,EACD,CACK,EAAQ,EAAS,WAAa,EAAW,eAAe,CAC9D,EAAM,KAAK,QAAS,wBAAwB,CAC5C,IAAM,EAAW,EAAM,MAAM,CAAC,SAAS,CACvC,EAAS,UAAU,QAAQ,CAAC,MAAM,EAAG,EAAG,IAAU,CAChD,IAAM,EAAQsE,EAAQ,EAAM3E,GAAG,CACzB,EAAY,EAAM,KAAK,YAAY,CACrC,EAAa,EACjB,GAAI,EAAW,CAEb,IAAM,EADQ,OAAO,+BAA+B,CAC5B,KAAK,EAAU,CACnC,IACF,EAAa,WAAW,EAAU,GAAG,EAGzC,IAAI,EAAgB,EAAaG,EAAI,GAAW,EAAiB,EAAU,EAAU,QAAQ,SAAW,GAAK,EAAU,QAAQ,SAAW,EAAI,CAAC,EAAU,EAAI,GACxJ,IACH,GAAiB,GAEnB,IAAI,EAAgBD,GAChB,EAAM,KAAK,QAAQ,CAAC,SAAS,cAAc,EAAI,EAAM,KAAK,QAAQ,CAAC,SAAS,mBAAmB,IACjG,EAAgB,CAAC,EAAM,MAAM,EAAE,SAAS,CAAC,MAAQ,GAAK,EACtD,EAAS,UAAU,OAAO,CAAC,KAAK,SAAS,EAAI,EAAI,EAAQ,CACnD,OAAO,iBAAiB,EAAO,GAAI,CAAC,aAAe,WACrD,EAAgB,IAElB,EAEJ,EAAM,KAAK,YAAa,aAAa,EAAc,IAAI,EAAc,GAAG,EACxE,CACF,IAAM,EAAwB,EAAS,OAAO,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAU,EAAiB,EAAU,EAAI,IAAM,EAC7H,EAAmB,EAAS,OAAO,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,QAAU,EAAiB,EAAU,EAAI,IAAM,EACnH,EAAqB,EAAS,OAAO,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAU,EAAiB,EAAU,EAAI,IAAM,EAC7H,GAAI,EAAU,QAAQ,OAAS,GAAK,EAAU,QAAQ,OAAS,GAAK,EAAgB,CAClF,IAAM,EAAY,EAAG,KACnB,EAAS,EACT,EAAwB,EAAmBC,EAAI,EAC/C,EAAS,EAAI,EAAS,MACtB,EAAwB,EAAmBA,EAAI,EAC/C,EACD,CACY,EAAS,WAAa,EAAU,CACxC,KAAK,QAAS,UAAU,CAAC,KAAK,QAAS,EAAO,CAErD,GAAI,GAAkB,EAAU,QAAQ,OAAS,GAAK,EAAU,QAAQ,OAAS,EAAG,CAClF,IAAM,EAAY,EAAG,KACnB,EAAS,EACT,EAAwB,EAAmB,EAAqBA,EAAI,EAAM,EAAI,EAC9E,EAAS,EAAI,EAAS,MACtB,EAAwB,EAAmB,EAAqBA,EAAI,EAAU,EAAM,EACpF,EACD,CACY,EAAS,WAAa,EAAU,CACxC,KAAK,QAAS,UAAU,CAAC,KAAK,QAAS,EAAO,CAYrD,GAVI,EAAU,OAAS,aACrB,EAAS,UAAU,OAAO,CAAC,KAAK,QAAS,EAAO,CAElD,EAAM,OAAO,gBAAgB,CAAC,KAAK,QAAS,EAAO,CACnD,EAAS,UAAU,WAAW,CAAC,OAAO,OAAO,CAAC,KAAK,QAAS,EAAO,CAC/D,EAAK,WACP,EAAS,UAAU,OAAO,CAAC,KAAK,QAAS,EAAK,WAAW,CAEzD,EAAS,UAAU,OAAO,CAAC,KAAK,QAAS,EAAO,CAE9C,CAAC,EAAe,CAClB,IAAM,EAAa,OAAO,sBAAsB,CAC1C,EAAQ,EAAW,KAAK,EAAO,CACrC,GAAI,EAAO,CACT,IAAM,EAAa,EAAM,GAAG,QAAQ,QAAS,OAAO,CACpD,EAAS,UAAU,QAAQ,CAAC,KAAK,QAAS,EAAW,SAC5C,EAAa,CACtB,IAAM,EAAS,EAAW,KAAK,EAAY,CAC3C,GAAI,EAAQ,CACV,IAAM,EAAa,EAAO,GAAG,QAAQ,QAAS,OAAO,CACrD,EAAS,UAAU,QAAQ,CAAC,KAAK,QAAS,EAAW,GAQ3D,OAJA,EAAiB,EAAM,EAAM,CAC7B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAU,WAAW,CAK5B,eAAe,GAAe,EAAQ,EAAM,CAC1C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,IAAM,EAAkB,EAClB,EAAc,EAGd,EAAoB,iBAAkB,EACtC,EAAU,EAAe,EAAK,CAC9B,EAAW,EAAO,OAAO,IAAI,CAAC,KAAK,QAAS,EAAQ,CAAC,KAAK,KAAM,EAAK,OAAS,EAAK,GAAG,CACxF,EACJ,AAQE,EARE,EACW,MAAM,EACjB,EACA,WAAW,EAAgB,KAAK,UAChC,EACA,EAAK,WACN,CAEY,MAAM,EAAS,EAAU,0BAA2B,EAAG,EAAK,WAAW,CAEtF,IAAI,EAAqB,EACnB,EAAa,MAAM,EACvB,EACA,EAAgB,KAChB,EACA,EAAK,WAAa,uBACnB,CAED,GADA,GAAsB,EAAa,GAC/B,EAAmB,CACrB,IAAM,EAAW,MAAM,EACrB,EACA,GAAG,EAAgB,cAAgB,OAAO,EAAgB,gBAAkB,KAC5E,EACA,EAAK,WACN,CACD,GAAsB,EACtB,IAAM,EAAa,MAAM,EACvB,EACA,GAAG,EAAgB,KAAO,SAAS,EAAgB,OAAS,KAC5D,EACA,EAAK,WACN,CACD,GAAsB,EACtB,IAAM,EAAa,MAAM,EACvB,EACA,GAAG,EAAgB,KAAO,SAAS,EAAgB,OAAS,KAC5D,EACA,EAAK,WACN,CACD,GAAsB,EACtB,MAAM,EACJ,EACA,GAAG,EAAgB,aAAe,iBAAiB,EAAgB,eAAiB,KACpF,EACA,EAAK,WACN,KACI,CACL,IAAM,EAAc,MAAM,EACxB,EACA,GAAG,EAAY,KAAO,SAAS,EAAY,OAAS,KACpD,EACA,EAAK,WACN,CACD,GAAsB,EACtB,MAAM,EACJ,EACA,GAAG,EAAY,OAAS,YAAY,EAAY,SAAW,KAC3D,EACA,EAAK,WACN,CAEH,IAAM,GAAc,EAAS,MAAM,EAAE,SAAS,CAAC,OAAS,KAAO,GACzD,GAAe,EAAS,MAAM,EAAE,SAAS,CAAC,QAAU,KAAO,GAC3DD,EAAI,CAAC,EAAa,EAClBC,EAAI,CAAC,EAAc,EACnB,EAAKyE,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACvC,EAAK,OAAS,cAChB,EAAQ,UAAY,EACpB,EAAQ,UAAY,SAEtB,IAAM,EAAY,EAAG,UAAU1E,EAAGC,EAAG,EAAY,EAAa,EAAQ,CAChE,EAAQ,EAAS,WAAa,EAAW,eAAe,CAsB9D,GArBA,EAAM,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAW,CACtE,EAAS,UAAU,SAAS,CAAC,MAAM,EAAG,EAAG,IAAU,CACjD,IAAM,EAAQ0E,EAAQ,EAAM7E,GAAG,CACzB,EAAY,EAAM,KAAK,YAAY,CACrC,EAAa,EACb,EAAa,EACjB,GAAI,EAAW,CAEb,IAAM,EADQ,OAAO,+BAA+B,CAC5B,KAAK,EAAU,CACnC,IACF,EAAa,WAAW,EAAU,GAAG,CACrC,EAAa,WAAW,EAAU,GAAG,EAGzC,IAAM,EAAgB,EAAa,EAAc,EAC7C,EAAgBE,EAAI,GAAU,GAC9BF,IAAM,GAAKA,IAAM,KACnB,EAAgB,GAElB,EAAM,KAAK,YAAa,aAAa,EAAc,IAAI,EAAgB,GAAQ,GAAG,EAClF,CACE,EAAqB,EAAa,EAAa,GAAK,CACtD,IAAM,EAAY,EAAG,KACnBE,EACAC,EAAI,EAAa,EAAa,GAC9BD,EAAI,EACJC,EAAI,EAAa,EAAa,GAC9B,EACD,CACmB,EAAS,WAAa,EAAU,CACxC,KAAK,QAAS,EAAW,CAMvC,OAJA,EAAiB,EAAM,EAAM,CAC7B,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAgB,iBAAiB,CACxC,eAAe,EAAS,EAAa,EAAW,EAAS,EAAQ,GAAI,CACnE,GAAI,IAAc,GAChB,MAAO,GAET,IAAM,EAAS,EAAY,OAAO,IAAI,CAAC,KAAK,QAAS,QAAQ,CAAC,KAAK,QAAS,EAAM,CAC5E,EAAS,GAAY,CACrB,EAAgB,EAAO,YAAc,GACrC,EAAQ,MAAM,EAClB,EACAqE,EAAc,EAAe,EAAU,CAAC,CACxC,CACE,MAAO,EAAmB,EAAW,EAAO,CAAG,GAE/C,QAAS,sBACT,gBACA,QACD,CACD,EACD,CACG,EACJ,GAAK,EAUE,CACL,IAAM,EAAM,EAAM,SAAS,GACrB,EAAKK,EAAQ,EAAM,CACzB,EAAO,EAAI,uBAAuB,CAClC,EAAG,KAAK,QAAS,EAAK,MAAM,CAC5B,EAAG,KAAK,SAAU,EAAK,OAAO,KAfZ,CAClB,IAAM,EAAY,EAAM,SAAS,GACjC,IAAK,IAAM,KAAS,EAAU,SAC5B,EAAM,YAAc,EAAM,YAAY,WAAW,OAAQ,IAAI,CAAC,WAAW,OAAQ,IAAI,CACjF,GACF,EAAM,aAAa,QAAS,EAAM,CAGtC,EAAO,EAAM,SAAS,CACtB,EAAK,QAAU,EASjB,OADA,EAAO,KAAK,YAAa,aAAa,CAAC,EAAK,MAAQ,EAAE,GAAG,CAAC,EAAK,OAAS,EAAI,EAAQ,GAAG,CAChF,EAAK,OAEd,EAAO,EAAU,UAAU,CAI3B,IAAI,GAAoC,EAAQ,GAAa,CAC3D,OAAQ,EAAR,CACE,IAAK,YACH,MAAO,MACT,IAAK,OACH,MAAO,SACT,IAAK,SACH,OAAO,KAET,IAAK,MACH,MAAO,OACT,IAAK,WACH,MAAO,cAEV,oBAAoB,CACvB,eAAe,GAAW,EAAQ,EAAY,CAAE,UAAU,CACxD,GAAM,CAAE,cAAa,cAAe,EAAc,EAAW,CAC7D,EAAW,WAAa,GAAe,GACvC,IACM,EAAW,EAAW,MAC5B,EAAW,OAAS,EAAW,OAAS,KAAO,GAC/C,GAAM,CACJ,WACA,OACA,MAAO,GACL,MAAM,EAAY,EAAQ,EAAY,EAAe,EAAW,CAAC,CAC/D,EAAU,EAAW,SAAW,GAClC,EAAY,GACZ,EACA,WAAY,GAAc,EAAW,QAAU,GAAQ,QAAQ,gBACjE,EAAY,GAAQ,QAAQ,cAAc,QAAQ,WAAY,EAAW,OAAO,CAChF,EAAO,EAAS,OAAO,QAAS,eAAe,CAAC,KAAK,QAAS,qBAAqB,CAAC,KAAK,aAAc,EAAU,CAAC,KAAK,SAAU,SAAS,EAE5I,IAAM,EAAU,CACd,cAAe,EAAW,cAC1B,WAAY,EAAW,YAAc,GACrC,MAAO,EAAW,MAClB,IAAK,EAAW,IAChB,QAAS,EAAW,SAAW,EAC/B,YAAa,GACd,CACG,EAAS,EACT,EACD,CAAE,MAAO,EAAS,KAAM,GAAU,MAAM,GACvC,EACA,WAAY,GAAc,EAAW,QAAU,GAC/C,EACD,CAEA,CAAE,MAAO,EAAS,KAAM,GAAU,MAAM,GACvC,EACA,WAAY,GAAc,EAAW,QAAU,GAC/C,EACD,CAEH,GAAM,CAAE,MAAO,EAAiB,KAAM,GAAiB,MAAM,GAC3D,EACA,aAAc,GAAc,EAAW,UAAY,GACnD,EACD,CACD,EAAW,MAAQ,EACnB,IACM,EAAa,GAAY,OAAS,EAClC,EAAY,KAAK,IAAI,EAAM,OAAQ,EAAa,OAAO,CAAG,EAC1D,EAAc,KAAK,IAAI,EAAK,OAAS,GAAmB,GAAY,QAAU,EAAE,CAAG,EACnF3E,EAAI,CAAC,EAAa,EAClBC,EAAI,CAAC,EAAc,EACzB,EAAa,KACX,YACA,cAAgB,EAAU,EAAa,GAAK,MAAQ,CAAC,EAAY,EAAK,OAAS,GAAK,IACrF,CACD,EAAQ,KACN,YACA,cAAgB,EAAU,EAAa,GAAK,MAAQ,CAAC,EAAY,EAAK,OAAS,GAAK,IACrF,CACD,EAAgB,KACd,YACA,cAAgB,EAAU,EAAa,EAAI,EAAa,MAAQ,IAAqB,MAAQ,CAAC,EAAY,EAAK,OAAS,GAAK,IAC9H,CACD,IAAI,EACE,CAAE,KAAI,MAAO,EACb,CAAE,aAAc,EACtB,GAAI,EAAW,OAAS,YAAa,CACnC,IAAM,EAAK2E,EAAQ,IAAI,EAAS,CAC1B,EAAW,EAAkB,EAAY,EAAE,CAAC,CAC5C,EAAY,GAAM,EAAK,EAAG,KAAK,EAAuB5E,EAAGC,EAAG,EAAY,EAAa,GAAM,EAAE,CAAE,EAAS,CAAG,EAAG,UAAUD,EAAGC,EAAG,EAAY,EAAa,EAAS,CACtK,EAAQ,EAAS,WAAa,EAAW,eAAe,CACxD,EAAM,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,GAAwB,KAAK,KACnF,CACL,EAAQ,EAAS,OAAO,OAAQ,eAAe,CAC/C,EAAM,KAAK,QAAS,gCAAgC,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,KAAM,GAAM,EAAE,CAAC,KAAK,KAAM,GAAM,EAAE,CAAC,KAAK,IAAKD,EAAE,CAAC,KAAK,IAAKC,EAAE,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,SAAU,EAAY,CACtM,IAAM,EAAW,aAAc,GAAc,EAAW,SACxD,GAAI,EAAU,CACZ,IAAM,EAAO,EAAS,OAAO,OAAO,CAC9B,EAAQD,EAAI,EACZ,EAAKC,EAAI,KAAK,OAAO,GAAM,GAAK,EAAE,CAClC,EAAKA,EAAI,EAAc,KAAK,OAAO,GAAM,GAAK,EAAE,CACtD,EAAK,KAAK,KAAM,EAAM,CAAC,KAAK,KAAM,EAAG,CAAC,KAAK,KAAM,EAAM,CAAC,KAAK,KAAM,EAAG,CAAC,KAAK,eAAgB,IAAI,CAAC,KAAK,SAAU,GAAkB,EAAS,CAAC,EAQhJ,OALA,EAAiB,EAAY,EAAM,CACnC,EAAW,OAAS,EACpB,EAAW,UAAY,SAAS,EAAO,CACrC,OAAO,EAAkB,KAAK,EAAY,EAAM,EAE3C,EAET,EAAO,GAAY,aAAa,CAIhC,eAAe,GAAK,EAAQ,EAAM,CAChC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,cAAa,SAAU,MAAM,EACnD,EACA,EACA,EAAe,EAAK,CACrB,CACKC,EAAI,EAAK,MAAQ,GAAK,EACtBC,EAAI,EAAK,OAAS,EAAI,EACtBY,EAAI,IAAOb,EACX,CAAE,aAAc,EAChB,EAAW,EAAK,MAAQ,GACxB,EAAY,EAAK,OAAS,GAC1B,EAAiB,KAAK,IAAIA,EAAG,EAAS,CACtC,EAAkB,KAAK,IAAIC,EAAG,EAAU,CAC9C,EAAM,KAAK,YAAa,aAAa,CAAC,EAAK,MAAQ,EAAE,IAAI,CAAC,EAAK,OAAS,EAAE,GAAG,CAC7E,IAAI,EACE,EAAO;OACRY,EAAE,GAAGA,EAAE,SAAS,EAAiB,IAAK,GAAG,GAAK,EAAkB,GAAI;OACpEA,EAAE,GAAGA,EAAE,SAAS,EAAiB,IAAK;OACtCA,EAAE,GAAGA,EAAE,SAAS,EAAiB,IAAK;OACtCA,EAAE,GAAGA,EAAE,SAAS,EAAiB,IAAK,GAAG,EAAkB,GAAI;;OAE/DA,EAAE,GAAGA,EAAE,SAAS,EAAiB,IAAK,GAAG,EAAkB,IAAK;OAChEA,EAAI,GAAI,GAAGA,EAAI,GAAI,WAAW,EAAkB,IAAK;OACrDA,EAAE,GAAGA,EAAE,SAAS,GAAK,EAAiB,IAAK,GAAG,EAAkB,IAAK;;OAErEA,EAAE,GAAGA,EAAE,SAAS,GAAK,EAAiB,IAAK,GAAG,EAAkB,IAAK;OACrEA,EAAE,GAAGA,EAAE,SAAS,GAAK,EAAiB,IAAK;OAC3CA,EAAE,GAAGA,EAAE,SAAS,GAAK,EAAiB,IAAK;OAC3CA,EAAE,GAAGA,EAAE,SAAS,GAAK,EAAiB,IAAK,GAAG,GAAK,EAAkB,IAAK;;OAE1EA,EAAE,GAAGA,EAAE,SAAS,GAAK,EAAiB,GAAI,GAAG,GAAK,EAAkB,IAAK;OACzEA,EAAI,GAAI,GAAGA,EAAI,GAAI,WAAW,GAAK,EAAkB,IAAK;OAC1DA,EAAE,GAAGA,EAAE,SAAS,EAAiB,GAAI,GAAG,GAAK,EAAkB,IAAK;WAEzE,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAK8D,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAY,EAAG,KAAK,EAAM,EAAQ,CACxC,EAAW,EAAS,WAAa,EAAW,eAAe,CAC3D,EAAS,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,MAE7F,EAAW,EAAS,OAAO,OAAQ,eAAe,CAAC,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,IAAK,EAAK,CAWrI,OATA,EAAS,KAAK,YAAa,aAAa,CAAC,EAAiB,EAAE,IAAI,CAAC,EAAkB,EAAE,GAAG,CACxF,EAAiB,EAAM,EAAS,CAChC,EAAK,cAAgB,SAAS,EAAQ,EAAO,CAC3C,OAAO,EAAkB,KAAK,EAAQ,EAAM,EAE9C,EAAK,UAAY,SAAS,EAAO,CAE/B,OADA,EAAI,KAAK,iBAAkB,EAAM,EAAM,CAChC,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAM,OAAO,CAIpB,eAAe,GAAM,EAAQ,EAAM,CACjC,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,cAAa,SAAU,MAAM,EACnD,EACA,EACA,EAAe,EAAK,CACrB,CACK3E,EAAI,EAAK,MAAQ,EAAI,EACrBC,EAAI,EAAK,OAAS,EAAI,EACtB,EAAK,IAAOD,EACZ,EAAK,IAAOA,EACZ,EAAK,IAAOA,EACZ,EAAK,GAAMA,EACX,CAAE,aAAc,EAClB,EACE,EAAO;OACR,EAAG,GAAG,EAAG,SAASA,EAAI,IAAK,GAAG,GAAKA,EAAI,GAAI;OAC3C,EAAG,GAAG,EAAG,SAASA,EAAI,GAAI,GAAG,GAAKA,EAAI,GAAI;OAC1C,EAAG,GAAG,EAAG,SAASA,EAAI,IAAK,GAAGA,EAAI,GAAI;;OAEtC,EAAG,GAAG,EAAG,SAASA,EAAI,IAAK,GAAGC,EAAI,IAAK;OACvC,EAAG,GAAG,EAAG,SAAS,GAAKD,EAAI,IAAK,GAAGC,EAAI,IAAK;;OAE5C,EAAG,GAAG,EAAG,SAAS,GAAKD,EAAI,IAAK,GAAGA,EAAI,IAAK;OAC5C,EAAG,GAAG,EAAG,SAAS,GAAKA,EAAI,GAAI;OAC/B,EAAG,GAAG,EAAG,SAAS,GAAKA,EAAI,IAAK,GAAG,GAAKA,EAAI,IAAK;;OAEjD,EAAG,GAAG,EAAG,SAAS,GAAKA,EAAI,GAAI,GAAG,GAAKC,EAAI,IAAK;OAChD,EAAG,GAAG,EAAG,SAASD,EAAI,GAAI,GAAG,GAAKC,EAAI,IAAK;WAEhD,GAAI,EAAK,OAAS,YAAa,CAC7B,IAAM,EAAK2E,EAAQ,IAAI,EAAS,CAC1B,EAAU,EAAkB,EAAM,EAAE,CAAC,CACrC,EAAY,EAAG,KAAK,EAAM,EAAQ,CACxC,EAAY,EAAS,WAAa,EAAW,eAAe,CAC5D,EAAU,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAoB,EAAU,CAAC,MAE9F,EAAY,EAAS,OAAO,OAAQ,eAAe,CAAC,KAAK,QAAS,wBAAwB,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,IAAK,EAAK,CAYtI,OAVA,EAAM,KAAK,YAAa,aAAa,CAAC,EAAK,MAAQ,EAAE,IAAI,CAAC,EAAK,OAAS,EAAE,GAAG,CAC7E,EAAU,KAAK,YAAa,aAAa,CAAC5E,EAAI,EAAE,IAAI,CAACC,EAAI,EAAE,GAAG,CAC9D,EAAiB,EAAM,EAAU,CACjC,EAAK,cAAgB,SAAS,EAAQ,EAAO,CAC3C,OAAO,EAAkB,KAAK,EAAQ,EAAM,EAE9C,EAAK,UAAY,SAAS,EAAO,CAE/B,OADA,EAAI,KAAK,kBAAmB,EAAM,EAAM,CACjC,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAO,QAAQ,CAGtB,eAAe,GAAmB,EAAQ,EAAM,CAC9C,GAAM,CAAE,cAAa,cAAe,EAAc,EAAK,CACvD,EAAK,WAAa,EAClB,GAAM,CAAE,WAAU,OAAM,cAAa,SAAU,MAAM,EACnD,EACA,EACA,EAAe,EAAK,CACrB,CACKD,EAAI,EAAK,MAAQ,EAAI,EACrBC,EAAI,EAAK,OAAS,EAAI,EAEtB,EAAW;OACZ,CAACD,EAAI,EAAE,GAAGC,EAAI,EAAI,EAAG;OACrB,CAACA,EAAI,GAAO;;OAEZD,EAAI,GAAO;;OAEXC,EAAI,GAAO;;OAEX,CAACD,EAAI,GAAO;;;IAIX,EAAK,EAAS,OAAO,OAAO,CAAC,KAAK,KAAM,QAAU,EAAK,GAAG,CAAC,KAAK,QAAS,iBAAmB,EAAK,KAAK,CAAC,KAAK,QAAS,EAAW,CAAC,KAAK,IAAK,EAAS,CAW1J,OAVA,EAAS,OAAO,OAAO,CAAC,KAAK,QAAS,aAAa,CAAC,KAAK,KAAM,CAACA,EAAI,EAAE,CAAC,KAAK,KAAMC,EAAI,EAAE,CAAC,KAAK,KAAMD,EAAI,EAAE,CAAC,KAAK,KAAMC,EAAI,EAAE,CAC5H,EAAM,KAAK,YAAa,aAAa,CAAC,EAAK,MAAQ,EAAE,IAAI,CAAC,EAAK,OAAS,EAAE,GAAG,CAC7E,EAAS,WAAa,EAAM,MAAM,CAAC,CACnC,EAAiB,EAAM,EAAG,CAC1B,EAAK,cAAgB,SAAS,EAAQ,EAAO,CAC3C,OAAO,EAAkB,KAAK,EAAQ,EAAM,EAE9C,EAAK,UAAY,SAAS,EAAO,CAC/B,OAAO,EAAkB,KAAK,EAAM,EAAM,EAErC,EAET,EAAO,GAAoB,qBAAqB,CAGhD,eAAe,GAAc,EAAQ,EAAM,CAIzC,OAAO,GAAO,EAAQ,EAHN,CACd,QAAS,EAAK,SAAW,EAC1B,CACmC,CAEtC,EAAO,GAAe,gBAAgB,CAGtC,IAAI,GAAa,CACf,CACE,aAAc,UACd,KAAM,YACN,UAAW,OACX,YAAa,yBACb,QAAS,CAAC,OAAQ,UAAW,YAAY,CACzC,gBAAiB,CAAC,aAAa,CAC/B,QAAS,GACV,CACD,CACE,aAAc,QACd,KAAM,oBACN,UAAW,UACX,YAAa,sBACb,QAAS,CAAC,QAAQ,CAClB,gBAAiB,CAAC,cAAc,CAChC,QAAS,GACV,CACD,CACE,aAAc,iBACd,KAAM,UACN,UAAW,UACX,YAAa,iBACb,QAAS,CAAC,WAAY,OAAO,CAC7B,QAAS,GACV,CACD,CACE,aAAc,aACd,KAAM,mBACN,UAAW,UACX,YAAa,aACb,QAAS,CAAC,aAAc,UAAW,mBAAoB,aAAa,CACpE,QAAS,GACV,CACD,CACE,aAAc,WACd,KAAM,WACN,UAAW,MACX,YAAa,mBACb,QAAS,CAAC,KAAM,WAAY,WAAW,CACvC,QAAS,GACV,CACD,CACE,aAAc,QACd,KAAM,SACN,UAAW,SACX,YAAa,iBACb,QAAS,CAAC,OAAO,CACjB,QAAS,GACV,CACD,CACE,aAAc,OACd,KAAM,OACN,UAAW,OACX,YAAa,OACb,QAAS,CAAC,OAAO,CACjB,QAAS,GACV,CACD,CACE,aAAc,QACd,KAAM,QACN,UAAW,QACX,YAAa,QACb,QAAS,CAAC,QAAQ,CAClB,QAAS,GACV,CACD,CACE,aAAc,WACd,KAAM,UACN,UAAW,OACX,YAAa,uBACb,QAAS,CAAC,WAAY,UAAW,WAAW,CAC5C,QAAS,GACV,CACD,CACE,aAAc,sBACd,KAAM,UACN,UAAW,MACX,YAAa,gCACb,QAAS,CAAC,UAAW,UAAU,CAC/B,QAAS,GACV,CACD,CACE,aAAc,oBACd,KAAM,aACN,UAAW,SACX,YAAa,6BACb,QAAS,CAAC,aAAc,SAAS,CACjC,gBAAiB,CAAC,aAAa,CAC/B,QAAS,GACV,CACD,CACE,aAAc,oBACd,KAAM,YACN,UAAW,SACX,YAAa,6BACb,QAAS,CAAC,YAAa,SAAS,CAChC,gBAAiB,CAAC,YAAY,CAC9B,QAAS,GACV,CACD,CACE,aAAc,kBACd,KAAM,wBACN,UAAW,SACX,YAAa,kBACb,QAAS,CAAC,WAAY,mBAAoB,YAAY,CACtD,QAAS,GACV,CACD,CACE,aAAc,mBACd,KAAM,qBACN,UAAW,SACX,YAAa,2BACb,QAAS,CAAC,SAAU,gBAAiB,gBAAgB,CACrD,gBAAiB,CAAC,gBAAgB,CAClC,QAAS,GACV,CACD,CACE,aAAc,OACd,KAAM,gBACN,UAAW,WACX,YAAa,0BACb,QAAS,CAAC,gBAAgB,CAC1B,gBAAiB,CAAC,eAAe,CACjC,QAAS,GACV,CACD,CACE,aAAc,aACd,KAAM,aACN,UAAW,OACX,YAAa,aACb,QAAS,GACV,CACD,CACE,aAAc,OACd,KAAM,oBACN,UAAW,aACX,YAAa,oBACb,QAAS,CAAC,OAAQ,oBAAoB,CACtC,QAAS,GACV,CACD,CACE,aAAc,uBACd,KAAM,kBACN,UAAW,WACX,YAAa,sBACb,QAAS,CAAC,kBAAmB,gBAAiB,WAAY,iBAAiB,CAC3E,QAAS,GACV,CACD,CACE,aAAc,QACd,KAAM,eACN,UAAW,UACX,YAAa,uBACb,QAAS,CAAC,QAAS,eAAe,CAClC,gBAAiB,CAAC,aAAa,CAC/B,QAAS,GACV,CACD,CACE,aAAc,OACd,KAAM,gBACN,UAAW,UACX,YAAa,aACb,QAAS,CAAC,OAAQ,gBAAgB,CAClC,gBAAiB,CAAC,WAAW,CAC7B,QAAS,GACV,CACD,CACE,aAAc,YACd,KAAM,mBACN,UAAW,OACX,YAAa,+BACb,QAAS,CAAC,OAAO,CACjB,gBAAiB,CAAC,WAAW,CAC7B,QAAS,GACV,CACD,CACE,aAAc,UACd,KAAM,YACN,UAAW,YACX,YAAa,iCACb,QAAS,CAAC,YAAa,UAAU,CACjC,QAAS,GACV,CACD,CACE,aAAc,UACd,KAAM,cACN,UAAW,QACX,YAAa,iBACb,QAAS,CAAC,UAAW,UAAU,CAC/B,QAAS,GACV,CACD,CACE,aAAc,gBACd,KAAM,cACN,UAAW,UACX,YAAa,iBACb,QAAS,GACV,CACD,CACE,aAAc,oCACd,KAAM,eACN,UAAW,SACX,YAAa,iBACb,QAAS,GACV,CACD,CACE,aAAc,WACd,KAAM,iBACN,UAAW,OACX,YAAa,qBACb,QAAS,CAAC,WAAY,iBAAiB,CACvC,QAAS,GACV,CACD,CACE,aAAc,WACd,KAAM,WACN,UAAW,MACX,YAAa,wBACb,QAAS,CAAC,MAAO,WAAW,CAC5B,QAAS,GACV,CACD,CACE,aAAc,QACd,KAAM,yBACN,UAAW,QACX,YAAa,qBACb,QAAS,CAAC,yBAAyB,CACnC,QAAS,GACV,CACD,CACE,aAAc,wBACd,KAAM,sBACN,UAAW,QACX,YAAa,wBACb,QAAS,CAAC,MAAO,sBAAsB,CACvC,QAAS,GACV,CACD,CACE,aAAc,eACd,KAAM,iBACN,UAAW,UACX,YAAa,eACb,QAAS,CAAC,OAAQ,iBAAiB,CACnC,QAAS,GACV,CACD,CACE,aAAc,UACd,KAAM,mBACN,UAAW,YACX,YAAa,uBACb,QAAS,CAAC,mBAAoB,UAAU,CACxC,QAAS,GACV,CACD,CACE,aAAc,kBACd,KAAM,oBACN,UAAW,WACX,YAAa,wBACb,QAAS,CAAC,WAAY,oBAAqB,kBAAkB,CAC7D,QAAS,GACV,CACD,CACE,aAAc,UACd,KAAM,WACN,UAAW,MACX,YAAa,qBACb,QAAS,CAAC,UAAW,WAAW,CAChC,QAAS,GACV,CACD,CACE,aAAc,mBACd,KAAM,cACN,UAAW,WACX,YAAa,mBACb,QAAS,CAAC,mBAAoB,cAAc,CAC5C,QAAS,GACV,CACD,CACE,aAAc,WACd,KAAM,gBACN,UAAW,SACX,YAAa,iBACb,QAAS,CAAC,WAAY,gBAAgB,CACtC,QAAS,GACV,CACD,CACE,aAAc,aACd,KAAM,uBACN,UAAW,aACX,YAAa,kBACb,QAAS,CAAC,aAAc,mBAAmB,CAC3C,QAAS,GACV,CACD,CACE,aAAc,cACd,KAAM,mBACN,UAAW,WACX,YAAa,wBACb,QAAS,CAAC,cAAe,mBAAmB,CAC5C,QAAS,GACV,CACD,CACE,aAAc,eACd,KAAM,mBACN,UAAW,UACX,YAAa,oBACb,QAAS,CAAC,eAAgB,mBAAmB,CAC7C,QAAS,GACV,CACD,CACE,aAAc,iBACd,KAAM,mBACN,UAAW,OACX,YAAa,qBACb,QAAS,CAAC,YAAa,SAAU,mBAAmB,CACpD,QAAS,GACV,CACD,CACE,aAAc,gBACd,KAAM,oBACN,UAAW,UACX,YAAa,qBACb,QAAS,CAAC,QAAS,YAAa,oBAAoB,CACpD,QAAS,GACV,CACD,CACE,aAAc,cACd,KAAM,oBACN,UAAW,WACX,YAAa,cACb,QAAS,CAAC,cAAe,oBAAoB,CAC7C,QAAS,GACV,CACD,CACE,aAAc,UACd,KAAM,iBACN,UAAW,aACX,YAAa,UACb,QAAS,CAAC,UAAW,iBAAiB,CACtC,QAAS,GACV,CACD,CACE,aAAc,kBACd,KAAM,kBACN,UAAW,UACX,YAAa,kBACb,QAAS,CAAC,UAAW,kBAAkB,CACvC,QAAS,GACV,CACD,CACE,aAAc,iBACd,KAAM,mBACN,UAAW,WACX,YAAa,iBACb,QAAS,CAAC,mBAAoB,WAAY,iBAAiB,CAC3D,QAAS,GACV,CACD,CACE,aAAc,aACd,KAAM,OACN,UAAW,OACX,YAAa,aACb,QAAS,CAAC,aAAa,CACvB,QAAS,GACV,CACD,CACE,aAAc,MACd,KAAM,MACN,UAAW,MACX,YAAa,YACb,gBAAiB,CAAC,sBAAsB,CACxC,QAAS,GACV,CACD,CACE,aAAc,iBACd,KAAM,iBACN,UAAW,UACX,YAAa,iBACb,QAAS,CAAC,iBAAiB,CAC3B,QAAS,GACV,CACF,CA0CG,GAzCmC,MAAa,CAClD,IAAM,EAAqB,CAEzB,SACA,UACA,QAEA,iBACA,aAEA,cACA,cACA,QACA,eACA,eACA,UAEA,cAEA,iBACA,sBAEA,YAEA,SAEA,kBACD,CACK,EAAU,CACd,GAAG,OAAO,QAAQ,EAAmB,CACrC,GAAG,GAAW,QAAS,GACL,CACd,EAAM,UACN,GAAG,YAAa,EAAQ,EAAM,QAAU,EAAE,CAC1C,GAAG,oBAAqB,EAAQ,EAAM,gBAAkB,EAAE,CAC3D,CACc,IAAK,GAAU,CAAC,EAAO,EAAM,QAAQ,CAAC,CACrD,CACH,CACD,OAAO,OAAO,YAAY,EAAQ,EACjC,mBAAmB,EACU,CAChC,SAAS,GAAa,EAAO,CAC3B,OAAO,KAAS,GAElB,EAAO,GAAc,eAAe,CAGpC,IAAI,GAA4B,IAAI,IACpC,eAAe,GAAW,EAAM,EAAM,EAAe,CACnD,IAAI,EACA,EACA,EAAK,QAAU,SACb,EAAK,IAAM,EAAK,GAClB,EAAK,MAAQ,cAEb,EAAK,MAAQ,cAGjB,IAAM,EAAe,EAAK,MAAQ,GAAQ,EAAK,OAAS,IAAK,GAC7D,GAAI,CAAC,EACH,MAAU,MAAM,kBAAkB,EAAK,MAAM,6BAA6B,CAE5E,GAAI,EAAK,KAAM,CACb,IAAI,EACA,EAAc,OAAO,gBAAkB,UACzC,EAAS,OACA,EAAK,aACd,EAAS,EAAK,YAAc,UAE9B,EAAQ,EAAK,OAAO,QAAQ,CAAC,KAAK,aAAc,EAAK,KAAK,CAAC,KAAK,SAAU,GAAU,KAAK,CACzF,EAAK,MAAM,EAAa,EAAO,EAAM,EAAc,MAEnD,EAAK,MAAM,EAAa,EAAM,EAAM,EAAc,CAClD,EAAQ,EASV,OAPI,EAAK,SACP,EAAG,KAAK,QAAS,EAAK,QAAQ,CAEhC,GAAU,IAAI,EAAK,GAAI,EAAM,CACzB,EAAK,cACP,EAAM,KAAK,QAAS,EAAM,KAAK,QAAQ,CAAG,aAAa,CAElD,EAET,EAAO,GAAY,aAAa,CAChC,IAAI,GAA8B,GAAQ,EAAM,IAAS,CACvD,GAAU,IAAI,EAAK,GAAI,EAAK,EAC3B,cAAc,CACb,GAAyB,MAAa,CACxC,GAAU,OAAO,EAChB,QAAQ,CACP,GAA+B,EAAQ,GAAS,CAClD,IAAM,EAAK,GAAU,IAAI,EAAK,GAAG,CACjC,EAAI,MACF,oBACA,EAAK,KACL,EACA,cAAgB,EAAK,EAAI,EAAK,MAAQ,EAAI,GAAK,KAAO,EAAK,MAAQ,EAAI,IACxE,CACD,IACM,EAAO,EAAK,MAAQ,EAS1B,OARI,EAAK,YACP,EAAG,KACD,YACA,cAAgB,EAAK,EAAI,EAAO,EAAK,MAAQ,GAAK,MAAQ,EAAK,EAAI,EAAK,OAAS,EAAI,GAAW,IACjG,CAED,EAAG,KAAK,YAAa,aAAe,EAAK,EAAI,KAAO,EAAK,EAAI,IAAI,CAE5D,GACN,eAAe"}
|