Add paper develop
authorCassie Jones <code@witchoflight.com>
Thu, 12 Mar 2020 08:07:35 +0000 (04:07 -0400)
committerCassie Jones <code@witchoflight.com>
Thu, 12 Mar 2020 08:07:35 +0000 (04:07 -0400)
22 files changed:
.gitignore [new file with mode: 0644]
binary5.jpg [new file with mode: 0644]
figures/synthesis-pass.afdesign [new file with mode: 0644]
figures/synthesis-pass.svg [new file with mode: 0644]
figures/toggle-base.dot [new file with mode: 0644]
figures/toggle-base.svg [new file with mode: 0644]
figures/toggle-nan3-1.dot [new file with mode: 0644]
figures/toggle-nan3-1.svg [new file with mode: 0644]
figures/toggle-nan3-2.dot [new file with mode: 0644]
figures/toggle-nan3-2.svg [new file with mode: 0644]
figures/toggle-nan3-3.dot [new file with mode: 0644]
figures/toggle-nan3-3.svg [new file with mode: 0644]
figures/toggle-nan3-4.dot [new file with mode: 0644]
figures/toggle-nan3-4.svg [new file with mode: 0644]
figures/toggle-nan3.afdesign [new file with mode: 0644]
figures/toggle-nan3.dot [new file with mode: 0644]
figures/toggle-nan3.svg [new file with mode: 0644]
figures/toggle-nand.dot [new file with mode: 0644]
figures/toggle-nand.svg [new file with mode: 0644]
makefile [new file with mode: 0644]
nan-gates.md [new file with mode: 0644]
preamble.tex [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..a136337
--- /dev/null
@@ -0,0 +1 @@
+*.pdf
diff --git a/binary5.jpg b/binary5.jpg
new file mode 100644 (file)
index 0000000..c40a0c3
Binary files /dev/null and b/binary5.jpg differ
diff --git a/figures/synthesis-pass.afdesign b/figures/synthesis-pass.afdesign
new file mode 100644 (file)
index 0000000..446c531
Binary files /dev/null and b/figures/synthesis-pass.afdesign differ
diff --git a/figures/synthesis-pass.svg b/figures/synthesis-pass.svg
new file mode 100644 (file)
index 0000000..4c22760
--- /dev/null
@@ -0,0 +1,2037 @@
+<?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">
+<svg width="100%" height="100%" viewBox="0 0 1141 1564" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;">
+    <g id="Artboard1" transform="matrix(1.96259,0,0,5.63125,0,107.006)">
+        <rect x="0" y="-19.002" width="581.241" height="277.664" style="fill:none;"/>
+        <g id="graph0" transform="matrix(0.509531,0,0,0.177581,50.3119,247.629)">
+            <g id="node1" transform="matrix(1.04576,0,0,1.04576,28.1248,-14.9654)">
+                <path d="M54.606,-278.555L54.606,-293.45L38.807,-303.982L16.465,-303.982L0.667,-293.45L0.667,-278.555L16.465,-268.023L38.807,-268.023L54.606,-278.555Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,19.0942,-281.808)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">clk</text>
+                </g>
+            </g>
+            <g id="node10" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <rect x="90.565" y="-368.909" width="129.543" height="43.95" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,98.941,-353.726)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">C</text>
+                </g>
+                <path d="M90.565,-346.934L116.646,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,98.556,-331.751)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">D</text>
+                </g>
+                <path d="M116.646,-324.959L116.646,-368.909" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,144.848,-349.731)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$96</text>
+                </g>
+                <g transform="matrix(1,0,0,1,124.636,-335.746)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$_DFF_P_</text>
+                </g>
+                <path d="M194.026,-324.959L194.026,-368.909" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,202.018,-342.738)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Q</text>
+                </g>
+            </g>
+            <g id="edge27" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M-0.274,-357.014C31.275,-357.014 61.247,-354.277 80.707,-355.19" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(0.935249,0.35399,-0.35399,0.935249,-120.778,-51.6794)">
+                    <path d="M80.005,-358.623L90.565,-357.921L81.872,-351.885L80.005,-358.623Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="node13" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <rect x="90.565" y="-296.99" width="129.543" height="43.95" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,98.941,-281.808)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">C</text>
+                </g>
+                <path d="M90.565,-275.015L116.646,-275.015" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,98.556,-259.833)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">D</text>
+                </g>
+                <path d="M116.646,-253.04L116.646,-296.99" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,144.848,-277.812)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$97</text>
+                </g>
+                <g transform="matrix(1,0,0,1,124.636,-263.828)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$_DFF_P_</text>
+                </g>
+                <path d="M194.026,-253.04L194.026,-296.99" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,202.018,-270.82)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Q</text>
+                </g>
+            </g>
+            <g id="edge28" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M-0.274,-357.014C38.198,-360.251 71.836,-286.003 80.451,-286.003" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M80.576,-289.499L90.565,-286.003L80.576,-282.507L80.576,-289.499Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node16" transform="matrix(1.04576,0,0,1.04576,82.2572,-5.90321)">
+                <rect x="90.565" y="-145.163" width="129.543" height="43.95" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,98.941,-129.98)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">C</text>
+                </g>
+                <path d="M90.565,-123.188L116.646,-123.188" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,98.556,-108.005)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">D</text>
+                </g>
+                <path d="M116.646,-101.213L116.646,-145.163" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,144.848,-125.984)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$98</text>
+                </g>
+                <g transform="matrix(1,0,0,1,124.636,-112)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$_DFF_P_</text>
+                </g>
+                <path d="M194.026,-101.213L194.026,-145.163" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,202.018,-118.992)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Q</text>
+                </g>
+            </g>
+            <g id="edge29" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <g transform="matrix(1,0,0,0.62654,2.22045e-15,-106.811)">
+                    <path d="M-0.274,-399.341C65.144,-399.341 32.305,-150.887 80.375,-135.581" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,0,-56.2171)">
+                    <path d="M81.148,-139.004L90.565,-134.175L80.192,-132.077L81.148,-139.004Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="node2" transform="matrix(1.04576,0,0,1.04576,86.3226,128.502)">
+                <path d="M182.305,-174.673L182.305,-189.568L166.507,-200.1L144.165,-200.1L128.367,-189.568L128.367,-174.673L144.165,-164.141L166.507,-164.141L182.305,-174.673Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,148.737,-177.925)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">en</text>
+                </g>
+            </g>
+            <g id="node19" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <rect x="256.066" y="-135.174" width="93.776" height="35.959" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,264.058,-112.999)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+                </g>
+                <path d="M282.147,-99.215L282.147,-135.174" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,292.467,-119.991)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$61</text>
+                </g>
+                <g transform="matrix(1,0,0,1,290.138,-106.007)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$b2f</text>
+                </g>
+                <path d="M323.762,-99.215L323.762,-135.174" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,331.753,-112.999)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+                </g>
+            </g>
+            <g id="edge30" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M183.077,-115.942C203.976,-115.942 233.971,-124.838 246.059,-119.147" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M246.932,-122.539L256.066,-117.194L245.593,-115.676L246.932,-122.539Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node3" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M640.596,-282.551L640.596,-297.446L624.797,-307.978L602.455,-307.978L586.657,-297.446L586.657,-282.551L602.455,-272.019L624.797,-272.019L640.596,-282.551Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,604.691,-285.803)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">out</text>
+                </g>
+            </g>
+            <g id="node4" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <rect x="425.357" y="-113.199" width="101.54" height="43.95" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,433.348,-98.0162)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+                </g>
+                <path d="M425.357,-91.224L451.438,-91.224" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,433.733,-76.0411)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+                </g>
+                <path d="M451.438,-69.249L451.438,-113.199" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,465.639,-94.0207)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$56</text>
+                </g>
+                <g transform="matrix(1,0,0,1,459.429,-80.0366)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+                </g>
+                <path d="M500.816,-69.249L500.816,-113.199" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,508.808,-87.0286)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+                </g>
+            </g>
+            <g id="node7" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <rect x="562.856" y="-190.112" width="101.54" height="43.95" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,570.848,-174.929)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+                </g>
+                <path d="M562.856,-168.137L588.937,-168.137" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,571.233,-152.954)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+                </g>
+                <path d="M588.937,-146.162L588.937,-190.112" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,603.138,-170.933)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$59</text>
+                </g>
+                <g transform="matrix(1,0,0,1,596.928,-156.949)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+                </g>
+                <path d="M638.316,-146.162L638.316,-190.112" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,646.307,-163.941)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+                </g>
+            </g>
+            <g id="edge23" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M526.897,-91.224C564.985,-91.224 529.247,-162.794 552.915,-176.773" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M552.331,-180.227L562.856,-179.124L553.941,-173.423L552.331,-180.227Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="node5" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <rect x="425.357" y="-253.04" width="101.54" height="43.95" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,433.348,-237.857)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+                </g>
+                <path d="M425.357,-231.065L451.438,-231.065" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,433.733,-215.882)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+                </g>
+                <path d="M451.438,-209.09L451.438,-253.04" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,465.639,-233.862)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$57</text>
+                </g>
+                <g transform="matrix(1,0,0,1,459.429,-219.878)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+                </g>
+                <path d="M500.816,-209.09L500.816,-253.04" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,508.808,-226.87)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+                </g>
+            </g>
+            <g id="node6" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <rect x="562.856" y="-253.04" width="101.54" height="43.95" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,570.848,-237.857)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+                </g>
+                <path d="M562.856,-231.065L588.937,-231.065" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,571.233,-215.882)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+                </g>
+                <path d="M588.937,-209.09L588.937,-253.04" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,603.138,-233.862)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$58</text>
+                </g>
+                <g transform="matrix(1,0,0,1,596.928,-219.878)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+                </g>
+                <path d="M638.316,-209.09L638.316,-253.04" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,646.307,-226.87)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+                </g>
+            </g>
+            <g id="edge25" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M526.897,-231.065C539.561,-231.065 544.085,-224.755 552.806,-221.699" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M553.552,-225.12L562.856,-220.078L552.438,-218.217L553.552,-225.12Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="node8" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <rect x="700.356" y="-242.053" width="101.54" height="43.95" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,708.347,-226.87)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+                </g>
+                <path d="M700.356,-220.078L726.436,-220.078" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,708.732,-204.895)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+                </g>
+                <path d="M726.436,-198.103L726.436,-242.053" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,740.638,-222.874)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$60</text>
+                </g>
+                <g transform="matrix(1,0,0,1,734.428,-208.89)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+                </g>
+                <path d="M775.815,-198.103L775.815,-242.053" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,783.806,-215.882)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+                </g>
+            </g>
+            <g id="edge24" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M664.396,-231.065L690.242,-231.065" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M690.367,-234.561L700.356,-231.065L690.367,-227.569L690.367,-234.561Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge26" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M664.396,-168.137C684.455,-168.137 679.341,-196.222 690.746,-205.877" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M689.774,-209.238L700.356,-209.09L691.991,-202.606L689.774,-209.238Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="node21" transform="matrix(1.04576,0,0,1.04576,-865.324,98.7751)">
+                <circle cx="839.653" cy="-263.029" r="1.798" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge15" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M801.896,-220.078C822.513,-220.078 836.221,-47.363 793.547,-44.339C726.705,-39.602 147.302,-30.914 -44.763,-44.612C-99.733,-48.532 -100.913,-216.514 -79.028,-221.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+                <g transform="matrix(1,0,0,1,-907.438,37.8096)">
+                    <path d="M827.272,-263.086L837.855,-263.029L829.546,-256.474L827.272,-263.086Z" style="fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+                </g>
+            </g>
+            <g id="node9" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <rect x="429.239" y="-307.978" width="93.776" height="35.959" style="fill:none;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,437.23,-285.803)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+                </g>
+                <path d="M455.32,-272.019L455.32,-307.978" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,465.639,-292.795)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$92</text>
+                </g>
+                <g transform="matrix(1,0,0,1,463.31,-278.811)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$f2b</text>
+                </g>
+                <path d="M496.935,-272.019L496.935,-307.978" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,504.926,-285.803)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+                </g>
+            </g>
+            <g id="edge14" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M523.074,-289.998L576.42,-289.998" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M576.668,-293.494L586.657,-289.998L576.668,-286.502L576.668,-293.494Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node12" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M283.256,-328.954L322.653,-328.954C328.646,-328.954 334.639,-334.947 334.639,-340.941L334.639,-352.927C334.639,-358.92 328.646,-364.913 322.653,-364.913L283.256,-364.913C277.263,-364.913 271.27,-358.92 271.27,-352.927L271.27,-340.941C271.27,-334.947 277.263,-328.954 283.256,-328.954" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,279.261,-342.738)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">0:0 - 0:0</text>
+                </g>
+            </g>
+            <g id="edge2" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M232.473,-346.934L258.694,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M232.094,-346.934L226.1,-350.929L220.107,-346.934L226.1,-342.938L232.094,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M259.005,-346.934L264.998,-342.938L270.991,-346.934L264.998,-350.929L259.005,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge21" serif:id="edge2" transform="matrix(1.04576,0,0,1.04576,-106.425,238.772)">
+                <path d="M226.939,-346.934L258.694,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,-5.15459,0)">
+                    <path d="M232.094,-346.934L226.1,-350.929L220.107,-346.934L226.1,-342.938L232.094,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <path d="M259.005,-346.934L264.998,-342.938L270.991,-346.934L264.998,-350.929L259.005,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge22" serif:id="edge2" transform="matrix(1.04576,0,0,1.04576,-103.495,145.5)">
+                <path d="M224.137,-315.323C233.97,-315.323 248.846,-346.934 258.694,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,-7.95634,31.6113)">
+                    <path d="M232.094,-346.934L226.1,-350.929L220.107,-346.934L226.1,-342.938L232.094,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <path d="M259.005,-346.934L264.998,-342.938L270.991,-346.934L264.998,-350.929L259.005,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge210" serif:id="edge2" transform="matrix(1.04576,0,0,1.04576,-103.495,70.2233)">
+                <path d="M224.137,-298.386C233.97,-298.386 248.846,-346.934 258.694,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,-7.95634,48.5477)">
+                    <path d="M232.094,-346.934L226.1,-350.929L220.107,-346.934L226.1,-342.938L232.094,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <path d="M259.005,-346.934L264.998,-342.938L270.991,-346.934L264.998,-350.929L259.005,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node11" transform="matrix(1.04576,0,0,1.04576,-865.464,141.42)">
+                <path d="M889.396,-348.931L928.793,-348.931C934.786,-348.931 940.779,-354.925 940.779,-360.918L940.779,-372.904C940.779,-378.897 934.786,-384.891 928.793,-384.891L889.396,-384.891C883.403,-384.891 877.41,-378.897 877.41,-372.904L877.41,-360.918C877.41,-354.925 883.403,-348.931 889.396,-348.931" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,885.401,-362.716)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">0:0 - 0:0</text>
+                </g>
+            </g>
+            <g id="node20" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <circle cx="387.6" cy="-242.053" r="1.798" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge7" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M334.918,-346.934C382.883,-346.934 341.244,-257.043 375.908,-243.7" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M376.523,-247.142L385.802,-242.053L375.375,-240.245L376.523,-247.142Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node15" transform="matrix(1.04576,0,0,1.04576,85.3905,80.9366)">
+                <path d="M283.256,-274.016L322.653,-274.016C328.646,-274.016 334.639,-280.01 334.639,-286.003L334.639,-297.989C334.639,-303.982 328.646,-309.976 322.653,-309.976L283.256,-309.976C277.263,-309.976 271.27,-303.982 271.27,-297.989L271.27,-286.003C271.27,-280.01 277.263,-274.016 283.256,-274.016" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,279.261,-287.801)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">0:0 - 1:1</text>
+                </g>
+            </g>
+            <g id="edge4" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M232.022,-276.706C242.709,-275.274 248.898,-272.284 259.255,-271.301" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M231.975,-276.699L225.48,-279.813L220.107,-275.015L226.602,-271.901L231.975,-276.699Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(0.97028,0.241984,-0.241984,0.97028,-62.4182,-52.9377)">
+                    <path d="M259.123,-290.316L265.617,-287.2L270.991,-291.996L264.497,-295.112L259.123,-290.316Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="node14" transform="matrix(1.04576,0,0,1.04576,-865.464,119.08)">
+                <path d="M889.396,-272.019L928.793,-272.019C934.786,-272.019 940.779,-278.012 940.779,-284.005L940.779,-295.992C940.779,-301.985 934.786,-307.978 928.793,-307.978L889.396,-307.978C883.403,-307.978 877.41,-301.985 877.41,-295.992L877.41,-284.005C877.41,-278.012 883.403,-272.019 889.396,-272.019" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,885.401,-285.803)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">1:1 - 0:0</text>
+                </g>
+            </g>
+            <g id="edge8" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M334.52,-271.739C362.247,-271.739 356.547,-253.758 375.817,-244.199" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M376.771,-247.57L385.802,-242.053L375.302,-240.734L376.771,-247.57Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node18" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M283.256,-160.146L322.653,-160.146C328.646,-160.146 334.639,-166.139 334.639,-172.132L334.639,-184.118C334.639,-190.112 328.646,-196.105 322.653,-196.105L283.256,-196.105C277.263,-196.105 271.27,-190.112 271.27,-184.118L271.27,-172.132C271.27,-166.139 277.263,-160.146 283.256,-160.146" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,279.261,-173.93)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">0:0 - 2:2</text>
+                </g>
+            </g>
+            <g id="edge6" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M229.112,-181.338C250.014,-181.06 245.806,-175.778 259.217,-174.939" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(0.94848,0.316836,-0.316836,0.94848,-30.6543,-134.884)">
+                    <path d="M231.665,-126.365L224.827,-128.629L220.107,-123.188L226.945,-120.923L231.665,-126.365Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <path d="M259.421,-174.994L266.249,-172.703L270.991,-178.125L264.162,-180.416L259.421,-174.994Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node17" transform="matrix(1.04576,0,0,1.04576,-865.464,57.6898)">
+                <path d="M889.396,-155.151L928.793,-155.151C934.786,-155.151 940.779,-161.145 940.779,-167.138L940.779,-179.124C940.779,-185.117 934.786,-191.111 928.793,-191.111L889.396,-191.111C883.403,-191.111 877.41,-185.117 877.41,-179.124L877.41,-167.138C877.41,-161.145 883.403,-155.151 889.396,-155.151" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,885.401,-168.936)">
+                    <text x="0px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">2:2 - 0:0</text>
+                </g>
+            </g>
+            <g id="edge9" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M334.918,-178.125C367.26,-178.125 353.55,-228.833 375.818,-239.926" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M375.304,-243.391L385.802,-242.053L376.761,-236.552L375.304,-243.391Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node22" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <circle cx="387.6" cy="-112.2" r="1.798" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge19" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M349.843,-117.194C361.944,-117.194 367.045,-114.385 375.645,-112.98" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M376.111,-116.451L385.802,-112.2L375.575,-109.48L376.111,-116.451Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge10" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M389.398,-242.053L415.244,-242.053" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+                <path d="M415.368,-245.549L425.357,-242.053L415.368,-238.557L415.368,-245.549Z" style="fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+            </g>
+            <g id="edge11" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M389.398,-242.053C404.031,-242.053 406.316,-228.64 415.546,-222.772" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+                <path d="M416.651,-226.094L425.357,-220.078L414.799,-219.352L416.651,-226.094Z" style="fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+            </g>
+            <g id="edge12" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M389.398,-242.053C413.955,-242.053 404.849,-213.609 425.357,-200.1C475.899,-166.808 496.545,-158.077 552.735,-157.222" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+                <path d="M552.893,-160.717L562.856,-157.149L552.843,-153.725L552.893,-160.717Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge13" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M389.398,-242.053C412.977,-242.053 405.167,-276.821 419.428,-287.143" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+                <path d="M418.612,-290.546L429.18,-289.998L420.577,-283.836L418.612,-290.546Z" style="fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+            </g>
+            <g id="edge16" transform="matrix(1.04576,0,0,1.04576,-866.716,141.44)">
+                <path d="M842.781,-303.827C876.184,-313.29 837.94,-350.567 867.497,-364.929" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M866.93,-368.38L877.41,-366.911L868.301,-361.524L866.93,-368.38Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge17" transform="matrix(1.04576,0,0,1.04576,-865.324,119.097)">
+                <path d="M841.451,-282.462C857.37,-282.462 857.534,-284.515 867.802,-287.112" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M866.838,-290.473L877.41,-289.998L868.849,-283.776L866.838,-290.473Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge18" transform="matrix(1.04576,0,0,1.04576,-865.324,119.097)">
+                <path d="M841.451,-282.462C880.449,-282.462 843.013,-246.161 867.669,-232.317" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,0,-56.9773)">
+                    <path d="M868.442,-178.749L877.41,-173.131L866.896,-171.93L868.442,-178.749Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="edge20" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M389.398,-112.2C401.968,-112.2 406.612,-106.464 415.342,-103.685" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M415.984,-107.125L425.357,-102.211L414.966,-100.207L415.984,-107.125Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge211" serif:id="edge21" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M389.398,-112.2C406.605,-112.2 405.558,-91.503 415.634,-83.418" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M416.951,-86.666L425.357,-80.236L414.776,-80.02L416.951,-86.666Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge221" serif:id="edge22" transform="matrix(1.04576,0,0,1.04576,85.5154,59.2948)">
+                <path d="M389.398,-112.2C425.663,-112.2 499.525,-176.311 526.897,-200.1C542.247,-213.441 539.993,-233.457 552.711,-239.943" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M552.365,-243.442L562.856,-242.053L553.789,-236.596L552.365,-243.442Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+        </g>
+        <g transform="matrix(0.485097,0,0,0.175515,15.3622,-15.8214)">
+            <rect x="38.203" y="1145.25" width="1063.36" height="394.291" style="fill:none;stroke:rgb(109,109,109);stroke-width:2.06px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:4.12,6.18,0,0;"/>
+        </g>
+        <g transform="matrix(0.503038,0,0,0.169212,2.50481,-77.8078)">
+            <rect x="38.203" y="1145.25" width="1063.36" height="394.291" style="fill:none;stroke:rgb(109,109,109);stroke-width:2.06px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:4.12,6.18,0,0;"/>
+        </g>
+        <g transform="matrix(0.528654,0,0,0.126119,-7.22338,-79.4874)">
+            <rect x="38.203" y="1145.25" width="1063.36" height="394.291" style="fill:none;stroke:rgb(109,109,109);stroke-width:2.25px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:4.5,6.75,0,0;"/>
+        </g>
+        <g transform="matrix(0.41652,0,0,0.106175,53.5194,-102.281)">
+            <rect x="38.203" y="1145.25" width="1063.36" height="394.291" style="fill:none;stroke:rgb(109,109,109);stroke-width:2.79px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:5.59,8.38,0,0;"/>
+        </g>
+        <g transform="matrix(0.284485,0,0,0.0820701,142.659,-110.281)">
+            <rect x="38.203" y="1145.25" width="1063.36" height="394.291" style="fill:none;stroke:rgb(109,109,109);stroke-width:3.9px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;stroke-dasharray:7.8,11.71,0,0;"/>
+        </g>
+        <g id="graph01" serif:id="graph0" transform="matrix(0.460497,0,0,0.160491,-335.978,152.621)">
+            <g id="node110" serif:id="node1" transform="matrix(1,0,0,1,815.182,190.144)">
+                <circle cx="18.622" cy="-128.413" r="1.799" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node31" serif:id="node3" transform="matrix(1,0,0,1,832.313,203.073)">
+                <path d="M68.389,-165.389L107.804,-165.389C113.799,-165.389 119.795,-171.385 119.795,-177.38L119.795,-189.372C119.795,-195.368 113.799,-201.364 107.804,-201.364L68.389,-201.364C62.393,-201.364 56.397,-195.368 56.397,-189.372L56.397,-177.38C56.397,-171.385 62.393,-165.389 68.389,-165.389" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,88.0961,-179.179)">
+                    <text x="-23.705px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">0:0 - 0:0</text>
+                </g>
+            </g>
+            <g id="edge35" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M1.491,-78.523C13.052,-77.986 25.737,-122.057 47.693,-121.907" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(0.926645,0.375938,-0.375938,0.926645,-63.5336,27.4837)">
+                    <path d="M45.811,-183.569L56.397,-183.376L48.002,-176.925L45.811,-183.569Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="node41" serif:id="node4" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M68.389,-55.463L107.804,-55.463C113.799,-55.463 119.795,-61.459 119.795,-67.455L119.795,-79.446C119.795,-85.442 113.799,-91.438 107.804,-91.438L68.389,-91.438C62.393,-91.438 56.397,-85.442 56.397,-79.446L56.397,-67.455C56.397,-61.459 62.393,-55.463 68.389,-55.463" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,88.0961,-69.2533)">
+                    <text x="-23.705px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">1:1 - 0:0</text>
+                </g>
+            </g>
+            <g id="edge36" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M1.491,-78.523C26.353,-78.523 33.2,-78.394 46.47,-76.724" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(0.973003,-0.230794,0.230794,0.973003,18.8031,8.61425)">
+                    <path d="M48.002,-79.902L56.397,-73.451L45.811,-73.258L48.002,-79.902Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="node51" serif:id="node5" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M68.389,-0.5L107.804,-0.5C113.799,-0.5 119.795,-6.496 119.795,-12.492L119.795,-24.484C119.795,-30.479 113.799,-36.475 107.804,-36.475L68.389,-36.475C62.393,-36.475 56.397,-30.479 56.397,-24.484L56.397,-12.492C56.397,-6.496 62.393,-0.5 68.389,-0.5" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,88.0961,-14.2904)">
+                    <text x="-23.705px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">2:2 - 0:0</text>
+                </g>
+            </g>
+            <g id="edge37" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M3.29,-78.523C28.996,-67.02 14.712,-34.993 46.401,-20.396" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M47.237,-23.797L56.397,-18.488L45.925,-16.926L47.237,-23.797Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node23" serif:id="node2" transform="matrix(1,0,0,1,832.313,94.82)">
+                <path d="M115.078,-120.963L115.078,-135.864L99.272,-146.401L76.92,-146.401L61.114,-135.864L61.114,-120.963L76.92,-110.426L99.272,-110.426L115.078,-120.963Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,88.0961,-124.216)">
+                    <text x="-8.546px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">clk</text>
+                </g>
+            </g>
+            <g id="node61" serif:id="node6" transform="matrix(1,0,0,1,832.313,140.253)">
+                <rect x="155.771" y="-177.38" width="129.602" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,168.818,-162.191)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">C</text>
+                </g>
+                <path d="M155.771,-155.395L181.864,-155.395" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,168.818,-140.206)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">D</text>
+                </g>
+                <path d="M181.864,-133.41L181.864,-177.38" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,220.572,-158.193)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$96</text>
+                </g>
+                <g transform="matrix(1,0,0,1,220.572,-144.203)">
+                    <text x="-30.714px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$_DFF_P_</text>
+                </g>
+                <path d="M259.281,-133.41L259.281,-177.38" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,272.327,-151.198)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Q</text>
+                </g>
+            </g>
+            <g id="edge201" serif:id="edge20" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M115.078,-173.847C135.757,-173.847 133.013,-154.95 146.006,-163.657" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M145.205,-167.065L155.771,-166.388L147.089,-160.328L145.205,-167.065Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node71" serif:id="node7" transform="matrix(1,0,0,1,832.313,140.253)">
+                <rect x="155.771" y="-114.423" width="129.602" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,168.818,-99.2331)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">C</text>
+                </g>
+                <path d="M155.771,-92.438L181.864,-92.438" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,168.818,-77.248)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">D</text>
+                </g>
+                <path d="M181.864,-70.453L181.864,-114.423" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,220.572,-95.2358)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$97</text>
+                </g>
+                <g transform="matrix(1,0,0,1,220.572,-81.2453)">
+                    <text x="-30.714px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$_DFF_P_</text>
+                </g>
+                <path d="M259.281,-70.453L259.281,-114.423" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,272.327,-88.2405)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Q</text>
+                </g>
+            </g>
+            <g id="edge212" serif:id="edge21" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M115.078,-173.847C132.321,-173.847 134.398,-111.921 145.954,-105.736" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M146.842,-109.12L155.771,-103.43L145.243,-102.31L146.842,-109.12Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node81" serif:id="node8" transform="matrix(1,0,0,1,832.313,140.253)">
+                <rect x="155.771" y="-51.465" width="129.602" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,168.818,-36.2756)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">C</text>
+                </g>
+                <path d="M155.771,-29.48L181.864,-29.48" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,168.818,-14.2904)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">D</text>
+                </g>
+                <path d="M181.864,-7.495L181.864,-51.465" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,220.572,-32.2783)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$98</text>
+                </g>
+                <g transform="matrix(1,0,0,1,220.572,-18.2877)">
+                    <text x="-30.714px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$_DFF_P_</text>
+                </g>
+                <path d="M259.281,-7.495L259.281,-51.465" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,272.327,-25.283)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Q</text>
+                </g>
+            </g>
+            <g id="edge222" serif:id="edge22" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M115.078,-173.847C139.567,-157.928 120.447,-56.189 145.847,-42.647" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M146.758,-46.028L155.771,-40.473L145.261,-39.194L146.758,-46.028Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge1" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M131.003,-121.005C138.247,-119.061 137.98,-145.464 144.527,-145.225" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(0.916587,-0.399835,0.399835,0.916587,82.5289,95.0243)">
+                    <path d="M130.827,-178.674L126.879,-184.702L119.795,-183.376L123.743,-177.348L130.827,-178.674Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(0.925122,-0.379669,0.379669,0.925122,67.2357,47.5989)">
+                    <path d="M144.749,-149.126L148.685,-143.09L155.771,-144.403L151.834,-150.439L144.749,-149.126Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="edge3" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M131.846,-75.225C136.071,-76.55 139.51,-78.352 143.737,-79.676" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M131.66,-75.197L125.145,-78.279L119.795,-73.451L126.31,-70.369L131.66,-75.197Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M143.907,-79.701L150.421,-76.618L155.771,-81.445L149.258,-84.528L143.907,-79.701Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge5" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M132.004,-18.488L143.594,-18.488" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M131.787,-18.488L125.791,-22.485L119.795,-18.488L125.792,-14.49L131.787,-18.488Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M143.779,-18.488L149.775,-14.49L155.771,-18.488L149.775,-22.485L143.779,-18.488Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node181" serif:id="node18" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M333.341,-131.411L372.756,-131.411C378.752,-131.411 384.748,-137.407 384.748,-143.403L384.748,-155.395C384.748,-161.391 378.752,-167.387 372.756,-167.387L333.341,-167.387C327.345,-167.387 321.349,-161.391 321.349,-155.395L321.349,-143.403C321.349,-137.407 327.345,-131.411 333.341,-131.411" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,353.048,-145.202)">
+                    <text x="-23.705px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">0:0 - 0:0</text>
+                </g>
+            </g>
+            <g id="edge213" serif:id="edge2" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M297.382,-154.065C301.625,-153.071 305.112,-151.719 309.357,-150.726" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M297.292,-154.074L291.773,-158.708L285.373,-155.395L290.893,-150.762L297.292,-154.074Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M309.43,-150.718L314.95,-146.086L321.349,-149.399L315.829,-154.032L309.43,-150.718Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node191" serif:id="node19" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M333.341,-70.453L372.756,-70.453C378.752,-70.453 384.748,-76.448 384.748,-82.444L384.748,-94.436C384.748,-100.432 378.752,-106.428 372.756,-106.428L333.341,-106.428C327.345,-106.428 321.349,-100.432 321.349,-94.436L321.349,-82.444C321.349,-76.448 327.345,-70.453 333.341,-70.453" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,353.048,-84.2432)">
+                    <text x="-23.705px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">0:0 - 1:1</text>
+                </g>
+            </g>
+            <g id="edge41" serif:id="edge4" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M297.352,-91.551C301.607,-90.888 305.129,-89.987 309.387,-89.325" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M297.333,-91.552L291.648,-95.981L285.373,-92.438L291.058,-88.008L297.333,-91.552Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M309.39,-89.325L315.075,-84.896L321.349,-88.44L315.664,-92.869L309.39,-89.325Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node201" serif:id="node20" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M333.341,-13.491L372.756,-13.491C378.752,-13.491 384.748,-19.487 384.748,-25.483L384.748,-37.475C384.748,-43.471 378.752,-49.467 372.756,-49.467L333.341,-49.467C327.345,-49.467 321.349,-43.471 321.349,-37.475L321.349,-25.483C321.349,-19.487 327.345,-13.491 333.341,-13.491" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,353.048,-27.2816)">
+                    <text x="-23.705px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">0:0 - 2:2</text>
+                </g>
+            </g>
+            <g id="edge61" serif:id="edge6" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M297.588,-29.944C301.66,-30.267 305.092,-30.695 309.166,-31.018" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M297.357,-29.935L291.213,-33.702L285.373,-29.48L291.517,-25.713L297.357,-29.935Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M309.366,-31.025L315.509,-27.258L321.349,-31.479L315.206,-35.246L309.366,-31.025Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node91" serif:id="node9" transform="matrix(1,0,0,1,226.93,-5.93695)">
+                <path d="M644.056,-156.938L644.056,-171.84L628.25,-182.377L605.898,-182.377L590.092,-171.84L590.092,-156.938L605.898,-146.401L628.25,-146.401L644.056,-156.938Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,617.074,-160.192)">
+                    <text x="-6.602px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">en</text>
+                </g>
+            </g>
+            <g id="edge241" serif:id="edge24" transform="matrix(1,0,0,1,209.529,-4.37521)">
+                <g transform="matrix(0.327031,0,0,1,450.831,0)">
+                    <path d="M644.056,-164.389L669.913,-164.389" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <path d="M670.039,-167.887L680.032,-164.389L670.038,-160.892L670.039,-167.887Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge242" serif:id="edge24" transform="matrix(1,0,0,1,724.829,224.421)">
+                <g transform="matrix(1.71628,0,0,1,-443.92,-2.0033)">
+                    <path d="M644.056,-164.389L669.913,-164.389" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,35.7976,-1.79393)">
+                    <path d="M670.039,-167.887L680.032,-164.389L670.038,-160.892L670.039,-167.887Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="node101" serif:id="node10" transform="matrix(1,0,0,1,850.566,139.474)">
+                <path d="M644.056,-73.994L644.056,-88.896L628.25,-99.433L605.898,-99.433L590.092,-88.896L590.092,-73.994L605.898,-63.457L628.25,-63.457L644.056,-73.994Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,617.074,-77.248)">
+                    <text x="-8.939px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">out</text>
+                </g>
+            </g>
+            <g id="node131" serif:id="node13" transform="matrix(1,0,0,1,69.0619,2.27374e-13)">
+                <g transform="matrix(0.853123,0,0,1,190.551,0)">
+                    <rect x="1246.55" y="-202.364" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-187.174)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.714083,0,0,1,363.872,0)">
+                    <path d="M1246.55,-180.378L1272.65,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-165.189)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1272.65,-158.393L1272.65,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1297.35,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$58</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1297.35,-169.186)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1322.05,-158.393L1322.05,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1331.37,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node132" serif:id="node13" transform="matrix(1,0,0,1,-242.945,8.08779)">
+                <g transform="matrix(0.853123,0,0,1,190.551,0)">
+                    <rect x="1246.55" y="-202.364" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-187.174)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.714083,0,0,1,363.872,0)">
+                    <path d="M1246.55,-180.378L1272.65,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-165.189)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1272.65,-158.393L1272.65,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1297.35,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$56</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1297.35,-169.186)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1322.05,-158.393L1322.05,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1331.37,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node133" serif:id="node13" transform="matrix(1,0,0,1,-242.945,59.9867)">
+                <g transform="matrix(0.853123,0,0,1,190.551,0)">
+                    <rect x="1246.55" y="-202.364" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-187.174)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.714083,0,0,1,363.872,0)">
+                    <path d="M1246.55,-180.378L1272.65,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-165.189)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1272.65,-158.393L1272.65,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1297.35,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$57</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1297.35,-169.186)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1322.05,-158.393L1322.05,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1331.37,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node134" serif:id="node13" transform="matrix(1,0,0,1,69.0619,64.5209)">
+                <g transform="matrix(0.853123,0,0,1,190.551,0)">
+                    <rect x="1246.55" y="-202.364" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-187.174)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.714083,0,0,1,363.872,0)">
+                    <path d="M1246.55,-180.378L1272.65,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-165.189)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1272.65,-158.393L1272.65,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1297.35,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$59</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1297.35,-169.186)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1322.05,-158.393L1322.05,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1331.37,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node25" transform="matrix(1,0,0,1,41.9892,0)">
+                <g transform="matrix(0.808704,0,0,1,273.75,0)">
+                    <rect x="1384.12" y="-198.366" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1400.89,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1410.21,-162.391L1410.21,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1431.03,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$74</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1431.03,-169.186)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1451.84,-162.391L1451.84,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1461.17,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="edge151" serif:id="edge15" transform="matrix(1,0,0,1,46.8283,64.199)">
+                <path d="M1362.93,-180.378C1374.92,-180.378 1365.38,-180.378 1374,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1374.12,-183.876L1384.12,-180.378L1374.12,-176.881L1374.12,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge152" serif:id="edge15" transform="matrix(1,0,0,1,46.8283,0)">
+                <path d="M1362.93,-180.378C1374.92,-180.378 1365.38,-180.378 1374,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1374.12,-183.876L1384.12,-180.378L1374.12,-176.881L1374.12,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="node26" transform="matrix(1,0,0,1,41.9892,-15.7472)">
+                <g transform="matrix(0.808704,0,0,1,273.75,0)">
+                    <rect x="1384.12" y="-118.42" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1400.89,-96.2352)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1410.21,-82.444L1410.21,-118.42" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1431.03,-103.23)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$81</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1431.03,-89.2399)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1451.84,-82.444L1451.84,-118.42" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1461.17,-96.2352)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node151" serif:id="node15" transform="matrix(1,0,0,1,-3.53651,0)">
+                <g transform="matrix(0.844939,0,0,1,262.605,0)">
+                    <rect x="1643.71" y="-191.371" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1660.48,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.703739,0,0,1,494.697,0)">
+                    <path d="M1643.71,-169.386L1669.8,-169.386" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1660.48,-154.196)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1669.8,-147.401L1669.8,-191.371" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1694.5,-172.184)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$60</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1694.5,-158.193)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1719.2,-147.401L1719.2,-191.371" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1728.53,-165.189)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node27" transform="matrix(1,0,0,1,-28.8737,11.8681)">
+                <g transform="matrix(0.828792,0,0,1,312.892,0)">
+                    <rect x="1781.27" y="-200.365" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1798.04,-178.18)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1807.36,-164.389L1807.36,-200.365" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1828.18,-185.175)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$88</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1828.18,-171.185)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1849,-164.389L1849,-200.365" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1858.32,-178.18)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="edge171" serif:id="edge17" transform="matrix(1,0,0,1,-11.5583,0)">
+                <path d="M1745.29,-169.386C1758.31,-169.386 1750.07,-169.308 1758.67,-169.497" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <g transform="matrix(0.991468,0.130348,-0.130348,0.991468,-21.0197,-221.238)">
+                    <path d="M1770.81,-184.017L1781.27,-182.377L1772.07,-177.136L1770.81,-184.017Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+            </g>
+            <g id="node161" serif:id="node16" transform="matrix(1,0,0,1,832.313,140.253)">
+                <rect x="460.297" y="-101.432" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,473.343,-79.2466)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M486.39,-65.456L486.39,-101.432" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,507.207,-86.2419)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$92</text>
+                </g>
+                <g transform="matrix(1,0,0,1,507.207,-72.2513)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M528.024,-65.456L528.024,-101.432" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,541.07,-79.2466)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g transform="matrix(1,0,0,1,298.617,-38.5595)">
+                <g id="edge251" serif:id="edge25">
+                    <path d="M580.212,-85.249L590.092,-81.445L579.996,-78.257L580.212,-85.249Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="node171" serif:id="node17" transform="matrix(1,0,0,1,-71.4609,34.4022)">
+                <g transform="matrix(0.767275,0,0,1,457.786,0)">
+                    <rect x="1911.07" y="-223.35" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1931.33,-200.651)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(1,0,0,1,3.65247,0.450372)">
+                    <path d="M1937.16,-187.374L1937.16,-223.35" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1957.97,-208.16)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$94</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1957.97,-194.169)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1978.79,-187.374L1978.79,-223.35" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1987.98,-200.815)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="edge34" transform="matrix(1,0,0,-1.06287,2.48035,-353.112)">
+                <path d="M1915.51,-188.497C1913.67,-216.151 1934.8,-473.728 1691.94,-481.783C807.679,-511.109 833.988,-508.25 831.324,-392.029" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.98px;stroke-linecap:round;"/>
+            </g>
+            <g id="node33" transform="matrix(1,0,0,1,832.313,140.253)">
+                <circle cx="422.522" cy="-87.441" r="1.799" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge301" serif:id="edge30" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M384.748,-149.399C412.361,-149.399 395.191,-102.806 410.909,-90.429" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M412.182,-93.698L420.724,-87.441L410.145,-87.006L412.182,-93.698Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge31" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M384.748,-88.44C396.744,-88.44 401.985,-87.878 410.604,-87.597" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M410.785,-91.093L420.724,-87.441L410.678,-84.098L410.785,-91.093Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge32" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M384.748,-31.479C410.158,-31.479 396.627,-72.808 411.084,-84.432" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M410.142,-87.802L420.724,-87.441L412.226,-81.125L410.142,-87.802Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge42" transform="matrix(1,0,0,1,71.6919,-22.892)">
+                <path d="M1224.8,-102.594C1236.8,-102.594 1227.82,-102.431 1236.44,-102.431" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1236.56,-105.929L1246.55,-102.431L1236.56,-98.933L1236.56,-105.929Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge421" serif:id="edge42" transform="matrix(1,0,0,1,72.5405,-65.9024)">
+                <path d="M1224.8,-102.594C1236.8,-102.594 1227.82,-102.431 1236.44,-102.431" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1236.56,-105.929L1246.55,-102.431L1236.56,-98.933L1236.56,-105.929Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge422" serif:id="edge42" transform="matrix(1,0,0,1,-258.536,-65.4559)">
+                <path d="M1224.8,-102.594C1236.8,-102.594 1227.82,-102.431 1236.44,-102.431" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1236.56,-105.929L1246.55,-102.431L1236.56,-98.933L1236.56,-105.929Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge423" serif:id="edge42" transform="matrix(1,0,0,1,-258.592,-19.0998)">
+                <path d="M1224.8,-102.594C1236.8,-102.594 1227.82,-102.431 1236.44,-102.431" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1236.56,-105.929L1246.55,-102.431L1236.56,-98.933L1236.56,-105.929Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <g transform="matrix(0.063145,-0.998004,0.998004,0.063145,1115.89,1334.9)">
+                    <path d="M1236.56,-105.929L1246.55,-102.431L1236.56,-98.933L1236.56,-105.929Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+            </g>
+            <g id="edge424" serif:id="edge42" transform="matrix(1,0,0,1,-127.018,-65.3068)">
+                <path d="M1224.8,-102.594C1236.8,-102.594 1227.82,-102.431 1236.44,-102.431" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1236.56,-105.929L1246.55,-102.431L1236.56,-98.933L1236.56,-105.929Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge425" serif:id="edge42" transform="matrix(1,0,0,1,-126.764,-21.8789)">
+                <path d="M1224.8,-102.594C1236.8,-102.594 1227.82,-102.431 1236.44,-102.431" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1236.56,-105.929L1246.55,-102.431L1236.56,-98.933L1236.56,-105.929Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="node221" serif:id="node22" transform="matrix(1,0,0,1,7.50593,0)">
+                <g transform="matrix(0.819388,0,0,1,282.333,0)">
+                    <rect x="1513.91" y="-198.366" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1530.68,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1540,-162.391L1540,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1560.82,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$85</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1560.82,-169.186)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1581.64,-162.391L1581.64,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1590.96,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="edge81" serif:id="edge8">
+                <path d="M1607.73,-180.378L1633.59,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1633.71,-183.876L1643.71,-180.378L1633.71,-176.881L1633.71,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="node231" serif:id="node23" transform="matrix(1,0,0,1,95.3373,-10.9395)">
+                <g transform="matrix(0.817612,0,0,1,212.239,0)">
+                    <rect x="1116.76" y="-175.382" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1133.53,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1142.85,-139.406L1142.85,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1163.67,-160.192)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$72</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1163.67,-146.201)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1184.49,-139.406L1184.49,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1193.81,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node232" serif:id="node23" transform="matrix(1,0,0,1,-235.754,-11.3706)">
+                <g transform="matrix(0.817612,0,0,1,212.239,0)">
+                    <rect x="1116.76" y="-175.382" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1133.53,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1142.85,-139.406L1142.85,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1163.67,-160.192)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$61</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1163.67,-146.201)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1184.49,-139.406L1184.49,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1193.81,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node233" serif:id="node23" transform="matrix(1,0,0,1,-235.81,35.8631)">
+                <g transform="matrix(0.817612,0,0,1,212.239,0)">
+                    <rect x="1116.76" y="-175.382" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1133.53,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1142.85,-139.406L1142.85,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1163.67,-160.192)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$66</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1163.67,-146.201)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1184.49,-139.406L1184.49,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1193.81,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node234" serif:id="node23" transform="matrix(1,0,0,1,-3.22262,-10.9395)">
+                <g transform="matrix(0.817612,0,0,1,212.239,0)">
+                    <rect x="1116.76" y="-175.382" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1133.53,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1142.85,-139.406L1142.85,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1163.67,-160.192)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$63</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1163.67,-146.201)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1184.49,-139.406L1184.49,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1193.81,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node235" serif:id="node23" transform="matrix(1,0,0,1,94.608,32.3104)">
+                <g transform="matrix(0.817612,0,0,1,212.239,0)">
+                    <rect x="1116.76" y="-175.382" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1133.53,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1142.85,-139.406L1142.85,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1163.67,-160.192)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$78</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1163.67,-146.201)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1184.49,-139.406L1184.49,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1193.81,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node236" serif:id="node23" transform="matrix(1,0,0,1,-3.952,32.3104)">
+                <g transform="matrix(0.817612,0,0,1,212.239,0)">
+                    <rect x="1116.76" y="-175.382" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1133.53,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1142.85,-139.406L1142.85,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1163.67,-160.192)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$68</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1163.67,-146.201)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1184.49,-139.406L1184.49,-175.382" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1193.81,-153.197)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node24" transform="matrix(1,0,0,1,7.50593,0)">
+                <g transform="matrix(0.819388,0,0,1,282.333,0)">
+                    <rect x="1513.91" y="-135.409" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1530.68,-113.224)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1540,-99.433L1540,-135.409" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1560.82,-120.219)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$86</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1560.82,-106.228)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1581.64,-99.433L1581.64,-135.409" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1590.96,-113.224)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="edge141" serif:id="edge14">
+                <path d="M1607.73,-117.421C1627.8,-117.421 1622.68,-145.519 1634.09,-155.178" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1633.12,-158.541L1643.71,-158.393L1635.34,-151.907L1633.12,-158.541Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge281" serif:id="edge28" transform="matrix(1,0,0,1,16.4088,9.99327e-05)">
+                <path d="M1494.75,-180.379C1506.74,-180.379 1495.17,-180.378 1503.79,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M1503.92,-183.876L1513.91,-180.378L1503.92,-176.881L1503.92,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge282" serif:id="edge28" transform="matrix(1,0,0,1,16.4088,64.6009)">
+                <path d="M1494.75,-180.379C1506.74,-180.379 1495.17,-180.378 1503.79,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M1503.92,-183.876L1513.91,-180.378L1503.92,-176.881L1503.92,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g transform="matrix(0.966748,0.255732,-0.255732,0.966748,-47.3984,-461.401)">
+                <g id="edge71" serif:id="edge7">
+                    <path d="M1900.5,-205.985L1911.07,-205.362L1902.41,-199.258L1900.5,-205.985Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g transform="matrix(1.24079,0,0,1.24079,-5.20794,-1290.72)">
+                <path d="M1489.27,902.824L1485.58,902.643" style="fill:none;stroke:black;stroke-width:0.71px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"/>
+            </g>
+            <g id="node34" transform="matrix(1,0,0,1,178.191,-4.4037)">
+                <circle cx="811.626" cy="-164.389" r="1.799" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node32" transform="matrix(1,0,0,1,178.135,-42.0844)">
+                <circle cx="811.626" cy="-79.446" r="1.799" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge271" serif:id="edge27" transform="matrix(1,0,0,1,108.169,-20.2169)">
+                <path d="M1089.83,-103.839C1110.99,-103.839 1091.47,-149.657 1106.96,-152.173" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(0.96698,0.254852,-0.254852,0.96698,-4.87389,-284.209)">
+                    <path d="M1106.19,-157.982L1116.76,-157.394L1108.13,-151.261L1106.19,-157.982Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="edge272" serif:id="edge27" transform="matrix(1,0,0,-1,104.087,-277.673)">
+                <path d="M1093.91,-102.395C1109.8,-102.257 1091.47,-149.657 1106.96,-152.173" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(0.96698,0.254852,-0.254852,0.96698,-4.87389,-284.209)">
+                    <path d="M1106.19,-157.982L1116.76,-157.394L1108.13,-151.261L1106.19,-157.982Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="edge33" transform="matrix(1,0,0,1,832.313,140.253)">
+                <path d="M424.321,-87.441C436.387,-87.441 441.541,-85.193 450.151,-84.068" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.98px;"/>
+                <path d="M450.538,-87.549L460.297,-83.444L450.108,-80.567L450.538,-87.549Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge39" transform="matrix(1,0,0,1,176.392,-4.4037)">
+                <path d="M813.425,-164.389C825.417,-164.389 811.699,-157.553 820.318,-157.553" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M813.425,-164.389C825.417,-164.389 814.64,-173.287 822.765,-176.596" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <g transform="matrix(0.912662,-0.408714,0.408714,0.912662,124.058,316.96)">
+                    <path d="M839.407,-167.887L849.4,-164.389L839.407,-160.892L839.407,-167.887Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+                <g transform="matrix(0.975966,0.217923,-0.217923,0.975966,-33.977,-180.04)">
+                    <path d="M839.407,-167.887L849.4,-164.389L839.407,-160.892L839.407,-167.887Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+            </g>
+            <g id="edge391" serif:id="edge39" transform="matrix(1,0,0,-0.998391,177.565,-285.145)">
+                <path d="M813.425,-164.389C825.417,-164.389 811.699,-157.553 820.318,-157.553" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M813.425,-164.389C825.417,-164.389 814.64,-173.287 822.765,-176.596" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <g transform="matrix(0.912662,-0.408714,0.408714,0.912662,124.058,316.96)">
+                    <path d="M839.407,-167.887L849.4,-164.389L839.407,-160.892L839.407,-167.887Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+                <g transform="matrix(0.975966,0.217923,-0.217923,0.975966,-33.977,-180.04)">
+                    <path d="M839.407,-167.887L849.4,-164.389L839.407,-160.892L839.407,-167.887Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+            </g>
+            <g id="edge411" serif:id="edge41" transform="matrix(0.758236,0,0,-0.836128,373.609,-257.842)">
+                <path d="M813.425,-164.389C809.885,-181.826 819.102,-198.731 840.715,-199.666C912.214,-202.759 1105.27,-192.613 1236.35,-191.417" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1236.58,-194.914L1246.55,-191.371L1236.55,-187.919L1236.58,-194.914Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge412" serif:id="edge41" transform="matrix(0.758236,2.0574e-16,-2.26876e-16,1.01645,373.609,-0.773565)">
+                <path d="M813.425,-164.389C809.885,-181.826 819.102,-198.731 840.715,-199.666C912.214,-202.759 1105.27,-192.613 1236.35,-191.417" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1236.58,-194.914L1246.55,-191.371L1236.55,-187.919L1236.58,-194.914Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g transform="matrix(1.24079,0,0,1.24079,-1.67143,-1290.72)">
+                <path d="M1110.84,1071.53C1110.84,1071.53 1122.35,990.542 1092,990.251C1024.69,989.605 776.509,984.565 709.457,986.286C687.288,986.855 688.088,943.974 709.457,943.279" style="fill:none;stroke:black;stroke-width:0.71px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"/>
+            </g>
+        </g>
+        <g id="graph02" serif:id="graph0" transform="matrix(0.509531,0,0,0.177581,-120.357,120.717)">
+            <g id="node135" serif:id="node13" transform="matrix(1.04933,0,0,1.04933,-401.459,-37.1337)">
+                <g transform="matrix(0.853123,0,0,1,190.551,0)">
+                    <rect x="1246.55" y="-202.364" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-187.174)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.714083,0,0,1,363.872,0)">
+                    <path d="M1246.55,-180.378L1272.65,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-165.189)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1272.65,-158.393L1272.65,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1297.35,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$58</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1297.35,-169.186)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1322.05,-158.393L1322.05,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1331.37,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node136" serif:id="node13" transform="matrix(1.04933,0,0,1.04933,-401.459,30.57)">
+                <g transform="matrix(0.853123,0,0,1,190.551,0)">
+                    <rect x="1246.55" y="-202.364" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-187.174)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.714083,0,0,1,363.872,0)">
+                    <path d="M1246.55,-180.378L1272.65,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-165.189)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1272.65,-158.393L1272.65,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1297.35,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$59</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1297.35,-169.186)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1322.05,-158.393L1322.05,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1331.37,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node137" serif:id="node13" transform="matrix(1.04933,0,0,1.04933,-717.821,19.6539)">
+                <g transform="matrix(0.853123,0,0,1,190.551,0)">
+                    <rect x="1246.55" y="-202.364" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-187.174)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.714083,0,0,1,363.872,0)">
+                    <path d="M1246.55,-180.378L1272.65,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-165.189)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1272.65,-158.393L1272.65,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1297.35,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$56</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1297.35,-169.186)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1322.05,-158.393L1322.05,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1331.37,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node138" serif:id="node13" transform="matrix(1.04933,0,0,1.04933,-717.821,-33.4829)">
+                <g transform="matrix(0.853123,0,0,1,190.551,0)">
+                    <rect x="1246.55" y="-202.364" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-187.174)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.714083,0,0,1,363.872,0)">
+                    <path d="M1246.55,-180.378L1272.65,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1263.32,-165.189)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1272.65,-158.393L1272.65,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1297.35,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$57</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1297.35,-169.186)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1322.05,-158.393L1322.05,-202.364" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1331.37,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node251" serif:id="node25" transform="matrix(1.04933,0,0,1.04933,-429.867,-37.1337)">
+                <g transform="matrix(0.808704,0,0,1,273.75,0)">
+                    <rect x="1384.12" y="-198.366" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1400.89,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1410.21,-162.391L1410.21,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1431.03,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$74</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1431.03,-169.186)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1451.84,-162.391L1451.84,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1461.17,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node252" serif:id="node25" transform="matrix(1.04933,0,0,1.04933,-652.646,-28.2885)">
+                <g transform="matrix(0.808704,0,0,1,273.75,0)">
+                    <rect x="1384.12" y="-198.366" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1400.89,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1410.21,-162.391L1410.21,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1431.03,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$72</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1431.03,-169.186)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1451.84,-162.391L1451.84,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1461.17,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node253" serif:id="node25" transform="matrix(1.04933,0,0,1.04933,-1007.18,-28.0242)">
+                <g transform="matrix(0.808704,0,0,1,273.75,0)">
+                    <rect x="1384.12" y="-198.366" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1400.89,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1410.21,-162.391L1410.21,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1431.03,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$66</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1431.03,-169.186)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1451.84,-162.391L1451.84,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1461.17,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node254" serif:id="node25" transform="matrix(1.04933,0,0,1.04933,-654.424,20.0942)">
+                <g transform="matrix(0.808704,0,0,1,273.75,0)">
+                    <rect x="1384.12" y="-198.366" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1400.89,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1410.21,-162.391L1410.21,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1431.03,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$78</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1431.03,-169.186)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1451.84,-162.391L1451.84,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1461.17,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node255" serif:id="node25" transform="matrix(1.04933,0,0,1.04933,-1008.11,15.9636)">
+                <g transform="matrix(0.808704,0,0,1,273.75,0)">
+                    <rect x="1384.12" y="-198.366" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1400.89,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1410.21,-162.391L1410.21,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1431.03,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$61</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1431.03,-169.186)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1451.84,-162.391L1451.84,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1461.17,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="edge153" serif:id="edge15" transform="matrix(1.04933,0,0,1.04933,-424.789,30.2322)">
+                <path d="M1362.93,-180.378C1374.92,-180.378 1365.38,-180.378 1374,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1374.12,-183.876L1384.12,-180.378L1374.12,-176.881L1374.12,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge154" serif:id="edge15" transform="matrix(1.04933,0,0,1.04933,-424.789,-37.1337)">
+                <path d="M1362.93,-180.378C1374.92,-180.378 1365.38,-180.378 1374,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1374.12,-183.876L1384.12,-180.378L1374.12,-176.881L1374.12,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="node261" serif:id="node26" transform="matrix(1.04933,0,0,1.04933,-429.867,-53.6577)">
+                <g transform="matrix(0.808704,0,0,1,273.75,0)">
+                    <rect x="1384.12" y="-118.42" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1400.89,-96.2352)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1410.21,-82.444L1410.21,-118.42" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1431.03,-103.23)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$81</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1431.03,-89.2399)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1451.84,-82.444L1451.84,-118.42" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1461.17,-96.2352)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node152" serif:id="node15" transform="matrix(1.04933,0,0,1.04933,-477.639,-37.1337)">
+                <g transform="matrix(0.844939,0,0,1,262.605,0)">
+                    <rect x="1643.71" y="-191.371" width="101.587" height="43.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1660.48,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <g transform="matrix(0.703739,0,0,1,494.697,0)">
+                    <path d="M1643.71,-169.386L1669.8,-169.386" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1660.48,-154.196)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">B</text>
+                </g>
+                <path d="M1669.8,-147.401L1669.8,-191.371" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1694.5,-172.184)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$60</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1694.5,-158.193)">
+                    <text x="-16.706px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$NaN</text>
+                </g>
+                <path d="M1719.2,-147.401L1719.2,-191.371" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1728.53,-165.189)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node271" serif:id="node27" transform="matrix(1.04933,0,0,1.04933,-616.115,55.7369)">
+                <g transform="matrix(0.828792,0,0,1,312.892,0)">
+                    <rect x="1781.27" y="-200.365" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1798.04,-178.18)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1807.36,-164.389L1807.36,-200.365" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1828.18,-185.175)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$88</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1828.18,-171.185)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1849,-164.389L1849,-200.365" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1858.32,-178.18)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node272" serif:id="node27" transform="matrix(1.04933,0,0,1.04933,-1166.8,22.0227)">
+                <g transform="matrix(0.828792,0,0,1,312.892,0)">
+                    <rect x="1781.27" y="-200.365" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1798.04,-178.18)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1807.36,-164.389L1807.36,-200.365" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1828.18,-185.175)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$63</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1828.18,-171.185)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1849,-164.389L1849,-200.365" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1858.32,-178.18)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="node273" serif:id="node27" transform="matrix(1.04933,0,0,1.04933,-1165.81,-26.469)">
+                <g transform="matrix(0.828792,0,0,1,312.892,0)">
+                    <rect x="1781.27" y="-200.365" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1798.04,-178.18)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1807.36,-164.389L1807.36,-200.365" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1828.18,-185.175)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$68</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1828.18,-171.185)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$f2b</text>
+                </g>
+                <path d="M1849,-164.389L1849,-200.365" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1858.32,-178.18)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="edge172" serif:id="edge17" transform="matrix(5.55112e-17,1.04933,-1.04933,5.55112e-17,1120.75,-2005.93)">
+                <path d="M1729.4,-205.411C1750.92,-206.312 1720.38,-139.656 1753.59,-143.503" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <g transform="matrix(0.991468,0.130348,-0.130348,0.991468,-26.0981,-195.371)">
+                    <path d="M1770.81,-184.017L1781.27,-182.377L1772.07,-177.136L1770.81,-184.017Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+            </g>
+            <g id="node222" serif:id="node22" transform="matrix(1.04933,0,0,1.04933,-466.051,-37.1337)">
+                <g transform="matrix(0.819388,0,0,1,282.333,0)">
+                    <rect x="1513.91" y="-198.366" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1530.68,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1540,-162.391L1540,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1560.82,-183.177)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$85</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1560.82,-169.186)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1581.64,-162.391L1581.64,-198.366" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1590.96,-176.181)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="edge82" serif:id="edge8" transform="matrix(1.04933,0,0,1.04933,-473.928,-37.1337)">
+                <path d="M1607.73,-180.378L1633.59,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1633.71,-183.876L1643.71,-180.378L1633.71,-176.881L1633.71,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="node241" serif:id="node24" transform="matrix(1.04933,0,0,1.04933,-466.051,-37.1337)">
+                <g transform="matrix(0.819388,0,0,1,282.333,0)">
+                    <rect x="1513.91" y="-135.409" width="93.82" height="35.976" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,1530.68,-113.224)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">A</text>
+                </g>
+                <path d="M1540,-99.433L1540,-135.409" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1560.82,-120.219)">
+                    <text x="-10.493px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$86</text>
+                </g>
+                <g transform="matrix(1,0,0,1,1560.82,-106.228)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">$b2f</text>
+                </g>
+                <path d="M1581.64,-99.433L1581.64,-135.409" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,1590.96,-113.224)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.991px;">Y</text>
+                </g>
+            </g>
+            <g id="edge142" serif:id="edge14" transform="matrix(1.04933,0,0,1.04933,-473.928,-37.1337)">
+                <path d="M1607.73,-117.421C1627.8,-117.421 1622.68,-145.519 1634.09,-155.178" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M1633.12,-158.541L1643.71,-158.393L1635.34,-151.907L1633.12,-158.541Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge283" serif:id="edge28" transform="matrix(1.04933,0,0,1.04933,-456.709,-37.1336)">
+                <path d="M1494.75,-180.379C1506.74,-180.379 1495.17,-180.378 1503.79,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M1503.92,-183.876L1513.91,-180.378L1503.92,-176.881L1503.92,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge284" serif:id="edge28" transform="matrix(1.04933,0,0,1.04933,-456.709,30.654)">
+                <path d="M1494.75,-180.379C1506.74,-180.379 1495.17,-180.378 1503.79,-180.378" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M1503.92,-183.876L1513.91,-180.378L1503.92,-176.881L1503.92,-183.876Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge72" serif:id="edge7">
+            </g>
+            <g id="node111" serif:id="node1" transform="matrix(1,0,0,1,267.04,-100.278)">
+                <path d="M54.748,-86.205L54.748,-101.105L38.943,-111.642L16.592,-111.642L0.787,-101.105L0.787,-86.205L16.592,-75.668L38.943,-75.668L54.748,-86.205Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,27.7675,-89.458)">
+                    <text x="-8.546px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">clk</text>
+                </g>
+            </g>
+            <g id="node223" serif:id="node22" transform="matrix(1,0,0,1,189.041,-35.1176)">
+                <rect x="90.722" y="-104.647" width="129.595" height="43.968" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,103.768,-89.458)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">C</text>
+                </g>
+                <path d="M90.722,-82.663L116.813,-82.663" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,103.768,-67.474)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">D</text>
+                </g>
+                <path d="M116.813,-60.679L116.813,-104.647" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,155.519,-85.4609)">
+                    <text x="-10.492px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$52</text>
+                </g>
+                <g transform="matrix(1,0,0,1,155.519,-71.4711)">
+                    <text x="-30.712px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$_DFF_P_</text>
+                </g>
+                <path d="M194.226,-60.679L194.226,-104.647" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,207.272,-78.466)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">Q</text>
+                </g>
+            </g>
+            <g id="edge155" serif:id="edge15" transform="matrix(6.12323e-17,1,-1,6.12323e-17,197.655,-230.694)">
+                <path d="M54.748,-93.655L80.604,-93.655" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M80.729,-97.153L90.722,-93.655L80.729,-90.158L80.729,-97.153Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node28" serif:id="node2" transform="matrix(1,0,0,1,99.1061,1.41292)">
+                <path d="M310.252,-206.117L310.252,-221.018L294.447,-231.555L272.096,-231.555L256.291,-221.018L256.291,-206.117L272.096,-195.581L294.447,-195.581L310.252,-206.117Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,283.272,-209.371)">
+                    <text x="-6.602px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">en</text>
+                </g>
+            </g>
+            <g id="node92" serif:id="node9" transform="matrix(1,0,0,1,-0.0585575,4.12745)">
+                <rect x="519.469" y="-294.509" width="93.815" height="35.974" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,532.515,-272.325)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">A</text>
+                </g>
+                <path d="M545.56,-258.535L545.56,-294.509" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,566.376,-279.32)">
+                    <text x="-10.492px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$71</text>
+                </g>
+                <g transform="matrix(1,0,0,1,566.376,-265.33)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$b2f</text>
+                </g>
+                <path d="M587.192,-258.535L587.192,-294.509" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,600.238,-272.325)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">Y</text>
+                </g>
+            </g>
+            <g id="edge173" serif:id="edge17">
+                <path d="M409.358,-212.155C462.386,-240.588 438.852,-271.921 509.407,-272.395" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,0,4.09578)">
+                    <path d="M509.407,-279.988L519.41,-276.522L509.429,-272.993L509.407,-279.988Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="edge181" serif:id="edge18">
+                <path d="M409.358,-212.155C434.767,-212.155 424.743,-174.171 444.245,-174.952" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(0.986738,-0.162322,0.162322,0.986738,138.576,38.1564)">
+                    <path d="M337.729,-163.925L346.226,-157.609L335.645,-157.247L337.729,-163.925Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="node35" serif:id="node3" transform="matrix(1,0,0,1,534.842,5.302)">
+                <path d="M310.252,-88.203L310.252,-103.104L294.447,-113.64L272.096,-113.64L256.291,-103.104L256.291,-88.203L272.096,-77.667L294.447,-77.667L310.252,-88.203Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,283.272,-91.4566)">
+                    <text x="-8.938px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">out</text>
+                </g>
+            </g>
+            <g id="node139" serif:id="node13" transform="matrix(1,0,0,1,-0.0585575,-17.9869)">
+                <rect x="519.469" y="-113.64" width="93.815" height="35.974" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,532.515,-91.4566)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">A</text>
+                </g>
+                <path d="M545.56,-77.667L545.56,-113.64" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,566.376,-98.4515)">
+                    <text x="-10.492px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$79</text>
+                </g>
+                <g transform="matrix(1,0,0,1,566.376,-84.4617)">
+                    <text x="-12.822px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$b2f</text>
+                </g>
+                <path d="M587.192,-77.667L587.192,-113.64" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,600.238,-91.4566)">
+                    <text x="-5.052px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">Y</text>
+                </g>
+            </g>
+            <g id="edge202" serif:id="edge20" transform="matrix(1,0,0,1,99.1061,-22.1269)">
+                <g transform="matrix(0.502584,0,0,1,154.324,0)">
+                    <path d="M310.252,-95.654C399.762,-95.654 424.63,-92.156 509.342,-92.156" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,-99.1061,3.49746)">
+                    <path d="M509.418,-99.151L519.41,-95.654L509.418,-92.156L509.418,-99.151Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="edge203" serif:id="edge20" transform="matrix(1,0,0,1,371.653,1.55807)">
+                <g transform="matrix(0.502584,0,0,1,154.324,0)">
+                    <path d="M-232.04,-118.32C-161.111,-67.745 424.63,-92.156 509.342,-92.156" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,-99.1061,3.49746)">
+                    <path d="M509.418,-99.151L519.41,-95.654L509.418,-92.156L509.418,-99.151Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="edge214" serif:id="edge21">
+                <g transform="matrix(1,0,0,1,108.365,-8.20718)">
+                    <path d="M300.993,-109.573C351.324,-109.573 301.959,-195.858 336.118,-210.732" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+                <g transform="matrix(0.974552,0.224163,-0.224163,0.974552,69.562,-88.928)">
+                    <path d="M335.769,-214.223L346.226,-212.569L337.019,-207.341L335.769,-214.223Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="edge131" serif:id="edge13" transform="matrix(1,0,0,1,57.5167,-12.8797)">
+                <g transform="matrix(1,0,0,1,14.311,-2.13215)">
+                    <path d="M617.167,-154.611L624.391,-155.131" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,-4.3431,-4.3431)">
+                    <path d="M643.261,-156.416L653.141,-152.612L643.045,-149.425L643.261,-156.416Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+            </g>
+            <g id="edge132" serif:id="edge13" transform="matrix(1,0,0,1,-96.963,-16.0495)">
+                <g transform="matrix(1,0,0,1,14.311,-2.13215)">
+                    <path d="M617.167,-154.611L624.391,-155.131" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,-4.3431,-4.3431)">
+                    <path d="M643.261,-156.416L653.141,-152.612L643.045,-149.425L643.261,-156.416Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+            </g>
+            <g id="edge133" serif:id="edge13" transform="matrix(1,0,0,1,58.1734,-61.7232)">
+                <g transform="matrix(1,0,0,1,14.311,-2.13215)">
+                    <path d="M617.167,-154.611L624.391,-155.131" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,-4.3431,-4.3431)">
+                    <path d="M643.261,-156.416L653.141,-152.612L643.045,-149.425L643.261,-156.416Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+            </g>
+            <g id="edge134" serif:id="edge13" transform="matrix(1,0,0,1,-96.963,-59.4082)">
+                <g transform="matrix(1,0,0,1,14.311,-2.13215)">
+                    <path d="M617.167,-154.611L624.391,-155.131" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+                <g transform="matrix(1,0,0,1,-4.3431,-4.3431)">
+                    <path d="M643.261,-156.416L653.141,-152.612L643.045,-149.425L643.261,-156.416Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+            </g>
+            <g id="edge252" serif:id="edge25">
+                <path d="M613.342,-276.522C731.269,-276.522 759.803,-259.763 876.744,-244.545C888.75,-242.983 893.902,-240.954 902.538,-240.037" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M902.904,-243.521L912.718,-239.549L902.569,-236.534L902.904,-243.521Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge285" serif:id="edge28">
+                <g transform="matrix(0.534509,0,0,1,420.152,0)">
+                    <path d="M876.744,-217.565L902.601,-217.565" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+                <path d="M902.725,-221.063L912.718,-217.565L902.725,-214.068L902.725,-221.063Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge286" serif:id="edge28" transform="matrix(1,0,0,1,-1.77875,48.3827)">
+                <g transform="matrix(0.534509,0,0,1,420.152,0)">
+                    <path d="M876.744,-217.565L902.601,-217.565" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                </g>
+                <path d="M902.725,-221.063L912.718,-217.565L902.725,-214.068L902.725,-221.063Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge215" serif:id="edge2" transform="matrix(1,0,0,1,-1.77875,-35.1841)">
+                <path d="M615.004,-80.018C744.673,-80.018 777.726,-107.968 902.389,-108.617" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M902.716,-112.116L912.718,-108.644L902.735,-105.121L902.716,-112.116Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge110" serif:id="edge1">
+                <path d="M1336.3,-116.762C1333.65,-60.94 1325.76,-48.688 1226.97,-48.688L393.133,-48.688C305.002,-46.762 298.096,-40.365 291.307,-85.543" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,187.395,-34.9746)">
+                    <path d="M100.417,-50.568L103.557,-60.679L107.408,-50.817L100.417,-50.568Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                </g>
+            </g>
+            <g id="node237" serif:id="node23" transform="matrix(1,0,0,1,77.659,-16.0771)">
+                <circle cx="477.813" cy="-157.609" r="1.799" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node242" serif:id="node24" transform="matrix(1,0,0,1,77.659,-4.61728)">
+                <circle cx="477.813" cy="-212.569" r="1.799" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge223" serif:id="edge22" transform="matrix(1,0,0,1,26.2355,-0.277644)">
+                <path d="M766.015,-217.565C778.006,-217.565 764.193,-217.565 772.812,-217.565" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M772.937,-221.063L782.93,-217.565L772.937,-214.068L772.937,-221.063Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge224" serif:id="edge22" transform="matrix(1,0,0,1,26.1329,47.5178)">
+                <path d="M766.015,-217.565C778.006,-217.565 764.193,-217.565 772.812,-217.565" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M772.937,-221.063L782.93,-217.565L772.937,-214.068L772.937,-221.063Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge83" serif:id="edge8" transform="matrix(1,0,0,1,77.659,-16.0771)">
+                <path d="M479.612,-157.609C492.023,-157.609 496.877,-162.199 505.628,-164.423" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M505.251,-167.9L515.586,-165.603L506.074,-160.954L505.251,-167.9Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge91" serif:id="edge9" transform="matrix(1,0,0,1,77.659,-16.0771)">
+                <path d="M479.612,-157.609C492.746,-157.609 496.8,-149.408 505.678,-145.564" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M506.454,-148.976L515.586,-143.619L505.106,-142.112L506.454,-148.976Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge111" serif:id="edge11" transform="matrix(1,0,0,1,77.659,-4.61728)">
+                <path d="M479.612,-212.569C493.007,-212.569 496.722,-221.941 505.58,-226.334" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M505.072,-229.804L515.586,-228.557L506.589,-222.975L505.072,-229.804Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+            <g id="edge121" serif:id="edge12" transform="matrix(1,0,0,1,77.659,-4.61728)">
+                <path d="M479.612,-212.569C491.768,-212.569 496.808,-209.196 505.406,-207.51" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+                <path d="M505.955,-210.972L515.586,-206.573L505.314,-204.006L505.955,-210.972Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            </g>
+        </g>
+        <g id="graph03" serif:id="graph0" transform="matrix(0.509531,0,0,0.177581,77.8879,61.5972)">
+            <g id="node112" serif:id="node1">
+                <path d="M54.953,-84.862L54.953,-99.743L39.169,-110.266L16.848,-110.266L1.064,-99.743L1.064,-84.862L16.848,-74.34L39.169,-74.34L54.953,-84.862Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,28.0085,-88.1114)">
+                    <text x="-8.534px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">clk</text>
+                </g>
+            </g>
+            <g id="node93" serif:id="node9">
+                <rect x="90.879" y="-103.28" width="129.422" height="43.909" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,103.907,-88.1114)">
+                    <text x="-4.659px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">C</text>
+                </g>
+                <path d="M90.879,-81.325L116.935,-81.325" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,103.907,-66.1568)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">D</text>
+                </g>
+                <path d="M116.935,-59.371L116.935,-103.28" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,155.589,-84.1197)">
+                    <text x="-10.478px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$53</text>
+                </g>
+                <g transform="matrix(1,0,0,1,155.589,-70.1486)">
+                    <text x="-30.671px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$_DFF_P_</text>
+                </g>
+                <path d="M194.244,-59.371L194.244,-103.28" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,207.272,-77.1341)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">Q</text>
+                </g>
+            </g>
+            <g id="edge135" serif:id="edge13">
+                <path d="M54.953,-92.303L80.774,-92.303" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M80.899,-95.796L90.879,-92.303L80.899,-88.81L80.899,-95.796Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node29" serif:id="node2">
+                <path d="M310.115,-203.617L310.115,-218.498L294.331,-229.02L272.01,-229.02L256.226,-218.498L256.226,-203.617L272.01,-193.094L294.331,-193.094L310.115,-203.617Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,283.17,-206.866)">
+                    <text x="-6.593px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">en</text>
+                </g>
+            </g>
+            <g id="node102" serif:id="node10">
+                <circle cx="347.837" cy="-211.057" r="1.796" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge38" serif:id="edge3">
+                <path d="M310.115,-211.057L335.936,-211.057" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M336.061,-214.55L346.041,-211.057L336.061,-207.565L336.061,-214.55Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node36" serif:id="node3">
+                <path d="M310.115,-85.86L310.115,-100.741L294.331,-111.264L272.01,-111.264L256.226,-100.741L256.226,-85.86L272.01,-75.338L294.331,-75.338L310.115,-85.86Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,283.17,-89.1094)">
+                    <text x="-8.926px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">out</text>
+                </g>
+            </g>
+            <g id="node113" serif:id="node11">
+                <circle cx="347.837" cy="-93.301" r="1.796" style="stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge51" serif:id="edge5">
+                <path d="M310.115,-93.301L335.936,-93.301" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M336.061,-96.794L346.041,-93.301L336.061,-89.808L336.061,-96.794Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node42" serif:id="node4">
+                <rect x="385.559" y="-206.068" width="117.75" height="35.926" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,398.587,-183.913)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">A</text>
+                </g>
+                <path d="M411.615,-170.142L411.615,-206.068" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,444.434,-190.899)">
+                    <text x="-10.478px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$57</text>
+                </g>
+                <g transform="matrix(1,0,0,1,444.434,-176.928)">
+                    <text x="-24.835px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$_NOT_</text>
+                </g>
+                <path d="M477.252,-170.142L477.252,-206.068" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,490.28,-183.913)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">Y</text>
+                </g>
+            </g>
+            <g id="node72" serif:id="node7">
+                <rect x="539.234" y="-120.245" width="129.395" height="43.909" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,552.262,-105.076)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">A</text>
+                </g>
+                <path d="M539.234,-98.29L565.291,-98.29" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,552.262,-83.1217)">
+                    <text x="-4.659px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">B</text>
+                </g>
+                <path d="M565.291,-76.336L565.291,-120.245" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,603.932,-101.085)">
+                    <text x="-10.478px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$60</text>
+                </g>
+                <g transform="matrix(1,0,0,1,603.932,-87.1135)">
+                    <text x="-30.657px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$_NAND_</text>
+                </g>
+                <path d="M642.572,-76.336L642.572,-120.245" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,655.601,-94.099)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">Y</text>
+                </g>
+            </g>
+            <g id="edge92" serif:id="edge9">
+                <path d="M503.308,-188.105C537.753,-188.105 508.51,-125.02 529.52,-111.714" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M530.41,-115.092L539.234,-109.268L528.704,-108.317L530.41,-115.092Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node52" serif:id="node5">
+                <rect x="385.559" y="-151.181" width="117.75" height="35.926" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,398.587,-129.027)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">A</text>
+                </g>
+                <path d="M411.615,-115.255L411.615,-151.181" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,444.434,-136.012)">
+                    <text x="-10.478px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$58</text>
+                </g>
+                <g transform="matrix(1,0,0,1,444.434,-122.041)">
+                    <text x="-24.835px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$_NOT_</text>
+                </g>
+                <path d="M477.252,-115.255L477.252,-151.181" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,490.28,-129.027)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">Y</text>
+                </g>
+            </g>
+            <g id="node62" serif:id="node6">
+                <rect x="539.234" y="-183.115" width="129.395" height="43.909" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,552.262,-167.946)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">A</text>
+                </g>
+                <path d="M539.234,-161.16L565.291,-161.16" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,552.262,-145.992)">
+                    <text x="-4.659px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">B</text>
+                </g>
+                <path d="M565.291,-139.206L565.291,-183.115" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,603.932,-163.955)">
+                    <text x="-10.478px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$59</text>
+                </g>
+                <g transform="matrix(1,0,0,1,603.932,-149.984)">
+                    <text x="-30.657px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$_NAND_</text>
+                </g>
+                <path d="M642.572,-139.206L642.572,-183.115" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,655.601,-156.969)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">Y</text>
+                </g>
+            </g>
+            <g id="edge101" serif:id="edge10">
+                <path d="M503.308,-133.218C516.966,-133.218 520.425,-143.367 529.461,-147.965" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M528.729,-151.381L539.234,-150.183L530.275,-144.568L528.729,-151.381Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node82" serif:id="node8">
+                <rect x="704.554" y="-131.222" width="129.395" height="43.909" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,717.583,-116.054)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">A</text>
+                </g>
+                <path d="M704.554,-109.268L730.611,-109.268" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,717.583,-94.099)">
+                    <text x="-4.659px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">B</text>
+                </g>
+                <path d="M730.611,-87.313L730.611,-131.222" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,769.252,-112.062)">
+                    <text x="-10.478px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$61</text>
+                </g>
+                <g transform="matrix(1,0,0,1,769.252,-98.0908)">
+                    <text x="-30.657px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">$_NAND_</text>
+                </g>
+                <path d="M807.893,-87.313L807.893,-131.222" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,820.921,-105.076)">
+                    <text x="-5.045px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.971px;">Y</text>
+                </g>
+            </g>
+            <g id="edge112" serif:id="edge11">
+                <path d="M668.629,-161.16C688.669,-161.16 683.559,-133.101 694.954,-123.456" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M696.198,-126.723L704.554,-120.245L693.983,-120.098L696.198,-126.723Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge122" serif:id="edge12">
+                <path d="M668.629,-98.29L694.45,-98.29" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M694.575,-101.783L704.554,-98.29L694.575,-94.798L694.575,-101.783Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge84" serif:id="edge8">
+                <path d="M821.145,-87.313C822.24,-30.487 709.525,-26.46 444.406,-25.445C171.264,-24.399 102.868,-21.555 104.139,-49.218" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M100.642,-49.249L103.697,-59.371L107.621,-49.553L100.642,-49.249Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge43" serif:id="edge4">
+                <path d="M220.3,-81.325C233.055,-81.325 237.444,-88.203 246.147,-91.534" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M245.794,-95.018L256.226,-93.301L247,-88.137L245.794,-95.018Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge113" serif:id="edge1">
+                <path d="M349.633,-211.057C364.436,-211.057 366.472,-197.048 375.689,-190.919" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M376.92,-194.2L385.559,-188.105L375.004,-187.483L376.92,-194.2Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge216" serif:id="edge2">
+                <path d="M349.633,-211.057C365.753,-211.057 465.242,-217.072 510.75,-211.766C531.686,-209.325 517.043,-182.402 529.516,-174.567" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M530.4,-177.946L539.234,-172.138L528.706,-171.169L530.4,-177.946Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge62" serif:id="edge6">
+                <path d="M349.633,-93.301C369.399,-93.301 364.696,-120.676 376.051,-130.086" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M374.988,-133.413L385.559,-133.218L377.173,-126.778L374.988,-133.413Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge73" serif:id="edge7">
+                <path d="M349.633,-93.301C430.484,-93.301 453.097,-87.794 529.171,-87.343" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M529.265,-90.835L539.234,-87.313L529.245,-83.85L529.265,-90.835Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+        </g>
+        <g id="graph04" serif:id="graph0" transform="matrix(0.509531,0,0,0.177581,163.258,20.6682)">
+            <g id="node114" serif:id="node1">
+                <path d="M53.961,-113.699L53.961,-128.599L38.156,-139.136L15.805,-139.136L0,-128.599L0,-113.699L15.805,-103.162L38.156,-103.162L53.961,-113.699Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,26.9803,-116.952)">
+                    <text x="-8.546px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">clk</text>
+                </g>
+            </g>
+            <g id="node53" serif:id="node5">
+                <rect x="89.934" y="-132.141" width="109.109" height="43.968" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,111.918,-116.952)">
+                    <text x="-13.99px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">CLK</text>
+                </g>
+                <path d="M89.934,-110.157L133.902,-110.157" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,111.918,-94.968)">
+                    <text x="-5.051px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">D</text>
+                </g>
+                <path d="M133.902,-88.173L133.902,-132.141" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,153.427,-112.955)">
+                    <text x="-6.995px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$6</text>
+                </g>
+                <g transform="matrix(1,0,0,1,153.427,-98.9651)">
+                    <text x="-11.654px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$dff</text>
+                </g>
+                <path d="M172.952,-88.173L172.952,-132.141" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,185.998,-105.96)">
+                    <text x="-5.051px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">Q</text>
+                </g>
+            </g>
+            <g id="edge310" serif:id="edge3">
+                <path d="M53.961,-121.149L79.817,-121.149" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M79.942,-124.646L89.934,-121.149L79.942,-117.652L79.942,-124.646Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node210" serif:id="node2">
+                <path d="M398.453,-87.718L398.453,-102.618L382.648,-113.155L360.297,-113.155L344.492,-102.618L344.492,-87.718L360.297,-77.181L382.648,-77.181L398.453,-87.718Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,371.473,-90.9709)">
+                    <text x="-6.602px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">en</text>
+                </g>
+            </g>
+            <g id="node63" serif:id="node6">
+                <rect x="453.968" y="-166.116" width="100.037" height="65.952" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,467.013,-150.927)">
+                    <text x="-5.051px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">A</text>
+                </g>
+                <path d="M453.968,-144.132L480.059,-144.132" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,467.013,-128.943)">
+                    <text x="-4.666px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">B</text>
+                </g>
+                <path d="M453.968,-122.148L480.059,-122.148" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,467.013,-106.959)">
+                    <text x="-3.89px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">S</text>
+                </g>
+                <path d="M480.059,-100.164L480.059,-166.116" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,503.986,-135.938)">
+                    <text x="-6.995px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$4</text>
+                </g>
+                <g transform="matrix(1,0,0,1,503.986,-121.948)">
+                    <text x="-15.933px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$mux</text>
+                </g>
+                <path d="M527.914,-100.164L527.914,-166.116" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,540.959,-128.943)">
+                    <text x="-5.051px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">Y</text>
+                </g>
+            </g>
+            <g id="edge44" serif:id="edge4">
+                <path d="M398.453,-95.168C420.338,-95.168 426.611,-106.762 443.861,-110.204" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M443.747,-113.706L454.023,-111.156L444.4,-106.742L443.747,-113.706Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="node37" serif:id="node3">
+                <path d="M288.978,-142.677L288.978,-157.578L273.173,-168.115L250.822,-168.115L235.017,-157.578L235.017,-142.677L250.822,-132.141L273.173,-132.141L288.978,-142.677Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,261.997,-145.931)">
+                    <text x="-8.938px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">out</text>
+                </g>
+            </g>
+            <g id="node43" serif:id="node4">
+                <rect x="324.951" y="-168.115" width="93.042" height="35.974" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,337.997,-145.931)">
+                    <text x="-5.051px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">A</text>
+                </g>
+                <path d="M351.043,-132.141L351.043,-168.115" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,371.473,-152.926)">
+                    <text x="-6.995px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$2</text>
+                </g>
+                <g transform="matrix(1,0,0,1,371.473,-138.936)">
+                    <text x="-12.436px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">$not</text>
+                </g>
+                <path d="M391.903,-132.141L391.903,-168.115" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <g transform="matrix(1,0,0,1,404.948,-145.931)">
+                    <text x="-5.051px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.99px;">Y</text>
+                </g>
+            </g>
+            <g id="edge74" serif:id="edge7">
+                <path d="M288.978,-150.128L314.834,-150.128" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M314.959,-153.625L324.951,-150.128L314.959,-146.63L314.959,-153.625Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge63" serif:id="edge6">
+                <path d="M288.978,-150.128C309.233,-150.128 305.793,-171.534 324.951,-178.107C364.065,-191.528 378.297,-189.691 417.994,-178.107C432.238,-173.951 434.624,-162.261 444.042,-157.346" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M445.029,-160.709L454.023,-155.124L443.509,-153.881L445.029,-160.709Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge217" serif:id="edge2">
+                <path d="M417.994,-150.128C431.686,-150.128 435.161,-139.966 444.223,-135.361" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M445.05,-138.76L454.023,-133.14L443.504,-131.938L445.05,-138.76Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge52" serif:id="edge5">
+                <path d="M199.043,-110.157C218.836,-110.157 214.127,-137.569 225.497,-146.991" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M224.432,-150.323L235.017,-150.128L226.621,-143.679L224.432,-150.323Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g id="edge114" serif:id="edge1">
+                <path d="M540.959,-100.164C540.959,-50.67 425.537,-51.747 314.369,-50.467C218.854,-49.367 126.479,-39.163 113.154,-78.244" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+                <path d="M109.692,-77.744L111.513,-88.173L116.594,-78.885L109.692,-77.744Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+        </g>
+        <g transform="matrix(0.509531,0,0,0.177581,33.4736,-17.103)">
+            <text x="240.282px" y="37.508px" style="font-family:'LMRoman10-Regular', 'Latin Modern Roman';font-size:36.955px;">1</text>
+        </g>
+        <g transform="matrix(0.509531,0,0,0.177581,-46.8471,18.2119)">
+            <text x="240.282px" y="37.508px" style="font-family:'LMRoman10-Regular', 'Latin Modern Roman';font-size:36.955px;">2</text>
+        </g>
+        <g transform="matrix(0.509531,0,0,0.177581,-105.407,64.4466)">
+            <text x="240.282px" y="37.508px" style="font-family:'LMRoman10-Regular', 'Latin Modern Roman';font-size:36.955px;">3</text>
+        </g>
+        <g transform="matrix(0.509531,0,0,0.177581,-94.1335,116.48)">
+            <text x="240.282px" y="37.508px" style="font-family:'LMRoman10-Regular', 'Latin Modern Roman';font-size:36.955px;">4</text>
+        </g>
+        <g transform="matrix(0.509531,0,0,0.177581,-82.6786,185.182)">
+            <text x="240.282px" y="37.508px" style="font-family:'LMRoman10-Regular', 'Latin Modern Roman';font-size:36.955px;">5</text>
+        </g>
+    </g>
+</svg>
diff --git a/figures/toggle-base.dot b/figures/toggle-base.dot
new file mode 100644 (file)
index 0000000..53f5604
--- /dev/null
@@ -0,0 +1,18 @@
+digraph "toggle" {
+label="toggle";
+rankdir="LR";
+remincross=true;
+n3 [ shape=octagon, label="clk", color="black", fontcolor="black" ];
+n4 [ shape=octagon, label="en", color="black", fontcolor="black" ];
+n5 [ shape=octagon, label="out", color="black", fontcolor="black" ];
+c8 [ shape=record, label="{{<p6> A}|$2\n$not|{<p7> Y}}" ];
+c12 [ shape=record, label="{{<p9> CLK|<p10> D}|$6\n$dff|{<p11> Q}}" ];
+c15 [ shape=record, label="{{<p6> A|<p13> B|<p14> S}|$4\n$mux|{<p7> Y}}" ];
+c15:p7:e -> c12:p10:w [color="black", label=""];
+c8:p7:e -> c15:p13:w [color="black", label=""];
+n3:e -> c12:p9:w [color="black", label=""];
+n4:e -> c15:p14:w [color="black", label=""];
+c12:p11:e -> n5:w [color="black", label=""];
+n5:e -> c15:p6:w [color="black", label=""];
+n5:e -> c8:p6:w [color="black", label=""];
+}
diff --git a/figures/toggle-base.svg b/figures/toggle-base.svg
new file mode 100644 (file)
index 0000000..fcb6b00
--- /dev/null
@@ -0,0 +1,113 @@
+<?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.40.1 (20161225.0304)
+ -->
+<!-- Title: toggle Pages: 1 -->
+<svg width="562pt" height="196pt"
+ viewBox="0.00 0.00 562.41 195.87" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 191.8719)">
+<title>toggle</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-191.8719 558.4092,-191.8719 558.4092,4 -4,4"/>
+<text text-anchor="middle" x="277.2046" y="-6.8" font-family="Times,serif" font-size="14.00" fill="#000000">toggle</text>
+<!-- n3 -->
+<g id="node1" class="node">
+<title>n3</title>
+<polygon fill="none" stroke="#000000" points="54,-113.918 54,-128.8297 38.1838,-139.3738 15.8162,-139.3738 0,-128.8297 0,-113.918 15.8162,-103.3738 38.1838,-103.3738 54,-113.918"/>
+<text text-anchor="middle" x="27" y="-117.1738" font-family="Times,serif" font-size="14.00" fill="#000000">clk</text>
+</g>
+<!-- c12 -->
+<g id="node5" class="node">
+<title>c12</title>
+<polygon fill="none" stroke="#000000" points="90,-88.3738 90,-132.3738 199.1885,-132.3738 199.1885,-88.3738 90,-88.3738"/>
+<text text-anchor="middle" x="112" y="-117.1738" font-family="Times,serif" font-size="14.00" fill="#000000">CLK</text>
+<polyline fill="none" stroke="#000000" points="90,-110.3738 134,-110.3738 "/>
+<text text-anchor="middle" x="112" y="-95.1738" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="134,-88.3738 134,-132.3738 "/>
+<text text-anchor="middle" x="153.5391" y="-113.1738" font-family="Times,serif" font-size="14.00" fill="#000000">$6</text>
+<text text-anchor="middle" x="153.5391" y="-99.1738" font-family="Times,serif" font-size="14.00" fill="#000000">$dff</text>
+<polyline fill="none" stroke="#000000" points="173.0781,-88.3738 173.0781,-132.3738 "/>
+<text text-anchor="middle" x="186.1333" y="-106.1738" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- n3&#45;&gt;c12 -->
+<g id="edge3" class="edge">
+<title>n3:e&#45;&gt;c12:w</title>
+<path fill="none" stroke="#000000" d="M54,-121.3738C66,-121.3738 71.25,-121.3738 79.875,-121.3738"/>
+<polygon fill="#000000" stroke="#000000" points="80,-124.8739 90,-121.3738 80,-117.8739 80,-124.8739"/>
+</g>
+<!-- n4 -->
+<g id="node2" class="node">
+<title>n4</title>
+<polygon fill="none" stroke="#000000" points="398.7437,-87.918 398.7437,-102.8297 382.9274,-113.3738 360.5599,-113.3738 344.7437,-102.8297 344.7437,-87.918 360.5599,-77.3738 382.9274,-77.3738 398.7437,-87.918"/>
+<text text-anchor="middle" x="371.7437" y="-91.1738" font-family="Times,serif" font-size="14.00" fill="#000000">en</text>
+</g>
+<!-- c15 -->
+<g id="node6" class="node">
+<title>c15</title>
+<polygon fill="none" stroke="#000000" points="454.2988,-100.3738 454.2988,-166.3738 554.4092,-166.3738 554.4092,-100.3738 454.2988,-100.3738"/>
+<text text-anchor="middle" x="467.354" y="-151.1738" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="454.2988,-144.3738 480.4092,-144.3738 "/>
+<text text-anchor="middle" x="467.354" y="-129.1738" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="454.2988,-122.3738 480.4092,-122.3738 "/>
+<text text-anchor="middle" x="467.354" y="-107.1738" font-family="Times,serif" font-size="14.00" fill="#000000">S</text>
+<polyline fill="none" stroke="#000000" points="480.4092,-100.3738 480.4092,-166.3738 "/>
+<text text-anchor="middle" x="504.354" y="-136.1738" font-family="Times,serif" font-size="14.00" fill="#000000">$4</text>
+<text text-anchor="middle" x="504.354" y="-122.1738" font-family="Times,serif" font-size="14.00" fill="#000000">$mux</text>
+<polyline fill="none" stroke="#000000" points="528.2988,-100.3738 528.2988,-166.3738 "/>
+<text text-anchor="middle" x="541.354" y="-129.1738" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n4&#45;&gt;c15 -->
+<g id="edge4" class="edge">
+<title>n4:e&#45;&gt;c15:w</title>
+<path fill="none" stroke="#000000" d="M398.7437,-95.3738C420.6444,-95.3738 426.9219,-106.9764 444.1845,-110.4209"/>
+<polygon fill="#000000" stroke="#000000" points="444.071,-113.9255 454.354,-111.3738 444.7242,-106.956 444.071,-113.9255"/>
+</g>
+<!-- n5 -->
+<g id="node3" class="node">
+<title>n5</title>
+<polygon fill="none" stroke="#000000" points="289.1885,-142.918 289.1885,-157.8297 273.3722,-168.3738 251.0047,-168.3738 235.1885,-157.8297 235.1885,-142.918 251.0047,-132.3738 273.3722,-132.3738 289.1885,-142.918"/>
+<text text-anchor="middle" x="262.1885" y="-146.1738" font-family="Times,serif" font-size="14.00" fill="#000000">out</text>
+</g>
+<!-- c8 -->
+<g id="node4" class="node">
+<title>c8</title>
+<polygon fill="none" stroke="#000000" points="325.1885,-132.3738 325.1885,-168.3738 418.2988,-168.3738 418.2988,-132.3738 325.1885,-132.3738"/>
+<text text-anchor="middle" x="338.2437" y="-146.1738" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="351.2988,-132.3738 351.2988,-168.3738 "/>
+<text text-anchor="middle" x="371.7437" y="-153.1738" font-family="Times,serif" font-size="14.00" fill="#000000">$2</text>
+<text text-anchor="middle" x="371.7437" y="-139.1738" font-family="Times,serif" font-size="14.00" fill="#000000">$not</text>
+<polyline fill="none" stroke="#000000" points="392.1885,-132.3738 392.1885,-168.3738 "/>
+<text text-anchor="middle" x="405.2437" y="-146.1738" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n5&#45;&gt;c8 -->
+<g id="edge7" class="edge">
+<title>n5:e&#45;&gt;c8:w</title>
+<path fill="none" stroke="#000000" d="M289.1885,-150.3738C301.1885,-150.3738 306.4385,-150.3738 315.0635,-150.3738"/>
+<polygon fill="#000000" stroke="#000000" points="315.1885,-153.8739 325.1885,-150.3738 315.1884,-146.8739 315.1885,-153.8739"/>
+</g>
+<!-- n5&#45;&gt;c15 -->
+<g id="edge6" class="edge">
+<title>n5:e&#45;&gt;c15:w</title>
+<path fill="none" stroke="#000000" d="M289.1885,-150.3738C309.4583,-150.3738 306.0158,-171.7955 325.1885,-178.3738 364.331,-191.8039 378.5731,-189.9657 418.2988,-178.3738 432.5538,-174.2142 434.9406,-162.5159 444.366,-157.5969"/>
+<polygon fill="#000000" stroke="#000000" points="445.3533,-160.9629 454.354,-155.3738 443.8324,-154.1301 445.3533,-160.9629"/>
+</g>
+<!-- c8&#45;&gt;c15 -->
+<g id="edge2" class="edge">
+<title>c8:e&#45;&gt;c15:w</title>
+<path fill="none" stroke="#000000" d="M418.2988,-150.3738C432.0014,-150.3738 435.4781,-140.2043 444.5471,-135.5963"/>
+<polygon fill="#000000" stroke="#000000" points="445.3749,-138.9975 454.354,-133.3738 443.8277,-132.1706 445.3749,-138.9975"/>
+</g>
+<!-- c12&#45;&gt;n5 -->
+<g id="edge5" class="edge">
+<title>c12:e&#45;&gt;n5:w</title>
+<path fill="none" stroke="#000000" d="M199.1885,-110.3738C218.9952,-110.3738 214.2831,-137.8055 225.6614,-147.2351"/>
+<polygon fill="#000000" stroke="#000000" points="224.5954,-150.5689 235.1885,-150.3738 226.7859,-143.9204 224.5954,-150.5689"/>
+</g>
+<!-- c15&#45;&gt;c12 -->
+<g id="edge1" class="edge">
+<title>c15:s&#45;&gt;c12:s</title>
+<path fill="none" stroke="#000000" d="M541.354,-100.3738C541.354,-8.2865 142.09,6.1893 113.2369,-78.4376"/>
+<polygon fill="#000000" stroke="#000000" points="109.7723,-77.9368 111.5942,-88.3738 116.6786,-79.0787 109.7723,-77.9368"/>
+</g>
+</g>
+</svg>
diff --git a/figures/toggle-nan3-1.dot b/figures/toggle-nan3-1.dot
new file mode 100644 (file)
index 0000000..6e5a607
--- /dev/null
@@ -0,0 +1,57 @@
+digraph "toggle" {
+rankdir="LR";
+remincross=true;
+n19 [ shape=octagon, label="clk", color="black", fontcolor="black" ];
+n20 [ shape=octagon, label="en", color="black", fontcolor="black" ];
+n21 [ shape=octagon, label="out", color="black", fontcolor="black" ];
+c25 [ shape=record, label="{{<p22> A|<p23> B}|$56\n$NaN|{<p24> Y}}" ];
+c26 [ shape=record, label="{{<p22> A|<p23> B}|$57\n$NaN|{<p24> Y}}" ];
+c27 [ shape=record, label="{{<p22> A|<p23> B}|$58\n$NaN|{<p24> Y}}" ];
+c28 [ shape=record, label="{{<p22> A|<p23> B}|$59\n$NaN|{<p24> Y}}" ];
+c29 [ shape=record, label="{{<p22> A|<p23> B}|$60\n$NaN|{<p24> Y}}" ];
+c30 [ shape=record, label="{{<p22> A}|$71\n$b2f|{<p24> Y}}" ];
+c31 [ shape=record, label="{{<p22> A}|$78\n$b2f|{<p24> Y}}" ];
+c32 [ shape=record, label="{{<p22> A}|$85\n$b2f|{<p24> Y}}" ];
+c33 [ shape=record, label="{{<p22> A}|$72\n$b2f|{<p24> Y}}" ];
+c34 [ shape=record, label="{{<p22> A}|$79\n$b2f|{<p24> Y}}" ];
+c35 [ shape=record, label="{{<p22> A}|$86\n$b2f|{<p24> Y}}" ];
+c36 [ shape=record, label="{{<p22> A}|$74\n$f2b|{<p24> Y}}" ];
+c37 [ shape=record, label="{{<p22> A}|$81\n$f2b|{<p24> Y}}" ];
+c38 [ shape=record, label="{{<p22> A}|$88\n$f2b|{<p24> Y}}" ];
+c39 [ shape=record, label="{{<p22> A}|$61\n$b2f|{<p24> Y}}" ];
+c40 [ shape=record, label="{{<p22> A}|$66\n$b2f|{<p24> Y}}" ];
+c41 [ shape=record, label="{{<p22> A}|$63\n$f2b|{<p24> Y}}" ];
+c42 [ shape=record, label="{{<p22> A}|$68\n$f2b|{<p24> Y}}" ];
+c46 [ shape=record, label="{{<p43> C|<p44> D}|$52\n$_DFF_P_|{<p45> Q}}" ];
+{rank=same; c30; c26; c25; c34};
+c38:p24:s -> c46:p44:s [color="black", label=""];
+c34:p24:e -> c28:p23:w [color="black", style="setlinewidth(3)", label=""];
+c35:p24:e -> c29:p23:w [color="black", style="setlinewidth(3)", label=""];
+c27:p24:e -> c36:p22:w [color="black", style="setlinewidth(3)", label=""];
+c28:p24:e -> c37:p22:w [color="black", style="setlinewidth(3)", label=""];
+c29:p24:e -> c38:p22:w [color="black", style="setlinewidth(3)", label=""];
+n15 [ shape=point ];
+c39:p24:e -> n15:w [color="black", style="setlinewidth(3)", label=""];
+n15:e -> c25:p22:w [color="black", style="setlinewidth(3)", label=""];
+n15:e -> c25:p23:w [color="black", style="setlinewidth(3)", label=""];
+n16 [ shape=point ];
+c40:p24:e -> n16:w [color="black", style="setlinewidth(3)", label=""];
+n16:e -> c26:p22:w [color="black", style="setlinewidth(3)", label=""];
+n16:e -> c26:p23:w [color="black", style="setlinewidth(3)", label=""];
+c25:p24:e -> c41:p22:w [color="black", style="setlinewidth(3)", label=""];
+c26:p24:e -> c42:p22:w [color="black", style="setlinewidth(3)", label=""];
+n19:e -> c46:p43:w [color="black", label=""];
+c41:p24:e -> c31:p22:w [color="black", label=""];
+n20:e -> c30:p22:w [color="black", label=""];
+n20:e -> c39:p22:w [color="black", label=""];
+c46:p45:e -> n21:w [color="black", label=""];
+n21:e -> c34:p22:w [color="black", label=""];
+n21:e -> c40:p22:w [color="black", label=""];
+c42:p24:e -> c33:p22:w [color="black", label=""];
+c36:p24:e -> c32:p22:w [color="black", label=""];
+c37:p24:e -> c35:p22:w [color="black", label=""];
+c30:p24:e -> c27:p22:w [color="black", style="setlinewidth(3)", label=""];
+c31:p24:e -> c28:p22:w [color="black", style="setlinewidth(3)", label=""];
+c32:p24:e -> c29:p22:w [color="black", style="setlinewidth(3)", label=""];
+c33:p24:e -> c27:p23:w [color="black", style="setlinewidth(3)", label=""];
+}
diff --git a/figures/toggle-nan3-1.svg b/figures/toggle-nan3-1.svg
new file mode 100644 (file)
index 0000000..a1bc7a5
--- /dev/null
@@ -0,0 +1,430 @@
+<?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.40.1 (20161225.0304)
+ -->
+<!-- Title: toggle Pages: 1 -->
+<svg width="1550pt" height="303pt"
+ viewBox="0.00 0.00 1549.55 303.22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 299.223)">
+<title>toggle</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-299.223 1545.5521,-299.223 1545.5521,4 -4,4"/>
+<!-- n19 -->
+<g id="node1" class="node">
+<title>n19</title>
+<polygon fill="none" stroke="#000000" points="54,-86.2671 54,-101.1788 38.1838,-111.723 15.8162,-111.723 0,-101.1788 0,-86.2671 15.8162,-75.723 38.1838,-75.723 54,-86.2671"/>
+<text text-anchor="middle" x="27" y="-89.523" font-family="Times,serif" font-size="14.00" fill="#000000">clk</text>
+</g>
+<!-- c46 -->
+<g id="node22" class="node">
+<title>c46</title>
+<polygon fill="none" stroke="#000000" points="90,-60.723 90,-104.723 219.6895,-104.723 219.6895,-60.723 90,-60.723"/>
+<text text-anchor="middle" x="103.0552" y="-89.523" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
+<polyline fill="none" stroke="#000000" points="90,-82.723 116.1104,-82.723 "/>
+<text text-anchor="middle" x="103.0552" y="-67.523" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="116.1104,-60.723 116.1104,-104.723 "/>
+<text text-anchor="middle" x="154.8447" y="-85.523" font-family="Times,serif" font-size="14.00" fill="#000000">$52</text>
+<text text-anchor="middle" x="154.8447" y="-71.523" font-family="Times,serif" font-size="14.00" fill="#000000">$_DFF_P_</text>
+<polyline fill="none" stroke="#000000" points="193.5791,-60.723 193.5791,-104.723 "/>
+<text text-anchor="middle" x="206.6343" y="-78.523" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- n19&#45;&gt;c46 -->
+<g id="edge15" class="edge">
+<title>n19:e&#45;&gt;c46:w</title>
+<path fill="none" stroke="#000000" d="M54,-93.723C66,-93.723 71.25,-93.723 79.875,-93.723"/>
+<polygon fill="#000000" stroke="#000000" points="80,-97.2231 90,-93.723 80,-90.2231 80,-97.2231"/>
+</g>
+<!-- n20 -->
+<g id="node2" class="node">
+<title>n20</title>
+<polygon fill="none" stroke="#000000" points="309.6895,-206.2671 309.6895,-221.1788 293.8732,-231.723 271.5057,-231.723 255.6895,-221.1788 255.6895,-206.2671 271.5057,-195.723 293.8732,-195.723 309.6895,-206.2671"/>
+<text text-anchor="middle" x="282.6895" y="-209.523" font-family="Times,serif" font-size="14.00" fill="#000000">en</text>
+</g>
+<!-- c30 -->
+<g id="node9" class="node">
+<title>c30</title>
+<polygon fill="none" stroke="#000000" points="519.0585,-258.723 519.0585,-294.723 612.9413,-294.723 612.9413,-258.723 519.0585,-258.723"/>
+<text text-anchor="middle" x="532.1137" y="-272.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="545.1688,-258.723 545.1688,-294.723 "/>
+<text text-anchor="middle" x="565.9999" y="-279.523" font-family="Times,serif" font-size="14.00" fill="#000000">$71</text>
+<text text-anchor="middle" x="565.9999" y="-265.523" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="586.831,-258.723 586.831,-294.723 "/>
+<text text-anchor="middle" x="599.8861" y="-272.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n20&#45;&gt;c30 -->
+<g id="edge17" class="edge">
+<title>n20:e&#45;&gt;c30:w</title>
+<path fill="none" stroke="#000000" d="M309.6895,-213.723C329.426,-213.723 327.6514,-231.7129 345.6895,-239.723 414.4401,-270.2528 438.1103,-276.2163 508.7161,-276.6905"/>
+<polygon fill="#000000" stroke="#000000" points="508.9889,-280.1913 518.9999,-276.723 509.011,-273.1913 508.9889,-280.1913"/>
+</g>
+<!-- c39 -->
+<g id="node18" class="node">
+<title>c39</title>
+<polygon fill="none" stroke="#000000" points="345.6895,-139.723 345.6895,-175.723 439.5723,-175.723 439.5723,-139.723 345.6895,-139.723"/>
+<text text-anchor="middle" x="358.7446" y="-153.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="371.7998,-139.723 371.7998,-175.723 "/>
+<text text-anchor="middle" x="392.6309" y="-160.523" font-family="Times,serif" font-size="14.00" fill="#000000">$61</text>
+<text text-anchor="middle" x="392.6309" y="-146.523" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="413.4619,-139.723 413.4619,-175.723 "/>
+<text text-anchor="middle" x="426.5171" y="-153.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n20&#45;&gt;c39 -->
+<g id="edge18" class="edge">
+<title>n20:e&#45;&gt;c39:w</title>
+<path fill="none" stroke="#000000" d="M309.6895,-213.723C335.1167,-213.723 321.5762,-172.3656 336.0438,-160.7338"/>
+<polygon fill="#000000" stroke="#000000" points="337.1866,-164.0437 345.6895,-157.723 335.1008,-157.3616 337.1866,-164.0437"/>
+</g>
+<!-- n21 -->
+<g id="node3" class="node">
+<title>n21</title>
+<polygon fill="none" stroke="#000000" points="309.6895,-88.2671 309.6895,-103.1788 293.8732,-113.723 271.5057,-113.723 255.6895,-103.1788 255.6895,-88.2671 271.5057,-77.723 293.8732,-77.723 309.6895,-88.2671"/>
+<text text-anchor="middle" x="282.6895" y="-91.523" font-family="Times,serif" font-size="14.00" fill="#000000">out</text>
+</g>
+<!-- c34 -->
+<g id="node13" class="node">
+<title>c34</title>
+<polygon fill="none" stroke="#000000" points="519.0585,-77.723 519.0585,-113.723 612.9413,-113.723 612.9413,-77.723 519.0585,-77.723"/>
+<text text-anchor="middle" x="532.1137" y="-91.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="545.1688,-77.723 545.1688,-113.723 "/>
+<text text-anchor="middle" x="565.9999" y="-98.523" font-family="Times,serif" font-size="14.00" fill="#000000">$79</text>
+<text text-anchor="middle" x="565.9999" y="-84.523" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="586.831,-77.723 586.831,-113.723 "/>
+<text text-anchor="middle" x="599.8861" y="-91.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n21&#45;&gt;c34 -->
+<g id="edge20" class="edge">
+<title>n21:e&#45;&gt;c34:w</title>
+<path fill="none" stroke="#000000" d="M309.6895,-95.723C399.2642,-95.723 424.1509,-95.723 508.9245,-95.723"/>
+<polygon fill="#000000" stroke="#000000" points="508.9999,-99.2231 518.9999,-95.723 508.9999,-92.2231 508.9999,-99.2231"/>
+</g>
+<!-- c40 -->
+<g id="node19" class="node">
+<title>c40</title>
+<polygon fill="none" stroke="#000000" points="345.6895,-194.723 345.6895,-230.723 439.5723,-230.723 439.5723,-194.723 345.6895,-194.723"/>
+<text text-anchor="middle" x="358.7446" y="-208.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="371.7998,-194.723 371.7998,-230.723 "/>
+<text text-anchor="middle" x="392.6309" y="-215.523" font-family="Times,serif" font-size="14.00" fill="#000000">$66</text>
+<text text-anchor="middle" x="392.6309" y="-201.523" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="413.4619,-194.723 413.4619,-230.723 "/>
+<text text-anchor="middle" x="426.5171" y="-208.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n21&#45;&gt;c40 -->
+<g id="edge21" class="edge">
+<title>n21:e&#45;&gt;c40:w</title>
+<path fill="none" stroke="#000000" d="M309.6895,-95.723C360.0574,-95.723 301.3908,-196.0003 335.5739,-210.8852"/>
+<polygon fill="#000000" stroke="#000000" points="335.2248,-214.379 345.6895,-212.723 336.4762,-207.4917 335.2248,-214.379"/>
+</g>
+<!-- c25 -->
+<g id="node4" class="node">
+<title>c25</title>
+<polygon fill="none" stroke="#000000" points="515.1723,-132.723 515.1723,-176.723 616.8275,-176.723 616.8275,-132.723 515.1723,-132.723"/>
+<text text-anchor="middle" x="528.2274" y="-161.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="515.1723,-154.723 541.2826,-154.723 "/>
+<text text-anchor="middle" x="528.2274" y="-139.523" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="541.2826,-132.723 541.2826,-176.723 "/>
+<text text-anchor="middle" x="565.9999" y="-157.523" font-family="Times,serif" font-size="14.00" fill="#000000">$56</text>
+<text text-anchor="middle" x="565.9999" y="-143.523" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="590.7172,-132.723 590.7172,-176.723 "/>
+<text text-anchor="middle" x="603.7724" y="-150.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c41 -->
+<g id="node20" class="node">
+<title>c41</title>
+<polygon fill="none" stroke="#000000" points="652.8275,-134.723 652.8275,-170.723 746.7104,-170.723 746.7104,-134.723 652.8275,-134.723"/>
+<text text-anchor="middle" x="665.8827" y="-148.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="678.9379,-134.723 678.9379,-170.723 "/>
+<text text-anchor="middle" x="699.7689" y="-155.523" font-family="Times,serif" font-size="14.00" fill="#000000">$63</text>
+<text text-anchor="middle" x="699.7689" y="-141.523" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="720.6,-134.723 720.6,-170.723 "/>
+<text text-anchor="middle" x="733.6552" y="-148.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c25&#45;&gt;c41 -->
+<g id="edge13" class="edge">
+<title>c25:e&#45;&gt;c41:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M616.8275,-154.723C628.846,-154.723 634.0729,-153.598 642.6956,-153.0355"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="642.9402,-156.5297 652.8275,-152.723 642.7244,-149.533 642.9402,-156.5297"/>
+</g>
+<!-- c26 -->
+<g id="node5" class="node">
+<title>c26</title>
+<polygon fill="none" stroke="#000000" points="515.1723,-195.723 515.1723,-239.723 616.8275,-239.723 616.8275,-195.723 515.1723,-195.723"/>
+<text text-anchor="middle" x="528.2274" y="-224.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="515.1723,-217.723 541.2826,-217.723 "/>
+<text text-anchor="middle" x="528.2274" y="-202.523" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="541.2826,-195.723 541.2826,-239.723 "/>
+<text text-anchor="middle" x="565.9999" y="-220.523" font-family="Times,serif" font-size="14.00" fill="#000000">$57</text>
+<text text-anchor="middle" x="565.9999" y="-206.523" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="590.7172,-195.723 590.7172,-239.723 "/>
+<text text-anchor="middle" x="603.7724" y="-213.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c42 -->
+<g id="node21" class="node">
+<title>c42</title>
+<polygon fill="none" stroke="#000000" points="652.8275,-199.723 652.8275,-235.723 746.7104,-235.723 746.7104,-199.723 652.8275,-199.723"/>
+<text text-anchor="middle" x="665.8827" y="-213.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="678.9379,-199.723 678.9379,-235.723 "/>
+<text text-anchor="middle" x="699.7689" y="-220.523" font-family="Times,serif" font-size="14.00" fill="#000000">$68</text>
+<text text-anchor="middle" x="699.7689" y="-206.523" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="720.6,-199.723 720.6,-235.723 "/>
+<text text-anchor="middle" x="733.6552" y="-213.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c26&#45;&gt;c42 -->
+<g id="edge14" class="edge">
+<title>c26:e&#45;&gt;c42:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M616.8275,-217.723C628.8275,-217.723 634.0775,-217.723 642.7025,-217.723"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="642.8276,-221.2231 652.8275,-217.723 642.8275,-214.2231 642.8276,-221.2231"/>
+</g>
+<!-- c27 -->
+<g id="node6" class="node">
+<title>c27</title>
+<polygon fill="none" stroke="#000000" points="912.5932,-206.723 912.5932,-250.723 1014.2484,-250.723 1014.2484,-206.723 912.5932,-206.723"/>
+<text text-anchor="middle" x="925.6483" y="-235.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="912.5932,-228.723 938.7035,-228.723 "/>
+<text text-anchor="middle" x="925.6483" y="-213.523" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="938.7035,-206.723 938.7035,-250.723 "/>
+<text text-anchor="middle" x="963.4208" y="-231.523" font-family="Times,serif" font-size="14.00" fill="#000000">$58</text>
+<text text-anchor="middle" x="963.4208" y="-217.523" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="988.1381,-206.723 988.1381,-250.723 "/>
+<text text-anchor="middle" x="1001.1933" y="-224.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c36 -->
+<g id="node15" class="node">
+<title>c36</title>
+<polygon fill="none" stroke="#000000" points="1050.2484,-183.723 1050.2484,-219.723 1144.1313,-219.723 1144.1313,-183.723 1050.2484,-183.723"/>
+<text text-anchor="middle" x="1063.3036" y="-197.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1076.3588,-183.723 1076.3588,-219.723 "/>
+<text text-anchor="middle" x="1097.1898" y="-204.523" font-family="Times,serif" font-size="14.00" fill="#000000">$74</text>
+<text text-anchor="middle" x="1097.1898" y="-190.523" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1118.0209,-183.723 1118.0209,-219.723 "/>
+<text text-anchor="middle" x="1131.0761" y="-197.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c27&#45;&gt;c36 -->
+<g id="edge4" class="edge">
+<title>c27:e&#45;&gt;c36:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1014.2484,-228.723C1030.1859,-228.723 1030.8832,-211.5777 1040.6294,-204.6124"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1041.6781,-207.952 1050.2484,-201.723 1039.6643,-201.2479 1041.6781,-207.952"/>
+</g>
+<!-- c28 -->
+<g id="node7" class="node">
+<title>c28</title>
+<polygon fill="none" stroke="#000000" points="912.5932,-97.723 912.5932,-141.723 1014.2484,-141.723 1014.2484,-97.723 912.5932,-97.723"/>
+<text text-anchor="middle" x="925.6483" y="-126.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="912.5932,-119.723 938.7035,-119.723 "/>
+<text text-anchor="middle" x="925.6483" y="-104.523" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="938.7035,-97.723 938.7035,-141.723 "/>
+<text text-anchor="middle" x="963.4208" y="-122.523" font-family="Times,serif" font-size="14.00" fill="#000000">$59</text>
+<text text-anchor="middle" x="963.4208" y="-108.523" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="988.1381,-97.723 988.1381,-141.723 "/>
+<text text-anchor="middle" x="1001.1933" y="-115.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c37 -->
+<g id="node16" class="node">
+<title>c37</title>
+<polygon fill="none" stroke="#000000" points="1050.2484,-101.723 1050.2484,-137.723 1144.1313,-137.723 1144.1313,-101.723 1050.2484,-101.723"/>
+<text text-anchor="middle" x="1063.3036" y="-115.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1076.3588,-101.723 1076.3588,-137.723 "/>
+<text text-anchor="middle" x="1097.1898" y="-122.523" font-family="Times,serif" font-size="14.00" fill="#000000">$81</text>
+<text text-anchor="middle" x="1097.1898" y="-108.523" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1118.0209,-101.723 1118.0209,-137.723 "/>
+<text text-anchor="middle" x="1131.0761" y="-115.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c28&#45;&gt;c37 -->
+<g id="edge5" class="edge">
+<title>c28:e&#45;&gt;c37:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1014.2484,-119.723C1026.2484,-119.723 1031.4984,-119.723 1040.1234,-119.723"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1040.2485,-123.2231 1050.2484,-119.723 1040.2484,-116.2231 1040.2485,-123.2231"/>
+</g>
+<!-- c29 -->
+<g id="node8" class="node">
+<title>c29</title>
+<polygon fill="none" stroke="#000000" points="1310.0141,-108.723 1310.0141,-152.723 1411.6693,-152.723 1411.6693,-108.723 1310.0141,-108.723"/>
+<text text-anchor="middle" x="1323.0692" y="-137.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1310.0141,-130.723 1336.1244,-130.723 "/>
+<text text-anchor="middle" x="1323.0692" y="-115.523" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="1336.1244,-108.723 1336.1244,-152.723 "/>
+<text text-anchor="middle" x="1360.8417" y="-133.523" font-family="Times,serif" font-size="14.00" fill="#000000">$60</text>
+<text text-anchor="middle" x="1360.8417" y="-119.523" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="1385.559,-108.723 1385.559,-152.723 "/>
+<text text-anchor="middle" x="1398.6142" y="-126.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c38 -->
+<g id="node17" class="node">
+<title>c38</title>
+<polygon fill="none" stroke="#000000" points="1447.6693,-79.723 1447.6693,-115.723 1541.5521,-115.723 1541.5521,-79.723 1447.6693,-79.723"/>
+<text text-anchor="middle" x="1460.7245" y="-93.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1473.7797,-79.723 1473.7797,-115.723 "/>
+<text text-anchor="middle" x="1494.6107" y="-100.523" font-family="Times,serif" font-size="14.00" fill="#000000">$88</text>
+<text text-anchor="middle" x="1494.6107" y="-86.523" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1515.4418,-79.723 1515.4418,-115.723 "/>
+<text text-anchor="middle" x="1528.497" y="-93.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c29&#45;&gt;c38 -->
+<g id="edge6" class="edge">
+<title>c29:e&#45;&gt;c38:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1411.6693,-130.723C1429.1352,-130.723 1427.7482,-109.3547 1437.8496,-101.0078"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1439.2962,-104.2146 1447.6693,-97.723 1437.0755,-97.5762 1439.2962,-104.2146"/>
+</g>
+<!-- c30&#45;&gt;c27 -->
+<g id="edge25" class="edge">
+<title>c30:e&#45;&gt;c27:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M612.9999,-276.723C731.0126,-276.723 759.5672,-259.9521 876.5932,-244.723 888.6071,-243.1596 893.7637,-241.1288 902.406,-240.2111"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="902.7722,-243.6976 912.5932,-239.723 902.4371,-236.7057 902.7722,-243.6976"/>
+</g>
+<!-- c31 -->
+<g id="node10" class="node">
+<title>c31</title>
+<polygon fill="none" stroke="#000000" points="782.7104,-131.723 782.7104,-167.723 876.5932,-167.723 876.5932,-131.723 782.7104,-131.723"/>
+<text text-anchor="middle" x="795.7655" y="-145.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="808.8207,-131.723 808.8207,-167.723 "/>
+<text text-anchor="middle" x="829.6518" y="-152.523" font-family="Times,serif" font-size="14.00" fill="#000000">$78</text>
+<text text-anchor="middle" x="829.6518" y="-138.523" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="850.4828,-131.723 850.4828,-167.723 "/>
+<text text-anchor="middle" x="863.538" y="-145.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c31&#45;&gt;c28 -->
+<g id="edge26" class="edge">
+<title>c31:e&#45;&gt;c28:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M876.5932,-149.723C890.5859,-149.723 893.6465,-138.3571 902.6856,-133.2069"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="903.7445,-136.5498 912.5932,-130.723 902.0422,-129.76 903.7445,-136.5498"/>
+</g>
+<!-- c32 -->
+<g id="node11" class="node">
+<title>c32</title>
+<polygon fill="none" stroke="#000000" points="1180.1313,-170.723 1180.1313,-206.723 1274.0141,-206.723 1274.0141,-170.723 1180.1313,-170.723"/>
+<text text-anchor="middle" x="1193.1864" y="-184.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1206.2416,-170.723 1206.2416,-206.723 "/>
+<text text-anchor="middle" x="1227.0727" y="-191.523" font-family="Times,serif" font-size="14.00" fill="#000000">$85</text>
+<text text-anchor="middle" x="1227.0727" y="-177.523" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="1247.9037,-170.723 1247.9037,-206.723 "/>
+<text text-anchor="middle" x="1260.9589" y="-184.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c32&#45;&gt;c29 -->
+<g id="edge27" class="edge">
+<title>c32:e&#45;&gt;c29:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1274.0141,-188.723C1296.2152,-188.723 1287.8486,-155.263 1300.4973,-144.8068"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1301.58,-148.1352 1310.0141,-141.723 1299.4221,-141.4761 1301.58,-148.1352"/>
+</g>
+<!-- c33 -->
+<g id="node12" class="node">
+<title>c33</title>
+<polygon fill="none" stroke="#000000" points="782.7104,-199.723 782.7104,-235.723 876.5932,-235.723 876.5932,-199.723 782.7104,-199.723"/>
+<text text-anchor="middle" x="795.7655" y="-213.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="808.8207,-199.723 808.8207,-235.723 "/>
+<text text-anchor="middle" x="829.6518" y="-220.523" font-family="Times,serif" font-size="14.00" fill="#000000">$72</text>
+<text text-anchor="middle" x="829.6518" y="-206.523" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="850.4828,-199.723 850.4828,-235.723 "/>
+<text text-anchor="middle" x="863.538" y="-213.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c33&#45;&gt;c27 -->
+<g id="edge28" class="edge">
+<title>c33:e&#45;&gt;c27:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M876.5932,-217.723C888.5932,-217.723 893.8432,-217.723 902.4682,-217.723"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="902.5932,-221.2231 912.5932,-217.723 902.5931,-214.2231 902.5932,-221.2231"/>
+</g>
+<!-- c34&#45;&gt;c28 -->
+<g id="edge2" class="edge">
+<title>c34:e&#45;&gt;c28:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M612.9999,-95.723C742.7636,-95.723 777.5034,-108.0465 902.2561,-108.6963"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="902.5841,-112.1971 912.5932,-108.723 902.6023,-105.1971 902.5841,-112.1971"/>
+</g>
+<!-- c35 -->
+<g id="node14" class="node">
+<title>c35</title>
+<polygon fill="none" stroke="#000000" points="1180.1313,-101.723 1180.1313,-137.723 1274.0141,-137.723 1274.0141,-101.723 1180.1313,-101.723"/>
+<text text-anchor="middle" x="1193.1864" y="-115.523" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1206.2416,-101.723 1206.2416,-137.723 "/>
+<text text-anchor="middle" x="1227.0727" y="-122.523" font-family="Times,serif" font-size="14.00" fill="#000000">$86</text>
+<text text-anchor="middle" x="1227.0727" y="-108.523" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="1247.9037,-101.723 1247.9037,-137.723 "/>
+<text text-anchor="middle" x="1260.9589" y="-115.523" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c35&#45;&gt;c29 -->
+<g id="edge3" class="edge">
+<title>c35:e&#45;&gt;c29:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1274.0141,-119.723C1286.0141,-119.723 1291.2641,-119.723 1299.8891,-119.723"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1300.0141,-123.2231 1310.0141,-119.723 1300.014,-116.2231 1300.0141,-123.2231"/>
+</g>
+<!-- c36&#45;&gt;c32 -->
+<g id="edge23" class="edge">
+<title>c36:e&#45;&gt;c32:w</title>
+<path fill="none" stroke="#000000" d="M1144.1313,-201.723C1157.1555,-201.723 1161.3672,-194.1026 1170.2606,-190.5306"/>
+<polygon fill="#000000" stroke="#000000" points="1170.9253,-193.9671 1180.1313,-188.723 1169.6643,-187.0816 1170.9253,-193.9671"/>
+</g>
+<!-- c37&#45;&gt;c35 -->
+<g id="edge24" class="edge">
+<title>c37:e&#45;&gt;c35:w</title>
+<path fill="none" stroke="#000000" d="M1144.1313,-119.723C1156.1313,-119.723 1161.3813,-119.723 1170.0063,-119.723"/>
+<polygon fill="#000000" stroke="#000000" points="1170.1313,-123.2231 1180.1313,-119.723 1170.1312,-116.2231 1170.1313,-123.2231"/>
+</g>
+<!-- c38&#45;&gt;c46 -->
+<g id="edge1" class="edge">
+<title>c38:s&#45;&gt;c46:s</title>
+<path fill="none" stroke="#000000" d="M1528.6107,-79.723C1528.6107,55.0003 1361.7959,-48.723 1227.0727,-48.723 392.6309,-48.723 392.6309,-48.723 392.6309,-48.723 267.2514,-48.723 111.619,61.8754 103.2016,-50.6927"/>
+<polygon fill="#000000" stroke="#000000" points="99.7027,-50.6048 102.8447,-60.723 106.6982,-50.8538 99.7027,-50.6048"/>
+</g>
+<!-- n15 -->
+<g id="node23" class="node">
+<title>n15</title>
+<ellipse fill="#000000" stroke="#000000" cx="477.3723" cy="-157.723" rx="1.8" ry="1.8"/>
+</g>
+<!-- c39&#45;&gt;n15 -->
+<g id="edge7" class="edge">
+<title>c39:e&#45;&gt;n15:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M439.5723,-157.723C451.5723,-157.723 456.8223,-157.723 465.4473,-157.723"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="465.5723,-161.2231 475.5723,-157.723 465.5722,-154.2231 465.5723,-161.2231"/>
+</g>
+<!-- n16 -->
+<g id="node24" class="node">
+<title>n16</title>
+<ellipse fill="#000000" stroke="#000000" cx="477.3723" cy="-212.723" rx="1.8" ry="1.8"/>
+</g>
+<!-- c40&#45;&gt;n16 -->
+<g id="edge10" class="edge">
+<title>c40:e&#45;&gt;n16:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M439.5723,-212.723C451.5723,-212.723 456.8223,-212.723 465.4473,-212.723"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="465.5723,-216.2231 475.5723,-212.723 465.5722,-209.2231 465.5723,-216.2231"/>
+</g>
+<!-- c41&#45;&gt;c31 -->
+<g id="edge16" class="edge">
+<title>c41:e&#45;&gt;c31:w</title>
+<path fill="none" stroke="#000000" d="M746.7104,-152.723C758.7519,-152.723 763.95,-151.0355 772.5698,-150.1917"/>
+<polygon fill="#000000" stroke="#000000" points="772.8827,-153.6811 782.7104,-149.723 772.5594,-146.6886 772.8827,-153.6811"/>
+</g>
+<!-- c42&#45;&gt;c33 -->
+<g id="edge22" class="edge">
+<title>c42:e&#45;&gt;c33:w</title>
+<path fill="none" stroke="#000000" d="M746.7104,-217.723C758.7104,-217.723 763.9604,-217.723 772.5854,-217.723"/>
+<polygon fill="#000000" stroke="#000000" points="772.7104,-221.2231 782.7104,-217.723 772.7103,-214.2231 772.7104,-221.2231"/>
+</g>
+<!-- c46&#45;&gt;n21 -->
+<g id="edge19" class="edge">
+<title>c46:e&#45;&gt;n21:w</title>
+<path fill="none" stroke="#000000" d="M219.6895,-82.723C232.7137,-82.723 236.9254,-90.3433 245.8188,-93.9154"/>
+<polygon fill="#000000" stroke="#000000" points="245.2225,-97.3643 255.6895,-95.723 246.4835,-90.4788 245.2225,-97.3643"/>
+</g>
+<!-- n15&#45;&gt;c25 -->
+<g id="edge8" class="edge">
+<title>n15:e&#45;&gt;c25:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-157.723C491.593,-157.723 496.45,-162.3172 505.2071,-164.5425"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="504.8299,-168.0223 515.1723,-165.723 505.6534,-161.0709 504.8299,-168.0223"/>
+</g>
+<!-- n15&#45;&gt;c25 -->
+<g id="edge9" class="edge">
+<title>n15:e&#45;&gt;c25:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-157.723C492.316,-157.723 496.3728,-149.5164 505.257,-145.6696"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="506.0339,-149.084 515.1723,-143.723 504.6853,-142.2151 506.0339,-149.084"/>
+</g>
+<!-- n16&#45;&gt;c26 -->
+<g id="edge11" class="edge">
+<title>n16:e&#45;&gt;c26:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-212.723C492.5777,-212.723 496.2951,-222.1019 505.1592,-226.4982"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="504.6512,-229.9706 515.1723,-228.723 506.1695,-223.1373 504.6512,-229.9706"/>
+</g>
+<!-- n16&#45;&gt;c26 -->
+<g id="edge12" class="edge">
+<title>n16:e&#45;&gt;c26:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-212.723C491.3378,-212.723 496.3809,-209.348 504.9852,-207.6605"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="505.5351,-211.1247 515.1723,-206.723 504.8936,-204.1542 505.5351,-211.1247"/>
+</g>
+</g>
+</svg>
diff --git a/figures/toggle-nan3-2.dot b/figures/toggle-nan3-2.dot
new file mode 100644 (file)
index 0000000..6c11dec
--- /dev/null
@@ -0,0 +1,53 @@
+digraph "toggle" {
+label="toggle";
+rankdir="LR";
+remincross=true;
+n17 [ shape=octagon, label="clk", color="black", fontcolor="black" ];
+n18 [ shape=octagon, label="en", color="black", fontcolor="black" ];
+n19 [ shape=octagon, label="out", color="black", fontcolor="black" ];
+c23 [ shape=record, label="{{<p20> A|<p21> B}|$56\n$NaN|{<p22> Y}}" ];
+c24 [ shape=record, label="{{<p20> A|<p21> B}|$57\n$NaN|{<p22> Y}}" ];
+c25 [ shape=record, label="{{<p20> A|<p21> B}|$58\n$NaN|{<p22> Y}}" ];
+c26 [ shape=record, label="{{<p20> A|<p21> B}|$59\n$NaN|{<p22> Y}}" ];
+c27 [ shape=record, label="{{<p20> A|<p21> B}|$60\n$NaN|{<p22> Y}}" ];
+c28 [ shape=record, label="{{<p20> A}|$78\n$b2f|{<p22> Y}}" ];
+c29 [ shape=record, label="{{<p20> A}|$85\n$b2f|{<p22> Y}}" ];
+c30 [ shape=record, label="{{<p20> A}|$72\n$b2f|{<p22> Y}}" ];
+c31 [ shape=record, label="{{<p20> A}|$86\n$b2f|{<p22> Y}}" ];
+c32 [ shape=record, label="{{<p20> A}|$74\n$f2b|{<p22> Y}}" ];
+c33 [ shape=record, label="{{<p20> A}|$81\n$f2b|{<p22> Y}}" ];
+c34 [ shape=record, label="{{<p20> A}|$88\n$f2b|{<p22> Y}}" ];
+c35 [ shape=record, label="{{<p20> A}|$61\n$b2f|{<p22> Y}}" ];
+c36 [ shape=record, label="{{<p20> A}|$66\n$b2f|{<p22> Y}}" ];
+c37 [ shape=record, label="{{<p20> A}|$63\n$f2b|{<p22> Y}}" ];
+c38 [ shape=record, label="{{<p20> A}|$68\n$f2b|{<p22> Y}}" ];
+c42 [ shape=record, label="{{<p39> C|<p40> D}|$52\n$_DFF_P_|{<p41> Q}}" ];
+c34:p22:s -> c42:p40:s [color="black", label=""];
+n10 [ shape=point ];
+c36:p22:e -> n10:w [color="black", style="setlinewidth(3)", label=""];
+n10:e -> c24:p20:w [color="black", style="setlinewidth(3)", label=""];
+n10:e -> c24:p21:w [color="black", style="setlinewidth(3)", label=""];
+n10:e -> c26:p21:w [color="black", style="setlinewidth(3)", label=""];
+c31:p22:e -> c27:p21:w [color="black", style="setlinewidth(3)", label=""];
+c25:p22:e -> c32:p20:w [color="black", style="setlinewidth(3)", label=""];
+c26:p22:e -> c33:p20:w [color="black", style="setlinewidth(3)", label=""];
+c27:p22:e -> c34:p20:w [color="black", style="setlinewidth(3)", label=""];
+c23:p22:e -> c37:p20:w [color="black", style="setlinewidth(3)", label=""];
+c24:p22:e -> c38:p20:w [color="black", style="setlinewidth(3)", label=""];
+n17:e -> c42:p39:w [color="black", label=""];
+n18:e -> c35:p20:w [color="black", label=""];
+c42:p41:e -> n19:w [color="black", label=""];
+n19:e -> c36:p20:w [color="black", label=""];
+c37:p22:e -> c28:p20:w [color="black", label=""];
+c38:p22:e -> c30:p20:w [color="black", label=""];
+c32:p22:e -> c29:p20:w [color="black", label=""];
+c33:p22:e -> c31:p20:w [color="black", label=""];
+n6 [ shape=point ];
+c35:p22:e -> n6:w [color="black", style="setlinewidth(3)", label=""];
+n6:e -> c23:p20:w [color="black", style="setlinewidth(3)", label=""];
+n6:e -> c23:p21:w [color="black", style="setlinewidth(3)", label=""];
+n6:e -> c25:p20:w [color="black", style="setlinewidth(3)", label=""];
+c28:p22:e -> c26:p20:w [color="black", style="setlinewidth(3)", label=""];
+c29:p22:e -> c27:p20:w [color="black", style="setlinewidth(3)", label=""];
+c30:p22:e -> c25:p21:w [color="black", style="setlinewidth(3)", label=""];
+}
diff --git a/figures/toggle-nan3-2.svg b/figures/toggle-nan3-2.svg
new file mode 100644 (file)
index 0000000..1b87978
--- /dev/null
@@ -0,0 +1,397 @@
+<?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.40.1 (20161225.0304)
+ -->
+<!-- Title: toggle Pages: 1 -->
+<svg width="1550pt" height="284pt"
+ viewBox="0.00 0.00 1549.55 284.44" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 280.4408)">
+<title>toggle</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-280.4408 1545.5521,-280.4408 1545.5521,4 -4,4"/>
+<text text-anchor="middle" x="770.7761" y="-6.8" font-family="Times,serif" font-size="14.00" fill="#000000">toggle</text>
+<!-- n17 -->
+<g id="node1" class="node">
+<title>n17</title>
+<polygon fill="none" stroke="#000000" points="54,-135.4849 54,-150.3966 38.1838,-160.9408 15.8162,-160.9408 0,-150.3966 0,-135.4849 15.8162,-124.9408 38.1838,-124.9408 54,-135.4849"/>
+<text text-anchor="middle" x="27" y="-138.7408" font-family="Times,serif" font-size="14.00" fill="#000000">clk</text>
+</g>
+<!-- c42 -->
+<g id="node20" class="node">
+<title>c42</title>
+<polygon fill="none" stroke="#000000" points="90,-109.9408 90,-153.9408 219.6895,-153.9408 219.6895,-109.9408 90,-109.9408"/>
+<text text-anchor="middle" x="103.0552" y="-138.7408" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
+<polyline fill="none" stroke="#000000" points="90,-131.9408 116.1104,-131.9408 "/>
+<text text-anchor="middle" x="103.0552" y="-116.7408" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="116.1104,-109.9408 116.1104,-153.9408 "/>
+<text text-anchor="middle" x="154.8447" y="-134.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$52</text>
+<text text-anchor="middle" x="154.8447" y="-120.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$_DFF_P_</text>
+<polyline fill="none" stroke="#000000" points="193.5791,-109.9408 193.5791,-153.9408 "/>
+<text text-anchor="middle" x="206.6343" y="-127.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- n17&#45;&gt;c42 -->
+<g id="edge12" class="edge">
+<title>n17:e&#45;&gt;c42:w</title>
+<path fill="none" stroke="#000000" d="M54,-142.9408C66,-142.9408 71.25,-142.9408 79.875,-142.9408"/>
+<polygon fill="#000000" stroke="#000000" points="80,-146.4409 90,-142.9408 80,-139.4409 80,-146.4409"/>
+</g>
+<!-- n18 -->
+<g id="node2" class="node">
+<title>n18</title>
+<polygon fill="none" stroke="#000000" points="309.6895,-117.4849 309.6895,-132.3966 293.8732,-142.9408 271.5057,-142.9408 255.6895,-132.3966 255.6895,-117.4849 271.5057,-106.9408 293.8732,-106.9408 309.6895,-117.4849"/>
+<text text-anchor="middle" x="282.6895" y="-120.7408" font-family="Times,serif" font-size="14.00" fill="#000000">en</text>
+</g>
+<!-- c35 -->
+<g id="node16" class="node">
+<title>c35</title>
+<polygon fill="none" stroke="#000000" points="345.6895,-106.9408 345.6895,-142.9408 439.5723,-142.9408 439.5723,-106.9408 345.6895,-106.9408"/>
+<text text-anchor="middle" x="358.7446" y="-120.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="371.7998,-106.9408 371.7998,-142.9408 "/>
+<text text-anchor="middle" x="392.6309" y="-127.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$61</text>
+<text text-anchor="middle" x="392.6309" y="-113.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="413.4619,-106.9408 413.4619,-142.9408 "/>
+<text text-anchor="middle" x="426.5171" y="-120.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n18&#45;&gt;c35 -->
+<g id="edge13" class="edge">
+<title>n18:e&#45;&gt;c35:w</title>
+<path fill="none" stroke="#000000" d="M309.6895,-124.9408C321.6895,-124.9408 326.9395,-124.9408 335.5645,-124.9408"/>
+<polygon fill="#000000" stroke="#000000" points="335.6895,-128.4409 345.6895,-124.9408 335.6894,-121.4409 335.6895,-128.4409"/>
+</g>
+<!-- n19 -->
+<g id="node3" class="node">
+<title>n19</title>
+<polygon fill="none" stroke="#000000" points="309.6895,-171.4849 309.6895,-186.3966 293.8732,-196.9408 271.5057,-196.9408 255.6895,-186.3966 255.6895,-171.4849 271.5057,-160.9408 293.8732,-160.9408 309.6895,-171.4849"/>
+<text text-anchor="middle" x="282.6895" y="-174.7408" font-family="Times,serif" font-size="14.00" fill="#000000">out</text>
+</g>
+<!-- c36 -->
+<g id="node17" class="node">
+<title>c36</title>
+<polygon fill="none" stroke="#000000" points="345.6895,-192.9408 345.6895,-228.9408 439.5723,-228.9408 439.5723,-192.9408 345.6895,-192.9408"/>
+<text text-anchor="middle" x="358.7446" y="-206.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="371.7998,-192.9408 371.7998,-228.9408 "/>
+<text text-anchor="middle" x="392.6309" y="-213.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$66</text>
+<text text-anchor="middle" x="392.6309" y="-199.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="413.4619,-192.9408 413.4619,-228.9408 "/>
+<text text-anchor="middle" x="426.5171" y="-206.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n19&#45;&gt;c36 -->
+<g id="edge15" class="edge">
+<title>n19:e&#45;&gt;c36:w</title>
+<path fill="none" stroke="#000000" d="M309.6895,-178.9408C326.9156,-178.9408 325.8675,-199.6615 335.9553,-207.7555"/>
+<polygon fill="#000000" stroke="#000000" points="335.0968,-211.1572 345.6895,-210.9408 337.2739,-204.5043 335.0968,-211.1572"/>
+</g>
+<!-- c23 -->
+<g id="node4" class="node">
+<title>c23</title>
+<polygon fill="none" stroke="#000000" points="515.1723,-91.9408 515.1723,-135.9408 616.8275,-135.9408 616.8275,-91.9408 515.1723,-91.9408"/>
+<text text-anchor="middle" x="528.2274" y="-120.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="515.1723,-113.9408 541.2826,-113.9408 "/>
+<text text-anchor="middle" x="528.2274" y="-98.7408" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="541.2826,-91.9408 541.2826,-135.9408 "/>
+<text text-anchor="middle" x="565.9999" y="-116.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$56</text>
+<text text-anchor="middle" x="565.9999" y="-102.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="590.7172,-91.9408 590.7172,-135.9408 "/>
+<text text-anchor="middle" x="603.7724" y="-109.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c37 -->
+<g id="node18" class="node">
+<title>c37</title>
+<polygon fill="none" stroke="#000000" points="652.8275,-137.9408 652.8275,-173.9408 746.7104,-173.9408 746.7104,-137.9408 652.8275,-137.9408"/>
+<text text-anchor="middle" x="665.8827" y="-151.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="678.9379,-137.9408 678.9379,-173.9408 "/>
+<text text-anchor="middle" x="699.7689" y="-158.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$63</text>
+<text text-anchor="middle" x="699.7689" y="-144.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="720.6,-137.9408 720.6,-173.9408 "/>
+<text text-anchor="middle" x="733.6552" y="-151.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c23&#45;&gt;c37 -->
+<g id="edge10" class="edge">
+<title>c23:e&#45;&gt;c37:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M616.8275,-113.9408C637.1874,-113.9408 631.6542,-142.744 643.1133,-152.6451"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="642.2332,-156.0424 652.8275,-155.9408 644.4822,-149.4135 642.2332,-156.0424"/>
+</g>
+<!-- c24 -->
+<g id="node5" class="node">
+<title>c24</title>
+<polygon fill="none" stroke="#000000" points="515.1723,-231.9408 515.1723,-275.9408 616.8275,-275.9408 616.8275,-231.9408 515.1723,-231.9408"/>
+<text text-anchor="middle" x="528.2274" y="-260.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="515.1723,-253.9408 541.2826,-253.9408 "/>
+<text text-anchor="middle" x="528.2274" y="-238.7408" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="541.2826,-231.9408 541.2826,-275.9408 "/>
+<text text-anchor="middle" x="565.9999" y="-256.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$57</text>
+<text text-anchor="middle" x="565.9999" y="-242.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="590.7172,-231.9408 590.7172,-275.9408 "/>
+<text text-anchor="middle" x="603.7724" y="-249.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c38 -->
+<g id="node19" class="node">
+<title>c38</title>
+<polygon fill="none" stroke="#000000" points="652.8275,-233.9408 652.8275,-269.9408 746.7104,-269.9408 746.7104,-233.9408 652.8275,-233.9408"/>
+<text text-anchor="middle" x="665.8827" y="-247.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="678.9379,-233.9408 678.9379,-269.9408 "/>
+<text text-anchor="middle" x="699.7689" y="-254.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$68</text>
+<text text-anchor="middle" x="699.7689" y="-240.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="720.6,-233.9408 720.6,-269.9408 "/>
+<text text-anchor="middle" x="733.6552" y="-247.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c24&#45;&gt;c38 -->
+<g id="edge11" class="edge">
+<title>c24:e&#45;&gt;c38:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M616.8275,-253.9408C628.846,-253.9408 634.0729,-252.8158 642.6956,-252.2533"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="642.9402,-255.7475 652.8275,-251.9408 642.7244,-248.7508 642.9402,-255.7475"/>
+</g>
+<!-- c25 -->
+<g id="node6" class="node">
+<title>c25</title>
+<polygon fill="none" stroke="#000000" points="912.5932,-169.9408 912.5932,-213.9408 1014.2484,-213.9408 1014.2484,-169.9408 912.5932,-169.9408"/>
+<text text-anchor="middle" x="925.6483" y="-198.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="912.5932,-191.9408 938.7035,-191.9408 "/>
+<text text-anchor="middle" x="925.6483" y="-176.7408" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="938.7035,-169.9408 938.7035,-213.9408 "/>
+<text text-anchor="middle" x="963.4208" y="-194.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$58</text>
+<text text-anchor="middle" x="963.4208" y="-180.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="988.1381,-169.9408 988.1381,-213.9408 "/>
+<text text-anchor="middle" x="1001.1933" y="-187.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c32 -->
+<g id="node13" class="node">
+<title>c32</title>
+<polygon fill="none" stroke="#000000" points="1050.2484,-166.9408 1050.2484,-202.9408 1144.1313,-202.9408 1144.1313,-166.9408 1050.2484,-166.9408"/>
+<text text-anchor="middle" x="1063.3036" y="-180.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1076.3588,-166.9408 1076.3588,-202.9408 "/>
+<text text-anchor="middle" x="1097.1898" y="-187.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$74</text>
+<text text-anchor="middle" x="1097.1898" y="-173.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1118.0209,-166.9408 1118.0209,-202.9408 "/>
+<text text-anchor="middle" x="1131.0761" y="-180.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c25&#45;&gt;c32 -->
+<g id="edge7" class="edge">
+<title>c25:e&#45;&gt;c32:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1014.2484,-191.9408C1026.4732,-191.9408 1031.4423,-188.0033 1040.0392,-186.0345"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1040.6782,-189.4862 1050.2484,-184.9408 1039.9325,-182.526 1040.6782,-189.4862"/>
+</g>
+<!-- c26 -->
+<g id="node7" class="node">
+<title>c26</title>
+<polygon fill="none" stroke="#000000" points="912.5932,-101.9408 912.5932,-145.9408 1014.2484,-145.9408 1014.2484,-101.9408 912.5932,-101.9408"/>
+<text text-anchor="middle" x="925.6483" y="-130.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="912.5932,-123.9408 938.7035,-123.9408 "/>
+<text text-anchor="middle" x="925.6483" y="-108.7408" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="938.7035,-101.9408 938.7035,-145.9408 "/>
+<text text-anchor="middle" x="963.4208" y="-126.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$59</text>
+<text text-anchor="middle" x="963.4208" y="-112.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="988.1381,-101.9408 988.1381,-145.9408 "/>
+<text text-anchor="middle" x="1001.1933" y="-119.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c33 -->
+<g id="node14" class="node">
+<title>c33</title>
+<polygon fill="none" stroke="#000000" points="1050.2484,-105.9408 1050.2484,-141.9408 1144.1313,-141.9408 1144.1313,-105.9408 1050.2484,-105.9408"/>
+<text text-anchor="middle" x="1063.3036" y="-119.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1076.3588,-105.9408 1076.3588,-141.9408 "/>
+<text text-anchor="middle" x="1097.1898" y="-126.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$81</text>
+<text text-anchor="middle" x="1097.1898" y="-112.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1118.0209,-105.9408 1118.0209,-141.9408 "/>
+<text text-anchor="middle" x="1131.0761" y="-119.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c26&#45;&gt;c33 -->
+<g id="edge8" class="edge">
+<title>c26:e&#45;&gt;c33:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1014.2484,-123.9408C1026.2484,-123.9408 1031.4984,-123.9408 1040.1234,-123.9408"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1040.2485,-127.4409 1050.2484,-123.9408 1040.2484,-120.4409 1040.2485,-127.4409"/>
+</g>
+<!-- c27 -->
+<g id="node8" class="node">
+<title>c27</title>
+<polygon fill="none" stroke="#000000" points="1310.0141,-112.9408 1310.0141,-156.9408 1411.6693,-156.9408 1411.6693,-112.9408 1310.0141,-112.9408"/>
+<text text-anchor="middle" x="1323.0692" y="-141.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1310.0141,-134.9408 1336.1244,-134.9408 "/>
+<text text-anchor="middle" x="1323.0692" y="-119.7408" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="1336.1244,-112.9408 1336.1244,-156.9408 "/>
+<text text-anchor="middle" x="1360.8417" y="-137.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$60</text>
+<text text-anchor="middle" x="1360.8417" y="-123.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="1385.559,-112.9408 1385.559,-156.9408 "/>
+<text text-anchor="middle" x="1398.6142" y="-130.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c34 -->
+<g id="node15" class="node">
+<title>c34</title>
+<polygon fill="none" stroke="#000000" points="1447.6693,-89.9408 1447.6693,-125.9408 1541.5521,-125.9408 1541.5521,-89.9408 1447.6693,-89.9408"/>
+<text text-anchor="middle" x="1460.7245" y="-103.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1473.7797,-89.9408 1473.7797,-125.9408 "/>
+<text text-anchor="middle" x="1494.6107" y="-110.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$88</text>
+<text text-anchor="middle" x="1494.6107" y="-96.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1515.4418,-89.9408 1515.4418,-125.9408 "/>
+<text text-anchor="middle" x="1528.497" y="-103.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c27&#45;&gt;c34 -->
+<g id="edge9" class="edge">
+<title>c27:e&#45;&gt;c34:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1411.6693,-134.9408C1427.6068,-134.9408 1428.3041,-117.7955 1438.0503,-110.8303"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1439.099,-114.1698 1447.6693,-107.9408 1437.0852,-107.4657 1439.099,-114.1698"/>
+</g>
+<!-- c28 -->
+<g id="node9" class="node">
+<title>c28</title>
+<polygon fill="none" stroke="#000000" points="782.7104,-137.9408 782.7104,-173.9408 876.5932,-173.9408 876.5932,-137.9408 782.7104,-137.9408"/>
+<text text-anchor="middle" x="795.7655" y="-151.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="808.8207,-137.9408 808.8207,-173.9408 "/>
+<text text-anchor="middle" x="829.6518" y="-158.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$78</text>
+<text text-anchor="middle" x="829.6518" y="-144.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="850.4828,-137.9408 850.4828,-173.9408 "/>
+<text text-anchor="middle" x="863.538" y="-151.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c28&#45;&gt;c26 -->
+<g id="edge24" class="edge">
+<title>c28:e&#45;&gt;c26:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M876.5932,-155.9408C891.0645,-155.9408 893.5913,-143.1234 902.8369,-137.5158"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="903.8175,-140.8769 912.5932,-134.9408 902.0311,-134.1087 903.8175,-140.8769"/>
+</g>
+<!-- c29 -->
+<g id="node10" class="node">
+<title>c29</title>
+<polygon fill="none" stroke="#000000" points="1180.1313,-163.9408 1180.1313,-199.9408 1274.0141,-199.9408 1274.0141,-163.9408 1180.1313,-163.9408"/>
+<text text-anchor="middle" x="1193.1864" y="-177.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1206.2416,-163.9408 1206.2416,-199.9408 "/>
+<text text-anchor="middle" x="1227.0727" y="-184.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$85</text>
+<text text-anchor="middle" x="1227.0727" y="-170.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="1247.9037,-163.9408 1247.9037,-199.9408 "/>
+<text text-anchor="middle" x="1260.9589" y="-177.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c29&#45;&gt;c27 -->
+<g id="edge25" class="edge">
+<title>c29:e&#45;&gt;c27:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1274.0141,-181.9408C1292.3988,-181.9408 1289.7363,-158.1752 1300.2284,-149.2631"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1301.6701,-152.4699 1310.0141,-145.9408 1299.4197,-145.8415 1301.6701,-152.4699"/>
+</g>
+<!-- c30 -->
+<g id="node11" class="node">
+<title>c30</title>
+<polygon fill="none" stroke="#000000" points="782.7104,-232.9408 782.7104,-268.9408 876.5932,-268.9408 876.5932,-232.9408 782.7104,-232.9408"/>
+<text text-anchor="middle" x="795.7655" y="-246.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="808.8207,-232.9408 808.8207,-268.9408 "/>
+<text text-anchor="middle" x="829.6518" y="-253.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$72</text>
+<text text-anchor="middle" x="829.6518" y="-239.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="850.4828,-232.9408 850.4828,-268.9408 "/>
+<text text-anchor="middle" x="863.538" y="-246.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c30&#45;&gt;c25 -->
+<g id="edge26" class="edge">
+<title>c30:e&#45;&gt;c25:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M876.5932,-250.9408C907.4777,-250.9408 884.6233,-196.3857 902.9128,-183.5994"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="903.8772,-186.9642 912.5932,-180.9408 902.0233,-180.2142 903.8772,-186.9642"/>
+</g>
+<!-- c31 -->
+<g id="node12" class="node">
+<title>c31</title>
+<polygon fill="none" stroke="#000000" points="1180.1313,-105.9408 1180.1313,-141.9408 1274.0141,-141.9408 1274.0141,-105.9408 1180.1313,-105.9408"/>
+<text text-anchor="middle" x="1193.1864" y="-119.7408" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1206.2416,-105.9408 1206.2416,-141.9408 "/>
+<text text-anchor="middle" x="1227.0727" y="-126.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$86</text>
+<text text-anchor="middle" x="1227.0727" y="-112.7408" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="1247.9037,-105.9408 1247.9037,-141.9408 "/>
+<text text-anchor="middle" x="1260.9589" y="-119.7408" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c31&#45;&gt;c27 -->
+<g id="edge6" class="edge">
+<title>c31:e&#45;&gt;c27:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1274.0141,-123.9408C1286.0141,-123.9408 1291.2641,-123.9408 1299.8891,-123.9408"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1300.0141,-127.4409 1310.0141,-123.9408 1300.014,-120.4409 1300.0141,-127.4409"/>
+</g>
+<!-- c32&#45;&gt;c29 -->
+<g id="edge18" class="edge">
+<title>c32:e&#45;&gt;c29:w</title>
+<path fill="none" stroke="#000000" d="M1144.1313,-184.9408C1156.1728,-184.9408 1161.3709,-183.2533 1169.9907,-182.4095"/>
+<polygon fill="#000000" stroke="#000000" points="1170.3036,-185.8989 1180.1313,-181.9408 1169.9803,-178.9064 1170.3036,-185.8989"/>
+</g>
+<!-- c33&#45;&gt;c31 -->
+<g id="edge19" class="edge">
+<title>c33:e&#45;&gt;c31:w</title>
+<path fill="none" stroke="#000000" d="M1144.1313,-123.9408C1156.1313,-123.9408 1161.3813,-123.9408 1170.0063,-123.9408"/>
+<polygon fill="#000000" stroke="#000000" points="1170.1313,-127.4409 1180.1313,-123.9408 1170.1312,-120.4409 1170.1313,-127.4409"/>
+</g>
+<!-- c34&#45;&gt;c42 -->
+<g id="edge1" class="edge">
+<title>c34:s&#45;&gt;c42:s</title>
+<path fill="none" stroke="#000000" d="M1528.6107,-89.9408C1528.6107,44.6123 1361.6258,-62.9408 1227.0727,-62.9408 392.6309,-62.9408 392.6309,-62.9408 392.6309,-62.9408 265.7218,-62.9408 111.5354,16.0333 103.1982,-99.7114"/>
+<polygon fill="#000000" stroke="#000000" points="99.6923,-99.8258 102.8447,-109.9408 106.6881,-100.0677 99.6923,-99.8258"/>
+</g>
+<!-- n6 -->
+<g id="node22" class="node">
+<title>n6</title>
+<ellipse fill="#000000" stroke="#000000" cx="477.3723" cy="-124.9408" rx="1.8" ry="1.8"/>
+</g>
+<!-- c35&#45;&gt;n6 -->
+<g id="edge20" class="edge">
+<title>c35:e&#45;&gt;n6:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M439.5723,-124.9408C451.5723,-124.9408 456.8223,-124.9408 465.4473,-124.9408"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="465.5723,-128.4409 475.5723,-124.9408 465.5722,-121.4409 465.5723,-128.4409"/>
+</g>
+<!-- n10 -->
+<g id="node21" class="node">
+<title>n10</title>
+<ellipse fill="#000000" stroke="#000000" cx="477.3723" cy="-226.9408" rx="1.8" ry="1.8"/>
+</g>
+<!-- c36&#45;&gt;n10 -->
+<g id="edge2" class="edge">
+<title>c36:e&#45;&gt;n10:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M439.5723,-210.9408C452.9777,-210.9408 456.6951,-220.3197 465.5592,-224.7161"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="465.0512,-228.1884 475.5723,-226.9408 466.5695,-221.3551 465.0512,-228.1884"/>
+</g>
+<!-- c37&#45;&gt;c28 -->
+<g id="edge16" class="edge">
+<title>c37:e&#45;&gt;c28:w</title>
+<path fill="none" stroke="#000000" d="M746.7104,-155.9408C758.7104,-155.9408 763.9604,-155.9408 772.5854,-155.9408"/>
+<polygon fill="#000000" stroke="#000000" points="772.7104,-159.4409 782.7104,-155.9408 772.7103,-152.4409 772.7104,-159.4409"/>
+</g>
+<!-- c38&#45;&gt;c30 -->
+<g id="edge17" class="edge">
+<title>c38:e&#45;&gt;c30:w</title>
+<path fill="none" stroke="#000000" d="M746.7104,-251.9408C758.715,-251.9408 763.9592,-251.3783 772.5836,-251.097"/>
+<polygon fill="#000000" stroke="#000000" points="772.7656,-254.5947 782.7104,-250.9408 772.6575,-247.5956 772.7656,-254.5947"/>
+</g>
+<!-- c42&#45;&gt;n19 -->
+<g id="edge14" class="edge">
+<title>c42:e&#45;&gt;n19:w</title>
+<path fill="none" stroke="#000000" d="M219.6895,-131.9408C241.8906,-131.9408 233.524,-165.4007 246.1727,-175.857"/>
+<polygon fill="#000000" stroke="#000000" points="245.0975,-179.1877 255.6895,-178.9408 247.2554,-172.5286 245.0975,-179.1877"/>
+</g>
+<!-- n10&#45;&gt;c24 -->
+<g id="edge3" class="edge">
+<title>n10:e&#45;&gt;c24:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-226.9408C498.2564,-226.9408 494.6005,-252.5115 505.5125,-261.7009"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="504.5783,-265.0792 515.1723,-264.9408 506.8043,-258.4425 504.5783,-265.0792"/>
+</g>
+<!-- n10&#45;&gt;c24 -->
+<g id="edge4" class="edge">
+<title>n10:e&#45;&gt;c24:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-226.9408C492.5777,-226.9408 496.2951,-236.3197 505.1592,-240.7161"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="504.6512,-244.1884 515.1723,-242.9408 506.1695,-237.3551 504.6512,-244.1884"/>
+</g>
+<!-- n10&#45;&gt;c26 -->
+<g id="edge5" class="edge">
+<title>n10:e&#45;&gt;c26:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-226.9408C523.5929,-226.9408 610.2353,-140.554 652.8275,-127.9408 760.3544,-96.0979 794.8658,-111.9073 902.3125,-112.8936"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="902.5772,-116.3948 912.5932,-112.9408 902.6094,-109.3949 902.5772,-116.3948"/>
+</g>
+<!-- n6&#45;&gt;c23 -->
+<g id="edge21" class="edge">
+<title>n6:e&#45;&gt;c23:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-124.9408C491.1723,-124.9408 496.4223,-124.9408 505.0473,-124.9408"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="505.1723,-128.4409 515.1723,-124.9408 505.1722,-121.4409 505.1723,-128.4409"/>
+</g>
+<!-- n6&#45;&gt;c23 -->
+<g id="edge22" class="edge">
+<title>n6:e&#45;&gt;c23:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-124.9408C493.8216,-124.9408 496.1092,-111.5131 505.3503,-105.6384"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="506.4563,-108.9643 515.1723,-102.9408 504.6024,-102.2143 506.4563,-108.9643"/>
+</g>
+<!-- n6&#45;&gt;c25 -->
+<g id="edge23" class="edge">
+<title>n6:e&#45;&gt;c25:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M479.1723,-124.9408C497.6955,-124.9408 498.1019,-138.7495 515.1723,-145.9408 573.6624,-170.5811 590.2867,-173.1293 652.8275,-183.9408 763.4423,-203.0628 794.9436,-202.9656 902.3111,-202.9422"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="902.5937,-206.4422 912.5932,-202.9408 902.5927,-199.4422 902.5937,-206.4422"/>
+</g>
+</g>
+</svg>
diff --git a/figures/toggle-nan3-3.dot b/figures/toggle-nan3-3.dot
new file mode 100644 (file)
index 0000000..548e590
--- /dev/null
@@ -0,0 +1,83 @@
+digraph "toggle" {
+rankdir="LR";
+remincross=true;
+n7;
+{rank=same; n19; x0; x2; x4};
+{rank=same; c35; c36; c37};
+n19 [ shape=octagon, label="clk", color="black", fontcolor="black" ];
+n20 [ shape=octagon, label="en", color="black", fontcolor="black" ];
+n21 [ shape=octagon, label="out", color="black", fontcolor="black" ];
+c25 [ shape=record, label="{{<p22> A|<p23> B}|$56\n$NaN|{<p24> Y}}" ];
+c26 [ shape=record, label="{{<p22> A|<p23> B}|$57\n$NaN|{<p24> Y}}" ];
+c27 [ shape=record, label="{{<p22> A|<p23> B}|$58\n$NaN|{<p24> Y}}" ];
+c28 [ shape=record, label="{{<p22> A|<p23> B}|$59\n$NaN|{<p24> Y}}" ];
+c29 [ shape=record, label="{{<p22> A|<p23> B}|$60\n$NaN|{<p24> Y}}" ];
+c30 [ shape=record, label="{{<p22> A}|$92\n$f2b|{<p24> Y}}" ];
+c31 [ shape=record, label="{{<p22> A}|$94\n$b2f|{<p24> Y}}" ];
+c35 [ shape=record, label="{{<p32> C|<p33> D}|$96\n$_DFF_P_|{<p34> Q}}" ];
+x0 [ shape=record, style=rounded, label="<s0> 0:0 - 0:0 " ];
+x0:e -> c35:p33:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x1 [ shape=record, style=rounded, label="<s0> 0:0 - 0:0 " ];
+c35:p34:e -> x1:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c36 [ shape=record, label="{{<p32> C|<p33> D}|$97\n$_DFF_P_|{<p34> Q}}" ];
+x2 [ shape=record, style=rounded, label="<s0> 1:1 - 0:0 " ];
+x2:e -> c36:p33:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x3 [ shape=record, style=rounded, label="<s0> 0:0 - 1:1 " ];
+c36:p34:e -> x3:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c37 [ shape=record, label="{{<p32> C|<p33> D}|$98\n$_DFF_P_|{<p34> Q}}" ];
+x4 [ shape=record, style=rounded, label="<s0> 2:2 - 0:0 " ];
+x4:e -> c37:p33:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x5 [ shape=record, style=rounded, label="<s0> 0:0 - 2:2 " ];
+c37:p34:e -> x5:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c38 [ shape=record, label="{{<p22> A}|$78\n$b2f|{<p24> Y}}" ];
+c39 [ shape=record, label="{{<p22> A}|$85\n$b2f|{<p24> Y}}" ];
+c40 [ shape=record, label="{{<p22> A}|$72\n$b2f|{<p24> Y}}" ];
+c41 [ shape=record, label="{{<p22> A}|$86\n$b2f|{<p24> Y}}" ];
+c42 [ shape=record, label="{{<p22> A}|$74\n$f2b|{<p24> Y}}" ];
+c43 [ shape=record, label="{{<p22> A}|$81\n$f2b|{<p24> Y}}" ];
+c44 [ shape=record, label="{{<p22> A}|$88\n$f2b|{<p24> Y}}" ];
+c45 [ shape=record, label="{{<p22> A}|$61\n$b2f|{<p24> Y}}" ];
+c46 [ shape=record, label="{{<p22> A}|$66\n$b2f|{<p24> Y}}" ];
+c47 [ shape=record, label="{{<p22> A}|$63\n$f2b|{<p24> Y}}" ];
+c48 [ shape=record, label="{{<p22> A}|$68\n$f2b|{<p24> Y}}" ];
+c44:p24:e -> c31:p22:w [color="black", label=""];
+c39:p24:e -> c29:p22:w [color="black", style="setlinewidth(3)", label=""];
+c40:p24:e -> c27:p23:w [color="black", style="setlinewidth(3)", label=""];
+n12 [ shape=point ];
+c46:p24:e -> n12:w [color="black", style="setlinewidth(3)", label=""];
+n12:e -> c26:p22:w [color="black", style="setlinewidth(3)", label=""];
+n12:e -> c26:p23:w [color="black", style="setlinewidth(3)", label=""];
+n12:e -> c28:p23:w [color="black", style="setlinewidth(3)", label=""];
+c41:p24:e -> c29:p23:w [color="black", style="setlinewidth(3)", label=""];
+c27:p24:e -> c42:p22:w [color="black", style="setlinewidth(3)", label=""];
+c28:p24:e -> c43:p22:w [color="black", style="setlinewidth(3)", label=""];
+c29:p24:e -> c44:p22:w [color="black", style="setlinewidth(3)", label=""];
+c25:p24:e -> c47:p22:w [color="black", style="setlinewidth(3)", label=""];
+c26:p24:e -> c48:p22:w [color="black", style="setlinewidth(3)", label=""];
+n19:e -> c35:p32:w [color="black", label=""];
+n19:e -> c36:p32:w [color="black", label=""];
+n19:e -> c37:p32:w [color="black", label=""];
+c47:p24:e -> c38:p22:w [color="black", label=""];
+n20:e -> c45:p22:w [color="black", label=""];
+c30:p24:e -> n21:w [color="black", label=""];
+n21:e -> c46:p22:w [color="black", label=""];
+c48:p24:e -> c40:p22:w [color="black", label=""];
+c42:p24:e -> c39:p22:w [color="black", label=""];
+c43:p24:e -> c41:p22:w [color="black", label=""];
+n6 [ shape=point ];
+x1:s0:e -> n6:w [color="black", label=""];
+x3:s0:e -> n6:w [color="black", label=""];
+x5:s0:e -> n6:w [color="black", label=""];
+n6:e -> c30:p22:w [color="black", label=""];
+n7 [ shape=point ];
+c31:p24:e -> n7:w [color="black", label=""];
+n7:e -> x0:s0:w [color="black", label=""];
+n7:e -> x2:s0:w [color="black", label=""];
+n7:e -> x4:s0:w [color="black", label=""];
+n8 [ shape=point ];
+c45:p24:e -> n8:w [color="black", style="setlinewidth(3)", label=""];
+n8:e -> c25:p22:w [color="black", style="setlinewidth(3)", label=""];
+n8:e -> c25:p23:w [color="black", style="setlinewidth(3)", label=""];
+n8:e -> c27:p22:w [color="black", style="setlinewidth(3)", label=""];
+c38:p24:e -> c28:p22:w [color="black", style="setlinewidth(3)", label=""];
+}
diff --git a/figures/toggle-nan3-3.svg b/figures/toggle-nan3-3.svg
new file mode 100644 (file)
index 0000000..4e2ca3d
--- /dev/null
@@ -0,0 +1,592 @@
+<?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.40.1 (20161225.0304)
+ -->
+<!-- Title: toggle Pages: 1 -->
+<svg width="2019pt" height="282pt"
+ viewBox="0.00 0.00 2018.94 282.19" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 278.1926)">
+<title>toggle</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-278.1926 2014.9431,-278.1926 2014.9431,4 -4,4"/>
+<!-- n7 -->
+<g id="node1" class="node">
+<title>n7</title>
+<ellipse fill="#000000" stroke="#000000" cx="17.9246" cy="-128.5" rx="1.8" ry="1.8"/>
+</g>
+<!-- x0 -->
+<g id="node3" class="node">
+<title>x0</title>
+<path fill="none" stroke="#000000" d="M67.7246,-165.5C67.7246,-165.5 107.166,-165.5 107.166,-165.5 113.166,-165.5 119.166,-171.5 119.166,-177.5 119.166,-177.5 119.166,-189.5 119.166,-189.5 119.166,-195.5 113.166,-201.5 107.166,-201.5 107.166,-201.5 67.7246,-201.5 67.7246,-201.5 61.7246,-201.5 55.7246,-195.5 55.7246,-189.5 55.7246,-189.5 55.7246,-177.5 55.7246,-177.5 55.7246,-171.5 61.7246,-165.5 67.7246,-165.5"/>
+<text text-anchor="middle" x="87.4453" y="-179.3" font-family="Times,serif" font-size="14.00" fill="#000000">0:0 &#45; 0:0</text>
+</g>
+<!-- n7&#45;&gt;x0 -->
+<g id="edge35" class="edge">
+<title>n7:e&#45;&gt;x0:w</title>
+<path fill="none" stroke="#000000" d="M19.7246,-128.5C44.6033,-128.5 32.0305,-168.3837 45.7907,-180.2242"/>
+<polygon fill="#000000" stroke="#000000" points="45.1315,-183.6922 55.7246,-183.5 47.3238,-177.0443 45.1315,-183.6922"/>
+</g>
+<!-- x2 -->
+<g id="node4" class="node">
+<title>x2</title>
+<path fill="none" stroke="#000000" d="M67.7246,-55.5C67.7246,-55.5 107.166,-55.5 107.166,-55.5 113.166,-55.5 119.166,-61.5 119.166,-67.5 119.166,-67.5 119.166,-79.5 119.166,-79.5 119.166,-85.5 113.166,-91.5 107.166,-91.5 107.166,-91.5 67.7246,-91.5 67.7246,-91.5 61.7246,-91.5 55.7246,-85.5 55.7246,-79.5 55.7246,-79.5 55.7246,-67.5 55.7246,-67.5 55.7246,-61.5 61.7246,-55.5 67.7246,-55.5"/>
+<text text-anchor="middle" x="87.4453" y="-69.3" font-family="Times,serif" font-size="14.00" fill="#000000">1:1 &#45; 0:0</text>
+</g>
+<!-- n7&#45;&gt;x2 -->
+<g id="edge36" class="edge">
+<title>n7:e&#45;&gt;x2:w</title>
+<path fill="none" stroke="#000000" d="M19.7246,-128.5C44.6033,-128.5 32.0305,-88.6163 45.7907,-76.7758"/>
+<polygon fill="#000000" stroke="#000000" points="47.3238,-79.9557 55.7246,-73.5 45.1315,-73.3078 47.3238,-79.9557"/>
+</g>
+<!-- x4 -->
+<g id="node5" class="node">
+<title>x4</title>
+<path fill="none" stroke="#000000" d="M67.7246,-.5C67.7246,-.5 107.166,-.5 107.166,-.5 113.166,-.5 119.166,-6.5 119.166,-12.5 119.166,-12.5 119.166,-24.5 119.166,-24.5 119.166,-30.5 113.166,-36.5 107.166,-36.5 107.166,-36.5 67.7246,-36.5 67.7246,-36.5 61.7246,-36.5 55.7246,-30.5 55.7246,-24.5 55.7246,-24.5 55.7246,-12.5 55.7246,-12.5 55.7246,-6.5 61.7246,-.5 67.7246,-.5"/>
+<text text-anchor="middle" x="87.4453" y="-14.3" font-family="Times,serif" font-size="14.00" fill="#000000">2:2 &#45; 0:0</text>
+</g>
+<!-- n7&#45;&gt;x4 -->
+<g id="edge37" class="edge">
+<title>n7:e&#45;&gt;x4:w</title>
+<path fill="none" stroke="#000000" d="M19.7246,-128.5C67.1463,-128.5 14.0121,-35.0161 45.722,-20.4093"/>
+<polygon fill="#000000" stroke="#000000" points="46.5582,-23.8129 55.7246,-18.5 45.2457,-16.937 46.5582,-23.8129"/>
+</g>
+<!-- n19 -->
+<g id="node2" class="node">
+<title>n19</title>
+<polygon fill="none" stroke="#000000" points="114.4453,-121.0442 114.4453,-135.9558 98.6291,-146.5 76.2616,-146.5 60.4453,-135.9558 60.4453,-121.0442 76.2616,-110.5 98.6291,-110.5 114.4453,-121.0442"/>
+<text text-anchor="middle" x="87.4453" y="-124.3" font-family="Times,serif" font-size="14.00" fill="#000000">clk</text>
+</g>
+<!-- c35 -->
+<g id="node6" class="node">
+<title>c35</title>
+<polygon fill="none" stroke="#000000" points="155.166,-133.5 155.166,-177.5 284.8555,-177.5 284.8555,-133.5 155.166,-133.5"/>
+<text text-anchor="middle" x="168.2212" y="-162.3" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
+<polyline fill="none" stroke="#000000" points="155.166,-155.5 181.2764,-155.5 "/>
+<text text-anchor="middle" x="168.2212" y="-140.3" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="181.2764,-133.5 181.2764,-177.5 "/>
+<text text-anchor="middle" x="220.0108" y="-158.3" font-family="Times,serif" font-size="14.00" fill="#000000">$96</text>
+<text text-anchor="middle" x="220.0108" y="-144.3" font-family="Times,serif" font-size="14.00" fill="#000000">$_DFF_P_</text>
+<polyline fill="none" stroke="#000000" points="258.7451,-133.5 258.7451,-177.5 "/>
+<text text-anchor="middle" x="271.8003" y="-151.3" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- n19&#45;&gt;c35 -->
+<g id="edge20" class="edge">
+<title>n19:e&#45;&gt;c35:w</title>
+<path fill="none" stroke="#000000" d="M114.4453,-128.5C135.1384,-128.5 132.3924,-155.0541 145.3946,-163.7671"/>
+<polygon fill="#000000" stroke="#000000" points="144.5929,-167.1772 155.166,-166.5 146.4783,-160.4359 144.5929,-167.1772"/>
+</g>
+<!-- c36 -->
+<g id="node7" class="node">
+<title>c36</title>
+<polygon fill="none" stroke="#000000" points="155.166,-70.5 155.166,-114.5 284.8555,-114.5 284.8555,-70.5 155.166,-70.5"/>
+<text text-anchor="middle" x="168.2212" y="-99.3" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
+<polyline fill="none" stroke="#000000" points="155.166,-92.5 181.2764,-92.5 "/>
+<text text-anchor="middle" x="168.2212" y="-77.3" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="181.2764,-70.5 181.2764,-114.5 "/>
+<text text-anchor="middle" x="220.0108" y="-95.3" font-family="Times,serif" font-size="14.00" fill="#000000">$97</text>
+<text text-anchor="middle" x="220.0108" y="-81.3" font-family="Times,serif" font-size="14.00" fill="#000000">$_DFF_P_</text>
+<polyline fill="none" stroke="#000000" points="258.7451,-70.5 258.7451,-114.5 "/>
+<text text-anchor="middle" x="271.8003" y="-88.3" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- n19&#45;&gt;c36 -->
+<g id="edge21" class="edge">
+<title>n19:e&#45;&gt;c36:w</title>
+<path fill="none" stroke="#000000" d="M114.4453,-128.5C131.7002,-128.5 133.7784,-111.9961 145.342,-105.8071"/>
+<polygon fill="#000000" stroke="#000000" points="146.2311,-109.1936 155.166,-103.5 144.6307,-102.379 146.2311,-109.1936"/>
+</g>
+<!-- c37 -->
+<g id="node8" class="node">
+<title>c37</title>
+<polygon fill="none" stroke="#000000" points="155.166,-7.5 155.166,-51.5 284.8555,-51.5 284.8555,-7.5 155.166,-7.5"/>
+<text text-anchor="middle" x="168.2212" y="-36.3" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
+<polyline fill="none" stroke="#000000" points="155.166,-29.5 181.2764,-29.5 "/>
+<text text-anchor="middle" x="168.2212" y="-14.3" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="181.2764,-7.5 181.2764,-51.5 "/>
+<text text-anchor="middle" x="220.0108" y="-32.3" font-family="Times,serif" font-size="14.00" fill="#000000">$98</text>
+<text text-anchor="middle" x="220.0108" y="-18.3" font-family="Times,serif" font-size="14.00" fill="#000000">$_DFF_P_</text>
+<polyline fill="none" stroke="#000000" points="258.7451,-7.5 258.7451,-51.5 "/>
+<text text-anchor="middle" x="271.8003" y="-25.3" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- n19&#45;&gt;c37 -->
+<g id="edge22" class="edge">
+<title>n19:e&#45;&gt;c37:w</title>
+<path fill="none" stroke="#000000" d="M114.4453,-128.5C153.5006,-128.5 119.8178,-56.2266 145.2347,-42.6753"/>
+<polygon fill="#000000" stroke="#000000" points="146.1465,-46.0586 155.166,-40.5 144.6487,-39.2207 146.1465,-46.0586"/>
+</g>
+<!-- x0&#45;&gt;c35 -->
+<g id="edge1" class="edge">
+<title>x0:e&#45;&gt;c35:w</title>
+<path fill="none" stroke="#000000" d="M130.3832,-178.7178C136.9563,-171.2327 137.363,-156.8305 143.9146,-149.3213"/>
+<polygon fill="none" stroke="#000000" points="130.2048,-178.7939 126.2541,-184.8265 119.166,-183.5 123.1167,-177.4674 130.2048,-178.7939"/>
+<polygon fill="none" stroke="#000000" points="144.136,-149.2265 148.0755,-143.1866 155.166,-144.5 151.2265,-150.5399 144.136,-149.2265"/>
+</g>
+<!-- x2&#45;&gt;c36 -->
+<g id="edge3" class="edge">
+<title>x2:e&#45;&gt;c36:w</title>
+<path fill="none" stroke="#000000" d="M131.2248,-75.2755C135.4526,-76.6012 138.8934,-78.405 143.1232,-79.7295"/>
+<polygon fill="none" stroke="#000000" points="131.0381,-75.2481 124.5194,-78.3314 119.166,-73.5 125.6847,-70.4167 131.0381,-75.2481"/>
+<polygon fill="none" stroke="#000000" points="143.2937,-79.7545 149.8117,-76.6698 155.166,-81.5 148.648,-84.5847 143.2937,-79.7545"/>
+</g>
+<!-- x4&#45;&gt;c37 -->
+<g id="edge5" class="edge">
+<title>x4:e&#45;&gt;c37:w</title>
+<path fill="none" stroke="#000000" d="M131.3828,-18.5C135.4598,-18.5 138.9007,-18.5 142.981,-18.5"/>
+<polygon fill="none" stroke="#000000" points="131.166,-18.5001 125.166,-22.5 119.166,-18.5 125.1661,-14.5 131.166,-18.5001"/>
+<polygon fill="none" stroke="#000000" points="143.166,-18.5001 149.166,-14.5 155.166,-18.5 149.1661,-22.5 143.166,-18.5001"/>
+</g>
+<!-- x1 -->
+<g id="node18" class="node">
+<title>x1</title>
+<path fill="none" stroke="#000000" d="M332.8555,-131.5C332.8555,-131.5 372.2969,-131.5 372.2969,-131.5 378.2969,-131.5 384.2969,-137.5 384.2969,-143.5 384.2969,-143.5 384.2969,-155.5 384.2969,-155.5 384.2969,-161.5 378.2969,-167.5 372.2969,-167.5 372.2969,-167.5 332.8555,-167.5 332.8555,-167.5 326.8555,-167.5 320.8555,-161.5 320.8555,-155.5 320.8555,-155.5 320.8555,-143.5 320.8555,-143.5 320.8555,-137.5 326.8555,-131.5 332.8555,-131.5"/>
+<text text-anchor="middle" x="352.5762" y="-145.3" font-family="Times,serif" font-size="14.00" fill="#000000">0:0 &#45; 0:0</text>
+</g>
+<!-- c35&#45;&gt;x1 -->
+<g id="edge2" class="edge">
+<title>c35:e&#45;&gt;x1:w</title>
+<path fill="none" stroke="#000000" d="M296.8721,-154.1684C301.1179,-153.1741 304.6071,-151.8213 308.8548,-150.8279"/>
+<polygon fill="none" stroke="#000000" points="296.7825,-154.1782 291.2596,-158.8148 284.8555,-155.5 290.3784,-150.8635 296.7825,-154.1782"/>
+<polygon fill="none" stroke="#000000" points="308.9283,-150.8198 314.452,-146.1842 320.8555,-149.5 315.3318,-154.1357 308.9283,-150.8198"/>
+</g>
+<!-- x3 -->
+<g id="node19" class="node">
+<title>x3</title>
+<path fill="none" stroke="#000000" d="M332.8555,-70.5C332.8555,-70.5 372.2969,-70.5 372.2969,-70.5 378.2969,-70.5 384.2969,-76.5 384.2969,-82.5 384.2969,-82.5 384.2969,-94.5 384.2969,-94.5 384.2969,-100.5 378.2969,-106.5 372.2969,-106.5 372.2969,-106.5 332.8555,-106.5 332.8555,-106.5 326.8555,-106.5 320.8555,-100.5 320.8555,-94.5 320.8555,-94.5 320.8555,-82.5 320.8555,-82.5 320.8555,-76.5 326.8555,-70.5 332.8555,-70.5"/>
+<text text-anchor="middle" x="352.5762" y="-84.3" font-family="Times,serif" font-size="14.00" fill="#000000">0:0 &#45; 1:1</text>
+</g>
+<!-- c36&#45;&gt;x3 -->
+<g id="edge4" class="edge">
+<title>c36:e&#45;&gt;x3:w</title>
+<path fill="none" stroke="#000000" d="M296.8418,-91.6123C301.1005,-90.9494 304.6246,-90.0475 308.8852,-89.3852"/>
+<polygon fill="none" stroke="#000000" points="296.8227,-91.6136 291.1346,-96.0459 284.8555,-92.5 290.5436,-88.0677 296.8227,-91.6136"/>
+<polygon fill="none" stroke="#000000" points="308.8882,-89.3851 314.5768,-84.9535 320.8555,-88.5 315.1669,-92.9317 308.8882,-89.3851"/>
+</g>
+<!-- x5 -->
+<g id="node20" class="node">
+<title>x5</title>
+<path fill="none" stroke="#000000" d="M332.8555,-13.5C332.8555,-13.5 372.2969,-13.5 372.2969,-13.5 378.2969,-13.5 384.2969,-19.5 384.2969,-25.5 384.2969,-25.5 384.2969,-37.5 384.2969,-37.5 384.2969,-43.5 378.2969,-49.5 372.2969,-49.5 372.2969,-49.5 332.8555,-49.5 332.8555,-49.5 326.8555,-49.5 320.8555,-43.5 320.8555,-37.5 320.8555,-37.5 320.8555,-25.5 320.8555,-25.5 320.8555,-19.5 326.8555,-13.5 332.8555,-13.5"/>
+<text text-anchor="middle" x="352.5762" y="-27.3" font-family="Times,serif" font-size="14.00" fill="#000000">0:0 &#45; 2:2</text>
+</g>
+<!-- c37&#45;&gt;x5 -->
+<g id="edge6" class="edge">
+<title>c37:e&#45;&gt;x5:w</title>
+<path fill="none" stroke="#000000" d="M297.0783,-29.9639C301.1526,-30.287 304.5869,-30.7161 308.6645,-31.0386"/>
+<polygon fill="none" stroke="#000000" points="296.8469,-29.9552 290.6995,-33.7247 284.8555,-29.5 291.0029,-25.7305 296.8469,-29.9552"/>
+<polygon fill="none" stroke="#000000" points="308.8641,-31.0461 315.0111,-27.2759 320.8555,-31.5 314.7085,-35.2702 308.8641,-31.0461"/>
+</g>
+<!-- n20 -->
+<g id="node9" class="node">
+<title>n20</title>
+<polygon fill="none" stroke="#000000" points="643.7797,-157.0442 643.7797,-171.9558 627.9635,-182.5 605.596,-182.5 589.7797,-171.9558 589.7797,-157.0442 605.596,-146.5 627.9635,-146.5 643.7797,-157.0442"/>
+<text text-anchor="middle" x="616.7797" y="-160.3" font-family="Times,serif" font-size="14.00" fill="#000000">en</text>
+</g>
+<!-- c45 -->
+<g id="node28" class="node">
+<title>c45</title>
+<polygon fill="none" stroke="#000000" points="679.7797,-146.5 679.7797,-182.5 773.6625,-182.5 773.6625,-146.5 679.7797,-146.5"/>
+<text text-anchor="middle" x="692.8349" y="-160.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="705.8901,-146.5 705.8901,-182.5 "/>
+<text text-anchor="middle" x="726.7211" y="-167.3" font-family="Times,serif" font-size="14.00" fill="#000000">$61</text>
+<text text-anchor="middle" x="726.7211" y="-153.3" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="747.5522,-146.5 747.5522,-182.5 "/>
+<text text-anchor="middle" x="760.6074" y="-160.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n20&#45;&gt;c45 -->
+<g id="edge24" class="edge">
+<title>n20:e&#45;&gt;c45:w</title>
+<path fill="none" stroke="#000000" d="M643.7797,-164.5C655.7797,-164.5 661.0297,-164.5 669.6547,-164.5"/>
+<polygon fill="#000000" stroke="#000000" points="669.7798,-168.0001 679.7797,-164.5 669.7797,-161.0001 669.7798,-168.0001"/>
+</g>
+<!-- n21 -->
+<g id="node10" class="node">
+<title>n21</title>
+<polygon fill="none" stroke="#000000" points="643.7797,-74.0442 643.7797,-88.9558 627.9635,-99.5 605.596,-99.5 589.7797,-88.9558 589.7797,-74.0442 605.596,-63.5 627.9635,-63.5 643.7797,-74.0442"/>
+<text text-anchor="middle" x="616.7797" y="-77.3" font-family="Times,serif" font-size="14.00" fill="#000000">out</text>
+</g>
+<!-- c46 -->
+<g id="node29" class="node">
+<title>c46</title>
+<polygon fill="none" stroke="#000000" points="679.7797,-62.5 679.7797,-98.5 773.6625,-98.5 773.6625,-62.5 679.7797,-62.5"/>
+<text text-anchor="middle" x="692.8349" y="-76.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="705.8901,-62.5 705.8901,-98.5 "/>
+<text text-anchor="middle" x="726.7211" y="-83.3" font-family="Times,serif" font-size="14.00" fill="#000000">$66</text>
+<text text-anchor="middle" x="726.7211" y="-69.3" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="747.5522,-62.5 747.5522,-98.5 "/>
+<text text-anchor="middle" x="760.6074" y="-76.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n21&#45;&gt;c46 -->
+<g id="edge26" class="edge">
+<title>n21:e&#45;&gt;c46:w</title>
+<path fill="none" stroke="#000000" d="M643.7797,-81.5C655.7843,-81.5 661.0286,-80.9375 669.653,-80.6563"/>
+<polygon fill="#000000" stroke="#000000" points="669.8349,-84.154 679.7797,-80.5 669.7269,-77.1548 669.8349,-84.154"/>
+</g>
+<!-- c25 -->
+<g id="node11" class="node">
+<title>c25</title>
+<polygon fill="none" stroke="#000000" points="849.2625,-131.5 849.2625,-175.5 950.9178,-175.5 950.9178,-131.5 849.2625,-131.5"/>
+<text text-anchor="middle" x="862.3177" y="-160.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="849.2625,-153.5 875.3729,-153.5 "/>
+<text text-anchor="middle" x="862.3177" y="-138.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="875.3729,-131.5 875.3729,-175.5 "/>
+<text text-anchor="middle" x="900.0902" y="-156.3" font-family="Times,serif" font-size="14.00" fill="#000000">$56</text>
+<text text-anchor="middle" x="900.0902" y="-142.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="924.8075,-131.5 924.8075,-175.5 "/>
+<text text-anchor="middle" x="937.8626" y="-149.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c47 -->
+<g id="node30" class="node">
+<title>c47</title>
+<polygon fill="none" stroke="#000000" points="986.9178,-131.5 986.9178,-167.5 1080.8006,-167.5 1080.8006,-131.5 986.9178,-131.5"/>
+<text text-anchor="middle" x="999.973" y="-145.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1013.0282,-131.5 1013.0282,-167.5 "/>
+<text text-anchor="middle" x="1033.8592" y="-152.3" font-family="Times,serif" font-size="14.00" fill="#000000">$63</text>
+<text text-anchor="middle" x="1033.8592" y="-138.3" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1054.6903,-131.5 1054.6903,-167.5 "/>
+<text text-anchor="middle" x="1067.7454" y="-145.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c25&#45;&gt;c47 -->
+<g id="edge18" class="edge">
+<title>c25:e&#45;&gt;c47:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M950.9178,-153.5C962.9917,-153.5 968.1493,-151.25 976.7651,-150.125"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="977.1518,-153.6079 986.9178,-149.5 976.7216,-146.6211 977.1518,-153.6079"/>
+</g>
+<!-- c26 -->
+<g id="node12" class="node">
+<title>c26</title>
+<polygon fill="none" stroke="#000000" points="849.2625,-68.5 849.2625,-112.5 950.9178,-112.5 950.9178,-68.5 849.2625,-68.5"/>
+<text text-anchor="middle" x="862.3177" y="-97.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="849.2625,-90.5 875.3729,-90.5 "/>
+<text text-anchor="middle" x="862.3177" y="-75.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="875.3729,-68.5 875.3729,-112.5 "/>
+<text text-anchor="middle" x="900.0902" y="-93.3" font-family="Times,serif" font-size="14.00" fill="#000000">$57</text>
+<text text-anchor="middle" x="900.0902" y="-79.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="924.8075,-68.5 924.8075,-112.5 "/>
+<text text-anchor="middle" x="937.8626" y="-86.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c48 -->
+<g id="node31" class="node">
+<title>c48</title>
+<polygon fill="none" stroke="#000000" points="986.9178,-74.5 986.9178,-110.5 1080.8006,-110.5 1080.8006,-74.5 986.9178,-74.5"/>
+<text text-anchor="middle" x="999.973" y="-88.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1013.0282,-74.5 1013.0282,-110.5 "/>
+<text text-anchor="middle" x="1033.8592" y="-95.3" font-family="Times,serif" font-size="14.00" fill="#000000">$68</text>
+<text text-anchor="middle" x="1033.8592" y="-81.3" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1054.6903,-74.5 1054.6903,-110.5 "/>
+<text text-anchor="middle" x="1067.7454" y="-88.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c26&#45;&gt;c48 -->
+<g id="edge19" class="edge">
+<title>c26:e&#45;&gt;c48:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M950.9178,-90.5C962.9363,-90.5 968.1632,-91.625 976.7859,-92.1875"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="976.8146,-95.69 986.9178,-92.5 977.0305,-88.6933 976.8146,-95.69"/>
+</g>
+<!-- c27 -->
+<g id="node13" class="node">
+<title>c27</title>
+<polygon fill="none" stroke="#000000" points="1246.6834,-158.5 1246.6834,-202.5 1348.3387,-202.5 1348.3387,-158.5 1246.6834,-158.5"/>
+<text text-anchor="middle" x="1259.7386" y="-187.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1246.6834,-180.5 1272.7938,-180.5 "/>
+<text text-anchor="middle" x="1259.7386" y="-165.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="1272.7938,-158.5 1272.7938,-202.5 "/>
+<text text-anchor="middle" x="1297.5111" y="-183.3" font-family="Times,serif" font-size="14.00" fill="#000000">$58</text>
+<text text-anchor="middle" x="1297.5111" y="-169.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="1322.2284,-158.5 1322.2284,-202.5 "/>
+<text text-anchor="middle" x="1335.2835" y="-176.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c42 -->
+<g id="node25" class="node">
+<title>c42</title>
+<polygon fill="none" stroke="#000000" points="1384.3387,-162.5 1384.3387,-198.5 1478.2215,-198.5 1478.2215,-162.5 1384.3387,-162.5"/>
+<text text-anchor="middle" x="1397.3939" y="-176.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1410.4491,-162.5 1410.4491,-198.5 "/>
+<text text-anchor="middle" x="1431.2801" y="-183.3" font-family="Times,serif" font-size="14.00" fill="#000000">$74</text>
+<text text-anchor="middle" x="1431.2801" y="-169.3" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1452.1112,-162.5 1452.1112,-198.5 "/>
+<text text-anchor="middle" x="1465.1663" y="-176.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c27&#45;&gt;c42 -->
+<g id="edge15" class="edge">
+<title>c27:e&#45;&gt;c42:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1348.3387,-180.5C1360.3387,-180.5 1365.5887,-180.5 1374.2137,-180.5"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1374.3387,-184.0001 1384.3387,-180.5 1374.3387,-177.0001 1374.3387,-184.0001"/>
+</g>
+<!-- c28 -->
+<g id="node14" class="node">
+<title>c28</title>
+<polygon fill="none" stroke="#000000" points="1246.6834,-69.5 1246.6834,-113.5 1348.3387,-113.5 1348.3387,-69.5 1246.6834,-69.5"/>
+<text text-anchor="middle" x="1259.7386" y="-98.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1246.6834,-91.5 1272.7938,-91.5 "/>
+<text text-anchor="middle" x="1259.7386" y="-76.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="1272.7938,-69.5 1272.7938,-113.5 "/>
+<text text-anchor="middle" x="1297.5111" y="-94.3" font-family="Times,serif" font-size="14.00" fill="#000000">$59</text>
+<text text-anchor="middle" x="1297.5111" y="-80.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="1322.2284,-69.5 1322.2284,-113.5 "/>
+<text text-anchor="middle" x="1335.2835" y="-87.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c43 -->
+<g id="node26" class="node">
+<title>c43</title>
+<polygon fill="none" stroke="#000000" points="1384.3387,-82.5 1384.3387,-118.5 1478.2215,-118.5 1478.2215,-82.5 1384.3387,-82.5"/>
+<text text-anchor="middle" x="1397.3939" y="-96.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1410.4491,-82.5 1410.4491,-118.5 "/>
+<text text-anchor="middle" x="1431.2801" y="-103.3" font-family="Times,serif" font-size="14.00" fill="#000000">$81</text>
+<text text-anchor="middle" x="1431.2801" y="-89.3" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1452.1112,-82.5 1452.1112,-118.5 "/>
+<text text-anchor="middle" x="1465.1663" y="-96.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c28&#45;&gt;c43 -->
+<g id="edge16" class="edge">
+<title>c28:e&#45;&gt;c43:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1348.3387,-91.5C1360.8369,-91.5 1365.5953,-96.6685 1374.3445,-99.172"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1373.9648,-102.6522 1384.3387,-100.5 1374.8869,-95.7132 1373.9648,-102.6522"/>
+</g>
+<!-- c29 -->
+<g id="node15" class="node">
+<title>c29</title>
+<polygon fill="none" stroke="#000000" points="1644.1043,-147.5 1644.1043,-191.5 1745.7596,-191.5 1745.7596,-147.5 1644.1043,-147.5"/>
+<text text-anchor="middle" x="1657.1595" y="-176.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1644.1043,-169.5 1670.2147,-169.5 "/>
+<text text-anchor="middle" x="1657.1595" y="-154.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="1670.2147,-147.5 1670.2147,-191.5 "/>
+<text text-anchor="middle" x="1694.932" y="-172.3" font-family="Times,serif" font-size="14.00" fill="#000000">$60</text>
+<text text-anchor="middle" x="1694.932" y="-158.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="1719.6492,-147.5 1719.6492,-191.5 "/>
+<text text-anchor="middle" x="1732.7044" y="-165.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c44 -->
+<g id="node27" class="node">
+<title>c44</title>
+<polygon fill="none" stroke="#000000" points="1781.7596,-164.5 1781.7596,-200.5 1875.6424,-200.5 1875.6424,-164.5 1781.7596,-164.5"/>
+<text text-anchor="middle" x="1794.8148" y="-178.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1807.87,-164.5 1807.87,-200.5 "/>
+<text text-anchor="middle" x="1828.701" y="-185.3" font-family="Times,serif" font-size="14.00" fill="#000000">$88</text>
+<text text-anchor="middle" x="1828.701" y="-171.3" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="1849.5321,-164.5 1849.5321,-200.5 "/>
+<text text-anchor="middle" x="1862.5872" y="-178.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c29&#45;&gt;c44 -->
+<g id="edge17" class="edge">
+<title>c29:e&#45;&gt;c44:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1745.7596,-169.5C1758.7838,-169.5 1762.9956,-177.1204 1771.8889,-180.6924"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1771.2927,-184.1413 1781.7596,-182.5 1772.5537,-177.2558 1771.2927,-184.1413"/>
+</g>
+<!-- c30 -->
+<g id="node16" class="node">
+<title>c30</title>
+<polygon fill="none" stroke="#000000" points="459.8969,-65.5 459.8969,-101.5 553.7797,-101.5 553.7797,-65.5 459.8969,-65.5"/>
+<text text-anchor="middle" x="472.9521" y="-79.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="486.0073,-65.5 486.0073,-101.5 "/>
+<text text-anchor="middle" x="506.8383" y="-86.3" font-family="Times,serif" font-size="14.00" fill="#000000">$92</text>
+<text text-anchor="middle" x="506.8383" y="-72.3" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="527.6694,-65.5 527.6694,-101.5 "/>
+<text text-anchor="middle" x="540.7245" y="-79.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c30&#45;&gt;n21 -->
+<g id="edge25" class="edge">
+<title>c30:e&#45;&gt;n21:w</title>
+<path fill="none" stroke="#000000" d="M553.7797,-83.5C565.7982,-83.5 571.0251,-82.375 579.6478,-81.8125"/>
+<polygon fill="#000000" stroke="#000000" points="579.8924,-85.3067 589.7797,-81.5 579.6765,-78.31 579.8924,-85.3067"/>
+</g>
+<!-- c31 -->
+<g id="node17" class="node">
+<title>c31</title>
+<polygon fill="none" stroke="#000000" points="1911.6424,-187.5 1911.6424,-223.5 2005.5252,-223.5 2005.5252,-187.5 1911.6424,-187.5"/>
+<text text-anchor="middle" x="1924.6976" y="-201.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1937.7528,-187.5 1937.7528,-223.5 "/>
+<text text-anchor="middle" x="1958.5838" y="-208.3" font-family="Times,serif" font-size="14.00" fill="#000000">$94</text>
+<text text-anchor="middle" x="1958.5838" y="-194.3" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="1979.4149,-187.5 1979.4149,-223.5 "/>
+<text text-anchor="middle" x="1992.47" y="-201.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c31&#45;&gt;n7 -->
+<g id="edge34" class="edge">
+<title>c31:e&#45;&gt;n7:w</title>
+<path fill="none" stroke="#000000" d="M2005.5838,-205.5C2013.806,-205.5 2011.2223,-218.0157 2005.5838,-224 1910.7339,-324.6665 1833.2441,-242.5 1694.932,-242.5 220.0108,-242.5 220.0108,-242.5 220.0108,-242.5 145.7062,-242.5 114.8421,-256.5144 55.7246,-211.5 26.6085,-189.3299 -15.0006,-140.408 5.8298,-130.3352"/>
+<polygon fill="#000000" stroke="#000000" points="6.712,-133.7323 15.9246,-128.5 5.4598,-126.8452 6.712,-133.7323"/>
+</g>
+<!-- n6 -->
+<g id="node33" class="node">
+<title>n6</title>
+<ellipse fill="#000000" stroke="#000000" cx="422.0969" cy="-87.5" rx="1.8" ry="1.8"/>
+</g>
+<!-- x1&#45;&gt;n6 -->
+<g id="edge30" class="edge">
+<title>x1:e&#45;&gt;n6:w</title>
+<path fill="none" stroke="#000000" d="M384.2969,-149.5C411.9289,-149.5 394.747,-102.8751 410.4754,-90.4904"/>
+<polygon fill="#000000" stroke="#000000" points="411.75,-93.761 420.2969,-87.5 409.711,-87.0645 411.75,-93.761"/>
+</g>
+<!-- x3&#45;&gt;n6 -->
+<g id="edge31" class="edge">
+<title>x3:e&#45;&gt;n6:w</title>
+<path fill="none" stroke="#000000" d="M384.2969,-88.5C396.3015,-88.5 401.5457,-87.9375 410.1702,-87.6563"/>
+<polygon fill="#000000" stroke="#000000" points="410.3521,-91.154 420.2969,-87.5 410.2441,-84.1548 410.3521,-91.154"/>
+</g>
+<!-- x5&#45;&gt;n6 -->
+<g id="edge32" class="edge">
+<title>x5:e&#45;&gt;n6:w</title>
+<path fill="none" stroke="#000000" d="M384.2969,-31.5C409.7242,-31.5 396.1837,-72.8574 410.6513,-84.4892"/>
+<polygon fill="#000000" stroke="#000000" points="409.7082,-87.8613 420.2969,-87.5 411.794,-81.1793 409.7082,-87.8613"/>
+</g>
+<!-- c38 -->
+<g id="node21" class="node">
+<title>c38</title>
+<polygon fill="none" stroke="#000000" points="1116.8006,-84.5 1116.8006,-120.5 1210.6834,-120.5 1210.6834,-84.5 1116.8006,-84.5"/>
+<text text-anchor="middle" x="1129.8558" y="-98.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1142.911,-84.5 1142.911,-120.5 "/>
+<text text-anchor="middle" x="1163.742" y="-105.3" font-family="Times,serif" font-size="14.00" fill="#000000">$78</text>
+<text text-anchor="middle" x="1163.742" y="-91.3" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="1184.5731,-84.5 1184.5731,-120.5 "/>
+<text text-anchor="middle" x="1197.6283" y="-98.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c38&#45;&gt;c28 -->
+<g id="edge42" class="edge">
+<title>c38:e&#45;&gt;c28:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1210.6834,-102.5C1222.6834,-102.5 1227.9334,-102.5 1236.5584,-102.5"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1236.6835,-106.0001 1246.6834,-102.5 1236.6834,-99.0001 1236.6835,-106.0001"/>
+</g>
+<!-- c39 -->
+<g id="node22" class="node">
+<title>c39</title>
+<polygon fill="none" stroke="#000000" points="1514.2215,-162.5 1514.2215,-198.5 1608.1043,-198.5 1608.1043,-162.5 1514.2215,-162.5"/>
+<text text-anchor="middle" x="1527.2767" y="-176.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1540.3319,-162.5 1540.3319,-198.5 "/>
+<text text-anchor="middle" x="1561.1629" y="-183.3" font-family="Times,serif" font-size="14.00" fill="#000000">$85</text>
+<text text-anchor="middle" x="1561.1629" y="-169.3" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="1581.994,-162.5 1581.994,-198.5 "/>
+<text text-anchor="middle" x="1595.0492" y="-176.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c39&#45;&gt;c29 -->
+<g id="edge8" class="edge">
+<title>c39:e&#45;&gt;c29:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1608.1043,-180.5C1620.1043,-180.5 1625.3543,-180.5 1633.9793,-180.5"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1634.1044,-184.0001 1644.1043,-180.5 1634.1043,-177.0001 1634.1044,-184.0001"/>
+</g>
+<!-- c40 -->
+<g id="node23" class="node">
+<title>c40</title>
+<polygon fill="none" stroke="#000000" points="1116.8006,-139.5 1116.8006,-175.5 1210.6834,-175.5 1210.6834,-139.5 1116.8006,-139.5"/>
+<text text-anchor="middle" x="1129.8558" y="-153.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1142.911,-139.5 1142.911,-175.5 "/>
+<text text-anchor="middle" x="1163.742" y="-160.3" font-family="Times,serif" font-size="14.00" fill="#000000">$72</text>
+<text text-anchor="middle" x="1163.742" y="-146.3" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="1184.5731,-139.5 1184.5731,-175.5 "/>
+<text text-anchor="middle" x="1197.6283" y="-153.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c40&#45;&gt;c27 -->
+<g id="edge9" class="edge">
+<title>c40:e&#45;&gt;c27:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1210.6834,-157.5C1223.4643,-157.5 1227.8627,-164.3914 1236.5834,-167.7294"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1236.2292,-171.2206 1246.6834,-169.5 1237.438,-164.3257 1236.2292,-171.2206"/>
+</g>
+<!-- c41 -->
+<g id="node24" class="node">
+<title>c41</title>
+<polygon fill="none" stroke="#000000" points="1514.2215,-99.5 1514.2215,-135.5 1608.1043,-135.5 1608.1043,-99.5 1514.2215,-99.5"/>
+<text text-anchor="middle" x="1527.2767" y="-113.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="1540.3319,-99.5 1540.3319,-135.5 "/>
+<text text-anchor="middle" x="1561.1629" y="-120.3" font-family="Times,serif" font-size="14.00" fill="#000000">$86</text>
+<text text-anchor="middle" x="1561.1629" y="-106.3" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="1581.994,-99.5 1581.994,-135.5 "/>
+<text text-anchor="middle" x="1595.0492" y="-113.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c41&#45;&gt;c29 -->
+<g id="edge14" class="edge">
+<title>c41:e&#45;&gt;c29:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M1608.1043,-117.5C1628.1861,-117.5 1623.0657,-145.6174 1634.4842,-155.2828"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1633.5105,-158.6477 1644.1043,-158.5 1635.7307,-152.009 1633.5105,-158.6477"/>
+</g>
+<!-- c42&#45;&gt;c39 -->
+<g id="edge28" class="edge">
+<title>c42:e&#45;&gt;c39:w</title>
+<path fill="none" stroke="#000000" d="M1478.2215,-180.5C1490.2215,-180.5 1495.4715,-180.5 1504.0965,-180.5"/>
+<polygon fill="#000000" stroke="#000000" points="1504.2215,-184.0001 1514.2215,-180.5 1504.2215,-177.0001 1504.2215,-184.0001"/>
+</g>
+<!-- c43&#45;&gt;c41 -->
+<g id="edge29" class="edge">
+<title>c43:e&#45;&gt;c41:w</title>
+<path fill="none" stroke="#000000" d="M1478.2215,-100.5C1491.9069,-100.5 1495.3733,-110.6695 1504.4282,-115.2775"/>
+<polygon fill="#000000" stroke="#000000" points="1503.6949,-118.7 1514.2215,-117.5 1505.2441,-111.8736 1503.6949,-118.7"/>
+</g>
+<!-- c44&#45;&gt;c31 -->
+<g id="edge7" class="edge">
+<title>c44:e&#45;&gt;c31:w</title>
+<path fill="none" stroke="#000000" d="M1875.6424,-182.5C1890.4758,-182.5 1892.5161,-196.5381 1901.7525,-202.6797"/>
+<polygon fill="#000000" stroke="#000000" points="1901.0659,-206.1234 1911.6424,-205.5 1902.9856,-199.3918 1901.0659,-206.1234"/>
+</g>
+<!-- n8 -->
+<g id="node34" class="node">
+<title>n8</title>
+<ellipse fill="#000000" stroke="#000000" cx="811.4625" cy="-164.5" rx="1.8" ry="1.8"/>
+</g>
+<!-- c45&#45;&gt;n8 -->
+<g id="edge38" class="edge">
+<title>c45:e&#45;&gt;n8:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M773.6625,-164.5C785.6625,-164.5 790.9125,-164.5 799.5375,-164.5"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="799.6626,-168.0001 809.6625,-164.5 799.6625,-161.0001 799.6626,-168.0001"/>
+</g>
+<!-- n12 -->
+<g id="node32" class="node">
+<title>n12</title>
+<ellipse fill="#000000" stroke="#000000" cx="811.4625" cy="-79.5" rx="1.8" ry="1.8"/>
+</g>
+<!-- c46&#45;&gt;n12 -->
+<g id="edge10" class="edge">
+<title>c46:e&#45;&gt;n12:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M773.6625,-80.5C785.6672,-80.5 790.9114,-79.9375 799.5358,-79.6563"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="799.7178,-83.154 809.6625,-79.5 799.6097,-76.1548 799.7178,-83.154"/>
+</g>
+<!-- c47&#45;&gt;c38 -->
+<g id="edge23" class="edge">
+<title>c47:e&#45;&gt;c38:w</title>
+<path fill="none" stroke="#000000" d="M1080.8006,-149.5C1103.0018,-149.5 1094.6352,-116.04 1107.2839,-105.5838"/>
+<polygon fill="#000000" stroke="#000000" points="1108.3665,-108.9122 1116.8006,-102.5 1106.2087,-102.2531 1108.3665,-108.9122"/>
+</g>
+<!-- c48&#45;&gt;c40 -->
+<g id="edge27" class="edge">
+<title>c48:e&#45;&gt;c40:w</title>
+<path fill="none" stroke="#000000" d="M1080.8006,-92.5C1109.6964,-92.5 1090.3033,-142.2656 1107.1268,-154.707"/>
+<polygon fill="#000000" stroke="#000000" points="1106.2222,-158.0887 1116.8006,-157.5 1108.1639,-151.3634 1106.2222,-158.0887"/>
+</g>
+<!-- n12&#45;&gt;c26 -->
+<g id="edge11" class="edge">
+<title>n12:e&#45;&gt;c26:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M813.2625,-79.5C827.9119,-79.5 830.1995,-92.9277 839.4406,-98.8024"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="838.6926,-102.2265 849.2625,-101.5 840.5466,-95.4765 838.6926,-102.2265"/>
+</g>
+<!-- n12&#45;&gt;c26 -->
+<g id="edge12" class="edge">
+<title>n12:e&#45;&gt;c26:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M813.2625,-79.5C825.2625,-79.5 830.5125,-79.5 839.1375,-79.5"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="839.2626,-83.0001 849.2625,-79.5 839.2625,-76.0001 839.2626,-83.0001"/>
+</g>
+<!-- n12&#45;&gt;c28 -->
+<g id="edge13" class="edge">
+<title>n12:e&#45;&gt;c28:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M813.2625,-79.5C831.5659,-79.5 831.5444,-64.0912 849.2625,-59.5 892.9982,-48.167 905.7497,-58.4573 950.9178,-59.5 1066.5572,-62.1696 1095.68,-63.0982 1210.6834,-75.5 1222.7288,-76.799 1227.8697,-78.962 1236.5021,-79.9623"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1236.5127,-83.4676 1246.6834,-80.5 1236.882,-76.4774 1236.5127,-83.4676"/>
+</g>
+<!-- n6&#45;&gt;c30 -->
+<g id="edge33" class="edge">
+<title>n6:e&#45;&gt;c30:w</title>
+<path fill="none" stroke="#000000" d="M423.8969,-87.5C435.9708,-87.5 441.1284,-85.25 449.7442,-84.125"/>
+<polygon fill="#000000" stroke="#000000" points="450.1309,-87.6079 459.8969,-83.5 449.7007,-80.6211 450.1309,-87.6079"/>
+</g>
+<!-- n8&#45;&gt;c25 -->
+<g id="edge39" class="edge">
+<title>n8:e&#45;&gt;c25:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M813.2625,-164.5C825.2625,-164.5 830.5125,-164.5 839.1375,-164.5"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="839.2626,-168.0001 849.2625,-164.5 839.2625,-161.0001 839.2626,-168.0001"/>
+</g>
+<!-- n8&#45;&gt;c25 -->
+<g id="edge40" class="edge">
+<title>n8:e&#45;&gt;c25:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M813.2625,-164.5C827.9119,-164.5 830.1995,-151.0723 839.4406,-145.1976"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="840.5466,-148.5235 849.2625,-142.5 838.6926,-141.7735 840.5466,-148.5235"/>
+</g>
+<!-- n8&#45;&gt;c27 -->
+<g id="edge41" class="edge">
+<title>n8:e&#45;&gt;c27:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M813.2625,-164.5C831.7858,-164.5 831.4182,-180.531 849.2625,-185.5 1016.1156,-231.9628 1068.0099,-193.0829 1236.4752,-191.5464"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="1236.6995,-195.0455 1246.6834,-191.5 1236.6676,-188.0456 1236.6995,-195.0455"/>
+</g>
+</g>
+</svg>
diff --git a/figures/toggle-nan3-4.dot b/figures/toggle-nan3-4.dot
new file mode 100644 (file)
index 0000000..ee4a41c
--- /dev/null
@@ -0,0 +1,60 @@
+digraph "toggle" {
+label="toggle";
+rankdir="LR";
+remincross=true;
+n2;
+{rank=same; x0; x2; x4};
+{rank=same; c23; c24; c25};
+n8 [ shape=octagon, label="clk", color="black", fontcolor="black" ];
+n9 [ shape=octagon, label="en", color="black", fontcolor="black" ];
+n10 [ shape=octagon, label="out", color="black", fontcolor="black" ];
+c14 [ shape=record, label="{{<p11> A|<p12> B}|$56\n$NaN|{<p13> Y}}" ];
+c15 [ shape=record, label="{{<p11> A|<p12> B}|$57\n$NaN|{<p13> Y}}" ];
+c16 [ shape=record, label="{{<p11> A|<p12> B}|$58\n$NaN|{<p13> Y}}" ];
+c17 [ shape=record, label="{{<p11> A|<p12> B}|$59\n$NaN|{<p13> Y}}" ];
+c18 [ shape=record, label="{{<p11> A|<p12> B}|$60\n$NaN|{<p13> Y}}" ];
+c19 [ shape=record, label="{{<p11> A}|$92\n$f2b|{<p13> Y}}" ];
+c23 [ shape=record, label="{{<p20> C|<p21> D}|$96\n$_DFF_P_|{<p22> Q}}" ];
+x0 [ shape=record, style=rounded, label="<s0> 0:0 - 0:0 " ];
+x0:e -> c23:p21:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x1 [ shape=record, style=rounded, label="<s0> 0:0 - 0:0 " ];
+c23:p22:e -> x1:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c24 [ shape=record, label="{{<p20> C|<p21> D}|$97\n$_DFF_P_|{<p22> Q}}" ];
+x2 [ shape=record, style=rounded, label="<s0> 1:1 - 0:0 " ];
+x2:e -> c24:p21:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x3 [ shape=record, style=rounded, label="<s0> 0:0 - 1:1 " ];
+c24:p22:e -> x3:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c25 [ shape=record, label="{{<p20> C|<p21> D}|$98\n$_DFF_P_|{<p22> Q}}" ];
+x4 [ shape=record, style=rounded, label="<s0> 2:2 - 0:0 " ];
+x4:e -> c25:p21:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x5 [ shape=record, style=rounded, label="<s0> 0:0 - 2:2 " ];
+c25:p22:e -> x5:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c26 [ shape=record, label="{{<p11> A}|$61\n$b2f|{<p13> Y}}" ];
+n1 [ shape=point ];
+x1:s0:e -> n1:w [color="black", label=""];
+x3:s0:e -> n1:w [color="black", label=""];
+x5:s0:e -> n1:w [color="black", label=""];
+n1:e -> c15:p11:w [color="black", label=""];
+n1:e -> c15:p12:w [color="black", label=""];
+n1:e -> c17:p12:w [color="black", label=""];
+n1:e -> c19:p11:w [color="black", label=""];
+c19:p13:e -> n10:w [color="black", label=""];
+n2 [ shape=point ];
+c18:p13:e -> n2:w [color="black", label=""];
+n2:e -> x0:s0:w [color="black", label=""];
+n2:e -> x2:s0:w [color="black", label=""];
+n2:e -> x4:s0:w [color="black", label=""];
+n3 [ shape=point ];
+c26:p13:e -> n3:w [color="black", style="setlinewidth(3)", label=""];
+n3:e -> c14:p11:w [color="black", style="setlinewidth(3)", label=""];
+n3:e -> c14:p12:w [color="black", style="setlinewidth(3)", label=""];
+n3:e -> c16:p11:w [color="black", style="setlinewidth(3)", label=""];
+c14:p13:e -> c17:p11:w [color="black", style="setlinewidth(3)", label=""];
+c16:p13:e -> c18:p11:w [color="black", style="setlinewidth(3)", label=""];
+c15:p13:e -> c16:p12:w [color="black", style="setlinewidth(3)", label=""];
+c17:p13:e -> c18:p12:w [color="black", style="setlinewidth(3)", label=""];
+n8:e -> c23:p20:w [color="black", label=""];
+n8:e -> c24:p20:w [color="black", label=""];
+n8:e -> c25:p20:w [color="black", label=""];
+n9:e -> c26:p11:w [color="black", label=""];
+}
diff --git a/figures/toggle-nan3-4.svg b/figures/toggle-nan3-4.svg
new file mode 100644 (file)
index 0000000..73fcc27
--- /dev/null
@@ -0,0 +1,395 @@
+<?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.40.1 (20161225.0304)
+ -->
+<!-- Title: toggle Pages: 1 -->
+<svg width="859pt" height="410pt"
+ viewBox="0.00 0.00 859.35 410.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 406)">
+<title>toggle</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-406 855.3519,-406 855.3519,4 -4,4"/>
+<text text-anchor="middle" x="425.6759" y="-6.8" font-family="Times,serif" font-size="14.00" fill="#000000">toggle</text>
+<!-- n2 -->
+<g id="node1" class="node">
+<title>n2</title>
+<ellipse fill="#000000" stroke="#000000" cx="1.8" cy="-245.5" rx="1.8" ry="1.8"/>
+</g>
+<!-- x0 -->
+<g id="node2" class="node">
+<title>x0</title>
+<path fill="none" stroke="#000000" d="M51.6,-365.5C51.6,-365.5 91.0414,-365.5 91.0414,-365.5 97.0414,-365.5 103.0414,-371.5 103.0414,-377.5 103.0414,-377.5 103.0414,-389.5 103.0414,-389.5 103.0414,-395.5 97.0414,-401.5 91.0414,-401.5 91.0414,-401.5 51.6,-401.5 51.6,-401.5 45.6,-401.5 39.6,-395.5 39.6,-389.5 39.6,-389.5 39.6,-377.5 39.6,-377.5 39.6,-371.5 45.6,-365.5 51.6,-365.5"/>
+<text text-anchor="middle" x="71.3207" y="-379.3" font-family="Times,serif" font-size="14.00" fill="#000000">0:0 &#45; 0:0</text>
+</g>
+<!-- n2&#45;&gt;x0 -->
+<g id="edge16" class="edge">
+<title>n2:e&#45;&gt;x0:w</title>
+<path fill="none" stroke="#000000" d="M3.6,-245.5C63.0243,-245.5 -13.0416,-366.7891 29.4464,-381.9502"/>
+<polygon fill="#000000" stroke="#000000" points="29.1864,-385.451 39.6,-383.5 30.2426,-378.5311 29.1864,-385.451"/>
+</g>
+<!-- x2 -->
+<g id="node3" class="node">
+<title>x2</title>
+<path fill="none" stroke="#000000" d="M51.6,-255.5C51.6,-255.5 91.0414,-255.5 91.0414,-255.5 97.0414,-255.5 103.0414,-261.5 103.0414,-267.5 103.0414,-267.5 103.0414,-279.5 103.0414,-279.5 103.0414,-285.5 97.0414,-291.5 91.0414,-291.5 91.0414,-291.5 51.6,-291.5 51.6,-291.5 45.6,-291.5 39.6,-285.5 39.6,-279.5 39.6,-279.5 39.6,-267.5 39.6,-267.5 39.6,-261.5 45.6,-255.5 51.6,-255.5"/>
+<text text-anchor="middle" x="71.3207" y="-269.3" font-family="Times,serif" font-size="14.00" fill="#000000">1:1 &#45; 0:0</text>
+</g>
+<!-- n2&#45;&gt;x2 -->
+<g id="edge17" class="edge">
+<title>n2:e&#45;&gt;x2:w</title>
+<path fill="none" stroke="#000000" d="M3.6,-245.5C19.7525,-245.5 20.1508,-263.2803 29.9031,-270.5035"/>
+<polygon fill="#000000" stroke="#000000" points="29.0124,-273.8915 39.6,-273.5 31.0791,-267.2035 29.0124,-273.8915"/>
+</g>
+<!-- x4 -->
+<g id="node4" class="node">
+<title>x4</title>
+<path fill="none" stroke="#000000" d="M51.6,-200.5C51.6,-200.5 91.0414,-200.5 91.0414,-200.5 97.0414,-200.5 103.0414,-206.5 103.0414,-212.5 103.0414,-212.5 103.0414,-224.5 103.0414,-224.5 103.0414,-230.5 97.0414,-236.5 91.0414,-236.5 91.0414,-236.5 51.6,-236.5 51.6,-236.5 45.6,-236.5 39.6,-230.5 39.6,-224.5 39.6,-224.5 39.6,-212.5 39.6,-212.5 39.6,-206.5 45.6,-200.5 51.6,-200.5"/>
+<text text-anchor="middle" x="71.3207" y="-214.3" font-family="Times,serif" font-size="14.00" fill="#000000">2:2 &#45; 0:0</text>
+</g>
+<!-- n2&#45;&gt;x4 -->
+<g id="edge18" class="edge">
+<title>n2:e&#45;&gt;x4:w</title>
+<path fill="none" stroke="#000000" d="M3.6,-245.5C19.5375,-245.5 20.2348,-228.3547 29.9809,-221.3895"/>
+<polygon fill="#000000" stroke="#000000" points="31.0297,-224.729 39.6,-218.5 29.0158,-218.0249 31.0297,-224.729"/>
+</g>
+<!-- c23 -->
+<g id="node5" class="node">
+<title>c23</title>
+<polygon fill="none" stroke="#000000" points="139.0414,-333.5 139.0414,-377.5 268.7309,-377.5 268.7309,-333.5 139.0414,-333.5"/>
+<text text-anchor="middle" x="152.0966" y="-362.3" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
+<polyline fill="none" stroke="#000000" points="139.0414,-355.5 165.1518,-355.5 "/>
+<text text-anchor="middle" x="152.0966" y="-340.3" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="165.1518,-333.5 165.1518,-377.5 "/>
+<text text-anchor="middle" x="203.8861" y="-358.3" font-family="Times,serif" font-size="14.00" fill="#000000">$96</text>
+<text text-anchor="middle" x="203.8861" y="-344.3" font-family="Times,serif" font-size="14.00" fill="#000000">$_DFF_P_</text>
+<polyline fill="none" stroke="#000000" points="242.6205,-333.5 242.6205,-377.5 "/>
+<text text-anchor="middle" x="255.6757" y="-351.3" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- x0&#45;&gt;c23 -->
+<g id="edge1" class="edge">
+<title>x0:e&#45;&gt;c23:w</title>
+<path fill="none" stroke="#000000" d="M114.2586,-378.7178C120.8316,-371.2327 121.2383,-356.8305 127.79,-349.3213"/>
+<polygon fill="none" stroke="#000000" points="114.0801,-378.7939 110.1295,-384.8265 103.0414,-383.5 106.992,-377.4674 114.0801,-378.7939"/>
+<polygon fill="none" stroke="#000000" points="128.0114,-349.2265 131.9509,-343.1866 139.0414,-344.5 135.1019,-350.5399 128.0114,-349.2265"/>
+</g>
+<!-- c24 -->
+<g id="node6" class="node">
+<title>c24</title>
+<polygon fill="none" stroke="#000000" points="139.0414,-270.5 139.0414,-314.5 268.7309,-314.5 268.7309,-270.5 139.0414,-270.5"/>
+<text text-anchor="middle" x="152.0966" y="-299.3" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
+<polyline fill="none" stroke="#000000" points="139.0414,-292.5 165.1518,-292.5 "/>
+<text text-anchor="middle" x="152.0966" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="165.1518,-270.5 165.1518,-314.5 "/>
+<text text-anchor="middle" x="203.8861" y="-295.3" font-family="Times,serif" font-size="14.00" fill="#000000">$97</text>
+<text text-anchor="middle" x="203.8861" y="-281.3" font-family="Times,serif" font-size="14.00" fill="#000000">$_DFF_P_</text>
+<polyline fill="none" stroke="#000000" points="242.6205,-270.5 242.6205,-314.5 "/>
+<text text-anchor="middle" x="255.6757" y="-288.3" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- x2&#45;&gt;c24 -->
+<g id="edge3" class="edge">
+<title>x2:e&#45;&gt;c24:w</title>
+<path fill="none" stroke="#000000" d="M115.1001,-275.2755C119.3279,-276.6012 122.7687,-278.405 126.9985,-279.7295"/>
+<polygon fill="none" stroke="#000000" points="114.9134,-275.2481 108.3947,-278.3314 103.0414,-273.5 109.5601,-270.4167 114.9134,-275.2481"/>
+<polygon fill="none" stroke="#000000" points="127.169,-279.7545 133.6871,-276.6698 139.0414,-281.5 132.5234,-284.5847 127.169,-279.7545"/>
+</g>
+<!-- c25 -->
+<g id="node7" class="node">
+<title>c25</title>
+<polygon fill="none" stroke="#000000" points="139.0414,-207.5 139.0414,-251.5 268.7309,-251.5 268.7309,-207.5 139.0414,-207.5"/>
+<text text-anchor="middle" x="152.0966" y="-236.3" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
+<polyline fill="none" stroke="#000000" points="139.0414,-229.5 165.1518,-229.5 "/>
+<text text-anchor="middle" x="152.0966" y="-214.3" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="165.1518,-207.5 165.1518,-251.5 "/>
+<text text-anchor="middle" x="203.8861" y="-232.3" font-family="Times,serif" font-size="14.00" fill="#000000">$98</text>
+<text text-anchor="middle" x="203.8861" y="-218.3" font-family="Times,serif" font-size="14.00" fill="#000000">$_DFF_P_</text>
+<polyline fill="none" stroke="#000000" points="242.6205,-207.5 242.6205,-251.5 "/>
+<text text-anchor="middle" x="255.6757" y="-225.3" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- x4&#45;&gt;c25 -->
+<g id="edge5" class="edge">
+<title>x4:e&#45;&gt;c25:w</title>
+<path fill="none" stroke="#000000" d="M115.2582,-218.5C119.3352,-218.5 122.7761,-218.5 126.8564,-218.5"/>
+<polygon fill="none" stroke="#000000" points="115.0414,-218.5001 109.0414,-222.5 103.0414,-218.5 109.0414,-214.5 115.0414,-218.5001"/>
+<polygon fill="none" stroke="#000000" points="127.0414,-218.5001 133.0414,-214.5 139.0414,-218.5 133.0414,-222.5 127.0414,-218.5001"/>
+</g>
+<!-- x1 -->
+<g id="node17" class="node">
+<title>x1</title>
+<path fill="none" stroke="#000000" d="M331.9516,-333.5C331.9516,-333.5 371.393,-333.5 371.393,-333.5 377.393,-333.5 383.393,-339.5 383.393,-345.5 383.393,-345.5 383.393,-357.5 383.393,-357.5 383.393,-363.5 377.393,-369.5 371.393,-369.5 371.393,-369.5 331.9516,-369.5 331.9516,-369.5 325.9516,-369.5 319.9516,-363.5 319.9516,-357.5 319.9516,-357.5 319.9516,-345.5 319.9516,-345.5 319.9516,-339.5 325.9516,-333.5 331.9516,-333.5"/>
+<text text-anchor="middle" x="351.6723" y="-347.3" font-family="Times,serif" font-size="14.00" fill="#000000">0:0 &#45; 0:0</text>
+</g>
+<!-- c23&#45;&gt;x1 -->
+<g id="edge2" class="edge">
+<title>c23:e&#45;&gt;x1:w</title>
+<path fill="none" stroke="#000000" d="M280.7304,-355.0719C290.8708,-354.3061 297.4411,-352.7095 307.5536,-351.9371"/>
+<polygon fill="none" stroke="#000000" points="280.7232,-355.0721 274.8697,-359.2835 268.7309,-355.5 274.5844,-351.2886 280.7232,-355.0721"/>
+<polygon fill="none" stroke="#000000" points="307.6801,-351.9327 313.5319,-347.7189 319.6723,-351.5 313.8204,-355.7137 307.6801,-351.9327"/>
+</g>
+<!-- x3 -->
+<g id="node18" class="node">
+<title>x3</title>
+<path fill="none" stroke="#000000" d="M331.9516,-272.5C331.9516,-272.5 371.393,-272.5 371.393,-272.5 377.393,-272.5 383.393,-278.5 383.393,-284.5 383.393,-284.5 383.393,-296.5 383.393,-296.5 383.393,-302.5 377.393,-308.5 371.393,-308.5 371.393,-308.5 331.9516,-308.5 331.9516,-308.5 325.9516,-308.5 319.9516,-302.5 319.9516,-296.5 319.9516,-296.5 319.9516,-284.5 319.9516,-284.5 319.9516,-278.5 325.9516,-272.5 331.9516,-272.5"/>
+<text text-anchor="middle" x="351.6723" y="-286.3" font-family="Times,serif" font-size="14.00" fill="#000000">0:0 &#45; 1:1</text>
+</g>
+<!-- c24&#45;&gt;x3 -->
+<g id="edge4" class="edge">
+<title>c24:e&#45;&gt;x3:w</title>
+<path fill="none" stroke="#000000" d="M281.1153,-292.2706C291.0641,-291.8807 297.6356,-291.0942 307.6721,-290.7146"/>
+<polygon fill="none" stroke="#000000" points="280.7288,-292.2776 274.804,-296.3881 268.7309,-292.5 274.6557,-288.3895 280.7288,-292.2776"/>
+<polygon fill="none" stroke="#000000" points="307.6742,-290.7147 313.6017,-286.608 319.6723,-290.5 313.7448,-294.6067 307.6742,-290.7147"/>
+</g>
+<!-- x5 -->
+<g id="node19" class="node">
+<title>x5</title>
+<path fill="none" stroke="#000000" d="M331.9516,-213.5C331.9516,-213.5 371.393,-213.5 371.393,-213.5 377.393,-213.5 383.393,-219.5 383.393,-225.5 383.393,-225.5 383.393,-237.5 383.393,-237.5 383.393,-243.5 377.393,-249.5 371.393,-249.5 371.393,-249.5 331.9516,-249.5 331.9516,-249.5 325.9516,-249.5 319.9516,-243.5 319.9516,-237.5 319.9516,-237.5 319.9516,-225.5 319.9516,-225.5 319.9516,-219.5 325.9516,-213.5 331.9516,-213.5"/>
+<text text-anchor="middle" x="351.6723" y="-227.3" font-family="Times,serif" font-size="14.00" fill="#000000">0:0 &#45; 2:2</text>
+</g>
+<!-- c25&#45;&gt;x5 -->
+<g id="edge6" class="edge">
+<title>c25:e&#45;&gt;x5:w</title>
+<path fill="none" stroke="#000000" d="M281.1153,-229.7294C291.0641,-230.1193 297.6356,-230.9058 307.6721,-231.2854"/>
+<polygon fill="none" stroke="#000000" points="280.7288,-229.7224 274.6557,-233.6105 268.7309,-229.5 274.804,-225.6119 280.7288,-229.7224"/>
+<polygon fill="none" stroke="#000000" points="307.6742,-231.2853 313.7448,-227.3933 319.6723,-231.5 313.6017,-235.392 307.6742,-231.2853"/>
+</g>
+<!-- n8 -->
+<g id="node8" class="node">
+<title>n8</title>
+<polygon fill="none" stroke="#000000" points="98.3207,-321.0442 98.3207,-335.9558 82.5045,-346.5 60.1369,-346.5 44.3207,-335.9558 44.3207,-321.0442 60.1369,-310.5 82.5045,-310.5 98.3207,-321.0442"/>
+<text text-anchor="middle" x="71.3207" y="-324.3" font-family="Times,serif" font-size="14.00" fill="#000000">clk</text>
+</g>
+<!-- n8&#45;&gt;c23 -->
+<g id="edge27" class="edge">
+<title>n8:e&#45;&gt;c23:w</title>
+<path fill="none" stroke="#000000" d="M98.3207,-328.5C119.0138,-328.5 116.2678,-355.0541 129.2699,-363.7671"/>
+<polygon fill="#000000" stroke="#000000" points="128.4682,-367.1772 139.0414,-366.5 130.3537,-360.4359 128.4682,-367.1772"/>
+</g>
+<!-- n8&#45;&gt;c24 -->
+<g id="edge28" class="edge">
+<title>n8:e&#45;&gt;c24:w</title>
+<path fill="none" stroke="#000000" d="M98.3207,-328.5C115.5755,-328.5 117.6537,-311.9961 129.2173,-305.8071"/>
+<polygon fill="#000000" stroke="#000000" points="130.1065,-309.1936 139.0414,-303.5 128.506,-302.379 130.1065,-309.1936"/>
+</g>
+<!-- n8&#45;&gt;c25 -->
+<g id="edge29" class="edge">
+<title>n8:e&#45;&gt;c25:w</title>
+<path fill="none" stroke="#000000" d="M98.3207,-328.5C137.376,-328.5 103.6932,-256.2266 129.1101,-242.6753"/>
+<polygon fill="#000000" stroke="#000000" points="130.0219,-246.0586 139.0414,-240.5 128.5241,-239.2207 130.0219,-246.0586"/>
+</g>
+<!-- n9 -->
+<g id="node9" class="node">
+<title>n9</title>
+<polygon fill="none" stroke="#000000" points="230.8861,-48.0442 230.8861,-62.9558 215.0699,-73.5 192.7024,-73.5 176.8861,-62.9558 176.8861,-48.0442 192.7024,-37.5 215.0699,-37.5 230.8861,-48.0442"/>
+<text text-anchor="middle" x="203.8861" y="-51.3" font-family="Times,serif" font-size="14.00" fill="#000000">en</text>
+</g>
+<!-- c26 -->
+<g id="node20" class="node">
+<title>c26</title>
+<polygon fill="none" stroke="#000000" points="304.7309,-37.5 304.7309,-73.5 398.6137,-73.5 398.6137,-37.5 304.7309,-37.5"/>
+<text text-anchor="middle" x="317.786" y="-51.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="330.8412,-37.5 330.8412,-73.5 "/>
+<text text-anchor="middle" x="351.6723" y="-58.3" font-family="Times,serif" font-size="14.00" fill="#000000">$61</text>
+<text text-anchor="middle" x="351.6723" y="-44.3" font-family="Times,serif" font-size="14.00" fill="#000000">$b2f</text>
+<polyline fill="none" stroke="#000000" points="372.5033,-37.5 372.5033,-73.5 "/>
+<text text-anchor="middle" x="385.5585" y="-51.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- n9&#45;&gt;c26 -->
+<g id="edge30" class="edge">
+<title>n9:e&#45;&gt;c26:w</title>
+<path fill="none" stroke="#000000" d="M230.8861,-55.5C259.9881,-55.5 269.7362,-55.5 294.4533,-55.5"/>
+<polygon fill="#000000" stroke="#000000" points="294.7309,-59.0001 304.7309,-55.5 294.7308,-52.0001 294.7309,-59.0001"/>
+</g>
+<!-- n10 -->
+<g id="node10" class="node">
+<title>n10</title>
+<polygon fill="none" stroke="#000000" points="689.6966,-274.0442 689.6966,-288.9558 673.8803,-299.5 651.5128,-299.5 635.6966,-288.9558 635.6966,-274.0442 651.5128,-263.5 673.8803,-263.5 689.6966,-274.0442"/>
+<text text-anchor="middle" x="662.6966" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">out</text>
+</g>
+<!-- c14 -->
+<g id="node11" class="node">
+<title>c14</title>
+<polygon fill="none" stroke="#000000" points="474.2137,-22.5 474.2137,-66.5 575.8689,-66.5 575.8689,-22.5 474.2137,-22.5"/>
+<text text-anchor="middle" x="487.2688" y="-51.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="474.2137,-44.5 500.324,-44.5 "/>
+<text text-anchor="middle" x="487.2688" y="-29.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="500.324,-22.5 500.324,-66.5 "/>
+<text text-anchor="middle" x="525.0413" y="-47.3" font-family="Times,serif" font-size="14.00" fill="#000000">$56</text>
+<text text-anchor="middle" x="525.0413" y="-33.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="549.7586,-22.5 549.7586,-66.5 "/>
+<text text-anchor="middle" x="562.8138" y="-40.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c17 -->
+<g id="node14" class="node">
+<title>c17</title>
+<polygon fill="none" stroke="#000000" points="611.8689,-84.5 611.8689,-128.5 713.5242,-128.5 713.5242,-84.5 611.8689,-84.5"/>
+<text text-anchor="middle" x="624.9241" y="-113.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="611.8689,-106.5 637.9793,-106.5 "/>
+<text text-anchor="middle" x="624.9241" y="-91.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="637.9793,-84.5 637.9793,-128.5 "/>
+<text text-anchor="middle" x="662.6966" y="-109.3" font-family="Times,serif" font-size="14.00" fill="#000000">$59</text>
+<text text-anchor="middle" x="662.6966" y="-95.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="687.4139,-84.5 687.4139,-128.5 "/>
+<text text-anchor="middle" x="700.469" y="-102.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c14&#45;&gt;c17 -->
+<g id="edge23" class="edge">
+<title>c14:e&#45;&gt;c17:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M575.8689,-44.5C607.9461,-44.5 582.9987,-101.8977 602.1563,-114.9019"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="601.3041,-118.2969 611.8689,-117.5 603.1131,-111.5347 601.3041,-118.2969"/>
+</g>
+<!-- c15 -->
+<g id="node12" class="node">
+<title>c15</title>
+<polygon fill="none" stroke="#000000" points="474.2137,-200.5 474.2137,-244.5 575.8689,-244.5 575.8689,-200.5 474.2137,-200.5"/>
+<text text-anchor="middle" x="487.2688" y="-229.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="474.2137,-222.5 500.324,-222.5 "/>
+<text text-anchor="middle" x="487.2688" y="-207.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="500.324,-200.5 500.324,-244.5 "/>
+<text text-anchor="middle" x="525.0413" y="-225.3" font-family="Times,serif" font-size="14.00" fill="#000000">$57</text>
+<text text-anchor="middle" x="525.0413" y="-211.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="549.7586,-200.5 549.7586,-244.5 "/>
+<text text-anchor="middle" x="562.8138" y="-218.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c16 -->
+<g id="node13" class="node">
+<title>c16</title>
+<polygon fill="none" stroke="#000000" points="611.8689,-200.5 611.8689,-244.5 713.5242,-244.5 713.5242,-200.5 611.8689,-200.5"/>
+<text text-anchor="middle" x="624.9241" y="-229.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="611.8689,-222.5 637.9793,-222.5 "/>
+<text text-anchor="middle" x="624.9241" y="-207.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="637.9793,-200.5 637.9793,-244.5 "/>
+<text text-anchor="middle" x="662.6966" y="-225.3" font-family="Times,serif" font-size="14.00" fill="#000000">$58</text>
+<text text-anchor="middle" x="662.6966" y="-211.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="687.4139,-200.5 687.4139,-244.5 "/>
+<text text-anchor="middle" x="700.469" y="-218.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c15&#45;&gt;c16 -->
+<g id="edge25" class="edge">
+<title>c15:e&#45;&gt;c16:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M575.8689,-222.5C588.5473,-222.5 593.0763,-216.1829 601.8073,-213.1231"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="602.554,-216.548 611.8689,-211.5 601.4391,-209.6373 602.554,-216.548"/>
+</g>
+<!-- c18 -->
+<g id="node15" class="node">
+<title>c18</title>
+<polygon fill="none" stroke="#000000" points="749.5242,-149.5 749.5242,-193.5 851.1795,-193.5 851.1795,-149.5 749.5242,-149.5"/>
+<text text-anchor="middle" x="762.5794" y="-178.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="749.5242,-171.5 775.6346,-171.5 "/>
+<text text-anchor="middle" x="762.5794" y="-156.3" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="775.6346,-149.5 775.6346,-193.5 "/>
+<text text-anchor="middle" x="800.3519" y="-174.3" font-family="Times,serif" font-size="14.00" fill="#000000">$60</text>
+<text text-anchor="middle" x="800.3519" y="-160.3" font-family="Times,serif" font-size="14.00" fill="#000000">$NaN</text>
+<polyline fill="none" stroke="#000000" points="825.0691,-149.5 825.0691,-193.5 "/>
+<text text-anchor="middle" x="838.1243" y="-167.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c16&#45;&gt;c18 -->
+<g id="edge24" class="edge">
+<title>c16:e&#45;&gt;c18:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M713.5242,-222.5C733.3309,-222.5 728.6188,-195.0684 739.9972,-185.6387"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="741.1216,-188.9534 749.5242,-182.5 738.9312,-182.3049 741.1216,-188.9534"/>
+</g>
+<!-- c17&#45;&gt;c18 -->
+<g id="edge26" class="edge">
+<title>c17:e&#45;&gt;c18:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M713.5242,-106.5C738.087,-106.5 726.0052,-145.6586 739.6892,-157.2838"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="738.9316,-160.7184 749.5242,-160.5 741.1074,-154.0651 738.9316,-160.7184"/>
+</g>
+<!-- c18&#45;&gt;n2 -->
+<g id="edge15" class="edge">
+<title>c18:e&#45;&gt;n2:w</title>
+<path fill="none" stroke="#000000" d="M851.3519,-171.5C851.3519,-171.5 749.5242,-194 749.5242,-194 737.0061,-193.3742 537.5751,-171.5 525.0413,-171.5 203.8861,-171.5 203.8861,-171.5 203.8861,-171.5 130.3834,-171.5 101.8554,-151.4242 39.6,-190.5 17.2521,-204.5271 26.7141,-226.8275 8.6071,-240.535"/>
+<polygon fill="#000000" stroke="#000000" points="6.7923,-237.5402 -.2,-245.5 10.2299,-243.6379 6.7923,-237.5402"/>
+</g>
+<!-- c19 -->
+<g id="node16" class="node">
+<title>c19</title>
+<polygon fill="none" stroke="#000000" points="478.0999,-263.5 478.0999,-299.5 571.9827,-299.5 571.9827,-263.5 478.0999,-263.5"/>
+<text text-anchor="middle" x="491.1551" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="504.2103,-263.5 504.2103,-299.5 "/>
+<text text-anchor="middle" x="525.0413" y="-284.3" font-family="Times,serif" font-size="14.00" fill="#000000">$92</text>
+<text text-anchor="middle" x="525.0413" y="-270.3" font-family="Times,serif" font-size="14.00" fill="#000000">$f2b</text>
+<polyline fill="none" stroke="#000000" points="545.8724,-263.5 545.8724,-299.5 "/>
+<text text-anchor="middle" x="558.9275" y="-277.3" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c19&#45;&gt;n10 -->
+<g id="edge14" class="edge">
+<title>c19:e&#45;&gt;n10:w</title>
+<path fill="none" stroke="#000000" d="M572.0413,-281.5C596.5751,-281.5 605.1524,-281.5 625.4477,-281.5"/>
+<polygon fill="#000000" stroke="#000000" points="625.6966,-285.0001 635.6966,-281.5 625.6965,-278.0001 625.6966,-285.0001"/>
+</g>
+<!-- n1 -->
+<g id="node21" class="node">
+<title>n1</title>
+<ellipse fill="#000000" stroke="#000000" cx="436.4137" cy="-233.5" rx="1.8" ry="1.8"/>
+</g>
+<!-- x1&#45;&gt;n1 -->
+<g id="edge7" class="edge">
+<title>x1:e&#45;&gt;n1:w</title>
+<path fill="none" stroke="#000000" d="M383.6723,-351.5C436.7786,-351.5 385.7976,-249.5104 424.2667,-235.1681"/>
+<polygon fill="#000000" stroke="#000000" points="425.2982,-238.5471 434.6137,-233.5 424.1841,-231.6363 425.2982,-238.5471"/>
+</g>
+<!-- x3&#45;&gt;n1 -->
+<g id="edge8" class="edge">
+<title>x3:e&#45;&gt;n1:w</title>
+<path fill="none" stroke="#000000" d="M383.6723,-290.5C413.6668,-290.5 403.9243,-246.0766 424.6054,-235.6649"/>
+<polygon fill="#000000" stroke="#000000" points="425.5797,-239.0351 434.6137,-233.5 424.0997,-232.1934 425.5797,-239.0351"/>
+</g>
+<!-- x5&#45;&gt;n1 -->
+<g id="edge9" class="edge">
+<title>x5:e&#45;&gt;n1:w</title>
+<path fill="none" stroke="#000000" d="M383.6723,-231.5C402.436,-231.5 409.5188,-232.8716 424.2671,-233.3431"/>
+<polygon fill="#000000" stroke="#000000" points="424.5617,-236.8478 434.6137,-233.5 424.6679,-229.8486 424.5617,-236.8478"/>
+</g>
+<!-- n3 -->
+<g id="node22" class="node">
+<title>n3</title>
+<ellipse fill="#000000" stroke="#000000" cx="436.4137" cy="-55.5" rx="1.8" ry="1.8"/>
+</g>
+<!-- c26&#45;&gt;n3 -->
+<g id="edge19" class="edge">
+<title>c26:e&#45;&gt;n3:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M398.6137,-55.5C410.6137,-55.5 415.8637,-55.5 424.4887,-55.5"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="424.6137,-59.0001 434.6137,-55.5 424.6136,-52.0001 424.6137,-59.0001"/>
+</g>
+<!-- n1&#45;&gt;c15 -->
+<g id="edge10" class="edge">
+<title>n1:e&#45;&gt;c15:w</title>
+<path fill="none" stroke="#000000" d="M438.2137,-233.5C450.2137,-233.5 455.4637,-233.5 464.0887,-233.5"/>
+<polygon fill="#000000" stroke="#000000" points="464.2137,-237.0001 474.2137,-233.5 464.2136,-230.0001 464.2137,-237.0001"/>
+</g>
+<!-- n1&#45;&gt;c15 -->
+<g id="edge11" class="edge">
+<title>n1:e&#45;&gt;c15:w</title>
+<path fill="none" stroke="#000000" d="M438.2137,-233.5C452.863,-233.5 455.1506,-220.0723 464.3917,-214.1976"/>
+<polygon fill="#000000" stroke="#000000" points="465.4977,-217.5235 474.2137,-211.5 463.6438,-210.7735 465.4977,-217.5235"/>
+</g>
+<!-- n1&#45;&gt;c17 -->
+<g id="edge12" class="edge">
+<title>n1:e&#45;&gt;c17:w</title>
+<path fill="none" stroke="#000000" d="M438.2137,-233.5C463.1382,-233.5 455.7896,-207.2865 474.2137,-190.5 526.5861,-142.7826 536.6465,-99.724 601.8388,-95.7921"/>
+<polygon fill="#000000" stroke="#000000" points="601.9751,-99.2897 611.8689,-95.5 601.7713,-92.2927 601.9751,-99.2897"/>
+</g>
+<!-- n1&#45;&gt;c19 -->
+<g id="edge13" class="edge">
+<title>n1:e&#45;&gt;c19:w</title>
+<path fill="none" stroke="#000000" d="M438.2137,-233.5C461.8197,-233.5 454.0011,-268.3076 468.2779,-278.6411"/>
+<polygon fill="#000000" stroke="#000000" points="467.4607,-282.0487 478.0413,-281.5 469.4279,-275.3308 467.4607,-282.0487"/>
+</g>
+<!-- n3&#45;&gt;c14 -->
+<g id="edge20" class="edge">
+<title>n3:e&#45;&gt;c14:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M438.2137,-55.5C450.2137,-55.5 455.4637,-55.5 464.0887,-55.5"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="464.2137,-59.0001 474.2137,-55.5 464.2136,-52.0001 464.2137,-59.0001"/>
+</g>
+<!-- n3&#45;&gt;c14 -->
+<g id="edge21" class="edge">
+<title>n3:e&#45;&gt;c14:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M438.2137,-55.5C452.863,-55.5 455.1506,-42.0723 464.3917,-36.1976"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="465.4977,-39.5235 474.2137,-33.5 463.6438,-32.7735 465.4977,-39.5235"/>
+</g>
+<!-- n3&#45;&gt;c16 -->
+<g id="edge22" class="edge">
+<title>n3:e&#45;&gt;c16:w</title>
+<path fill="none" stroke="#000000" stroke-width="3" d="M438.2137,-55.5C459.6365,-55.5 561.3279,-174.768 575.8689,-190.5 590.0113,-205.8006 588.2488,-225.5685 601.8494,-231.6431"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="3" points="601.3986,-235.119 611.8689,-233.5 602.6742,-228.2362 601.3986,-235.119"/>
+</g>
+</g>
+</svg>
diff --git a/figures/toggle-nan3.afdesign b/figures/toggle-nan3.afdesign
new file mode 100644 (file)
index 0000000..47c55d5
Binary files /dev/null and b/figures/toggle-nan3.afdesign differ
diff --git a/figures/toggle-nan3.dot b/figures/toggle-nan3.dot
new file mode 100644 (file)
index 0000000..0be204b
--- /dev/null
@@ -0,0 +1,58 @@
+digraph "toggle" {
+label="toggle";
+rankdir="LR";
+remincross=true;
+n8 [ shape=octagon, label="clk", color="black", fontcolor="black" ];
+n9 [ shape=octagon, label="en", color="black", fontcolor="black" ];
+n10 [ shape=octagon, label="out", color="black", fontcolor="black" ];
+c14 [ shape=record, label="{{<p11> A|<p12> B}|$56\n$NaN|{<p13> Y}}" ];
+c15 [ shape=record, label="{{<p11> A|<p12> B}|$57\n$NaN|{<p13> Y}}" ];
+c16 [ shape=record, label="{{<p11> A|<p12> B}|$58\n$NaN|{<p13> Y}}" ];
+c17 [ shape=record, label="{{<p11> A|<p12> B}|$59\n$NaN|{<p13> Y}}" ];
+c18 [ shape=record, label="{{<p11> A|<p12> B}|$60\n$NaN|{<p13> Y}}" ];
+c19 [ shape=record, label="{{<p11> A}|$92\n$f2b|{<p13> Y}}" ];
+c23 [ shape=record, label="{{<p20> C|<p21> D}|$96\n$_DFF_P_|{<p22> Q}}" ];
+x0 [ shape=record, style=rounded, label="<s0> 0:0 - 0:0 " ];
+x0:e -> c23:p21:s [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x1 [ shape=record, style=rounded, label="<s0> 0:0 - 0:0 " ];
+c23:p22:e -> x1:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c24 [ shape=record, label="{{<p20> C|<p21> D}|$97\n$_DFF_P_|{<p22> Q}}" ];
+x2 [ shape=record, style=rounded, label="<s0> 1:1 - 0:0 " ];
+x2:e -> c24:p21:s [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x3 [ shape=record, style=rounded, label="<s0> 0:0 - 1:1 " ];
+c24:p22:e -> x3:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c25 [ shape=record, label="{{<p20> C|<p21> D}|$98\n$_DFF_P_|{<p22> Q}}" ];
+{rank=same; c23; c24; c25;};
+x4 [ shape=record, style=rounded, label="<s0> 2:2 - 0:0 " ];
+x4:e -> c25:p21:s [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+x5 [ shape=record, style=rounded, label="<s0> 0:0 - 2:2 " ];
+c25:p22:e -> x5:w [arrowhead=odiamond, arrowtail=odiamond, dir=both, color="black", label=""];
+c26 [ shape=record, label="{{<p11> A}|$61\n$b2f|{<p13> Y}}" ];
+n1 [ shape=point ];
+x1:s0:e -> n1:w [color="black", label=""];
+x3:s0:e -> n1:w [color="black", label=""];
+x5:s0:e -> n1:w [color="black", label=""];
+n1:e -> c15:p11:w [color="black", label=""];
+n1:e -> c15:p12:w [color="black", label=""];
+n1:e -> c17:p12:w [color="black", label=""];
+n1:e -> c19:p11:w [color="black", label=""];
+c19:p13:e -> n10:w [color="black", label=""];
+n2 [ shape=point ];
+c18:p13:e -> n2:w [color="black", label=""];
+n2:e -> x0:s0:w [color="black", label=""];
+n2:e -> x2:s0:w [color="black", label=""];
+n2:e -> x4:s0:w [color="black", label=""];
+n3 [ shape=point ];
+c26:p13:e -> n3:w [color="black", style="setlinewidth(3)", label=""];
+n3:e -> c14:p11:w [color="black", style="setlinewidth(3)", label=""];
+n3:e -> c14:p12:w [color="black", style="setlinewidth(3)", label=""];
+n3:e -> c16:p11:w [color="black", style="setlinewidth(3)", label=""];
+c14:p13:e -> c17:p11:w [color="black", style="setlinewidth(3)", label=""];
+c16:p13:e -> c18:p11:w [color="black", style="setlinewidth(3)", label=""];
+c15:p13:e -> c16:p12:w [color="black", style="setlinewidth(3)", label=""];
+c17:p13:e -> c18:p12:w [color="black", style="setlinewidth(3)", label=""];
+n8:e -> c23:p20:w [color="black", label=""];
+n8:e -> c24:p20:w [color="black", label=""];
+n8:e -> c25:p20:w [color="black", label=""];
+n9:e -> c26:p11:w [color="black", label=""];
+}
diff --git a/figures/toggle-nan3.svg b/figures/toggle-nan3.svg
new file mode 100644 (file)
index 0000000..e7245ba
--- /dev/null
@@ -0,0 +1,418 @@
+<?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">
+<svg width="100%" height="100%" viewBox="0 0 965 423" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;">
+    <g id="graph0" transform="matrix(1,0,0,1,3.99547,419.008)">
+        <rect x="-3.329" y="-419.008" width="963.669" height="423.003" style="fill:white;fill-rule:nonzero;"/>
+        <g id="node1" transform="matrix(1.04576,0,0,1.04576,39.8037,-66.3179)">
+            <path d="M54.606,-278.555L54.606,-293.45L38.807,-303.982L16.465,-303.982L0.667,-293.45L0.667,-278.555L16.465,-268.023L38.807,-268.023L54.606,-278.555Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,27.6362,-281.808)">
+                <text x="-8.542px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">clk</text>
+            </g>
+        </g>
+        <g id="node10" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <rect x="90.565" y="-368.909" width="129.543" height="43.95" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,103.605,-353.726)">
+                <text x="-4.664px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">C</text>
+            </g>
+            <path d="M90.565,-346.934L116.646,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,103.605,-331.751)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">D</text>
+            </g>
+            <path d="M116.646,-324.959L116.646,-368.909" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,155.336,-349.731)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$96</text>
+            </g>
+            <g transform="matrix(1,0,0,1,155.336,-335.746)">
+                <text x="-30.7px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$_DFF_P_</text>
+            </g>
+            <path d="M194.026,-324.959L194.026,-368.909" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,207.067,-342.738)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Q</text>
+            </g>
+        </g>
+        <g id="edge27" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M-0.274,-357.014C31.275,-357.014 61.247,-354.277 80.707,-355.19" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(0.935249,0.35399,-0.35399,0.935249,-120.778,-51.6794)">
+                <path d="M80.005,-358.623L90.565,-357.921L81.872,-351.885L80.005,-358.623Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+        </g>
+        <g id="node13" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <rect x="90.565" y="-296.99" width="129.543" height="43.95" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,103.605,-281.808)">
+                <text x="-4.664px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">C</text>
+            </g>
+            <path d="M90.565,-275.015L116.646,-275.015" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,103.605,-259.833)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">D</text>
+            </g>
+            <path d="M116.646,-253.04L116.646,-296.99" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,155.336,-277.812)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$97</text>
+            </g>
+            <g transform="matrix(1,0,0,1,155.336,-263.828)">
+                <text x="-30.7px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$_DFF_P_</text>
+            </g>
+            <path d="M194.026,-253.04L194.026,-296.99" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,207.067,-270.82)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Q</text>
+            </g>
+        </g>
+        <g id="edge28" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M-0.274,-357.014C38.198,-360.251 71.836,-286.003 80.451,-286.003" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M80.576,-289.499L90.565,-286.003L80.576,-282.507L80.576,-289.499Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="node16" transform="matrix(1.04576,0,0,1.04576,93.9361,-57.2557)">
+            <rect x="90.565" y="-145.163" width="129.543" height="43.95" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,103.605,-129.98)">
+                <text x="-4.664px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">C</text>
+            </g>
+            <path d="M90.565,-123.188L116.646,-123.188" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,103.605,-108.005)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">D</text>
+            </g>
+            <path d="M116.646,-101.213L116.646,-145.163" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,155.336,-125.984)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$98</text>
+            </g>
+            <g transform="matrix(1,0,0,1,155.336,-112)">
+                <text x="-30.7px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$_DFF_P_</text>
+            </g>
+            <path d="M194.026,-101.213L194.026,-145.163" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,207.067,-118.992)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Q</text>
+            </g>
+        </g>
+        <g id="edge29" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <g transform="matrix(1,0,0,0.62654,2.22045e-15,-106.811)">
+                <path d="M-0.274,-399.341C65.144,-399.341 32.305,-150.887 80.375,-135.581" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <g transform="matrix(1,0,0,1,0,-56.2171)">
+                <path d="M81.148,-139.004L90.565,-134.175L80.192,-132.077L81.148,-139.004Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+        </g>
+        <g id="node2" transform="matrix(1.04576,0,0,1.04576,98.0015,77.1493)">
+            <path d="M182.305,-174.673L182.305,-189.568L166.507,-200.1L144.165,-200.1L128.367,-189.568L128.367,-174.673L144.165,-164.141L166.507,-164.141L182.305,-174.673Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,155.336,-177.925)">
+                <text x="-6.599px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">en</text>
+            </g>
+        </g>
+        <g id="node19" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <rect x="256.066" y="-135.174" width="93.776" height="35.959" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,269.107,-112.999)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+            </g>
+            <path d="M282.147,-99.215L282.147,-135.174" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,302.955,-119.991)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$61</text>
+            </g>
+            <g transform="matrix(1,0,0,1,302.955,-106.007)">
+                <text x="-12.817px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$b2f</text>
+            </g>
+            <path d="M323.762,-99.215L323.762,-135.174" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,336.802,-112.999)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+            </g>
+        </g>
+        <g id="edge30" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M183.077,-115.942C203.976,-115.942 233.971,-124.838 246.059,-119.147" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M246.932,-122.539L256.066,-117.194L245.593,-115.676L246.932,-122.539Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="node3" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M640.596,-282.551L640.596,-297.446L624.797,-307.978L602.455,-307.978L586.657,-297.446L586.657,-282.551L602.455,-272.019L624.797,-272.019L640.596,-282.551Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,613.626,-285.803)">
+                <text x="-8.935px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">out</text>
+            </g>
+        </g>
+        <g id="node4" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <rect x="425.357" y="-113.199" width="101.54" height="43.95" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,438.397,-98.0162)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+            </g>
+            <path d="M425.357,-91.224L451.438,-91.224" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,438.397,-76.0411)">
+                <text x="-4.664px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+            </g>
+            <path d="M451.438,-69.249L451.438,-113.199" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,476.127,-94.0207)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$56</text>
+            </g>
+            <g transform="matrix(1,0,0,1,476.127,-80.0366)">
+                <text x="-16.698px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+            </g>
+            <path d="M500.816,-69.249L500.816,-113.199" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,513.857,-87.0286)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+            </g>
+        </g>
+        <g id="node7" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <rect x="562.856" y="-190.112" width="101.54" height="43.95" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,575.897,-174.929)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+            </g>
+            <path d="M562.856,-168.137L588.937,-168.137" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,575.897,-152.954)">
+                <text x="-4.664px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+            </g>
+            <path d="M588.937,-146.162L588.937,-190.112" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,613.626,-170.933)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$59</text>
+            </g>
+            <g transform="matrix(1,0,0,1,613.626,-156.949)">
+                <text x="-16.698px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+            </g>
+            <path d="M638.316,-146.162L638.316,-190.112" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,651.356,-163.941)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+            </g>
+        </g>
+        <g id="edge23" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M526.897,-91.224C564.985,-91.224 529.247,-162.794 552.915,-176.773" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            <path d="M552.331,-180.227L562.856,-179.124L553.941,-173.423L552.331,-180.227Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+        </g>
+        <g id="node5" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <rect x="425.357" y="-253.04" width="101.54" height="43.95" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,438.397,-237.857)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+            </g>
+            <path d="M425.357,-231.065L451.438,-231.065" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,438.397,-215.882)">
+                <text x="-4.664px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+            </g>
+            <path d="M451.438,-209.09L451.438,-253.04" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,476.127,-233.862)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$57</text>
+            </g>
+            <g transform="matrix(1,0,0,1,476.127,-219.878)">
+                <text x="-16.698px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+            </g>
+            <path d="M500.816,-209.09L500.816,-253.04" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,513.857,-226.87)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+            </g>
+        </g>
+        <g id="node6" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <rect x="562.856" y="-253.04" width="101.54" height="43.95" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,575.897,-237.857)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+            </g>
+            <path d="M562.856,-231.065L588.937,-231.065" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,575.897,-215.882)">
+                <text x="-4.664px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+            </g>
+            <path d="M588.937,-209.09L588.937,-253.04" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,613.626,-233.862)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$58</text>
+            </g>
+            <g transform="matrix(1,0,0,1,613.626,-219.878)">
+                <text x="-16.698px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+            </g>
+            <path d="M638.316,-209.09L638.316,-253.04" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,651.356,-226.87)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+            </g>
+        </g>
+        <g id="edge25" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M526.897,-231.065C539.561,-231.065 544.085,-224.755 552.806,-221.699" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            <path d="M553.552,-225.12L562.856,-220.078L552.438,-218.217L553.552,-225.12Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+        </g>
+        <g id="node8" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <rect x="700.356" y="-242.053" width="101.54" height="43.95" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,713.396,-226.87)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+            </g>
+            <path d="M700.356,-220.078L726.436,-220.078" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,713.396,-204.895)">
+                <text x="-4.664px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">B</text>
+            </g>
+            <path d="M726.436,-198.103L726.436,-242.053" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,751.126,-222.874)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$60</text>
+            </g>
+            <g transform="matrix(1,0,0,1,751.126,-208.89)">
+                <text x="-16.698px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$NaN</text>
+            </g>
+            <path d="M775.815,-198.103L775.815,-242.053" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,788.855,-215.882)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+            </g>
+        </g>
+        <g id="edge24" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M664.396,-231.065L690.242,-231.065" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            <path d="M690.367,-234.561L700.356,-231.065L690.367,-227.569L690.367,-234.561Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+        </g>
+        <g id="edge26" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M664.396,-168.137C684.455,-168.137 679.341,-196.222 690.746,-205.877" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            <path d="M689.774,-209.238L700.356,-209.09L691.991,-202.606L689.774,-209.238Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+        </g>
+        <g id="node21" transform="matrix(1.04576,0,0,1.04576,-853.645,47.4226)">
+            <circle cx="839.653" cy="-263.029" r="1.798" style="stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="edge15" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M801.896,-220.078C822.513,-220.078 836.221,-47.363 793.547,-44.339C726.705,-39.602 147.302,-30.914 -44.763,-44.612C-99.733,-48.532 -100.913,-216.514 -79.028,-221.97" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+            <g transform="matrix(1,0,0,1,-907.438,37.8096)">
+                <path d="M827.272,-263.086L837.855,-263.029L829.546,-256.474L827.272,-263.086Z" style="fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+            </g>
+        </g>
+        <g id="node9" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <rect x="429.239" y="-307.978" width="93.776" height="35.959" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,442.279,-285.803)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">A</text>
+            </g>
+            <path d="M455.32,-272.019L455.32,-307.978" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,476.127,-292.795)">
+                <text x="-10.488px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$92</text>
+            </g>
+            <g transform="matrix(1,0,0,1,476.127,-278.811)">
+                <text x="-12.817px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">$f2b</text>
+            </g>
+            <path d="M496.935,-272.019L496.935,-307.978" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,509.975,-285.803)">
+                <text x="-5.049px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">Y</text>
+            </g>
+        </g>
+        <g id="edge14" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M523.074,-289.998L576.42,-289.998" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M576.668,-293.494L586.657,-289.998L576.668,-286.502L576.668,-293.494Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="node12" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M283.256,-328.954L322.653,-328.954C328.646,-328.954 334.639,-334.947 334.639,-340.941L334.639,-352.927C334.639,-358.92 328.646,-364.913 322.653,-364.913L283.256,-364.913C277.263,-364.913 271.27,-358.92 271.27,-352.927L271.27,-340.941C271.27,-334.947 277.263,-328.954 283.256,-328.954" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,302.955,-342.738)">
+                <text x="-23.694px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">0:0 - 0:0</text>
+            </g>
+        </g>
+        <g id="edge2" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M232.473,-346.934L258.694,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M232.094,-346.934L226.1,-350.929L220.107,-346.934L226.1,-342.938L232.094,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M259.005,-346.934L264.998,-342.938L270.991,-346.934L264.998,-350.929L259.005,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="edge21" serif:id="edge2" transform="matrix(1.04576,0,0,1.04576,-94.7459,187.42)">
+            <path d="M226.939,-346.934L258.694,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,-5.15459,0)">
+                <path d="M232.094,-346.934L226.1,-350.929L220.107,-346.934L226.1,-342.938L232.094,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <path d="M259.005,-346.934L264.998,-342.938L270.991,-346.934L264.998,-350.929L259.005,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="edge22" serif:id="edge2" transform="matrix(1.04576,0,0,1.04576,-91.8159,94.1474)">
+            <path d="M224.137,-315.323C233.97,-315.323 248.846,-346.934 258.694,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,-7.95634,31.6113)">
+                <path d="M232.094,-346.934L226.1,-350.929L220.107,-346.934L226.1,-342.938L232.094,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <path d="M259.005,-346.934L264.998,-342.938L270.991,-346.934L264.998,-350.929L259.005,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="edge210" serif:id="edge2" transform="matrix(1.04576,0,0,1.04576,-91.8159,18.8708)">
+            <path d="M224.137,-298.386C233.97,-298.386 248.846,-346.934 258.694,-346.934" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,-7.95634,48.5477)">
+                <path d="M232.094,-346.934L226.1,-350.929L220.107,-346.934L226.1,-342.938L232.094,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <path d="M259.005,-346.934L264.998,-342.938L270.991,-346.934L264.998,-350.929L259.005,-346.934Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="node11" transform="matrix(1.04576,0,0,1.04576,-853.785,90.0674)">
+            <path d="M889.396,-348.931L928.793,-348.931C934.786,-348.931 940.779,-354.925 940.779,-360.918L940.779,-372.904C940.779,-378.897 934.786,-384.891 928.793,-384.891L889.396,-384.891C883.403,-384.891 877.41,-378.897 877.41,-372.904L877.41,-360.918C877.41,-354.925 883.403,-348.931 889.396,-348.931" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,909.095,-362.716)">
+                <text x="-23.694px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">0:0 - 0:0</text>
+            </g>
+        </g>
+        <g id="node20" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <circle cx="387.6" cy="-242.053" r="1.798" style="stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="edge7" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M334.918,-346.934C382.883,-346.934 341.244,-257.043 375.908,-243.7" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M376.523,-247.142L385.802,-242.053L375.375,-240.245L376.523,-247.142Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="node15" transform="matrix(1.04576,0,0,1.04576,97.0694,29.5841)">
+            <path d="M283.256,-274.016L322.653,-274.016C328.646,-274.016 334.639,-280.01 334.639,-286.003L334.639,-297.989C334.639,-303.982 328.646,-309.976 322.653,-309.976L283.256,-309.976C277.263,-309.976 271.27,-303.982 271.27,-297.989L271.27,-286.003C271.27,-280.01 277.263,-274.016 283.256,-274.016" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,302.955,-287.801)">
+                <text x="-23.694px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">0:0 - 1:1</text>
+            </g>
+        </g>
+        <g id="edge4" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M232.022,-276.706C242.709,-275.274 248.898,-272.284 259.255,-271.301" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M231.975,-276.699L225.48,-279.813L220.107,-275.015L226.602,-271.901L231.975,-276.699Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(0.97028,0.241984,-0.241984,0.97028,-62.4182,-52.9377)">
+                <path d="M259.123,-290.316L265.617,-287.2L270.991,-291.996L264.497,-295.112L259.123,-290.316Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+        </g>
+        <g id="node14" transform="matrix(1.04576,0,0,1.04576,-853.785,67.7277)">
+            <path d="M889.396,-272.019L928.793,-272.019C934.786,-272.019 940.779,-278.012 940.779,-284.005L940.779,-295.992C940.779,-301.985 934.786,-307.978 928.793,-307.978L889.396,-307.978C883.403,-307.978 877.41,-301.985 877.41,-295.992L877.41,-284.005C877.41,-278.012 883.403,-272.019 889.396,-272.019" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,909.095,-285.803)">
+                <text x="-23.694px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">1:1 - 0:0</text>
+            </g>
+        </g>
+        <g id="edge8" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M334.52,-271.739C362.247,-271.739 356.547,-253.758 375.817,-244.199" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M376.771,-247.57L385.802,-242.053L375.302,-240.734L376.771,-247.57Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="node18" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M283.256,-160.146L322.653,-160.146C328.646,-160.146 334.639,-166.139 334.639,-172.132L334.639,-184.118C334.639,-190.112 328.646,-196.105 322.653,-196.105L283.256,-196.105C277.263,-196.105 271.27,-190.112 271.27,-184.118L271.27,-172.132C271.27,-166.139 277.263,-160.146 283.256,-160.146" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,302.955,-173.93)">
+                <text x="-23.694px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">0:0 - 2:2</text>
+            </g>
+        </g>
+        <g id="edge6" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M229.112,-181.338C250.014,-181.06 245.806,-175.778 259.217,-174.939" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(0.94848,0.316836,-0.316836,0.94848,-30.6543,-134.884)">
+                <path d="M231.665,-126.365L224.827,-128.629L220.107,-123.188L226.945,-120.923L231.665,-126.365Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+            <path d="M259.421,-174.994L266.249,-172.703L270.991,-178.125L264.162,-180.416L259.421,-174.994Z" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="node17" transform="matrix(1.04576,0,0,1.04576,-853.785,6.33733)">
+            <path d="M889.396,-155.151L928.793,-155.151C934.786,-155.151 940.779,-161.145 940.779,-167.138L940.779,-179.124C940.779,-185.117 934.786,-191.111 928.793,-191.111L889.396,-191.111C883.403,-191.111 877.41,-185.117 877.41,-179.124L877.41,-167.138C877.41,-161.145 883.403,-155.151 889.396,-155.151" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,909.095,-168.936)">
+                <text x="-23.694px" y="0px" style="font-family:'Times-Roman', 'Times';font-size:13.984px;">2:2 - 0:0</text>
+            </g>
+        </g>
+        <g id="edge9" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M334.918,-178.125C367.26,-178.125 353.55,-228.833 375.818,-239.926" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M375.304,-243.391L385.802,-242.053L376.761,-236.552L375.304,-243.391Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="node22" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <circle cx="387.6" cy="-112.2" r="1.798" style="stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="edge19" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M349.843,-117.194C361.944,-117.194 367.045,-114.385 375.645,-112.98" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            <path d="M376.111,-116.451L385.802,-112.2L375.575,-109.48L376.111,-116.451Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+        </g>
+        <g id="edge10" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M389.398,-242.053L415.244,-242.053" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+            <path d="M415.368,-245.549L425.357,-242.053L415.368,-238.557L415.368,-245.549Z" style="fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+        </g>
+        <g id="edge11" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M389.398,-242.053C404.031,-242.053 406.316,-228.64 415.546,-222.772" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+            <path d="M416.651,-226.094L425.357,-220.078L414.799,-219.352L416.651,-226.094Z" style="fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+        </g>
+        <g id="edge12" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M389.398,-242.053C413.955,-242.053 404.849,-213.609 425.357,-200.1C475.899,-166.808 496.545,-158.077 552.735,-157.222" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+            <path d="M552.893,-160.717L562.856,-157.149L552.843,-153.725L552.893,-160.717Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="edge13" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M389.398,-242.053C412.977,-242.053 405.167,-276.821 419.428,-287.143" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+            <path d="M418.612,-290.546L429.18,-289.998L420.577,-283.836L418.612,-290.546Z" style="fill-rule:nonzero;stroke:black;stroke-width:2.96px;"/>
+        </g>
+        <g id="edge16" transform="matrix(1.04576,0,0,1.04576,-855.037,90.0877)">
+            <path d="M842.781,-303.827C876.184,-313.29 837.94,-350.567 867.497,-364.929" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M866.93,-368.38L877.41,-366.911L868.301,-361.524L866.93,-368.38Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="edge17" transform="matrix(1.04576,0,0,1.04576,-853.645,67.745)">
+            <path d="M841.451,-282.462C857.37,-282.462 857.534,-284.515 867.802,-287.112" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <path d="M866.838,-290.473L877.41,-289.998L868.849,-283.776L866.838,-290.473Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+        </g>
+        <g id="edge18" transform="matrix(1.04576,0,0,1.04576,-853.645,67.745)">
+            <path d="M841.451,-282.462C880.449,-282.462 843.013,-246.161 867.669,-232.317" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            <g transform="matrix(1,0,0,1,0,-56.9773)">
+                <path d="M868.442,-178.749L877.41,-173.131L866.896,-171.93L868.442,-178.749Z" style="fill-rule:nonzero;stroke:black;stroke-width:1px;"/>
+            </g>
+        </g>
+        <g id="edge20" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M389.398,-112.2C401.968,-112.2 406.612,-106.464 415.342,-103.685" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            <path d="M415.984,-107.125L425.357,-102.211L414.966,-100.207L415.984,-107.125Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+        </g>
+        <g id="edge211" serif:id="edge21" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M389.398,-112.2C406.605,-112.2 405.558,-91.503 415.634,-83.418" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            <path d="M416.951,-86.666L425.357,-80.236L414.776,-80.02L416.951,-86.666Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+        </g>
+        <g id="edge221" serif:id="edge22" transform="matrix(1.04576,0,0,1.04576,97.1943,7.94233)">
+            <path d="M389.398,-112.2C425.663,-112.2 499.525,-176.311 526.897,-200.1C542.247,-213.441 539.993,-233.457 552.711,-239.943" style="fill:none;fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+            <path d="M552.365,-243.442L562.856,-242.053L553.789,-236.596L552.365,-243.442Z" style="fill-rule:nonzero;stroke:black;stroke-width:3px;"/>
+        </g>
+    </g>
+</svg>
diff --git a/figures/toggle-nand.dot b/figures/toggle-nand.dot
new file mode 100644 (file)
index 0000000..8c7fb26
--- /dev/null
@@ -0,0 +1,28 @@
+digraph "toggle" {
+rankdir="LR";
+remincross=true;
+n9 [ shape=octagon, label="clk", color="black", fontcolor="black" ];
+n10 [ shape=octagon, label="en", color="black", fontcolor="black" ];
+n11 [ shape=octagon, label="out", color="black", fontcolor="black" ];
+c14 [ shape=record, label="{{<p12> A}|$57\n$_NOT_|{<p13> Y}}" ];
+c15 [ shape=record, label="{{<p12> A}|$58\n$_NOT_|{<p13> Y}}" ];
+c17 [ shape=record, label="{{<p12> A|<p16> B}|$59\n$_NAND_|{<p13> Y}}" ];
+c18 [ shape=record, label="{{<p12> A|<p16> B}|$60\n$_NAND_|{<p13> Y}}" ];
+c19 [ shape=record, label="{{<p12> A|<p16> B}|$61\n$_NAND_|{<p13> Y}}" ];
+c23 [ shape=record, label="{{<p20> C|<p21> D}|$53\n$_DFF_P_|{<p22> Q}}" ];
+n1 [ shape=point ];
+n1:e -> c14:p12:w [color="black", label=""];
+n1:e -> c17:p12:w [color="black", label=""];
+n10:e -> n1:w [color="black", label=""];
+c23:p22:e -> n11:w [color="black", label=""];
+n11:e -> n2:w [color="black", label=""];
+n2 [ shape=point ];
+n2:e -> c15:p12:w [color="black", label=""];
+n2:e -> c18:p16:w [color="black", label=""];
+c19:p13:s -> c23:p21:s [color="black", label=""];
+c14:p13:e -> c18:p12:w [color="black", label=""];
+c15:p13:e -> c17:p16:w [color="black", label=""];
+c17:p13:e -> c19:p12:w [color="black", label=""];
+c18:p13:e -> c19:p16:w [color="black", label=""];
+n9:e -> c23:p20:w [color="black", label=""];
+}
diff --git a/figures/toggle-nand.svg b/figures/toggle-nand.svg
new file mode 100644 (file)
index 0000000..91319ec
--- /dev/null
@@ -0,0 +1,193 @@
+<?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.40.1 (20161225.0304)
+ -->
+<!-- Title: toggle Pages: 1 -->
+<svg width="843pt" height="237pt"
+ viewBox="0.00 0.00 842.61 237.49" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 233.4936)">
+<title>toggle</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-233.4936 838.6068,-233.4936 838.6068,4 -4,4"/>
+<!-- n9 -->
+<g id="node1" class="node">
+<title>n9</title>
+<polygon fill="none" stroke="#000000" points="54,-85.0378 54,-99.9495 38.1838,-110.4936 15.8162,-110.4936 0,-99.9495 0,-85.0378 15.8162,-74.4936 38.1838,-74.4936 54,-85.0378"/>
+<text text-anchor="middle" x="27" y="-88.2936" font-family="Times,serif" font-size="14.00" fill="#000000">clk</text>
+</g>
+<!-- c23 -->
+<g id="node9" class="node">
+<title>c23</title>
+<polygon fill="none" stroke="#000000" points="90,-59.4936 90,-103.4936 219.6895,-103.4936 219.6895,-59.4936 90,-59.4936"/>
+<text text-anchor="middle" x="103.0552" y="-88.2936" font-family="Times,serif" font-size="14.00" fill="#000000">C</text>
+<polyline fill="none" stroke="#000000" points="90,-81.4936 116.1104,-81.4936 "/>
+<text text-anchor="middle" x="103.0552" y="-66.2936" font-family="Times,serif" font-size="14.00" fill="#000000">D</text>
+<polyline fill="none" stroke="#000000" points="116.1104,-59.4936 116.1104,-103.4936 "/>
+<text text-anchor="middle" x="154.8447" y="-84.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$53</text>
+<text text-anchor="middle" x="154.8447" y="-70.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$_DFF_P_</text>
+<polyline fill="none" stroke="#000000" points="193.5791,-59.4936 193.5791,-103.4936 "/>
+<text text-anchor="middle" x="206.6343" y="-77.2936" font-family="Times,serif" font-size="14.00" fill="#000000">Q</text>
+</g>
+<!-- n9&#45;&gt;c23 -->
+<g id="edge13" class="edge">
+<title>n9:e&#45;&gt;c23:w</title>
+<path fill="none" stroke="#000000" d="M54,-92.4936C66,-92.4936 71.25,-92.4936 79.875,-92.4936"/>
+<polygon fill="#000000" stroke="#000000" points="80,-95.9937 90,-92.4936 80,-88.9937 80,-95.9937"/>
+</g>
+<!-- n10 -->
+<g id="node2" class="node">
+<title>n10</title>
+<polygon fill="none" stroke="#000000" points="309.6895,-204.0378 309.6895,-218.9495 293.8732,-229.4936 271.5057,-229.4936 255.6895,-218.9495 255.6895,-204.0378 271.5057,-193.4936 293.8732,-193.4936 309.6895,-204.0378"/>
+<text text-anchor="middle" x="282.6895" y="-207.2936" font-family="Times,serif" font-size="14.00" fill="#000000">en</text>
+</g>
+<!-- n1 -->
+<g id="node10" class="node">
+<title>n1</title>
+<ellipse fill="#000000" stroke="#000000" cx="347.4895" cy="-211.4936" rx="1.8" ry="1.8"/>
+</g>
+<!-- n10&#45;&gt;n1 -->
+<g id="edge3" class="edge">
+<title>n10:e&#45;&gt;n1:w</title>
+<path fill="none" stroke="#000000" d="M309.6895,-211.4936C321.6895,-211.4936 326.9395,-211.4936 335.5645,-211.4936"/>
+<polygon fill="#000000" stroke="#000000" points="335.6895,-214.9937 345.6895,-211.4936 335.6894,-207.9937 335.6895,-214.9937"/>
+</g>
+<!-- n11 -->
+<g id="node3" class="node">
+<title>n11</title>
+<polygon fill="none" stroke="#000000" points="309.6895,-86.0378 309.6895,-100.9495 293.8732,-111.4936 271.5057,-111.4936 255.6895,-100.9495 255.6895,-86.0378 271.5057,-75.4936 293.8732,-75.4936 309.6895,-86.0378"/>
+<text text-anchor="middle" x="282.6895" y="-89.2936" font-family="Times,serif" font-size="14.00" fill="#000000">out</text>
+</g>
+<!-- n2 -->
+<g id="node11" class="node">
+<title>n2</title>
+<ellipse fill="#000000" stroke="#000000" cx="347.4895" cy="-93.4936" rx="1.8" ry="1.8"/>
+</g>
+<!-- n11&#45;&gt;n2 -->
+<g id="edge5" class="edge">
+<title>n11:e&#45;&gt;n2:w</title>
+<path fill="none" stroke="#000000" d="M309.6895,-93.4936C321.6895,-93.4936 326.9395,-93.4936 335.5645,-93.4936"/>
+<polygon fill="#000000" stroke="#000000" points="335.6895,-96.9937 345.6895,-93.4936 335.6894,-89.9937 335.6895,-96.9937"/>
+</g>
+<!-- c14 -->
+<g id="node4" class="node">
+<title>c14</title>
+<polygon fill="none" stroke="#000000" points="385.2895,-170.4936 385.2895,-206.4936 503.2826,-206.4936 503.2826,-170.4936 385.2895,-170.4936"/>
+<text text-anchor="middle" x="398.3446" y="-184.2936" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="411.3998,-170.4936 411.3998,-206.4936 "/>
+<text text-anchor="middle" x="444.286" y="-191.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$57</text>
+<text text-anchor="middle" x="444.286" y="-177.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$_NOT_</text>
+<polyline fill="none" stroke="#000000" points="477.1723,-170.4936 477.1723,-206.4936 "/>
+<text text-anchor="middle" x="490.2274" y="-184.2936" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c18 -->
+<g id="node7" class="node">
+<title>c18</title>
+<polygon fill="none" stroke="#000000" points="539.2826,-76.4936 539.2826,-120.4936 668.9447,-120.4936 668.9447,-76.4936 539.2826,-76.4936"/>
+<text text-anchor="middle" x="552.3378" y="-105.2936" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="539.2826,-98.4936 565.393,-98.4936 "/>
+<text text-anchor="middle" x="552.3378" y="-83.2936" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="565.393,-76.4936 565.393,-120.4936 "/>
+<text text-anchor="middle" x="604.1137" y="-101.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$60</text>
+<text text-anchor="middle" x="604.1137" y="-87.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$_NAND_</text>
+<polyline fill="none" stroke="#000000" points="642.8344,-76.4936 642.8344,-120.4936 "/>
+<text text-anchor="middle" x="655.8896" y="-94.2936" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c14&#45;&gt;c18 -->
+<g id="edge9" class="edge">
+<title>c14:e&#45;&gt;c18:w</title>
+<path fill="none" stroke="#000000" d="M503.2826,-188.4936C537.798,-188.4936 508.4948,-125.2789 529.5485,-111.9446"/>
+<polygon fill="#000000" stroke="#000000" points="530.4399,-115.3295 539.2826,-109.4936 528.7307,-108.5413 530.4399,-115.3295"/>
+</g>
+<!-- c15 -->
+<g id="node5" class="node">
+<title>c15</title>
+<polygon fill="none" stroke="#000000" points="385.2895,-115.4936 385.2895,-151.4936 503.2826,-151.4936 503.2826,-115.4936 385.2895,-115.4936"/>
+<text text-anchor="middle" x="398.3446" y="-129.2936" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="411.3998,-115.4936 411.3998,-151.4936 "/>
+<text text-anchor="middle" x="444.286" y="-136.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$58</text>
+<text text-anchor="middle" x="444.286" y="-122.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$_NOT_</text>
+<polyline fill="none" stroke="#000000" points="477.1723,-115.4936 477.1723,-151.4936 "/>
+<text text-anchor="middle" x="490.2274" y="-129.2936" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c17 -->
+<g id="node6" class="node">
+<title>c17</title>
+<polygon fill="none" stroke="#000000" points="539.2826,-139.4936 539.2826,-183.4936 668.9447,-183.4936 668.9447,-139.4936 539.2826,-139.4936"/>
+<text text-anchor="middle" x="552.3378" y="-168.2936" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="539.2826,-161.4936 565.393,-161.4936 "/>
+<text text-anchor="middle" x="552.3378" y="-146.2936" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="565.393,-139.4936 565.393,-183.4936 "/>
+<text text-anchor="middle" x="604.1137" y="-164.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$59</text>
+<text text-anchor="middle" x="604.1137" y="-150.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$_NAND_</text>
+<polyline fill="none" stroke="#000000" points="642.8344,-139.4936 642.8344,-183.4936 "/>
+<text text-anchor="middle" x="655.8896" y="-157.2936" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c15&#45;&gt;c17 -->
+<g id="edge10" class="edge">
+<title>c15:e&#45;&gt;c17:w</title>
+<path fill="none" stroke="#000000" d="M503.2826,-133.4936C516.968,-133.4936 520.4344,-143.6631 529.4893,-148.2712"/>
+<polygon fill="#000000" stroke="#000000" points="528.756,-151.6937 539.2826,-150.4936 530.3052,-144.8673 528.756,-151.6937"/>
+</g>
+<!-- c19 -->
+<g id="node8" class="node">
+<title>c19</title>
+<polygon fill="none" stroke="#000000" points="704.9447,-87.4936 704.9447,-131.4936 834.6068,-131.4936 834.6068,-87.4936 704.9447,-87.4936"/>
+<text text-anchor="middle" x="717.9999" y="-116.2936" font-family="Times,serif" font-size="14.00" fill="#000000">A</text>
+<polyline fill="none" stroke="#000000" points="704.9447,-109.4936 731.0551,-109.4936 "/>
+<text text-anchor="middle" x="717.9999" y="-94.2936" font-family="Times,serif" font-size="14.00" fill="#000000">B</text>
+<polyline fill="none" stroke="#000000" points="731.0551,-87.4936 731.0551,-131.4936 "/>
+<text text-anchor="middle" x="769.7758" y="-112.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$61</text>
+<text text-anchor="middle" x="769.7758" y="-98.2936" font-family="Times,serif" font-size="14.00" fill="#000000">$_NAND_</text>
+<polyline fill="none" stroke="#000000" points="808.4965,-87.4936 808.4965,-131.4936 "/>
+<text text-anchor="middle" x="821.5517" y="-105.2936" font-family="Times,serif" font-size="14.00" fill="#000000">Y</text>
+</g>
+<!-- c17&#45;&gt;c19 -->
+<g id="edge11" class="edge">
+<title>c17:e&#45;&gt;c19:w</title>
+<path fill="none" stroke="#000000" d="M668.9447,-161.4936C689.0265,-161.4936 683.9061,-133.3762 695.3246,-123.7108"/>
+<polygon fill="#000000" stroke="#000000" points="696.5711,-126.9846 704.9447,-120.4936 694.3509,-120.346 696.5711,-126.9846"/>
+</g>
+<!-- c18&#45;&gt;c19 -->
+<g id="edge12" class="edge">
+<title>c18:e&#45;&gt;c19:w</title>
+<path fill="none" stroke="#000000" d="M668.9447,-98.4936C680.9447,-98.4936 686.1947,-98.4936 694.8197,-98.4936"/>
+<polygon fill="#000000" stroke="#000000" points="694.9448,-101.9937 704.9447,-98.4936 694.9447,-94.9937 694.9448,-101.9937"/>
+</g>
+<!-- c19&#45;&gt;c23 -->
+<g id="edge8" class="edge">
+<title>c19:s&#45;&gt;c23:s</title>
+<path fill="none" stroke="#000000" d="M821.7758,-87.4936C821.7758,81.2188 612.9985,-47.4936 444.286,-47.4936 347.4895,-47.4936 347.4895,-47.4936 347.4895,-47.4936 242.2423,-47.4936 111.8319,43.0426 103.2879,-49.3193"/>
+<polygon fill="#000000" stroke="#000000" points="99.7833,-49.3508 102.8447,-59.4936 106.7766,-49.6554 99.7833,-49.3508"/>
+</g>
+<!-- c23&#45;&gt;n11 -->
+<g id="edge4" class="edge">
+<title>c23:e&#45;&gt;n11:w</title>
+<path fill="none" stroke="#000000" d="M219.6895,-81.4936C232.4703,-81.4936 236.8688,-88.385 245.5894,-91.723"/>
+<polygon fill="#000000" stroke="#000000" points="245.2353,-95.2142 255.6895,-93.4936 246.4441,-88.3194 245.2353,-95.2142"/>
+</g>
+<!-- n1&#45;&gt;c14 -->
+<g id="edge1" class="edge">
+<title>n1:e&#45;&gt;c14:w</title>
+<path fill="none" stroke="#000000" d="M349.2895,-211.4936C364.1228,-211.4936 366.1631,-197.4556 375.3996,-191.3139"/>
+<polygon fill="#000000" stroke="#000000" points="376.6327,-194.6019 385.2895,-188.4936 374.713,-187.8702 376.6327,-194.6019"/>
+</g>
+<!-- n1&#45;&gt;c17 -->
+<g id="edge2" class="edge">
+<title>n1:e&#45;&gt;c17:w</title>
+<path fill="none" stroke="#000000" d="M349.2895,-211.4936C365.443,-211.4936 369.1743,-215.3799 385.2895,-216.4936 437.6061,-220.1094 455.8929,-238.9506 503.2826,-216.4936 522.3696,-207.4487 517.0457,-182.779 529.5446,-174.9276"/>
+<polygon fill="#000000" stroke="#000000" points="530.4298,-178.3141 539.2826,-172.4936 528.7323,-171.5231 530.4298,-178.3141"/>
+</g>
+<!-- n2&#45;&gt;c15 -->
+<g id="edge6" class="edge">
+<title>n2:e&#45;&gt;c15:w</title>
+<path fill="none" stroke="#000000" d="M349.2895,-93.4936C369.0962,-93.4936 364.384,-120.9253 375.7624,-130.3549"/>
+<polygon fill="#000000" stroke="#000000" points="374.6964,-133.6887 385.2895,-133.4936 376.8868,-127.0402 374.6964,-133.6887"/>
+</g>
+<!-- n2&#45;&gt;c18 -->
+<g id="edge7" class="edge">
+<title>n2:e&#45;&gt;c18:w</title>
+<path fill="none" stroke="#000000" d="M349.2895,-93.4936C430.3078,-93.4936 452.9676,-87.9757 529.1987,-87.5231"/>
+<polygon fill="#000000" stroke="#000000" points="529.2929,-91.0229 539.2826,-87.4936 529.2724,-84.023 529.2929,-91.0229"/>
+</g>
+</g>
+</svg>
diff --git a/makefile b/makefile
new file mode 100644 (file)
index 0000000..3745c43
--- /dev/null
+++ b/makefile
@@ -0,0 +1,2 @@
+CassieJones2020.pdf: nan-gates.md preamble.tex
+       pandoc --pdf-engine=xelatex -H preamble.tex nan-gates.md -o CassieJones2020.pdf
diff --git a/nan-gates.md b/nan-gates.md
new file mode 100644 (file)
index 0000000..8fe2d10
--- /dev/null
@@ -0,0 +1,327 @@
+---
+title: "NaN-Gate Synthesis and Hardware Deceleration"
+author: |
+    Cassie Jones  
+    Witch of Light  
+    list+sigbovik@witchoflight.com
+date: "1 April 2020"
+numbersections: true
+documentclass: article
+classoption:
+- twocolumn
+geometry: margin=1cm
+---
+
+# Abstract {-}
+
+In recent years there has been interest in the field of "hardware decelerators," which serve primarily to make computation more interesting rather than more efficient.
+This builds off the work of "NaN-Gates and Flip-FLOPS" [9] to provide a hardware synthesis implementation of real-number computational logic using the Yosys Open Synthesis Suite [1] framework, and evaluates the impacts of different floating point formats.
+
+**ACH Reference Format:**  
+Cassie Jones.
+2020.
+NaN-Gate Synthesis and Hardware Deceleration.
+In *Proceedings of SIGBOVIK 2020*, Pittsburgh, PA, USA, April 1, 2020.
+(SIGBOVIK '20, ACH).
+
+# Introduction {-}
+
+Harware decelerators work on the principle of "stop and smell the roses."
+There are some qualities that are more important than sheer efficiency, and often these improvements can often only be realized by taking the computer and slowing it down to a more leisurely pace.
+The largest advancements in the field happen in the emulation space, since it's the most widely accessible.
+It may be most familiar in the form of video-game computers, building computers out of redstone in Minecraft, Factorio combinators, or the like [7] [6].
+
+> "But of course speed is not what we're after here. We're after just, beautiful computation going on inside the heart of this machine." --- Tom7 [10]
+
+The SIGBOVIK 2019 paper "NaN-Gates and Flip-FLOPS" decelerates computers in the name of elegance: it throws away the assumption of binary computers and builds ones based on real numbers, specifically IEEE-754 floating point numbers.
+It aims towards "reboot computing using the beautiful foundation of real numbers," but it still leaves us with room for improvement in a few areas.
+It leaves the logic gates in the domain of emulation, which limits the types of hardware that are easy to build, and it limits the elegance that can be achieved.
+By using an existing CPU as the floating point processor, you still have a computer that's based on binary emulating your real number logic.
+
+Here, we attempt to remove this limitation by bringing NaN-gate computation to the domain of native hardware, via a custom Yosys synthesis pass.
+
+# NaN-Gate Synthesis
+
+The Yosys Open SYnthesis Suite [1] is a free and open source archicture-neutral logic synthesis framework.
+It can synthesize Verilog into a variety of backend formats using a flexible and pluggable architecture of passes.
+The Yosys manual has a chapter on how to write extensions [2, Ch. 6], which can be consulted for documentation and examples on how Yosys passes are built.
+We provide a Yosys extension which synthesizes a circuit down to a network of small floating point units implementing the NaN-gate function.
+This can be further synthesized to a final target, like a specific FPGA architecture.
+
+## Yosys Synthesis
+
+We will demonstrate all synthesis with the following toggle module, since it's small enough for all stages of synthesis results to be understandable and fit neatly on the page.
+
+```verilog
+module toggle(input clk, input en, output out);
+
+always @(posedge clk) begin
+    if (en) out <= ~out;
+end
+
+endmodule
+```
+
+Yosys will take a Verilog module like this and flatten the procedural blocks into circuits with memory elements.
+Running sythesis gives us a circuit with a flip-flop, a toggle, and a multiplexer that's driven by the enable line.
+
+![The synthesized toggle circuit.](figures/toggle-base.svg)
+
+We can also ask yosys to synthesize this to exclusively NAND and NOT gates with a small synthesis script.
+
+```tcl
+read_verilog toggle.v
+synth
+abc -g NAND
+```
+
+This particular design synthesizes to 1 D flip-flop, 3 NAND gates, and 2 NOT gates.
+
+![The circuit synthesized down to only NAND, NOT, and memory elements.](figures/toggle-nand.svg)
+
+## The Yosys `synth_nan` Pass
+
+Our `synth_nan` pass is implemented as a Yosys extension.
+For convenience, we'll describe the behavior in terms of the 3-bit float synthesis.
+It converts a module to NaN-gate logic.
+It summarizes itself as running:
+
+```tcl
+synth
+abc -g NAND
+nand_to_nan
+share_nan
+dff_nan
+simplify_nan
+clean
+techmap_nan
+```
+
+The first two steps there are standard synthesis.
+The `synth` pass will convert a module into coarsly optimized circuits, and `abc -g NAND` will remap the entire thing into optimized NAND logic.
+
+One complexity we have to deal with is external interfaces.
+Despite the wonderful realms of pure real-number computation we want to interact with, when interacting with fixed hardware component interfaces, we have to convert between flots and bits.
+In order to handle this, the NaN gate tech library has modules like `fp3_to_bit` and `bit_to_fp3` which perform this boundary conversion.
+In order to deal with the chaotic diversity of real circuits, for robustness, the `nand_to_nan` pass converts each NAND gate to a `bit_to_fp3 -> NaN -> fp3_to_bit` chain.
+Don't worry, these conversions will later be removed everywhere they don't turn out to be necessary.
+
+![The toggle circuits synthesized to NaN gates. Note that the external logic ports have floating point conversion modules, but the clock line doesn't.](figures/toggle-nan3.svg)
+
+The `share_nan` pass reduces the number of conversions by sharing ones that have the same inputs.
+Then, the `dff_nan` pass can expand the flip-flops in the circuit into a set of enough flip-flops to store the floating point values.
+
+The `simplify_nan` pass converts any instance of `fp3_to_bit -> bit_to_fp3` to just a wire that passes the floats straight through.
+
+We do `clean` to remove dead wires and useless buffers, and then finally the `techmap_nan` pass replaces the opaque NaN-gate modules with actual modules so that further synthesis can properly make them realizable on real hardware.
+
+## Module Ports
+
+If you want your circuit to support external floating-point based interfaces, you can use the floating point conversion modules yourself.
+
+```verilog
+module toggle(
+    input clk, input [2:0] en, output [2:0] out);
+
+wire en_b;
+reg out_b;
+fp3_to_bit en_cvt(en, en_b);
+bit_to_fp3 out_cvt(out_b, out);
+always @(posedge clk) begin
+    if (en_b) out_b = ~out_b;
+end
+
+endmodule
+```
+
+The NaN synthesis will end up erasing the floating point conversions on either side of the interface since they connect to floating point units.
+Future work could include automatically expanding ports using something like a `(* nan_port *)` attribute.
+
+# Floating Point Formats
+
+While tom7's work asserts that a **binary4** floating point format is "clearly allowed by the IEEE-754 standard," this doesn't seem to hold up under a close examination.
+Brought to my attention by Steve Canon [8], there are two cases where these floating point formats fall down.
+First, and most importantly in the case of **binary4**, you need to encode both quiet- and signaling-NaNs.
+Section 3.3 of IEEE-754 says [5]:
+
+> "Within each format, the following floating-point data shall be represented: [...] Two NaNs, qNaN (quiet) and sNaN (signaling)."
+
+While **binary4** does have two separate NaN values (a positive and a negative), they are distinguished only by their sign bit, which isn't allowed to distinguish the two types of NaNs, as we can see in 6.2.1:
+
+> "When encoded, all NaNs have a sign bit and a pattern of bits necessary to identify the encoding as a NaN and which determines its kind (sNaN vs. qNaN)."
+
+\newpage
+\begin{figure*}
+\centering
+\includegraphics[width=7in]{figures/synthesis-pass.pdf}
+\caption{The full NaN-gate synthesis process for the toggle module. In step 1 we have the logical circuit after coarse synthesis. In step 2 it's synthesized to NAND and NOT gates. Step 3 converts the gates to NaN gates and adds conversion chains. Step 4 expands the flip-flops to store floats. Step 5 collapses redundant conversion chains to give the final NaN-synthesized module.}
+\end{figure*}
+\clearpage
+
+This means that we need at least two bits in the mantissa in order to represent the infinities (stored as a 0 mantissa with the maximum exponent) and the NaN values (stored with two distinct non-zero mantissas).
+
+![From Steve Canon's tweet [8]. As the cat says, since IEEE-754 requires $emax$ to be greater than $emin$, there must be two exponent bits, and since the mantissa must be used to distinguish sNaN, qNaN, and infinity, so it also needs at least two bits, leading to a minimum of 5-bit floats.](binary5.jpg)
+
+The **binary3** format is further disrupted in section 3.3, which rules-out the idea of having an empty range of $emin$ and $emax$, since they're used in an inequality and $emin \le emax$, and is elsewhere forced to be strictly less by other constraints:
+
+> "$q$ is any integer $emin \le q+p-1 \le emax$" 3.3
+
+Still, the **binary3** format is very useful for efficient implementation of NaN gates, and is worth including in synthesis for people who aren't bothered by standards compliance.
+For completeness, the `synth_nan` implementation supports synthesis to **binary3**, **binary4**, and the definitely-IEEE-754-compliant **binary5** format NaN-gates.
+Furthermore, the architecture would support easy extensions to larger, more conventional floating point formats like **binary8**, or even larger, by simply loading your own libary of modules named `nan_fpN`, `bit_to_fpN`, and `fpN_to_bit`, for any value of `N` you want to synthesize with.
+
+## The binary5 Representation
+
+Here we document the representation in the **binary5** format, the smallest legal IEEE-754 compliant binary floating-point format.
+It has a sign bit, a two bit exponent, and a two bit mantissa.
+We include a table of all of the positive values here:
+
+s  E  T value
+- -- -- -----
+0 00 00 +0.0
+0 00 01 +0.25
+0 00 10 +0.5
+0 00 11 +0.75
+0 01 00 +1.0
+0 01 01 +1.25
+0 01 10 +1.5
+0 01 11 +1.75
+0 10 00 +2.0
+0 10 01 +2.5
+0 10 10 +3.0
+0 10 11 +3.5
+0 11 00 +inf
+0 11 01 sNaN
+0 11 10 qNaN
+0 11 11 qNaN
+
+<!-- @TODO: Make table captions work -->
+The positive values representable in the **binary5** format. Note that infinity, sNaN, and qNaN are all distinguished by the mantissa value when the exponent is all ones, so this is the smallest possible floating point format. The negative values for each are the same bit patterns but with a 1 in the sign bit.
+
+## Evaluation
+
+We compare the size (in both logic and memory elements) and clock speed of modules synthesized with the different floating points.
+For the benchmark, we use a pipelined 32-bit multiplier, and the PicoRV32 processor [3] synthesized for the ECP5 architecture, and placed and routed using nextpnr [4].
+The numbers given for clock frequency are the best result of 10 runs of placement and routing.
+
+<!-- @TODO: Actually run 10 times -->
+
+The "NAND" variant are synthesized to NAND gates before architecture-specific optimization, in order to obscure some of the higher-level modules that are present in the original design and prevent optimizations that won't be available to the NaN-gate synthesis.
+This gives a clearer baseline for comparison with the NaN gates, and so this is used as the basis for relative numbers.
+Times marked **DNP** are those that did not successfully place and route for timing analysis, so no frequency can be reported.
+
+Design Variant  Cells  Cell%   DFFs  DFF%   (MHz)
+------ ------- ------ ------ ------ ----- -------
+PicoRV Direct    1884    57%    888   48%  103.55
+       NAND      3328   100%   1848  100%   47.30
+       fp3      43739  1314%   5544  299% **DNP**
+       fp4      32853   987%   7392  400% **DNP**
+       fp5      65511  1968%   9240  500% **DNP**
+Mult32 Direct    2879   104%    628  100%  143.04
+       NAND      2773   100%    628  100%  154.37
+       fp3      25349   880%   1884  300%   25.26
+       fp4      19026   661%   2520  400%   21.88
+       fp5      38001  1320%   3140  500%   21.18
+
+It's interesting that fp4 is the smallest of the floating point variants in logic, even though not in memory.
+It seems likely that this is because the ECP5 architecture is based on a "LUT4" architecture, 4-input lookup tables, which means the individual NaN-gates potentially happen to synthesize more efficiently with 4-bit inputs.
+
+## Flattening
+
+For this benchmark, we synthesize designs without flattening post NaN-gate synthesis, because the optimizer is too effective and eliminates most of the floating point logic.
+When they are flattened, the optimzer can consider the logic involved in the individual NaN gates and re-combine them into and erase constant-value flip-flops.
+Designs that are flattened before optimizing have no flip-flop overhead, and have on the order of 5% overhead in logic elements vs the reference NAND-gate versions.
+
+While synthesizing with post-NaN flattening substantially undermines the floating point logic and mostly demonstrates the impressive quality of Yosys's optimizations, it suggests as an option a sort of "homeopathic floating-point logic."
+For users that require efficiency but still want *some* of the elegance benefits, they can flatten it and optimize it away, keeping some peace-of-mind in knowing that their final circuit is derived from an elegant real-number system, regardless of how it currently behaves.
+
+# Future Work
+
+Floating point synthesis still has many avenues for improvement and future work.
+
+The current synthesis approach used by `synth_nan` remains fragile in the face of flattening and pass-ordering.
+It should be possible to make it harder to accidentally flatten the designs away into nothing, but they still do need to be eventually flattened since the `nextpnr` place-and-route flow is still not fully reliable in the presence of un-flattened designs.
+Currently the `synth_nan` pass must be run before any device-specific passes, which can be fine but it prevents the utilization of resources such as distributed RAMs.
+
+Float synthesis tools should make it easier to define module ports that should be expanded to accomodate floating-point based signals, so that designs can operate fully in the glorious domain of the real numbers, without having to flatten all designs.
+
+More work could be done into ensuring that the individual gates are properly optimized for different architectures, since it seems unreasonable for fp4 to remain more efficient than fp3.
+The system could also benefit from implementing a larger set of primitive gates, to avoid the blowup of using NAND gates to emulate everything, since they should be implementable in similar amounts of elementary logic.
+
+With **binary5** and larger, there looks like there could be potential in attempting to explore designs that work *purely* on NaN values, exploring the flexibility in the handling of signaling and quiet NaN values.
+
+The NaN-gate synthesis plugin for Yosys can be found at <https://git.witchoflight.com/nan-gate>.
+This paper and the examples materials in it can be found at <https://git.witchoflight.com/sigbovik-nan-2020>.
+
+\begingroup
+# References {-}
+\setlength{\parindent}{-0.2in}
+\setlength{\leftskip}{0.2in}
+\setlength{\parskip}{8pt}
+
+\vspace{-20pt}
+\indent{}
+[1] Claire Wolf.
+    The Yosys Open SYnthesis Suite.
+    Online.  
+\noindent{}
+    http://www.clifford.at/yosys/
+
+[2] Claire Wolf.
+    The Yosys Manual.
+    Online.  
+\noindent{}
+    http://www.clifford.at/yosys/files/yosys_manual.pdf
+
+[3] Claire Wolf.
+    PicoRV32 - A Size Optimized RISC-V CPU.
+    Online.
+    https://github.com/cliffordwolf/picorv32
+
+[4] Claire Wolf, David Shah, Dan Gisselquist, Serge Bazanski, Miodrag Milanovic, and Eddie Hung.
+    NextPNR Portable FPGA Place and Route Tool.
+    2018.
+    Online.  
+\noindent{}
+    https://github.com/YosysHQ/nextpnr
+
+[5] IEEE Standard for Floating-Point Artithmetic.
+    2019.
+    In *IEEE Std 754-2019 (Revision of IEEE 754-2008).*
+    Pages 1--84.
+    DOI 10.1109/IEEESTD.2019.8766229.
+
+[6] justarandomgeek.
+    2017.
+    justarandomgeek's Combinator Computer Mk5.
+    Online.  
+\noindent{}
+    https://github.com/justarandomgeek/factorio-computer
+
+[7] legomasta99.
+    2018.
+    Minecraft Computer Engineering - Redstone Computers.
+    Online.  
+<!--\noindent{}-->
+    https://www.youtube.com/watch?v=aj6IUuwLyOE
+    &list=PLwdt_GQ3o0Xe6pUS1vdzy0ZqXrApB2MNu
+
+[8] Stephen Canon.
+    2017.
+    A Tweet About IEEE-754.
+    Tweet by \@stephentyrone on April 1, 2017.  
+\noindent{}
+    https://twitter.com/stephentyrone/status/848172687268687873
+
+[9] Tom Murphy VII.
+    2019.
+    NaN Gates and Flip FLOPS.
+    In *Proceedings of SIGBOVIK 2019*, Pittsburgh, PA, USA, April 1, 2019.
+    (SIGBOVIK '19, ACH).
+    Pages 98--102.
+
+[10] Tom Murphy VII.
+    2019.
+    NaN Gates and Flip FLOPS.
+    Online.
+    http://tom7.org/nand/
diff --git a/preamble.tex b/preamble.tex
new file mode 100644 (file)
index 0000000..f095140
--- /dev/null
@@ -0,0 +1,13 @@
+\usepackage{nopageno}
+\usepackage{xtab}
+\makeatletter
+\def\longtable{\@ifnextchar[\newlongtable@i \newlongtable@ii}
+\def\newlongtable@i[#1]{%
+\renewcommand{\endhead}{\ignorespaces}
+\begin{center}
+\xtabular[#1]}
+\def\newlongtable@ii{%
+\renewcommand{\endhead}{\ignorespaces}
+\xtabular}
+\def\endlongtable{\endxtabular\end{center}}
+\makeatother