This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

C++ PATCH: demangling API entry point


This patch adds support for the demangling API entry function
specified in the C++ ABI.  This function can be used to demangle
function and variable names, as well as type names (such as stored in
typeinfo structures).  

The bulk of this patch stems from two isses:

 1. The demangler uses dyn-string in its implementation.  Measures are
    taken to prevent these functions from colliding with names in user
    programs.

 2. The demanging API requires a graceful return with error value in
    the event of a malloc or realloc failure.  To accomodate this,
    dyn-string is augmented with RETURN_ON_ALLOCATION_FAILURE option,
    which uses return values to signal such failures instead of
    aborting immediately as per xmalloc or xrealloc.  The demangling
    implementation is modified to detect and pass up these return
    values, as well as detecting allocation failures in its own logic.

Committed on approval by Mark Mitchell.


in include/ChangeLog:

	* dyn-string.h (dyn_string_init, dyn_string_new,
	dyn_string_delete, dyn_string_release, dyn_string_resize,
	dyn_string_clear, dyn_string_copy, dyn_string_copy_cstr,
	dyn_string_prepend, dyn_string_prepend_cstr, dyn_string_insert,
	dyn_string_insert_cstr, dyn_string_append, dyn_string_append_cstr,
	dyn_string_append_char, dyn_string_substring_dyn_string_eq):
	Define as same name with __cxa_ prepended, if IN_LIBGCC2.
	(dyn_string_init, dyn_string_copy, dyn_string_copy_cstr,
	dyn_string_prepend, dyn_string_prepend_cstr, dyn_string_insert,
	dyn_string_insert_cstr, dyn_string_append, dyn_string_append_cstr,
	dyn_string_append_char, dyn_string_substring): Change return type
	to int.

in libiberty/ChangeLog:

	* cp-demangle.c: Don't include ctype.h.
	(IS_DIGIT): New macro.
	(IS_ALPHA): Likewise.  Use IS_DIGIT and IS_ALPHA throughout
	instead of isdigit and isalpanum.
	(demangling_def): Make name and next const pointers.
	(STATUS_ALLOCATION_FAILED): New status code.
	(dyn_string_append_space): Handle failure in
	dyn_string_append_char.
	(int_to_dyn_string): Likewise.  Change return value to status_t.
	(string_list_new): Handle failure of dyn_string_init.
	(result_close_template_list): Change return type to status_t.
	Handle failure in dyn_string_append.
	(result_push): Change return value to status_t.  Handle failure in
	string_list_new.  Handle failure of result_push throughout.
	(substitution_add): Change return value to status_t.  Handle
	dyn_string failures.  Handle failure of substitution_add
	throughout.
	(template_arg_list_new): Return NULL on allocation failure.
	(result_append_string): Return STATUS_ALLOCATION_FAILED on error.
	Handle error result throughout.
	(result_append): Likewise.
	(result_append_char): Likewise.
	(result_append_space): Likewise.
	(demangling_new): Make argument a const pointer.  Handle
	allocation failures.
	(demangle_template_args): Handle failure in template_arg_list_new
	and result_close_template_list.
	(demangle_discriminator): Return if int_to_dyn_string fails.
	(cp_demangle): Likewise.
	(cp_demangle_type): New function.
	(cplus_demangle_new_abi): Don't call dyn_string_delete.  Abort on
	memory allocation failure.
	(main): Likewise.
	* dyn-string.c (RETURN_ON_ALLOCATION_FAILURE): Define if
	IN_LIBGCC2.
	(dyn_string_init): Change return value to int.  Handle
	RETURN_ON_ALLOCATION_FAILURE case.
	(dyn_string_new): Handle RETURN_ON_ALLOCATION_FAILURE case.
	(dyn_string_release): Delete the dyn_string.
	(dyn_string_resize): Handle RETURN_ON_ALLOCATION_FAILURE case.
	(dyn_string_copy): Change return type to int.
	(dyn_string_copy_cstr): Likewise.
	(dyn_string_prepend): Likewise.
	(dyn_string_prepend_cstr): Likewise.
	(dyn_string_insert): Likewise.
	(dyn_string_insert_cstr): Likewise.
	(dyn_string_append): Likewise.
	(dyn_string_append_cstr): Likewise.
	(dyn_string_append_char): Likewise.
	(dyn_string_substring): Likewise.

in gcc/cp/ChangeLog:

	* Make-lang.in (CXX_LIB2FUNCS): Add cp-demangle.o and dyn-string.o.
	(CXX_LIB2SRCS): Add cp-demangle.c and dyn-string.c.
	(cp-demangle.o): New rule.
	(dyn-string.o): Likewise.
	* inc/cxxabi.h (__cxa_demangle): New declaration.


begin 640 patch.diff.gz
M'XL(",S=4CD"`W!A=&-H+F1I9F8`[%U[4]M(MO_;U/T0#;,;;)#!DFUL0V#+
M8YR$6B`I'C-S]U$:(;>--K;DD60@,YOO?L_IA]1Z^0$D(5.72@6[U7W4??IW
MGOW@Q!W0AWTRLNU=>[I[9GVDU;'ECG8<=^WPZ3]K%[U+,G3&=)_LVG?!+KZ&
MCFS^(?4^[6[-IZ'OT#O''1$??@6.YQ)]I]E<&SC#(:G:I#HE51]+2**G6UM;
MB8*24:O5=FM[NWJ#Z*U]8V]?;Y<8H6JUFE_3,(A1WS<Z^XT&DE-_2.^77\S^
M+U<77?-=OWO<O[@DA^0OY<"W!XY?P6$XKKT;?IJR?NP96DLGV&Z-$/CW`^D_
MA+Y%;&]`2>@1J#N>P4?')6/G!OA@[$`M?,7IR8_&F^OS'I(/'7?H[7C\MP$?
M7'H/_WM3Y;<;LD]WLNA.EOUK;9V4O.F`CEDY_)959=&=+*,/-IV&P&?X?$?M
M'4_IR^5%+S-2?)=M9\KTO$(#"_\%!$N))_$KTVWXH%FC]50CP8?\%K?(YO]A
MO#ZF0\<%/M]2XEH3&I"AYY.`CJD=(JKL[6UD_&GW_.UU]VW_<H<U.O=";&*%
MQ`G)O3<;#\@-M'=L-F$3[XX3'-`I!6EQ[4\$<#G:WF9HPOEN$/A4_2[GFS>V
MI]4!G8!(C"D4#3ZYU0`D$23D^\1#NL'.SB[PWKFA?OAI5QVK/;>FP@?[6T$L
MK8OBN=PGMJU/Q[/@+V7Z0.E#6%%YP721WFIK>KO.M1&"56_KFMZ)X,H0,)_.
M=!<KV3:?MK>]GOGF_85YU;UXV[_"B@`,*#3,WIO3[MM++'D+<.G^>&)B`7X'
M^$3/3LY[I]?'??C,<$!0I^>\C%2E-MHF"6CNDV4F%5HMV==>;L^@.:D>O^O^
MU#=[[\_?G+PUW['2Z"?1ZSG@@F$DN@\T5-DJ'$T">%]H,*4YHU#?CX-(*02&
MZ)\IN;?<$.$[FPXL@+<]!0K&3O@`(!\2RP4,#QFJ`V_F`]#1#PB(?0O,H#L[
M*!=QBWT.E$C/".`DS6YE#7Y.$@X+6E[[X<&Z<<`*?`6'17U?H<.B-](."_@A
M42]1,.47X7XT=XTFT?7]1F>_WB@Q`BBMJ5JJD]+,*(8[SQD0T[0?+!-$QP0E
M06%.RJQXRS0MW[<^F=9@P-[?:':TQEXC5@RLH&5(Q5#P8YJ7)__HFU?_^Z%O
MFO!M"O1@[&;@_$ZUXF:L#V7HQ(`"BF9VZ/D5V;-*Y0`1M4UVMX@0%,9-;P;:
M%."RM0O/X!_H)>J[9*.W@=\`1#Z."D<KQ8N4;<\-PN@9+QV8J*0U!'R)]T8^
MAS=,9Z%Y,QL.J:]62(X2:HZI.PIOU2H.`!\>!*$5S@(8P3;*Q&<<`S,)4PO@
MCKW#^;O3<1!,:N#Y=4!],O6]D6]-`A+<,E,P"[CZM\:.%9!?H='F#C:*X5ZD
MZ;XDY`O>60C[5AKU+9+L+$.^6A(!N]8!T[3?;.[7]TI(B*$_MV8L`IVT"##Z
M1DNK-Z3[_8-TOC8`&D-GM'.[@:5@8ITASD@UKO':!@>>[MP>02%K.1S0(6%J
M\_+J&-22^4XE^#H(!\`?K!\1Q$[CZX44Y?6NT=*:'=D[0,/)D/0^F,?],_`6
M3OOPX<?KM\0)0!+0QQAHQ"+@2P*8A"9%U$P`OO3.&L\L=)J$V%GN@'A0PX>F
M-[/1"*>&`UPC]\YXC-[&B+K4!T4]V.&`%&/,=``\HA]X!TCT`+1PKU_^</'^
M^+IW=?+^7"/'9Q7F/!$RG()E"(>D##RAOJ^1#5(](G^M&HV`@,,S]0('>TK^
M6A_\R]W0F.E7?A2J%8W8,]^G;FA&K<KP(J8C?J#C@.+OI?J6F&?)Z^'8&H%V
M]&\\$#A@\^_4]S0P3Q.P4<X$C-'0L1E7@XAI$XN[\<!;WFW.5>:U01R)[ARU
M`@<8#R4^M09L*H+9U*<!SF-H.>.`>WZ6+TCPB1B//Q'7"W%J@7T4ZH?B1<2"
M/EHC2GK@2PI=,:'^CM#4VE[DP'W_$%KX\SB,%='ZVLAC=NW8<S=#DM$T&DXW
MX.0.WDK0DN);K3&9N8`%;WQ'`4>?)C?>.."^Y]#W)C`)."\#@,<(G@-/.&(0
M*?[,#1V`,N@EW_(_[1!N/&6O3R[-XY.W)U?EWKON!=A?\?OHD&S6-LFK5T04
MO(:"SF8EV;)[^N%=5U18^8?[SF7UC5;ZC;]O5E:@1?[[W\0`NFER_]BL5+A5
M_G-(?MK;0PBAY'%_BH04Q@!R"6[>R!P[06CBPZV0\C!0AS#0:$F[(]K$WA96
MAO(_6!^!7U?0D>$,N"!<*.;4".2)(@ZN]<B=PAH'7-4R$A\\-C(.4-8<V(`#
M%%(626R&$#AZ*J'+T+(_\A";!2`00'@NL-9E8D!E#X&'LW$8ZR>86C*T_!TI
M\%<4HY*`T(D3XF/![M";3CS@?GGH^`$$OB+(87UB\;)1U_1ZY!8_,^<4=_4Y
M^*>2>S%<7`#<)"O)5O2=`Q>B$KT=N7.RK3I2[H*;<K0XUBFU'5"C:-^H$$#;
M<E&DP<\&*06+060SR3ZIZBZONE?7E^;[OR>4SOGUZ6FV4O_BXOU%7&FC[_N>
MO[.1K7A]?G+VX;1_UC^_ZA]#Q6L750Z=P#P"'G(:G$#%B_/NJ7C%Q@EB`4T#
M%:^`L:ZS,3@VCZX`)V;HF1"HFYS[?.H_="^Z9Y>@*N&Y1N*G9L@MFR`A"IGB
M"!/?7'J?(91HRMZNMN"!9[)1@CXV3W:>P\ZTQZ"<S4B58>W4*!2T%).9SH+;
M^<T*QBW;>],EFV,4&,QN@M`)9RB+&`_ZX2I=3K3&X+RPK4;8%,K_$OU0YS5)
M<D3#94CR,)PIO+V&9M3:4N%],XE;4?8>(85*DU7E46F:D<QUE$QF"4!/\C'S
MI0`'7$)P,2CR8@BNP<QG:P(3\`8\FX!F!A<"/TK^B+F-.;\E/@M&LLK,93&1
M'+#YD&QTHT+""W<V#K+#Z9Z>ON]UT6$UWW1/3F-N%)&.1G7NN55TG3#!QXDI
MXV+S[GJ<%>069MVSF;D:%,SY^7O.T#+_'CN`Y:CD\#`&2(6K/>A&G\<NE/1_
M^7`!T<FM8]^2R0R8`S[38`;!3@)O)R(-&<\&,YCJE+B\UQK,0CCS7>YKJ_9V
M.'-MQM=[)[QE0^4T%*+I45[TKZXOSLV3-V*4V-G*2FXSOF'@D6?XX;3`4WE&
M6A%>`),`/AS>P>-I`:+*ZRE@0+A7J:Q$JR3F+SAXXN`^/QNC`)V8G*Q5N!1%
MID>P[GNUW-$`GFZ]TZ2^$PL>H_\E6?&TPZW.=C9,9&D5GCBM-35#U^,@D37+
MM@BC1$GFV9),5Q^H7Q"QZRH%[F]D09L(&M@RQZ(W\]RLT=&,>C,.YE[`"!6_
MZEG&.6_V<\BQB=?!Y3/:<N+!^BI(O)F!6CZ^K/Q3*>/+(:R8@,?X[TKD"':G
MN'R-QI>M@."X+!O#V/*O9+."X>+Q)2IZ![CB@=G%)(@UQMS))P(-N>IE!M9S
MA3F-LVY*#RSV'I.]A77CSV%.T006\/F(U%:CA3^O7JE,&UN`;08U1G']D&R2
M>4DW9DZS3.<4D(3&"!Q\,W,J47?!3'[`W#4'E\MDJCN=*T%_&\O5Y$P:9>DL
M<%DDJ<OXH7J$B14`O?@"[2M<M=3;FM'HQ,NG+T>&I*\<8%,=MY4$,]NF0:!A
MT%'#`BL9-4!D\F5DC_/Q:0A/8OQI"$_0^AM9C/5E^[5/]!<#S\=8A*:N&7M-
M91-CA$N,7A..BD@!IG.(Z7X+STR"A[6&7FH0W5V<G+^M+*F\TS-$RJ_X6#G]
MZA%_JI&RH%O)]/_\^K0*XC1Q7)[AY#YW#^H_:BQL$-BZLFI<ET4;?"T>$'M'
M=CBQ?L#%C\=-!]+@XUAV?:=P"$Q@"H>`Y.,A8+)<:("41"S9?=ZXO-0R8JK[
M?*W>T(QV1]F[^4)@7GX$S@OUT=^4#-M^80;HY<I)^7&"\KS,^)925GZ<F#T/
M`[ZEC#[&<NV!']:I*3ML8GGF_E3!U*%'A>7H0BBS[01\Z8LY69S"`I'G;M'9
MTZT![V[^)%>BA.S_9T+_G)G0`+W7.//]"%HO.A,J$_FQ=-Y8`25Z#5"'^R<`
M9SP>`:7S4_?TNL_C'BE[J56T-9*312VSU2B-#(**7+[&'!DK/9`E"1L_"/@:
MF-$QM'I-W6/UG2B1\HI:9.Z\KV`I'CF5,7W/%2J$1Z;P['T4BL(,,@4?8-R+
M.VQ\$4])3:5H')*38']&<*0-TGRZS!YUF@`E);<&C'H'@P`Q8,MHLRGJ5S<R
MGESX&1%<^JK)WOT1*8<B9V``\?QF;9/EI_D/YY,<S6=E-\@;8)I+1\"F.TK<
MV>2&^M`:-W7`[('#!UH\<$9N7J=>K]RGZF8EXB@1(R/5!*<_L]],]NJUCE8W
M&G$BY<D,8^M*B[A6411F$=33G(WQ^S5XO'@8U66'L=1DK([UNM[6ZHU:C'6A
M[B=6\!&S._&8B")R`V<$+#D4G=DE6/M@6;23;=X^@[#JH2"\)0C*QZPSNX>@
MGM3Q?H[\W9Y/Q1J]2^]ET,/6LERN9=`AQKU3H-:"Z'P+KQ;M\J.3:?A)(S>S
M4"1]G!"W1_"3!FJVS0G(:?_\[=4[09@3XJ./7BH/"=Q0H0D'W//*+MU%2K!@
M>8SO8%-7"$F9^^<)+<B+#M8D_%)KC#!98GY2JX/D06QF*.-Y$(]MUF6;O)(]
M'5:$DE(F%UF43`WB-C)-=$5,;^30L+,61"[KU.L-K;ZGJ(PGX6XEO1'A;UG]
M\128LF,P^<KGSX-?F2P5NW[X/*3RT\%7PWD:X*OAF_OQ8)5P,!4!+#%]6!37
M6E]>%'+I%$A'-H!.<YR4<8:$_FZVM'K;B/4W8=LY<9<TW]K#MGK>>V3$,.97
MH="-W=P`XC/<YC[VO(\P^1\A\N14?&=T"SRZ=8:81OM(W7PO?HW,VTE0'DRB
MN4NNKDX.H@VXR15TF+]7@TG:Z3U8RUMIBQ<.`K;G:/-H4S*Z2`4$8OEK;B84
M*QUQ!RB64;%)BP7;`X*;'=("Z[D%$0;;4F9_Y%W#[;S'9^A(SVX"^MM,R<H@
M$29DQV=\/SMS/`31^$6+9@+[MASKD[(#;Y!>PF%6%&M"G\>UQ,)%5N#B^>--
MXN]0.6Z?Y.\%Q?/402)84+<I4[[5#U>^<GG,K4I;UQK&GG(@\JM)@Q*Y?!V)
M$)8%H3F(5QZ+@MEHM=$BV"]F.9!_\H#T#=3\2!5.(;0#MEU<#``LC3!*N(*9
M8),DXH2;`2,OK87%.5?EG/.FN$'=\Y/N\Y(2O:13+01\E=#@LW0@!"L3_)&,
M">(M^PO??[295OASO8OUA?[!"](]G)`T^&HR(%ZA+MRP*C,&Q4O7\^3IR^FU
M;3&K:DWI`'!HQY.@[-(51[66FN=86D\=]V.*JY+/+$B6_AT3-?@L-*<X`A++
MSG,JXL4NZI/5<\:MR6S@XW/+#MSJAM;0E00,/^)X[P2TZ@S@-8X-GBUN<P^4
M`Y"OI::J3D'O38X"!FC>'L\X4Y8(9TES&A0:T?2V0.R51E@'H_5[+=Y_-E4_
M6_[$Y%F#>1B-7-DDT0-Q4'1/:^RI1_J_PM`56?N&PY^+D#E=X9`QZEJCKL>0
M*=R8"=!7GB5\&^R5<\!9DZ#`VO/\B4I*PXJE4HEC/-NWQ&H:@W=%/=_5NZ7V
M1PA\*9O#R^L?+Z].KJY1;436FNW%5X0>-7C9@2'4#HA#7C.)!I:;:J^"`[*]
M[<@I2)E8^AOV`[P(M<$_G7_OA*!"M`2C^":IQEY+:[250/WIC&4A5J)A;K0U
M+Q<FE2F[M<GF?ET\2?F+GOSB`Z;]V/K7MLP+BH1W$%&1_;)!PAR\)256]6GC
M7XP,O'>B)-ZP-#RDO?DCNKA&>9>,_A*3=!#57,(&13F)[P6!3],)]:;6:$8Z
MH80#!M<#_7SZ,*4,-N`91TNC:(7QC+!W[T*=6V<*0.(7'B58PWQD,1=.E-,N
M+9ZHR"6-4T9J\IDO\_IT$[<'$M_S)HS9TE4`A/J?-(A<O'M^Z!COADFYTFFV
MRD-!>,[H,'^JLHFV>52V#HFA)'K3-84/PM(KZDRQ4Z(5IBT?Q(FIG-YJ3)N"
M#4HE:E*4.!VHMS6OJY6\_#ZZ]Y&JD%(N#W''_&1ZK]W6FGIDB%\.>+(K&"\+
M1E(=X2P*[YM?8X0%!X]`69("3V27%F)D+C@2.>,54<QGHA##J>XJ2WNYK%5M
M7XGYV9RR&F+`$XQ^2\L8`U9MB:BS]/GQXO$TI=QL,0<WNL2JJ8.@&=$!C\++
M2?A2LSJ=[!B,?!E>,"+N_6#7>"R5>%=W^9Z'MU4,9:H^M6GJA!&&S!0<A*VK
M_MF'T^Y5W_P`?)G+B$3WAE,>V#1K'1AKXJ)1UEMFBS/WP4@O/;-"H*9D9BSL
MPH@OFV#/.26#QX,SI<Q7JT0I];S#-8AJ?CJ,PQE$)*=:\6I2[ET7%:&D46OQ
MY0H4<*FIV.L`?;<6+L9ZT6!3,3!6JQZQ/)\9\>-0R;''E5A^*5.'@;!E:,UV
M2[T1]%DG1ETA22Z.B,Q,_@K)EYC`0[D.F#M_JT[?NI(ZX>3GK)Q\^[E.2VSA
MF;$X&;'7-+2]5K2O/C<KEXQSO9O_H'^`5E<)/61"Y+Q[UH=1=8D\5R:#$K8!
M\(;R_!ZNO`$!SB'.1"@3E)5C^EG,J%U9(ZF#;#!1['S!NGJKGKS&A(,G%;*C
MI">.K$D-4"3IR<M!E(B7^0UX*<HAD6\4A3Q[E2R,\E1"2$4QFU9^-:4IB!4%
MG;E^"@M<UA8Y('P-M_H8%[>:9,Y<-V>AIZN,)(/00`&^NI;(LRR?F5IK@6UM
M000DU-I+PVXRF9S5C45J<26(Y]S7DPMTL2:8`_BE@;X>>7D+U.#3Y>%9`+X$
MMK97D[MMQ<_--DGFU!,\V7Z$([XM=ET\DZ1M+_;1ETC.Y(T\FZ2)!ZUXX"D!
M+MA)'VU:ECEV$T<Y9B]B!JO5:FJM=OI,>+;9P`ELWV%'14#:%YQ53YW?%[3L
M:721:]XA\+PK$+C^^?F6NF1J!0&_CRKJTXWE4U/&U":FN;7T7271S6ZR&@2Z
M@G-8']<Z<<\N=7&'::2*',`TRXU37`]E^?,XUF\W=:W=[*3.F']ECBEZ*LNW
M]7F$&)^*J'T7DY"&>M051H!E5Z4[UF[68*[VE+4AF5'F]QG!2`=F,HE(,'YF
MJ1AYQ<^]%8A#FR/@Z:_09']_,QWQ\<B;)+=Y\WAN8W]_@S$2'J>.243&(]5Y
M7CV.NA%W':.M=>J-Y/W-7W0LF<X6#>Z)HUME0EMMK1U?%R?N:B[/02/OYH]O
MKO#*&=%!O/<9>D%D-^(S'L7)B>0ZUOG[*S,.[[L79[D9Q`\>)O:&!9&>D(Y[
M"F"_F3E@KP<SOL`+\L)FO+FG=?;J45;QF0>;F:VE1\\7LDJE'#8\-Q\*L<&<
M!-;!N&<<(YVZ#H(2W84I18#=1EXAZ"_)+9X3"=R"9X42S>1F":&>N;_-++QY
M5%Q2G@-_0MC5L^QFMII>T^"_:$O24[N^E`"+L3SG8!XS:8VZUFET4H*]DMKZ
MF;)X`;,"2*$$T<IKOBVIBN\]PLL0/#>Z)7GF!K8W%8?P`]YBZ($7>!]MFUN7
M_5B@U7.E:?Z@XZ:?.0,Y``P#`&"T4R+_4MBPLD%X#L8\!DQ-,)5[C:S9GU+Z
M,982MFGL9#-E)\4&.36K+9=$%`F(=5E\AP/CTUPE6BNR'(MD3PVZ`D7P"-X`
M+`>/@9JXX[%6;P&0&CG>PE=@P6J&I:;8$W8;9+Y->48.%2.*B<D\8'500=>4
MG2/(3J":Y&J\`YD_!A[[FWBA=?3UI^37OV]F5U;QUDW7\H=X(`HW[[`]=KV?
MB.2_NLZ>V6IAWYEQO9SPVV@H!VJB\?=^4ELQ#B0()8Z>9:]!R&]!BL/?)8GS
M`XX17Z,#3/.UR]2G0^<A3[]P"6GA5,99_"\QE=N9H\/LPX'<5/%UIGE;D?Y4
M@SA545IF4^)3`"/.CA]^6>1D58_\^RV%-8K`]EQH*]0V!4WXM=@U\(?T6ARZ
M1LR8@U+6374!V0GXV:-R&:R\,\+$*C:IL-85KAWQFGU&,[ZSGWT5-_9'E2*`
M]Y)X/][,5KE,&Q3P2=ABC>7R+8AC>D?'Z($PWT-BG>=QHVT.<JT(=7)%.B$+
M/#'Q9QQ*?'DG$-G+Z'Y`73<ZFJXW#&7M;G6VRC^S\&?BZ\JNW1Q./Q+Q+?1]
M6VTE!,!^;JD5B02!JJN25S<?*`D/FG11V,F&I%N3VK3W!`_NN9R3.!C0P8O5
M]?C8XS=CR,K^7($+]ZPL>B3(VJA6VW&<*3BW<>WRC5I"E,5)&)>\MKW)U)NY
M(GC"R[9)PGAS7YEMS\_SET5OPENP??AW%J*#(0O335O+YYL^Q_IM#_5;*\X@
M?-/QK0:<K<>DF#[/53BY*0OQ!U-J#>"47DL8V.2?_2'E#84`8]"&1H1=B-;O
MYAM9Z0P6`U]=]%+\#M2OL=]9:$2XH\GGOJ/#B#JMA&U[S(@6V+>O,Z3_:^_;
MO]LVCH5_EO\*R#E?9)E4PI?XL&+W.+:3^M[$\;&5WG.3^NA`)&2AH0@5("6[
M:>[?_NW,OF87N\""I&2YK4[K2"2P.SL[.S,[3^^>VH.+[1ST0+!KZ0$_3O>:
M$57_`K3M=*G)UJ^=>GQUICO."AWC#69`YR!5B=<%K4YSK8.U#EC_M1C3-/C(
MHB($%(!I,_%QPLA#;,`0I-6(=J+M'1ZRA6L#MIL@^>B$#%6"%9_6[0BNO:=8
MT)_,TZ7HRX3KX)^:"UFH0."'LG`&0^HRFY=KO8K,E3:"QD>1X1?ERXIX^*@.
MPS:,;!@^-,=PK\/.=Z\[,LU:\>PJ7K`M=BBM0N0OLOPBGD?7\4=PW%WG*1C@
M[<HEH`J(+$PL78*B5Y<OJ:O6@:#20C#4_/]#EEU&T+F,`<$45JR/LL@6!\@W
M]>U6%'7HEDTA.(='0U_GOH/EBQA=]8>*_>@68XH;_2(R0T$(3J>KBQ7J33B#
M2O#<J42(:90G.R.59^RW`>C`4?\40:@-I!6K%,>=TSR)?Q,FBQXP^'ZW:QKU
M;I<`JO-9)14TJ5+S22@E^`K7C%1$Y'4EQ83@T"(<<OL-C]5>@\J\_(DG$X*Q
MA7,FT2XW$I\+_M1G(K@WZ&O^5.+U>AS"[RV^,ITGL&[]:+D``Q-\$`]*GK'J
MR`@"X9^QH^.N$<.V`?">G:%\9+<+1+9':X9;,+M8\VL3TYOUW$]X!YYJ!DE!
M];"%/_SB&8]_OS=DQW_0T<=_J_BUJ;("R4T2UC_M=E0>M8H]68N!E??->Z!D
M=0/B:RC.LWS)6UGS2J?=_KC#-GP\-&K+O2QX+E$<7;&5L%L8M,U>0-R,'/-/
M1G[.M(.FHRMD6-,N_O%AKUQ]S&7OD2/>)S*EL=:/^A1$'N+%7@4<5A#Z8#1J
M,U6^;Y2(NZEU!QF^-")N#1.;D@Z[<_0GAQ[2F6:+JR3'IMZ5V)M2[%TUI)KH
MOJF*/)==W)>\0!6#`)S2D#($W7(-+T>%G4B$N50@E1/1F''+P:3G(:*M8:`1
M_40&`=TF3C8CIT$'3F1W0+-COP.K$4U+_%W;*'?U$)66>\I@?,$VEZ+-@;0&
MDG5=\I!F^$N[B#U,Y1#L/8=:>5YG"<UY17`8CESE!LOT6TQ$@*!E,AD,V75B
M,.J:]TG07:/WJSB?L;M^GL:G<^7??Y8MBM4%I]7O3=JLN(3XR58^W`8GZK[/
M_RO0:H%T9O&7D"B3+U<+R"2P/7NF60K.^;';'?\3^EB@;[-J)LDS#R[28IK,
MY_$BC2TT'0>@2=`G6/L/1QWS<G<7=B.(ZIW;<QO[X_&Q1X_IT3#][3>UCXT/
MX`A8TE`[(Z9PV638?Z1<-G])\^4*:K@`5HD'SP&`-UCQ:FF=F)UP6;(#Q;[P
M;LCY#H?PF$)X?"PZ/9/*3`TAA#&V"-Y+`MXQ>SY=G&4;P[B4`VT1T.]<@,J`
M7@;GSQ!LGRWF'^&*D\UGT=-O7W(C#?AC9`K!Q@M:;'--;\F:GBE/DS!.DY;D
M.!;7,;"#<,J3`0"BKS9;#YZR+:[HO^@N,5[PM_@JCI[-XZ+0_&Z:Y0RFRVPQ
M$Q6Z8N0O4WAJS?TATVQQ,>=D,=#J]THRF//5XK<U(5W8XRA8J8:K@IN`GV9G
M9T6R)/-)8W\IA&D@QPHTZ'<[[/]T?BS2.$N+RSG8/]7<T6HQ3QAN&=TQI?LT
M8\BY(%7FA19X-H_?GXCOE;?]=T]@,!6AHF[H3EVTG/(-T*#7:B]"";-8A2&!
M7!E2+W$G4-:?[.W7[M:2J9X,8WBPX`M=QT1=4KS$`8=AO?07)_U>N83C!K1K
MT&WT[TJX3HH,)/*[3+A74X;G3[IG%(+_[%QCED.4H2HFLQ4>PZ]AHWZ[.QRK
M:]@6=/*@^Y.AI']Z+3T(9JVVWQ&]/0AJ2Y'_S#3YADM<;'65MZ+;-ULA4?8_
M&VT_:(4E]?]NZ/]!L#LN!%M6K%HJC+D4)+036!7TKFIFGD0)[]T"QA3K?/63
ME?:`ENN=@-2+-:XA+7=HL,RWN+NWE"`2YM>6NW%O"5,@K(O,?P[<A@>N6K.N
M/W7;TKWOW#E;YU)UQ\AG^[>R&R*B0&'P^7-MQT4O3!'<"IMNZKF!"I#=P\G`
MRE7:12H!U$^7A$A4*KR/P?M\GEB8!ZX_(,5<;IPF80$[[J"#TCG&A*Y:`TF#
M$&OC.+I`6"UF25Y,H>B/B]2"W9:$W%S38"BGI0OX,'^0+@XVQ?+:0DNRAA+/
MX?&E.P%FYYU0F_/.'V0_ZRQ`O/>/.#24X_!*TH3ZV]$9<-CE>9ZMWI_KXEG=
M(21@C3H3*ZEMDY,3Q"?\1^F3GJ46W6^';-P)$XS_0J<Q:#?Y\;R[YS/\#K<3
MH@6$NY!"CW/+BS=3%=CLQ'O%ZA0"SF8TZDP(UB&DO0_MBFT5\2R.DB;?1'M=
ME4M-/G\2[0WVK'CB/)EF[Q?I/R#\7W((1N[W0PI=>!/"%(F]QJ+>V*QI'E]!
MW9TS&>@GIX(%>"B-_X@W'UL1RM$!K-+$0XD>?_=;S'^M"KG#[>$3%[_R_[YS
M/DXI^MV>7=?-';SS?(_WBNF.(.)I-`I/9[GQO=Y*AMU=V_T@AOIKLVA%)X&$
M#6"13#C-K,%,#B>,F8SZ&S*3CH?`>A4$-DOJ>0E!Q/_M[=\LQ]'P;$)RG0T8
M3E3)<6;;Y3B"P4!\W6@\WI#!;&__PT_&_S6(P-P67[I=&@FSPC;D2[,;YTM^
M-@1ZYLGE,B<,:`09NZ/.D.1$C[O#=G?<&U3G1,-8#QTIT<7'B]-L7JR;$PVU
MIJ`V(+OX7,?YC/'Q;#Y/V)V(4<]EQJ@"JCCQIHW8!7":@!J\S"(Q;UONK)&B
M6607R?(<Q@`$\3[A"V+@,1(9=.IF,T2"JM"=F)Q<E#[WU>SA56X^8)>)O==[
ME/B\R9=BG='>0V56<_(+*\O2G.M-P[F^W&"N'Z4V-8;LP'%_8C*[]5%4G:1*
M\12>G;H5?`8"]N4M`/;C7D,R[ATR,N[3$D?N2'+E9(\O(?1!G2-@U>P$3<]Y
M&A-F,HF#>[#,#BX2N-Z58V54,]SF+F3T:?./'T=6RWHY>G99AOS;53KG_:%*
M\$&Q;UF1ZN62\:`+QF9XT6]UZ>3EK,2K)DLBE?$8K:NE$M`N\X231+&D)''_
MT:.'2@<I/TZ>U(M6\6".$G3F0]J6Y:BP^9TZI0-&`>-AAYB_;I8"?$)/D<2_
M,DW8K**2,!HEV7O'=E-10TZT!6IKQ)8&H*8<=@A;LJUUDO3TYF&2(B4W?$\9
MOLK4HQU!/T+K0Z8=,)0MEQ]]H7U6W<\=H^E<F8"*CXME_*%-^AP32E$TI"E&
M;)-_=J)4BV<)',_F"=.C5I=DZ:YV>^0]<?Z'?7;^1[2FVZ=!=:W1L<JI><L;
MLQ&LV][&1@<+"B"-="%J4KGQI^R\'8'A]+>/;9.%FYY0?L[9?4WV1M0K)*V`
MZV[*#_;<C[BQ4SW6_EZ%4#1052-7')T+Y"*5J/$D\XY'$W:,)EV[4/Y-(;;>
MGJ\QO'UJW7C8YKM7&R9P,YO;Z'`-T7Q\:$JM5XQ3@NN*[SO4NM><99G]EBR`
ML7R7+E*F_ACGOH:=-A01ZQT-T_?BH_T)8RJ3CB5";G;=-\2!;X0$ZY!826.$
MOL8=X#'=0Z-`).9C?X/*V$&R6%T<P$M/L.$"5K&4);1$';(X^H;;X7AUS7V0
M@O(^^0J_IIT9V-=LW^+H%_P&&W6)+W0-KOHR9T;%X%=F4>%?]NJ+-W)-$Q9'
MSNZ7=H>&=0I43OKLQ$X&INWK3F"TIAS8G41I,!V#T6'<[Q`CY.1PP#:"=!;Z
MG?("4J?>/J7!%>=UP)^_XGRXY7*G6<EY<N7D_<WI]9!QI?E''K,O]5#*+-OP
M_,=PY$+-L_%@:`6".2YEKUU>!&+=L@)>*MFR+Q>,Z.4!Z6)EM%D.?JR3<)T6
M'"D4B7`_C["S+I$DM"+X[^L`T&19];<?59AK)ZB#`#\80Y"MX[X5G71;V[E^
M*+\+15M)#+@E(ED#DD^/M6V17C"S&8*)?]0CS$:16+,64=!OC3=Y*C2-JKZ\
M,3==J>)ZV)X-VT,!PHQXK=K&6)L*Q1U!:Z0.:J_3Z;?9/S2&\%/C88W.6%O&
M3#`1\:MSK]18A.>I/.-Y*JB5/9M,X!!?SI,/9J2>.\"2/RCVWNU,"38RTPP:
M"M[W%G@I[.\BSC_6`Z@?W2J(G"*[0T:1O4FIK4@#I`:&L4HLWP4T!X%,\;Y-
MH(,)GM^7N[1VW5^L$I+XBN+)2EPU!=11]]$F1E?JQAK;Q:F.*9_LGS$M:7>K
M*PN/J(AD1,4::PW=Z`E<V"?=0S-((/I&,LX#[";\I(U=C+&]<,I0]"$J4C"2
MG.79A;9@1]F9'L'H[PU&17M(;F$I=U/10ZBV*A!PO&03+O6$N`R4+6P`]3K;
M.XA/IPT`&O2GU;_'^8715J"N%RL;%>*7>`=6F9C._1%I(1>DN0`GQ`&PO\.>
M&7OP+X7Y]9OEFEMQDWOA/2C853==E`[,!+:MTROWR41S*QYV=6'W1;I](P:7
M=AN(%;M_1/L,.X2"&I_$HE3$Y;GZ5>C&V+UNG^F#73OT9>OK")%V>F&;KLR[
MF0X#"+E-X,XR5:0#DL%J%5%<I\OIN7V=U2W%N.S/F>SW!"Z)"U/Y&N8(QT$7
MNWZ2*0)YPC,%[E>D2?_EIB:_RM@!2^=)U>3_?5.38\2W>^99<A8S(GHD*/EP
MQ"AY;!4!;;AOG@"I\A(VC'@(V>F&@0]5%/'IEZ5I:/-E_??=69:@SDW6I*C8
MR[4<_D#U$>.7@FT=3AC;&AH:G%&!]R63Y5,0E!C\I`H\G+/+_C,F,Q>_Q>^3
MVN#E<E2RY\88_0IJ-$/%7^\_^^O]=T:]82]/_Z.F4>AIG-=B@^D*62$[U?88
M-V^S?XPP]EO"2F"0MHVF6\>37_/QC,)I_$20W9CI0=UNM[H5'`RE8@A02[!:
MIU7'!I#@Y]URFPOIY2'&Y-W'T=Z+/7>?C"+Y^PI=NTRM.<`V.#O8#70OAS!^
MD>J.$?X"WKU"'FL:CBW]/H:'1Z`&GC-<*<]A7!ZB1(;B^FO&ZP2DLV2KP:<$
ME+!(PUVS@3GR4`&<:!AB1J172WLRO0CADEZE19'DRQ(JKL\3AO_K9.\JB4X3
M=BV)B]_@"IZ)JY(U6<I'D6=*V[KWVW3E0.-MG'MG)[)!<AN82T]90<Q\ZSES
MZ3&6VSNL:1I82_OAEH`'>_N?[6EH.9RD9J'Q3<[+383JWNP)*IT#=5<B=].J
M8U'3$<MQ#B/MJ?GG/Z/=M8\3;R]*[F!6H*Z]N4XU*/``UM=<<9[/S81:%ZZ`
M[&9,G$74;?>6I_8G$=I1$G"#PT!%=/H1S-,7<6$5P%&'#)LW5;A_VNXJNG8J
M4!,Z_H-:J%LM"8I6)2K%KPAYJVG3V>L-F1;0&U&OTO81%J10M3WENVX<A>%<
M?'^O<3M1H/=TJMBGH-)#4+UTTV\%?ISG\4=BL(J,(A><-\\N8*;?[09GRXB_
MC.W+RA$JW4Z%V'(5LGBZ9UKMC/W`J2*<"C/E]-05C5MK2G7H,7BYCD[%_*J,
MAF3-^'+(W*52';L-RF@836HU'F;I1;+`IDH\ZMO75Y?,_:M,??9[_C4^G(^6
M,X*=/-D8!9ZIH%WI8>G#U:O?5^VTUR+/5N2,K&I,LRV=!TH?;I@**BB_',1@
M4OQ&!%\70^&.B`D]#&N?A?7`,L_)T08CF8&U34]0HSGKC]L&PU6>S>V`V>P@
MMRH+V;1J3KK?OT@\-_&%,/#KS[@$8SH64QO,U&2VK>#LD8VSDP_3)$%G[+GJ
MMLLH5#I["AY;DD3359ZSO[7ORNT7HG8;Z<HXED]J[41.M`*76G0*K<X*68S`
MOY_6%8%-K*G5$PKW,B`"5J$-6YH),<)9[*C+6.QH1*U;=QY_#0HR.!!Z<QBM
M)V7UM*#>/L-^;V#66_(J6>">Q8`^=G2[_.S1@4\`NRC*^*_LJ?+7*,],+RA#
M7I)?<1Y^D15PZ9ZRS6(20,(_BW@`@NQ])EBB(4"S^>S$KGP!W-=1$$.P%L<W
M#ME+!$ZY3H/T1@-:K9:[09K72Z5Y>5GA-XH59B7KAX!3XUT>JO&DW1M8G<)#
MM[45@MG-=U_K,O+YM8M:K$]!=XEH)$+<4ZR'G(9$&'X!_$:9\<+(LCEG&HP9
M9QI.RL$)2*IHY9-$2QKI8GRQQY\C+1/4=V+DUQ-Q87:]=YFRFS!HNSDK?/38
MDRNO0$/-$/ZW$.5Y)"6;)!RM+<]E29CX"G.$(>AE56"D:_+A,N;-#>R`F\+T
M&I5/>#R;\17+3]IJ4NWV$:9?MXWW2.4%\<V#Q>\]V2O=):?SK"!H1AYB:]>T
MAR,;6P/O\$LAYQR`.C?H#\JQ)$%DU\R^TYP0PVS$=XDTMZ4J?:[$ZEN_CWK7
M)M\@>UMOPLB[W^F4[&WBUEUOS3BPM8.K>+[RB\`(\^A$NIRC#I%;1`IHB'#D
MA_.0R83!L&R."8:^#J"6<W7BSR.?*2=T$5XA:,"/&]4'Q;S?GQCF^W+CF;,8
M_`7L+"SS50(>`"A8ODRODOE'8B666U1&O[!5BP<>0_FV2N,^SJ?L^RI?4;_?
MK7X?P#1>ETMSQN2=9MF<E\N,%TL>C;=3.A<=6'Z71*,.)J-V[[!S:!CR;Q=U
M06)`X#(,F6'%\!&[-X?>)O0+(<']48?$5)3'1H/85#:2JNZ$XO2&B#LZE!:Y
MSAD,(!G8A;W*J5IC;D3DRRK9]44S\'$"W7<,6?.,?0N9I>\QODKL4+R(YE9-
M$_0/PS[//8>&*-SPK#^GW7`A,C"^^NHK)"<U0[379A<@HT0SG($\N82K$Y:#
M3'D*E,#'7L%WAPG7>3I-X2JU*K#-%[N9&+9)+2H#HV#"?`Q!+KUUO"OE'0[9
MX%VW+5+O?YU[\;#;8UQI,":!%IL=B%:T[IF@,LTCN'?=I2$J,"J&T`7FMUHX
M@DZQA>,&`2:;%U,19W+7$P1@P;P;>3A27<&*.W2XUPGS"3_N:[B?X;4@<B;"
M6CTJ32J[46!8K<=SUNQ4;,WU4J*O,"JL+:H2ZM#7S74^`*&ATTHK`(,^4P`&
MHY[E%WFZB+++!)M*1/H]2FPDMHN1+B3!@F5(7U!-TZ082UGHZ$'YGR0ZA^MB
M3.84%]2WF'ETS?X7P_G(@$->KI;1*68JXEGAKT#B$5PRT\59^D%5*61GGUS7
MC<'Q79+UOHD)R5@=W_1N._I2XH1>V\U'`\LRZ@CB,R8E&%?@RV<7EDPA#1KI
MT1Q^HUT)-]H]B;K>ZM_N&ED5C9I,6@JN1O8'S=3!>DC7I-6=0$Y;)'N#[OL1
M\]`*I@V#^LS6P]>^S]1=G!*;M<+G*_$Q1T:HW<W8CWTG]<H3:C]:6RU>:5+5
MU.-"9<W(-%1*9=.#/2K'!%Y%Z,OXMP12[IA@R6<F:IP4PEAMOZY`_*,'(2V<
M-R`/)<E0'QMV!^T>=!HQ_8[K\Z=61$M9>.-#/VLFMAWSX^?)UFZN!J"/NF^F
M\I_-*5_87!)10IZIG3]`5]D"._1K+?*)TJJ\'#Z,NZ^C[:[+DM<,O;Q))AU6
MT^1!4/M%-]MNOFB3D?O;-D[9<CUZZ?B0Z:63KM9+@WRD1<!]ACR>KW']J:JE
MTZRW9:4A8CB<,,$W.M2"[ZX@H%D1G>V@Q$]")+_?#OUBUVU.3-`'M#<<C#4Q
MZ9IS7-7$6[4TZ$"9@<[!A-<D9,(W7<;SB'&])33FPUIT4*=9)?9CZU411+ZZ
ME&D8V'V`-.F+X8Q#Z.-!?^BL@8"U%C1G4W;FFC*2PG3\SW^2<H1/S7*$O^SM
MUP<J"7L4+V+$UG.2SMH1NQS*L&:=\V`%$9"L9SO7>2FS9UT44BQG2I-\*!NX
ML@_-+1413.[LW+AF_$>/V#T_FP*;=7448-SGH\BT=05SL#&,UWU0G-9"P;8]
MG8I9UP/$'L&$98>"4\@6YKIA9T5#9"_,%K26%E`/L06KRM$(*3_HP]TW0/A0
MO8-]#K^>+/.8*0_X\1/QN=HR_FGT9/TE.)&N%N*@A'0[J$_9E$E\L3[@9(!M
M(%\,Y\3^0J)_<T1[H79@.ML.IK--,9UM%]-9!::WA^BL`:)G?D1'C6AZ8U2G
M6\9U>CO(3@.PC0K?"'*LQC2DZ3-24NHJ,W\J+45:>]!]SD-*'BZ2:U<P*3@9
M5$!FL&83I`RCJK,M72=T1D/YD43L63M1=`+TG'`(3`E:!X3Q]!9UG'!X;4AY
M;S8WM":<=<QH/9RMJ?"$@.]"]O9TF_#E*JD?`K1\^(:0'JSHA"/8!_'&.DWX
MVK(F&,YN%L.A,C<<P5DX@AOJ,@UHN!&*TQO&<;I])*?U6-[,0C,\['`WC^I^
MP%0AT(<.NR0^T%T1D$[P1,3'Z4@,I0)8,3Q:D;I.HK]!*>G+/)LF19%8QE=W
M3$_+:,WIP-TN::'PN^ZSL-M$A8379/D+UR3[31HT,)P0Y<9?T7#SO1R"M6TX
MIB$%<N?>T@',U+V<32%K.=H^#V/>)5-:?1GKU)D!SS7,\SK9\YLA.5%"Y;^Q
M;LEQLVMK$)2/B]WB:OTQI-"=Q6KAWAN.8<LG_8;6^E_VUK,1!PW^8J_*8K]7
MT"PC3X)GX:ADQ+;N!T`!82!B'T1@447H@>+5]/G[9MMORJ.*6DY4[\N:I<4T
M3R_2!3J;$(".RNH=CX"<:>OUN[1O08(/-_(V=C)0#)M;^VGVMN'AG1RV>Z,.
M<;4)1:0<1K%:K)A\/*JD;IPCLJB:(QHGAI0@Z$4NNDPF"\;\()1?1<>".U@G
M*-5C08<G?,GAVU\7>5U],"9,'QE/2-A),$Z"Z$0BZ;/%DI?$'"\4JTOT\)Z<
MI3DG.>BPW1OU^V;6J'5"M%TJ^*@TJ!GZA<UWSY/I;S``X#O9`T.8D.':^.:"
MBH9?5+KJ2$G@?5+&#DC(P%EE#@7)GYE`Y;!);VRF0-X0#@,KC'Y1XGA;P&JU
M;7&+:-V0IN&^,CH<&:E@$!F&T?V8?TF'85,>8^,;D9')L9(6T?(Z(TUNYFP.
MJ'V_*(\093D3L/$<(MQ7C#\P5$+)?/+R/Y(\,_K?,*R<++,3?0=ABS&&;$4]
M675/C&&%<L%%A>^]JR0>W8`2&6F4/(TNT@(CV?EYT4E?&!ZWJ&A>1#6%[IX-
M0_WY=U:OD2FDRIR]2[>7IQ.7ZUF&,IK.N_O&/%7WBPGD$TYTBX:[2$0E7M"$
MJMB/GZ)NC:3"(YJZ>_M!1!8^XCL2A+85L@OES4"'(82X(1L<]AD;U`4A[D6E
M%.<HFEZ>R%&C!]S6(4A`<G[AJE$%/:)2P5=X7&<+E])]^7&"3.3)D+8R70L8
MZCU:'R0;L143<U1"V-)H3.JLP_Z+MM=/HAZXS^"U7SOO\))SLJ<^Z;ZSNIYJ
M&K(2KG5@JTK%4<&?%5D1NY&O8Z)@1OJ688R$)3?%.R3D>M]7V%?7+*B/*G:%
MU<C3T-8C551DMIXA5D1.3D-V79[0Z_*M;@BU.<)SQ,(86D_0%8/LV%6R2[O&
M+NVJL%,"H\(>Z7"/X$C"W[7"F8.()BRN>5MDX[+-NFBG8?N%1C36F#_@)=5N
M#`11`Q!-GURE,UY<:9$MF=XM$?*LU9(7QY<@)U?S&7111&58YA1D9WCY7)Z#
M0,7.SJI#`?0/A=1%S&5$NSFBZM73'U]@I4E\_\V+MS__<&RJ\F[#M\2P%7#N
M3\JP!9<N[R"^@>YJ<9Y"K@5;?OY1]*O"7E&0?LH3+?BJL%[V!VPX]9ZA>[XJ
M#AC&[]%CB9>#ITNP<[,;-],EU);P.A+/`8]GM+X*&^N>:(LUA8IXA2SYC,$5
MJ[,SB-`07ENV'PC(!?X-2MAB&:<+<2T27&?2;_>[AY/21>].;G.%D\/8:Z$Q
MUQZB('IHE>@!/ON#.VKHE>_X?U^_.%&+$`MH0^V8Z;EN*`HI..DRC>?@8.)L
ME_(0MN"?%GQW"[*Y"C3^_5F<SM-5GJ@'^$!L\"3/&3%>L)<1T;&H1P-[CW42
MV;9PP*(XAZLQ4SP6[Z5;"I=D*S$MRBM$P+;J<:6Y1LM69Q[J3EA*O#AUFI:O
M0&XK2(#11F*MR"BBMD[)M%;DKK@M"?ZX5.P(.\<QK97]F2X8C!*7E=*P524)
M6U:$D4\>MDR'&\5;)"FTI@HMJ2CL%X0V/"+=1(,EV1$2$K2TX_T`8-'23<5V
M`X@1CBPZ%K%TE#HF&F<E,FDB;EL5C,(M<4/TFY8_4XD*7`OM8*&:)^Q(KB[U
MZOP[62%W<,`OTK-9<A:]?'7RP\MOOW_VK,<_%GUW^/WAY&3Z(=9R_?73-T]_
M?!L]>$#O&&WU7RB?R_#[$$/ZHH?[DAK@QOOMRP,VR`R%")5THMH7"(`<KO2,
M^N?I:0Y)1R`$+Y.<_><"I%3+)%R&`B'3!(L$@<7.Y@$#'V]]PO!&?25\#%-L
M\1/'Z.:4',.O))+8ST\_'[_^^?CDVY^_^^[%&SY-GKP'J<R(\"*YR"`+T",A
MLS,^QL,?7KSZ_OC/T>G'95*T.9UR-KZL./THK#U`@/S$*A7)@DN^%!M.\KIE
M;"1>>R%/$)"O7(-<Q!\9(,4RB5'68D2AZD@-,2AM!W!\(#;1Y3R><OY41H<;
M&Q2G3`<1&,&E+`Y@=CZ?N*"(:MM<`X$M(XH&I00!5]N$2>";3GFL>Z;P8DBX
MDTB$T'9!=$^!5IMR;I.8W+,R$@70A=&8,C"0J(5@[U.&`#1U\4&XK:=(3^?<
M=3)+!,+X`AE@`H]\$\_R)*$K><@9"]))LA06(PFTME3C*HM'BMET'MD\5B7R
M$FXK'S_H/@(SE;&?\*14%*)LBJ61R1N]1Z43R;4\!DDJ:!M-Y^K$,ZZ@6Y#F
MJWE2Z-'ZCYA>0JJNJ[K,D'6,(WYE["VLBP\$E,#9ACH'_@G;2*)\F.]?_<R;
M'$-Z7T$T&,[@V"\6/WQ`;X)MD2I](K5F3LEMP7P="DWTD+ZOQ`+_RAA,?2=9
M+!];?8S\5DMKJ?[DJ^F2"!E-O61"I21I[<G6)=Q*CPI!ED\;UV+YCA+R#Y76
M<-`_<H]DRKKGJ=`T^>&YS#.X/*A;"9Z<,H/ZDY*,`)*!Q#),6-/AB&+H.IW/
M!;\R9UH55*.PU0'0P*,'7YKX1?^V#K["N"J"!:R*O%-"@13Y\E^TMQ*`_S<!
M2+BK"EDU89K7<2'Q-+/!%8^4<.#>&<?>2(!DM[(E+PVD>#3OW$"022$P,?.5
M%A"/;5JVGI1@0V%4YP,`M^.L_.&C3-/<97Q#S%YJH09'B\%^'.>%4!=BW1>1
M4<@5W..!I2-8"H_4"1[%TRFZ,-[+>H`M8K%D"S&,*"8M6<0EU$-T.BA@CQFO
M)I?^F05]H?4=*'5/^O[XP1"J?3TL"MER%'H!B0B,?CU?`6)<#*BNL-A;1EQ5
M0`V)BP9%2X(0.<G@G0`=N4>42D'KP=H7V#5,Z$>\=HNF7'Q7[FUA7B7(6:)1
MDP\5H?I(_<B^[6CQ>QWS7N-X1S>GTX>S4SJ;A`&QU97XS[YY;I7CIK1!I1L*
MH?^GR'^!J@179)0NL(:Z@.XE;AF56F:Y#57PQ-YAFR/6<!^+X,LZE^BT'B]X
M+`J#M8"R)%C!G?'&4W9$/[+-G\8K-5!4NDH`G4F]I5R&V$VDIKI*;QB6?L]V
M&\:7C!J)C9&?EG5M5/E4LWA*>6Z!!D/@*P_J2()<:0GB>[6(%^ST"R0BMMY=
M?6T46M*_EBVS;-UF(&JF"/'-\6FJ^**P<8^[W79OW",MTKV&!U]E8SAR?,W6
MRG1(3+D8D"$V'G#]<5\2KNE,VJUV:YDMD!P,VA&7^'T>GUIT+E@,..?Y-U0I
M>+F$(X`V6<]F%!G$N4_CA23'%.)C\F2ZU'5TJ:XLFA0ZJD;GR3R!=`K#KG)@
M69VT^@=3OF=:S+5L\7009JDAV/@S&*5.8]3.W%7,K:AV"GS9U>[<$\[GS`T!
MZWN_.QRW^]TQ:7QS9PFPRDOV;T&%VZ<90\J7#KA7RFM!=G;)P%WBR^R:SICE
M_1^=!@"V#7]=W">R)#[-H$TJT3@:T^^:'+</7L7^H4[%Z7<G'78&)D;SIS^T
MY?.+9#%C^`&9719APB;*,/;J^=,??GKUXD168'_#_75?I(OI?,6NH???)\OL
M<OG5^7U?D?RKC"D/B-"3%?A.),`3!O#@D$2<X"UT<0"A2[!SS_[\5)@9M?D2
MPZ&`$M'JPJUN+B+Y@D&?+L"VI9S4,,@#&',_"O_Y*Q[3!VD1SQ>KBW(L(Q]P
M'U.D^=C\2K6O5G1,;AIHTF+J#M,`H+L;&G"RWS0!4!>/>$P8*'!#>YUNF_U#
MVTG?792]A(/V^L]/)5X8AG1(J/KH1I%FT^,%TVNP&\44.U%<B:,S&4*XT>BP
M5$V]I%1I[MN.WC.%>LE6^AH(&UTQH"[)`#S-NJZ27!<Y5$$+OF`:SGQ6RZ*L
MP6J6B=F!;$92J_DGT/&O4[!5,^9\D;X_7Z+-4=_P2IO^7ZMBJ>"]I*M@5YOT
M/807DL0FG>J(I-AG[*;?'_1+!;=O$&>5X21-$=>2K;B183-V;G'V59ZH"^A.
M8VFRH^Q<:\N3G;)`L9HFW^*>AYVD?J?#J*+3H<'4;LT(WODU?:=\W$<6";'U
M7&?Y;T`S'$I_(YR``R61?___%0R[[9*YP(ACE2`P3-+)#>\_7,+X3DK'D86P
M2).DO?$"!E5?D1\G4%?[8YHU>UN(JSU5X=CSG*ETZ3Y3-W:<U(3^X_2H?)QN
M<<_9STLHR?((7+SI:9(O/W[-T'H@=/+IO<>;_]Q[\^QM=,9P\"CZ>GI5?/U^
M.OTZ>3\MOG9/V;ZZQW3I/$VNN+OT*L72CMVO^O>8EG@6'4RC@\OH(&<?1`:H
M&&M,/MCI,2[P=6?X=6<<=4:/>I-'A_T=&`8(W?E@KQ?U^O#@8%)B--]FQ1*L
M5C\^C3J];K=[T.UW1NWHY[=/5?('%)(9J,!EK9>J=8)J2K\@0.`W7.5XS3UE
MH%X<H/]41Q-Q_HR68G)%YEXE=&QB`P#8>6D%!W7K-($>6N(JY7@3#HAPM;+[
M3I;S(9*+TV0V$PYE8;K+3O^6B)G,>"/A$Q3#ILLBF9_=$XW&X&/PX;!YXXMT
MBJ7SU?U.C"5?Y`ME#S!-:QI?@O&>#\,F.,_FF!`:+R.XNRVCMZ^A`Q/7+Z&7
M*[KQ`;72RB==Q6"%POBR5S__P$U4_%4H@80B"WU,!2-1#(0[!8Q/04-(,/J_
M*\\7&P2N$/>,.SQW-,V*$X[,D\LE%$VX9""I'E5EM]]#X_FC>R0?$%\5W'C8
M'BI.O`X]M90BQ)8*1Q"6?)J@726[N%2F61P!CUDY^(/?'T4$"*J]E\0CKRR#
M47IQ.4_`(2RJ3K.+^BP#JZHH6RW"UY#M,88;EQ0=X,@O.4-K@[MXFO'F>#+@
M#1MAK"[Y.*H!AC#1`AFD"^(@=L72R(N%R'A@G-UB\C^_>:'NH\J"^I_S>`?/
MHPH'?WE6N9TP)M_U&<:FE<(G^"A(?]HVW8$03*G4JD^[4F%A_TNQ`?7-LX%2
M,DW8C/#H8:\]ZINY'_@MZ#@="93XA%<.X\U%Z(`'3ZA?6,`4E9\"]5`9&3\(
MOQ2?;M_Y`G4BN\9#GW"T]]?.'AB'_\#X=@000NZ0%"`5-+F65!PI<S$2:2U]
M(GGRO??2:#5Y,JJ4%*K&`=>6+3,L@Z_Y-]IY32HAF\_+^#A#:LN!DAKKZ3^2
M#)4^B]Q4*U^;AF30)-TO9=:424FJI\)PT.YV1F8.2SUA"7Y<R7IW:PC+IBMI
MN"Z_X^SYTX$WOE`FT$8D3*3"FD>D"<6K)FL(=Q?@_H/SG4W)GV.$G($UR9^/
M0\Y`F?SK.3,?I)(]VYP9MI4R9SZ$_);7I+RF`BVBD2\W=AR/&E"X[P`'G=_=
M4DB'@]"YJWC7&Q5EGG?Y\N\J!X,[KM7%?M?EB-X55GQYHJI6MD76I,ZAGT=5
MB$SE*"RXB!SWV^.):?=_0TB):E3/WW*#M?#S^^)I7XJ2J6E!H@?V"AU@FL[3
MI0@)DF/0.`427\I1_/RM&&LA0TO1('!QR48ID3;:GDV2UHXNMF9@W]WNJ-WM
M]4W3_6>YZN>XFP4^C!IN`TQ4$(G]7#3IH\!3FA2W\"MBGQ6,>RM/[3$)OX-H
M6PP)!U7]>L%CFIZ_U5XV?%75CMV-Q%[H["%8FW?+=R.G!@I!C@H<OK'<KCJ7
M\5@:`/<)$O&$G)^+'67G#[:0TT21@1R`NPQ(&5O$1+:(`;^A1[H<X\U4WHY0
ML0++\8-XR0E!]#:$/)#9:NH")HRSLV$`G8@>P>#Q,/3881B0FLDWO+><9-5S
MNXK9SHI_LSV3'(=!EBUTH)ULO]CT7A?[;G8ZI$]H$C/-->!%2[%8CY0JN8GK
M:<:%&5/I#<V.(G+WN+[%SCWNE$A\T!M!&Y6U6DHYH5WLN?;]!*L^*J8M=1KC
MP^CAXZ@G;Y[W:$E*_<@N/PBE@7ZG<3O_PU32Z7*%UH)%PMZZ@'!0!,0,F#"&
M8@?$F.O(>,S4R660XP/\JFW!Y$OPG8EB#MW#3KL[ZIOET3?$>,L:ANBMC!N<
M,7QD.<K1Y76F1[CE/0K$>ZO!5K:"E-V6;R?K-M(H5%`8%SI=#97PS1:I&2##
M)+%<Z1<DWF4=BC*T33=I51S]*6.PN58CNOTQDS7JR&NN_2-V\"JI7B_>'G,C
M'H0?Q.4'WKYY!DH0>XQS.N!F[#.5ACS#6,[ILM)ZS;,F9TD!.G8^W;_G3L\L
MENZ:)>P5<;K&A^WN1`G2VUR<E"1=0Y#(%&K,H&8[N$OJ]CC)E4@&`([*A@Y!
M8<GPMPT,5A&1/3R2TF#2[G6,\G?:/:]KQ`+NHSS++D")AU4Y]48EH>0<TE:A
M-9)G``2B!5-*^.:HT,-\*D'$0X0C$'7FY\N95/=Q(K']1%/"-Y5]A$"@M)M=
M`47*MH?-WBXGELH.S`@@'=]+]K)T<H.=HXEBN'&2OX*50"]@F;/?&8-G8QYM
MLA>;;L/Z>V"A7R88)?D2\1^))*?3Y'VZP`AM/2"'C^2]QL+.LTC@9,8Y1&KB
M&.R$X<,U#,M2OYAV*>I2;73D',:<%!<H!^YH%#IQ4$&#7NR(RVT90P9RZA>_
M+=)U(L`8W,;"KDT)ZKSQ3%UA<;S,BA35H-<_O;T%FC!WCDT>BA4XM^QQ(<,F
MHW9OV*-1J@VY*BHL(9S5;Z'^Y!RW91B>-^*_5#+SA?K$<P/)K/6!8/%\9SA]
M)7W<%&EL+@6<)''K,L&IY_%AUB8FF-!T(502TY9E3SEI\*Z(H'J=6O@\SS;0
MJ>O0O$TIYT/U+0@[P;"*M8G]4['.S:5J9?2">W`,A.^,V[WNP(I=R*?`&N'Y
M?9=TKM2D#<;6<E]R--^6=0PXC-SZ\RUTVL@Q^!*O9,)&I'DGO/0@C1X;<QU%
M*?2J`V0PM2*5@`OV_&MJPO).O<V^>B=JD$+-R-'`<K<'X*)2UE3@HU;^W#T\
MK4MFW6&[1U-#V3L+*C[9K/(-K6>5+V47ERLA5<%_S+_WR-26^WK;@+$[69"P
MN]<JW:'7#`=O7%>I[HT8DB<=3;^WC^0@]>564![*U6^8I6^\L;4'SC,#GCK(
M#^P3SP?6'#NJ5ZX;<?@[PMPK^#I4Y>R0<]$(#4V8^QWGZVNR]$H*&R-J0_BZ
MR\C6C-6X+)5/>>ET]-T_?XLY,ND_@&]`J,*9DR401_:N<03-/U51=@!?%1@W
MCVSAN7HX;3[4/PGN#ZT3$"Z\2Z^6!<>@?K@-SQ;B,3K&8SW(D:&%6_5V!;K*
M%=YD6%L](H5]OPZ9D0N;DI2"4&K<,$IF`7I>#:/1L4%-,E`&G(WB$^5OES?S
M;)4K"01?2@"@LIP\H(O5?"ZO>FPAU29E>X/9+R%;Z]Q7]MN1=-67-Y6<@2)Z
MI@)8V!:;$1M!>\,['S#@I[5[`YM`3#5.GI9\6.8D*;D9RKJD(H.F6378D0H.
MSJZ2_%KUW(!M5KQ2(K/X50\-W&^JAY[-1'0G.*&=VVN]#Z#1Z%';VD-YV"[Z
ML!_,[//M.9MODZ7/?9?I_H.Y,#'`M99>C=\>/WUS+!(/%E!F%`--3Y,S<"B_
M>`4%8_`1=076K4;8?B5_7\58Z(@]V=::SFFVU,663Y/E-6288N*Y+(6L*U:B
M9B?26ZZ22I^07H@V.;3Y:MH`^=J^T7ZGU^[3R(-;D4=^.^X:TNEV;6YNB<?W
MQ,,$_+N@I5ZC&[%Q'^ZX(LE+UE;@G&044RS:%Q2G8.S>L%RL=)%7;Z&,U0YT
MD5>(V>!]_#Q$;4-5?+\J.2&`I#ST)`1R]9%W"..RHZ9,'^F6[+WU!,)E/6)N
M&D`@&\G[)OO6K;\];:8/B)L/G;:Q3N`88QV]@+R^7\6<_K44@T_%)V]>`ZFX
M25?.)PII0/6R07B@D3QV:NAUPUR,@U3(O&0U;+ML=Y`6AX,#M#ETCJ*2N>&=
M='87O_*ZXJU(VF/ZXVZ[/QZ'._\K5KH]-^]M8F$S0ND.V_U>EQ3]@II?M.27
MG%YS-X,KO4F@#J^CWKR%WTHW=86I5Q[M!2E2]?QMESOAWO9XK1H5D2AY&I]3
M5\D0J?:T8,7YC=;(<$WHK9#1LRMD]"(#4*M"QKFND#&*>MU'W?ZC[F`'AK$J
M9)R7*V0<=DOT`F6)(2:XE-R%\PXZ[2'A(Y`"-KVXC!X\8)NPCX9_]EL/?ML7
MU;?8P1"=+]!#86>ZT!_5!<.18HWV>YY?)H8SN:>9_6<.9[]I`R+RR1R`&`EP
M=`BNSCK2C<*'\,$O^(QGB#(>[-7P>.60U7AW!DW#M4,8I7OJ!^07A^H!Z5VA
M<D`9PK$U"(U@A6U`*%R6M1"R[6Q#I1_\"8>7FL_#A_="[R-&<6UOCM_J`27<
M]\++`#;=CSH`V!N;SR[.HG>7M,2M'L=-`'SW2@<>FUKKQY*_!P)K[Q6(!\;/
M)R14,HR??TVU"EW.G?<I*WAM$ZMHGUE6AE9LT(]_7VY5!&EJ&62B725P2<SF
M<Q22!>\MPF//F*!'E8K-G,N"C05O>:-!PX8.%GQ2QY>E;^#K]^P6L;"@/8!$
MN/Q*E#LK2/F0<G4:_K$H4%,EZ^!'-#TQGW*_KX1:Y?OL*??K)0GG?)T_Y1[!
MEF_N$<13OB&$8*L9`IYRCU`2;<X1\"G/`+9@<P\`G<^\[QMRS/L^/N4>I"2[
MG(.(IRJ',$'Q#5$!2DE(><@2GJH:P<*)9X0*0)2<J02$/U4U0AT@Y*GJ8<[C
MD&'.?8168OS.8=13[D'*G-TU2/)WP74\]9=W13:N6WJ4&=-_M/!/I(5;.U/F
M54UU,,>`YOEHJE-9`Y89V880EMG:AA"6^=MF6KAS>(K3S;1P:_@R4]P0O[>F
9?'OFO1&=VYJKS'GODL[]_P&=$EJ4W\$!````
`
end

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]