Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!bsu-cs!ibmbin From: madler@Hamlet.Caltech.Edu (Mark Adler) Newsgroups: comp.binaries.ibm.pc Subject: v01i185: tcrnd, fast assembly random number routines w/asm source Summary: tcrnd.arc, fast assembly random number routines w/asm source Message-ID: <6014@bsu-cs.UUCP> Date: 4 Mar 89 08:01:03 GMT Sender: ibmbin@bsu-cs.UUCP Followup-To: comp.binaries.ibm.pc.d Lines: 361 Approved: dhesi@bsu-cs.bsu.edu X-Submissions-to: ibmpc-binaries@bsu-cs.bsu.edu X-Questions-to: ibmpc-binaries-request@bsu-cs.bsu.edu Posting-number: Volume 01, Issue 185 Originally-from: madler@Hamlet.Caltech.Edu (Mark Adler) Submitted-by: madler@Hamlet.Caltech.Edu (Mark Adler) Archive-name: tcrnd_ma/tcrnd_ma.uue [ This is a set of assembly language routines suitable for linking with Turbo C programs that generate random numbers of high quality at high speed. Object .OBJ files are provided for small, tiny, compact, medium large, and huge memory models. The random number generation algorithms (two of them) are from Knuth's books. checksum size (bytes) file (between BEGIN--cut and END--cut lines) 30381 20496 this uuencoded posting checksum size (bytes) file 21473 14855 tcrnd.arc -- R.D. ] BEGIN--cut here--cut here begin 644 tcrnd.arc M&@A23D0N05--`"4E)24ETAH``$80J8!ZF2`[```,<,*<*0/"!@P6,6;(:*"` MX0X00][`R2,GS1DT=$"@&),"1(P<.&ZP\`@2!P@Q>4`T"2-G#8@@9-B4D0," M!)0P<\*0*>,FS,@A01R"H((FS1P0<.2\.2,G3!L0;<*D%$.PSIPR9$"$<9/5 MC)PR9=BD'",Q#=:3*;?F>>.&8!D\8\K`R4@'39B,:>@(C9K2S9N,5$',><,F M*TH0>:^R,0/B#4V<2%EF?,-8;>0Q:P02O),7S9LZ=-&4$0IG9ANC<]*P;7MGR M9">F2PEX9[\$$5QAA*T=:0`@\% M,<=5;8@A$PA6I7&>2@4J-9@9&:W$X7@BDF@B=C6X`$-C-+$1W6PU35':&&F8 MD5(;9;3A6!Y[O;$3&UH=909A;+QQQQPZ."34$#Y$-4<;+[2!QPMD?/$%66T$ M9*"9\Y&Q@Y8@@G"':%^!(`*::M(A`GE;G4305W#X&)=A*=&A8AXC?1D&&VR, MA"09:=31QD@^RC'02(X)A48=`[E0DQ-_$5377>'=,5X=7,TT!UE?'9547B=*@2M[(#@A*54T'<'33';:"T!^4,HPD`U<(D^$A0T09 M!963[Q*4U!MV_!=LJ>-!:H89,_&4$84LHUTB=@.UU91XOH[48%T,P79&TG1( MEQ+7=5Q.X'G'$B6JJ5"549>31[%$T.QEL"3V>75HGL:B6G&5.AF0&EHN"*'3 M;"A;QPKQ%QKIH:I51F'`\3@>:435>MC\YH2D8*5A5;MH#'V%TVI3TF17Y"OJ M.I[B^S%*[!P(EJ?B&7[2%5C<$![1/$4^Y4F.2US#D*NX(37.RTM*Y%:^\+WK M+JHAH'SXQ;FG>`YFT)O9Z#*8N]T9#G'M^DR\)N>[AC&D/_\1C.ZN@A44S*$C M4@/!%'170(+0,%?[2I9"3I(7ORVJ>""`$+5PY;.\'(]`[F%(E58TAX=`@@'\ MHD,8;G2S'FJ%>4Y\7O1&=S`FPDYV__,0""`Q@2"P83`RI,-1^(4D$X9G/,`3 M7H"84CQT/?%P"I@B`'^8(4@8H`4@D(+N%J3!9(UA05]16AYILD0*"'3'1#2-1$=!25"X/ MB=0-^"0I8GKG$>UP%"_H*L-`:,*4X+6.)J,B(`Q<<)\/5:@.-P(!&2:*0U%: M-)HK;>EZGC*@-V!P17#PC](^ZC,0;&&J+HA!%P"I3<%L2G;O\0DZ.R+.NPY( M5,E"00R,FI>.U%.IV&%)4U)R@C!0"T'8.X$;3D!/I85A"UT8"5#7J`#-5218 MQT)!%=SP%1^U#I[E\^OL`&B5LZBHAPQ98P4\"E.FKG-Z;J!JR6R',#P,Z;3R M'.H=^<0HA'4&.[^\D'UX%$="QF<\5PG-:!1032:JR(F+4JX7MCO8$MZSQ%US&2(:Y\I##K_$L_69N6U=/S/=1A"06I:T+0DW*#` MACL0[ME)277JX)ZN$H<^QF5]/B0F0]Q[8,^\RS!5N68!E<(I&QMKM\D2<#([ MPN,51FD.DIHX*1J MP2L-@3(+35!PMMB`P`J$\53@0#"XK!2!#`!^&P:L&`$XG,%3,8#!K(%':QOL MLH'A/1$9[B"U&23TBCN80K+UI:$U$,0K%R.A"O,K2`\!@2?,8[0"@""&1T=Z MTK&%!`(>`ATM*NM@DQS>&2[YQ!*^T\X)0O!J/>0K9&J5V3]@P0_6R(`=;+2C M+D5G;64X3P7(P0Z+.LJR/2(#DY#!.2CX05=KL@,ID)JL!]MT8R3\PP6G>]T: MT3+#S`GQ-QJXI M/_1MKHA!W$`8@[D_Q#4SM%Q#,XKM#C@&@LW;U?+(TZ*UITF0@V\NX6Q]+1&P MH(,@8.'EK7659/*;%\T_1#[]=`E+7Q6YSQSEG"U'8MF>PM+HYG?3B;I#]TB/ MSC(PFRW3[?Q#(.M%PF0%^B^')B.9;_W&M*6MJV\]%M:G.`C?N-K1]SQ+S\EB M%\NJ@S/9$ZO1EB!8L\$%LZXU"&[M@I'X6J.SMBA74Q%UT0:V!P)"0%4UD3A' M$14S(D_,]Q5G8!1/=12N-Q)"@`7PE16KIT:;%UN+8P<(R`0L0`1(`(),E($L M``-&,`38PT:;!P6LQ!J,410741!$)$?Y%7ZNIT8@`!=H`$`72`9,\1EPH`,/ M%W%;D(%=4'6;5P1`N!7HT1;,5DW4UWW0YX-`"$"KQP)$R&-'F(1OM(18L`(R MT`6VQQ#@9H"&%D@ZU5X;HA1I:#*>-SL!`H%>%&^51&_(`WCRD72O`8`Y>("T M]3E`@BP$D7I'(1,P`GZLYWJP]QS1\7N:=(`,B'E*<61)QGR0\A4&0D)]!T"* M`S0!=19,-"H94013\')$,`4'Z#L(TV*+XBT9$7OFI%04J"HOH8$(R(M#P(M= MJ$-)L(''D00>R'GJYGF6=FJ!\CK^=AC+:"BIAAU*H!`^J"0B.`7# M2!EF8'Q?:(1(N(RAQ'$[``5JE1'>.%S1B&H$,A/;"#G%R`+@*(Y%Z!Q(6$VA M%(/K6(S#58DFXR^\PVR0$`&;)S,9427,9BIR<'V,\8[3"%(#R8V]R`*0"`D- ML'G#]#RHN(V7YI!9,19=R(Y'Q2)$V&9)WN94FF01>N9)5V8R^ M,9AG*3H1&EA4'E$C9)$3[Z@H)DH!Q=N".0@)L/ M(6DSD0=U\3_'AIH/\6;`PG"&L2%KX(/8R3]K])130#H^V9!&.8\BV)B9M7IK MM``<29ZA:1$R>9YSN(;BMBZA@XEO$%M5DFP@H`9CD`=C,!)K$*`#>F5M,8?2 MAYGY:8O\`G9SAW1U1Q-RTP1YD4#%Q41-0&IU,G^Q<8#VAW^"0SC\YW^_1FLW MH(!_>%N!N%%65H@P`V,'J(C^4@:-J'J/.'X+6!0-&(>G)'' MH8$'Z(W$>)+'N'F(]A>';G*'T*^9]9>I); M"H9(&`8N<8Z!F1'="8(6J8+WR$/CJ(]-$7-JFH[_B$!I(`>/5"G_9'-RLW4^ MTSI>EZ472(8KX(U-F(P/01.^B0)U2@9;L`9-N`*^&:E;H`9=D`*H:0T`()JX!T`*J!K]`">AW:^B78#AW:(E%`ZH'4TT*G`6H_#.I#%"@(% MBJR0H*P/X1*^Z1(#YQ+1"@+36@/5.JHB.*==J@8LT(YW6@62V#K_^7)MBJM: MQ:5GN@8EF`3$FB9VY1@942$):IWW:J!?@R*(MT$2H4;'.@8-$TK72J8TP)F; MEP2,@79BH!/>)1H$Y!**\P1+X(,AN*]FVA3PJJXJ<+'2-P0">B)J8+(6Z:[] M^J]WND-L:K)J(+`0UC8(&GV,RJWD$;.3XQS#)1YPH$;=*K$@>+(VJ[+QF@1W MJK%$V[&XUD,$A'8C6[)/6[/\VA3^RK(NFYM&RZUJ-+1^P6S0*3#3N2**XQSM M=A:/4QIR(!9J9+`,4Y_T(6[EX1].YH!R:#+]B3RSPP*5IZ">5P5C5@;'!57) MHH<#Q8=0YT7!1Q!RTS:'=RP&HS\->6?%IUJ$ M1X>=.@8"&[6&!PK`;T[P+C`VQ9Z M-+D%=7^Q57GB6WF7)[S1YKKXACW=-[JG*7UJV+=MV+OB04"".QZ41KAOX)]& M$15XH+@/`<"K(7HL%*4L0Z6I1T`\^'I,%!6CEU$=-*,+AV'M(H4$`5<$A`(Z M%32I42Z[5!,"+!4WYP;2610K(EY68HH1`KM>-!@+XF1RR!Y)TVX95)TU4226DP8@P`-NX`,LP`-C M@`<^\+7TB),$M)-0F1&Y!8+@5B2KJAR;2;_HBTY,[(Z1&38B@&V?R!9[0L9P M%0-V_)]Z,%0*O$;.:;4$I#@VL'4S4`,?2U/:AU%$&1!`:YEI2<@BJ(+L"6W1 MUI/Q>8.T/!G$>\L#:6H0H9/@&I8N29;$$LSYI0X)Z) M_,O8X\QR`\T91+/TJ,LZ67"]_#RS/'MR\S@79R`T>VF1G,R7G!+I7,N,`29IMH33#1Y#,YLWWW!2;O,C%K!.TNH*QE M"(*-]U0@"`=6@3W>6-=W78Q[%T<,.UQU]F85`;>[:4D+?13?!&]O6%*&JH&M MB+%AVHI9JHHYB;$ZNW^K*!_F4TS',04^"#19`8-!`!IJQ2%)HCEI*W30Y;I9 M:LBF_*0\A%/WZIL$%*UJ5'EL<(1/6R42(1AW@'@[200$W`()Q3_+Q[,^BP:8 MHSPFPS^Z7)L@:HAN!+^[0GJZ09Z9Y08&5Q MJH.OI:3%:+)V!25*&@,>;I%D^HL>SC500J8N7LR["P)FP@1$$`14$`1FXN'^ MXF@7R5+9C*)A<15"_J8::.0BGJ?JLN0>WLAF\.+T>*BZJJA.&*:7 M1:DJ;M&UJJM=B;M06!XB?+]&K:DJ;I&Q:JH9:767385&+>8>?N`[WN,_'N0X M?K(7J(JWK=S@)K[ES=<# MN>EY/9!`(!,]J7F'!F[?7A/1C3TGV=?&A[3R$=AT,-BB6-AU<-@:\67D MR]CL^JF/O9.7+>B:34Q1TMF3G>BN!X*@O483\):DK5-?`==]#:4L9>=B3!,X MBJ7H+GA.)KPK86V">%3R_5&IW:@JI9T^N.G+WNF]?>P@$.K!4RZD/FZFONID MD.I*H1PC$UL$M-(VO80X+=,13]0B-5$EI=2HDAIGT!99`50A_Q"D5.NH]\$$ M5,9GW(2Y#D#(RT?M^^MQ+>Q)I6?%+MT,G^RVX MA=C8OMBA;)$7O8K>SD/@#EWB#AF&KJ^4?>X#F>ZBW>X_\^ZH'>\\-._.%_`R M?Z3X/O;Z3A#\WMW_CG!C-=\@C9K#4RY`*Q_UWE8D[(/MC4Y]';,9R-<5D M!AH`I8E(0E2>,Q,%HM1D8=+!,ACV[BJMHCE55K!8=A1:%G@*E'5Y(<3X7,!$ M#8A981='X6SR?52N@L)>E%;;PE$$8GCY1126J468H15U8F$]7Q-S3>S(;NR/C^Q[S?C) MZ-?.KO2"P?2$_?36GM@]0O6-78)8OY'?GME[]G;'O:^.O825O;BX>ZG MC2X#?V4M`P6-8;?L!5YL@4JJ%#;4%_A)%\X@N"P29K.KLB@$H:9ANBJ+0FT: M?&T*C5L#'T(F1N\Q;Z7WWH/Y#KATSW;][MW@7>\#CW[:.:CC45;[CQ3K2"D/ M3[H$Y`10(!A:A!D'O]>[K*PCCL1(@F(#H]?2+?8UL2P2MFR+&>TWW0(XT(0[ MP`1F=6#^1I>"H468X8-FL$5'`3<[0`5VOT6#$33V.KH^&([3MD9L)VV+0FW' M[X/A2`?<2P>"95(%-^+%M2J+0KHD3KQ:A!FTF153``4L<+'-N0,:C1/80Z6C M._!!J_B(Q_A(X?AR'?GI1_ED@'A"9O$'K)VCSTG.-?HOCU&HI$H&'_(-/^Q` M;Y-;KH%1RX^=%Z:4">PGVX51^T-FV'EA*IK`WO"1GWZ43P;=.M?$;I-;C@2W MVYSHK1.=M`;[6]0Q$`0OJ*Q48)SY!1TI<5BIY!P_IJ\7K9,;&::4>6$$U(/; MWH61O)%A*IH7YMY>#/D/GWZ43P8-NU#BYG.(I^KJ"_2=_Q`ZB[21VE]G1XQB MFW7.NU*$(X9=)+^S&"2Z>]5*_65SDA(R,`,OIZY:42?\LA.I\159H;]9YW:$ MDZ]$#2JM,ZW8UV%_PO%[>MJF*5RH.&'<4UP=1A`?[2L^H]28VH3A14!J-FFJ M7WX8-`?+X>(?\-$O2A/=5^@"YTK13A.LO*UM;^=2O1#O]>,GXQ^ M[>Q*+QA,3]A/;^V)W2-4W]@EB/4;^>V9S?7GX_6>O>UA[ZMC+V%E+Q[N?MKH M,O#X4EQB.`>8E7WK@EDRQT5C^HV7@X\IVW(W;).%K(&;M@*""@D@W@0S?>67M>+__B-CW@,#TT1[W.(9^H6?\!M4A^C MSTG)A2&RKM0J,U;:55V$@_19Y[RYM:/E-T,Y[&\;Q#YDC4JJU$FM]!GH,A*` M^'LQ;XA?QSSY:4;*W7*Y1M31=11N1SAP5T;,$SK$B/C,MTRM]!E*8V$R2M:( M?Q;+U$J?H32N9/^"T9-9P406-NX/:BE)1M"90O_'5$/FE3`&$C:`XE33?Q5" M\P8MP'X<3W:OV_D-/^Q`#^#BI>/+M`8W;)/T&+4_5-D<=]F4">Q0&[8_9(:] MVGF7+9K`CA1[OPVN>4:>!3-NQ0&[8_5-D<=]F4">R`KH%S8(:` M&::B">Q0&[8_9(:57>`9(9K`3EQ0XG/`77"7[>PSM[\-'_GI1_EDP+W'A!46 M?\!MDGNQQ1@ZW@8R01R'?GI1_ED8/F5STJ0 M!VYCT#/@QA`:`!H(4DY$+D)!5``E)24E):H````V$+U5?\85`0``#&7&H'D# MXHV;!@K:A)G3YD4;/"_(?/G",`P;-A-!R'%#9@=".FS2B`$Q9@Z(%6?DA(&# M)DU)%R%'KMA(!J%"A@XA2OPRYDT;.&'&T,E(TZ,"D"))CCF9;..&#EOZM!)XZ8,S3MRTM"ATU&FFYIS<+81,[$BG:%G.E(,0S6@G#!NR+QI M`\)-G:T4:?($@2;-&30@XM0)PT:J0K)T[>*=`Z=,&3(@S+RI.&=,FHY+S:09 M`Z(.3A<6J:`I$W#,VC:0:0*FLQEAF3-,W3`]L[,G2Y;#;ITJ9S,(-(XF8,FSH<0;Q&8K6F&X5#0,!!>N8L6]*`[Z1A MP^;W[=P@D"IEZC2E@H`NG@A1DGB\TYIR;F]_8R<-1\2*5<17>>B!UL9B"AW( M$1LT,37<;0&RQ=(7>,0W'PL!W;%9?B#@(1--4X`T!$A-@,0$2(N!0%V`-[4Q M(`@HI'A<'BF`Y%D;<(0Q!AT@@49&&F^!Q$9#86&H`%J(H5%'6.X%%`2#0]DD M!EECX"791""])D005(`TDW9(]?:>1' M4Q,OQ52#"S"DD%B*9>B(EX)EE(=D37`4EE:#.GWU(*+[;9<&69P)!)101/5U M5$-Y**?9EX6FT093E-*$7E.^L;B?&F7LN%-%+JX!H7TT!1C0'"Z2!^8;W871 MAJEH`&;9>:6I=UQ[*BG@Q!M4#3=:L<:Q)YL<::'@9T9SO'4?>#JA!0(.,&!Q MTH=@.@49".*19EQGFXVQQFI_5B15DPJ,A)-.<[DX!E(T-36&4QK)H1"+V)[) M%;ROY4DN7W,,M9^8AWFZ61X!#?C&'2`06AY3'"G*D1O=FHDF12!X%IVCMJ$; MU515'9K;506/3$9`JC:TU!AU#`GK&PLF9Q$3;[SQ$&`)Q\9B&7CX"L=$X]26!I^B+5EJ_WS4&'S>A*A9>W(@`A`KU&&%:>&?F=-Q1.:5FG MT'YX```!+$,I" M40V-`0``#"/2F`'QYG4*M>1).FG&K)G3=BD9N`K(SGT:=2H(.2W;I-%3IN];L4G]FJV+]B1B,G#R MKD$AD0X(,X`%3RZ%81A@4(V(`U`!H(4DY$7T,N3T)*`"4E)2X$``"Z$$F-7TH= M!@``#(`2`#@@QPT9%T&F-.E@"04```:(')'RI`J4`4*F3"%`)`B5(`2&/"%2 MA,"7C%,*?.GX4265(EBH1,-T```*%P,0%`B@CR8`)`8&$@APP">2<@$,#`B0 M0E-0`?^@#M@""0"8ATF_T$DS9LV<4`(`(/A2D`POD-$ MX*&H`-%`*0`0%D`#,QD`A/N'#A0"`&LA&:@"2N``<(K]`I@#2L;2AU46L;-R MA1$V1\#X+7*"0-R`=`^C`/+AEPZ2138>+J(.8)=VV`$2!1@R9!&$"1$211CD MCH"N<^0*#N`1-S798A/X%A0`-C4,``RDV0X0#0[`3"(-`"LDD@%BG@3R#C\`'#((0\=>>_#))P=]]N'W MD'[\'0B@@'\2:)^@"2[8X(,13ECAA1YRZ"&(B@EI(HHJLN@BC"[.Z"688@I' MG''(\8/F0]9AIQUW;L(9WGCEG9?>>NV]Q]^>!1(*`*#R(:KK.H8:^%^B#`+@ M(``02DBAA1AJ**F&E(I(XJ4IKMCBBS%ZNAP!-N*H(X\^A@.DD))\&>:8HYK) MSR;?_'IW<<)*YZQWVJHGGP_YN>M^O0[[:[``^*I@L<(@X`T,'DWCB1.# MC>G#`.C%.-`\!=!CT/P'JPM0C`BP%W-$Y0`4LP3NX7-($$E>#`*V3,& M%6!GC#R`SQA]()\Q,L'"3C0N+,:PQ0M]D<)@L/`<$FR'!^=Q/D/TXV\!`,LQ M``"[8Q#@ABX2".!<(8!C6*")C#M<6`[Q`212\1@J.-\3%%$:.@`:"%).1%]( M+D]"2@`E)25B!```NA!0C>$DB08```R`$@`X(,<-&1=!IC3I8,D#```(I#@A M\H5($"I!(D[\0J4(%BH$+&(D,.0)D2(:,!T`@.+-@`$%`OA2"0#)N@`""`0P M`0D`F(B`D0# MY0"`4@`-S&0`$.Z?60#D0`D48&[N93>@Y@SP[*%*KX>.NBUB9^4*(VR.@/%; MY(2!N`'I'D8!Y,,L'22+;#QOAKX>M%F&[5T;`(F2MW%/" M`,A,(N``T<0$P"#2`+!*(A4HXDT@X_`#P"&'/'3()0]E$00=#BRBS3WA3"(B MB0,,PR``DB2Q0S!T5+`(/-&8LT@^T9Q3C!<(+')A`(D`P`@PCF"3&P!?>-'% M!\N4=AH`J:W6VFNQ\<.;;\!]1]Q#QP'@HW+,.0>==-19AUUY M?`"HQZ9\[7T'IWKSU0?`?0#DMU]__P4X8($')CC7B@]&.&&%%V9X(8=(*LFD MDZBIQIIKL,EVY4._!3=<<5U^"628ST4W77779;==FNZMUR9YV]WI*IVMRIJG M??CIQY]_`!Y(Z("&+MA@HA)2:"&&&D)*&P(?ACABB2>&D^**DB2Y9).F52HE MIE5N\@UZ`&P*0*=:@HHVF$ M`FE[#8#8'ENJR-FBD,SD%)P,(0`R4PD@P$V$C!Q``,<`0,P&C@F@3@#$B)!X M9\28D#@ZC*>0N`*,%_$XXTE,SK@4FQ.#A>?$>!&Z&*2G08#?Q+"1.'K$1'*Y MX94DS@``A!0#P.`3`(#,,XG?1(PWB2].3#FAY^8WY<2P3&W+P]] M!=,C;GTQ(4Q?@N?%L+"Z`,6\\#H`Q5`Q>S&C^WU[,JC[?5,Q<10//1[3\P'^ M'\\7L\GTGP`?*J;G"O"ES&^=*08NP/>+\15#&.`(RA M@<0=QA@.\=OBC/$]!&[09PPD;,X83/"<,:KPPBW(,`PO+$L*V3`^ M8[SA?,:@Q.R,@0D+*N.`?]O@,"GCM&!^RW#,E1\1DMV!WC!'`,&9SO&,*!XH5VH$9L"&`9FJ/B,9[P1AK* M\1"C&YP=E_$3/:K!?F=0Q&/H`!H(4DY$7TPN3T)*`"4E)3`$``"Z$$Z-X1TB M!@``#(`2`#@@QPT9%T&F-.E@:04```:(')'RI`H4!%*<$/E"I0@6*@.$3)E" M@$@0*D$(#'E"I`B!+R*G%/AB$N4Y3`<`H(`Q8("!`/QP`D!B``""`@$*"$52 M+L`!`@%.:"HJX%_5`5L@`0#S,("!+W32C%DS)Y0`HU\*DH$C=DV)`6CGE*$C MMPR9"'`1?)F#IHX9,VS*/$2KMDT:/67RG7VI-DH``#/KDJET=B89M?(>SV2C MMMC#=8@(/!05(!HH!0#.`FA@)@.`.T"B`$.&+((P M(4*B"(/<$9#S8-"[^1D2>0>0*/RZ#/81<$Q1`&##GW\*Z/?0@`\9N$X(OCST MRT.M+(+-/64(L`@RK=SS%C*3>#A`-$@!,(@T`*R22`6*>!/(./P`<,@A#QUR MR4-9!$&'`XMH<<=MIQMQ]X#XT'0);$G9?>>NV]%]]\]=TG M1W[[]?<9@/>NJQYQY\\M$7X)\*(@K`?P$RZNLZBBY( M8*,1`C`A`!5>F.&&'7X8XEN8FHCBIBV^&..,-8H*G0$Z\N@CD$*&0Z21DHQ9 MYIFGJLG/)M\0N"H`K;X)*WEUTHKGK7OJZB>@#PGZ*Z$"'CMLL0`(^V"RRS8K M*;253CMBB9JNF*VGW(;ZD!10;+*-$?ALDDTX(O>S23?9#$+,2Z2>& M&S%#6/XX$YX_+H7HQ&!1.C%` M>#22.TX,-JMS@_HWFC^^S^K_B%X,`J47XX#T%%2/@?0?P"Y`,2+47LP1F@-0 MS!*]F]]%\0$40T;U:$B_1O/%'%(][@-<7@PEU6LB/2C5(X7T5N&]8KA"?-,H M7S&ND;YB1"]VHC'&`-AG#`64SAC78]SEC!&!YAFC!1>,@>B,H8,+`F&$1KB@ M$D88!>\9@PJU,T8>RF>,/J3/&)F(82(@17S"(+V)!@``#(`2`#@@QPT9%T&F-.E@:04```:( M')'RI`H4!%*<$/E"I0@6*@.$3)E"@$@0*D$(#'E"I`B!+R*G%/AB$N4Y3`<` MH&`Q8("!``!P`D!B``""`@$*"$52+L`!`@%.:"HJX%_5`5L@`0#S,("!+W32 MC%DSIY,`HU\*DH$C=DV(`6CGE*$CMPR9!G`1?)F#IHX9,VS*/$2KMDT:/67J MG7VIM@G0F77)1#H[DXQ:=X^_L%$;[.$"1`0>B@H0#90"`&:<=(%&`(4,609@0(5&$0>X(R'DPZ)W\#(FZ`T@$?EV&^@0< M4Q0`V.S7GP+Y/23@0P6N$X(O#_WR4"N+8'-/&0(L@DPK]Y0P`#*3=#A`-$@! M,(@T`*R22`6*>!/(./P`<,@A#QURR4-9!$&'`XMH??/39)P=^^O'WD'\`+DB@@7\BJ)^@#3X8X8057ICAAB*" M*"*)0!FI(HLNPB@CC3+>Z"688AJ'G'+,\8/F0]IQYQUX;L)9WGGIK=?>>_'- M!^">"1(*`*#V(:KK.H8J.&"B$`(@(0`46HBAAAQZ**F'E)J(XJ4MOACCC#5Z M^IP!.O+H(Y!"AD.DD9)\&>:8HYK)SR;?#'@J`*FNR>IX<<)*YZQWVJHGGP_Y MN>M_O0[[:[``^.I@L<($W0'@SCBM.##6G8T/Z-I8O?L_I^WA>#`&A%Z.`\Q!$ M3X'S&[`N0#$>Q%Y,Y[4#4,P1N8N?1?`!%`-&]&0X?T;RQ0P2_2'.:Q6])^:92O&,UK76B*\0_T82UTQI@>XB9GC`8DSQ@I@&`+ M/&<,&T"0!QP4`@2-P,$F:,\84(B=,>I`0&/DH7S&J(0*,^&XLQA#%BW4Q0E[ MH<)Q0#`=''P'^IR1#\`%P"S&\$?LCB&`&LHH)X%3A0".08$E:L")A^B`$:5X M#!2@;Q^*2`T=`!H(4DY$7U,N3T)*`"4E)2$$``"Z$$>-9*D9!@``#(`2`#@@ MQPT9%T&F-.E@"04```:(')'RI`J4`4*F3"%`)`B5(`2&/"%2A,"7C%,*?.GX M4265(EBH1,-T```*%0,0%`C@CR8`)`8&$@APP">2<@$,#`B00E-0`?^@#M@" M"0"8ATF_T$DS9LV<3@(`(/A2D`P/D!$X*&H`-%`*0`0 M%D`#,QD`A/N'#A0"`&LA&:@"2N``<(K]`I@#RL72AU46L;-RA1$V1\#X+7)B M0-R`=`^C`/+AEPZ2138>+J(.8)=VV`$2!1@R9!&$"1$211CDCH"N<^0 M*#N`1-S798A/X%A0`-C4 M,``RDV0X0#0[`3"(-`"LDD@%BG@3R#C\`'#((0\=0=`E4N)1YYYZ*G'GGOPR2<'??;A]Y!^_!T(H(![$FB?GPDN MV."#$4Y8X84>K<\IJ)YX/Z7GK?KG^NFNO`.BJ8+##%JLHLHUVR&R(DIX8K:749OJ0%%!L MLHT1^&R233@:][-)-]D,0HQ)G'X9BG86/#2N<+0`T(P&BPBS2#1=EAOJL+G< M`<`541",J+&+)KNAPA\R_.R)67RQBB2KB&.-GUP$[*\Q_VW:*3OH/#1*OBD# M0''6`&"AQ"WV8X"(F+8_@(B0]%S`^)XT;,$(T;SD3EADN1.3%8<$X,%Y^/ M04$``A!CQND#$&/>X)T1\TCB01'B'=\-_-U,XH430XWHV'R^3>2&WR/Z/ID7 M0P#GQ2B0/`3,4Y#\!J<+4(P'K!>#.>P`%',$[=UGP7L`Q8#!/!G)GT%\,8,P M?TCR53%O2?*<,`]*\J=47XPJV3\3>??3`%\QD(>ZSA3C'^.C&N>,X;S!.,5*PP!9DSA@V6"`/+BB$!1KA@DVHGC&@P#ICU.%_QL@#^(Q1B1)F(G%A M,88L4*@+$?:BA.-88#HN^([Q&2(?>PL`6(S!#]8=`P`P=%$!@J@*`1Q#`D;$ M0!(/L0$F.M$$XXN"(DI#!QH(5$,N05-)`"4E)24E)3L$``"&#QIU,2G="``` M#`T4D"@3IPZ(-F'&R'D#(@P+,0$;@B!HD(<8'Q'+N"'3)F#`-&8VEC$#XLL7 M)T&:%#$9$229D2"`F$G#1F.8-F4B@AA8L.3)E"N_L"@ADZ9-G!G9S,FI`(1/ ME"I-3NS)`V-3C61`!L2J5<%',R])FJ22Q$D6EDU-3FD2A`D3J11!Q-BZL>O7 ML#[7MGW[):)))E"D/#D"MR<,OU^8$`E")4AA@X<5<#7C48%+F"95$DE2I0E: MGX`%$_XRU>###KR*!5.R8=]_1K MKY;!8DX<1,J1H(A#^R;>\W1PQL-+RZ6;E3+RV#Z15'F^.W'OT=JM_Q7.VGA= M[U]%RI8^.F*)-W7H@`CAA&&;-R^Q`<(<<)0Q!DAIE$%&"PR&,<=2;8C!1AIN MG`&"&6_(`0)MMN%&Q4$`EL&&"XAQ>%MNK%45W7F_1<<>=:9Q9U=RH+'85U,\ M&632$%`%-91)/:(EXE(E!@DC""I*]AYL\]G8DG*RB4?>C4X!$89V."1%9%,Q M71F7#1DMV91,VM&PE5),=5EF1&3&)8.,\-&X'G:?`4'&FI*AR>:=;L)9&0EC M+&4A0@HQ-(8;'35U:!LF?$%'&7CH)RA.;N@G1AZ/@@!''1*F,08()XP1X@EA MM?Y(!ZZX, M(?HD7B9)"1V7B#9*1AAT7#FI1OK=D>&=FW;ZZ0G35DOJ57IR^46XUJI*:;;; M:LKIA-^B.^Y$8M)K*G)V'LOJ&ZX:JVJL0`+U&5:V*H#K1GF>L2X(VLK![;N>@BJOEFF6-/$<`ZJ++YR]!0,Q\;\*X_BSA;+^%!65!)^*E1@'[;OPK\%N-.Q5&Q5,`AIE MA/&2ALA:W`8+BT;DQDUE>+VPH,LNY^QG#3U8!TX@!*J#QX]&RH*Q#GWQLDX@7;<:E4XY.,?;9TXWI*+C;7K@+#Q8>N.!HU[OS@>3,<:>:(^)%1E/ MRA?>QFS[''R52Y?:%<^G8JUU&5P[C:/T6P-LM(]%\R@PTE6?"L="NNYK,=D1 ML?'&&&$(Z$9$-J?\A0EC(X5QDZ*Q/7_]98^__H5AD`/+=+(_LFF*?!;+F@"I MUAV(!60@E:)>TRIV,1!D[`MKP]RFYH`&$!A+)QOLH!C@H)/_V`$$(V2!Q]!5 MPC>=Z"'+VQ),&@[,:*&BD8K M!O:L)F&P0]F0"(