This commit is contained in:
2024-08-07 09:16:27 -04:00
parent fdfadd5c7e
commit 5f971cf684
5200 changed files with 731717 additions and 0 deletions

983
uudecode/16888.new Normal file
View File

@@ -0,0 +1,983 @@
Path: iad-spool.news.verio.net!iad-artgen.news.verio.net!nuq-peer.news.verio.net!news.verio.net!logbridge.uoregon.edu!su-news-hub1.bbnplanet.com!washdc3-snh1.gtei.net!news.gtei.net!dfiatx1-snr1.gtei.net.POSTED!not-for-mail
From: Virgil@Home.com (Virgil)
Subject: ** Jenes ** 1st Time Post - jenes01.jpg(1/1) 41511 bytes
Organization: What Me Organized?
Reply-To: Comments Welcome
Newsgroups: alt.binaries.nospam.denim
Post-Count: 000017
Lines: 932
Message-ID: <XrKq3.644$te2.24714@dfiatx1-snr1.gtei.net>
X-Trace: 9/mo+5aPextSzx+/aETev+b+3gyi/jlFFjAQFVhGS1Jlq3uQ/UB17C8mpuulYmB+qWgA+VxGAEHX!3dohhEwwcLDrcvw39UT6cMeOkt/pjXhYbEfPVaOAMcTp/h3N/y+kKKk9SobJ1as24qB9sO8=
X-Complaints-To: abuse@gte.net
X-Abuse-Info: Please be sure to forward a copy of ALL headers
X-Abuse-Info: Otherwise we will be unable to process your complaint properly
NNTP-Posting-Date: Fri, 06 Aug 1999 23:44:55 GMT
Distribution: world
Date: Fri, 06 Aug 1999 23:44:55 GMT
Xref: iad-artgen.news.verio.net alt.binaries.nospam.denim:16887
***** Comments Welcome *****
BEGIN --- CUT HERE --- Cut Here --- cut here --- jenes01.jpg
begin 644 jenes01.jpg
M_]C_X``02D9)1@`!`0$`R`#(``#_VP!#``4#!`0$`P4$!`0%!04&!PP(!P<'
M!P\+"PD,$0\2$A$/$1$3%AP7$Q0:%1$1&"$8&AT='Q\?$Q<B)"(>)!P>'Q[_
MVP!#`04%!0<&!PX("`X>%!$4'AX>'AX>'AX>'AX>'AX>'AX>'AX>'AX>'AX>
M'AX>'AX>'AX>'AX>'AX>'AX>'AX>'A[_P``1"`'@`H`#`2(``A$!`Q$!_\0`
M'````@,!`0$!`````````````@,!!`4`!@<(_\0`11```@$#`P,"!`4!!08%
M`P0#
`0(#``01!1(A(C%!$S(&0E%A%"-2<8%B!W*1H;$5)#.2P?!#@J+1X1:R
M\25CPM)D<[/_Q``:`0`#`0$!`0```````````````0(#!`4&_\0`*Q$``@("
M`@$$`@$%`0$!``````$"$0,A$C$B!!,R05%A0@44(U)Q,V(5_]H`#`,!``(1
M`Q$`/P#\^[O=_71*W7MI;=53O*LU<LIT=D8_ZGU[^R"_CFLI=.D;$R\K_A_\
M5[JTE2TE,#].WCFO@GP9JSZ5K$=R#M&>K^[7V379C=6<&J6S?E2$K)CQWQ_I
M7I>GR<M'C^MQ5*T;AE2Z,T8/4<?SBDZ?(,-%,?3=>.KL?VK,T>?\P*QZAYKT
M!%NTRI(BNI'<=Q7;&5G&\=+8B.!&N`)DD"\D,.V:N3F.2W-JX.!R"/K4[4MX
M&C4F6''S=Q2EM9%B#F4/D\C-68M7IE=(.AX.Z2<5T\1M](GCER`(V"_X5=M8
M9%N#EHSM`W"D_&,J'2KB495E5V&.W8T28W'6CX3NS=3M_P#Y$G__`$:K"MUM
M26XGD;;[I7_^YJ?'MSS7B^IE_D/<]'CXX2Y".%J[$%8[3VJI;O[E\5>1.RUR
MO<CMC*BW:HVQ?N*NIWV^:K6^WM5M!U*PJ'^#5C%'2&/?D4U3@$#W4*#+GZT2
MKB1'_FE,M+9)`*9\4[WI_A0$*KD>*)%;MXS2;'Q=C`,)^SYJU`6WJ*4G?A:;
M'G:&`[TI1MCO\#TV\'R#5F$EF)`X[54`;.?!.:MQG:&V]P,T4"6QTZE@0/I7
M1>UD\DYID;9P1R#2TR)LM@'M5,ENG0R'F#9]S5A<&"3'@9_FDCB1D\=Z<N4F
M*>&&*D)/09ZE<9[JN/W%,=N@X[@9I41",01VQ_A1R,/MR-AH8?98"EH@5]W.
M139,9C;Y2<4JW<JV1V/'^569`J6BEOU<?M2LAW=%=S^0Q^C<_P"-/C4@EOU&
MNEB$@GC7C=V_UKHY";13CJS2-%H?>QJC1LIY=>0:4@/X7CN&%6+G\Q(9".0<
M']JB/`+<=)[53%==E@Y=$E'[4F($QK$O<<4=KQ!Z3'I!&#0JQ2<28X'/\T-A
M6QBYRX'[5*'$+)\W<5RJSS,ZD=1W8^U'+@E6(P3D4,))/3)97(23ZG;1'(B)
M/@T()V!2>0V:9#AXBI^M'9+BT]CK?!<H<X;S7;&`;GS0[C&J"FPD+G/.2"<U
M3%T#R0Z#SP:.2/`9#[?K0-F.5L#.:8A+*H)Y!I?R!;)4@@9]H/-<&W.I/':@
M;.7"G@FIBY1E8]7BFQ._L.Y4"7OQFEEBS8^M,FQN"MXJ`H`5_OQ2:V6FEV+8
MD$K]ZE/:V.Y&/\:B09
+,#\U3&"N/.[M]Z131RDQRGCJ/%!,05`4Y.>:*4.)A
MCZ\U"@Y(`'DT-AQ`,Q64@CAJ-FW2*W\4,D6X!VQQBI1<*6SP#2>RFJV1*`)S
M$3PHSFD-D#'DTQE]1_5)\]JD*6((&1V%#_`-'*N4'TJ)P>W@44<V&*X[\#]Z
M`!]I+@;B>*+%T3M"'&1SSBH=UW+Z?(\4Q8P`Q;W=J&!`BDD#@<4,.Q4K%2<=
MP:A5W#+GD=@*F53D>2>?WJ45L`MPPI=`WHYH@4.3U%NU)D.T'ZC_`%JU*!@-
MCMQ5<LI9L]Z;9*;$Q-E^:,+DLU$X56!XYYXH0PP5'8U(VK$R`ES]"<T$J@.`
M#R<`U:*KM)/;Q2)1$K'/?OFDMLT!C_+4@=\8%`RG!_>F94C*CD5QX!"G)/UJ
MF0VA"KC<U+D3=DGL#5EPN>32Y@OR]J0]=%=VQ)@=J&0C&?F\TXIT$G&?-)*'
M//:F#1(C[_6A."Q!\4<A`9N?-*/N.*+&R&.WO5>4EI"U66`QU4F08)`_:DPV
MGL_)BM[JYAS4>QZEN]=LO]3A_P#./B%`-K;*^M?V?:JM[I$FEW+GTY$9/V/U
MKY+[69*]?\`WBQ7VPG:-U;XW)2,,R]Q4?3;>)K6;T)2"02$D'9Q6KITSBX*2
M#(''\5A&:25O0"[XO<C^17I-*@7UPQ.9../K7H6>7/'?9=DD*+A@=M%;SHY$
M)C.Y>Q'8U-^F"T7.T`$&G:<D31J5#F3=G^:W3.1P2+,$84LW2&/)S6+\8A1H
MESZGL])_]#6[*I^4K@^&[_>L+X\:./X7O9"K,ZPOTCYAM/\`G2^P3XH^'0MN
M+LWN]1NK_P`S5:3W?U57A7;G=U;F:K,"]5>-ZF/+(?1>FE6,NV_?]ZT+<<[?
M-4[=1E:T(!^>5^M8LW5-ENW3L3YJWC]'>E)[2OD-3,]/.ZH<36[=#X@U-`SC
M/F@'3CZ&G)G)0\X[&H>V:)<3I$!&::$R=PKD"[2#X.#3`0LJ@^W.#^U3Q&B(
M^"QJU"I"G/UI<2'!+=Q4EMI4?3C--F=-/0U0>4SRIIP!4E?(.*5\RL/-/#`D
M?4<&DRMO1<B*"/8/<,$?M029WNN._(KH@!C]S3I@.'\"FR&Z9`*D1N/F4`TQ
MCG)\BJ\F5B`4XQVJQ*R],@'!X_QJ:&.P$E5CR""/\J5,I",G?:0:&5\*1GE3
MG^,4Z/JER>S<4QN-[#MV/I\^#5^?\S3G!P63''UJ@XVI(@[C'^%7EP67;["<
M4B7HDL=ZD#&0/],5!``9/!.14WJF,MM.0K8_<5R@,I)[E3BF^RKLN,%9(MIZ
M7C!_GS59'//]+9IENI$2#.2HV\_2E\9F!X.[(_:DR5WL?&Q<28`&3G%=<9V'
M';N,4M245"".LTV8,I96'M`XILJ]C
8\QO&,\^F*9(H8*P(Y-)7#R(,CD<5(.
M!&IXW-2>P980KZ3Y'6IQ4(AR6#8\TM.9&7(R6H!(<X<\CZ4^@>RV05&USV\T
MWTRQVJ1R<4F`B5'R>1Q7;BLA`/.<@T&=6RPI;U26';BAC#)(G.1F@$I61@3G
M-,/**0>:;&[L)^S;>V<UR]P2.:%5/J'G@FG1#<K;^#2*42O,6:3<<Y%-4'8`
M?%!(Q];CR.*<@S"[*<Y[4]@]"&(VD^.^*)^54@XQV/TKF3@KCJ`J"=N%/8"I
ML??0+$@@D\BB48#\X/:H?J0L1WH&&)`2>&Q0T.PR^4(/85"ACD#D?2@96]-F
M\'-3$[*A/DFAE]:`N.F1D!_PIL>XA>P4=L4GW,23R*=N"QA1X/\`E12$[!"[
M26P-^<BNSE@&/;_6N9P68CQXKF=`1@@FCLG_`*%@CD]Z`N.1Y!%=ZN03@$@8
MI9(=\@<^:&"',<'?QM![4&20237$@C:/%`&);GMG%#'QM;.><EFX&W_YJO*F
MXL<XS17,L:3-$H[MBBP/48#V^/\`"DQTT`%RY(\"A0#>5/CS1$LC;5[46T`8
M\X%'8K!GXRHY`I#H6)\XSBK#`YR,8I<JGG;]?\JA]@"V%)51Q0OC)QWKF)7)
M-`YP2!WJAL6PX!/)%$^-K<?M4&ID(*'';FCI@T*/"?OP:5(6+*@[#/-.F()`
M`XI;8[#S05=="@N6R3P*X]\BC)&?`Y[4`'&?'FFT*5LY^I6Q_%)9,OR:=)WX
MI3<'!_FD-*]GY.=>INNAHF_JI;,FYOTUZ''E\CS<DO$@]FK5^'FD_P!H1[&V
MG=62TJ)3K6X:*93&VUE:K49F4<_^Q]X^#A;S*8)G`E8>:TXC<6=SL"DO"X()
M\BO!_!NH">6*8ORWFOH<\C>JKN,L>Q\$5VXG9Y_J;NT7[F9KF,-&1VP<U>LX
M_3"R*QR.>*RHF1DPJX8H#_A6AITA>-2/:?\`2NBZ.=I(T4Z^H!3GZ]Q7E_[1
M%*_"FHAMP/X>3M[L;3VKT\31HI&.#7G/C_;+\-7Z[^?0<X/NQM/:K.:?EH^+
MKU"K,8ZNFJT72IS^IJMP=Z\3/_Z2/H_3;QFA$FT5>MPWNW=54XE_*V^:OVPV
MC;]*R9U<*=ER-.S585`5X_FD1%@G%6+?I/5W-)C2V-[9XX!IL84A7%``=Y4<
MTU!M@&&X!Q6;T:O0_8H)8=J-E!0%OK2QR?VJP<>FOUS2;_!3V$F2&YYKF7,8
M'G%&A`E(`[U,0+#8PZNYI-!>SHPN0#VIL2Y9CY;C^:Y8^<_2FHN"#]\4RN0W
MY=B]P:>3F,+]:JD8GX['_6K<6&`QW%#5&#5,1%DET;G:?\J,,1;X[XY_BI?I
M<=N:A616P>PX_@T-#M4"Q+*2!^_[5;@.U0/(8$4J
-AZGIG`SP#3-VT!L>2*3
MT7RT.#JTXSV((-/B8!U7(P6'\55)0,#LXJTGI-*.1AE'^-3$5KZ+%[CT@WC`
M%+5]J#)[4Z+$EN8_(JI*R"-<@]R#5O9*TR]"Z_B8BQZ6R*ZX1-[$$8'_`+4M
M&B9(3@@Y&:=+M,\A`[]JB@O>ROSZ`?/`/%6V<O*2PRSKG^:JJ`%$?C.*>Q,9
M5@1E2*3+JPT&&CW<$-@XIDL9,6X<L#D4HMU2?J!J%E/4N?VH8?L([C*0#U=Z
MY1F3FA;?M]4?>HC)$N[.2?%`[3+L.PR!%."<9HFQZBCZFJT;@39INX&0<>>*
MIHRO8Z=%#@KVIX`"@^#WI#/G'U_Z4U00P`[4K*?5!J3O<,?;R*.-LOCZC-5[
MC_C'![FF]4<W[BJ[%LZ8`3;1W'`_:B!*V[&/Z<4J=@920>H446X1/@YX[4GV
M/;)5BTC'//:A?!<Y-#$WYA!QR:'<&F8-Q@TF--H:_"`9X^U#.V57`R*!R-PP
M>#4`XD"D\;J&"ELB0L(<$\?2ISG!'%=.F\%@>>V*4I(B;)'%#*;"0,6;:,X_
MUHR1MRQ`8FHYCBRIY:H="<LV,9I-#NM!##)^4.IAYH$6)%96Y8$\TT$;NG@4
M@KL"L3D,V?\`.@+^AL(4HW;(H21AO3`SSS]Z%D.1M/2*&)MLC)QC)IL?&PTX
M!R>:),'`&!@G.:!F!8D8)^E!@KP3]:EA1$D(+[CW!J$SO8?0\41D`"EN^,_S
M7!2HW'@_2@IS^F$8L$9/;BE-DD@>.U,$A*@$=1J'&`"O<YI&3V`[!(^3D]Z`
M2]R1V%<R[SDFA7!!!^AIL=41(P9R3C`H``5)'?-<5P<?3BISM3&.32*H!AD<
M=Q0%>2#VKG)3E<$FI<Y)!//:GV5)4+(RH;SWH`KDM]!30V$(QS0.QR<>:`%A
M1O)[\T!SSCL:,=\]A0E@.`.U'8G^P&)!/U-+F#@Y^M,SEJ$]63XS0'Z/R)<2
MOZC;:1,[U:O(W4-A/;5;=O1M]>J>!/R_D+??U=="K/O]],V([]-<\7_+6R?$
M)PYGJ?@N_:.^$1ERK<U]T^&[Z#4M-$,H'K1<#/?N:_-FFR2Q7:M'[EKZ_P#!
MFH2^I',`RL5ZQ]:(3J9,L,?:7$]IJMPNG7:^J=L3G&?I6G8-^?B-P4SCCM61
M\06ZZKIRNGM8#CR&K+^%M6F@N9;&YXD1L#-=DGJSB4>3K[/H8(],G;WYY_Z5
MYOXW$,/P_=,23&L3C)]XZ36W:2"0D,YP1Q63\<6ZO\-WL;Y;=`XX^FT]ZI-,
MQG<3XQ%[6S^IJM0U0@9O3;JW?F-_]U7[)NG:U>1G^1[V#4;1I0[=W/:K\0W-
MM'>J2%3CIJY`ZE]W:L&=$96RV@ZCU5<105##]55%R9.GM5N!FQS
VJ.-,U[Z+
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
MIRQP#WQ1."
#S4]":%R`Y//%`H')(YHW*[0#WJ#V-59?2%G)8X'&:2P)QCMWJ
MPP&#2G;K;;[2>*.PU]GYZNY[=HWA5E5?U5YK557UY$5MU:QLYI3Z*+ZCM\M(
MN]+>'<95P_\`57N-<3Y?E_L>?^;V5$BT^39ZC=%+D9*S.K@5/_$K:^%]=N]$
MODFMI`82W5'^I:R)8^IJ''YG:G,YN,[/NV@ZM;ZQ&KPNIE;'"UJ^FKM)#-!N
MC((P17P+2]6O],N$GLIBK1M@@M7J(O[0M:#Y98V;=CO6V/)79&3&UY(^N?!F
MLQZ/K,FA:@KK9R$O"Y^4G<:^A:I86=W:+$WYB,2%D'RGFOSQ=_&5[?VJ&:VM
M_6!9U8#FOJ']G'QA;7VFQV=Q.OXR,`E&;AJI9X<C*>.3VS4O+:;3CZ-R-\;=
MCX(S7S?XGTI-.U,O`O\`NTG*?I7CM7V^]6VU6T],E5E0\*W^-?-?CBRF%A)$
MP.Z+E`>_:M,N-36BO3YG&9XJW/YISVJXGN#;JSTW*[_WJNVS;^G]5>/+QD?0
M5$N1/U\]]M7;5BJD_2J/INI+.M6;4Y8*&[M6<A<S1CEZMO@C%/A)5]N[BJ<7
M`W>>0M6(3EM_8TF6H_9J6Y3T\>1DBFPDI(_Z6JK:L'Y\BK/R8\<8I/79;WV6
MH2&S36RP'`R``:1""'"8X/-683TL?-)[8)4K.C;;=Y`[<G/FIVHFY#PDG'[&
MI<<%E'4*8`C$Y]O>DP4;`&54(1SW!HF/Y(9/WQ]/M1$$Y'BA0@Y!XS_K2&Z8
M<*XW*.S=0S5J(_DLHP0.5S516ZL^<\4^T.9R#[#S5,>F!<A)1ZBYY'(JOLWK
MGR*T$BP[QG&#5<C:1'@`4GHGME:`9#1'M353);ZK1!=EP0HR!_I0JQ`;ZFE0
M7?9Q'@\9Y!JU`QV[-_8T@`-'G(X-,7/I@C@]A2"_IFI"^ZW9#VJC<G;.I(X'
M?]J=:-B383P?_:HO5QEO-4U9DE3*\Q_,)7SVHY%)174\$9I))=4)]PXINXAB
MN.D#BH9M_P`"R0,9J#)E#$>Y-*1B9N>U"<Y))Z@3_A10/6Q[MGCC@XKI-RMP
M<\4DXZFSSFG,<.5-)FCV<K,`#QFK:L!DC&,53"\XSFG9`7'UHH;T68RNP'.#
M35+K<!@>.":K9&T`=R:(N?4)R>P&*4B6OLO1N?6/&0?K3;=P9I01WYJLDQ_%
MJ,#`IMI(HWY^IJJ,_H1=F,^H0><US2%H%..PP?\`&EW/I^DSCON-0DNVW8?6
MDRDE5CHOS`K#@$=C4A]DC$GGD4B&1\J1V`KF!+]\G-`VDQQ:1I0/!.2:2\WY
MC#'%<DS(7W?M0@9'/N-#97&AJD[6(HCP1D\>:0'[X[?6N9B2:.@NRTS!@3CC
MS02MGI^7.:6LF(\-]*YY#
N/'T-#%3LZ12QRN!Y-''V/TQ7,RDD`\4"L5=D\"
ME93T$VX2$_2BR2Q![U#-^9]C4.>IF\^*.A-G;QL(/?.:`D@Y':NX(Y\4&\ID
M#G..]#*6V-!RG/>I('&WOW-*5NI@>Q[5S,5)7//FD#6PLC!W'BID16C8@XYI
M:G<.KL:ECA"!VHZ85:T,R,=^:A\!2/YH`P'N[XH"Y8GZ]J&P89(R2.U#(<FH
M)`!!^M`2._TH&J06>.<<]J$Y[9H<]0HG]M&P:H8N-P..*"4Y8@=J$/DD>*AF
MP3GP:&K)XT"S`Y&.:6Y.#@_:B?G.*0Y)&1P,]J*'=C"W2<]J62!79`!\YKF(
M9?O2D)I(_.4]]-;2^I%$P9?F6JUQ=2732"5F8M^JO4:U#;>F!&R*&^:L=[-?
M4=8O3?;\PKW>1\TL?*1@W]DP@]5?=5"*S:ZF6-?<U>FDM9(Y?3VMEEJD]B1,
MS6_3(K=--HS;GS_^3%O+*6&1E/NJN$ZZW=474))V:YBCRO3^75&6!&5GV=53
M+H[8PY>10VI]:%]B.U-EBVNU5Q_Q.N.N<LW=+FW6S)\RUI6$\MO>)<P3-%(&
MZ2*\WITGIS_WZVWZ>I?;3E&2D9+_`"?(^S?#'Q'>?@H9Y7]10O6?G/%>PCN-
M-U9?]ZA8%T/)'-?`='UJXT\[E+,B]6VO=:'\7P7,XA;*.5KMQ9;5''FQJ,]&
M]K/P=!-<LUE(`'/`%>9U30-7THEIH7*!^ZK7L;/7H4D&7`^F:U)M7AO;-HGD
MAE]0$Y/)[&KGAA,VAZR4='@M&NK:[<VETV'Y`/WJ\^B74:,\.)-GZ?-6+CX6
MLYI9+F&1T:3)!3MR<U#+<:6X_P!Z=H\>37-+TRLZ?[F]Q,\EPI!7$@?L?WI\
M1?8<#FM:W33[Y5<X$@[X\BJVHVYM+CI_X4GL-<N7T[6T=>+U";I]A6_;]QFK
MT;8BR>P-4K=D"]2]JLQMF0>4(%<TD=*5LOK^9%C.#V%-D!4J0<9[_O5:)L97
MZ59A<.I1NPI,'(9&01O)Y[49!5\CD=C2(@=S`]O^M/RQ7CO04Z?8Q<`-M.14
M2IN7<O<8(HD`#`$8#4:C=NP<,O.*&P$/@N,<`XY^]/A;:Y;SGM2BHVD;>*-3
MO8.!U>:3LE.NBVQR05/<Y%*NDSU`<&B/5$<'!/;]ZB)BT1$G?%#"MB8^-TG?
M!P:4<>J0.U-!*2$=P?\`.E1CW`_4U)5ULG'=/\***3*[?(YI8)!)^93FB;`;
M/@T,KL?$2TFQ3U5>;$D'/.#S65&2)@0=IS5^V;8WIDY7S0C.>BO,K)V[XS_-
M09.D'R:N74?!(\'_`"K/+8.`,]Z)JF-=!!]L^['2<T+XW')H2"6(J`_0=XH*
M;^P@.3SQ3MX)ZB=W:D`J3WJ7(5BW<`]Z
`VF6H2%8G(^E$DD>X[F[&JRLA)`[
MFB#?E-E,D\TJ&RTO6V5/`-&9#ER,9-5D;;D@\$\BF%@8VQ[@:!K1:5\R!NQI
MT;':Y`^N*KP-&4;U`=X&!BG%L(2#@D441RWL6PP-K=\T"MB*1L9!X&:4[NP&
M#DCR?-<S?D$'MFFT.30Z&1=J9[8KM_))/8$U7!!`(R/-<22%4XR<BI:-%3#:
M4M&`0`2>:<Q(8D$8`JOW8><5.\!&W=R:&-C4;<JYP"?`HCMRX8U75L2Y7L!Q
M4E^J@+L8YR3SQ0B0YV-2WD(.<>:)'&TY`W4AR33&ANIMN.],`81LYY\?S517
MVMM/D]Z:)"`%R<458MCE<MDD8..*#>6`SQFE&0A\CQS1,X8#CM2["4:8Q9,+
MU>W-<CJS%@`1BD'#]&>`>:)!M!"D8%,=*QSD;-WWP*@'<>>^:`ON<CQXH68A
MAMH:"F-8C;@>*$,0<$\4`.>*G/=`.`:&%ULF<@`D4$@PI`./O09.[[4;D%6H
M'T2SJ010K)A6!%*&2"3Q4J>>:!I(ECD*X[GG!J>=O!R<>:@@=_K41R<;NU22
MV["SM!SY-"S`YYH9&+`8[4#G"X/?O0T#=O8UCY%5FSC&3]*/?TC/?P*!NP([
M4Q_>B#_G4'VG[5P[G)J2>G/B@IJWL_/$DJ74<D7J,S+NZ5JGID\T4FQ&;;N]
MM68[&,7/^[3;:G3;-4NY59NE?TUZTCYN./R+MI=>O=,SR1X3Y?FIMZL4K)=V
M4D.\MU1-^JJDBV,4WIRQR*[;NM?;5JRTU;RY2))1%M^>E'D5DQ<M(G48UBEZ
MU99F7K!K&O(8VC9555D7JKT>OH4S(W7M]S5C01)>78A]1=S5O'9CE4E+C&1Y
MZ>/JV,G55*<IN9*]7JFGQ+*Y1MS*W57FKZ%HY&W(VVDHQ!SE$J[MO76W82>I
M%M;W5B>UF_35BQF$,Z_IK*?B=D(QD;S(RM[:.`S6\JR)W7YJL6DJR1KN^:M)
M+97CXZJJ,3/)",NRQ9:VLJIZ_2PKUMA+;W&G*]JZ@A<=/>O"7.E,X]2)>JNL
M[S4=+=L*WI?,*Z5D:[.2>*$I:/J&@7+A;BQ>;$Q;=%O/WSBFRR0S0.FI)MF_
MI[>:\7;:[;7*1RHQ2\"GDU[73T750@<JC2D*V?%;1DI'-313B$<2$Q'@_2K\
M#;XQ'+B8#MYJ)M&FL+^6S?J(?(^A'VH[-X;97RG"DTY8[[-7EIVA\FG1SQE;
M4.9,YQ5)7=,!D*,,<5JVDJB]6\@D*L$(*_O4301ZA(AQZ<C1_P#P*Y,OI4^C
MKP^MI^14C<[FYY^M.B<;CGS2+FWDMIW1O:OF@5B#M:O/RXFNSTL<U-VF:JN"
M`/!HX&(G*'D+6:)V&&\&G6TVYF)/)K)P->D:I*-C)X-
$RE#ZBG/UJM&P(YIT
M;GL>U)Z$F,DQZ0D'GG%=``'#?+4!@"!CI%0V0S;3TTFP6NAN=LQ'RT+,4:NS
MN0Y\T,O(!\CO^U2QJT%*,_8^*4<<_6FJ,XR>0>*5..I2O>FRM@-QN;S4G&W%
M<X)+''?-#&00=W<C-#+I]#R$_#AOFHM^QL'O2HQE2I[BC/4"_'!Q3)<;-!6+
MH&(X[50NDVS9'8TRVF(5@SCN2*;<)O7([53V0VXE`Y9\]BM"W4I![49.)B`.
M32MW!^E921:::(R,GG%<K8DP?;WI1<#@CGZU+OMW)_G0#?Y+"LA;(\=Z9O.Q
M1^]5&8;LKW-$LO2%..#_`)4=!T7%<+(W&1GBFJP5,GYC5-7ZC]*;Z@]/&/.:
M;T.Z+HD!4Y&&:I>3)5<_S5,R[GW<8-'O!4<]Z!6GL8""2`<8J"_^[G/;O2(V
M&7![FA:3$3C.<50:'RN,+M.!4QOF<@XP,\U68@H#GFB1@-Y\&I[+XEE^,E3Q
M0H49AN["D!\J0#WJ2=O!Y)I-;*33T6%P%;GALT`8AB3YI6\$@>!1[@P)[&AB
M6NAK$$C';/-+9MK8'UH?4P2/-<6QDCG/FI*=D,=QSFFY/J;">`*KJ#G`H]S9
M)/>@NT6"0#V[T);!Q2B[8)[@]J@O2#^0X,=Q!Q]ZF-L/C^*KLV7+"C5\DT-6
M)J]E@$9X[U'SD]A2V8+N/D5S29[_`,4,E)AD]?!KBQ!/VI7<YJ2QR`.1]:!I
MI#"W(J<@HV2!2CRQ/`&:%F&\_2JZ&W8;'!(SFN##=]@:23C(J5(+$^*30MH:
M[\X^E`2N#0#WU#>[/BDMA(9NR30$C]ZECE:!AC-%C21!^_>I)SQVI9;DX[U.
M>2**L;M=!$CD_>HW'!%+RP-=N[_6E0FS\S+,RR,RLRLU-ANY(]T>YMK?-36T
M^+<VUJB&U59MK=2-\U>W[<3YSW)1-)=226`QO"K*WEO=3'OV@1)"NW;^FJ\2
M1JW7M55_55F]-O=V@C9560]+;:.-$2R2[*VI:Q)J4*PQ'T\=/]ZALX6@E]3_
M`,5:H7EIZ#[HVHK:[GW;6ZJTEXG-P\]&C=7*]3,K*[-65<R+,VW;MJW)!)<D
MMNZ:3+8;2R+(K-N^:ANRM>X8EU%MEV?+59_?6E>VLJR,[5GR1;7?=6.6,F=\
M<L9>)L:+>8'I2/7J+";'S=-?/T_*??\`6O0Z/?APL;-U5/+B#E+B>WBD4H62
ML?6[A@^U(V8-5FTF]M78XXW&UT5@U=496<LXI/9E_"YLX[QIKQ<*/U5]#^&9
M8]7GN+.RN$CN<$H-WGP!7@M7M5>.0Q1JK;NG%3\*ZNND:Q%=L2CI("333X%9
M%&71]GTF[&IR1Q:F\=KJ$+&$^H<!]HQQ_A2K[1KR&2[1HPT;9]%U['
BJ.K_#
MT?QQI,.KZ'J7HZFF&6,/@DX\U<T_5=2-F;6]BEBEBX*2C!_BNQ.T<7%J1E0/
M+;7:QW(PP3+X[$5MV[(%5P,LJ<8^E96ISAG9O2;<`!R/%1INIIZX0@C=QSXJ
M>B=]GI)K6*YLS<LR[1W!^]9DMG83W"6YF]"1_86.`35ZVNHYHMH`V$YV^*7,
MUK>2^G)"H,<FX,!R*B>.,NS?%F<=&7-H^JF81VXCE"N0X'/'-;%E\.QF9$N+
MQ(W;');`S6AH@%M-ZSRL<+M`S[OWINH2B6V$D:VYV<C/?%9+TL#?^_R)TS(O
M-.O["Y,3IZJ]U91D$$G%#&_`#C#8S@UZ"SU"Z?2_4EAW!)=N2.<#M67JD5OJ
M%I'J-BX!B4C:.['_`+%89O1)[1TX_76ZD5?+?0/11C(QG@4LV>KB%Y5MV,0)
MYQXI<,[`=0PV,XKS<F&4>SN652Z+I&8]@[T`(Y!^E+2;G@]ZD$#)^M9-&JD$
M"1^XJ2`0<'FN9DR#XSB@8C=D55%ZO1+8)/.!0(`!G')HSADSQNJ&7I'@`TF.
M3V0.@CG)HNY9AVI9`P1SNS0N)(QC/?FD2V_H)1ECU8SS5B&8^B`<U1+/[QV%
M<97#$D@"G7X)==%B\')D4\]^*H.S`D;N]61/QAA5*\P.=W:JJR.NR6;+$'@B
MEL^0<^*J37/G//:JKWAWMSQ0XT5RHU/4P1GOVHC)NA.#U8[_`'K(_%`R;2U&
M+Q4&,T<2E)-[-:.XX[U8$X4,<YK":[!=\'D\T45UP0:)1+<D;R3@,.QHS+G"
MJ<<UB+<;RR@X-/CN-V,'`^M)JA)V:7X@-G^:YG)@R!@YR:H+*H0J<<>:=)+B
M,"I:+M+LMD[@H\BN#'9C/<U4:5=O#<UPGRV-U)H+WHMJQ)`(Q1-+F0\]A5<2
M%<!B#_[4@NV23WI-#;MEX2$$_6F[T))!XJBKY(4]S3`V"5\4,=UHL%L]^YKL
MD<>*0K99B>]&SGV^:713'*W+8-0Q!XS25;;V[DU)9>])H.QI8JQ`/2.U1VQ]
M!4'MGQ0M(`-H[4#<V^AA&2<-S1D@'@\8I:/U$@4.<@_6ACD];'%LYJ0<'DYI
M6>K!KOGP?%(?)=%DL$`P.#Q4%@,_>E%CV\5!X/-!G2^B9I#O`P<&NS7$T,G!
M^]-Z"+=DGZ9YJ=RX/WI>X@DGL*$L"QHLJ^0T-AL^*YCAL?>E`@@YH)92,D?6
MDP<+8\L-Q'WH7<C/TH&?DGS0[LJ0?IB@?Z"QSD'S4,Q'[T);`/U-`[D&ALI6
M,9AM^]`6`)ZJ%CXI3MUD4"I,^'0<.LC+N6M'4)8)+7?#';JF[LON6O.17TT`
M]"3Y:7=WWXI-L,?IU[DE9\A',E+Q/5:;;!H3>JL$H3Y']M!J%W^*'7:6\,O4
M?R
QA:=H^GSQ?#IN$W^JY8,K>VLZ\A:TE]-IED*_1JF+*S2_)DZP65UZNFIT!
M;'_:R?[0:7\-GKV]]M6;J#UU7U-M4)8&CN&6-6K5QY$8\GF>XM]`T8(9UN+C
MT_D7?W_O5/\`L_3_`,,BJB^H3U,?I7E%U?66@_"-'$L2;MK*>JJ5S/?-)O-S
M-%_3NZ:RX2*E7S@CU5SHD=XLK6+QOU?\+S7E?B#0[FTD82HP/Z:?;7VI:<[3
M0."9%V[OFKT>FZI;ZAI7J:C/;)..ZS-U&CR.CN/E\CYK<*ZML:BCD:&X1U>M
M[XEMK1;D/"R@_P!->?E1.I%J91+C*.3Q/5:-J6^+:?<M>CMY\ITM7S2UG:&1
M6C;:U>MTJ_9XE-5%\2L^*,SUJ!2ZL=K!N:1J>C6\\32JOS4JRF7:%W<5JVTO
MY;*W:NE4SC=P,:P'Q-HMREUH=Z8P.Z;\5](TK^T#5C:`:YI-I-<#/YD:;F/[
MFO+=)S]!3+=B.G=R.*U2_!E.2FO'LV==^.19EI9]*W1GYD3P:P=`UM=3!F"[
M'+@JK?IJ_-&MS9/$^&'C->9T?2[JSU=]G_"!7O3F]:,L6*G4YGT?19XXQO><
M#+G@GZUJP[?5N`""2^4-?+KW6A;:B;<*W'UKV&G7VVW_`!,C'&_'VQ0I;HIQ
MM6CU]G=QR&2T9U6>$AA]U-584MYM0-W%<,(U3!1CT9JE+/"LINX(S)N`P5^A
MJ[;K;O&T1VJ\C]OO6I@Y;V>B_P!IQ0VL<$$EJ[J,LI^;Q2+&]AC1A':1*@RY
M4+QGS7FELY4)::+TY48C@>,U?T^Y@LB(]09HUN.F.4]LY[4VJ-)3<E:/1:?J
MMQJ<4L"PF.*+(X&,\UDWV@2WETK6LX"8._!YHXDF0DVTCF,X)]/Z'ZU?76/]
MF!8DM>7R2[#M42QJ6C3'EEC=V94_P_J,19@``#@9I5[8S6^6]2-\$\*>:TKN
M\;4[=/2NI=VXL"IZ:2=.T^8QW,=_()V;:5+].:YI>CQOI'5_?Y+Z,664K(R.
M-I!(P:K65\MSJRZ?"ZO,U>QU2PBE>WL[J&,2/[94'<8[DU&GZ+I&C7Z1VD"S
M7)B)]9AG+9[9KG?H4GV=+_J"K]GG6CN8RVZ)CSQ@5#2X(1SQ7J]4>WT^*>&V
M7UKR;+!7Y"_:L*^FMDAFAGMB;V,@%%'.<43]`I;1'_ZGTT44=6<@.,CFN,L;
M-P<@]JBSOM&FU![5[*_$R=L)5VYT6U>3:LLML!@`N<`>.:YI^CFNCHQ^M4S/
M=U&4X\TF5TP02"0:N:E\-:O;,TEJZW<#<QF+J[UFSZ-\0Q()&TRY<;L<)4OT
M\UJC7^XQ_;`GF?TVS[AVI$T^9#N/>H-EK#;F:SF&W&X;>W-4I&E5"T\)C/\`
M4*GVIQ+62$F%/
$KG(!R:I7=E,&7TVV\U9:8^J$#KO/85%R-0##,;[<9R1Q3X
MB<MF?+;7*SR`R``4EUNPH;*L=U:#1>ID338;^]3FT^$1DB1P"?-'&A2;,8FZ
MC;>6R#7?BI489K:]/3(E&Z0LYX4"J9BM)YP(6WE6Y`I\;$YM:$1:K&K[7;!%
M6/\`:D"`C>/K5JP^'[[5KH16.CS@*V#,\?3P/K6Y;_V+7]R'DU?4XX3)\L+8
M[5LO2RET3[J3[HPHK]'RF[@U<_%AF';ZUVN?V?II*220:C(=K8"N_)\#%>(N
MM3UBQG,;:1>O"K=+A.]3/T<UT7#.LDCW;RJS$YPQ\5SR$-BO'6/Q3I[R;)IE
MBEW;=K>ZMJ+48IE$L+JP^M<\X2CV=/,W6G.>.<5"2@KMW=ZS([KG@T])D\=J
MR:*QLT5D.<Y[4P2$9SW)K/AD`Z2<TP3`G'GBH9IIO1HE\N#]*XOC)!\U423(
M(R*@R^/O1T79:$F>OS1(QQD_6J7K<$TQ&;<0".#2:'V7W;''BNE(P.W%5-X+
M\YIAYC*YY-#1%T-8D$8[&B9^!GM5??U`;@34DY-05=ED-N<$=LT1;'>J:2E6
MQX%,63).:;&[+!.#[J[<N*0&[OQC)KLY)\4A4^Q[MC+5+-TY\U6=^>W%<6;R
MU4T)NNAY8?:@8KRXI3-@U#,,XJ:&MC`W430EP?%0S9YI);$A&,"@T5CBW)H2
M_!`\4MWP/OVI;2,,K]:&Q=CPV=S5!D7G/[U69R&'TH7EYI67QMCG?&<-2Y).
MO=FD%\9P>*!Y5!;[4$R9\H^(]`D5FO+>&1L]6U:=H'PPY8MJD4T8]J\5]`N[
MB/8MJ\:1G&2Q%9=QK-M^)]4RB01]D+=Z]N4G+Q/EN,,<K14UHW6F6H2U*2P*
MO4OZ:Q+(Z3JBW*M',MV6RFSM6A?W5OJ%NZP^LDJ\LOANJO,)=W&BWCR6L4;"
M3]5%5T)QCED6IK>1G:*.&3?\JTEU6!?SHV5_T_-3]+^*(XGDGU:!B[+T^@OS
M5/\`]26A>4&U261PRYE7J5OU5I<CCDL6/)Q3$1QR;6D:%HT9O<U#<F%NF3:U
M+U#4);M6CG98XE;I"5GI8,(UDCNBR[MO4U'(WR0DI5$W(+%YH/52!V3]6WIJ
MAK6ENWIL]L!(/Z:TOAZ_FTV;T[J9F@?N&]M>JLI[/6+::^=%,$?"%*'*49%Y
M,5JN1\SEL)Y&9<^VLRXA=96>OIFN:/'#&)+97=CNX7Y:\;K=E)%)ZICVQM^J
MFGR.6"EBE9YUHNNKND7/IMZ3/PS4%U%\FRJ;;U;9\U8Y8\3TH2E*1ZJSOY()
M/2F_YJ]+87\<FWJW5Y*Q*W46)$ZJM+;7%M)ZUM)N_I:IC.2-)8HL]M#<979T
MX-6`6)X6O'V>K,'99U:-E;YJ
]'9WL;@;9/=7;#(<63'&!I6TNQ0/!-6)9$"%
MQTU11F<;^G8*:LBN=WN^U:IT<\TF]%76]'%W<&_MOK5G1%U&"1[:[])[7.!M
MJW!.P8P\@X_BG1=))+<4ZMFGN<51JRZFMO:BVLT&2G2?`KSFG7.HSW4\8N']
M6&4%CGO\U:$4J'(*C^*1('M;\:A9)O.S$R'L15,PCCY]GN]$U*ZNK./\0L4\
MF,.%Y?(XJG\77Z_@%CGTRXC@MI?4_,3!_BLW3WM;R&WGMKF2SDW]>#@_S5C6
M;[5=1N8K"V0W<+)^;(W.!1RIDSQRR3I:-&RN5TX+>6UX0LO>.4\'[`5L:+KF
MH7NHR1ZC86IB4'G;Q@UA0V1_`A9[.25XAP<9Y%.AU25H@TD8MX\;<$8;/WII
MV7)*#HT9M5U9+]8+'185LPQVL(^XS5S7GM9G-B+7\/.HW%D&`*S9_B*&QL4=
MO5+CL!V`JS;:Q^/87"6DDXG]Q49(\5;:,I.0RRGN%@M[6&4W-VV4#$Y"_P#>
M*K-JETNJ[8ES);RA3]/O6AJ]R]I\/R7&AV(-V658UV\CD9/^&:\U=M#:WLVZ
M<Q&Z(<`GG/TI-&:R)RH]C.]G/<BXG+"X!!`7_K3%>RNM=U#47@7,:8!Q[F`K
MST5_:H_JO)N=HL?L:;8:A$(=L3APQY^]*D7R;8W2K&>74SJ4P2*21BVWL.<X
M%7].BFO'>&\].1R#G/:DV^HQS2PQ3=!?(C([9`.,TN'44MYG]>)XI%.-P&%/
M'_S2:1LLDF5(]3N+?6+BUMY76%25`!XR"1Q6II>O732H'EE*1MSN/>JXELXB
M]SZ2DD9!(\TJ2070CEBB6-9FP,#`)HXWLERBM?9MZA(EY,?2RC,O5M['-9NH
MZ+'J]M`91#$T669NP('UJK#$U]?-8B6XM[L9"\X!(JIIFHZEI?Q#<V-P%N(G
M`5$;GC&*;@OP5BRY8R#E^&M+N-\P<;%'Y;I\QQXK6CDL(].47EM";?/I[L<\
M5;_`+^/MYH5/X6%.85_5SXJIJ^G7HLX(C:MZ*@NXQSNJ?;C^#:?J)WV*O8?A
MX6R7,=C&)'&(\IP3_P#BL[\);1(+N:R]7/NC1<[>:L2QFWME]:)BBMN52.15
M/3K^8*U[&6W3D'T9.P_BCVX_@SCERW?(+4='T"=6FND6W)'2J<$?]BK&CZ/H
MVEHM[##%*.>&&33M5%J8%_%Q%YI$W$*.Q/:GVMG%/9ED]1,@A0>V>U+VXWI%
M/-/[8Z#XDU$A+;3]-*H>K;&G-4-3USXLN+G;:Z/=`'AC(GC[47PX=1M;NY_$
MR*DGIMZ3*>,BG6>M:L;6W@>24R/+RQ/89JG%F#<^5R=F:[7ZRE[O3IY95(.V
M2/(^O%3-K\QDQ)\.QNA(4!H>P->EN]9EL&D
>95N)F'"]RH^]!;?$%AZ+_BH(
M?7;&WCCZ5--&O)1^+9X/4K?X1OY?3U+X<$-U*<B2WAP/O7C=8^$(+>XQH=S<
MJN0-CMVK[/#J5I<E7FL;9(XR<,%[BJ<B:18!;MK5[AW8GI&0*B6-2[+QY7C=
MMMGR/_8GQ-:.'NH0(CR..K%3'-J,:==C/GM[*^NADU1/60AE/M4]Q]J*22TM
MIU$EG$\JG`3;YK*7I,;.Y_U"CY0+IXE_/1X3GL_!IT5RO'.&KW6O:-9ZS/+=
MNL4)7DJ.,'/:L34O[.KB.`2V&J02,03M9^>U<V3T-='7C]?%F(MP=YP3FGB=
M3Y\U1O=)U?3I7%PJRA3C*]JI)=%.J52A^AK@R>GG%[1W1SPGTST"39)SC%,2
M<9_:L2.[W`\\TX3Y.[=631LV;+2@GZ&C68>ISVK'2YZSD\BFQ3%NHG@BI;"4
MMTS5,B[F*]\DT0?G/T-9@GP3D^::)CSSG%*BJ-%F5AP12@ZX8Y.1599U92OD
MU+2@$X[T,6FZ+B2;N#4[WY^E4EER3]*F2XR#4M#>BXSX!YYH6D)Q582XYJ/5
MZ._:@4JO18,A89Q7&0GGS5<R[20*@S9:@;C6RRTN$..]+DDR-U(:2E/-A20W
MWHDAK9;,O6,]C0/+]*IF;COVH))USWJ:*:HM22DDTF20<9:J<]RN#U53N;Y-
MN[>M$D.!I2W')4=C59[G[_O6/<:FO.SJ\54>]G=SL1L=5-1"459YR/4;^X?=
M)<NY;ZM4NZJWM9F9OEJI"UE`&W3==;GPM:QZBC7C.`BKN7/S5[W+B?'8\'/L
ML?"L5RVJ*X@/I#G\Q>/;6Q\36-M?6SM);VT31]*^DN`6^6K%M);I:EP_4O&!
M7/<2G327MP1MW^WFL>7*5G7)N$>*/(7?PE)^%_%K,-XW;46O+W]O+:W+V]Q&
MPE'N->_M=:CU"&41,(KF+_PG\K]J\_\`%44MY<,\D>V8-Q6B^5,Y\C<URQH\
MVW'S5Q=\^]DJP+"1F;II,]M)'UMUTU$SRW*7&(V>>27<K]2K6M\):K+I]YZ&
M[_=GZ2C5D10LR-M5MU,6VN=K2-M_I:JD:0^9]/:>*:22X651&.-A;FLW6-+C
MN=/"@JT@6O&6=SJ=D"R2>NK>[U*UX?B.)I8XWW1CI61FK#C*)M)1,VW^'M6E
M!DG,!1F88Q5;XCTD6,,8`5NK;N6OH+2V122:UG$UHGM96KQGQA<B34;*TBD5
MT)W-MJI>9$\GL*C/GM+FVV20JVW:K5K:9+#,^UVV-)YK8C2-K=&,:^Q>EO[M
M9(M%AO'7;PW4M:+%4;1<O4IRIEAM/:9RK1[G7_U56V36K[DW*J_+6G"MW&Z-
M`VXI^JKL+Q2@?BX-C?/N6M."8N7*6S-M=3*#TYFZMO:M>T
O(I5$B,N6^6J5]
MI\+O'+'&K1GR/TT%U\,;8Q=:;=S`>[:6^:JJ2,9\?XFO^+(<$KS5Q)\G.[^*
M\LIU:UGEWJLL7]/+5<CU"42HLUI/$&7=U+BMO^F,\4D>B0H7X95)I_K+&^Q/
M-8MO=03H-DZ;^?FJQ'*P[MNQYIVF2^4=$WFG7=U?HRS_`(<'])Q6_H^H:AI2
MX4PME"#^U9<MUZH51U;*`SC&#FFXJ3L<<DH](UY?B?79=0_"PK#'&3PWBM.W
MUAVM,7]O#(8B2Q`[UYOUXA`NT9)/>F0S+)#*F_`.2OW%"0Y*35_8KXB^*K![
MR.QLXFDN7X*^%KWFD:B-'LH],MT_-DC)F<_*,GM7Q.[)L]=DN/3Z@2RM_P`U
M?:;!+?6M$>XC.V]$1&T=SW[54VN2,\<'Q<I,'3=?M-3>ZMM-U&&.[MW(*2/C
M.*H:[HFM:D#-'&KR?^"RC(^E>+GT:!=1?T=UO>LYWE.&S7H=);5H+5[>+4[T
MR1_*6\U5J+.>2D]0B64TR]^&OAJ^_&RI>ZM<Q'TD!RL>3Y_BO'?V6Z^]MJ`M
M=7>4H.SO_P"6O26XUFYUM;:997@)(>63OCGS6YK_`,#7%O=NME8QS01("&1,
ML>,T2::XE0QNU*?T7;;6/A>ZFBM6U%!=%BT2!^KM5X:A;_AG-R@<CPW;[5\[
M?X>M5U-I[>U=+J+`,A7J!KSVA?$>J6FJW&E7]M>7:ROL1U7)`;YJ&J*ESK1]
M?BNXS;7$K1^H2<QHOC)[4VPEDO/]D6Y3TO0O$=\<9&>0:RU"Z5I<6H&*?,D8
M*JX[_P#>:PKSXVU*&_28:8\5O'("S;<<4[OHPW"5R/?ZW*X^*;F\M=JB&7,8
M_CFK$\EE-?\`^V8K4RS,.RC@&O,?!GQC\.:_K;Q0I<_CD0L4D&%8\UZ31[RQ
MNT-I&QM7=3T-P12M&T9<_P`EX:E?LKMZEC:B10?S.&S]J??07UTT>-2B&%W.
M`_>LV^CFFM0HAMKLQ8VNHR3^]>,B^*=7?6Y]+U;0[NW24;(+B*/"@8QR?YHE
M^BGDC%4]L](U[-BZ5BDY1B`>X&*P8H]2;5;4Q*OX=,M)^]7+J*\L?AV2/3U$
MT\A]QY[G-1(UU8I!="6/.\>HC']A2-8MC6NYFN6DG3)8'OV%7;;5;BS],O$'
MB;/&/O63\0ZA!8+)=.#*B9_+C\UC3:YJ^H)8ZC9V9BTZ9\'>.KO@_P"E+[)<
ME>T>RN;B:XC)4+&W?![TJ,NRG#$,&[U2TS4;N\NVMH[0E8P2TS#C]LU;M?Q0
M66:YLY]F2>E>*J[)E-15%FPL1<37;I.\TR=1YSY[5H7NFZ+%8"<$F>7*+N[*
MU>5T'XBL8/C^?3H3+#.UMN:.;@$AC6W>0+<V]U8(TH]8[T8]U(H9+E]Q(
T#1
M)"LC7=QNC1]IYXVUG0K;0:RVF->R9<XCW/Q@UZ?3.FWDL!RUO`JY/SD=R?YK
M+MY]#G5;P63_`(\`\2)[32=&G;VA;:9=V)9[9R64@#'8CZT]=2$,JRO;QR7#
M@@$C//:HM9+PS'U$E_#8W!SV^PJ;O5K6T]#U[(.`3U(O8^:5H;DXLP$U<-<W
M-HPB-P)B9$%:-G`9'(83QJ!G>/:!2G.BZA\2JEK:-#<K$7=@N-Y.>]7+J/7[
M)YECA6:V$76@&6P!GB@F7E^C(^)(KJUAN+M4>>W!)XYK)M[2VU.S$S6T98G`
M"CDY->DM]6L+[2S;L9;-9.@_B>!FJEE8OI.H1.$+6P5E#+VSX-3*FS7%.45=
MT>:U7X77\7*UN[QJ%)0-QY-8LNE:L)%BM8FFDD(`5!DU[:[&H?[1,C@20%CM
M/\FM73$G@O&EM8QZI7"M],_2N>?I\<NT=L/6Y$?,KRUU:PGD2>TE+)PS`=B,
MTB.^5U&&Q^]?9;9&A,\6HVZ3"Z/46&2,_2L?XB^&-+U;5H1:VT=J@7&U1@<#
MFN:?H(_1UX_ZDOY=GSPW2'/--CN,'O7JK+^S>QO["66WOW$D1*LI?G([UDZY
M_9Y\1Z4@D@D2YC"[@`,DC%<<O1S1W8_78I?902YP>.]&9SZAZJPKY[JPE5+N
M%XY6\$4H:HNT,W26^M83PR1O"<);1Z(S=1(;GOBB>X`'[5YX:G&`7WKM_54O
MJ:'A75@:QE$TLWA.V*YKG![\5A/J:G*T*Z@?:$[4G$;-XW65XJ#<KWW<5Y];
MR<@X7[YH7:\=ACI%5Q!NS<>[&WOS5:;4(D#99<>:S!;74BJTDC*5^E-337<G
M.YMU-I#4T_H;)J7?'5^U5Y-0FD;H7;5V+3D3/3Q5F&P7Z4E0ISHQ#^.EV9;;
MN]U&FGRNQ5V:MX6J\MMIR0+CV\TFH\A7LP18*C;MOS58%FH4]/\`%:X@SGIH
MQ"/YIM,/TCQ+R?"M@LC/^%N69N%7J:LO4OB+2`AM],MYX8_;P*\F%3W^DF[]
M2TT+E>EJ]A+_`&/DY\^-0-.UUW4K2!X8/1E!^:0]5#>W^L7<FX3742__`+;=
M+5G6L>^<+\N[W5[HFU30(+1'BDDQG>O>E_(TA4\?&1XNVDFL[A7;<[K[F^:O
M;6(M==TI9H3Z=X%ZU?PVZO,7=BEQ*S;MLGNJ(I]2TTNUF(CN]S&JR1E*16+C
M&/'^)HRQ>B?3FV[_`.FD>E&_N7I6LJ[O'E=I)V9';]568?6G*-ZRM&WMVU7(
MRC@Y2\#01(U#*R_W:4Z;XF5/EIEM&R[8WW87YFJU;:?)>)*T5S#%Z8WX<]1_
M:KE+0YQE&6S+N-J1MZG]VHN+.*2W_P"%NZ:L7=N)HS"S<U6F_&11^G&R[:D7
M?3,]A
<6P:..YFAB;J]-6Z6JK8%IOB&(L^X!JU[J\RB0RVQ95]S;:RM#=1\2)
M&/\`AI)\U$^)%+)-1D>]:+U8@H9EH+B+=*C_`*?=3XRQ(5=HH;EU8E=O)YZ:
MUC\2ING5!VW!.SO6I;&*Y!2=%;=S64CK[NU68IE24;.U4;/+71<;2`R$P3NF
M6[;N`*E;/5;./;&R31$C@<M2H[A\E=YZLUHP79VR*'P<<?O32,9S9D7D5Y(9
M'2WD1B<]NFF:;J8*1?[0MQ(&QTNO5BMF*[<.OJ,'4\TB\2VDN/5V)L7H7'UK
M1JV1CEPE;,34OP2SL;>)4^RTNP_!W<TT1GG1L;!U>:V88;%)"TRKO+4NWT_3
MYC'(KK&V0#]>YS3:#+4Y;$31W5G.&WH\6T<BEPZM%-<".2(*[-C=MZ:U[+2_
M6A:W#N^<_P`55?X2DWD12,W?M^U3;+C%/Q.:8(0ZPNT0;!V#Q2XM4L!=,H?"
MIQL/NJS;Z7J4<'Y<R(<A7$AX.:I:SI(_-C+VQN%+IOC\X7N::LRG%0>Y&7\2
M7%K).'BD0MN\5ZGX%UF2UD@E63LV2-U>&70;UP\HA=U"Y8A:]5H_P]J"P)+%
M)&NQLX/>H=MFT(Q<;?1J?VO6\UJD/QSH]PH4[%N(2W2Q\$#]VJ_\$_&6BWLE
MU./0&HN,E']N:L7=A:ZI\,QZ%K`9(I-H1HNP*8;G[=->*^(/[&-5TY6OOAW5
MT8C'N;+97O6C3DC",'">GXGVVSU)+W3%D2VM"91MD:,<J>*._O\`4!!'<:=.
M8YXER8Y3A6`KX_\`V4:UJ^A:N^@_$Z20*['T9I.%8C_\5]EU=HX[>3,)99.`
MZ#M553IF4I.3Y/H&PCAGF;4/1A%S(H]:-ATYQXJA>6<.G7<-[%I=HSNP]0^G
M]*T;031PP3)$K](#`#D\?ZUH&XMKF-]-DC(RO1,!R#]S^]4XT$LS^CRWQ##>
M:AJ]M=2`"Q:/**OM7[5YS5?AV\U&[EM8YMELR\DGMQ7J]0N_]GSMI-Y'+E0/
M3E'L)S_\5H_A8&M_Q<&]E(ZL?7Z4G12E>VCY.G]FMQIUQ'=Z5K?IW'J#.).1
MWKZ1I44BQI+=0Q//#E3(@]PSYIIM+&2U%R(IHY.6.!WJO:QRVI>.)W*9[,:5
M(VEF>3546;\7UO;>G8Q-"9"""!@5?M_Q4FS=%',K+C+C)'[5FMK][;2%9(HW
MB0;>H5QU26>,K'FW#<CP1QXJGLYFGCZ[*C3RVGQ(\,\4JVSC!3'"D9KT,$]M
M*\D-Q96SQ<=6WG'VK%O=1_&0K):^DUW$=K>K\W[U4T[XSLYIVM+JT*-&_I;D
M'<U+VRMQ5_9Z'5=+TJXL6NH+<E5;#H1SCZBLB%=/ETQ;1(+@)%U1ICMDYK7B
MG7T3+;/EG7A6/%!;
R6Z3DSQL$X3<OW-/BK)<FT3IEJZ1*\4.V!CM`QRWW-*U
M5KQ]4@DB%Q'(Y&VW/"G`Y.*O6MC/%.BW-U)'ZI/I]72!X_FK%JD<[/$TDC:I
M8$N`QY*]Q5.D1+DT>4O/AVQU:XEUIH'AU.V=A+M&'`SXK:NM.6UMK:ZT^X:>
MVE)#NYRRFML2"2*/58(`K/E;J/'?GG(H$M+6TEEV/_\`IES@X/9&[<?S4RHT
MC-UL\U=6EZ;E9+:ZV2\\$^ZM32;>>Y22"2&U6X`RK8Y;BK:6R)<7-G*NXL2U
MO*OT/;FDWL7Y3S64X2]MR-R9[C_L5+I&JRV_$I:C-?6"1QLT#HF5>(?J'T%4
M[RTF.I6<3)^7-&\@^GBB^+'G>ZM+VQL+FX>4X81+D9QR:*U]0:];V\\^^6&)
ME5<]BV"0:&*2;=LK6^F^G(]R6,5Y&[(,=F`K<DEGV+<B\M@SJ=PW<\Y%>FL[
M.U-LN^T]1P,AMN3G%.CTS3U&1IRGC`#)0J&FKV?/M3T72;VQD1YT,P.=N>QK
M$M]*^*-/E0VJM?V6"RF0;AC&:^PKI]D&=ETN'<W<E//:AN;RPLH%CN)X+>,#
M"H#C(I2HVN#^K9\A36H+B8VDD7I7,1ZTQCFME[\1JC+!@^"@K0U[1[/7M4-O
MI^ES6LA)S=^GA6[\YKR&IZ-\1_!^I(\MP+_3Y>,D[BF#YK.3:+6'W%XNCTND
MW,NHZ_%;7A00-GTV'?[4<]T;76%22$NJ$C"CG'UK%T?5H=3O0]FFV>U?NO8X
M_P#S5GXK^)K?2-0BU.");CU!L9`,D<`$TG-+9SR@UX_9ZJRN-%NK:Y:P38WJ
M;9@O<-YS5AK3UX?3:\*;1M&6YQ7E?AOXF^'Y8Y9(?3@:X8NX/&2:WKFZT^50
M([N+U/=[JER4AJ+AV96KZ%IZ!I9;:&Z9?:TBY/%>3UF'X?M;1KF]TR&*0>U-
MF,_6O1:W\7:-H\/69;JZ'`5.4R#YKYGK=[>:]?&YNUV+XC'85ADRQ@=>#GD=
M='G=>V:CJ4WI6T<%JK'8L8QQFHM[!5QT<+6U':HOR\U:CAQC`X/?->7DR\I'
MMXH3C';,1-/4GE<8JVEDF/9WK76#DY`IBV^3],5DS=-&6+%?:%7&:<EJF.16
MD+?H*_6F);@#)[TN1:KLSEMAQ@=C3A#@]A]*NA`#VHPB`GBE-B[932WZJ8D>
M#@+5TKSPO>EJI[D<_2AH:3$"`8.:GT,YSVJQ&A(S3MO?Z$U,EL.BEZ8SMHO2
M&3Q5@1Y<T0CQDFBPL^#1Z:J.T;-N:JUU%$MSZ4B[5W;:<VK9?\N`_P!YJIW4
MTD\QF?;N#;J]V1\NLCCY1/31?#-C'#'<K/.R.K;N?FJ[;:*\ND2:A;W$*;#T
MQN>3TUYNPOYLF.6XEQ\J;NFMR+6
+B*Q_"I%`T9]SXZJ-Q,WD7/<2LT3;MQI1
M2/?U;E']5')/N;<N[;4H(RZM-(K)[JUZ,)2\K*<L5IZ^Z7:VUO;6[!J^BPZ=
M#+^&MP=N[8B]2U8U2;1K/2@T#V$D[KN"_.&KP]U^?>LUM;,S,S;5C6L'Y;.Z
M$N,3W-MJ&BZLAD.RTCC;@/TLX^E:T&GP0::LYB0B7V-YVYKYVFB:O*BO^$>-
M-R[6D%>O^#);^&XEL+Z42+;H2@F;C^*S<K'%<GOLR]7B#79DB;:*IPOU;2M>
MNO=+CN)/5D4(7\)VJ=.M+>PFN)&MXYHY.QD'L/VK9RN)#A&$MGD6A=H_4:VE
M5-S+N9:\M92)#\0,?I)7N]7^(Y8=62!(+?T$^5AQ7A=4N8)=>EF@5%1FW&DS
MFFN612B>^MRS*LGBF.C;RRU2TR7U;9"K=.W=5]-^_P!O%:8C:<MD*&V[C1K_
M`,-&\KQ1`\]N*?"D<B!F;C=715&.1MG08W%6[[>FBP[`L."M<D<6]\LV5]E:
M)BA$.[.6X[?O3H;WT58$E+$#/%6X8F=#[<8S4V[LT<?J(8PR[R?YJQ"C!`Y7
M:H&1_C3:)<KZ,C4K2^9'E5>.W\U@Q67Q"D@V`L[-G_\`K7T*[V-&).<_F':/
MVI$4<T-Q%G:7_*(_PJFDQ.3Y4S&TC4]8TP%9K?>[\<#_`!K7M_C)8.\"I(5)
MVN*O64$:VL,[%'D9YU<']>*SI]&LI[*)YUQ<?A0`W^M+@GT7)Q3T6]/^)M-F
MDB35856(X=C&/Y%,UGX!T[7$FU3X+^(`M[N+R0339!;RI6L#5?AADCDDM9@?
M3,8*9\'M7F[A-6TC59)+6[N+6;U5]0(<"I\ET0\$9.ZV?1?A2QUZQ6.QU:VA
MBB12D\D@QN8?2O175[9:?:2BUM?58`AN,GL>17C?@OX]W(^G_%#"=68KZIY(
M/[U[G4[*`Q-<64RRPGVE3GCD<T1DFQY'*,:9&C7-K<E%,2RJ4SC&2,BG2WLE
MO,R0)NC/@^*S(WLK$Q0V\\<=Y(G*D]J9:?B#<NC2Q-&.-RFM]]&,7??17UG3
M;769!%?)CGIE'O0_:G6,^L:+<Q:=<B>[LG7\J5N>WU-0_P"-:[AMP!("[;W3
ML,9_]J]).[V^GI))'ZT8;(4\G'FI8YI1E;)M-8=HUMXO1VGRO<$5*WDGJF+T
MF`[[\4B/3]/N9)+_`$Z9((Y.X8XP35QTLCIDUPDLLKY],!#GJI62ZNZ#GO[:
M:$>K`L[QGNPS0Z9<-:F::PEBE@9LF*4YP/L/\:R;2"Z>214!A8]_4X^IIYL[
M6TE>)9F:?'93QFAHI-UIZ/31-HU];A9GDMI"2/HOWQ5.Z^')I(I&TO4K:61Q
MA-[^:PI(IKFV,3Y!`[CZU1@2^MK*&SN)YHF5O^
,AQSGZTFF.$XK[V;=M\$?$
MEU!)%JES:+-S@Q'C'BF:C\)ZR(HHEO+$2``#)Y/_`&*RK>QN4GBO9OB>]$:R
M<(T_?OQ6?KD6ISZVDUM>W_HQN9%);W*.*+8Y3FG;BC<L?A<V$]SJNLR,EO;@
M$A.SG_LU2U"?2]4CBGL+*&*T.94D"89OWJ]\):NE_P##9MKVZ-T7FEAGC<Y9
M<=JSH]-6QLGT]<B"`E8ROD9)I)VPFWQLC07N#I=V5R2DWY9/TS7L]*MK=X8X
M;V,@7*'!Q[2.W^=>=M(I8;8)'%M@)')'S5Z1;9M[V<]R02I$3@^>XQ5-T0G:
MT'.D<LJZ1=RA9UZH'SR1G@4B*YDFMI-2CM]FIP+B=<<N!G_H*HZEK>GV^G-'
M?211:G8H"LC?-X[UY_4_[3](34$;2X9)IY$VSX7*CC%1/)&/8E&37BK/7.W3
M!K,,A%C.H2>+/M/[5F7NJZ+IOXW3I[WU('S+;[GR0Q&<?XU\WUCXAU_4["[B
MAD6VM'E+*J'![^*Q[.RGN+R-KF=YO3'3ZAR:YI^JBGH[8>AR9-OH]Q/_`&A2
MR/!;6UI(WX9O39P/=]Z8O]H7X*:>X;2Q+-)P3Z><UBZ99QPAW(Y;A!0WEKF[
M$1(^N:Y7ZJ=G9'^GPZ/9:/\`VMP1W<>G'1)C*YRK)#T@4>H_$OP[JVM65S96
M=Q:W+-NE;9@`@@'->4L(H[8LR8,F._TI@>+TRY&%!Y/DTGZN8/\`IR;^3/IT
M>I:3>7J:/IVKR"Z:/WB3HR?'^5->XLVN;EX=;E"6^&E5Y.>%\?X5\K40))ZE
MHZPR]]Z<$&AD<AGF61L-Q*?U#[U7]VRO[%(^C:A<VB6AUF]^(Y8[!\>GZ4W)
M/<_Y&NGU'X0L3#9:A<MJ#R$OZI.X(.3W_:OE&H7$/X,V,IWVXZA$>P-8^JW%
M]+&D-JJ`.-KO]J/[I_Q0_P"S4N]'U_4O[6=#M#)96=M.8HCL$NWI(%9T7]J/
MPQ/;W%M<:=>W#+R-T8(;.>U?*K;2IC:B.>3<#[A6K';PQJ%1!@=C2?JIF/\`
M8U_)EO4]2>ZU&6?3(AI\#L2%CZ6Y)-4"YV8ED:0C)RU%)G=QVI+1$Y![=JPR
M9I2>SLAZ==O96F`*LD:[/TD4<379)474V3GG-6?0Z]V*?';XR`*R]R2Z-'Z>
M$W;156%V8.YWGODU92%<$GO5N.`9VXI_H`'@`FHG)LW]N,'2*2P\\I1HG5C%
M7"N!DC%&D0QQW-9,V2*OI$OM`XIR0X<U8"``4T1,"*&"?TRNL>._>B5!N&>U
M/*$YQW!HPF`?K2"]E<J!D``FAV^2*MF)>_DU#1C/':D_V:70E$Y-<T8QGZTU
M58/_`#1[">_\5(6[$"/OQQS1&/(^U.'`/34D<G[58I-B0J!B<
?M4,/`I[QYK
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
MM8K2.[G@
@1=JI&>FH_",S,Z.OI_U4$T3*VZ/VM^FAQ!I2A16+7#*K-(S-O\`
M=\U9^J,_JC<]:3)M9=W36=J?6WK'V-529BO3<5Q/0?#$F;<UZR.7\GJKQWPO
M)E75?<*]A#M>;<WL5O;48SNG+1=@4YX7<*OP[<#/O_Z56A*H"V[!HA&=XDW=
MZZD8N?U1:GD4,>EOZ:?:J]Q)N=@B')7-)]-GZ"<D\TU'9^J-?&"/YJ_^$_#L
MO/'`T"1Q2`RD(,_O16)R88V<`AT'_2JT`1+/>BX9<`?XXI]K"YCDQCU7'1G]
MZ=_03[&1P%K4*QX7*IGOE'KL0P3237$>8#(ZX_OI1R\W0!D011/)_I4R%+R.
M&-U9%,L1)/@<U5F;I;9Y75OBZUM[>6VBAPS(B_ML?_XKTWP[\0Z?K4[J`1(L
MHEYK)N_A.PO;HDH5D2>12#].2*P)/AS5+91>:9.80MJTK#.-QS2G;=HM1A-=
M[/HU_IT-Y=*R."JR.1M^IKQVI?".JQ7L26,D30]7N]PHK)?B734EO)9U;TUC
M8H3WWU:?XU9M26U:W:.17VRX7VEJ+;[0U>'K9[+X'M)AH7^S[B5&N;7(P#XK
MUN@Z/(^H175S*Z6L!"A0>9"?]:\II<R6]Y%<1G\RX0%_Y%>TN-7;\#MMPNX#
M"Y\'GFDE](C,WD?)FOJ4^FQ63VRI'NSDH.^?ZOO7EFBGN=5@MK8%D''\UF6B
MRV\MR9+B2229V<LY^OC]JU],EDM]35[4^I(3T_OBK2KLR;GV@/PMO%\6WF'W
MO;Q`3L>Q?/(K1O=1N(Y3J5O-$L*XW1`_]*H0Z=;+^/AO9WBO)9O4E8G!Y.:H
MWMK)J3VUK8YCM",22GYL<C!IU9)>76+C6!,)5].TC/\`S_\`9I5\@O+N.Y7/
MHH,JA[5%Y$+>%8XBBVPZ=OS<"IL45TMDN)&2)V`)!YQNI"E&D`QA$INIG#*!
MD+'XYYK0A-@]G+=SSSVT4F2"#CM]:5<Z5<O.X@1(+-F:,,W#!<]Z<EL\L2W,
MBQ/I(RKH>X':F]%\EDV-M1.)8KZ5_P`5I(&2YY(_[S6E>SVMI"]G?NOX"0EH
MICX./!KSFH:W;Z=.+?1RLUB5*M$W*CGZ5XW7I=1U-8;=[N001=QGCM7+E]1&
M!TXO3SGT>D^)?C2U"'3K2$-+!)T7,8\`_6O):J;_`%!S?SW<X=R`L>>XQCFF
M6-EZ(]0QY7N`?-.W/(K$H`03VKS<GJY3/3A_3XQ=R9GQ6Y@/H1+R>>*N:?9[
M;=[@IP'INEF`">XF?MQDU;GO`Z-'''A">0!7*\GY.]8JTC)DPLS)X'(%;6FV
MWX:'U67JD\5D&+?(3G#Y\^*OV]U-+,$<](I.17%](1)MAN'!7`[C_P!JJ33-
MZJAL8#U8OX9I6:3/2#2
A:R32=0VX.:G_`*7'6BWJ%S*RJD:=`K/MK12)';);
ML!6O=P[4;+KN!\=J4B];[!D#-6B9IHSW_*5[=4(P,<_6@>WDFW?(,5=C4M.S
MGGG/-.E0DX4<>:JR3,CLHHAD9)[T]X$VER!]:MQQ9.UOU4R2'&X>*'(:CLIV
MT3.S#'&:LO&J<9[T<86-3GN>34O$9%RQP!S46:I`E3S4E1D_:FJHVU#+@D#S
MQ4\P2_(H<D8^M,5>JF>G]%YHXUZ2?K2;*K8`7I(J3'S]J:$)>B`XQBABK=`;
M!D@BI4!FW>#364EL_P`U(3;QC@4A;`53_A1+G!^E$JG)IB+ABI[4FPE&F"%Y
M&*['4*:B8/WKE7@F@?1`7<23^]=LP2/%,0;3@UTF=Y`[5!6VQ1!VDCO4!7#9
M/;FFLO20.^*8HX):@?0,:X_:BVG)J>#3`..?%5^B7V*VD8)H67_$T]N<\=Z@
MJ.:5%W0HKACYP:DY[^*,+Q@?M18RO'WI$RVQ#*,'%1LY!\T_9@Y\43#!_:J!
ML_)FW<VYO;_30*.OI?\`YJM/%)N7;'(R_P!-:5E;1^FJO&N[^JO<XGR_J?\`
M++R,^WA:4?U-^FG2:9=L66-UW?\`[E:C);PQLS;56@FU.WC5_2CDF;;XIQ@5
M++!=(R;FSNUEPL?J.WRQU"Z;<]+,456_55Z.]O9'9H(O3:BMK>[E*M=2JP_I
MHE$REDEDEX@+8)ZBLS-M7]-/:U7;N6-6;Y=M6@(XV;JZ57YJD[O3]1%;I]NV
MGP)Y\I>1AW5J\,*JN[J]VZJ3*GN;=7HKN%9X-DGO_IK#O8V@N&C^7^JDURD*
M#X>,2))6>)EW,O\`=HK65HRNY]T:]6VD*OJ2;-VVF30M%<;6I=E\8\N1?>XL
M%*2*K2.K-N5O;65K]XMWM$<,<,:_+&M6_2LXF_-;=_\`ZZR]2F20LT:[5JE)
M`E.,B]\,2;;AUKV]EVW;J^>Z+,R7FZO>Z8RLHW5CC^1V9%&79JQ!7D57W8-6
M_39E2(?XU45UW!?&ZM!&:1C%&W5MXKM1RO<A\:B*.3+[F^M=93VXN(T?H(<;
M\^3F@DQ$""P8M[JYXUVAPF7/?/[UHC.=MCKN=+=`Y[8&T?>K5C<)<K;29"-Q
M'_)-9^JJDUL.V#@D_M2?@VX0K$D@!9)$/7^]#=,7'5F[J`2&66U]/,J>HSG]
MZMW=NDMH]PN01/$B*/.!FBUST1JMPH0^H;;<<^12)KMTNWEB4;!.&2/[;*K_
M`(83WV`C2*XO)E.&>4X'D]J:MNQTUBQV2?@P`A\$F@N9V-LES(N&BMR2/&31
M7HN)Y9Y$'M@CCY^YI]A%<2S=V<CQW44K(XQ`F?.!7E/B?1;6TOYKF.0EGN5S
MGO[?->RNC&MY=1O)L!]+G[^*I?$%C;
:E9W44$B^O'>ID>>0<4VK5%MRB[,O0
M&O(+BWN'8RVY)7)\$"O87*WC,DUDQ/I@Y3P:\MHUY<:%%-;W]L;B#\4X`49*
M5[KX;UC1-4O0+&55?MM8_P"M9*X]E3<9(/29+.YC'X]&5P,%0.:.\UJQL;>:
MXTZ+?)&-ZMCZ<BK.I+$VHB%XUMY]N03P&7_L51U^RMH;2"6!=H:3\U!V`/\`
MTK?3.:4G^2W*A^(&T[X@O@UM,\6'A7@.<=R/YH-6N)(XI[73%C]:(A4"^Q6Q
M_P#-:%UUJ!'A4BMT"`?L*JS*FDBUU!@CVES*/5(\,>!G_"H-)?H2T<4.FB?4
MV:6\((V0\BBLDM[I5*+.P1@V/H>^*3>O:-J\MY=W*B)\M#'&>,^16;+?SW+"
M2S+6ZN1D+QGBLLF:,.V..&6343>U+XDM+:!C,LTLJ8!0<@\UF76N6-S+,&CO
M8;9TR8H^!V^E8]K:R];R,79I"Q+?3)J["F';(SN%>=E]:V]'IXOZ3<?-DR6F
MER(([4S1;LMF3BJLMHBS+;@@D\G'TJTP#3A,#@4Q$VS,[#J(P,UQ9,W/OL]/
M#Z;VE10O<1*L:C+#Q5(#T(6D?G.>*U98T:8R-W-+E@'IB,J":QL[>*JC+L[=
M9[,)MPK\G]ZNB'T[E@<83Q3X4]/"`>>U=.NX$KR3WH;!?@S77==.X'G-/6&,
MSJV<"K8AP%Z!DFI%JQD9R!L`IMCE)(5=)B,!<;>[YHC$0V\8`/%$Z[W^B@^:
M%Y,LP\CBFM&,G]HKRJ6E=3C:#BN"8)VY'[4[!`P>V:Y@?4)'[U7V-JW968"%
MC]#_`*U,8R>5(/TISH)&!8#!-<1EFQW/UJ'^A-<A1RTS;1V^M,V\#)Y%$0`0
M0/WKF!W&B1;1#*!G.-Q\42*&SGL*B,;\$BG[,S;OEJ1NQ>"Q"@<5.W))Q1D8
M(1?VJ67&4!X-#%)JP%4L>&[>:<BX&?`KE554_:B^GTH&J0+^<=Q4IV&!WHMN
MX\=\TY%';%*10!4@`G&:D*Q.X_6C"[BP8?M1*OU[TA4V0T8`)%<OU(IC#/`%
M0!S^U-L;3^R,9DHE7MQS7,#GCO1+G;M/>H%0)'(%%(O(^E%MX.:+!*\TV)6F
M*`R3Q3BHQD]J@+P31')(!H+8&S!)`[U)'('^--/)^U1M.3CN#0R>@,9;'G-<
M5.TTS:220.:D@<Y[4#Y:%'O@5PX/[T3`ACQ7,IP30Q=D,#SCM7$'))'FC7./
MO4,.K!'%,EN]'YPLXE_2RK12!=S^WBNMVN9;@1065RY;<,!:LG0M6EF,UP\%
MI%[I%DX:O?9\QQER,^9;?\(WJJS/N]ORU5TU`[L\<6U*N3P,C.JR+(*SY!-;
M+^4S+NHKD8O'+%.S6'HH`RLNUOU55N+NW)9MZK_2E
9,TES,^U5956K5FD<<?
M6JLM*;^C2,HN6SIKIVD_)ADGCHHCJ,J[1(L:?I^:K=I:WMPS"VM7C3]>WIID
M^D:K#(QD,.SMO^7=2DPQP2R<C*DNW@D]%FW;6W;JH:A=?B;CU,[:LW+>G,ZO
MZ;/N]RUF7.QI-^]=M*1L\<9$I)_S5TDLLC;FZJ*RV27:Q*ONIVN))8WOX3;M
M([4<2(0C_(JM%+LZNFD7B]/OHFDE9MN_II$Z^ZE(VG'C(ZS?;.M?0M)??"K+
M7S=>EZ]O\+R[H8XV;-9J7&14HR/5VJL9!GVCFM6.,;]R'&\$5D6$R"01N?M6
MF)?_`!?D7A:[4SG?%%J-8MH;;OX&33)W220K&O)/8>*K1PRQ1HL;9C/NS3[;
MTHBSK[C_`)UK_P`,I?IA1K#(O6./4QL/V-87PNLIUQX=N8UD`_SK1UV\.G67
MYF&EW[^CW<\UJ?V8Z5Z:W.N:F"MI&S28^9B.P_RI2_!./R=,U_C>6"#4P(^'
MCLPK9\DK7AK>\U>607$$1EV.GJJ![5VUN:W97&L:E/>22R)-)*[(O@)S@?X5
MYV&_U;09/Q6U)(9`NX?4?-3;:*7":\CW-E/;:A9E(@KNG$@/BMF]TV5;8RQR
MQ?G>`?IP*\M\$ZL;R66\&D3PJ['?F/I->N-J$CD>&=Y(0V_!/*\<BDF$WND;
M%CI?PUIFG_[0U&22[GN2"T><A<#BIO=*TC4X9+BWB>U]1@V5&.1VS7F[>>S@
M@,;7#&4OPLA_TK?TG4Q=:9+`@4;UYSW[^*:DR)QO[*6M?"%U9V*W4,@N87N/
M5D(Y/([&O&VWP_(DL4MJ+BUFEF=LIQ7U?0WG>);<3;E8G",>#5C5+:6Q>+%O
M$R%NY':K4A*"7?1\TT#XI=_6^'OBTK'<(66UO!\R#MS_`!_G7I;IB=(@N,_B
M58F&7;R/.#_@*K_%OPCH^O6)2=3'<;\Q/'[5\\TFP^'?BG3OA.+2[(I/<1NJ
MLS\[@"<G_.FX_:!QC)UT;UG+$;*S>4MLD@7J'G%)U)ECMWL)B'L[F$O$?HX[
M4RT2\M)]-TRYTZ<VY0$R;>%-=\30*+>Z,:,4M)2$QX&W-3/41PKG1@6]M$$(
MEZG7.,^"35J*-0`N`"!XJ8`""[<&CQAOO7S^:3<CZ+#!16D#&%$9'GM4E3^'
M"<#'G^:/:1O([$YJ0AVX<\FL&=55T+$>V8N,<BNVCEF?D>*<T>6+9P!4/$`6
MR.12[+3HJE-S"0'C%"\1:0X/)JZ%Z=BH`!Q7>DB'U,Y-#')E!(I%;G.?K1P0
MX8@>T#O5ME/`/TH0"6!Q@"DV33LK,DGJ\?Q3`-T9!;O]*>XY!X!I$KJBF-1R
M3WIV#7Y*\ZJSMMR*`HBHQQU'N:-E(FV;QGR:[(8,O@'!IV2XOM`!
"QYX`YJ9
MU"X'@TP$-GZT,Y5IL#V@4F-IB",*_P!?%"@_,!QQYI_0H)/)J.2['QYICJ@&
MR7(XQ0R(^[CFC;)=0!R:(*57J[D4F6T!$I``':G."K8!R<5$2[0?K1(.232"
MR%QSGO4X).?%20<$D<5.3D+XH;)239#@@<=Z:5Z@*YEXSWIFW+BD-JM`JN#Z
MG\4SZ?7S4$$@XH\8'-)[&]$A?VS4J!NPW:NC.&(/>I(+9QWJ1/LGC.[=Q4A>
M:E5X[<T7()JJ*;H@KAL5`'-$>34CAC]10^Q((#I`/;-05V_M3#C)^GBIP"N/
M.<4F#$`';R.>]'GJSBF#AB#4`#&!WIW0G3.&,GC@UP_ZU(8`XH\<Y/:@33[!
M`X[<FNV\_:F$<8(K@._TI,;;%$`G'TJ2,@_2B[8XYHU7CO5T0Y4P=HV$C%"5
M)'/UJRL8V$'O0[1DBD2?'()%55-BJB7'?Z'%5/B*VO[^W8R,GICVGYB:ZSN5
M@TE)YQZ0"YR>[YK+N]?:1&V.JA6^;VUZ\3PI/^/V*7X3O&TWU;C4+>)F9N%?
MY:R;K1KN,)#;W$5RI^C;FKKS68VW17=T"%9E;TFK/C^+5M4>'3[<'+>]UP:?
M+R!7'QDC:B^'[N1XUDN;>.&7R37+IV@Z9<2&\OFF";A[MRUX^^UK4;CI>4HN
M[IVM6?)-+(/S&=JIIR"<(1/H6H_%UE:6KP6H)BW=/ZJ\]JOQ7<7430HK+'EC
MCY=U>?V;O_-0R!]M17$SR16,F61F9GWTMMVZI>H*DN#FKD7F\?C$L64C0W(E
M_2U;/QHDC_A-1*],H",W]6ZL!=ZM_57M?AU8M>TIM$N2H('06^ORT\<N)G-1
M:H\4W:A=^NG7EK-97LUG=C%S$[(3]0K;:KLI&^M,F.M&;RUY"&7K=Z]%\+W"
MB?TF?IK$F&Y:=IC.MVNWW5A*)T8<G+Q/IML8G4-Y'-;%I!++_P`/K3;VKQUB
MUY&B,D;2+_36KINLZK;D.FDWNT?T?+6Z<B9N,7<CTMK++',J7*8!SD'P*N7L
M*KM,2]+C(/TI^@ZQHNMIZ.HI^%NP<`=F_FM"[TZXLVV$>K#P`PY%;QV89$>`
MUTM+K2-.S>AM';_EKW4.I+<Z+'8VP"1A?:GD_6O.?&5BR:5)>:?$T\F<&)>6
M)S5SX+MY%03SL<*H&/N31)45&CKA[RXEF2TG6.[C(#(YYX&*3INE_B#'::KO
M4'M_[5ZZ6PMK:;\?)"GK3#=OQ61!JVGMK"1R21R@$%2.>:<M#2@UM&Y;&33"
MENB`V^S&X=AQ5R)T96A62+=*"-RGCSWI<;B6*1<#TP2,?;Q_E4PVEN621F$2
M.?;VQ327T0YZV8^I0WBQ_FVL#3+VE`X'\UI6UQ'#`T\(QD9X^GD5K:A#*D)M
M
HXUN(64%BO.*R9ECCE:)``,<*?VJ^-F3G]&[\,SPNR^O.T<Y;=%SVKT.L78>
MU6V,JRW)8'*G(Q]J\')+%'"KN0K`X#4W0]0E?46MY^+B(\'PV.V*AJF4XINC
MT5O(0DD+KT$EE)^]5[C4=4M8DABE82ALQ$'W#.#2YM0$3`X&$SN!\?6AU0M%
M$DF>LC="6["JNS/C79KV'Q/JT*@:G:+M+XCWKSBK<>O_``_K+WNGL%AD;(9E
MX!)'?_.O(S7MY<N1=ODKC:1V%4K6VBANF>-._.:XO49UCTCT,/IYS>](T)XP
MMS/$A)4.P!^V37!AV^:FY!^F30L@."!W/>O'G+D[/:QQXJAH`*;B?-<J[G9A
MSYJ5&U=YYHL%5RO`K)VC=M2T,"J$X&6/%!<*Q.X#`)HHG)Y':N=F88!X':G8
MDJ%9V9XJ)0?3_J\4QL`%1WH!R"3]<4FB[L#82!(7[T)!#'JSQVIKC;D?Q0J"
M7(':J!BV+F0E@-V.!5-LD`#DYYI\TKF1F!P`,4EN`<=Z&$=LKD]8!Y8GQ]*)
M?(`Y)HHTPV2O(JQ;H`VUAU<T=E:*ZH44N>YHF&,N1C-6+@+C:.X-(G#.>_`Q
M0_T3(!@,`8[5+C"D'BC;'J$XS]!0MVZO%)A]@CN/K4N'+G'8<5(&7!_BN)PQ
MQ0QM'+DX"KYI_IH`#FE+D'@4Z-2<9[4A);!<?E@>#4JHP..:)L;S4@=1&.]`
MN2O1,`'&_L:9@*S$?6E/GQV!IW#<#O0%I]A1CN#VJ'4,0<]J(DCMVKI,<?4U
M`-V0!UDXHD\X\T97I..]3A1A0/YJZ"[T@6X8_2H!+$_6I*Y7/WHE7:!]<U(Z
M_`2C"]N:G:">WUJ&Y+#/&<U/4H`SVID\K[(4'.,<YIJ@;B?!-0,+YYHQ@\GC
MFF4_V0R<9\UPCP.:8"-W[5V#@_\`?F@E6+V@&B\8(XJ7\C]Z,*"AH':N@&R5
M)HE!'!K@,G9VS1J-P)-"%+NA3J=QKESQBF-D$Y%=C:3Q38Y))$MO8\5P7D4?
M.3X%1\Q^U(C1^,[C7-6O4$<TSE(^E0&Z359IKINGU6V4$4F%]E%O=Z]SCQ/G
M,+C/SL68V^E$%05TA<+4#P:9?N\ICH4MVZ):M2:;/Z:R0KZD;?IK/=>O?FK>
ME:G<VUPL*;I5W?\`#6ER8<><_$Y(\MM;W)37L+EX]T:LR_TUZ.SMI=0=7?2Y
M4;I[)7J='MM+ME_.AD61F[;>FFN+"4^/R^1\JEM[N*/U9K:2*/\`4RU%E$+J
MX6"-^IFK[2UCI]Q;NIB22!UP-_BLB_\`@[0;U1<6;S6\PY4QG`K10@/WW''O
MY'S75-+O=/Q^(AD$3+N+?+MJ=)OI+*X26%@I'57URP^$;@VGX:\O([BWV8_-
M/7MVUC:]_9G
=3;KG2IH4;GH8\<53Q\B<22?*;,;5=.3XIL/]I6"J-2BV[U'S
MK]/[U>&=F$K)(C)(ORM7N=/^'?C30;I9E7<@]P1:T]2^%E^(!)??A6L[Q@P9
M<82J<&E3,,J<)W#H^;Q^F[U:L8(XK@,>KJ^6MR\^!M?AN)#`L;1[ND$5H6WP
M+K`MHI'*QS@;<-Q6?MY/P="2^47$V?AAK:>)!$K+)_57LUN=0MY8DM(K%TR-
MRR=Z\Y\)_#UW;3YNE9@&^3Y:^G6L5I^&=VLD9=ON"?F`TUC:^1+GCQR[L\K=
M:7INJS-/<V4MI?`\20IA2:L067Q5H3LLQ6_TE%(XZI>V:W98+K#216\DT.<@
M*,D#-(-Q<W-H!#<,DD?)3/!/WK=I'-+,W/6RLWX9`+RV"E/FC/@^?]:KW2);
MWN80!'*0V!VS]*=J$AO$GME$-E?1^WY8I3_[\&E6CJ9HDNR!C`)/^M+_`*#M
M;-7\;;_AT6\`*KN45XG3OANQAU*74;F29(U)(1>^!_\`BO275KZ][<P02+*/
M=&!SYH+%K>:W-M/M6]BXFB;OGO550G+RV.T2^COOR((9HE?.#+P3^U;MO:F.
MP-O<0M(&X63'(K)MIEL9(Y#`K*IQR.5_:MA?B2*WD>*:(%-G!(X'[5/0G'B@
MH]/U*WDDFL;D;"?9*?%`FGQ7]V9F8QS]B/'-6)=?M[67U3$'!';'84CXFU&.
MYLH[FS"1HYSZD?&#XS0YJQ/&VMF5KT<5E#-)>#8L>54/V)![UFZ=JL4^C66J
M;/2F9LP%N,G)&*V)$M=<TF;3M=G5/4(6*96['(/?^*\_!I,D-IIVDWTD>+*\
M+;XSPZYSD4I33+ACE>SU(?,LDL\62P&X?8U9N8A=:7!8S2D209P^?<N3C_6L
MIG,>I"193(DOY??C%,U-Y(KV6UW_`)D).2.V/M2Y)%M7H=-&B3,%8LN3@_R:
MZ``,3].:!,[>>],A#D[5')KQ/4RO)H^@]/'QV-A;!P1SX-6,<MCV^!]J44!V
M$\8IHY7_`!KG9LU^`D!SCN!1<L^![:D'`(\U)(5"!C=2?9=5V0HVE@,!!Q4\
M`,%[$Y%`_.1V'-2.>W`[4BDK!()?`\^:G`6/)//TJ7Z00.<>:Z11C>7&,X`H
M97V"_4=^1R>U=*OI%U!R>V:Z)-S@L,`&HN7!=M@Z>^::);W14E&(B6[YH`.L
M9[4R<[SO/`/BB0;CN\]\5+-&JZ(V=)?'')IB#"JQ]Q&:492Y>-<<U8"C8Q8]
MA5(S?Z*C\EB/)J$!+C%&N&."N%SS0`$<C[TQ.^@)#EN.]0N"02>*(*""?-#L
MS$.V:1::Z9+<=EY%01W^O%2PP2/-'&-S&J!M6<&PW%&7QCGB@8#:2.]$Z@)D
M_;%9V)Z9/_B<_P`TU/>V>^
<T"D$@GR:8JC=N!XH8M7HY4X/--C`4D^30L,*2
M.U2O`SSP<T"2H,#G<>10J-Q/TS1#)7@\=ZY#SQ]:8WH-.DD42=R#XJ3[LCMW
MJ2<.2!Q4LE,AL`$?2H;.>?N:EADD>#3-N6Y\4,I.GL7MY^U$PZS]^*&0X!&>
M*-.]/L*L(J"1G@9YJ5[G/U-2PY/;`KCC#'[YIL'2[#"9=L>*+<"<>:@-D>`2
M*D*.XY/BE0F[!;NP\9XHE)*8SCO72@$G%0!@$=Q2`8@XR>_>C7@GZ4L$\@^>
M*D9RQ/>K[):#8CU"#SS7-RV,8!J#Y[9HCACQV\4G13!'M(QSG_K7(`34$D$U
M,9Y-,%^3\3,HXJ6&Q:[J;=L%<RM7M3/G>&*!TGMKO>VQ:G:_5NH.O=1S"9M:
M=!H<;^MJ4L[!1[8OTUMQ?&6F:=`T&CZ%92LK<O<1==>,;?U?JJ=OWI28O;X9
M+C(WS\9:RUVT^(HM[;MB'*K6G;?',DET$O;6,)[=RBO&LO4U<RINJ+94J<N1
M]3T7XCTX.(Q(K*>X->I"P&&.Y@=-AYP/%?!4WJ[.K[6J_9ZSJMJ56*\E*K\K
MMTU<<CC+9CD7CH^YAGEA)[#MFCA-P2,2$5\PTSX_NX%1+F(,JLNZO:Z;\9Z;
M=G+A$E_3XK=9U]F'";V]H]*EU+M*2[G..U<K0SR#(*+GG%5;2^LI6]8NP3-6
M4].20^C[?K6R:^B&^6C:M7TGT@KQOO!.2>V*1J-O;7"%!ZF2.2.^?M6:I>WN
M#AQ(O8`U>CNY#PD!+$%N!338GCX],9;_``JS1!_QTT",,Y=\9HK7X0DLKY+C
M_P"H9I%SDQ^KTXQYJ7O;IK<"=90H/&[Q2RXM[5YU,TTQ'`'('-$FV)<5]&W/
M))'&BP2E%&!E#W`^M+]+3[O'J@02$;ORN,_O65%=SD)&0"OM/[TZ&]LK*\$T
MSJ^UNWVHZ-E%/:*>MZ9:2-AIRT8?>C9Y'-5K^V@>S0AP2QQFO0RMH][$S2*\
M88#&WL16=*L#2&.V,8A3E6D[?S3;79C'OC3//3*=,O!J,$K[\`-'GQVXK:O;
M+2]9#7=M<?AM19?>3@'CS7E_B/5+0F>W1UDN4.U67MN!/_M6%%?7RS(PE.T+
MBL,F>,3HCAE.5(]6]U<1:A-I]\Z%XW)WCL16C:W$,DPW`2*AW8->"OWN[FX:
MY:5O4?CW?+5[1KB\@EW[@X#=C^FL/[J"9UKT>5GT+\-9WBO/N,((VG=PM>9^
M'H]5TJZ:PO)H+K3NPYR:G6-0N+^U6VR(EP,^GQS541R!"HF<]\<UG/U<&7'T
MN2/[/47UK:7F@-`"P(??E>XP16-<0S2Q[3(Q(!P:JZ=^*M78>L[J[<@FM:-L
MC]S6&7U7/HZ<7I6OD9.COJ%I*MK(QDBW]
+GN.*]7.Z3W!N'`W$8-9J",DDX^
MN:L;AR/K6#]1)*C?^UQM]%X'+=L`T]2B$$'J-4TE)'/>FHXR3QFL&WV=?!?1
M:4Y]W`S30P#;\<<@"JI?<N?O3+=U*99L\X%)CXEH'ISY-05R^<T)ZG5,@5SL
M`O?@5+&FF$P[;NQ[T()8L<X`\4`8[R<\4S`S_K0402<LF>:EEQM/>H.`"PY)
MIT:Y<+D<GO5-63='-N2(YP#5&5\`J.]7+UAZCH#D`G&*SL^YF\5+T.+06,ID
MGD"I0L<MX`Q0Y+#T^V:E2X##Y:&7>PXT5&8CO]:*?)1L=LT2$;B<<UQ.Y@@Q
MFJ1+>P(R-@!';FEO[L]EP14IC:YSR/%0RDYSVILG[%J"&`\GO7$D*`%'<TR0
M!6;ZD5RK@$>12'\A;(?>>:E-BID>379/(\5##EQ\HH902]EQW\TR8;D)'<&E
M`#;G-&2>1Y-0)K\G(```?%,`Z@`>]*(()YYS5A``P)--[&V@B=H(\"H!(&/I
M4R#G'BB0@Y!'/:AHFU0*DEB`U''PQH0`L@/@T>!G-#)>V%N()7/:F#M]\FE-
MC(/FF;L*".^<TAI)=$H<+@\XH@3OQ_B:`."2H')KE;DGZ4"IL(CD>:YL!CAN
M312'D;?!!I9(W$_7D512NQZ^<U).W/TI8/.1R.U$2.K/;Z4#E%O88YS]:8Q(
M0XQFE,V<CLQS7!N#GM1=$589R1FN#8/U':H9L$XJ"02,<4%/8WP"/-23N8#Z
M4O=P!X%3NY)%%V*Z8P<+EJYF`&*%B"",\8I9()P*78?98)!^G/-!GP/%0G#?
MMQ0MG=GQ5L+/Q>C;**23IH'V4'_\:]<^=GBA\1BYW5S>YJZE/\U5P"$.,!K>
MYZ)OFH%^:NZ^JID:QQ2B2?=U5S)7;>NFK\WZJKB8<//R`5.&H`G7W--^:IY_
M13%/"N8I%PU'$S1MOC?:U%LJ-@3<]*48CA*4-1-G2OB'4;/I]5I$5NS5ZK1?
MCH"[07BLL;GK*>W;7S]:C`H::Z":3THGWFRU+2M05I+74((ROB5\$G%:X$\'
M7;:KIWJOC9ND^M?G19)5]KLM,6]O5DW?BYMR_P!54IS78IXH8^S]'E]3</;S
M2VDX(!RASBF;/1@]47,*+C!R?\J^*?"OQG?:3<AKB1Y8MN"';=Q7TRRU?1]7
ML3<6TJF0ODQ,?.?`K2.1-[%FC&,;HU[HR-;H3^3$2<2]LGZYH%;2+F)YK%7D
MDE8;=_M`\T%X9H[>!+GF+&50_3ZU&GM:V-N98U0YSA!V'@8K;DCE<>2\6'=S
M/;1&>?E0Y")'VVUX76OB:]U6(QP0/9VBY`!7:Y7;YKW]O;)/E[AN",X'850O
M=$LKR!XHU`;!Y%3).2T7!<9W(^>`KN+;N?K3XG7U65NV
ZH^(M/N-)O6CD7=&
MS'8?M52*?<3]:\GU&-Q/>P3BUHUPZ]C5RUD7:5'<>ZLE)-P_JJU!+M[=VKD9
MU1BC8R2/O3XY!CV^:SX9&;"^:LHWYA7P.:79LJ^S1AP6R3Q5E=VUAOJE&W5]
MJM1$9()[TFR:2Z+D.-I\@TZ,YW9\52BEVN5\"F(Q#$9Z:&06BY#X'FG`X/[F
MJ?J$O]Q3HW!;><TFC4O1'(Q38V"A=H\]JJEMJYHHI"5#BAAR+Y<;E)QGO1`Y
M'/\`G516(9E/<\4]7`;#>*'7V)Z#4]7/M%$6SD;N]5Y).H@#@DT2+DDDT%==
MCD("@D]A5B$-L8D@$`XI"@%0,#&<T<N0F1P!0B9-?0@OU9^HS5>0CTC]:.8G
M>2,<<4M@0J!L<DFIDQI4<<\MXQ33OV!1W-*SF/'&*,9$H)JBG8XX!8`]0&!4
MR#&V0=\XHHE!=F.,YXH+A\,(_H2?YIU^3%M-T"P5`SD@]50S'!SV-0>/4WC@
M-VH7R<D]J;+JCH''=N1G_*B`)D8^*5&%YQV[BCW'U`G85+'_`,(W9;"]C4#_
M`(;)0Q<?Q1``YS_%`MWLZ/W%/K7!NN@)(?([&C&/4SXS0/E^0]P,N/K1R'IX
M[BD\+-D]Z/=UD=\T,>BSN4@#ZBI`Y..]5E/`.>,TX'#C!J69_8R4C@BA4L<8
M[<UQQC)[>:CE7//%!783GG-$N2!2U?DYQ1!MI;Z4=CJABDC(_P`Z+<.V/WH5
M8$X/:H;[=Z0.VQX.4+CN:'YBI\<8I(<@%O&:(N2V?O54)VAR<-MW<`TQL'M^
M]5P^6^]%ZG5]JEE-L<IY8\4+G`-+WD`_6H#<$FG0[H+);&/%$6P@^M#N4'.3
MWI;L#@CS3$W;+&[*@?05.<,!FJ^3N[]Z,MYSU"DT*[8]>D8J.QX_:E[\C(KF
M?"Y%-A0TMSNSQ1,V1@D55]7_``J5<M@E:-#VD?C9^S43>]JYJ@]VKVY2B?.Y
M?+R)7^JNQ]Z[Y:+:?M4F4I@J>]<M$:Y.]5R'*?GY!K[6J7H?U5-'B5.,I!GO
M0'M4M[OZ:D^UZ)'/\ID?*U'_`'J';[J)_FI2.B/D<V%J'[BCVNS421LU5(F4
M1;5)Q34MVS3%M]RU4HCJ,BKWJWINH75DWK6\C*5HUABJPJ1K\OS42@)2_C(V
MK/XTU<F-;QGF"1J#\W%;MO\`&-H)B3%*8Q[1BO%*R;NE5I5W.T;;5]M"M&.?
M#7Q9]%7X]D"E(K9P.W4M7--^-8D`WPE7D8[^GVU\K%W/NV;JDW<RMMW-1[C'
M#!*43[#/K_PYJ-@R:CA6PV">X/FOGFH26MDZM%<1N)%Z<-7F99I&7J9FI4FY
MFJ)3<H[-\,7BEMGLK:\4^UJO0SKOKP]K<SQ-N+-MK6M-15F]VVO.G`]
7'EC(
M]E;7'7NW5HPR*0?J:\I:7B[O=6K;7>&W`]ZQ2-Y9#TD<H!`XJPDC%R?'BL2*
M;>Z<_-5Y93C<#AADT-#C+ET:8/)-'NR?W-4DF79M\T?K<_L:1IQ?T7Q(!G/<
M#%-MGY&?K6:)</WSFK08KEO`IL+-&27#;-V<TQ"%.WD`'M65"[EPY[YJYZI9
MCGN:AHI:Z-#<3)G^34;]TF_P3258`#GDTQ",G/BDP;V6%Y/^E-4\GZ'BJX;\
MS(-'"P]0#Y<TP?D:"!"XQV%1?-D@`X&>U=:DM*#CCO5:Z?,YP>.:=4C&[8F3
M+!CGSQ^U*D)+KSP#FBW9%`>XJ*-F&"N`!]:;&WYH?N*2N-V!1QG*J!0I%V68
MVRS?0&IE90^6`W&H`VX'&2<T%P<3MY[UHV84FR&<LCY').:&;C</%0I+`L.U
M<YSDGS4=ERT0G$:Y&,BA'#@DU)?C'@=J`\`#[TV2PR<%L^:C)W5SD;BP[`T)
M.)&%+LNZ"8A<`^.*D<?XFH8Y3/UJ#NVGZ4^R9O8QP",^:$>XD5P;*9J,]6,\
M5+&-WCTMOD<@T2\*>>359^'..U&7Z?VJA/;+*N>Q/!%3N.>5I((Q]QVI@;.X
MXJ6%4$W).,?O4%N,']J`'Q4/VX/%!5VQT3D$YHV?DXJL6...:EFRN?-#&]#@
MW)^AHP<$Y[4C<,`9\T8//?(H#H9D!L^:D\_O2F;&0/XJ5<%3SS2;'2#SW-<7
M/(%`YX.#2@<]^],3=C]QYR>#4@Y)'^%!X^U0I%%BL<&.[[5#[QV[4HOR&_R^
M]&7XQ]*78/QZ#5N#X-<SX&#VI)<9XJ/5!4@]J8DZ&,3N+?2FJP_C/(JIZR@8
M)'-*>Z4-P>:!W9^3OFV5-<W#FN!`->U(^9Q<80\B&ZJ+Y]^*`'FC;O1)1D&/
M,IDM\U+/NHJ-MG50=&51GXQ`"_M3=O5WH7]S5(Y1JLSEX_XQE1MZ:[]/ZJG%
M(B7*/B2JK1]/WH%/-#(7V\4Y$RG'B/&W93(O=2!3E[-5?(M1XQ+'RUR^:!6&
MRC_FE)R,93)7W,U3CYZ'/3_=H]O_`"U1KRCD(ZOFI<R;@W]-6*%D]RK0R90*
M.W;1/[:;)'U?U4H]JC(C;QD=MZ6:N'S*U3\S*M,559OZ:QD:17&0AE]U+7>O
MMJ[M5EVT/I_+4FKCQD=;W<D3;L=-:]CJFX;2VVLKTU].H]%%;IZ:B48FT='L
M;+4E/3NK7M[Q2H;=S\U?.XWFC;W=-7[?4IHF*LU<SA+D;<^,J/??B5,@PWWJ
MT).@-GO7B(=9&_EJW++48Y4"^I[JEJC99+9Z2V(,I)[;>FFR7'<`UDQW.S#`
M\5SW*F<L.,]ZELNU9N6TN8P?O5S>"#AN36%!<$*`#QWJW%-T`@]J&F%FPC=/
M)YH
T<F,,3W-9JSG><4]91MW9X'BIJAIN]FD)0%8^15B,\D8K-CEQM_SJ[$V9
MEY^U)E&M$^Q,_:J$[C+G[TYGQ&!FJ,\G20.^:&1$:6&T'Z#%"'`49^M+=ND?
M2NE\_3.:3*=#"V925(Q3(V()((XJNO&<^:E3AV6G079>5@1G/S?Y5UP,N>1V
MI`?I%3,V1G/.>:JK$U3M$QL`V/%03RP\9XI1;$A^E=(YR3_-3LF<K82$%N>Q
MH<EE(/BACD((!'?-2#T'ZBDT*W83L<%^,\FN;:&WTLL"?Z<<5Q/2#G-,MV]C
M0V1_-2QYQX[BD!L`BB$@P?L,4[%ML=\F*&@]0<BH]3.#4C=(8#]:X'+G]\TL
MOT`C'!K@V-WW/%+H/L>Q.#C@BF"3"FJP?/!J2W4?WI]E2OL?WDX\U,F`<9I(
M;`/TJ=S%L&D+]C02K%*D]^*4[=SY\T>_.3C!-'(;H)NQ^HJ6;@TLG(..]"YZ
MC@\4>0#6<URMAJ26Z=OD5!/-'('9;W-@L/YH&/.?&>U)]0YQNX-<9/-#0TTN
MQWJ8!%0)!S27<"DO.J].:*!T^BX[`DG-<TH.0*SI+M`#U?>J<VI(J=Z+!W=&
ML\^`3FJL]ZJY`/%>>O=8"L</YK%N]<`PH//S&I[&XGK9=45<Y>LJ\UP(>'YK
MRMQ?W$[%5#4'X:XF;<S-2:D:248=GRW+R/7.F3WHF&/91M[FKZ&SY#^VO_U%
M;,HU$QZZ[8/M3-B;J1MAQ^U\2-O5LKMKT6T+4$]#4Y1">64/D3MZJY/8*YAM
MHAVI$1RRY''O78J:GLE$AY>,O(%N0U%CI:A7IJ2<-08>'RD-[48YI:\M_3NK
MD7'%5(WA\O\`Y#YW4X.6?I%+^;^FFJO6U3S,<N#R\9!K[:8OMW4`HU;:S4_C
M(TA$/]-<WS+7'GVU/_B-57(.4E+B)D%5Y%ZFJU)[F6E2+\M2S3'XR\A2[5E_
MNT:_IV]50R^ZCV^VL9&WCR"HF7JZ:%?ZJ:OM-)CCY2(V[=OZJG;[FIBJK4?3
MU5!M+Q%,J[EKI(^G^JFLO-"WN;^F@,D>0ADQU-3+:XFA?<&Z5HF7BAD3J:B4
M>08^49&S;ZZ4BV/5^TU.&9^&Y_JKR4B[=U+S)')N5MK5E+$CJ>91/H=M?+PR
M]N*T[:YW8KYQ8ZL\;;9O;7H=/U16(ZJQ<.,BEEY(]FDZ8'/FG^IR0#FO.07R
M[=NZK<=WWP>-N*AK9HFST$$V4`/?-7;:?$N3VKSL=TNT'=S5VVNQCD\U#0-N
MSTCRCT0]59'R&QX-53=*UOC/%09D.=I[^ZFU8EIE]SD9&,XHB0R@^"*H)/T>
M[[4PS?EC'CM16BGLL[LY/;O0MDR9!YI"W"X(/FN,X!X[BI:+;HLASM(SS3\C
M)![&L_UN"15F-L
Q<GGL:<2'*B&.UFS7-)B->>!P:&Y?$@SVI#/E2GWIO0,L!
MB",^.U-)`5Y,\=S5(3%FIPD!&`<JPQ4T509(P!VJ$)VNGGQ0R')QY-*#D+N'
M?/\`E0-[^QB.&/![TW(SD8^]50VU^,=Z,L!-C/#450V&S8+`^*,NBMCP>U5=
MY/?N,BA,HV]^12:V)Q+2G!(IC-D$_2J7J'U,@T9?"N,^>*8.'VRT&R*DMW^]
M5@PW'!I@?/'TJ:*<ET.$AR5_PKC(1)BE;AV'BAD;`)\TR'999SS3$<#D=ZI!
MP>:X2`$^,&DT5UV7MX"4MGPV?%5S.`6&:1+<`KC/-)H%(M^H?K7&3/&>163+
M>X)YJM-J2H20:=&CC9M27&&[\TN6[`!&>!7G;G6(Q\W-9=YK9&>:=F?MR/67
M&IH,@O5"YU5`"=]>-N=9+$]557N;F=N@-AJFV;J!Z:^ULC*HU9%UJTTC;4W-
M5>WL)YEZV;-:UII!#!BM6H-D\DC)5+J=O<=M7;;2G<]:UOVVG*A"[>U:,=I@
M@8IOBC*4G(P[33%4#*UI0V2(<;>:U([5OIYJTMIR1]Z3G8VK/S&_MJ6[U/\`
M>KG/3_37N2B?+\_]B6]^RI;YJ%L[FHF[5,C:$_$[YJA>5%%)_P"JHC]VVJD8
MY?.?$YAU-4N#Q4?)4O\`_;2(EA@2H]U3@UW]==\U*S26+B$!U4+>[IJ:%J9&
M7C&/B2?9_53%]K5#=JD;OMMI_(A?,</=1J_]%)1^NC5NJI-?D/W=5&O=J2K=
M+?JIBM[JJ42QN[J;;7-U?WJ$>YJ@E=O]55XDRCQ"DZFZ:61_Z:)1U;:ECRU%
MA_\`4A+>]J+YFJ1[ZFLY&V*7N'/YIH;J:E#W42]JSG$WXV/5FV[J/I9FI4?B
MCC_]7S5G*)4N4QJ]3;O-24W'=4+TM1HW"T<>)K\05C'S5*HNVF5#>TU/$8IH
MEW>V@:V7;_55HKU4++5<3.4N93>T1J!H9T9FC;JJ_M]U<P]U!7'C*Q=KJ5Q$
MR[NI:U;?53M.UN*S/P^ZN6S]W4U8N$6:^ZS=BU0;QU<-5^UU-<[2U>82VVLW
M4V*<L3+U*U9O%9?N4>TAU1?PX&ZG6FI*X*$UXKU)%Z0S4M+NYA9MK?W:3QR*
M4MGT6*Z5NK/'-.2X_*'/`KP4&NM'L5U9A6I:ZU&X*%JS<&;*5'JO6#%E/>I,
MF?/)K$BOHW?=OJPEVN3UTFRI23-J.4;L9IL-P06!QQ6-%=+N&6YIXG02'J[U
M,V2ZHU99M\6<<TAI,L6\&J:7`+&/=U4,DW1LSVIN(67/5PQIT4OBLZ.;<>:%
MIR&8_3FE85]FNTJ>IG[FEO("A`\50$V["YJ7F4IN^OBA]CHMHP()SQ1LVX#'
M>J*S$`@^:-)E&0:;5%5988D+W
H6X8\<&E/+R%\43R=(P>:&[)<PRQ[?2A9B%
MSGM26E\GO4,XR.JE8.5%R-^G>?!Y_:FEP,-GO6?ZRI\U`]SP<GL:+8WW9HM-
MR>>:B6;IW!NU9)N]K\M2YK]0#AN*+%*5FLUP`-PJO/=_UUB76I*H(#<5FW.J
MGG!I2D7Q3V>BFU#&2#S5.?5EW'KKRUWJ1.5W5G3WTC;EW4/DS51B>GO-6!;A
MN:S+G5B1[JR,W4K;0K5=M=(GD(W^:(XY2!RBA4]]-(=J[FW-1QVUW<-_36]9
M:,H/MYK:L]-C48V5HDD8^\SSECHA/O5NJMJUTB-%!V\5NQ67&W&#5R"UY[<4
M.=:)W+LS+?3E5N$K0AL^GM6E':X\59CAQV%92DPX[,V*TVXXJ]#;+GM5Q(.1
MQ5F.(`9`J7(OB5$M%_33A;8&,<U<5!FG)%R&P":ENQTS\>-LI7R-4K[ZAOF_
MJKZ$^<G#C\3G7W/1#YDH7]S5W7OH,Y>4O$,]VJ&V5QZ-SM4/3D.7E,EF'54L
M.EJX^[?FN;^FH^1?M0C\CA[FIE"ONJ:)1"7E(ZN;&:[-3\U,)0@3CKKLCW5W
MS5+_`#4_D3+%&(1^9Z%/;4>XM1_.U'R,I?(:/_53%W=34O\`\3IIHZF_IJOY
M#^/B$OBBV]6[]-":F+]/RTI"Y<9!D&@8=-'YW?+4-_55=ADQQY'%:YEZ^FNV
MU)7KJ#20"^*GYJ[#-MVTPKA:<HEQR1_B<N[<VVG(HW?^:@C'YFZFJ*SXFWO<
M0E]U&O2U+^:B5NJCB3+E*7)#-VVB9O:WS4*GW5V[J'Z:GB5*4@W[5#+_`,U"
MS;F6A4[O[M*1I'QVQE<H8M4HO335W;JPXF[E'LA%55:F_/0MWJ&?J.:J40E*
M(TLM"S=34!/-1\Q6JXF?+D$QZJ"3VBI9?:U=CI/ZJF42N4HBI(]R\4MMP;<M
M6=O3_>J-G?=4RCR%RDA,5]<0+[MU7;?63MVO5-XO=NI4D2LS;?EJ)XHLU]^M
MR/10ZLK*.KFKJ:BK=7J<"O&+$WAFIJFX5MRLU2\)I[T9'M6U#$A<-[FICWNX
M;]U>,:YN5Z:<E].B=;<UFXRCV7')%Z/6Q7ZMT[J>]WDY\FO&+J;8W=633X=5
M#-ULU2-R^CV*W*E^^T44ERJDM_E7F(M3CS[N*L#4$*GJI5Y#<G=&^;G@]7TJ
M3<<[\KS7GOQHVGJXH_QP]NZE)!LWUN5/!:B2Y7RW/->?EN]I+!N5I;7_`&YH
M2HIR3/027*Y/5P>*2]XJOMW5@OJ"Y;)X6J\VHY8]5+L7(WY+_9E<\U6GU`9]
MW`KS=QJ&&]U4Y=1'5U5;\2FSTTVHD@J6YJE-J9ZNJO/27TC,U0JW$[;0K"EQ
MY$N1H3ZD#T[JK>O-*VU=U6K+1I9=K2*S-7H-
,T$#J*\5:QT6LB9YNVL+J=NK
MYJV;/0@6ZUW"O56NE1Q_)VK3ALD4>W]J&TC*7.4CS]GI"JG*<]JUK?3T4XQS
M6O#9\X':KL%FJOV[U,IFB2,R#3SX%7HK)5.<5K16_2#BG>@`>W%9MV+BV9J6
MWVYJS':X(P.*OQ0=0X\U92`<\5#DF73*"0?:K4-N3XJZD"\\<5:6(9P!@=JE
MR+*"V_&0..]-,/V[U=6$D8`XIGICG(I-@HV9ZP'C(Y'%/@A/`/UJT(?/@^:-
M(3Q4-&B1^'_U/0MOHRO_`"T+>YGKZ/XGR\8>Y(+;[OU4?<4'3MW5Q[42D5[?
M+Q!DY6I&[<V:XKN4[:)NIJHY\7^QS&HE4%JE1[Z(D5`3\_\`T!7BN!]U0/FH
M@.*TE(C%S^,25.375&,4SW-43-(<_P"1%%^K=0GW,:('W.WMICE./Q)4;4Q1
MYZNJA8FBIR*AQE+82_-1!NNH5MJ;J[=MZ*IR,<\1N[*[J)>BE,^%_NT7==U*
M00E_K\AN[Y?%#^JN+4*KU57$O)+R'9J6]S-0JG5_2M-55W-1QL%R_D<JLNYJ
M,KU5PKFV[Z;0Y1_U.YZ6HF/2W]5=G:V[Y:[-8E1C'_8)O=7,U<VW;0/)MHD;
M1E^1@*JO%#OI32+N7;38U_563-8\?L-5W86FQT*KM6BZ>JB42Y2C+LGY?M1+
MNW=34/<5PY;JHC$)>4M#&;J_NU+%2VZ@]IJ5XZ6IF4_$)=W-&!\OF@'^5%\I
MJ)&T5&PNG.VH;W?>H[+MHJ"G?V1QM_JH1YHLX]M0>YJ>(.5G,M`4IK-U?:N;
M;02_('8N[;\M2R+U43=JC=U=5*4>0HRX2I@.%W4N2-6IC-U=50_MIFK492*[
MHJTJ1.JK3>[J6A;"FIXE2_16>-E5MK4OUIHFZ6;;5IEW=-*E'=:)1C((RE+:
M!;49%]U=_M0JVYMU+FB7U*K30;I&6IX1%[LR])JQ9>EJ7)JG5[JSI(6ZFI;6
M\K-67MERRK[+\FH;E;JI4EXS,VUNFE0Z?<2>U6K5L_A^5VW2%JKV2%GY&4TL
M\S=.YFJY;:==3%<JU>KT[X=1<9CVUZ"ST94\4G&*-'<CR=CH)+;F6O0V6AQI
M[EKT4%@JJ5"<UH168)[=Z',I8Z[,JSTU$?"CM6G;V)P!CD5IV]H!XJY#!SVK
M&4F:5LS(;/(!QYJVEF/TUH+``#Q]Z>D//:LY2-(POLHQVV!5J&'JSBKB6P.<
MTR.%@<8J')OHUX<61%&`@&*GT01CQ5I(#@XIJQ#.32;'7VRHL1!)QP:LQP\U
M:$`(SCZ4R.#`_:ID@TQ:PC8<8SFB6+#''MR3S5H1GZ40B8G..*5@*$>,GZ\T
MJ7()'FM!8>_UYH'@RQ)'\T,:T4$WLN/!-7HEW#C^:,6X![<
T^.(("!VI.)3=
MH_!+>Y*[9N:F,O7U5%?1\CY:491(;Q7-L]]<W37/_P#=2*E$[JWU'SYHC1-W
MIR".#E+B!M]VZH841HOFIV$\'*0-=74>WJI2,H?,$+PU$_FBV^[::Y1U;&]M
M5R*(3NU&14;,;OZ:)E*TA2AR!`Z:,>ZN[+4'_P!5!/\`YG,>FB1>JB`'LJ2.
MMJ<S+A+Y$-LZE^9J9\W]-=MZZ9MZMM5Y&T`5[407IV_-1*O4RM3%]W]52$H\
MI<CD6B^7^]1+MVUWR]55&0N)%%4?-NQ4,U2Y%>WQ^03>UJYO:U!(RK'2I'9M
MRTWY![?(-Y?=0+U2?:A5=S4]`NVIE$T\8$QHO%.V]OZJ%>E6HVZ7_IJ9%1S<
M@MVYJ[=N6AW;6:N^7II2-.-=C-S5![5S;=WWHEI$^Y+E426ZO_+1^XT/M_O4
M66ZOTT2D;<)2[)SU;:GIYH"W4:Y>6:LWXDR#;]-=\S5'5D_JJ?KMHD7T$OMJ
M![BWFN[&H;S06$S>[^]7/W6AW=6:C=U-^JIXF,9#&*U#'/?O0*W4W]5<S=1J
MN)5\D=NZVH6:H9MK4+MU=-3(J$1C_?W4MNU!NZJ[/RM4\@N49!,W/52SM;=F
MB;=EMM''#([;=M8OY&\8QXB"O_-4+`S,W3\U:UOI['W+6I;:42HRM-NNQ>W>
MCSL&GN[>VM2ST8%QN6O0VNG*K'HK4@M%4]N!3>3\`L+?9AVNC*J^VM2VL%W[
MMHQNZ?VK6CM>X`YJ[#;(#P.`*RE,VCA]LH06FP<CS6A;VBYY[BKD=OQVJY!!
ME@,5E*2-.%%2.W';%6HX3GA:M10<]JMQP]0/BI<C1195ABQW%7(XA@?6C2(=
MC3A"?EYXK-R_`W%+0M(@6_FK,<.!VYYID4!#U;B0`8QVJ6QJ(A80#@48C!4'
M'/\`TJTT>`2!S4HH/9>*5E)-"%C\T](@=P(\596($'(^E,6+GMP*HD5'`<_;
M/^5/$7V[&G*!G@4PX!I#94]+#'-6$C&3]*)E')/:I7BI<@KD=M&>U24Y(Q3`
M*E1U&J;'5,4R8YQQ4''`^]-89!'B@(Y-3V-;/QK<:#&S,VVLZ[T)PW2M?19!
M:8W&1/=29H;+S*F.:]19I'DO!ND?+[C2[A%;"U6DM9U]RM7TNXBTO)9KJ'_F
MJE=6FF[>J:+_`)JUCG7V83],^6CY\X?]%"QYKV$]CI39Q<0?\U49].L3VNXO
M^:MO<C(4\>3$>>VM4LONJ]<VL:2=,RLO]-5MO5_YJU.6,IQ\A2+U>RI'NIC>
MYJG:NYJ<C2/EY2!56]]2R]5&W3[:GYNJE()8I<>0*=_Z6HD[M7;?DHB:<HG-
M+_'\B-H9O;[:EEZJ+VAJ)NU,/D"B]5$5J6_57+MW=7MHX\I%_P`#E6F*NU
OZ
MJ*->K^JC\TY2_`U$A5ZJ['3]Z-?=4?W?=2^RLD8R.;W5.[JVM4-[FH9/=T^Z
MID$8\?(EFV[J!FZ=OS4N1LLU1U9ZJ)!'E+Y'2-N:I"MN_O5*K\OS4R/NWZJ(
MQ_`1\0HQU4:]-<J[2U,%6S2/D11>ZH;=U-4K^E:B02CQ.7S^JB^>N^>N/S5$
M]EQC42?ZJ[YJY?%<WZ:/D8_$/R?[U$??0'=NHMS?,M*1O&7T3[O=7+_ZFKFW
M'VT6<-]Z1I/C(ZN;MTUPH)&;Y5J91\B9^/0?5N9:'/S4+,V:$](I\>)7+\C&
M9=U0SMNW4IF:H+-^FID7XRT,D9:!C2I&;;4$MU+6<AU*(R1\[JYFJ`NX]358
M@AC/OD6H-:N(A0S=*U:@M)';V\UI6UE%N#;Q6G;06N.F5,U,FE*B.$I(R;?3
M6\K6O9Z:I^7FM.VMHNPY-7[1(<]+CZU+D;^V4(=/P!A>:T(;503@5>6-/:"*
ML6R19]XSFLW(U4&BI%:_:K<5KSCP:NQ0)]15F%8\]QBI<BU'97BM<D''/:K*
M6O';BKR1H!QC%/1(^<N,5#E0]LJ1P<D8X-7(H..*L+"G)!%6K>.('W+4.9?`
MK1P=Q5@6YYQY-6UB3/<<TY%3CD9I<BTBDEOCC'/UJU';C`.*M+`@&01CQ341
M<<,,4KV*2L3'`.>.:<(`#V_>GA0&)%'P?VI78*-%?TLCGO38H0!@CD4>WJQ1
M+D9S[J5EU>D04VG@=N:E<`X^],RN,>:@A2Q^M-[%QK3(3&ZG!1S0(@!X^M,4
M#'&*BPE%',M"%`.!32`<C/&:X@`GD4-V)*@1P#19RQJ0HY&17`#/<=Z*H4ML
5XXH2H^E-P.>V2:A^<XQR:3&DD?_9`
end
END --- CUT HERE --- Cut Here --- cut here --- jenes01.jpg

1294
uudecode/49544.new Normal file

File diff suppressed because it is too large Load Diff

322
uudecode/BASE64.BAK Normal file
View File

@@ -0,0 +1,322 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
!IF "$(CFG)" == ""
CFG=base64 - Win32 Debug
!MESSAGE No configuration specified. Defaulting to base64 - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "base64 - Win32 Release" && "$(CFG)" != "base64 - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Base64.mak" CFG="base64 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "base64 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "base64 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "base64 - Win32 Debug"
RSC=rc.exe
MTL=mktyplib.exe
CPP=cl.exe
!IF "$(CFG)" == "base64 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL : "$(OUTDIR)\Base64.dll"
CLEAN :
-@erase "$(INTDIR)\base64.obj"
-@erase "$(OUTDIR)\Base64.dll"
-@erase "$(OUTDIR)\Base64.exp"
-@erase "$(OUTDIR)\Base64.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Base64.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
MTL_PROJ=/nologo /D "NDEBUG" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Base64.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
odbccp32.lib /nologo /subsystem:windows /dll /incremental:no\
/pdb:"$(OUTDIR)/Base64.pdb" /machine:I386 /out:"$(OUTDIR)/Base64.dll"\
/implib:"$(OUTDIR)/Base64.lib"
LINK32_OBJS= \
"$(INTDIR)\base64.obj" \
"..\Exe\mscommon.lib"
"$(OUTDIR)\Base64.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "$(OUTDIR)\Base64.exe"
CLEAN :
-@erase "$(INTDIR)\base64.obj"
-@erase "$(OUTDIR)\Base64.exe"
-@erase "$(OUTDIR)\Base64.map"
-@erase ".\cfile.obj"
-@erase ".\Decode64.obj"
-@erase ".\Uudecode.obj"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h" /c
CPP_PROJ=/nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D\
"__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h"\
/Fo"$(INTDIR)/" /c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
MTL_PROJ=/nologo /D "_DEBUG" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Base64.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none /map /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none\
/map:"$(INTDIR)/Base64.map" /debug /machine:I386 /out:"$(OUTDIR)/Base64.exe"
LINK32_OBJS= \
"$(INTDIR)\base64.obj" \
"..\Exe\mscommon.lib" \
".\cfile.obj" \
".\Decode64.obj" \
".\Uudecode.obj"
"$(OUTDIR)\Base64.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "base64 - Win32 Release"
# Name "base64 - Win32 Debug"
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=.\base64.cpp
!IF "$(CFG)" == "base64 - Win32 Release"
DEP_CPP_BASE6=\
{$(INCLUDE)}"\.\Cfile.hpp"\
{$(INCLUDE)}"\Common\Console.hpp"\
{$(INCLUDE)}"\Common\Coord.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Scrnbuff.hpp"\
{$(INCLUDE)}"\Common\Smrect.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\base64.obj" : $(SOURCE) $(DEP_CPP_BASE6) "$(INTDIR)"
$(CPP) /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Base64.pch" /YX /Fo"$(INTDIR)/" /c $(SOURCE)
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# PROP Exclude_From_Build 0
DEP_CPP_BASE6=\
{$(INCLUDE)}"\.\Cfile.hpp"\
{$(INCLUDE)}"\Common\Console.hpp"\
{$(INCLUDE)}"\Common\Coord.hpp"\
{$(INCLUDE)}"\Common\Filetime.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Scrnbuff.hpp"\
{$(INCLUDE)}"\Common\Smrect.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Systime.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
# ADD CPP /Zp1 /FA
"$(INTDIR)\base64.obj" : $(SOURCE) $(DEP_CPP_BASE6) "$(INTDIR)"
$(CPP) /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D\
"__FLAT__" /D "STRICT" /FA /Fa"$(INTDIR)/" /Fp"c:\work\exe\msvc42.pch"\
/YX"windows.h" /Fo"$(INTDIR)/" /c $(SOURCE)
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=\Work\Exe\mscommon.lib
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\masm\Uudecode.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\masm\Decode64.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\masm\cfile.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\cfile.asm
InputName=cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

44
uudecode/BASE64.PLG Normal file
View File

@@ -0,0 +1,44 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: base64 - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\sean\LOCALS~1\Temp\RSP72.bat" with contents
[
@echo off
/parts/ddk/bin/ml /c /Zi /coff masm\Uudecode.asm
]
Creating command line "C:\DOCUME~1\sean\LOCALS~1\Temp\RSP72.bat"
Creating temporary file "C:\DOCUME~1\sean\LOCALS~1\Temp\RSP73.bat" with contents
[
@echo off
/parts/ddk/bin/ml /c /Zi /coff masm\Decode64.asm
]
Creating command line "C:\DOCUME~1\sean\LOCALS~1\Temp\RSP73.bat"
Creating temporary file "C:\DOCUME~1\sean\LOCALS~1\Temp\RSP74.bat" with contents
[
@echo off
/parts/ddk/bin/ml /c /Zi /coff masm\cfile.asm
]
Creating command line "C:\DOCUME~1\sean\LOCALS~1\Temp\RSP74.bat"
Creating temporary file "C:\DOCUME~1\sean\LOCALS~1\Temp\RSP75.tmp" with contents
[
/nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /FA /Fa".\msvcobj/" /Fp"\work\exe\msvc42.pch" /YX"windows.h" /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
"D:\work\uudecode\base64.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\sean\LOCALS~1\Temp\RSP75.tmp"
Performing Custom Build Step on .\masm\Uudecode.asm
The system cannot find the path specified.
Error executing c:\winnt\system32\cmd.exe.
<h3>Output Window</h3>
<h3>Results</h3>
base64.exe - 1 error(s), 0 warning(s)
</pre>
</body>
</html>

40
uudecode/Base64.cpp Normal file
View File

@@ -0,0 +1,40 @@
#include <common/windows.hpp>
#include <uudecode/cfile.hpp>
#include <common/windows.hpp>
#include <common/finddata.hpp>
#include <common/console.hpp>
extern "C"
{
WORD decodeBase64(const char *szPathFileName,char *szPathOutputFileName);
}
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR lpszCmdLine,int /*nCmdShow*/)
{
FindData findFile;
Console winConsole;
String strPathOutputFile;
if(!lpszCmdLine||!*lpszCmdLine)
{
winConsole.writeLine("BASE64 Version 1.0 Copyright (c) 1997 Diversified Software Solutions.");
winConsole.writeLine("The only faster base64 decoder is in firmware!");
winConsole.writeLine("mail comments/suggestions to sean@vastnet.net.");
winConsole.writeLine("Syntax: BASE64 [fileflags]");
winConsole.writeLine("Example: BASE64 *.txt");
winConsole.read();
return FALSE;
}
strPathOutputFile.reserve(256);
if(findFile.findFirst(lpszCmdLine))
{
winConsole.writeLine(findFile.fileName());
decodeBase64(findFile.fileName(),(LPSTR)strPathOutputFile);
while(findFile.findNext())
{
winConsole.writeLine(findFile.fileName());
decodeBase64(findFile.fileName(),(LPSTR)strPathOutputFile);
}
}
return FALSE;
}

322
uudecode/Base64.mak Normal file
View File

@@ -0,0 +1,322 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
!IF "$(CFG)" == ""
CFG=base64 - Win32 Debug
!MESSAGE No configuration specified. Defaulting to base64 - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "base64 - Win32 Release" && "$(CFG)" != "base64 - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Base64.mak" CFG="base64 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "base64 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "base64 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "base64 - Win32 Debug"
RSC=rc.exe
MTL=mktyplib.exe
CPP=cl.exe
!IF "$(CFG)" == "base64 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL : "$(OUTDIR)\Base64.dll"
CLEAN :
-@erase "$(INTDIR)\base64.obj"
-@erase "$(OUTDIR)\Base64.dll"
-@erase "$(OUTDIR)\Base64.exp"
-@erase "$(OUTDIR)\Base64.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Base64.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
MTL_PROJ=/nologo /D "NDEBUG" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Base64.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
odbccp32.lib /nologo /subsystem:windows /dll /incremental:no\
/pdb:"$(OUTDIR)/Base64.pdb" /machine:I386 /out:"$(OUTDIR)/Base64.dll"\
/implib:"$(OUTDIR)/Base64.lib"
LINK32_OBJS= \
"$(INTDIR)\base64.obj" \
"..\Exe\mscommon.lib"
"$(OUTDIR)\Base64.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "$(OUTDIR)\Base64.exe"
CLEAN :
-@erase "$(INTDIR)\base64.obj"
-@erase "$(OUTDIR)\Base64.exe"
-@erase "$(OUTDIR)\Base64.map"
-@erase ".\cfile.obj"
-@erase ".\Decode64.obj"
-@erase ".\Uudecode.obj"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h" /c
CPP_PROJ=/nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D\
"__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h"\
/Fo"$(INTDIR)/" /c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
MTL_PROJ=/nologo /D "_DEBUG" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Base64.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none /map /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none\
/map:"$(INTDIR)/Base64.map" /debug /machine:I386 /out:"$(OUTDIR)/Base64.exe"
LINK32_OBJS= \
"$(INTDIR)\base64.obj" \
"..\Exe\mscommon.lib" \
".\cfile.obj" \
".\Decode64.obj" \
".\Uudecode.obj"
"$(OUTDIR)\Base64.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "base64 - Win32 Release"
# Name "base64 - Win32 Debug"
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=.\base64.cpp
!IF "$(CFG)" == "base64 - Win32 Release"
DEP_CPP_BASE6=\
{$(INCLUDE)}"\.\Cfile.hpp"\
{$(INCLUDE)}"\Common\Console.hpp"\
{$(INCLUDE)}"\Common\Coord.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Scrnbuff.hpp"\
{$(INCLUDE)}"\Common\Smrect.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\base64.obj" : $(SOURCE) $(DEP_CPP_BASE6) "$(INTDIR)"
$(CPP) /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Base64.pch" /YX /Fo"$(INTDIR)/" /c $(SOURCE)
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# PROP Exclude_From_Build 0
DEP_CPP_BASE6=\
{$(INCLUDE)}"\.\Cfile.hpp"\
{$(INCLUDE)}"\Common\Console.hpp"\
{$(INCLUDE)}"\Common\Coord.hpp"\
{$(INCLUDE)}"\Common\Filetime.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Scrnbuff.hpp"\
{$(INCLUDE)}"\Common\Smrect.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Systime.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
# ADD CPP /Zp1 /FA
"$(INTDIR)\base64.obj" : $(SOURCE) $(DEP_CPP_BASE6) "$(INTDIR)"
$(CPP) /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D\
"__FLAT__" /D "STRICT" /FA /Fa"$(INTDIR)/" /Fp"c:\work\exe\msvc42.pch"\
/YX"windows.h" /Fo"$(INTDIR)/" /c $(SOURCE)
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=\Work\Exe\mscommon.lib
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\masm\Uudecode.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\masm\Decode64.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\masm\cfile.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\cfile.asm
InputName=cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

111
uudecode/CFILE.ASM Normal file
View File

@@ -0,0 +1,111 @@
;*************************************************************************************
; MODULE: CFILE.ASM DATE: APRIL 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT LAT MODEL
; FUNCTION : BUFFERED FILE FUNCTIONS
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
.DATA
crlf DB 0Dh,0Ah,00h
.CODE
_FileOpen proc near ; int FileOpen(char *pathFileName,FileInfo *pFileInfo,int access,int share,int open,int attributes)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index
CREATEFILE [ebp+08h],[ebp+10h],[ebp+14h],[ebp+18h],[ebp+1Ch] ; call create file
mov esi,[ebp+0Ch] ; move FileInfo ptr to esi
mov [FileInfo ptr [esi]].FileInfo@@mhFileHandle,eax ; store handle
pop esi ; restore source index
pop ebp ; restore previous frame
retn ; return near to caller
_FileOpen endp
_FileClose proc near ; int CloseFile(FileInfo *pFileInfo);
push ebp ; save prior frame
mov ebp,esp ; create new stack frame
push esi ; save source index register
mov esi,[ebp+08h]
cmp [FileInfo ptr [esi]].FileInfo@@mhFileHandle,INVALID_HANDLE ; check for valid handle
je @@FileCloseEnd ; handle is not valid
CLOSEHANDLE [FileInfo ptr[esi]].FileInfo@@mhFileHandle ; close handle
mov [FileInfo ptr[esi]].FileInfo@@mhFileHandle,INVALID_HANDLE ; set handle to invalid state
@@FileCloseEnd: ; end sync address
pop esi ; restore source index
pop ebp ; restore prior stack frame
retn ; return near to caller
_FileClose endp
_FileRead proc near ; FileRead(FileInfo *pFileInfo,BYTE *ptrByte);
push ebp ; save stack frame
mov ebp,esp ; create new stack frame
push esi ; save source index register
push edi ; save destination index register
mov esi,[ebp+08h] ; move pFileInfo to esi register
mov edi,[ebp+0Ch] ; move ptrByte to destination index register
FREAD esi,edi ; perform read from disk, or cache
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore stack frame
retn ; return near to caller
_FileRead endp
_FileWrite proc near
push ebp ; save previous stack frame
mov ebp,esp ; create new stack frame
pop ebp ; restore previous stack frame
retn ; return near to caller
_FileWrite endp
_FileReadLine proc near ; int FileReadLine(FileInfo *pFileInfo,char *strLine)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,[ebp+08h] ; move (pFileInfo *) to source index register
mov edi,[ebp+0Ch] ; move strLine to destination index register
FREADLINE esi,edi ; perform getLine
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_FileReadLine endp
_FileWriteLine proc near ; int FileWrite(FileInfo *pFileInfo,char *strLine,int length);
push ebp ; save previous stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,[ebp+08h] ; move pFileInfo to source index register
mov edi,[ebp+0Ch] ; move strLine to destination index register
FWRITELINE esi,edi ; write string to file
lea edi,crlf ; get crlf address to edi register
FWRITELINE esi,edi ; write string to file
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_FileWriteLine endp
_FileFlush proc near
push ebp ; save previous stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
mov esi,[ebp+08h] ; move pFileInfo to source index register
FFLUSH esi ; flush cache
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_FileFlush endp
public _FileOpen
public _FileClose
public _FileRead
public _FileWrite
public _FileReadLine
public _FileWriteLine
public _FileFlush
END

32
uudecode/CFILE.HPP Normal file
View File

@@ -0,0 +1,32 @@
#ifndef _UUDECODE_CFILE_HPP_
#define _UUDECODE_CFILE_HPP_
class FileInfo
{
public:
FileInfo(void);
~FileInfo();
enum {MaxLength=0x800};
HANDLE mhFileHandle;
BYTE mszBuffer[MaxLength];
DWORD mBufferIndex;
BYTE *mpBufferPointer;
};
FileInfo::FileInfo(void)
{
mhFileHandle=(HANDLE)-1;
mBufferIndex=0;
mpBufferPointer=0;
}
FileInfo::~FileInfo()
{
}
extern "C"
{
int FileOpen(char *pathFileName,FileInfo *pFileInfo,int access,int share,int open,int attributes);
void FileClose(FileInfo *pFileInfo);
}
#endif

BIN
uudecode/Cfile.obj Normal file

Binary file not shown.

920
uudecode/D3.TXT Normal file
View File

@@ -0,0 +1,920 @@
begin 644 d3.jpg
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
`
end

920
uudecode/D3.UUE Normal file
View File

@@ -0,0 +1,920 @@
begin 644 c:\work\uudecode\d3.jpg
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
`
end

52
uudecode/DECODE.HPP Normal file
View File

@@ -0,0 +1,52 @@
#ifndef _UUDECODE_DECODE_HPP_
#define _UUDECODE_DECODE_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
extern "C"
{
WORD _cdecl uudecode(const char *szPathFileName,char *szPathOutputFileName);
WORD _cdecl decodeBase64(const char *szPathFileName,char *szPathOutputFileName);
}
class GenDecode
{
public:
static bool decode(const String &pathFileName,String &pathOutputFileName);
static bool decode(const String &pathFileName);
private:
GenDecode(void);
virtual ~GenDecode();
};
inline
GenDecode::GenDecode(void)
{
}
inline
GenDecode::~GenDecode()
{
}
inline
bool GenDecode::decode(const String &pathFileName)
{
String strPathOutputFileName;
strPathOutputFileName.reserve(256);
return decode(pathFileName,strPathOutputFileName);
}
inline
bool GenDecode::decode(const String &pathFileName,String &pathOutputFileName)
{
String strPathOutputFileName;
strPathOutputFileName.reserve(256);
if(!uudecode((LPSTR)pathFileName,(LPSTR)strPathOutputFileName))
if(!decodeBase64((LPSTR)pathFileName,strPathOutputFileName))return false;
pathOutputFileName=strPathOutputFileName;
return true;
}
#endif

418
uudecode/DECODE64.HLD Normal file
View File

@@ -0,0 +1,418 @@
;*************************************************************************************
; MODULE: BASE64.ASM DATE: JANUARY 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : BASE64 DECODER
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
HANDLE STRUC
PHANDLE TYPEDEF FAR PTR HANDLE
HANDLE@@mHandle DD <0>
HANDLE ENDS
INVALID_HANDLE equ 0FFFFFFFFh
STRSTR MACRO szStringOne,szStringTwo
push offset szStringTwo ; save string one
push offset szStringOne ; save string two
call _strstr ; call standard library strstr
add esp,08h ; reset stack frame
ENDM
STRCHR MACRO szString,charByte
push charByte ; save charByte
push offset szString ; save string
call _strchr ; call standard library strchr
add esp,08h ; reset stack frame
ENDM
STRLEN MACRO szData
push edi ; save destination index register
push ecx ; save ecx register
mov edi,offset szData ; get string to destination index register
mov ecx,0FFFFh ; move 65535 to ecx register
xor eax,eax ; clear eax register
repnz scasb ; scan string
mov eax,0FFFFh ; move 65535 to eax
sub eax,ecx ; subtract number of bytes scanned
dec eax ; decrement result
pop ecx ; restore ecx register
pop edi ; restore destination index register
ENDM
MEMCPY MACRO szDstData,szSrcData,lengthCopy
push esi ; save source index register
push edi ; save destination index register
mov esi,offset szSrcData ; move source data to source index register
mov edi,offset szDstData ; move destination data to destination index register
mov ecx,lengthCopy ; move number of bytes to copy to ecx register
rep movsb ; copy data
pop edi ; restore destination index register
pop esi ; restore source index register
ENDM
STRCMP MACRO szStringOne,szStringTwo
LOCAL @@STRCMPnotEqual,@@STRCMPequal,@@STRCMPexit
push ecx ; save ecx register
push edi ; save destination index register
push esi ; save source index register
mov edi,offset szStringOne ; move string one to destination index register
mov esi,offset szStringTwo ; move string two to source index register
STRLEN szStringOne ; get length of string one
mov ecx,eax ; save length to ecx register
STRLEN szStringTwo ; get length of string two
cmp ecx,eax ; compare lengths
jne @@STRCMPnotEqual ; if lengths differ, strings are not equal
@@STRCMPloop: ; loop control
mov al,byte ptr[esi] ; get byte from string two
cmp al,byte ptr[edi] ; compare with byte from string one
jne @@STRCMPnotEqual ; if bytes differ then we're done
loop @@STRCMPloop ; iterate through string length
@@STRCMPequal: ; equality control
mov eax,0001h ; set return code
jmp @@STRCMPexit ; we're done
@@STRCMPnotEqual: ; inequality control
xor eax,eax ; set return code
@@STRCMPexit: ; exit sync address
pop esi ; restore source index register
pop edi ; restore destination index register
pop ecx ; restore ecx register
ENDM
STRNCMP MACRO szStringOne,szStringTwo
LOCAL @@STRNCMPloop,@@STRNCMPequal,@@STRNCMPnotEqual,@@STRNCMPexit
push ecx ; save ecx register
push edi ; save edi register
push esi ; save source index register
mov edi,offset szStringOne ; move string one to destination index register
mov esi,offset szStringTwo ; move string two to source index register
STRLEN szStringOne ; get length of string one
mov ecx,eax ; save length to ecx register
STRLEN szStringTwo ; get length of string two
cmp ecx,eax ; compare the lengths
jle @@STRNCMPloop ; string one is less equal to string two
mov ecx,eax ; string two is less, so use it's length
@@STRNCMPloop: ; loop control
mov al,byte ptr[esi] ; get byte from string one
cmp al,byte ptr[edi] ; compare with byte from string two
jne @@STRNCMPnotEqual ; if byte are unequal, strings are unequal
inc edi ; increment along string two
inc esi ; increment along string one
loop @@STRNCMPloop ; keep going
@@STRNCMPequal: ; string equal sync address
mov eax,0001h ; set return code
jmp @@STRNCMPexit ; we're done
@@STRNCMPnotEqual: ; string unequal sync address
xor eax,eax ; set return code
@@STRNCMPexit: ; exit sync address
pop esi ; restore source index register
pop edi ; restore destination index register
pop ecx ; restore ecx register
ENDM
CREATEFILE MACRO pathFileName,access,share,open,attribute
push 0000h ; save handle to template (null)
push attribute ; save attributes
push open ; save creation flags
push 0000h ; save security attributes
push share ; save share mode
push access ; save acess mode
push pathFileName ; save path file name
call dword ptr __imp__CreateFileA@28 ; call create
ENDM
READFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesRead on stack
mov eax,esp ; move bytesRead address to eax
push 0000h ; save overlapped structure address
push eax ; save pointer to bytesRead
push sizeBuffer ; save length of buffer
push offset szBuffer ; save address of read buffer
push hFileHandle ; save file handle
call dword ptr __imp__ReadFile@20 ; call read
mov eax,[esp] ; move bytesRead value to eax
add esp,04h ; remove bytesRead variable from stack
ENDM
WRITEFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesWritten variable on stack
mov eax,esp ; move bytesWritten address to eax
push 0000h ; save overlapped structure address
push eax ; save bytesWritten address
push sizeBuffer ; save write length
push offset szBuffer ; save address of write buffer
push hFileHandle ; save file handle
call dword ptr __imp__WriteFile@20 ; call write
mov eax,[esp] ; move number of bytes written to eax
add esp,04h ; remove bytesWritten variable from stack
ENDM
CLOSEHANDLE MACRO handle
push handle ; save file handle
call dword ptr __imp__CloseHandle@4 ; call close
ENDM
FREAD MACRO sFileInfo,ptrByte
LOCAL @@FREADreadError,@@FREADsimpleRead,@@FREADdone
cmp sFileInfo.FileInfo@@mBufferIndex,00h ; is buffer index zero
jne @@FREADsimpleRead ; if not then just grab next byte
READFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,MaxLength ; otherwise we fill the read buffer
cmp eax,0000h ; did we read any data ?
je @@FREADreadError ; if not then we're done
mov sFileInfo.FileInfo@@mBufferIndex,eax ; move number of bytes read to buffer index
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
jmp @@FREADsimpleRead ; grab next byte
@@FREADreadError: ; read error sync address
xor eax,eax ; set return code
jmp @@FREADdone ; we're done
@@FREADsimpleRead: ; simple read sync address
mov eax,sFileInfo.FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov al,byte ptr[eax] ; move byte value to al
mov byte ptr[ptrByte],al ; move byte value to user buffer
inc sFileInfo.FileInfo@@mlpBufferPointer ; increment along lpBufferPointer
dec sFileInfo.FileInfo@@mBufferIndex ; decrement the buffer index
mov eax,01h ; set the return code
@@FREADdone: ; done reading sync
ENDM
FWRITE MACRO sFileInfo,ptrByte
LOCAL @@FWRITEsimpleWrite,@@FWRITEuseBuffer
cmp sFileInfo.FileInfo@@mBufferIndex,MaxLength ; compare buffer index to MaxLength
jl @@FWRITEsimpleWrite ; if it's less then insert char into buffer
WRITEFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,MaxLength ; other wise
mov sFileInfo.FileInfo@@mBufferIndex,0000h ; set buffer index to zero
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEsimpleWrite: ; simple write sync address
cmp sFileInfo.FileInfo@@mlpBufferPointer,0000h ; is buffer pointer null?
jne @@FWRITEuseBuffer ; if not then just use it
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEuseBuffer: ; use buffer sync address
mov cl,byte ptr[ptrByte] ; move byte to write to cl
mov eax,sFileInfo.FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov byte ptr[eax],cl ; move byte into buffer
inc sFileInfo.FileInfo@@mlpBufferPointer ; increment buffer pointer
inc sFileInfo.FileInfo@@mBufferIndex ; increment buffer index
mov eax,01h ; set return code
ENDM
FFLUSH MACRO sFileInfo
WRITEFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,sFileInfo.FileInfo@@mBufferIndex ; write buffer to disk
mov sFileInfo.FileInfo@@mBufferIndex,0000h ; set buffer index to zero
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
ENDM
FGETS MACRO sFileInfo,szBuffer
LOCAL @@FGETScont,@@FGETexit,@@FGETsetError,@@FGETScrlf
push esi ; save source index register
mov esi,offset szBuffer ; move address of buffer into esi
@@FGETScont: ; loop control
FREAD sFileInfo,esi ; read a byte
cmp eax,0000h ; was our read successful?
je @@FGETexit ; if not we're done
cmp byte ptr[esi],0Dh ; is the byte a carriage return?
je @@FGETScrlf ; if yes then jump to handler
inc esi ; increment along esi
jmp @@FGETScont ; keep reading
@@FGETScrlf: ; carriage return control
mov byte ptr[esi],00h ; move null into line data
sub esp,04h ; create temp var on stack
mov esi,esp ; esi points to temp var
FREAD sFileInfo,esi ; read line-feed into temp var
add esp,04h ; restore stack
@@FGETexit: ; exit sync address
pop esi ; restore source index register
ENDM
FileInfo STRUC
MaxLength equ 800h
FileInfo@@mhFileHandle HANDLE <0>
FileInfo@@mszBuffer DB MaxLength DUP(0)
FileInfo@@mBufferIndex DD (0)
FileInfo@@mlpBufferPointer DD (0)
FileInfo ENDS
.DATA
inputFile FileInfo <<0>>
outputFile FileInfo <<0>>
lineData DB 400h DUP(0)
szDefaultOutputPathFileName DB 'IMAGE.JPG',00h
szOutputPathFileName DB 0FFh DUP(0)
szFileNameLiteral DB 'filename=',00h
szOutBytes DB 04h DUP(0)
szInputPathFileName DD ?
szBase64ID DB '/9j/',00h
szBase64Vector DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',00h
num DD ?
lineLength DD ?
itemIndex DD ?
numIndex DD ?
valueItem DD ?
.CODE
_decodeBase64 proc near ; WORD decodeBase64(const char *szPathFileName)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
push [ebp+8] ; save pathFileName
pop szInputPathFileName ; restore into inputPathFileName
cmp szInputPathFileName,0000h ; is the file na null
je @@error ; if so then we've got an error
CREATEFILE szInputPathFileName,GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
mov inputFile.FileInfo@@mhFileHandle,eax ; store the handle
cmp inputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; do we have a valid handle ?
je @@error ; if the handle is invalid then we've got an error
STRLEN szDefaultOutputPathFileName ; get the length of the default file name
MEMCPY szOutputPathFileName,szDefaultOutputPathFileName,eax ; set output file name to default
@@search: ; search sync address
FGETS inputFile,lineData ; get input line
cmp eax,0000h ; did we read anything
je @@end ; if not we're done
STRSTR lineData,szFileNameLiteral ; look for "filename=" literal
cmp eax,0000h ; did we find it
jne @@nameFile ; if so then extract the filename
STRNCMP szBase64ID,lineData ; compare line to base64 identifier
cmp eax,0001h ; if we've got it then we start decoding
je @@beginDecode ; jump to decode handler
jmp @@search ; keep going
@@nameFile: ; nameFile sync address
push eax ; save address of filename literal
push offset szOutputPathFileName ; save address of filename buffer
call _nameFile ; extract the file name
add esp,08h ; reset stack frame
jmp @@search ; keep going
@@beginDecode: ; begin decode sync address
CREATEFILE offset szOutputPathFileName,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
mov outputFile.FileInfo@@mhFileHandle,eax ; save handle
@@continueDecode: ; continue decode sync address
STRLEN lineData ; get length of lineData
dec eax ; decrement line length
mov lineLength,eax ; move line length into lineLength
mov itemIndex,0000h ; set itemIndex to zero
@@itemLoop: ; itemLoop sync address
mov valueItem,0000h ; set valueItem to zero
mov esi,offset lineData ; move ptr lineData to esi register
add esi,itemIndex ; add itemIndex to address
cmp byte ptr[esi+02h],'=' ; is pChar[2] equal to '='?
je @@assignOne ; if so then num=1
cmp byte ptr[esi+03h],'=' ; else if pChar[3]='='
je @@assignTwo ; then num=2
mov num,0003h ; otherwise num=3
jmp @@assignContinue ; continue
@@assignOne: ; assignment sync address
mov num,0001h ; assign 1 to num
jmp @@assignContinue ; continue
@@assignTwo: ; assignment sync address
mov num,0002h ; assign two to num
jmp @@assignContinue ; continue
@@assignContinue: ; end assignment sync address
mov numIndex,0000h ; set numIndex to zero
@@numLoop: ; numIndex loop sync address
xor eax,eax ; clear out eax
mov edi,numIndex ; move numIndex into destination index
mov al,byte ptr[esi+edi] ; get the byte at pChar[numIndex]
STRCHR szBase64Vector,eax ; ::strchar(szBase64Vector,pChar[numIndex])
cmp eax,0000h ; did we find the token
je @@end ; if not then we've got an error
mov edi,eax ; move address of found token to edi (pTok)
sub edi,offset szBase64Vector ; perform (pTok-szBase64Vector) result to edi
mov eax,0003h ; move 3 into eax
sub eax,numIndex ; perform (3-numIndex) result to eax
mov edx,0006h ; move 6 into edx
imul eax,edx ; perform (3-numIndex)*6 result to eax
mov cl,al ; move shift value into cl register
shl edi,cl ; perform (pTok-smszVec)<<((3-numIndex)*6) result to edi
add valueItem,edi ; valueItem+=(pTok-smszVec)<<((3-numIndex)*6)
inc numIndex ; increment numIndex
mov eax,numIndex ; move numIndex into eax register
cmp eax,num ; compare numIndex to num
jle @@numLoop ; loop through <= operation
mov numIndex,0002h ; set numIndex to 2
@@nextNumLoop: ; next numLoop sync address
mov esi,offset szOutBytes ; move szOutBytes address into esi
mov edi,numIndex ; move numIndex into edi
mov eax,valueItem ; move valueItem into eax register
and eax,000000FFh ; apply bit mask
mov byte ptr[esi+edi],al ; set byte in szOutBytes
shr valueItem,08h ; shift valueItem right 8 bytes
dec numIndex ; decrement numIndex
cmp numIndex,0000h ; compare numIndex to zero
jge @@nextNumLoop ; if >=0 keep going
mov esi,offset szOutBytes ; move szOutBytes to esi
xor edi,edi ; clear edi
@@writeLoop: ; writeLoop sync address
FWRITE outputFile,byte ptr[esi+edi] ; write out the byte
inc edi ; increment edi
cmp edi,num ; compare edi to num
jl @@writeLoop ; if it's less then keep going
add itemIndex,0004h ; increment itemIndex by four
mov eax,itemIndex ; move itemIndex to eax
cmp eax,lineLength ; compare itemIndex to lineLength
jl @@itemLoop ; if it's less that keep going
FGETS inputFile,lineData ; get another line
cmp eax,0000h ; did we get a line?
je @@end ; if not then we're done
jmp @@continueDecode ; otherwise keep going
@@end: ; end sync address
FFLUSH outputFile ; flush the output file
CLOSEHANDLE outputFile.FileInfo@@mhFileHandle ; close output file
CLOSEHANDLE inputFile.FileInfo@@mhFileHandle ; close input file
@@error: ; error sync address
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore prior stack frame
retn ; return near to caller
_decodeBase64 endp
_nameFile proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov edi,[ebp+8] ; move dest string to destination index register
mov esi,[ebp+0Ch] ; move source string to source index register
@@NAMEFILEquoteLoop: ; first quote loop control
mov al,byte ptr[esi] ; move byte into al
cmp al,00h ; is it null?
je @@NAMEFILEerror ; if it's null then we've got an error
cmp al,'"' ; is it the first quote ?
je @@NAMEFILEreadFile ; if so then get the filename
inc esi ; increment along esi
jmp @@NAMEFILEquoteLoop ; keep going
@@NAMEFILEreadFile: ; read file name sync address
inc esi ; skip past the first quote
mov al,byte ptr[esi] ; read from file name
cmp al,'"' ; is the byte the closing quote?
je @@NAMEFILEreadEnd ; if so then we're done
cmp al,00h ; is the byte a null byte?
je @@NAMEFILEreadEnd ; if so then we're done
mov byte ptr[edi],al ; store the byte in destination
inc edi ; increment along destination
jmp @@NAMEFILEreadFile ; keep going
@@NAMEFILEreadEnd: ; read end sync address
mov byte ptr[edi],00h ; null terminate the string
mov eax,0001h ; set return code
jmp @@NAMEFILEend ; we're done
@@NAMEFILEerror: ; error sync address
xor eax,eax ; set error return
@@NAMEFILEend: ; end proc sync address
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore prior stack frame
retn ; return near to caller
_nameFile endp
public _decodeBase64
extrn __imp__WriteFile@20:near
extrn __imp__CloseHandle@4:near
extrn __imp__CreateFileA@28:near
extrn __imp__GetLastError@0:near
extrn __imp__ReadFile@20:near
extrn __imp__WriteFile@20:near
extrn _strstr:near
extrn _strchr:near
END

59
uudecode/DEVIOCTL.INC Normal file
View File

@@ -0,0 +1,59 @@
;*************************************************************************************
; MODULE: DEVIOCTL.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : FILE RELATED CONSTANTS
;*************************************************************************************
FILE_SHARE_READ equ 00000001h
FILE_SHARE_WRITE equ 00000002h
FILE_SHARE_DELETE equ 00000004h
FILE_ATTRIBUTE_READONLY equ 00000001h
FILE_ATTRIBUTE_HIDDEN equ 00000002h
FILE_ATTRIBUTE_SYSTEM equ 00000004h
FILE_ATTRIBUTE_DIRECTORY equ 00000010h
FILE_ATTRIBUTE_ARCHIVE equ 00000020h
FILE_ATTRIBUTE_NORMAL equ 00000080h
FILE_ATTRIBUTE_TEMPORARY equ 00000100h
FILE_ATTRIBUTE_COMPRESSED equ 00000800h
FILE_ATTRIBUTE_OFFLINE equ 00001000h
CREATE_NEW equ 00000001h
CREATE_ALWAYS equ 00000002h
OPEN_EXISTING equ 00000003h
OPEN_ALWAYS equ 00000004h
TRUNCATE_EXISTING equ 00000005h
DELETE equ 00010000h
READ_CONTROL equ 00020000h
WRITE_DAC equ 00040000h
WRITE_OWNER equ 00080000h
SYNCHRONIZE equ 00100000h
STANDARD_RIGHTS_REQUIRED equ 000F0000h
STANDARD_RIGHTS_READ equ READ_CONTROL
STANDARD_RIGHTS_WRITE equ READ_CONTROL
STANDARD_RIGHTS_EXECUTE equ READ_CONTROL
STANDARD_RIGHTS_ALL equ 001F0000h
SPECIFIC_RIGHTS_ALL equ 0000FFFFh
FILE_READ_DATA equ 0001h
FILE_LIST_DIRECTORY equ 0001h
FILE_WRITE_DATA equ 0002h
FILE_ADD_FILE equ 0002h
FILE_APPEND_DATA equ 0004h
FILE_ADD_SUBDIRECTORY equ 0004h
FILE_CREATE_PIPE_INSTANCE equ 0004h
FILE_READ_EA equ 0008h
FILE_WRITE_EA equ 0010h
FILE_EXECUTE equ 0020h
FILE_TRAVERSE equ 0020h
FILE_DELETE_CHILD equ 0040h
FILE_READ_ATTRIBUTES equ 0080h
FILE_WRITE_ATTRIBUTES equ 0100h
FILE_ALL_ACCESS equ STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 1FFh
FILE_GENERIC_READ equ STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE
FILE_GENERIC_WRITE equ STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE
FILE_GENERIC_EXECUTE equ STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE
GENERIC_READ equ 80000000h
GENERIC_WRITE equ 40000000h
GENERIC_EXECUTE equ 20000000h
GENERIC_ALL equ 10000000h

0
uudecode/Decode.cpp Normal file
View File

BIN
uudecode/Decode64.obj Normal file

Binary file not shown.

27
uudecode/FILEINFO.HPP Normal file
View File

@@ -0,0 +1,27 @@
#ifndef _UUDECODE_FILEINFO_HPP_
#define _UUDECODE_FILEINFO_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
class FileInfo
{
public:
FileInfo(void);
~FileInfo(); // cannot be virtual
enum{MaxLength=0x800};
BYTE mBuffer[MaxLength];
HANDLE mhFileHandle;
DWORD mBufferIndex;
DWORD mlpBufferPointer;
};
FileInfo::FileInfo(void)
: mhFileHandle(INVALID_HANDLE_VALUE), mBufferIndex(0), mlpBufferPointer(0)
{
}
FileInfo::~FileInfo()
{
}
#endif

243
uudecode/FILEIO.MAK Normal file
View File

@@ -0,0 +1,243 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
!IF "$(CFG)" == ""
CFG=fileio - Win32 Debug
!MESSAGE No configuration specified. Defaulting to fileio - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "fileio - Win32 Release" && "$(CFG)" != "fileio - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Fileio.mak" CFG="fileio - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "fileio - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "fileio - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "fileio - Win32 Debug"
RSC=rc.exe
MTL=mktyplib.exe
CPP=cl.exe
!IF "$(CFG)" == "fileio - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL : "$(OUTDIR)\Fileio.exe"
CLEAN :
-@erase "$(INTDIR)\main.obj"
-@erase "$(OUTDIR)\Fileio.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Fileio.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
MTL_PROJ=/nologo /D "NDEBUG" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Fileio.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
odbccp32.lib /nologo /subsystem:windows /incremental:no\
/pdb:"$(OUTDIR)/Fileio.pdb" /machine:I386 /out:"$(OUTDIR)/Fileio.exe"
LINK32_OBJS= \
"$(INTDIR)\main.obj" \
"..\exe\mscommon.lib"
"$(OUTDIR)\Fileio.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "fileio - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "$(OUTDIR)\Fileio.exe"
CLEAN :
-@erase "$(INTDIR)\main.obj"
-@erase "$(INTDIR)\vc40.idb"
-@erase "$(INTDIR)\vc40.pdb"
-@erase "$(OUTDIR)\Fileio.exe"
-@erase "$(OUTDIR)\Fileio.ilk"
-@erase "$(OUTDIR)\Fileio.pdb"
-@erase ".\cfile.obj"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /YX /c
CPP_PROJ=/nologo /Zp1 /MTd /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
/D "STRICT" /D "__FLAT__" /Fp"$(INTDIR)/Fileio.pch" /YX /Fo"$(INTDIR)/"\
/Fd"$(INTDIR)/" /c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
MTL_PROJ=/nologo /D "_DEBUG" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Fileio.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /incremental:yes\
/pdb:"$(OUTDIR)/Fileio.pdb" /debug /machine:I386 /out:"$(OUTDIR)/Fileio.exe"
LINK32_OBJS= \
"$(INTDIR)\main.obj" \
"..\exe\mscommon.lib" \
".\cfile.obj"
"$(OUTDIR)\Fileio.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "fileio - Win32 Release"
# Name "fileio - Win32 Debug"
!IF "$(CFG)" == "fileio - Win32 Release"
!ELSEIF "$(CFG)" == "fileio - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=.\main.cpp
DEP_CPP_MAIN_=\
{$(INCLUDE)}"\Common\Filetime.hpp"\
{$(INCLUDE)}"\Common\Openfile.hpp"\
{$(INCLUDE)}"\common\overlap.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Systime.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\main.obj" : $(SOURCE) $(DEP_CPP_MAIN_) "$(INTDIR)"
# End Source File
################################################################################
# Begin Source File
SOURCE=.\cfile.asm
!IF "$(CFG)" == "fileio - Win32 Release"
!ELSEIF "$(CFG)" == "fileio - Win32 Debug"
# Begin Custom Build
InputPath=.\cfile.asm
InputName=cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=\work\exe\mscommon.lib
!IF "$(CFG)" == "fileio - Win32 Release"
!ELSEIF "$(CFG)" == "fileio - Win32 Debug"
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

BIN
uudecode/FILEIO.MDP Normal file

Binary file not shown.

154
uudecode/MAIN.CPP Normal file
View File

@@ -0,0 +1,154 @@
#include <common/windows.hpp>
#include <common/string.hpp>
#include <common/openfile.hpp>
#include <stdio.h>
class FileInfo;
extern "C"
{
int FileOpen(char *pPathFileName,FileInfo *pFileInfo,int access,int share,int open,int attributes);
int FileClose(FileInfo *pFileInfo);
int FileRead(FileInfo *pFileInfo,BYTE *ptrByte);
int FileReadLine(FileInfo *pFileInfo,BYTE *ptrByte);
int FileWriteLine(FileInfo *pFileInfo,BYTE *ptrByte);
int FileFlush(FileInfo *pFileInfo);
}
class FileInfo
{
public:
FileInfo(void);
~FileInfo(); // cannot be virtual
enum{MaxLength=0x800};
BYTE mBuffer[MaxLength];
HANDLE mhFileHandle;
DWORD mBufferIndex;
DWORD mlpBufferPointer;
};
inline
FileInfo::FileInfo(void)
: mhFileHandle(INVALID_HANDLE_VALUE), mBufferIndex(0), mlpBufferPointer(0)
{
}
inline
FileInfo::~FileInfo()
{
}
class FileIO
{
public:
enum Open{CreateNew=CREATE_NEW,CreateAlways=CREATE_ALWAYS,OpenExisting=OPEN_EXISTING,
OpenAlways=OPEN_ALWAYS,TruncateExisting=TRUNCATE_EXISTING};
enum Share{FileShareRead=FILE_SHARE_READ,FileShareWrite=FILE_SHARE_WRITE,FileShareDelete=FILE_SHARE_DELETE};
enum Access{GenericRead=GENERIC_READ,GenericWrite=GENERIC_WRITE,
GenericExecute=GENERIC_EXECUTE,GenericAll=GENERIC_ALL};
enum Attributes{ReadOnly=FILE_ATTRIBUTE_READONLY,Hidden=FILE_ATTRIBUTE_HIDDEN,
System=FILE_ATTRIBUTE_SYSTEM,Directory=FILE_ATTRIBUTE_DIRECTORY,
Archive=FILE_ATTRIBUTE_ARCHIVE,Normal=FILE_ATTRIBUTE_NORMAL,
Temporary=FILE_ATTRIBUTE_TEMPORARY,Compressed=FILE_ATTRIBUTE_COMPRESSED,
Offline=FILE_ATTRIBUTE_OFFLINE};
int openFile(char *pPathFileName,Access access,Share share,Open open,Attributes attributes);
int closeFile(void);
int readFile(BYTE *ptrByte);
int readLine(BYTE *strLine);
int writeFile(BYTE *strByte);
int flushFile(void);
BOOL isOkay(void)const;
private:
FileInfo mFileInfo;
};
inline
int FileIO::openFile(char *pPathFileName,Access access,Share share,Open open,Attributes attributes)
{
closeFile();
return !(INVALID_HANDLE_VALUE==(HANDLE)::FileOpen(pPathFileName,&mFileInfo,access,share,open,attributes));
}
inline
int FileIO::closeFile(void)
{
flushFile();
return ::FileClose(&mFileInfo);
}
inline
int FileIO::readFile(BYTE *ptrByte)
{
return ::FileRead(&mFileInfo,ptrByte);
}
inline
int FileIO::readLine(BYTE *strLine)
{
return ::FileReadLine(&mFileInfo,strLine);
}
inline
int FileIO::writeFile(BYTE *strByte)
{
return ::FileWriteLine(&mFileInfo,strByte);
}
inline
int FileIO::flushFile(void)
{
return ::FileFlush(&mFileInfo);
}
inline
BOOL FileIO::isOkay(void)const
{
return INVALID_HANDLE_VALUE==mFileInfo.mhFileHandle;
}
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR lpszCmdLine,int /*nCmdShow*/)
{
FileIO openFile;
BYTE ptrByte;
DWORD byteCount;
DWORD elapsedTime;
String strMessage;
char lineString;
// if(!openFile.openFile(String(lpszCmdLine),
// FileIO::Access(int(FileIO::GenericRead)|int(FileIO::GenericWrite)),
// FileIO::FileShareRead,
// FileIO::OpenExisting,
// FileIO::Normal))return FALSE;
//#if 0
if(!openFile.openFile("c:\\smk.lst",
FileIO::Access(int(FileIO::GenericRead)|int(FileIO::GenericWrite)),
FileIO::FileShareWrite,
FileIO::CreateAlways,
FileIO::Normal))return FALSE;
elapsedTime=::GetTickCount();
for(int lineIndex=0;lineIndex<500000;lineIndex++)openFile.writeFile((BYTE*)"hello there");
elapsedTime=::GetTickCount()-elapsedTime;
elapsedTime/=1000L;
::sprintf(strMessage,"%ld bytes read int %ld seconds\n",byteCount,elapsedTime);
::MessageBox(::GetFocus(),strMessage,(LPSTR)"FileIO",MB_OK);
openFile.closeFile();
//#endif
#if 0
FileHandle logFile;
logFile.open("c:\\smk.lst",FileHandle::ReadWrite,FileHandle::ShareReadWrite,FileHandle::Overwrite);
if(!logFile.isOkay())return FALSE;
elapsedTime=::GetTickCount();
for(int lineIndex=0;lineIndex<500000;lineIndex++)logFile.writeLine("hello there");
logFile.flush();
logFile.close();
elapsedTime=::GetTickCount()-elapsedTime;
elapsedTime/=1000L;
::sprintf(strMessage,"%ld bytes read int %ld seconds\n",byteCount,elapsedTime);
::MessageBox(::GetFocus(),strMessage,(LPSTR)"FileIO",MB_OK);
#endif
return FALSE;
}

83
uudecode/MASM/CFILE.ASM Normal file
View File

@@ -0,0 +1,83 @@
;*************************************************************************************
; MODULE: CFILE.ASM DATE: APRIL 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT LAT MODEL
; FUNCTION : BUFFERED FILE FUNCTIONS
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
.CODE
_FileOpen proc near ; int FileOpen(char *pathFileName,FileInfo *pFileInfo,int access,int share,int open,int attributes)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index
CREATEFILE [ebp+08h],[ebp+10h],[ebp+14h],[ebp+18h],[ebp+1Ch] ; call create file
mov esi,[ebp+0Ch] ; move FileInfo ptr to esi
mov [FileInfo ptr [esi]].FileInfo@@mhFileHandle,eax ; store handle
pop esi ; restore source index
pop ebp ; restore previous frame
retn ; return near to caller
_FileOpen endp
_FileClose proc near
push ebp ; save prior frame
mov esp,esp ; create new stack frame
push esi ; save source index register
mov esi,[ebp+0Ch] ; move FileInfo ptr to esi
cmp [FileInfo ptr [esi]].FileInfo@@mhFileHandle,INVALID_HANDLE ; check for valid handle
je @@FileCloseEnd ; handle is not valid
CLOSEHANDLE [FileInfo ptr [esi]].FileInfo@@mhFileHandle ; close handle
mov [FileInfo ptr [esi]].FileInfo@@mhFileHandle,INVALID_HANDLE ; set handle to invalid state
@@FileCloseEnd: ; end sync address
pop esi ; restore source index
pop ebp ; restore prior stack frame
retn ; return near to caller
_FileClose endp
;FCLOSE MACRO sFileInfo
; LOCAL @@FCLOSEend
; cmp sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
; je @@FCLOSEend
; CLOSEHANDLE sFileInfo.FileInfo@@mhFileHandle
; mov sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
;@@FCLOSEend:
;ENDM
_FileRead proc near
push ebp
mov esp,esp
pop ebp
retn
_FileRead endp
_FileReadLine proc near
push ebp
mov esp,esp
pop ebp
retn
_FileReadLine endp
_FileWrite proc near
push ebp
mov esp,esp
pop ebp
retn
_FileWrite endp
_FileFlush proc near
push ebp
mov esp,esp
pop ebp
retn
_FileFlush endp
public _FileOpen
public _FileClose
public _FileRead
public _FileReadLine
public _FileWrite
public _FileFlush
END

228
uudecode/MASM/DECODE.MAK Normal file
View File

@@ -0,0 +1,228 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
!IF "$(CFG)" == ""
CFG=decode - Win32 Debug
!MESSAGE No configuration specified. Defaulting to decode - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "decode - Win32 Release" && "$(CFG)" != "decode - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "decode.mak" CFG="decode - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "decode - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "decode - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "decode - Win32 Debug"
CPP=cl.exe
!IF "$(CFG)" == "decode - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL :
CLEAN :
-@erase
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/decode.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/decode.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
LIB32_FLAGS=/nologo /out:"$(OUTDIR)/decode.lib"
LIB32_OBJS= \
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "..\..\exe\msuudc.lib"
CLEAN :
-@erase "..\..\exe\msuudc.lib"
-@erase ".\cfile.obj"
-@erase ".\Decode64.obj"
-@erase ".\Uudecode.obj"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /YX"windows.h" /c
CPP_PROJ=/nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D\
"__FLAT__" /D "STRICT" /Fp"$(INTDIR)/decode.pch" /YX"windows.h" /Fo"$(INTDIR)/"\
/c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/decode.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\exe\msuudc.lib"
LIB32_FLAGS=/nologo /out:"..\..\exe\msuudc.lib"
LIB32_OBJS= \
".\cfile.obj" \
".\Decode64.obj" \
".\Uudecode.obj"
"..\..\exe\msuudc.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "decode - Win32 Release"
# Name "decode - Win32 Debug"
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=.\Uudecode.asm
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# Begin Custom Build
InputPath=.\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\Decode64.asm
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# Begin Custom Build
InputPath=.\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\cfile.asm
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# Begin Custom Build
InputPath=.\cfile.asm
InputName=cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

233
uudecode/MASM/DECODE64.ASM Normal file
View File

@@ -0,0 +1,233 @@
;*************************************************************************************
; MODULE: DECODE64.ASM DATE: JANUARY 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : BASE64 DECODER
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
.DATA
inputFile FileInfo <>
outputFile FileInfo <>
lineData DB 400h DUP(0)
szDefaultOutputPathFileName DB 'IMAGE.JPG',00h
szOutputPathFileName DB 0FFh DUP(0)
szFileNameLiteral DB 'filename=',00h
szOutBytes DB 04h DUP(0)
szInputPathFileName DD ?
szBase64ID DB '/9j/',00h
szExtension DB '.JPG',00H
szBase64Vector DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',00h
szBase64End DB '---',00h
num DD ?
lineLength DD ?
itemIndex DD ?
itemCount DD ?
numIndex DD ?
valueItem DD ?
.CODE
_decodeBase64 proc near ; WORD decodeBase64(const char *szPathFileName,char *szPathDecodeFileName)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov itemCount,0000h ; initialize decoded counter to zero
push dword ptr[ebp+8] ; save pathFileName
pop szInputPathFileName ; restore into inputPathFileName
cmp szInputPathFileName,0000h ; is the file na null
je @@error ; if so then we've got an error
FOPEN szInputPathFileName,inputFile,GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
cmp inputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; do we have a valid handle ?
je @@error ; if the handle is invalid then we've got an error
call _outputName ; get output file name
STRCPY [ebp+0Ch],offset szOutputPathFileName ; copy szOutputPathFileName to supplied buffer
@@search: ; search sync address
FGETS inputFile,lineData ; get input line
cmp eax,0000h ; did we read anything
je @@end ; if not we're done
STRSTR lineData,szFileNameLiteral ; look for "filename=" literal
cmp eax,0000h ; did we find it
jne @@nameFile ; if so then extract the filename
STRNCMP szBase64ID,lineData ; compare line to base64 identifier
cmp eax,0001h ; if we've got it then we start decoding
je @@beginDecode ; jump to decode handler
jmp @@search ; keep going
@@nameFile: ; nameFile sync address
push eax ; save address of filename literal
push offset szOutputPathFileName ; save address of filename buffer
call _nameFile ; extract the file name
add esp,08h ; reset stack frame
jmp @@search ; keep going
@@beginDecode: ; begin decode sync address
FOPEN offset szOutputPathFileName,outputFile,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
@@continueDecode: ; continue decode sync address
STRLEN lineData ; get length of lineData
dec eax ; decrement line length
mov lineLength,eax ; move line length into lineLength
mov itemIndex,0000h ; set itemIndex to zero
@@itemLoop: ; itemLoop sync address
mov valueItem,0000h ; set valueItem to zero
mov esi,offset lineData ; move ptr lineData to esi register
add esi,itemIndex ; add itemIndex to address
cmp byte ptr[esi+02h],'=' ; is pChar[2] equal to '='?
je @@assignOne ; if so then num=1
cmp byte ptr[esi+03h],'=' ; else if pChar[3]='='
je @@assignTwo ; then num=2
mov num,0003h ; otherwise num=3
jmp @@assignContinue ; continue
@@assignOne: ; assignment sync address
mov num,0001h ; assign 1 to num
jmp @@assignContinue ; continue
@@assignTwo: ; assignment sync address
mov num,0002h ; assign two to num
jmp @@assignContinue ; continue
@@assignContinue: ; end assignment sync address
mov numIndex,0000h ; set numIndex to zero
@@numLoop: ; numIndex loop sync address
xor eax,eax ; clear out eax
mov edi,numIndex ; move numIndex into destination index
mov al,byte ptr[esi+edi] ; get the byte at pChar[numIndex]
STRCHR szBase64Vector,eax ; ::strchar(szBase64Vector,pChar[numIndex])
cmp eax,0000h ; did we find the token
je @@end ; if not then we've got an error
mov edi,eax ; move address of found token to edi (pTok)
sub edi,offset szBase64Vector ; perform (pTok-szBase64Vector) result to edi
mov eax,0003h ; move 3 into eax
sub eax,numIndex ; perform (3-numIndex) result to eax
mov edx,0006h ; move 6 into edx
imul eax,edx ; perform (3-numIndex)*6 result to eax
mov cl,al ; move shift value into cl register
shl edi,cl ; perform (pTok-smszVec)<<((3-numIndex)*6) result to edi
add valueItem,edi ; valueItem+=(pTok-smszVec)<<((3-numIndex)*6)
inc numIndex ; increment numIndex
mov eax,numIndex ; move numIndex into eax register
cmp eax,num ; compare numIndex to num
jle @@numLoop ; loop through <= operation
mov numIndex,0002h ; set numIndex to 2
@@nextNumLoop: ; next numLoop sync address
mov esi,offset szOutBytes ; move szOutBytes address into esi
mov edi,numIndex ; move numIndex into edi
mov eax,valueItem ; move valueItem into eax register
and eax,000000FFh ; apply bit mask
mov byte ptr[esi+edi],al ; set byte in szOutBytes
shr valueItem,08h ; shift valueItem right 8 bytes
dec numIndex ; decrement numIndex
cmp numIndex,0000h ; compare numIndex to zero
jge @@nextNumLoop ; if >=0 keep going
mov esi,offset szOutBytes ; move szOutBytes to esi
xor edi,edi ; clear edi
@@writeLoop: ; writeLoop sync address
FWRITE outputFile,byte ptr[esi+edi] ; write out the byte
inc edi ; increment edi
cmp edi,num ; compare edi to num
jl @@writeLoop ; if it's less then keep going
add itemIndex,0004h ; increment itemIndex by four
mov eax,itemIndex ; move itemIndex to eax
cmp eax,lineLength ; compare itemIndex to lineLength
jl @@itemLoop ; if it's less that keep going
FGETS inputFile,lineData ; get another line
cmp eax,0000h ; did we get a line?
je @@end ; if not then we're done
STRNCMP lineData,szBase64End ; look for trailer signature
cmp eax,0001h ; if we found it then another image may follow
je @@prepNewImage ; flush and close current output file
jmp @@continueDecode ; otherwise keep going
@@prepNewImage: ; prepNewImage sync address
inc itemCount ; increment decoded counter
FFLUSH outputFile ; flush output file
CLOSEHANDLE outputFile.FileInfo@@mhFileHandle ; close output file
mov outputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; invalidate the handle
jmp @@search ; try to decode another image
@@end: ; end sync address
cmp outputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; is this a valid handle
je @@closePrimary ; is handle is invalid, just close the input file
FFLUSH outputFile ; flush the output file
CLOSEHANDLE outputFile.FileInfo@@mhFileHandle ; close output file
@@closePrimary: ; close primary sync address
CLOSEHANDLE inputFile.FileInfo@@mhFileHandle ; close input file
@@error: ; error sync address
mov eax,itemCount ; move decoded count to eax register
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore prior stack frame
retn ; return near to caller
_decodeBase64 endp
_nameFile proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov edi,[ebp+8] ; move dest string to destination index register
mov esi,[ebp+0Ch] ; move source string to source index register
@@NAMEFILEquoteLoop: ; first quote loop control
mov al,byte ptr[esi] ; move byte into al
cmp al,00h ; is it null?
je @@NAMEFILEerror ; if it's null then we've got an error
cmp al,'"' ; is it the first quote ?
je @@NAMEFILEreadFile ; if so then get the filename
inc esi ; increment along esi
jmp @@NAMEFILEquoteLoop ; keep going
@@NAMEFILEreadFile: ; read file name sync address
inc esi ; skip past the first quote
mov al,byte ptr[esi] ; read from file name
cmp al,'"' ; is the byte the closing quote?
je @@NAMEFILEreadEnd ; if so then we're done
cmp al,00h ; is the byte a null byte?
je @@NAMEFILEreadEnd ; if so then we're done
mov byte ptr[edi],al ; store the byte in destination
inc edi ; increment along destination
jmp @@NAMEFILEreadFile ; keep going
@@NAMEFILEreadEnd: ; read end sync address
mov byte ptr[edi],00h ; null terminate the string
mov eax,0001h ; set return code
jmp @@NAMEFILEend ; we're done
@@NAMEFILEerror: ; error sync address
xor eax,eax ; set error return
@@NAMEFILEend: ; end proc sync address
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore prior stack frame
retn ; return near to caller
_nameFile endp
_outputName proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,szInputPathFileName ; set esi to input name address
mov edi,offset szOutputPathFileName ; set edi to output name address
xor ecx,ecx ; clear ecx for indexing
@@copyLoop: ; copy loop sync address
mov al,[esi+ecx] ; get byte from source to al
cmp al,00h ; is this a null byte
je @@copyDone ; if so then we're done copying
mov byte ptr[edi],al ; store the byte into destination
inc edi ; increment destination
inc ecx ; increment source index
jmp @@copyLoop ; loop through the string
@@copyDone: ; copy done sync address
mov byte ptr[edi],00h ; set null terminator
ifdef TASM
STRCHR szOutputPathFileName,'.' ; look for extension marker
else
STRCHR offset szOutputPathFileName,'.' ; look for extension marker
endif
cmp eax,0000h ; did we find it?
je @@nameError ; if not then we set output name to default
mov byte ptr[eax],0000h ; otherwise terminate the string
STRCAT szOutputPathFileName,szExtension ; cat the string with ".jpg"
jmp @@outputDone ; we're done
@@nameError: ; nameError sync address
STRLEN szDefaultOutputPathFileName ; get the length of the default file name
MEMCPY offset szOutputPathFileName,offset szDefaultOutputPathFileName,eax ; set output file name to default
@@outputDone: ; outputDone sync address
pop edi ; restore destination index
pop esi ; restore source index
pop ebp ; restore previous stack frame
retn ; return near to caller
_outputName endp
public _decodeBase64
END

View File

@@ -0,0 +1,59 @@
;*************************************************************************************
; MODULE: DEVIOCTL.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : FILE RELATED CONSTANTS
;*************************************************************************************
FILE_SHARE_READ equ 00000001h
FILE_SHARE_WRITE equ 00000002h
FILE_SHARE_DELETE equ 00000004h
FILE_ATTRIBUTE_READONLY equ 00000001h
FILE_ATTRIBUTE_HIDDEN equ 00000002h
FILE_ATTRIBUTE_SYSTEM equ 00000004h
FILE_ATTRIBUTE_DIRECTORY equ 00000010h
FILE_ATTRIBUTE_ARCHIVE equ 00000020h
FILE_ATTRIBUTE_NORMAL equ 00000080h
FILE_ATTRIBUTE_TEMPORARY equ 00000100h
FILE_ATTRIBUTE_COMPRESSED equ 00000800h
FILE_ATTRIBUTE_OFFLINE equ 00001000h
CREATE_NEW equ 00000001h
CREATE_ALWAYS equ 00000002h
OPEN_EXISTING equ 00000003h
OPEN_ALWAYS equ 00000004h
TRUNCATE_EXISTING equ 00000005h
DELETE equ 00010000h
READ_CONTROL equ 00020000h
WRITE_DAC equ 00040000h
WRITE_OWNER equ 00080000h
SYNCHRONIZE equ 00100000h
STANDARD_RIGHTS_REQUIRED equ 000F0000h
STANDARD_RIGHTS_READ equ READ_CONTROL
STANDARD_RIGHTS_WRITE equ READ_CONTROL
STANDARD_RIGHTS_EXECUTE equ READ_CONTROL
STANDARD_RIGHTS_ALL equ 001F0000h
SPECIFIC_RIGHTS_ALL equ 0000FFFFh
FILE_READ_DATA equ 0001h
FILE_LIST_DIRECTORY equ 0001h
FILE_WRITE_DATA equ 0002h
FILE_ADD_FILE equ 0002h
FILE_APPEND_DATA equ 0004h
FILE_ADD_SUBDIRECTORY equ 0004h
FILE_CREATE_PIPE_INSTANCE equ 0004h
FILE_READ_EA equ 0008h
FILE_WRITE_EA equ 0010h
FILE_EXECUTE equ 0020h
FILE_TRAVERSE equ 0020h
FILE_DELETE_CHILD equ 0040h
FILE_READ_ATTRIBUTES equ 0080h
FILE_WRITE_ATTRIBUTES equ 0100h
FILE_ALL_ACCESS equ STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 1FFh
FILE_GENERIC_READ equ STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE
FILE_GENERIC_WRITE equ STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE
FILE_GENERIC_EXECUTE equ STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE
GENERIC_READ equ 80000000h
GENERIC_WRITE equ 40000000h
GENERIC_EXECUTE equ 20000000h
GENERIC_ALL equ 10000000h

228
uudecode/MASM/Decode.bak Normal file
View File

@@ -0,0 +1,228 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
!IF "$(CFG)" == ""
CFG=decode - Win32 Debug
!MESSAGE No configuration specified. Defaulting to decode - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "decode - Win32 Release" && "$(CFG)" != "decode - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "decode.mak" CFG="decode - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "decode - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "decode - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "decode - Win32 Debug"
CPP=cl.exe
!IF "$(CFG)" == "decode - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL :
CLEAN :
-@erase
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/decode.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/decode.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
LIB32_FLAGS=/nologo /out:"$(OUTDIR)/decode.lib"
LIB32_OBJS= \
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "..\..\exe\msuudc.lib"
CLEAN :
-@erase "..\..\exe\msuudc.lib"
-@erase ".\cfile.obj"
-@erase ".\Decode64.obj"
-@erase ".\Uudecode.obj"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /YX"windows.h" /c
CPP_PROJ=/nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D\
"__FLAT__" /D "STRICT" /Fp"$(INTDIR)/decode.pch" /YX"windows.h" /Fo"$(INTDIR)/"\
/c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/decode.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\exe\msuudc.lib"
LIB32_FLAGS=/nologo /out:"..\..\exe\msuudc.lib"
LIB32_OBJS= \
".\cfile.obj" \
".\Decode64.obj" \
".\Uudecode.obj"
"..\..\exe\msuudc.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "decode - Win32 Release"
# Name "decode - Win32 Debug"
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=.\Uudecode.asm
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# Begin Custom Build
InputPath=.\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\Decode64.asm
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# Begin Custom Build
InputPath=.\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\cfile.asm
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# Begin Custom Build
InputPath=.\cfile.asm
InputName=cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

150
uudecode/MASM/Decode.dsp Normal file
View File

@@ -0,0 +1,150 @@
# Microsoft Developer Studio Project File - Name="decode" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 5.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=decode - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "Decode.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Decode.mak" CFG="decode - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "decode - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "decode - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
!IF "$(CFG)" == "decode - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ".\Release"
# PROP Intermediate_Dir ".\Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\msvcobj"
# PROP Intermediate_Dir ".\msvcobj"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /YX"windows.h" /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\exe\msuudc.lib"
!ENDIF
# Begin Target
# Name "decode - Win32 Release"
# Name "decode - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\cfile.asm
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# Begin Custom Build
InputPath=.\cfile.asm
InputName=cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\Decode64.asm
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# Begin Custom Build
InputPath=.\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\Uudecode.asm
!IF "$(CFG)" == "decode - Win32 Release"
!ELSEIF "$(CFG)" == "decode - Win32 Debug"
# Begin Custom Build
InputPath=.\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff $(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

29
uudecode/MASM/Decode.dsw Normal file
View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 5.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "decode"=.\Decode.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

BIN
uudecode/MASM/Decode.mdp Normal file

Binary file not shown.

166
uudecode/MASM/Openfile.inc Normal file
View File

@@ -0,0 +1,166 @@
;*************************************************************************************
; MODULE: OPENFILE.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : FILE HANDLING MACROS
;*************************************************************************************
HANDLE STRUC
PHANDLE TYPEDEF FAR PTR HANDLE
HANDLE@@mHandle DD ?
HANDLE ENDS
INVALID_HANDLE equ 0FFFFFFFFh
CREATEFILE MACRO pathFileName,access,share,open,attribute
push 0000h ; save handle to template (null)
push attribute ; save attributes
push open ; save creation flags
push 0000h ; save security attributes
push share ; save share mode
push access ; save acess mode
push pathFileName ; save pathFileName
call dword ptr __imp__CreateFileA@28 ; call create
ENDM
READFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesRead on stack
mov eax,esp ; move bytesRead address to eax
push 0000h ; save overlapped structure address
push eax ; save pointer to bytesRead
push sizeBuffer ; save length of buffer
push offset szBuffer ; save address of read buffer
push hFileHandle ; save file handle
call dword ptr __imp__ReadFile@20 ; call read
mov eax,[esp] ; move bytesRead value to eax
add esp,04h ; remove bytesRead variable from stack
ENDM
WRITEFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesWritten variable on stack
mov eax,esp ; move bytesWritten address to eax
push 0000h ; save overlapped structure address
push eax ; save bytesWritten address
push sizeBuffer ; save write length
push offset szBuffer ; save address of write buffer
push hFileHandle ; save file handle
call dword ptr __imp__WriteFile@20 ; call write
mov eax,[esp] ; move number of bytes written to eax
add esp,04h ; remove bytesWritten variable from stack
ENDM
CLOSEHANDLE MACRO handle
push handle ; save file handle
call dword ptr __imp__CloseHandle@4 ; call close
ENDM
FOPEN MACRO pathFileName,sFileInfo,access,share,open,attribute
CREATEFILE pathFileName,access,share,open,attribute
mov sFileInfo.FileInfo@@mhFileHandle,eax
ENDM
FCLOSE MACRO sFileInfo
LOCAL @@FCLOSEend
cmp sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
je @@FCLOSEend
CLOSEHANDLE sFileInfo.FileInfo@@mhFileHandle
mov sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
@@FCLOSEend:
ENDM
FREAD MACRO sFileInfo,ptrByte
LOCAL @@FREADreadError,@@FREADsimpleRead,@@FREADdone
cmp sFileInfo.FileInfo@@mBufferIndex,00h ; is buffer index zero
jne @@FREADsimpleRead ; if not then just grab next byte
READFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,MaxLength ; otherwise we fill the read buffer
cmp eax,0000h ; did we read any data ?
je @@FREADreadError ; if not then we're done
mov sFileInfo.FileInfo@@mBufferIndex,eax ; move number of bytes read to buffer index
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
jmp @@FREADsimpleRead ; grab next byte
@@FREADreadError: ; read error sync address
xor eax,eax ; set return code
jmp @@FREADdone ; we're done
@@FREADsimpleRead: ; simple read sync address
mov eax,sFileInfo.FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov al,byte ptr[eax] ; move byte value to al
mov byte ptr[ptrByte],al ; move byte value to user buffer
inc sFileInfo.FileInfo@@mlpBufferPointer ; increment along lpBufferPointer
dec sFileInfo.FileInfo@@mBufferIndex ; decrement the buffer index
mov eax,01h ; set the return code
@@FREADdone: ; done reading sync
ENDM
FWRITE MACRO sFileInfo,ptrByte
LOCAL @@FWRITEsimpleWrite,@@FWRITEuseBuffer
cmp sFileInfo.FileInfo@@mBufferIndex,MaxLength ; compare buffer index to MaxLength
jl @@FWRITEsimpleWrite ; if it's less then insert char into buffer
WRITEFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,MaxLength ; other wise
mov sFileInfo.FileInfo@@mBufferIndex,0000h ; set buffer index to zero
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEsimpleWrite: ; simple write sync address
cmp sFileInfo.FileInfo@@mlpBufferPointer,0000h ; is buffer pointer null?
jne @@FWRITEuseBuffer ; if not then just use it
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEuseBuffer: ; use buffer sync address
mov cl,byte ptr[ptrByte] ; move byte to write to cl
mov eax,sFileInfo.FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov byte ptr[eax],cl ; move byte into buffer
inc sFileInfo.FileInfo@@mlpBufferPointer ; increment buffer pointer
inc sFileInfo.FileInfo@@mBufferIndex ; increment buffer index
mov eax,01h ; set return code
ENDM
FFLUSH MACRO sFileInfo
LOCAL @@FFLUSHexit
cmp sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
je @@FFLUSHexit
WRITEFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,sFileInfo.FileInfo@@mBufferIndex ; write buffer to disk
mov sFileInfo.FileInfo@@mBufferIndex,0000h ; set buffer index to zero
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FFLUSHexit:
ENDM
FGETS MACRO sFileInfo,szBuffer
LOCAL @@FGETScont,@@FGETexit,@@FGETsetError,@@FGETScrlf,@@FGETlf
push esi ; save source index register
mov esi,offset szBuffer ; move address of buffer into esi
@@FGETScont: ; loop control
FREAD sFileInfo,esi ; read a byte
cmp eax,0000h ; was our read successful?
je @@FGETexit ; if not we're done
cmp byte ptr[esi],0Dh ; is the byte a carriage return?
je @@FGETScrlf ; if yes then jump to handler
cmp byte ptr[esi],0Ah ; is the byte a lone linefeed ?
je @@FGETlf ; if so then handle it
inc esi ; increment along esi
jmp @@FGETScont ; keep reading
@@FGETlf: ; handle the linefeed
jmp @@FGETexit ; we're done here
@@FGETScrlf: ; carriage return control
mov byte ptr[esi],00h ; move null into line data
sub esp,04h ; create temp var on stack
mov esi,esp ; esi points to temp var
FREAD sFileInfo,esi ; read line-feed into temp var
add esp,04h ; restore stack
@@FGETexit: ; exit sync address
pop esi ; restore source index register
ENDM
FileInfo STRUC
MaxLength equ 800h
FileInfo@@mhFileHandle HANDLE <INVALID_HANDLE>
FileInfo@@mszBuffer DB MaxLength DUP(0)
FileInfo@@mBufferIndex DD (0)
FileInfo@@mlpBufferPointer DD (0)
FileInfo ENDS
extrn __imp__WriteFile@20:near
extrn __imp__CloseHandle@4:near
extrn __imp__CreateFileA@28:near
extrn __imp__GetLastError@0:near
extrn __imp__ReadFile@20:near

122
uudecode/MASM/STRING.INC Normal file
View File

@@ -0,0 +1,122 @@
;*************************************************************************************
; MODULE: STRING.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : STRING RELATED MACROS
;*************************************************************************************
STRSTR MACRO szStringOne,szStringTwo
push offset szStringTwo ; save string one
push offset szStringOne ; save string two
call _strstr ; call standard library strstr
add esp,08h ; reset stack frame
ENDM
STRCHR MACRO szString,charByte
push charByte ; save charByte
push offset szString ; save string
call _strchr ; call standard library strchr
add esp,08h ; reset stack frame
ENDM
STRCAT MACRO szDstString,szSrcString
push offset szSrcString ; save source string
push offset szDstString ; save destination string
call _strcat ; call standard library strcat
add esp,08h ; reset stack frame
ENDM
STRLEN MACRO szData
push edi ; save destination index register
push ecx ; save ecx register
mov edi,offset szData ; get string to destination index register
mov ecx,0FFFFh ; move 65535 to ecx register
xor eax,eax ; clear eax register
repnz scasb ; scan string
mov eax,0FFFFh ; move 65535 to eax
sub eax,ecx ; subtract number of bytes scanned
dec eax ; decrement result
pop ecx ; restore ecx register
pop edi ; restore destination index register
ENDM
MEMCPY MACRO szDstData,szSrcData,lengthCopy
push esi ; save source index register
push edi ; save destination index register
mov esi,szSrcData ; move source data to source index register
mov edi,szDstData ; move destination data to destination index register
mov ecx,lengthCopy ; move number of bytes to copy to ecx register
rep movsb ; copy data
pop edi ; restore destination index register
pop esi ; restore source index register
ENDM
STRCPY MACRO szDstData,szSrcData
STRLEN szSrcData ; get length of source string to eax
MEMCPY szDstData,szSrcData,eax ; copy source into destination
push esi ; save source index register
mov esi,szDstData ; move destination string into esi
mov byte ptr[esi+eax],00h ; null terminate the string
pop esi ; restore source index register
ENDM
STRCMP MACRO szStringOne,szStringTwo
LOCAL @@STRCMPnotEqual,@@STRCMPequal,@@STRCMPexit
push ecx ; save ecx register
push edi ; save destination index register
push esi ; save source index register
mov edi,offset szStringOne ; move string one to destination index register
mov esi,offset szStringTwo ; move string two to source index register
STRLEN szStringOne ; get length of string one
mov ecx,eax ; save length to ecx register
STRLEN szStringTwo ; get length of string two
cmp ecx,eax ; compare lengths
jne @@STRCMPnotEqual ; if lengths differ, strings are not equal
@@STRCMPloop: ; loop control
mov al,byte ptr[esi] ; get byte from string two
cmp al,byte ptr[edi] ; compare with byte from string one
jne @@STRCMPnotEqual ; if bytes differ then we're done
loop @@STRCMPloop ; iterate through string length
@@STRCMPequal: ; equality control
mov eax,0001h ; set return code
jmp @@STRCMPexit ; we're done
@@STRCMPnotEqual: ; inequality control
xor eax,eax ; set return code
@@STRCMPexit: ; exit sync address
pop esi ; restore source index register
pop edi ; restore destination index register
pop ecx ; restore ecx register
ENDM
STRNCMP MACRO szStringOne,szStringTwo
LOCAL @@STRNCMPloop,@@STRNCMPequal,@@STRNCMPnotEqual,@@STRNCMPexit
push ecx ; save ecx register
push edi ; save edi register
push esi ; save source index register
mov edi,offset szStringOne ; move string one to destination index register
mov esi,offset szStringTwo ; move string two to source index register
STRLEN szStringOne ; get length of string one
mov ecx,eax ; save length to ecx register
STRLEN szStringTwo ; get length of string two
cmp ecx,eax ; compare the lengths
jle @@STRNCMPloop ; string one is less equal to string two
mov ecx,eax ; string two is less, so use it's length
@@STRNCMPloop: ; loop control
mov al,byte ptr[esi] ; get byte from string one
cmp al,byte ptr[edi] ; compare with byte from string two
jne @@STRNCMPnotEqual ; if byte are unequal, strings are unequal
inc edi ; increment along string two
inc esi ; increment along string one
loop @@STRNCMPloop ; keep going
@@STRNCMPequal: ; string equal sync address
mov eax,0001h ; set return code
jmp @@STRNCMPexit ; we're done
@@STRNCMPnotEqual: ; string unequal sync address
xor eax,eax ; set return code
@@STRNCMPexit: ; exit sync address
pop esi ; restore source index register
pop edi ; restore destination index register
pop ecx ; restore ecx register
ENDM
extrn _strstr:near
extrn _strchr:near
extrn _strcat:near

270
uudecode/MASM/UUENCODE.ASM Normal file
View File

@@ -0,0 +1,270 @@
;*************************************************************************************
; MODULE: UUENCODE.ASM DATE: OCTOBER 9,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT LAT MODEL
; FUNCTION : UUENCODER
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
DECODEBYTE MACRO index,offset
mov al,byte ptr [index+offset] ; get byte at index register + offset
sub al,' ' ; subtract space
and al,3Fh ; and with 3Fh
ENDM
.DATA
inputFile FileInfo <>
outputFile FileInfo <>
status DD (0)
szInputPathFileName DD ?
; szBeginLine DB 'begin ',0000h
; szEndLine DB 'end',0000h
; szLineData DB 400h DUP(0)
; numItem DB (0)
; charByte DB (0)
; szOutputPathFileName DB 0FFh DUP(0)
.CODE
_uuencode proc near ; void uuencode(char *szInputPathFileName)
push ebp ; save stack frame
mov ebp,esp ; create new stack frame
push esi ; save source index register
push edi ; save destination index register
push dword ptr[ebp+08h] ; save inputPathFileName
pop szInputPathFileName ; restore into szInputPathFileName
cmp szInputPathFileName,0000h ; is the file name null
je @@errorExit ; if so then we're done
FOPEN szInputPathFileName,inputFile,GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
cmp eax,INVALID_HANDLE
je @@errorExit
call _getUUEFileName
@@errorExit: ; error exit sync address
mov eax,status ; set return code
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore previous frame
retn ; return near to caller
_uuencode endp
_getUUEFileName proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
mov esi,szInputPathFileName ; move input file name to esi
; STRCHR szInputPathFileName,'.'
push '.'
push szInputPathFileName
call _strchr
add esp,08h
pop ebp ; restore stack frame
retn ; return near to caller
_getUUEFileName endp
if 0
_getOutputFileName proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,offset szLineData ; move input line address into source index
mov edi,offset szOutputPathFileName ; move output file name buffer into destination index
xor ecx,ecx ; clear ecx register for counting
@@munchLoop: ; munch loop sync address
mov al,byte ptr[esi] ; get byte from input line
inc esi ; increment esi along input line
cmp al,' ' ; did we read a space
jne @@munchLoop ; if not then keep reading
inc ecx ; increment space counter
cmp ecx,0002h ; is this the second space
jne @@munchLoop ; if not then keep reading
@@copyLoop: ; copy loop sync address
mov al,byte ptr[esi] ; get source byte into al register
mov byte ptr[edi],al ; copy byte into destination
inc esi ; increment along source line
inc edi ; increment along destination
cmp al,0000h ; compare input byte to zero
jne @@copyLoop ; if it's not null then keep going
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore stack frame
retn ; return near to caller
_getOutputFileName endp
endif
if 0
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
push dword ptr[ebp+08h] ; save inputPathFileName
pop szInputPathFileName ; restore into szInputPathFileName
cmp szInputPathFileName,0000h ; is the file name null
je @@errorExit ; if so then we're done
FOPEN szInputPathFileName,inputFile,GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
cmp eax,INVALID_HANDLE
je @@errorExit
@@munchLoop:
FGETS inputFile,szLineData ; read a line
cmp eax,0000h ; did the read succeed ?
je @@endRead ; if not then we're done
STRNCMP szBeginLine,szLineData ; compare line to signature
cmp eax,0001h ; did we find the signature
jne @@munchLoop ; if not then keep reading
call _getOutputFileName ; get output file name
FOPEN offset szOutputPathFileName,outputFile,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
cmp eax,INVALID_HANDLE ; was there a problem creating the output file
je @@endRead ; if so then we're done
@@readLoop: ; read loop sync address
mov esi,offset szLineData ; assign input line address to esi
FGETS inputFile,szLineData ; read an input line
cmp eax,0000h ; check for read error
je @@endDecode ; if there was an error, then we're done
xor eax,eax ; clear eax register
DECODEBYTE esi,00h ; decode the byte
mov numItem,al ; move the decoded item into numItem
cmp numItem,0000h ; compare numItem to zero
jle @@endDecode ; if it's less than or equal, we're done
inc esi ; increment line pointer
@@decodeLoop: ; decode loop sync address
cmp numItem,0000h ; compare numItem to zero
jle @@readLoop ; if it's less than or equal, get another line
cmp numItem,0003h ; compare numItem to 3
jge @@handleItemFGE3 ; handle (numItem>=3)
cmp numItem,0001h ; compare numItem to 1
jge @@handleItemGE1 ; handle (numItem>=1)
@@GE1Ret: ; return sync address
cmp numItem,0002h ; compare numItem to 2
jge @@handleItemGE2 ; handle (numItem>=2)
@@GE2Ret: ; return sync address
cmp numItem,0003h ; compare numItem to 3
jge @@handleItemGE3 ; handle (numItem>=3)
@@GE3Ret: ; return sync address
add esi,0004h ; increment line pointer
sub numItem,0003h ; subtract 3 from numItem
jmp @@decodeLoop ; keep going
@@handleItemFGE3: ; return sunc address
DECODEBYTE esi,00h ; decode the byte
mov cl,02h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,01h ; decode the byte
mov cl,04h ; move shift value into cl register
shr al,cl ; perform right shift
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,02h ; decode byte
mov cl,02h ; move shift value into cl register
shr al,cl ; perform right shift
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
DECODEBYTE esi,02h ; decode byte
mov cl,06h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,03h ; decode byte
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
jmp @@GE3Ret ; jump back
@@handleItemGE1: ; (numItem>=1) sync address
DECODEBYTE esi,00h ; decode byte
mov cl,02h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; mov shift value into cl register
shr ax,cl ; perform right shift
or charByte,al ; or the result into charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE1Ret ; return
@@handleItemGE2: ; (numItem>=2) sync address
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,02h ; decode byte
mov cl,02h ; move shift value into cl register
shr ax,cl ; perform right shift
or charByte,al ; or result into charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE2Ret ; return
@@handleItemGE3: ; (numItem>=3) sync address
DECODEBYTE esi,02h ; decode byte
mov cl,06h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,03h ; decode byte
or charByte,al ; or result with charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE3Ret ; return
@@endDecode: ; end decode sync address
FGETS inputFile,szLineData ; get final line from input file s/b 'end'
STRNCMP szLineData,szEndLine ; compare last line to endLine
cmp eax,0000h ; check return
je @@setError ; if it's not equal to 'end' we've got an error
mov status,0001h ; set success
jmp @@endRead ; skip over next instruction(s)
@@setError: ; setError sync address
mov status,0000h ; set failure
@@endRead: ; end read sync address
FCLOSE inputFile ; close input file
FFLUSH outputFile ; flush output file
FCLOSE outputFile ; close output file
@@errorExit: ; error exit sync address
mov eax,status ; set return code
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_uudecode endp
_getOutputFileName proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,offset szLineData ; move input line address into source index
mov edi,offset szOutputPathFileName ; move output file name buffer into destination index
xor ecx,ecx ; clear ecx register for counting
@@munchLoop: ; munch loop sync address
mov al,byte ptr[esi] ; get byte from input line
inc esi ; increment esi along input line
cmp al,' ' ; did we read a space
jne @@munchLoop ; if not then keep reading
inc ecx ; increment space counter
cmp ecx,0002h ; is this the second space
jne @@munchLoop ; if not then keep reading
@@copyLoop: ; copy loop sync address
mov al,byte ptr[esi] ; get source byte into al register
mov byte ptr[edi],al ; copy byte into destination
inc esi ; increment along source line
inc edi ; increment along destination
cmp al,0000h ; compare input byte to zero
jne @@copyLoop ; if it's not null then keep going
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore stack frame
retn ; return near to caller
_getOutputFileName endp
public _uudecode
endif
public _uuencode
END

190
uudecode/MASM/Uudecode.asm Normal file
View File

@@ -0,0 +1,190 @@
;*************************************************************************************
; MODULE: DECODE64.ASM DATE: JANUARY 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT LAT MODEL
; FUNCTION : BASE64 DECODER
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
DECODEBYTE MACRO index,offset
mov al,byte ptr [index+offset] ; get byte at index register + offset
sub al,' ' ; subtract space
and al,3Fh ; and with 3Fh
ENDM
.DATA
inputFile FileInfo <>
outputFile FileInfo <>
szBeginLine DB 'begin ',0000h
szEndLine DB 'end',0000h
szLineData DB 400h DUP(0)
numItem DB (0)
charByte DB (0)
status DD (0)
szOutputPathFileName DB 0FFh DUP(0)
szInputPathFileName DD ?
.CODE
_uudecode proc near ; void uudecode(char *szInputPathFileName,char *szPathDecodedFileName)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
push dword ptr[ebp+08h] ; save inputPathFileName
pop szInputPathFileName ; restore into szInputPathFileName
cmp szInputPathFileName,0000h ; is the file name null
je @@errorExit ; if so then we're done
FOPEN szInputPathFileName,inputFile,GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
cmp eax,INVALID_HANDLE
je @@errorExit
@@munchLoop:
FGETS inputFile,szLineData ; read a line
cmp eax,0000h ; did the read succeed ?
je @@endRead ; if not then we're done
STRNCMP szBeginLine,szLineData ; compare line to signature
cmp eax,0001h ; did we find the signature
jne @@munchLoop ; if not then keep reading
call _getOutputFileName ; get output file name
STRCPY [ebp+0Ch],offset szOutputPathFileName ; copy szOutputPathFileName to supplied buffer
FOPEN offset szOutputPathFileName,outputFile,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
cmp eax,INVALID_HANDLE ; was there a problem creating the output file
je @@endRead ; if so then we're done
@@readLoop: ; read loop sync address
mov esi,offset szLineData ; assign input line address to esi
FGETS inputFile,szLineData ; read an input line
cmp eax,0000h ; check for read error
je @@endDecode ; if there was an error, then we're done
xor eax,eax ; clear eax register
DECODEBYTE esi,00h ; decode the byte
mov numItem,al ; move the decoded item into numItem
cmp numItem,0000h ; compare numItem to zero
jle @@endDecode ; if it's less than or equal, we're done
inc esi ; increment line pointer
@@decodeLoop: ; decode loop sync address
cmp numItem,0000h ; compare numItem to zero
jle @@readLoop ; if it's less than or equal, get another line
cmp numItem,0003h ; compare numItem to 3
jge @@handleItemFGE3 ; handle (numItem>=3)
cmp numItem,0001h ; compare numItem to 1
jge @@handleItemGE1 ; handle (numItem>=1)
@@GE1Ret: ; return sync address
cmp numItem,0002h ; compare numItem to 2
jge @@handleItemGE2 ; handle (numItem>=2)
@@GE2Ret: ; return sync address
cmp numItem,0003h ; compare numItem to 3
jge @@handleItemGE3 ; handle (numItem>=3)
@@GE3Ret: ; return sync address
add esi,0004h ; increment line pointer
sub numItem,0003h ; subtract 3 from numItem
jmp @@decodeLoop ; keep going
@@handleItemFGE3: ; return sunc address
DECODEBYTE esi,00h ; decode the byte
mov cl,02h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,01h ; decode the byte
mov cl,04h ; move shift value into cl register
shr al,cl ; perform right shift
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,02h ; decode byte
mov cl,02h ; move shift value into cl register
shr al,cl ; perform right shift
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
DECODEBYTE esi,02h ; decode byte
mov cl,06h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,03h ; decode byte
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
jmp @@GE3Ret ; jump back
@@handleItemGE1: ; (numItem>=1) sync address
DECODEBYTE esi,00h ; decode byte
mov cl,02h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; mov shift value into cl register
shr ax,cl ; perform right shift
or charByte,al ; or the result into charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE1Ret ; return
@@handleItemGE2: ; (numItem>=2) sync address
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,02h ; decode byte
mov cl,02h ; move shift value into cl register
shr ax,cl ; perform right shift
or charByte,al ; or result into charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE2Ret ; return
@@handleItemGE3: ; (numItem>=3) sync address
DECODEBYTE esi,02h ; decode byte
mov cl,06h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,03h ; decode byte
or charByte,al ; or result with charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE3Ret ; return
@@endDecode: ; end decode sync address
FGETS inputFile,szLineData ; get final line from input file s/b 'end'
STRNCMP szLineData,szEndLine ; compare last line to endLine
cmp eax,0000h ; check return
je @@setError ; if it's not equal to 'end' we've got an error
mov status,0001h ; set success
jmp @@endRead ; skip over next instruction(s)
@@setError: ; setError sync address
mov status,0000h ; set failure
@@endRead: ; end read sync address
FCLOSE inputFile ; close input file
FFLUSH outputFile ; flush output file
FCLOSE outputFile ; close output file
@@errorExit: ; error exit sync address
mov eax,status ; set return code
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_uudecode endp
_getOutputFileName proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,offset szLineData ; move input line address into source index
mov edi,offset szOutputPathFileName ; move output file name buffer into destination index
xor ecx,ecx ; clear ecx register for counting
@@munchLoop: ; munch loop sync address
mov al,byte ptr[esi] ; get byte from input line
inc esi ; increment esi along input line
cmp al,' ' ; did we read a space
jne @@munchLoop ; if not then keep reading
inc ecx ; increment space counter
cmp ecx,0002h ; is this the second space
jne @@munchLoop ; if not then keep reading
@@copyLoop: ; copy loop sync address
mov al,byte ptr[esi] ; get source byte into al register
mov byte ptr[edi],al ; copy byte into destination
inc esi ; increment along source line
inc edi ; increment along destination
cmp al,0000h ; compare input byte to zero
jne @@copyLoop ; if it's not null then keep going
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore stack frame
retn ; return near to caller
_getOutputFileName endp
public _uudecode
END

779
uudecode/N54.NEW Normal file
View File

@@ -0,0 +1,779 @@
Path: news01.li.net!nntp3.cerf.net!nntp2.cerf.net!news.idt.net!newshub.northeast.verio.net!news.new-york.net!uunet!ffx.uu.net!in3.uu.net!news.uunet.ca!news.netsurf.net!east1.newsfeed.sprint-canada.net!HME1-2.newsfeed.sprint.ca!newscontent-02.sprint.ca.POSTED!yahoo.com
From: shakubu@yahoo.com
Newsgroups: alt.binaries.multimedia.erotica.lesbians,alt.binaries.multimedia.erotica.tickling,alt.binaries.nospam.multimedia.erotica,alt.binaries.nospam.pictures.celebrities,alt.binaries.nospam.teenfem.nonude,alt.binaries.nude,alt.binaries.nude.celebrites,alt.binaries.nude.celebrities,alt.binaries.nude.celebrities.female,alt.binaries.nude.celebrity,alt.binaries.nude.celebrity.female,alt.binaries.nudecelebrities,alt.binaries.nudism.celebrities,alt.binaries.photos.nude-art,alt.binaries.picitures.erotica.amateur
Subject: POSH Spice Nude jpg attached
Message-ID: <13059911.1552@yahoo.com>
Organization: NCCentral
Reply-To: oga@kissalive.com
Lines: 764
Date: Thursday, 13 May 1999 11:15:52 -0600
NNTP-Posting-Host: 209.148.197.129
X-Complaints-To: abuse@sprint.ca
X-Trace: newscontent-02.sprint.ca 926615632 209.148.197.129 (Thu, 13 May 1999 13:13:52 EDT)
NNTP-Posting-Date: Thu, 13 May 1999 13:13:52 EDT
Xref: news01.li.net alt.binaries.multimedia.erotica.lesbians:243637 alt.binaries.multimedia.erotica.tickling:282321 alt.binaries.nospam.multimedia.erotica:158413 alt.binaries.nospam.teenfem.nonude:93698 alt.binaries.nude:118499 alt.binaries.nude.celebrities:1172996 alt.binaries.nude.celebrities.female:866893 alt.binaries.photos.nude-art:90212
Hey, check out the pic below, and the rest of Nude Celebrity Central!
at http://ncc.websx.com
At NCC ( http://ncc.websx.com ) we now have over 100 celebrities in our easy to navigate archive.. click the celebrities name and up will come a bunch of thumbnail pics of her, and they're still ALL FREE! no bullshit like all those other sites that claim to be "free" but require a credit card to get in.
A few of the celebrities we have are Alicia Silverstone, Liv Tyler, Reese Witherspoon (she's the one in the new movie cruel intentions) Christina Applegate, Christina Ricci, Jennifer Aniston, Ashley Judd, Joey Lauren Adams, Drew Barrymore, Cameron Diaz, AQUA singer Lene Nystorm, ALL the spice girls except sporty.. could find her, Sandra Bullock, Alanis Morrisette, Denise Richards, Claudia Schiffer, Celine Dion, Kate Winslet, Amy Jo Johnston (the PINK power ranger) and tonnes more... you must be 18 or over to enter
http://ncc.websx.com ALL CELEBRITIES! ALL FREE!
picture below of Victoria Adams-Posh spice (NOTE: pics are better quality on website, i have lowered the file sizes on these for posting purposes)
begin 644 posh.jpg
M_]C_X 02D9)1@ ! @$ E@"6 #_[0X:4&AO=&]S:&]P(#,N, X0DE- ^T
M ! E@ $ 0"6 0 !.$))300- $ >#A"24T#\P
M " .$))300* ! X0DE-)Q H 0
M ".$))30/U !( "]F9@ ! &QF9@ & ! "]F9@ ! *&9F@ &
M ! #( ! %H & ! #4 ! "T & !.$))
M30/X !P #_____________________________ ^@ ________
M_____________________P/H /____________________________\#
MZ #_____________________________ ^@ #A"24T$" $
M $ ) "0 X0DE-!!0 0 ".$))300, R*
M 0 #D !P K 2T QN !@ ?_8_^ $$I&248 0(! $@ 2
M__X )D9I;&4@=W)I='1E;B!B>2!!9&]B92!0:&]T;W-H;W"H(#4N,/_N Y!
M9&]B90!D@ '_VP"$ P(" @)" P)"0P1"PH+$14/# P/%1@3$Q43$Q@1
M# P,# P,$0P,# P,# P,# P,# P,# P,# P,# P,# P,# P!#0L+#0X-$ X.
M$!0.#@X4% X.#@X4$0P,# P,$1$,# P,# P1# P,# P,# P,# P,# P,# P,
M# P,# P,# P,#/_ !$( ' .0,!(@ "$0$#$0'_W0 $ 3_Q $_ !!0$!
M 0$! 0 # $"! 4&!P@)"@L! $% 0$! 0$! $ @,$
M!08'" D*"Q 00! P($ @4'!@@% PPS 0 "$0,$(1(Q!4%181,B<8$R!A21
MH;%"(R054L%B,S1R@M%#!R624_#A\6-S-1:BLH,F1)-49$7"HW0V%])5XF7R
MLX3#TW7C\T8GE*2%M)7$U.3TI;7%U>7U5F9VAI:FML;6YO8W1U=G=X>7I[?'
MU^?W$0 " @$"! 0#! 4&!P<&!34! (1 R$Q$@1!46%Q(A,%,H&1%*&Q0B/!
M4M'P,R1BX7*"DD-3%6-S-/$E!A:BLH,')C7"TD235*,79$55-G1EXO*SA,/3
M=>/S1I2DA;25Q-3D]*6UQ=7E]59F=H:6IK;&UN;V)S='5V=WAY>GM\?_V@ ,
M P$ A$#$0 _ ,G[4Z@6_:&VBNV0S:YS)+#MWV:[GO9_-W?^E$$Y%3ZV /DU
MAK6^J(/M)<'?HCM?]+_"?I%'JM&37GV5$/>UA/IDP[VR3_@RZMOTOHU_055]
M;0T.W:GD1$%01C&O-?$:6M82\[B92-3FMW3H.1W'?<[^2E7+MT-)</!:#:V^
MA2YS9+F@/<?S6ZN[?NIVG4TEIX[7>H&L$OG0<2#X?G*Q;>X AQ+Q[6.<UVA#
M1)9K.YNQ2=M>7PPN>Z2VQP ;S]+U7Q])SU&ZEQK;Z8/K.@/CAS@?<[=K_P!<
MWHF/4@W2"TWPUY#8 F0)D?P3^J_Q_!,*W!\$[N>VO]H"5+8?/_-*5=5/_]!C
M:TY#ZKCMM+!9561_@SN/H,]M;?5H_/J5:SIV'G:L/N @N9V_K?FJZ*G;@YSP
M14(]&QVTML'MR7#:U[[/\_9_(K5G%<TLW-86[M3I.G]DN5 3K^QLX2)XP-^'
M1YW-Z:.F]/?>YY=:7-8QX!!;).[V_NNK:K]#*6UX_J6LIJ/I-L<XRW;M/Z;9
M#?\ "-_T=K_\)8MEGIW6-J,%CHG<)&AGAWYR+E]$Z<=]EN#C.9;[WO ?62Z.
M376[;ZFOYK43/B'[49,1) %!Y2O92XL#WEH<Z'O;O=M]SVY#V-;]%NWU/5=_
MWQZ8--U;[*S !APU%F[3W6?3_0V/=[%U+:.E9+S+75BPR]U9 <Z(]ENYKG.K
MW,^@J/4OJQ=37;E=+R'65EA+JV#;:8CVM92/3N_/]OIUI\<TP>(&CH.[%*&0
M//-8XOLJ.Y]IT#&#=NUASF(?JM_T#?N=_P"26SAN&3C/_:!JQ:;ZQZ< TG4;
M6EC[6_G.K98@_L[-_P!+;_VU3_Y)'W)<5UKY^#'QZO\ _]%[&7VM!N)EHBK<
M[<=A]S73M8[:_P#-99^E8Q5K=^WTA8[TYD-!($JTW"ZIB8P'4:;*K)VL=:X.
M+B!N^DTN]K?H^_\ 2(+',V SSIQ.O[JH6;(WUZ-W%$>W&NS:P!8Z+'O)?606
MQS(_.<M5F43;-KG./\I9-;FM8(! CP5S%8;X+2#\-4@"R2 IAF5MKR!:WZ%
MG('B/_)(V)EOK,U.\XGP6D.DNMH=M(WQ[?B.%@V/?C4G8 =D.L+CN@%WT&U>
MSWO_ '_4_P"VDI1U'BPG)$#76C7VMS(Z>W-LMS,-PISWAIVO<[TBYA]MC6#]
M'OV_SGL_2?\ !_GQ]/J7_<5W^8[_ ,FJ^%U'$R;/2KNK&4UH>ZIC][8(WM=7
M:0SU/8/4V_X-BU/M.3YIU2['^Q9P8KX[']K_ /_2U,RC'KZ032YKO>VZLML]
M1KFG]%994XOW_I?IO9Z?YG^D6(RVMEE;'D,:2722NCZR:']*N?C/J::HM<T5
MM!=7:6ESV&&.9ZWJUW^NS_O[USW3\(=6<:J_;=4-WO)#2T&3+H=_65&,KN1/
MGQ?-'PDW\5#'U&MZ_P"-Z?ZB;,S*0YE33JX$GX!5L;J1Q+2TGTP[Z+G?1^!=
M^8I4='ZA?U3(H :VV@^F\V2UH@^UHT<YWJ?SGT4;(^JG67"6MJM _-98)_S;
M16G"BNL#J-72Z=]8<N6LL+1[M"':.GAH"AU>A_V_%ZA7L%;=XNKM#G,+C[6N
M8VHBSUOTGYG^#]54>E=$R<7)#\BAU'IZ@.; <X\;'?1]JW<C .14P6 D,)>P
M#0N.US=@_P Y-G*@?TJ[=O)9.,#I5 [TTJ/JPVVEK@_'K<2VRJMV.-K"!L]2
MKT,ACFMR*]GVFISW^I_P:T?V/E?Z=G_;9_\ 2Z!T+J?VC$K8&GT6--;+B-'/
MKV2/\SZ2U_L^5_H[/O\ _,EG>[SG'5#AXJ^7T?W.+][_ %?\ZL]J/'L-N*KT
MX'__T][-#K\/+Q2+:[&4/:YI:2QYJ)L+=76>_P"E9N9]-8'U>S+:'Y-;+!4X
M5FRIY/M#VC\__@[&^RQ;F5T_#SK'6-==CY+ZQ58UT$,VF:K!ML&RUC?T6YO^
M#V>HJ^/T#"Z=?]I=DFTZ@AX8*S.D.:?_ ":S85PB0O77R;PX>#@X>"Q\M\1^
MDF%.93D]9=D8MH-5E-3=S7%PWM;ML;N<&[]C_9O6AF9>17L=OF=-I[PL\/8[
MZPY'IUMJK 8 RH0R0ULD ?O*UU)O\V3H&[I,B?S?S9W._LHD@ T5$:Q![==4
M]/47V#:X1Y%6:V5;C;4T5VN@>H.1'&W=.U9-):T[IW><J]5D "6^Z.83;$M)
M $=BME$C9!?C.Z;BV&@EC3D?:#'&ZR19MW3L:]^W]&JG[5ZS_IF?YA_\DM;(
M/VS#MI $O:0QQ,#?]*K=8[V-;ZC6;EA_\W_K%_W6_P"WJTWVI^X)<?ZH;1_K
M2]<H<7^TC[J+C54./]FS_]2;\BUN;DO>XUE]CG&! !_JMA5LZVRW;4ZPO8?T
MD>?T0K75&!N9>!J'0X:1RUI5;'QG9;W8Q8#9>T55'3<'$AK/3<[VL>J)%Y)#
M^M*OM=$2 QQE_5BG^KX<,JSD " /@5?ZE]6LKKM]#CD#&QZ X>H1O?O<?=Z5
M<L^BUK?ST/HF!?C6W"QKV^GM:"[61M;8T[A+?=6]CULOMOJ98QH(=57%@.FU
M[WEGN,[4[%#U&^C#FF11B=2RZ;TGH_1<0M8'9+V#W9.20]_]AL>G4W_BV*OE
M=<8S&N>QKWFEQ#JZR&1KM;W:UC'[7_\ 6T&R^Q[/>-HY+3,Z .<YS?I;&M]V
MY9F=CN9877M:<;)!/O=M!#/T3@YNCMS7N=]/Z:', \/HL<)$]-.*I?)_6X_[
MWZ# 9$<9N]'6JZA>X!_ID5,YK8(U!VNVURW]'_:]56OVI5Y?<5D8W7^D8SR
MW[34#MVN:22"/[(VJ7[:Z-_W(K_Z?_D5#]RC0/N9.(0,*XI</J]7%_C138NN
M$5=W3__5YJCZ[975.H5UY3<3 KL&U^06VN:P-!.YS/6W.W?11\#K6:,MMU65
MTL/QCZP<77?X-SW.=6RWTO4V>CZGI;_TOZ)<0K73NG/ZA:^IEU-!8T/G(L%;
M3+ZZMK'N]N]OJ^K_ ,578F>W"[K7=?[LZX;TJGNJ_KWU7"HOQ,?(Z5:P/(W
M91+Q<Y[7NKG^<:W?O>UWO]Z%G_7/J^;92ZS.Z9CV$N;Z]'K$MV56[&W,LEOH
M6[_1?[+?I^^JQ8.!@Y?2KZI;TZZRWT[J+<BP. $GTCH]C&-LV_X53<[(;<39
MC=)L]"@M:QUC=D>LYT5O;D-]7(8ZWT_YQ_ZI^E]_\\G"(&RTR)=1OUDS\U_4
MJ/VA@8-;;@:*+18YKRZ[[3->26>I^K6M]7U+&?I?]'Z3U1MZP_/R*K;\S"9;
MD![[;-EH#'%IO95>XG?[;#]G_1M?71_@O4^@AYV-=<RUE='1F?:16 ['N:'5
M;G4$^GZN1N9L?9Z5]EOJ,]/[1_@:_4KQLKI5V+C#)?=CV,+PS;5<RQ\D.<'>
MG6YS]GL^E_Y-*@KB/=OYW5+L=U</Q<C>V9H-A#0"1M?ZGI^YWTE6_;V3_HJ_
M^E_Y)9B27"%<1?_9.$))300& ' 0 0 ! 0#_X@Q824-#7U!23T9)
M3$4 0$ Q(3&EN;P(0 !M;G1R4D="(%A96B 'S@ " D !@ Q !A8W-P
M35-&5 !)14,@<U)'0@ ]M8 0 #3+4A0("
M
M !%C<')T !4 #-D97-C !A &QW='!T !\ !1B:W!T "
M! !1R6%E: "& !1G6%E: "+ !1B6%E: "0 !1D;6YD
M "5 '!D;61D "Q (AV=65D #3 (9V:65W #U "1L
M=6UI #^ !1M96%S $# "1T96-H $, QR5%)# $/
M" QG5%)# $/ " QB5%)# $/ " QT97AT $-O<'ER:6=H=" H
M8RD@,3DY."!(97=L971T+5!A8VMA<F0@0V]M<&%N>0 9&5S8P 2
M<U)'0B!)14,V,3DV-BTR+C$ !)S4D="($E%0S8Q.38V+3(N
M,0
M 6%E:( /-1 $ !%LQ865H@
M %A96B !OH@ ./4 .06%E:( &*9 "WA0 &-I865H@
M )* ^$ "VSV1E<V, %DE%0R!H='1P.B\O=W=W+FEE
M8RYC: %DE%0R!H='1P.B\O=W=W+FEE8RYC:
M !D97-C
M "Y)14,@-C$Y-C8M,BXQ($1E9F%U;'0@4D="(&-O;&]U<B!S<&%C92 M
M('-21T( "Y)14,@-C$Y-C8M,BXQ($1E9F%U;'0@4D="(&-O
M;&]U<B!S<&%C92 M('-21T( 9&5S8P
M L4F5F97)E;F-E(%9I97=I;F<@0V]N9&ET:6]N(&EN($E%0S8Q.38V
M+3(N,0 +%)E9F5R96YC92!6:65W:6YG($-O;F1I=&EO;B!I
M;B!)14,V,3DV-BTR+C$ '9I97<
M !.D_@ 47RX $,\4 /MS $$PL UR> 5A96B $P)5@!0
M 5Q_G;65A<P ! H\ "<VEG
M( !#4E0@8W5R=@ 0 !0 * \ % 9 !X (P H "T ,@ W
M #L 0 !% $H 3P!4 %D 7@!C &@ ;0!R '< ? "! (8 BP"0 )4 F@"? *0
MJ0"N +( MP"\ ,$ Q@#+ - U0#; . Y0#K / ]@#[ 0$!!P$- 1,!&0$?
M 24!*P$R 3@!/@%% 4P!4@%9 6 !9P%N 74!? &# 8L!D@&: :$!J0&Q ;D!
MP0') =$!V0'A >D!\@'Z @,"# (4 AT")@(O C@"00)+ E0"70)G G$">@*$
M HX"F *B JP"M@+! LL"U0+@ NL"]0, PL#%@,A RT#. -# T\#6@-F W(#
M?@.* Y8#H@.N [H#QP/3 ^ #[ /Y! 8$$P0@!"T$.P1(!%4$8P1Q!'X$C 2:
M!*@$M@3$!-,$X03P!/X%#04<!2L%.@5)!5@%9P5W!88%E@6F!;4%Q075!>4%
M]@8&!A8&)P8W!D@&609J!GL&C :=!J\&P ;1!N,&]0<'!QD'*P<]!T\'80=T
M!X8'F0>L![\'T@?E!_@("P@?"#((1@A:"&X(@@B6"*H(O@C2".<(^PD0"24)
M.@E/"60)>0F/":0)N@G/">4)^PH1"B<*/0I4"FH*@0J8"JX*Q0K<"O,+"PLB
M"SD+40MI"X +F NP"\@+X0OY#!(,*@Q##%P,=0R.#*<,P S9#/,-#0TF#4 -
M6@UT#8X-J0W##=X-^ X3#BX.20YD#G\.FPZV#M(.[@\)#R4/00]>#WH/E@^S
M#\\/[! )$"800Q!A$'X0FQ"Y$-<0]1$3$3$13Q%M$8P1JA')$>@2!Q(F$D42
M9!*$$J,2PQ+C$P,3(Q-#$V,3@Q.D$\43Y10&%"<4211J%(L4K13.%/ 5$A4T
M%585>!6;%;T5X!8#%B86219L%H\6LA;6%OH7'1=!%V47B1>N%](7]Q@;&$ 8
M91B*&*\8U1CZ&2 911EK&9$9MQG=&@0:*AI1&G<:GAK%&NP;%!L[&V,;BANR
M&]H< APJ'%(<>QRC',P<]1T>'4<=<!V9'<,=[!X6'D >:AZ4'KX>Z1\3'SX?
M:1^4'[\?ZB 5($$@;""8(,0@\"$<(4@A=2&A(<XA^R(G(E4B@B*O(MTC"B,X
M(V8CE"/"(_ D'R1-)'PDJR3:)0DE."5H)9<EQR7W)B<F5R:')K<FZ"<8)TDG
M>B>K)]PH#2@_*'$HHBC4*08I."EK*9TIT"H"*C4J:"J;*L\K BLV*VDKG2O1
M+ 4L.2QN+*(LURT,+4$M=BVK+>$N%BY,+H(NMR[N+R0O6B^1+\<O_C U,&PP
MI##;,1(Q2C&",;HQ\C(J,F,RFS+4,PTS1C-_,[@S\30K-&4TGC38-1,U336'
M-<(U_38W-G(VKC;I-R0W8#><-]<X%#A0.(PXR#D%.4(Y?SF\.?DZ-CIT.K(Z
M[SLM.VL[JCOH/"<\93RD/.,](CUA/:$]X#X@/F ^H#[@/R$_83^B/^) (T!D
M0*9 YT$I06I!K$'N0C!"<D*U0O=#.D-]0\!$ T1'1(I$SD42155%FD7>1B)&
M9T:K1O!'-4=[1\!(!4A+2)%(UTD=26-)J4GP2C=*?4K$2PQ+4TN:2^),*DQR
M3+I- DU*39--W$XE3FY.MT\ 3TE/DT_=4"=0<5"[40914%&;4>92,5)\4L=3
M$U-?4ZI3]E1"5(]4VU4H5755PE8/5EQ6J5;W5T17DE?@6"]8?5C+61I9:5FX
M6@=:5EJF6O5;15N56^5<-5R&7-9=)UUX7<E>&EYL7KU?#U]A7[-@!6!78*I@
M_&%/8:)A]6))8IQB\&-#8Y=CZV1 9)1DZ64]99)EYV8]9I)FZ&<]9Y-GZ6@_
M:)9H[&E#:9II\6I(:I]J]VM/:Z=K_VQ7;*]M"&U@;;EN$FYK;L1O'F]X;]%P
M*W"&<.!Q.G&5<?!R2W*F<P%S77.X=!1T<'3,=2AUA77A=CYVFW;X=U9WLW@1
M>&YXS'DJ>8EYYWI&>J5[!'MC>\)\(7R!?.%]07VA?@%^8G["?R-_A'_E@$>
MJ($*@6N!S8(P@I*"](-7@[J$'82 A..%1X6KA@Z&<H;7ASN'GX@$B&F(SHDS
MB9F)_HIDBLJ+,(N6B_R,8XS*C3&-F(W_CF:.SH\VCYZ0!I!ND-:1/Y&HDA&2
M>I+CDTV3MI0@E(J4])5?E<F6-):?EPJ7=9?@F$R8N)DDF9"9_)IHFM6;0INO
MG!R<B9SWG62=TIY GJZ?'9^+G_J@::#8H4>AMJ(FHI:C!J-VH^:D5J3'I3BE
MJ:8:IHNF_:=NI^"H4JC$J3>IJ:H<JH^K JMUJ^FL7*S0K42MN*XMKJ&O%J^+
ML "P=;#JL6"QUK)+LL*S.+.NM"6TG+43M8JV ;9YMO"W:+?@N%FXT;E*N<*Z
M.[JUNRZ[I[PAO)N]%;V/O@J^A+[_OWJ_]<!PP.S!9\'CPE_"V\-8P]3$4<3.
MQ4O%R,9&QL/'0<>_R#W(O,DZR;G*.,JWRS;+MLPUS+7--<VUSC;.ML\WS[C0
M.="ZT3S1OM(_TL'31-/&U$G4R]5.U='65=;8UUS7X-ADV.C9;-GQVG;:^]N
MW 7<BMT0W9;>'-ZBWRG?K^ VX+WA1.',XE/BV^-CX^OD<^3\Y83F#>:6YQ_G
MJ>@RZ+SI1NG0ZEOJY>MPZ_OLANT1[9SN*.ZT[T#OS/!8\.7Q<O'_\HSS&?.G
M]#3TPO50]=[V;?;[]XKX&?BH^3CYQ_I7^N?[=_P'_)C]*?VZ_DO^W/]M____
M_@ F1FEL92!W<FET=&5N(&)Y($%D;V)E(%!H;W1O<VAO<*@@-2XP_^X #D%D
M;V)E &0 ?_; (0 !@0$! 4$!@4%!@D&!08)"P@&!@@+# H*"PH*#! ,
M# P,# P0# P,# P,# P,# P,# P,# P,# P,# P,# P,# $'!P<-# T8$! 8
M% X.#A04#@X.#A01# P,# P1$0P,# P,#!$,# P,# P,# P,# P,# P,# P,
M# P,# P,# P,_\ $0@!A #' P$1 (1 0,1 ?_= 0 &?_$ +< (" P$!
M 0% P8 @<!" $ @,! 0$ (! P0%!@<0
M (! @0$ @<$!P8$! 0' $" Q$$ "$2!3%!$P91(F%Q@3)"% >14B,5H;'!
M8G(S%M'A@J)#%_#QDB2R4V,TPM(U".)S@T1D)B<1 (" 00! @0#!0@" P$
M !$0(#(3$2!$%1(F$R$P5Q0E*!8G*"%/"1DJ*RPB,5TC.AL08D_]H # ,!
M (1 Q$ /P"N+)=[I;T:8&X5B6$CCS DY+J\QT^&.,H3>FA62]O[S=;7(TC*
MLRO2.-I)"J#Q\OO,3BO-CY? L:31/O6][ET'ANK0P6+T;H1A5$F=:AU!<9X;
M"N/RO<5)%?W'<9'GZ%RDD4!TM#%,S2,E%R*LU&H?NXTTJGJAH']^VV76S1?)
M3]7<^FE;9558RJFA% 0:C_-@5%#;8*11/'?75B5T1Q4.DVY6CAA\8KYEKPU8
M6K5&,F#VEI<PJZW%0A4 *0#0C/+EB+M.('!I;BJMH!0D9@BE:^KABRM6MQH%
MES<L6 -1R.7ASQ<D20$ F@J<Z'V8:"#&92,ZDCC@0&XT#.A#'Q\,0P/=7IX<
M1ADB3 &9J#+$$0>*C:R.-,\0P)D!K0+0C*M:8@@/LV@A>.>%F>Y%=<;H JFH
MTE6KYOLPEE.XK&-M>74,T,T1TW0;5H=:BK5J:'PQ2]=Q0G?+B^DN!)>#_NQ3
MIQJOX3I0GQTU]&+-7N%=-C6'<]OM2TMU;RRET AA6BKE7WF-.'HPJQI[^ %5
M[+\^](X%BC4DUI^)2G,_%BWE RT%+Q,A>I(8>ZV5#3T'#C'NM2N9.LTIX >G
MGB4@,!.KCG7E_?B&B0A2JQL-0#MEHH>'KPK1!__0I'<;7@G62X?5H 2-J %?
M$9 >PXYN#(KU(HC;;(H[F/5$X25,U=ZC45XT^'5[<5WY)P1;0MDF^[?>['"F
MXIKO+65%<* &D4'RU-2,5TQ:PM":T$-]$VZ;G(;F5$@A "H:9*."UY8WO'I"
MT+ZXT>CM^)HW-K<A92I*JO,-\-?##5Q^H<00[CN=NK)/*5EB5H<UJ=+94J:G
M_P"+"?22>V@W!"II+[H"(NSJ3FO(<^)Q/TUOY '=F#%0Q!- 1P].>(9,$!!>
ME?+0YTIA@1JT9.0H.-!X^O#$&"%:#5FPX4\?;B&X%DW:WFS#<>=1EB&R41K&
MP H"4X%O[,2F2C;SKGD,Z4PQ+-FCET.XH-+ &F?$?W8B16$6QL-)%R)%<+6(
MQTH6_>KGB$M=2#:T8F55":CJJ <AEGD*XKO4AAL]X;AW-U;_ (E?(%KQ/ <>
M Q6ZM;/05? F9F"*$4I32=!=FS!YZN'^'$TK.A)+<;I92H!>+H5 %C*4-?\
MBM3A[875_ CB#[9N5M%<27%U(0T%!;A10D\,B010<<\3"DGB W<T;N9-74>2
MI9J**%C6E/VX;4E 3L"%51I"\#7,XD8\_$!SS!Y\\$$&!Y":\!G4>-.&) __
MT:+</&UT9KA6EF4+Y#ED!D6 'IQS5'&%H)+@UDLMQVZ1)[I2L%T2T2J:Z=0Y
MJ/1AFU=2O VCT\@AN9$+G463@C<R >6+J42U+JU@C:_8KI'N\-()_3BP:3:"
M]F1P2[!0>1S^W$2,AI-NMK<@!8AJ10 YX>D^NN!C2#RWEJWE#G1&!11P'H\<
M0WH0Q49M4I9ADU,L00>21L:4'HRQ(&CJR$$"C5R KB&R":-6R+!02:!B13$6
M(#+0(9 )9!I8Z=8]X?MQ5;74$1[E"D/2"N9)!GK04\M>&'IL"!"8PE7'G)KK
M%>>? XME0#-KAB'I""58 L "> Y_;A*LA'L<O38YAJ\B,SZ<\7+0: Y;5ZI*
MM<SR/ 9XF^%NLHAU&EM9VT+EYAHJ3I9\@:#+CZ3C##;@K%=[=/+?55JF<J0
MY\M*Y:2/=Q:M-7X&2/-TLI;"7I2N)NJ WD(9<\J@XT2FO4$Y @8%)ZZM(J\$
MU<?LQ0B22YBL78SVB-''6IB8U"TRRKQQ*(_$$>E?+4>O(TPQ*-J@H:'5PRS/
M' @//-32:8))/__22-<[:=_W'\[#[=+!_P"UM OE91Y=&D\Z>;'*S8N55Q]H
MFL::BON/>;6]N4BC),$8U%673)&!\->%",6]?&ZUU+*4*Y/)U7R-5!.D5S Y
M>C&DM2@TTHH_8/UX$P,,E !PX98DE&HE>M 0 .9\,*2F8LAYGB3G@8&S#S @
MT)SKB))/?-IH#F>/@*\\1($A(IFW$>'#+/QQ)#-X:HZCD"#3B/7@G2" _<K*
MXE2.Z _#*@DA=/Z *8O5*\4T3!K:#\,H1J!S.9 -</55:V)4 \6WI=W2QI(L
M"%PI,E645R)_5C-:L;(AN [<]M2SF%FTJ2LH6ABSRI346I[N*'5IRRI6\@$^
MWSI*T#(7<@Z%IJIX'4,:L=FUM);663VJWZ1Z61J)F>&H>K&A*T0R=8#KF[%U
M9)<SS-)=,QC>.H]U0*&G(G%.*T2GL5)0*HVN4F'44'[K, :4X4P:O1C-$T\/
M5?JSN(@M$X44>(7EBE>V4D*W!%2,2HTC!]#:B@YKSS]6(K5 @5Y%5VT+2,UT
MI6M/:,-&HT$$A9O <L 08HRRIZ37VX ):95%/'/A@ __].H;G:[C:;E*-RB
MUQQ&L$A+.2/#4WF-#]_S8P8G6SW_ (B:-,K5Q.9+B20Y-(Q))Y8TLL1H)$\*
MGQQ Q(LIU5Y<M0!RP C'A8BK*M!2NDYU]1Q 21]-J5"$ \L^. $>'S +Z\L*
MQCT#.M.'IK7$ 2QI^)I()9N"^GEB )7A*>61=)'VCT8: D\01@>4$T.8IE7!
M!$EAV\3/ ]O(,G4>45J,LA[<;>E[DZC8X\GCV5I:.CA<\C[U:^PXNOBK34=U
M2-YQ;W4P2VB&E*ZJ EG?B"?1ECE9.PYCU*K6Y;(A>*U$D=PX;KGRF,&A%,C7
MD1BEMM05HRR-Q\W(- D% .I6F8&?_3C;7/;'24M!DVEH>RO&I<]0,Z@F72-(
M_3C1A['.O)Z,:KT%27$3W$8F0&/B "1J!SJQ&,E[1JA4QQN=M:26\<ELA@9@
M-(\S+X$ BO#%S[%+4GR1(GW%0(W'R[I6A1VX'P/MQ0VIT(0K=9D4E*T8T-#4
M<,SB43)#U&5S7/T\,,2;ZS(OHR'HSSPL 30J34M[HI4X )*PZN)"<O2.> @_
M_]15WY?;;?L$M'GD9*_A@'I <,R0#7'-Z^FPE$UN<[92*FI/K]>-9H-0Q %.
M?,X"0FU>(25= Z#D<OU8ADIC$66WS*"',4AS#5J,LZ9X5MHLA \T<*$!921S
MX9Y^O!)#2 I-(.533A7/$BD1F<,<A2F7.F()1/;RS(VH5)K7+(^&!$,DGG=J
M KY_B/B/## R./69!F0#P->> A,N<$DDMO;=*=5E:)44$@$NHTE6)IBJ:UIR
M]W,1Z/06;J-+!G)+!NG+&00H(-:<<QXXFN2]]+,:EV$;<;5TJ0BSQU_$C)52
M!EJ!_=Q5DM:K@261W];&1BT!DCE"LO4J:ALZI2@IZ<;,&#E179*JO)JF^6T5
MLZBV4%\V)%,_"HSIB^N-*L-Z?I'3]2*XOJI!<Q)I9&*Y :--/=/VXJMB^G5M
M?*P@'MMNNGF65H:H:Z2Q"BK'*E3XXR\N3TU%+!9;U=;?8O;6]Q+ )24$&A=7
MI8$$Z17TXA.U&Y*KUD3W*S3;7<&2>42!]>EZL"%X>A>.(K>62E#$T44;2"XF
MMV>T#4=%8K4<E!S.+%8>3>Y2VDDU6T,@C(/X9;53T5.?#%TIO0FL^040N?,@
M(3.F6?VX6=8)DFME+5<YE*4%>&6'I4"0"(YAZ"N8KQ&)X(#_U6F\2_F3/80V
M$-M!<>=F+:U\HSS4ZL_^G' MV,>-3509Z[R<YW?MHP7#11C5H<KD,L="F=.J
M9U*XG9)D:=KD1%G(#<:CQIB?K(M768-/LK1@!0<N!(IB:Y1'B(JF- )%!4BI
M*Y'PXUQ/*61Q@$D*!F(!]9PVQ6T#U.K@*\O3@(/-+5%/7G@9!+!5)%+-E7,4
MJ*8$2AK:6-M,.I,Y4\4C4 D@?>/+$SZDP0FR$<IU'1IKY3^P#$/8B"QNFUW0
M1OED $6C0*J>IPU$\*9:L9*7:</8HG4R>Q%_:VUU;*-25$O4J0:&I<*3X>6N
M)61)N"4VF#217B6UO;H?P6CJ4 (K'JS-.5<:,&#ZCUT9*4@/1N)PTT[.EO"M
M*&A;T*.' <\=:F)<87RHL6TL]O>WF-K!>6PD^6E;0';2RZJ9CDP^S$/ GM(S
M2F">Y>/;HEMXB9WR>0%3I' "H(Q7FS4573_$3>RV1/=S2W%L+A(%CD JP/E$
M@J 56G%J\L<KJMUOIL4*9,51)<&#IY!*N#0T/ACO0FX:-,)N 2XVXRSLBR*A
MTTH#E3GSQBR=5NT5@I=#>.QLK41Q-"6G!U-(6IER J/3C%EK>FEE!4TY%EZ
M);:5DA(D*N6#YT .0%,74LQZL@$,KLH---=6@^RM,"<:L8WM(HUE93J6H/*@
M\*U.+<;J_()GOY>A /63)B"=513AA_IJ-T+R/__68;E?6&V77R"2P]846.>=
MB)J5]U*>7_J&.'?"JIMKD456@ITQS7$DU0Y9C2F8.?CPQ+\0>@ZZ]B)#!5<U
MI095X8*MME[20-/9!FR'^+%R<E%EY%U]LZR0.$ K7*O+QPZ94ZRBKW&SW* L
MJTK4E:<ABU74%%L;%SQRJ<U(Y9^&&3*X:,5&,E!4CF#@9 59V<]W<B&(9DY'
MD*^K"6NJEN/$[,8W@FV.2*FB;K E2:TJ,F!](P8K\U(V;']-P"V=R]UN$19$
M*R,-0IE0>W$Y7"DH;T+AN4CPZI-MLHXX3%'#JC(9E7FS YU=OB.,&-<DIW,G
MDE6?<Y+$.O2!BS<*@ZH0UU-X:*^7$Z58S:V I!;[7LS33JIOIR4@:I#*IS%3
M6E/1B_&V[2V,D5JWNTN;\R;A*1*NE4=5JI(X IPQT,%JK=Z(OJX0RN!J,$^I
M2R-2:ARR.61\<;;VFG-/0FS&RPV&X7 #QF+5'4J*GW?,H9SY<UQYZ]K2F_)4
MG!!->RWSS6ULHC6HT%C4T7@%'#5EEC1CR1=./W?X07J#6UI:W5*V\ZS9J\JD
M@&@]/O8[E%6VGDOK#([UFL8S')'JC/\ +E%0P/IJ,/=\%MH)?31B^WWLF0E8
MRQ 4$9>O%*S\O!"T--PFD!BE$719CF.(+'G2F*<M4FFEQ(,CNJW,;A-%1[H
MH-1!KSQDSNK<^$+N'7%PD"RZ@)$(#:2U:FOF H#P)RKC.[)M-$ R;9)\M\TT
M+1VA5G1F--2"N8]&&>36"/@?_]<3N'<+6>=VCVJ:ZOUE!D>54#4!J6115AJQ
MR56L-VMJU\OR%54_4GV]TOB]Q$C1JQSB8:2AX$$<L47<0D=SKQP08;:0FJC3
MS!XC!69-4(B>%D-21G4D\/U8OJRA_$T:WD<\*BHKG7#>1/P!I+&)Z$@U&7HQ
M$>24+[_MR">(Z5J1F&X4/#$5O ML<B2'M>87"HS9 YGT'EBQY)*_HPQ[#MQL
M)XX88&25EU*5H2?8<9W6=6:J1&@H^H459;%#Y9#&7<5I0DBN0]6-763XZF;N
MO5?@*NWZPW\$I%8T8,R>(!S%?$X;.IK!C2.A2;KM/S:-:J8VNXPJ6T9U+*&-
M#J)(HRM_TXP.B59F#/EB8 MRVR[465Q=*(5>?HQ62TKH%15F)\U=.2T]W%DS
M1M;5\B)I.!KL&TM/--87-H.@RF,AD(!SJ!3@&SKJ][&%WM*AZDVM\2J[QVOV
M_'+<P0WZI-9B03VY&L@KF"K4\RZ2,="F3*KJMEH64MI)HU];7B2LENRO+ HM
MVRR:$ %" !Q QL[U]:P_:A[I,DVTJRM!;(+FZF72EN=6I2.?+,#'/MHT_!7J
M:+MX1^F\I^>)SCR62.A.>DDYK34N)>5U<M#RD:;W:[K/<1(EP)Y[9=#-&YU:
MCF*4QIIV793M^DCGJ"6$MZZF*:,SI(P#F6H9>1(U>G&['VVG%O=4=9#W=I$C
M4Q+320 0!0J0:',#&KL]BO"*^0;U 9BUN6K)J (9U + $#DS#TXIP-)3+(JP
MJ.PCNI8I8%!2>+S$FI.D@L:#W2,9.S=3*0/<GNW4R,J $&-0&:HRH0QU4^&O
M/&3';06 :\)CAMXFA5+>0T22K$./=S]7JQ8G)$ZG_] K9WEL-MD?>(TAME7.
M>,.THXCQ-9/NX\[BRJV25[M?SE+3>Q1[+N<[?OTLL>L[:'*'K$F;03D7K34P
M]6.AEQI_*;,&5U<%YBW&TOHI4@E"R(.(S(KF"!C(Y3.O6R@1F6*WN ;RZ=@7
M(%?(M?#RXMLK"R@T]P;<LXMK(":<YG220HX9G@,'"P<ZS""K=Y9> ]?HIGAD
M) 8D3Z3KH*\!PSKA&M2358524GIZ@.8PNVX0$Q]'YHS:%#!0I<\0H\,-"'K_
M /!ROO:YFN.Y)ZDK$BTA%*>514?IQMHU&AASR[:DG8MVXW1H3 +CJQFD6D.?
M+F0 W,C%/:3B4S.]B[W6WK)L0O5L$MODYE>U1'575 :L'49@GF<4TK*:MY1C
M=M=R+N9MLW/:#?BXT7+.DJ",EI$T^70:%0,R3JQDZ][5?%ZEC30VV3Z@&VV=
M+>XLI;Z]TG2K.A+I6BEB_'P."M$FW8AUUE%!WTI/?WM_M5I);0&0%[=Q31J
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
MU&E-09*YZE8:<<?'BWE%"KJ@FW@=T1BH#-F: >).6*'?63T=4E5(]GMV8$Z
M3GQYX>K3!@ZVY H5H >/H\<-6K>XK-)8Z+4<LB,,] K('TVU!JD9Y#A^G%9,
M&KA72HXG+$#U-X%8N0H.61] !]>%:18.-LAGN9"I%%'O-F13^TX.006 Q6G2
M"%?**>4"@PK6@+0)BZ*1@1\!AXT$-U>-,SGGYJBM,1R80%6\R-0KRKGB6]17
M4/$J$ DFOW1BU24L$N@6J!736@.)0)E6W2 1WC,5IJH5]->.(OZC(CMV X>
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
MQ:VF@MY;9IR8R5;YAT>@)X+I5<"O1IJJXLVXNB\!4F;4 "!7@6 Q*9:]S6-
M"%8BH8 ^7ABV@EA3!>B&X- 6//3A]"I0/;3>%<*%R<>4K3$;#K4._,2M"QJ*
M\CE0XAC0A!W)NQCCTH_F9J+XUK3$I2+DM"(+24B)$#4( # #F<(WX"-"<'4@
M!)(-!XFM.=,,F+ !<PH 2<S3WN1!Y'$H)%L5W=V4I>+^7GJ3E3 ZR"OQ'=GO
MMC<>42=.6@JC<<5NK1?7(F&-!&[ZT;02 ,Z\<5\H+> 5;1NK5=Q3F3G@GT&=
M4-8]WM8M$$3:YG8 1K3B?'%M;-*3+>J+79JHIGYJ?I]F(MJ96QA :5;PR&*W
MZ$615I]KBVZ^O-PN[D3VSR%[;;@E*.174[G/G[BXI[>15K'YK&:N!6OL+(.X
M+HW5W=W#))(\9BB&9Z6JFG*GEKA^G552?Y:S_C.K1UM547MXWYW_ 'N)=>V=
MEL8+5)G'5N)0"Q< A2>2KPQYCN]_)R=:^U?YA>UV;7?I4L2W4,4@AT%:^Y4>
M4_PXY],=LB;KJ8'=)ZA2O4#VUQGECGM*YGE[N'61KR0T?__7NY^GNZV>[V^Y
M[5?0026Y!H(S5_O L&/E/ACA8LN6J:M6S-5[TMN/^Y=BO)Y5O+.,RM, +F*(
M ^8#WZ'QPV?%*Y);G5^V]VJ7&[^7Y;%*[EVS<;2PZMU;20QEPH9QD32N*,>-
MIMPSI9NSCR5BK5F4V2:/7F13ERQ=*1C)(*.&0#S%30>O%M7X%ML5^WMK?1<?
M,2F&3C'EJKZ*XL\Z[%2KH>[="PN 2Q:IS)PMF-5,;3S-'4UU'E_9EB)+DBM[
ME(MYN,$6KRJ=3^L<,/72IGRZW2'%LH<*$'EIG^SEQQ4W):D$%%5%*FK#@#EE
MB4R >2B\1PXZN8/JPU7# 5W=6)%:*:T/B3BQ,1@#VJUJ::L\\ B1)!\S"X"R
MR!1Q )X>C"62+.36S&ENUPV32LP'Q&N7IXX50-R;+%V[:"6]C(I^&-9-.8X8
M2Q%M#H%J2J 5!P<O#,[0;"S'C2O+GBM@RL=[2.ABS\LM<^&8Y5QSNSC]_(MQ
MN$RO-+.>VF</IB>:2@"!7U( =>>H4;'15>&)?%FK[=%K7?I4OW9M\9MEM).
MIKD9 KM6H)6JUQY+[GB5<MD8[IK0M;HCHO4HY!!]O_(XYE,CIJF4M2>%!$P
MR7X1X5Q?2JR)M*+HJ;XN/!O+-T40$:C(P0 >GG[,51([<'__T.O,D=2"JMGY
MB0#0X\)S:<#HU5$CD=7:MM.I2Y5*JPK4*RT^)#C=T.ZZ7BSY*P3QU1R3N*'N
M+;-\N]NW*ZDNK>/2]LSL2K*Q)5A_AQZ#MPH:^5G7ZM^7X"=IEZFDCS<0?#P\
M,\8*FQAEL"&4G, \,^/@<3R@B-"/<=F?698AJBEHQ7P/,9^G%A6M""*U6!2Q
M;S*,CQ Q#9<D@+=+OIQ5(KG0^D^H8A*61:T(2V,<HE>252&D.?@%Y8LM;P4T
MIK+'$$E,B0/5A(+$B628L.(J:>7F?;B((8/,Y8589<]7HPR$D$E0&0L.&=*G
MT?IQ<A60]((!G0GF>9PK1)-'&IX!J5.1\<2PE!D,#"C%:T]TUSH,1Q!,NO:=
MB8[1IY%/5F/D'/2/[\50F_P(L_!9H$(' 'PSPK7H5L)C8D>[E4TX80AB[NG;
M3>[4P05FA/4B'$Y<?;3%&6LH:C%F];3#+V;:6X;ILA!1UI4:LVX>..-U?N=W
MF:LIH68DZ-\7'(E[7NA!M\4<I >,D-04S)\/;A.^UER.Q7Q<:ELG[AL[-HHI
MM;,U-16A"@\"<8J?:,F2KNM$/CZ]KUE>!T[I)$QX@CCC'CFES)=: IDU2J2:
MB.(L#Z6RQ/%)M>MRN9_94__1ZW=[C863AYH?^WD77#=+*=#*<QDP]['FNSU,
M-6G%_P#$;NIU?K5</5!\*VTZ"1*E95#QT>-JCU54XR-87K-Z_P"$6W6AQ/\
M]E*^K2(MAMX,+!T+@32*H#* "%# FM,=FEU;#&KB#3TL;JVIDY'?2!&J*@#C
M3[<)4WV>IEEN,JR&LA.?EKZN>):(5B]]LZ+I1#<*'5^.=?L.&=X4B9&TM!W+
M]/H!<EC=Q",YQJW4)SX5HHQ3_6X)U=9_M\#"^Y9*"B]Z;+)MFY?+2%)$"AX7
M1652".5<_$8T/-6^M7H:L5U:LE?M+9[J=+:VC9IFR4#+/G_#BIV1=5%[VCZ9
MM/&IO+P1N_%(EU>DU8X67;T07R),<?[36'!;^57 K5HT/ZB,.J6]2K^I7H"2
M?2:X92(=PB:O#J1N*_83@29+S4?J S_2#?0 89K:8UK0%E_6,.I] ^I037W8
MG<MB"9+!G"C-X:.N7#W:TQ/,:M4]FF*C:="54E4QMF=+ K^O"\T.Z,9;/MPO
M;M8E-(_>E>AR4'T\\3SD2(1?84C2,1QC2J !0 .' #"JR6B*FF&015 )RRX8
MB1'N$);T/Z<N&6$LO 23I$P% "0<5@]1!WO/%M^T0NRMT%F +*M0I8<Z<,<;
M_K7]5WKLT"R\=RC2[_T(X19RCIROKD-*D*G$"OKQLZ_43M[T:,2612A]%N#W
MEM'<R#4[JO3.?NKPK7&[DE[5LCK]?"EC21T&TW2%]K@G:E942B+R)R-*>G'D
M7UK6SQ52TV>=[*XR@EGB643 !K=UT,X^%AXCTX2_5S)JMJVK?E[=/F*)2<_
M_]+I^P=N70[=_([UWED@7_LKF72V@CX13X<<I*UTU:K0=7L6I?D@#;MJO;.X
M%O.[1TCD1GD1P6D->,@#!4SKC@]CG5_+Y]/RGH<ZK>JM77^WZ0#ZCBX7M*RC
MN9%EEMY2&>-@P(9?N^\.&-74S-JR>WZ1,*]S:7@Y!<L"QH:D?VXVU>A:UJ26
M5BD\D:\&:E*GQR%<#O!"1TSM391M[HDC R:@6/+PH#BCE.@F5^TZG>6X,D:)
M= .5U"W=4(<<" [ FOJPM\+2B.7Z=#FUO7C+JOXBG?4_M7;KK9&OD++?6@U:
M"^JJ'WA2II3CC1BPTI5?.N7ZBWJ6MRB/:SF_9T4<%P[2&DCB@SK13RQ7>TN3
MIU.E;8%9E8-E^G$IF;*/8[=Y5()\O(<\L7<V9I2T-A;.!Y37/,X$VA6Y/&=D
MS(S_ $8?F3!XMR"32I]&(T!LCN+:SO%TW-M',O(2(&_21A;%BRV6S%I[4V&-
MV:VMOEG<U8Q$@&GH-1A..I9_4/R1R;/+%_*I)3,9:<(TTR?J5>YHH5' FJGC
MX?;BR!7KL$-N6V6\7FD4'U@<<-P*X;!XMYM[J8I9JUPP^&)2V?IIEC!F[-*;
MM%ZQ-;Z!=YL]UN&WS6UU:5BG0JRD@L*B@-*\0<\)3N8[-)%-^.TGSU<V<EGN
MKV$BLH$TD(%>.EM-?1PQTG9*K:*^I[;.K._;?M]I/VY"@M%F/34(N7AXCACR
MG2P]G/V76EG6E?GM^0T6[+Q^8(]IC*?A.]7$9$:K0*F=%TX]AT>ABQ6=Z^Y_
MK_4<WL9G=E@V]FAL+K4JLTH8KPJ)"OAZ\7][NX\5\?)?^RU:5_F956O+]A__
MT^G[!LFRRQ%G<-,WNA249/!ASU8\C;MY-'[H_$C!BJFTVK,@W*7=]ONYKVVD
M?YF,".]A9G:)T) CG2.ND:N#Z?BQT<F6W8PIX[<;5_2SK=+'@=G3+_)?_:).
MZ-RO-TV":"YDB+)IDT:"KAAZ37+/'.ZV;*K\;NQN?6KCO-*V=/U\N5#E%VB5
M/F-.9XTQNKN/8]LBHD&AZ%2!S\/9AFI%DZOL$[7=A#.)%Z@ 23^)?[1BI);>
MAFR.' PL^X;V2YN^WI;>V2YTZ]LZNLQ2US*L:ZM;#[N-]+4:2B5_N.7=U5I3
M\_X;!PVN'\MEN/E+-*0LT[!7D.H*20&<U]6.#_6VM>%2E?=Q]\V.C7MY;1[[
M''-IDD6^U#(U^S'1OJ;:LZ'LMW(%J#G^W#8T9\K+!:[I<CRD$_HRP\ZP9F@B
MZW*9(B:4-,QAWJ0DA8-]<MSKPI6O#%3N/P"(]S#-7.I_0<-*%=6&)N#&BD@J
M:UQ-6+J;B[SXU'CB)().JA.9I7F#B0DSY>&3,&H/ GPQ!/(77?;.U7E#-%P-
M2%8J#GP:AX'%.2G)-)\2U9K(.2*UM8!'!!T@O!(Z 4\<<A?;+)[_ ,Q5:[>X
M%<;K=1/2(!.=:G/&G_K:QJV,J2<\[X[1W'>]R7>-OG6.Z4JTEKITZV7,E2/B
M/[V-F.:4==T,L"E.2]=H7EXNR1VJUCF;R/J]]0,B,8.AV8M]&GS6N[9/W:%/
M9I%I8@?=YX]T:$"@CD873+4D!:4*MZ<>C>94<5^42N).DO?\@VM^ZHS<3JT@
M"*NI&/#41G0>S'GON5WE[>)5^3'>EOY>0^/ UB;CW-'_U.AQKL ;4FY744M*
MJ.C&30^HBN/--XK*6[5_8;_^DO.G^H8)?;?UK9UWP$PDTZMLVIXV'G0E332<
M-A>.C;K:)^ [^UYXAJ?VU/.Z-JV6.Q;3 \TL\#&VG3W:$$C4Q85I^]C1DIA4
M79;T5G2=*V5:5?NK;_:<)W&$1NZT KP'ABN4;V B1=0)XCGRPPA?>P]P,=R
M+=LDF'#/WAPPEO4JS*4.>^(YX5BOK)P+ZS998ER#4!&H"O'QP43U6R_W'!3?
MU6HGD6BTOYMS[3N-U6-HTN;:0SPL"I64(0Y4'X&]X8R]CKNV2N2JE-_\G_D:
M^OI>'ZG'[($7 89$-E]N-!V*E]V.,-#7GS P8Y\E68?0PJN9%2,^//CBYHRN
MQDY+KII5>5>."SA!417MG*68H=('(>'LQ4MR]6!H[F2$T8@D>GEA6P:D*CW$
MFE*9'B3G7!(EJC&*]<\&'\-*X96@K=0A9=>;>&7[<-)#05"^D9'TBF7[<"M\
M2(#$EIR_YX%!$F^H$Y#U8-!6126PE%& ->>)T'K:!=<;<RG6@J.:X5T+:W-M
MOU)(#I"N<R<OU<\<'[EDOUO^?&O='"W_ )$WHKJ&57<E>'=I8U49.Q!RJ=69
M!QEQ_<\M\*4Z_FL6UP5W$XB:??EE04Z2L["N60K]IQ;A["QXVGO=</\ $7-:
M'__5Z#W9LLEA>=6VC+6DQZB4!(1Z9KEP'ACS?;Q0^2VL>N^V]I9*^Y^^OM_B
MJ5UV<? PIST$$XYTJ3KIKU+;V]>-N6V2;1* 9D4R6>LYFF10^NN.CU;5O5T?
MYCA]_']+(LJ_G..[O')'>3Q,"K([*RGBN? XN>-U</<2SG422E@<Z"AX\JCT
M'#;B,L?;EWHGBE7)E()/(4IB&A;+0O._]S&SN2((K6*41JWS+P=:8Z@#4%CI
MR]6&5N*455[/]08>ECM3G>]J_NU*Q#]1-T+W<!N9KV.]B:VF6X8)0M6C1HM-
M.G_-B^F:ZUO_ )?D*\O4PZ/#X^;]X562^;,9CP\<9&BPN>P2!4HI-3B$M1,B
M++$00IIBVLF6Q+(HH0?TG"VAD(K>Z7JBZ:%#P/F]9'#%-G!HK720$QNV?&N=
M,22>I%+04&1Q ,+@DI4$&GCA4V+9#*W=B!ED.'LQ-;%5D%QRE>=">7@3B;$0
M%PR5(SS/$X%J0T%(<J</#V?HP\H2 F+S<,JC,5PU;$,W:W)][(G#$I@$UOT)
M$DH,CF>6?'&3MX%DQNC\HM5M"G]V1M;[ZSK2A57!KE7T8\CU*)4=)Y<;<3=1
MS5"6V(6[:352J2'+(>Z3C7>GMCXU&9__UNK?-[F89K)+EX9)U/RMR&)*2CW0
M2?@<^4UQY;[1]QM:W#*_X1J65;)[HY;9_4?ZG#N#\BFE07FMHRLL:E@4X\=(
M_P V.SVJK'7D]?V'1HZ-PU5+^8=[QW?]4=IMVNWM[>Y2 :I9!%&K*/$"M?LQ
MDP9L>2T.L/\ MS5IQ]K5OX;6*)N.\2;M*^YR)IFNB9)-- -=:-04\<-G7NU
M+L3FHHE]XU!HN>9K_P #%:'0VV"0B2( &H/+A2N))>QT:;L_;NX!$9FO#,T:
M%HH40+D* B1SGP\,0\B5E^I_N\C/F[%JXU6*V4_J [[Z0[596,VXK\]%+91M
M,HFZ5'*U/F*<L::6=O:U;_ 9,?8=K).L?M*EMLOXN:BAXXQRX.D7791$JJ E
M:^@XBI5<L*'.NDCT^C%S>AG9(S$IF#0\?3BMR]Q=BH;B4&Z7#!<Z_LQ7D:DV
MU^5&L<P% 0<LB1^W DA62K,IIY308C5$1Y)$DJ0*$5X$^.$2" ^V)IFF61&)
M6XED'QD,<P>!KZ\-+96$(YT@4('V8EV00%HX.="3]E:>-,2G C"8V\PI6F>?
M/#+<AA,<A(H%J*9YYXL29&QK+$CA:FF=:$8+)/<E,IO?MLB_*W*DA]+(]: &
MA^WUXX/<PTKD]J:Y^[]TU]9O5>"I')D .1!%/\)'+&>N.4_@7MP?_]?L$FWJ
MP++<0@'W=6M:>TC'@J=&'RIDQS/MU+[8+[05_N_LI]TO[3?MKGCCW>UHMQ-%
M(J9C))*MEJ^$X]6LM[XTEQM:IKZGT8=,_)?I(]TVGZFB/7;W)-%"D2+;R9T
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
ME=/]1>C###&!$!&%4 * *<!C55):&&[; ;FZ2&-F8G4#DM:DGT4Q5GS*BC\
M]OE1761;U.J0]P2H)ITU8@GT&G[,<?-RQW:4Y71>_7^W#_4/6T[D=RB>:2)(
MXW045R.&.13[A@M?EG3C\N/&6WQWB*BN".5Y#(TVNK'1)R('''I>W]SKCP<L
M=?IU.=7KV=XMJPF3>(%4K%I?IY23N=,8;PKGJ_PX\+E^X9+W5DWSD[%,"588
M!)O%DR,[3QQ1T +".714GAJ QZ3[?\ <?N&)3DQVRU,.7!ANX3AD=EN.QS3
M)9L'NV"U>:!V9!_$%TLOM&$[?_Z#O<'=KZ..S_F+L?0QKQR_B'\*[:MLX@5/
MEBIZI'O:*9U-=6/)9?NG9R95>UVW2RM7^4VK!5*$C__3D[IEK/#4C)30\:G&
M?[MLCI_:=F*[8Y@\0>/LYXXV-HZS0V@D$B%&.=<Z4X^W F(T;FVC(RKXC$V)
M4D%S;(H9R-) _5GB$#DK\J-+(6H*$Y>.?V8N@1L\Z6EAPJ,O7Z<"T(@'NBP8
M >84SH*YUPEK PO9%_'!())X4XY82P,Z3M+$0J1]G/$T1GR#&0G2 !0CX<-9
M:E0'NAE_+;I8$!F>,HG( MY<7=1<KBVLD]2D[1]+[_<F_%E*@DDA%)I7][&M
M8/B)?MKPB];']%>T+5TFW"$WLBYB.1CH/\0%,2\2*'VK/8Z#!;VMI#'#!&L,
M$8"QQH JJ!R51AE5+8H=O+)DO%!\O#TG#<1.1'+= T)H !F3B4B':1!>W<8D
M^<FE"A05C4\,^%,<G_L,5FZT5LF2?;I_;VD7HXEZ5%6V;I\W=37+/558Q0CD
M%\:'QQA__07_ *?#7#50\GORD]6KM9V-KS=;=K@6COH0?SGK2E17'!^U]56O
M5W]O,T]J:T37DI>[_4';[F=[#; RVJ-HFE04'2CJ6->6K/'I.[]MMELZT^3$
MO;7]5OU6(PVX*;:VL,+'>H[2RBNYE"SS*'M8"-71BX*%7_S&KYSCRG]':^3C
M39/WW_>_\3>VO)DDNZW$D5R)@94?64JP6G(:>?[V6/6TIG^A]/ZEMC&L6)6G
MB,OSO;1,D^XP?)WH\HW"$ '_ !FE&7^+'E^Q]M[-$Z_^RALK9/1>Y#&6^A01
MSRN(]8K'N$/\IJ<!(*T%?^&QPUCM,?F_3^<;=?#_ #'_U#NZ-NTQV\M1Q*_M
M&*ON:]BMZ&_[5;5H0A&4>4 URIGQQPVM(.V3LY12:Y_VXE.!8,BO'+:=5#SK
MS]&)8027MWILM-:O)E4T]N"DMD-B16S\AX?9BSSH5DJ!@0)"!6N?]V%8<40R
MQ=0^5:C(9<L5MC-!VU1-\U&=.9SI@:8CW.B;=&W36O/B,%3/89:6R!% :>.
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
M?]0-)Z2A9!]7NR#M6XV$^[V+/N$YE>=;R &JG)3R\OCBW K*KE>1,K4J'L>
M=Q_53L7=VMF7>-OA^6CZ0K>POJ X'X:8O;?H5II%([Y^I'9)V%=HDFM=UANI
MTG>6VNT66 Q@@-&1K6IU>82+I;_-BV/9^T5/4K.T=_[=(=F[0V1RFVS;U;7U
MRT\R33SSF1%0!8PJ1HH'N)J9W\S-BO4LT.B_4_ZB;!V3]9=QW4V/4W^.QBBL
MYI;D);_C0@=62(H78HM4_#DTM_%@>XM=5N<YMOJYM'^WFZ=I7*"2YW6\;<)]
MU%U&M+@R))E%H/DK&*_B:L+K$0-I,R,>YOK/VMW1MEA)OFU6]SW+80?+IN:W
MFB%UY-+"HJ]&\^CJ:=?[ODP/7P%87DRP^L':EQV39]K]RV,.Z)MCE]KNXKP6
M[QJ:^5R QTBNDZ?>7^'5A=8AHG293%^V_47M"#8=]L+S;]ONK[=2ILKWJ1K\
MH!\,8(+ +Q72R_OZ\+K#T&;4[E;??-HJ +VWI_\ FI_;A55^@SNO4P[]LQ-!
M?0TI05E6GZ\-Q?H0[(FM]]V!6EZE] ?(=%)5'GRISP*KE!R4 $FY;.SL!>V^
M?Q&5/U@X>&5IHT&Y[2"2;V#Q%)5I^O!#"4;'=MK"BE[ #SI*E/UXF&1R/__2
M^5, &8 +[](NTME[GO>XK?=(6E_+=BOMTL],IB'S%HJF-7.0Z;:O/[O\:X '
MG<OT9ZVX;=;=ME;>ZD[='<&[VUW.&MH@G\WY:[T]*>,(5?RO(J>9.LV "N2_
M2/ND023V\EG>PZ+V:SDM9Q*EW!MBJUW-;,!IDCBU\]/49)%CU,F ":'Z+]YW
M%K'/;"VGZVWV.ZP1)*=;V^Y7'RMN &51U.MY75F73@ L'9WT1E_KCMW;>YIH
M+C:=YOK_ &QULIG$HGVY'$XU-&JKTY0@K\?P^7 KVGZ+;G<[REI>[C:6]A/
MLMUO]K?1.\R26ULK@J-*5UB1-,E5]S4Z=3RZ@!%VGV,N^[%W1O#[C#:P=MVD
M=P582$S--.L* 41J+F?WM6CR^\R 'G<'TV[HV';9[^_BC"6<EK#N$*/JDMI;
MV#YFW29:<7B^Z7T/^&^E\ 'FX_3O?+#9]LW>66W>PW>S>^L9HG=PXCE6%H/<
M_P#<"5PG3_S8 '$/T.[YEW>VVI4MA=7%^VTR5E\D-^ML+OY>5@IHYA.3)KCU
MJZ:_+@ K7<7:&Z[#9;1>WK1-!O=LUW9&)BQZ:2-$P<$+I8.C8 +_ -V_2:7;
MWL-U[5NX[2*#9MHW7<Q+<NL]L=R 1[@$+E;I*RAM+-)&OFTZ, %.[][:[KV+
M<[BR[FO?F+^QG-IH>:29C^&LVN,N,X2LB>;][ !G9O9"]P[1W+NDE]%9P]NV
M(O&20.6E9Y5B11H5J+5O,?X/WF0 N'U$^B5W9;MJ[31;G;W?:;061GZETEWN
MMLLD88$*-$DFM4\WE^+R^; !1^Y>Q=Z[=O;.VW$Q!;XR+!<(S-'JAG:WE!\H
MD'3D0_!YTTO'K5EP 7+O#Z6;)VW;6SSW7S#R[G:;;*MO)('&BT1KX@RPA*_,
M2KT_NI][S:0"O?4/L_:]C^J6Y]J;=*T.WVMZEG!/<DNRJVD:Y"BY^]J.E, %
MP[U^C%@.X-[VWM>6WLK'M.>WL][W3=+W1&QO6I!*VN)%BTFJ3:6==7N8 *K%
M]&.^YH[$P6L<TVXM:"W@1_.8[]G6VE)("=*7I,]0_P"''H>545\ %?[F[4W7
MMRXMHK_0RWD/S-K+&25>/6T1R8(ZE9(W72ZK_P!++@ 38 ,P ?_3^5, &8 +
M'V5WO?=I3;I+9VEO='=MOGVJY%SU*"WN@!+HZ;QT<@9,=6G ^'UJ[F$:VXM
M+(6$.R3]N6=D$ET0V=SIZKJW4ZC3OH7SR.Z_N8 -H^J?<FU[#;[1;K"PLK>
M_L]ONW5C+!!N@ ND2C!#JH2C.K-'K?3\.D <[5]:MR&WV6R[GM]F^VBRLMFO
MKQ4G-T=OLKOYF,*%GC3J)5AD$U_%][ XW_ZQ[#!W%M?=7;U@_\ 4&UWMU+!
M'=7=W>636]RCABT<P@DCF:237^$VEO\ 49L %<M?K+OMM-MC)MUB8MLVBZV%
M(&$Y66SN]9?J'JZNH#(VEHV3 !7^W>\K_8]IW_:H;>"XL^XK5;2\68/5!'*)
MHY(BC)1T=?BU)]Y< #'N7ZI=R=P[7=6%ZL*G<9;2XW6YC#"2ZEL;?Y:!GJQ5
M:1^9Q&JZY//@ S>.[6A[+VGM3;-R>]L+>X_-G+PF%[>[EB1)+=26;7&DBN^I
M?(_E?WO= &Z_7GO)-XM-UCBM$N(-T_/+I-#E+F^^7%L7D&ORJ80WDBT>:1V^
M[I *[WAWU>]SVNT6L]C:V-OLD$EK91VHE_E22M-1S+)*696=O-@ <3?5;=]W
MA&U[AT=OL[ZRL-CW'<;>)Y)EVRQ=2JK&TFEG\NN2FEI=.CR>; H[_[MN^Y-
MUM6FNOG8=JLX-LM+PH8FFBMETK*ZFK:W_>\_NZL _;/>5_L&W[YM\%O!<VN
M_P!G\C>).'JJB194>,HR$.CH..I?O+@ M5]]=^Z[EYYHK.RM+J:YVN\%Q"LV
MI)MF01VI4/*ZT*C\4,K:_P!W !5^Y>\)-\[F;N!=NM-MN'G^:E@LA*L;3L_4
M>3SR22+K?X4=53_3TX #-^^IO=&_36K[K,;F&UO)K\6S23&)Y9Y>J=0,A\J?
MRX].G1'@ #[I[SO>Y.\;GNJ]M8(KV[G6YGMX>H(2ZTX!G=PK:?\ S, #C??J
MYON\Q]VI<V5G'_64UK<;D8Q,#&]FVJ/H:I&T@M[_ %.I@ V_WA[C$O;-ZEK9
MKO7:L<-O8;OHD,\EM;$]*"92_19%4E"RQI*T?EUX *SW-OL>^;O/N,>WVVUK
M.S2-:68DZ0=V+.1U7E?S,>&O2ONII7 JP 9@ __U/E3 !F #, &8 ,P 9@
MS !F "Q=H=G7'<2[M<=<6NW[)9MN&XW&@R,L0D2,!(P1K8M(/B7RZFP /%^E
M0.S7F\G?K)=K6]O+#:[YCTX;N2R@ZY8-(4,:SC3% -+NTK>ZJ>? !;N[_I%M
MU]<VFY6,UKV_LT.T; ;^>3RQ_.[K$297U,H2,:6DF>OE_P!.-\ $5]]+-IWC
MLKM)]KD@LM_EV;=MQN=*,\=Z=MN7!K*&THW00])M&F3X]/O8 *-VW]/+W?>T
M=Y[DMKE6BV74;NSB7JSI&(C(LTB!E98'=>CU5630_P#,THNK !94^@N[_F4.
MVR;E$ETE_M.V[H!&S"WEWJ'JV[*=0ZRQ_P N;W//[FM< &UC]!KR[W'8[$;S
M#&V^/O444C0MIB?8W99-=&]V;02K#W/NX %#?3/:OR-M_3N6 ['+,]G8W[VT
M\:RWD-E\W+"ZMYX@&(MHY-+=67S:>GYL G>WTUN>TK2/Y_<K9]T'RWS6UJR
MB9%N[87*.@U%I(XP>E*^A-,ONZT\^ "F8 ,P 9@ S !F #, &8 ,P ?_U?E3
M !F #, &8 ,P 9@ S !F !UVKWAW!VM?37NRW(@DN8)+2ZCDCCFAF@E%'BEB
ME5XY$:G!EP $0=_]TP[%?;$MS&VU7\YNY;9[>!UCN"N@RV^I";9S'Y*P=/R8
M &'^[O?A6XC>^BE@NK*VVV>VDM;9X6M[*ORH,31F/J05_"FT]5?OX D^HO>
M";5#M:7Y6UM[6>PMR$C$D=M=/KN(EDT]33.Q_$\VIO=]W5@ !VONK>]JL9K.
MPF6".=9XWD5$ZNBZC$,Z"6G4T21J%9-6G_%@ 8O]3.]F^4/YFZRV<]I=1S*J
M"1Y]O3IVDDKA=4K6\?DCZFK >_UF^H37UE?"_A2XVYKUK$I:6BK$=RK\WI4
M1!?QM3:M0_AP )ML[X[EVWMV][<MKE#LU_*)YK.:&&95F5=(EB,JNT,NCR]2
M(HVG !G</>_<G<-I96V[W*7(L(DMX)C#$L[11 K&LLR*LLW34Z4ZKOIP (<
M&8 ,P 9@ S !F #, &8 /__6^5, &8 ,P 9@ S !TG_[?[:RN>_WAO8EGM6V
MO<S)&Z+(/)9R,"%?RZE90R_O8 +)9?2KLVRDWJ>87>X6R]DQ=S;=%(\<;Q37
M05-#E497:,OJC;3_ (6P >CZ6=E7VV["JK>6CGLVZ[FO;B.2-VFF@E<F.C1Y
M9+H!KY4T>75J9@"L]U_3C8=GCN'M'W2\-YM.U;MLHCA21(3N3 -#N$JZ1&1[
ML#HJ]5]'EP -I]HVL7DVU,J+#+>;;V;;3Q(@>L3I+N=PA8$=3KZ0'][1<:?=
MP ,[K_[?]DFWRPV[:=QNV$FZ;WMETLZQ&20[+&908 E!JGITU5]7F\_[F "N
M6/TY[.G[>N^Z9+W<EV&"\M-NDC2!&N[:>XM&FD>5,NI#'<A+>/3T^MJ9O)IT
ML "]A_3?;-[V[>SO;WFV;EM-M;;M' ZK"LVU-*JW<Z]5"Q:*%NK%I\LN !S<
M?13;5^H6Y=JP;@\L>W6%YO$<P9':XLXX%GM$30ITS3JVJ3ROH3S+&WQ #OMO
MM+LJ_P"P[G:%FGO-MON[=JLK+=(HEBNT6^LS4?C)J*1N_F72BS]/6FC7@ K.
M[_2GM_:-B?=GW.3=(MNW([?OT=DT:3VZB\DMUD6&12SQ3Q1K);SJSQO+KA;W
M=> !7]2OIFW;/<S;1LZ76XV2VJ[DFY%=4;V,S?ASG0@Z<<8(CG=_+UM> "Q;
MC]%]@LNZMQ[:?<+P;AL-I>7^Y,\:+%<V]K8I=QO:/R,\C/'H;J:8DZW_ *>
M#R+Z.]N0MO%Q?7]V]G8[/M&]VT=OTA-IW5HU:"4L"NN/J^5Q\/GZ?FTX _J
ME])MC[2V6]OMNOKJYFV_N";89UN%C"N$MDN4E31FI"OTWU>][_D]W !RS !F
M #, &8 ,P ?_U_E3 !F #, &8 ,P ..U?ZM_,V_I;YW\SZ,NO\NZO6Z&G\6O
M2\_3T?S/AT^]@ <__P"M?.K_ /6OG?RHZ?\ W/4_)Z9TY_)4_P#T< %U^CO]
M:5W'\P^=_+OZ4WC\C^:ZW2^5\OS'R5?+JU>[H_#U^_@ I$?^ZGS>X]/\W^8_
M['\UT]>M-:?E_7IEIZG2^4U^7W.E@ 51_P!7];;NE\[U_G)?RO3U-?SVM.KT
M:>;YC7T=>G\35T_W< #RY_WE^:LOF?S[YK\QD_+]?S74_,_]7I5\WS?_ )NG
M\7[^ #2/_=[YWN'I_G?SG3__ +1I^9U]/E\Y3X>.GJ?X< "W<?Z\ZP_,?S+K
M?ED>GK];5^5:1TJ:O_V>G3H_TL &NT?US_5%I^4?F/\ 5%(_DOENM\[IZ(Z>
MC3^+IZ&G3\/1_<P ,+7_ '5^8O/EOSCK_-M\]I^8U?.Z?C__ ).GW?\ 5^Y@
M $M?]P/E-O\ E?S'Y;7'^6]/JTU=1^CTJ?\ J]7I:?\ 5ZFCSZL !\W^[OY=
M^-^>?EWY=-[WS/1_*]:]?CY?D^IHZG^CKP :7_\ NQ\QLGS_ .<_,?+G\@Z_
MS&KY;0:_+Z_]+IUU:/)TO_3P 1VW^Y_S.\?+?F_S&F#\]Z?7KHJ/E_F:?!73
MT.IY/=Z> #.Y_P#='Y"X_J?\X^0^=_[K\Q^8Z7S_ $Q_,ZOE^9Z5/>_%Z?[N
/ "IX ,P 9@ S !F #__9
end
http://ncc.websx.com for more free pics of this, and many other celebrities

178
uudecode/Openfile.inc Normal file
View File

@@ -0,0 +1,178 @@
;*************************************************************************************
; MODULE: OPENFILE.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : FILE HANDLING MACROS
;*************************************************************************************
HANDLE STRUC
PHANDLE TYPEDEF FAR PTR HANDLE
HANDLE@@mHandle DD ?
HANDLE ENDS
INVALID_HANDLE equ 0FFFFFFFFh
CREATEFILE MACRO pathFileName,access,share,open,attribute
push 0000h ; save handle to template (null)
push attribute ; save attributes
push open ; save creation flags
push 0000h ; save security attributes
push share ; save share mode
push access ; save acess mode
push pathFileName ; save pathFileName
call dword ptr __imp__CreateFileA@28 ; call create
ENDM
READFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesRead on stack
mov eax,esp ; move bytesRead address to eax
push 0000h ; save overlapped structure address
push eax ; save pointer to bytesRead
push sizeBuffer ; save length of buffer
push szBuffer ; save address of read buffer
push hFileHandle ; save file handle
call dword ptr __imp__ReadFile@20 ; call read
mov eax,[esp] ; move bytesRead value to eax
add esp,04h ; remove bytesRead variable from stack
ENDM
WRITEFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesWritten variable on stack
mov eax,esp ; move bytesWritten address to eax
push 0000h ; save overlapped structure address
push eax ; save bytesWritten address
push sizeBuffer ; save write length
push szBuffer ; save address of write buffer
push hFileHandle ; save file handle
call dword ptr __imp__WriteFile@20 ; call write
mov eax,[esp] ; move number of bytes written to eax
add esp,04h ; remove bytesWritten variable from stack
ENDM
CLOSEHANDLE MACRO handle
push handle ; save file handle
call dword ptr __imp__CloseHandle@4 ; call close
ENDM
FOPEN MACRO pathFileName,sFileInfo,access,share,open,attribute
CREATEFILE pathFileName,access,share,open,attribute
mov sFileInfo.FileInfo@@mhFileHandle,eax
ENDM
FCLOSE MACRO sFileInfo
LOCAL @@FCLOSEend
cmp sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
je @@FCLOSEend
CLOSEHANDLE sFileInfo.FileInfo@@mhFileHandle
mov sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
@@FCLOSEend:
ENDM
FREAD MACRO sFileInfo,ptrByte
LOCAL @@FREADreadError,@@FREADsimpleRead,@@FREADdone
cmp [FileInfo ptr[sFileInfo]].FileInfo@@mBufferIndex,00h ; is buffer index zero
jne @@FREADsimpleRead ; if not then just grab next byte
READFILE [FileInfo ptr[sFileInfo]].FileInfo@@mhFileHandle,sFileInfo,MaxLength ; otherwise we fill the read buffer
cmp eax,0000h ; did we read any data ?
je @@FREADreadError ; if not then we're done
mov [FileInfo ptr[sFileInfo]].FileInfo@@mBufferIndex,eax ; move number of bytes read to buffer index
lea eax,[FileInfo ptr[sFileInfo]].FileInfo@@mszBuffer ; load buffer address into eax register
mov [FileInfo ptr [sFileInfo]].FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
jmp @@FREADsimpleRead ; grab next byte
@@FREADreadError: ; read error sync address
xor eax,eax ; set return code
jmp @@FREADdone ; we're done
@@FREADsimpleRead: ; simple read sync address
mov eax,[FileInfo ptr[sFileInfo]].FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov al,byte ptr[eax] ; move byte value to al
mov byte ptr[ptrByte],al ; move byte value to user buffer
inc [FileInfo ptr[sFileInfo]].FileInfo@@mlpBufferPointer ; increment along lpBufferPointer
dec [FileInfo ptr[sFileInfo]].FileInfo@@mBufferIndex ; decrement the buffer index
mov eax,01h ; set the return code
@@FREADdone: ; done reading sync
ENDM
FWRITE MACRO sFileInfo,ptrByte
LOCAL @@FWRITEsimpleWrite,@@FWRITEuseBuffer
push ebx ; macro uses ebx, must preserve it
cmp [FileInfo ptr[sFileInfo]].FileInfo@@mBufferIndex,MaxLength ; compare buffer index to MaxLength
jl @@FWRITEsimpleWrite ; if it's less then insert char into buffer
lea ebx,[FileInfo ptr[sFileInfo]].FileInfo@@mszBuffer
WRITEFILE [FileInfo ptr[sFileInfo]].FileInfo@@mhFileHandle,ebx,MaxLength
mov [FileInfo ptr[sFileInfo]].FileInfo@@mBufferIndex,0000h ; set buffer index to zero
lea eax,[FileInfo ptr[sFileInfo]].FileInfo@@mszBuffer
mov [FileInfo ptr[sFileInfo]].FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEsimpleWrite: ; simple write sync address
cmp [FileInfo ptr[sFileInfo]].FileInfo@@mlpBufferPointer,0000h ; is buffer pointer null?
jne @@FWRITEuseBuffer ; if not then just use it
lea eax,[FileInfo ptr[sFileInfo]].FileInfo@@mszBuffer
mov [FileInfo ptr[sFileInfo]].FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEuseBuffer: ; use buffer sync address
mov cl,byte ptr[ptrByte] ; move byte to write to cl
mov eax,[FileInfo ptr[sFileInfo]].FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov byte ptr[eax],cl ; move byte into buffer
inc [FileInfo ptr[sFileInfo]].FileInfo@@mlpBufferPointer ; increment buffer pointer
inc [FileInfo ptr[sFileInfo]].FileInfo@@mBufferIndex ; increment buffer index
pop ebx ; restore ebx register
mov eax,01h ; set return code
ENDM
FREADLINE MACRO sFileInfo,szBuffer
LOCAL @@FGETScont,@@FGETexit,@@FGETsetError,@@FGETScrlf
push edi ; save source index register
mov edi,szBuffer ; move address of buffer into esi
@@FGETScont: ; loop control
FREAD sFileInfo,edi ; read a byte
cmp eax,0000h ; was our read successful?
je @@FGETexit ; if not we're done
cmp byte ptr[edi],0Dh ; is the byte a carriage return?
je @@FGETScrlf ; if yes then jump to handler
inc edi ; increment along esi
jmp @@FGETScont ; keep reading
@@FGETScrlf: ; carriage return control
mov byte ptr[edi],00h ; move null into line data
sub esp,04h ; create temp var on stack
mov edi,esp ; esi points to temp var
FREAD sFileInfo,edi ; read line-feed into temp var
add esp,04h ; restore stack
@@FGETexit: ; exit sync address
pop edi ; restore source index register
ENDM
FWRITELINE MACRO sFileInfo,szBuffer
LOCAL @@FWRITELINEcont,@@FWRITELINEend
@@FWRITELINEcont:
cmp byte ptr[szBuffer],00h
je @@FWRITELINEend
FWRITE sFileInfo,szBuffer
inc szBuffer
jmp @@FWRITELINEcont
@@FWRITELINEend:
ENDM
FFLUSH MACRO sFileInfo
LOCAL @@FFLUSHexit
cmp [FileInfo ptr[sFileInfo]].FileInfo@@mhFileHandle,INVALID_HANDLE ; valid handle?
je @@FFLUSHexit ; can't flush invalid file
push ebx ; save ebx register
lea ebx,[FileInfo ptr[sFileInfo]].FileInfo@@mszBuffer ; load buffer address into ebx register
WRITEFILE [FileInfo ptr[sFileInfo]].FileInfo@@mhFileHandle,ebx,[FileInfo ptr[sFileInfo]].FileInfo@@mBufferIndex ; write buffer to disk
mov [FileInfo ptr[sFileInfo]].FileInfo@@mBufferIndex,0000h ; set buffer index to zero
mov [FileInfo ptr[sFileInfo]].FileInfo@@mlpBufferPointer,ebx ; move address of buffer to lpBufferPointer
pop ebx ; restore ebx register
@@FFLUSHexit:
ENDM
FileInfo STRUC
MaxLength equ 800h
FileInfo@@mszBuffer DB MaxLength DUP(0) ; this field must appear first
FileInfo@@mhFileHandle HANDLE <INVALID_HANDLE>
FileInfo@@mBufferIndex DD (0)
FileInfo@@mlpBufferPointer DD (0)
FileInfo ENDS
extrn __imp__WriteFile@20:near
extrn __imp__CloseHandle@4:near
extrn __imp__CreateFileA@28:near
extrn __imp__GetLastError@0:near
extrn __imp__ReadFile@20:near

BIN
uudecode/Release/Uulib.lib Normal file

Binary file not shown.

163
uudecode/SCRAPS.TXT Normal file
View File

@@ -0,0 +1,163 @@
#if 0
BOOL UUEncode::encode(const String &srcPathFileName,const String &dstPathFileName)
{
int ch(0);
char readBuff[45];
int readCount;
int byteCount;
char *ptrBuff;
String outLine;
BYTE chByte;
if(srcPathFileName.isNull()||dstPathFileName.isNull())return FALSE;
FileHandle readFile(srcPathFileName,FileHandle::Read,FileHandle::ShareRead);
if(!readFile.isOkay())return FALSE;
FileHandle writeFile(dstPathFileName,FileHandle::Write,FileHandle::ShareRead,FileHandle::Overwrite);
if(!writeFile.isOkay())return FALSE;
FileMap readMap(readFile);
PureViewOfFile readView(readMap);
::sprintf(outLine,"begin %d %s",644,srcPathFileName);
writeFile.writeLine(outLine);
while(readCount=readView.read(readBuff,45))
{
ch=chEncode(readCount);
chByte=ch;
writeFile.write(chByte);
for(ptrBuff=readBuff,byteCount=readCount;byteCount>0;byteCount-=3,ptrBuff+=3)
{
ch=*ptrBuff>>2;
ch=chEncode(ch);
chByte=ch;
writeFile.write(chByte);
ch=(*ptrBuff<<4)&0x30|(ptrBuff[1]>>4)&0x0F;
ch=chEncode(ch);
chByte=ch;
writeFile.write(chByte);
ch=(ptrBuff[1]<<2)&0x3C|(ptrBuff[2]>>6)&0x03;
ch=chEncode(ch);
chByte=ch;
writeFile.write(chByte);
ch=ptrBuff[2]&0x3F;
ch=chEncode(ch);
chByte=ch;
writeFile.write(chByte);
}
writeFile.write((BYTE)'\n');
if(readCount!=45)break;
}
ch=('\0'?('\0'&0x3F)+' ':'`');
writeFile.write((BYTE)ch);
writeFile.write((BYTE)'\n');
::sprintf(outLine,"end");
writeFile.writeLine(outLine);
return TRUE;
}
#endif
#if 0
FILE_SHARE_READ equ 00000001h
FILE_SHARE_WRITE equ 00000002h
FILE_SHARE_DELETE equ 00000004h
FILE_ATTRIBUTE_READONLY equ 00000001h
FILE_ATTRIBUTE_HIDDEN equ 00000002h
FILE_ATTRIBUTE_SYSTEM equ 00000004h
FILE_ATTRIBUTE_DIRECTORY equ 00000010h
FILE_ATTRIBUTE_ARCHIVE equ 00000020h
FILE_ATTRIBUTE_NORMAL equ 00000080h
FILE_ATTRIBUTE_TEMPORARY equ 00000100h
FILE_ATTRIBUTE_COMPRESSED equ 00000800h
FILE_ATTRIBUTE_OFFLINE equ 00001000h
CREATE_NEW equ 00000001h
CREATE_ALWAYS equ 00000002h
OPEN_EXISTING equ 00000003h
OPEN_ALWAYS equ 00000004h
TRUNCATE_EXISTING equ 00000005h
DELETE equ 00010000h
READ_CONTROL equ 00020000h
WRITE_DAC equ 00040000h
WRITE_OWNER equ 00080000h
SYNCHRONIZE equ 00100000h
STANDARD_RIGHTS_REQUIRED equ 000F0000h
STANDARD_RIGHTS_READ equ READ_CONTROL
STANDARD_RIGHTS_WRITE equ READ_CONTROL
STANDARD_RIGHTS_EXECUTE equ READ_CONTROL
STANDARD_RIGHTS_ALL equ 001F0000h
SPECIFIC_RIGHTS_ALL equ 0000FFFFh
FILE_READ_DATA equ 0001h
FILE_LIST_DIRECTORY equ 0001h
FILE_WRITE_DATA equ 0002h
FILE_ADD_FILE equ 0002h
FILE_APPEND_DATA equ 0004h
FILE_ADD_SUBDIRECTORY equ 0004h
FILE_CREATE_PIPE_INSTANCE equ 0004h
FILE_READ_EA equ 0008h
FILE_WRITE_EA equ 0010h
FILE_EXECUTE equ 0020h
FILE_TRAVERSE equ 0020h
FILE_DELETE_CHILD equ 0040h
FILE_READ_ATTRIBUTES equ 0080h
FILE_WRITE_ATTRIBUTES equ 0100h
FILE_ALL_ACCESS equ STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 1FFh
FILE_GENERIC_READ equ STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE
FILE_GENERIC_WRITE equ STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE
FILE_GENERIC_EXECUTE equ STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE
GENERIC_READ equ 80000000h
GENERIC_WRITE equ 40000000h
GENERIC_EXECUTE equ 20000000h
GENERIC_ALL equ 10000000h
#endif
FileReadData=0x0001,FileListDirectory=0x0001,FileWriteData=0x0002,
FileAddFile=0x0002,FileAppendData=0x0004,FileAddSubDir=0x0004,
FileCreatePipeInstance=0x0004,FileReadEA=0x0008,FileWriteEA=0x0010,
FileExecute=0x0020,FileTraverse=0x0020,FileDeleteChild=0x0040,
FileReadAttributes=0x0080,FileWriteAttributes=0x0100,
FileAllAccess=StandardRightsRequired|Synchronize|0x1FF,
FileGenericRead=StandardRightsRead|FileReadData|FileReadAttributes|FileReadEA|Synchronize,
enum Rights{ReadControl=0x00020000,WriteDAC=0x00040000,WriteOwner=0x00080000,Synchronize=0x00100000};
enum Standard{StandardRightsRequired=0x000F0000,StandardRightsRead=ReadControl,
StandardRightsWrite=ReadControl,StandardRightsExecute=ReadControl,
StandardRightsAll=0x001F0000,SpecificRightsAll=0x0000FFFF};
;FWRITE MACRO sFileInfo,ptrByte
; LOCAL @@FWRITEsimpleWrite,@@FWRITEuseBuffer
; cmp sFileInfo.FileInfo@@mBufferIndex,MaxLength ; compare buffer index to MaxLength
; jl @@FWRITEsimpleWrite ; if it's less then insert char into buffer
; WRITEFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,MaxLength ; other wise
; mov sFileInfo.FileInfo@@mBufferIndex,0000h ; set buffer index to zero
; mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
; mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
;@@FWRITEsimpleWrite: ; simple write sync address
; cmp sFileInfo.FileInfo@@mlpBufferPointer,0000h ; is buffer pointer null?
; jne @@FWRITEuseBuffer ; if not then just use it
; mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
; mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
;@@FWRITEuseBuffer: ; use buffer sync address
; mov cl,byte ptr[ptrByte] ; move byte to write to cl
; mov eax,sFileInfo.FileInfo@@mlpBufferPointer ; move address of buffer to eax
; mov byte ptr[eax],cl ; move byte into buffer
; inc sFileInfo.FileInfo@@mlpBufferPointer ; increment buffer pointer
; inc sFileInfo.FileInfo@@mBufferIndex ; increment buffer index
; mov eax,01h ; set return code
;ENDM
// char strLine[128];
// while(openFile.readLine((BYTE*)strLine));
// openFile.writeFile((BYTE*)"I wonder what line this is?\n");
// openFile.flushFile();
//#if 0
// byteCount=0;
// DWORD elapsedTime(::GetTickCount());
// while(openFile.readFile(&ptrByte))++byteCount;
// elapsedTime=::GetTickCount()-elapsedTime;
// elapsedTime/=1000L;
// ::sprintf(strMessage,"%ld bytes read int %ld seconds\n",byteCount,elapsedTime);
// ::MessageBox(::GetFocus(),strMessage,(LPSTR)"FileIO",MB_OK);
//#endif
// openFile.closeFile();

113
uudecode/STRING.INC Normal file
View File

@@ -0,0 +1,113 @@
;*************************************************************************************
; MODULE: STRING.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : STRING RELATED MACROS
;*************************************************************************************
STRSTR MACRO szStringOne,szStringTwo
push offset szStringTwo ; save string one
push offset szStringOne ; save string two
call _strstr ; call standard library strstr
add esp,08h ; reset stack frame
ENDM
STRCHR MACRO szString,charByte
push charByte ; save charByte
push offset szString ; save string
call _strchr ; call standard library strchr
add esp,08h ; reset stack frame
ENDM
STRCAT MACRO szDstString,szSrcString
push offset szSrcString ; save source string
push offset szDstString ; save destination string
call _strcat ; call standard library strcat
add esp,08h ; reset stack frame
ENDM
STRLEN MACRO szData
push edi ; save destination index register
push ecx ; save ecx register
mov edi,offset szData ; get string to destination index register
mov ecx,0FFFFh ; move 65535 to ecx register
xor eax,eax ; clear eax register
repnz scasb ; scan string
mov eax,0FFFFh ; move 65535 to eax
sub eax,ecx ; subtract number of bytes scanned
dec eax ; decrement result
pop ecx ; restore ecx register
pop edi ; restore destination index register
ENDM
MEMCPY MACRO szDstData,szSrcData,lengthCopy
push esi ; save source index register
push edi ; save destination index register
mov esi,offset szSrcData ; move source data to source index register
mov edi,offset szDstData ; move destination data to destination index register
mov ecx,lengthCopy ; move number of bytes to copy to ecx register
rep movsb ; copy data
pop edi ; restore destination index register
pop esi ; restore source index register
ENDM
STRCMP MACRO szStringOne,szStringTwo
LOCAL @@STRCMPnotEqual,@@STRCMPequal,@@STRCMPexit
push ecx ; save ecx register
push edi ; save destination index register
push esi ; save source index register
mov edi,offset szStringOne ; move string one to destination index register
mov esi,offset szStringTwo ; move string two to source index register
STRLEN szStringOne ; get length of string one
mov ecx,eax ; save length to ecx register
STRLEN szStringTwo ; get length of string two
cmp ecx,eax ; compare lengths
jne @@STRCMPnotEqual ; if lengths differ, strings are not equal
@@STRCMPloop: ; loop control
mov al,byte ptr[esi] ; get byte from string two
cmp al,byte ptr[edi] ; compare with byte from string one
jne @@STRCMPnotEqual ; if bytes differ then we're done
loop @@STRCMPloop ; iterate through string length
@@STRCMPequal: ; equality control
mov eax,0001h ; set return code
jmp @@STRCMPexit ; we're done
@@STRCMPnotEqual: ; inequality control
xor eax,eax ; set return code
@@STRCMPexit: ; exit sync address
pop esi ; restore source index register
pop edi ; restore destination index register
pop ecx ; restore ecx register
ENDM
STRNCMP MACRO szStringOne,szStringTwo
LOCAL @@STRNCMPloop,@@STRNCMPequal,@@STRNCMPnotEqual,@@STRNCMPexit
push ecx ; save ecx register
push edi ; save edi register
push esi ; save source index register
mov edi,offset szStringOne ; move string one to destination index register
mov esi,offset szStringTwo ; move string two to source index register
STRLEN szStringOne ; get length of string one
mov ecx,eax ; save length to ecx register
STRLEN szStringTwo ; get length of string two
cmp ecx,eax ; compare the lengths
jle @@STRNCMPloop ; string one is less equal to string two
mov ecx,eax ; string two is less, so use it's length
@@STRNCMPloop: ; loop control
mov al,byte ptr[esi] ; get byte from string one
cmp al,byte ptr[edi] ; compare with byte from string two
jne @@STRNCMPnotEqual ; if byte are unequal, strings are unequal
inc edi ; increment along string two
inc esi ; increment along string one
loop @@STRNCMPloop ; keep going
@@STRNCMPequal: ; string equal sync address
mov eax,0001h ; set return code
jmp @@STRNCMPexit ; we're done
@@STRNCMPnotEqual: ; string unequal sync address
xor eax,eax ; set return code
@@STRNCMPexit: ; exit sync address
pop esi ; restore source index register
pop edi ; restore destination index register
pop ecx ; restore ecx register
ENDM
extrn _strstr:near
extrn _strchr:near
extrn _strcat:near

230
uudecode/TASM/DECODE64.ASM Normal file
View File

@@ -0,0 +1,230 @@
;*************************************************************************************
; MODULE: DECODE64.ASM DATE: JANUARY 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : BASE64 DECODER
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
.DATA
inputFile FileInfo <>
outputFile FileInfo <>
lineData DB 400h DUP(0)
szDefaultOutputPathFileName DB 'IMAGE.JPG',00h
szOutputPathFileName DB 0FFh DUP(0)
szFileNameLiteral DB 'filename=',00h
szOutBytes DB 04h DUP(0)
szInputPathFileName DD ?
szBase64ID DB '/9j/',00h
szExtension DB '.JPG',00H
szBase64Vector DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',00h
szBase64End DB '---',00h
num DD ?
lineLength DD ?
itemIndex DD ?
itemCount DD ?
numIndex DD ?
valueItem DD ?
.CODE
_decodeBase64 proc near ; WORD decodeBase64(const char *szPathFileName)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov itemCount,0000h ; initialize decoded counter to zero
push dword ptr[ebp+8] ; save pathFileName
pop szInputPathFileName ; restore into inputPathFileName
cmp szInputPathFileName,0000h ; is the file na null
je @@error ; if so then we've got an error
FOPEN szInputPathFileName,inputFile,GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
cmp inputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; do we have a valid handle ?
je @@error ; if the handle is invalid then we've got an error
call _outputName ; get output file name
@@search: ; search sync address
FGETS inputFile,lineData ; get input line
cmp eax,0000h ; did we read anything
je @@end ; if not we're done
STRSTR lineData,szFileNameLiteral ; look for "filename=" literal
cmp eax,0000h ; did we find it
jne @@nameFile ; if so then extract the filename
STRNCMP szBase64ID,lineData ; compare line to base64 identifier
cmp eax,0001h ; if we've got it then we start decoding
je @@beginDecode ; jump to decode handler
jmp @@search ; keep going
@@nameFile: ; nameFile sync address
push eax ; save address of filename literal
push offset szOutputPathFileName ; save address of filename buffer
call _nameFile ; extract the file name
add esp,08h ; reset stack frame
jmp @@search ; keep going
@@beginDecode: ; begin decode sync address
mov esi,offset szOutputPathFileName
FOPEN esi,outputFile,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
; FOPEN szOutputPathFileName,outputFile,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
@@continueDecode: ; continue decode sync address
STRLEN lineData ; get length of lineData
dec eax ; decrement line length
mov lineLength,eax ; move line length into lineLength
mov itemIndex,0000h ; set itemIndex to zero
@@itemLoop: ; itemLoop sync address
mov valueItem,0000h ; set valueItem to zero
mov esi,offset lineData ; move ptr lineData to esi register
add esi,itemIndex ; add itemIndex to address
cmp byte ptr[esi+02h],'=' ; is pChar[2] equal to '='?
je @@assignOne ; if so then num=1
cmp byte ptr[esi+03h],'=' ; else if pChar[3]='='
je @@assignTwo ; then num=2
mov num,0003h ; otherwise num=3
jmp @@assignContinue ; continue
@@assignOne: ; assignment sync address
mov num,0001h ; assign 1 to num
jmp @@assignContinue ; continue
@@assignTwo: ; assignment sync address
mov num,0002h ; assign two to num
jmp @@assignContinue ; continue
@@assignContinue: ; end assignment sync address
mov numIndex,0000h ; set numIndex to zero
@@numLoop: ; numIndex loop sync address
xor eax,eax ; clear out eax
mov edi,numIndex ; move numIndex into destination index
mov al,byte ptr[esi+edi] ; get the byte at pChar[numIndex]
STRCHR szBase64Vector,eax ; ::strchar(szBase64Vector,pChar[numIndex])
cmp eax,0000h ; did we find the token
je @@end ; if not then we've got an error
mov edi,eax ; move address of found token to edi (pTok)
sub edi,offset szBase64Vector ; perform (pTok-szBase64Vector) result to edi
mov eax,0003h ; move 3 into eax
sub eax,numIndex ; perform (3-numIndex) result to eax
mov edx,0006h ; move 6 into edx
imul eax,edx ; perform (3-numIndex)*6 result to eax
mov cl,al ; move shift value into cl register
shl edi,cl ; perform (pTok-smszVec)<<((3-numIndex)*6) result to edi
add valueItem,edi ; valueItem+=(pTok-smszVec)<<((3-numIndex)*6)
inc numIndex ; increment numIndex
mov eax,numIndex ; move numIndex into eax register
cmp eax,num ; compare numIndex to num
jle @@numLoop ; loop through <= operation
mov numIndex,0002h ; set numIndex to 2
@@nextNumLoop: ; next numLoop sync address
mov esi,offset szOutBytes ; move szOutBytes address into esi
mov edi,numIndex ; move numIndex into edi
mov eax,valueItem ; move valueItem into eax register
and eax,000000FFh ; apply bit mask
mov byte ptr[esi+edi],al ; set byte in szOutBytes
shr valueItem,08h ; shift valueItem right 8 bytes
dec numIndex ; decrement numIndex
cmp numIndex,0000h ; compare numIndex to zero
jge @@nextNumLoop ; if >=0 keep going
mov esi,offset szOutBytes ; move szOutBytes to esi
xor edi,edi ; clear edi
@@writeLoop: ; writeLoop sync address
FWRITE outputFile,byte ptr[esi+edi] ; write out the byte
inc edi ; increment edi
cmp edi,num ; compare edi to num
jl @@writeLoop ; if it's less then keep going
add itemIndex,0004h ; increment itemIndex by four
mov eax,itemIndex ; move itemIndex to eax
cmp eax,lineLength ; compare itemIndex to lineLength
jl @@itemLoop ; if it's less that keep going
FGETS inputFile,lineData ; get another line
cmp eax,0000h ; did we get a line?
je @@end ; if not then we're done
STRNCMP lineData,szBase64End ; look for trailer signature
cmp eax,0001h ; if we found it then another image may follow
je @@prepNewImage ; flush and close current output file
jmp @@continueDecode ; otherwise keep going
@@prepNewImage: ; prepNewImage sync address
inc itemCount ; increment decoded counter
FFLUSH outputFile ; flush output file
CLOSEHANDLE outputFile.FileInfo@@mhFileHandle ; close output file
mov outputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; invalidate the handle
jmp @@search ; try to decode another image
@@end: ; end sync address
cmp outputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; is this a valid handle
je @@closePrimary ; is handle is invalid, just close the input file
FFLUSH outputFile ; flush the output file
CLOSEHANDLE outputFile.FileInfo@@mhFileHandle ; close output file
@@closePrimary: ; close primary sync address
CLOSEHANDLE inputFile.FileInfo@@mhFileHandle ; close input file
@@error: ; error sync address
mov eax,itemCount ; move decoded count to eax register
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore prior stack frame
retn ; return near to caller
_decodeBase64 endp
_nameFile proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov edi,[ebp+8] ; move dest string to destination index register
mov esi,[ebp+0Ch] ; move source string to source index register
@@NAMEFILEquoteLoop: ; first quote loop control
mov al,byte ptr[esi] ; move byte into al
cmp al,00h ; is it null?
je @@NAMEFILEerror ; if it's null then we've got an error
cmp al,'"' ; is it the first quote ?
je @@NAMEFILEreadFile ; if so then get the filename
inc esi ; increment along esi
jmp @@NAMEFILEquoteLoop ; keep going
@@NAMEFILEreadFile: ; read file name sync address
inc esi ; skip past the first quote
mov al,byte ptr[esi] ; read from file name
cmp al,'"' ; is the byte the closing quote?
je @@NAMEFILEreadEnd ; if so then we're done
cmp al,00h ; is the byte a null byte?
je @@NAMEFILEreadEnd ; if so then we're done
mov byte ptr[edi],al ; store the byte in destination
inc edi ; increment along destination
jmp @@NAMEFILEreadFile ; keep going
@@NAMEFILEreadEnd: ; read end sync address
mov byte ptr[edi],00h ; null terminate the string
mov eax,0001h ; set return code
jmp @@NAMEFILEend ; we're done
@@NAMEFILEerror: ; error sync address
xor eax,eax ; set error return
@@NAMEFILEend: ; end proc sync address
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore prior stack frame
retn ; return near to caller
_nameFile endp
_outputName proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,szInputPathFileName ; set esi to input name address
mov edi,offset szOutputPathFileName ; set edi to output name address
xor ecx,ecx ; clear ecx for indexing
@@copyLoop: ; copy loop sync address
mov al,[esi+ecx] ; get byte from source to al
cmp al,00h ; is this a null byte
je @@copyDone ; if so then we're done copying
mov byte ptr[edi],al ; store the byte into destination
inc edi ; increment destination
inc ecx ; increment source index
jmp @@copyLoop ; loop through the string
@@copyDone: ; copy done sync address
mov byte ptr[edi],00h ; set null terminator
STRCHR szOutputPathFileName,'.' ; look for extension marker
cmp eax,0000h ; did we find it?
je @@nameError ; if not then we set output name to default
mov byte ptr[eax],0000h ; otherwise terminate the string
STRCAT szOutputPathFileName,szExtension ; cat the string with ".jpg"
jmp @@outputDone ; we're done
@@nameError: ; nameError sync address
STRLEN szDefaultOutputPathFileName ; get the length of the default file name
MEMCPY szOutputPathFileName,szDefaultOutputPathFileName,eax ; set output file name to default
@@outputDone: ; outputDone sync address
pop edi ; restore destination index
pop esi ; restore source index
pop ebp ; restore previous stack frame
retn ; return near to caller
_outputName endp
public _decodeBase64
END

230
uudecode/TASM/DECODE64.BAK Normal file
View File

@@ -0,0 +1,230 @@
;*************************************************************************************
; MODULE: DECODE64.ASM DATE: JANUARY 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : BASE64 DECODER
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
.DATA
inputFile FileInfo <>
outputFile FileInfo <>
lineData DB 400h DUP(0)
szDefaultOutputPathFileName DB 'IMAGE.JPG',00h
szOutputPathFileName DB 0FFh DUP(0)
szFileNameLiteral DB 'filename=',00h
szOutBytes DB 04h DUP(0)
szInputPathFileName DD ?
szBase64ID DB '/9j/',00h
szExtension DB '.JPG',00H
szBase64Vector DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',00h
szBase64End DB '---',00h
num DD ?
lineLength DD ?
itemIndex DD ?
itemCount DD ?
numIndex DD ?
valueItem DD ?
.CODE
_decodeBase64 proc near ; WORD decodeBase64(const char *szPathFileName)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov itemCount,0000h ; initialize decoded counter to zero
push dword ptr[ebp+8] ; save pathFileName
pop szInputPathFileName ; restore into inputPathFileName
cmp szInputPathFileName,0000h ; is the file na null
je @@error ; if so then we've got an error
FOPEN szInputPathFileName,inputFile,GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
cmp inputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; do we have a valid handle ?
je @@error ; if the handle is invalid then we've got an error
call _outputName ; get output file name
@@search: ; search sync address
FGETS inputFile,lineData ; get input line
cmp eax,0000h ; did we read anything
je @@end ; if not we're done
STRSTR lineData,szFileNameLiteral ; look for "filename=" literal
cmp eax,0000h ; did we find it
jne @@nameFile ; if so then extract the filename
STRNCMP szBase64ID,lineData ; compare line to base64 identifier
cmp eax,0001h ; if we've got it then we start decoding
je @@beginDecode ; jump to decode handler
jmp @@search ; keep going
@@nameFile: ; nameFile sync address
push eax ; save address of filename literal
push offset szOutputPathFileName ; save address of filename buffer
call _nameFile ; extract the file name
add esp,08h ; reset stack frame
jmp @@search ; keep going
@@beginDecode: ; begin decode sync address
mov esi,offset szOutputPathFileName
FOPEN esi,outputFile,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
; FOPEN szOutputPathFileName,outputFile,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
@@continueDecode: ; continue decode sync address
STRLEN lineData ; get length of lineData
dec eax ; decrement line length
mov lineLength,eax ; move line length into lineLength
mov itemIndex,0000h ; set itemIndex to zero
@@itemLoop: ; itemLoop sync address
mov valueItem,0000h ; set valueItem to zero
mov esi,offset lineData ; move ptr lineData to esi register
add esi,itemIndex ; add itemIndex to address
cmp byte ptr[esi+02h],'=' ; is pChar[2] equal to '='?
je @@assignOne ; if so then num=1
cmp byte ptr[esi+03h],'=' ; else if pChar[3]='='
je @@assignTwo ; then num=2
mov num,0003h ; otherwise num=3
jmp @@assignContinue ; continue
@@assignOne: ; assignment sync address
mov num,0001h ; assign 1 to num
jmp @@assignContinue ; continue
@@assignTwo: ; assignment sync address
mov num,0002h ; assign two to num
jmp @@assignContinue ; continue
@@assignContinue: ; end assignment sync address
mov numIndex,0000h ; set numIndex to zero
@@numLoop: ; numIndex loop sync address
xor eax,eax ; clear out eax
mov edi,numIndex ; move numIndex into destination index
mov al,byte ptr[esi+edi] ; get the byte at pChar[numIndex]
STRCHR szBase64Vector,eax ; ::strchar(szBase64Vector,pChar[numIndex])
cmp eax,0000h ; did we find the token
je @@end ; if not then we've got an error
mov edi,eax ; move address of found token to edi (pTok)
sub edi,offset szBase64Vector ; perform (pTok-szBase64Vector) result to edi
mov eax,0003h ; move 3 into eax
sub eax,numIndex ; perform (3-numIndex) result to eax
mov edx,0006h ; move 6 into edx
imul eax,edx ; perform (3-numIndex)*6 result to eax
mov cl,al ; move shift value into cl register
shl edi,cl ; perform (pTok-smszVec)<<((3-numIndex)*6) result to edi
add valueItem,edi ; valueItem+=(pTok-smszVec)<<((3-numIndex)*6)
inc numIndex ; increment numIndex
mov eax,numIndex ; move numIndex into eax register
cmp eax,num ; compare numIndex to num
jle @@numLoop ; loop through <= operation
mov numIndex,0002h ; set numIndex to 2
@@nextNumLoop: ; next numLoop sync address
mov esi,offset szOutBytes ; move szOutBytes address into esi
mov edi,numIndex ; move numIndex into edi
mov eax,valueItem ; move valueItem into eax register
and eax,000000FFh ; apply bit mask
mov byte ptr[esi+edi],al ; set byte in szOutBytes
shr valueItem,08h ; shift valueItem right 8 bytes
dec numIndex ; decrement numIndex
cmp numIndex,0000h ; compare numIndex to zero
jge @@nextNumLoop ; if >=0 keep going
mov esi,offset szOutBytes ; move szOutBytes to esi
xor edi,edi ; clear edi
@@writeLoop: ; writeLoop sync address
FWRITE outputFile,byte ptr[esi+edi] ; write out the byte
inc edi ; increment edi
cmp edi,num ; compare edi to num
jl @@writeLoop ; if it's less then keep going
add itemIndex,0004h ; increment itemIndex by four
mov eax,itemIndex ; move itemIndex to eax
cmp eax,lineLength ; compare itemIndex to lineLength
jl @@itemLoop ; if it's less that keep going
FGETS inputFile,lineData ; get another line
cmp eax,0000h ; did we get a line?
je @@end ; if not then we're done
STRNCMP lineData,szBase64End ; look for trailer signature
cmp eax,0001h ; if we found it then another image may follow
je @@prepNewImage ; flush and close current output file
jmp @@continueDecode ; otherwise keep going
@@prepNewImage: ; prepNewImage sync address
inc itemCount ; increment decoded counter
FFLUSH outputFile ; flush output file
CLOSEHANDLE outputFile.FileInfo@@mhFileHandle ; close output file
mov outputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; invalidate the handle
jmp @@search ; try to decode another image
@@end: ; end sync address
cmp outputFile.FileInfo@@mhFileHandle,INVALID_HANDLE ; is this a valid handle
je @@closePrimary ; is handle is invalid, just close the input file
FFLUSH outputFile ; flush the output file
CLOSEHANDLE outputFile.FileInfo@@mhFileHandle ; close output file
@@closePrimary: ; close primary sync address
CLOSEHANDLE inputFile.FileInfo@@mhFileHandle ; close input file
@@error: ; error sync address
mov eax,itemCount ; move decoded count to eax register
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore prior stack frame
retn ; return near to caller
_decodeBase64 endp
_nameFile proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov edi,[ebp+8] ; move dest string to destination index register
mov esi,[ebp+0Ch] ; move source string to source index register
@@NAMEFILEquoteLoop: ; first quote loop control
mov al,byte ptr[esi] ; move byte into al
cmp al,00h ; is it null?
je @@NAMEFILEerror ; if it's null then we've got an error
cmp al,'"' ; is it the first quote ?
je @@NAMEFILEreadFile ; if so then get the filename
inc esi ; increment along esi
jmp @@NAMEFILEquoteLoop ; keep going
@@NAMEFILEreadFile: ; read file name sync address
inc esi ; skip past the first quote
mov al,byte ptr[esi] ; read from file name
cmp al,'"' ; is the byte the closing quote?
je @@NAMEFILEreadEnd ; if so then we're done
cmp al,00h ; is the byte a null byte?
je @@NAMEFILEreadEnd ; if so then we're done
mov byte ptr[edi],al ; store the byte in destination
inc edi ; increment along destination
jmp @@NAMEFILEreadFile ; keep going
@@NAMEFILEreadEnd: ; read end sync address
mov byte ptr[edi],00h ; null terminate the string
mov eax,0001h ; set return code
jmp @@NAMEFILEend ; we're done
@@NAMEFILEerror: ; error sync address
xor eax,eax ; set error return
@@NAMEFILEend: ; end proc sync address
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore prior stack frame
retn ; return near to caller
_nameFile endp
_outputName proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,szInputPathFileName ; set esi to input name address
mov edi,offset szOutputPathFileName ; set edi to output name address
xor ecx,ecx ; clear ecx for indexing
@@copyLoop: ; copy loop sync address
mov al,[esi+ecx] ; get byte from source to al
cmp al,00h ; is this a null byte
je @@copyDone ; if so then we're done copying
mov byte ptr[edi],al ; store the byte into destination
inc edi ; increment destination
inc ecx ; increment source index
jmp @@copyLoop ; loop through the string
@@copyDone: ; copy done sync address
mov byte ptr[edi],00h ; set null terminator
STRCHR szOutputPathFileName,'.' ; look for extension marker
cmp eax,0000h ; did we find it?
je @@nameError ; if not then we set output name to default
mov byte ptr[eax],0000h ; otherwise terminate the string
STRCAT szOutputPathFileName,szExtension ; cat the string with ".jpg"
jmp @@outputDone ; we're done
@@nameError: ; nameError sync address
STRLEN szDefaultOutputPathFileName ; get the length of the default file name
MEMCPY szOutputPathFileName,szDefaultOutputPathFileName,eax ; set output file name to default
@@outputDone: ; outputDone sync address
pop edi ; restore destination index
pop esi ; restore source index
pop ebp ; restore previous stack frame
retn ; return near to caller
_outputName endp
public _decodeBase64
END

View File

@@ -0,0 +1,59 @@
;*************************************************************************************
; MODULE: DEVIOCTL.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : FILE RELATED CONSTANTS
;*************************************************************************************
FILE_SHARE_READ equ 00000001h
FILE_SHARE_WRITE equ 00000002h
FILE_SHARE_DELETE equ 00000004h
FILE_ATTRIBUTE_READONLY equ 00000001h
FILE_ATTRIBUTE_HIDDEN equ 00000002h
FILE_ATTRIBUTE_SYSTEM equ 00000004h
FILE_ATTRIBUTE_DIRECTORY equ 00000010h
FILE_ATTRIBUTE_ARCHIVE equ 00000020h
FILE_ATTRIBUTE_NORMAL equ 00000080h
FILE_ATTRIBUTE_TEMPORARY equ 00000100h
FILE_ATTRIBUTE_COMPRESSED equ 00000800h
FILE_ATTRIBUTE_OFFLINE equ 00001000h
CREATE_NEW equ 00000001h
CREATE_ALWAYS equ 00000002h
OPEN_EXISTING equ 00000003h
OPEN_ALWAYS equ 00000004h
TRUNCATE_EXISTING equ 00000005h
DELETE equ 00010000h
READ_CONTROL equ 00020000h
WRITE_DAC equ 00040000h
WRITE_OWNER equ 00080000h
SYNCHRONIZE equ 00100000h
STANDARD_RIGHTS_REQUIRED equ 000F0000h
STANDARD_RIGHTS_READ equ READ_CONTROL
STANDARD_RIGHTS_WRITE equ READ_CONTROL
STANDARD_RIGHTS_EXECUTE equ READ_CONTROL
STANDARD_RIGHTS_ALL equ 001F0000h
SPECIFIC_RIGHTS_ALL equ 0000FFFFh
FILE_READ_DATA equ 0001h
FILE_LIST_DIRECTORY equ 0001h
FILE_WRITE_DATA equ 0002h
FILE_ADD_FILE equ 0002h
FILE_APPEND_DATA equ 0004h
FILE_ADD_SUBDIRECTORY equ 0004h
FILE_CREATE_PIPE_INSTANCE equ 0004h
FILE_READ_EA equ 0008h
FILE_WRITE_EA equ 0010h
FILE_EXECUTE equ 0020h
FILE_TRAVERSE equ 0020h
FILE_DELETE_CHILD equ 0040h
FILE_READ_ATTRIBUTES equ 0080h
FILE_WRITE_ATTRIBUTES equ 0100h
FILE_ALL_ACCESS equ STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 1FFh
FILE_GENERIC_READ equ STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE
FILE_GENERIC_WRITE equ STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE
FILE_GENERIC_EXECUTE equ STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE
GENERIC_READ equ 80000000h
GENERIC_WRITE equ 40000000h
GENERIC_EXECUTE equ 20000000h
GENERIC_ALL equ 10000000h

162
uudecode/TASM/OPENFILE.BAK Normal file
View File

@@ -0,0 +1,162 @@
;*************************************************************************************
; MODULE: OPENFILE.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : FILE HANDLING MACROS
;*************************************************************************************
HANDLE STRUC
PHANDLE TYPEDEF FAR PTR HANDLE
HANDLE@@mHandle DD ?
HANDLE ENDS
INVALID_HANDLE equ 0FFFFFFFFh
CREATEFILE MACRO pathFileName,access,share,open,attribute
push 0000h ; save handle to template (null)
push attribute ; save attributes
push open ; save creation flags
push 0000h ; save security attributes
push share ; save share mode
push access ; save acess mode
push pathFileName ; save pathFileName
call CreateFileA ; call create
ENDM
READFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesRead on stack
mov eax,esp ; move bytesRead address to eax
push 0000h ; save overlapped structure address
push eax ; save pointer to bytesRead
push sizeBuffer ; save length of buffer
push offset szBuffer ; save address of read buffer
push hFileHandle ; save file handle
call ReadFile ; call read
mov eax,[esp] ; move bytesRead value to eax
add esp,04h ; remove bytesRead variable from stack
ENDM
WRITEFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesWritten variable on stack
mov eax,esp ; move bytesWritten address to eax
push 0000h ; save overlapped structure address
push eax ; save bytesWritten address
push sizeBuffer ; save write length
push offset szBuffer ; save address of write buffer
push hFileHandle ; save file handle
call WriteFile ; call write
mov eax,[esp] ; move number of bytes written to eax
add esp,04h ; remove bytesWritten variable from stack
ENDM
CLOSEHANDLE MACRO handle
push handle ; save file handle
call CloseHandle ; call close
ENDM
FOPEN MACRO pathFileName,sFileInfo,access,share,open,attribute
CREATEFILE pathFileName,access,share,open,attribute
mov sFileInfo.FileInfo@@mhFileHandle,eax
ENDM
FCLOSE MACRO sFileInfo
LOCAL @@FCLOSEend
cmp sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
je @@FCLOSEend
CLOSEHANDLE sFileInfo.FileInfo@@mhFileHandle
mov sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
@@FCLOSEend:
ENDM
FREAD MACRO sFileInfo,ptrByte
LOCAL @@FREADreadError,@@FREADsimpleRead,@@FREADdone
cmp sFileInfo.FileInfo@@mBufferIndex,00h ; is buffer index zero
jne @@FREADsimpleRead ; if not then just grab next byte
READFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,MaxLength ; otherwise we fill the read buffer
cmp eax,0000h ; did we read any data ?
je @@FREADreadError ; if not then we're done
mov sFileInfo.FileInfo@@mBufferIndex,eax ; move number of bytes read to buffer index
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
jmp @@FREADsimpleRead ; grab next byte
@@FREADreadError: ; read error sync address
xor eax,eax ; set return code
jmp @@FREADdone ; we're done
@@FREADsimpleRead: ; simple read sync address
mov eax,sFileInfo.FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov al,byte ptr[eax] ; move byte value to al
mov byte ptr[ptrByte],al ; move byte value to user buffer
inc sFileInfo.FileInfo@@mlpBufferPointer ; increment along lpBufferPointer
dec sFileInfo.FileInfo@@mBufferIndex ; decrement the buffer index
mov eax,01h ; set the return code
@@FREADdone: ; done reading sync
ENDM
FWRITE MACRO sFileInfo,ptrByte
LOCAL @@FWRITEsimpleWrite,@@FWRITEuseBuffer
cmp sFileInfo.FileInfo@@mBufferIndex,MaxLength ; compare buffer index to MaxLength
jl @@FWRITEsimpleWrite ; if it's less then insert char into buffer
WRITEFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,MaxLength ; other wise
mov sFileInfo.FileInfo@@mBufferIndex,0000h ; set buffer index to zero
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEsimpleWrite: ; simple write sync address
cmp sFileInfo.FileInfo@@mlpBufferPointer,0000h ; is buffer pointer null?
jne @@FWRITEuseBuffer ; if not then just use it
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEuseBuffer: ; use buffer sync address
mov cl,byte ptr[ptrByte] ; move byte to write to cl
mov eax,sFileInfo.FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov byte ptr[eax],cl ; move byte into buffer
inc sFileInfo.FileInfo@@mlpBufferPointer ; increment buffer pointer
inc sFileInfo.FileInfo@@mBufferIndex ; increment buffer index
mov eax,01h ; set return code
ENDM
FFLUSH MACRO sFileInfo
LOCAL @@FFLUSHexit
cmp sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
je @@FFLUSHexit
WRITEFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,sFileInfo.FileInfo@@mBufferIndex ; write buffer to disk
mov sFileInfo.FileInfo@@mBufferIndex,0000h ; set buffer index to zero
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FFLUSHexit:
ENDM
FGETS MACRO sFileInfo,szBuffer
LOCAL @@FGETScont,@@FGETexit,@@FGETsetError,@@FGETScrlf
push esi ; save source index register
mov esi,offset szBuffer ; move address of buffer into esi
@@FGETScont: ; loop control
FREAD sFileInfo,esi ; read a byte
cmp eax,0000h ; was our read successful?
je @@FGETexit ; if not we're done
cmp byte ptr[esi],0Dh ; is the byte a carriage return?
je @@FGETScrlf ; if yes then jump to handler
inc esi ; increment along esi
jmp @@FGETScont ; keep reading
@@FGETScrlf: ; carriage return control
mov byte ptr[esi],00h ; move null into line data
sub esp,04h ; create temp var on stack
mov esi,esp ; esi points to temp var
FREAD sFileInfo,esi ; read line-feed into temp var
add esp,04h ; restore stack
@@FGETexit: ; exit sync address
pop esi ; restore source index register
ENDM
FileInfo STRUC
MaxLength equ 800h
FileInfo@@mhFileHandle HANDLE <INVALID_HANDLE>
FileInfo@@mszBuffer DB MaxLength DUP(0)
FileInfo@@mBufferIndex DD (0)
FileInfo@@mlpBufferPointer DD (0)
FileInfo ENDS
extrn WriteFile:near
extrn CloseHandle:near
extrn CreateFileA:near
extrn GetLastError:near
extrn ReadFile:near

162
uudecode/TASM/OPENFILE.INC Normal file
View File

@@ -0,0 +1,162 @@
;*************************************************************************************
; MODULE: OPENFILE.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : FILE HANDLING MACROS
;*************************************************************************************
HANDLE STRUC
PHANDLE TYPEDEF FAR PTR HANDLE
HANDLE@@mHandle DD ?
HANDLE ENDS
INVALID_HANDLE equ 0FFFFFFFFh
CREATEFILE MACRO pathFileName,access,share,open,attribute
push 0000h ; save handle to template (null)
push attribute ; save attributes
push open ; save creation flags
push 0000h ; save security attributes
push share ; save share mode
push access ; save acess mode
push pathFileName ; save pathFileName
call CreateFileA ; call create
ENDM
READFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesRead on stack
mov eax,esp ; move bytesRead address to eax
push 0000h ; save overlapped structure address
push eax ; save pointer to bytesRead
push sizeBuffer ; save length of buffer
push offset szBuffer ; save address of read buffer
push hFileHandle ; save file handle
call ReadFile ; call read
mov eax,[esp] ; move bytesRead value to eax
add esp,04h ; remove bytesRead variable from stack
ENDM
WRITEFILE MACRO hFileHandle,szBuffer,sizeBuffer
sub esp,04h ; create bytesWritten variable on stack
mov eax,esp ; move bytesWritten address to eax
push 0000h ; save overlapped structure address
push eax ; save bytesWritten address
push sizeBuffer ; save write length
push offset szBuffer ; save address of write buffer
push hFileHandle ; save file handle
call WriteFile ; call write
mov eax,[esp] ; move number of bytes written to eax
add esp,04h ; remove bytesWritten variable from stack
ENDM
CLOSEHANDLE MACRO handle
push handle ; save file handle
call CloseHandle ; call close
ENDM
FOPEN MACRO pathFileName,sFileInfo,access,share,open,attribute
CREATEFILE pathFileName,access,share,open,attribute
mov sFileInfo.FileInfo@@mhFileHandle,eax
ENDM
FCLOSE MACRO sFileInfo
LOCAL @@FCLOSEend
cmp sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
je @@FCLOSEend
CLOSEHANDLE sFileInfo.FileInfo@@mhFileHandle
mov sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
@@FCLOSEend:
ENDM
FREAD MACRO sFileInfo,ptrByte
LOCAL @@FREADreadError,@@FREADsimpleRead,@@FREADdone
cmp sFileInfo.FileInfo@@mBufferIndex,00h ; is buffer index zero
jne @@FREADsimpleRead ; if not then just grab next byte
READFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,MaxLength ; otherwise we fill the read buffer
cmp eax,0000h ; did we read any data ?
je @@FREADreadError ; if not then we're done
mov sFileInfo.FileInfo@@mBufferIndex,eax ; move number of bytes read to buffer index
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
jmp @@FREADsimpleRead ; grab next byte
@@FREADreadError: ; read error sync address
xor eax,eax ; set return code
jmp @@FREADdone ; we're done
@@FREADsimpleRead: ; simple read sync address
mov eax,sFileInfo.FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov al,byte ptr[eax] ; move byte value to al
mov byte ptr[ptrByte],al ; move byte value to user buffer
inc sFileInfo.FileInfo@@mlpBufferPointer ; increment along lpBufferPointer
dec sFileInfo.FileInfo@@mBufferIndex ; decrement the buffer index
mov eax,01h ; set the return code
@@FREADdone: ; done reading sync
ENDM
FWRITE MACRO sFileInfo,ptrByte
LOCAL @@FWRITEsimpleWrite,@@FWRITEuseBuffer
cmp sFileInfo.FileInfo@@mBufferIndex,MaxLength ; compare buffer index to MaxLength
jl @@FWRITEsimpleWrite ; if it's less then insert char into buffer
WRITEFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,MaxLength ; other wise
mov sFileInfo.FileInfo@@mBufferIndex,0000h ; set buffer index to zero
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEsimpleWrite: ; simple write sync address
cmp sFileInfo.FileInfo@@mlpBufferPointer,0000h ; is buffer pointer null?
jne @@FWRITEuseBuffer ; if not then just use it
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FWRITEuseBuffer: ; use buffer sync address
mov cl,byte ptr[ptrByte] ; move byte to write to cl
mov eax,sFileInfo.FileInfo@@mlpBufferPointer ; move address of buffer to eax
mov byte ptr[eax],cl ; move byte into buffer
inc sFileInfo.FileInfo@@mlpBufferPointer ; increment buffer pointer
inc sFileInfo.FileInfo@@mBufferIndex ; increment buffer index
mov eax,01h ; set return code
ENDM
FFLUSH MACRO sFileInfo
LOCAL @@FFLUSHexit
cmp sFileInfo.FileInfo@@mhFileHandle,INVALID_HANDLE
je @@FFLUSHexit
WRITEFILE sFileInfo.FileInfo@@mhFileHandle,sFileInfo.FileInfo@@mszBuffer,sFileInfo.FileInfo@@mBufferIndex ; write buffer to disk
mov sFileInfo.FileInfo@@mBufferIndex,0000h ; set buffer index to zero
mov eax,offset sFileInfo.FileInfo@@mszBuffer ; move address of buffer to eax
mov sFileInfo.FileInfo@@mlpBufferPointer,eax ; move address of buffer to lpBufferPointer
@@FFLUSHexit:
ENDM
FGETS MACRO sFileInfo,szBuffer
LOCAL @@FGETScont,@@FGETexit,@@FGETsetError,@@FGETScrlf
push esi ; save source index register
mov esi,offset szBuffer ; move address of buffer into esi
@@FGETScont: ; loop control
FREAD sFileInfo,esi ; read a byte
cmp eax,0000h ; was our read successful?
je @@FGETexit ; if not we're done
cmp byte ptr[esi],0Dh ; is the byte a carriage return?
je @@FGETScrlf ; if yes then jump to handler
inc esi ; increment along esi
jmp @@FGETScont ; keep reading
@@FGETScrlf: ; carriage return control
mov byte ptr[esi],00h ; move null into line data
sub esp,04h ; create temp var on stack
mov esi,esp ; esi points to temp var
FREAD sFileInfo,esi ; read line-feed into temp var
add esp,04h ; restore stack
@@FGETexit: ; exit sync address
pop esi ; restore source index register
ENDM
FileInfo STRUC
MaxLength equ 800h
FileInfo@@mhFileHandle HANDLE <INVALID_HANDLE>
FileInfo@@mszBuffer DB MaxLength DUP(0)
FileInfo@@mBufferIndex DD (0)
FileInfo@@mlpBufferPointer DD (0)
FileInfo ENDS
extrn WriteFile:near
extrn CloseHandle:near
extrn CreateFileA:near
extrn GetLastError:near
extrn ReadFile:near

113
uudecode/TASM/STRING.INC Normal file
View File

@@ -0,0 +1,113 @@
;*************************************************************************************
; MODULE: STRING.INC DATE: FEBRUARY 2, 1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT FLAT MODEL
; FUNCTION : STRING RELATED MACROS
;*************************************************************************************
STRSTR MACRO szStringOne,szStringTwo
push offset szStringTwo ; save string one
push offset szStringOne ; save string two
call _strstr ; call standard library strstr
add esp,08h ; reset stack frame
ENDM
STRCHR MACRO szString,charByte
push charByte ; save charByte
push offset szString ; save string
call _strchr ; call standard library strchr
add esp,08h ; reset stack frame
ENDM
STRCAT MACRO szDstString,szSrcString
push offset szSrcString ; save source string
push offset szDstString ; save destination string
call _strcat ; call standard library strcat
add esp,08h ; reset stack frame
ENDM
STRLEN MACRO szData
push edi ; save destination index register
push ecx ; save ecx register
mov edi,offset szData ; get string to destination index register
mov ecx,0FFFFh ; move 65535 to ecx register
xor eax,eax ; clear eax register
repnz scasb ; scan string
mov eax,0FFFFh ; move 65535 to eax
sub eax,ecx ; subtract number of bytes scanned
dec eax ; decrement result
pop ecx ; restore ecx register
pop edi ; restore destination index register
ENDM
MEMCPY MACRO szDstData,szSrcData,lengthCopy
push esi ; save source index register
push edi ; save destination index register
mov esi,offset szSrcData ; move source data to source index register
mov edi,offset szDstData ; move destination data to destination index register
mov ecx,lengthCopy ; move number of bytes to copy to ecx register
rep movsb ; copy data
pop edi ; restore destination index register
pop esi ; restore source index register
ENDM
STRCMP MACRO szStringOne,szStringTwo
LOCAL @@STRCMPnotEqual,@@STRCMPequal,@@STRCMPexit
push ecx ; save ecx register
push edi ; save destination index register
push esi ; save source index register
mov edi,offset szStringOne ; move string one to destination index register
mov esi,offset szStringTwo ; move string two to source index register
STRLEN szStringOne ; get length of string one
mov ecx,eax ; save length to ecx register
STRLEN szStringTwo ; get length of string two
cmp ecx,eax ; compare lengths
jne @@STRCMPnotEqual ; if lengths differ, strings are not equal
@@STRCMPloop: ; loop control
mov al,byte ptr[esi] ; get byte from string two
cmp al,byte ptr[edi] ; compare with byte from string one
jne @@STRCMPnotEqual ; if bytes differ then we're done
loop @@STRCMPloop ; iterate through string length
@@STRCMPequal: ; equality control
mov eax,0001h ; set return code
jmp @@STRCMPexit ; we're done
@@STRCMPnotEqual: ; inequality control
xor eax,eax ; set return code
@@STRCMPexit: ; exit sync address
pop esi ; restore source index register
pop edi ; restore destination index register
pop ecx ; restore ecx register
ENDM
STRNCMP MACRO szStringOne,szStringTwo
LOCAL @@STRNCMPloop,@@STRNCMPequal,@@STRNCMPnotEqual,@@STRNCMPexit
push ecx ; save ecx register
push edi ; save edi register
push esi ; save source index register
mov edi,offset szStringOne ; move string one to destination index register
mov esi,offset szStringTwo ; move string two to source index register
STRLEN szStringOne ; get length of string one
mov ecx,eax ; save length to ecx register
STRLEN szStringTwo ; get length of string two
cmp ecx,eax ; compare the lengths
jle @@STRNCMPloop ; string one is less equal to string two
mov ecx,eax ; string two is less, so use it's length
@@STRNCMPloop: ; loop control
mov al,byte ptr[esi] ; get byte from string one
cmp al,byte ptr[edi] ; compare with byte from string two
jne @@STRNCMPnotEqual ; if byte are unequal, strings are unequal
inc edi ; increment along string two
inc esi ; increment along string one
loop @@STRNCMPloop ; keep going
@@STRNCMPequal: ; string equal sync address
mov eax,0001h ; set return code
jmp @@STRNCMPexit ; we're done
@@STRNCMPnotEqual: ; string unequal sync address
xor eax,eax ; set return code
@@STRNCMPexit: ; exit sync address
pop esi ; restore source index register
pop edi ; restore destination index register
pop ecx ; restore ecx register
ENDM
extrn _strstr:near
extrn _strchr:near
extrn _strcat:near

191
uudecode/TASM/UUDECODE.ASM Normal file
View File

@@ -0,0 +1,191 @@
;*************************************************************************************
; MODULE: DECODE64.ASM DATE: JANUARY 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT LAT MODEL
; FUNCTION : BASE64 DECODER
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
LOCALS
DECODEBYTE MACRO index,offset
mov al,byte ptr [index+offset] ; get byte at index register + offset
sub al,' ' ; subtract space
and al,3Fh ; and with 3Fh
ENDM
.DATA
inputFile FileInfo <>
outputFile FileInfo <>
szBeginLine DB 'begin ',0000h
szEndLine DB 'end',0000h
szLineData DB 400h DUP(0)
numItem DB (0)
charByte DB (0)
status DD (0)
szOutputPathFileName DB 0FFh DUP(0)
szInputPathFileName DD ?
.CODE
_uudecode proc near ; void uudecode(char *szInputPathFileName)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
push dword ptr[ebp+08h] ; save inputPathFileName
pop szInputPathFileName ; restore into szInputPathFileName
cmp szInputPathFileName,0000h ; is the file name null
je @@errorExit ; if so then we're done
FOPEN szInputPathFileName,inputFile,GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
cmp eax,INVALID_HANDLE
je @@errorExit
@@munchLoop:
FGETS inputFile,szLineData ; read a line
cmp eax,0000h ; did the read succeed ?
je @@endRead ; if not then we're done
STRNCMP szBeginLine,szLineData ; compare line to signature
cmp eax,0001h ; did we find the signature
jne @@munchLoop ; if not then keep reading
call _getOutputFileName ; get output file name
mov esi,offset szOutputPathFileName
FOPEN esi,outputFile,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
cmp eax,INVALID_HANDLE ; was there a problem creating the output file
je @@endRead ; if so then we're done
@@readLoop: ; read loop sync address
mov esi,offset szLineData ; assign input line address to esi
FGETS inputFile,szLineData ; read an input line
cmp eax,0000h ; check for read error
je @@endDecode ; if there was an error, then we're done
xor eax,eax ; clear eax register
DECODEBYTE esi,00h ; decode the byte
mov numItem,al ; move the decoded item into numItem
cmp numItem,0000h ; compare numItem to zero
jle @@endDecode ; if it's less than or equal, we're done
inc esi ; increment line pointer
@@decodeLoop: ; decode loop sync address
cmp numItem,0000h ; compare numItem to zero
jle @@readLoop ; if it's less than or equal, get another line
cmp numItem,0003h ; compare numItem to 3
jge @@handleItemFGE3 ; handle (numItem>=3)
cmp numItem,0001h ; compare numItem to 1
jge @@handleItemGE1 ; handle (numItem>=1)
@@GE1Ret: ; return sync address
cmp numItem,0002h ; compare numItem to 2
jge @@handleItemGE2 ; handle (numItem>=2)
@@GE2Ret: ; return sync address
cmp numItem,0003h ; compare numItem to 3
jge @@handleItemGE3 ; handle (numItem>=3)
@@GE3Ret: ; return sync address
add esi,0004h ; increment line pointer
sub numItem,0003h ; subtract 3 from numItem
jmp @@decodeLoop ; keep going
@@handleItemFGE3: ; return sunc address
DECODEBYTE esi,00h ; decode the byte
mov cl,02h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,01h ; decode the byte
mov cl,04h ; move shift value into cl register
shr al,cl ; perform right shift
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,02h ; decode byte
mov cl,02h ; move shift value into cl register
shr al,cl ; perform right shift
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
DECODEBYTE esi,02h ; decode byte
mov cl,06h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,03h ; decode byte
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
jmp @@GE3Ret ; jump back
@@handleItemGE1: ; (numItem>=1) sync address
DECODEBYTE esi,00h ; decode byte
mov cl,02h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; mov shift value into cl register
shr ax,cl ; perform right shift
or charByte,al ; or the result into charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE1Ret ; return
@@handleItemGE2: ; (numItem>=2) sync address
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,02h ; decode byte
mov cl,02h ; move shift value into cl register
shr ax,cl ; perform right shift
or charByte,al ; or result into charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE2Ret ; return
@@handleItemGE3: ; (numItem>=3) sync address
DECODEBYTE esi,02h ; decode byte
mov cl,06h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,03h ; decode byte
or charByte,al ; or result with charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE3Ret ; return
@@endDecode: ; end decode sync address
FGETS inputFile,szLineData ; get final line from input file s/b 'end'
STRNCMP szLineData,szEndLine ; compare last line to endLine
cmp eax,0000h ; check return
je @@setError ; if it's not equal to 'end' we've got an error
mov status,0001h ; set success
jmp @@endRead ; skip over next instruction(s)
@@setError: ; setError sync address
mov status,0000h ; set failure
@@endRead: ; end read sync address
FCLOSE inputFile ; close input file
FFLUSH outputFile ; flush output file
FCLOSE outputFile ; close output file
@@errorExit: ; error exit sync address
mov eax,status ; set return code
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_uudecode endp
_getOutputFileName proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,offset szLineData ; move input line address into source index
mov edi,offset szOutputPathFileName ; move output file name buffer into destination index
xor ecx,ecx ; clear ecx register for counting
@@munchLoop: ; munch loop sync address
mov al,byte ptr[esi] ; get byte from input line
inc esi ; increment esi along input line
cmp al,' ' ; did we read a space
jne @@munchLoop ; if not then keep reading
inc ecx ; increment space counter
cmp ecx,0002h ; is this the second space
jne @@munchLoop ; if not then keep reading
@@copyLoop: ; copy loop sync address
mov al,byte ptr[esi] ; get source byte into al register
mov byte ptr[edi],al ; copy byte into destination
inc esi ; increment along source line
inc edi ; increment along destination
cmp al,0000h ; compare input byte to zero
jne @@copyLoop ; if it's not null then keep going
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore stack frame
retn ; return near to caller
_getOutputFileName endp
public _uudecode
END

191
uudecode/TASM/UUDECODE.BAK Normal file
View File

@@ -0,0 +1,191 @@
;*************************************************************************************
; MODULE: DECODE64.ASM DATE: JANUARY 27,1997
; AUTHOR: SEAN M. KESSLER
; TARGET: 32 BIT LAT MODEL
; FUNCTION : BASE64 DECODER
;*************************************************************************************
.386
.MODEL FLAT
INCLUDE devioctl.inc
INCLUDE string.inc
INCLUDE openfile.inc
LOCALS
DECODEBYTE MACRO index,offset
mov al,byte ptr [index+offset] ; get byte at index register + offset
sub al,' ' ; subtract space
and al,3Fh ; and with 3Fh
ENDM
.DATA
inputFile FileInfo <>
outputFile FileInfo <>
szBeginLine DB 'begin ',0000h
szEndLine DB 'end',0000h
szLineData DB 400h DUP(0)
numItem DB (0)
charByte DB (0)
status DD (0)
szOutputPathFileName DB 0FFh DUP(0)
szInputPathFileName DD ?
.CODE
_uudecode proc near ; void uudecode(char *szInputPathFileName)
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
push dword ptr[ebp+08h] ; save inputPathFileName
pop szInputPathFileName ; restore into szInputPathFileName
cmp szInputPathFileName,0000h ; is the file name null
je @@errorExit ; if so then we're done
FOPEN szInputPathFileName,inputFile,GENERIC_READ,FILE_SHARE_READ,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL
cmp eax,INVALID_HANDLE
je @@errorExit
@@munchLoop:
FGETS inputFile,szLineData ; read a line
cmp eax,0000h ; did the read succeed ?
je @@endRead ; if not then we're done
STRNCMP szBeginLine,szLineData ; compare line to signature
cmp eax,0001h ; did we find the signature
jne @@munchLoop ; if not then keep reading
call _getOutputFileName ; get output file name
mov esi,offset szOutputPathFileName
FOPEN esi,outputFile,GENERIC_WRITE,FILE_SHARE_READ,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL
cmp eax,INVALID_HANDLE ; was there a problem creating the output file
je @@endRead ; if so then we're done
@@readLoop: ; read loop sync address
mov esi,offset szLineData ; assign input line address to esi
FGETS inputFile,szLineData ; read an input line
cmp eax,0000h ; check for read error
je @@endDecode ; if there was an error, then we're done
xor eax,eax ; clear eax register
DECODEBYTE esi,00h ; decode the byte
mov numItem,al ; move the decoded item into numItem
cmp numItem,0000h ; compare numItem to zero
jle @@endDecode ; if it's less than or equal, we're done
inc esi ; increment line pointer
@@decodeLoop: ; decode loop sync address
cmp numItem,0000h ; compare numItem to zero
jle @@readLoop ; if it's less than or equal, get another line
cmp numItem,0003h ; compare numItem to 3
jge @@handleItemFGE3 ; handle (numItem>=3)
cmp numItem,0001h ; compare numItem to 1
jge @@handleItemGE1 ; handle (numItem>=1)
@@GE1Ret: ; return sync address
cmp numItem,0002h ; compare numItem to 2
jge @@handleItemGE2 ; handle (numItem>=2)
@@GE2Ret: ; return sync address
cmp numItem,0003h ; compare numItem to 3
jge @@handleItemGE3 ; handle (numItem>=3)
@@GE3Ret: ; return sync address
add esi,0004h ; increment line pointer
sub numItem,0003h ; subtract 3 from numItem
jmp @@decodeLoop ; keep going
@@handleItemFGE3: ; return sunc address
DECODEBYTE esi,00h ; decode the byte
mov cl,02h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,01h ; decode the byte
mov cl,04h ; move shift value into cl register
shr al,cl ; perform right shift
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,02h ; decode byte
mov cl,02h ; move shift value into cl register
shr al,cl ; perform right shift
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
DECODEBYTE esi,02h ; decode byte
mov cl,06h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save value into charByte
DECODEBYTE esi,03h ; decode byte
or charByte,al ; or result with saved value
FWRITE outputFile,charByte ; write out the char
jmp @@GE3Ret ; jump back
@@handleItemGE1: ; (numItem>=1) sync address
DECODEBYTE esi,00h ; decode byte
mov cl,02h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; mov shift value into cl register
shr ax,cl ; perform right shift
or charByte,al ; or the result into charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE1Ret ; return
@@handleItemGE2: ; (numItem>=2) sync address
DECODEBYTE esi,01h ; decode byte
mov cl,04h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,02h ; decode byte
mov cl,02h ; move shift value into cl register
shr ax,cl ; perform right shift
or charByte,al ; or result into charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE2Ret ; return
@@handleItemGE3: ; (numItem>=3) sync address
DECODEBYTE esi,02h ; decode byte
mov cl,06h ; move shift value into cl register
shl ax,cl ; perform left shift
mov charByte,al ; save result into charByte
DECODEBYTE esi,03h ; decode byte
or charByte,al ; or result with charByte
FWRITE outputFile,charByte ; write out the byte
jmp @@GE3Ret ; return
@@endDecode: ; end decode sync address
FGETS inputFile,szLineData ; get final line from input file s/b 'end'
STRNCMP szLineData,szEndLine ; compare last line to endLine
cmp eax,0000h ; check return
je @@setError ; if it's not equal to 'end' we've got an error
mov status,0001h ; set success
jmp @@endRead ; skip over next instruction(s)
@@setError: ; setError sync address
mov status,0000h ; set failure
@@endRead: ; end read sync address
FCLOSE inputFile ; close input file
FFLUSH outputFile ; flush output file
FCLOSE outputFile ; close output file
@@errorExit: ; error exit sync address
mov eax,status ; set return code
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore previous stack frame
retn ; return near to caller
_uudecode endp
_getOutputFileName proc near
push ebp ; save stack frame
mov ebp,esp ; create new frame
push esi ; save source index register
push edi ; save destination index register
mov esi,offset szLineData ; move input line address into source index
mov edi,offset szOutputPathFileName ; move output file name buffer into destination index
xor ecx,ecx ; clear ecx register for counting
@@munchLoop: ; munch loop sync address
mov al,byte ptr[esi] ; get byte from input line
inc esi ; increment esi along input line
cmp al,' ' ; did we read a space
jne @@munchLoop ; if not then keep reading
inc ecx ; increment space counter
cmp ecx,0002h ; is this the second space
jne @@munchLoop ; if not then keep reading
@@copyLoop: ; copy loop sync address
mov al,byte ptr[esi] ; get source byte into al register
mov byte ptr[edi],al ; copy byte into destination
inc esi ; increment along source line
inc edi ; increment along destination
cmp al,0000h ; compare input byte to zero
jne @@copyLoop ; if it's not null then keep going
pop edi ; restore destination index register
pop esi ; restore source index register
pop ebp ; restore stack frame
retn ; return near to caller
_getOutputFileName endp
public _uudecode
END

BIN
uudecode/TASM/UUDECODE.DSW Normal file

Binary file not shown.

BIN
uudecode/TASM/UUDECODE.IDE Normal file

Binary file not shown.

313
uudecode/UUDECODE.BAK Normal file
View File

@@ -0,0 +1,313 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
!IF "$(CFG)" == ""
CFG=uudecode - Win32 Debug
!MESSAGE No configuration specified. Defaulting to uudecode - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "uudecode - Win32 Release" && "$(CFG)" !=\
"uudecode - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Uudecode.mak" CFG="uudecode - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "uudecode - Win32 Release" (based on\
"Win32 (x86) Dynamic-Link Library")
!MESSAGE "uudecode - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "uudecode - Win32 Debug"
CPP=cl.exe
RSC=rc.exe
MTL=mktyplib.exe
!IF "$(CFG)" == "uudecode - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL : "$(OUTDIR)\Uudecode.dll"
CLEAN :
-@erase "$(INTDIR)\decode.obj"
-@erase "$(INTDIR)\uuencode.obj"
-@erase "$(OUTDIR)\Uudecode.dll"
-@erase "$(OUTDIR)\Uudecode.exp"
-@erase "$(OUTDIR)\Uudecode.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Uudecode.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
MTL_PROJ=/nologo /D "NDEBUG" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Uudecode.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
odbccp32.lib /nologo /subsystem:windows /dll /incremental:no\
/pdb:"$(OUTDIR)/Uudecode.pdb" /machine:I386 /out:"$(OUTDIR)/Uudecode.dll"\
/implib:"$(OUTDIR)/Uudecode.lib"
LINK32_OBJS= \
"$(INTDIR)\decode.obj" \
"$(INTDIR)\uuencode.obj" \
"..\Exe\mscommon.lib" \
"..\Exe\uulib.lib"
"$(OUTDIR)\Uudecode.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "$(OUTDIR)\Uudecode.exe"
CLEAN :
-@erase "$(INTDIR)\decode.obj"
-@erase "$(INTDIR)\uuencode.obj"
-@erase "$(OUTDIR)\Uudecode.exe"
-@erase "$(OUTDIR)\Uudecode.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h" /c
CPP_PROJ=/nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D\
"__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h"\
/Fo"$(INTDIR)/" /c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
MTL_PROJ=/nologo /D "_DEBUG" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Uudecode.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none /map /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none\
/map:"$(INTDIR)/Uudecode.map" /debug /machine:I386\
/out:"$(OUTDIR)/Uudecode.exe"
LINK32_OBJS= \
"$(INTDIR)\decode.obj" \
"$(INTDIR)\uuencode.obj" \
"..\Exe\mscommon.lib" \
"..\Exe\uulib.lib"
"$(OUTDIR)\Uudecode.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "uudecode - Win32 Release"
# Name "uudecode - Win32 Debug"
!IF "$(CFG)" == "uudecode - Win32 Release"
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=\Work\Exe\mscommon.lib
!IF "$(CFG)" == "uudecode - Win32 Release"
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\decode.cpp
!IF "$(CFG)" == "uudecode - Win32 Release"
DEP_CPP_DECOD=\
{$(INCLUDE)}"\.\Decode.hpp"\
{$(INCLUDE)}"\.\Uuencode.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Console.hpp"\
{$(INCLUDE)}"\Common\Coord.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Filetime.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Openfile.hpp"\
{$(INCLUDE)}"\Common\overlap.hpp"\
{$(INCLUDE)}"\Common\Scrnbuff.hpp"\
{$(INCLUDE)}"\Common\Smrect.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Systime.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\decode.obj" : $(SOURCE) $(DEP_CPP_DECOD) "$(INTDIR)"
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
DEP_CPP_DECOD=\
{$(INCLUDE)}"\.\Decode.hpp"\
{$(INCLUDE)}"\.\Uuencode.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Console.hpp"\
{$(INCLUDE)}"\Common\Coord.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Filetime.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Openfile.hpp"\
{$(INCLUDE)}"\Common\overlap.hpp"\
{$(INCLUDE)}"\Common\Scrnbuff.hpp"\
{$(INCLUDE)}"\Common\Smrect.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Systime.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\decode.obj" : $(SOURCE) $(DEP_CPP_DECOD) "$(INTDIR)"
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\uuencode.cpp
DEP_CPP_UUENC=\
{$(INCLUDE)}"\.\Uuencode.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Diskinfo.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Filemap.hpp"\
{$(INCLUDE)}"\Common\Filetime.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Fixup.hpp"\
{$(INCLUDE)}"\Common\Openfile.hpp"\
{$(INCLUDE)}"\Common\overlap.hpp"\
{$(INCLUDE)}"\Common\Profile.hpp"\
{$(INCLUDE)}"\Common\Puredwrd.hpp"\
{$(INCLUDE)}"\Common\Pvector.hpp"\
{$(INCLUDE)}"\Common\Pvector.tpp"\
{$(INCLUDE)}"\Common\Pview.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Systime.hpp"\
{$(INCLUDE)}"\Common\Types.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\uuencode.obj" : $(SOURCE) $(DEP_CPP_UUENC) "$(INTDIR)"
# End Source File
################################################################################
# Begin Source File
SOURCE=\Work\Exe\uulib.lib
!IF "$(CFG)" == "uudecode - Win32 Release"
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

107
uudecode/UUDECODE.CPP Normal file
View File

@@ -0,0 +1,107 @@
static int decode()
{
extern int errno;
struct passwd *pw;
register int n;
register char ch, *p;
int mode, n1;
char buf[MAXPATHLEN];
/* search for header line */
do{
if(!fgets(buf,sizeof(buf),stdin))
{
(void)fprintf(stderr,"uudecode: %s: no \"begin\" line\n", filename);
return(1);
}
}while(strncmp(buf,"begin ",6));
(void)sscanf(buf,"begin %o %s",&mode,buf);
/* handle ~user/file format */
if(buf[0]=='~')
{
if(!(p=index(buf,'/')))
{
(void)fprintf(stderr, "uudecode: %s: illegal ~user.\n",filename);
return(1);
}
*p++=NULL;
if(!(pw=getpwnam(buf+1)))
{
(void)fprintf(stderr,"uudecode: %s: no user %s.\n",filename,buf);
return(1);
}
n=strlen(pw->pw_dir);
n1=strlen(p);
if(n+n1+2>MAXPATHLEN)
{
(void)fprintf(stderr, "uudecode: %s: path too long.\n",filename);
return(1);
}
bcopy(p,buf+n+1,n1+1);
bcopy(pw->pw_dir,buf,n);
buf[n]='/';
}
/* create output file, set mode */
if(!freopen(buf,"w",stdout)||fchmod(fileno(stdout),mode&0666))
{
(void)fprintf(stderr,"uudecode: %s: %s: %s\n", buf,filename,strerror(errno));
return(1);
}
// for each input line
for(;;)
{
if(!fgets(p=buf,sizeof(buf),stdin))
{
(void)fprintf(stderr,"uudecode: %s: short file.\n",filename);
return(1);
}
#define DEC(c) (((c) - ' ') & 077) /* single character decode */
// '`n' is used to avoid writing out all the characters at the end of the file.
if((n=DEC(*p))<=0)break;
for(++p;n>0;p+=4,n-=3)
if(n>=3)
{
ch=DEC(p[0])<<2|DEC(p[1])>>4;
putchar(ch);
ch=DEC(p[1])<<4|DEC(p[2])>>2;
putchar(ch);
ch=DEC(p[2])<<6|DEC(p[3]);
putchar(ch);
}
else
{
if(n>=1)
{
ch=DEC(p[0])<<2|DEC(p[1])>>4;
putchar(ch);
}
if(n>=2)
{
ch=DEC(p[1])<<4|DEC(p[2])>>2;
putchar(ch);
}
if(n>=3)
{
ch=DEC(p[2])<<6|DEC(p[3]);
putchar(ch);
}
}
}
if(!fgets(buf,sizeof(buf),stdin)||strcmp(buf,"end\n"))
{
(void)fprintf(stderr, "uudecode: %s: no \"end\" line.\n",filename);
return(1);
}
return(0);
}
static void
usage()
{
(void)fprintf(stderr, "usage: uudecode [file ...]\n");
exit(1);
}

125
uudecode/UUDECODE.DSP Normal file
View File

@@ -0,0 +1,125 @@
# Microsoft Developer Studio Project File - Name="uudecode" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 5.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
CFG=uudecode - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "uudecode.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "uudecode.mak" CFG="uudecode - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "uudecode - Win32 Release" (based on\
"Win32 (x86) Dynamic-Link Library")
!MESSAGE "uudecode - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "uudecode - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ".\Release"
# PROP Intermediate_Dir ".\Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\msvcobj"
# PROP Intermediate_Dir ".\msvcobj"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none /map /debug /machine:I386
!ENDIF
# Begin Target
# Name "uudecode - Win32 Release"
# Name "uudecode - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\decode.cpp
# End Source File
# Begin Source File
SOURCE=..\Exe\mscommon.lib
# End Source File
# Begin Source File
SOURCE=.\uuencode.cpp
# End Source File
# Begin Source File
SOURCE=..\Exe\uulib.lib
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
# Begin Source File
SOURCE=.\Decode.hpp
# End Source File
# Begin Source File
SOURCE=.\Uuencode.hpp
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

29
uudecode/UUDECODE.DSW Normal file
View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 5.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "uudecode"=.\uudecode.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

32
uudecode/UUDECODE.PLG Normal file
View File

@@ -0,0 +1,32 @@
--------------------Configuration: uudecode - Win32 Debug--------------------
Begining build with project "C:\WORK\UUDECODE\uudecode.dsp", at root.
Active configuration is Win32 (x86) Dynamic-Link Library (based on Win32 (x86) Dynamic-Link Library)
Project's tools are:
"32-bit C/C++ Compiler for 80x86" with flags "/nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h" /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c "
"OLE Type Library Maker" with flags "/nologo /D "_DEBUG" /mktyplib203 /win32 "
"Win32 Resource Compiler" with flags "/l 0x409 /d "_DEBUG" "
"Browser Database Maker" with flags "/nologo /o".\msvcobj/uudecode.bsc" "
"COFF Linker for 80x86" with flags "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none /map:".\msvcobj/uudecode.map" /debug /machine:I386 /out:".\msvcobj/uudecode.exe" "
"Custom Build" with flags ""
"<Component 0xa>" with flags ""
Creating temp file "C:\WINDOWS\TEMP\RSP71F5.TMP" with contents </nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h" /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
"C:\WORK\UUDECODE\decode.cpp"
"C:\WORK\UUDECODE\uuencode.cpp"
>
Creating command line "cl.exe @C:\WINDOWS\TEMP\RSP71F5.TMP"
Creating temp file "C:\WINDOWS\TEMP\RSP71F6.TMP" with contents <kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none /map:".\msvcobj/uudecode.map" /debug /machine:I386 /out:".\msvcobj/uudecode.exe"
.\msvcobj\decode.obj
.\msvcobj\uuencode.obj
..\Exe\mscommon.lib
..\Exe\uulib.lib>
Creating command line "link.exe @C:\WINDOWS\TEMP\RSP71F6.TMP"
Compiling...
decode.cpp
uuencode.cpp
Linking...
uudecode.exe - 0 error(s), 0 warning(s)

BIN
uudecode/UUDECODE.ZIP Normal file

Binary file not shown.

53
uudecode/UUENCODE.CPP Normal file
View File

@@ -0,0 +1,53 @@
#include <uudecode/uuencode.hpp>
#include <common/openfile.hpp>
#include <common/pview.hpp>
#include <common/filemap.hpp>
#include <common/profile.hpp>
BOOL UUEncode::encode(String srcPathFileName,Block<String> &lineStrings,BOOL initBlock)
{
Profile iniProfile;
char readBuff[45];
int readCount;
int byteCount;
char *ptrBuff;
String outLine;
int ch;
if(initBlock)lineStrings.remove();
if(srcPathFileName.isNull())return FALSE;
FileHandle readFile(srcPathFileName,FileHandle::Read,FileHandle::ShareRead);
if(!readFile.isOkay())return FALSE;
FileMap readMap(readFile);
PureViewOfFile readView(readMap);
iniProfile.makeFileName(srcPathFileName);
::sprintf(outLine,"begin %d %s\n",644,srcPathFileName);
lineStrings.insert(&outLine);
while(readCount=readView.read(readBuff,sizeof(readBuff)))
{
String lineString;
lineString+=(char)chEncode(readCount);
for(ptrBuff=readBuff,byteCount=readCount;byteCount>0;byteCount-=3,ptrBuff+=3)
{
ch=*ptrBuff>>2;
lineString+=(char)chEncode(ch);
ch=(*ptrBuff<<4)&0x30|(ptrBuff[1]>>4)&0x0F;
lineString+=(char)chEncode(ch);
ch=(ptrBuff[1]<<2)&0x3C|(ptrBuff[2]>>6)&0x03;
lineString+=(char)chEncode(ch);
ch=ptrBuff[2]&0x3F;
lineString+=(char)chEncode(ch);
}
lineString+='\n';
lineStrings.insert(&lineString);
if(readCount!=45)break;
}
ch=('\0'?('\0'&0x3F)+' ':'`');
String lastLine;
lastLine+=(char)ch;
lastLine+='\n';
lineStrings.insert(&lastLine);
lineStrings.insert(&String("end"));
return TRUE;
}

36
uudecode/UUENCODE.HPP Normal file
View File

@@ -0,0 +1,36 @@
#ifndef _UUTOOL_UUENCODE_HPP_
#define _UUTOOL_UUENCODE_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
template <class T>
class Block;
class String;
class UUEncode
{
public:
UUEncode(void);
virtual ~UUEncode();
BOOL encode(String srcPathFileName,Block<String> &lineStrings,BOOL initBlock=TRUE);
private:
BYTE chEncode(int ch)const;
};
inline
UUEncode::UUEncode(void)
{
}
inline
UUEncode::~UUEncode()
{
}
inline
BYTE UUEncode::chEncode(int ch)const
{
return (ch?(ch&0x3F)+' ':'`');
}
#endif

BIN
uudecode/UUENCODE.TXT Normal file

Binary file not shown.

226
uudecode/UULIB.BAK Normal file
View File

@@ -0,0 +1,226 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
!IF "$(CFG)" == ""
CFG=uulib - Win32 Debug
!MESSAGE No configuration specified. Defaulting to uulib - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "uulib - Win32 Release" && "$(CFG)" != "uulib - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "uulib.mak" CFG="uulib - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "uulib - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "uulib - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
CPP=cl.exe
!IF "$(CFG)" == "uulib - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL :
CLEAN :
-@erase
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/uulib.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/uulib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
LIB32_FLAGS=/nologo /out:"$(OUTDIR)/uulib.lib"
LIB32_OBJS= \
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "..\exe\uulib.lib"
CLEAN :
-@erase "..\exe\uulib.lib"
-@erase ".\Cfile.obj"
-@erase ".\Decode64.obj"
-@erase ".\Uudecode.obj"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /W1 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /YX /c
CPP_PROJ=/nologo /Zp1 /MTd /W1 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
/D "STRICT" /D "__FLAT__" /Fp"$(INTDIR)/uulib.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/uulib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\exe\uulib.lib"
LIB32_FLAGS=/nologo /out:"..\exe\uulib.lib"
LIB32_OBJS= \
".\Cfile.obj" \
".\Decode64.obj" \
".\Uudecode.obj"
"..\exe\uulib.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "uulib - Win32 Release"
# Name "uulib - Win32 Debug"
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=.\Masm\Uudecode.asm
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\Masm\Decode64.asm
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\Masm\Cfile.asm
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Cfile.asm
InputName=Cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

29
uudecode/UULIB.DSW Normal file
View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 5.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "uulib"=.\uulib.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

28
uudecode/UULIB.PLG Normal file
View File

@@ -0,0 +1,28 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: uulib - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP1D2.bat" with contents
[
@echo off
c:\masm32\bin\ml /c /Zi /coff masm\Uudecode.asm
]
Creating command line "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP1D2.bat"
<h3>Output Window</h3>
Performing Custom Build Step on .\Masm\Uudecode.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.
Assembling: masm\Uudecode.asm
<h3>Results</h3>
Uudecode.obj - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

313
uudecode/Uudecode.mak Normal file
View File

@@ -0,0 +1,313 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
!IF "$(CFG)" == ""
CFG=uudecode - Win32 Debug
!MESSAGE No configuration specified. Defaulting to uudecode - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "uudecode - Win32 Release" && "$(CFG)" !=\
"uudecode - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Uudecode.mak" CFG="uudecode - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "uudecode - Win32 Release" (based on\
"Win32 (x86) Dynamic-Link Library")
!MESSAGE "uudecode - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
# PROP Target_Last_Scanned "uudecode - Win32 Debug"
CPP=cl.exe
RSC=rc.exe
MTL=mktyplib.exe
!IF "$(CFG)" == "uudecode - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL : "$(OUTDIR)\Uudecode.dll"
CLEAN :
-@erase "$(INTDIR)\decode.obj"
-@erase "$(INTDIR)\uuencode.obj"
-@erase "$(OUTDIR)\Uudecode.dll"
-@erase "$(OUTDIR)\Uudecode.exp"
-@erase "$(OUTDIR)\Uudecode.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/Uudecode.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /win32
MTL_PROJ=/nologo /D "NDEBUG" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Uudecode.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
odbccp32.lib /nologo /subsystem:windows /dll /incremental:no\
/pdb:"$(OUTDIR)/Uudecode.pdb" /machine:I386 /out:"$(OUTDIR)/Uudecode.dll"\
/implib:"$(OUTDIR)/Uudecode.lib"
LINK32_OBJS= \
"$(INTDIR)\decode.obj" \
"$(INTDIR)\uuencode.obj" \
"..\Exe\mscommon.lib" \
"..\Exe\uulib.lib"
"$(OUTDIR)\Uudecode.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "$(OUTDIR)\Uudecode.exe"
CLEAN :
-@erase "$(INTDIR)\decode.obj"
-@erase "$(INTDIR)\uuencode.obj"
-@erase "$(OUTDIR)\Uudecode.exe"
-@erase "$(OUTDIR)\Uudecode.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h" /c
CPP_PROJ=/nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D\
"__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h"\
/Fo"$(INTDIR)/" /c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /win32
MTL_PROJ=/nologo /D "_DEBUG" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/Uudecode.bsc"
BSC32_SBRS= \
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none /map /debug /machine:I386
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none\
/map:"$(INTDIR)/Uudecode.map" /debug /machine:I386\
/out:"$(OUTDIR)/Uudecode.exe"
LINK32_OBJS= \
"$(INTDIR)\decode.obj" \
"$(INTDIR)\uuencode.obj" \
"..\Exe\mscommon.lib" \
"..\Exe\uulib.lib"
"$(OUTDIR)\Uudecode.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "uudecode - Win32 Release"
# Name "uudecode - Win32 Debug"
!IF "$(CFG)" == "uudecode - Win32 Release"
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=\Work\Exe\mscommon.lib
!IF "$(CFG)" == "uudecode - Win32 Release"
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\decode.cpp
!IF "$(CFG)" == "uudecode - Win32 Release"
DEP_CPP_DECOD=\
{$(INCLUDE)}"\.\Decode.hpp"\
{$(INCLUDE)}"\.\Uuencode.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Console.hpp"\
{$(INCLUDE)}"\Common\Coord.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Filetime.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Openfile.hpp"\
{$(INCLUDE)}"\Common\overlap.hpp"\
{$(INCLUDE)}"\Common\Scrnbuff.hpp"\
{$(INCLUDE)}"\Common\Smrect.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Systime.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\decode.obj" : $(SOURCE) $(DEP_CPP_DECOD) "$(INTDIR)"
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
DEP_CPP_DECOD=\
{$(INCLUDE)}"\.\Decode.hpp"\
{$(INCLUDE)}"\.\Uuencode.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Console.hpp"\
{$(INCLUDE)}"\Common\Coord.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Filetime.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Openfile.hpp"\
{$(INCLUDE)}"\Common\overlap.hpp"\
{$(INCLUDE)}"\Common\Scrnbuff.hpp"\
{$(INCLUDE)}"\Common\Smrect.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Systime.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\decode.obj" : $(SOURCE) $(DEP_CPP_DECOD) "$(INTDIR)"
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\uuencode.cpp
DEP_CPP_UUENC=\
{$(INCLUDE)}"\.\Uuencode.hpp"\
{$(INCLUDE)}"\Common\Block.hpp"\
{$(INCLUDE)}"\Common\Block.tpp"\
{$(INCLUDE)}"\Common\Diskinfo.hpp"\
{$(INCLUDE)}"\Common\except.hpp"\
{$(INCLUDE)}"\Common\Filemap.hpp"\
{$(INCLUDE)}"\Common\Filetime.hpp"\
{$(INCLUDE)}"\Common\Finddata.hpp"\
{$(INCLUDE)}"\Common\Fixup.hpp"\
{$(INCLUDE)}"\Common\Openfile.hpp"\
{$(INCLUDE)}"\Common\overlap.hpp"\
{$(INCLUDE)}"\Common\Profile.hpp"\
{$(INCLUDE)}"\Common\Puredwrd.hpp"\
{$(INCLUDE)}"\Common\Pvector.hpp"\
{$(INCLUDE)}"\Common\Pvector.tpp"\
{$(INCLUDE)}"\Common\Pview.hpp"\
{$(INCLUDE)}"\Common\Stdlib.hpp"\
{$(INCLUDE)}"\Common\String.hpp"\
{$(INCLUDE)}"\Common\Systime.hpp"\
{$(INCLUDE)}"\Common\Types.hpp"\
{$(INCLUDE)}"\Common\Windows.hpp"\
"$(INTDIR)\uuencode.obj" : $(SOURCE) $(DEP_CPP_UUENC) "$(INTDIR)"
# End Source File
################################################################################
# Begin Source File
SOURCE=\Work\Exe\uulib.lib
!IF "$(CFG)" == "uudecode - Win32 Release"
!ELSEIF "$(CFG)" == "uudecode - Win32 Debug"
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

BIN
uudecode/Uudecode.obj Normal file

Binary file not shown.

150
uudecode/Uulib.001 Normal file
View File

@@ -0,0 +1,150 @@
# Microsoft Developer Studio Project File - Name="uulib" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 5.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=uulib - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "uulib.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "uulib.mak" CFG="uulib - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "uulib - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "uulib - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
!IF "$(CFG)" == "uulib - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ".\Release"
# PROP Intermediate_Dir ".\Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\msvcobj"
# PROP Intermediate_Dir ".\msvcobj"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /YX /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\exe\uulib.lib"
!ENDIF
# Begin Target
# Name "uulib - Win32 Release"
# Name "uulib - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\Masm\Cfile.asm
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Cfile.asm
InputName=Cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
c:\parts\ddk\bin\ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\Masm\Decode64.asm
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
c:\parts\ddk\bin\ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\Masm\Uudecode.asm
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
c:\parts\ddk\bin\ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

187
uudecode/Uulib.dsp Normal file
View File

@@ -0,0 +1,187 @@
# Microsoft Developer Studio Project File - Name="uulib" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=uulib - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "Uulib.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Uulib.mak" CFG="uulib - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "uulib - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "uulib - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "uulib - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ".\Release"
# PROP Intermediate_Dir ".\Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MT /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /YX /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\msvcobj"
# PROP Intermediate_Dir ".\msvcobj"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Gz /MTd /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /YX /FD /c
# ADD BASE RSC /l 0x409
# ADD RSC /l 0x409
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\exe\uulib.lib"
!ENDIF
# Begin Target
# Name "uulib - Win32 Release"
# Name "uulib - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\Masm\Cfile.asm
!IF "$(CFG)" == "uulib - Win32 Release"
# Begin Custom Build
InputPath=.\Masm\Cfile.asm
InputName=Cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
\parts\ddk\bin\ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Cfile.asm
InputName=Cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
c:\masm32\bin\ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\Decode.cpp
# End Source File
# Begin Source File
SOURCE=.\Masm\Decode64.asm
!IF "$(CFG)" == "uulib - Win32 Release"
# Begin Custom Build
InputPath=.\Masm\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
\parts\ddk\bin\ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
c:\masm32\bin\ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\Masm\Uudecode.asm
!IF "$(CFG)" == "uulib - Win32 Release"
# Begin Custom Build
InputPath=.\Masm\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
\parts\ddk\bin\ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
c:\masm32\bin\ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

226
uudecode/Uulib.mak Normal file
View File

@@ -0,0 +1,226 @@
# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
!IF "$(CFG)" == ""
CFG=uulib - Win32 Debug
!MESSAGE No configuration specified. Defaulting to uulib - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "uulib - Win32 Release" && "$(CFG)" != "uulib - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE on this makefile
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "uulib.mak" CFG="uulib - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "uulib - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "uulib - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
################################################################################
# Begin Project
CPP=cl.exe
!IF "$(CFG)" == "uulib - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
OUTDIR=.\Release
INTDIR=.\Release
ALL :
CLEAN :
-@erase
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
/Fp"$(INTDIR)/uulib.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/uulib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo
LIB32_FLAGS=/nologo /out:"$(OUTDIR)/uulib.lib"
LIB32_OBJS= \
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "msvcobj"
# PROP Intermediate_Dir "msvcobj"
# PROP Target_Dir ""
OUTDIR=.\msvcobj
INTDIR=.\msvcobj
ALL : "..\exe\uulib.lib"
CLEAN :
-@erase "..\exe\uulib.lib"
-@erase ".\Cfile.obj"
-@erase ".\Decode64.obj"
-@erase ".\Uudecode.obj"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /W1 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /YX /c
CPP_PROJ=/nologo /Zp1 /MTd /W1 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
/D "STRICT" /D "__FLAT__" /Fp"$(INTDIR)/uulib.pch" /YX /Fo"$(INTDIR)/" /c
CPP_OBJS=.\msvcobj/
CPP_SBRS=.\.
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
BSC32_FLAGS=/nologo /o"$(OUTDIR)/uulib.bsc"
BSC32_SBRS= \
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\exe\uulib.lib"
LIB32_FLAGS=/nologo /out:"..\exe\uulib.lib"
LIB32_OBJS= \
".\Cfile.obj" \
".\Decode64.obj" \
".\Uudecode.obj"
"..\exe\uulib.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
$(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
<<
!ENDIF
.c{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_OBJS)}.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cpp{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
.cxx{$(CPP_SBRS)}.sbr:
$(CPP) $(CPP_PROJ) $<
################################################################################
# Begin Target
# Name "uulib - Win32 Release"
# Name "uulib - Win32 Debug"
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
!ENDIF
################################################################################
# Begin Source File
SOURCE=.\Masm\Uudecode.asm
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\Masm\Decode64.asm
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
################################################################################
# Begin Source File
SOURCE=.\Masm\Cfile.asm
!IF "$(CFG)" == "uulib - Win32 Release"
!ELSEIF "$(CFG)" == "uulib - Win32 Debug"
# Begin Custom Build
InputPath=.\Masm\Cfile.asm
InputName=Cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Target
# End Project
################################################################################

181
uudecode/base64.001 Normal file
View File

@@ -0,0 +1,181 @@
# Microsoft Developer Studio Project File - Name="base64" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 5.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
CFG=base64 - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "base64.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "base64.mak" CFG="base64 - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "base64 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "base64 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "base64 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ".\Release"
# PROP Intermediate_Dir ".\Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\msvcobj"
# PROP Intermediate_Dir ".\msvcobj"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp"c:\work\exe\msvc42.pch" /YX"windows.h" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none /map /debug /machine:I386
!ENDIF
# Begin Target
# Name "base64 - Win32 Release"
# Name "base64 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\base64.cpp
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# ADD CPP /Zp1 /FA
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\masm\cfile.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\cfile.asm
InputName=cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\masm\Decode64.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=..\Exe\mscommon.lib
# End Source File
# Begin Source File
SOURCE=.\masm\Uudecode.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
# Begin Source File
SOURCE=.\Cfile.hpp
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

179
uudecode/base64.dsp Normal file
View File

@@ -0,0 +1,179 @@
# Microsoft Developer Studio Project File - Name="base64" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
CFG=base64 - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "base64.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "base64.mak" CFG="base64 - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "base64 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "base64 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "base64 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ".\Release"
# PROP Intermediate_Dir ".\Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\msvcobj"
# PROP Intermediate_Dir ".\msvcobj"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /Zp1 /MTd /Z7 /O2 /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /Fp"\work\exe\msvc42.pch" /YX"windows.h" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /pdb:none /map /debug /machine:I386
!ENDIF
# Begin Target
# Name "base64 - Win32 Release"
# Name "base64 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\base64.cpp
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# ADD CPP /Zp1 /FA
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\masm\cfile.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\cfile.asm
InputName=cfile
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
/parts/ddk/bin/ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\masm\Decode64.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\Decode64.asm
InputName=Decode64
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
/parts/ddk/bin/ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\masm\Uudecode.asm
!IF "$(CFG)" == "base64 - Win32 Release"
!ELSEIF "$(CFG)" == "base64 - Win32 Debug"
# Begin Custom Build
InputPath=.\masm\Uudecode.asm
InputName=Uudecode
"$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
/parts/ddk/bin/ml /c /Zi /coff masm\$(InputName).asm
# End Custom Build
!ENDIF
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
# Begin Source File
SOURCE=.\Cfile.hpp
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

44
uudecode/base64.dsw Normal file
View File

@@ -0,0 +1,44 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "base64"=.\base64.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name common
End Project Dependency
}}}
###############################################################################
Project: "common"=..\COMMON\common.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

BIN
uudecode/base64.mdp Normal file

Binary file not shown.

BIN
uudecode/base64.ncb Normal file

Binary file not shown.

BIN
uudecode/base64.opt Normal file

Binary file not shown.

37
uudecode/decomain.cpp Normal file
View File

@@ -0,0 +1,37 @@
#include <common/windows.hpp>
#include <common/finddata.hpp>
#include <common/console.hpp>
#include <common/string.hpp>
#include <common/block.hpp>
#include <common/openfile.hpp>
#include <uudecode/decode.hpp>
#include <uudecode/uuencode.hpp>
int PASCAL WinMain(HINSTANCE /*hInstance*/,HINSTANCE /*hPrevInstance*/,LPSTR lpszCmdLine,int /*nCmdShow*/)
{
FindData findFile;
Console winConsole;
String strPathOutputFileName;
if(!lpszCmdLine||!*lpszCmdLine)
{
winConsole.writeLine("UUDECODE Version 1.0 Copyright (c) 1997 Diversified Software Solutions.");
winConsole.writeLine("mail comments/suggestions to europa@li.net.");
winConsole.writeLine("Syntax: UUDECODE [fileflags]");
winConsole.writeLine("Example: UUDECODE *.txt");
winConsole.read();
return FALSE;
}
strPathOutputFileName.reserve(256);
if(findFile.findFirst(lpszCmdLine))
{
winConsole.writeLine(findFile.fileName());
if(!uudecode(findFile.fileName(),(LPSTR)strPathOutputFileName))winConsole.writeLine("unable to decode file.");
while(findFile.findNext())
{
winConsole.writeLine(findFile.fileName());
if(!uudecode(findFile.fileName(),(LPSTR)strPathOutputFileName))winConsole.writeLine("unable to decode file.");
}
}
return FALSE;
}

3713
uudecode/smk Normal file

File diff suppressed because it is too large Load Diff

BIN
uudecode/uudecode.mdp Normal file

Binary file not shown.

BIN
uudecode/uulib.mdp Normal file

Binary file not shown.

BIN
uudecode/uulib.opt Normal file

Binary file not shown.