Path: utzoo!utgpu!watmath!iuvax!bsu-cs!ibmbin From: w8sdz@WSMR-SIMTEL20.ARMY.MIL (Keith Petersen) Newsgroups: comp.binaries.ibm.pc Subject: v01i187: idd, lets you write device drivers with Turbo C Summary: idd.arc, lets you write device drivers with Turbo C Message-ID: <6016@bsu-cs.UUCP> Date: 4 Mar 89 12:00:59 GMT Sender: ibmbin@bsu-cs.UUCP Followup-To: comp.binaries.ibm.pc.d Lines: 422 Approved: dhesi@bsu-cs.bsu.edu X-Submissions-to: ibmpc-binaries@bsu-cs.bsu.edu X-Questions-to: ibmpc-binaries-request@bsu-cs.bsu.edu Posting-number: Volume 01, Issue 187 Originally-from: ccicpg!quad1.quad.com!few@uunet.UU.NET (Frank Whaley) Submitted-by: Keith Petersen Archive-name: idd/idd.uue [ This package lets you write device drivers for MS-DOS using Turbo C. It supplies a driver header that you link with your Turbo C drive, as well as assembly language stubs for each of the I/O routines (e.g. initialize, media check, input, output, verify, etc.). At runtime, control first goes to the driver header, which sends control to one of the assembly language stubs, which calls your Turbo C function for that particular driver function. A simple character device driver is included as an example. C and assembly source is here. There are no ready-to-run binaries. You will need Turbo C 1.5 or greater as well as MASM (probably 5.x) to use this package. I read the source code with interest. It is clean and easy to follow. I did not actually try to write a driver. Checksums obtained with the 4.3BSD "sum" or System V "sum -r" command. checksum size (bytes) file (between BEGIN--cut and END--cut lines) 53696 23734 this uuencoded posting checksum size (bytes) file 52453 17206 idd.arc -- R.D. ] BEGIN--cut here--cut here begin 644 idd.arc M&@AA7W)E861M90#O=M0`9@0``$T2.W:>2%X'```,#12`@"0AB9LY=,*P81-& M#)LR((B4L9-F#$0B3.F3ILR;NA\]`B2 M#DPR9`;&Q8YHW;DK&<%$# M!(JF(,[(*1/&IIP4(-Z8`2&D*4,W9$YXI%)'CIB>0T",>=,&3IJ'3GGZG%B& MS1LX)4481*B0H<.+$RM>S%AUC@@03)TVF=*"R),I+D@*7)QP8<.'$2-;C$B9 MH\8,%_@\^O2#(.ZD01H>A`B,&CF"0$(6 MIQP1+H``0A`@P"''&SS1D0<<$`D7AG^YH99220:^01%..H%4GQE_080$$5*X M$,04300(@A,(0H1463O=T1,9914U7QEM>(0">HD%00<=0M5ATV5AP&6?$V&\ M]`)T\UW&86%DS(%6&U#)=!V'"]6FH7Q($>=&9FV4=55("@Q#2 M"4*>V;U4G7`@E(%'2C9%!Y%:&[ZQT!ORN7%&2>U)]Z6-"-4AQFNQ57BAE2&A M%Y$425A11(A,)"'$>&F((0=LN-&9`@LEW8'2&&@4R!&7]=D!VU50I06HE]0- M!I10L-9'6F.GK9<:1:OA5YE>:(0!AUEIK26K9U.`($499G`$TVI-!*D<&SJ( M-M`"!LV'`EJ03-!$3FF$,81P8ZSQ;TF0+"!$'7^1(0040OP[T`-)O#$$'6P8 MM+!`#1L$AX\6$P27R"2GP#"_;HQ,QQ0)T0%5R0R@3(<1;$"%QL?[/N&CRR5' MX#,=5G!$9AX\-SPTS&7-#+`#0^.L<]+\:LSQT"4_()$=3S#H!M5;#V&8>EF_ MV\;`QH7Q<4D$SE$D'*@A"UL8TNF'$[B(*IK21]'EC"'?P>T-!]UKA'%&&<0* M9&Q%R09%EDVO#88W"&X469L(33SA!(`"'CQWW1VE];./9P8^1TEW2Q;?7VP\ MNAU93F&EK1!-0)%7&UBQA,:!+V'G.$PFPEP'&;AQBB-['8*0N1-/N)#7'$G5 MP89.8VVTG*PX)?271\;+^5%?#[T4$[5N$&HHI8Z"6.NM+B#AIX7(I?=AU)[PYBDQD0I*D.P0D2"&9CG`,B96\K:8GXZ&`^@42A#NEY#_>X!)F.(AT"3?7,R6X*>4`(C3QBD+W(@3MES$E`XG4'(,1!.638 MRAT?Y((:!J0.T"D#'4(PAC&-`0YG",$>\Q@".@8$&@AD3)#`S!LY()*XF4,G#!LV8<2P*0."2!D[:<;0)"(GC9TR*)FD M$2,GC)P\'P>(##A09`(76)@D:6C08((=5A%**1.G3AF6$\N$(0,TJT$I2!), MH2.GSABK3,JX24!$2`(4/U)8K>(F#1VZ=O'J59"P#1G`=_-:71N&3ITY=*\D M'DRR;@(<->O``2'8*N+.A(NX(1.$C!RZ1":?32N:S)2JA+'&3A"$#MNA=>C0 M-)*F#!LR((3XG6-6P1`T1L.,T2W')DZ="8I$J7(9!J0!2`Q.T0SG))TY29X, MH<(D^O0$-*QC-^CDC9LD0IH8.=FFL7GJ,M1G5["US9N?,56BTY-@<(5YP$G'#?%4>$>V60 MU",,,3"X7Q$1GB3E>0M>MY\0CR&E87X-PG955M%EB=)6CLGA!@A#O$$6<;$9 M=$5/ND$AQQNZ+:>A07RMX<8;=[C!EU\(QF"05J/-!@DQ%AQN7$&'6@@6(-V992Q1JE:]FB#I9@6 M.F"!!_9X`ZW+G?3H?'5XVB,.[+T!11AP`+4E=3G8B6<91H11!QL\GE?E66*1 MD>VVW5(7@Z(*'"$74"YEFP8;$$;98PR5*B`D0E.4<48;$[YPQ)Z:@4"6&6GT M14<:[M%YI@)0_/N&9@DX#/$75!2!!14L@``%%6&\:Q#%%E.AEK[\@AA<'KII M7(=,.8%P@D(7G6!5$'/,40>_"4VA0\,`P_%QQ1='-]IK#'/\[LC[3J@RRV.X M#',1,A?=,1M"N[:HQ'!$W',"7Q`1A$,9?R'$%%-D3(31;'SLM4-(ETR'QLDM MS4;+)ZP=1-2TU7QSE$3H3`36:G\=1-5$BTUVVTI#L?+<39\P]A11&SX%X8NB MC;C)0J!,D^),N_QXU&=/3;F]=<[6A')[*BS;$'/HFT`300PAQ1,?$;###B"( MH6_!((PA)TVM)PWBSR%?3H=513A!1!.PM3;$Y+#+3CLDMN,N%W"^DP5"\&X3 M'W1K1$>G//.D$Q'\Z['/7OOMN>_^)AF-A;$]R1,&SG:^PA\?VOC-C]8W^M); MG_5&([#XS2]_]AL<^)#'/])5X7S14Q_UV*>[,_`N607SRP&[IP#)&8^!R^L? M&:H`O?1-KWH@N%X!6[+!^G7P<:,37PA)9X1DC0&`ZKL#&MZ0%/:9P88'KI0`IP@%CF`D'P&:8T1<$B[)?80=S]TPW(0 M]J8RX,$O3?1B:Z!P1=@DH0W=D<-?(MC%)UZ'?6F`HW=6*#^_E*$-"?Q@:/#` MEKE\P8EOT$'F=!/(!>YOAK2B`Q),P\4$^+$-++"#2[Q"$O:U[FV:A!=->+>5 MKGSE;4@(5UD(TX0G6(%KI9RD'%Q@@DMF<-5:EFJ+@?")&BP21DR:<)H+#-G3$(X=';ZS$,GX\^@0\]J39N` MRITW4]*,)),@AN*M2XND.8.&SI0R8P++22#C,F,I9=J\L1-&#,H$-.*^%$B7 MJ5/!J&W*<0-BR)N10ND2S8HYP96$A:$\+1PZJFFN5=RL=&W;A%48"-R0(FFC@T6'$&W7$EP`.]($'11AP M,)1``CG0=QQ091@11AULT%&96?P5-QX9,M)H8PR6Y2W,5E``<KO/KZ*:6GBFFGJJ+2T>JKZ5;\:P)) MN`$4KP/K*O*GP8JD8L3:RGJ=R4'%2S`(;M31AA@DO7%HB$#5"W.ZD:[+5'Q! MD(%0RB`4$5]29S2L]+Y"HSN1I.P*`<5_3H61!].`>1283UN#P*8<7I\K<:LE M`W6B'&W,@7&AJ8+:\<<4E]'KR!7FA7*T-Z\,+$@NCS:TLK+V'09%?3&M^%Y] M_26:VC$SF]N2;I1;!M.7[U:MN?>V.G&ZBK\=]]RH;FPWJ^F"G(#@76W]-^`J MZVWQX,*^;'6^"2C.^!B.WY47Y'ZE`1A4AQ<=:&-HXVD&0TQ3T?PGY+LQA-U MB*[4#PN-])#GE6XQ[SX$,]Z"U0>A2LGM2P-P?M MM0IKW`*1&YZ%JYL)@3!E>,%G0B,8WX3(1H<#H;OD0,(%SI`.4`/!"D4#`B?H MC&>CL1K[2L8_.IA.;O%+W:$XQCI7W>]V"8A/R>#0O[])2W`#U!V^ME6@,IRP M,$S[8D9V5)*GM&$O%L'(^EHE13=0T8CO0Z("YJ2Q):ZN?DX,60#S-Z^;6#%P M>\1=X0J8`/;U<0Y'1%T=0$-X2%"&N3@-%"E@2_%7-XN7$B0SDLR)$*+I.B<\=XDQN5C*(&7`0Z?< M<"0OH2ND(TW8)5^G-R0LK82Z&L.2F#1"E=XNBT$DRD!0RA#><*]I2)L:"A(E MF1383%=,T@V>@(J7`6V0:D.K5$R8X@0B@,!G($"(0ACB$%,!&@AM86ME;&EB M+F)A=```4P$``$T2!G:IZ>$"```,;<+,:0/B!9473;"\2.+"!8@YR,8?-F3AF.+F'*I&ES M9$F!!`TB5,C08<>7,=_`*>,&IT2=2IGZ-!DT)5&61YF2"4.&C!RG7+1R]3H5 M*,JA*XVZ3.,F#1VP;-V6/2E49=&6$MG"J?/VJ%Z^O7S5XZ9MC4@6N8 M;^(Z@<_:Q;JV,9TY=,(P/HPY3.2Z5]7F?3.&#ANV<$F;9OO9:EJ\7-*HILDW M=6G:=%H/IBRQ31DR:<*,07/SJ&_@PHGKGBR:BQO@EL$^_YN;)%7)H6&_<:QX M#AJPVQ%W1[,\^]'PA\'S/5S^]7F^G>DL?G\YL_SVA%V&MU-&3AHSZM'!GW]F MX,<;%W*4T<9QP8&5X(*_!>?3:6*``(17:0SH`AMNK$$23&S`IH(+;XBA!DD: M`FUO;F\N87)C`&%T```J#P``31)J>-6V*@\``!H"85]R96%D;64`K314`"T` M``!-$EEX>:(M````56YP86-K('1H:7,@87)C:&EV92!I;B!T:&4@+EQM;VYO M(&1I0T*&@AM86ME;6]N;RYB870`?0```$T2U'62AJ`````,;<+, M:0/B!9473;"\2.+"!8@V:,C(80%1XHX&"NB,&0.B!4.'+3BV>>/FC8LQ&-FD M<;/F840Y*T:6I$CR#>'D"1&,9,JP>5C3Q1LQ:I`J M=2G1*52,9?"4D2%F)=.2+K*6^6IR3IXY4I?*-"D6(QH(;6AD MP,FS\@P:.B!0C$FA,`=($"",R`GC9@V((BY`7$$3ADV9/#8)Y%3@<$<+2$?& M[K"90*U(DB91JF3I$@23-&*FR@$+R8#;MR5/IES9\F7,F34A%7`+J6W9LVD= M/D;KMDB<.F'HE)EC$X%:R&,=)DCB9`B3*D0*6DQBI8@4%T6B5)&L8`J=-5/2 MZ$D0NPI&"WMP!@LV;,5U!S*$39HS5.;K+T`XXL,CDR`K60I'SYLS4-B`X MGFE3Q@T=FP<^4YX^9$Z9,].+X*$CQTV"+TGY049^*[;X'X?SU7=\3+-9H(HX> M+LFB%2ZE848>2G[!)!T^T@%DEEL:B>23"O"6XX=)A#CBEDK>-Y(=3\!17IM? MO#F$<>Z1:6:47TA11AL$&A@&F:(](<41"WGX.IIY+LE1!QSG%0M"JJ_")5@:T,HA+;6@ M"I&`"$T\X00(BHDP*6AE`?4&3>&]1YYY(%BAX8%B>,597YZ&IH`42%#+::@) MH/!#"J8:"X*?EVV&U&&;.C3''$68MY=(M1J,\'`@E$=?'N%-(3$<%7^,<<$' M)]RQQ2!/`<5T`A%TG5N\"@9L9LQVVFYCE3E!A119@*`#;U/H(`06UZK*\(0<9($!!'PA# M%`VPP"P<;>T<8;0$M]E,+P>"@D_?39]HBC/N..22OU2Y#I=/O@((,K!0A,AD ME0E%%5,@8418Q*&P0@Q,<>XY'0J"<(?C%(JV>^]$JRR\#"DXSSL2(DTA_0HS M5*_[]0E,D<3V-'@?$/A$C,^Q\#68_SSV0V"QO0WN@Z_Y^BO"RHDF"`2+80#+E+K;`3!Q&$P? M"S;8P3(@A0@A?,,(^V0VM,F!.+?30?H@R#`GBL8T1!`-%@P%%"34$`DS7.$6 MQ-<%T4BA"%"XH!6F("Z.>6TH$0S=PS3E$M$X[PEIO-^IDK("^GUN.8Z354#P M"!3YX:]]=TQC^LCG/D**;WO=2V3VMD<]2=YN>\1+Y.\@08#@K0`&YCLC%6!6 MG9FUJV8HR8^NOG4>?@&N9S\+VM"HD@?D<>L,-O'+*]M5M:O-D@UOB]L9YJ8K MN^%M,R[AF]^DUB_:J#):T^(/S-"G/?P13SF=0PGR4+(\.33O>]"[)/XJ"4[L M!<&0>Q1>),N9071ZLGS6@U[\MH=(=A+!G7RD7SRQ]TC\Z6^?(E%?.E>`@_I! MST+;R\'^>(C!UTVL9'MAP12TM[ELKNQC(9MAT>9`,I9)-(W6H@KD7`;$Q9US MB!ST8.22.,(2GI`-FS,B")3XD@0F9*()L5!"1!J>ES%T<:9AH0N1<)&3RO"G MA:RA`7$H*J/N4(WM1&D1C\A2..B@"7GPD7-2:--SIM"'7D4J3L,*59?]$*DZ M/=IT=B`:XB`'F#.MPTO,4`!H4F0V5"`OK*@AA<40A72.'_B*A2)(K0JD:HZQA,*(8;$NQ_9!U" M7R7;N,=%;G)C3$(9+&8;HA.1QMCJPTFP2I=K:J.OBK$XG3P`,+(CM;+.&1C6R467GC>/6?EO2\"G0H11C66'_.+:XS;0HW(*NESBH M62@H50<])SPX7DI$4QJ^`SY#KDRR3WJ6+::!-:NY(V`4P(@QC*\+;6DL%9G)4I"#^;W?SL M!\TI53-VOQ"H`R5H06N`\U17RF8(28A"%A*"GE6Z9B5:%40B(I%>9U6K-']P MSD0:M)S[+*-(,SH!CN:SH=NLHAXQQTMSD/2C^TPD,=2_ M]A.@"G2@^,@H@=.IPI1IH]VTB41<,JB!#5(RK:2DS%KY?8,9].O;ITV'".*R M#6YT0VXXF!MAUJ*I(BL<<4S=,+.*"($RA"0X!&@AM;VYO+F,`;0!B870`&P8``$T2U743 MQT`+```,+U0T4`!"18(V;]R\&8-&SILV94"0*6,GS9B(9.2DL5-&SL""+P8. M')'&S1@V=2:"$)%Q8T<7:$2(5#!BHIF291)824-F2IDS"6#@$0(#TH$$`4&` M"$,F(X@W9D`@5,C0(400%2>^`2$E2),$*D+2M(DS01`Z=.0$Q0/C!@P8"9"J M4)JUS-8P:#6*J4,G8ILP<];$#3N2K)N<0MB$<2,8Q=FT(%:`.#$YA5RE84"( M4SV61$=<-N*V0X\_(JEC,=:*1Q(P@H MW.A&"RWPJ,!@0ZX@60]8+;CDEWW,-!"&!!ET'!QY>`BB#PF\J=^/)[:9(G>G MV>$B&='!B<(<I"H@2@>E1B*I):52 M?DFEE1%EB1N7C(*EJ9@@D*F"I&)2FJ9HM+)94)ULS"%GB">541X(=*`1T1QC MW(8;BMNMV.*+)^G*:*@B=HB>3V?4*$-1`]28V&)KI-`><[W^&NRPQ9:!FU(" M?LD;F<Q#K'!(,7F4E<'''>4ARBR"JC8'8M^OLAPQ0]'_&R/=J)`\!F1 M@1"##3#4^'*-,>1PK;>72?4&1R!L?.],T;K,$[4QSX`##36#@$/3VS+&<\_A MFJ<8:3;B-#2M^::W'HAD/DWINB#(0(/!M*Z9\*U,X&2$N61(G``<'9GQAAQM M9'U8"V;`#;+(??X)0MN'O5U&W"M_B=Z^YJT0-KQ%1H6"F+S!9W:J)SL,L8=H M#[BV05#P)?<=&O6U7W__=03L5A@?JV>R(R\+:.@=CL%H:JO5"6J/*BR^'JO] M/M;X;-X2G8;D8K8+`GPWY)`JM'4BURH(D'^9`.%E&(XXI0G,VOW!!!JH,!QU M;'::0P\>%B%8$U;H>89)N)%&AQ^&6-+\:2R8AAX8:<211Z]30,D`%;_Y>2A* M+,L5YXB&`A04D`Y0*$\;YE"0%)A`"F6(`Q(RDH+W%,$-7N,7"#X80CDL\$L8 MU&!&7#`%[M2!@F0B0D+*T+E:?2X!3^`+^>@WIP20;GX1$4,>^I(GD`QD@"#( M(1UV>,`O02M^2HP@WB*D@C2\`0[?4HJ#S`,'%^5&.-GI$>Z*`#"PE":+I0VX&@Z\Q&N=,1;KB]!SHABA*D(("NV`& M-TBD+Y5FD&,$6`6M"(?W4&&-;FAC1RCU'_.0B9+O&8*#<@-(457I2BCH)*IZ ME`#HS>$.\V,(EECDJM*(B5'R@I:\Q@"8B)R`"W*@C`YZ]!G?.:4%[$(.&A$" M-#A`QHA?^HSRWD6ISXCA-F%80RF'P\L-388+;A`F,0F`/>V=T#,$N*:OM$FT M7?;RFV(09S0)<+Q9(@>7!=!E`=K%I6H6P)ARZ"K,YC85ZDLNF,&ATE3@1PVZSI$. MP"9AJ`,;=#/,>4[4=M5,YT&K.0#O?8]K*60D"UT(0Q#(\#`U5%N&E&B%CAPO M3O6CDX.6R!<0P#)86*E;&O(`,B0RU:EF@"H"OZ1$)O),-E3"RVP6`X(S;(5T M"8'9#WZPM9^^3V%*;"%>7BBWV]"A-M29Z@YA1-2N"BZO1&UB*WL4U!7J]:]% M/2H->[:@CN6!@M@D@WZ@:5<;+I4O1D#)'-`@-S.(%@U/T2%?#/LB)8;VA:1- M7`(:*X>A[C6R,T1C9<-PV?&<]G!UG=5=;U4$)X@'*CY3B`O&`#(:`!H"1.F[&)$`,4PCN!"'IU):#G$X8 M.G7FL."!HH@<.:Y!K*#[QLW<[56FNGESQXU/E5+)I/!Q7$H1*KB+N"%C9+C% MQ!N/RR="&'.TX1`:"&1E=F-L;W-E+F%S;0`N M`0``31*L=0H'$@(```P)H`0Y4B2!#1@L0,28(:.!`BI)J#`I2*2,G2%LWLPI MDT"&C!93RL!I@0-'`B)UVK3)`Z+BQ8P;4:1(D("/PRE5A%"1F&#(&SAYY*0Y M@X8."!1#4BC,41($""-RPKA9`Z*("Q!7T(1A4R9/`D@$;"IPN*,%I"-B=WRM M2?:DQ31CRK04:J>,'!!,THB)*L!E#)QD)"18UI!SXUG:ANI MXV:,VY>(:R<(24>VG.%TPM"I,X<%#Q1%Y,A9#6)%RS=NY%JO,M7-FSMN?*J4 M2B:%#^%2BE"I7<0-&2._#V\4WI[,D"GTG1#Y2F`'B#=FM&21?&6X$,8<;3@$ M&@AD979O<&5N+F%S;0``*`$``$T2K'6R,0\"```,":`$.5(D@0T8+$#$F"&C M@0(J2:@P*4BDC)TG<,JX22!#1HLI9>"TP($C`9$Z;=KD`5'Q8D8W*%(D@$2` MC\,I5810D9A@R!LX>>2D.8.&#@@40U(HS$$2!`@C,5D@&V"4RB5,G2 M(D:-,6?^%:N6+5FS814D2.)D"),J1"A*26*EB!071:)4B3RY#9PW:PX(&BB!PYJ$&L8/G& M3=SI5::Z>7/'C<^44LFD\$%:2A$JD8NX(6.$MTN-I-63&3(EOA,B7W>`>&.F M\'LW+H0Q1QL.`1H(96YD861D#C<$H5(50D)ACR!DX>.6G.H*$#`L60%`ISD`0! MPHB<,&[6M'0!X@J:,&S*Y,E)@*<"ASM:0#IB=D?.!&T3$"EC)\V8,B"((+53 M1@X()FG$7)4S%I*!N"91JF19QB),F6$RRK&)$U*!N)#@HE7+UJ'#!$F<#&%2 MA4A!(E*26"DBQ461*%4\*TB[-N[)E"M;.HXY4S+EG(?1OHT[)8N3)U"F))F2 M\P!B(E>>2"&B^Z)D%"G<6L:L>;;<(E.&I(8"\8F3YHBIH$DS!X29.F[&T$GS MAN5DW&[:TTV,:OG*S!12"`(!SXYI)14$G$E$5-`*46+LKED!),6.0FE2T/D M*2233A!!UIIOF%&=DRXLV(9#&@AH9'(N87-M`&%S;0``&`@``$T2KG7YY+<3 M```,":`$.5(D@0T8+$#$F"&C@0(J2:@P*8B$B)0$,F2TF%(&3@L<.!(0*6,G MS9@R((C(26.GC!P02,J$(>,R`:0!?!Q.J2*$BL0$0][`R;/R#!HZ(%",2:$P M!T@0((S(">-F#8@B+D!<01.&39D\-@GD5.!P1PM(1\;NL)E`K4B2)E&J9.D2 M!),T8J;*`0O)@-NW)4^F7-GR9B4F6,3 M@5K(8QTF2.)D"),J1`I:3&*EB!071:)4D:Q@"ITU4]+H21"["D88-$+>W`&" MS9LQ74',H1-FC-4YNLO0#CBPR.3("M9"D?/FS-0V(#B>:5/V;!SY3GCYD M3IDSTXO@H2/'38(O2=RDH:/#B4PY+"1P7Q-ED)%&&$.@489S_?T7X!="U)$& M&V0(`840#88AAVCRT6FU^\.81Q[I%I9I1?2%%& M&P0:&`:9HCTAQ1$)P$!;11=M=UP"1FA(FUGK90=87##)1),'M&.9IY+A)H#"#RGLNZZ?EVV&U&&;.C3' M'$68MY=(M9Z<\G`@%+M7>%/(#$?-](%%J\DH[^MS'N%!,9U`!#EGOGKK(+S^DNPZT`[["B#(P$(109-5)A153(&$$6$1A\(*,3"5^^ZWHG0' MZ]!>GST28^_[O0PIB(:]]B)-X?X*,\2O/OU3)'$_#?H+R/I$XC^>?:\&`9P? M^X:`A?O9(($#O)T!5W`#_1$/=0GHG^VP<,'4F6UZU4M`\>JWP7T1@6S]0QOA M>K4$@)GBHI*W@@[Y;#.ED%A))`:>`$$3C)0G+Q?PD$9?_NE[]2 MUN]^\',E]>X7OE)R#Q($\-X*8!#`05+A:=61FJ7>A*G\&$M>Y^E8Y[CF-;") MC2IYN-6[SF`3ORQS:G2SVS/9T+C'1Y^/.T`9Z0 MEN+3'4K*!X+SR2%]`J3?+"<8R_VQ+PBBO.3W6NG/!%A2EP"4WP`9>#]2%I0( M`=7E`Q7*OP(*E((0I-\I)XB#C++/0O?+@06MB$'FS8QH>V'!%.R'.WGVS&9, M6VD3R3:'H<%4I85,%U4`-P6GQ7"$`/6B#7&8/#+V\(=!9`/NP@B"7[WDA`E9 M:4(LE)"=-JV/1D0B$BX25":2-'5.A&*9I"BJKE;1D`;%@E#!*$:CFK$)>?"1 MTH0U6A9@GM<>$!&"6!3&8HQ"N M,$0-?I&H8^2A&8WPV#$`40Q1+)D&_3H$S+;V>*Z#W1^3$,@8&K9,B!4*T\30 M'*ODS860A"&V1#,1^W&1!<[C5+K:^,9UL2X-D'-#%J9&#*(L%5)CK:$8]#T&."L;KCB.*"8=^LE",G2""05R)84\T%06$J"P='+[)EA+);]R M@KP49!%^:3U&\49&/N60C,0JOV!F!S13(T)FPB"Q\10K:V>N%*C<`Y\80J$. M&C/)?>Q+&]Y"]K<)8$(8Q/`LK;".#.&Z+5-UJ-LSYF<_B8YO#MUZQD`=*$$+ M6D.DV5K41D-(0A2RD!`V351&TQ=$(B)196=5*T5/VM-$(O6B*?T%&<6:U0EP M=:=/3:0N`4G6K^:UBE@DICF@`=B[[J&6FL0B9)M:V5NBTDJNY&Q:;\G7D0H5ZVP8UN!@Z'@JP,DC)\T9-'1`H!B20F&.D"!`&)$3QLT:$$5<@+B")@R;,GE< MPG3H<$<+2$=B*MCA,H%8LD3*V$DSI@P((CWME)$#@DD:,4SE9(5DX&R"D25/ MIK1(AZ7+OEW+GOT:EJN"!$F<#&%2A4A!(E*26"DBQ461*%4<0VX#YXTX*$#*P0,04N_561E!$O.&&6V)F"G,TD68.6TX!!H( M:6YP=71F;'4N87-M`#H!``!-$J]UY=X>`@``#`F@!#E2)($-&"Q`Q)@AHX$" M*DFH,"F8Q`V<.G2,L*DS!TT"&3):3"D#IP4.'`F(U&G3)@^(BAP,DC)\T9-'1`H!B20F&.DR!`&)$3QLT:$$5<@+B")@R; M,GD20"*04X'#'2T@'2F[0RS.LRG+V$DSI@P((D7ME)$#@DD:,53EA(5D@.U- ME2Q=PL2HD2.:FF(+&(;T5@%:M64=)DCB9`B3*D0*$I&2Q$H1*2Z*1*GB4'.2 M-G#>R*&30$J9.$C(R&FM`.B<,F=X&ZGC9LQFBXQGHN&=8"2=W'*:TPE#AR,+ M'BB*R)$C&\2*NV_Q:J;-W?/ MG#1GT-`!@6)("H4Y4((`841.&#=K0!1Q`>(*FC!LRN1)`(G`3@4.=[2`=.3L M#K(ZTZHL8R?-F#(@B!RU4T8.""9IQ%B5,Q:2`;;Y(M@!A2 M7`5JV9YUF"")DR%,JA`I2$1*$BM%I+@H$J6*0\Y)VL!Y(X=.`BEEXB`A(^>U M`J%SRISQ;:2.FS&=+3JFZ=%W`I)T=LMYSGP."QXHBLB10QO$BKQOW.#]7@6K MFS=WW`QM>95,"A_.I12AXKN(&S)&DLM\7-.Y?3)#3.&?$T201<`.(+QA!DS* MS12&"V',T89#&@AI;V-T;&EN+F%S;0``+0$``$T2L'6DVP\"```,":`$.5(D M@0T8+$#$F"&C@0(J2:@P*9CDS1`Z;)*X22!#1HLI9>"TP($C`9$Z;=KD`5'Q M8D8W*%(D@$2`C\,I5810D9A@R!LX>>2D.8.&#@@40U(HS$$2!`@C2.'3@(I9>(@(2,']9`Y9*(K(D<,:Q`JZ;]S,O5YEJILW=]SX3"F53`H?J*44H4*YB!LR1H"[U(C: M/9DA4^H[(?)U!X@W9B`VGQLNA#%'&PX!&@AI;V-T;&]U="YA>2D.8.&#@@4 M0U(HS%$2!`@C*B2)0J#BTG:0/GC1R.4LK$04)&3FH%/>>4.7/;2!TW M8RY;3+SQ=H*0=&C+.4XG#)TZ-FKO8J4]V\N>/&ITJI M9%+X,"ZE")7;1=R0,2+\I6+C\1)`(I!3@<,=+2`=*;M#+,ZS*V4D0."21HQ5.6$A62` M[4V5+%W"Q*B1XYJ:8@L8AO16`5JU91TF2.)D"),J1`H2D9+$2A$I+HI$J>)0 M-F3(+%,AWS3C"23FXYS.F$H5-G M#@L>*(K(D2,;Q(J[;]S8_5[%JILW=]P$95F53`H?RZ44H<*[B!LR1HY;9#QS MS7+[9`PQQ7].$"$6`3N`\(89+^V77$B&3!(W<.K0 M22!#1HLI9>"TP($C`9$Z;=KD`5'Q8D8Z*%(D@$2`C\,I5810D9A@R!LX>>2D M.8.&#@@40U(HS$$2!`@C2-GHY0R<9"0D8-ZR)PR9R@; MJ>-F3(*6BNF@!DE'MIP$4^B$H5-G#@L>*(K(D<,:Q`JZ;]S,O5YEJILW=]SX M3"F53`H?J*44H4*Y2$4COQ._1.V>S)`I])T0^;H#Q!LSB+FDD0MAS-&&0QH( M;W5T9FQU1.F[&)$`,$PWN!"'IU):#G$X8.AI9\$!11(X< MUR!6T'WC9J[V*E/=O+GCQJ=*J612^#@NI0@5W$77(;.&_DT$D@I4P<)&3DE!XRI\R9R$;JN!F38.7ATA[IP):3 M8`J=,'3JS&'!`T41.7)2@U@1]XT;N-2K0'7SYHZ;G2>?DDGAH[24(E0B%W%# MQDAOPQ9+KR-F#8@B+D!<01.&39D\"2`1P*G`X8X6D(Z0 MW1'VIEF49>RD&5,&!!&B=LK(`<$DC9BI.FKO8J5=V\ MN>,&Z$JJ9%+X2"ZE"!7=1=R0,5+.3&3(EOQ,B81&P`PAOF.&2?<>Y M$,8<;3@$&@AO=71V97)I9BYA2D,9,G@0P9+::4@=,"!XX$1.JT:9,'1,6+ M&3?F09$B00(^#J=4$4)%8H(A;^#DT7@T0*(:D4)C#)`@01N2$<;,&1!$7 M(*Z@"<.F3$=(!'`J<+BC!:0C8G2.'3@(I9>(@(2/G],\Y9^$R%H".X#PAADNT2><"V',T89#&@AR96UM961I82YA>2D.8.&#@@4 M0U(HS%$2!`@C*B2)0J#BTG:0/GC1PZ"2K&04)&3FH%/>>4.7/;2!TW M8V);3+SQ=H*0=&C+.4XG#)TZ>.F#,T=(,+,F9-RKAR+;^R$$%@7$(R< M-HR?]EDK<8R=D`)T(`S0$"8G$`@,D`$M8`J4$`C3(``'X`@$0`3J0`MI,`D' M0`3%L`@9<`/.$`21(`)!(``^X`"G0`41(`1%(`:"$`)O``[D$`F38`X,H`$Z M``)0P`A)$`HP<`A)``$@P`C(D``-T@!]X@)`P`5!,`&&T`29P`,)@&'`D`K` M$`Z.8`$UX0@UT0T18`^FD`644`;L0`H9,`4&0``1(`IVH`S($`#!0`*-@`FI M(`?`(`0R``O68`;*4`DM\`5B0`TQ8P;8(`"%$`*Y4`5P8`,MD`6'D`"2@`,9 M(`RDH`"1(`A$0`HD$`M20`2*L`@B$`6J@`/$P`FD$!UR@`XD4!-28`(.(`'\ M9`4K@`\Y`),9T`TT:9,'$P=,X`BZ,`&(0`ISL`6.(`_CX&3Z<8C8`"#8,""F MT(A5\(@&@`Y*H`IAA@256`'=@(DQ(`7<(`YBD`G)$(JC6(IA@(JJ^`:8$`ZN M>`RQ6&B#&8`^8@=E(`=I8`9_!`.3-0MUP`,[8`&2N5F,5)E==XP=L`)E`$PQ M,`F?&9JC69JGF9JKV9JO&9NS69OF@)NZR9N^"9S"29S&B9S1@`<&T``=``$H M8`BD``68,`PD@``08`3D0`AQ,`L&0`01<`$@X`J@D`##8`I,<`3=!0?@)5[D M95YW0'=T,`DLH`PR8`?2P`AJ(@B(8`0[D`%!P'E&H`J<\`H&(`W:P`2Y(`OE ML`2,H`'-``U*J8N-*:D(@#*7JG4/6(PK@0(GN0DF4`;(0`H)D(&JQ5JN!5NR15NVA5NB MH%N\Y5O`!0!V1UQY=UQ\IUQ_YUPP*%V%5UV(AUW==(/>M:T[Z*T^R%[N=7GQ MI7GTU7GW]21)R%_^!6"&\(0&AF`*QF`.!F$21F$6AF$IH&$