From f39b67e87d1667212cd58c88fcaa7f6795975b69 Mon Sep 17 00:00:00 2001 From: Zev Averbach Date: Wed, 8 Nov 2023 14:27:21 +0000 Subject: [PATCH] first --- add_and_subtract | Bin 0 -> 35972 bytes add_and_subtract.hla | 26 ++++++++++++++++ add_and_subtract.o | Bin 0 -> 2016 bytes dec | Bin 0 -> 40732 bytes dec.hla | 12 ++++++++ dec.o | Bin 0 -> 2032 bytes fasm_with_tsoding/.server.asm.swp | Bin 0 -> 12288 bytes fasm_with_tsoding/.steps.md.swp | Bin 0 -> 12288 bytes fasm_with_tsoding/hello | Bin 0 -> 237 bytes fasm_with_tsoding/hello.asm | 34 +++++++++++++++++++++ fasm_with_tsoding/server | Bin 0 -> 319 bytes fasm_with_tsoding/server.asm | 49 ++++++++++++++++++++++++++++++ fasm_with_tsoding/steps.md | 10 ++++++ hello | Bin 0 -> 30552 bytes hello.hla | 8 +++++ hello.o | Bin 0 -> 1536 bytes hex | Bin 0 -> 40016 bytes hex.hla | 12 ++++++++ hex.o | Bin 0 -> 1760 bytes logical_ops | Bin 0 -> 36256 bytes logical_ops.hla | 13 ++++++++ logical_ops.o | Bin 0 -> 2176 bytes sign_extension.hla | 20 ++++++++++++ twos_complement | Bin 0 -> 40688 bytes twos_complement.hla | 25 +++++++++++++++ twos_complement.o | Bin 0 -> 2192 bytes variables | Bin 0 -> 40452 bytes variables.hla | 15 +++++++++ variables.o | Bin 0 -> 2192 bytes zero_extension | Bin 0 -> 29432 bytes zero_extension.hla | 14 +++++++++ zero_extension.o | Bin 0 -> 1424 bytes 32 files changed, 238 insertions(+) create mode 100755 add_and_subtract create mode 100644 add_and_subtract.hla create mode 100644 add_and_subtract.o create mode 100755 dec create mode 100644 dec.hla create mode 100644 dec.o create mode 100644 fasm_with_tsoding/.server.asm.swp create mode 100644 fasm_with_tsoding/.steps.md.swp create mode 100755 fasm_with_tsoding/hello create mode 100644 fasm_with_tsoding/hello.asm create mode 100755 fasm_with_tsoding/server create mode 100644 fasm_with_tsoding/server.asm create mode 100644 fasm_with_tsoding/steps.md create mode 100755 hello create mode 100644 hello.hla create mode 100644 hello.o create mode 100755 hex create mode 100644 hex.hla create mode 100644 hex.o create mode 100755 logical_ops create mode 100644 logical_ops.hla create mode 100644 logical_ops.o create mode 100644 sign_extension.hla create mode 100755 twos_complement create mode 100644 twos_complement.hla create mode 100644 twos_complement.o create mode 100755 variables create mode 100644 variables.hla create mode 100644 variables.o create mode 100755 zero_extension create mode 100644 zero_extension.hla create mode 100644 zero_extension.o diff --git a/add_and_subtract b/add_and_subtract new file mode 100755 index 0000000000000000000000000000000000000000..4abb96c7776810267e8e1217539cb452d3647385 GIT binary patch literal 35972 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 literal 0 HcmV?d00001 diff --git a/add_and_subtract.hla b/add_and_subtract.hla new file mode 100644 index 0000000..50d8036 --- /dev/null +++ b/add_and_subtract.hla @@ -0,0 +1,26 @@ +program AddAndSub; + +#include("stdlib.hhf") + +static + eight_bit_integer: int8 := 7; + +begin AddAndSub; + + stdout.put + ( + nl, + "Initialized values: eight_bit_integer=", + eight_bit_integer, + nl + ); + + mov( 0, dh ); // `al` is an eight-bit register + sub( eight_bit_integer, dh ); // `al` minus `eight_bit_integer` + mov( dh, eight_bit_integer ); // this should be -7 + + stdout.put(nl, "Now eight_bit_integer = ", eight_bit_integer, nl); + // add( 135, eight_bit_integer); + // stdout.put(nl, "Now eight_bit_integer = ", eight_bit_integer, nl); + +end AddAndSub; diff --git a/add_and_subtract.o b/add_and_subtract.o new file mode 100644 index 0000000000000000000000000000000000000000..877e718ea48c99bab63c28ef6be9b124e33d1d42 GIT binary patch literal 2016 zcmai#OK1~O6oyZlRO<`t1Mz{7LeTmkSZ$#yLe-8YQZ+USxDbciW|~YHCpvRes|zi3 zqiDf}D_tlkD6U0ZxG1h%=*oo)H-aF#vP&02{m;z3$z+Op;LJVW{m(h~k?HiNF>)f2 zNRYM!C8L>sjT=6-BFaGusZyO$HKVL_SB+X?Q1>%5srFHY5Ydl9eT z31w;Yn@7xB4lMN?13IuNPH%m5m z6J{g{hmTkix5C@!dkrl`YY{AHME!Qe^AX;I_+^9-He(Jtsf_2Z=3I)#5x_c3bY-~ELKjLdHp^T{~>6GnYX?)Md}eA?}DGBo~;}Ee;CtW#`ry$?}v@^KgRTLF(z}ub}NQE zb=k~hOmZyOG;5A9_xJ4|Xrul%IzX0Ptx0ptmZt4Wt7>`8x_yKfwn+nR)Za!2$h3In zU_~->BS%jQ+YJJL|>%ZV|ZLX1mQSS$^nEtkwfxs)Fy-esYB>3H3%H>B-a zDrb1Yk;Zh+tvKrVG%9RgtE~=2@@sWZhUt7LRe!EwOKz=@@54M9y9VP}fpWsDTosq4Io8dqukk0xfv9YFg31s$cVa z-1qsz%v?VB`(@Z@2S%N0Q%xrz5oCK literal 0 HcmV?d00001 diff --git a/dec b/dec new file mode 100755 index 0000000000000000000000000000000000000000..5028595c203a4dfc4f93b3d8e60520c5a4d3e5bd GIT binary patch literal 40732 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 KewD{zQuz-i(p9hk literal 0 HcmV?d00001 diff --git a/fasm_with_tsoding/.server.asm.swp b/fasm_with_tsoding/.server.asm.swp new file mode 100644 index 0000000000000000000000000000000000000000..151eb6b95de41ffc78faaa1dfcf193f1b9148082 GIT binary patch literal 12288 zcmeI2Pe>F|9LJw^EHjMg`qMlV?CS0+B89=CD~g)pu9oy?nAv%|4(;y9%v*O&tV;;p zf`|%=E?uH~5p?KOQFw?>L6^D|LJ>r#I`o~HbzMytBM6G$gU{~l@BR7x-sjC6#4#dM zL!;Ew9ua7Jg}8ZrSUy|XDVFvNF{fu8y`a3Fx~*sw3#u44EW2Q(>x{fmS+FA~b*G@| zt}F9KZoVU18jf|umLu}2G{@_U;}L6KQN$X8^lHIV@G8#(aLwjhVRNx{$c}cfDNz# zHoykh02^QfY=8~00XDz}{y_t}Da6-ZLcHFM;_?6g)xZBgHVN?oyams}18^5y0hfRR zE;tKLgC_8Oj}R;14Oj**!3*#RJOsDEWv~bqzgWY=8~00XDz} z*Z><~18m^08F20NIf-{*@#%V>t{p_Qj7g?Zdrc9M_lHOobZ#EVYPnx#Atno0j@l?p zc{huNvfj_uq|zOQw{NK=4GP}CZD|b=-WPObHZKc`ob?6yIlbjvG{1De7PA^(O;fjX zlNx?^d`-=m`UkV6vvJ2#H+3T?spMEndRMp^2u+qPMT7D2@o6n_aww(sjrAw|j#9=U8#@R76N&g}2u2AlSR3aR z@}zm^DDt{hI3jR3&OCY7YiG4uxh%_cQ3a(h2ASsFw4TfP*IrSMSq@=sTiI#5ChA%t zQuDL2W*j1>?WaLCVHH#wc`i;s+GUdf4+SU^>2$EM1Tf*HYDHF?BV#UM%AHYKg) zt#Os&OgQ=XU@N+swhMJaqNxDi5B znz7O|q;x!~q-Go`Nq4eE?2S5k;MkBdC`8npEcH@URE`|iF|l4HLS4~n qEU3equ{z3^(M#PCvEf$4#E1y?3i^A0r_E0SG_<0uX=z1Rwx`8!te9k9~~0 zxHawM-c;}XS5Hk;5P$##AOHafKmY;|fB*y_009WxKmifY*xx*0>`RRC{D1xb|NS9j zUt`!9ix_uf+==lsj{6bgYRdUM=Al3U0uX=z1Rwwb2tWV=5P$##b{5FzT-!jx7=GH+ z?BC|utkJ|Pkq?V3i#_d7rj_e5E6xLDO`XQR`SsLBmSeLBgLGVY+PuQ(@_n8s zQe70RCJfjWMqH=CI&kO5N`v616T+`f|+o_fx&`-2`Ud#%LT&!yggOS&;BoxW8z9Bc3Y4`$$O8GP RIXU?{3gP)hIVp- write, which takes three arguments (below) + mov rdi, fd + mov rsi, buf + mov rdx, len + syscall +} + +macro exit code +{ + mov rax, SYSCALL_EXIT + mov rdi, HAPPY_EXIT_CODE + syscall +} + +segment readable executable +entry main +main: + print STDOUT, msg, msg_len + exit 1 + + +segment readable writeable +msg db "Hello, World!", 10 +msg_len db $ - msg + diff --git a/fasm_with_tsoding/server b/fasm_with_tsoding/server new file mode 100755 index 0000000000000000000000000000000000000000..0782fecedc2f5a096c5587e3b2d6ef44146ce130 GIT binary patch literal 319 zcmb<-^>JfjWMqH=CI&kO5N`v616T+`f|+o_fx&`-2`Ud#%L write, which takes three arguments (below) + mov rdi, STDOUT + mov rsi, buf + mov rdx, len + syscall +} + +macro exit code +{ + mov rax, SYSCALL_EXIT + mov rdi, code + syscall +} + +macro socket domain, type, protocol +{ + mov rax, SYSCALL_SOCKET + mov rdi, domain + mov rsi, type + mov rdx, protocol + syscall +} + +segment readable executable +entry main +main: + print msg, msg_len + socket AF_INET, SOCK_STREAM, 0 + mov dword [socket_fd], eax + print [socket_fd], 32 + exit HAPPY_EXIT_CODE + + +segment readable writeable +msg db "Starting web server!", 10 +msg_len db $ - msg +socket_fd dd 0 diff --git a/fasm_with_tsoding/steps.md b/fasm_with_tsoding/steps.md new file mode 100644 index 0000000..841d5c7 --- /dev/null +++ b/fasm_with_tsoding/steps.md @@ -0,0 +1,10 @@ +1) install fasm ([link](https://flatassembler.net/download.php)) +```bash +sudo apt install build-essential manpages-dev software-properties-common +sudo add-apt-repository ppa:ubuntu-toolchain-r/test +sudo apt update && sudo apt install gcc-11 g++-11 +``` +1) `sudo apt install libx11-dev` +1) install gdb +1) install [gf](git clone https://github.com/nakst/gf.git) + diff --git a/hello b/hello new file mode 100755 index 0000000000000000000000000000000000000000..17cdc95dd76c6bcc09343d6188ad48263e2d60fa GIT binary patch literal 30552 zcmd^|dwiAEneX4gj&5x*nGUT~ZM*AW2k-lSsbbl;kW?UnB!Cy(hGd5XLw33^T&%QU zK#5x_wba@U&Y)sT9c#5(rL7)O7(mCKT90*<@zc^4+pWRYDy>0dbAHcS>v`X22YY7b z{B`DY_UE(6`(4-Hy1dW3-pg8iDLtpLrl!W?-z00YMfAmWE_V=rdspg^pyjb9Su?B? ztXdVWd=bZjdoyBL=UJ4?_jh}8J)U@>kX^B~e~o8O=fJX3=d$d{mUTs2`QuX$xZE56z4(dsUvTAL zyZMyTN3JNJMSi!`(!b^Y>F%Mub$cp(sLGZ~%lP>C;@&kVx1)CqdU`2I`>;wde3lyt z#t%WmE<~vLH0s`9)j^8-bqv2+PB)ZirG`db#nXmHYm4V>p7Ox;F83325WXvne=7aR z-gvf2XPO5J#m@fz zw!UQpo&ALidiy)!pMaybOTsn6&4x?CrQv45UAZ1(6+ajKgWvZj@b4$^IZ#INIR54- zP0;fM4YOTS@K5ET_t93(Ry~f%L09L}LNVXjRaA;vD?RXCJiJE@)Ss+FueFxbbwi_d zrAY6?w_wzi+?9XD2pbPgqcH?}@D$4$xuEws6L>!bmJm``xrRcf4vl_p)vv~b8?W4= z<8MZU#Y>)YTgZF;kuxUYbV?r`Uh?Mf+#|ysmEpCAJJ!3VA4b#n(ivHK7cz&_W6BfS zwdbqKb9DXMqvPYK$PK@Q=-wZ0z+f+*PbUKe;CyhYK|dZMA3gF>m$Ch`#t_@u2NmO` zv0e+ZDqn$8zax84QM`!e;)aFvj36FLKFXD@^99#pfU{y^6VVi z>s~Un*EJISYYOT)$D@^3Oi6Pn$9Dj)9i-~rzVZLMdf(SMQuUs|X-?Hp)%zyz^`Pp(uXdz^h z&g79B%p#<_;8{^B6g>ku#6_FMn2&vsMTbmL69*={O1yE@xdDxy?l zp*+Z|H>cv0K_i#w?Dn)bHMg-ObfKrKzq3&A^ppm=bZdM9@yIm~tVBC^BbODq{2Gtb z=I}0|gSpK)UT1z;iTVUd?eUW+^`I?OPpk36X^ekK_7g^}x~OtH7y7QHVPuz+%ne|` z6ljq0u&{6`R<5xxi^;&MzV2eLr!bi9>g(z2>QrrpaalxT_d^|Wn}PV`Qi!qwW8pte zVOf8R_~cku4?4lqi%#p$S~#1OYa~A!(>*!VNskvAGs+($ZNNi)SISd`c&w?guKrvh z>jZN9sIXP}KJ=ztSH1?RuzVIhse`Kg3)$>76Z}(sg=^5g{r$!tCd48a@9N5;;PcW3)C z%vBNEo{&vRqD_~HL>~JLRqdlRPRIvm8BQ3J&&QAlxw$-E`*UUtIBow)gp*5?UGa44 zvzE*kPM@B9HfsjEJ${?Aor5?>^ZAmpj_SOib3>f(jSJH0<4$xQmsRJdDxh<~Q^JHs zX~Su|6bIK>*2j@2InzEWrWwbGR6rYJUW;&QCvvUYqL9_4{?I3CFNt+*4bP?G`F!UZ zPocMSFzZ>_m+M#O1@d57Gkz%9rK_W5Y+01UD^AMNu&_+#AXS9BKbIeL2^x`pgJ zo%Nm>%3@TR)wA`vPGzwDC?XBeIp0kFT=M{oF9x5nbv*3Vc|zw(i@vn!U@)KetlgLcTRUu3F`w%{KMA93uB>*Nwqj@3 zHFo1T{g8n4YgG4naPdHQ;6gxyp8K&4;}oZ4p_m;Mxr#B7?^{XNhh-QseV9DwOUj^E z#pQ9vw(PIP<8hW~>6n*NxtYw4A0~DiH$(6;VeCCKn&-8*oNd=T1$okX^SRjApTm&E zIjHO2&C!;w@m!nD=d9Dw-sGAGva503^)$A6^4UVEAKh=atq0-cxIZxLWS+JqK@?l> zgmQVb+Vh18;Z@fvJ_j0GJJ2E2pN@nnA z_Z!u9-*djlzV7q9ZAJ-mgY&zyJ(xapfA(xg#b-P;MR4rcoVc9hS-3@3?rhjVJ@?S} zKrZ;xoB)5U6OB91lkHwTbGlUnCWlkkKBj!8-GF<4xK_C9;C8|tfUCf{Zgjb4z@^}> zhT8)77~D&6?oD|10Cy$aYPcxwf3iklqvv7yu#^9#j4?qRs+;3{y|W|!Lo zHw$ht+#uY|a691k!X1Wd_%iZ`>xSC^w+(JDTm^0_?(l+ei{XlJ+u&O7Jn$9V{Z49K z{_)C;$+)Fzt$ZGTw(xm*@`)V-+Lm;S{!&+~3#hGkA~o&<$3vb2`tI;I=%po3x#;GQ zJsWT@NjI8@R8XA?D%CBgyUgX*a!;idooMbShmJJ0?oX=+4?5JlIla5J@;rt?E8UUS zqR7Qh>wC{_W3BTSE-IJm%4^*l$BSoe{B!YB<(9GG1C!^CUDPtV>g?f`vGTmJc+LK| zcVw=*Z1Ejb#^x#a-HQ8ZSTSoC>92JCo}N7@&t>FE1FA9)p5<}2?XX-KT)6$_mY?(w z9hnN9M<@n#ZcZOW#?Al6-D@Vj^U_Rurm*Ugq1}^*4vh_s&M4IGqKW6(dxwtH4ZEh}0T^!F zrjD0PZ?#rRxOos}d1DSRzg@ZIx)~!WtwbtE` zKfkTKq;6=>++oObIH z9;OmHs01|*u0RQ!rzp?GJk~aU!NNtms0QUF4duCY z#hqCS>B8kjV-AX1lG7dL*=YO5JT})@vbBx1ei;npJtOB~R7Xe|R09&NHko+(%`) z+jDKjyxq1(g4@Q1(?^EqzB$}+bhtD+ymoB!+God0(=bLWWwiL_j%VLFSo3aqZo|f> zF}zV!~a4EIX+6L>oDeyk&rgYu>vw!yXy_eniv-z7#&%V9mG74K; zf8#S%p$}O1VtgDa&waDpakN|-Ew43${#mNj5A8}_sP*&xiPDczU(8{I7$bo`B$M|q zu%%=TD-YvfPh~&;ExPudn3=t&XNwveN6wf~OFX&N=j(9#aJl5hNWQe3o?5vYwsSaL zxhQ?OK9N3*u;IqBiyB8)QP;t^>hreJx^TR7xUv~qyy$5o|)%pb(@e_&FUEg)lt>2H{f@A$g;d%ug~lE2E0LU$Q$-Xyisq=8}}x>NpH%V_BQ&w zKA+F;3;2S*kT2|u_@cg;FYZhDlD?EL?Q8UV{XW0nAMgkLA%EB(@kjkJf83w&C;cgZ z+TR%P27Cd3AP@)!LV<7~5{L$3fp{PhNCr}Ybf7Wl4f=xqU?3O_hJxW>Bp40Gg7IJ? zm<*0o2X8}fzxp+G1Y3WdUctH(xJw%H|z`h!+~%x914fSk#IB| z3&+EWa59_tp zLJUt_lNXM!9IJF5z|fb=sHYs}G`8v= zsXYTT8+!ZEdQ;kc7XjqBtaUT#&@$&SUHIvI{}r;W*}rJ$4>j7OwbF$OXxpgldK>K1 z(AsI%bu-ILre3sUT48c|$+Y1m(_-(fT5;}@sgu{%QQ~s?jPl&6m0NHkhTc6jzove})0)=5TfsrTw|>L@>@n>mcr2>l@KyGB z`*L_R7Oz9%_3wUh^JFU@D`pkEb;I9T`SXhN6s%5n)#N`}j3{{Mkwa7RA1-K{d?&B;rv@8Z_rWqxAT>e-_X%bOY*-Md6|x$%;jGg`6-Up?c0%mX5?RR zH0#=i{O*w-<7j(+UjC7h2XWMJ&kOncM!t=s%F3qvT_bnk=VLd=fdWEeO;vw#Rpn9Tx8O1II`mSlUmZC_N2v9`kGzN@s`bw(!qWh% z_}-Bxa6}dV(Z~;QL=}I4BJ2cE-R~axM;uYzzcI44XUov&$@#{i(eC{0nH3DXeB;c9 zzsH~S%YA%^D zQ8CP{N{FLQ+OuWj?&1mckMDl6G6^YLD>VqZ*jik~3s2WdYCbyGTjwuO0reYqBl*xV zcm0jmV|F$^ee{t#dS15Z7Z=|8FdMmm80`~Ir_QOfOj z{qOFZJ(i)M|4bc57E;XPE1=qDLIpN0dXKW+wCer;xEg2wbZCFg<(Dnqvw6xOD)7WJ zsEoE}Hyt8-#?R9x+B3HA^O0!fKe^ne!)4%Ha7}P;{G-e5!`~P2m*UKX`z83(_3P+-`cp{lf(=~Ga5xTmx&R?``tUTAf{ut4!voIaq{J8bz z`1srR>c6<4EuzcEX~)LL@5o$cu2!?|M1|Vz3jOexxCi2A>pi$oWd=*d!Om`;Gh=At z)~eir8xeP933966_+yyhp<`3)Z`=qIk3RN3>T;itQ9r!?AQ^>yv)}MN=!Hl3x7Qye zlTm;Dmr>lhCu@XX{)-cMU;^kK=?!_$le|qWzgKc^TC)Bi znL8<${aCKeMy}09uFXcS%|@=xMy}09uFXa+Gvwm%d6KuOle|qWZ;@PFLDwIoOT3V4`x&_oYq<_!9-~2;3T8O zfL3BaD>0yz7|==#Xe9=;5(8R^0j)$stt$NaNt;^!OiD1P8aikhB?hz-16qjzt;B#< zVn8b~pp_WVN(^Wv8fsPH&!czVAtjjPIZ6y@B?hz-16qjzt;B#Gi^FeoJqN(qBf!l0BeC?yO^34>B%pjQ1QCC8wIropxn2Bm~SDPd4b z7?ctQrG!B#VNgmKloA8A>MtpI7fNVeZYyC>N*I(92Bm~SDPd4b7?ctQrG!B#F;J`i zl9KnJgl-gUB@9XlgHpnvlrShI3`z-uQo^8=FeoJkYSmv-G6p4d=VB{iP)Zn-5(cG& zK`CKSN*I(92Bm~SDKSv1{*sdSAM_4Yx=BYT?2S2G=p0_^9L{nML(btj&fzDW!>P{U zN%rB;?(QKf^Dk89$xfN-P?xC=b(!i=m#GeQnd(rNsSb6S>QI-d4t1GyIJEm@Rpxk| zchiaI;_--@(9`4dp<}1v5iRDhn7VG5ICcHqf3vA;W#8=AG8j~9e)!*G`ue((%Tq-$ z1)w>jn$nsnfWvwU;IN(oIIO1t4(lm^!+Hwfu$}@qtfv4rS503>NUl9q6mo4pBiCUq z*I_N!VJ+8TE!SZ!*I_N!VJ+9@s_E+y+$|4|Ky|0kxg>UPCUFZG1lfVu$k z1Xo=E8Po-kL0teD)CG`1T>u%>1&~2q01Y_PSam02rk7fY0j>V?e7hpw$@AY7A&K2DBOjT8#m%MuRhzrRhCS zF_jVqrG!B#VNgmKloAG|gh44`P)Zn-5(CaumZtYS#Z*cdloAG|gh44`P)Zn-5(cG& zK`CKSN(?wt+0lKok5LbqnWet%VNhxqlo|%5hC!)eP-+;I8V03?L8&p|OlN6g&C^WP zE(}TugHpnvlrShI3`z-uQo^8=FeoJkoaro0ta+NLlrShI3`z-uQo^8=FeoJqN(qBf z!l0BGaHg|k`)0q79{T@uO1pW=G)!cl_#B?->&Mi;d0M@LtbR^i8YrmuZs8z5ryhL- z-*4ULa&P}Z{NmeAaJjI%jI4GclSLm_t70LcN*@t zyIt*~ zB=sF2Cv;hV9H*B&>r8z5N|3(4-7EMkFfH!WX=<#1K2ZNs`b%(hnpvYo>FL`b{!#dH zK$8f+0X#?WHja$H6#oJI{e}pqmoK#bOh>D+Uc>>dKx2L#2ed|v*4R<){(`@>mW{*z z77g{f$nQchtuf>HDe(Ow{A%#0Mfxv*`vl(x-YIwonAW5vP5Jay&)!i-lMme>=DVYnGV53m(OHk<32=9}v7ByjAcE;QIvs3fwRF_uy8+?}5(~?8YO8 zI>8?SAHuhqT>hEh#{^#pzEbeT;H`q2!Ct`&!Pg1y0=oqdf?vURqg>uv@MD5+0&f%i zb?^qkJHWky9|TVm{6E00g8vmfdb3mBOW>#oe-(U4guewoAb1>npWr&Y3f?OCW8hxF zp9aqn8~`81x3*m0S>T`up9?-9!Y>C;72(Uk+eLU0JSccQxJmGr!Ct}t0Co%B2|kSP zf?3ZG!0QC#OB3sW;Gcr87W@i$o8Z^LvjqPcJYDc)+%eY)ZU7&}cgtM<$HA`%J_o#4 za0EOkI0fD*cs_Ws;H$tl3%&+?vEbEUx8RN7mo_0Em^91h$ z4+{QYU`y~JaJ%3)z|Y}ZaBh!x!4C^Q5g!=AqscsIU7=lq+% zV}d)t+XXKL9}=7c7X@DjZW25U_6oiY+#vXF@IMRt_!yX0{<5B@!4C_55lr8SbNFw- z^zAtFn_&8$ocVolQ1Hq4{$i@&Q^E8tI>(<5rtj04ePH@_o%s?leZ$UtDVV-*XI>1Z z@7$TQVEP80IS;1q;+ek$rf=n$ZwBuW{0%UDQ_tbw0@HW)%nyO-8+_*7VEPuH`6pmY z@If$rug~GX1FLWOl}C+r6inaub9fDo9u|BGnAQPs_~|&JwE@gCaMUh11g5nF9G<`t zttnt`!4a)DV7?MZXNd4V@J>x(5z_6i2is zf_X2FXl(@Z&u~QRCYXPLBU(SfJc6Sp!J}YWZ^7ZUnDEgW4CW7mX0jdfoW|Ab0e76crdqtY5fQD)nHl&!n^{U5_~O~){SuZjbK_!!n_qs>r0sL1k;)m z=KI044u$#0U|OTXd;m;qRhWMcrgbdLzXsEK7Un;IX{`(M7?{?-FrS2{?X)I_`J-T3 zC&T=AU|KuF>;=<$8s?c`T5H4nIj~EFF9Por;oV?bm&5Tt52iIc%wGi4Iv(aSnAY|% z-wvkrKFs%k-@-lu%s&LbA^2%9tx@Oje*@D(cIH>Xv{at?Z7?mVXRg6QfL6iv;FREx zgM)(41y2_o1Izj6=fJd-pYvY?rX3BKyTP<^0P|`v?UTS<27g7^^LxOwQ3HoR1b#w< z?*;RZ=FcyHX$26+KLXw^_!yYh_;C0MvelR)7zQ@O2ZyZw0%*=H&OC3E_`|UAH;md%^!E;{O~>t2tQDufabP;ctVF2zFs% z>X!wd4(1=V-?`wgiTo1ay@Ff7wEBX}yAr%g@JjGyg3I9h1aAk=7yJV-|ET-}#8?uc z{c5aNCWIdW?-1d~z&8s%86V`)>IqJNDtMLP8Q?Po$LRw;^P}=x!RO(tb?sGSEd`H# z!{N0P;@=GJ6Y=i^-z@lh;G*FDVEXEv^Zz-Re^mYv@MrKLIETLn{;c2ze6V=6;4{Iu z3%(Hi1;MkyQv`Q{mka(pm_9t`^1cY3EBG5=ui$&Z>jggw<{#RwI0ycY;34p8QQlVY zLn3@9n19qikAly^H?-QX#yS8#SMbllw+Q|XxLfca!6m`87DyxF7s2$sG4rcn z`UaW#D44!WW}b`(#q_N*^M}Fo{W9~Xz`ffYz5q<$CUf{DVESH}c^BDa3 z6YwE3eQD49Q80bE&iwbZmc{(2ze3>XolbZXe5T;}VEWElC#kVA6Vg-v(erfG?eKU0`}< z&-{HbJe@8|H>!1NA)`52hqBQR6{(7Od@H#X^@=l{$f1JgSJX6iqB z?$3MW?Errb?_F5maxlH|VO|A( z`7VcV2EQr#>rU{8gx*KMw~O}vSMaN%e-43X3w?hAe@5s#84J3G#CZKA__uf;#Cn2Y zS{1;Y0*6HT9bkH2#Nk;mz0+Y{2|h>Erwr~9_1O;ox)|?20G}x8^9=Y3QJ-Ie>D?6P z{|7L=vtp(NYV;`>a|1Tmq4!$M9x%OoV)lXQ-4}BlOz)?d7l6~EJ(hy$9TtZd!1Qj5 zc?0+tVtjoAy!Zhp{C@B&Vm$8w-!95~34EUze{X<4CE91wX_j?NjK@>KKNI8sJa9zl zjf3eOAM2YBruT8oOTqLWkU0;gcXrG}V0u@`{8cc$KV-feOz--bAExx8zxIOp{ab@I z$$Aca#@Af#SCQbucwhAj_|R=GH%&W<-vraLD9Wz^{1@s{`c3IFKnxPIY&^-9B^ z20wNy_UtfxA^0%teVgG+z_Sp()bMQZo9lG`R9=SSi|}5sTDXb$r1wkU-I#Ae>v0eC16^>r^~OgTEJ4@!U=o@cq_)&r%e96VCugM4Hv;jQQx}^4}%Y3 zKL3zmtCu#ny&z|0u%l0RdSK;XX8QDu)t?>6WUvEjhF0;bjWHa;mZS?h`wCe~ROrp+ zi>aReVp{Etq|*d_F$+f5Ez31|UOdjjrsNkrN@|dtEYtBmL)DBTXTwi~GTej%ULGnk#==eP7OH`s@Y zXM$w& z2TY+=@vK(ty+w_a=d}KqiB~Pd!q%~a)m036t%BOws|_1_*~!CbTG~F#_V8IHy;rC1 zTI_(o3PMr=PFJUSapF4=lnOB9MTk^@u`EKQf}m6olnR1UK|m@9N(BL_ASe|Cq=JA{ z5ReK2Qb9l}2uKAu^PMULqyktt5h4}%r2@ZH;Fk*gQh{G8z*WJ?8us1+zf|Cp3j9)m zPb%<91wN_37qqb7q~4iM?@FhQ1NK{S%nDfm+s4FVuy1S^V=xB-A`*lZi$y~+Bq%{< z9TnF??D-<2`2@fMh(e{Dh*SUz;6#H35Fi!60*DZ)02V-mNCmI}B19^H1#m)O0R%_| zumB=NDu4xWLSO+LfCX>>7Qg{m00&?J1V{z203t*xfCUgCQUNT02$2e40Yr#Y5R?k! z)hvcfmy-q-K!8*L3*dyn0yqE*-~cRu1F!%Nzyb)6Z2$`(LZkv%01+Y;zygR6setA< z_PG#{3Sa@85Lf^KQUNT02$2fpybyaK$!JmmEP%*BDu4xWLSO*|NCmI}gETRS7qEx2 zIr(FlVGMK^^J|zzYD^odNwgHggf@_{NGhFe#z4ZtsdO^TTU9=SWiw%>;?yNZ6CIiZ z+Y>0nrU_D&Un~~+E7Pr5%x|qIEGw9r`T`dA@^vOjv6z}CcVh~!v&3{OmF?-oZl!av z*)q16)d>SA)2={3wh)8b0WrrL4Y%h~w5>SpCayCG%9%`18bX3LwI_Rv*?*T)=(a}2 zH2*g{6Cal`whwcZh2(G{_@InKX5=7a-it6tSBZJqWxC|BoJxeHB_dcvn|5PA^hBQ> zJ#4M$8wi>?J9ZOO{in7d%sJYEnC031O0bZ&CC5g+Ejs0qJNMa({UM8a2;KXdACq#v#YUH)7>@oK>VX2ZrtAZ@$aT=R=ml&$oi*buj6PK*+S}ey3(v{+6hDW}^!s|uiASmJQ8l4tpVf^$i5K)O z>z$AW*UfC#>gK{6+9BQCzhDP8YTN1ogq>C_wO{%?*|)fAYGsaQv>NKrhWkqFn4;Uu zhm%l6v-h>DYBXiYWTOcq@d0gwj>rC3S_ZcHU1|E7s!toWpwxoe5;Irb+CDF?!ynuV z2#O%B*pQ6su!uHb$L6c14iv|3UZjXww6%I8c2-v#wA!(RiB+*w#V2m=MftaOcI!lb zA9dV>-t>DTRt6i+%*o~K`$Azg{5VmuVHkGOr_I6~6NE zq8aHvSl)~;pppl<02tZs?iRigrN$~{{3?#0i@;I|6;m2mIzVi_2@EAD1)dsR8;k-rddZgAoYgX21Z?l0oA7VmS7# zX7F1@Z061nAD{#OwSqYlsZ9s)%!;FiaO$!V@MB6*TxFhG(fBH4SK3d{@C1Xc5S=v2 zP^DMnnGF8#fqZMO&_~k(dn86tjs7(lcd5Q*eYPQs=q$wfZ0w!rA~Jv6i|7nO9;j$_ zLLS@b7(#pGDf8cEH&;xB+U+H7-~5i%SE3VHq&VR8d$d z=8TG2D#nsx7Kf8cv8@gk@A!+8AJbJ8ja6fwpqOQ2v{M~f7>3W%&h9F^B&MEJFN(dK zM+KQVs;BLNTVlB#m$;B918*B9Wz+2$f(p}?SSAblOG22&VaRcF&Uokfj=KPAe zGjZdum>USU`ybRmc;2C+aRXuIub3MMHw;u|R>3vKS*@)KZfSIUyBuy|&H*8#a(?TbU!K8S7fhx}c#veR!M$4GEaKh7D?TLF%T`C(?JQ~S(y*)iuN%72x3aRo8 zkTpgjRi1v_`@_>;<%tb#$nwJqRmnnCrN&gUK$T|z*99uI%F~ZY3l&i9 zDQ}u}0p6bOssix93&{dio&gMODxk{KA5{(DuksAwZiPy%^7P};A3SlDkxh^L2`Z?{ zGe8$=6jbHu$4raztoFpMeAU^)R>99h7Ps9L0oO)7DD0D!$1v``saKa)slrn|QdQ*{ zpcw*GReAa`rG=-z$}<4_Oj4^n{g`}_68riLYowI1UBG#*#+!Yj<5_}=z-J>{IQu${ zX9X$(*Og2jnF{-IjOPa`0@sxd9Ik}c7yFX zF7l?j`r?CuWd;KqB5qCC?XB??`}?h?&V2W(&U`jqeOu2F z+O(Dyr0S@WWAcM zHpSCp6D}jFp;SAxBsv=5(KIKXX-~JcXO35?Z(Gqs#ZrNvF4#3~QvWd(ORj!l zXX>HKLZP}_?3AtiWXj5*aC$#zRCUa2YbRB>AY`)iN>U9TD?u+5b?SogYKkvNEsEnm zMB?7cP*xdheyOiW8FDoEVIX`!)s!?{ZlDroe_(DO_&QXL&y_~W z#J8Zvn_re0RH{&%Y6b4yMGKnS(^e+4v{1;PFY-m_KWf8M65Vu=B}coH51kKY6nCJr z#QpmhP>2-;1XUa+9WoK)NrNNCQcRP*d+jNwd{{ue#!wQem4y{_6! zy)l-x6GKl$&{9oo>w?0X6~)e__*=~DzrB2f=UheW0#yv&VgF};_zVMY+x7nyOW#uz zaeQ6GNsVQc>PPRROgwg`$|(l)CpRJ%5b?QNJelVo+eTXrTj1;Ie@ zAQJooJoYXgJ@(?!n>Q~W75@PbN_}s4rrj)v58l4_d%rjDy_wyem(I%lOeOt;k-7i4oSW`oE=`*+g0&1EmDEJx^k6ED_&Ff|S-CN6n#5p`Jq>sfS?C7D3Ls zmyJJ;mgMF!fETeFJ*ghaG%BsJH9uh9DI$#6ylaRjP;Fk{HcI8qBAzrcGW%GsgqHS3 zwMeNB6jev*Q1b?QyIZj}Sc{&9Vv}nQ#fDN)423MlLGmJkO8iT*QI{h&3phkVvM?U) z`DmXxID@=ch^4dO^3YKGBjiIf@!}dV+UZsNrZl^PHSQ_PR%_+edX2gDS`}0$2z8uJ z`!MStcRfv|4WuJr4^lgK7G0?Du=$*a;&6Vu0M8=Su-NrvGv<_?Otg5HhNEt{;R?qg zg`F~fndbT9_rbwI^mzSku%8>;f$lG~dqfY*h1hwMD@1|sl>8Lx^`R`}I+PMcKGHWZ z_w{psxC~d(C9Mc4gW3Fg5XxpgXyq4_5?c+qn_uC6yUW|cepHy76e=}_9NlkYc-dV< do5726nk@dQ*kXk$cD^#nR8W)51foC!NeHMohGasbAxS3_h&`fU zKoTOAR%@+A>u0srwpy&EYAXswvDzxNt)i_Tr9Gph6|2@j(cJ(0uJ!KyPO$CidG39l zd+t5+u$c8*YwflE>+9WX@9bIoio~pnyu3U|KBJt`4$caabIz#U@a-ylwn@I0K@^w0_hXJzojo1@-%i;txRw5| z&ZZF1GIkXb48XUUY7u>N5e<1vc0oAQ`k`0lxl2U+R#?Gtf8$t^|?aUOR2}e zonJF>{C&u7%}bdRR{gs#{l?WtbRTv8z{wPLO+NiU&^F26yKU^&Y%8j|A^X|k;o$`> zmqJ%v%MFNbp+jo>`GEeD??A}#tLrPB7m*yqX8pKluk`sJorU<#QT&%}L-sbXiULb1u-*%tM}cQkU>O4Y2N!MST*nTa?e85L zl{v~Do1$dXDA}>zu`LuhodORz_}F~+*vlx{S(NOR4_z@=P~e#q_!I(1l$)16u6M}4 z{OAGSnk=egHQYm~H+orohq8ckvTJP?7a!i@@AdgFcCvps5}lskGSSd)hpH!qtpVX>aMX6?a2Tr247fO40`6?M z%P?;6i9crquOHU}J&%48Nj8tef7wkRpsgyM0{F>6SHt42OuC^l z!-}f2%?Mr4zm>=7Gb_<+)dPvKy+dQWi(8(*2BW6ipDo8Y9xi%-#t>)<^4W8G%U&D# zX^QMd%-HPjk3h_X-l21rzcw6MbJ+%yJ|77dEPCAUAn#R!$I*04yxYHMZ~yGU{<>`c zirsaqe3N#g>04+9WYZYV{fPq{2<;|t5eE*fTJi4iFe-A@D-hlC;%W@`fvGeZAOQ2h z$Af;jh(gTBM_mp)arObEcD6&saQA_hLdePr8Fx$VixNJV{kctl0fj$iU|x0uJbHHaZu2kd-R9d9`Fjf1N{;VlYi*8glw$|rja^i| z&1?S4)%%Q>d9keqSMNv(-<>^CS8u<8;qJlgTQ;1l_qu_3+56%7m#TNSXGa|FkBawxn>=S^CM-41GP&3?hAR9wp5e+e&3fi%CgV@r# z_DkA3mbVusdKy!mnbwZ>!pV~Yfhq2IugRoa+m{qpElZ`F+d7szC!uA@Rkk;!dJ0?H zGaZGP4V0v{tFQxRxudx--O#>-3{|0ZHjj?Z6k?jX3YT_wWeVFnkQTYNHFP2w&v}~n zHto_>rlF}J(@>a7r#sRJ|G0HFzM&0PVQH#8BMC6R>69hM*Fl~UjIfE;RkpRImf(D0 z1+yNiGNK(=A9nNUTr#2}n12pAIli%_f#!dTbe(KnX(p3e+LOFPn+7J6;YCtOdTq-#ho>83uxq3-x8>uyF{a8L92 zk$$q_-MXJJYWbup?cCM+1sXB)(%W^_Vf3p%YW<-j1YtDrC%)6E^I zlNm2GW;h%pt-X-?t~*T?lCj2djcpxWDKApmhvSx~ThW_tT`_aHT{$kDLQk5gobawx z>XH%R@z$`wPBcZ5yqa7O({p4E>Q;+x-*p9hc%AK2eS+l z#^&=0jMugfI|jVAKN0cd5@c5j8_cXF^M&ctoKB_eV0Xvw%v3`s=4d+I&DN3U z12$-Tg@VTb&Dw-qKJ4Y|s87+(xNYwKj#^E{!sQe{qUCK@dB zUbI_t;A)4h%A`Bmrk2Af+cT?sOiiYt@e;RjynZNy^h>z=3UTs4ci==ogI@Zv2ICY{ zvMZD7RJnTdr#jubjLr{BFk)JfR*D7GGNUg;cu3ITr0ruChJVgY#}- zMRj31)z#gG?swa^5b@-sKQQcco~|W95?Akta%Hr->xB{VIp->w0~OVE=n(2pPm9zm zo@%E_(T3Al6NxsHz)L4~xNKHcnHmo681l~h6@1<=oLcCf_hsESxf^SPsZFV7EFYTA zn&PSWTp=wHJUce4RIl;)8kw$>r@#i9wTHPT@*#}Y1o(0eweGaSR8!CNNlqS^9Hy@8 zr#woo!o@pWC)`H3C*iVi{isW?t^<7ZU}C2pU+G$~qa7}P4;ckF?0Pb11K{($!pZ_?x2;3~V7PvmRyWzIM?S&gVfIQ$9z;(ji0QV%^ zUby3~_W7s5T>zJX+W_|n-1BgI;r#1;{zAC3;Vy#ff!hFgFWfe`-Eh7yB7e9AaI4|& zfO`aPH=G|=cM-T+xE{Fc;2wdizBT(LTp5q5zWDg;Eu(QsRh@kUUmIjzjybfh-Pn>Q z)n9zJI-T13NgQ1>FZ;}4xXAnE*J8iy9(~^VTes)`3Ri4->&H#{GOk^xBiUxU$j!e0 zXTEloan{wET$0MPhC}vR8rPG!?z`BzxGjb_U9axLI9T-f z*qk_j_AHb@M|{Kq(>Q7@M|F?A7#A<5kZKGbdmY<5IJ5eR1mEy5v4Qo8E!Ekb7=G1s zB}{r2>@e578xK^^onJrDJ$7J)f6Z{_S<*;15RAqdtdRp-U5%lS(kQn> zj7A@>_i@u<&6Z0?z5l{=y0@|X%-$`ddtW`!J2bf~e={w3r)=vT9NX`kgd20XV4N`A zZM(NR+ifZ|F}nfx5OBS}#7xlAw%@2WTj)@MAQfnLml4a00rXM!~5V1-*~?9(!ZdJ9lCf+%%Bzn-XSy z1tru`2|NydzlX*F2QHvM9tS^1;K1*yu&B}o*D3IHFIR$$6&Khz3mTao+ zsL7<=wjGRYJkXyQ?4P~2zwX`s?xFq_2iC86dboQc#%T7dhhV7GJ^lW!y!`{S$FJFe z;r(L&v$3bTM)g05c0)ULol9-BV!U(NI0PTIE-`lQl;_^LXW`oC=C1F4`kgx#QrwDy zwNK^5-sjwd@i90sd+$Kqy93=r11s#HZ~7`K^&_`ZKYWAr%XJa!$EeSAV1$@qZ)}`D zdlJS5S;Opjc(!Igh5s|Y?T033Y;E4aV`K2R5w*k}V>4g-6T1hx{TRvT4kRXIH)814bu#)d>P#w8`E#Z*YLyi*&1cHH3ARLGUiUQFRb#f~0LD#C$qFdPbp!;x@NI2tYvmxN>C(r{V0JRA=v!WEG~Bp3-r!jVX%C=!hnM@k~G zNNJ=jQXYv%5|N6cKvA$LR1_|X6crUki;9a%ieg2jMP)_hMe(9UQAIQm4Ms!Ja5NGv zibkWw(UNE^S{f~jmPg~!M6{wfP#i1{6^Dx>#YM%@;^N|x;#hHMaanPBalANDTu~Az z36_LP!X=TCqLOGyaY;!@tfaK0tfagoUXm!Ohy`N7SSS{bMPfy<0bJ}yfj`GFOSFLiFidKkO(G1iEtv4C`v>V#fg$cEK!;$OOz+#iA18J z0$o^vZm2+0R-id5P^AjUszBBih=z??H8=rxC2)%ApFKpAbj4nb-E0*P)WP*X9(-$f z7=sfh6>~-ztgdev#x05L=do_Uh^?QSU5mkm6U)HtA)0S1_U?FmJWM9di}@J(IN#47 zUUnecfK(US^+EMqSlKl@dM2W%Q)eFN8J{`Alrf=tZnhIA2!tc=>fz1PwG# z|HY3=e>T!DgxR7($xaXYsyE`+wLJl5Ke2y!7*i2{xY?a4TtBYw>zFuaA78d?r-)KOWpNaQrg}9vJr={$JPoYy3Yg znaMA>eN@-P^4QPPgW2yOwNA9>#r2ygSEby1-Q74ps=uAd-T85L&hHt04{k}2V^U0gH=TPHu`c`rM$8{gJ zJ^!a1GkMyW?xR*tCvY;ynoy_rjl4a#TK}qjA7Xu-{&GJz;C9Zyc_N=QqGpb%0EWlb z_2VwO36;K?DqV>GvOoGg)*`A7bYr2d-Lw1Ec76OMG-2Ko^}TQ9nSko-CY=4uc@q6v z57VB?b|R?%i8%!iR^;_=&+8pZX5O8?5~Xw{3vNF&ot-wd`}m6NH=uOYeuS<}AF}+o zHCwtTzQ61J7kYO&dk)X`BCg<}*H29Ql4#oX<4SIZ*dC-c3#YLVYXkqC0{Q&={_Aew zdc|0(>_FnUf!PzXr(&s&KeCQnml%)0zC(NWtF4gj9gDl0!=V~?HOgzn znt20@`~!7k*X-;b*Z)HH9yH*2yz0!ZJ^+)oW|*?2cIw?fs^ChpQ3b1CBixeLyZ`9) zr3I^Z7+SSI3s1VGVD)z;U?Q3_U0<;JS_ydPJOor^F2ljA_Fuk!w3CiyQVf5&>Qheo zw9Fiaokzc4<%WzWO#-IAV@esItI@QuIo`SiVe z?t(A7Y-aklJvYI(`|#TI4STNTKXG#P*PtQ=tAA&zL)BkiuzI^xj;r5Xu=;Ke7`19Y zSHG@c^?FIc)sJVEaaFkb#hD9ww;(B3|1+5c$8hzJ&z#P{)gPakz{$A!qjM^cD*pum zd)|azs`VfCyh=XQ`lUU;hL39f93|KRpo(wX^C)~&@rU;O06wbteU#vC0M-5WJvYNg zb^qF)>zX&zKlj>mJNtju|C{s#@}-a9|NVI{er$hwR1$OS-CHsGYEefs$L@Y*c(^{e zrT_8%$FjFz?bZLpxg>(>-=4S?9}{y;I^Fk z+x$DypF4l?m$8qSzr90a(iOc!P3alavt++3rjI`bUy13rT$Sgf&z*jDS%H(DJALK# zH#q6@r#r8`m!EE!?mTtl8R;d)_T4fxJebkx=jYqn$#Dfsc0 z$FievWOX(lQPZ3S89cz@TSh~h&hyoC=W#^Ank~qycb~st?Ugux3{P6$b0^N7k3aV2 z#8t18WojOnP-m|9>i1Fb_=AG~M#27rfxbVs8YNKT2?r(KPr+jk3O+!= zzJr24!~kEnq53Y|YCHOk$65bj1#8Iz{Tu(T{vpckVEy~I&p42zsQ*kI_ROc02UmdG zW<&-0>i>0y&d0_W-8n-z#qr=W_(lFK78K<_d48FaJ@rL!PU>BFbw{J zE9tC<2~cq5gYfVqD7f-Y^3p^oxU!$TJQ+T3Cc{EA8A{D$m|`Zw$IN87_B}e`orGbq z)fkd1IbbXY@Sy%Y2f(}{1rPa)IN(hV;7L)%0l(q^o-${0z%~xx2{n}iHgSNNXJ*c! z6lZJi&|j~3t9NMQ6}zWTq|@&;YY;kp?+e4jSA2f@MVEd!e8r;aTYkKE_=?KuD_fTg zUr{vOIdRPXD^8m3L{rNVq_h_1@fnX>cDT)@C#7fJ`;|X&eM63Mjx%C@yCF5VU zk7)VHxaF|^$Ijm2;dkya-?*@-r`x7qerI_2rsP6<)$j-=jX9O@LT1s6SX;^(tQi*! zNj%cl+0Z0wu;HQ|SfJVk<}_5jcW5}{GdHyScO$FMA#5{jt&=?xS*d$htw~y^az2}1 z*oCW(+Tz2M3(qKuV~<*Bgr0=F1$NQUSHK) zEcdaFRl8^@rR7SP$aUGub=k^w*~)d<%5~Ywb=k^w*~%4$TzGeqyuPZvBo|AwRl8^z zsN}j~R<6fJuE$2M$40KlMy|(3uE$2M$40Kp`7CcI$?L0no8)5gxN6rsSivi~ZkUzp zv61Vsk?XOM>#>pRv61Vsk?XOM>vBHJ+ez~Js{TT9vBF)oiC@^+HEzN&XfE|%e|cF`q-lIw<9xgHz29vitH8@V1ExgHz2 z9vitH8@Vp$v%H-oudnJ|l8Xz4-d#thyV!zQXx6Y$!z>MFX$WaJS;IsPhbzeE!gn6s zSM?q#!G%iiu2EKr1*61*QDVU;v0#)~FiI>KB^Hbl3r2~7d@g+FsJ^Pdk`k<|aTmfW zv0#)~FiI>KB^Hbl3r2|rqr`$yV!C0@D6wFa7|7?sNy!kD(3OX)M1YkDuo3}QBEU)nScw2D5nv?(ti(b-f0L4ZP(qhN zt`Y%OBEU)nScw2D5nv?(tVDp72(S_h`TR{v_CpCRM_nZXtVDp72(S_XRwBSk1Xzgx zD-mEN7V`O7}!XpQVD5nv?(tVDp72(S_XRwBSk1XzgxE3uHz-=yRKl+e|yt3-g6 z2(S_XRwBSk1XzgxD-mEN0<6SBK7W&v5AF~2W}8Sy1MH3U&iB0Mdfu}=Z;|KyjORVk z^G@)*hq>O~Els!w(pU8%l{v;Mlf9-)_L?%;YszG=DU-dXO!k^G*=x#VuPKwfy<5g` znZsiPeTSZk+n0P%M}L~_-FFQB{D(CxU1E=1y8g$1v!!cx`;0e|7*xDI{O_@ReUs(N zQc*1dXwAq=TDt`B*en4&HcJ4H%@V+4vjp(iECD<=O8}3}62Rr0n;_QTsO?h z_1MVu*vR$R$o1IB_1MVu*vR$R$aOhq`8tTpFCGx?a#2Zk!>nYFjbx9FWRHzxkBwxH zjbx9FWRHzxmvfe|eEH=r7nNK$%*yrH$o1IB_1MVu*vR$R$o1IB_1MUDIcEvWmtXF3 zQOR|~tXz+cT#t=hkBwZ9ja-k7T#t=hkBwZHbC$4sx6gQ+2gLss%UHf#vCB)dptis# zKw04O2~dDffC7916yOt}0G|K__yj1xCqN6{GM2AI?DEnmv0#)~FiI>KB^Hbl3r2|r zqr`$yV!2sz)A#I zi2y6H;4Ni`w$Io{J!Dsw=CVhC)d;W}0ahcxY6Mt~0ILyTH3F>0g14Ndg|#d*xm^TU zi2y4RU?l>qM1YkDuo3}QBEU*4c*|K@Sj#e#l?bpB0ahZwN(5Mm04ot-B?7EOfR$MA zma_-8&-eg6^#AFScKx`qSjawl4(_X)KUEZL~_!(D$ro{@&T@;*F|{XL(*9d7q`eg5;{p8bx`Ujg^kd+{vyw|)K?+`4;w{+GVx z^PdK{0ym-C;V93S;FiF>^N8UTzF&IS=bsBl@mn9l@o?Y!k>Qi@{ngDr|2Q~`KktV= z|F<9X`49ZSa3#KPe8A`51FaNag6}DCcu1$<{TC{;creDn69d~1ox1f6cyUV}Kd^k6 z?p0qx7hC(r6s&y_f3l!^)!Tjk?+5w*1^<^mZsp^+FAbBNKGOC1#m6?fum1h-oBIsu z1snm3nV#eN;;!#=t}o#FKJEHUL3FGsh95g4o9ev5yO49~Z3u(lm_ zz*MXLuS_*w3!#Pi@AvxGUMm zT}eJW-N=CO^x%Tn#|5#E3t}G^#6B*FeOwUxxFGg%LG0s#$Y-Y;FH}$%PZ2JReOws( zxG?r{VeI3=*vEyjj|*cT7sfs=jC^*=(cI=K!UeI93t}G^#6B*FeOwUxxFGg%LG0s# z*vAEt&rUg-+dM_MAog)V?Bjyi#|5#E3t}G^#6B*FeOwUxxFGV`DaWgb|Ax~J=YLGL zM?b)+&z}Du{s-rO_vb#&;7{>T=;J>BQE-nx=JPLv+q=c*Uki5v+z%ebZ>ivpfuppq zz+DX&gCl-=o6p|}w|}eQ_4u9y_b~FK_%-;3rhn-}&j$S6&p(X(yGQ*`#Q(Iw|FppW zBP}p;uceQwR%WHKJ7&i#$DwVcDBWo6bfry*&v|?JP=v3v>FHOj^fZpo?h!=%De!I; z9|TK&4)QAn)8170!Y9wE!vD0H6(e|&@$mmtUJHDmQ|Yf95q}-HMaAC-Zd1H{MEYIe zAF233Fzu&glA*TvM>{GBPXN=NNAwI4wZ>$yU&T)ck3qboUkIi>lO%mR_~)v;b>Iq> z{!VbeVrsu96>mX2?XgsD%YPmmRPk9b?b$Tn#(w~&-J(R#k$8mcJyrfG;5!tTfHNvT z>JQp_OOCHWJnda2oC3>-`lky_J3dML<=~4H_m4<_J$P`9m;Srp0QTUK;~xf3RQx13 zi{Jf9{I9?dD1IIMwBonGS1UdM?o@mjmM^mue;j<8;!lAc#R2fk_&u_eKOKCT;&Z?c zD6R)rD{caBRQ!4HWW|?*58$`ZlK%ksWyLpuA5nZK_zuP22lpv{6kMYCX>h0F7r_%1 z{}H@E@jGBgG5r`ei{EpLzH#8E6(0kBK=CQyKE)Amo8nUN1jTc}wTjONXYu=TDX#?_ zQSsg2Eh_#>@CL=#fLj!A1XnBm7I?Da2f;qYTfw*Bx9?K^v*4`a--1^veiQtN;`hN9 zDfZ#7V{yeF1D~e&1n>mK^mC8{_VUjp8(I04?Ecpmsk#Yu3F;x_QTiZ2CUp!h2A zWX0ElhiLx*{^U8gfL~Vp9q=~A4}tGi`~-NG;^)B|6u$;8RQzXfM)BXkd$G5Hl<&ul zsOJ?Q1-@JHC&4|6KMTG<@ig$+iYvjdUghOKAAFpOZv<~q@tt5t#jgNgr{dRvTNKkz zZmSjF0S+j>AN(_AAD;r#PIgk?-+-T2yc@Jg^x@p>@r{UGr- zf@wbp;k&@JM}+VLVA?lA_%Sf;DIxrGFzqcN{1UiOaTa`$;`hL`H-)4h1t0BKAzT38 z^NNoH)4moGKLtM8>q0mRUq&(gKL0qy)nM8qL((sTkM_?Hz8Jn~DtPdJwAkY!bf|32)_a!?E@k_2p{bSBD@d2 z7R86)IYrt(MB@JqOnZt57lLV@5#gy|+IvL!b70z!L>ND_cWAE?;aV{5St8s3ru|HW z+rhN2iSWOJY0nekJ}~WrBK#FF?TsRQ8<_V?;eb5ndtll_MdBX;)4nRgJHWK(itw+& zwD*ee@4>V$i|}4B?aw0o0hsn~5gvmlYiK_g;iJK{$BXbJFzx#y90WHhJ`+s)!$|zO zVA?xIcma5licf)Qe;J8SgK3``;VZzj2aWL6VA_{P_-kO=t48>nVA{V%n0~r>q*~uS z0UoFLH(=UxQPTebOdB%_zXPVNABFSqyMPeQAE@I`A8~vPJpNiQeI0n3 z;>BRv^hNUP0H3UQEm%IJ=gZ&+RQz|ruPS~ROdGUFeoumTD1H?zAIk4-@R;ko^m*gZ z--?d_(^e~z-?88-#R2e1iq8Vehw?uM{IrU%2h*M^l3x?}LB%UZ98c{x5j&(vdTPJ8 zVroCyEJfm}{iZ5jJ0icYfO}Lt?PDq*()$qj78U>8i1=5)8?X1u8w7VK{s2t7jEJ5w z*oduF@v-35icbT7T5&m8KBT7xJQcfsNPZWCFHpQ3OuK?e{AzH4;+w&5tNb^C<0}41 z@Ea=rw_y2D`Fp`PsPx#*!~IbF1n@L$#St)VMj-KJ;Oi7ugI6nV0RK^y_XY5KimwJgr}!IS+9yHs-vpKq>3bAhc9R$X z9Qcna{U5>m6u$>vpwf@R#wxU}fyr}}a}@YU6@Lo&6?J?J%$phT0i&E*;FDDPi@>}+ zf{o9BY2N~qf1a}nyh-JEBUnCEpS!_6{HR{i{|FpVyd8X(%I}Y0+G;@3zXRT*;`6X6 zlurK%@NZQ7XTYCO$Daj$RmInW-%{KRmJjJ&0sf*o{%Y{Gif;u!pm-B_Q1KS44O?0DP`xV~`{@ATveSZMnu8!XhK0(Fr0`E}qgW$<3o^IfNpyDThpH}6a z3_et)kI@ZZ`=S1s3I3IezW_`>`!`AQoEGr66@LLdsQ4=I7R6r$*C@Ul905m=A>Dud zA-G4y?*w0?_-(L!Wc<&$&C^5UzeX{Q|BPZ9|Mx1U@qdkC8viFLrtyEdVjBPSqkW?x z&!O?(pqR#gTrrLRuPFA@rn2@!`i}-5bGw({Wbma~ zb4~%%Z^MP7VEVndZ~{!fAs4O%)9=cK8^QEjbKx|Yet#~!3cTP>kG}|}-D0~2BzPy3%?Df-?R(oVRMINDt;oEe)lf%lfm>`c;ON- z{YGAR2AF;uFT4X}B?UW$#%fPhrfbd$de5n1e2cLA87k>x%)^B?JFnEHB{~7q} zD*gp9_9Ym^|mh z5y#W@o^!VsPuF|&gLX;pKL+b%b^M87`B3?%fv2hTXO4)c`9{w&N`5ro==nxrns4;X zqcF`kdJa;U<{Ld5DNOT?o|hD+`9{xB3eQFP^n9am1DKwB6#hJzo`n=%1*YdCg}(%* z=O%@31%E>2zZp!=R!aPnV0zwC_ysUMvnfpTiJs#W{tv{{vzEd`V0!*inC2TjV<~*t zv5rH}X$l_$zUe`aKMO8X^@)QARQoLimwd-d-wvi{KPA5_z?a?Q@pa$}Rr%inzo_c} z6Y$5Co?n6+RsFJH-%q^!-UGk+1CPgGkA%&t{1d@>N^b<*f3KIm5=>9mir)F)XTIg} zCE(qvzgB{W)%f@d_-fVO_kdqi{qrdJ45jaR@aan58{p+?ynYDY^=+^Ge>)!6e@fq{ z!1Qda=#7Bs*<9f`n4X^%t^=Q->T@ypJXN17zyqp2*Ma}`L+|)+fvZ$~egdZFfF=K* zgX#HT;opJjXLrJHf$14y;bAa6=PNuOo9fYX#=?bQdKOqX2&QL|g-gNoys+>*Fg-^s z+z8&O##aw`ma5Ns@Uv<>-v+)~mG?vNEo%Hd4L(Y>&uid6sqy$%@K4qFKm0_;IaTQ` z1k>}>qAviZXP<>j!Su|v@LVuGA1%BXOwVNtr@{2Bw(yl;dahddS~_0!*X>~WkUf16 z{J!d+XGX-6J*8*EBtNpJ^t_lb*;9IkOqlE`Jy#}7_LQDA6DE5~&z}jCJ*8*TgkMGZ z^jw+nUNAjxChQbq{%`YmJeZzKllVd~J+CGl0C%hWXMpLMHi@qX({paZWKZcCIAOA< z^jw_q5~TN@bIWtseyZbp5Kqs;NqVw}FRJ){#M3i#5`QB&uJXSJ{5^F%*~{}){T@dA zVio@^*tgxw@3-Kr>JPGSSE=&L-y^@O3yIj3sn9SPQv*K) z;^`@S$&c*I8kJuR@eir~p97{xg(ZCwe4I+30e@VTNAqW!s((M?=c@c}27gDjAB}f< zeo^w@gm`-W9PxNufjtU-;441=AHYZAdhBQ59^4PAG?DH?STn8S% z%H&UamVz(C@e;ob%$tTHJ=JGDc-x)WIV{iUzY+YvjXpnyE$jUzm|kj!KT9)jCPsM} zR?JU=SE4;WZTSUa+%G=Y@@wFyk>7ci-v-n6@IWsAuutK76ZxHH<0pXczTM~luGMog z_y=Fd?@ny|*%XiR@Mi)pe>S)W?S#wTJO!qAA~xCdzXZpT{>QlPru=t<>HUS2p4xXW z_-ypY$u|AyNxA)VESTO2Xwv67p8?;2`ro zE10%zGWm^iI#Dp`HJs;MiufUnhcKZ5D?hZ6q*cqaNs^p1s|nQHu;0H&>~Bz*up0quE+Ew3Ehaw~pgWVssLd6Un7 ziscKzlcBfH@+IJ`s{e8@y*Lli+#jpK3osrR+Vt0hZ$N(6TfPmv7VRzNKS;-4@AKbj zP5&3L>=jGnVKfHTZnVd_qfC1q10MekpZ}AVPXRxT z`5m&yhrnAaRp8Z_Z!k;T zzh4ALP(R$3VcrNPd-7S!cY~i)_5Cq;=FMLDJHgLF&nBDR!S<@BcQ{GBU!*C~zN|Aj zX;RW@OSLDHcpqaD8-Is1g~ATMLp9dJJNXJ9Nv2}e|D`&UJ}52z1mur z;;mWfu4Ed!s*%W&AmuUQZIT^Myo29ulg zbfFTbE45@tUUS)*Td5*+D8GfM1}`C!!a`9rCcWy%4G3cQW`3`r=}f$_ zO`;-EG-;w|w$~z&BI+J_WgWWL6;|R6trAM(jey3ErW9(?o{4v~r%cwtKp^a;$0qC= zR8Fy&PF9i=6Hv#L6l;iTDAEwokdw8V8Q2$ICkrYl)(S9y-MJMj)(VQXf?}aFfF9sGsfmQ$upklNFSO6~u7Qh2o01sdRJb(r802V-jRsaj2 zVzdHS02QMZzyhcktpFB4#b^bv0A36%fC8-m7C^;l1+V~K3@m^LumB#w0(d~DIXOMX zB3c0~fQr!yU;$K&Rsaj&#lQl101My&EPw~F03N^sD9{RE0aT1u01KdEv;tTF6{8i< zI>xOwEPw~F01C7MSO68H6~F?h7_9&nK*eYUumCDXD}V*?VqgIjXa%qUowP70?ZO*g z?c|SPh0)%WNna|gj>fVfmy}M#DQzHSk@z^*K7o{lt@1A#j8t<7CN-f zb(c&?O$(%)uvo14?<}xlv5>R0Ye|=_X)x^IO{3l-DHh|ka1)lNqSrVP zZ6XP3_+8Rf%glR2{-GQS>R7=)N|KT6k8fIdcwP z0^Zterz9Qij<*pd2c0IoOLboBl9mz2;EbAT?5XUUMQ?VtgAi|UqPEQ)K-k6G;rBex z(S3{asZr)>MysI?HMpw8ZrrB5f|#D1%zZCbPNT7j(~YLg$49ggIv(#RF*5La(q*=< zsrs}DI7;o}SL$`-wstUpGxSHd0-}m>ta|AX)uEnV9F3Po+B#4gw|Q|y%%N98SKy7% z{9;Krl`_7Z3NMVbFYf7ZmUMJ9@x`^IhNYd;F&kaYp|-#2bzt7$1}Qtjqzy3wFyk+2 z?KC;e>gceSl(2a*rxg|)*Ya+00Z7PHwtGDj2z-RGgvEnu`>LJ}Y3q#vVMXKajN;bA!Qi)O1Be_P=J;)oMa%-*o0Pbv%(Ne;=}iFw0Wn*7-)7}hR~VITQIn|C%pa%;RM#&u8dU({bk=M z?6p)VP)zLtYpRBN2%W~AGQY~UOekpUGV)D6G?1$snygBsY8z=bsDxx^Lz7ab2V4ke z1l+#DtLEv=Kwi63C0iPnrPy$wm&lGwTa-A-oKn@9nzBp&o#QatW@(Z62GN3`M2$p2Rp|aMDOfd|KWH8K!N2CCp=bM_UynYKf-N_KA z2}u#So=OH|bXdrqps3f9!4T&ZmYgtHf+ZXjlb{mHjFTZtd-slx405uNBnu*_n1f0r z2+I`QBcw1KZ;wO^2LqhU-lGa(UDYkpBn+qKWH8FfiX}HRKN^ghEh<4pbfgKBWUx!g zoW=;@Zq&&3Mt>!9PG~gLkt(-YF-{Pc+Zq@IIS0}S0*P`fj#0=bjih}!PshQtL$B$v z)TZRh80+hI#O9vQaHXFcfE9g1W8(ret7&7L?r7Fxl9%$#rTd{K3bz7a3($=pZ3}RB z!RQ|GQl1VI+#L?t(^IKlRfb?eT$>TZ@GNa=lJ3TI2T8ADzNY9zF5QRO)oQIMUKHtM z@bY$RdZ<~OJG!lG8Y1nu(<{dn;glyQ&kz>rndSCgFHM)O)H3(}Gz_7fy~zgf2|m$- z` zVw@4W6N#5iHEwgoIM!`1bwebCtFxAduDTkTm$==+EVB*QTP>Nz;gB+PxNPGjqBKN? z4_Sy*Obuoc2OGics>4d*;6+^sw}3dAsK)x5S!84KQXNGYX2ar!rW`Y?F6O9Sl=@;B z6=bzZq#J-sOzuRyx!MlDq&IA+dF>g7*U@H(&?rpmfq+g?L$oBsMY^x~C~#O1c*&9A}qO81EIZC-d-P8D*pBg3nxt(8303 z>=g%*=>p(Mi_@t9b-B$gflw=!#RO??KG#%IXr}0`jj#!knUR{ z5Z$5&1MW^xU{1;qZl@zKked>J{i49!l(-4R)fKxTr&BB$ZFSAL9|Ow{1~Ej^#JB;> zIf$jgol$0KFZawUEsFcXoIq>@PPHRfY_P=V%&ummi%Xxd&6>`LCZ(8TYz#NT9LtCh zbus`(_P2Gv=os5>b{*rca51Z>A6>?YfIHR=z%-;; z7R~8yOg;BDNCJ@h;vEd3dhjJ2OsOQc% zoQ6na?m)x2i}G*CITYtfN*Txr#Mq&fB{_jOVjXM>Uvl5k6$qM9NT^g70 zkTbI(-L$+Rol4~1)|Lb{Mrsv~s>@N!wSlgh%JUMEIg->k=DCrX?M-cIGh#?Nj!#l7 zr#1@}_hu*;RXL}!R%gQr&4G1@N*eFX(mC;23DGtat-><6QL4~r2$(smG+CRdsZAa% z*_NBZE#@w{)$Ue%W&;$^i(o1WrP#058c(@ue`0D4O z&Q3D9xT`CPsg=$+=1t!a9 zHxZN6K?hd+^JoYPqe9)|l*e(1ScJo@S!0!PoOX7D|s0{_{M z&wkVMdX#Q79PKaIhcp*SB*Mf?Y4B*F`^lbz=O?F__;N&0I(l{%+p=(8l5hbEeg)6+ Z$%pcx4?UMkWy+`c>-hbo0KO&N{{l8xRC)ja literal 0 HcmV?d00001 diff --git a/hex.hla b/hex.hla new file mode 100644 index 0000000..e9942b9 --- /dev/null +++ b/hex.hla @@ -0,0 +1,12 @@ +program ConvertToHex; +#include("stdlib.hhf") +static + value: int32; + +begin ConvertToHex; + + stdout.put("Input a decimal value: "); + stdin.get(value); + mov(value, eax); + stdout.put("The value ", value, " converted to hex is $", eax, nl); +end ConvertToHex; diff --git a/hex.o b/hex.o new file mode 100644 index 0000000000000000000000000000000000000000..b76a8293ac07954b0e835f854d8d69b90cdf9a11 GIT binary patch literal 1760 zcmah}&1(}u6n|;bT0g2$4~inD5KvKqO+`d6wawN9YnwI+_8_d&?6z6iZo=-S#*@{a zq!c}hco7fYJt=tT(Sw2qZ(h9l@fUayo8U{-zSit zDhYf_Js#>qK$h)6qUV7se>oq^C>HNgId5YF*HNP4PQfsYrQ&#wsHnJeFz${xTFBP| z=h--h7w4gz*YJGT7faCYtp*r!-|YC5GlVZFx8!-0b4@!J7+I4JPVp~E$|^l?k}!Nk zk~Ab|-nU~*(E;dBBK!n&?mLhaomHyDLAnBbx?@XG33?~OZ$el3)2Lqu=kI7>9YTLL zPzj&+Lq&khAIJEskn<$G{~b`CBarjI2dZzt{4=-`&i73bAoD*lJ`(w!?9YO8EmiMg z%s(09voUVOxC?HEHPh(yLCpUw#$SW;d9iT(+nE1DjFY}>Ifmw}we)OOC);#%yt8Y+g^2t%xHaz>en^y19b8^Us=qF1!4t}RY!M$r> zu2qWtwZ#(J7Ii<|$X%9KR;QY7v+Y|>I4l*GZC~pY9m5U>rUhYn%8UNzYE`{lt5(Qs zG+jRk=Q+Z(y$Bw0zHRwjNHvbr;pzJt(>`>Ek>8nt OV??)@<3SM25&su*7#rCD literal 0 HcmV?d00001 diff --git a/logical_ops b/logical_ops new file mode 100755 index 0000000000000000000000000000000000000000..a80bc2e216a4e83f69be0b30ba047123d3339560 GIT binary patch literal 36256 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