home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!vtserf!GroupW.cns.vt.edu!linkt
- From: linkt@GroupW.cns.vt.edu (Tim Link)
- Newsgroups: alt.msdos.programmer
- Subject: Re: text modes
- Message-ID: <5119@vtserf.cc.vt.edu>
- Date: 26 Jul 92 20:56:59 GMT
- References: <1992Jul26.134202.12205@news.cs.brandeis.edu>
- Sender: usenet@vtserf.cc.vt.edu
- Organization: Va Tech Communications Resources
- Lines: 636
-
- In article <1992Jul26.134202.12205@news.cs.brandeis.edu> dernis@binah.cc.brandeis.edu writes:
- >
- >I am interested in using text modes 0-3 with an alternate character
- >set.
- >
- >For some reason I am under the impression that character 00h-7Fh are
- >not alterable, but characters 80h-FFh are alterable.
- >
- >Also, how is color handled in the text modes.
- >
- >Mitch Dernis
-
- Mitch...
- The entire character set can be altered in the modes that you are interested
- in (0-3). Graphics modes only allow the upper 128 characters to be altered
- so you are not completely off base in your recollections.
-
- Colors are handled by having an attribute byte following each character byte
- in the display buffer. For each 80 character row on the screen, there are
- actually 160 bytes used in the display buffer. The attribute bytes can control
- blinking,backgrond color, intensity/font and foreground color. The attributes
- work as follows:
-
- +-+---+-+---+
- Bit |7|654|3|210| Colors Normal Intense
- +-+---+-+---+
- | | | | 0 - Black Gray
- | | | +---- Foreground Color 1 - Blue Light Blue
- | | | 2 - Green Light Green
- | | +------- Intensity/Font 3 - Cyan Light Cyan
- | | 4 - Red Light Red
- | +---------- BackGround Color 5 - Magenta Light Magenta
- | 6 - Brown Yellow
- +------------- Blinking 7 - White Intense White
-
- Only 8 colors (normal) are available for the background. Sixteen colors are
- available for the forground (8 normal & 8 intense). If an alternate font is
- loaded the intensity bit controls which of the fonts a character is shown in.
- By default the alternate font is also displayed as intense, but this can be
- changed by loading the palette registers.
-
- Rather than try to explain how to load the fonts I've written a short Turbo
- Pascal 6 program to illustrate. It doesn't really do anything useful, but
- hopefully, you can see what you have to do with it. I used BIOS calls to handle
- the font loading/selecting and direct screen writes to actually display the
- test data.
-
- Hope this helps!
-
- Here's the program ( There's a uuencoded ZIP file following this that has the
- source, executables and several ".FNT" files. )
-
-
- Program ScreenFont;
-
- Uses
- DOS,CRT;
-
- Var
- Regs : Registers;
- Font : Array[ 0..8191 ] Of Byte; { Storage for font file }
- FontNameA : String;
- FontNameB : String;
-
-
- { ReadFont reads a font file into an array in preparation for loading
- into the display adapter. Reading is rather slow as it is performed
- byte by byte. No matter... it's only a demo. }
-
- Procedure ReadFont( FName:String );
- Var
- FontFile : File Of Byte;
- Index : Word;
- Begin
- Index := 0;
- Assign( FontFile, FName );
- Reset( FontFile );
- Repeat
- Read( FontFile, Font[Index] );
- Index := Succ( Index );
- Until EOF( FontFile );
- Close( FontFile );
- End;
-
-
- { The EGA adapter can store up to 4 fonts in it's memory at a time, the
- VGA can store 8. (This demo only supports 4, regardless.) The memory
- spaces for these fonts are refered to as blocks.
- LoadFontArray makes a BIOS call that copies the font array to the
- display adapter RAM in the specified block. It also reprograms the
- adapter for 16 scan lines per row, because that's the size of the
- font files I have. The lines/row can actually be anything between
- 8 and 16. (Some adapters have extensions for taller characters.)}
-
- Procedure LoadFontArray( Block:Byte );
- Begin
- With Regs Do
- Begin
- AH := $11; { Function 0x11, Subfunction 0x00 - Load User Font }
- AL := $00;
- BH := 16; { Number of scan lines/row }
- BL := Block; { Block number - 0-3 }
- CX := 256; { Number of characters in character set }
- DX := 0; { Starting character number }
- ES := Seg( Font[0] ); { Segment of users font }
- BP := Ofs( Font[0] ); { Offset of users font }
- Intr( $10, Regs );
- End;
- End;
-
-
- { The EGA/VGA allows 2 fonts to be in use at the same time. The particular
- font a character is displayed in, is determined by bit 3 of the attribute
- byte (normally the intensity bit). This procedure determines which of the
- 4 supported font blocks will be used for each state of bit 3. Block "A"
- will be used when bit3=0 and block "B" will be used when bit3=1. Note that
- even though bit3 is used to select the font block, it still functions as
- the intensity bit, meaning block "B" will be intensified. If this is
- undesired, the palette can be modified to correct it. (See proc FixPalette)}
-
- Procedure SelectFonts( A,B : Byte );
- Var
- BlockSpec:Byte;
- Begin
- BlockSpec := (A AND 3) OR ((B AND 3) SHL 2); {bits0-1 select font block A}
- With Regs Do {bits2-3 select font block B}
- Begin
- AH := $11; {function 0x11, subfunction 0x03 - Set Block Specifier}
- AL := $03;
- BL := BlockSpec;
- Intr( $10, Regs );
- End;
- End;
-
-
- Procedure DisplayPattern( Offset:Word; FG, BG:Byte );
- Var
- Address : Word;
- Attrib : Byte;
- Data : Byte;
- Begin
- Attrib := (FG And $0F) OR ((BG AND $0F) SHL 4 );
- For Data := 0 To 255 Do
- Begin
- Address := Offset + (Data * 2);
- Mem[ $B800:Address ] := Data; { store the character }
- Mem[ $B800:Address+1 ] := Attrib; { store the attribute }
- End;
- End;
-
-
- { DisplayTest uses direct writes to the display buffer to display all
- characters of the 2 currently active fonts.}
-
- Procedure DisplayTest;
- Var
- Data,Attrib:Byte;
- Offset : Word;
- Begin
- DisplayPattern( 0, 2, 0 );
- DisplayPattern( 800, 11, 0 );
- DisplayPattern(1600, 4, 0 );
- DisplayPattern(2400, 13, 0 );
- End;
-
-
- { Adjusts the palette so that the upper 8 colors (normally intense) match
- the lower 8 colors (normal intensity). This makes both fonts display
- in normal intensity. }
-
- Procedure FixPalette;
- Begin
- With Regs Do
- Begin
- AH := $10; { function 0x10, subfunction 0x00 - Set Palette Reg }
- AL := 0;
- BX := $0712; { makes upper 8 & lower 8 colors equal intensity }
- Intr( $10, Regs );
- End;
- End;
-
-
- Begin
- ClrScr;
-
- If ParamStr(1) <> '' Then
- FontNameA := ParamStr(1)
- Else
- FontNameA := 'SCRIPT';
-
- If ParamStr(2) <> '' Then
- FontNameB := ParamStr(2)
- Else
- FontNameB := 'MEDIEVAL';
-
- Writeln( 'Reading font files... Please wait.' );
- ReadFont( FontNameA + '.FNT' );
- LoadFontArray( 1 );
- ReadFont( FontNameB + '.FNT' );
- LoadFontArray( 2 );
-
- ClrScr;
- FixPalette;
- SelectFonts( 1,2 );
- DisplayTest;
- GotoXY( 1,20 );
- NormVideo;
- Writeln( FontNameA );
- HighVideo;
- Writeln( FontNameB );
- Write( 'Press <Enter>' );
- Readln;
- End.
-
- ---- BEGIN ----------------- Part 1/1 ----------------------
- begin 644 scrnfont.zip
- M4$L#!`H````&````H0P.XF/8Y08````0```*````4T-225!4+D9.5`\`$@,D
- M%38G.#EJ>TR=;A\)!@$3-.7VEO=!0D5$O,.(%2]"A/C@&4U08<2/$2-&>$9[
- M6$Y8WN':AQC1P3=LA&_8#]U[$/[#,W@(_[`7(_S#\=O;T`X)$@BV;^1!@0*"
- ME\C@'2F1(D:*$MX16SN$MV$C;JP8X6G8B!DK3O@:ZBWV%]17X*"OF-#"-]3;
- M,'^YPP#_\!_>X@2>#/,U5+,J5/`-67'#5W#=R=&>8:#M:?B/`0421/!E>(<(
- M$03;UPB]1DA08,``WX@WJ8!OA!*O\!54T_XAWB`/F"72$)#EF9,D20(<4JC0
- M_T*&V3OI%S)DR'PE2I3([YT.&WFR688889I-GMC0,X>+%BJ&`C*R:L-,8S
- MQX@1(@BG80UB!`D42+"#Q&C@F8/%2*`O3A`CF*APJCC]XZ0*(2Q8?VT@@F&P
- MAO6'91"^,V9F>J"!KQPL<,"`GKG/H(,+)XX<.GA@P7R>.4(,7&3!SN&;#-1'
- M#I+OL&<DCS;:.QDR1).<\+_PX'OF/Y0\8'[>'E@HCV?^('^@7KRVK_&_@;9L
- M[0ZA+>)IT]YOD&_4LQ[6(\[T@OB+>(8+FFW%^C2$QX?W%R08;8J</7.>0@4U
- M*X3/QSV!JT<>7*GIRTGV=:A),7+"AXPXOE/'.O88,&%\I5:/"\07T]\YQ&
- M,+_U@CVHCV?.5VS78$$7[$-Y_447\1XH3R#?Z/_""1/TT>0)TS^,IP]TRI03
- M.T8,\?3!GJ8%^<G_#+O0($^@$5*D$#Q"Q.P5)X;SS#D\Y2(G.A!L)XDB+A5,
- M%(GC#A8L5*1%!7USPTE]M(&CC>SFF=M.FB281/+,>6TM7[,_DV([@;%@^0+I
- M2R\7RD=PV#>M-&G,`+'O>#.;^89S>Z)#@WR%(V0H,73^0%^&)_!E)?1E.EB3
- MJ"?9UW1PX4*)R-5<T67//'GVS)I5JV;-G#ER1,]\+&DZB5^PNRQI[)D+>V^M
- MC2J5.5"@084,GF).N4:2&@4.>*;]J,6"Y0T4&@<.%B9&A@8'_#KU76^Q8/FF
- M,9(4&D@7`/W?DZE<,VU0I.>""*=_&B6*X&&2-%N:Q.\B`>HD2AAPH*\IM;E.
- M(^^H?Y(Q[&!_$XYOJ3-,K*1/D@@:\;4;WBN1)`Y(85D:*%>Q0H4/%=*-PX0A
- M[-!^B7)M$B-.Y!]1(HD\A="4@\01Q>$G-?(5"GJ08$&']/`WDK5TR9(G2WI&
- M?`U!12T\Z#4)TD:/Y0X<V)^A^1)D,)@X'L&?<(%70D*@H@L>R<%1T'R^/%1(
- M;R%&2=[^J(YG.,A?>E@@STC)MFUKWP[I&2F6,F**);Z"^TW]\R6*-&G!'`4^
- M>*9V0Q:]84=(X!6BC!&_9,DRKA!>EX:;Z2JXX&[WF3.&,=?CPX/9N>"##_?+
- MT`SLT,:-"5NP[_F$!"LUZ8_]"W:,:],0<;+YGJ]!/]^H=WF&61Q[AN9AM;U#
- MC9J.<=K>IDIQFV.^AH$L>X9X6KZAWG8<L*4\GD(\P[VS9_CAPX(RXO\)/ZPI
- M[!DFX=MAU=1\...Q_[Q"N]^YT2]V[G<<`<TF33/_-^S,G[D6]19%5F]!/"/>
- MHIY17[$GPGS+,\R_N.O/`?',*O>SE06[G[_P8<\P5\Z[-UAS#I]P:IDP\;36
- M,.?O=O<T.4S,8_P7;-\T?[-FS8C"S;XI?MXS=[A!2\9OP6/[1"I(\@689WDB
- MS.]37T9\RU_0>[T#]/:M8YKQX>/G;W]^[(LT0+P,^3*W\S#A\2314&E^SZ@F
- M#^8))M<&ODQD"@U,,1#/?.#``<HD6/!CS;(1:K?#KOK#,W+FV><?Q*E54PS!
- M5#\^TRQSLS,$"Z:YZ)9)QHSGSAF&K:HJ&$*Z8(BML6#P^/$Y0PBS8.FC!:MY
- M<\A$R,3]/4.]@S5OT``\%@S.G_@&]VYA)*!)?W#$GD)\`JBWP&/\^.$=JO=B
- M+`00Z'_O8,8(\8[Z1[E#"+,GP9\]4V7H,[[Y'[=A6GTPX-#G6"Z6<Y'G_L&?
- M^1+LOW?4/^J=\(KX!F_FS>"^Y<O@C`#YQRWLRXA_F#<CH(S_^8=X&O44(<P>
- M%^J/$&]$\_2C7S#2+P\P(()I^/""(1\^"(8XQ[R&W.N,,G;V"5&M[GZ$;8IY
- M.$$E^_@*+#)@_YI;(^*[GB8/RH=-#?^76:FS9U2GR=,6-(K4VA(<H\R#:9N5
- M?AT#15N$"6^3P\+$7*$/(WS**PINY_.KYC.1=[MW[WZ'&5NJI-^^?9LH.XQ_
- MXNZ!\Q,>S)JPI_FP7T"P'JHOQ!-H#-&H+Q.#C&(60B#/!"2^8=*`C@T4J3/K
- MOQX))4HF;(^$0!/<"@ON&9&,?LB003!GSY8'F#@N-4HC8RY#L74ULMX#[]=/
- ML/P`0`=02P,$"@````8``)`T%!U.1[F=!@```!````L```!!3E1)455%+D9.
- M5`\`$@,D%38G.#EJ>TR=;A\)!@$3-.7VEO>"0?8;N'3@P+TS!_;SC/_?_O__
- M\//_GG&`-O_^"=XG1P3/.$*./IQA,?+D>?[\>0S&/:."CK]GA#B-09G0+MC/
- M#_O:D&6:YFE6J%"S/+Z1PS/W>NIAW_C#@PTSA&\&'`>PS#&`;<_DSYD_8<*$
- M"1<^N&?R[YC@QXX]>]X\,+Y)C-O`FN>V=S10L'#Y_N4+%RR09S+@P(,?_WX\
- M.##`7XCUOBXN],P9P6)L7^/;MV_?NW%#<,ZTS[$P.=IX>YL<#8[U444X.=G3
- M8/T\PV)X"L5,O8T(GJ'!OP89+`V/$>9?&-V(8`<+%DS76+"2-/O?+`EGQ!<"
- MPS[\1BDESG-X`R(8#)\LV([EF6)"2\,%SY8M6W_#Q#.'R%<Z=/A\?7JT:)DO
- M!&@NUJQ#CCCA@F?.Z&D<+1;GY5-'3MU.7R1""$_#-`<W#1-"5)3Q#!D$,W.T
- M=?]\W?/U;\W/2`RM+T"""E:<."&"&&S4E4&(QP4:^(H#!W1-<C3Q>[NU,SQ9
- M'.<D3CQ"(#Z7-&JFC\EQL7Z>,?4-\C1H`'!03[M%DT;_1?]@;](O4*YFC7QO
- ME,?7:+!\S<`.XGLA3RN,+V)/+Y8N3Y=&C7QCCZUF?1IX"B65"#,QP+Q9,;R9
- M)-"T@X&\&1(0=$20H$%L6]S2)9*O<4/-\OFH+Z_9MF[;G`$+Y_-,.;DG!^5]
- M0/6[9YK?5YOY:S'$\P-MTJAPX,""%V[NG>3O!B[YD^-[IOV+!4N6+YG(6:R_
- M9TBP\+Z,_>_<N''CY/$\T^?VW0_0>NZ;Z",%:ZAG-$;L<-Z94I-%R]?-.QJ>
- MUA8L;V-/;T>,6S7R%^I]N7*U:G7JU*BYITDG?-O?\/SV4CQ?P7USZ];IXW7P
- MC6:+E\S;:+W&A8.'R]&A8>>\0H7<GNGUH,=]53"7R^,9)_/6:.&`ZF"^T6K5
- MA+5?MFB>Z7O/T\7)T<5;J._ITL3Q9WC_AEZ'%O9EDL=KD3"^2<#`G.I_AP8%
- M/!+V6R2#;Q(B3K;&4`'0C@G#'48V>+R,.;)USNTK&B18\ VAF38OE&279N
- MM,\A>G<.:<^4.7/FW-U\(T5`<3G?A&5M$2:?MS@>;]R@3B;<\W4TN?/X&N:+
- M.(.IJ;_V\`R>(5HX[Z0;*`X7+UMWOT9CQ/%Z$,&N\N_ZM6O7KGM&L[1K[FN$
- MK!.?"?,M@B>!1P*D\63E$Q3:X%/[8#X/$>P>9<#13;R-`?)^NNPR:8@&TIW7
- M?M8MC6>T.<"CGE&BOUHWOS^2=\12]<I,W3VCYXNUR0,4#B$>[=<(H+!E[D#-
- M"H=8';Q")`!'16A3Y`R:ENF7B>>#BSP5[(_)Z)EAMGS8F1X-#GBYE%X#>'2^
- M@\^$WDT<_PNFX6`-;QNBNT$?WZAW>89A57N&<I_#.T2@*1A63E+F\33J:YBG
- MY1GF:?D&XUDPQSU#))(]0RG,$3Q,&>CF%.H9)I'T[TR8/F'.`-E(MSLW^L7.
- M_4XS^=%&W/^!?/DSXJDBFCV%(6W/,&]1SXBOY(DPW_(,\R_N^G,`E*CDO!*`
- M)MY03R-.]6&]^+"7@FI?1F;6^S['T?%A#=G_!3L&3T;SV86_*7[>,^UPP\\F
- M')$`DGP!YEG^!/,L3X9YEK^@=]SZ;B0RU4R.G;OW[]LS7R2V[J3OH^'"[.YL
- M<',^%Q-">!A/1(A4#J:5L&=RX,`!*P4'/\81]K[;89CSAV?DS+///X@33W,>
- M(0X1_$:;;&UN$"@PS=MDLTQ&)!(,\WQ55<$PSW>_$PS3$;%@[!F-[QD:WS/2
- MIHU@;L^8$@KM[QGJ':Q]`^^H?]+&.[2_;W#O-3H*G7A&/84)&KBW((+_\`X5
- M_+]W\/_>P<A8J&_[!_,._>$=\15YXR_HFS!_M`T%(/J&O/<UHFWRWC^X=]0W
- M\8[Z)]Y172:^(8+[&LQ?J&CL">#>0GT9^X=Z,UR4L7]P3Z/:1'P1S!O`/(TR
- MH5DPZBO$,PX?7C!,"^T/@F'0X8)A:"/*V,TG1+CZ?AQC/X$QB!^:'`.2J,9`
- ML!'J.TDV0+<`%OX'!^]L/!:"TP04AP$TRNT^*N,X.(8`@N"86">D?AE[9LVY
- MW2/$/;CM/GX(.*$E@"Q4$8>8L\_S:V#_&-[]J(2'\336R/283\&`;,)8Y*.:
- M(**'ZM'$(*-:%/&,@L0W/!I(G#AV.#<<_#\?#C%*]`Z6C,:1)I@5%DP`#Q-,
- M/M@39\^6QY-);&N41L9^AF+S:F2^!^%"%"P_`-!02P,$"@````8`JH+Z&'D`
- M[9QT$0``(!@```P```!30U).1D].5"Y%6$4/`!(#)!4V)S@Y:GM,G6X?"08!
- M$S3E]I;WFVH%";`A0)X`(P(\:O"H:=P#`0*9GJF`X3EL>X)A#S'L.(;]R+`S
- M&?8PPYYFV/L,NZ!ACS3LEH;=U+![&_9VPWXRP+P->ZAA+S?L`I[V)\-.9=B_
- M##N:8;\S[(Z&G=.PQQIV8,-^;=C+#;N^86>05%,U[!:&W<2PPQCV),,^9=C#
- M#/N>80<T[)*&_=*P<QKV4,,^:]B*[`![#?NS8:<V[-F&?=RPHQMV><-^@<RN
- M8MAA!AC.JU,#=#?LB@NF>A*OFK@\;L$!-?,5X'Q@=L@3]TO0X-7&O@'^MW@5
- M]W^`4#7?/7!]3.")#?OU1SU@_Q:T2<UD$U@'3>."NO(E.;MFHP*F\<6^W`]\
- M'"M`#^@?54#]8.($N/FBHAV(THCM%]23"('3-39-3E0P329FWU4X@:ZD[[CB
- MQ@T6^5+$$XDKXK8P1,5&"8HV"O"X023/!PA_M%*`C+&/IH*DYGX4'88-$>IO
- M(GSK0H"B`12]@#&SXHSF@]D+T'>2`V&2SQ7]=/"+H35OH%D7"D=L]-_8Z`'5
- M__/:D(:""HV;@-(X`:7U@=).0>`Z7I_L:-\@>X?J"_XJCG)WUT\`.-(DQL
- MU+]BJ_QQD37414+ZH$G$%9KOU\RN![H8'[0"]LO_?]UE:*L!M,&)>:BP!0BG
- MQM'W_8\;Y(#D%S!S.,P#-9`\`68^AGFP"9)OP,RM_C/:A_D)$H*?V)S"\A(/
- MC`ERN,&I0Z4FA4H58=.B1),6M1J4J4BI9<.23>OV+$BS;]W2(3XMV[)S7;IT
- M"1+*\6'GE@5Y-VQ:NBX)NC3JE`K;R\E^+DB>1<HO*]>GIJ[K@Q$/I"]F6%4N
- M@>S`<M<JEW@]#97[_B7.`^X)D.X':S-<S%I_8P7I07>1ZR?^-BC0X15J"*1)
- M`4@#S1J;/P32D`V09M2PO]F.:/ZWA6O[HFM>:X`O+U\@L5%D"]Y<<Y=US6'N
- MFM4E._KE_&$'<*/W$\=#B(.,2CPWC!YH/SQS]'?]P1NTUNV/WL0RI^#V$P5D
- MK[D2L15%H2U%@:SY$3@R!#APV[0/(<,F-+"-%I&5WU+'(,\8S],#3/5(4&EP
- M]"C4:8?H,K=Y6N"`K`GI&PY`YIH/2'O7Y;0?HK=>D.=!N@IY#K1KP%;M=!,^
- M-$#:"&7^1^^[H&+B)/^*1BM2M%>1,X&+SG)\&N'5B@0J&JL(TDF7!V9TEQRM
- M;E)G0;K[CCWWO_B%"L1]XQ&_#WVF]/OQ1Y.Y>X<?=;<,B'MCR>8A/P[7)>_"
- M+G^3AR8_M]T@3X)R!<*R[6FU_=6"6!62I]L2M\2(LYA76A`WS(BW`<I*'FA!
- MP/I5UK40OX/XAD[XW``-HF=9D+;$V2#1ERPXS"[_6!#*.DY!Z&,#5"B]+D+9
- M&(S<)3QV0,7R%5/WKXSK`F6,=@72#CB:J\C$%LV*1.QPJXC86JO(`$U^-)AH
- M%RMR.%2/N-D&=(P=L(\I![L7X,[+!_R(]9ESQP.L&W#8LRSI@,TMO-72%;^>
- M/FROZ#<.A#T4W208G2>X^<C%W&TN/DH0_8@\[_8_J#-Q9:P3M2N^JF#XNPB&
- M?VI@^+<$=4:_>U)G_;LCHAKO1__.\6[TGURG@Z:^.]%_<YTNSQR_(*F:<@=-
- M-><'*D?P:Z%YQ3Z2?K$#ZA>)Y>AO$C!.>723_'+T&0=PX\H5:2M'@LM,\P.5
- M$G&S-GK^`K%HJZ)[5^PN7W6ZKRM0)G#T]_"3BBGE=PD(M0"F7>Y%'=]^-P)3
- M"[09IOF$.FV.:4[*!Q>H#%1&3^L1%Z[2`/G^@<$]JN6-+1]F68:6-8\:/AU0
- M<H:`#K^TAXO0`)Q1V9,\&)N@='#7^NB:6-;[R_Y0\0B7=8DB6A=?);A0.ET+
- M@<MG_L,]7^PA]5ZD=J"TTKKXZNUQS:[%YQ^FKE\)XNY.4[=$@#NGS]5X?_YB
- M[.3#HAY`^N5Q\V%AVS8_5/%P\T(5'QN.WK`GR8^ZM?>9Y@Z.(`XB2]/YW`/<
- M'72$'[4K!%Y7HDQRUAV[0L0FH(O=R,YW1U_1GU3NT6;QOP2/%WG^&O$$`9W:
- MA89/7)0AXZX.G(>H=2#CIA*-%X4)\(.63)W$%3/?#8<*+P_<)W6_AEOEN^SK
- MN']`CZU^"NU;3-P50_$:$S?E4+P'U.U>JRYF5S`W:')Q58)*E13WU2:)]V4X
- M<]M5S#'F^C]7*LT3(5V:/"?2A5%9TW&%\]Q(]R3/@'1'\C1(]R9/C72-\FQ(
- M]RE/D'*?[]1.=]G$.T#OC@E*>[<+?/'\];P7;J>+&S9"=*$UK,IJH91L%.6E
- MXM6O)_4]75!:/$"]9T:O%N!0\>_71]K2643;%0&MZQ6B=W+&CP=LJ'#H$*R,
- MK$WD%57=M<(N9.8VB8TYLVX2?8KAQV=@2_;7<D5?P`:3W0[2XN_%[N@YH=[8
- M^>4';\2,Y(ZN",-6.#6JE,1QN0"QB+JKH+*WV,MG\E1(MR;MA(H]_/XRUJQ2
- MT9<-J-6_L,!1NR`5-8ZOOTC+2$<-``F2CGFZ#43G]0FL&=DQUNA;`CRH->O6
- MX?Z-C8[:Q1`[A5UK&VA!6W#Z+)#V`*Y/SS``[V3L!0-Z\%S%UCV4.[Q8^^)[
- M>!E4'@(J9\&44.4YCP1%\D3_ANQ!_X.;LQ#X`_#:#S3U<`!2OYXCNI^65'R"
- M5/:JC=31X_V__B#ZGP#8]4C59;UXT^AC`EB;3K2VK=;V3=S49=H?*'PQLKU;
- M>M@.W:^COKB08E<*^\&R!ELND=YYG^X8L[_JT>#BYRN=+=VDK-BFETCDV!H[
- MH/G_@<,^6@"MO(QH'Z33FV@6A),@*=F9-FR#'VQK_@IL?XNL%6-GCSI@W?WZ
- MB@T0OGCXZOWBV:_#TN=9KQ;/_^#'+U)RJU>K&FP.\6#7KUZ'?7Q8+T]TV"&A
- MJ,&M5O60.7/>==!V.,5Q=KQ=L5>&T<<%7_RCQZG%[2+DWQIJ*\E.>&3"0Q,>
- M7;/B([:^_^@5J_[EG"9<E<TA\E^EMR\.)KSPU5B(-T9L-S%B"_X#XV[@;:X+
- M%%T[8P,"\IGM%Q,O.&%%3W`Z>L;2QO1H!1IA!AAQ`[SW:`?"8Q!.<Q]-PG*:
- M<X@;$P=145P%QG'EG<7"?IV]TO*'_(_%VRIEV#X9VX(Z/9?/!Q`I9=R--O
- ML60ASW6;.W[$L;HZGL2Q7CO^1\Y37`#;3$$K?PP2:RB97X)H>#<FMX!MTPBN
- M&ZY"O`RQ3>_W;9@-8AU\_D.+:8(?,/^<<UAV%^>KM*D<79L'["1UQ[HUJU:O
- M7[M^//@<-S0#[09VT9$#>&*6ET#UF<F*&)OY_M$R#//@"X<%E$-#!+A`01^!
- M3IO<Z4&Y@K?)T!1PZNT9#U_IP4D/7@^!%DQCS4WJ`(E[=)'F@<'[A(QKRH]R
- MU4?S:+)9-12#\+*_&%A/H(M"7J$`*$&6]%B\@IGM20H_U-,O.`6A?<K=`06B
- M^].ACAJ=\+LA+.]A.>L^7I*S3O15E"L??0WK*UA_0%QI,_'?I>(#FM17H[.J
- M3GO^\-ADLCVV`DGW]01J:?OQ"<*$$K1YO(F][(9')^ACA;(*'!T#ZU@6?MOS
- MU*$P)GA0,71:K7N(U%W@QI`C2=*L:?,FSIPZ=_+LZ?-G7:EU%MQIVY"X'MQR
- MW\K!_$&&^7$#=+&KR<2:NZ[!QN(>^A9N7KEISZ*Y'N78E"!CYL0YDV5.F""%
- M>,\VK%LR4?H02Q_@\L$^B).8OCR4\>D=^U],WZ9CH@*H>%6!?P_RI7!\0;D/
- MF-T@7P3.'4<(OG,^[F3GF_5?P*E7$I^;\#[VG09U`I13[<JJA^KO$,@HYS$O
- M]K`39%\5B%\;;A:\2ME7KVY<E$Y@-^VI!QB/3-IS;<[S5[/F^<2@#?NI8N0R
- MV\\G);%6_<%DVBEQ!3]#>LD)'+N!8V=P;(GH11U,(EY4H3(TK\ODOQZA+I(?
- MZZU[]C6&CP7V/7J^2^QAG2S?(ZCI0CQF9C<#QTD$8B312P!*0LN7,QHC_.8P
- MD\`5E,M0H82<UX4<<YI8N#2&8X':$2RM9[['"'77ZT9R,D.;[PQW?6:[-X!_
- MA-D%;_)_AL_Q`:UK,^IA'H<P[!,WB,Q[1$TW(#'_+Z!L=^6PILT3<)_,F6["
- MQE5AH/YRGR92B1=B]\79TNF4BSO43P1[W-H2]L@9+[<O''#="/B\SB'8!&-?
- M2YVM;&:RR:888MX:H.>HGP#*1MWXR,WH!0HQ^A90>+!V@'/J(^E+:RD)2EV+
- MM3>N='TNX9JG_8/YN0*Z??M.;+<WH&E+V0_8G>4OGKX2FH*UH@FGE380RS'9
- MI]1P\:H,-(YY'`.:RX6@14&C&17D)S)8LHTI/.WN'6[H9FP,VY"FY1Y<&>SL
- M<9=YZ"AR8`4XF5)8>,?!^PEPJ&G[R*:PC;%I!'6@ZS8(OXN^5U6@LG28'A1-
- M4*]K&5Y`8#@^O>97=.>C@Z`C4M/790];PT;N'U[6/Y+`/SK-OZ$,&=H#_)-1
- MK7K8%&8R'$'NTUTIZ#ZJ<5P!T3"BH)X?YE+H9<P"D"E<H)90O>&0G'U=^NC)
- M+*\@,1YB;TL;HGH7D8)JMQDTD!1#=\#_&/KH]_X;)R.,PZ,GP,Q-#NZK042)
- MDND&4'$,4!%[JP?U&3AM!2*%Z[G"O2+Z]OYNICLPRFKJ08TB)KC3J<&ZZU?&
- M1\Q@;,KEL7LD=_]U2^3[(O+YLPKD5R*C+B3[>G\7;L5$_ST'.H\_<#WZ;<_6
- M#T<S+68-?['^^^&A2DDXWQ_7<UY\;+GJM6(=.'U@]&5<GW[A>KI@9-*<\RJ\
- M'_W^],'!`PZ>YHI+<U;H]Z71M"Q_:4,??_&^@Z^]0P*,'CW:XNQ\X[?!?J#S
- MB=_K1X<>77K3NNH[YWW`CV"^X/J&G?YA(,B[0#Q/SSK_X/`?6/WHZJ-C%\>R
- M6J;!_;=L;]_''0X';71GK(V1<=:J0H4J_<!HV53U"KI-XK_X2?<Z@Q%R`;5Q
- MI`+0P3IR4BH>!3V#>D>H"!=8O1M<F/SO`)KH`^/=]G(G`CE:HFO<Q/P.IONI
- M!U_WV*XJ3#G-$0"-8HI5?8.S9Y7K%YQCN1LO`)(.;A_ZP/Q'%2/S"NGA;`&*
- M4O?Q*8^8X@'EII">M7S7=3D^7?_A#!Z-T9<;40C8;BKW(_R(*F@KX8<W=X[X
- M"H_\<9LK>/$/=Z.8)N1><0FS72<S-CMSA<GP5)O=5$Y>)S&QL"?)+:UJAE55
- M,,/HPA4`[08<@3P9<UP>F%W`N[%O@/\M7KG<%5QN.JZ:^V*C!I$83(?N+WH'
- MJE`1_@-W?^#D/P+($GK>'MO?17-_TR2"Y=_4O,N1[@RFQ@<AU@#]#LD:-(*L
- MU:X_J.&F?0#<0Z&:YD*U9Z*:@J8S5,T1`H@X(.A<MZ!S@0I:R,RXAR6^#L,Y
- M3]T!+H-B5&9P7:.)5D`C<+@D32@/E^F\"FL3OH!+]/`+K,`6>,TTGVN@-7Q]
- M1$D43^9#S`MLR1JV-";;7`;1O*X#3C),HN=TNF`2:H'SNA<ZB4S02>+-0"X5
- M:H(4;6#A4"#BG[K)K'T!H]==)B[J4^>VJF_T*+6X50.2@`AZK1_E&LB<<*D&
- M6])FJCK[9ZYZG0TT5ST)$;VI^G^<M8)5=8X>HYJ\7\;EFM`S5#P.:)X%Z+2\
- MM.KK$E`59RQ\P=\7L+(I\.^`G^X%EUB;)6O;1HU,+7#V#J+"E6Q]B#A8U123
- M!-D']%PWX7.),#,X*'JB`&2JV>6#\_7(`LBWA?'/^W@@<6$JS2PS@I,V-"%M
- M9@`O=P%AO'&ZW`*]T[/+!(9$W$":Z+HK<-6EI:T!TG:I4)JQ@RTUMN>HEJ*H
- M!\JH2'$LS=>*NFB(48#6043"O1XFK8[A/$1.L[C<DHYJI)L@3D"&`L[O`G2Z
- M!S*6<<;KZ:VX!_@P5<(#+!^ITCM@_N![SE]UI,_-$%T`P;`;[Y.7[>NOBMFF
- M\R-%?GP"W[LGR+L#>G#3CYFVP\R/KS1.E^"02M\;"0L5#``J(&EH4$L#!`H`
- M```&````H0P8ME\.?08````0```,````345$245604PN1DY4#P`2`R05-B<X
- M.6I[3)UN'PD&`1,TY?:6]X)!]ANX=.#`O3,']O.,_]_^___P\_^><8`V__X)
- MWB='!,\X0HX^G.$Q\N1Y_OQYGAB.@T8%'7_/B'$:@S*A7;"?'Q[X'#*;IGF:
- M%2K4+(]OY/#,O9YZV#?^\##.&;`<<!+',,8-LS^7/F3Y@P8<*%#^Z9_#LF
- M^+%CSYXW#X9O$N.VL.:Y[1T-%"Q<OG_YP@4+Y)D,./#@Q[\?#PX,\!=BO:^+
- M"SUS1K`8V]?X]NW;]V[<$)PS[7,L3(XVWMXF1X-C?5013D[V--"<:0Q.H0$T
- M4V\C@F=H\+]!!DO#8X3Y%T8W(MC!@@73-1:L),W^-TO"&?&%P+`/OU%*B?,<
- M_(`(!L,%ZX,#@`K;DXOXAK;Q^]L89EO1#.!\6+`^!PYI\PS&PL..<6N,,\<T
- M$TUJ2>]T,X9W.%-;<#!/0ZDG;<%CZ,>0-V@@V!F$&>'Y_R/]P(+3ZG]O@J-&
- MPW"&_V=ED."QSV]K&VK@@#X;/SY\6+"/^VR<PY$+IA%\H\VR@#^,U+C/(4#/
- MT^#`@0.-!`YMT*%'&W`L+B?@->V'">-E\@WO0^V]C_NZUT$U3D"Q.`_B:_2X
- M8?8U?H;]XWO&YY,7C)MAEIF;$4UF?G(#@@XGS#@/VY9Q^1H?XP5G"*`-J&=_
- M^_:M6S"M@_]]N&$/_XN2/1-\^5&_8X<>]?>-#P\.'%CPX<(F`?L?^">(+IPL
- MCF]X?M^'>1K_]WG.)W0LV('\HY\/'_LC3`MX5G!>XL.-/WMT#+"H5T,]8W&V
- M.''P9\>:9<O7[=EQWR0<W^,Q9X`V/O[NWS6TXV.^\?-Q\_9],W_8<*\/]1;2
- M^SG?Y_.]11ZYYYD/?[['*QJ@^SF\-E\S4!NDD7W/CX?K\^!P\;R^C&-B7(MR
- MK8X>Q[?`JKTV":!I]F@&F_BY;EW[]ZZX;SRX'/T^B@-^+/OC(N;=C8[^/_
- M!P]TR!,N\&"_B_-X,PON2]BO.$Z.#EX%R<-W2!Z\3MI`#"P8[#_&I3(5)IC<
- M(Y2?W].,>>$AOP\C^#KNS8][(\[7&."QWT&)45AAGX<*_@"H\YC_B$T(</\?
- MDZ?V9(`GOX_"=<<!25"ALT"!`B!^3\(,M]]WO&S-6!G[?1JFC%:$=R<)7?NV
- M9\374']C;\'[>E9_2-DW-$R_`_Z1_ID?^X</1ML/^L<APN2WV=(*8.>/$71Y
- M1MI[=N-XGI';MX#E/YZ18VEBY&CB][%@\[O7VT/@CQE>&G#''''"_0?ZI`,M
- M.9QA=_#RX0&\"6Y;.8S+,[&+?3XHRI/!"?!)CS,^8S"R<!^R4I"I5)BPFWF%
- M*$0HHO:?+Z/V370WZ.,;]2[/,(A`GF'<Y_`.(3,Y&$?:`.B@OH9Z6IYAGI9O
- M*)QGHI![<+FXF=>C>;@RZAGJS+69#71S"O4,@TGFV,^$Z1/&KZ&"W>W.C7ZQ
- M<[_#3'_H!)O]\R0_\V>D#T&7IS"D[1GF+>H9\94\$>9;GF'^Q5U_#H`2E1P7
- M&*R9-]33"(W^,-1YV$M!M;?;X_EMG_,X6,JSC^W_OG%^:<]7K-DWQ<_S/7)#
- M1Q,P*78X0,*^`/,L?X)YEB?#/,M?4)_K;ACR.V=`9*K9Q\[=^P<6[3-(GFS9
- M^FBX<%OW7"ZV<5`.AQ*.?P^@`^/ZC73(OP,4`_O\P?FZ#;7;89CSAV?XL\\_
- MC!-/<QXA#A'\1IML;6YH&J[9HELF(Q()AGF^JJI@F.>[WPF&Z8A8,/:,QO<,
- MC>\9H9(M6.T94T'A_FT\0[V#M6_@'85.O$/Z^P;W'B=$H1//J*>P0`/W%D3P
- M'WH<)(:?#/;?.Y@9"_&2$/_8._2'=\17Y(V_H&_"8"0X`:$POB'O/01PS=_[
- M!_>.^B;>4?_$.ZK+Q#=$<%^#^0L5C3T!W%NH+V/_4&^&BS+V#^YI5)N(+X)Y
- M`YBG428T"T9]A7C&X<,+AFFA_4$P##I<,`QM1!F[^80(5^]E))Q@#.+%DF-Z
- M(M48"#9"?2?)!A@Y/`QHYG2E+L[8"ZT^;`2<VX%4QK!P#`$$\<*C.B'[9>R9
- M-=O;/4+2@]ONXX>`$UH:5J&*.,2<?9Y?,0R<`][].(7Q-`[`D>DQH((%V21H
- M!^`7RH/#QH3Y:.(9Y:*(9Q0DON'10.+$L?TLK`XL0$"-DE%,)(XTP;"PH(*Q
- M#0;Y8$^</5L>3R:QK5$:&?,9BLVKD?D>!"-9L/T`0`=02P,$"@````8`&CN)
- M#>4TY/_>!0```!````H```!&55154D4N1DY4#P`2`R05-B<X.6I[3)UN'PD&
- M`1,TY?:6]X)!]ANX=.#,@7L)[^>9_+_]__G_PX1[)@'>_?\O^+\^.2)X)A%R
- M]/GG&18C3Y[GSY_'8-PS2NCX>T:(TQB2J:4E^//#OK9D1LUYFGG>+(]OY/!,
- M[V<>]DU^/-@0HY_O@OL*6V;28XB:_ADSYD^8,&'"A0\?W#/_.W:,L(\]>]X\
- M,+YQC-O`FN>V=Q(P</#P^?_GUSYP0,\\X,"##W_^__GPX,``?6'J)K^?N(BE
- M+9@AV]?T]FW![]VX(=B<(L'X97UMX"OLS(BGP3U#!4M71#![&_5%9VA@?X,,
- MO(@#A`@3S/-@84+@&@D<./!_:\.+'//]6!'-F!?Z0F#X[[]P;`_&AMJ0&U#!
- MX''B"*:0[9DIOIOYAC5K!NB&J7?<OW#@?`T:]O=.PFG2=AEBA.G&>`>+3Z3/
- M<Z]SX\:=[WEF>,^ANZ?A.>*$"QY<L,/%R>%IFJ/#@P>"W2&'IVF`NOWS]2?L
- MNL*"]\<V=C3,U7#?71FD;_M\M$>>>%X?Y<?`_/O_]XCW`[LT7C[I%NP?/SY8
- MFOZWU'_]@65VZAGY!RS_1S:%EL+A'8NVQZ/_J>_O&][/OLU71/LMXE^""<\D
- MMN4;\4S_^4;IA?V%/<.]F0\`BM5)!_091DAH<-ML7,%]38*;2X+N:=+CS[GC
- MW[]_1U:4US,'`J]N(,-@C\3/WZ%#_O[/CQ_W9OR!TA*[\HT^P%WPY[X):_7W
- M)O[O&1(\N'_XX\>^QO9U_[YB'=?YQ.#0//Y(/&/!XXET9O3FW_OG[_[<.Y8U
- M!_<V<N;-LV^?;]\\>\9GD./G[W_'+N^88CUP0#-[,_$$_?<5W#>^[_L#WXBW
- M$:\Q7IX>.BTC]V94;&&20]W!`-^"[6OB&7MT?.;,F;LW?W_^]NS-&9^)ZN3-
- MB,LS?O?G!["-S/T)%4?V9=*O7[AP@KE?/[^"BHJ]"F'=&PIFW\2G&N.'ZL!!
- M&N9Y8@WW^X#_^WW`/S)@'D?'&0;Q'!F\0I0Q(KCL,'VLHSKY'HF'N],\)]
- M2.;,A&H8<[D>;/$=>+"6.X.81:3"A"W87"$-`.=UUSX$UF#'.)F&B)/-=ZY@
- M/]^H=WF&A8F1P3,T#ZOM'6J,.L9I>YOJN-L<\S4,R))GJ*?E&^IMQQ&RE<=3
- MB&>X=_8,=]@U-/YOI%M3V#-,RK4PUM1\P7Q=P$*ZW[G1+W;N=QP:S<9,,_\W
- M[,R?-2SB+0;0[2VH9\1;U#/J*_9$F&]YAOD7=_TY()Y991"%>13LV8<]PV+8
- M*?8&'^92,*>6"1//2_'YN]T]3>PTQ_@OV+YI?C[+^8HU^Z;X><_<X08M&;\%
- MCQTN@"!A7X!YEB?"_#[U9<2W_`7UN0/T%I&I9G*8;+[]^;$O4@YKAGR9VP7P
- M,)%XDNAX`?)K<0B7#/R_,)NJ0$E&'`<'"WZL638>S8==]8=GY,RSSS^(4W9V
- M#`X))C;5+'.S,WX;IKGHEDG&C.?.&8:MJBH80KI@B*VQ8/#X\3E#"+-@Z:,%
- MJWESR(3(1#U#O8,U;]``/!8,SI_X!O?N_CHB%LQZ!NHIA*!!O04>X\</[]`8
- M6#QJY:/>P8P1XAWUCW*'$&9/@C][ILK09WSS/V[#M/I@P*$RR:""8O9S_^#/
- M?`GVWSOJ'_5.>$5\@S?S9G#?\F5P1H#\XQ;V9<0_S)L14,;__$,\C7J*$&:/
- M"_5'B#>B%"@)1OJ1H%#16`U3,.3#!\$0YYC7$!XRRMC9)T2UNOL1MBD.`FL=
- MYJH2S+R`-+=&Q/=@(MD@8[##IH;_RZS4V3.JT^1I"QI%:FT)CE$2X3F&7\=`
- MT19APMMP,9@KU&&$3WE%P>U\?M7Y>(V^V[U[]SO,V%(E701IHFP-/,GC[H'S
- M$Q[,FK"G^;!?0+`>JB_$$V@,T:@O$X.,8A9"(,\$)+YATH".#12I,^L_8PJ6
- M$,+V2`@TP0V%>`:7C'[(D$$P9\^6!Y@X+C5*(V,^E&+K:F2]!R[!%RP_`-!0
- M2P,$"@````8``)`T%.1ZCT$;!@```!````H```!&4D533D\N1DY4#P`2`R05
- M-B<X.6I[3)UN'PD&`1,TY?:6]X)!]ANX=.#`O3,']O.,_]_^___P\_^><8`V
- M__X)WB='!,\X0HX^G&$Q\N1Y_OQY#,8]HX*.OV>$.(U!F=`NV,\/^]J099KF
- M:5:H4+,\OI'#,_=ZZF'?^,.##3.$;P8<![#,,8!MS^3/F3]APH0)%SZX9_+O
- MF.#'CCU[WCPPODF,V\":Y[9W-%"P</G^Y0L7+)!G,N#`@Q__?CPX,,!?B/6^
- M+B[TS!G!8FQ?X]NW;]^[<4-PSK3/L3`YVGA[FQP-CO5113@YV=-@_3S#8G@*
- MQ4R]C0B>H<&_!ADL#8\1YE\8W8A@!PL63-=8L)(T^]\L"6?$%P+#/OQ&*27.
- M<W@#(AB<WU13!A7115L:[IG_&R;<:;_#@P/W.W#PL""0<)JT709A[<9X!UY`
- M[G5NW+CS/<],"X-((\9E:CV_++@H)V;JV`T:"+9K@XK<MJ3_C>EM<49QY?_<
- MA,`+'B*(9?P?EH'Y?&QK!0L<D&<3N_OQY]OGCS/N"31&G'B"1/KY)@?`S\-]
- MX,/_/:,'^ABV=]*@0X\VS1K_%Y<_T)M*+WA_WT@/:MMS7?<UUMC]+;"/]*/-
- MOA'*_,_<SA!/7C!OAEEF;L:83/E)#00Z:IC8/"I;Y$Q]C0]T\/EPSS\#;`O>
- M.7`_;R#^]G]$Z;!G[H^W?*P?8O7W3@8+LP(/]A;QS<=\(_^/#0N6+%^R8,..
- M_?<,%?K#^X=_5D?O\\S29F_#\P`<#-;(!XW'#?S>QOD\\_%CS;+%"Q<O6[-C
- MQSUS>+W'P;R-2E3?UC1[FAP^?O[VY\>>D7ZXB3=B7Z;!?`7732]_[M?@@6^4
- MV_8V\1=[[6!;ODQOS_06E->H;Z(9-P/I1#/UQO_]%@U`FZHC^T:;Y?$T0DL/
- MX@,/]KLD#TZV8`J02$"\3[T*SI,A@V"2!Z]3C%(J`/(_P^4("62#S->@GS?V
- M&C0X+2D?/_M8;]\(4FXZ3R8==$%]FC7VCGV3?[ZQOY>AUGS>DL=&!;_'W;Q8
- MY+.OD>,\&XGCSXC0=@-DT\;>$8)G4>B=QO%ZX(*Y[7^2+<](;Z##OH)Q-D\(
- M[VWP:'A?040Z\:US/@_U3^)T\(\C4#49]HT.OA'^]B2HWX=[)@!/GA$NW\X`
- MY97^'!`6\J\9P7M&(*!V0S'"(58'L!`)X.<CM"ER]LQWNLE]$"I/QT1\TN/,
- M,+WE,ST$[CY``3$*)/@=?23RSO%A]&5T@WW[QM[E&>80R#.,^QS>(415`#_3
- MV2"/IU%?PSPMSS!/RS<8SX/1+7N&8BQ[ACIS;*9\GW!*GF%,GOZ="=,GS!D@
- M&^EVYT:_V+G?:28_>(+-_GF2G_DSPO>@D+9GF+>H9\17\D28;WF&^1?7IZ!$
- M)>>5`#3QAGH:`;.,X=I+07VFXNE,GQ,+L-35?R%;G&E^:<]7K-DWQ<][IAUN
- M>!T2(W8X0,*^`/,L?X)YEB?#/,M?4*#K;B0RU4R.G;OW[]LSKHGS9,O61\-%
- MO(8]CQ,@GXL)(3P,QX"*0JYIKP/SL'W`P\'!`7S[:#X,<_[PC)QY]OD'<>)I
- MSB/$(8+?:).MS0U-PS5;=,MD1"+!,,]7514,\WSW.\$P'AD1,#!D$M\S-+YG
- MI$T;P=R>,244VM\SU#M8^P;>4?^DC7=H?]_@WO?'(5'8U#/J*0S0P+T%$?P'
- MGP`.((']]PY&QD+!)+A_[!WZPSOB*_+&7]`W8?YH&PI`]`UY#R*`:_[>/[AW
- MU#?QCOHGWE%=)KXA@OL:S%^H:.P)X-Y"?1G[AWHS7)2Q?W!/H]I$?!',&\`\
- MC3*A63#J*\0S#A]>,(Q/]@?!,.APP3"T$67LYA,B?;P$<=@.XH<FQX0DJC$0
- M;(3Z3I(-T"V`A?_A=*4NSABG"2@.`VB4VWU4UF)Q#`$$"0"2L4[(?AE[9LVY
- MW2/$/;CM/GX(.*&E816JB$/,V>?Y-;!_[(-S/A^</8TU,N70X?\(8QX<Q)@P
- MCB2T+&%C#%$(@3QCD/B&1P.)$^M$JD62_P`$U"A9Q43B2!/,"@L&&I&,?K`G
- MSIXMCR>3V-8HC8S]#,7FU<A\#\*%*%A^`*`#4$L#!`H````&`*J"^ABJ_W:@
- MP0<``*D1```,````4T-23D9/3E0N4$%3#0(!$B,4%38W:(F:VSP%!A(31,7V
- MEO>ARGU[5F[8MB"GCI5;MJQ;HV_=TMW94$'PKCJW[)SB#1(DT:=360Z52F6Z
- M6PTK1WI*+7MV+D@=QC/M7+IEY<[9/NJ%/Z@_J)QEG7<K2)@N7>*,F3,FR*X@
- MGYH%*31/^=X1OD'N&==TWWCOLV5!FC%>PP?_9M.R:=Y]_G,G1G?9(,1FON6F
- M=7O&&F4]A5C'!,\]_QZ63#V7@WQ0=YAH./.%KJ"W&^'5=#0_2#CC&P[S#DLW
- MC?CBYVS?R*]E"Q?KG2X:^@6]Y\)EXW[9.RP<J^X"G)%?^.)6^A>^[/><^WWG
- M>SGOM'2H)YSHM6Q;-QEC*8:L$=]QT]\@G4SK-O/+6"2YW/]$^\K7;+:M7)=M
- M^]:%7!&\\O0Q_+N.UJ44C>*M8BMUI*5!IMPQ)ZI[&M$JC%S&S4IL>R9U0ZWQ
- M?&G;?^7I)C/]0K1X-]I)G3V@6.D]Z-RY:<^Z1=&,9O%.H;,KQ!R:#G>B.G56
- M)57)$\39UA\I^;>,\R[MA3S\U+ICQZ)P+KCK*NW+?H,L^M0(.>A#L%3[JCI\
- M4;=DUD!3^>*+'@VR10YR#!<^AW%7O>O"!?''T^"#SU%#L,G;E.ERW'0Z<=J\
- M;J/V_CAT:878^),XDM@HM)425L4(HYX#K>%H+V6GR0)S?Z9/3<;IJG.[3"&T
- M65/'0O4=9H\]9W$MV^>6^2?#4)OP-A-V7:&L#M5?3%8]=LW_FI],WY1!C99Y
- M_FN`S>L6FB0T2^JS98-L;W_L6[AIK@]RXK%-L)7H*&)1.G!2[*!-ZHKW@;W+
- MCDWSVZ5O]&RK3N+_;.>^B?IP2%W/*<;ZL[\SIHW\)>5D8ZS+4+:]K](NOEH,
- MLPY;!ZM5G2>@5KQO/<3[K1EB[#6I[IT41/FV<]M1YD#F+X@M37;FIENGJV76
- MRTC&9J?19'8L;[IW6G7%$D?UDR%Z2OS4-XLSK>6<:`YB][6\W<ZQC:U)))L?
- M$@VC?TSYP&(I)AR9D"*WA20Y=:A63*YA%GW%](T&D371-\\#.T5:1]([23)F
- MC%F)6DFC==V.R36'B8=ZL[CLBS43G80)$V0+>@XBEB['D'0?9)(),H<)([.D
- M$&R65EU3V.ZT;ELQ\Q>E`9&XLP&30H"94/9+2KF#=&-?V6N8+6>HYT.QJ$^9
- M-6W0S;81;"90'\UI$*R^_IPHEE'3(+)F@%+EFPX:PSU13\271:>(NM6Y:$-O
- MA0%H@3^BUQ!*R+LWWD_>S4`9+Q0*_="5GD,?+GJ;83KF@_=KM4B-HHF'R<*-
- MZM74IJE0@_P"U(/T(U*I;QF4(7CK8B9^=`M)"\4V6XY,B]F1<-[*L779M*+*
- M3<473M0"-U5G+EFS@.YELK_-'$_F%MC$_PS.$N0&""ZV+MTR&9]&Z2;ES[#L
- M>\R\57;2L>\IA+:'%X1-::.H]YWL9731)IY&J#![,]M`59WO-($ZLS;6R:B6
- MJ<*Z/U/NL'1DP[QV%X`K1085H2SD(YVKJ*M\SNP)`S)<3'HM5(1Y,&.Z(#FG
- M\VFJ69:UDWW,^VW=LVC`FYA#OOEIQJLV>BP=2B:X.0N#E7/I=(O'9(\TFF9C
- MALY"%U=UY9I=#0V]P.5(TI.D.?0]#3*OT_.FO1KA`+Z584<7Q=RE6/XQ@B;S
- M2DKLW6+!6HT=ZPI1LFR9)MK*.EXH\]6IPDZ1R@P[&OM!67S4*%5J9@HV^11*
- M>!TJ4Y`JE9UZK$0!.QW4*9$NELCKIU*8-THAS?E4)+[>,CXK_OH<5>\816)!
- M(M)WGT6&"701')1F+@/7U@RJT#Z)!+S_:I=QC91S&@EQAJ5\RJ(/=?64B"OE
- M1!+\C$ABH$RHCX!&R3J0E$@2R0P-Y2591YFC:AT+V8+01XJUT",!G]BB#$J6
- MK)R+,9E,2!]M.`@D".E.1%J'P4@J"##LA1\C7#4OV%I5;20(_(@0#+H1(6D$
- M)8U4QJ+9*H:L]QM7^!H^#U+6O,<E\173RKZK<'R0UTT0:I&H)BD4Q\9K'>\Y
- M"!:U^4N?.PB!&BGJM@.1R3[_P5P9X[_"2N_XC_#(U'_5BU"$**D@:SJT'JT4
- MC>EW[#?=LG-!A"BX9&U&)*]Z-!1*T0M;J%Q<(HI!4)2P,&.1+QX=I7L[*4FZ
- M<`PXH'%D():<+*!2@L%!4(FM:"B&"Q.]`&=`U_##`(((#^/G=2_"BO!@K(P*
- M'PHNPH,ID\8PGQ&>JA)&BZV&24UWCJX@SWUSXM7T0/@STG'LR@*SY+R11TB2
- MFI4:8&-*%8F,8L\])%0D$"ZE8;78-Y:Z@*7,*%QH#>(^C`,#K98(F03P`BIE
- M4,6J8F&L*G08JRK6B6VADQ!P$HW%5O7-F#(2&7.6*!(W`6;8LG'KF(6)J(#0
- M%:7!M!P-:-6MXSH4T7X;$&*<+R\V3Y\@3Y[X:7%D00#C>Z#'@+,$T67*0SXY
- MI0/LI%"IG@`'608X4(6`0Y8!#JSR?K)I4:))BUJ)4HGC5R8]V?CV3X#`#($G
- M6I"$<KS#H*3?#:.P?H(`HT`0BF_*DOND"Q^LJ8AG.!(^1G[0A>0'K@SKIB=D
- M$)*#"*)G(@!ZR^`,A$(5S_N(8/5;K%G"VV]P)[Q]JVDJ6K_=L60DJPCS&LD)
- MU&C,@RS$O,!N23H40>`\BZSNY?J@,X9^5:X"P`Y02P,$"@````8``)`T%-.(
- M[)M5!@```!````D```!23TU!3BY&3E0/`!(#)!4V)S@Y:GM,G6X?"08!$S3E
- M]I;W@D'V&[ATX,"],P?V\XS_W_[___#S_YYQ@#;__@G>)T<$SSA"CCZ<83'R
- MY'G^_'D,QCVC@HZ_9X0XC4&9T"[8SP_[VI!EFN9I5JA0LSR^D<,S]WKJ8=_X
- MPX,-,X1O!AP'L,PQ@&W/Y,^9/V'"A`D7/KAG\N^8X,>./7O>/#"^28S;P)KG
- MMG<T4+!P^?[E"Q<LD&<RX,"#'_]^/#@PP%^(];XN+O3,&<%B;%_CV[=OW[MQ
- M0W#.M,^Q,#G:>'N;'`V.]5%%.#G9TV#]/,-B>`K%3+V-")ZAP;\&&2P-CQ'F
- M7QC=B&`'"Q9,UUBPDC3[WRP)9\07`L,^_$8I)<YS>`,B&`Q3Q%-8%VUI.&C6
- M=</,F8;8=WIDZ'PO3K3,%P(T#7>[=[X8?>[=[N`+2)X[W1IWOL>9TL(@THAU
- MF7!R?QF4"S.6[`8-&JBVI_!M2_K?F-X69U17_L]-B&HD1!#,Z']6!N[S45PK
- M6."`OD(//[Y\^KC'16/$$23J&?<[")Z'F1I[5IX&!PY[+-R@0XLFC1K^)U>_
- MBP,%S,_[@<;Y/),<UG9_H-T[^M_3-)C/P?ULRS?<LOX1=QQ[0<`9YIEZ,\%D
- M]B>XH$V8!6-/U`%/A/OZ@0X^'^[9GP6V.P<FCV'/DJ41,C_XV#/)W[AQX_RF
- M<G_/9-_A@0$#!AQ8V)>Q+1\\6+!]HUSCX,CQ(WON3=@S#1S8F[%_?GC0FU&\
- M;NL-^[DGX!C^"/F@\2QXX\SQO./$D4/'S]S8.QJ<U@7;V\C`P\OGCA3(!?=,
- M#@X>/G;F1G`?[,TH;@WT-VH+ZA_85XAO-,8'WXBW?=Q?2.!\HKBA/^/_,[T%
- M.<Y)++BOL6<7*Y8FC3>B(V?.G+QYVSN_AAXNG$SL%L?@V#/A[C2>AOUO*/0U
- M^"!.PCC9@MDW#HCWN8%7P7DR9!!,\^!U@E%"=:#^<WT2(8%L,%[>S^R_YXL8
- M9^QV3B"ZMV]X8V[J]]$.N+!=Y\;>$8/$_X(-T\L84*TUG[?L#UBP[VF?S^L6
- M!.)K?!YG(W'\&08SW4'@22S`WMTL6KQLS?P^CN/UP`6[+<BVX)Z1WL=\#?<7
- M>\O^PK[)N6[!POL*[E6V:_#!,\[=3*A8-RIXO<;A<C3.JQF'").?EUTFAV_D
- MO+>UQS-RO%BR-''\!GSD[,W?WOE][%OXYVCB<[%GC9FQ`<#=1M3HOT8$[QB`
- M`.,-QPAGV#X1:X7$YZ*VV;@P&<,#G,!%FQWV6FB/,\-P^;`S/03N/CX!,0LD
- M^!U^)/3N\5G#P2#71G>#/KY1[_(,@RCR#.,^AW>(6)3`SW0V`#JHKZ&>EF>8
- MI^4;S.?!+-F>H1C+GJ&0D)0!>G4,\PEZ1_9\+T"7,&R$:ZW;G1+W;N=YK)
- MCS;B_L^3_,R?D3X^7Y["D+9GF+>H9\17\D28;WF&^1=W_3D`2E1R7@E`$V^H
- MIQ$:_6&]^;"7@FI?AF;VNS[G5?%A#=G_A6SQA43:\Q5K]DUQOTTZW-#1!$R*
- M'0Z0L"_`/,N?8)[ER3#/\A?4Q@A.262JF5#,]_Y]>^:+Q-:S9>O#X<+B>"[C
- MM)OP`'J'PW@B`K;9:QKLP#SL(%8K!0<_UBR;]]T.PYP_/"-GGGW^09QXFO,(
- M<8C@-]ID:W-#TW#-%MTR&9%(,,SS554%PSS?_4XP3$?&@K%G-+YG:'S/2)LV
- M@KD]8THHM+]GJ'>P]@V\H_Y)&^_0_K[!O<>SL'?L&?44%FC@WH((_D-/@,0`
- MD,#^>P<C8Z%@$MP_]@[]X1WQ%7GC+^B;,'^T#04@^H:\!Q'`-7_O']P[ZIMX
- M1_T3[Z@N$]\0P7T-YB]4-/8$<&^AOHS]0[T9+LK8/[BG46TBO@CF#6">1IG0
- M+!CU%>(9AP\O&*8G^X-@&'2X8!C:B#)V\PD1KKX?Q]A/8`SBAR;'-(9!!NP?
- M-D)])\D&Z!;`PO]PNE(79XS3!!2'`33*[4`J>TDXA@"">.FH3LAZ#LJ1F-OV
- M"'$/;KN/'P).:&$9A2KB$'/V>7X-[$<AP?(!X:QAH7T\(F61T7^$,0\.8DP8
- M1Q):EK"QABB$0)XQ2'S#HX'$B6/[65@=V(^$&B43MD>"86&!`(U*1C_8$V?/
- MEL>326QKE$;&?(9B\VIDO@?A0A0L/P#04$L#!`H````&````H0S@QQ1]'@8`
- M```0```,````0T]-4%5415(N1DY4#P`2`R05-B<X.6I[3)UN'PD&`1,TY?:6
- M]X)!]ANX=.#`O3,']O.,_]_^___P\_^><8`V__X)WB='!,\X0HX^G.$Q\N1Y
- M_OQYGAB.@T8%'7_/B'$:@S*A7;"?'Q[X'#*;IGF:%2K4+(]OY/#,O9YZV#?^
- M\##.&;`<<!+',,8-LS^7/F3Y@P8<*%#^Z9_#LF^+%CSYXW#X9O$N.VL.:Y
- M[1T-%"Q<OG_YP@4+Y)D,./#@Q[\?#PX,\!=BO:^+"SUS1K`8V]?X]NW;]V[<
- M$)PS[7,L3(XVWMXF1X-C?5013D[V--"<:0Q.H0$T4V\C@F=H\+]!!DO#8X3Y
- M%T8W(MC!@@73-1:L),W^-TO"&?&%P+`/OU%*B?,<_(`(!H\3)TZ,"!%TVW'/
- M;/%;&B9XPH0)^Q/>V!O"[IE#]&_9,F3_-FW;]@_CF8>-/=LL@[`VNWRQH6<.
- M%S%BQ%#!1E9,6&D,+Y,003P-LVY^67!13LS4L1LT$&S7%DY"I(K3/TZJ$.+1
- M$"',W;#=!>YJ:']7!@F,>(#/;VL%"QPP(,^FAQ]^G#EW+ME^&&C3<.%L;<'[
- M]>OGF?Y_\$#P_]@+KG-H_@0)$C1`3?U%V3U0QX[_.W00W#NESKZ1^/S<LX</
- M%]PS_3]XL-"U;SWPS/D2)4K4^/_CQX+[IO\&4\K_?"."C0US(":>(1$,29A,
- M^4D-]!DF2*AL)F?J;PKM#2+HDWP^\>?>_GCZ]._!]2;I<V3(D&'>XN'>3),G
- M%]Q?L(</'Q*SU/=,^Q^WSKX1VPZ</WAPP3T3RLH7)(A@>Z;'CWMN]WI'/:X3
- M-L2X?NYQB=UUA!@(QW%\11)XHRRI+Z$%$T8,&;__=^\HK!4LN+>1QU=/'CPH
- MV&?/GO7,PT=.7'@06P?.G#G3F]ANR'GWT^[8_;@Y'%P3TC@P5[\O\#_LP-
- M"Q8\C"X+MC]CG\^,^S/QM\-X"TYM^YH^_N<9VB@)P*&;-V_F-5U]W#<N9-4C
- MY)Z,M;U@HBB>AO\'YQ&(KA]Z&_\#.@437],!<_".2#5N7.^4[E'!^N=32;/#
- M4!V8UR=L9X$$K&%^'_!_OP_X1XXP7LG!O9+#Y.!(Z`M.?2&2<)P,&3IXTP8=
- M&(\C\DFXF1U\/CQS9CFW8<Q)/#AP8,$'Z^491"S2N#%A"_8][U2NV<3QOV`:
- M#@D1)YOO^1KT\XUZEV>80R#/L#RLMG>HD<V<MK=I!"S;OH8)?LPSQ-/R#?6V
- MXPC9RN,IQ#/<.WN&'SXL*"-NH#U\6%/8,TS)TW]-S>>)C_WG%=K]SHU^L7._
- MT]!H-FB:^;]A9_Z,81%OL8AF;T$](]ZBGE%?L2?"?,LSS+^XZ\\!\<PJ][.5
- M!;N?O_!ASS`9W8>]P8>]%,RI9<+$\U)\_FYW3Y/#&K+_"[9OFE]'=KYBS;XI
- M?IZKTQLXFGQ)L</Y6=@7H)[EB3"_3WT9\2U_0>_U#M#;MXYIQH>/G[_]^;$O
- MT@#Q,N3+W,[#A,>31,=352T..1S,$TRN#0[[<*C9MC";JD`/'#C`X>#@QYIE
- M(]1NAUWUAV?DS+///XA3=C:`1$$DY$RSS,VP1"RP6'/1+9.,&<^=,PQ;554P
- MA'3!$%MCP>#QXW.&$&;!TD<+5O/FD(F0B?M[AGH':\ZG!(\%@_,GOL&]6Q@)
- M:-(?'+&G$+L`ZBWP]^>(?&D""QE8]X!S-&B'?4/\H=0I@]"?[LF2I#G_FQ
- M$`.GY\"A,LF@@F+V<__@SWP)]M\[ZA_U3GA%?(,W\V9PW_)E<$:`8!"(+Z/^
- M8=Z,D%&H?XBG44\1PNQQH?X(\4;4`B7!2#\3%"H:AP\O&/+A@V"(<\QKR+W.
- M*&-GGQ#5ZNY'V*88S!14LH^OP"(#]J^Y-2*^`W'"X7S8U/!_F94Z>T9UFCQM
- M0:-(K2W!^\400!`=!NNA_1\`)1\$BI>-\"FO*+B=SZ\Z'Z_1=[MW[W[G@4,D
- M701IHFP_/,GC[AYJPH-YP1&02+`^W.?"/('&$(WZ,C'(*&8A!/),0.(;)@WH
- MV$"1.K/^\^$0HD0)VR,AT`3'PH)Y1B6C'UR,@CE[MCS`Q'&I41H98QF*K:N1
- M]1ZX!4;]>"+<#P`+4$L!`@L`"@````8```"A#`[B8]CE!@```!````H`````
- M```````@`````````%-#4DE05"Y&3E102P$""P`*````!@``D#04'4Y'N9T&
- M````$```"P```````````"`````-!P``04Y425%512Y&3E102P$""P`*````
- M!@"J@OH8>0#MG'01```@&```#````````````"````#3#0``4T-23D9/3E0N
- M15A%4$L!`@L`"@````8```"A#!BV7PY]!@```!````P````````````@````
- M<1\``$U%1$E%5D%,+D9.5%!+`0(+``H````&`!H[B0WE-.3_W@4````0```*
- M````````````(````!@F``!&55154D4N1DY44$L!`@L`"@````8``)`T%.1Z
- MCT$;!@```!````H````````````@````'BP``$9215-.3RY&3E102P$""P`*
- M````!@"J@OH8JO]VH,$'``"I$0``#``````````!`"````!A,@``4T-23D9/
- M3E0N4$%34$L!`@L`"@````8``)`T%-.([)M5!@```!````D````````````@
- M````3#H``%)/34%.+D9.5%!+`0(+``H````&````H0S@QQ1]'@8````0```,
- M````````````(````,A```!#3TU0551%4BY&3E102P4&``````D`"0```@``
- &$$<`````
- `
- end
- ---- END ------------------- CUT HERE ----------------------
-