evans@syd.dit.CSIRO.AU (Bruce.Evans) (09/25/90)
In article <3433@skye.ed.ac.uk> richard@aiai.UUCP (Richard Tobin) writes: >Unfortunately, the gcc machine description for the 386 uses floating- >point instructions even if -msoft-float is used, so it's not enough >to find the usual floating-point routines. I suspect it wouldn't be >hard to change the machine description to fix this (it may be just >that it expects to receive floating function return values in an fp >register). -msoft-float doesn't actually work in gcc 1.37 for the 386. Partial fixes are enclosed. The main thing wrong was indeed returning soft floating point values in a hard FP register! There are a few other things wrong. I fixed one of them by editing one of the files built by gcc (this should really be done in the md file). This works well enough to compile gcc and other gnu utilities that use FP (e.g. awk). The movdf and movsf descriptions still get used occasionally. I have only this when optimization produces pessimal code by copying things through the FP registers. Files: gcc-config.dif. Apply this patch to gcc-1.37/config/tm-i386gas.h. The patch should work for all 386 versions of tm.h. gcc-out.dif. Build gcc-1.37/insn-output.c, then apply the patch. Sorry abou the kludge. >Of course, this shouldn't crash the machine. The reason it does is >that Minix doesn't set the EM bit to indicate that 387 instructions >should be trapped. If it did, you would just get a core dump. This >is easily fixed - perhaps someone more familiar with the kernel code >could decide just where it should be done. I've know about this for a while but only just fixed it. For some reason, FP instructions are treated as no-ops on one 286 system but hang my 386 system. Neither system has an FPU. Could some hardware person please explain this. >The 387 programmer's >reference provides a routine for detecting whether a 387 is present. I've got it hard-coded to no FPU. There are bits in the CMOS RAM to tell about FPUs. The setting of these bits is said to often be wrong, probably due to the use of 8088+epsilon BIOS's. The BIOS should be responsible for setting the EM bit. Not setting it makes it easier to crash DOS too. There's a lot more to supporting multi-user FP than setting the EM bit so it's safest to set the EM bit and use software FP even if you have an FPU. >More ambitiously, has anyone written 387 emulation routines for >Minix so that programs can just pretend the 387 is present? Emulation is difficult and slow, so I use library routines. The ones enclosed are straightforward translations of Peter Housel's 8086 routines, with a few rounding bugs fixed. The packaging is very rough - not even a makefile. Sorry. Just run bcc -c *.s, and for use with gnu ld, translate the objects using my gld. (There is a bug in the released gld. I don't think it affects these objects.) The .s files contain untested support for being run through cpp so they can still generate 8086 code (same as the original + fixes). C routines from Peter's original posting are not enclosed (things like pow and sqrt, and stdio support. Use estdio for the latter). The outputs from "ar t gnulib" and "ar t libm.a" are enclosed, to show where everything goes. Most of the standard math routines in my libm.a are from the "pml" library posted ages ago for gcc under ST-minix. #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: gcc-config.dif gcc-out.dif gnulib.t klib386.dif libm.a.t # fp386.uue # Wrapped by src@besplex on Tue Sep 25 14:49:00 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'gcc-config.dif' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'gcc-config.dif'\" else echo shar: Extracting \"'gcc-config.dif'\" \(1211 characters\) sed "s/^X//" >'gcc-config.dif' <<'END_OF_FILE' X*** tm-i386gas.h~ Thu Sep 28 02:55:07 1989 X--- tm-i386gas.h Sat May 19 21:49:49 1990 X*************** X*** 99,99 **** X--- 99,135 ---- X fprintf (FILE, "\t.file\t\"%s\"\n", dump_base_name); X+ X+ /*--------------*/ X+ /* Local stuff. */ X+ /*--------------*/ X+ X+ #define CC1_SPEC \ X+ "-fcombine-regs\ X+ -fstrength-reduce\ X+ -msoft-float" X+ X+ /*------------*/ X+ /* Bug fixes. */ X+ /*------------*/ X+ X+ /* Fix -msoft-float. There is also something to be fixed in i386.md. It is X+ zapped in insn-output.c for the moment. */ X+ X+ #undef VALUE_REGNO X+ #define VALUE_REGNO(MODE) \ X+ (((MODE)==SFmode || (MODE)==DFmode) && TARGET_80387 ? FIRST_FLOAT_REG : 0) X+ #undef FUNCTION_VALUE_REGNO_P X+ #define FUNCTION_VALUE_REGNO_P(N) \ X+ ((N) == 0 || TARGET_80387 && (N)== FIRST_FLOAT_REG) X+ X+ /* When using gas, .align N aligns to a 2**N-byte boundary. Fix up previous X+ wrong comment and redefinition. */ X+ X+ #undef ASM_OUTPUT_ALIGN X+ #define ASM_OUTPUT_ALIGN(FILE,LOG) \ X+ if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", (LOG)) X+ X+ /* Align labels, etc. at 4-byte boundaries. */ X+ X+ #undef ASM_OUTPUT_ALIGN_CODE X+ #define ASM_OUTPUT_ALIGN_CODE(FILE) \ X+ fprintf ((FILE), "\t.align 2\n"); END_OF_FILE if test 1211 -ne `wc -c <'gcc-config.dif'`; then echo shar: \"'gcc-config.dif'\" unpacked with wrong size! fi # end of 'gcc-config.dif' fi if test -f 'gcc-out.dif' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'gcc-out.dif'\" else echo shar: Extracting \"'gcc-out.dif'\" \(446 characters\) sed "s/^X//" >'gcc-out.dif' <<'END_OF_FILE' X*** insn-output.c~ Thu Apr 19 02:24:32 1990 X--- insn-output.c Fri Feb 16 22:56:29 1990 X*************** X*** 1156,1158 **** X X! if (FP_REG_P (operands[0])) X { X--- 1156,1159 ---- X X! if (GET_MODE (operands[0]) == DFmode X! || GET_MODE (operands[0]) == SFmode) X { X*************** X*** 1160,1161 **** X--- 1161,1164 ---- X /* pop if reg dead */ X+ if (!FP_REG_P (operands[0])) X+ abort (); X if (top_dead_p (insn)) END_OF_FILE if test 446 -ne `wc -c <'gcc-out.dif'`; then echo shar: \"'gcc-out.dif'\" unpacked with wrong size! fi # end of 'gcc-out.dif' fi if test -f 'gnulib.t' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'gnulib.t'\" else echo shar: Extracting \"'gnulib.t'\" \(395 characters\) sed "s/^X//" >'gnulib.t' <<'END_OF_FILE' X__.SYMDEF Xdivsi3.o X_adddi3.o X_anddi3.o X_ashldi3.o X_ashrdi3.o X_bdiv.o X_cmpdi2.o X_divdi3.o X_fixdfdi.o X_fixunsdfdi.o X_floatdidf.o X_iordi3.o X_lshldi3.o X_lshrdi3.o X_moddi3.o X_muldi3.o X_negdi2.o X_one_cmpldi2.o X_subdi3.o X_ucmpdi2.o X_udivdi3.o X_umoddi3.o X_varargs.o X_xordi3.o X_mult.o X_poly.o Xaddsub.o Xcff.o Xcfi.o Xcfu.o Xcif.o Xcmf8.o Xdvf8.o Xlib.o Xloi.o Xmlf8.o Xnorm4.o Xnorm8.o Xret8.o Xreturn.o Xsti.o Xzrf8.o END_OF_FILE if test 395 -ne `wc -c <'gnulib.t'`; then echo shar: \"'gnulib.t'\" unpacked with wrong size! fi # end of 'gnulib.t' fi if test -f 'klib386.dif' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'klib386.dif'\" else echo shar: Extracting \"'klib386.dif'\" \(439 characters\) sed "s/^X//" >'klib386.dif' <<'END_OF_FILE' X*** klib386.x~ Mon Aug 6 00:44:58 1990 X--- klib386.x Tue Sep 25 14:29:49 1990 X*************** X*** 43,44 **** X--- 43,47 ---- X X+ /* Floating point non-support. */ X+ #define CR0_EM 0x00000004 X+ X /* Paging constants. */ X*************** X*** 302,303 **** X--- 305,312 ---- X X+ #if !FLOATING_POINT_SUPPORTED /* force all FP instructions to trap */ X+ smsw ax X+ or ax,#CR0_EM X+ lmsw ax X+ #endif X+ X #if UNPORTABLE_SHADOW_MEMORY_CONTROL END_OF_FILE if test 439 -ne `wc -c <'klib386.dif'`; then echo shar: \"'klib386.dif'\" unpacked with wrong size! fi # end of 'klib386.dif' fi if test -f 'libm.a.t' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'libm.a.t'\" else echo shar: Extracting \"'libm.a.t'\" \(540 characters\) sed "s/^X//" >'libm.a.t' <<'END_OF_FILE' X__.SYMDEF X_f_vprintf.o X_f_vfprintf.o X_f_sscanf.o X_f_sprintf.o X_f_scanf.o X_f_printf.o X_f_fscanf.o X_f_fprintf.o Xatan2.o Xexp.o Xlog.o Xsqrt.o Xpow.o Xatan.o Xmatherr.o Xpoly.o Xsign.o X_f_cvt.o X_f_guard.o X_f_pow10.o X_f_tvc.o X_f_vsprintf.o Xacos.o Xacosh.o Xasin.o Xasinh.o Xatanh.o Xcabs.o Xcacos.o Xcadd.o Xcasin.o Xcatan.o Xccos.o Xccosh.o Xcdiv.o Xcexp.o Xclog.o Xcmult.o Xcos.o Xcosh.o Xcrcp.o Xcsin.o Xcsinh.o Xcsqrt.o Xcsubt.o Xctan.o Xctanh.o Xdabs.o Xlog10.o Xmax.o Xmin.o Xmod.o Xsin.o Xsinh.o Xtan.o Xtanh.o Xatof.o Xceil.o Xfloor.o Xfrexp.o Xldexp.o Xmodf.o Xstrtod.o Xstrtod_aux.o END_OF_FILE if test 540 -ne `wc -c <'libm.a.t'`; then echo shar: \"'libm.a.t'\" unpacked with wrong size! fi # end of 'libm.a.t' fi if test -f 'fp386.uue' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fp386.uue'\" else echo shar: Extracting \"'fp386.uue'\" \(35739 characters\) sed "s/^X//" >'fp386.uue' <<'END_OF_FILE' Xtable X !"#$%&'()*+,-./0123456789:;<=>? X@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ Xbegin 644 fp386.tar.Z XM'YV-8<B0F5-'C(LY !(J7,BPH<.'$"-*G$@1 (B+-FC0 &'Q(H@8,#AZO#A#z XMY,B+-V3,J'&11@T9-F+,D.GR(L@;*2W"J,BSI\^?0 '4F4,GC)R+ ,3(J3.Fy XM3%"'2IDZ?4JUJM6K6+-JI>B"3!DS:=R4 7%0C!D<+%P$/*N #XBV(,RP>1.&x XM3M@S(."\"4L'1$ R+PB*H2,GS)B^<M[4L2MV#MPPB]&\D:,#!)0R=,H<G>("w XM!!+%<\JP 9'CA8P8+W"@A8$ZQHW4.5C F/$B1FD<L6N8I@&[K0(%(]*8\6H&v XM1!H<,%0#)QYV;)$@6/SB6?ZU.8@B0J*+F3Z"N=CK0Z*/X>[=.9'H9,A7_UZ$u XM2!(09-)0!\M^ROLY\KNO=RX$"@@Q<,QG71%3^#='@/K1-Y80140!@AIE"/B=t XM$$<4\> 9$29H'8547"CA@DY8J(98"B3A!!%2%'&$?5H4D4!H="0@@P(I4A$$s XMBBRZ"*.,'X)PQ1-2$ &<:*'U^%QT982AGH+790="&=L9&=Z3XQEYWI/I6?E>r XM&?$9:=^3^!G9WY, >NE?&0?VR*"#8I01AYH5_H<AG!V*<08=:H;X'XDFHJABq XMCB]BE@ --!9A(XY)M!AHC(1J^-V/08)PQV1D#.E&?&;\9D4"/<@(@@H@])GBp XMBHE:N ((-=XH!:!N$678&B"\8889,,9:G!T*5,%I E: <"H."230:E%CP"HKo XMK9C9"D(=OR7@0F9XX.EL><[.819::I'!EK-E1*N9&V2Y,5D;."A0UEDZ*) n XM'$.AD0"!203;:AAVC"5'&6>D091F(-AA5!IAB,$&FNJR.X>[[26A;AMOV/&Nm XM>RP0"(6\\*4!0@\^]*ON7P\GP<((5JB+QV1B)' #"@FGP((*,<@ K%MBG5'7l XM6*&-\<:E?LEQ1AUME.&&M,$*&U<8;(Q&!QJ)U7$&&B#0\89?VI:;@!IMP.$Lk XM:YEFBV[![;YK'\5ST&LOOOIF=I2_<@ L,,'K=IWPP@UW''&!&PLD-\@4QW=Qj XMQKBZ@+4."3#L,+QS0U$W&5Y[/(*N0N.W][+-"I[ =BS8@+)]*0C=+6&&]56'i XM"]T&&'C#)9.!!@MBN*MYM(4=MNQ!:9SAAKH'RS$Y'BO'0#O2M^>^N^V4L_Q[h XM[\(G$,:EO8\@ PPTW"#T&FD4#0)^LO^7!IYP.SQ>Y2B[E[E;F[?>EQV@XR&Zg XMX*6SP<(8JH//>N?]PB[[\-L77WL"]>O^(N_YTX][\<=#W/:4QSSGN05ZTJ,>f XMN,1PO<C%34G<@]?W0' OP8TE=#?S65_,D)@VO*X-Q[/+',*V,>1!< 0PP ,,e XMC*"NS!"E=]NA&/O*4*RX3 8$>M#,TS HEI^!H 4@$!<(!A:0NX! !#$0@;K4d XMH(>KF8%B9KBA5\0E!Q"R(0TY)$,0>=8F.3@F 9,Q'NY0B >0".U>1)G,6-)0c XMM2MR:8A)BH\;\()$)?K-#("3G.4DR (E.=!A$-RC]\Y8!@L^R7P9]"$'W^!!b XM\H'P9_HBH?%,.,84KK"%:(K1]L8C0S30$%91/$H.$W-(O?2P+T 4(A'E2,<Da XM+K&)?H/!$X462OCX;%Q$P^(;W<!%S7PQC"=,H1G=@D:GW<LX;4S#&U=IQ#J:z XM"P:RS&/<!)D$E?DQ>V)$W71>5)!L<E)H2KK8ZT+WP_B%+GLE&X/Z5 #BJ& y XM77T)R_4 -II1/BUIES(B ^DP!^. 2YTI6&(9G$6#6;K/E!KLIU$N&(<Z$*V<x XM0CR8<!B#%[$T981&R<,2S^"L&!@TB&_HBYL<.AHQ+ :DAV3?\3 41!JB*6QRw XMT&@"\, ^CA(N813KEDKG.)8Z^ 5GN)II34MW.C*P@7;=I)R2*+8=<7Z.G$!$v XMP5/-5T[RA2X%XK2J^=05,S&:RZ/IPE_5LCF"&M2 8OI:UO2>U@:F,(V!9\#0u XM48Y6EWX9IY_BDA:%7.2"&WQ4@<))PQA"^(,_IO-T(S!CX] P4;4.S R>@T/3t XMG@82Z_%SLB!H@SPUF\,AOF&$YI*!&,)Z,#8D %)$ $,+E=-WR5 #NH\+9!2s XM*P/6JJQXL#4M:D% ]NZ-K>RC=0>,>=:KXSA=GFC804U6,I$2LNX7IT:+ N:r XMMPQ.C[&0-2+1G(:AHVE&7<8][!+= $O1@LTNTALLN"0*V0^&,+-J--<,1CN\q XMW5+SMC%8;&,=^=ZT+:TOWJ5@)I45X#N$0::PM=UN>YNRW G-:4.TSO66)=D[p XM7(]IGWNDM!(<7-IVK[6X'8."9ZO:#^-770E.YSKSJ]_V\N6>BLGG'"W[Q1$=o XM-Y:R5!?)\+=BBH%P#6,A(E&F%SO+'I$H@EU#'NP(S6@F +I+%=I<WB"Z$0W4n XM!?,U5T'#BC[CJ<]T%%MHTSQ)9-GU<Z1$*^Q,=TPT%AAUO'-PE@T^F@<TL0!Jm XME>(JOE1,L0R_MP?N]6%4^>O#4^&3E0$='2!QM]J4T4X,)6LT<?VHZ&S6UM$Ol XM@K2,?$MIR4&0P=Y[=,D8/.EM>AIW]Q5U H;;6DK;V%E^I5@50. #0/<J+)D-k XM@^RN5P>O<#6D?!9:S&9&P1BSDL8_U:*??W8X%;LVKQTNL03K=MS=2KJU*/QUj XMC'9[:<Q1.]K=QC8,M!UM4E?SVPOV;;83 &W[VA;=)&:URM8],CD0=64I1 XXi XMR:"&H7A.?K.;VEC[FK4Y<_F!C#:QT);=%T SW%?QT_#A$G!M:YH:X2RX=*B-h XM1X;CAMOBV/RTB;]M;I!7.I CY_AQY=W'Z1#\X'9(W_I,*S1X%KL.,L;+/ON)g XM:Z/:\"@NH"*YL)FPPH$M65Y!LAOJDH:;.77B15\<-M%:G#O0S,!P@ .7[FQ(f XM.\3J9T^KPPZF+C3A2&HL\2&#&T[0ESE@G>L-Z^G7(7R]T+ A4XK.7L&HW#&*e XM%5.- L[7OL[VKX -[(MZL1J\]J[X\,@0#^*\%QWJ( =P_06-7^28Q#X&+$)Vd XM/2X='#/-B+4&KAWL78ZO^4D#+'G*6UX@F/_/JY8X<*&7:RNXS[WN=\_[WOO^c XM]\ /RAAF=9#@&[\G'LG(1CIBDY PGR0F.<E+;A"#EKPD!BZAP0QL((/FP\0&b XM.CF^^'WB;Z,@)2I-R0KZIS+^]KO__;CORG[(,OQ,N04N<J$+1?.R%Q_R &-Qa XM,1=,-V-ZP1<@8#-N4"]>U'3@DC2,03!N 1E',QF5<1EF P*<X1F@(1JJ90,Oz XM,!N]P0>_$1S#\17&@1S*X2C. 1W2(2;:L20#,B55HH+7<2590H,)4S%><A_Yy XM41Y-XA]E@H,%,CT(XH-K\B 98H1QH@9S0H,<XB%.J"=65B(G,BJ LB,SDBJ(x XMHBA8V".H-21L4"0XR()) H/LX2108H;.,24TI(8UB"0WZ(,YR"4].'_P B9Uw XMR"38<29!*(=#B"9%.']'V"9OXH1Q8B=)*(A'4"=WDB<6(@9\4H5_4BJ+,BB%v XM<BBK0HD[TB@^N%N3(@>5,@(^@RF_(01)$ 130 .[DD(W8 3EI#NFB(K TBDIu XM- -&X(I I#OJ\BR;LXMG,!<"XRSUYQMNX70:%%/P@0<], >* 5LTHTMW-AX]t XMD'1TT!GXD4.^X0+U%U9C,%;I\3&$,C5B@3^S4B[U1P/<.%8#%(Y61HYF0 -?s XM8(ZS H_H$1 8X1P;O10,M( 9YD!D!J'^8Q8_^")#Y5Q<HAAD*<([Q"#A!r XMXQ8$^8]C<9 ]C0XT(\2"1^*L3;JTHU6,T!2TX[10W-N,9+X\E!%T 2Q$B",q XMAWI8\'B1AQFNAV>8)S+ A#M1%H%9-XH@, /=MW/*8D]L8S#N0FE$&5U'602Ip XMYQ8VUWJ51Y,O)7O%8GH(8Q]$9Q^% QS"<2DF>!S)(36:AY4C("J3V"(MT'VGo XMHH69:)8S(HKYE"G81#DTL +RMCJ<XSH\I$'H]&2GDSHY]3ZNHT![J4XK<P/#n XM0SGJ9)/V-CE]V3X@@$"CH4!&A@)YZ4-IA0,T%E AASMS69?$5$AQUURG!'J,m XME&N0A%$EA#C!A >MB$DO1#DQ)#0S5$.U9$^BR5RI]#3,-&/.)%U7(TM0)$6Wl XM5$6YE$5;U 9=]$NVLYKZ]IEI=$QL! =NI$6[V4I,YF22TYF<-AT31SDC$(M3k XM<)'@R8\SL&_]-F0,% 9S<&>&83,XMT$WQ%[24F\R]V8M"2]^ETF %R8"9S5!j XM-RZ=!S.X=$6=%4 "-GF5]QLC&5:)=SMOT9_.0AAP$#UA\1OUAP/I:#7?. (Ai XM.8XCB59%<Y*CD9(KV2P>B3]CQ([C>*'QN)#E^ 7U^) @<)$%B78;.3 #B9$&h XM*8#2DI1666DW13<DR)7%X97*P7&(0SAC*8FDPI80IY8Y<I:60HIQR9ET:5MVg XM*3ZEM)>F@SJ.&3[P(YC[ SS_HS_W$SQFRCMH>IAEFIK)LSS-\SPC668+U$";f XMR0+:*4&>%YJ5N4&A1V@B)$D!1%:6Q$()X$(Q IMXT$F?]',XI$.W*6@H59U'e XMY$J^>4?!>113-*"ZI$6\A)R^I&/+64EEU$[.:4QKE$S+%$?-Y$IW)$T.DZ>Ed XMUBP<XYWCV0+@^3)0<YY]D9Z.@4T#5)XM%EF8=2^Y5#T:%DEAX*@4Z1@N$ .Cc XMM3^Z16)S67&_%5L+M@(?=ZW3&BES67+<6FY7RD?%,V7^":V&]63J,Y<S@*6Mb XMDBR'ID]U=Z?5ZJX'Z$DU!&&AL4;%@63%D@=&=C"*P09:U";3HY!@M)AM-I<?a XM)ZK9Y&KEA7<[9E0.UCC)XJ]*9EF_X0(R@$?KPG?X24C/^8SWN90'"'F YI2Oz XM1P8UB:1> P7@F)^&-!=6=Q0^26-4Z9(4TY0R^927%Y5B,'L0^I]51"@LBJ$=y XMJ8YC)#5"$"()\*%E%Z(R,Z(J264)&2/YB8^7$D(* ']>^[5@&[9BBWO#EP;%x XM-[;'EWP:$7T?X7PG41+/UWP^67V\]1(R4 ,S4$ ;T;9Y&P/AA[;N5WY'P1'Kw XMIWY+D7Z F[B*>WSRQR3:"!9P@7\\:D0%Z$, R!?XPB\(J(#XX70.V!R.$8&1v XM08&6@1G\DH&?,10<Z($M QN54QN\@1N^H94E6*0H6"YC&!U^A(-.$B4X*(-Nu XMV![H$;SNH8-"R(-B H2!J(=#F"9.V"!(""<BTH1*V"%,Z(@/$HE^TJ0Z(BA9t XM:"BJ<H7>ZX6S!89B*(=DN+MRB(:^*X=L.(-R>"5<0KQ;TB7'BX?)2R;+.R!_s XMZ+Q&"+V$*+URDHA,\H1V@B=1^(C::X6:*"B$ J4-S"CD&RF?&(JC*!RE>(JIr XMN(JLB8L?H0"YRL&VZ,&Z&*&]."W[(8R0*X+%""['"+#IL8S-V!1$ED/1J(S4q XM:(VZE(UERZ!N\S6-(S:!5S;\@C9J,S!7Z3$20[M$>H)?"75B29;<>Y9/"KY;p XM6 12ZI94*E8:FJ+C-5!E*X]I@(Y5BJ?::J]@BI=;I6CWYI=9&J:Q$W"E13PLo XMUBK81:P9=&?>!2YD\ 9W "Y2TV4"XZ6*63*I0\CT>L9Z^IF&U*>DZ4')BIJ3n XMI)JDVIJ'FDDPM*BRB:^@=$.VZ<BY"4=%Q)N6RD1.E*FV)'3%N4N]Y$4.RYRFm XM*F CBTS2J4S4R:JDS&0>FYV*/*M):S6VJL&JZ!:S"2M]ND2F-4JJV#B$(5ATl XMP 8 RT&=PX!MAE*8*U=Y811TH&8G&LRHR*XR4'8\5Y%/ U>8!1;Q9'D]*0/]k XM.&'7K!EJQB&'^@9O %<;"ZV T\UC-)[:.LS7-5%O1#1&0V8&!L-^#"YUMLT;j XM=64=*P;U1:V]#&+Y9<>-U<=_C%G'VH!%!'F52P=C]UHB)J[6RC)OC&QF(-"Vi XM4AP!QI,H($3Q.D>)%A;'%25#BZZA90;1JL\?P\\RX,]]?'8@@ 9"K*]W3&%Jh XMI@8#XRPS@'=SG*TC/='_W%YU(%D0EM$4M-'\QQ<HAJT0O:W% UTT337^V= *g XMH,QA56\/J\EN\6-C46"2@:-'8T3VA$U.O9UTW=5V+5\>*];D>!PE TX@I =Wf XM <UW9G4'>#S7)6:L-V"R(GH'^ :^YJ+'D:%/MK3JTK0N K4E*;4H6;4L66ERe XM.:Z8\\9J?#ZDPY=>^I=WV79QS*:N=:9M.J9T[-H A#S>":<&])AS*IG[]$?9d XM)*O5M*?U$JE^6IJ1+*B4]#&%ZIJ)BCNQ2<R<[*B?C$BC&<J4VINF'$L?54N;c XM2IP$RLJ@ZLH)2ZBE*K*H2LO3*<K'YDS:#:N#(MJMQIU<G#PA#-V->LQ3D\R:b XM$:#3T\R' <V@-\TW4\U"],Y' 0?:S,UCY<WAN0(^*<[&0<[6@Q<0AL[^Y!?Ka XMW,[IG!ER%<^+.,_U'#OWC,_SS> XL )X.ZP!+3T%=F :>=$)?=08TM<XX-"Rz XMG:TL1](4W5X6#2Y5?4754QCQP=']Y]%;/6+>N@+@JN.'Q#DFC=+'XM@L[=+&y XM=A>)QF'9ZM7Z@^40_=3J(M.W0WOGBJZCA+1K-JHMYV-A &2.?0=OW=:,-6-Sx XM76EUS4>=%C=9;M=T#M'@>N<.@^-Y'<8YK;0?,R/B",9@@0,P*MF*+@,.23$Tw XMFI$4B5GL7*/^Q.'?=7)6VK#C#4&N1EX@#E<4XS3E7&05[LY@A^$Q8 ,:?NF9v XM*P=J=FIF7'&_3-[( 4U"TP(^>0,V@)EIM:Q+1Q0 6P9V$#U$2$/T=-A%(HZPu XMU&1XAZCWEE@N,^J,U4]"7;"8<8$&J^LRP.N8::!YM<[>_DJA+N)#.P-+_4S0t XMY+&(FM84$U*>) <6%AIWQML3!B,_ (H8+9ET!FD/N$_D&AJ$&>D;L^73!3Ws XM!F;"5@9O!&'#EAE'[09QAF7ISF[XXE44[[$-&K*GNI_R\;&*EQU@(\1PD!AGr XM4!@>Y)X_D^GTB=H*[Q8^AV3I=3-%$1;]Q(R41\/7F"%;21Q.?*2"HP>+.K]Nq XMQAT7C'=A";/"2S'=14%IH$6-C?/.V"]$4P<1TC:GEY-Y<5(J2_5L8/5?U]]"p XMFY0BKWJ]^BH'.I,_"UJOI9!A#*./+C21OJ,""6$1"9 &7NOK^,5/6S2)7'%Fo XM[^K8_&)#/'A?)#G;P[#O-M\#E&]-ENNGT3PT@ /;-_EWA>'!3@?#7NR1J75Cn XMD.R#M>PC DMSQMQI/5Y-5/#F#NVH+>W\'=?6'A#_D>W\LNTRX 4SD6P@U1>Wm XM/Q/DKOIG(.;.@@,%Q^Z8O$EJ3:<!BQGYON^@X^_T/.$"3_#T;/"LWZ4O?_D3l XM]O!I4"\1/_'$KV<<5246SU%:__!7;RWI5$GF0OP,"K) W/''Q)\;7_;S,MPEk XM_P8G'P8I'V-F4\@NSS'%//0R&A!0S9-X:R7G/2-L-*1\GI$*9 U#Z"4 HG>#j XMCAX44WKG@>G!JZ>G+*0>#?,77^_J':5OPI2X7L\"%R 0[#D=5S&5L%Y1VB9Di XM[R4%OJ!50[K>VOLBDD<!+*B6U%2$W[.0 Q/JBLP.!:"4GH 3V!2= B3LHLWQh XM+9S%2<,3P _FD)4B> 1SEJL9.$^P:RVN+<@%NZ 73 C#YW,@A"^8>]36\AD)g XME25NP:V3@!+074BH6Y&O!F@$[".W6,/?(H.\1W"=G\/%?JQ"X<*#@# 02H3&f XM91T>%[.X/VZ!(E&N(O<X<(X">2.;RY<PH)OS@$*77QA=E*%T72#4M8%& ^N2e XM :Z+=<6N'#"[2) #O%U&@@6I+SO4NX(7\+(2PTM+&"\_A+QXE_(R$T1(34 Od XM""' F! !VQ"+" H9(2FTP,I2]XH1WPL3B2]D.,&$A"@*0[^0/:2OX,6^7"&2c XM@%]V2'[%H6Q8O_(0_]H28<(6ZB]<"(AT(9MP$P(,$=$).8' AJ$"BQ!2;!E:b XM(@C&A1Q8,Y04E&)*83 0)LPX6"MZ1?Q0%HFP6P00=Q&TD!:$<!P90F(4]EY8a XM,I)A"K"&E8$;-HTRB0[#1B+($/JPT\/QIH<0NQ>"YP(9,<-S]21'D#(<#; Kz XMH4*7I:3B8:F@8FG)BJTE+-:6+&"MVU J"M'5 7E4!\@8:-MT: PPB90UUF6Zy XME!MS'ZN-3NT.TX*FP$91FVI?9R**'CYVT&;47AIDJ0, 'K*LF,@^CG"[(-2-x XMN2P22!9"E)6;6DV6K-TI*D9%FSP9I )EDPJ762=RAZEHB7!29=_-4[4RY63Kw XM8MG?@4ZJZI:-LKGXJBJ-XK-S\DVG?:=^:-]J"'Y#:@E F9V7M/'?HIGXH&;Jv XMPYJM/&R&X.2 0BMQ^TR8.;AP5I+&V60I=13N:5@X7+.L?%*K,W >C@J4N^#Wu XM508=, N-WZR?J3@M@M):G$&#<<QOH3D+LG;C\!JY@FKRZ<7YN*=AU81<&B!Rt XM?.&C<;DD]]1*&E Z:=(CRJTTG-'28$P^LG)?S@W,M&W"UYZ50[MIMI&^B<:>s XM)C1^FF$3:L.-J#66J7;4DAJ686IHH%NEEGIU'(<5A<%H0$ZC#;FLQFQ FG[Dr XM+1'MQ#P9&A+FAA99,VN*R=T)#;;6YM[<F)%K.@2;\,=991@39,O96$L-</"Uq XM,%CCPDQ@&VQYH+"-!?62V([)8ALRC2W V(S(1B(IVX9B6DY+LQD'SD:U2E09p XM VX3)(T-1=,6<U#;46QR6DI,P;;7IJ9BVY*T'TW2M0RJVU9 Y%0"B6,:*Y%Yo XM)@'3R,*B(@D]QRT,G$52=4D.7G/3)FRQDXF2M^@E44E<'(R52HE<JG6'RKJ;n XM%>E4QRDYO3)2-4QDV7F+3NGMNKFJ=>?>@.2'K'4F;I/=MS:)S"+C?IN,S@S m XM2;/#@!GO3(';C/RB,WY&Q9BK1B.$FS#_SIR=NG2&X5SC/A%\\.RR?3C@-^+2l XMHXE#<>5IQV4&WLCB")J+ZW$@(,8)1Q)IX^X'H.N/LE(Y D@LZ1RAX\^0CB$Mk XM6RTYJ :FGEQVG!52CCM2N>\(TXZ<N-)RUK+.$9?B >;"VL") 61NOYVUFY3Fj XM)N2:@W-CP<V] ;@6Y_#"G),<VC*^W;4DMZW\G+CJ<Q?GST$TEG-->&4^(W3*i XM@^^1R$4W,!V=/7(+<V\B\2A*IZ/6"*:4 UUQ\9'+3Y?ZJE_L&'713U2J1E17h XMU3X"JSN5L/'O+;[K5U0<4UK9?B?)+GB_)4+]0ESP WF)(S_-,OH'LNR?1\1_g XM)@_E/;;WQ/(F5LG,&Y&) #ZVGQ$&;%X"G'H[CXF=PB>F:"0@!31Z;^D"1HP,f XM*#2:7MJ >OUJAHV%%"@"NX;6XUD("@56O;&P DE/SL(.,K $GKT:> *A$MO+e XM@0,S1D&ZAAF0ZHK=HYMYC_%YL4/7]XZ*IIMU]LKF&+A+=T_(AN$#5D!QVIC)d XMA&<R32/W6YE3HV4:O(T7__RDQ[M/-C-LX$S]IS-5WO\[<XP3:/:W.64 BR8"c XM]( +D.>9@2;V +.'T_Q&%3!JLL0",373)@BPFAPPZFE-KV?U<A8)W'J(H6URb XMS;#' DN/"T1*;L-FVAP:""ML(.QY*5=+!Q:-]W<;'U1YE% 4:@A20228 )0@a XMM_ 6E<<)(J0H>*=&P/:T@N01"R(D0<@^VZ?[_ F?SPR<K??Y%,P@VTJ#;XMMz XM>00:H!*Z#QS$/G(0;_E/D 3:, =I)]600\2+CYHN*0" GV@73 AC@5MA,$0y XM8=W</QT-!/R?C#$X(^$"\ER*H1(^!DQ8@4S79N@,J<ON]"33@ -"T @2#DLSx XM!:$OW44-7Y"4$ _$*Q;BH.)EOV@AD<E??<@.-:_]-2%V831<$$N(>BDBZQ7\w XM$ECV@H=,2AXFP_ 5P7@$#?I"S_!\V:%IZ(+(A#6D$CD42] O+.$-ZP,X+*/\v XM@0\14>?0O]8H"!A$Z- 0/2(E6L""X0'#7I (BFXO>?C 9"(?O8<53!_"I?'Du XM#TE80 Q/ ]&0&L03)D&%406%"\;H9R"C&(8Z)2)%S&$2D8<)!^KY+C+G1VR;t XM-_ FCA%#UX[BI]$2#HZN)5&:=N?IDE\Q4WZ-S=7,N&?U4<2%&WB<5Z^K:+VBs XMP.8"!C/Z>@"):W*IT\$RIIW%8FW50R[H&LR"2[^*QO.:V^1$[3V^&3]E0(NJr XMIG#O8(* 2I>1!N?=M'04*4*V4O2YLV1?,5$685)27)A'E1B&4O*TG7]Q;(1-q XMMWGXX@:#FTNKK@7HJF))(/L"K_(+D(5?,(PA0STZ0R %G>K*S9"D@X48JMR,p XM 33C9F@)G5-J!JPIAM*FW!3O/4S,DC U4D% 8GJ3\_ ]'6F2IM9U\&SB%"?!o XM0&A:3K7(.6ULZ=3"' UV^@;<:=9;J3<U 9Q-FQE/TY[/>IYL3W*\RGP*+L\(n XM5LN@_S0,!-2C,%"1J4'-APB58AD5O^-0\0)$]8&VQT()!Y]XHG#B2"T:(&I@m XMF%029;5@IE'B.UG"3%:VHI<F86EQ^%1=1#AR++P#;<Y?RLRE(:6RA<?C0FD"l XMPG'94!'U**75HDA,6T9(&CCI;JX"#L'J<D+D\:0TTG1OEM*M>DTIJ]P4&G>Ok XMITB\.-;PGD9FO: [%9[JIV/B/%D6]/R).TTTNL9]>E0985T910!0JB[4EV95j XM58N^,SMZ 3^H3*EH.OP"&S!69 !@P0"!5WO&!46%1V8NLHI4ODE2>>1)+5%Gi XM[O0]UN1G3UH 6) >+[4XA$GT&5IEYGDKK2U+J.+&!N<:BRHQ::T&**DNU;B0h XM!KQ(7[A9.R>V?IG96E7%24C8=\4AM\Z3>G%G>BO1 *["E;CZIZPJ/=D )VTJg XM%.,'*%@?B#V%H!:$H! VPDK8]].-SL+\G+ 2P7X^'_PY$M8@&_1)-N -NH0Xf XMZ!)>@MSB/@<4P_($!9H4&"A6^(,J-L:.'PE*?]H 6["@BI ,4*;437$S.<Be XM$:)K F5""W2Z4&@G! $>B#;(+A%$NV(H[IJA+8AWV=#?A4-A83*2A3U4B-;"d XM]74+A9"!<*-'B!?*T0MQ1-]H,+Q>3G0*N<1ZR SIX3&THIVH?&71,GLDGL0Jc XMU$/5\(:"42L[OV0A'=I!^$L<0@DW*C' !)@%8'%4"<W1,FO &I$3S:-4:(]6b XMT3ZJ#"<M(,V'6FP?<L\U:RI0A1^E1,5H5M2*J$=#;@;4TSJ%X5+DBEW1*W[%a XMNQ.UR:*Q@07WNI(T0P!I%KPH6O@B8&1:M)&-+1>^=FL<S\4#I+#2$KM3-F %z XM5(&1B<E::5NU=])B1$P\CT)NK(VRQ5(+3V9DAHEC;9<M'TDLU9;$R(!KJSC]y XM*K@AM\0%W+*;O)JMO*VW43GBRMUB&_W1;N(-NCTW\-:^W-MYHS]:W@W8M[ECx XMVKD%[O*+GE'UZ&VT5 H&DA5@!9CM"W&VBK*&0%LX,QSI*KLE,3" X6);F'%7w XMN2W&U;C?EMY>W$@Q;AMNN>TXY];DIEN1NVT@FLK%M^8V6[U<?AMNA0O(?;<Qv XMU][.W(_1;W?,O]VYQ517$5P<-7$5*[+=M[5NX<[<C9( &E%^2P!L0%K(NKDDu XM;Q/-B?HT-Q??JH$PT'2C;<F(NG=JW%;=I(L[2N[BV[I==XE\7:F+<3+NV)UOt XM$"3C+MVIP76=KAI8NPK 38Q+-'<%_5,.R!115^&.D1:@/\KCWU4 =T+P\MR-s XM]7<7*_R+%^8-\(!$(D9XT@9)Q)RVLZFD+% *5#./W=@\B<4&R*S09!1V1L_Xr XM&8B'I08^98H7RN;8>Z?>5?)R7M/Z-A62C+V]N!?#D@$[8&''8.YE"!H6#;JMq XM#JL_,<+VH5LC-L32 !AP VH W0(),X#7I=C?ZQ!8+(SU@RZ6^FK?K4!CNP+Op XM+1<X=G+I6 ,4'XJ=5Z"$S6&$"MD2N@F-K.H:#;$K%)H&^2L37&B358E/+'=%o XMV?4U9=U7E=VA.C1^O8<LR[RV+"OLLG[HRYK#Z#5F?>$Z1+/N\(E&6@;&9GF$n XMFZU$;2G.!@GS16>YJ)3UHGJV#?'9;:B'BM>?O5]H HW^H''H90WM @Y@8U8=m XM&B)&U X%D9Z M)RV$E%:*EJ!.='\\428UB9RS^X#*CAM%:NTBB+4(HN^T-C*l XMK[Z8#*NV4[3:&?5JE["R<,)3I%*$,%J$!T98031ANM99_*)ZUFMW+UOPOL+6k XM1T'>^S<V0F(1*SQK(_5R1/?@VT[BSF*$54UG\(R$XMLH1[*MNJ3MWYP3-F8Dj XMOY10?!U*,DI"23+%)!GQ(IYMD^Q-5<D#LMNP9&]#G)4CZP;)0ZQ5B*3,81^Ji XM34N1CT1L._J';#/%]P,5\X_8-J@&"&ZSDI')$MNIO_F'[54%X5-M\I$%FD Eh XM)B/Q:BJ3:M&YN=+H5IO8)$*15*I$+L9)NIAC.AV?](NC-575LE4%)]D;=IHFg XM )?2D$NJ*S'1G-CMQMG$[2Z^-='VZ$ 3:8_=[^EAR,3@VY2N+09-P\V1C<6(f XM4Q8EV:#ZQ8:JW2&_MEJ,20E<3,;5N)0UNV9,+LE(G^RI@-*6J;=6=9UV&3;>e XMN=H8S<VEN4LNS:[B))=R=QPWB"?3_<XQS$O'Q\8?T=1FT?*PWT*M-\KO.MX0d XM-%('HNY[49))!7?\3L&0%/O4>NI.X_4B@<L5 -7^@O503U()5H0%]C0&/*>Cc XMDD\D>6)25T@58!I*2%$F!?(H&25HREVG*]&!&!(C;U@, .24[8)>NE,9>9'Yb XMDWGR4&CR9;P92"729.-\:6DTL:KYQH@QD<U=]??>JNZ'I,5N.=.4C%H<ES'Qa XM",@(%,-<A3V4%E_/W5^!'I)EUA+4HM;8NC)4QA,<B[Y(JVC3:+R'@PF6CEDOz XM&4AP8V+"5;II,"'F0-X7WW$?24M^I,P E\DE1RP,6S<SMTG-6XZK)3F[')JCy XM#5_>EB5,#=P8ZE)VBL-@D0/("$:P)X'0CAF-)M8<T'!Z%(35EI8ISEH.NWF9x XM+L-E#CEUH[.FX<9Q&2_/94USF^6EJ(HTG5DU)XM3:9L:<QUXRE\9ZM*SL6;Cw XMRF,-R!I;!BP?YP@D$/1=/$TT'$,<9V=99Y%Q+LJ=SO+R;T[DQ6=NL3-UQCC)v XM=NZ:V^X,<MJ">N8[D3DPKV?PPB"5$A90%WET.)['3 N77,![5KR5.;@1LW4Yu XM,%P';<59SCCCI)QMO*+17*KI=.HC#* !;$*QB :M^KQBB7&TBJV<,>I ?^71t XM(" S%TB:@@9LBK%U#_F)<TVD&V)("%\=. ']9"X,%KN EO..E18<>F=VPBP.s XM-7J'&TL&NRX@!T2KC8>D(R]I-9PB$0X?GOOTHS:>R=*<\E3M=5ZIR:6_HL88r XMMB:KIX)7Z+D#HNI\I1BVZ407YO)(8"6/'@ <:$U114C8F3[][GG\GF;##8A/q XM/%$$C(![L ):8%<8IO)[J,MGI;[46J J#Q:PZ@*RX/8]U;_WI F$"ZM]@Z]'p XMX+ >P<.BP>4! UC"_^0^I\'Y-A_MLQ-4"ZJNOJYB<+58!_IBL^^O/M8_ 84Io XMB 3P!9KU7] 6,V 7635"T:R_P+,V S- "I8A/$69#D2BD1Q$#P=T:SCPK>-&n XM&F(!+6-<EVN'T8;0M>4 1%97H"4 5:TM\( 90# *:1=1BVHM&*"UM Z0O$4!m XM\.N" *VUM<B!U]@D7*OKA$TYTC7"KC3M>M4M;/PAKVE%03 #]AI?8P]EW1R8l XM=;-N*P0+6_]K+$FM/W9++M@)^V![ZX3]C<3UPP;7#;NVO&QSO3TD]L,>U:;%k XM#(!LC'VOHZ<"L-AF(6.'%2P )%S2QR !MZ[)X+H=\-C:2"%A+M#VSF#'T4#Xj XM?/*/C1#TFF?G@; "!:K %$ "G=1P)("N_;4[AKH@VV";V#:!)[ IBHZ%#A9,i XMFX,P/! P!)C 4;YC7V1MM^TC+0.9-NS+-6%!4MX0!(0?]H4/63J:98ZHBR!Ph XM(A+'T6Y%MRAR&X$$P+3CPQSXS5I$,C&CIMT9GS"X2"OXP6DO[L8==4@ Y);<g XM+$1=#($F,#%N"AU. $H@""0 +&"*CH"Z4 )"( %,@2L0!,3VZF[=T"%B9(?;f XM'01<!.U. K9[=_?NH3T$D, 1>!A8(&*$!W6!!9KW\W;="F-V6^]W$;S1I@(Xe XMWD<@K#!N(N"X1P ):#*HFW)7C,MM%+0(?AO?=^-\0Q/4K2Z*MI*2WR!!::MOd XMO+C#$H#]AACF&YKD[R;3++ZV%##:(\ UHH 8P)-C0*(QX-#[8RAP!@XN,X>Zc XMT-MA6WKW[;QP+SIC6WL:/-:#TZE^@@(,C ]A+$L#V0Q7=3$%JD#N#@\L@&HRb XM[::'*<R 9O 9-"SJQ3&> RZF=P(($<\[]3#MU/+6!H+R,U".K+&) 7@W9I+&a XMT@BA"F!0M6LR KE5-^M. #!\!*" C$!X';BV(MXN@@H\@2] !(Q@$<@O3!ORz XM]+'$/3/ZB4PAV@>\/\3P"YT X+<<#^"W3GWO*^/0KW9XSJ 9_._J*0$GD*G%y XM^!=HX4* "DB!(# $9"/3)A+VPMA$.9"X@M/*N+'B$Z-N2W!#%[O#^!B_$43@x XM"]3NKYT$C 58.%(($AD<+3) NHV*E?EK+SHN'+=G<KEQBP'Y=P[>GOO.DX$w XMAH#C?ANZVX5W4ET^O!4 T_[2?>$\+/ &G@)T@'W0 =!!!_0'::X=3HI8X!)Xv XMA5/I ::#EA6 $P 232 (,(%2$58P. P_#Z.;?&?Q\UW%$P 5(!"R\7Y#$UI-u XMP&%WIO[F4B"<C_,6P<FO.!-@VT5 "AB!?WX%?H,A+^,A(@:$%25PQ1'Z&3?Ht XM8QR1*W)&3@46^A67Z(N\D4/T+P#*13GR)N6FW*)/C(X^RI% *3_E"L"0X_,Fs XM,,ZI !5@ D5 I/]P<-[27WH1^ W''$VTY&2.!19X,P\/"]R!._,D ,VQ@#2'r XM M3\-ZQT<5XJ4BDMA^5862R55_T1-/PVE?D(U0<H-;8[M ;$Q44+"09*"$P!q XM*7#YYL"4\6.7;:S+#9RBOL."5X \C8U297545X/>0UH!ERX RU0?7/.ZE4 Ap XM'^,KO:;#=/5]A]**;4(!K%=2)(89@VN2P,H;#4W@>)"4!R[, ;CO^^$J(@&\o XM;K2-Q3?XR;O@;+NSQW#(>\PA)BUG N3[I@3O6?ZU47LN%]XPB[4C =>^AX1Wn XM]);M3&"8MW(F<+:?0";?X,"9A0OS<YZ]E8 OKP(G(J /]"=P!70JC7@"R)T(m XMA)7?G<'-=]+6WWY[P!R:28ZF,UWL3@!2 +J?B"H@MG&W9C?C<!NET%9U\<ZGl XM0#S/#K;]=A-R\"[>B0!Y9^_PO(XS 9Z;WOD?7#G/0T'92<5#@UF(G<^XW9G:k XMH:=W ^\&+*5WS#G//;J3=_%-!%)[\%:W-\*7*ZF(BLA7>7\0[KD[E@]O=Y[?j XMY3D,H.?01+YGZG]N!90[05??)QJ$ *S!HKIBA0+*/W<@!/P&ARZ^&_=Y.-K)i XM86DC23A6/>)ZZ1TP!@J9U^\#_N.%N#]1)[T&+![COB!3F89@<N@*'97G=N&Uh XMR5O ,J_@Z;Q\R^\5(KG5M^7&W"#%NV$1;EZGI,7_UN5?H[>W[A\%!7R[V1[;g XM=GX/J8L:\1NBNXMG[G&/:0NLDQW4A)AF2 Q,]:7HFK$0[R($X][= 1T&A)4.f XMS^6%%VAOV]T;G>/Y.9^]ZWSKWNQY_L.#=T/Q&UC\G[\"CXYI_V9D="K;"GJRe XM%[$##="!%B"?W@CS]">OO'SK#RDP! [XD5B\X+W75_==+^Q9N;HU$;[<AU/Wd XM=1[D(^H@S]3A/;K_!H NT EZJK\N TN+P,<+ IR9M*)G*8W^TD=P\WV+BH#2c XM;B=,^U2$!?IP/60*I>_>T$'.)PYY#\P]?=C>\Z1> 9#TCV[20SJ(Q^+[/8$;b XM.@.>VN4X*Y?ML!R^RW+>_M1M.</'Y;\>F&?X\AU1J[?S]O!TG*%/C*6^SV^Za XM-Z?I2<"EP_1)/]M3N[&]\!.<F6MY"T_,MW3*!_.GO> K/?@N\+T\!7?@6EZWz XM$Y!_K\EK_I?'^;#[N"?W:L_<;_<5Y_A-_3=@=(H^Z85Y;=]#Z;U60,7M#BTGy XM[^#!Y !_DX/Q8)[(,SH5\.@KHM^?\J<N\VW[;G_E!5^70PR$[_#5!1"_][I;x XM"(3X[CWBIX#<_^6OF](K_!%OSJ.WIH??S+Z=:_R9GL^9.C]7^BY\HC=RL _2w XM*SK/#_@^">UC_+-/]G7[PL_UEQ^S7^\1__;U?-P/\32?P]_]B)_W1[]8JOC;v XM^^GS_=!^SNDXX(_> 5SP'WUP;OB+P(Q(Z9_<"4!Z*2#IC?Y(U_U7(-)O=&J_u XMW%&][W?G8YSX$_2-[N>)OO&'W5>\^1?_WZ"S6[+6YMI>.VV+>LY>[[/_O$\ t XM&-QU;W"Y/1:N1"T!V7:AEDUI!I2W0[O;=O)_&X0$[F@VN&]&X<X,AYO_W07,s XM_^-]_LU_X+7<0G?YGV_!P7]HE^.:'HXG #GNP^WXEC[?>?R1'V(Q!;_[/SN_r XM1>H[=* /)!H_#KRY^C 7_C7\<8=^&^1^@X=*" /)!J_COPY.O 7_KQ<G?M]q XM.M[AF?WR=?:YVY!+_^6/Q:]XX+]%Q!OY?P'ES]S5=_X+6@(#8(6[AG(]8/U_p XM:1;PV\23^<AMYO4%FI=,2)Q1UG'2#<#'//WVW[Y>+.'O<[^_M?G5^]^* W^?o XM>YQ.W+1?#X_>R@_7R/%:FVJ-.*Z!%SJ@SAJHA*$#6#D(N!)IA?P;<PX.V9A"n XM1;J=3P/7P L=<"1TP![2 =X[NU>1L+ N]=_6!@&0!U0 +$"# KJPHU,A6 54m XMH( \X)-T0!X8KN*D"\N /'"S3D47E@%Y("2<"A62!V[6"E A>>"2CVWO[\,Yl XMNZ@/_S#\2%SP*K#ERUX:AP%Y(**&?X,OPT& "LD#,, %H'"F@6L\O\7?_+H<k XM.J1W%9('8( +H%D7#FWJ._I -%1&K@P)N.9(7/ JL.6!6!KW27D@HG)_Z)#>j XMN[ ,R ,PP 70+.)I-L>V]U]ZZKL+RX \ -< IG&JZW!8;_[OVCFD 5V/)Ei XM.HW[I#P0^<&_^^?;Z;T+RX \X)-< IG&KCF#B'VL/!0=$H9@ -]8=4KDSF0h XM:"S^]8;A1R*]=V$9D =\D@N@61?.0M\9%7+ACL0%KP);ODRG<1B0!R+_XJ[Pg XMJQPZI'<5D@=@@ M X4SC5*B0/."37 #-HO?0(;UW81F0!V" "T#A,YJ7:_A,f XMO\&[L S( S# !:!PIG$J5$@>\$DN (7/:%ZNX4\_O9?A(* +RX \ -< ,U:e XMW!5^E<MP?:="\@ ,< $HG&F<"A62!WR2"Z!96.54=&$9D =@@ N@68N[E[_Vd XMMZV^44 7E@%Y :X !3.-$Z%"LD#/LD%H' T@%5.11>6 7G )[D FK6X>SG%c XME_<R7"EN^LZ^X!DE+U?GL%\FI/?,4#78*QZ8:L<?Z1]^9(VLD36R1M9906Z;b XM#U;]>UUU\]&?LKK#S@;D6P-L /6I 3B!#K8M&U #;L#T_=76UUA7A>N+K)%Ua XM1:"Q7T!N;Y5#.HLH3A>&EKGHA=:NG_=DMR@-[:+MRPZ]0@!\97?H %;!=R@<z XM<MG_0&B'Z (6LXJ6S#[@)AJ!U6P4K:)3](IA8 4P!8) BY>T%7C<7%$Y"\E3y XM(9*XLP,BSU+9/0N Q:B?)<#?,-!R61:<@%WP\SJ'A4C1#K!U>$<?;3'D7CKXx XM$O'@-TLHID 0:/&2M@=?6E D2''M0138<MM\;$2$(>I-HL$74CT/_QZI&"A(w XM=2K431*ZG=.N #>+,OK#ND91G$>&4!F -3QIWM,HGAU)7KN N2 ?,/%9:@%3v XM( BT>$G;(E!&?]C$29%KE@\BB=I <2#FG?V.%*.H1HRB&C&*:L0H2DHB#U<\u XMB77;E3RXLUC6G:46, 6"0(N7M"T"9?2'"7*+XW$NGL=<TP5L5U],)O/Q\9/)t XMP[A1]>,=DHNMFS+&;LUNN]U%;0[>]&2*-LC0>)8E9&J\W@:E0W889ZD%3($@s XMT.(E;8M &?VA07.3]9=:!2(C"TV^JEF0RQ; CZ9 $&CQDK9%H(S^,$%>:3]^r XM WN2!;0 5C<%@D"+E[0M F7TAT1#+O5I"Y@"0:#%2]H6@3+Z@\ #=;0T0N[Cq XMWDQ3[XPC,^P9,N$2'?C.:5> FUT!XGH/39!9=LQ2HNUBFH)C#BPJ"[T^H"8Ip XMJC0H(SNH# O=AW/R,?W)_:26=#UA&EUE*U6EEK4UHN)L9Y%5*3:IECRXJ^?Ao XMWR-5_RXTA_:!(L;V(FMDC:R1-;)N" 0K=+#JW^NJFX_^E-4=-B/<@)808IOOn XM\K !-> -@@0;4 -Z]4Y U@K!^AKKJG!]D36RK@BF$/_*T"U*0[MH^[)#KQ m XM7]D=.H!5\!T*AUSV/Q#:(;J Q:RB);,/N(E&8#4;1:OH%+UB&%@!3($@T.(El XM;04>-U=4SD+R5(@D[NR R+-4=L\"8#'J9PGP-PRT7)8%)V 7_+S.82%2M -Lk XM'=[11UL,N9<.OD0\^,T2BBD0!%J\I.W!EQ84"5)<ZX.^ ,$:Q+D63WP!@A4Zj XM-B+"$/4FT> +J9Z'?X]4#!2D.A7J)@G=SFE7@)M%&?UA@A EWDDV4UV *9Y^i XM66K@;&<Q%SY>&3M++6 *!($6+VE;!,KH#YLX*7+-\N&)"W$HAA]<$^#0MC3Eh XMB-.4(TY3CEA_3,E1.HEUVY4\N+-8UIVE%C %@D"+E[0M F7TAPERB^-Q+I['g XM7-,%;%=?3";S,29;BQ%73=)4X@91=),RQF[-;KO=16T.WO1DBC;(T'B6)61Jf XMO-X&I4-V&&>I!4R!(-#B)6V+0!G]H4&[+,K!:5> FUT!XGH/31"?C&OPFV*,e XMJ)#14/N=E<+M$7TYR4>: <<CRE%:0(1CJI4KML.H\I0GT>V/ A").W( QR?Ed XMQ21; 36D$M3SJB/):Z)%+B@&_\9&M3&?R6L7('EP5\_#OT>J_EUH#NT#14R^c XM#NB,NT+LBAFPS!)AZ.$!AUY<N TX -^@Z&6@E_@T(N+CQ'0&7>%.*9/ CB+b XM"SK-WV[Q<-NN%)M4ZP$Y<!;RTSR=<^417:5:N4(9L,D7./3BXF,$=,9=(8[Ia XMDP#.XJ)\II R_YFDDV$8"^E4)".!*E AOH 5$.?Z;H_S !!R-%P &O !ZSH!z XMZ-,6, 6"0(N7M"T"9?0'BP-.[,!>T"(XVXBX@+F0!NX,J"P,!P--P(<976E:y XM *N; D&@Q4O:%H$R^H/)D1PM@!]-@2#0XB5MBT 9_<'DR#HJ;@0JM;G$ VR$x XM9_ ?W=K]I+QSV:;,PP:DIGL3=#4@@"$ST); D)G2NX=_!@OXSL;C9QY3QR:9w XM&AL2J (5X@M8 7&.3<Y2"Y@"0:#%2]H6@3+Z@\DICS9M6M2%7EP^(C6S/O3Bv XMXL'BWBMB$'SOJ7;5S4=_RNJ1P'UL0$FH6S: ^G0[ 5H'P8^O1M8*P?H:ZZIPu XM?9$ULJX(''L<5>MK':V=Q;06V,Y:(*#LXYF&<A8^?=<K^WCBTW>]LH\G/GW7t XM*_MXXM-WO;*Y2<EHUR*88I/JM2 U&E09:DE]%F:F(9_-L<=1M?X+<T!D.XMIs XM+;"=M4"8 ]AZ([J+-)2SYI++7MF5QJM";)#4D>3UX\([1PF?RNR576F\*L0&r XM21U)7C\NO(.S/;:U%@C^VF4!(IYK W)6GSV>98A&6S:(/4UQM@K#.PVJ#+6Dq XM-.2S.?8XJM8>25L8.K4 L$OV%_!(VL*I'Z4TE+/FDLM>V<=S+KGLE7T\&59Op XM>=A'B6'UEH<M&";@]A#!%)M45UBIT: @ZQWP-3 S#?ELCCV.JK5'F@,5=617o XMCY+]!3S2'*BH&]%=I*&<-9=<]LJN-%X58H.DCB2O'Q?>.4KX5&:O[$KC52$Vn XM2.I(\OIQX1V<[;&_@$?2%H:.8P BGFL#6E(:\MD<>QQ5Z_+KKYW%M!;8S;K\m XMHNSCF89RUEQRV2O[>,XEE[VRCR?#ZBT/^R@QK-[RL 7#!-P>(IABDVHS+#4:l XM5!EJ27T69J8AG\VQQU&U+K]S0&0[BVDML)MU^9T#V'HCNHLTE+/FDLM>V97&k XMJT)LD-21Y/7CPCM'"9_*[)5=:;PJQ 9)'4E>/RZ\@[,]]A<HO_[:90$BGFL#j XM<E:?/9YEB$9;-H@]37&V"L,[#:H,M:0TY+,Y]CBJUDSP4LR!X5!1]74*J]9,i XM\%+,@>%044>V[+!$U9H)7HHY,!PJZD9T%VDH9WVKB2TYO"K$!DD=25X_+KS3h XMH,I02^JS,#,-^6R./8ZJ-5C ]J"/ZD%@%VROP!8P /: C]L1'>1AG+67'+9g XM*_MXSB67O;(KS8U,V-,49ZNPC]>@RE!+2D,^FV./HVH-%O" (]06_$DM .R2f XM_07 AYPA-H"/VQ$=Y&&<M9<<MDK^WC.)9>]LBO-C4S8TQ1GJS!F 3/+4$M*e XM0SZ;8X^C:MVLGA[>40L NV1_@6;U]/!(SDI#.>M;36S)X54A-DCJ2/*:@N*=d XM!E6&6E*?A9EIR&=S['%4K4&VOW86TUI@F^R0G:US5AK*6?CT7:_LXXE/W_7*c XM/I[X]%VO[..)3]_URN8F):-=BV"*3:K;P-V1&@VJ#+6D/@LSTY#/YMCCJ%J#b XM[#D@LIW%M!;8)CL,8>N-Z"[24,Z:2RY[95<:KPJQ05)'DM>/"^\<)7PJLU=Va XMI?&J$!LD=21Y_;CP#L[VV%\ 9/MKEP6(>*X-R%E]]GB6(1IMV2#V-,79*@SOz XM-*@RU)+2D,_FV..H6L<,;6'HU$* M$35.F9H"Z<.KE4VN6;9N,-EKVR(O3W*y XMD,-JUWW6-\4=.? %8H:V,'1HC>B1D>M.P...'/@",4-;./4<J*]36+6.&7.@x XMHHYLV6&)JG7,F ,5U6!SIHG=[K9U&2)W<4<.?(&8,0<J:H3<UF3DNA/PN",'w XMOD#,F ,5-:SD0'V=P@:V&/#7SF):"^QFW:^Q]49T%VDH9\TEE[VRC^=<<MDKv XM^W@RK-[RL(\2P^HM#ULP3,#M(8(I-JFV%MNB096AEM1G868:\MD<>QP-;#$Pu XM!T2VLYC6 KM9"X8Y@*TWHKM(0SEK+KGLE5UIO"K$!DD=25X_+KQSE/"IS%[9t XME<:K0FR0U)'D]>/".SC;8W^!?BVR718@XKDV(&?UV>-9AFBT98/8TQ1GJS"\s XMTZ#*4$M*0SZ;8X^C:DT8<,X8T!9SH**.;-EAB:HU8< Y8T!;S(&*NA'=11K*r XM67/)9:_LXSF77/;*KC0W,F%/4YRMPO!.@RI#+2D-^6R.K1"SH+/(:):H5->%q XMC>@NRE!SWM9E"+QTOPD(0<I02RI#/IMC*\0&6Z&<14:S1#\P"(:%C>@NRE!Sp XMWM9E"+QTOPD(0<I02RI#T1-9(VMD[7[F@MGRO:?:53<?_2FKT>#R%;'7QR6Do XMA+M5!V7 ]/W5UM=85X7KBZR1=44PA?A7AFY1&MI%VY<=>H4 ^,KNT &L@N]0n XM..2R_X'0#M$%+&85+9E]P$TT JO9*%I%I^@5P\#-D .G0B1Q9P=$GJ6R>Q8 m XMBU$_2X"_8:#ELBPX ;O@YW4."Y&B'6#K\(X^VF+(O73P)>+!;]8',PD@#(H$l XMZ<;R02Y@+LB'7(L]7,!<2 /I(O%<A".A 3'&YH;"D-P7 =C.[P%1Y/0Y?$^k XM)=JN)Q;T((^%7A]0DQ0)CHL0\:<W3 $/L%]WC @Q0!:H+7VZ"#*ZC\SHN4 &j XM')K@N Y\6P$0I8O@1\3:1?#>"5<!"(:+L'F.A (0'-<ATRL,P7$1W#;=Z. *i XM $L+CNO MQ6 X*CK$2/>B[6+X+V1-;(F@VW@[N 5DU]777ST9^R^E73 !NPh XM$JQ/',0)/6U7=[OI^ZNMK[&N"M<762/KBM!]V\#= ;]O(1&*7[R00=%_&I!.g XM .MJJU_),&1-* 9RORJ4-Z"&)?M":]?/>[);E(9VT?9EAUXA +ZR.W0 J^ [f XM% ZY['\@M$-T 8M914MF'W 3C<!J-HI6T2EZQ3!P,^3 J1!)W-D!D6>I[)X%e XMP&+4SQ+@;QAHN2P+3L N^'F=PT*D: ?8.KRCC[88<B\=?(EX\)OUP4P""(,Bd XM0:HI=@41#A51M%3$1"3L(I3PJ-6N.ST-J/];JRND,,3A;\=BU&K7G9X&IC'$c XM/*2SB.)T88*8BW#M0=RU9-A9M(&[ VS;P-TQ<VKX;+YNDVAL"\0=-D!YV/3Rb XMX3+&H /Q."&*I\TH&N*D* 9;FVQ;4[)M3<FV-27;UE0DII)QBA)?R8,[BQ$?a XMJIG/0]YU=&(NI3Y <2".'Z08135B%-6(450C1E%2$GFXXDFLVZ[DP9W%LHY!z XMVVEY''H8CEGTQ60R'V.RM1AQU21-)6X013<I8^S6["06FC/(T'B6)61JO-X&y XMI4-V& SZ+F]CI)NB 72BP<A(-P&08T/M8W9Z&I!.>4"? *RY=G1GKIV6QW_*x XM!6Q77TPF\_'QD\G#N%'UXQV2BZV;,L9N UEBH3F##(UG64*FQNMM4%YCAY&@w XM]=PVSLL5.2]CY+Q,C@UU.)N0.ST-2*<\H$\ UER+K47E),<G67Q9:@DR?\FMv XMS64AIN3GDVTR"VC.K_*L,#)<?%'ZB:\BRD8YE*@+&=7!/\L\N1G[7Z=&5XA;u XMDMP 6?YN'\%EM+K\AX]<!X29<U(9I[[ JBR5<>H+K,I2&:>^P*NLQ J$5GX<t XM2OYXIH>1-]S$U%%Z;C=3RCN7W_"NQL(2X"5'X\Y,@4(2%O8P97PH08 -G(')s XM<&':P'HZ6)32Z= +-,9B,89F P7QH,T@=\ 5R3]W]3/H\TMP)4),X_1?QJ8r XMQJ:=E:I4<@=7ZIA&6CM] ?VG >D$L$3RNXP;VT/K%?$+-QZ*%9>0"ID%-"$Cq XMX'KX6C)JGKN2(T1;'&8&> B?DD>MZ6'D#3<1L.J7S(1K(#KU;_[.GHK^T\ Tp XM/@IPI8$$CI:<<M\-'W!9$$3CB&@\<^'@RKU3C4;!09M;P#IQ(,ASPS,7;M4#o XM++C20. M8,4F&B>^,3/ 0_B4/&K-$G?J=_94])\&IO%1@"L-)'"T9'&U=/F n XMRQ(Y*6/?:!%< U?NG6HT"@[:W +6B0-!GAN>N7"K'F#!E08";P&KANS,2V58m XM !["I^11:Y:X4[^SIZ+_-#"-CP)<:2"!HR7;9K?,!UP6RDD9^T:+X!JX<N]4l XMHU%PT.86L$X<"/+<\,R%6_4 "ZXT$'@+6+'):%XJPP+P$#XE7VG$=8-)#\P,k XM\*QZC<('6D +4 !P1:'_30 ]0>#*A)G'Z#\-3&/3SDI5*KF#*^&L/=X,MI-9j XM=GH:D$X 2R2_R[BQ/;1>$;]PXZ%8<0FID%E $S("KH>O):-F!6TW((C&$=%Xi XMYL+!E7NG&HV"3H6W@!6;:)SXQLP #^%3\J@U/8R\X28"5OV2F7 -1*?^S=_9h XM4]%_&IC&1P&N-)# T9)3+H&V&R(G9>P;+8)KX,J]4XU&X=L UHD#09X;GKEPg XMJQY@P94& F\!JX;LS$ME6 >PJ?D46N6N%._LZ>B_S0PC8\"7&D@@:,EBRL%f XM;3=03LK8-UH$U\"5>Z<:C<*W :P3!X(\-SQSX58]P((K#03> E9L,IJ7RK e XM/(1/R:/6+'&G?F=/1?]I8!H?!;C20 )'2[;->9EC0!!QG3+VC1;!-7#EWJE&d XMH_!M .O$@2#/#<]<N%4/L.!* X&W@!6;B.L&LU2&!> A?$J^TH"$SIP>F!G@c XM6?4:A0^T@!:@ ."*P:S.@-@MP)4),X_1?QJ8QJ:=E:I4<@=7A!7,NQEL)[/Lb XM]#0@G0"62'Z7<6-[:+TB?N'&0['B$E(ALX F9 1<#U]+1LT*VFZ(G)2Q;[0(a XMKH$K]TXU&@6="F\!JX;LS$ME6 >PJ?D46MZ&'G#302L^B4SX1J(3OV;O[.Gz XMHO\T,(V/ EQI((&C):=< FTW4$[*V#=:!-? E7NG&HW"MP&L$P>"/#<\<^%6y XM/<""*PT$W@)6;#*:E\JP #R$3\FCUBQQIWYG3T7_:6 :'P6XTD "1TL65PK:x XM;D 0<9TR]HT6P35PY=ZI1J/P;0#KQ($@SPW/7+A5#[#@2@.!MX 5FXCK!K-4w XMA@7@(7Q*'K5FB3OU.WLJ^D\#T_@HP)4&$CA:LFW.RQP#@H $A4.?M0BN@2OWv XM3C4:A6\#6"<.!'EN>.;"K7J !5<:"+P%K-@$)'3FI3(L _A4_*5)ETWF/3 u XMS #/JM<H?* %M % %>R-5X&Q&X!KDR8>8S^T\ T-NVL5*62NS;0Q\91>[P9t XM;">S[/0T()T EDA^EW%C>VB](G[AQD.QXA)2(;. )F0$7 ]?2T;-"MINH)R4s XML6^T"*Z!*_=.-1H%G0IO 2LV&<U+95@ 'L*GY%%K>AAYPTT$K/HE,^$:B$[]r XMF[^SIZ+_-#"-CP)<:2"!HR6G7 )M-R"(N$X9^T:+X!JX<N]4HU'X-H!UXD"0q XMYX9G+MRJ!UAPI8' 6\"*3<1U@UDJPP+P$#XECUJSQ)WZG3T5_:>!:7P4X$H#p XM"1PM65PI:+L!04""PJ'/6@37P)5[IQJ-PK<!K!,'@CPW/'/A5CW @BL-!-X"o XM5FP"$CKS4AD6@(?P*7G4FB7NU._LJ>@_#4SCHP!7&DC@:,FV.2]S# B2KE/&n XMOM$BN :NW#O5:!2^#6"=.!#DN>&9"[?J 19<:2#P%K!BDW3=8);*L \A$_)m XM5QKLTYG3 S,#/*L>8 &1KPW=4?L;M1 M(KRWA1;0 EI "U ;:"/B07'>QMCl XM[S'!;PTJ/<3>^=?:0HMDEG7I.F5,R)V>!J03P$(!\@FKO*?H,2:5F[V>%;',k XMNN :$9"0N80(X#^ZE0&A/J6&'P]DB%:0P(7;A.?8?"!!C43;:J(Y/,?F RFNj XM07-L/I @(3S'Y@.9KD&S_@!KR<^X+!<?\A@'CFC1:S!'YM0 A>,6K&9]+<RRi XM+D0G&C:SKEJTI4DYV:V@?.>$2M*.Z9&Q"__*LH@ /OY3 !;-:@&4@E_ ""V#h XM1Z"8XM#11*810AT +GK1\>-HJF4&'X*B?M+8E+Q0*=)X?PT+&"7MJ)ITJGO2g XM4?H-K/\JC:6O=,/(TDF/YXI>.ZWDP_28!EEE6OZU8<I+]2QO'&;3V=M-VTXXf XM[5-75LOB& >"\W3IK7DV\W0T]JDKJV41:@#U&PRU4T=KX[32Z.<#[3 M,GAe XM97;97C+H0VFH$74868NK8\K;UT6-.](#V,"2$/7.$'B@=%6'EIA^L,B:86@+d XM5DU]777ST9^R>B30 !M@5JR/#: ^(58F#%#F$1.F[Z^VOL:Z*EQ?9(VL*X(Ic XMQ+\R=(O2T"[:ONS0*P3 5W:'#F 5?(?"(9?]#X1VB"Y@,:MHR>P#;J(16,U&b XMT2HZ1:\8!E8 4R (M'A)6X''S165LY \%2*).SL@\BR5W;, 6(SZ60+\#0,Ma XMEV7!"=@%/Z]S6(@4[0!;AW?TT19#[J6#+Q$/?K.$8@H$@18O:7OPI05%@K3/z XM[PI.NP+<K +@GOJT!7#:%C %@D"+E[0M(H,)1"Z\U(I#+L*U^YIA:(M%JFN_y XM ,/0%AL188AZDVCPZ<:P_5$F$2M5@14@KO?0!'$<+8"#:DJEB7]5@TX=ML.;x XM0SMWU%H%QE5_V,1)D6N6#T]<B$,Q_.": (>VI2E'G*8<<9IRQ/IC2H[22:S;w XMKN3!G<6<4H.%I%GJ4:"(+T4!7!.KU)J/X#>2,M]-?K/,-@'E #,X-24VL5;Vv XMLEZR97R)3?BE?",BNMW;]H<)TO4T2'O=FF/3+_2324FEE\YHT)1^66K@;&<Qu XM%^1#F,YI\MH%2![<U?/P[Y&J?Q>:0^O4H34'<J SI6RO,L5%(.EAX K;.A4Bt XMDY)*+YW1H"GK8\6E&.*"ZSQ'+M$LB(AN][;]88+,,@W27K?FV/0+_23 #$Y-s XMZ9>E!LYV%G/AXYE$A?^C$)]EH]BD&LF8*'GM O2 '-@6AO>O?:9Y:IN \J2Dr XMTDMG-&C*C=6Q%&\5&%?]88+<XGB<B^<QUW0!V]47DTE#59"%"32>90F9&J\Wq XM2R4YJL"XZ@\-.KI"W!)X,#"<;9J45'KIC 9-696E,DY]@=Q5RTAF7TEBJL"Xp XMZ@_XQ3\.3DV9+4E,%5!R**,_*,CIF%JJ@"+K#PIR.J:6*K "&DU_.#'9DL18o XM@7'5'_"+?T3A;X5CJL:SO'1&@Z;,EB3&"B@YE-$?%.1T3"U60)'U!P4Y'5.+n XM%5@!C:8_G)B]BJ+0BGA<+E_2,&0SSTC<]BIR*3OB<;E8)DU)W!!E3H:5[3&#m XMU$>"\M<.",.3+/)I_W.I==).9!,1.0J">EX=S_0P\H:;9$KR]36^YJS=4@7&l XM57_('*KG8#BVP:DI<]9NJ0)*#F7TAT1SE'9+%5!D_2'1'*7=4@560*/I#YJ)k XM8I-JVY.?^'=G"3"#4U/6885?.6>96V^O-.29 :RCX<291H#I:)D.\5DVBDVJj XMD4RS:%#I(6^@K W!K*99SSB.&.]H];%*(NZN-#0O %N#&0SSTC<.I*\)EKDi XM@F+P[\XR*;.99_2!8CH_S=-)F<T\XX.=L!.55?]>5]U\]*>L'@G-PP;8@)80h XM8ILO];D!N:]M*=_I^ZNMK[&N"M<762/KBM!])^H+K5T_[\EN41K:1=N7'7J%g XM /C*[M !K(+O4#CDLO^!T [1!2QF%2V9?<!-- *KV2A:1:?H%</ S9 #IT(Df XM<6<'1)ZELGL6 (M1/TN OV&@Y;(L. &[X.=U#@N1HAU@Z_"./MIBR+UT\"7Be XMP6_6!S,)( R*!"FNI19$JPT0"A;6$"4IP')XQC5=\(';T0.FBF0Q'3U #&))d XMH](#!/6\(EIMP">JX9'GI;M[Y3UB;,,D&ML" 3: -+.8G8J#TZX -UN<98,Mc XMKJ\&ZN'T (BJ9MC,?-V3*EIQFC)#71L5KU?\R.9W+* ^815WE/T&)/*S5Z;b XM 5PGH)!-P A-*H$N$D=?*6Y]2XA!<JG%RX&TQ42Q2)I_)'R">EZ)HQL#G,PEa XMFQ,RR-3(B ",M62^<T(5'H6Q6R8_F;9<?,AC_)8.;:Y*9OYLK]!_&I!. L%z XMR">L\IZBQYA4;O;Z+,0RZX)K1$!"YA(B@/_H5@:$^I0:?F0#,H>D-0Y&8J.6y XMLU]8XJNGVD7%3['5#J27<\WBUK=\-0;YW&R)B'G:/N0Q#ARR)GG* !S #W/!x XM#0 .-P58\4#2;ARRF F[ 6CFL"B608YE\OB&+/<@\/6+ !2P#__<"2R1T4$4w XMH)D>^-G/L0S ?PP%]Q ABH9V\H@^T5CDR=]B2X.&*%IN0>!KU\$H(!]^.=.v XM 2\@&VZ1+BNY"D#< _S 5)[1:@(H19[D'@ZQ<!*& ?_KD34+OE6 _4.G 5u XM0]Q"4['DJ*\<EP$X@!_FPNPPU*2EFS!JL($E(>J=<617M:E"LTZ]YR*%M5HWt XMDF-;I57*F;US8&EF;O5IH;Y203VOIL8L?<]4-1\)RU FX,"%15'T,47\J2N*s XM86 JSUVH#'\[7]2+?I(Q0H))0:9B08NX.9^A6O <J"X+H W$Q-C0V&8&WC^r XMMI8$JGEE 4\7WW.8^:UQ9//YC#L#R6\.SH"*$(;!:QD\(E\5*J"&5()Z7KDLq XM:Z-NH!J!GVKPAN2JFXA:'J$5TRMG:"_)#Z<[V5G^*:X)?1'"0^,1T[<6(ZZ:p XM)&[+@BO) 1S?* VU0)G7S[$,P '\,!<"#E(;*(8:48Y2L\*/;T@2O_$T2SC*o XM"IHUF-:)\R D+4"_4FD7QB@G,V+RF_R90"<W*OY$!NY53Z>%F5P^-W\2&CPCn XM<4M-]R;H@@U9+"W8S,\L.Q)/,R#3-H]-ZB4,?+RQ]TR[X<I[Q-A&#ER"X%-2m XMEVJ$M#UWA?>4=>9S"!C!D&&5A]83=.Z5FFT/]%U!*&0%S5*\YM,(L.V!7I7+l XM8Q9L"Y4:N0_T75$#VD(=P/& PT'+.O-I!)#[0'?04GDZ\(&A9:HA@NUAU;_7k XM53<?_2FK1P+>L@$WH"6$V.:;$J")K08)(=9O^6IDK1"LK[&N"M<762/KBM!]j XM":PIQ+\R=(O2T"[:ONS0*P3 5W:'#F 5?(?"(9?]#X1VB"Y@,:MHR>P#;J(1i XM6,U&T2HZ1:\8!FZ&'#@5(HD[.R#R+)7=LP!8C/I9 OP- RV79<$)V 4_KW-8h XMB!3M %N'=_31%D/NI8,O$0]^LSZ820!A4"1(<2VU(%I#AX4U1$D*L!P>@$H7g XM?.!V]("I(EE,1P\0@UC2J/0 03VOB!:YV(A5:0W?S#9,>:F>Y8W#2<SH- X@f XMS2QFI^+@M"O S19GV6"+ZZN!>C@] **J&38S7_>DBK[($AD<HQS%:<H,=6U4e XMO%N2->L[^815WE/T&)/*S5[;\%@F1(!2P A->(LN$D=?&6]\2XA!<OO1MX08d XM).=ACF.VQ+B^)<0L)HI%TOPCX1/4\TH<W1C@9"[9G)!!ID9&!&"L)?.=$ZKPc XM*(S=,OG)M.7B0Q[CMW1H<U4RR[HMB?[3@'0"6"A /F&5]Q0]QJ1RL]>S(I99b XM%UPC A(REQ !_$>W,B#4I]3P(QN0.22M<3 2&[6<_<(27SW5+BI^BJUV(+V<a XM:Q:WOJ4V?V;<O-5$LV_Y:@SRN=D2$?.T?<AC'#AD3?*4 3B '^:"&P <;@JPz XMXH&DW3AD,1-V ]#,85$L@QS+Y/$-(0)"@ E\@2( !>S#/W<"2V1T$ 5HI@=^y XM]G,L W /\P%-Y"A]K*Z$29^T=CD25^BBP-&:"("0H )?($B 7LPS]W B#@x XM!6S3)<)U)4\9@ /X82Y(:K< %2$,$1 "3. +% $H8!_^N1-0N^58#]0Z<!5#w XMW$)3L>2HKQR7 3B '^9"P#E1VRJL@3K)4P;@ 'Z8"P'G1%FKL ;J)$\9@ /Xv XM82[,#D--6KH)HP8;6!*BWAE'=E6;*C3KU-RD9(S32F.M[&6]9,OX$INPG+1*u XM.;-W#BS-S*T^+=17*JCGU=28I>^9JN8C81G*!!RXL"B*/J:(/W5%,0Q,Y;D+t XME>%OYXMZT4\R1D@P*<A4+&@1-^<S5 L>0 X4UP7P9F)B;"@,<P//W]:20#6Os XM+.#IXGL.,[\UCFP^GW%G(/G-P1E0$<(P>"V#1^2K0@74D$I0SRN796W4#50Cr XM\%,-WI!<=1-1<ZZW4C<1]=5XZ%H*PH6:>"2;Q4$$G.BX(P=PO)S,N<)%W<0Rq XM9M0S[M7QR.'%X43''3F X\O)&7@#/A!:48R@K/ON!?_N+/\4UX2^".&A\8CIp XM6XL15TT2MV7!E>0 CF^4AEJ@S.OG6 ;@ 'Z8"P%',;[BQJ@FB9N-UPPX7CC*o XM"IJU%.E8?FH!^I5*NS!&.9G7U&1>4Y-Y3=%B IW<R,A'<1J2)9T69G+YW/Q)n XM:/",Q"TUW9N@"S9DL;1@,S^S[$@\S8!,VSPVX9<P\/'Z[$K-M@?ZK@A'Y2-2m XM3VH%("MHEN(UGT: ;0_TJEP>LV!;J-3(?:#OBAK0%NH C@<<#EK6F4\C@-P'l XMNH.6RM.!#PPM4XVLD?7[U MW0!L=:U?=?/2GK$:#T\?ZP 3F:P-L $Z06^ANk XM^OYJZVNLJ\+U1=;(NB*\ %"A%^Z -OH4+^"%BL>O=WYYP!71+/S$!: !'Z"5j XMQ./7.[\\ (0<#1> !GR 5A*/7^_\\H!#+RY< !KP 7D7?'YN'W+HQ<78R;O@i XMDRI^U+'P!= _"G@!H**/?=2Q@#L\ZMK(E9_B!:2 L:, ^MA''0MZX0Z@ -R1h XM*P-*'_NH8P%WY,JQLP<4P*53?A!U['C4M<%_:M:=0>9C1P'P<12 LB!J0/$(g XM>T !C 3A@ ( %@]0+0&%#>X!!< &GP1P%B* ICT\@28P=MB@3P472* *5(@Of XM8 7$^=AA@WU 8P$2*X V*!/16@7 Z*"@'Q7?2H##!@['J$/*( GD9R% PJ e XM/#Q M024B[ '%(!'$ Z(?<K( 120![!*" T (L/N 6 Q0/T71_[J&4 JYB(d XMK]\$3 0(X -N 6!E#!30QSYJ&< J)N+KAW,L$%!.PAY0 &SPT L10-,>GD 3c XM&#MLL.LA@2I0(;Z %1#G8^<D] $%X!&$ PI ?ON9V"5/(!53,!'R!S!X@6 b XM"LBF1?1"S?H4+T !L$')!&ABP-CQ""CKA^"!L7,1^L!O $O %08-O=$L&YFa XM6YL4F66GIP'US^9)>'QZ UA%))^ P"U/YL@)<&PS<DE#S(L *D('"L J!FHNz XMG $4@%7L9K7KIYTA"= !*+W[\*%G9!K7HS.H@!?P&_@X"G@G?HQ? )HO@/Y1y XM0(KT+&< !>"!%) "L$H/ #1(H I4B"]@!<1Y0/$(>T !C(2NAP2J0(7X E9 x XMG/?I8/$"0$65?Q+ 68@ FH#.N..$"G@!"L C] $%\!9DV4X7)Z'CG?@QS9 "w XMQHX"\*GK!4OFNQ: S$% 94#F8Z<//%ADW3XE#PY@U=3753<?_2FK3P*XO '6v XMYS3<K1@00$^L#)B^O]KZ&NNJ<'V1-;*N"-U7\I2+74N&G87DD1JY%C)+'C/7u XMH$0PS"Q#+:G/0B@1C*R1-;)&UE]+9;'JW.NJFX_^E-4GH:?MK1$+0&O #4!Wt XM-H& UH#I^ZNMK[&N"M<762/KBM!]YX!II0-WIBO, <ES9PZ"Y+DS74'RW!EMs XM)'G>0J[%'EUA#D@>3OHV#H+DX:2+1QM)'BFX>3Q__1/;.=!<S '32@<XZ>+Ir XM"I*'DP+S\BAB;"^R1M;(>@LB&5;=JC'"VMJPPS=6%]^/, .:A_4Y#3;@!OBDq XM&F #Y-8,,*"^&EDK!.MKK*O"]476R+HB=%\D8RX.X@NM73_OR6Y1&MI%VY<=p XM>H4 ^,KNT &L@N]0..2R_X'0#M$%+&85+9E]P$TT JO9*%I%I^@5P\#-D .Go XM0B1Q9P=$GJ6R>Q8 BU$_2X"_8:#ELBPX ;O@YW4."Y&B'6#K\(X^VF+(O73Pn XM)>+!;]8',PD@#(H$Z6\P%T@F70B.-S0U%4;BN0A'0@$(CKH>WP5'D]#E\3XEm XMVJXG%O0@CX5>'U"3%,$4\ #[=<>($ -D@=HFGHO@1]*(0Q,<=;UV*@"Q=A&\l XM=\)5 (+C.G1OJR0X+L))5 =7 %@:<%Q$3;/XA$<=;UV*@#!<1U._H46:Q?!k XM>R-K9$U]B8)GA&S6N@[@ 58=8UUU\]&?LOI5NX:UQ5MP-4R8#<O7)KB&Z#M]j XM?[7U-=95X?HB:V1=$6BLR68#(.$OL !GS6_\S6^PH) !#U"HC()^&\-1)@Q.i XM@PR@@( 29"7#D#6A&,C]JM D:W]-(?Z5H5N4AG;1]F6'7B$ OK([= "KX#L4h XM#KGL?R"T0W0!BUE%2V8?<!,U0B;]08C)-%L,N1<&OD0\^,UFX!\L9R%Y*D02g XM=W9 Y%DJNV<!L!CULP3X&P9:+LN"$[ +?E[GL! IV@&V#N^H$S+I_X&QX-%Bf XMR+UT\"7BP6_6!S,)( R*!.D+K5T_[\G:8!%!7M1$$W@/ X\#XU$2X82:P'L0e XM YI%D&8P@<B%O7 NPK4^R&2S 9#P%Q:IKC79; D_(6-B#!$O4DT^'1CV/XHd XMDXB5..T*<+,HHS\$E)1HNYAF#!2DSAU(77@60TCFZ5XO#G%'#N#X6N=NONVNc XM$[U"8U(0^K\='_)%7Z#QH<'&:P8<'\],>D>!2Y/9VO@6DC8A=WH:D$X JSWQb XMC)9<%VZ(2*XL0$0Q;QC9[&'ZH] :N@_#4@G@"62Z<"DV&H'<EEN-='L6X1'a XMSG(W>FKD#3<9 'F$Z?'\S._V*'&;Q7>4K,V[68J4V;>0M FYT]. = )8(CF*z XM4!X]QE;.Y87$@;+9P_1'H3&C($^ F0RQ(RP\E/;$,QR*,=EJ!W)9;C71[%N@y XMY('T<JY9W/J6VOR9<?-6$\V^17BH4DVV;[2(#( \P_/65RB79:W.JM7HJ_]9x XMSS6HOHIR\:4JW28+.J_]34Z[ MSL"N"T**,_9(ZJB71BQX01IB[+6FD]GXSJw XMX W)53<1->=Z*W4347.N<%$WESRZ1GSH(*.Z7GF^\30K .D:9YHN4J+M8IKUv XM[T)S:)TZM.9 #H0+SIK?^)O+AX^0DZ-B T>>N,V!SA J^D(?0Q.GT30!K.MAu XM:ZFTQ*MW3\.=64*S[L=T7X#AXJ>RY"&[SO6YL[E($1=* PUT!A! !<A,&,@Zt XM=(%]+ O\H&-K5M,@B980*..:(F 41L,0\"1W $J#@"] !^S &-!&EZ]-T &Ss XMT1DTD-510'JLVJ'?[R#C9U]+X1*V7J,,7#(3PJ,'OX P$ 9#B(7" ) "C%ZHr XM64V#),Z!$' 1DD!?$&K]I$WX#/B"*10RA%%=< $YM+J2A^PZEQMP ;AV7UMKq XM?N-O!+:UYC?^9B,B#%%O$@T^W1BV0*QQ &DN?BK;$\]HR74!"A=;C\%I5X";p XM11G](=$DI3*-CL6)<6$C#P6_F42(P6E7@)M= 9P69?2'@)(2;1?3C(&"U+ESo XM$T,FC&64YK4>2R<XC^J)U#F@<*79'K%)-J$L^'),M'I^O1>?KW,%G'87']Q,n XM&I!1K]2XL)&'@M_(<9B>);V9ICKXZ3&JC8A%4?0QY;(U@7CA @K*7^O-+47;m XM=C_>^C2<<.<"%^9*77P5$G>BW,VWM0%F15B-Z!Y[3*K\-O4",8 EO 04 /4l XM;L6544)$'_&4H]#8XHX<P/%JQE?&&]]"TF13MK?QF@''5VZ0/!9$,AV8%-F2k XM6OD6DO9@GD;)8_#Q9,,D2W'K6T(,DDLM7@ZDE>+8UBTU6=D1C\O%A[!O''72j XM#L,-@3 AW&>$C6U;TZ"5C"(, $O7F$[,LL?-CM4Y <?D#< *KW[3XIZP\6- i XM#?VG >D$L$1R#=B([L+=Z*F1-]QB .01IL?S,[_;H\1M%M]1LC:+;P3*MSEFh XMBH&+M?$M)&U"[O0T()T EDB.(I3GSFRU XDM73.U\BVUV=T<QV8QQTPQ<+$Vg XMOJ4V<QO?4IL_,V[>:J+9MP@/5:K)]HT6B0&09WC>^@KELK;'6;4:?17E6JNSf XM:C7ZZG_6<PVJKZ)<?*E*M\F"SFM/2SPB%[0B'I>+#V'?..JD'88; F$H).Q3e XM%]IT6:'_-*#^V?Q_ %C>$[K$!QEE7):+#S$N;.2AX#?,UE&@E8P",F5 LK!Od XM(8@7S$ZXZV,DP@?^71G5Q[Y#E<\L.ST-J'\V[UFLEI;!:6&EW;$<,C($'I^Yc XM9',$X9A,-52+;&H%A"EY:$(SU O4YRS>LXP"RFV%?7!P9->Y+$\_R:WX@2--b XM9E,,7*R-;R%IO7GW<9V=G@:D$\ 2R88.N' ;WU*;/S-NWFJBV;=\-089F]JCa XM<GG:/H1]XZB3=AAN"(0)X3XC;&S;H550_AHXP1FO5->83G/QH7TG6QX@9R4!z XM@ !T7.PZUP(!6#5@4>..]""C@C43AI95GJ9R2=/I%4R[K*M+53-9'-3RBZ)Dy XM%&M.1B\@G(CD&H!-^&7RFV7(O')#GM)I-"N(Z?0*IGWJ+K[RBZ(TI)[CSXNOx XM_*(H;%(OV7+<77SE%T5A$VMU5JT&I2F_*$IDU!04=2@7Y'B44<9EN?@0]HVCw XM3MIAN"$0AD+"/G6A39>5$^Y<"P1@>4\P%Q]DE$Q;+C[$N+"1A_(809T+*"A_v XM[7DP/,EBKHR(V0EW?8Q$F(O&>SQC4^,8U1.I<TP&IHW^T\ T/@JUA&"%#A2@u XMF8ZGN]%3,H3* *SA2?.>1O',69_YW1XE;K/XCI*U>3>+&G>D!QDEF2#JG1'4t XM=<>^WBE.NP+<[ K@M"N TZ*,_I!HM.DKE4R)O?3NX0+)2E4J,Y98BZE+!5T9s XM52N@[87KK6:GF19&\9I:91&LA"+M=<CP[\X28. JOU!/'4E>$RUR(:,0FX%Cr XM 29*7G\!@A4Z9-0>$S"T?E2O$<^!'V8,P0H=*"#1:%,(\TIK2=R1 R\@'VD&q XM'$^G%8N=+KV_B@]0;%)]=^1 YWDPGB0T'#;QR(&2!/N(%=[E*(30L<,'*#:Ip XMECR=1S9!MK& (<1"83 FV)[0'PAD1S1:0.A3G:QS)=:_"\VA=>K0&@@Y4"OHo XM 3G0>W^UJVX^^E-6H\&Y97TB7XA="3=@5[>,Z?NKK:^QK@K7%UDCZXI@"O&On XM#-VB-+2+MB\[] H!\)7=H0-8!=^A<,AE_P.A':(+6,PJ6C+[@)MH!%:S4;2*m XM3M$KAH&;(0=.A4CBS@Z(/$ME]RP %J-^E@!_PT#+95EP G;!S^L<%B)%.\#6l XMX1U]M,60>^G@2\2#WZP/9A) &!0)THWE@UR 'I #;&'7DF%GH0?DP+;(M9!9k XM#\@!=*%-B9*^ZV,?M0Q@E14 _P&YAUY7GKVMBRT!G$C$,I2+>14]1P,&T)Yj XM:"H^!$5R^ 569:F,4Q$&3XW&/G5EM:P<B*R1-;)&UL@:62-K9(VLD36R1M;(i XM&EDC:V2-K)$ULD;6R!I9(VMDC:R1-;)&UL@:62-K9(VLD36R1M;(&EDC:V2-h X<K)$ULD;6R!I9(VMDC:R1-;)&UL@:62-K9 U_ "-Kg X f Xend END_OF_FILE if test 35739 -ne `wc -c <'fp386.uue'`; then echo shar: \"'fp386.uue'\" unpacked with wrong size! fi # end of 'fp386.uue' fi echo shar: End of shell archive. exit 0 -- Bruce Evans evans@syd.dit.csiro.au
richard@aiai.ed.ac.uk (Richard Tobin) (09/26/90)
In article <1990Sep25.055949.15631@syd.dit.CSIRO.AU> evans@syd.dit.CSIRO.AU (Bruce.Evans) writes: >-msoft-float doesn't actually work in gcc 1.37 for the 386. I posted a bug report to bug-gcc about this. >The main thing wrong was indeed returning soft >floating point values in a hard FP register! The example I posted was doing this. Could you send a bug report showing the other cases you mention to bug-gcc? I imagine they'll want to fix it. Since I couldn't understand gcc's machine description, I adopted a different approach (read: hack). I wrote __adddf3() etc in C, and wrote an emulator for the load/store instructions only and linked it in as a signal handler. I also modified crtso.s to install the signal handler and signal.c to (yuck) prevent it from being uninstalled. Sick, but it seems to work (not seriously tested yet). I don't care about fp speed. -- Richard -- Richard Tobin, JANET: R.Tobin@uk.ac.ed AI Applications Institute, ARPA: R.Tobin%uk.ac.ed@nsfnet-relay.ac.uk Edinburgh University. UUCP: ...!ukc!ed.ac.uk!R.Tobin