blob: 8ebc59f54f16267750995b13b6371fe647b0721b [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.44.1 (20201121.0304)
-->
<!-- Pages: 1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="874pt" height="876pt" viewBox="0.00 0.00 873.79 876.00"><script>
(function() {
var enablePanZoom = false;
var enablePanZoomControls = false;
var panZoomScriptUrl = "https://graphviz.corp.google.com/svg-pan-zoom.js";
var isEmbedded = true;
try {
// This condition is true when the SVG is being displayed in a
// top-level browser window. If the parent location's href is
// different, or we can't access it (due to security constraints
// on accessing javascript properties on a different domain),
// then the document is embedded.
if (window.location.href == window.parent.location.href) {
isEmbedded = false;
}
} catch (e) {}
if (!isEmbedded) enablePanZoom = true;
if (enablePanZoom &amp;&amp; typeof svgPanZoom === 'undefined') {
var panZoomScript =
document.createElementNS('http://www.w3.org/2000/svg', 'script');
panZoomScript.setAttributeNS(
'http://www.w3.org/1999/xlink', 'xlink:href', panZoomScriptUrl);
document.currentScript.parentElement.appendChild(panZoomScript);
}
window.onload = function() {
var svg = document.getElementsByTagName("svg")[0];
if (!isEmbedded) {
svg.removeAttribute("width");
svg.removeAttribute("height");
}
if (enablePanZoom) {
svgPanZoom(svg, {
minZoom: 0.2,
maxZoom: 100,
controlIconsEnabled: enablePanZoomControls
});
}
var links = document.getElementsByTagName("a");
for (var i = 0; i &lt; links.length; i++) {
if (!links[i].getAttribute("target")) {
links[i].setAttribute("target", "_top");
}
}
};
})();
</script>
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 872)">
<polygon fill="white" stroke="transparent" points="-4,4 -4,-872 869.79,-872 869.79,4 -4,4"/>
<text text-anchor="middle" x="432.9" y="-852.8" font-family="Times,serif" font-size="14.00">MOTION RECOGNIZER</text>
<g id="clust1" class="cluster">
<title>cluster_initial_contender</title>
<polygon fill="none" stroke="black" points="165.29,-671 165.29,-837 711.29,-837 711.29,-671 165.29,-671"/>
<text text-anchor="middle" x="438.29" y="-821.8" font-family="Times,serif" font-size="14.00">InitialContender</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_matched_contender</title>
<polygon fill="none" stroke="black" points="142.79,-238 142.79,-439 676.79,-439 676.79,-238 142.79,-238"/>
<text text-anchor="middle" x="409.79" y="-423.8" font-family="Times,serif" font-size="14.00">MatchedContender</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_finger_down_contender</title>
<polygon fill="none" stroke="black" points="165.29,-447 165.29,-663 857.79,-663 857.79,-447 165.29,-447"/>
<text text-anchor="middle" x="511.54" y="-647.8" font-family="Times,serif" font-size="14.00">FingerDownContender</text>
<text text-anchor="middle" x="511.54" y="-632.8" font-family="Times,serif" font-size="14.00">`impl Contender`</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_winner</title>
<polygon fill="none" stroke="black" points="165.29,-8 165.29,-230 701.29,-230 701.29,-8 165.29,-8"/>
<text text-anchor="middle" x="433.29" y="-214.8" font-family="Times,serif" font-size="14.00">Winner</text>
</g>
<!-- arena -->
<g id="node1" class="node">
<title>arena</title>
<ellipse fill="none" stroke="black" cx="33.9" cy="-355" rx="29.81" ry="29.81"/>
<ellipse fill="none" stroke="black" cx="33.9" cy="-355" rx="33.8" ry="33.8"/>
<text text-anchor="middle" x="33.9" y="-351.3" font-family="Times,serif" font-size="14.00">arena</text>
</g>
<!-- examine_at_initial_contender -->
<g id="node2" class="node">
<title>examine_at_initial_contender</title>
<polygon fill="none" stroke="black" points="229.29,-785 173.29,-732 229.29,-679 285.29,-732 229.29,-785"/>
<text text-anchor="middle" x="229.29" y="-743.3" font-family="Times,serif" font-size="14.00">exactly</text>
<text text-anchor="middle" x="229.29" y="-728.3" font-family="Times,serif" font-size="14.00">one</text>
<text text-anchor="middle" x="229.29" y="-713.3" font-family="Times,serif" font-size="14.00">finger?</text>
</g>
<!-- arena&#45;&gt;examine_at_initial_contender -->
<g id="edge1" class="edge">
<title>arena-&gt;examine_at_initial_contender</title>
<path fill="none" stroke="black" d="M39.89,-388.46C50.27,-448.98 78.75,-578.58 142.79,-667 154.05,-682.54 170.08,-696.1 185.22,-706.75"/>
<polygon fill="black" stroke="black" points="183.27,-709.65 193.51,-712.36 187.19,-703.85 183.27,-709.65"/>
<text text-anchor="middle" x="109.29" y="-670.8" font-family="Times,serif" font-size="14.00">examine</text>
<text text-anchor="middle" x="109.29" y="-655.8" font-family="Times,serif" font-size="14.00">event()</text>
</g>
<!-- examine_at_finger_down_contender -->
<g id="node6" class="node">
<title>examine_at_finger_down_contender</title>
<polygon fill="none" stroke="black" points="229.29,-561 173.29,-508 229.29,-455 285.29,-508 229.29,-561"/>
<text text-anchor="middle" x="229.29" y="-519.3" font-family="Times,serif" font-size="14.00">exactly</text>
<text text-anchor="middle" x="229.29" y="-504.3" font-family="Times,serif" font-size="14.00">one</text>
<text text-anchor="middle" x="229.29" y="-489.3" font-family="Times,serif" font-size="14.00">finger?</text>
</g>
<!-- arena&#45;&gt;examine_at_finger_down_contender -->
<g id="edge6" class="edge">
<title>arena-&gt;examine_at_finger_down_contender</title>
<path fill="none" stroke="black" d="M60.42,-376.23C82.16,-394.21 114.31,-420.57 142.79,-443 157.73,-454.77 174.34,-467.47 188.91,-478.5"/>
<polygon fill="black" stroke="black" points="187.14,-481.55 197.23,-484.79 191.36,-475.97 187.14,-481.55"/>
<text text-anchor="middle" x="109.29" y="-451.8" font-family="Times,serif" font-size="14.00">examine</text>
<text text-anchor="middle" x="109.29" y="-436.8" font-family="Times,serif" font-size="14.00">event()</text>
</g>
<!-- verify_at_matched_contender -->
<g id="node12" class="node">
<title>verify_at_matched_contender</title>
<polygon fill="none" stroke="black" points="229.29,-408 173.29,-355 229.29,-302 285.29,-355 229.29,-408"/>
<text text-anchor="middle" x="229.29" y="-366.3" font-family="Times,serif" font-size="14.00">exactly</text>
<text text-anchor="middle" x="229.29" y="-351.3" font-family="Times,serif" font-size="14.00">one</text>
<text text-anchor="middle" x="229.29" y="-336.3" font-family="Times,serif" font-size="14.00">finger?</text>
</g>
<!-- arena&#45;&gt;verify_at_matched_contender -->
<g id="edge13" class="edge">
<title>arena-&gt;verify_at_matched_contender</title>
<path fill="none" stroke="black" d="M68.14,-355C94.16,-355 131.16,-355 163.04,-355"/>
<polygon fill="black" stroke="black" points="163.19,-358.5 173.19,-355 163.19,-351.5 163.19,-358.5"/>
<text text-anchor="middle" x="109.29" y="-373.8" font-family="Times,serif" font-size="14.00">verify</text>
<text text-anchor="middle" x="109.29" y="-358.8" font-family="Times,serif" font-size="14.00">event()</text>
</g>
<!-- return_winner_at_matched_contender -->
<g id="node16" class="node">
<title>return_winner_at_matched_contender</title>
<polygon fill="none" stroke="black" points="307.79,-284 150.79,-284 150.79,-246 307.79,-246 307.79,-284"/>
<text text-anchor="middle" x="229.29" y="-268.8" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="229.29" y="-253.8" font-family="Times,serif" font-size="14.00">`events`, Winner, Motion</text>
</g>
<!-- arena&#45;&gt;return_winner_at_matched_contender -->
<g id="edge18" class="edge">
<title>arena-&gt;return_winner_at_matched_contender</title>
<path fill="none" stroke="black" d="M56.48,-329.67C64.88,-321.12 75.06,-312.19 85.79,-306 102.6,-296.3 121.86,-288.76 140.67,-282.95"/>
<polygon fill="black" stroke="black" points="141.85,-286.25 150.46,-280.07 139.87,-279.54 141.85,-286.25"/>
<text text-anchor="middle" x="109.29" y="-339.8" font-family="Times,serif" font-size="14.00">process</text>
<text text-anchor="middle" x="109.29" y="-324.8" font-family="Times,serif" font-size="14.00">buffered</text>
<text text-anchor="middle" x="109.29" y="-309.8" font-family="Times,serif" font-size="14.00">events()</text>
</g>
<!-- process_at_winner -->
<g id="node17" class="node">
<title>process_at_winner</title>
<polygon fill="none" stroke="black" points="229.29,-181 173.29,-128 229.29,-75 285.29,-128 229.29,-181"/>
<text text-anchor="middle" x="229.29" y="-139.3" font-family="Times,serif" font-size="14.00">num</text>
<text text-anchor="middle" x="229.29" y="-124.3" font-family="Times,serif" font-size="14.00">fingers</text>
<text text-anchor="middle" x="229.29" y="-109.3" font-family="Times,serif" font-size="14.00">present</text>
</g>
<!-- arena&#45;&gt;process_at_winner -->
<g id="edge19" class="edge">
<title>arena-&gt;process_at_winner</title>
<path fill="none" stroke="black" d="M43.92,-322.59C52.02,-297.45 65.76,-262.68 85.79,-237 113,-202.13 153.86,-172.41 184.86,-152.85"/>
<polygon fill="black" stroke="black" points="187.07,-155.6 193.73,-147.37 183.39,-149.65 187.07,-155.6"/>
<text text-anchor="middle" x="109.29" y="-270.8" font-family="Times,serif" font-size="14.00">process</text>
<text text-anchor="middle" x="109.29" y="-255.8" font-family="Times,serif" font-size="14.00">new</text>
<text text-anchor="middle" x="109.29" y="-240.8" font-family="Times,serif" font-size="14.00">event()</text>
</g>
<!-- examine2_at_initial_contender -->
<g id="node3" class="node">
<title>examine2_at_initial_contender</title>
<polygon fill="none" stroke="black" points="425.79,-755 362.79,-717 425.79,-679 488.79,-717 425.79,-755"/>
<text text-anchor="middle" x="425.79" y="-720.8" font-family="Times,serif" font-size="14.00">button</text>
<text text-anchor="middle" x="425.79" y="-705.8" font-family="Times,serif" font-size="14.00">pressed?</text>
</g>
<!-- examine_at_initial_contender&#45;&gt;examine2_at_initial_contender -->
<g id="edge2" class="edge">
<title>examine_at_initial_contender-&gt;examine2_at_initial_contender</title>
<path fill="none" stroke="black" d="M281.4,-728.06C305.24,-726.22 333.9,-724.01 359.3,-722.05"/>
<polygon fill="black" stroke="black" points="359.9,-725.52 369.6,-721.26 359.36,-718.54 359.9,-725.52"/>
<text text-anchor="middle" x="335.29" y="-727.8" font-family="Times,serif" font-size="14.00">yes</text>
</g>
<!-- return_mismatch_at_initial_contender -->
<g id="node4" class="node">
<title>return_mismatch_at_initial_contender</title>
<polygon fill="none" stroke="black" points="668.79,-799 596.79,-799 596.79,-761 668.79,-761 668.79,-799"/>
<text text-anchor="middle" x="632.79" y="-783.8" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="632.79" y="-768.8" font-family="Times,serif" font-size="14.00">Mismatch</text>
</g>
<!-- examine_at_initial_contender&#45;&gt;return_mismatch_at_initial_contender -->
<g id="edge3" class="edge">
<title>examine_at_initial_contender-&gt;return_mismatch_at_initial_contender</title>
<path fill="none" stroke="black" d="M272.58,-744.24C298.42,-751.21 332.25,-759.44 362.79,-764 440.88,-775.66 532.9,-778.9 586.56,-779.75"/>
<polygon fill="black" stroke="black" points="586.72,-783.26 596.77,-779.89 586.82,-776.26 586.72,-783.26"/>
<text text-anchor="middle" x="425.79" y="-779.8" font-family="Times,serif" font-size="14.00">no</text>
</g>
<!-- examine2_at_initial_contender&#45;&gt;return_mismatch_at_initial_contender -->
<g id="edge5" class="edge">
<title>examine2_at_initial_contender-&gt;return_mismatch_at_initial_contender</title>
<path fill="none" stroke="black" d="M468.28,-729.75C502.71,-740.33 551.59,-755.35 586.93,-766.21"/>
<polygon fill="black" stroke="black" points="585.93,-769.57 596.52,-769.16 587.99,-762.88 585.93,-769.57"/>
<text text-anchor="middle" x="516.29" y="-749.8" font-family="Times,serif" font-size="14.00">yes</text>
</g>
<!-- return_finger_down_contender_at_initial_contender -->
<g id="node5" class="node">
<title>return_finger_down_contender_at_initial_contender</title>
<polygon fill="none" stroke="black" points="703.29,-736 562.29,-736 562.29,-698 703.29,-698 703.29,-736"/>
<text text-anchor="middle" x="632.79" y="-720.8" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="632.79" y="-705.8" font-family="Times,serif" font-size="14.00">FingerDownContender</text>
</g>
<!-- examine2_at_initial_contender&#45;&gt;return_finger_down_contender_at_initial_contender -->
<g id="edge4" class="edge">
<title>examine2_at_initial_contender-&gt;return_finger_down_contender_at_initial_contender</title>
<path fill="none" stroke="black" d="M488.86,-717C508.71,-717 530.97,-717 551.9,-717"/>
<polygon fill="black" stroke="black" points="552.06,-720.5 562.06,-717 552.06,-713.5 552.06,-720.5"/>
<text text-anchor="middle" x="516.29" y="-720.8" font-family="Times,serif" font-size="14.00">no</text>
</g>
<!-- return_mismatch_at_finger_down_contender -->
<g id="node7" class="node">
<title>return_mismatch_at_finger_down_contender</title>
<polygon fill="none" stroke="black" points="668.79,-493 596.79,-493 596.79,-455 668.79,-455 668.79,-493"/>
<text text-anchor="middle" x="632.79" y="-477.8" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="632.79" y="-462.8" font-family="Times,serif" font-size="14.00">Mismatch</text>
</g>
<!-- examine_at_finger_down_contender&#45;&gt;return_mismatch_at_finger_down_contender -->
<g id="edge7" class="edge">
<title>examine_at_finger_down_contender-&gt;return_mismatch_at_finger_down_contender</title>
<path fill="none" stroke="black" d="M274.81,-497.84C300.4,-492.44 333.24,-486.26 362.79,-483 440.95,-474.37 532.59,-473.2 586.22,-473.41"/>
<polygon fill="black" stroke="black" points="586.4,-476.91 596.42,-473.46 586.44,-469.91 586.4,-476.91"/>
<text text-anchor="middle" x="425.79" y="-486.8" font-family="Times,serif" font-size="14.00">no</text>
</g>
<!-- examine2_at_finger_down_contender -->
<g id="node8" class="node">
<title>examine2_at_finger_down_contender</title>
<polygon fill="none" stroke="black" points="425.79,-583 362.79,-545 425.79,-507 488.79,-545 425.79,-583"/>
<text text-anchor="middle" x="425.79" y="-548.8" font-family="Times,serif" font-size="14.00">button</text>
<text text-anchor="middle" x="425.79" y="-533.8" font-family="Times,serif" font-size="14.00">pressed?</text>
</g>
<!-- examine_at_finger_down_contender&#45;&gt;examine2_at_finger_down_contender -->
<g id="edge8" class="edge">
<title>examine_at_finger_down_contender-&gt;examine2_at_finger_down_contender</title>
<path fill="none" stroke="black" d="M276.39,-516.77C303.62,-521.95 338.33,-528.55 367.34,-534.07"/>
<polygon fill="black" stroke="black" points="366.86,-537.54 377.34,-535.97 368.17,-530.67 366.86,-537.54"/>
<text text-anchor="middle" x="335.29" y="-531.8" font-family="Times,serif" font-size="14.00">yes</text>
</g>
<!-- examine2_at_finger_down_contender&#45;&gt;return_mismatch_at_finger_down_contender -->
<g id="edge9" class="edge">
<title>examine2_at_finger_down_contender-&gt;return_mismatch_at_finger_down_contender</title>
<path fill="none" stroke="black" d="M464.85,-530.53C487.65,-521.98 517.28,-511.08 543.79,-502 557.71,-497.23 572.95,-492.29 586.78,-487.9"/>
<polygon fill="black" stroke="black" points="588.08,-491.16 596.56,-484.82 585.97,-484.49 588.08,-491.16"/>
<text text-anchor="middle" x="516.29" y="-517.8" font-family="Times,serif" font-size="14.00">yes</text>
</g>
<!-- examine3_at_finger_down_contender -->
<g id="node9" class="node">
<title>examine3_at_finger_down_contender</title>
<polygon fill="none" stroke="black" points="632.79,-617 543.79,-564 632.79,-511 721.79,-564 632.79,-617"/>
<text text-anchor="middle" x="632.79" y="-575.3" font-family="Times,serif" font-size="14.00">displacement</text>
<text text-anchor="middle" x="632.79" y="-560.3" font-family="Times,serif" font-size="14.00">&gt;</text>
<text text-anchor="middle" x="632.79" y="-545.3" font-family="Times,serif" font-size="14.00">threshold?</text>
</g>
<!-- examine2_at_finger_down_contender&#45;&gt;examine3_at_finger_down_contender -->
<g id="edge10" class="edge">
<title>examine2_at_finger_down_contender-&gt;examine3_at_finger_down_contender</title>
<path fill="none" stroke="black" d="M480.66,-549.99C500.51,-551.83 523.53,-553.97 545.53,-556.01"/>
<polygon fill="black" stroke="black" points="545.28,-559.5 555.56,-556.93 545.92,-552.53 545.28,-559.5"/>
<text text-anchor="middle" x="516.29" y="-556.8" font-family="Times,serif" font-size="14.00">no</text>
</g>
<!-- return_matched_contender_at_finger_down_contender -->
<g id="node10" class="node">
<title>return_matched_contender_at_finger_down_contender</title>
<polygon fill="none" stroke="black" points="849.79,-549.5 776.79,-549.5 776.79,-496.5 849.79,-496.5 849.79,-549.5"/>
<text text-anchor="middle" x="813.29" y="-534.3" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="813.29" y="-519.3" font-family="Times,serif" font-size="14.00">Matched</text>
<text text-anchor="middle" x="813.29" y="-504.3" font-family="Times,serif" font-size="14.00">Contender</text>
</g>
<!-- examine3_at_finger_down_contender&#45;&gt;return_matched_contender_at_finger_down_contender -->
<g id="edge11" class="edge">
<title>examine3_at_finger_down_contender-&gt;return_matched_contender_at_finger_down_contender</title>
<path fill="none" stroke="black" d="M697.48,-549.37C720.37,-544.11 745.71,-538.3 766.74,-533.46"/>
<polygon fill="black" stroke="black" points="767.73,-536.83 776.69,-531.18 766.16,-530 767.73,-536.83"/>
<text text-anchor="middle" x="749.29" y="-541.8" font-family="Times,serif" font-size="14.00">yes</text>
</g>
<!-- return_self_at_finger_down_contender -->
<g id="node11" class="node">
<title>return_self_at_finger_down_contender</title>
<polygon fill="none" stroke="black" points="840.29,-606 786.29,-606 786.29,-568 840.29,-568 840.29,-606"/>
<text text-anchor="middle" x="813.29" y="-590.8" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="813.29" y="-575.8" font-family="Times,serif" font-size="14.00">`self`</text>
</g>
<!-- examine3_at_finger_down_contender&#45;&gt;return_self_at_finger_down_contender -->
<g id="edge12" class="edge">
<title>examine3_at_finger_down_contender-&gt;return_self_at_finger_down_contender</title>
<path fill="none" stroke="black" d="M706.4,-573.35C730.4,-576.45 756.06,-579.75 776.12,-582.34"/>
<polygon fill="black" stroke="black" points="775.69,-585.81 786.05,-583.62 776.58,-578.87 775.69,-585.81"/>
<text text-anchor="middle" x="749.29" y="-582.8" font-family="Times,serif" font-size="14.00">no</text>
</g>
<!-- return_mismatch_at_matched_contender -->
<g id="node13" class="node">
<title>return_mismatch_at_matched_contender</title>
<polygon fill="none" stroke="black" points="668.79,-322 596.79,-322 596.79,-284 668.79,-284 668.79,-322"/>
<text text-anchor="middle" x="632.79" y="-306.8" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="632.79" y="-291.8" font-family="Times,serif" font-size="14.00">Mismatch</text>
</g>
<!-- verify_at_matched_contender&#45;&gt;return_mismatch_at_matched_contender -->
<g id="edge14" class="edge">
<title>verify_at_matched_contender-&gt;return_mismatch_at_matched_contender</title>
<path fill="none" stroke="black" d="M266.36,-337C292.43,-325.02 328.88,-310.37 362.79,-304 440.25,-289.46 532.48,-293.65 586.35,-298.2"/>
<polygon fill="black" stroke="black" points="586.32,-301.71 596.59,-299.11 586.94,-294.74 586.32,-301.71"/>
<text text-anchor="middle" x="425.79" y="-307.8" font-family="Times,serif" font-size="14.00">no</text>
</g>
<!-- examine2_at_matched_contender -->
<g id="node14" class="node">
<title>examine2_at_matched_contender</title>
<polygon fill="none" stroke="black" points="425.79,-404 362.79,-366 425.79,-328 488.79,-366 425.79,-404"/>
<text text-anchor="middle" x="425.79" y="-369.8" font-family="Times,serif" font-size="14.00">button</text>
<text text-anchor="middle" x="425.79" y="-354.8" font-family="Times,serif" font-size="14.00">pressed?</text>
</g>
<!-- verify_at_matched_contender&#45;&gt;examine2_at_matched_contender -->
<g id="edge15" class="edge">
<title>verify_at_matched_contender-&gt;examine2_at_matched_contender</title>
<path fill="none" stroke="black" d="M282.42,-357.95C305.66,-359.26 333.32,-360.83 358.05,-362.23"/>
<polygon fill="black" stroke="black" points="357.9,-365.72 368.09,-362.79 358.3,-358.73 357.9,-365.72"/>
<text text-anchor="middle" x="335.29" y="-364.8" font-family="Times,serif" font-size="14.00">yes</text>
</g>
<!-- examine2_at_matched_contender&#45;&gt;return_mismatch_at_matched_contender -->
<g id="edge16" class="edge">
<title>examine2_at_matched_contender-&gt;return_mismatch_at_matched_contender</title>
<path fill="none" stroke="black" d="M468.28,-353.25C502.71,-342.67 551.59,-327.65 586.93,-316.79"/>
<polygon fill="black" stroke="black" points="587.99,-320.12 596.52,-313.84 585.93,-313.43 587.99,-320.12"/>
<text text-anchor="middle" x="516.29" y="-343.8" font-family="Times,serif" font-size="14.00">yes</text>
</g>
<!-- return_self_at_matched_contender -->
<g id="node15" class="node">
<title>return_self_at_matched_contender</title>
<polygon fill="none" stroke="black" points="659.79,-385 605.79,-385 605.79,-347 659.79,-347 659.79,-385"/>
<text text-anchor="middle" x="632.79" y="-369.8" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="632.79" y="-354.8" font-family="Times,serif" font-size="14.00">`self`</text>
</g>
<!-- examine2_at_matched_contender&#45;&gt;return_self_at_matched_contender -->
<g id="edge17" class="edge">
<title>examine2_at_matched_contender-&gt;return_self_at_matched_contender</title>
<path fill="none" stroke="black" d="M488.86,-366C523.7,-366 565.97,-366 595.47,-366"/>
<polygon fill="black" stroke="black" points="595.72,-369.5 605.72,-366 595.72,-362.5 595.72,-369.5"/>
<text text-anchor="middle" x="516.29" y="-369.8" font-family="Times,serif" font-size="14.00">no</text>
</g>
<!-- return_end_without_event_at_winner -->
<g id="node18" class="node">
<title>return_end_without_event_at_winner</title>
<polygon fill="none" stroke="black" points="485.29,-54 366.29,-54 366.29,-16 485.29,-16 485.29,-54"/>
<text text-anchor="middle" x="425.79" y="-38.8" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="425.79" y="-23.8" font-family="Times,serif" font-size="14.00">EndGesture(None)</text>
</g>
<!-- process_at_winner&#45;&gt;return_end_without_event_at_winner -->
<g id="edge20" class="edge">
<title>process_at_winner-&gt;return_end_without_event_at_winner</title>
<path fill="none" stroke="black" d="M266.42,-109.89C292.97,-96.68 329.99,-78.45 362.79,-63 366.09,-61.45 369.48,-59.87 372.92,-58.28"/>
<polygon fill="black" stroke="black" points="374.39,-61.45 382.02,-54.1 371.47,-55.09 374.39,-61.45"/>
<text text-anchor="middle" x="335.29" y="-83.8" font-family="Times,serif" font-size="14.00">0</text>
</g>
<!-- process2_at_winner -->
<g id="node19" class="node">
<title>process2_at_winner</title>
<polygon fill="none" stroke="black" points="425.79,-148 362.79,-110 425.79,-72 488.79,-110 425.79,-148"/>
<text text-anchor="middle" x="425.79" y="-113.8" font-family="Times,serif" font-size="14.00">button</text>
<text text-anchor="middle" x="425.79" y="-98.8" font-family="Times,serif" font-size="14.00">pressed?</text>
</g>
<!-- process_at_winner&#45;&gt;process2_at_winner -->
<g id="edge21" class="edge">
<title>process_at_winner-&gt;process2_at_winner</title>
<path fill="none" stroke="black" d="M280.64,-123.34C305.08,-121.08 334.72,-118.34 360.76,-115.93"/>
<polygon fill="black" stroke="black" points="361.28,-119.39 370.92,-114.99 360.64,-112.42 361.28,-119.39"/>
<text text-anchor="middle" x="335.29" y="-122.8" font-family="Times,serif" font-size="14.00">1</text>
</g>
<!-- return_end_with_event_at_winner -->
<g id="node20" class="node">
<title>return_end_with_event_at_winner</title>
<polygon fill="none" stroke="black" points="693.29,-196 572.29,-196 572.29,-158 693.29,-158 693.29,-196"/>
<text text-anchor="middle" x="632.79" y="-180.8" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="632.79" y="-165.8" font-family="Times,serif" font-size="14.00">EndGesture(Some)</text>
</g>
<!-- process_at_winner&#45;&gt;return_end_with_event_at_winner -->
<g id="edge22" class="edge">
<title>process_at_winner-&gt;return_end_with_event_at_winner</title>
<path fill="none" stroke="black" d="M273.58,-139.09C299.33,-145.29 332.74,-152.62 362.79,-157 430.06,-166.81 507.52,-171.93 561.99,-174.52"/>
<polygon fill="black" stroke="black" points="562.08,-178.02 572.23,-174.99 562.4,-171.03 562.08,-178.02"/>
<text text-anchor="middle" x="425.79" y="-172.8" font-family="Times,serif" font-size="14.00">&gt;1</text>
</g>
<!-- process2_at_winner&#45;&gt;return_end_with_event_at_winner -->
<g id="edge23" class="edge">
<title>process2_at_winner-&gt;return_end_with_event_at_winner</title>
<path fill="none" stroke="black" d="M467.3,-123.24C494.79,-132.22 531.82,-144.32 563.78,-154.77"/>
<polygon fill="black" stroke="black" points="562.93,-158.17 573.52,-157.95 565.1,-151.52 562.93,-158.17"/>
<text text-anchor="middle" x="516.29" y="-144.8" font-family="Times,serif" font-size="14.00">yes</text>
</g>
<!-- return_continue_with_event_at_winner -->
<g id="node21" class="node">
<title>return_continue_with_event_at_winner</title>
<polygon fill="none" stroke="black" points="689.29,-136.5 576.29,-136.5 576.29,-83.5 689.29,-83.5 689.29,-136.5"/>
<text text-anchor="middle" x="632.79" y="-121.3" font-family="Times,serif" font-size="14.00">return</text>
<text text-anchor="middle" x="632.79" y="-106.3" font-family="Times,serif" font-size="14.00">ContinueGesture(</text>
<text text-anchor="middle" x="632.79" y="-91.3" font-family="Times,serif" font-size="14.00">Some, self)</text>
</g>
<!-- process2_at_winner&#45;&gt;return_continue_with_event_at_winner -->
<g id="edge24" class="edge">
<title>process2_at_winner-&gt;return_continue_with_event_at_winner</title>
<path fill="none" stroke="black" d="M488.86,-110C513.3,-110 541.4,-110 566.18,-110"/>
<polygon fill="black" stroke="black" points="566.21,-113.5 576.21,-110 566.21,-106.5 566.21,-113.5"/>
<text text-anchor="middle" x="516.29" y="-113.8" font-family="Times,serif" font-size="14.00">no</text>
</g>
</g>
</svg>