1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-23 08:06:13 +01:00
CommandStation-EX/Release - Architecture Doc/CommandStation-EX-Arch-v1-0.svg

1047 lines
65 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 CommandStation-EX-Arch-v1-0.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="11in" height="8.5in" viewBox="0 0 792 612"
xml:space="preserve" color-interpolation-filters="sRGB" class="st14">
<v:documentProperties v:langID="1033" v:viewMarkup="false">
<v:userDefs>
<v:ud v:nameU="msvNoAutoConnect" v:val="VT0(0):26"/>
</v:userDefs>
</v:documentProperties>
<style type="text/css">
<![CDATA[
.st1 {visibility:visible}
.st2 {fill:#cdcdcd;fill-opacity:0.5;stroke:#cdcdcd;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.5;stroke-width:0.25}
.st3 {fill:url(#grad30-6);stroke:#404040;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
.st4 {fill:#000000;font-family:Calibri;font-size:0.75em}
.st5 {font-size:1em}
.st6 {fill:#cdcdcd;fill-opacity:0.5;stroke:#cdcdcd;stroke-dasharray:1.75,1.25;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.5;stroke-width:0.25}
.st7 {fill:url(#grad30-6);stroke:#404040;stroke-dasharray:1.75,1.25;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
.st8 {marker-end:url(#mrkr5-94);stroke:#404040;stroke-linecap:round;stroke-linejoin:round;stroke-width:3}
.st9 {fill:#404040;fill-opacity:1;stroke:#404040;stroke-opacity:1;stroke-width:0.54347826086957}
.st10 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
.st11 {fill:#000000;font-family:Calibri;font-size:1.16666em;font-weight:bold}
.st12 {marker-end:url(#mrkr5-94);marker-start:url(#mrkr4-148);stroke:#404040;stroke-linecap:round;stroke-linejoin:round;stroke-width:3}
.st13 {fill:#000000;font-family:Calibri;font-size:0.666664em}
.st14 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<defs id="Patterns_And_Gradients">
<linearGradient id="grad30-6" v:fillPattern="30" v:foreground="#f0f0f0" v:background="#ffffff" x1="0" y1="1" x2="0" y2="0">
<stop offset="0" style="stop-color:#f0f0f0;stop-opacity:1"/>
<stop offset="1" style="stop-color:#ffffff;stop-opacity:1"/>
</linearGradient>
</defs>
<defs id="Markers">
<g id="lend5">
<path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"/>
</g>
<marker id="mrkr5-94" class="st9" v:arrowType="5" v:arrowSize="2" v:setback="3.22" refX="-3.22" orient="auto"
markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend5" transform="scale(-1.84,-1.84) "/>
</marker>
<g id="lend4">
<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/>
</g>
<marker id="mrkr4-148" class="st9" v:arrowType="4" v:arrowSize="2" v:setback="3.56" refX="3.56" orient="auto"
markerUnits="strokeWidth" overflow="visible">
<use xlink:href="#lend4" transform="scale(1.84) "/>
</marker>
</defs>
<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
<v:ud v:nameU="msvThemeOrder" v:val="VT0(0):26"/>
</v:userDefs>
<title>Page-1</title>
<v:pageProperties v:drawingScale="1" v:pageScale="1" v:drawingUnits="0" v:shadowOffsetX="9" v:shadowOffsetY="-9"/>
<v:layer v:name="Flowchart" v:index="0"/>
<v:layer v:name="Connector" v:index="1"/>
<g id="shape1-1" v:mID="1" v:groupContext="shape" v:layerMember="0" transform="translate(33.75,-432)">
<title>Start/End</title>
<desc>Wi-Fi Input</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.375):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.375):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="37.125" cy="600.188" width="74.25" height="23.625"/>
<g id="shadow1-2" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<path d="M11.81 612 L62.44 612 A11.8125 11.8125 -180 0 0 62.44 588.37 L11.81 588.37 A11.8125 11.8125 -180 1 0 11.81
612 Z" class="st2"/>
</g>
<path d="M11.81 612 L62.44 612 A11.8125 11.8125 -180 0 0 62.44 588.37 L11.81 588.37 A11.8125 11.8125 -180 1 0 11.81 612
Z" class="st3"/>
<text x="16.86" y="602.89" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Wi-Fi Input</text> </g>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/WifiInboundHandler.cpp">
<g id="shape2-8" v:mID="2" v:groupContext="shape" v:layerMember="0" transform="translate(133.211,-408.375)">
<title>Process</title>
<desc>(WifiInboundHandler.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="51.2887" cy="597.375" width="102.58" height="29.25"/>
<g id="shadow2-9" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="582.75" width="102.578" height="29.25" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="582.75" width="102.578" height="29.25" rx="13.5" ry="13.5" class="st3"/>
<text x="3.49" y="600.07" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>(WifiInboundHandler.cpp)</text> </g>
</a>
<g id="shape4-14" v:mID="4" v:groupContext="shape" v:layerMember="0" transform="translate(33.75,-369)">
<title>Start/End.4</title>
<desc>Ethernet Input</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.375):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.375):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="36" cy="598.5" width="72" height="27"/>
<g id="shadow4-15" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<path d="M13.5 612 L58.5 612 A13.5 13.5 -180 0 0 58.5 585 L13.5 585 A13.5 13.5 -180 1 0 13.5 612 Z" class="st2"/>
</g>
<path d="M13.5 612 L58.5 612 A13.5 13.5 -180 0 0 58.5 585 L13.5 585 A13.5 13.5 -180 1 0 13.5 612 Z" class="st3"/>
<text x="9.26" y="601.2" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Ethernet Input</text> </g>
<g id="shape5-20" v:mID="5" v:groupContext="shape" v:layerMember="0" transform="translate(33.75,-301.5)">
<title>Start/End.5</title>
<desc>USB Input (From JMRI or Console)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.375):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.525):1"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="40.14" cy="596.25" width="80.28" height="31.5"/>
<g id="shadow5-21" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<path d="M15.75 612 L64.53 612 A15.75 15.75 -180 0 0 64.53 580.5 L15.75 580.5 A15.75 15.75 -180 1 0 15.75 612 Z"
class="st2"/>
</g>
<path d="M15.75 612 L64.53 612 A15.75 15.75 -180 0 0 64.53 580.5 L15.75 580.5 A15.75 15.75 -180 1 0 15.75 612 Z"
class="st3"/>
<text x="21.99" y="588.15" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>USB Input<v:newlineChar/><tspan
x="14.34" dy="1.2em" class="st5">(</tspan>From JMRI or <tspan x="24.23" dy="1.2em" class="st5">Console</tspan>)</text> </g>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/CommandDistributor.cpp">
<g id="shape6-28" v:mID="6" v:groupContext="shape" v:layerMember="0" transform="translate(263.655,-402.75)">
<title>Process.6</title>
<desc>Command Distributor (CommandDistributor.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="52.6725" cy="591.75" width="105.35" height="40.5"/>
<g id="shadow6-29" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="571.5" width="105.345" height="40.5" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="571.5" width="105.345" height="40.5" rx="13.5" ry="13.5" class="st3"/>
<text x="11.94" y="589.05" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Command Distributor<v:newlineChar/><tspan
x="3.48" dy="1.2em" class="st5">(</tspan>CommandDistributor.cpp)</text> </g>
</a>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/DCCEXParser.cpp">
<g id="shape8-35" v:mID="8" v:groupContext="shape" v:layerMember="0" transform="translate(265.5,-297)">
<title>Process.8</title>
<desc>DCC-EX Command Parser (DCCEXParser.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="50.625" cy="591.75" width="101.25" height="40.5"/>
<g id="shadow8-36" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="571.5" width="101.25" height="40.5" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="571.5" width="101.25" height="40.5" rx="13.5" ry="13.5" class="st3"/>
<text x="3.63" y="589.05" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>DCC-EX Command Parser<v:newlineChar/><tspan
x="16.41" dy="1.2em" class="st5">(</tspan>DCCEXParser.cpp)</text> </g>
</a>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/WiThrottle.cpp">
<g id="shape9-42" v:mID="9" v:groupContext="shape" v:layerMember="0" transform="translate(402.75,-402.75)">
<title>Process.9</title>
<desc>WiThrottle Server (Withrottle.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="45" cy="591.75" width="90" height="40.5"/>
<g id="shadow9-43" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="571.5" width="90" height="40.5" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="571.5" width="90" height="40.5" rx="13.5" ry="13.5" class="st3"/>
<text x="12.45" y="589.05" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>WiThrottle Server<v:newlineChar/><tspan
x="15.37" dy="1.2em" class="st5">(</tspan>Withrottle.cpp)</text> </g>
</a>
<g id="shape10-49" v:mID="10" v:groupContext="shape" v:layerMember="0" transform="translate(393.75,-292.5)">
<title>Process.10</title>
<desc>TPL Automation (Train Programming Language - Coming Soon)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="54" cy="587.25" width="108" height="49.5"/>
<g id="shadow10-50" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="562.5" width="108" height="49.5" rx="13.5" ry="13.5" class="st6"/>
</g>
<rect x="0" y="562.5" width="108" height="49.5" rx="13.5" ry="13.5" class="st7"/>
<text x="24.7" y="573.75" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>TPL Automation<v:newlineChar/><tspan
x="17.49" dy="1.2em" class="st5">(</tspan>Train Programming <tspan x="36.59" dy="1.2em" class="st5">Language <v:newlineChar/></tspan><tspan
x="26.16" dy="1.2em" class="st5">-</tspan> Coming Soon)</text> </g>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/DCC.cpp">
<g id="shape11-58" v:mID="11" v:groupContext="shape" v:layerMember="0" transform="translate(522,-297)">
<title>Process.11</title>
<desc>DCC API (Builds DCC Packets from Simple Parameters)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="54" cy="591.75" width="108" height="40.5"/>
<g id="shadow11-59" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="571.5" width="108" height="40.5" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="571.5" width="108" height="40.5" rx="13.5" ry="13.5" class="st3"/>
<text x="39.35" y="583.65" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>DCC API<v:newlineChar/><tspan
x="8.17" dy="1.2em" class="st5">(</tspan>Builds DCC Packets from <tspan x="18.17" dy="1.2em"
class="st5">Simple Parameters</tspan>)</text> </g>
</a>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/DCCWaveform.cpp">
<g id="shape12-66" v:mID="12" v:groupContext="shape" v:layerMember="0" transform="translate(666,-297)">
<title>Process.12</title>
<desc>DCC Waveform (Converts DCC Packets into a Digital Signal)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="45" cy="591.75" width="90" height="40.5"/>
<g id="shadow12-67" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="571.5" width="90" height="40.5" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="571.5" width="90" height="40.5" rx="13.5" ry="13.5" class="st3"/>
<text x="17.07" y="583.65" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>DCC Waveform<v:newlineChar/><tspan
x="3.85" dy="1.2em" class="st5">(</tspan>Converts DCC Packets <tspan x="8.73" dy="1.2em" class="st5">into a Digital Signal</tspan>)</text> </g>
</a>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/Outputs.cpp">
<g id="shape13-74" v:mID="13" v:groupContext="shape" v:layerMember="0" transform="translate(522,-186.75)">
<title>Process.13</title>
<desc>Accessories (Output.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="54" cy="600.75" width="108" height="22.5"/>
<g id="shadow13-75" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="589.5" width="108" height="22.5" rx="11.25" ry="11.25" class="st2"/>
</g>
<rect x="0" y="589.5" width="108" height="22.5" rx="11.25" ry="11.25" class="st3"/>
<text x="32.86" y="598.05" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Accessories <v:newlineChar/><tspan
x="30.42" dy="1.2em" class="st5">(</tspan>Output.cpp)</text> </g>
</a>
2023-02-22 22:28:16 +01:00
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/Display.cpp">
<g id="shape14-81" v:mID="14" v:groupContext="shape" v:layerMember="0" transform="translate(288,-116.156)">
<title>Process.14</title>
2023-02-22 22:28:16 +01:00
<desc>Other Utilities (Display.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="45" cy="596.25" width="90" height="31.5"/>
<g id="shadow14-82" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="580.5" width="90" height="31.5" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="580.5" width="90" height="31.5" rx="13.5" ry="13.5" class="st3"/>
<text x="19.29" y="593.55" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Other Utilities<v:newlineChar/><tspan
2023-02-22 22:28:16 +01:00
x="14.29" dy="1.2em" class="st5">(</tspan>Display.cpp)</text> </g>
</a>
<g id="shape3-88" v:mID="3" v:groupContext="shape" v:layerMember="1" transform="translate(108,-443.812)">
<title>Dynamic connector</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L8.77 612 L8.77 592.31 L15.09 592.31" class="st8"/>
</g>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/EthernetInterface.cpp">
<g id="shape15-95" v:mID="15" v:groupContext="shape" v:layerMember="0" transform="translate(128.261,-366.75)">
<title>Process.15</title>
<desc>(Ethernetinterface.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="51.7395" cy="596.25" width="103.48" height="31.5"/>
<g id="shadow15-96" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="580.5" width="103.479" height="31.5" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="580.5" width="103.479" height="31.5" rx="13.5" ry="13.5" class="st3"/>
<text x="8.87" y="598.95" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>(Ethernetinterface.cpp)</text> </g>
</a>
<g id="shape16-101" v:mID="16" v:groupContext="shape" v:layerMember="1" transform="translate(105.75,-373.5)">
<title>Dynamic connector.16</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 603 L12.85 603" class="st8"/>
</g>
<g id="shape7-107" v:mID="7" v:groupContext="shape" v:layerMember="1" transform="translate(114.03,-308.25)">
<title>Dynamic connector.7</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 603 L141.81 603" class="st8"/>
</g>
<g id="shape17-113" v:mID="17" v:groupContext="shape" v:layerMember="1" transform="translate(236.25,-463.5)">
<title>Dynamic connector.17</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L11.25 612 L11.25 652.5 L17.75 652.5" class="st8"/>
</g>
<g id="shape18-119" v:mID="18" v:groupContext="shape" v:layerMember="1" transform="translate(231.739,-382.5)">
<title>Dynamic connector.18</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L15.76 612 L15.76 571.5 L22.26 571.5" class="st8"/>
</g>
<g id="shape19-125" v:mID="19" v:groupContext="shape" v:layerMember="1" transform="translate(325.226,-402.75)">
<title>Dynamic connector.19</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M-8.9 612 L-8.9 630 L-9.1 630 L-9.1 667.59" class="st8"/>
</g>
<g id="shape20-131" v:mID="20" v:groupContext="shape" v:layerMember="1" transform="translate(369,-414)">
<title>Dynamic connector.20</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 603 L24.09 603" class="st8"/>
</g>
<g id="shape21-137" v:mID="21" v:groupContext="shape" transform="translate(173.25,-544.5)">
<title>Sheet.21</title>
<desc>DCC-EX CommandStation-EX Architecture (CS-EX) v3.0.0 Drawing ...</desc>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="222.75" cy="598.5" width="445.5" height="27"/>
<rect x="0" y="585" width="445.5" height="27" class="st10"/>
<text x="60.4" y="594.3" class="st11" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>DCC-EX CommandStation-EX Architecture (CS-EX) v3.0.0 <v:newlineChar/><tspan
x="140.1" dy="1.2em" class="st5">Drawing v</tspan>1-0 - 25-Nov-2020</text> </g>
<g id="shape22-141" v:mID="22" v:groupContext="shape" v:layerMember="1" transform="translate(492.75,-423)">
<title>Dynamic connector.22</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M10.68 612 L11.04 612 L83.25 612 L83.25 687.84" class="st12"/>
</g>
<g id="shape23-150" v:mID="23" v:groupContext="shape" v:layerMember="1" transform="translate(366.75,-308.25)">
<title>Dynamic connector.23</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 603 L17.34 603" class="st8"/>
</g>
<g id="shape24-156" v:mID="24" v:groupContext="shape" v:layerMember="1" transform="translate(316.125,-297)">
<title>Dynamic connector.24</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L0 711 L196.21 711" class="st8"/>
</g>
<g id="shape26-162" v:mID="26" v:groupContext="shape" v:layerMember="1" transform="translate(630,-308.25)">
<title>Dynamic connector.26</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 603 L19.69 603 L26.34 603" class="st8"/>
</g>
<g id="shape27-168" v:mID="27" v:groupContext="shape" v:layerMember="1" transform="translate(567,-297)">
<title>Dynamic connector.27</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M9 622.68 L9 623.04 L9 690.09" class="st12"/>
</g>
<g id="shape29-176" v:mID="29" v:groupContext="shape" v:layerMember="0" transform="translate(675,-108)">
<title>Process.29</title>
<desc>CPU GPIO Pins Driving Turnouts &#38; Reading Servers</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="36" cy="563.625" width="72" height="96.75"/>
<g id="shadow29-177" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="515.25" width="72" height="96.75" class="st2"/>
</g>
<rect x="0" y="515.25" width="72" height="96.75" class="st3"/>
<text x="12.53" y="556.43" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>CPU GPIO Pins <tspan
x="5.32" dy="1.2em" class="st5">Driving Turnouts </tspan>&#38; <tspan x="10.04" dy="1.2em" class="st5">Reading Servers</tspan></text> </g>
<g id="shape30-184" v:mID="30" v:groupContext="shape" v:layerMember="0" transform="translate(675,-202.5)">
<title>Process.30</title>
<desc>CPU Pins driving Motor Shield Power Outputs</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false" v:ask="false"
v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="36" cy="585" width="72" height="54"/>
<g id="shadow30-185" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="558" width="72" height="54" class="st2"/>
</g>
<rect x="0" y="558" width="72" height="54" class="st3"/>
<text x="9.65" y="577.8" class="st13" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>CPU Pins driving <tspan
x="3.53" dy="1.2em" class="st5">Motor Shield Power </tspan><tspan x="22.8" dy="1.2em" class="st5">Outputs </tspan> </text> </g>
<g id="shape31-192" v:mID="31" v:groupContext="shape" v:layerMember="1" transform="translate(630,-198)">
<title>Dynamic connector.31</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L27 612 L27 653.62 L35.34 653.62" class="st8"/>
</g>
<g id="shape32-198" v:mID="32" v:groupContext="shape" v:layerMember="1" transform="translate(702,-297)">
<title>Dynamic connector.32</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M9 612 L9 642.84" class="st8"/>
</g>
<g id="shape25-204" v:mID="25" v:groupContext="shape" v:layerMember="1" transform="translate(438.75,-402.75)">
<title>Dynamic connector.25</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M9 622.68 L9 623.04 L9 663.09" class="st12"/>
</g>
<g id="shape28-212" v:mID="28" v:groupContext="shape" v:layerMember="1" transform="translate(501.75,-308.25)">
<title>Dynamic connector.28</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 603 L10.59 603" class="st8"/>
</g>
<g id="shape33-218" v:mID="33" v:groupContext="shape" v:layerMember="1" transform="translate(456.654,-292.5)">
<title>Dynamic connector.33</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M-8.93 622.68 L-8.93 623.04 L-9.08 695.1" class="st12"/>
</g>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/WifiInterface.cpp">
<g id="shape35-226" v:mID="35" v:groupContext="shape" v:layerMember="0" transform="translate(132.75,-450)">
<title>Process.35</title>
<desc>(WifiInterface.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="51.75" cy="598.5" width="103.5" height="27"/>
<g id="shadow35-227" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="585" width="103.5" height="27" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="585" width="103.5" height="27" rx="13.5" ry="13.5" class="st3"/>
<text x="17.33" y="601.2" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>(WifiInterface.cpp)</text> </g>
</a>
<g id="shape34-232" v:mID="34" v:groupContext="shape" v:layerMember="1" transform="translate(108,-443.812)">
<title>Dynamic connector.34</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L9.67 612 L9.67 632.81 L15.55 632.81" class="st8"/>
</g>
<g id="shape36-238" v:mID="36" v:groupContext="shape" v:layerMember="1" transform="translate(235.789,-414)">
<title>Dynamic connector.36</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 603 L18.21 603" class="st8"/>
</g>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/StringFormatter.cpp">
<g id="shape41-244" v:mID="41" v:groupContext="shape" v:layerMember="0" transform="translate(162,-116.156)">
<title>Process.41</title>
<desc>Other Utilities (StingFormatter.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="45" cy="596.25" width="90" height="31.5"/>
<g id="shadow41-245" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="580.5" width="90" height="31.5" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="580.5" width="90" height="31.5" rx="13.5" ry="13.5" class="st3"/>
<text x="19.29" y="593.55" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Other Utilities<v:newlineChar/><tspan
x="6.83" dy="1.2em" class="st5">(</tspan>StingFormatter.cpp)</text> </g>
</a>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/Turnouts.cpp">
<g id="shape37-251" v:mID="37" v:groupContext="shape" v:layerMember="0" transform="translate(522,-154.125)">
<title>Process.37</title>
<desc>Turnouts (Turnout.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="54" cy="601.313" width="108" height="21.375"/>
<g id="shadow37-252" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="590.625" width="108" height="21.375" rx="10.6875" ry="10.6875" class="st2"/>
</g>
<rect x="0" y="590.625" width="108" height="21.375" rx="10.6875" ry="10.6875" class="st3"/>
<text x="37.51" y="598.61" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Turnouts<v:lf/><tspan
x="28.77" dy="1.2em" class="st5">(</tspan>Turnout.cpp)</text> </g>
</a>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/Sensors.cpp">
<g id="shape38-258" v:mID="38" v:groupContext="shape" v:layerMember="0" transform="translate(522,-119.813)">
<title>Process.38</title>
<desc>Sensors ( Sensor.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="54" cy="599.906" width="108" height="24.1875"/>
<g id="shadow38-259" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="587.813" width="108" height="24.1875" rx="12.0938" ry="12.0938" class="st2"/>
</g>
<rect x="0" y="587.813" width="108" height="24.1875" rx="12.0938" ry="12.0938" class="st3"/>
<text x="39.87" y="597.21" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Sensors<v:newlineChar/><tspan
x="30.11" dy="1.2em" class="st5">( </tspan>Sensor.cpp)</text> </g>
</a>
<a xlink:href="https://github.com/DCC-EX/CommandStation-EX/blob/master/PWMServoDriver.cpp">
<g id="shape39-265" v:mID="39" v:groupContext="shape" v:layerMember="0" transform="translate(522,-83.25)">
<title>Process.39</title>
<desc>Servos (PWMServerDriver.cpp)</desc>
<v:custProps>
<v:cp v:nameU="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortKey=""
v:invis="false" v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
<v:cp v:nameU="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0"/>
<v:cp v:nameU="Status" v:lbl="Status" v:prompt="" v:type="4"
v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortKey="" v:invis="false"
v:ask="false" v:langID="1033" v:cal="0" v:val="VT4()"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="visVersion" v:prompt="" v:val="VT0(14):26"/>
<v:ud v:nameU="DefaultWidth" v:prompt="" v:val="VT0(1):0"/>
<v:ud v:nameU="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"/>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<v:textBlock v:margins="rect(2,2,2,2)"/>
<v:textRect cx="54" cy="597.938" width="108" height="28.125"/>
<g id="shadow39-266" v:groupContext="shadow" v:shadowOffsetX="1.44" v:shadowOffsetY="-1.44" v:shadowType="1"
transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
<rect x="0" y="583.875" width="108" height="28.125" rx="13.5" ry="13.5" class="st2"/>
</g>
<rect x="0" y="583.875" width="108" height="28.125" rx="13.5" ry="13.5" class="st3"/>
<text x="41.96" y="595.24" class="st4" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Servos <tspan
x="10.4" dy="1.2em" class="st5">(</tspan>PWMServerDriver.cpp)</text> </g>
</a>
<g id="shape40-272" v:mID="40" v:groupContext="shape" v:layerMember="1" transform="translate(630,-169.594)">
<title>Dynamic connector.40</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 616.78 L27 616.78 L27 625.22 L35.34 625.22" class="st8"/>
</g>
<g id="shape42-278" v:mID="42" v:groupContext="shape" v:layerMember="1" transform="translate(630,-97.3125)">
<title>Dynamic connector.42</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L27 612 L27 552.94 L35.34 552.94" class="st8"/>
</g>
<g id="shape43-284" v:mID="43" v:groupContext="shape" v:layerMember="1" transform="translate(657,-155.25)">
<title>Dynamic connector.43</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L0 635.34 L-17.34 635.34" class="st8"/>
</g>
<g id="shape44-290" v:mID="44" v:groupContext="shape" v:layerMember="1" transform="translate(448.5,-198)">
<title>Dynamic connector.44</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L0 645.19 L63.84 645.19" class="st8"/>
</g>
<g id="shape45-296" v:mID="45" v:groupContext="shape" v:layerMember="1" transform="translate(522,-123.328)">
<title>Dynamic connector.45</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 603.42 L-63.84 602.69" class="st8"/>
</g>
<g id="shape46-302" v:mID="46" v:groupContext="shape" v:layerMember="1" transform="translate(448.5,-164.813)">
<title>Dynamic connector.46</title>
<v:userDefs>
<v:ud v:nameU="msvThemeColors" v:val="VT0(36):26"/>
<v:ud v:nameU="msvThemeEffects" v:val="VT0(16):26"/>
</v:userDefs>
<path d="M0 612 L0 679.5 L63.84 679.5" class="st8"/>
</g>
</g>
</svg>