Xref: utzoo comp.graphics:10350 comp.sys.ibm.pc.programmer:377 Path: utzoo!utgpu!watserv1!watmath!iuvax!noose.ecn.purdue.edu!mentor.cc.purdue.edu!ahg From: ahg@mentor.cc.purdue.edu (Allen Braunsdorf) Newsgroups: comp.graphics,comp.sys.ibm.pc.programmer Subject: Re: 256 GrayScale Matching to 256 Colors Summary: I worked it out for y'all (and then some) Keywords: Look Up Tables Provided Message-ID: <8406@mentor.cc.purdue.edu> Date: 13 Mar 90 19:14:25 GMT References: <858@dukempd.phy.duke.edu> <53002@microsoft.UUCP> Reply-To: ahg@mentor.cc.purdue.edu (Allen Braunsdorf) Followup-To: comp.graphics Organization: Purdue UNIX Group Lines: 448 n Bit Color Approximation of 8 Bit Gray Shades by A Braunsdorf Many VGA users have been asking for 18 bit color values to store in registers to give well-tempered gray shades. Enclosed are tables of such colors. Each file 'shades.n' is a table in five columns: Y R G B Error Where: Y 8 bit intensity R n bit red level G n bit green level B n bit blue level Error Absolute difference between color's Y and desired Y Y was calculated by: Y = 0.299 R + 0.587 G + 0.114 B with R, G, and B normalized to (0.0, 255.0). VGA users will want to look at shades.6. The tar includes all the tables in case anyone wants to see how different numbers of bits stack up on average error, etc. The files are easily processed by awk. Feel free to mail any questions to me, but be aware that I do not program (and know very little about) IBM PCs or VGA cards. --- Allen Braunsdorf Purdue University Computing Center cc.purdue.edu!ahg UNIX Systems Programmer --cut-here----cut-here----cut-here----cut-here----cut-here----cut-here-- begin 640 shades.tar.Z M'YV04HH$(=*D"("#"!,J7,BPH<.'$"-*1`BBH@T:,$``J!AC!@T;&BMRE!%2 MI,@8-V#4J$BCQHT;,FB@K#%#9`T8,F9LG,BSI\^?0(,*'4JTJ-&C2),JC>@& MA)`T=$`,>#`D?,&3YHV8>BD>=/TC1D0.)Q"!7%$3I@\(*:@"4.F MS!P%8N`&<>JVCILY9*R:4:"@21@W<*T@TYD&;DV9D09Q[]71QE\Z$)9` M%A5)P993VLG!E1R$78'&E(6.9A%%XQV;NM39&'6R$!9UE>80X(0@]@`"# M"S+DD`,(%J[@IPLUX'##A8;^&4,,-#A%V!U0M2<%"VQA>B:&;E@%%AMIZ'%G M<"C\"0.F,M10@PLPI""?`HHQYAADQ>''1G&'115<56^L06!4_%WG@@W9@4#% MA^-=Y5EW=5Q'('*Q?:@`'>29%YEG<3I&(&)D5?:F&W0`-YMCE:'QQAU68JGE M;>""X(:#E]%JEH[AID?M&+[6`0<(9!%(F5MG5/;8AIB60<<8Q1Y;F8+6$BA> M&9OA!]=6;XQAUW=X*A#&'6N\:@1FMYK18VRS@87?MG#%\5IM8_U%,@AME(&I M&%1:5MG&X55&QUQ1)6'E;)W2H0#%/(;1!@@H;+I&I^C^"Q>H=-"1'WEO4)D" M"$D(T00(4`P1V6BQQBD'&=@1UL+9"@2!G(]"]/578'*8D<#<4-0Q]FL@5.'& M@K^I*-4;S5'I&6A#9+8O_/+,-^_\\]`/5='NTXM$/?6'ZJX]#`IP9-+UUIL4`ZO;XT@/89`2_)$F@4`D30U9 M540`DN:!233A2)CX/M)4,(HG&1\1JQB##6*1(Z9JHOED$,+]2;$B'MRB$65P MQAT&$8-J=*+P=$B]-DHPCF.4WQQ"1#%",AD>A& M)8K$AHH$@0R@V,@VOC"2,KAB)<771SEZ<9/6ZZ3Y9E!&];7Q3SD@I1%G<$HS M(=\H21?`8#'CHYPDMBQO./NH04/+O7DGF29E7F7*8K.>),>_(SF@-]XCYYA\V$EF:A M-.BF0SVXS9OXDXP+K4$K32D2-F:TG0D57D9S>481Y@10+3%B#?!9TOV)-"8W M<:*JQ&=!C\)4I8QLJ?HP>E.94E*G(_1@3\V7*)I&$0"?/*O4SN85M"Y@K1%O M\%?-QK9X3L3!5.UJ/]GF5K&5[:%OS8>#KR[VMJU%"V4-2ZSA=@\'F36L!)V+ MEL]6%JG4Q<%H#>O![-8UBJO%+7%?&\7Q9;>VE6P?=7.PVRCV5KS=RP%P1\A# M%[`RN3DP+D?I:=\8X'>Y=3Q)^^YKQ!Q$-\`<&1^!G9@#Z](7C/W%[W81C,8( M%_B[#\;@@LV7`_)F^+069C!Z*:@83]C'A[(!#EH+0@R3>'Q*9C(,/$SB]D49 M?R`<,9+M=V4`/BK%+Q[6DK'\J"&W<55=WK$+S=Q,,3-9ACXFL033?.(B;CH\/J9BRS<=+^ MK;27YWAG01,KTC<6])P9O>.88#K/I#YQ(3L=S"YJNM2!#B9&(UWH-WHTT@U] M(_5NG6H72E37'?V3GDFI0Z"Z>M@;#68=4$Z?KK7OWSV M2=",;6-6N[[#%BBP(8UMA(Z;-(MN=JZ5GT"RMO;`>^AO,4-[UU&&U+F;G@MY;UNH)+FX1$MMFH? M;M%\%]F_6-:HQONG8)![N0;\EOB`3;YCFHS\@I9E\4I?CCT8L_S$,_7XBF_N M7X9;G%@RC[C%)2CSBB\0J3)_M\4]R&*ITOPD?VIZLHU=.=20W=^]<;[5)5H7V&X3=[*]CNY<]^_(VOI?)-U`[+=6[][?3 M,NZ8ISN1[8YEVE;^>Y<]L6Y/?Y+4ER;PFW=]<5GO<*B6)O'D1*3L'Z_X`MI^ MR;0_+&=+HWDB!Y;)B@H^4G\O^C8*=?@XP'O=7<]>VK]U^/*U_F:9G%_KGQ7[ MN#>T6+'/^]QOE?IE[_T1J5]\^K$O;6C*64OTV MQ5ED!'NRMGWX0T:%9VO?UW\PL%Q`)5+51$;1]8#C$X%"9F@NA4H&14;;96P4 MM8%$5%C&AE06Z&'&1DT@B%[&5E#OPT8I9FP`M8%EAH&FU$,1N&8T.$+UU()P M!GDCU#XW.(%F5($RZ&#&IH$\V($+]($\B&$61X(R:((+A((\J((+Q(('*&DY MB#TQV(*7MH6Z%X&:(7]`TDM2&QM*$R#E!/S97&"I(?.1H9M=HC3)H)3*$H*D!-" MV#](!8EPV#]IQ(AS.$)U>(`S<(>FE(>#R(<_2(DY`8@ZJ(KSYHA"Y(J)*'X- M%!/ZI7Y>=T,Q@8:"]D+E4XFQDX/DI$6_"%.2.'VZ2#O":!)I5(PT0(I$EHG. MB(IV5(L9MXPB02RZV'$^>&:U*'+8:(C%B'+'2&0V-(Z\2&2^V((S%XX7MXV; M.'H9E$\V:%"\DWX4EFD!Y4^`!E$1EX]4&$[KEH]06$77N$>N5E'_1V$855') MQI!$6$7DB$(=I8;;DSK8(0/1LY$,\3JQLQ&DX1$@`9*V0Y*X@Q&[TSM%!#SM M&$@W<0,[P9$R.9,T69,V>9-'08=V92J_2$LB-%49E'*1M8Y&%#_`5(8WQ!)' MJ7M)&4C^Y#]^544(])19AB^9C38U^,.49G>3ZH=W55](5)]%7#XG]R!)>: MF6.Q%D*(DFJ25&LP-SZ)TIJ.N4N< M-$B2-)G"&4K$28A)1&T+Q4K`1%+-29I&F6/;%(EBQSXN`$+)E6U=QTG:N4JS MZ9/9J1*K%&NGY`+1MYV\F57HV6"KE&BQEYZKI&4TUI[)]8H-MT+"Y9[KY&*4 M:5FT=9^W.)@Y%J#AE)J@::#KU&.E69D*&D_A*4FH1T;W&6N@2:'AQ)N*"2CD MN4ZB!Y3RN4[ZAYLA2E3_9W&.TJ%$94D[F9V1-)$-&EGC@Q(2F9K020.ZV9(- MQYPXFEPY=V[,J5$^&FO0*:0JQ9NYU#Y&*E/VUWJ_J5+Z=YY/VED'0V:O/I9C[DZ3C644XD(Z6-$'058[LF93` MYXX\B:RFRJ6F,JM&E'R[*J;OB*VYI4FL&GLPX*W$]4GA:HZL0J[Q53]<.D3J MJD&SV*"6%94%=HMRBIWTRF#I")KYRF&>:JC]&E_Q:*BDRF#5"JFA-(KXM:HN MQ4D*6V#KQJ:K=:"+:+.IY,YIE1*VNH M5Z*J9K7WVGJ&ZT++=;'GPZ&!&UV.>W$8NFD.-KESI:*J=K`BFYTHN6D,VV]_ MHEU&FTE(RYRD:VEYZ[.'`BE&JYR#>T;,6;D[YIR4*;N<1+O2AKBLNU::VQ&- MBV3CL[C<2;CB2;R7:Z7?Z64SP+EAV[IW.XHY*[5V^[K@VK1Q&[WFVK3V([<[ MAI]Z]+P]Y+TGAF^V]I_V,[;L5%AZFV/J&[SRZIOW)KE_J[[)*Z]_@J7EZ[Q_ MJ[3?&[K&.Z9I"BGK=JX7)V_O9L#"UFO<^+-T^'7@V*"8:YE&"Z.#.[D*-L`N MYV/H`YU^&G+T>YR5^<$G1[,^-KN-VG/3&TS,F;$X!\"XVWHN[%\%++SVE;(U MD,!6^K!>YG24B3[G6;`[IJ4_;*4!"VA6"\1`6Y:`MK6QBZ],?!$AJ\2/-"Q1 MG'YZ-*?C:G4,E\6$F:Y6%W%>G&-;W'8U'+]@W'8ZC+]I/'E,*\&H=T,H\:OM M^V-R3*EP#+<-A!++9LZY98-GM%+,*U),2JU\LCBR]&5B(,-RM*7ZM)LY,0R74L/^M)K^M%?G--L9$PD363[V7^`AM+R M:C^&RT:4%-0;FM2E8=3KS-$$[6C]_+=)W;><_+?+B]&"R]3>J;G"$]#_^-9QN(:G,Y(=:FO)J(;9TB?--6)IH87;R4;,.G2=`S8,(B?)Z7/=EQO<-I MFA,`?-,9?(IUK8X4+(K;N]E?++/`F,R8W$8P%MKFN];_:7,MN+Y^C;Z@2M#R MM-MZC,HQ@4^5C<;"W4_`#&2D@.3LC*3XD89($A9(LX1(K.8K44SPV$),?/N,T7N,V M?N-(H9.DE4$/B8=!N91DW),'[4TSBG)+=@/Y\Y2.8N0N$4!*CI[/""DS`#^" M:7P$YS*;5]=#BGP8YQA[E?LI%UF.60DFE]2CD/^&>%$ M=.0X))T\^IN)A4-T&=$K!2F!@D,,2F1:9%K^-6G90^A5KI2AA%5^G@,XA)6* M7IG7=.0Q@$/P&=5=]*I-3AKT&>:93N>2E)E.B;$7D4DV0$@]3CP3FME>+DD9 MWK'^U>IFS6HQ^Y)D+DF!SIP7D5]J+DE]:1%Q7%R@+@.,Y+CG.:Z9M.ETS6H$ MARBWFN>2=.G-'E&E[NC%"4S11(GQL\F6FCUE&3]Q/NJ5.:O5;DWVVK&>U>J. MCN@GMDA2SV5C.53'C^QMDS9R5[J#L!CR;;J+GK-KCO; MV=?JT^Q2E>:GSCM@-DUQ/(J@7MOG:JC&H^E(SCL)*.ZM^XP5[\0HFIUN5_'X M]$<6#CR-SD_TC>^\FMGA5'S^KDJM_HQ(>^QO>N"O8ZUT2NG\Q(K-_BC)OO$- M3&'9WA+O/N')5L?9`Q.@;L$HK]6ITNH;[(/>QBJ?2U3P+;KI*I'I%]2'(CPN M<>LUP$A17]&L,DEO'DC0Z.]=-/03[F&\["B*\O2K&^E%IO'P[L.13CU!_Z9$ M[(/9[A%C3P-1=8M,;RHPWU>Y]$/=/E?3-O9J&K)G=/7CJO%194Q_-/(OB_D( MM%U@[R@H`>INMW@ZBYRZU>J`>KO9&.Q_^DF;K[P"GJ@!W.R31$2WGEBFO_!Q M#!-KC\<7A#[9CL2@?@-.G/B>"_>GA4](]/CV)1/L9.V&_$9RG>:;GGF[W[G^ M5?B=M=1Y;=^->EJ:U/SSC@,^?UJK'4S^CA/*GZNJ+K4\V?Z@C/>.Z&KUPK?$;#SQZULO<7P%J74B$N6,PFN+YL5>Q\%FXJ8[F%DB"1D4?L MDAY:J&ZACU7$G_MWR=9?R=MTU>?[X3S/Y\SRW]42?;BO_W4?GX4^#AY\T2"Y M!(KX/5[%DJ`=-]MY;R3;L;^U%\Y:W_E"3NR$!VX7/7+UWAZH2V<23WU8/AC` MZQY>A]$A?\16IVQ6"B=XP93S1X)>[R!S M*@N14"87"/=XS!8\+;S*A=`Y[93]`*#K\W(@A)%`D<1EWV85'NQ92G#C3!DV MDN5`R/C35:'$A7A!]!(%X^";P1Y[,*)-&7U79Y+-#SEV*0$/PC3>P=,2X229 M@STHF)3!B8?Y'@4^^2$MD%=)%4T(U'R6#OQ=10T'6K36PTKF06W0)2:$Q MG'7"D/4E0G7E0G9:I#MX?,N8()%4&$J(G<]S(0A'S2CD_Q.UQPW4W#JU@ M]AA%QK!X(9&;%G6BH;2A;Z-0&9;"YJ5#?H@.+(:%4'I1)E08Q^;_C81]@QY MU2<4BOAD&#K$.H0'D9OZ0"('3U$80V5D`O5(T.,Y-L_'>$2C:+1T7C9L4#JP MN$S%=X-$+)\?1(,-#'V0/]3'_?Q+&X&*B$P.SD,+1@0E(9-#SMDN<#$19D&78!*@B%4LB920AND0I8B^NN%]BT(%L+`A\G6HGT3'L803.T/QT@#DUX3TX*I$`XJ;VB!<'X.`RC_;-]Q7" M:&4"UV/8RX1HL);YK/BX#I&/.[2".`_Y>+2OF""S1^I+D9D1-%[%4A@"11AS MC&,@;QZ60''7$)'3<)QF(0N*7+VV8&V@"32.$;(L]4(2! MR-8%SH`C`8Q9>J^924#0Z/;JGI`\A";P/!E!(9G^]",MI(3^IS'JR`DU]JPD^KTT"FD%A]^1K&FCTD]^/,Q'"%,EHF05HZ_)_;0G*0-)(9UC(XQD M*Z*]AG<9E5JNE(1@C1=&.DRYMU@B&\F1-%)-ZL)"B=6498T,+W!2<%%+^I>= M7,*Q'$,)$HH,OIP`*;$A@LR3N(S["0_F)QT!5MF3E6(O^WE*Y"3>B-VH+);( M20\M.Q.X)?.7K,*7>(U@\KEG5^F$QR?QEAY04<(N=1D&Y2&2*VRU\C\*FXC2 M+!L1@E25DL[6%?`*IM37,X/QK'IWDT;6DO=V."6G?.MNQL1HOD*IE"!37JS\<_O-`9;>P=1657]'S,4>/)DB^0++T_A81L9WZZ6VQ M1T+9X6@`CDL>(4YVB*3;L690W!%1I]+B?':AY@LBI*B>YH M$I^K9.A,A<QW\>4-(0[IB3RCI,'0_G$1,]-V2" MWKOZ6A7.=[*3PR2JA*-HPB$-4'W8*LGVZ)Q52>0B,_*"1,4/RNG*$<93GZ$. M:3W`#2I'7*4#ZX,3U-51OHJ90]WEN3IXQL./[%`VAA,6Z*KY@>$1ZQG1$'H% M@:`1Q3!S+^T94=>Y/Z+B_+QV$*30!?2R&JD:'5P'3R:$$V\X"V%B(W4P M-3%[!-%U4C/W!S8A'RQ4=59#+N@_4RD5;5"9-)7>/2UZ&LWG@].'.9$62B0; M^MU$J42R6K$O,*J4#'E!NDG:RZ$ZBAR&N9?%0G]4,'%\]Q&G/,DS]E/+9;$!5I49.%C]*10:I)M%B7 M^B1>9'=L0IZ40VG?%9$B)PTF5M1U&G#\)Z*R6O81)K)0XSJ*1C-+2M$,SI-I4I,]<@]-:@#D);.P,J80TDDE/R5T&H" M(AB:2CZZ:L1)(!B4)[W/\5)#M.%IQ%5MTG<^50ZSR:Y(.V6A0Q)D5M-1RF&B M*IFDA0O42288')-6T]X5I9*T-)#"Q,-Z"?\(\OL=!<;L,566RF`HB1>1'U`K M_D$LOR,+[^E&$P!6^7B(E_5UJC<$Z/WQJ:8R)%T&K[92Z^DN1 M<$6@B%,5L93$Q,+6=%IJ-$F)K3<&5'6-RA<+3ID7TX2Q+_6\8AG;Q4![(7P5 M@P?1J&34VOJ[UIU$Q:@8+R;6KI,W6(FH@[V(^)61-:`=RTBNB)4]H3LVQ>)8 M!`E)K9=U?7^U]K[)8]L796RY(&ZK'^GBL!^[*`D<@J MU^QV5#'J$F0R#0S)TA-:B&G)R1^QJ[LUY)C1'N134ROD]"*H%LN>''Q209"J M#B2AVZ^MYK\#ZS]-K:%=M"062"I7QI@$V=+Z^ZR2T0?"-""Z:Y$K-;4=E9&Z M>D:,BEFE8'8EC1*5P>K79SMJ@ZE.;3NYY+U2#\^J;%DMG7V%RO82ZI$'0FO9 M:P^;@.BCU8Y0Y5H<2Q.<";-6YZ+^$.0::GO8P\2I1'3*NC&9BFO[[8`M/1M% MBV;6LEIZ5DBKU:9`T&B15!S+EJZJM-=;<,%HAFU_Y(6`7(>L4)(_?>ZE8GFUW=WY#%J/65NBY5/RMQ*0AE'68& M]^)R65.!4KU,LI*U&@3?GD;EZB$Q*X/]HLC'XH85L"IF5>2L-9$4=93M08Q* M=57M,+NH>';+=ME1!E%U[F@U6CURR![5&:I[+ML-FSP7D<9)?%MFTVXE^H+OEMGJ6H#&7&GIKYV@!4W6ZETVNBU1%Z0-D($%N^=+;O'B!2JWR%KO2=:J;7]B;9YIM8,:J& MG;O(DM_2TFK:U$9[%&-I=,7N39;U)L]U"<8Y2'(MMS" M6:Z6?&VO%/1"SY?RZEY@7J5O,9I3+,-`.`2[X0EX=+DP`FZ^<=/NAF&48CYC0A.NP&P4#R-7D[N& M$V'JPFC<2`W'85`)>B.8'O[`GI`#PZA'3%;=9W<+7X08!*>KWMN2*'&S*Y^8 M$_`^XM1[0+*:D_VDA264#M68]R2IQUY-I0CU,XI4@81+S2LS#2>S](O:T@;F M6)GN+CUM_Q?#U<,P*-DZ7`WHGDDA>8ZXY6F2FJ=)2'$;*WJN),>C)%$.#)!Q MR#@;:^-MS(U_PO>T<$UI?*9/L8<#SN>6B\0:Y>$-N9S*)=V.XTER%D2`LI?@ M03\5U0.;,DQ0R5"Y>Z>\@(?P4,>\J0CBJ'_\Y8;,^ELRLJH#9W_RT9'`7GRM'!(YH-2`;4N7+T18,'L:.@HK/MQE>\Q+[@J*3:=[1VIC;: M:P+M8B%K(Y>5-)74@!)*7\%J1T@L,00#$N/?V!%PB,HM@$,5J^P[K$:@#N\D M<3P:69+\*DU;&5\6="$D*0?M(J=NV$4(R?$[P,`R48PK0L)[+*PH#10-B)!H M/L)Z[";D1Y8D`Y5_G-SP-S`39+J5C_.8D%Q48P,9$P6\&\$_4%J*4HQ`C[== MR(JGOA1']3\>VT3UK]!C+^:NOQ[;RLB3]QU#]%E`].H@9C<*&C'J7ETI3SE^ MT#>C"QEE@K4;PD\LVI5$EC23XP<`*[Z5\21;$]V+24NB1WYX45C_"2ZU^A+Z M'WZBC)*6"6X\+5P37V&J^&22M!;CNA.:D/E)`9ZIK]`A\Y/L*\+:J?'`*BSO M+W.$Y,R2^0DCN:Q@9)N"Y8.".YZ9*,UA^IBA/$GY0911J6?^><_RS1[F"0?; MY`?LHJB86>GA23L\06!4WW)Y7#4^!Y+EDD#75))W27M M%#PKY++G@?F'?SZOVQF;9LR%C&"KJ6637AD*N!7"O;)CJ=K>,V;0E)69^2VO/A7%]SYFO0 M);@IN[NH(EGS'UY&L%(QJM1>18D(O0FE^ MC]_7BL#EL'Q:)N!B/KP9[QV?EN^241.F*$4)@IKD1N0^.YM1:5Q&?[_7S7Y+ M]V&GGPL7BKB$6;QFY.?R%B&P0Q7,PZHBS4FN6J;]W[::06HM*/=DM,!D'R^X ME:"JIE@7( M@[:M(5J#7$(DCXB;,RNUXH" MNF;@[=B4WW6=:2^\L$F7U1"M73LO6EV"^;@<"[UA_:L]7OQKT8^B\1&4FBT? M=7.=<:PP=Q'K#DB!2LLK;6[@-4`Z_" MF[O;*2GAT+/C)+3:*])QP71',"851`N5YZT-N$'S[AB8C39O:^2;O/NT$+W6 M'D^Z(T1ICA"]I2!+EH:Q&:P,BVE1QU+&A8.A+?3;$ M\8D#$V)7YT?[F-C0S=[:,SN[D6=RNV8#-LCAMT=T"9YL1^<69\BR$]I;6V0O M3JK]K!$LQZYZLRX8(FT0)FL%.,2^X?]T<$?@?L[2,/#%PB-::HFV:JRYG,90 MFVA]_!HO[JK!VU!;GTKOX?J5K3:@N837VUS/X/S]&T_"`\GA0%1LMUMUN&HR MM?M`VZLO(C?Q0.ZVH2/PI<"ZFFXGJMR]00PY/JW2L_99.N\V72^[L_)F7'+Z563NS>G\'Z/75R*`&_(2H\560#?(--;=W#NCSOK MA^.X.\=J`T?2GC8UYL\J^YW7!H*+(+NWV#9<,]DHYAH\JFECGE7-=7\VWXR;1*9Q!KNPG;?3M3.X>[?.;%U& MU3QX]L;DY@]Q[R:L#+[I-C$['W^<)`+K/(=2_3A`YP@)'&V70%ZHG"`V07Y[ M'OB%,][\+5A7+B$ZN?X;+U+)-'Y%5#C4SKO#@Q#!<-U1G,L9N!;--9RB$NU[ M';3[LW/=T)^\7_NZ\[&V-7C.[B+(]8'P6,*]G2?O<,:B%U9!7UXYAKHI[S-4&+WI='ZFR)&2IM/P MJ1[#E28@9.6M-KDF=:$%?$7Z92[.OK>!"W&E3,7-[Z[!Y6@UD%=G-D).<'D% ML>1;&SH[7WWNQ0-YB,:5!QVH;TZX_K7[G)4 MJN/R^EJ;-3+-O.W$_8.#<;69,V,[:X>)QSTGP.W,/L"-AW)>11WEKU_OT>K) M7UM_/^]+\'P#(]EUO7&Y_WI^7(`^WZE[@9SE&IL?& MB+A+=5MU3:HZ521$CQVU'O:XB>1EN>5#R/K8#_-XJ>[V!O)'C@D/NY+/ZPWI MCZ\\-QKF\QKG*7##F=FE>G.,*)LZ572P,#_7V:-V,=VI@I*Q>:#>NF`*H*E$ M+'5:=JIXAW,>L$LEF";7`KOL;(5@ECKG[-(9KIOVH8[0>3BD0FNA M+IZMH#(GT%69=P3864W$K9UWVU;$/&(O:-DF;(.Q3%%;(L1\8^8.%^.ZL5!0 MQO2$=C3C$_>,GV"]A[:TS MX=FZI@T3+,T'#:BXP!S6M?$>4/FU>.N`M#Q)>'-8Z4SMN+(R^!+6=AI_KDY! M%IX?4;!4DC+:)Y@^$X!"E&TP2^#-Z>"Y902)S28I$R89[7U=A_J3IOWPES>^6`S?]XE>Q4G7!-KTJH9]9J-)9=0 MIZC.::7AK0D=?DR"_N%;$^^'K]-^P8O4H\[(NH^M;TW02P*AKYP?B'_S5WH@?IXQZQEL_4>'[ M8XB1AOMN6O,%2,X\U)2_0PM9`6(W/;]*$-&"F\Z[_]),&F6Y.-_Y,YIBX_8] M#CII-/IMM8R4S*=/?4W05U,F^^E&O]H,0O[Y4JK/?`6)?6'.W\,SR-E_"-T) M!?PE$(1"_AMO2_=%]:]]I<==!8`[?\W=:=&IT78$W8+4ZP`\NQYD9 M@-6>*4]//)/;9D7),'WVT_6T0._L.H M^78G5*OSQ:LI;!6B:68`AH%>%V\E=6EUNX0!R&K&9+P7\Z3)> M(&;%OJV!^1P.)$,V=%?--9B60`#>O=7+AW@I$ M?'[D6TJ4DG5PHB`HE<[O$TK<)WEK9!D9G!=YK M_(/+1,S9@#+=="(2$5DLG\#VJPUSTQ\:%(U=:#@0GS6MZ'T-VQ&Q2XQ;<*#2 MQB=%9-G&4;?'R%;$`[O&W8&`RF`9U&JE)&D?,?C0V%$"'-+V!XU#^D,C$OMU M;4W&[N-LZ"B)G\;B8NT2X2#A)BL=+8]<`N'_H7\\7W7%$ER#%L$,EOD5;1:! M*\82U(#[(*%'GOEJ0"!>1&IU@40-".^Y$!62+"?+07TL'`46 MA34BHQ]>U);!A";AW_;^T4.[Q"BX2S!>^^"1)D!P(Y-?/:B<;#!O'"4H(65J MQ$/?M@56<>)@2)=`.():'SGHV&1461'9AP<5+\.#SO-'18!0%HXU;\R#U*"T ML7%Q/"S!YI1E`5[!B*!'$MZ%#P1RL^`$;Q]A;%;(782$(!KTBL`9UTAE9Z*1 M@[7-5MC%!8!5W!>&@^@V7-QY]0Z28>R?_B`,GE?I'Z20%*TX%@%`.!663?K# M1/+U46^OX42DT^%VG5QJF(>9AFNA^"+#-<(%$./A_D83+'V](/*1]/-QVR.&]?=BAA\42;!"A MH?9`#&I_RXYN<_UI#\ZA8T0*IH+$&3FX`#X0[4@$!Q%:A4/,.!0(!JURG%]'%Q]N M;^\1$$0, M\D<;?G+N#Z?A_Q%NJ6$7*#_0:.5AM"8AX3]?B!&W'N9Z5=P9V/C!B/->+E@: M;#Z''Q'X?^%!)!)50\2PQ`1R/ZQ;Z/,%9$5V86; M$TGXS_UTW53[)QTV,^M=/U@5EH%H4`GDPQ2&SEE/:`G^AT3??5C1S1M&G)8H M)[)P5-)O0_YUA1H=*A0;5A#0%B@X%<9K_$XT^`\:@;_B,/0DBHH%83/#O$D1 M%:)82"M^6+O#\LA7$0PD(WP%"P4C.4?2` M?7826P<,#HR"5RX8UZ&+W53G]PC:=:_#\.##S(:S8JOT2,2+S&)NR/,-=KN$ MEXCV$8LS&6*GZ>6#UV+1]_[U2BR!%*$:(8JHX<4(7KV)\@.`*!HJ32X9.&+$ MV8<+XTNC).V*TR#VY^!)2\I(A>CWV4G!T#5R*+Y]Y&+?,I'0:"@A/E4O>B:( M8(GH*&8A:E%P&-#)B,(=\8`S\@[_5]&("_V((QZIR"W11.2A%%$V788.'@6& M;ZA&?&'-F-W9!)*BU>CX"7@)DVK$:]V%`:+#9!-[M(-L(R9HSR$>SX#(F.7^)'E/0$>1HB M`B$ZKEGEGH-'%2&"F&-D!N]!-\(CR!A(,'?J7L?H%<&)P:$4%#T"(Q_6\'A+ M*81*$S?BP\")[EW_$<&@C2WCJU7UJ7G9B,/8,MY3JD*V6/7`C]HC>^3L`8\M M"9SX)F)"@%-"9#ZFC?<-4`@Q:H+1F;!U^KV-UEFD]K5T1&T%W'D M::+=1P#M,516E7Q$5BAD()MVDS1N$=8.WT72Z&O34`R1HHDP"9QV`?&M72#? MPC:NH&2Y1"\6+"9;*!>@TZ"UD0;@5E;#_1'2WPE57&P\$5\)>4BN@!39$\%O M>8)OWV]41^8:J-K;E\/`.\&02[8O#5@:1T7\N8#4X; MB=FA)0PA;:FD-7%)D02=6U,V2K)]-L$ML[GY%=:$>*B9E(28I$(VA+E::`32 M-DGN?3-$F3&R88N.Y%V8\QUN!F!FE@?^<>26N(;-03QVF\GH4/F1_(2BE?:M7\M9I,9C)7"JPJ'G!.:(SMDSDI0=>=>; M275"$4VV&4+E,NV(]P4_H7N)=`DS0_91AXXK<0ZO!^.$87I7^RAIU>_ M37:FW,7&0KX.U5#']F_1%A-.%B-WE8,]VZ;3DAQ1@X)/>$(V+Q,.3?0/<97B MI'\QX8P6=$T:)*09&!..?N0I(6S2'4P0]XAJ>II;B4IJ%.I?_#;K2)/3"DKI M/-H$H)8]N`*.E,WC[!2`-5`>5#,$9)`88'(Y1MAL^ MR0&&*3G'CZ42R!>=12E!2!V4OE0[>0(:%<%(%S@,HI.GA1I@>C)$\7@--E9B%7Y(AQE6TD_CE'TMA+0;/\6 M,MD$NHTIX)!T5`Z34B!#Z4B0?=FE^X/<$")((-UG`LY<;$@D$K@):2M%J/8# M_H=_('*I)^(;V<:!-*T(EP-0F8A:XE;R)&]97?A$X$A%5UM:.TX7OF&ZB)4, M8":IRPB'BZ6EY*1-$L]%6M<(B8#$F2.Y*=J%\H.%::)E9HN@P[@[`):#WT29 M5UV3&@3[AE%J$&84WR'H19'QA=2F74YE6JE!J%PT&I,)`AYLOV#4 M0G)97F%D;R@RO7ITD(CI1+F_9XC>278-]-UX/`BO"DXJ8[ M8)2FT$@04:(1:9^!\QEEHMI)V)0?G/7"5+N8A9VE26@R4PYC009J) MV&+)"XV$BB:%LUBF<8YBFVG!P),XBZ&IU09Q_^7#:3S,17';5FAW9HJ))PGW)GH1:5]/&<4I$43AMGA36IJ98\[Q<[6; MFZ:`>&0=?K7FYA1EOFN:'`-%9=9II^89UTU-G(YB2L#"^7]/#6,Y]\6:Q%$4 ME!9PDSCGL]EU(H!NI6Z$:&*+V%S:$7S:@Y1FU"FY#7*U9HOI*+(7!ULB!P>! MA.CELTEB`AJ?Q/39:#I4CD>/B`6RGU_0A>D=D3>'&ZH97,Z;GKAA7AIZ97,I@695\N=YJ5NZDJK'O*4_`!\=- MER5Q1).;IGDBLIKQ6DG8`[F,VH/;>:^M+XGHCOA[RG1%!6-I9C*&VUL5A&+& MDRBC]H!34HLV0<;I:,B7S:5:J2U6A^B&_E`+GIF75TX45IZB3.7H>3%!@Q]C MXQ9[3IX"'H39IZ$;,Z9#M=79!.>E61-M7I6]:-P&>0X/2J?V@%1F-&`$Y)E` MN)?TXKY88O6@5`VY]FAVC)UF$^@3TCYG&UR)*A$//6A;B0O*E!)CYTE]^IY\ M)<:(0&2<;:6(2:F%D8C=T4('*:!@WTA),MZ6,RA=*79>3./7+`J/7I24)69W MCXI*:&74BO2?EN'2^=)\6`AH#*JKD9CW%P51C*Z= M/V_]<\636B!1]H9*E;MI,*&!I1C@:;!:;: M=$0E'YV;H&F$D@'?1X58L:#?:3"*3&),]NH+V>U"I?<=`H99$Z#)8P5UV(V<"FAZVA$5I M*_B52A&;J"@:8+)+8$0,:H6VDNCD@R=\FJ2HJ!1:.9);:\8N^HI"F;REAI=@ ME*.H92VJR:BONBC1T8`(Z;?XEF:BI0"7E8T MF:ZF;F2]J//TH\9H16I;J9'DXT@0@PZDVY3NA.?A68LG-JK;H91DWF2*F&J1 MQ@.>EV?UG@+H-O42.'@;3$_J+^V;/$D462BU(]YI.6KYV&5-Y)^G:V:G/R@I M!C]@:2OE"15EAD['R:H1)W8^,^5$5%/R<^-E3FD.%F)I96GF%0&3+1X<^/`L M..S@5>BN>97MQ5*YPV&5RV&_Q89$E?59"U15QJ;A$VU11&ZH'&J'ZJ%^J"!J MB"JBCJ@DZHBJ?V9UZ4,H*9]*F*6DS22?FILOXJQU04IWR.5LU@N9EN)D@(E! M[EVV),?Y\.22P!>U:4UM/&J-!K@G#IKP99H&`.YAVX-ZB<0!3,PD"OI,*EK[ M$(WIC":IZR#-!8GJH(3$E69W2I?>Y`B8/FRIM\I@1NI!8@O@`II.+F05!"Q7 M@')][V1)BH72DZDC[G22?F;ZI(2BB()]F>0_.11HC?,X1RI?)*4042A MTWX&EF$DZ*=2VE/R*5])GS*",*4::%CV>3?E6^J>]T$[Y]O64LQ^!"MJ- ME0?JKU%48I<,JE'AH'J>3B4*IS]0J,6?A7I(X*/;`X2*PVV5\J@SZE4Z5O-6 M*VJ@EI6OPUD9K=I68F;>*,OUH+CHEMG_=()QDQ4:4[ZJY-_=-GV&JZ$FO),Y M]G*6IY)9JO(]Y%]BNFI:.P.BI6B2-I;Y'W/UG%G&?IKEXP&."*+,0&>%IT"JJ#W`[9/Y*A4-J7%<'\7SKG;?F8Y)8MJ80) MCBJHP*5?&J;A&,7EN(A<`C]U(1$(;^JHS^4&VK]1:=1EJW9=8I,;SWM4%]J= MC2=\*01F5.]J5=K]/!+FI4DIM*Z7K&A[V;,J9`*2?"G+Y9O9I'UI_LV8F>)^ M*:=8A^B&HSA.THEB(^>7DSX75M$D2$$X9PSF,_2T+EH.U3PY8?I`%2;':EMF MF/Z=M=H<>IA*$B?7F$J2@FH@"'9.)^"H17JLO0Y_78LIKL&8;XP/8Z7NH:79 MC=D1`HO6IQ/48VYW_&J0N?M,/]ZBD;GU((*>J.U6JIJ9PE`XF+:JJL"B[5(F MBI!7ID\$<5/$HGREG_IG8D!7*@>:N2E@;N7WJ@8KF%3IFQF\)IR@* M:0)"DB8%T7I:FFP=IFF*EH"RF?[9H(8,`IC'GFLR;6IX%:&^F1/@FSKJYS!#]YM*J:B!4*Y#Z*:6>;OP6 MPKG#+9Q#G^T*%?9L-:C$R?FY9[SD_X9Q+EH%X"UYL'E,#T2\1G3*I<;+NKW)41`7`OA:(CPSYQ!&&SERU:<7RL*=?V%E-':?UI_2 M1HDE.I*'%^7[>73FB$_H^4FW-9UH1(@9(DIN5"?8*>$Q0=TG!%AVZG"3)=.9 M2\BD-5T9.'9N/H4JXHB;+G#6%=BIF)Z:$=S:6;3*DW2G8V1W9F(>X?9F-Q6J M4>S_-8I""GU-JQFE'G*$)PH6;2*>TR&I1VHVGG,1L9*R29[(*,[!NUJ>2JA@ MN&J!$9SGWMI,?IZF3^A)R^)%1AS9XCDFI+!HK#,2K)[1H?7ZR2V`'VAI.'L: M<[6G`'%[ZFOXJ>Z98/">V2DG&\;)*=CH\-EV%I\Y406!?$ZR;5Q>J84\GQUE M]$FT+EH)1!I;=%Z?)AL@*AB_HC?6:HJY0J0TJU^&@4.L.^GU^I2]M*A/B9:TG[$UYA&X^ M22@#E36RFR32#02%FHD(SQ0*#J(;RJL&"RG>=UPH-ZMSE@8EE@`AALJ%$IL9 M^H6@H0CK(*31N6)PZ1PJKM%M)5!_)'D^I8PJ1`<=YJ&])A]*!/FAYZ)JV74* MHO)G75B(YHJ/1`QJ>$Y_C&C::!9ZHJ#6&B\N?N`*AVLSC= M-$&6XG;PICCZ"[H<#>G*UU.NHC.'3\B_*HW[HBS*0,VB2-LSBHMF')/I@]J+ M0I(Q:##ZA"U*UZ0N*J3VF9>7,LK$4A#'[.45^4FC76RB:8WFF;=M'QMFH7