Files
web-frontend/docs/public/diagrams/infrastructure-topology.svg
2026-05-01 15:09:02 +07:00

1 line
44 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 2668.52px; background-color: transparent;" viewBox="0 0 2668.515625 716.2925415039062" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:Inter,Arial,sans-serif;font-size:16px;fill:#000000;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#666;stroke:#666;}#my-svg .marker.cross{stroke:#666;}#my-svg svg{font-family:Inter,Arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:Inter,Arial,sans-serif;color:#000000;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#000000;color:#000000;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#eee;stroke:#999;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#666!important;stroke-width:0;stroke:#666;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#666;stroke-width:1px;}#my-svg .flowchart-link{stroke:#666;fill:none;}#my-svg .edgeLabel{background-color:white;text-align:center;}#my-svg .edgeLabel p{background-color:white;}#my-svg .edgeLabel rect{opacity:0.5;background-color:white;fill:white;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:hsl(0, 0%, 98.9215686275%);stroke:#707070;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Inter,Arial,sans-serif;font-size:12px;background:hsl(-160, 0%, 93.3333333333%);border:1px solid #707070;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#000000;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:white;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:white;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:white;fill:white;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#999;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node path{stroke:url(#my-svg-gradient);stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#999;filter:none;}#my-svg [data-look="neo"].node circle{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg :root{--mermaid-font-family:Inter,Arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster " id="my-svg-Infra" data-look="classic"><rect style="" x="8" y="419" width="1193.265625" height="289.2925567626953"/><g class="cluster-label " transform="translate(505.828125, 419)"><foreignObject width="197.609375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel "><p>Инфраструктурный контур</p></span></div></foreignObject></g></g><g class="cluster " id="my-svg-Dokploy" data-look="classic"><rect style="" x="1221.265625" y="162" width="1377.3515625" height="387.61658477783203"/><g class="cluster-label " transform="translate(1881.03515625, 162)"><foreignObject width="57.8125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel "><p>Dokploy</p></span></div></foreignObject></g></g><g class="cluster " id="my-svg-Repo" data-look="classic"><rect style="" x="1248.828125" y="8" width="1411.6875" height="104"/><g class="cluster-label " transform="translate(1884.3203125, 8)"><foreignObject width="140.703125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel "><p>Репозиторий fregat</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M1360.523,87L1360.523,91.167C1360.523,95.333,1360.523,103.667,1360.523,112C1360.523,120.333,1360.523,128.667,1360.523,137C1360.523,145.333,1360.523,153.667,1360.523,161.333C1360.523,169,1360.523,176,1360.523,179.5L1360.523,183" id="my-svg-L_FrontendRepo_FrontendSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_FrontendRepo_FrontendSvc_0" data-points="W3sieCI6MTM2MC41MjM0Mzc1LCJ5Ijo4N30seyJ4IjoxMzYwLjUyMzQzNzUsInkiOjExMn0seyJ4IjoxMzYwLjUyMzQzNzUsInkiOjEzN30seyJ4IjoxMzYwLjUyMzQzNzUsInkiOjE2Mn0seyJ4IjoxMzYwLjUyMzQzNzUsInkiOjE4N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1571.484,87L1571.484,91.167C1571.484,95.333,1571.484,103.667,1571.484,112C1571.484,120.333,1571.484,128.667,1571.484,137C1571.484,145.333,1571.484,153.667,1571.484,166.5C1571.484,179.333,1571.484,196.667,1571.484,214C1571.484,231.333,1571.484,248.667,1570.121,260.878C1568.758,273.089,1566.031,280.178,1564.668,283.722L1563.305,287.267" id="my-svg-L_BackendRepo_BackendSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BackendRepo_BackendSvc_0" data-points="W3sieCI6MTU3MS40ODQzNzUsInkiOjg3fSx7IngiOjE1NzEuNDg0Mzc1LCJ5IjoxMTJ9LHsieCI6MTU3MS40ODQzNzUsInkiOjEzN30seyJ4IjoxNTcxLjQ4NDM3NSwieSI6MTYyfSx7IngiOjE1NzEuNDg0Mzc1LCJ5IjoyMTR9LHsieCI6MTU3MS40ODQzNzUsInkiOjI2Nn0seyJ4IjoxNTYxLjg2ODk5MDM4NDYxNTUsInkiOjI5MX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1756.211,87L1756.211,91.167C1756.211,95.333,1756.211,103.667,1756.211,112C1756.211,120.333,1756.211,128.667,1756.211,137C1756.211,145.333,1756.211,153.667,1756.211,161.333C1756.211,169,1756.211,176,1756.211,179.5L1756.211,183" id="my-svg-L_TgRepo_TgSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_TgRepo_TgSvc_0" data-points="W3sieCI6MTc1Ni4yMTA5Mzc1LCJ5Ijo4N30seyJ4IjoxNzU2LjIxMDkzNzUsInkiOjExMn0seyJ4IjoxNzU2LjIxMDkzNzUsInkiOjEzN30seyJ4IjoxNzU2LjIxMDkzNzUsInkiOjE2Mn0seyJ4IjoxNzU2LjIxMDkzNzUsInkiOjE4N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1970.695,87L1970.695,91.167C1970.695,95.333,1970.695,103.667,1970.695,112C1970.695,120.333,1970.695,128.667,1970.695,137C1970.695,145.333,1970.695,153.667,1970.695,161.333C1970.695,169,1970.695,176,1970.695,179.5L1970.695,183" id="my-svg-L_MaxRepo_MaxSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MaxRepo_MaxSvc_0" data-points="W3sieCI6MTk3MC42OTUzMTI1LCJ5Ijo4N30seyJ4IjoxOTcwLjY5NTMxMjUsInkiOjExMn0seyJ4IjoxOTcwLjY5NTMxMjUsInkiOjEzN30seyJ4IjoxOTcwLjY5NTMxMjUsInkiOjE2Mn0seyJ4IjoxOTcwLjY5NTMxMjUsInkiOjE4N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2200.305,87L2200.305,91.167C2200.305,95.333,2200.305,103.667,2200.305,112C2200.305,120.333,2200.305,128.667,2200.305,137C2200.305,145.333,2200.305,153.667,2200.305,161.333C2200.305,169,2200.305,176,2200.305,179.5L2200.305,183" id="my-svg-L_BonusRepo_BonusSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BonusRepo_BonusSvc_0" data-points="W3sieCI6MjIwMC4zMDQ2ODc1LCJ5Ijo4N30seyJ4IjoyMjAwLjMwNDY4NzUsInkiOjExMn0seyJ4IjoyMjAwLjMwNDY4NzUsInkiOjEzN30seyJ4IjoyMjAwLjMwNDY4NzUsInkiOjE2Mn0seyJ4IjoyMjAwLjMwNDY4NzUsInkiOjE4N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2398.805,87L2398.805,91.167C2398.805,95.333,2398.805,103.667,2398.805,112C2398.805,120.333,2398.805,128.667,2398.805,137C2398.805,145.333,2398.805,153.667,2398.805,166.5C2398.805,179.333,2398.805,196.667,2398.805,214C2398.805,231.333,2398.805,248.667,2398.805,260.833C2398.805,273,2398.805,280,2398.805,283.5L2398.805,287" id="my-svg-L_WorkerRepo_WorkerSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_WorkerRepo_WorkerSvc_0" data-points="W3sieCI6MjM5OC44MDQ2ODc1LCJ5Ijo4N30seyJ4IjoyMzk4LjgwNDY4NzUsInkiOjExMn0seyJ4IjoyMzk4LjgwNDY4NzUsInkiOjEzN30seyJ4IjoyMzk4LjgwNDY4NzUsInkiOjE2Mn0seyJ4IjoyMzk4LjgwNDY4NzUsInkiOjIxNH0seyJ4IjoyMzk4LjgwNDY4NzUsInkiOjI2Nn0seyJ4IjoyMzk4LjgwNDY4NzUsInkiOjI5MX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2578.617,87L2578.617,91.167C2578.617,95.333,2578.617,103.667,2578.617,112C2578.617,120.333,2578.617,128.667,2578.617,137C2578.617,145.333,2578.617,153.667,2578.617,166.5C2578.617,179.333,2578.617,196.667,2578.617,214C2578.617,231.333,2578.617,248.667,2578.617,266C2578.617,283.333,2578.617,300.667,2578.617,320C2578.617,339.333,2578.617,360.667,2578.617,377.5C2578.617,394.333,2578.617,406.667,2509.502,421.987C2440.387,437.307,2302.157,455.614,2233.041,464.768L2163.926,473.922" id="my-svg-L_VaultRepo_VaultSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_VaultRepo_VaultSvc_0" data-points="W3sieCI6MjU3OC42MTcxODc1LCJ5Ijo4N30seyJ4IjoyNTc4LjYxNzE4NzUsInkiOjExMn0seyJ4IjoyNTc4LjYxNzE4NzUsInkiOjEzN30seyJ4IjoyNTc4LjYxNzE4NzUsInkiOjE2Mn0seyJ4IjoyNTc4LjYxNzE4NzUsInkiOjIxNH0seyJ4IjoyNTc4LjYxNzE4NzUsInkiOjI2Nn0seyJ4IjoyNTc4LjYxNzE4NzUsInkiOjMxOH0seyJ4IjoyNTc4LjYxNzE4NzUsInkiOjM4Mn0seyJ4IjoyNTc4LjYxNzE4NzUsInkiOjQxOX0seyJ4IjoyMTU5Ljk2MDkzNzUsInkiOjQ3NC40NDY3MDgxNjI5NDk4NX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1410.1,241L1417.751,245.167C1425.401,249.333,1440.703,257.667,1455.418,265.681C1470.134,273.696,1484.265,281.391,1491.33,285.239L1498.395,289.087" id="my-svg-L_FrontendSvc_BackendSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_FrontendSvc_BackendSvc_0" data-points="W3sieCI6MTQxMC4wOTk4MzQ3MzU1NzcsInkiOjI0MX0seyJ4IjoxNDU2LjAwMzkwNjI1LCJ5IjoyNjZ9LHsieCI6MTUwMS45MDc5Nzc3NjQ0MjMsInkiOjI5MX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1594.669,345L1604.532,351.167C1614.395,357.333,1634.121,369.667,1643.985,382C1653.848,394.333,1653.848,406.667,1484.101,422.908C1314.354,439.149,974.861,459.298,805.115,469.373L635.368,479.447" id="my-svg-L_BackendSvc_BackendDb_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BackendSvc_BackendDb_0" data-points="W3sieCI6MTU5NC42Njg4ODQyNzczNDM4LCJ5IjozNDV9LHsieCI6MTY1My44NDc2NTYyNSwieSI6MzgyfSx7IngiOjE2NTMuODQ3NjU2MjUsInkiOjQxOX0seyJ4Ijo2MzEuMzc1LCJ5Ijo0NzkuNjg0MDY4NjYwNzkwMTZ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1584.636,345L1592.208,351.167C1599.78,357.333,1614.923,369.667,1622.495,382C1630.066,394.333,1630.066,406.667,1692.902,421.844C1755.737,437.021,1881.409,455.042,1944.244,464.052L2007.08,473.063" id="my-svg-L_BackendSvc_VaultSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BackendSvc_VaultSvc_0" data-points="W3sieCI6MTU4NC42MzYxNjk0MzM1OTM4LCJ5IjozNDV9LHsieCI6MTYzMC4wNjY0MDYyNSwieSI6MzgyfSx7IngiOjE2MzAuMDY2NDA2MjUsInkiOjQxOX0seyJ4IjoyMDExLjAzOTA2MjUsInkiOjQ3My42MzA3Mzg2MzY3NjA5fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1756.211,241L1756.211,245.167C1756.211,249.333,1756.211,257.667,1756.211,270.5C1756.211,283.333,1756.211,300.667,1756.211,320C1756.211,339.333,1756.211,360.667,1756.211,377.5C1756.211,394.333,1756.211,406.667,1798.028,421.127C1839.846,435.587,1923.481,452.175,1965.298,460.468L2007.115,468.762" id="my-svg-L_TgSvc_VaultSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_TgSvc_VaultSvc_0" data-points="W3sieCI6MTc1Ni4yMTA5Mzc1LCJ5IjoyNDF9LHsieCI6MTc1Ni4yMTA5Mzc1LCJ5IjoyNjZ9LHsieCI6MTc1Ni4yMTA5Mzc1LCJ5IjozMTh9LHsieCI6MTc1Ni4yMTA5Mzc1LCJ5IjozODJ9LHsieCI6MTc1Ni4yMTA5Mzc1LCJ5Ijo0MTl9LHsieCI6MjAxMS4wMzkwNjI1LCJ5Ijo0NjkuNTQwMzY1ODcyMDY0ODV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1970.695,241L1970.695,245.167C1970.695,249.333,1970.695,257.667,1970.695,270.5C1970.695,283.333,1970.695,300.667,1970.695,320C1970.695,339.333,1970.695,360.667,1970.695,377.5C1970.695,394.333,1970.695,406.667,1981.339,418.888C1991.984,431.11,2013.272,443.22,2023.916,449.275L2034.56,455.33" id="my-svg-L_MaxSvc_VaultSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_MaxSvc_VaultSvc_0" data-points="W3sieCI6MTk3MC42OTUzMTI1LCJ5IjoyNDF9LHsieCI6MTk3MC42OTUzMTI1LCJ5IjoyNjZ9LHsieCI6MTk3MC42OTUzMTI1LCJ5IjozMTh9LHsieCI6MTk3MC42OTUzMTI1LCJ5IjozODJ9LHsieCI6MTk3MC42OTUzMTI1LCJ5Ijo0MTl9LHsieCI6MjAzOC4wMzcwMTQwNzQwOTUyLCJ5Ijo0NTcuMzA4MjkyMzg4OTE2fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2200.305,241L2200.305,245.167C2200.305,249.333,2200.305,257.667,2200.305,270.5C2200.305,283.333,2200.305,300.667,2200.305,320C2200.305,339.333,2200.305,360.667,2200.305,377.5C2200.305,394.333,2200.305,406.667,2189.661,418.888C2179.016,431.11,2157.728,443.22,2147.084,449.275L2136.44,455.33" id="my-svg-L_BonusSvc_VaultSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BonusSvc_VaultSvc_0" data-points="W3sieCI6MjIwMC4zMDQ2ODc1LCJ5IjoyNDF9LHsieCI6MjIwMC4zMDQ2ODc1LCJ5IjoyNjZ9LHsieCI6MjIwMC4zMDQ2ODc1LCJ5IjozMTh9LHsieCI6MjIwMC4zMDQ2ODc1LCJ5IjozODJ9LHsieCI6MjIwMC4zMDQ2ODc1LCJ5Ijo0MTl9LHsieCI6MjEzMi45NjI5ODU5MjU5MDUsInkiOjQ1Ny4zMDgyOTIzODg5MTZ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2432.515,345L2440.214,351.167C2447.914,357.333,2463.312,369.667,2471.012,382C2478.711,394.333,2478.711,406.667,2426.244,421.548C2373.776,436.429,2268.842,453.857,2216.374,462.571L2163.907,471.286" id="my-svg-L_WorkerSvc_VaultSvc_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_WorkerSvc_VaultSvc_0" data-points="W3sieCI6MjQzMi41MTUxMzY3MTg3NSwieSI6MzQ1fSx7IngiOjI0NzguNzEwOTM3NSwieSI6MzgyfSx7IngiOjI0NzguNzEwOTM3NSwieSI6NDE5fSx7IngiOjIxNTkuOTYwOTM3NSwieSI6NDcxLjk0MTA5NjUzMDMyNDd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2085.5,511.308L2085.5,517.693C2085.5,524.078,2085.5,536.847,1910.716,547.399C1735.932,557.95,1386.365,566.283,1211.581,576.423C1036.797,586.563,1036.797,598.509,1036.797,604.482L1036.797,610.455" id="my-svg-L_VaultSvc_VaultData_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_VaultSvc_VaultData_0" data-points="W3sieCI6MjA4NS41LCJ5Ijo1MTEuMzA4MjkyMzg4OTE2fSx7IngiOjIwODUuNSwieSI6NTQ5LjYxNjU4NDc3NzgzMn0seyJ4IjoxMDM2Ljc5Njg3NSwieSI6NTc0LjYxNjU4NDc3NzgzMn0seyJ4IjoxMDM2Ljc5Njg3NSwieSI6NjE0LjQ1NDU3MDc3MDI2Mzd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M2361.152,345L2352.553,351.167C2343.953,357.333,2326.754,369.667,2318.154,382C2309.555,394.333,2309.555,406.667,2066.798,423.099C1824.04,439.532,1338.526,460.063,1095.769,470.329L853.012,480.595" id="my-svg-L_WorkerSvc_HatchetEngine_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_WorkerSvc_HatchetEngine_0" data-points="W3sieCI6MjM2MS4xNTIzNDM3NSwieSI6MzQ1fSx7IngiOjIzMDkuNTU0Njg3NSwieSI6MzgyfSx7IngiOjIzMDkuNTU0Njg3NSwieSI6NDE5fSx7IngiOjg0OS4wMTU2MjUsInkiOjQ4MC43NjM2NzYwNDc5OTQ1fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M765.195,511.308L765.195,517.693C765.195,524.078,765.195,536.847,765.195,547.399C765.195,557.95,765.195,566.283,765.195,573.95C765.195,581.617,765.195,588.617,765.195,592.117L765.195,595.617" id="my-svg-L_HatchetEngine_HatchetPg_0" class=" edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_HatchetEngine_HatchetPg_0" data-points="W3sieCI6NzY1LjE5NTMxMjUsInkiOjUxMS4zMDgyOTIzODg5MTZ9LHsieCI6NzY1LjE5NTMxMjUsInkiOjU0OS42MTY1ODQ3Nzc4MzJ9LHsieCI6NzY1LjE5NTMxMjUsInkiOjU3NC42MTY1ODQ3Nzc4MzJ9LHsieCI6NzY1LjE5NTMxMjUsInkiOjU5OS42MTY1ODQ3Nzc4MzJ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1528.263,345L1522.96,351.167C1517.656,357.333,1507.049,369.667,1501.745,382C1496.441,394.333,1496.441,406.667,1318.625,423.285C1140.808,439.903,785.174,460.806,607.357,471.258L429.54,481.709" id="my-svg-L_BackendSvc_OneC_0" class=" edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BackendSvc_OneC_0" data-points="W3sieCI6MTUyOC4yNjMxMjI1NTg1OTM4LCJ5IjozNDV9LHsieCI6MTQ5Ni40NDE0MDYyNSwieSI6MzgyfSx7IngiOjE0OTYuNDQxNDA2MjUsInkiOjQxOX0seyJ4Ijo0MjUuNTQ2ODc1LCJ5Ijo0ODEuOTQzODk4MzM2NTIyOX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1340.417,241L1337.315,245.167C1334.212,249.333,1328.006,257.667,1324.904,270.5C1321.801,283.333,1321.801,300.667,1321.801,320C1321.801,339.333,1321.801,360.667,1321.801,377.5C1321.801,394.333,1321.801,406.667,1151.349,422.49C980.896,438.314,639.992,457.627,469.54,467.284L299.087,476.941" id="my-svg-L_FrontendSvc_Tailscale_0" class=" edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_FrontendSvc_Tailscale_0" data-points="W3sieCI6MTM0MC40MTc0NDI5MDg2NTM4LCJ5IjoyNDF9LHsieCI6MTMyMS44MDA3ODEyNSwieSI6MjY2fSx7IngiOjEzMjEuODAwNzgxMjUsInkiOjMxOH0seyJ4IjoxMzIxLjgwMDc4MTI1LCJ5IjozODJ9LHsieCI6MTMyMS44MDA3ODEyNSwieSI6NDE5fSx7IngiOjI5NS4wOTM3NSwieSI6NDc3LjE2NzIxMzg2MTU5MzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1487.549,345L1472.946,351.167C1458.344,357.333,1429.139,369.667,1414.536,382C1399.934,394.333,1399.934,406.667,1216.459,422.568C1032.985,438.47,666.037,457.939,482.562,467.674L299.088,477.409" id="my-svg-L_BackendSvc_Tailscale_0" class=" edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_BackendSvc_Tailscale_0" data-points="W3sieCI6MTQ4Ny41NDg4ODkxNjAxNTYyLCJ5IjozNDV9LHsieCI6MTM5OS45MzM1OTM3NSwieSI6MzgyfSx7IngiOjEzOTkuOTMzNTkzNzUsInkiOjQxOX0seyJ4IjoyOTUuMDkzNzUsInkiOjQ3Ny42MjA1MDcwMzcyNTU5NX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_FrontendRepo_FrontendSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BackendRepo_BackendSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_TgRepo_TgSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_MaxRepo_MaxSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BonusRepo_BonusSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_WorkerRepo_WorkerSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_VaultRepo_VaultSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_FrontendSvc_BackendSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BackendSvc_BackendDb_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BackendSvc_VaultSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_TgSvc_VaultSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_MaxSvc_VaultSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_BonusSvc_VaultSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_WorkerSvc_VaultSvc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_VaultSvc_VaultData_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_WorkerSvc_HatchetEngine_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_HatchetEngine_HatchetPg_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1496.44140625, 382)"><g class="label" data-id="L_BackendSvc_OneC_0" transform="translate(-34.6953125, -12)"><foreignObject width="69.390625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>exchange</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1321.80078125, 318)"><g class="label" data-id="L_FrontendSvc_Tailscale_0" transform="translate(-41.8125, -12)"><foreignObject width="83.625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>ops / debug</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1399.93359375, 382)"><g class="label" data-id="L_BackendSvc_Tailscale_0" transform="translate(-41.8125, -12)"><foreignObject width="83.625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel "><p>ops / debug</p></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default " id="my-svg-flowchart-FrontendRepo-0" data-look="classic" transform="translate(1360.5234375, 60)"><rect class="basic label-container" style="" x="-76.6953125" y="-27" width="153.390625" height="54"/><g class="label" style="" transform="translate(-46.6953125, -12)"><rect/><foreignObject width="93.390625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>web-frontend</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-BackendRepo-1" data-look="classic" transform="translate(1571.484375, 60)"><rect class="basic label-container" style="" x="-84.265625" y="-27" width="168.53125" height="54"/><g class="label" style="" transform="translate(-54.265625, -12)"><rect/><foreignObject width="108.53125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>apollo-backend</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-TgRepo-2" data-look="classic" transform="translate(1756.2109375, 60)"><rect class="basic label-container" style="" x="-50.4609375" y="-27" width="100.921875" height="54"/><g class="label" style="" transform="translate(-20.4609375, -12)"><rect/><foreignObject width="40.921875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>tg-bot</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-MaxRepo-3" data-look="classic" transform="translate(1970.6953125, 60)"><rect class="basic label-container" style="" x="-58.8984375" y="-27" width="117.796875" height="54"/><g class="label" style="" transform="translate(-28.8984375, -12)"><rect/><foreignObject width="57.796875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>max-bot</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-BonusRepo-4" data-look="classic" transform="translate(2200.3046875, 60)"><rect class="basic label-container" style="" x="-65.5859375" y="-27" width="131.171875" height="54"/><g class="label" style="" transform="translate(-35.5859375, -12)"><rect/><foreignObject width="71.171875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>bonus-bot</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-WorkerRepo-5" data-look="classic" transform="translate(2398.8046875, 60)"><rect class="basic label-container" style="" x="-82.9140625" y="-27" width="165.828125" height="54"/><g class="label" style="" transform="translate(-52.9140625, -12)"><rect/><foreignObject width="105.828125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>hatchet-worker</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-VaultRepo-6" data-look="classic" transform="translate(2578.6171875, 60)"><rect class="basic label-container" style="" x="-46.8984375" y="-27" width="93.796875" height="54"/><g class="label" style="" transform="translate(-16.8984375, -12)"><rect/><foreignObject width="33.796875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>vault</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-FrontendSvc-7" data-look="classic" transform="translate(1360.5234375, 214)"><rect class="basic label-container" style="" x="-104.2578125" y="-27" width="208.515625" height="54"/><g class="label" style="" transform="translate(-74.2578125, -12)"><rect/><foreignObject width="148.515625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>web-frontend service</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-BackendSvc-8" data-look="classic" transform="translate(1551.484375, 318)"><rect class="basic label-container" style="" x="-111.828125" y="-27" width="223.65625" height="54"/><g class="label" style="" transform="translate(-81.828125, -12)"><rect/><foreignObject width="163.65625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>apollo-backend service</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-TgSvc-9" data-look="classic" transform="translate(1756.2109375, 214)"><rect class="basic label-container" style="" x="-78.0234375" y="-27" width="156.046875" height="54"/><g class="label" style="" transform="translate(-48.0234375, -12)"><rect/><foreignObject width="96.046875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>tg-bot service</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-MaxSvc-10" data-look="classic" transform="translate(1970.6953125, 214)"><rect class="basic label-container" style="" x="-86.4609375" y="-27" width="172.921875" height="54"/><g class="label" style="" transform="translate(-56.4609375, -12)"><rect/><foreignObject width="112.921875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>max-bot service</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-BonusSvc-11" data-look="classic" transform="translate(2200.3046875, 214)"><rect class="basic label-container" style="" x="-93.1484375" y="-27" width="186.296875" height="54"/><g class="label" style="" transform="translate(-63.1484375, -12)"><rect/><foreignObject width="126.296875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>bonus-bot service</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-WorkerSvc-12" data-look="classic" transform="translate(2398.8046875, 318)"><rect class="basic label-container" style="" x="-110.4765625" y="-27" width="220.953125" height="54"/><g class="label" style="" transform="translate(-80.4765625, -12)"><rect/><foreignObject width="160.953125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>hatchet-worker service</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-VaultSvc-13" data-look="classic" transform="translate(2085.5, 484.308292388916)"><rect class="basic label-container" style="" x="-74.4609375" y="-27" width="148.921875" height="54"/><g class="label" style="" transform="translate(-44.4609375, -12)"><rect/><foreignObject width="88.921875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>vault service</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-VaultData-14" data-look="classic" transform="translate(1036.796875, 641.4545707702637)"><rect class="basic label-container" style="" x="-129.46875" y="-27" width="258.9375" height="54"/><g class="label" style="" transform="translate(-99.46875, -12)"><rect/><foreignObject width="198.9375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Vault raft storage /vault/data</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-BackendDb-15" data-look="classic" transform="translate(553.4609375, 484.308292388916)"><path d="M0,13.872197184665886 a77.9140625,13.872197184665886 0,0,0 155.828125,0 a77.9140625,13.872197184665886 0,0,0 -155.828125,0 l0,52.872197184665886 a77.9140625,13.872197184665886 0,0,0 155.828125,0 l0,-52.872197184665886" class="basic label-container outer-path" style="" label-offset-y="13.872197184665886" transform="translate(-77.9140625, -40.30829577699883)"/><g class="label" style="" transform="translate(-70.4140625, -2)"><rect/><foreignObject width="140.828125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>PostgreSQL for app</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-HatchetEngine-16" data-look="classic" transform="translate(765.1953125, 484.308292388916)"><rect class="basic label-container" style="" x="-83.8203125" y="-27" width="167.640625" height="54"/><g class="label" style="" transform="translate(-53.8203125, -12)"><rect/><foreignObject width="107.640625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Hatchet engine</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-HatchetPg-17" data-look="classic" transform="translate(765.1953125, 641.4545707702637)"><path d="M0,14.895417571868842 a92.1328125,14.895417571868842 0,0,0 184.265625,0 a92.1328125,14.895417571868842 0,0,0 -184.265625,0 l0,53.89541757186884 a92.1328125,14.895417571868842 0,0,0 184.265625,0 l0,-53.89541757186884" class="basic label-container outer-path" style="" label-offset-y="14.895417571868842" transform="translate(-92.1328125, -41.843126357803264)"/><g class="label" style="" transform="translate(-84.6328125, -2)"><rect/><foreignObject width="169.265625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>PostgreSQL for Hatchet</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-OneC-18" data-look="classic" transform="translate(385.3203125, 484.308292388916)"><rect class="basic label-container" style="" x="-40.2265625" y="-27" width="80.453125" height="54"/><g class="label" style="" transform="translate(-10.2265625, -12)"><rect/><foreignObject width="20.453125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>1С</p></span></div></foreignObject></g></g><g class="node default " id="my-svg-flowchart-Tailscale-19" data-look="classic" transform="translate(169.046875, 484.308292388916)"><rect class="basic label-container" style="" x="-126.046875" y="-27" width="252.09375" height="54"/><g class="label" style="" transform="translate(-96.046875, -12)"><rect/><foreignObject width="192.09375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel "><p>Tailscale SSH / diagnostics</p></span></div></foreignObject></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><linearGradient id="my-svg-gradient" gradientUnits="objectBoundingBox" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="hsl(0, 0%, 83.3333333333%)" stop-opacity="1"/><stop offset="100%" stop-color="hsl(0, 0%, 88.9215686275%)" stop-opacity="1"/></linearGradient></svg>