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 for access control



Jason pointed out that some of my recent changes caused failures with
some of the finer points of access control.  This (large) patch fixes
those problems, but also:

  o Simplifies search.c considerably.  No more ugly static variables, 
    no more multiple functions all doing the same things.

  o Corrects access checking to correctly check for the most lenient
    possible access, rather than just looking at access along a
    particular path.

  o Uses enforce_access consitently throughout the front-end for
    less code duplication and better error-reporting.

  o Fixes a couple of other miscellaneous nits found along the way.

-- 
Mark Mitchell 			mark@markmitchell.com
Mark Mitchell Consulting	http://www.markmitchell.com

1999-03-09  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (flag_access_control): Declare.
	(TREE_VIA_PPUBLIC): Document.
	(DECL_NONSTATIC_MEMBER_P): New macro.
	(enforce_access): Return an indication of whether or not access
	was permitted.
	(build_self_reference): Change prototype.
	(compute_access): Replace with ...
	(accessible_p): New function.
	(dfs_walk): Change prototype.
	(dfs_unmark): Likewise.
	(markedp): Likewise.
	* call.c (enforce_access): Use accessible_p.
	* class.c (build_self_reference): Insert the declaration into the
	list of members for this type, and make it public.
	* decl.c (xref_basetypes): Avoid ill-timed recursion.
	* init.c (build_offset_ref): Use lookup_member, not three separate
	name-lookups.  Call enforce_access rather than checking for
	illegal accesses here.
	(resolve_offset_ref): Likewise.
	* lex.c (do_identifier): Likewise.
	* method.c (hack_identifier): Likewise.
	* parse.y (self_reference): Remove.
	(opt_component_decl_list): Don't use it.
	* parse.c: Regenerated.
	* pt.c (print_candidates): Generalize to handle lists of
	overloaded functions.
	(instantiate_class_template): Don't rely on TREE_VIA_PRIVATE; it's
	not set.
	(get_template_base): Use new calling convention for dfs_walk.
	* search.c: Include varray.h.  Add prototypes.
	(dfs_walk): Accept a data pointer to pass to the work functions. 
	All callers changed.  All work functions changed.
	(breadth_first_search): Rename to bfs_walk, and make consistent
	with dfs_walk.
	(dfs_walk_real): New function.
	(canonical_binfo): New function.
	(context_for_name_lookup): Likewise.
	(shared_marked_p): Likewise.
	(shared_unmarked_p): Likewise.
	(lokup_field_queue_p): Likewise.
	(lookup_field_r): Generalize to handle both functions and fields.
	(lookup_field): Just call lookup_member.
	(lookup_fnfields): Likewise.
	(lookup_member): Move body of lookup_field here and generalize.
	(dfs_accessible_queue_p): Likewise.
	(dfs_accessible_p): Likewise.
	(dfs_access_in_type): Likewise.
	(access_in_type): Likewise.
	(compute_access): Remove, and replace with ...
	(accessible_p): New function.
	(vbase_types): Remove.
	(vbase_decl_ptr_intermediate): Likewise.
	(vbase_decl_ptr): Likewise.
	(vbase_init_result): Likewise.
	(closed_envelopes): Likewise.
	(bvtable): Likewise.

begin 660 diffs.gz
M'XL("`UYX#8``V1I9F9S`.Q<>U/;R);_VWR*)E-W8H,(?H27"4D9<!+7$J!L
MDYE;M54:8;>Q;FS)JP>$R?#=]SRZ6RW9QF&2R<Q6K8L$2^H^??J<7Y]7M^@$
M0_FY*1(9)W'J)W+[9G/S13@9;@WE?SR^2,8RVAY$7CS>>W&R=O3MG[7N24^,
M_(EL"D-VZ(]&8NL\N[&QL2&VA_)V.T@GDU+/2\2I'`BQ(^K59J/:K#9$[>!@
M?VUK:\OT*;V-?/'!B[!5;:=9W6O6J]CJ`(G9'R)>%?05"=2<6DW`EZVU3;&]
M+8Y3?S(4PS!XGHB)'WQJPFWXN0W]H1B5*_C]"_P3(@W\,%#?9Y%_ZR6R21="
M^$$B_$.Z>!#I(5.`'B]\<20:ASA,N]N]Z(HMW1.>/ZQU5JICEFPG]S,9>%-9
MV_GN^LB1UCK)W7R"7NQ^WZ*;_16Z@=N]F1SXWD2`A,3%+`&UQ$IKB9S.)B!>
M\6HP\>)8]!UQ'883<?P:G\9)E`X2T55*5)>_BB\/J+*'PQ4T0)<C;Q++UQFI
MGFB*67H]\0=`]16TA(&^/$;K]0)@]5[U7S>;OY8KQ$6A(S=_!0A[C0V>!IG=
MOPXRNXL@L_LG(;/[39!I+%O.41JL1(Q2Y+'2!;(TE"-:T9U'46&AX+26P>!X
MA?ZM7O6LUVD-,*!8Z+`IF2>1&Y$046!Z&`(U^15\*PSV"7'Y`=0C)E6!I<%D
M4!Y3SP_*%0/;TSKS,*PKTP>]ZOX+7\'X:4C]_LXF1WH.J4]T.G:_;T`J-%SI
M>!Z#3,L(7ZN\+UIN'[[;*E]`Y,HB<IS!KO6*'F0D<8[B&.XVFTQ7O$V#@;),
M*\@O[L\73$4-]41L-+X[-+;ES2#>'GA1$@;;@]L8[\9\\V8PV/YJMIS;M4@F
MD2]O_>!&1/`KQA"A]N*E`MQ`;,W$5@0WA#T;Q(5U74*8;=?JV[5=4:\WJ_5F
M?;>$1&SDJ78'V]7&=A4@VF#@%3&W3,GXJ+;KU&L,1R'X9X$BUZG#8OT)T!^$
M.(QFHD9P?I3:<C1H:G-H&,S@9RN)I'PQ_K&JMT=>JMUZM5[4+]P2&<LH;'.5
M::V.6GOYLOERO\1$*)R=;V>TNSNG7?DYD5%`UG@T\6[<0-ZYHS!RXT&(-H"T
MO%?==VI[@*5,TS^!J?`#*5KG%^?NU7D'_K\LGU^<MBNB?-H^.7//6Q_:0MTY
M.A)55`[H;GM#G(?![S(*A0^VYM^7;>''P@O@)PSNIV$:JZ@84?I"B(WMQ8-A
M3Q@1?U7$?Z]AR%SN=]MM]P1&%.H^C)NU5JW$SS\SG=:[=UUDTKWDYF[GM'W>
M[[SMM+NJ?Z62G^O5^7^=7_RBJ)VUSM_1-X:N$M&!!=\?):)?Y/-("@"@'*43
MZ`\?;S"0<8P@*\[L6@Z\-)8B#L&L7H._2+9\IA0[X#,^228P"P$0,MI*PJVI
MG%[+2#<9AB(($S'V;B73QDE\;SUM*CV9`42.P/=7X2)[,92#R8O!#S<6/.Q2
M2]&H[18M!=P2BEE<K?RU8"/J!\U&H\3=$:_%1MI`-';F#,34^R1=[3/HBR@/
M0D#'Y\01>*]"P^[4#FK.3KW^4AN)DD#XECL]4A-+7'<DM910E0FD0),P_)3.
MW)$O(7K)TW9$%7X@6*#F$E*EM:VLX_G5V9F+:#J$N_P`ATP04.:9^.,/82$N
MJ8CU(]%O?[@\:_7;+BY$35(4FM(B[;9[5V=][,<=$6;XP,S@B_XBP/*Z,HK"
M2)2?!:%@CV4\&$YG*'[[UT_]YV!M^<LS!SN72CQ5+9S#C"*`(`7K3%3=J1=]
M<H-P*$V#![88)=-0B5(/ZC(/99`FS>OBLMUMG9^*,EB*"0]:JSA(`3]&9(85
M1^AGVQL2#0*@D3W#T<:V4LL#KTFAU`-WOGQ7[=>^2?NKU42(7JP<\=WT0M)G
M(21YL?%O6I1J"65.Y*]:0O\HY++.P*33<CLY:_5ZKEF>E[3PN.'W`;D0C\%<
MB'\*T/]>V))2BG)?">)%;G0$3BP8_@V.5`^\W)4>S'G2`V'819^F+Y2?K&U7
M=]%/-O::.P<E(H#+MM#*]J;SX7:<>`ED4%03\89#ESO'XK)[T;\HES%P=P3\
M3^,WZDYC+\OV\=(.,"%0?$O=Q=!+/)6GI9&$8!$"PJ&,!Y%_#?@`9)B<0(=J
M6##8$%U2;`PA7;"E`\[>U>7E6>>D==ZGL%--3X0<BG+_31P>(D3\/U9S`%``
M)!T1I[,9)(E>D%3T@L&A1?&IJ3R"KF+I18/QWP`2/?!2D.Q7BR#9KPK#+FE4
M72CUU[?K#))=!@D00-T56C402M5JLP&9>>-1D`Q'L7LC$_?VVHLY_,K`PME9
MK>K4ZB8W*_:=I?$8H[T<Q"JT?(M-!^%T!NB)W:]LGP:02;`]FVN]KEN3[A'I
M8(YN981B74Z:&M-L_2A)O4GLDH5SD[&_8@2K$[#/2P%,Y;(^F.[B37?LQ:X7
MW%M]W-E2]K#7(+SU(A_PZ[)5S#>GM9OOI,HG#`!W(F_E1&R@5ES[%EI314=W
M2+S!)]W>T63":[HO-KYBC'#VE"'F%7$=26^8C$'#49PH4N@2YN8KRAN0T]+,
M'1)2=LU4"X0M+!?'Y$<(0'>61"YEH8``'_R\4WAXR)DWPK]1U6;Q_QK\'::W
M0/I_T3*P!WSZ<EC([O\OBU7+PHBML#RR^SK4@@_=,DUPDOJW(;)$A7:$Z?Y/
M*E.Y7'MYW.1ZKL8+W<KUF85Q8G=;P/9?:0F*'A37<@JI`1?"1!F;XRCNS$O&
MCB">N6ZQN]=P=O<.M/O4,3=_($1J02AU!ZJ$5>1!Y!P,)B$5UB@YJ`@=O]WY
MR5@D8ZESI[&'1;+84(+/VT[[[/0-AD_KZ@Y&V5;\9%*"&08@81IS!L)9Q.75
M,41E;K?=O^J>*TD:)CLCX2?/8WT4P"E<W8>IF,ADH*(_-)N[>WO.[GY#F\T?
M/FVN"V:9$B:`?X,HO@$W^P?.[L'++#K?/0`@'62YNY4<#M(H@JR2$U5">Y:2
MP;S+#'MW*J=8@>(\^.*\U^]>G?0ONB@F'ABWN[)N11'F:+9.3MJ]7N?X[-_N
M:;O;^=@^==]V+SY8[2%!G&,K2UCG9*SSTC\OL;V=JK.W8V\BL'14SZ,C5;:&
M93WRTDE"N6G%@///+!I-6E/F_2N3]&;9/&,2\]M+$%:KW\Y$OH@,HTG10>7O
M[>PX>[OVYM6?GMNWK(P?,M\B`K0?"#@4<L<2;(=*!K/Z\/[+`V=_QUHO<.'4
M:G7+!*DRPU;M<$W5(LP.<\[7^,$H5#O,L.#[8ZZ#8(:*EHCK*R,P7'=C?S`&
M*X;;(T@`[)=.7U5.BOT.-2&P')@'8WG(89O&ZP/XBD%EFCZS4B`4W7J30YLC
M1+](0M']V#I;T-:]QDDL'MH3$S\VPX%CC7T\@P$Y\]"'1%_&!7K>]-J_20$)
M.0:4#M7R9($L8(:;%1G!6H"#]G^:`B>#L830BEMFW3'@F$5A(@?)TNY>)GEB
M0&TBX0X2E2QX;ZE`]`ZCR$2=0-!D<;\*PE^@<X<JN8O"X`9%-06>O!O`,PAG
M`%84&X`3RB@.QEXD-F0$L5IDGSE84OTX[IR_O<#"!^UR^<.A#,3U/6D"U)8"
MO,(4EB'?XHTJ!@1P*$9>!`-W+"I,@>`4X'^1?(ZD12!!)0`/[`N\,R$?V3YM
M]5O8$X+,R>1>>$M7`+0]@2:HVBB<VJRH$N.M[RV,54T)9].*'>%B8?18)J`Z
MI*Z*.INHPN`,P4(%K1O8ZM`<_UBZ=C<F(SS&6%[>H"(T*<$''Y5M6"]#UZW7
MV1)"ZPA"EN!Y"D\<YK!BGX$#I3]%OF>H'<2MIZP*ACL\XT1;'04\5"<9/C]@
M[3,0*&,;I<$`#XBI2<3"8QIZR2MD^0GRA827&)SOI6Y47U'?T3]!TZ9."%U(
MB*K:S(JTV@3&W-(YV>%G<T`6--R3Y-XR7^!C_"=CM!N@';N**8A2H3;OUK3W
M(D21"U.#@=-<QQY:/C"RU7F1`\R3L`P:LF?90+!Z,1[;4HS.60RV?:,TPEM&
M.R'NQY-A19QE1R9RS%(``8R^PA,&W%.M)FL';8XW9=6\"4+J7ID]X-:#V!D,
M;S#D)2#O%'J'H<0):-9P35*+$!00!I*]B7\S5F<'\#@#^2T_N<_SO&"!KZL5
MKA!::%'1L_JB!R<Z>NJLX:.L%][LO6]U(23^T/YPW*8`F[1*\;7RG\E=*$CH
M7$U7Y@)G%(,V-<LELRRRL&J%.;+&T"&<$B%WU&(%H2T9!>]\X50`"/TBE42)
MQYQ4X=$G*4&)Z`4!^F!08!;*<W&N,!]5J)QEG?@WL04*S<S(Y"$T#T">LEMD
M=D3B3REW!-#Z`[!7!56WAL,LC2%GC8VU*$C&88HX@17!DXK#P,M%0%;_)&2T
M0L1D34"(`O='D+A&"%V7REP#K,*5K8U`,S4'">1WPVGEEO3:.(<8"N=+AAN7
MI\-9[U1Z@4J`[W24X!E&M0O@V,>S5SZP?>EC?`535:L?K/2M7-`7+3\OJEL9
M34)O*"#7<L@`X)D>7^WLF9XJ.`+5YC0;V"I4!O#B(^2<5]UN^[RO$H./[1.W
MC2<?:$N6LI(/[?[[BU-\HJ7$2B!;A[6MX>>*EI9@S\UR`YWGS86EJR=J"OEU
M1'[\/`G-`=WEP`^H/HLDQ#0`3Y26LKF__>OT.6URZ:[/J.N#6FW\6ZVXO('1
M>0?,1QE*M02N<0A(.6!!WH"F35#X44;^Z)[P0=Q150([0&P\9$_/P>WS?,B<
MV4;;KE4L$V!LIHF;J3B0'6.A#H6S*YMZ=]GH2N%@ED:0<4A72:AL_)<C,AST
M6^]Z2NFVNG/<E11!!DZK<TXC:VRUSJXT9QF%!_YB#.GZ5TSKR)H6#2NH_/%U
M+EF\/F*?6+)T2D-A9=$#&&+4A@`98$4=;%,N([#,D`GQK(XY>Z2DD?.XI0?M
M=I?I5K&D(*9]<-YXY-91Q,/H^,B&A\K5S'1YT>A,?ZZ,PSZ+&,K9/\3L$JSR
M?K':?A!8".*RH&,$14$-F,=/07AGK1+M!%#5`KY2-$-'$`_MKCIYNO/NT>[?
MR&1A&*$F_?&XU>/3@^C?,Z4;`:@@R,CJ8:WH9!>+W^C:J(!\H&I%3EP-@?.2
MMQS<J?3@6H*@<!\\%/`D4,Y.R1)\@^I)U6XP);Q[3_+@&.%.N?0DPNT.E2&@
M0"B)Y$&YZJ'X);^L.`96>^EUC(;0[!9H7F-@9#+$$'3D%U&&\N3LQ,:_K[O.
M"X3U8"-R/M0T&+1BO:-\KF'6AU)5-9_*G5!=`I`09Q%_/G7B^%]II@Q*R+*U
MZWL>!/-!1PEM05J8I2H5+&P#X.YU:27,0G$PZX'Q_58HHZLO*/AVJWORWGW?
M;IU2]*RN^ZW.&=.X-NKBVI'W">$1LCJRJ>7SP%SBPG2^/@_$3*Z8!](^3EGM
MCXV!BJ.WSQ+/GRS*#C>LQH<+GV#/'Y8^*KP99%F/PKO`+98V[7JLU70CF15R
M(E`L!)_9^@CNR0HZ`@N-)N`S88Q>$WK:EE^((15($S1D=@W,$?_!6ALCO9#%
MZ9@['X/DXYMJEB,PC;E%I.>!5E>G=6,?H]$X\&X<98.&5MYA>0\>)Y\_VA(Z
ML6J$_K4_69S663YH+I["C9LX*W>B/P%6]$H>0OQTBT46.@`3!M9""<D,40[$
MI[PA+%8OYREMFPR9D&,7=N)T,*;NMGYH?4(P'D;D8/C0'<S!PR-UHXD_(%-(
M&I\/SVCWADZ6]R[;)YVWG1-1)OV9(XZ\-:/NDC="3LK)#&-?:RT)N//*7GV'
M8G,SF2G_94(W+HC(._=V+K[038S\E3S6EVQ'9,&@(E>,"F!96+E2%KE]W0"4
MC1/E]2,[_+`&IEF5"I&[ECJ&&6H`L(M6#,]A>RD?T2Q9X*62`J_(1GW07W,6
M@E@U4TQFFYOJ@@,%&[LY3T1^(.,3@:K=:(SY=W@G%^#&'GKAQDO%N-1,,G8>
MPP@&\*M.SQ:4)I8,0HM2#I\ZC.JV:*"<*KYV.OG]J&*UX4V>#]]LZC[CY\VY
MY^0@52,K'%W![Q,$HQB^Z+=/^NU3M:*7<ZOEM8)?U6P1Q[8MQ\C4G^)A2K#A
MYDU)?)TKH+.+A+18I'$61.#&\P)_A"'F4`*!(8:%9E@J"74`RA,(5B'`&4XH
ML*5/F"9;X6B+=_W)ZOI,ZHZB7,1\=F:`6_FF[IV]U@<#O`7;)S][<"V;=FBX
MZ$5W\XK\%_VU`U_UZ^^'XN&0MW>64Z"V_'9\I]G$=^:_V$G8G3^9H-'#&404
MF/-T]/S%;ZKO<XKZ`55ADF`4AN\6^48Z'`F.?>C`YMOL?^F8E,JA-!KYK;$W
MF_F3^TPY\0"U@<$_UGCG=1/C-AJZ*;U'APG5"&(/X!9T8^:#C'"5V(/X,N$M
M)AT&6B$!)Q\(!,^(C4(;*GC2'`2>O_$#S^0D!DMZGY23O;F]+D`T./1I(::!
MN^H=M>P@/X(R0\`??VC*DWLW!!'H@_[VUL!<+7@^1!%FKK](L_&F,@J3X1BL
M\!B`^#LJ.*J0`D*-*(&(0C.G`@S_=UY!N%!TA@?1MTP22OKNW^3FO.0%!Q,'
MY-DV3'N33W:TPV4FC^M]G+=82@)F*8&!P`9F*H>.41*Z*(W#/*+0*X7P1*62
MF:*RN*2\6A-V'E!16?8;.Z`1FP+_JD$NQ+$6ZURPDSW388^.$#*ON9X"^QF`
M0$O3(EO0E;G!DQ-^D,I<!FK.07!1*5I<*\N78Y:7/S`]\/1)=]:4-M%9(6/>
M5*N]$P%68'+O*/!1.@"Y9")IF9O^B[*0)66@?#1H@RM?>J*E@6G!#"T+)?]Y
MDP,\AFFD"R\XM,]X(;IJWZD7.F(`:45"NSOSKDDUH\,),UC^X)FYEF\^ZFR+
M,96F*_B.C?XE=#Y.>6N,;`LD+E/<SQA@N?C0)F26B+*5:A-7+6)8.)`!`QBX
MON<IXS<(`>*#A*M5^CW9.ZG^GD(2I]=QP@89R$_1TP7\6*U.;2!*>?I*,EJC
M2)0.EZBYJOQ&K2_JKL[2Y7;S\&.KEO#9ZU\=J[(JOLH[++RFN<9%<O'(.G6R
M1L(J]5I?L^?6ZS]LLBJ/I9P$,(+6W"XZO[5$[_6BP\&7ST&C/HAL``O*2W#;
M",2JG<WU/1]=^A4+>FKW5@5="`Q]<D/9:X]</"<N6<+`%-!#1%./-U.H?'/G
MQWKCO88;9JWSOJO?N*X9%7-M#%8!N.AEIY_XK:[/^OB;?@E+A7,@1SH$M=MP
M]O=V[<.F(+H;/T9_08E<@8`YM66=MG'L$S+Z]!@^)R-[A*^2H0'EF@`^,W41
M1^1J;=:N2G;?'><-AR&@]N6M3N:H'^TN6M?DJ990@32<4LN%Z9EI!DLANE=;
MINJ7.[:>KR[E:*'P26%:%.C(\E5AM3%OR-K;4!;WZD`?8-F2G][PH0M8L.'`
M)[B:([%<$N+X@O;]I&->B,)B!*+U&AUWPGW`,HS221ZD5",F&-*ZYW-)ZKV'
M1MVIU5Y6[2.\WPE,*P'S=;!8#(.EM3PP.O\\47_;<M_?=_8/&M;?ZZGMH-)V
M#G('1>TC:KQJ5<AZ3;:M_#-(!J("_W<9<JK*EA=:_01VKZH%]@L90/1D.A8$
MFXO[I^I-CFWKA1#D-J:_]T`"TF\%9COZ0`F<WDVHMKBQ8,FIG;*%/CY\L_`,
M]9-$=%#?=6KU1EV;1)@1_A&B=ZW^^W87'%RKW^GU.R<]8@[B3O#WL6N/@%49
MZ`;1"L@"N)_K22?>\?UP86K#"P_[*%N@FF)<2,TA"UEYP%7M(VZI`'7+BBVY
M)+"%(:1Y0]VLN(I^G?U+]B<(OB(@A;9,KF2F5-RV?7S'EKOFV.,=L=5;MI':
MLL4N#YIK]<5^07_5C'+[MCS^BFW;O*1+I?D8U^;F02M2<Z!@AZ,LTDF^]L0\
M_K&XP&.T9GS9BC/PJE::'ZL@##KOG^EW@0CU:$NJ:2B2K&(G@W2:'6\P13#>
M0P0KPB'F;__J8^W4#&/*80O&RI?"5HRF2UB/CK<:-4^:<O%,AYFT>O#=9[U@
M0#WOQX><!VA^"]1&SZ%I<Q-"YA&FB;YC".3#,"1`N8#\/(M<.DE>7N:<,W.G
M#XWKO71UYCN2$Q_\1#J#-$GM*:I#7J:NI5XI8C(JM>!W\=`J%5[G,SN+U,(1
M/ZM+]?I>A>?VB""R$%5M%*N!N=A6KLT;X>P$:VQ.E>I$HI<=+36F`@^)@K%Q
M<7#\&WJQ'BL6;X0Y&'76/G_7?Z^ZQQ711*^=&Y*/%>3(TF%1?+O!TCP(_I(K
M85C.VP;73">O.7NES2XM8/Y02<:G*$'XXI7-*-S8W+3M&D\=PU\MT?S!+F;>
M$?_;W;7^Q'4K\<_<O^+LEXH-F]6^PN-RJ80*45=M:4OH_7"K"FW"+JP"2[LL
M35'%_U[/TV,?GQ<+:761DI!S?.RQ/6./9WXSGMO%B48(@[;>N4W@]!M8]WPE
MDJDJ+[#4&H?R24(6^'%C?5Y5JQ%'JJ(2!^8_C@\BMC)=;O\[/G1_3L]^.OPV
M:)B$NEZ;6)1V2MR[".4?'*[#`4YSV_D50.7<\=E62!2THV7IB<35)Z*<!!9+
MC+^\7-Y^<JIH*+"=Q$=X]MPZR/K1-.#S+P^"->+UE]?SF_F*)N'F@8.<KA_.
M)^_!^;JYM]LN636-[.#1URVW*#P=:`]\Q],_W/(7"1`B=*&T(P5(PK9A;?L8
MR&5N40W)QD7P9ZAG:^L7+^9^>;(Z4X(]"QHAS>!KIWK5^8K/5[6:\GI'LG8<
MA6`"[NZFRQ6-_2;ST/C$:=;CL\.3K_+5X'8B4W40$E76KGQ#YQ>PL)!Q\(_Y
MC7KM</&"A2]IOZ/YE?7&.PTBJW"'"^SM]G8'.V9D1,[RO<^:]'M#>F[6*--6
MR"+%NWQ)]$/(^1SEP%8OM`:+18UM9.,9!GS121;S"=(8L-OHXC;_52?[W>-4
M$1P!1M:I6VLN\-,[`/"#56V.3L/9Q"G4;I^;7P1:`/R4QE6$1RUASP4?MS:K
MHRH(R.</`T:1CV'_58C__$9F0.VW'SO6?T]F!K9&0!A`]C/J=UW4FWZA(8AU
M6SUGY0*6K-%-C5Q/)6F^,%IDA\Q$<*RB82,>DEFJ(/'@($B>9X,OSJ]"6^%3
MJ;54==CU2/3ZV@-J+3XV<?X5;4O.M0HTDJ-M\[.:^GO<^-Q,'BA43PV$9!)Q
M77M0R""Y$91JIL3:'STYNN&84[39\O_T!/RTN/`>E_E*`:23.Q,3B9-(\S0/
M*$@>DFV3*?!EXJ57N<^O:A[@#!?HJ'6STZE@85;=W/2V?,FV?Q/4BL/4%-,?
M?"V&`*>B#*)7@44D,S_UPQ/(:FIC$4Q5CW%W%W%C44\%0U\9CQ&$8.PG*PDB
M/!;&).%I"W^:QF0D.JTZFV]!3F8"LTRK5OM!*>,6=L7=-UL984IU!PD7L+;V
M!<<SL:>:LG)8B29?9R)ML>,"&S7-=5(</ES#9)<RVC4VVP5\J+]:*2[M7,)R
MU]AV5[`P!21YAGS,SW.4XU-UN="&3FD5)&[!+0IX`*7A(5P'K)=WX$T2P!Z:
M*3KNK6N#W0L23=X**7!=EN9<>Y"_!U)YJ)DQZ[?Y62$BU+Z/0*&2$`+\,1ML
MW(@1$IR>\4])';0>AM;G'UH#2>LK60M/VRI'MK8R*6&L=D685B6I"--:=%)!
MX(@J!'4;##"N5-+0@'.UT0S9"E]4>4U5<EK%.%9^]=6WQX>G:7M,Z4CX,8#U
M%X_W+1)3X57Y#5>2IS#P2Y-&?\<VRB@=6&BB;#.WT<P;>1<1#7.WU`#Q.LIJ
MXW>EZF;XW3HM>.ANKHT*H[NM/>$TH9$OP>KR3#5!Z]8AL7@(TB#=0C(5I%M%
M:!*FVU)V@U]O[U?_5N:1G<%1/<ASCP:93!2*:2/`Q#`_IQS\>!41+:B`1:+L
M<29^Q*^6=NM*[;KR1JD3T`AGX!'.YN%TJYL>K43`N0:3GY@*B\,759C]0$Z,
MFB^/\08T2$:E`>FVF,]>Q%U(I#!6FMFA<72;`*'=K>YG,PG9^P`+MH4W![AF
MT2HLO-GMI`N:%$&6?;IR2EP:[,S?%X&=Z;57NY\,>"ZK(0EX]H:71H!GMJ):
M#:@(Q:LT0?:&&C#>()N#^38)[^1,9;&GYWD`OFCF:H+NM2:L<H2OJYJI6K*Y
MPM)^Q%+-9$-R&(8`'G+T,8((*3>"[Z`:`8CR6]'#T>*`&2&@DY=SS!#Q:;)<
M&)^=)[SZ")-/&9(P:MK45H'':C_;UT+%1E7OD?&>J,)RP1%`3@]@/K1\5:>M
M#5=1,A4>UIEW#2`V3=VLT<T8><.M+(/\S[_4X9+#4_HQDX3K$<@36]9B*,>F
M-#&5K(&(-MH;=/H#GV+M9<`U?-"ZGLV[N,0>,-A,'OJM1=.%R2L?VW]@<6CR
MNAKAEPITS=GTO@@S'4FV__`Q)[R*2T,\+#R;S7D+\_&E71IP>:A6-'DE@B`*
M@+5/T*Y799B`4JK'0+62QHQUTK64!MV1*_0&B=80]`Q.3+Q_YU>'%],=DNW#
M3UY_"(LVTB&*Y*H`["9&G$*T&X+=^MN#-YW^]F@H:#?TXR#/NGW*<?;<*08!
M&OIJ/EW"^P<(N6=F?VT1&%U-?ZHYYP`$?7FYG%[";D>TL$7@@0)\I*77R9:Z
M-*1GQ^_.WI[P%0":@0;C3="_ZM015[')>@,!`N`H0DT)8^7?3Z>0$V#5X4NI
MP/2_NI-A)6P0PPG?3_GQ]*)+W?GQ[0FVX_,B,L9F2A'\F?MG)0G_IK`Y:\@`
M5TJM(JS358_R?:'7'P2YAEW)@H6$G"EPH<7,]?ZWV2*\T\!(N#QR1U(LW<XG
MZB86QOS/OR4*B#P40;FUB;P6SSRP/OQ&=H[M_C8PZDAVCO]K1J5ZE%O_*8Q*
MCW_X'KJ7:D'3;CAE$+9N=@TQ?:3FC<&TQE>Z<6P/!+PL)P]\<*$IFEY/;S`]
M'KDV;R`)A+462L`?5L1H?W0C8QU.9\I5<3V=1'5TN4/T]Z&C5Y)T<#\HT1H>
MQYA6>&OS<Z"[#7QQ]V)AHKPJ#QAW/1/7UQKBC1R(_Z%$%T\1]C!C>HG0)PIR
M[G<BHEV=4-U^QDDUUEA&XO07R3P>S[G6Q+MIW6GBW70$N^GVT(?3U`$LL6X%
MQ;>VM$LPD!Y$*.J)*!<U082JIKBA?Q*",#,5S(T+HSY.4&JHQ@GZ%.5-<((X
M^P%4L`@CZ,W2X!=QDX9/\81&DA#`\%+WM'G@8!(QJ.7JS'H`-<0=;@0[W,Z.
M#Y]Y%N9!B?L/(\M*V*B06:J8X)X2.&8+"![$M1GBNGDI19X(37XRI:7XM5;0
MAGC+>"D'#U(NV#6?+B:R,?JE,4@L&^KR:HOE4W9(QX_(X?>_^G!.P^A!_VI)
M94.)#`3R!<5)$Y95X%0Y_C>LN`"&:C_D4*%GEUF>T,\JN6ON%]L@\GMZ8742
M<MKO]3R%<.3;>$PMPM6`4\OG(>"T!:Q"MT.2K/388:52L/%HQ;ZF"/OF-@MD
ML-VVPD;E7P25D?D%,>_T"[$9NB2Z.EY1DAWWV+H"E84BJ#Y1KJ?UIGX]7*L"
M<RQN"[L]X)%=O<:C&8_HO!4/H?%!YH<.7GJ/$6F!7+77"C<A"U,^*YOYNL3A
M2B.?WY'\\,N[LCG(?&^?9>QCP2ZZ_(H)('G>&0P[_9UA3^3Y,:7Y%]R()17E
MQL$KT%79R$7:<!'^^O#=^=&Q7-G"/@J^&GS8`S*5I9J367(:2635>T;Z2Z8E
M-9@T*\.1Z^ZHGYX5N&J@57+7V#/-BS6@GQP?'R4ZQP*_,QHX<M_TTK-3C]R7
MFY]:_4C-$N9I![><I&,52F<+\,\YBE>W-%^[`S=?NUZ*:('@K@@!91LMKI+H
MT4BSAUR]RUU.#F2PI.@-N+Q+P#3M#H=`Y5[ZPJK/1*6Y2KF`UG@JEE-P'9_[
MY6_E%(3Y![>0D;0,A_U>9S@<#,RM2')7?1YSB2%]^E\TU@57IID[!J/;U%SG
MXDL(:TB:GD#X-7@:;R_.?Y]^<"R;AJ'F&5D.C4:)'I`2G=.\??UMR'4X;P<\
MX,9JSXW5<&""YYN,5;T!>9HL/]=(>9N+I>Q`K@*4;*?K#VC,J$7<04PZ[,/`
M[P1Y2T`;_F[RT8W]_=+DR=',HH`BI.0+6FUHHB`(]/CH^.1L_'9\?*I*!J=I
MSE1-#L<B@446C?_FUXXM+$I:41L98L6">ZR)T4;0W]%.D%KC,_;W5:,.OUJO
MQS$GL$<K8`;5!F!LAFYLW@P#7M"M+-[=]$@?]BCM)R1W]_A_QPKQ(%4TO:S;
MLR^#WR,FEK7:R\H*\9]^D70$XM7L%E)(M[;#3V(0$>"!$5.;B1L3")_H*FBW
LZ51'W/0&1FP[N&NQ?,2RW'+^^<:,ML$,=[I.]D7,6W_?6/X%IQ-D9FJ4````
`
end


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