aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--davo-cv/portfolio/img/chanzio.webpbin0 -> 1991916 bytes
-rw-r--r--davo-cv/portfolio/img/proone.svg65
-rw-r--r--davo-cv/portfolio/index.md22
-rw-r--r--linux-casual/mp-int/ripple-carry-adder/README.md5
-rw-r--r--linux-casual/mp-int/ripple-carry-adder/anim.css5
-rwxr-xr-xlinux-casual/mp-int/ripple-carry-adder/animation-skel.svg1808
-rw-r--r--linux-casual/mp-int/ripple-carry-adder/index.css16
-rw-r--r--linux-casual/mp-int/ripple-carry-adder/index.html65
-rw-r--r--linux-casual/mp-int/ripple-carry-adder/index.js483
-rwxr-xr-xlinux-casual/mp-int/ripple-carry-adder/the-math.svg556
-rw-r--r--stab-aftg/README.md33
-rwxr-xr-xstab-aftg/stab-aftg156
-rw-r--r--writeups/cgit/cgit.md17
14 files changed, 3214 insertions, 18 deletions
diff --git a/README.md b/README.md
index 24de3e3..494f7f1 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,7 @@ projects that I really wouldn't bother making a git repo for each.
I hope you enjoy your stay!
## Index
+ - [davo-cv](https://cdn.snart.me/hireme/): my resume
- [aws-ipblocks-csv](aws-ipblocks-csv/README.md): download AWS Public IP
address ranges in CSV format. No middle man involved - everything done on
your browser
diff --git a/davo-cv/portfolio/img/chanzio.webp b/davo-cv/portfolio/img/chanzio.webp
new file mode 100644
index 0000000..c6ec6e9
--- /dev/null
+++ b/davo-cv/portfolio/img/chanzio.webp
Binary files differ
diff --git a/davo-cv/portfolio/img/proone.svg b/davo-cv/portfolio/img/proone.svg
new file mode 100644
index 0000000..00555cd
--- /dev/null
+++ b/davo-cv/portfolio/img/proone.svg
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="553px" preserveAspectRatio="none" style="width:1006px;height:553px;background:#FFFFFF;" version="1.1" viewBox="0 0 1006 553" width="1006px" zoomAndPan="magnify"><defs><filter height="300%" id="fyc6o7633s18l" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[9c764811e359eb79ee69534d40b7ac6f]
+cluster prne_i--><polygon fill="#FFFFFF" filter="url(#fyc6o7633s18l)" points="16,115,151,115,158,137.2969,755,137.2969,755,437,16,437,16,115" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="16" x2="158" y1="137.2969" y2="137.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="129" x="20" y="129.9951">Proone Instance</text><!--MD5=[8ef77d0fb31372a32407c76568343a29]
+cluster Heartbeat--><rect fill="#FFFFFF" filter="url(#fyc6o7633s18l)" height="109" style="stroke:#000000;stroke-width:1.5;" width="340" x="391" y="158"/><rect fill="#FFFFFF" height="10" style="stroke:#000000;stroke-width:1.5;" width="15" x="711" y="163"/><rect fill="#FFFFFF" height="2" style="stroke:#000000;stroke-width:1.5;" width="4" x="709" y="165"/><rect fill="#FFFFFF" height="2" style="stroke:#000000;stroke-width:1.5;" width="4" x="709" y="169"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="78" x="522" y="183.9951">Heartbeat</text><!--MD5=[941875f88b4f76c76a8e027d9b948182]
+cluster bne_pool--><rect fill="#FFFFFF" filter="url(#fyc6o7633s18l)" height="97" style="stroke:#000000;stroke-width:1.5;" width="132" x="244" y="316"/><rect fill="#FFFFFF" height="10" style="stroke:#000000;stroke-width:1.5;" width="15" x="356" y="321"/><rect fill="#FFFFFF" height="2" style="stroke:#000000;stroke-width:1.5;" width="4" x="354" y="323"/><rect fill="#FFFFFF" height="2" style="stroke:#000000;stroke-width:1.5;" width="4" x="354" y="327"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="69" x="275.5" y="341.9951">BNE Pool</text><!--MD5=[7c9481bd1a7d8f3a175620bb8a866d7c]
+cluster Public DOT Nameservers--><path d="M789.4788,326.066 C792.5835,320.581 797.1448,319.113 801.4717,324.7479 C805.1574,317.5779 811.3199,317.9515 816.0227,323.5927 C819.8738,315.4873 825.4728,316.2472 830.3649,322.5569 C835.4778,316.2666 839.3654,317.5551 842.9303,324.0752 C846.9392,316.7184 853.211,315.8564 859.0442,321.8777 C863.0998,317.0927 868.4942,317.0172 871.3515,323.2199 C874.6091,315.4272 881.2788,314.3936 886.9608,320.4965 C891.2953,314.8373 896.8201,315.4889 899.9203,321.8295 C903.8754,316.1393 910.1015,317.562 912.918,323.1426 C917.5685,317.1126 924.7685,317.2818 928.5642,324.1774 C932.3141,317.5108 936.3498,316.8992 941.4552,322.7855 C946.8232,315.135 954.1255,317.3285 956.7761,325.4287 C960.9292,318.2515 965.0918,317.4604 970.6342,324.0279 C974.8258,318.1521 980.4237,319.9434 982.3412,326.2189 C990.084,328.523 993.3402,332.4456 988.1149,340.1315 C996.066,343.1292 995.9477,348.4513 990.1149,353.5096 C997.2278,355.1334 999.3584,358.6679 995.0563,365.1412 C999.7715,370.144 998.2696,377.1261 991.3948,379.0856 C996.2033,385.2041 995.235,392.8219 986.1351,394.0527 C990.666,398.2893 991.0733,403.0828 984.3221,405.5384 C982.2541,413.8205 974.9515,414.0364 970.118,408.3507 C966.6894,414.2038 960.5565,414.7882 956.4938,409.0992 C953.3744,416.8236 947.5376,416.9745 942.4723,411.1065 C939.0933,419.2426 931.7257,418.9254 926.6304,413.0464 C922.8771,418.3817 918.1533,419.6413 914.0541,413.4229 C909.4096,421.5453 903.5402,420.1962 898.8025,413.5189 C896.2541,420.4163 891.2766,421.7355 885.9435,416.4608 C880.6017,422.292 875.6817,423.6638 871.2087,415.5431 C866.8991,420.9083 860.6333,419.3712 858.0841,413.4888 C854.1124,419.9176 847.5893,418.8992 844.1159,412.9276 C838.4901,418.8163 834.6477,417.3757 830.9149,410.9056 C826.9906,417.5705 820.3328,416.9785 816.8549,410.4306 C811.8895,417.9727 804.544,416.839 801.2681,408.7463 C797.5646,414.0337 791.5576,413.0544 788.9869,407.4671 C781.5578,403.5098 780.514,397.7297 786.6794,391.7736 C780.1051,389.7407 779.6843,383.9186 784.7338,379.9698 C777.6222,376.7943 777.0792,372.2109 781.7727,366.4499 C776.4987,360.1531 777.9257,354.8792 785.8486,352.4149 C778.7046,347.3351 779.1299,343.0854 786.5483,338.7515 C780.8945,333.3761 782.4069,328.5016 789.4788,326.066 " fill="#FFFFFF" filter="url(#fyc6o7633s18l)" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="195" x="787" y="341.9951">Public DOT Nameservers</text><!--MD5=[42d63f371a1b2b55232c669850b6835e]
+entity Main Thread--><rect fill="#FEFECE" filter="url(#fyc6o7633s18l)" height="46.2969" style="stroke:#A80036;stroke-width:1.5;" width="125" x="247.5" y="199"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="352.5" y="204"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="350.5" y="206"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="350.5" y="210"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="262.5" y="231.9951">Main Thread</text><!--MD5=[162bad913f27a966d78603a1f88c43c1]
+entity Resolv--><rect fill="#FEFECE" filter="url(#fyc6o7633s18l)" height="46.2969" style="stroke:#A80036;stroke-width:1.5;" width="86" x="535" y="351"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="601" y="356"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="599" y="358"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="599" y="362"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="46" x="550" y="383.9951">Resolv</text><!--MD5=[3a0ff2b2643b72e8f44f95515b106142]
+entity Recon--><rect fill="#FEFECE" filter="url(#fyc6o7633s18l)" height="46.2969" style="stroke:#A80036;stroke-width:1.5;" width="85" x="32.5" y="199"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="97.5" y="204"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="95.5" y="206"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="95.5" y="210"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="45" x="47.5" y="231.9951">Recon</text><!--MD5=[7e52523184f1c3752292ac9e82232dbb]
+entity LBD--><ellipse cx="549" cy="222" fill="#FEFECE" filter="url(#fyc6o7633s18l)" rx="8" ry="8" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="28" x="535" y="251.9951">LBD</text><!--MD5=[6aca76539caedc818cba8c9b47739e40]
+entity CNCP--><rect fill="#FEFECE" filter="url(#fyc6o7633s18l)" height="46.2969" style="stroke:#A80036;stroke-width:1.5;" width="79" x="407.5" y="199"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="466.5" y="204"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="464.5" y="206"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="464.5" y="210"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="39" x="422.5" y="231.9951">CNCP</text><!--MD5=[fd9cb3b1ea3e9ece689fdeecdf204087]
+entity htbt_main_ctx--><rect fill="#FEFECE" filter="url(#fyc6o7633s18l)" height="46.2969" style="stroke:#A80036;stroke-width:1.5;" width="104" x="611" y="199"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="695" y="204"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="693" y="206"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="693" y="210"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="64" x="626" y="231.9951">Main CTX</text><!--MD5=[7f924e49bd00f3f976a57574cd3bc1f6]
+entity instance--><rect fill="#FEFECE" filter="url(#fyc6o7633s18l)" height="46.2969" style="stroke:#A80036;stroke-width:1.5;" width="99" x="260.5" y="351"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="339.5" y="356"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="337.5" y="358"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="337.5" y="362"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="59" x="275.5" y="383.9951">instance</text><!--MD5=[ffedf6a9cdd7339fb62ff841799d1be5]
+entity cnc_txt_rec--><rect fill="#FEFECE" filter="url(#fyc6o7633s18l)" height="46.2969" style="stroke:#A80036;stroke-width:1.5;" width="134" x="795" y="351"/><rect fill="#FEFECE" height="10" style="stroke:#A80036;stroke-width:1.5;" width="15" x="909" y="356"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="907" y="358"/><rect fill="#FEFECE" height="2" style="stroke:#A80036;stroke-width:1.5;" width="4" x="907" y="362"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="810" y="383.9951">CNC TXT REC</text><ellipse cx="886.9744" cy="221.8949" fill="#FEFECE" filter="url(#fyc6o7633s18l)" rx="87.4744" ry="19.8949" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="136" x="818.9744" y="224.7416">Heartbeat Auth Impl</text><ellipse cx="439.1177" cy="29.1235" fill="#FEFECE" filter="url(#fyc6o7633s18l)" rx="103.6177" ry="23.1235" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="172" x="353.1177" y="31.9702">Another Proone Instance</text><ellipse cx="659.8658" cy="28.7732" fill="#FEFECE" filter="url(#fyc6o7633s18l)" rx="81.8658" ry="18.7732" style="stroke:#A80036;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="123" x="597.3805" y="31.9463">Maintenance Tool</text><!--MD5=[667e7cdd0f777c530ea2dba1c08bd7e6]
+entity victim_host--><polygon fill="#FEFECE" filter="url(#fyc6o7633s18l)" points="251.5,510,261.5,500,368.5,500,368.5,536.2969,358.5,546.2969,251.5,546.2969,251.5,510" style="stroke:#000000;stroke-width:1.5;"/><line style="stroke:#000000;stroke-width:1.5;" x1="358.5" x2="368.5" y1="510" y2="500"/><line style="stroke:#000000;stroke-width:1.5;" x1="251.5" x2="358.5" y1="510" y2="510"/><line style="stroke:#000000;stroke-width:1.5;" x1="358.5" x2="358.5" y1="510" y2="546.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="77" x="266.5" y="532.9951">Victim Host</text><!--MD5=[b7e637a441f953ebc24ed8fcb824f79f]
+link CNCP to Resolv--><path d="M469.62,248.9 C493.56,276.31 531.12,319.32 555.15,346.83 " fill="none" id="CNCP-Resolv" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="558.59,350.78,555.694,341.3665,555.3056,347.01,549.6621,346.6216,558.59,350.78" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="466.33,245.13,469.226,254.5435,469.6144,248.9,475.2579,249.2884,466.33,245.13" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="139" x="514" y="296.0669">Queue TXT REC Query</text><!--MD5=[511425dc7163de3665735b7e68d9281b]
+link Recon to Main Thread--><path d="M117.56,222 C152.24,222 201.88,222 242.05,222 " fill="none" id="Recon-to-Main Thread" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="247.4,222,238.4,218,242.4,222,238.4,226,247.4,222" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="93" x="136" y="215.0669">Event Callback</text><!--MD5=[ea78f22d1962f82ee76cb2026da67b81]
+link Main Thread to instance--><path d="M310,245.13 C310,271.83 310,316.71 310,345.58 " fill="none" id="Main Thread-to-instance" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="310,350.78,314,341.78,310,345.78,306,341.78,310,350.78" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="42" x="311" y="296.0669">Spawn</text><!--MD5=[88cfced2f7268004fb8d4acb0a772cb6]
+link htbt_main_ctx to htbt_auth_impl--><path d="M715.24,222 C738.72,222 767.17,222 794.1,222 " fill="none" id="htbt_main_ctx-to-htbt_auth_impl" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="799.11,222,790.11,218,794.11,222,790.11,226,799.11,222" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="48" x="733.25" y="215.0669">SOLICIT</text><!--MD5=[5d75f5d7b42a2ea2002a94bc95486ae0]
+link cnc_txt_rec to Resolv--><path d="M789.69,374 C738.48,374 671.21,374 626.38,374 " fill="none" id="cnc_txt_rec-Resolv" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="621.13,374,630.13,378,626.13,374,630.13,370,621.13,374" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="794.9,374,785.9,370,789.9,374,785.9,378,794.9,374" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="93" x="661.5" y="367.0669">Query TXT REC</text><!--MD5=[21f13ee85425df7d0d44b20dfd58b782]
+link a_prne_i to LBD--><path d="M460.72,51.76 C474.47,66.42 491.89,86.73 504,107 C524.32,141.02 538.89,185.87 545.32,207.79 " fill="none" id="a_prne_i-to-LBD" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="546.78,212.85,548.1345,203.0947,545.397,208.0451,540.4466,205.3076,546.78,212.85" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="30" x="500" y="95.0669">M2M</text><!--MD5=[32a84a1616dbc00c539143c912f55bdc]
+link mttool to LBD--><path d="M641.51,47.56 C626.81,62.31 606.53,84.54 593,107 C572.61,140.84 558.6,185.77 552.48,207.75 " fill="none" id="mttool-to-LBD" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="551.1,212.82,557.329,205.1912,552.4168,207.9965,549.6114,203.0843,551.1,212.82" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="131" x="610" y="95.0669">Maintenance Access</text><!--MD5=[83cdfa74e954ec923cdff4b0977a496e]
+link instance to victim_host--><path d="M310,397.01 C310,423.1 310,466.58 310,494.76 " fill="none" id="instance-to-victim_host" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="310,499.84,314,490.84,310,494.84,306,490.84,310,499.84" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="35" x="311" y="466.0669">Infect</text><!--MD5=[96da60eb07ff64def7a1d9d5675bf6cf]
+@startuml proone
+package "Proone Instance" as prne_i {
+ [Main Thread]
+ component Heartbeat {
+ interface LBD
+ component CNCP
+ component "Main CTX" as htbt_main_ctx
+ }
+ component Resolv
+ component Recon
+ component "BNE Pool" as bne_pool {
+ [instance]
+ }
+
+ [CNCP] <-d-> [Resolv]: Queue TXT REC Query
+ [Recon] -> [Main Thread]: Event Callback
+ [Main Thread] -d-> [instance]: Spawn
+}
+
+cloud "Public DOT Nameservers" {
+ component "CNC TXT REC" as cnc_txt_rec
+}
+
+usecase "Heartbeat Auth Impl" as htbt_auth_impl
+usecase "Another Proone Instance" as a_prne_i
+usecase "Maintenance Tool" as mttool
+node "Victim Host" as victim_host
+
+[htbt_main_ctx] -> [htbt_auth_impl]: SOLICIT
+[cnc_txt_rec] <-> [Resolv]: Query TXT REC
+a_prne_i -d-> (LBD): M2M
+mttool -d-> (LBD): Maintenance Access
+[instance] -d-> victim_host: Infect
+@enduml
+
+PlantUML version 1.2021.7(Sun May 23 20:40:07 AWST 2021)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Default Encoding: UTF-8
+Language: en
+Country: GB
+--></g></svg> \ No newline at end of file
diff --git a/davo-cv/portfolio/index.md b/davo-cv/portfolio/index.md
index a5c6260..852c2d0 100644
--- a/davo-cv/portfolio/index.md
+++ b/davo-cv/portfolio/index.md
@@ -280,18 +280,24 @@ the development of the product. I added SoC codec support and ported all the
backend daemons and frontend apps.
## Hobbyist years
-### Failed video game project
-2018
+### Failed video game project (2018)
+<img
+ src="img/chanzio.webp"
+ alt=""
+ width="600">
-https://youtu.be/PaBgZEkTaFw?si=rI-nD-GpPrW28bEL
+[https://youtu.be/PaBgZEkTaFw?si=rI-nD-GpPrW28bEL](https://youtu.be/PaBgZEkTaFw?si=rI-nD-GpPrW28bEL)
-### "Proone" Research Linux Worm Virus
-2019 - 2022
+### "Proone": Research Linux Worm Virus (2019 - 2022)
+<img
+ src="img/proone.svg"
+ alt=""
+ width="800">
-https://github.com/dxdxdt/proone
+[https://github.com/dxdxdt/proone](https://github.com/dxdxdt/proone)
-### Book: "Dev Log"
-Deep dive into network engineering(work in progress).
+### Book: "Dev Log" (- present)
+Deep dive into network engineering.
## Open source project contributions
| project | what | url |
diff --git a/linux-casual/mp-int/ripple-carry-adder/README.md b/linux-casual/mp-int/ripple-carry-adder/README.md
new file mode 100644
index 0000000..3ae065f
--- /dev/null
+++ b/linux-casual/mp-int/ripple-carry-adder/README.md
@@ -0,0 +1,5 @@
+# Ripple-carry Adder Interactive Animations
+This is CSS animated interactive ripple-carry adder. Made to help you understand
+how computers do math :)
+
+https://en.wikipedia.org/wiki/Adder_(electronics)#Ripple-carry_adder
diff --git a/linux-casual/mp-int/ripple-carry-adder/anim.css b/linux-casual/mp-int/ripple-carry-adder/anim.css
new file mode 100644
index 0000000..0f6c53b
--- /dev/null
+++ b/linux-casual/mp-int/ripple-carry-adder/anim.css
@@ -0,0 +1,5 @@
+@keyframes state-change {
+ from {
+ fill: orange;
+ }
+}
diff --git a/linux-casual/mp-int/ripple-carry-adder/animation-skel.svg b/linux-casual/mp-int/ripple-carry-adder/animation-skel.svg
new file mode 100755
index 0000000..1f6d732
--- /dev/null
+++ b/linux-casual/mp-int/ripple-carry-adder/animation-skel.svg
@@ -0,0 +1,1808 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="297mm"
+ height="210mm"
+ viewBox="0 0 297 210"
+ version="1.1"
+ id="svg1"
+ inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+ sodipodi:docname="animation-skel.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <style
+ id="style1" />
+ <sodipodi:namedview
+ id="namedview1"
+ pagecolor="#ffffff"
+ bordercolor="#000000"
+ borderopacity="0.25"
+ inkscape:showpageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1"
+ inkscape:document-units="mm"
+ inkscape:zoom="1.0333895"
+ inkscape:cx="534.64836"
+ inkscape:cy="310.62828"
+ inkscape:window-width="2560"
+ inkscape:window-height="1371"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg1"
+ showgrid="true"
+ showguides="true">
+ <inkscape:grid
+ id="grid1"
+ units="mm"
+ originx="0"
+ originy="0"
+ spacingx="0.99999986"
+ spacingy="1"
+ empcolor="#0099e5"
+ empopacity="0.30196078"
+ color="#0099e5"
+ opacity="0.14902"
+ empspacing="5"
+ enabled="true"
+ visible="true" />
+ </sodipodi:namedview>
+ <defs
+ id="defs1">
+ <marker
+ style="overflow:visible"
+ id="marker67"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path67" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="marker66"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path66" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="marker65"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path65" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="marker64"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path64" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="marker63"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path63" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="marker62"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path62" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="marker61"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path61" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="marker60"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path60" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Triangle"
+ refX="0"
+ refY="0"
+ orient="auto-start-reverse"
+ inkscape:stockid="Triangle arrow"
+ markerWidth="1"
+ markerHeight="1"
+ viewBox="0 0 1 1"
+ inkscape:isstock="true"
+ inkscape:collect="always"
+ preserveAspectRatio="xMidYMid">
+ <path
+ transform="scale(0.5)"
+ style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
+ d="M 5.77,0 -2.88,5 V -5 Z"
+ id="path135" />
+ </marker>
+ </defs>
+ <text
+ xml:space="preserve"
+ style="font-size:5.29167px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;stroke-width:0.529;stroke-linecap:round;stroke-miterlimit:5"
+ x="289.74066"
+ y="48.83646"
+ id="text24"><tspan
+ sodipodi:role="line"
+ id="tspan24"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.29167px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.529"
+ x="289.74066"
+ y="48.83646">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5.29167px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;stroke-width:0.529;stroke-linecap:round;stroke-miterlimit:5"
+ x="144.3438"
+ y="158.83118"
+ id="text24-6"><tspan
+ sodipodi:role="line"
+ id="tspan24-18"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.29167px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.529"
+ x="144.3438"
+ y="158.83118">CF</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5.29167px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#ffffff;stroke-width:0.529;stroke-linecap:round;stroke-miterlimit:5"
+ x="14.740705"
+ y="48.83646"
+ id="text24-9"><tspan
+ sodipodi:role="line"
+ id="tspan24-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.29167px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke-width:0.529"
+ x="14.740705"
+ y="48.83646">7</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#ff5733;stroke:#ff5733;stroke-width:0.529;stroke-linecap:round;stroke-miterlimit:5"
+ x="131.61467"
+ y="189.02167"
+ id="text15"><tspan
+ sodipodi:role="line"
+ id="tspan15"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.29167px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529;stroke-opacity:1"
+ x="131.61467"
+ y="189.02167">(flick me)</tspan></text>
+ <g
+ inkscape:groupmode="layer"
+ id="ovf"
+ inkscape:label="ovf"
+ transform="translate(21.970831,9.7354446)">
+ <path
+ style="opacity:1;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="path57"
+ sodipodi:type="arc"
+ sodipodi:cx="125.52915"
+ sodipodi:cy="160.52917"
+ sodipodi:rx="7.4999976"
+ sodipodi:ry="7.5"
+ sodipodi:start="0"
+ sodipodi:end="6.2818756"
+ sodipodi:arc-type="arc"
+ d="m 133.02915,160.52917 a 7.4999976,7.5 0 0 1 -7.49754,7.5 7.4999976,7.5 0 0 1 -7.50245,-7.49508 7.4999976,7.5 0 0 1 7.49262,-7.50491 7.4999976,7.5 0 0 1 7.50736,7.49017"
+ sodipodi:open="true"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="132.50391"
+ y="152.30815"
+ id="text1-6-4"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="text"><tspan
+ sodipodi:role="line"
+ id="tspan1-1-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="132.50391"
+ y="152.30815">0</tspan></text>
+ </g>
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker66)"
+ d="m 154.99998,170.26461 h 134.99997 v -65 h -7.99999"
+ id="path59"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker65)"
+ d="M 15.080681,105.3969 4.9999992,105.26461 v 65 H 34.999996 137.99998"
+ id="path58"
+ sodipodi:nodetypes="ccccc" />
+ <g
+ inkscape:groupmode="layer"
+ id="carry"
+ inkscape:label="carry"
+ transform="translate(0,-27.235392)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="42.210152"
+ y="121.22724"
+ id="carry-6"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-6"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan1-1-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-opacity:1"
+ x="42.210152"
+ y="121.22724">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="76.265549"
+ y="127.34093"
+ id="carry-5"
+ transform="scale(0.9683719,1.0326611)"
+ inkscape:label="carry-5"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan2-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-opacity:1"
+ x="76.265549"
+ y="127.34093">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="118.00031"
+ y="121.22724"
+ id="carry-4"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-4"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan7-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-opacity:1"
+ x="118.00031"
+ y="121.22724">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="148.55182"
+ y="127.34093"
+ id="carry-3"
+ transform="scale(0.9683719,1.0326611)"
+ inkscape:label="carry-3"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan15-7-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-opacity:1"
+ x="148.55182"
+ y="127.34093">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="193.79045"
+ y="121.22724"
+ id="carry-2"
+ transform="matrix(0.92360274,0,0,1.0827166,0,1.2291667e-6)"
+ inkscape:label="carry-2"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan5-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-opacity:1"
+ x="193.79045"
+ y="121.22724">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="220.83809"
+ y="127.34093"
+ id="carry-1"
+ transform="matrix(0.9683719,0,0,1.0326611,0,1.2291667e-6)"
+ inkscape:label="carry-1"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan6-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-opacity:1"
+ x="220.83809"
+ y="127.34093">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="269.5806"
+ y="121.22724"
+ id="carry-0"
+ transform="matrix(0.92360274,0,0,1.0827166,0,1.2291667e-6)"
+ inkscape:label="carry-0"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan3-8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ff5733;fill-opacity:1;stroke:#ff5733;stroke-width:0;stroke-opacity:1"
+ x="269.5806"
+ y="121.22724">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-c"
+ inkscape:label="8-bit-register-c"
+ style="display:inline"
+ transform="translate(0,-27.235392)">
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-c-7"
+ inkscape:label="8-bit-register-c-7"
+ transform="translate(0,27.235392)">
+ <rect
+ style="display:inline;opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect1-0"
+ width="14.999998"
+ height="15"
+ x="17.499996"
+ y="162.5"
+ transform="translate(0,-27.235391)"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="display:inline;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="23.659319"
+ y="161.05544"
+ id="text1-6"
+ transform="matrix(0.92360274,0,0,1.0827166,0,-27.235391)"><tspan
+ sodipodi:role="line"
+ id="tspan1-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="23.659319"
+ y="161.05544">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-c-6"
+ inkscape:label="8-bit-register-c-6"
+ transform="translate(0,27.235392)"
+ style="display:inline">
+ <rect
+ style="display:inline;opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect2"
+ width="14.999998"
+ height="15"
+ x="52.499992"
+ y="162.5"
+ transform="translate(0,-27.235391)"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="display:inline;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="58.193985"
+ y="168.98091"
+ id="text2"
+ transform="matrix(0.9683719,0,0,1.0326611,0,-27.235391)"><tspan
+ sodipodi:role="line"
+ id="tspan2"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="58.193985"
+ y="168.98091">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-c-5"
+ inkscape:label="8-bit-register-c-5"
+ transform="translate(0,27.235392)"
+ style="display:inline">
+ <rect
+ style="display:inline;opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect7"
+ width="14.999998"
+ height="15"
+ x="87.499985"
+ y="162.5"
+ transform="translate(0,-27.235391)"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="display:inline;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="99.449463"
+ y="161.05544"
+ id="text7"
+ transform="matrix(0.92360274,0,0,1.0827166,0,-27.235391)"><tspan
+ sodipodi:role="line"
+ id="tspan7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="99.449463"
+ y="161.05544">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-c-4"
+ inkscape:label="8-bit-register-c-4"
+ transform="translate(0,27.235392)"
+ style="display:inline">
+ <rect
+ style="display:inline;opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect15"
+ width="14.999998"
+ height="15"
+ x="122.49998"
+ y="162.5"
+ transform="translate(0,-27.235391)"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="display:inline;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="130.48024"
+ y="168.9809"
+ id="text15-1"
+ transform="matrix(0.9683719,0,0,1.0326611,0,-27.235391)"><tspan
+ sodipodi:role="line"
+ id="tspan15-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="130.48024"
+ y="168.9809">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-c-3"
+ inkscape:label="8-bit-register-c-3"
+ transform="translate(0,27.235392)"
+ style="display:inline">
+ <rect
+ style="display:inline;opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect5"
+ width="14.999998"
+ height="15"
+ x="157.49997"
+ y="162.5"
+ transform="translate(0,-27.235391)"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="display:inline;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="175.23959"
+ y="161.05544"
+ id="text5"
+ transform="matrix(0.92360274,0,0,1.0827166,0,-27.235391)"><tspan
+ sodipodi:role="line"
+ id="tspan5"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="175.23959"
+ y="161.05544">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-c-2"
+ inkscape:label="8-bit-register-c-2"
+ transform="translate(0,27.235392)"
+ style="display:inline">
+ <rect
+ style="display:inline;opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect6"
+ width="14.999998"
+ height="15"
+ x="192.49997"
+ y="162.5"
+ transform="translate(0,-27.235391)"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="display:inline;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="202.76651"
+ y="168.9809"
+ id="text6"
+ transform="matrix(0.9683719,0,0,1.0326611,0,-27.235391)"><tspan
+ sodipodi:role="line"
+ id="tspan6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="202.76651"
+ y="168.9809">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-c-1"
+ inkscape:label="8-bit-register-c-1"
+ transform="translate(0,27.235392)"
+ style="display:inline">
+ <rect
+ style="display:inline;opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect3"
+ width="14.999998"
+ height="15"
+ x="227.49997"
+ y="162.5"
+ transform="translate(0,-27.235391)"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="display:inline;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="251.02975"
+ y="161.05542"
+ id="text3"
+ transform="matrix(0.92360274,0,0,1.0827166,0,-27.235391)"><tspan
+ sodipodi:role="line"
+ id="tspan3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="251.02975"
+ y="161.05542">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-c-0"
+ inkscape:label="8-bit-register-c-0"
+ transform="translate(0,27.235392)"
+ style="display:inline">
+ <rect
+ style="display:inline;opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect4"
+ width="14.999998"
+ height="15"
+ x="262.49997"
+ y="162.5"
+ transform="translate(0,-27.235391)"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="display:inline;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="275.05276"
+ y="168.9809"
+ id="text4"
+ transform="matrix(0.9683719,0,0,1.0326611,0,-27.235391)"><tspan
+ sodipodi:role="line"
+ id="tspan4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="275.05276"
+ y="168.9809">0</tspan></text>
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="circuits-a2r"
+ inkscape:label="circuits-a2r"
+ transform="translate(0,-27.235392)">
+ <path
+ style="opacity:1;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.501925;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker67)"
+ d="m 270.06605,160.48167 0.13236,-18.45129"
+ id="path49" />
+ <path
+ style="opacity:1;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.501925;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker67)"
+ d="m 235.04717,160.48167 -1e-5,-18.14063"
+ id="path50" />
+ <path
+ style="opacity:1;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.501925;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker67)"
+ d="M 200.02829,160.48167 V 142.48623"
+ id="path51" />
+ <path
+ style="opacity:1;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.501925;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker67)"
+ d="M 165.00941,160.48167 V 142.48623"
+ id="path52" />
+ <path
+ style="opacity:1;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.501925;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker67)"
+ d="M 129.99054,160.48167 V 142.48623"
+ id="path53" />
+ <path
+ style="opacity:1;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.501925;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker67)"
+ d="m 94.971658,160.48167 0.08071,-18.06804"
+ id="path54" />
+ <path
+ style="opacity:1;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.501925;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker67)"
+ d="M 59.952778,160.48167 V 142.48623"
+ id="path55" />
+ <path
+ style="opacity:1;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.501925;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker67)"
+ d="M 24.933899,160.48167 V 142.48623"
+ id="path56" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="circuits-r2a"
+ inkscape:label="circuits-r2a"
+ style="display:inline"
+ transform="translate(0,-27.235392)">
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.516068;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Triangle)"
+ d="M 274.99995,77.487065 V 120.28683"
+ id="path26" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.500868;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker60)"
+ d="m 264.99997,102.47246 v 17.9181"
+ id="path27" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.515009;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 239.99995,77.750612 V 120.37483"
+ id="path28" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.498309;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker62)"
+ d="M 229.99995,102.76458 V 120.5"
+ id="path29" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.51568;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker63)"
+ d="M 204.99996,77.764581 V 120.5"
+ id="path30" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.493424;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="m 194.99996,103.26523 v 17.38943"
+ id="path31" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.51568;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 169.99996,77.764581 V 120.5"
+ id="path32" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.493424;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="m 159.99996,103.2652 v 17.38945"
+ id="path33" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.51568;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 134.99997,77.764581 V 120.5"
+ id="path34" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.498308;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 124.99997,102.76458 V 120.5"
+ id="path35" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.51568;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 99.999972,77.764581 V 120.5"
+ id="path36" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.498309;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 89.999974,102.76456 V 120.5"
+ id="path37" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.51568;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 64.999985,77.764581 V 120.5"
+ id="path38" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.498309;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 54.999987,102.76453 V 120.5"
+ id="path39" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.51568;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 29.999994,77.764581 V 120.5"
+ id="path40" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.498309;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker61)"
+ d="M 19.999995,102.76456 V 120.5"
+ id="path41" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="adders"
+ inkscape:label="adders"
+ style="display:inline"
+ transform="translate(159.73539,-22.499975)">
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.620976;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker64)"
+ d="m 100.47081,127.4614 -13.156389,0.0892"
+ id="path42" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.60425;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker64)"
+ d="m 65.875471,127.81628 -13.610892,-0.0812"
+ id="path43" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.609975;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker64)"
+ d="m 31.202787,127.73507 -13.938203,0.0812"
+ id="path44" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.62991;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker64)"
+ d="M -3.5046008,128.03064 H -17.582836"
+ id="path45" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.63249;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker64)"
+ d="m -37.704049,127.8157 -14.87251,0.0818"
+ id="path46" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.639777;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker64)"
+ d="m -72.429897,127.89816 -15.122018,-0.0819"
+ id="path47" />
+ <path
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.641202;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker64)"
+ d="m -107.08438,127.81652 -15.45196,0.081"
+ id="path48" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer14-2-8"
+ inkscape:label="adder-7"
+ transform="translate(-405.08061,-4.6547389)"
+ style="display:inline">
+ <rect
+ style="display:inline;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.69053;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16-7-4-0-2-7"
+ width="19.574051"
+ height="19.574051"
+ x="260.34521"
+ y="122.41933" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="263.60806"
+ y="126.5353"
+ id="text59-4-0"><tspan
+ sodipodi:role="line"
+ id="tspan59-7-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="263.60806"
+ y="126.5353">A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="273.58932"
+ y="126.5226"
+ id="text59-7-7-8"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-5-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="273.58932"
+ y="126.5226">B</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="260.74173"
+ y="133.45767"
+ id="text59-7-9-4-4"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-8-2"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="260.74173"
+ y="133.45767">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-1-9">o</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="275.81366"
+ y="133.5"
+ id="text59-7-9-6-2-6"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-0-8-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="275.81366"
+ y="133.5">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-4-9-0">i</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="268.87482"
+ y="141.45767"
+ id="text59-7-8-3-4"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-3-6-2"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="268.87482"
+ y="141.45767">S</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer14-2"
+ inkscape:label="adder-6"
+ transform="translate(-370.08062,-4.6547389)"
+ style="display:inline">
+ <rect
+ style="display:inline;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.69053;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16-7-4-0-2"
+ width="19.574051"
+ height="19.574051"
+ x="260.34521"
+ y="122.41933" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="263.60806"
+ y="126.5353"
+ id="text59-4"><tspan
+ sodipodi:role="line"
+ id="tspan59-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="263.60806"
+ y="126.5353">A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="273.58932"
+ y="126.5226"
+ id="text59-7-7"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-5"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="273.58932"
+ y="126.5226">B</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="260.74173"
+ y="133.45767"
+ id="text59-7-9-4"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="260.74173"
+ y="133.45767">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-1">o</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="275.81366"
+ y="133.5"
+ id="text59-7-9-6-2"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-0-8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="275.81366"
+ y="133.5">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-4-9">i</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="268.87482"
+ y="141.45767"
+ id="text59-7-8-3"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-3-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="268.87482"
+ y="141.45767">S</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer14-1"
+ inkscape:label="adder-5"
+ transform="translate(-335.08063,-4.6547389)"
+ style="display:inline">
+ <rect
+ style="display:inline;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.69053;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16-7-4-0-0"
+ width="19.574051"
+ height="19.574051"
+ x="260.34521"
+ y="122.41933" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="263.60806"
+ y="126.5353"
+ id="text59-5"><tspan
+ sodipodi:role="line"
+ id="tspan59-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="263.60806"
+ y="126.5353">A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="273.58932"
+ y="126.5226"
+ id="text59-7-1"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-08"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="273.58932"
+ y="126.5226">B</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="260.74173"
+ y="133.45767"
+ id="text59-7-9-5"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-06"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="260.74173"
+ y="133.45767">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-46">o</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="275.81366"
+ y="133.5"
+ id="text59-7-9-6-25"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-0-86"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="275.81366"
+ y="133.5">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-4-2">i</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="268.87482"
+ y="141.45767"
+ id="text59-7-8-8"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-3-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="268.87482"
+ y="141.45767">S</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer14-0"
+ inkscape:label="adder-4"
+ transform="translate(-300.08063,-4.6547389)"
+ style="display:inline">
+ <rect
+ style="display:inline;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.69053;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16-7-4-0-6"
+ width="19.574051"
+ height="19.574051"
+ x="260.34521"
+ y="122.41933" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="263.60806"
+ y="126.5353"
+ id="text59-2"><tspan
+ sodipodi:role="line"
+ id="tspan59-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="263.60806"
+ y="126.5353">A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="273.58932"
+ y="126.5226"
+ id="text59-7-90"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="273.58932"
+ y="126.5226">B</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="260.74173"
+ y="133.45767"
+ id="text59-7-9-1"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="260.74173"
+ y="133.45767">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-11">o</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="275.81366"
+ y="133.5"
+ id="text59-7-9-6-0"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-0-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="275.81366"
+ y="133.5">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-4-4">i</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="268.87482"
+ y="141.45767"
+ id="text59-7-8-0"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-3-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="268.87482"
+ y="141.45767">S</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer14-6"
+ inkscape:label="adder-3"
+ transform="translate(-265.08064,-4.6547389)"
+ style="display:inline">
+ <rect
+ style="display:inline;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.69053;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16-7-4-0-9"
+ width="19.574051"
+ height="19.574051"
+ x="260.34521"
+ y="122.41933" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="263.60806"
+ y="126.5353"
+ id="text59-3"><tspan
+ sodipodi:role="line"
+ id="tspan59-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="263.60806"
+ y="126.5353">A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="273.58932"
+ y="126.5226"
+ id="text59-7-80"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-56"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="273.58932"
+ y="126.5226">B</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="260.74173"
+ y="133.45767"
+ id="text59-7-9-64"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-00"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="260.74173"
+ y="133.45767">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-462">o</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="275.81366"
+ y="133.5"
+ id="text59-7-9-6-6"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-0-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="275.81366"
+ y="133.5">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-4-5">i</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="268.87482"
+ y="141.45767"
+ id="text59-7-8-6"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-3-98"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="268.87482"
+ y="141.45767">S</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer14-29"
+ inkscape:label="adder-2"
+ transform="translate(-230.08064,-4.6547389)"
+ style="display:inline">
+ <rect
+ style="display:inline;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.69053;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16-7-4-0-96"
+ width="19.574051"
+ height="19.574051"
+ x="260.34521"
+ y="122.41933" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="263.60806"
+ y="126.5353"
+ id="text59-0"><tspan
+ sodipodi:role="line"
+ id="tspan59-2"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="263.60806"
+ y="126.5353">A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="273.58932"
+ y="126.5226"
+ id="text59-7-76"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="273.58932"
+ y="126.5226">B</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="260.74173"
+ y="133.45767"
+ id="text59-7-9-32"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="260.74173"
+ y="133.45767">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-5">o</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="275.81366"
+ y="133.5"
+ id="text59-7-9-6-9"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-0-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="275.81366"
+ y="133.5">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-4-1">i</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="268.87482"
+ y="141.45767"
+ id="text59-7-8-4"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-3-91"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="268.87482"
+ y="141.45767">S</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer14-9"
+ inkscape:label="adder-1"
+ transform="translate(-195.08065,-4.6547389)"
+ style="display:inline">
+ <rect
+ style="display:inline;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.69053;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16-7-4-0-7"
+ width="19.574051"
+ height="19.574051"
+ x="260.34521"
+ y="122.41933" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="263.60806"
+ y="126.5353"
+ id="text59-76"><tspan
+ sodipodi:role="line"
+ id="tspan59-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="263.60806"
+ y="126.5353">A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="273.58932"
+ y="126.5226"
+ id="text59-7-3"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="273.58932"
+ y="126.5226">B</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="260.74173"
+ y="133.45767"
+ id="text59-7-9-3"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-09"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="260.74173"
+ y="133.45767">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-2">o</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="275.81366"
+ y="133.5"
+ id="text59-7-9-6-5"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-0-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="275.81366"
+ y="133.5">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-4-0">i</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="268.87482"
+ y="141.45767"
+ id="text59-7-8-5"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-3-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="268.87482"
+ y="141.45767">S</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer14"
+ inkscape:label="adder-0"
+ transform="translate(-159.73539,-4.735417)"
+ style="display:inline">
+ <rect
+ style="display:inline;fill:#cdddcb;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.69053;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect16-7-4-0"
+ width="19.574051"
+ height="19.574051"
+ x="260.34521"
+ y="122.41933" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="263.60806"
+ y="126.5353"
+ id="text59"><tspan
+ sodipodi:role="line"
+ id="tspan59"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="263.60806"
+ y="126.5353">A</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="273.58932"
+ y="126.5226"
+ id="text59-7"><tspan
+ sodipodi:role="line"
+ id="tspan59-5"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="273.58932"
+ y="126.5226">B</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="260.74173"
+ y="133.45767"
+ id="text59-7-9"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="260.74173"
+ y="133.45767">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60">o</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="275.81366"
+ y="133.5"
+ id="text59-7-9-6"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-7-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="275.81366"
+ y="133.5">C<tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
+ id="tspan60-4">i</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.5308px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;display:inline;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ x="268.87482"
+ y="141.45767"
+ id="text59-7-8"><tspan
+ sodipodi:role="line"
+ id="tspan59-5-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.529167"
+ x="268.87482"
+ y="141.45767">S</tspan></text>
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-b"
+ inkscape:label="8-bit-register-b"
+ transform="translate(159.73539,2.7646337)">
+ <g
+ inkscape:label="8-bit-register-b-7"
+ inkscape:groupmode="layer"
+ id="8-bit-register-b-7">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect1"
+ width="14.999998"
+ height="15"
+ x="-149.7354"
+ y="57.76453"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-157.40919"
+ y="64.321465"
+ id="text1"
+ transform="scale(0.92360273,1.0827166)"><tspan
+ sodipodi:role="line"
+ id="tspan1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-157.40919"
+ y="64.321465">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-b-6"
+ inkscape:groupmode="layer"
+ id="8-bit-register-b-6"
+ transform="translate(14.999999)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect8"
+ width="14.999998"
+ height="15"
+ x="-129.75603"
+ y="57.764507"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-130.01472"
+ y="67.557991"
+ id="text8"
+ transform="scale(0.96837191,1.0326611)"><tspan
+ sodipodi:role="line"
+ id="tspan8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-130.01472"
+ y="67.557991">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-b-5"
+ inkscape:groupmode="layer"
+ id="8-bit-register-b-5"
+ transform="translate(29.99999)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect13"
+ width="14.999998"
+ height="15"
+ x="-109.7354"
+ y="57.76453"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-114.10056"
+ y="64.321465"
+ id="text13"
+ transform="scale(0.92360273,1.0827166)"><tspan
+ sodipodi:role="line"
+ id="tspan13"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-114.10056"
+ y="64.321465">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-b-4"
+ inkscape:groupmode="layer"
+ id="8-bit-register-b-4"
+ transform="translate(44.999989)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect14"
+ width="14.999998"
+ height="15"
+ x="-89.735405"
+ y="57.764557"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-88.686981"
+ y="67.558037"
+ id="text14"
+ transform="scale(0.96837191,1.0326611)"><tspan
+ sodipodi:role="line"
+ id="tspan14"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-88.686981"
+ y="67.558037">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-b-3"
+ inkscape:groupmode="layer"
+ id="8-bit-register-b-3"
+ transform="translate(59.999989)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect11"
+ width="14.999998"
+ height="15"
+ x="-69.735413"
+ y="57.76453"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-70.791916"
+ y="64.321465"
+ id="text11"
+ transform="scale(0.92360273,1.0827166)"><tspan
+ sodipodi:role="line"
+ id="tspan11"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-70.791916"
+ y="64.321465">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-b-2"
+ inkscape:groupmode="layer"
+ id="8-bit-register-b-2"
+ transform="translate(74.999988)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect12"
+ width="14.999998"
+ height="15"
+ x="-49.735416"
+ y="57.764557"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-47.380543"
+ y="67.558037"
+ id="text12"
+ transform="scale(0.96837191,1.0326611)"><tspan
+ sodipodi:role="line"
+ id="tspan12"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-47.380543"
+ y="67.558037">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-b-1"
+ inkscape:groupmode="layer"
+ id="8-bit-register-b-1"
+ transform="translate(54.999986,24)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect9"
+ width="14.999998"
+ height="15"
+ x="5.2645826"
+ y="33.764557"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="10.411819"
+ y="42.155022"
+ id="text9"
+ transform="scale(0.92360273,1.0827166)"><tspan
+ sodipodi:role="line"
+ id="tspan9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="10.411819"
+ y="42.155022">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-b-0"
+ inkscape:groupmode="layer"
+ id="8-bit-register-b-0"
+ transform="translate(69.999985,24)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect10"
+ width="14.999998"
+ height="15"
+ x="25.264585"
+ y="33.499977"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="30.069044"
+ y="44.060902"
+ id="text10"
+ transform="scale(0.96837191,1.0326611)"><tspan
+ sodipodi:role="line"
+ id="tspan10"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="30.069044"
+ y="44.060902">0</tspan></text>
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="8-bit-register-a"
+ inkscape:label="8-bit-register-a"
+ transform="translate(159.73539,-22.499975)"
+ style="display:inline">
+ <g
+ inkscape:label="8-bit-register-a-7"
+ inkscape:groupmode="layer"
+ id="8-bit-register-a-7">
+ <rect
+ style="display:inline;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect16-9"
+ width="14.999998"
+ height="15"
+ x="-134.7354"
+ y="57.764584"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-141.16846"
+ y="64.32151"
+ id="text16"
+ transform="scale(0.92360273,1.0827166)"><tspan
+ sodipodi:role="line"
+ id="tspan16"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-141.16846"
+ y="64.32151">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-a-6"
+ inkscape:groupmode="layer"
+ id="8-bit-register-a-6"
+ transform="translate(14.999999)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect17"
+ width="14.999998"
+ height="15"
+ x="-115.02061"
+ y="57.764584"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-114.79802"
+ y="67.55806"
+ id="text17"
+ transform="scale(0.96837191,1.0326611)"><tspan
+ sodipodi:role="line"
+ id="tspan17"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-114.79802"
+ y="67.55806">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-a-5"
+ inkscape:groupmode="layer"
+ id="8-bit-register-a-5"
+ transform="translate(29.99999)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect22"
+ width="14.999998"
+ height="15"
+ x="-94.714783"
+ y="57.764584"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-97.837494"
+ y="64.32151"
+ id="text22"
+ transform="scale(0.92360273,1.0827166)"><tspan
+ sodipodi:role="line"
+ id="tspan22"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-97.837494"
+ y="64.32151">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-a-4"
+ inkscape:groupmode="layer"
+ id="8-bit-register-a-4"
+ transform="translate(44.999989)">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect23"
+ width="14.999998"
+ height="15"
+ x="-74.73542"
+ y="57.764584"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-73.197067"
+ y="67.55806"
+ id="text23"
+ transform="scale(0.96837191,1.0326611)"><tspan
+ sodipodi:role="line"
+ id="tspan23"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-73.197067"
+ y="67.55806">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-a-3"
+ inkscape:groupmode="layer"
+ id="8-bit-register-a-3"
+ transform="translate(59.999989)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect20"
+ width="14.999998"
+ height="15"
+ x="-54.351788"
+ y="57.887196"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-54.135815"
+ y="64.434761"
+ id="text20"
+ transform="scale(0.92360273,1.0827166)"><tspan
+ sodipodi:role="line"
+ id="tspan20"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-54.135815"
+ y="64.434761">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-a-2"
+ inkscape:groupmode="layer"
+ id="8-bit-register-a-2"
+ transform="translate(74.999988)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect21"
+ width="15"
+ height="15"
+ x="-34.73542"
+ y="57.764584"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="-31.890633"
+ y="67.55806"
+ id="text21"
+ transform="scale(0.96837191,1.0326611)"><tspan
+ sodipodi:role="line"
+ id="tspan21"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="-31.890633"
+ y="67.55806">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-a-1"
+ inkscape:groupmode="layer"
+ id="8-bit-register-a-1"
+ transform="translate(54.999986,23.999999)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#ffffff;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ id="rect18"
+ width="14.999998"
+ height="15"
+ x="20.264585"
+ y="33.764591"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="26.652571"
+ y="42.155052"
+ id="text18"
+ transform="scale(0.92360273,1.0827166)"><tspan
+ sodipodi:role="line"
+ id="tspan18"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="26.652571"
+ y="42.155052">0</tspan></text>
+ </g>
+ <g
+ inkscape:label="8-bit-register-a-0"
+ inkscape:groupmode="layer"
+ id="8-bit-register-a-0"
+ transform="translate(69.999985,23.999999)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.529167;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ id="rect19"
+ width="15"
+ height="15"
+ x="40.000004"
+ y="33.499977"
+ class="state" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;opacity:1;fill:#0000ff;stroke:#b40000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5"
+ x="45.285736"
+ y="44.060902"
+ id="text19"
+ transform="scale(0.96837191,1.0326611)"><tspan
+ sodipodi:role="line"
+ id="tspan19"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.2064px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0"
+ x="45.285736"
+ y="44.060902">0</tspan></text>
+ </g>
+ </g>
+</svg>
diff --git a/linux-casual/mp-int/ripple-carry-adder/index.css b/linux-casual/mp-int/ripple-carry-adder/index.css
new file mode 100644
index 0000000..b1bf0f0
--- /dev/null
+++ b/linux-casual/mp-int/ripple-carry-adder/index.css
@@ -0,0 +1,16 @@
+fieldset {
+ display: inline-block;
+}
+
+.svg-container {
+ text-align: center;
+}
+
+fieldset {
+ font-family: monospace;
+}
+
+.ovf {
+ color: red;
+ opacity: 0;
+}
diff --git a/linux-casual/mp-int/ripple-carry-adder/index.html b/linux-casual/mp-int/ripple-carry-adder/index.html
new file mode 100644
index 0000000..3e760eb
--- /dev/null
+++ b/linux-casual/mp-int/ripple-carry-adder/index.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Ripple-carry adder, interactive</title>
+ <link rel="stylesheet" href="index.css">
+ <script src="index.js"></script>
+</head>
+<body>
+
+<p class="svg-container">
+ <object type="image/svg+xml" id="svg_the-math" data="the-math.svg"></object>
+</p>
+<p class="svg-container">
+ <object type="image/svg+xml" id="svg_adder" data="animation-skel.svg"></object>
+</p>
+
+<hr>
+<h2>Programmer</h2>
+
+<div class="op-console-container">
+ <fieldset>
+ <legend>OP</legend>
+ <div title="Add A and B, store result in A">
+ <input type="radio" id="radio_op-add" name="op" value="add" checked>
+ <label for="radio_op-add">ADD</label>
+ </div>
+ <div title="Add A and B with the carry bit from the state register, store result in A">
+ <input type="radio" id="radio_op-adc" name="op" value="adc">
+ <label for="radio_op-add">ADC</label>
+ </div>
+ </fieldset>
+
+ <fieldset class="operand-container">
+ <legend>Operand</legend>
+ <div>
+ <label for="txt_operand-a">A</label>
+ <input type="text" size="10" id="txt_operand-a">
+ <span class="ovf" id="span_operand-a">🛑 error</span>
+ </div>
+ <div>
+ <label for="txt_operand-b">B</label>
+ <input type="text" size="10" id="txt_operand-b">
+ <span class="ovf" id="span_operand-b">🛑 error</span>
+ </div>
+ </fieldset>
+
+ <fieldset>
+ <legend>ACT</legend>
+ <button type="button" id="btn_exec" title="Start the animation">Execute</button><br>
+ <button type="button" id="btn_reset" title="Reset the animation">Reset</button>
+ </fieldset>
+
+ <p>
+ <fieldset>
+ <legend>Animations</legend>
+ <label for="txt_state-animations">Animations</label>
+ <input type="text" id="txt_state-animations" size="30"><br>
+ <label for="txt_state-change-delay">State change delay(ms)</label>
+ <input type="number" id="txt_state-change-delay"><br>
+ <button type="button" id="btn_animation-defaults">Defaults</button>
+ </fieldset>
+</div>
+
+</body>
+</html>
diff --git a/linux-casual/mp-int/ripple-carry-adder/index.js b/linux-casual/mp-int/ripple-carry-adder/index.js
new file mode 100644
index 0000000..5d25e8e
--- /dev/null
+++ b/linux-casual/mp-int/ripple-carry-adder/index.js
@@ -0,0 +1,483 @@
+const BITS = 8;
+const INTMAX = (() => {
+ let ret = 0;
+
+ for (let i = 0; i < BITS; i += 1) {
+ ret = (ret << 1) | 1
+ }
+
+ return ret;
+})();
+const STATE_DELAY_DEFAULT = 250;
+const ANIMATIONS_DEFAULT = 'state-change 0.5s ease-in 0s 1';
+let state_delay, animations;
+
+function myParseInt (str) {
+ let v, radix;
+
+ if (str.startsWith("0b")) {
+ v = str.substring(2);
+ radix = 2;
+ }
+ else if (str.startsWith("0x")) {
+ v = str.substring(2);
+ radix = 16;
+ }
+ else if (str.startsWith("0")) {
+ v = str.substring(1);
+ radix = 1;
+ }
+ else {
+ v = str;
+ radix = 10;
+ }
+
+ if (v === '') {
+ return 0;
+ }
+
+ return parseInt(v, radix);
+}
+
+function onOperandChange (val, span) {
+ if (val.trim() === '') {
+ span.style.opacity = 0;
+ }
+ else {
+ const n = myParseInt(val);
+
+ if (!(n <= INTMAX)) { // NaN is also handled with this single conditional
+ span.style.opacity = 1;
+ }
+ else {
+ span.style.opacity = 0;
+ }
+ }
+}
+
+function restartClassAnimation (element) {
+ const evtOpts = { "once": true };
+
+ // I fucking hate modern web development
+
+ element.querySelectorAll('.state').forEach((element) => {
+ element.style.animation = '';
+ });
+ element.querySelectorAll('.state-op tspan').forEach((element) => {
+ element.style.animation = '';
+ });
+ element.querySelectorAll('.state').forEach((element) => {
+ element.style.animation = animations;
+ element.addEventListener('animationend', () => {
+ element.style.animation = '';
+ }, evtOpts);
+ element.addEventListener('animationcancel', () => {
+ element.style.animation = '';
+ }, evtOpts);
+ });
+ element.querySelectorAll('.state-op tspan').forEach((element) => {
+ element.style.animation = animations;
+ element.addEventListener('animationend', () => {
+ element.style.animation = '';
+ }, evtOpts);
+ element.addEventListener('animationcancel', () => {
+ element.style.animation = '';
+ }, evtOpts);
+ });
+}
+
+class Renderer {
+ reset () {}
+ start (opr_a, opr_b, carry) {}
+}
+class MathRenderer extends Renderer {}
+class AdderRenderer extends Renderer {}
+
+class State {
+ timer;
+ outputList = [];
+
+ addOutput (output_f) {
+ this.outputList.push(output_f);
+ }
+
+ clearTimer () {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ }
+
+ startTimer (v, ms) {
+ this.clearTimer();
+ this.timer = setTimeout(() => {
+ this.outputList.forEach((output_f) => {
+ output_f(v)
+ });
+ }, ms);
+ }
+
+ detach () {
+ this.clearTimer();
+ this.outputList = null;
+ }
+}
+
+class Register extends State {
+ #elements;
+ #txts = [];
+ #bit = false;
+ #onclick = null;
+
+ constructor (elements, clickable = true) {
+ super();
+ const self = this;
+
+ this.#elements = elements;
+
+ this.#elements.forEach((e) => {
+ const t = e.querySelector('text tspan');
+
+ this.#txts.push(t);
+ t.innerHTML = '0';
+ });
+
+
+ if (clickable) {
+ this.#onclick = () => {
+ self.value = !self.value;
+ };
+
+ this.#elements.forEach((e) => {
+ e.style.cursor = 'pointer';
+ e.addEventListener('click', this.#onclick);
+ });
+ }
+ }
+
+ get value () {
+ return this.#bit;
+ }
+
+ set value (v_in) {
+ const v = !!v_in;
+
+ if (this.#bit == v) {
+ return;
+ }
+ this.#bit = v;
+
+ this.#elements.forEach((e) => {
+ restartClassAnimation(e);
+ });
+ this.#txts.forEach((e) => {
+ if (v) {
+ e.innerHTML = '1';
+ }
+ else {
+ e.innerHTML = '0';
+ }
+ });
+
+ this.startTimer(v, state_delay);
+ }
+
+ detach () {
+ super.detach();
+
+ if (this.#onclick) {
+ this.#elements.forEach((e) => {
+ e.removeEventListener('click', this.#onclick);
+ });
+
+ this.#onclick = null;
+ }
+
+ this.#elements = null;
+ this.#txts = null;
+ }
+}
+
+class Adder extends State {
+ #a = false;
+ #b = false;
+ #c = false;
+
+ #update () {
+ this.startTimer(this.value, state_delay);
+ }
+
+ set a (v_in) {
+ this.#a = !!v_in;
+ this.#update();
+ }
+
+ set b (v_in) {
+ this.#b = !!v_in;
+ this.#update();
+ }
+
+ set c (v_in) {
+ this.#c = !!v_in;
+ this.#update();
+ }
+
+ get value () {
+ let sum = 0;
+
+ if (this.#a) {
+ sum += 1;
+ }
+ if (this.#b) {
+ sum += 1;
+ }
+ if (this.#c) {
+ sum += 1;
+ }
+
+ return {
+ "a": this.#a,
+ "b": this.#b,
+ "ci": this.#c,
+ "co": (sum & 2) > 0,
+ "s": (sum & 1) > 0
+ };
+ }
+}
+
+function forEachBit (n, nb_bits, f) {
+ let bit;
+
+ for (let i = 0; i < nb_bits; i += 1) {
+ bit = n & 1;
+ f(bit > 0);
+
+ n = n >> 1;
+ }
+}
+
+function getLocalstorageData () {
+ const item = localStorage.getItem('animations');
+
+ if (item) {
+ return JSON.parse(item);
+ }
+ else {
+ return {
+ "state-delay": STATE_DELAY_DEFAULT,
+ "animations": ANIMATIONS_DEFAULT
+ };
+ }
+}
+
+function setLocalstorageData (obj) {
+ localStorage.setItem('animations', JSON.stringify(obj));
+}
+
+function clearLocalstorageData () {
+ localStorage.removeItem('animations');
+}
+
+function uploadLocalstorageData (elements) {
+ state_delay = elements["state-delay"].value;
+ animations = elements["animations"].value;
+ setLocalstorageData({
+ "state-delay": elements["state-delay"].value,
+ "animations": elements["animations"].value
+ });
+}
+
+function downloadLocalstorageData (elements) {
+ const obj = getLocalstorageData();
+
+ state_delay = elements["state-delay"].value = obj["state-delay"];
+ animations = elements["animations"].value = obj["animations"];
+}
+
+window.addEventListener('load', async () => {
+ const svg_math = document.getElementById("svg_the-math");
+ const svg_adder = document.getElementById("svg_adder");
+ const span_operand_a = document.getElementById("span_operand-a");
+ const span_operand_b = document.getElementById("span_operand-b");
+ const css_anim = await (await fetch('./anim.css')).text();
+
+ // inject animation
+ svg_math.contentDocument.getElementById('style1').innerHTML = css_anim;
+ svg_adder.contentDocument.getElementById('style1').innerHTML = css_anim;
+
+ let stateList = [];
+ let adders;
+ let registerCarry;
+ let registerA;
+ let registerB;
+ let registerS;
+ let carryState;
+
+ function doReset () {
+ stateList.forEach((s) => {
+ s.detach();
+ });
+ stateList = [];
+ adders = [];
+ registerCarry = [];
+ registerA = [];
+ registerB = [];
+ registerS = [];
+ carryState = null;
+ carry0 = null;
+
+ // carryState
+ (() => {
+ const eMath = svg_math.contentDocument.getElementById('carry-ovf');
+ const eAdder = svg_adder.contentDocument.getElementById('ovf');
+
+ carryState = new Register([ eMath, eAdder ]);
+ stateList.push(carryState);
+ })();
+
+ // registerS
+ for (let i = 0; i < BITS; i += 1) {
+ const eMath = svg_math.contentDocument.getElementById('result-' + i);
+ const eAdder = svg_adder.contentDocument.getElementById('8-bit-register-c-' + i);
+ const r = new Register([ eMath, eAdder ], false);
+
+ stateList.push(r);
+ registerS.push(r);
+ }
+
+ // registerCarry
+ for (let i = 1; i <= BITS - 1; i += 1) {
+ const eMath = svg_math.contentDocument.getElementById('carry-' + i);
+ const eAdder = svg_adder.contentDocument.getElementById('carry-' + (i - 1));
+ const r = new Register([ eMath, eAdder ], false);
+
+ stateList.push(r);
+ registerCarry.push(r);
+ }
+ registerCarry.push(carryState);
+
+ // carry0
+ const carry0element = svg_math.contentDocument.getElementById('carry-0');
+ carry0 = new Register([ carry0element ]);
+ carry0.addOutput((v) => {
+ adders[0].c = v;
+ });
+ stateList.push(carry0);
+
+ // adders
+ for (let i = 0; i < BITS; i += 1) {
+ const a = new Adder();
+
+ a.addOutput((v) => {
+ registerS[i].value = v['s'];
+ registerCarry[i].value = v['co'];
+ });
+ adders.push(a);
+ stateList.push(a);
+ }
+ for (let i = 1; i < BITS; i += 1) {
+ adders[i - 1].addOutput((v) => {
+ adders[i].c = v['co'];
+ });
+ }
+
+ // registerA
+ for (let i = 0; i < BITS; i += 1) {
+ const eMath = svg_math.contentDocument.getElementById('operand-a-' + i);
+ const eAdder = svg_adder.contentDocument.getElementById('8-bit-register-a-' + i);
+ const r = new Register([ eMath, eAdder ]);
+
+ r.addOutput((v) => {
+ adders[i].a = v;
+ });
+ stateList.push(r);
+ registerA.push(r);
+ }
+
+ // registerB
+ for (let i = 0; i < BITS; i += 1) {
+ const eMath = svg_math.contentDocument.getElementById('operand-b-' + i);
+ const eAdder = svg_adder.contentDocument.getElementById('8-bit-register-b-' + i);
+ const r = new Register([ eMath, eAdder ]);
+
+ r.addOutput((v) => {
+ adders[i].b = v;
+ });
+ stateList.push(r);
+ registerB.push(r);
+ }
+ }
+
+ doReset();
+
+ const txt_operand_a = document.getElementById("txt_operand-a");
+ const txt_operand_b = document.getElementById("txt_operand-b");
+ const radio_op_add = document.getElementById("radio_op-add");
+ const radio_op_adc = document.getElementById("radio_op-adc");
+ const txt_state_animations = document.getElementById("txt_state-animations");
+ const txt_state_change_delay = document.getElementById("txt_state-change-delay");
+ const btn_animation_defaults = document.getElementById("btn_animation-defaults");
+
+ document.getElementById("btn_exec").addEventListener('click', () => {
+ const a = myParseInt(txt_operand_a.value);
+ const b = myParseInt(txt_operand_b.value);
+ let c;
+
+ if (isNaN(a) || isNaN(b)) {
+ return;
+ }
+ let i;
+
+ function setRegisters () {
+ i = 0;
+ forEachBit(a, BITS, (v) => {
+ registerA[i].value = v;
+ i += 1;
+ });
+ i = 0;
+ forEachBit(b, BITS, (v) => {
+ registerB[i].value = v;
+ i += 1;
+ });
+ }
+
+ if (radio_op_add.checked) {
+ setRegisters();
+ c = (a + b) & INTMAX;
+ }
+ else if (radio_op_adc.checked) {
+ carry0.value = carryState.value;
+ setRegisters();
+ c = (a + b + (carryState.value ? 1 : 0)) & INTMAX;
+ }
+
+ txt_operand_a.value = c;
+ });
+
+ document.getElementById("btn_reset").addEventListener('click', () => {
+ doReset();
+ });
+
+ txt_operand_a.addEventListener('change', (evt) => {
+ onOperandChange(evt.target.value, span_operand_a);
+ });
+ txt_operand_b.addEventListener('change', (evt) => {
+ onOperandChange(evt.target.value, span_operand_b);
+ });
+
+ const animations_conf_elements = {
+ "animations": txt_state_animations,
+ "state-delay": txt_state_change_delay
+ };
+ downloadLocalstorageData(animations_conf_elements);
+
+ txt_state_animations.addEventListener('change', () => {
+ uploadLocalstorageData(animations_conf_elements);
+ });
+ txt_state_change_delay.addEventListener('change', () => {
+ uploadLocalstorageData(animations_conf_elements);
+ });
+ btn_animation_defaults.addEventListener('click', () => {
+ clearLocalstorageData();
+ downloadLocalstorageData(animations_conf_elements);
+ });
+});
diff --git a/linux-casual/mp-int/ripple-carry-adder/the-math.svg b/linux-casual/mp-int/ripple-carry-adder/the-math.svg
new file mode 100755
index 0000000..867adc4
--- /dev/null
+++ b/linux-casual/mp-int/ripple-carry-adder/the-math.svg
@@ -0,0 +1,556 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="85mm"
+ height="50mm"
+ viewBox="0 0 85 50"
+ version="1.1"
+ id="svg1"
+ inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
+ sodipodi:docname="the-math.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <style
+ id="style1">.state-op { }
+</style>
+ <sodipodi:namedview
+ id="namedview1"
+ pagecolor="#ffffff"
+ bordercolor="#000000"
+ borderopacity="0.25"
+ inkscape:showpageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:deskcolor="#d1d1d1"
+ inkscape:document-units="mm"
+ inkscape:zoom="4.1335578"
+ inkscape:cx="189.18327"
+ inkscape:cy="97.97855"
+ inkscape:window-width="2560"
+ inkscape:window-height="1371"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="result"
+ showgrid="true">
+ <inkscape:grid
+ id="grid7"
+ units="mm"
+ originx="0"
+ originy="0"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empcolor="#0099e5"
+ empopacity="0.30196078"
+ color="#0099e5"
+ opacity="0.14902"
+ empspacing="5"
+ enabled="true"
+ visible="true" />
+ </sodipodi:namedview>
+ <defs
+ id="defs1" />
+ <g
+ inkscape:groupmode="layer"
+ id="result"
+ inkscape:label="result">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="18.460947"
+ y="45.344074"
+ id="result-7"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="result-7"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-9-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="18.460947"
+ y="45.344074">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="26.771891"
+ y="45.344074"
+ id="result-6"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="result-6"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="26.771891"
+ y="45.344074">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="35.592449"
+ y="45.344074"
+ id="result-5"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="result-5"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-5"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="35.592449"
+ y="45.344074">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="43.903393"
+ y="45.344074"
+ id="result-4"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="result-4"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-51"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="43.903393"
+ y="45.344074">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="52.848526"
+ y="45.344074"
+ id="result-3"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="result-3"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="52.848526"
+ y="45.344074">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="61.204765"
+ y="45.344074"
+ id="result-2"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="result-2"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-2"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="61.204765"
+ y="45.344074">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="69.798828"
+ y="45.344074"
+ id="result-1"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="result-1"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="69.798828"
+ y="45.344074">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="78.494812"
+ y="45.344074"
+ id="result-0"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="result-0"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="78.494812"
+ y="45.344074">0</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="8.2399693"
+ y="32.050003"
+ id="text15-0"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operator"><tspan
+ sodipodi:role="line"
+ id="tspan15-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="8.2399693"
+ y="32.050003">+</tspan></text>
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.563347;stroke-linecap:round;stroke-miterlimit:5;stroke-dasharray:none;stroke-opacity:1"
+ d="M 81.731879,37.217422 H 8.0638402"
+ id="path24"
+ inkscape:label="line" />
+ <g
+ inkscape:groupmode="layer"
+ id="operand-b"
+ inkscape:label="operand-b">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="18.460949"
+ y="30.192444"
+ id="operand-b-7"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-b-7"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-9-3-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="18.460949"
+ y="30.192444">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="26.771891"
+ y="30.192444"
+ id="operand-b-6"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-b-6"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-9-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="26.771891"
+ y="30.192444">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="35.592449"
+ y="30.192444"
+ id="operand-b-5"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-b-5"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-5-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="35.592449"
+ y="30.192444">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="43.903393"
+ y="30.192444"
+ id="operand-b-4"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-b-4"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-51-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="43.903393"
+ y="30.192444">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="52.848526"
+ y="30.192444"
+ id="operand-b-3"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-b-3"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-4-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="52.848526"
+ y="30.192444">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="61.204765"
+ y="30.192444"
+ id="operand-b-2"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-b-2"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-2-8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="61.204765"
+ y="30.192444">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="69.798828"
+ y="30.192444"
+ id="operand-b-1"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-b-1"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-8-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="69.798828"
+ y="30.192444">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="78.494812"
+ y="30.192444"
+ id="operand-b-0"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-b-0"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-23"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="78.494812"
+ y="30.192444">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="operand-a"
+ inkscape:label="operand-a">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="18.460949"
+ y="17.860703"
+ id="operand-a-7"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-a-7"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-9-3-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="18.460949"
+ y="17.860703">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="26.771891"
+ y="17.860703"
+ id="operand-a-6"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-a-6"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-9-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="26.771891"
+ y="17.860703">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="35.592449"
+ y="17.860703"
+ id="operand-a-5"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-a-5"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-5-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="35.592449"
+ y="17.860703">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="43.903393"
+ y="17.860703"
+ id="operand-a-4"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-a-4"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-51-5"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="43.903393"
+ y="17.860703">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="52.848526"
+ y="17.860703"
+ id="operand-a-3"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-a-3"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-4-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="52.848526"
+ y="17.860703">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="61.204765"
+ y="17.860703"
+ id="operand-a-2"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-a-2"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-2-5"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="61.204765"
+ y="17.860703">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="69.798828"
+ y="17.860703"
+ id="operand-a-1"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-a-1"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-8-93"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="69.798828"
+ y="17.860703">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="78.494812"
+ y="17.860703"
+ id="operand-a-0"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="operand-a-0"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-45"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="78.494812"
+ y="17.860703">0</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="carries"
+ inkscape:label="carries">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="12.326782"
+ y="42.474731"
+ id="carry-ovf"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-ovf"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-6-8-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="12.326782"
+ y="42.474731">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="20.04965"
+ y="7.2817459"
+ id="carry-7"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-7"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-6-8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="20.04965"
+ y="7.2817459">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="28.349266"
+ y="7.2817459"
+ id="carry-6"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-6"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-6-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="28.349266"
+ y="7.2817459">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="37.079227"
+ y="7.2817459"
+ id="carry-5"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-5"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-6-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="37.079227"
+ y="7.2817459">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="45.395832"
+ y="7.2817459"
+ id="carry-4"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-4"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-6-87"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="45.395832"
+ y="7.2817459">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="54.335304"
+ y="7.2817459"
+ id="carry-3"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-3"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-6-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="54.335304"
+ y="7.2817459">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="62.697205"
+ y="7.2817459"
+ id="carry-2"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-2"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-6-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="62.697205"
+ y="7.2817459">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="71.291267"
+ y="7.2817459"
+ id="carry-1"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-1"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-6-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="71.291267"
+ y="7.2817459">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.3248px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:start;writing-mode:lr-tb;direction:ltr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-miterlimit:5;stroke-opacity:1"
+ x="79.98159"
+ y="7.2817459"
+ id="carry-0"
+ transform="scale(0.92360273,1.0827166)"
+ inkscape:label="carry-0"
+ class="state-op"><tspan
+ sodipodi:role="line"
+ id="tspan24-6-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.35px;font-family:Monospace;-inkscape-font-specification:'Monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-opacity:1"
+ x="79.98159"
+ y="7.2817459">0</tspan></text>
+ </g>
+</svg>
diff --git a/stab-aftg/README.md b/stab-aftg/README.md
new file mode 100644
index 0000000..9c62292
--- /dev/null
+++ b/stab-aftg/README.md
@@ -0,0 +1,33 @@
+# Action cam footage batch stabilization script
+Out in the wild, you can only carry too many Gopro batteries and you can never
+be sure when you can charge them. You can extend battery life by turning off
+stabilization, which is quite battery intensive. But the problem is that you
+have to post process the footage when you get back to the civilization. Footage
+taken without stabilization on is generally unusable because it's too "shaky".
+
+The post process can take a very long time depending on the amount of footage
+you took. Gyroflow is a great tool, but it was not made by Unix programmers so
+it has poor CUI and scripting support.
+
+Actions cams like Gopro produce what's called "low resolution video"(LRV) files
+in addition to the actual footage on the fly by default. These LRV files are for
+on-device playback and "proxy clips" in video editor software. LRV files need to
+be regenerated as well for good editing experience.
+
+It seemed obvious that I messed up and had to come up with a solution. At first,
+Makefile seemed like a good straightforward answer, but the way Gyroflow was
+designed made it impossible to incorporate it. So naturally, I ended up writing
+the Python script.
+
+## The script
+The script had to be reentrant because the VAAPI support on Linux isn't quite
+there yet. The driver can crash the window manager at any given moment, the
+external USB hard drive can pop out any time due to insufficient power and so
+on. The script had to be resilient to hardware failures.
+
+Gyroflow and FFmpeg outputs files suffixed with ".tmp.mp4". After a successful
+run, the ".tmp" suffix is removed. Upon reentry, they're simply overwritten.
+
+On startup, the script looks for all .mp4 files that are **NOT** suffixed with
+".tmp" or "_stabilized" to skip the files that are already processed from the
+previous run.
diff --git a/stab-aftg/stab-aftg b/stab-aftg/stab-aftg
new file mode 100755
index 0000000..b669f4c
--- /dev/null
+++ b/stab-aftg/stab-aftg
@@ -0,0 +1,156 @@
+#!/bin/python3
+'''
+Stabilize all action cam(Gopro) footage in the current working directory using
+Gyroflow, produce low resolution video(LRV) files using FFmpeg.
+
+NOTE: Gyroflow requires hardware acceleration, which may require a non-free
+version of mesa driver depending on the VGA on your system.
+
+By David Timber 2025
+'''
+
+import datetime
+import glob
+import os
+import shutil
+import stat
+import sys
+
+ARGV0 = 'stab-aftg'
+
+def myprintf (msg: str):
+ sys.stderr.write(ARGV0 + ': ' + msg + os.linesep)
+
+class FootageInfo:
+ def __init__(self, fullpath: str, s_stabilized: str, e_lrv: str, e_stabilized: str):
+ s = os.lstat(fullpath)
+ if stat.S_IFREG & s.st_mode == 0:
+ raise FileNotFoundError(fullpath)
+
+ self.path = fullpath
+
+ seppos = fullpath.rfind(os.path.sep)
+ if seppos < 0:
+ self.dirname = ''
+ else:
+ self.dirname = fullpath[:seppos]
+
+ seppos = fullpath.rfind('.')
+ if seppos > len(self.dirname):
+ self.basename = fullpath[:seppos]
+ self.extension = fullpath[seppos:]
+ else:
+ self.basename = fullpath
+ self.extension = ''
+
+ self.filesize = s.st_size
+
+ self.path_stabilized = self.basename + s_stabilized + e_stabilized
+ self.path_lrv = self.basename + s_stabilized + e_lrv
+
+def exists_and_isfile (path):
+ if os.path.exists(path):
+ if os.path.isfile(path):
+ return True
+ raise IsADirectoryError(path)
+ return False
+
+params = {
+ 'dryrun': False
+}
+
+def invoke_cmd (cmd: str):
+ global params
+
+ sys.stderr.write(cmd + os.linesep)
+ if not params.get('dryrun'):
+ waitstat = os.system(cmd)
+ if sys.platform.startswith('win32'):
+ ec = waitstat
+ else:
+ ec = os.waitstatus_to_exitcode(waitstat)
+
+ if ec != 0:
+ raise ChildProcessError(ec)
+
+exec_gyroflow = os.environ.get('EXEC_GYROFLOW') or 'gyroflow'
+exec_ffmpeg = os.environ.get('EXEC_FFMPEG') or 'ffmpeg'
+glob_pat = os.environ.get('GLOB_PAT') or '*.[mM][pP]4'
+# opts_gyroflow = os.environ.get('OPTS_GYROFLOW') or '-f'
+# TODO
+# opts_ffmpeg = os.environ.get('OPTS_FFMPEG') or '-c:v libx264 -vf scale=768:-2 -c:a aac -b:a 128k -f'
+opts_ffmpeg = os.environ.get('OPTS_FFMPEG') or '-vf scale=768:-2 -vcodec libx264 -g 1 -bf 0 -vb 0 -crf 20 -preset medium -acodec aac -ab 128k -f mp4 -y'
+suffix_stabilized = '_stabilized'
+ext_stabilized = '.mp4'
+ext_lrv = '.LRV'
+ext_tmp = '.tmp'
+
+cnt_found = 0
+size_total = 0
+list_footage = list[FootageInfo]()
+for f in glob.glob(glob_pat):
+ cnt_found += 1
+
+ if f.lower().endswith((suffix_stabilized + ext_tmp + ext_stabilized).lower()):
+ continue
+ if f.lower().endswith((suffix_stabilized + ext_stabilized).lower()):
+ continue
+
+ fi = FootageInfo(f, suffix_stabilized, ext_lrv, ext_stabilized)
+ if exists_and_isfile(fi.path_stabilized) and exists_and_isfile(fi.path_lrv):
+ continue
+
+ size_total += fi.filesize
+ list_footage.append(fi)
+
+myprintf('''found %d unprocessed files out of %d files. Total size: %d''' %
+ (len(list_footage), cnt_found, size_total))
+
+batch_start = datetime.datetime.now()
+myprintf('''batch start: ''' + batch_start.isoformat())
+
+size_proc = 0
+i = 0
+for f in list_footage:
+ f_start = datetime.datetime.now()
+
+ # Gyroflow
+ if not exists_and_isfile(f.path_stabilized):
+ invoke_cmd('''%s "%s" -f -t "%s%s"''' %
+ (exec_gyroflow, os.path.realpath(f.path), suffix_stabilized, ext_tmp))
+
+ src = f.basename + suffix_stabilized + ext_tmp + ext_stabilized
+ dst = f.path_stabilized
+ sys.stderr.write('''mv %s %s''' % (src, dst) + os.linesep)
+ if not params.get('dryrun'):
+ shutil.move(src, dst)
+
+ # LRV
+ src = f.basename + suffix_stabilized + ext_tmp + ext_lrv
+ dst = f.path_lrv
+ invoke_cmd('''%s -i %s %s %s''' %
+ (exec_ffmpeg, f.path_stabilized, opts_ffmpeg, src))
+ sys.stderr.write('''mv %s %s''' % (src, dst) + os.linesep)
+ if not params.get('dryrun'):
+ shutil.move(src, dst)
+
+ f_end = datetime.datetime.now()
+ f_elapsed = f_end - f_start
+ i += 1
+
+ # progress and estimation report
+ size_proc += f.filesize
+ total_elapsed = f_end - batch_start
+ bps = size_proc / total_elapsed.total_seconds()
+ etf = size_total / bps
+ myprintf('''%s: processed %d bytes in %.3fs (%d/%d %.1f%%)''' %
+ (f.path, f.filesize, total_elapsed.total_seconds(), i, len(list_footage), size_proc / size_total * 100))
+ # FIXME: Generation of LRV is much faster. This estimation is way off when
+ # Gyroflow process is skipped
+ myprintf('''bytes per second = %.3f, estimated time to finish = %.0fs''' %
+ (bps, etf))
+
+batch_end = datetime.datetime.now()
+batch_elapsed = batch_end - batch_start
+myprintf('''batch end: ''' + batch_end.isoformat())
+myprintf('''processed %d in %.3fs''' % (size_total, batch_elapsed.total_seconds()))
diff --git a/writeups/cgit/cgit.md b/writeups/cgit/cgit.md
index 8bd4c19..362a295 100644
--- a/writeups/cgit/cgit.md
+++ b/writeups/cgit/cgit.md
@@ -188,27 +188,24 @@ location /cgit {
gzip on;
# not required for subdomain
- if ( $uri ~* ^/cgit(/.*)?$ ) {
- set $uri_new $1;
- }
+ rewrite ^/git$ /git/ permanent;
+ rewrite ^/git/(.*)?$ /$1 break;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www/cgi-bin/cgit;
- # change to $uri if subdomain
- fastcgi_param PATH_INFO $uri_new;
+ fastcgi_param PATH_INFO $uri;
fastcgi_param QUERY_STRING $args;
fastcgi_param HTTP_HOST $server_name;
fastcgi_pass unix:/run/fcgiwrap/fcgiwrap-cgit.sock;
location ~ /cgit/.+/(info/refs|git-upload-pack) {
# not required for subdomain
- if ( $uri ~* ^/cgit(/.*)?$ ) {
- set $uri_new $1;
- }
+ rewrite ^/git$ /git/ permanent;
+ rewrite ^/git/(.*)?$ /$1 break;
+
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
- # change to $uri if subdomain
- fastcgi_param PATH_INFO $uri_new;
+ fastcgi_param PATH_INFO $uri;
fastcgi_param GIT_HTTP_EXPORT_ALL 1;
fastcgi_param GIT_PROJECT_ROOT /srv/git;
fastcgi_param HOME /srv/git;