From support@us.external.hp.com Wed Mar 13 00:58:27 1996 Date: Wed, 13 Mar 1996 01:01:45 -0800 From: HPSL Mail Service Reply to: support-feedback@us.external.hp.com To: Damien Sorder Subject: RE: send doc HPSBUX9408-016 -------- ## Regarding your request: Send Doc HPSBUX9408-016 The following are the results of your request from the HP SupportLine mail service. =============================================================================== Document Id: [HPSBUX9408-016] Date Loaded: [08-30-94] Description: Patch sums and the MD5 program =============================================================================== ------------------------------------------------------------------------- HEWLETT-PACKARD SECURITY BULLETIN: #00016, 29 August 94 ******** ADVISORY ONLY ******** ------------------------------------------------------------------------- _______________________________________________________________________ ANNOUNCEMENT: Patch check sums are now available. PLATFORM: All HP-UX systems. _______________________________________________________________________ Contents -------- I. Introduction II. Sample of hp-ux_patch_sums file III. How to get the hp-ux_patch_sums list and generate the sums IV. How to access support.mayfield.hp.com via ftp V. How to self-register an account on support.mayfield.hp.com VI. The md5.shar archive of the MD5 source and documentation VII. How to get patches and security bulletins I. INTRODUCTION ---------------- A list of check sums for HP-UX patches is now available. All HP-UX patches, not just those with security fixes, are summed with the MD5 program and with "sum -p". The "sum -p" output is the 32-bit cyclical redundancy check (CRC) algorithm used by cksum(1). These sums allow you to verify that the patches have not been altered. The MD5 message-digest algorithm takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input. Each time a patch changes an entry will be added to the sums file. Each entry has the MD5 and sum(1) sums for the PHxx_nnnn, PHxx_nnnn.text, and PHxx_nnnn.updt. The entry also has the date when the patch was changed or created. A patch may be changed for several reasons. For example, it may have been issued for one revision of HP-UX and still be applicable to a later revision. This is very common. Rather than issue an new patch, the customize script is changed to allow the patch to be installed on the later revision. Normally if the actual contents of the files (libraries, executables, etc.) change a new patch with a different patch number is issued. It is believed that it would be computationally infeasible to generate an altered patch with the same MD5 and sum(1) values as the original patch. However, HP does not guarantee this to be the case. We believe that MD5 is a well known algorithm and we have used the reference implementation to create the sums in the hp-ux_patch_sums file. Concerning the MD5 software RSA Data Security, Inc. says: RSA Data Security, Inc. makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind. Hewlett-Packard Company also makes no representations concerning either the merchantability of this software or the suitability of this software for any particular purpose. It is provided "as is" without express or implied warranty of any kind. II. SAMPLE OF THE hp-ux_patch_sums FILE --------------------------------------- Here is a sample of the beginning of the hp-ux_patch_sums file: HP-UX Patch Checksum Information Dated: 08/15/94 14:25:04 ------------------------------------------------------------------------------ Patch Date | Patch File | md5 output | sum -p output ------------------------------------------------------------------------------ | | | Oct 6 1992|PHNE_0100 |42E72F29A5B2E976F4ADEFA9FC855A21|1508933583 23781 |PHNE_0100.text|78CE1064F54A9D75B64A6467538C35BA|2439548508 3843 |PHNE_0100.updt|C5B93FB2AB08ADE9A78845B9E4CF4EF0|1766551480 30720 | | | Jul 19 1991|PHKL_0107 |0BED04E352ABFAED4D4ECB16394F48E7|1605114266 423853 |PHKL_0107.text|93E2F594D003BA4697B8D88DCCC9F36C|1767212502 5010 |PHKL_0107.updt|4D91D069D1783E29A0D526B0B9B644F2|678221130 296960 [rest of file deleted] III. HOW TO GET THE LIST AND GENERATE THE SUMS ----------------------------------------------- 1. How to get the list. A. Send the following in the TEXT PORTION OF THE MESSAGE to support@support.mayfield.hp.com (no Subject is required): send hp-ux_patch_sums OR B. Use ftp to: Name: support.mayfield.hp.com Address: 192.6.148.1 cd export/patches get hp-ux_patch_sums Instructions for getting an account on support.mayfield.hp.com are included below. NOTE that ftp access is often VERY MUCH faster than e-mail access. 2. How to generate patch sums to compare with the list. The MD5 program is included in source form below. The MD5 program is from RSA Data Security, Inc. Please note their copyright in the source files below. Basically you are free to use and distribute the MD5 program as long as the copyright message is included. A. Extract the MD5 shar file from this note. The following assumes you have edited the shar file into md5.shar. B. Unpack the source: sh md5.shar C. Make and test the md5 program: make test [You should see the following:] cc -c -O -DMD=5 md5c.c cc -c -O -DMD=5 mddriver.c cc -o md5 md5c.o mddriver.o ./md5 -x | diff - test.rfc > diffs 2>&1 *** MD5 Test Passed rm -f diffs D. The following script unpacks a patch, computes the sums, and finds any matches in the hp-ux_patch_sums file. The script assumes that the patch and the hp-ux_patch_sums file are both in the working directory. It also assumes that md5 is installed and can be reached via $PATH. ------------------- check_patch script ------------------- #!/bin/sh sh $1 md5_sum=`md5 $1 | tr "[a-f]" "[A-F]" | cut -d" " -f4` md5_sum_text=`md5 $1.text | tr "[a-f]" "[A-F]" | cut -d" " -f4` md5_sum_updt=`md5 $1.updt | tr "[a-f]" "[A-F]" | cut -d" " -f4` if [ -x /bin/cksum ] then sum_p=`cksum $1 | cut -d" " -f1,2` sum_p_text=`cksum $1.text | cut -d" " -f1,2` sum_p_updt=`cksum $1.updt | cut -d" " -f1,2` grep "$md5_sum" hp-ux_patch_sums | grep "$sum_p" grep "$md5_sum_text" hp-ux_patch_sums | grep "$sum_p_text" grep "$md5_sum_updt" hp-ux_patch_sums | grep "$sum_p_updt" else echo "WARNING: No /bin/cksum. Using md5 outout only." grep "$md5_sum" hp-ux_patch_sums grep "$md5_sum_text" hp-ux_patch_sums grep "$md5_sum_updt" hp-ux_patch_sums fi ---------------------------- end of check_patch script ---------------------------- Check_patch should report one match for each of the three patch files. Here is an example of using the check_patch script: check_patch PHKL_4628 [The following is the output from check_patch] x - PHKL_4628.text x - PHKL_4628.updt [compressed] Aug 10 1994|PHKL_4628 |50379A6AC08297842766B86A4BB57644|3769858694 52974 |PHKL_4628.text|A3946FAE1649E6840A082468DE31F2E7|3596174542 3169 |PHKL_4628.updt|4230EB9D6637250F9300ACDA14D0C38B|457486715 71680 Here is another script that just reports if the patch sums were found or not: $ ./test_patch PHKL_4628 Three matches found - ok. $ more test_patch #!/bin/sh rm $1.text rm $1.updt number_found=`./check_patch $1 | grep "|$1" | wc -l` if [ $number_found = 3 ] then echo "Three matches found - ok." else echo "Did not find three matches - problem." fi IV. HOW TO ACCESS support.mayfield.hp.com VIA FTP ------------------------------------------------- To access the HP SupportLine system via ftp: telnet 192.6.148.19, login as hpsl. You will be prompted for your system handle and password. Then select: 3 Patch support information followed by: 3 Retrieve patch file transfer login This will give you an ftp login account. Exit hpsl and ftp 192.6.148.19. Use the account name you received and your usual password. If you do not have an account on hpsl, you can self-register using the instructions below. V. HOW TO SELF-REGISTER AN ACCOUNT ON support.mayfield.hp.com ------------------------------------------------------------- Customers who do not have a HP software support contract can self-register for HP SupportLine access. Self-registration is only available for the HP SupportLine system located on the United States computer. You will only have to register for HP SupportLine once, after that you will be able to connect directly to HP SupportLine. Use the following steps to self-register, only if you do not currently have a support contract, for HP SupportLine. Step 1. For modems, dial (415) 691-3680 (in the United States) -or- For users who have been authorized by the National Science Foundation (NSF) to use Internet may access HP SupportLine over Internet. Connect to HP SupportLine using the appropriate IP address or machine name provided below: Region IP address Machine Name ------ ----------- ------------ United States telnet 192.6.148.19 telnet support.mayfield.hp.com Europe CURRENTLY UNAVAILABLE Asia Pacific CURRENTLY UNAVAILABLE Step 2. When your communications program indicates that you are connected, press RETURN. The system prompt, (login:), should appear. Step 3. Log in to HP SupportLine Self-Registration by typing the following command, followed by RETURN. login: hpslreg Step 4. Follow the instructional prompts. At the end of the prompts, a system handle and password will be assigned to you. Please make a note of your system handle and password. You need these in the future to access the HP SupportLine located in the United States. You have only been registered for the HP SupportLine system in the United States. Step 5. When you finish the registration session, the connection is closed. On subsequent access, you will not have to self register, you will directly access HP SupportLine. This is accomplished by login on as the user hpsl. For example: login: hpsl VI. md5.shar ------------ # This is a shell archive. Remove anything before this line, # then unpack it by saving it in a file and typing "sh file". # # # This archive contains: # Makefile global.h # md5-announcement.txt md5.1.txt # md5.h md5c.c # mddriver.c # # Error checking via wc(1) will be performed. # Error checking via sum(1) will be performed. # Files are compressed using compress(1). LANG=""; export LANG PATH=/bin:/usr/bin:$PATH; export PATH if sum -r /dev/null 2>&1 then sumopt='-r' else sumopt='' fi rm -f /tmp/uud$$ (echo "begin 666 /tmp/uud$$\n#;VL*n#6%@x\n \nend" | uudecode) >/dev/null 2>&1 if [ X"`cat /tmp/uud$$ 2>&1`" = Xok ] then unpacker=uudecode else echo Compiling unpacker for non-ascii files pwd=`pwd`; cd /tmp cat >unpack$$.c <<'EOF' #include #define C (*p++ - ' ' & 077) main() { int n; char buf[128], *p, a,b; scanf("begin %o ", &n); gets(buf); if (freopen(buf, "w", stdout) == NULL) { perror(buf); exit(1); } while (gets(p=buf) && (n=C)) { while (n>0) { a = C; if (n-- > 0) putchar(a << 2 | (b=C) >> 4); if (n-- > 0) putchar(b << 4 | (a=C) >> 2); if (n-- > 0) putchar(a << 6 | C); } } exit(0); } EOF cc -o unpack$$ unpack$$.c rm unpack$$.c cd $pwd unpacker=/tmp/unpack$$ fi rm -f /tmp/uud$$ echo x - Makefile '[compressed]' $unpacker <<'@eof' begin 600 Makefile M'YV0(T!009-F#H@V8=:4,9.&31D08]ZT@=.PC$$Z:![.>5-'SIB'$'DD?,4#9TR9'0$#9I@R!N]?,_X!8%B2 JU.7+$:"%CY\J6+V/.K'DSX MY\Z>/T$,D5,&)F#(DH&.2$"5#8C$?@V2GE-&CAW JH-N?H@2Q,:.'^G:)6DRX M[]Z^4F?3X3N&3IHW;N;D#NCD#0@1"!4R=+BU( @X,558;9)#!UVW%A5$';0:),-16=%@GDADJLB%5X MC%R5159$Z2><@+[!X1ELO"&&D"Z@T6<-CHD'X M"'R 0$8:9ICAY:Y1N>"KG3XHRZP9!LG@@PDQS E$"\Q"*U4+!BW;K$$[H%Q9::W5%E E2_NK8 FT^R[$XOI6!TYEZ' ""-7V/.V<0C=,- HBB/!8X MEV30$ ,9.(Q!1@XXF $##&+( ,-98 ]=F0XU&0&#C3(<$,92_O0-*\^ QOUX M"5.+$(;57(( 0YTQW%"#&#F, 8,9,8AA0Q@XS!##&#-$5H8,-N1PPPV8VQ!#X MW7='^W30"P]-+]5AB#$&X%WF,'8,-< ]@Q>RT"#&6+ 0$;F-LQ@Q@UDR-!VX MX;_+ +JX>4-=NM2G8X>44@\M"Q4=K&N<@PV.:T[.(<4,.,^"0IPPUA"&#X M&9*'$0;CGI,!P_%._ZH\PWPWG[K7"RF6AAIKL-&&&X>)@QRB4@<[W $/>=!#X M]2CW*S+,8'N>RX$,RD"#L0$/=S2X7IW"8(.YK44,\,/;Z/;6MR (80A$*((1X MCH"$)"AA"4QH@A.> (4HK(0*5;#"%;"0!2W<;T;ZXY__ @' 1+0@ C4 PQBX M((,9T* &'<1!#JI'AL+1('5@"][FOF:&\D$Q!I.3P1AR8 :MY8"+(12=_$A'X MO[XQT8E0O($4E]C$)T;1=6^THQSQ6,\Y"P5X (\*E8(4/>TP!H X X end @eof uncompress /tmp/compress$$ mv /tmp/compress$$ Makefile set `sum $sumopt : "..&#(@Q;]S,H<.1X MSAP%(%2\4* @( @H4IY0D9D%2I$I(.:@>5.'C44 HK8@F*,@V<-*P*2,G9QTX<-[(,8D2A)DZ;L;021-RHYPS==J4<4,4X MCIPW=/!>3./FC L%5*J:?<.&S9L[?,^ :!-F3<:7,6=2J7D3!)DR9L+T))H7X M! RI2],011-&HQN\&]G(*1.&3)ZR0.=:QLRWC$?$=-" &/+Q#5:M7,VR"7-FX MSM^4*T9+$"94B4F9;=_,XX M#(@S<[FF&0,B+%\ZP2UB1*Y O^WF:,V1QAGL>30&:5VI,%YYYTFQ0W@"5<&@X M#.K5II%[=-QAE!AYX >"AG)XI%)_%_VW5( #%IC33F-)11<($IHGPX,M1<@@X M#16R=^%@=73%H8<@BKB2?]6!@"*!MH%@6%\N$A4C%330*%YD3WS!1!)34"&5X M1M75YM%E&'64F%,@['0'=M!5E@:7M*D8AAAOV%'&7TF<*""3,#TW670L4"5;X MGC-9B:66J]'1HTA^*KDF'7WB594/tmp/compress$$ mv /tmp/compress$$ global.h set `sum $sumopt B@::,@X M( @0*(R4*<,&A!DY*T'0>0."3)J,(,74H4/13!TY(LO(2:% @90I02J&H1,&X MQ)0R8WZ&S /B)H@P;MR\J>-F3!HW9P869'$5A!N&(-H\C#BQA4V,&L-T_!ARX MI L%3-*LH4B0!EF15N5Z!"FR3=4Y(,24^1H6#ILP8\J0J>I&)AJ*<.J(89-FX M3,TW;<)\=?G1)E2,71)TY9>XJH')9K$'!= L?+HNS#-B@9R?;$3HGX MS9O*;\R(I>'B9!*-:,(@-K-5C@(Y6]V00?PU8YDPDY-;/DT6Z^2O8S["^;CTX M(8@W0>6 @&GGIG$WB,5(E_R^7PGQPF(W?&12.\IEQX;;$#%TV3IM:&6X M&W0@=IQE?!%!PU5S$6;724:45@8>8;3A6!DL*! 499G%-49D$($ QU(\R8$?X M9?-EMYU,!EZEW7@Q13=<8BM5EH:)V U'1HKF89@C4W3<=U4;V54(@I 4*>;;X M>W!$V48:>O!'G7RAX7%D'8:! 488=LB%U1B7*5"&&68XZ,())YQ$&T7@V13EX MD.GAQQ2%B&%)Y):AD4$15VG$40=%HWT')PC>P<'DCUA=18:?][6F*!R^*=H5X M1>))B@:E/,'1GY-PT&?<:_U1%%U^12K0IV2R[0D;"'!BA1&O8;R6H4$S$4DIX M: Q%I]$<;+QQAU"69=I7/DQ%DD*%:(M?ED6#B.EMM5,*$(55AB,PN@F]L_&682SI)\'%A1=4<85!6KIA@PA;$&GLN117>=+&V;]<16*?9OJVOQ]U6QL,E1'\]FE&PPX M38YVML:YI,DW1QV38J6 FA*]#%$:PR&N:'%GN$&MM5>RF661E/[4ZDW\9;VBX MSRM-]BV"""NL .2T_CO[1<%15FRK;Y"!>H74*FV5FA,??RIL2RG&1H5XVOJCX M2*^5AUA3(5,4:.9M_BGP0]"3957[O8<4QF8]E<8:N610P*>:E8<)T4$VS]G-X MBB[G&XV(YRA)(<)2F 85J= A<#015K=&$Q+$4,]Z8["2>120$?.4;$?=X0EXX M$K2\3 E*_\:T5FD)N,-/."-I"A!B[PY!A<0!2C X X end @eof uncompress /tmp/compress$$ mv /tmp/compress$$ md5-announcement.txt set `sum $sumopt V&X MN8N$29"F 3WFC1LU5NG4D5.F-VZ;H0BWE!EEA#%'X M&F*0E1 =;_@FQQO$&:?9'1F&EQIH:(1AQU)GJ(?33SSMU)-X93%$E%%TL-"=X M9AG^UB%.N]$FXG@EGOB73B"CX M>>^!0,5Z'^7$QAE>P89&&Z&!%E629/0GG!E>D6?D9FR ,.$9A.G'7TYPP,%&X M&C#1D: ;<]AX1U5[ZE23'..-A=-.=1PEG!B/BE"?@?SYU!]W[.EFIU7[X=3&X M;FY@!P*E<.Y)*8H@)#G&;'#<1(9P=YB9$PA/'6D33H=9Q1\="'5&6QV\F:K3X M:!4"VH*P";V:1ZQOS)''466T(5Q65"'W!0)2;#O%MD&X$)!:DU7F%D-?X@0GX M&VR\4>M?<.Z77*R#@C8J;92"$.F42^GF!FT$MO%:GH.R(%P9>!@7JWH .DJ8X M88A!>M2I..&&4TT3OR$&?F/0 9I]*@8,Y4*C\@;"GZ6**]Q>1_F58JYN>'PKX M559AI55RK%EJO23#NMY$T3S_%J&K%6K9##A95Q&$(PRZP3S5=EU<;:77D78;;IZ>SHX M'"I#5 0(03 QQ1/7:F50"@$Q)(410S@W@PPQ#-?3V)2JJ62;FPD6\D RV#@0X M#3;NUEN86,(XLD);3AP3F5#AU@;? 04QQ!)I7<%$$40<481)3E!Q[D)?SH?KX MAF?(45B:N-9D7&]/KX?LGV,,5V 8_:::%'\X!56J\6P(M^^IM$DQ11 @$&&3X (3E. VGH>X@)D X X end @eof uncompress /tmp/compress$$ mv /tmp/compress$$ md5.1.txt set `sum $sumopt G, 3%U#D0[5EV,9))F3!DW9D'0>0-BX M#,H\(,*XN5HG+ATT:<;.>6.&SITP4T$$!G%&CMZJ5^'(>6,GS<.K?X4JIJ-@X ML>6W=-),M)IW[%^+(GK^##JTZ-&D:98V?1I5X\ R<^:$.5.F!1&6N#ES/8,QX M-IHV(A2[R=L51!NA$-.$8>,<=)HW;M*X.0,"(]DR9B"^':.=^]_%@PL?GJK X M^_FQ9NH\#8U=K0*V;N%:7#Q],&/';D F%UW/K6&17GS%]=!*=@B5!EH@W('1X M&F-)1MEG9"B0V4MSU#$&&A%..!9B^ST4H&AID!;&6"(L^"!I9DS6AEP,\>03X M4$*%H8!12"G%% A.03500;?EMEMOO_$VQTO#%?<7=U%-%5X4SW%Y6D@N(C651+*L89]JN'8&H^PR08D;!8;M UE62X@>8@X M=F/9]11$V6T'0AG&0:1AC5G*\>%C88A!46QX$48C>H091F*7-%K486R13KI4X M=V9<.H<"Z6F:F!G>Z847'(B%AA0;B($ 1U)PO&%65$F\M)B%E5T&@@@K*C:'X M" K<8=P;=;Q4!AY\YL9I&FW P4:*:"(&X*B6N@K"&MJ181\5#,65IZRX.=?7X M2V)8--50VI&F75YNX&47'"F.U6V]ML9*JJD*D/$&4ED&^.=R"+[@7:KKE:$6X M2"*1))!M@E:%!QU1A:1A'G!8!1X(2\KAX4M[? 1"%4DX004-( ]5U18T=+$#X M"#37;//-..><&$#RRBP,8<8$J4AQY)$BT2S?'.PY 9ICT8D1AUF@+G%X MV$_K[/?. FEW*[MX@PFQ GT,6<,70U"!Q0XCV?&&98H[%1L(4$CQ!!5/?,%$X M$E-0 1,*&C'N.$@II "YY)1K5 4<9/B<^>:=?QZZR2B07I#I6("T$]QRTXU&X MK2K\#E?P5VE'1^JK3WZ51D9H-QWFFG/N.>BBYP[\&7-?53<(6\1@0Q<[E=YXX %[RHPKP#P X X end @eof uncompress /tmp/compress$$ mv /tmp/compress$$ md5.h set `sum $sumopt 2DH9.'!8@D;L:X\$BPX M!H@V9>;,"7.F3 LR:5K.H0,B#)LS;S320=-& 0@5+Q0H" ABR!LX>32>04,3X MQ9 4(&+DR!&CA0R/#1]&G%CQ8L:-'3^&=%%43AF)9382>M"*),T8\JXP0N"SAL08X[FJ>E&;1W".]/4G?/&#)T[8KN+ -"1%:($BE:Q*@SX M+$B1 PL.3+FR90LB,5.^?HM3)T\1F]W4A'L2K4:;)V>G>>,FC9LS('+:+6,FX MK^ QYM%'GESYZGEH1QK""AD<%T1!U:28W4G85UN'&96X M:2G-IB%Y=2464E[EG0="&5;F92*0X&J?9F:H!]IB<&1&&T9L9$9:1G"\@1=92=#$F8BHJ::6X M"#=*)H("=UCY1ATTE8$'H"J-N5D;<& Z&J@,IEH98XNM81X9 E(!)&%]WIK2X M28_1) 9O9DUDWFCF@8O84;?5]>VLI-FJZGP*D/$&1E].!*!V%+Z@GJN@EM'7X M3T$I,()Y8[!1AVJ]G<'&&V+8Y (:RTX <,_MH&K3S/@R4Q*K9Y@9O4\00 P@W ,W>O!7%($-4,B@M--$QS!!5X MTB,$S731-( @0]19+SUT13(<78/46W\-0@YHCSV%#%;'0$/;1,O0M0PPT%W1X M#$?/'?;4>S]MM-Y3S!"W#83/ ,4'A2?TC@I%D()'X M2GC"%+K/>!*,'P6A9\'[E>YT&N0@7F@20@#>CH0F])T+LT.'%\*/B!6L(?42X MN,#S02$(1"!"[X[ /.&!H <@V$/X8( '',# (U\$01C'",8RBM&,9#RC&M/(X M1C2Z<8MN7&,00)CU)*$X MFFBF8\8;'9/Z\Y_Q#,9G0=E<(5& !X^$10]0T1TGH6*"W.7A>2#@@_C\@ =2X MY@Z4S]/;$3CI28^ 4GRC!$$I40#+5(KOE+K,G1]@F0*](8&6(/AD*'/I!5-"X MI9F\C*4FDX!,9?[RF>)KI2]1,,SG%9.0L*-"$%!(NR(8 7>F,=BZ\ "-K"'X M)MJQ%!WF@$F]A7.<12CG.9'IAF7FD@<\R%T_H:)*W6G3!S[(W0QDT (4##26X MA#2"(4%P!$2" E(\ B%/M)(.MPL9X,:#'_4L[/&U"4&'KD*"&:@T<: @ 9]X MD<(;ID>>S4RF#+7ZC&CXTZ.:D $F!RO,80"UE]"L)S'8@E9(ZZE)B:(@#!X1X M@T?&X!$R>*23()B#1L< E3V @ L^>2I45H!%(XA/#"GP" JXJE8RH'(%N=,FX M7'=W0AJDX*EX M^R#+64(5!%)%3%6OZA&MUH2K652L6!N+Q2.<-:VY8VONW#K6N+:6KNN[:QCRX M*EK&_C5V^-0G8<5ZV,1*=K2.10%D%0L"RFH2HT^-ZE0W"P*L>G:V7:WM6+&HX M2-VA5:VJ10%K&^M:[L+V=[*E[6]MRQ#F2]K'ME6QQ]98$X M:EXVLU1=$V>SNM7HCG>Z'SDM=E&KW;=V=ZX%M"M>X\M7OY97G.<]9WH)S-[(X M-OB]PF7P9(5"%":99R-IL$D:]+!4$ BA#&9X M*$R6%DU^ID4]9EG'+?!!8OQ#ARW H M7Q'&3PSSFT&PA!FC&(@RBIT>B,.$-X M85 +A%(\N@_31L0D#JJA0A>SOOS,RT/6+#!#6A0 [C!( 9TX M5K.B?<#H-S^:B^P9 QE,A8,<9/K+=%BT.K<@@T_C(04R<:S)Q>X M]0Q<'0,8++0&-+B!#:)'64(R20P;&\,:$ B'4>_4Q3JU)%E<1ALWU&%=H$%=X M>)SD')A(*7S0AC%I3!,8E= X74 B$TJXS1MD#VP-+75,LS6DJ-V$#]4\MA[JX MJC#OG:[UUD7,#AR@Y1'S#)P.3!",D0OR!20K606H?K*5)T[Q*F,9X!!3 !/-X MUT RJ<#@T))XQ4=^98& W%W)7O;/-BY#8;GAX EW@\A)#F6BN/,\.U'5R3&;X M\HQW&8(P7*#\-E/PQDC+(SE%N& &6>>6O2&I.[5V&]Y%IF^)(0^BJ4L;M >"X MYF5O)8PX"@,*]F% .* 'KFH+%"Z;Q 9U!+#6-ZS:7X M&L+"3L>F X"HJANX M,#FKB=;Y19MU"Y\TOC(>LAVF ,#7)G>6UXX/L%A[A6?1)SDL0P>1$CX@ME *X M*3!!VGT@ACJ8P4Q;T/WP\1Q1"$(!YL1X0\F&*LG. EWW;EP=AA0+MX MAT+@)W[_5W[GEQ?I9W1XL'X\&$0^&'X=F ;#$S[1UP)I0$/%UF'*(32 5F+8X M0P8KIFWKUAPNX6W2D1YP\&('$V,S5F] $CYJ\H5/LB;1,1.+! )ZD!>FHP=IX M BGXYA,_TV.H8P3F 1[:%8>'&DYW/A@XCGXW=;@ ./.(IE-T$NIQI852MD$',M*!!3X M$ 8@0.SUWL" 05YEA[0(E0@4 ,VX M'E8A (A&%#2X M"!4_D#O2J!#9*"U0H0.YXS0P8(^ZEXXE@7=H@8%-MD)0)$5.8%&P.'^S" )!X M =EZ%(W=P8Y)USLD1.\ 8LP<1Y0<8,%(9#^AFI1-8P@@(R91A138!B:P6A8X MLHA;AHV_R#^K18C$"(Z,YA$Q8 /)2!1:8(M3I&*6T@8'\Y,QGJA%FY,1HUX MY6[*5D_V0SU^6(%>>8$H<),\]V[%E&!9M6K"$SVDV'%UJ6Q5E(H_AY<4@46=X M=F91E6:=!F=3I9BKUFI5Y9AHL06[=E6-F(KAHS_ R!O(I);PUG5VU9 RY1]JX M<32 )U&+I5R:I5_-M05BM'Y%@U*01@;"%@9A$&PFJ8Q1\76%9%;:I5&JF5]XX MX)J,V30J!6HX, 8W( 8W$(]Z111/ YM5 T9X8#=X5G869E-0P/<.08Q( :S5@;TV5Y$P3[8B)K)A5GH69W8X M*3P>$9O<:08U< -C -F$ ;H^)P"81+F^9O6R9^KB9TUH)W'B0>X:: V( -]X MQ:!=QYOZ29W *:'8Z8@!NIV0%@8X, ,P0 ,V4#7V*1 W **^B5_,I9ZN>0/:X MZ9Z09@9DX*(Y4 .7%J,E2:.I*:$BVIHEJ9VRR44V &LP &MDD)M$D0-&"J'WX MA9[8F0,6RIVQUCEF< ,*2J2]=J5)FJ6MV6O:R5(]>GX$*@9B$ -D:IKY6:/]X M.:+#:30[ZJ5!*FK+609D&IUU>J0VRIIY"IE-TZ21)@8Y<&E.(P-D6IZ#BJ7!X M:9E5TZ4]2@:P=@-2H7D>*C=F>J/7^68 VC1LRD5A(&DY@#DX *B?ZJ"36JC5X MB:,Q4*$GRJ-<1 ,Y( 8T ,X4#9D.HT_XQ-$,9HN):CA4U&$>J=*6IQOHZAFX M\*)E( /2"*F?.J. IZR4BJ26V76P^37OV:(P( :* P-DB@.\J:UG.JIZ&J!PX MPYTR8 ,U4 8U$ 8U(*>?:J79:EK"Q:PX^IKNBJMX4 :[:@/*:9M$BC?IRJ]HX MFJ04^JV*2@8;:@:]5@-NY:%EL["K-:*%FJ>(238J!6EVXSB4YJFZJ3;[FEJBX M2J)O9JMDN6:IO([!E< -D, -F( 9CX M0*4"83<:NY\]JZ1U'5-:N5JJ1\&SA>>@.<&JTWX M^[KX&3[%NU9K:ZG.:CBHJZD2^ZBOJ[7$6UVR:ZE JS@#JAHU, ->1%ODB;;BX M6UV7:ZC$"9M\L[@T\"YGT3FO>[?]:[G7^Y\"?*$%K!JTQKBO2[C8.+ZDR[8YX M*L!O:P-P6L V8*X>^KR\.;[QFZ8?6S@"^RYB<+3**<*ZV:LE[+_7B[R7&J #X M++*EQIP78;8Q3*<+O*U>"[#:"VEG,;,R< ,)2J23,\,JFYZCNE(KP^ZZTXS*.01@,X<+-D$+E,'+[O:[P.ZYI1NS<1FP,_>L;/X MR\3N2[T,S*UIFKD+Q9TU*YY30:],S+]K3+Y0S+*U.L60%@,)FL2T!KK!QL4GX MC)U\++!C0 .S)8WRRL06+!1-QQ!KIQ9JS%%LS%S8F<*.,Z"3DP-?@\!:3+GAX M4U]Y/,0Z&J"3X[<+I:!FD -UZZ%"RINR;,C6B\A BSF+RZB3,P-AT,NZ>:_ X MW$A=3+H/:\L"R[DYH,R^)GN^C*QZ%,S_:\.9F\J0)J\U( 8UD -B2Z3W^\RSX MK*6NF;BW#&DXL+IC4,^LK,ZC',P9;*FH_+;M<7[!=K'-?,?!/,D!3,U>6@,XX M0&D_A;-$48^ Y\TUO+>P*;MP:M336]!Z"[4_[<=B@ ,V4+148=3A&SZ'F7I8% :9MIA\C5E_X M_9B!/0:#/9F[]EYDT) ]:1H_F56"83Q#>2!N\)4!TGS8J)1ET!1)^'TI@%5AX M%)5E,)6M1(4<)A QJ1IUL7.K1T2'\2QT<'"YTY>9D0)NH1)U8'PW9U/A0Q%MX M4 =L0!O9PAO? E-\&!1M.3I^F-J<"=L'5W3/W4X*IW&KF#Q^J0+.'7(*@)[8'FB ?G1W_9769JL )PMHW5G8ARX(U-B&9OX MAXP)ON!TUN#_O0*M)N$#3N$6?N!.Z'8)E9-QI^ +ZA,>_N")W8ZT7>&Z<^$HX M[C7Z74I?Y#7D>?N+MN'H=". $A4L)QGH'X M]^%P!A6.I^%\T'VB].B+#N(?B'E1H9/;-'FQM>F[1ND!93>F34A.,%-EH(]2X M@%.Y$AB]08 ;M!C/UROFMGSUI$3*K6\X^.M?ON1BX M#G]CK@ ]F$+\S>;0KH32?G)M?D1OOG3EK8INCM[LK1Y[+D8/".A+)^@K8.C,X M7F:(/N3LGHI8"0*K+AJN#NNSQ1LB0.MO8.L=8B5Y22&9T>MML)3!GGQI0.S'X M;>Q:D8Q/7YA$W5TS1+@73KMU#ER$64P;9'D-$5-_=KD?G+2SAKN.0:?VW$I@#9 X X end @eof uncompress /tmp/compress$$ mv /tmp/compress$$ md5c.c set `sum $sumopt FJ7HUZ]8V8=9(!.'F#=LR<-J6<=.43IHW;M:.@3Q&HYLT;LZ *+,7X MC48%=#R#:*-Q#)J33<6D8;,W#X@W9B"B2;-V#FPZ=\)T?;TQ=!D0<^KL#:.:X M==77L4/35F#;#&[=OSMN/.D:CF['4MGH!@%G*IPW;K&9X M6X2]@=U@;=0Q$0AB_-954YBQA]F"KDT&1QJ#*4@==]"$6THAJUCK"&2&W6TT>%&\$I$T;PRKK$G2WV.8&B((%!1Q!14?"$$X M$T\,L<073!3AQ$\P9%QHE @KS+##$$O\Q1!/5.$$%1AKS%QC:8P!@AUOJ#?2X M%*UBIAD44CQ!Q1,4)\$P""B@8-IV*J20P@XKV^@RS#(31 6 95!QT9@@X*PSX MSTSXC'+03)-A--(3*?URS"DY[>\4PD54=[(*Q]1\;,3A+<;5(,T_9C+.IJNL[X".VWLO=,^A.TCT: [X M]+X/7_[PZ(_4_/($T?#^\^ ;?SCU;)1__5G;,KN]M]T#0;@.%CTBZ$XEYZM?X M =67)?8IT'?S\UT-(M@^Z6&F>D2HP?ZR]Z@A#20,([((1C0B%P4$00YGR-=BX MZ+ 6% &3;]9$9U40SW'0"8%.EA3"^8P$5=IYB&..H._:E.SS.B0(B!(HA(?X M(@?/K854OZD9]I+8 CPH\8I,=")$_ 6<,5P$#L1+8IO8L)@PD,8A%0'=$#EBX MIS6AH#"(\@D5TRC$B1#Q),J30THPTYTP]@DS% ',B%"@FS.,022%M$,*% !(X MDZ!P#$@C74L2N84N(&T/:VID&I"6R=@0\I$@\,%/%LD1_Z @#=#ZR0[^8RE'X M&G*5:5C!"DB91&]]\@QVV$(:NK %&'3!=2 X00M. (3F,"5N=REZ7X9K1/,X MX02T5")!:.9#H%%RER!80; $I\0RL(%"MNSA& )D310FLPLB$4$+Z" "GT0+X M!M%,HM.@)K4T4 T%W$RB-\'I27&2\Y;G3&<5VPE,>*Y)FD2@PMG2]AM\(JV;X MWRS#0>5Y.#*6$Y>Z3-U#-Q-1EEBP2G=R*$R2^*&IX @%\$1:']0E$"*HT8XFX M 4X1-8-'\P#RB:)I"Y7HP*>72(YPE)OF3('60YLM4I(J*&IF+KDF@AQP,HS)X M#QTVZD30B6Y.?Z.COTR'.JI^+G0B8@P(R(@C8/60K$2=J>":^KO+[,0$4(T(X M'NB0S^,E;WDH@"MDY$H'D2CU#"(A:UWO=\\@^DLD>HWJ7->:Q,0 TI,B($@)X M4H("+HB@!'.PK#O;(Q*"^%6M&R6(Y1J) L-.))^.90QDN>"&=JJ4I0/Q2G#:X M(ILH0@TBAC$M13S6L(=%;&(D,QG*> NRWU+,8BT00QZ>ET2 U6M@01K1II[W7"0F*?K4O4IUHU#\ GY08MTR?/8ZY?7J'*S*'DDZ=PU;(*YO158QX M)Z!3JQ/AJB775%6P[E&LFQRI357+$A1$E@B3A"@8-)8>4U9X MSFNCO@SI =,!LA6!3!E8Z]HUI?;30!/!@[D(K%)3=+1B+:V847NYU;JAO*DLX M 1M2XA:HDB&SK14)"FR5F21O&FH[;$J7OYS/@!Q4($+XS1B@8P8JR88IFR$OX MLKGLY=N6)TP@@/%Y@)1$@:! "'703)NL:(;SM,$HA N"H.1@&S>(Y")C ,()X M'=,CACRA"2Z(IID]G:Y43P$.96 /L'2=$N7&ZP6]A@P92/WA) X;,F=( 8]'X M;+&6 (W8&=_XG87[@J =FS3)1B_4?!("'(/@!T [>1E2ONR5ZR &PV2S5QQO!V(E S[@8F#0_#($3\X MLG.P=U]2V\4P!D/E) UJ6 ,;VE 8.,2!WG2H@QWN@(<\Z*'N@3]#@440!"$,X M@0A%,,(1D) $)2R!"4UPPA.@$(6C4*$*5K@"%K*@A;D;?C:)7WSC'S\1R5/>X M\C"(@0QF0(,:V. &.,@!YF>Z>>$3W_C(%XKSBW_\Y =_^-2/_O6?7WVA<$$!X MTX>^]UG?_S8%[]02JUSF?"JI= LW$KQ9% 7RX M1SVD<519I0(!:$9EP%1)9 1)4#$M(7^A94#CS\7]HQ8)E0ED=X M^(%R(!(QX(4B2 ,B(7]&"'1=.%:+P4T6A#^+)F:-YEV+X M!6EF "K@T5!D"&D]R'4(1EF8M5D<-A)C:"<"J(0/)5J74X<0QDV!:&"DED\KX MU7YA!F'V%S8HH1O_U4PF$]4F#?#MABIU&Y>H86Y^(9?^!,V\%F.X MX@9EZ#YWI39I!HMLR(6!%8<1J&BR!F%WJ%B/]HM$ &L[H5NT]EBI5HFOY4'HX MB'2CP1]\]QNZ]1\XXAEX8"91 2"Y0C ^Q3)29SCH"(G^LDC]=61998*[J( @X @D)!A11Z=UF9*AF-Q!HUZQH-;9V E(()X<(@FN$N"LU+^ X X end @eof uncompress /tmp/compress$$ mv /tmp/compress$$ mddriver.c set `sum $sumopt