1 2 3
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="781px" height="411px" viewBox="-0.5 -0.5 781 411" content="<mxfile host="www.draw.io" modified="2020-03-26T01:12:48.109Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36" version="12.9.2" etag="d43H21Wg4KyFmQ-uVD12" type="device"><diagram id="B61o5x5JCCu5H51kVU5D">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</diagram></mxfile>"><defs/><g><path d="M 50 40 L 50 340" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><rect x="210" y="209.51" width="200" height="70" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="210" y="40" width="200" height="130" fill="#ffffff" stroke="#000000" pointer-events="all"/><path d="M 252 40 L 252 170 M 368 40 L 368 170" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 114px; height: 1px; padding-top: 105px; margin-left: 253px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Main Thread<br />(xcontrol)</div></div></div></foreignObject><text x="310" y="109" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Main Thread...</text></switch></g><rect x="570" y="200" width="170" height="80" fill="#ffffff" stroke="#000000" pointer-events="all"/><path d="M 603 200 L 603 280 M 707 200 L 707 280" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 103px; height: 1px; padding-top: 240px; margin-left: 604px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Publisher Thread<br />(xpublisher)<br /></div></div></div></foreignObject><text x="656" y="244" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Publisher Thread...</text></switch></g><rect x="566.5" y="40" width="170" height="80" fill="#ffffff" stroke="#000000" pointer-events="all"/><path d="M 605.5 40 L 605.5 120 M 697.5 40 L 697.5 120" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 90px; height: 1px; padding-top: 80px; margin-left: 607px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Heartbeat Thread<br />(xheartbeat)<br /></div></div></div></foreignObject><text x="652" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Heartbeat Threa...</text></switch></g><rect x="180" y="0" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 10px; margin-left: 181px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Server</div></div></div></foreignObject><text x="200" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Server</text></switch></g><path d="M 565 220 L 540 220 Q 530 220 530 210 L 530 100 Q 530 90 520 90 L 415 90" fill="none" stroke="#ae4132" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 415 120 L 500 120 Q 510 120 510 130 L 510 250 Q 510 260 520 260 L 565 260" fill="none" stroke="#10739e" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 745 260 L 752.5 260 Q 760 260 760 270 L 760 300 Q 760 310 750 310 L 55 310" fill="none" stroke="#10739e" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 50 300 L 50 0" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><rect x="10" y="0" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 10px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Client</div></div></div></foreignObject><text x="30" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Client</text></switch></g><rect x="420" y="70" width="100" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 98px; height: 1px; padding-top: 80px; margin-left: 422px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #ae4132; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">publisher_controller</div></div></div></foreignObject><text x="422" y="83" fill="#ae4132" font-family="Helvetica" font-size="10px">publisher_controller</text></switch></g><rect x="521.5" y="189.51" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 48px; height: 1px; padding-top: 200px; margin-left: 522px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #ae4132; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">controller</div></div></div></foreignObject><text x="570" y="203" fill="#ae4132" font-family="Helvetica" font-size="10px" text-anchor="end">controller</text></switch></g><rect x="420" y="100" width="100" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 98px; height: 1px; padding-top: 110px; margin-left: 422px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #12739e; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">publisher_pub</div></div></div></foreignObject><text x="422" y="113" fill="#12739e" font-family="Helvetica" font-size="10px">publisher_pub</text></switch></g><rect x="505" y="239.51" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 58px; height: 1px; padding-top: 250px; margin-left: 505px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #12739e; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">listener</div></div></div></foreignObject><text x="563" y="253" fill="#12739e" font-family="Helvetica" font-size="10px" text-anchor="end">listener</text></switch></g><rect x="688.5" y="280" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 290px; margin-left: 690px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #12739e; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">publisher</div></div></div></foreignObject><text x="719" y="293" fill="#12739e" font-family="Helvetica" font-size="10px" text-anchor="middle">publisher</text></switch></g><path d="M 561.5 60 L 480 60 Q 470 60 460 60 L 415 60" fill="none" stroke="#ae4132" stroke-miterlimit="10" pointer-events="stroke"/><rect x="420" y="40" width="100" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 98px; height: 1px; padding-top: 50px; margin-left: 422px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #ae4132; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">heartbeat_controller</div></div></div></foreignObject><text x="422" y="53" fill="#ae4132" font-family="Helvetica" font-size="10px">heartbeat_controller</text></switch></g><rect x="511.5" y="60" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 48px; height: 1px; padding-top: 70px; margin-left: 512px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #ae4132; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">controller</div></div></div></foreignObject><text x="560" y="73" fill="#ae4132" font-family="Helvetica" font-size="10px" text-anchor="end">controller</text></switch></g><path d="M 741.5 100 L 750.75 100 Q 760 100 760 90 L 760 40 Q 760 30 750 30 L 55 30" fill="none" stroke="#009900" stroke-miterlimit="10" pointer-events="stroke"/><rect x="685" y="120" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 130px; margin-left: 686px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #009900; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">heartbeat</div></div></div></foreignObject><text x="715" y="133" fill="#009900" font-family="Helvetica" font-size="10px" text-anchor="middle">heartbeat</text></switch></g><path d="M 55 80 L 205 80" fill="none" stroke="#ae4132" stroke-miterlimit="10" pointer-events="stroke"/><rect x="140" y="80" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 58px; height: 1px; padding-top: 90px; margin-left: 140px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #AE4132; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">controller</div></div></div></foreignObject><text x="198" y="93" fill="#AE4132" font-family="Helvetica" font-size="10px" text-anchor="end">controller</text></switch></g><path d="M 405 359.5 L 445 359.5" fill="none" stroke="#10739e" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405 379.5 L 445 379.5" fill="none" stroke="#ae4132" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 405 399.5 L 445 399.5" fill="none" stroke="#009900" stroke-miterlimit="10" pointer-events="stroke"/><rect x="455" y="350" width="180" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 178px; height: 1px; padding-top: 360px; margin-left: 457px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Shell (code, input, output...)<br /></div></div></div></foreignObject><text x="457" y="364" fill="#000000" font-family="Helvetica" font-size="12px">Shell (code, input, output...)
</text></switch></g><rect x="455" y="370" width="180" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 178px; height: 1px; padding-top: 380px; margin-left: 457px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Control (shutdown, restart)</div></div></div></foreignObject><text x="457" y="384" fill="#000000" font-family="Helvetica" font-size="12px">Control (shutdown, restart)</text></switch></g><rect x="455" y="390" width="180" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 178px; height: 1px; padding-top: 400px; margin-left: 457px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Heartbeat</div></div></div></foreignObject><text x="457" y="404" fill="#000000" font-family="Helvetica" font-size="12px">Heartbeat</text></switch></g><path d="M 603 260 L 606.5 260 Q 610 260 620 260 L 630 260 Q 640 260 650 260 L 707 260" fill="none" stroke="#10739e" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 55 224.51 L 205 224.51" fill="none" stroke="#10739e" stroke-miterlimit="10" pointer-events="stroke"/><rect x="140" y="199.51" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 58px; height: 1px; padding-top: 210px; margin-left: 140px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #10739E; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">shell</div></div></div></foreignObject><text x="198" y="213" fill="#10739E" font-family="Helvetica" font-size="10px" text-anchor="end">shell</text></switch></g><path d="M 55 259.51 L 205 259.51" fill="none" stroke="#10739e" stroke-miterlimit="10" pointer-events="stroke"/><rect x="140" y="239.51" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 58px; height: 1px; padding-top: 250px; margin-left: 140px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #10739E; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">stdin</div></div></div></foreignObject><text x="198" y="253" fill="#10739E" font-family="Helvetica" font-size="10px" text-anchor="end">stdin</text></switch></g><rect x="205" y="214.51" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="205" y="249.51" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="205" y="70" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="220" y="214.51" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 38px; height: 1px; padding-top: 225px; margin-left: 222px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">router<br style="font-size: 10px" /></div></div></div></foreignObject><text x="222" y="228" fill="#000000" font-family="Helvetica" font-size="10px">router
</text></switch></g><rect x="220" y="249.51" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 38px; height: 1px; padding-top: 260px; margin-left: 222px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">router<br style="font-size: 10px" /></div></div></div></foreignObject><text x="222" y="263" fill="#000000" font-family="Helvetica" font-size="10px">router
</text></switch></g><rect x="220" y="70" width="32" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 30px; height: 1px; padding-top: 80px; margin-left: 222px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">router<br style="font-size: 10px" /></div></div></div></foreignObject><text x="222" y="83" fill="#000000" font-family="Helvetica" font-size="10px">router
</text></switch></g><path d="M 252 80 L 360 80.04" fill="none" stroke="#ae4132" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><rect x="405" y="80" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="405" y="110" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="405" y="50" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="368" y="80" width="32" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 30px; height: 1px; padding-top: 90px; margin-left: 368px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">req<br /></div></div></div></foreignObject><text x="398" y="93" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">req
</text></switch></g><rect x="368" y="50" width="32" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 30px; height: 1px; padding-top: 60px; margin-left: 368px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">req<br /></div></div></div></foreignObject><text x="398" y="63" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">req
</text></switch></g><rect x="370" y="110" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 28px; height: 1px; padding-top: 120px; margin-left: 370px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">pub<br /></div></div></div></foreignObject><text x="398" y="123" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">pub
</text></switch></g><rect x="565" y="210" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="565" y="250" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="580" y="210" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 38px; height: 1px; padding-top: 220px; margin-left: 582px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">rep<br /></div></div></div></foreignObject><text x="582" y="223" fill="#000000" font-family="Helvetica" font-size="10px">rep
</text></switch></g><rect x="580" y="250" width="23" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 21px; height: 1px; padding-top: 260px; margin-left: 582px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">sub</div></div></div></foreignObject><text x="582" y="263" fill="#000000" font-family="Helvetica" font-size="10px">sub</text></switch></g><rect x="707" y="245" width="23" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 21px; height: 1px; padding-top: 260px; margin-left: 707px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">pub<br /></div></div></div></foreignObject><text x="728" y="263" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">pub
</text></switch></g><rect x="735" y="250" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="576.5" y="50" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 38px; height: 1px; padding-top: 60px; margin-left: 579px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">rep<br /></div></div></div></foreignObject><text x="579" y="63" fill="#000000" font-family="Helvetica" font-size="10px">rep
</text></switch></g><rect x="561.5" y="50" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="731.5" y="90" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="686.5" y="85" width="40" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 38px; height: 1px; padding-top: 100px; margin-left: 687px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">router<br /></div></div></div></foreignObject><text x="725" y="103" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">router
</text></switch></g><rect x="45" y="214.51" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="45" y="249.51" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="45" y="70" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="45" y="300" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="45" y="20" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><path d="M 50 50 L 50 40" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><rect x="0" y="214.51" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 38px; height: 1px; padding-top: 225px; margin-left: 0px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">dealer<br style="font-size: 10px" /></div></div></div></foreignObject><text x="38" y="228" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">dealer
</text></switch></g><rect x="0" y="249.51" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 38px; height: 1px; padding-top: 260px; margin-left: 0px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">dealer<br style="font-size: 10px" /></div></div></div></foreignObject><text x="38" y="263" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">dealer
</text></switch></g><rect x="0" y="70" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 38px; height: 1px; padding-top: 80px; margin-left: 0px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">req<br style="font-size: 10px" /></div></div></div></foreignObject><text x="38" y="83" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">req
</text></switch></g><rect x="0" y="300" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 38px; height: 1px; padding-top: 310px; margin-left: 0px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">sub<br style="font-size: 10px" /></div></div></div></foreignObject><text x="38" y="313" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">sub
</text></switch></g><rect x="0" y="20" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 38px; height: 1px; padding-top: 30px; margin-left: 0px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">dealer<br style="font-size: 10px" /></div></div></div></foreignObject><text x="38" y="33" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">dealer
</text></switch></g><rect x="405" y="140" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><path d="M 251.6 280 L 250.2 209.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 368 150 L 364 150 Q 360 150 360 140 L 360 70 Q 360 60 364 60 L 368 60" fill="none" stroke="#ae4132" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><rect x="420" y="130" width="100" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 98px; height: 1px; padding-top: 140px; margin-left: 422px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #ae4132; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">shell_controller</div></div></div></foreignObject><text x="422" y="143" fill="#ae4132" font-family="Helvetica" font-size="10px">shell_controller</text></switch></g><rect x="405" y="249.51" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="368" y="249.51" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 28px; height: 1px; padding-top: 260px; margin-left: 368px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">pub<br /></div></div></div></foreignObject><text x="396" y="263" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">pub
</text></switch></g><rect x="405" y="219.51" width="10" height="20" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="415" y="204.51" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 48px; height: 1px; padding-top: 215px; margin-left: 415px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #ae4132; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">controller</div></div></div></foreignObject><text x="463" y="218" fill="#ae4132" font-family="Helvetica" font-size="10px" text-anchor="end">controller</text></switch></g><rect x="420" y="260" width="100" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 98px; height: 1px; padding-top: 270px; margin-left: 422px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #12739e; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">publisher_pub</div></div></div></foreignObject><text x="422" y="273" fill="#12739e" font-family="Helvetica" font-size="10px">publisher_pub</text></switch></g><path d="M 415 150 L 460 150 Q 470 150 470 160 L 470 219.5 Q 470 229.5 460 229.5 L 415 229.51" fill="none" stroke="#ae4132" stroke-miterlimit="10" pointer-events="stroke"/><rect x="280" y="229.51" width="90" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 237px; margin-left: 282px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">xshell thread<br />(xshell)</div></div></div></foreignObject><text x="282" y="249" fill="#000000" font-family="Helvetica" font-size="12px">xshell thread...</text></switch></g><rect x="368" y="140" width="32" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-end; width: 30px; height: 1px; padding-top: 150px; margin-left: 368px;"><div style="box-sizing: border-box; font-size: 0; text-align: right; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">req<br /></div></div></div></foreignObject><text x="398" y="153" fill="#000000" font-family="Helvetica" font-size="10px" text-anchor="end">req
</text></switch></g><rect x="380" y="219.51" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 38px; height: 1px; padding-top: 230px; margin-left: 382px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">rep<br /></div></div></div></foreignObject><text x="382" y="233" fill="#000000" font-family="Helvetica" font-size="10px">rep
</text></switch></g><path d="M 415 259.51 L 565 260" fill="none" stroke="#006eaf" stroke-miterlimit="10" pointer-events="stroke"/><rect x="130" y="0" width="650" height="340" rx="51" ry="51" fill="none" stroke="#000000" stroke-dasharray="3 3" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
|