mikew@wyse.wyse.com (Mike Wexler) (11/29/88)
Submitted-by: peterson@sw.mcc.com (James Peterson) Posting-number: Volume 2, Issue 23 Archive-name: xmonitor/part02 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 2 (of 4)." # Contents: Imakefile fd.h print11.c.Z.uue scope.c xscope.1 # Wrapped by mikew@wyse on Mon Nov 28 10:13:37 1988 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'Imakefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Imakefile'\" else echo shar: Extracting \"'Imakefile'\" \(205 characters\) sed "s/^X//" >'Imakefile' <<'END_OF_FILE' XLOCAL_LIBRARIES = XSRCS = prtype.c print11.c table11.c decode11.c server.c fd.c common.c scope.c XOBJS = scope.o common.o fd.o server.o decode11.o table11.o print11.o prtype.o X XComplexProgramTarget(xscope) END_OF_FILE if test 205 -ne `wc -c <'Imakefile'`; then echo shar: \"'Imakefile'\" unpacked with wrong size! fi # end of 'Imakefile' fi if test -f 'fd.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'fd.h'\" else echo shar: Extracting \"'fd.h'\" \(803 characters\) sed "s/^X//" >'fd.h' <<'END_OF_FILE' X/* ********************************************** X * * X * header file file descriptor (FD) code * X * * X * James Peterson, 1987 * X * (c) Copyright MCC, 1987 * X * * X ********************************************** */ X X X/* X the following structure remembers for each file descriptor its X state. In particular, we need to know if it is busy or free X and if it is in use, by whom. X*/ X Xtypedef int FD; X Xstruct FDDescriptor X{ X Boolean Busy; X int (*InputHandler)(); X}; X Xstruct FDDescriptor *FDD /* array of FD descriptors */ ; Xshort MaxFD /* maximum number of FD's possible */ ; X Xshort nFDsInUse /* number of FD's actually in use */ ; X Xlong ReadDescriptors /* bit map of FD's in use -- for select */ ; Xshort HighestFD /* highest FD in use -- for select */ ; END_OF_FILE if test 803 -ne `wc -c <'fd.h'`; then echo shar: \"'fd.h'\" unpacked with wrong size! fi # end of 'fd.h' fi if test -f 'print11.c.Z.uue' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'print11.c.Z.uue'\" else echo shar: Extracting \"'print11.c.Z.uue'\" \(32728 characters\) sed "s/^X//" >'print11.c.Z.uue' <<'END_OF_FILE' Xbegin 666 print11.c.Z XM'YV0+U2`4$&PH,&#"!,J7'APH(*!"2)*!$&QHHJ'`D%(*1.G3IDY=%AH+`.' XM31Z11>R4<1,21!$Y<M[(`0%%3AJ6-\\DJ&@1H\2)/!U"5!*FS4>:9>B4D3/G XMC1N1,7+@P`&4YT6(*,:D`#'D#9P\-L^@H0.BR9`A4*7B`!$QJ%`5/]L&O2J0 XMH=V[>`T.?*%`P8B;8]C4(5,&A(@Y8[R6<8%&A%_`@@D;QA,C!F/'?0,.S,NY XM<]Z]"@+&E:B"K^C1"4J'KNNYM>N&JE<_!)'$#0@X-G&Z.0."#IK"B5FNI#,' XMQ!LSO7^#,).F#!LRQ8\G+XRE\NTP8]8DG2.RJ='9S)U#!Q%&3F'I;\382?.F XM3G$[8027$1GGCOI<6+W\>.9N/<RP%`GSRN4`1%6_,%AP=,;$Q'7EMM,>2 XM<<BU1P<<=;1T1V%GK+14&$H95\=,%F)(%G:)R4%&3K/1\<:#_ZGDH'16+"7& XM&P&VX`:`R8$(PAUA%!?@?V,H=9\8>3SHWE(N]$51C7+<&"`(/8```Y55@H!$ XM&6$0QI1Q;I@D$AUI&$6>?2"8U]%'=+Q@7DEYO.#"G""X4=1'3<X&I92%51D# XMED\NE>229M3AX(+#+=?<<W/D&6B4./8)@@R`@A`$&Q&"!$(9*LF1AV\Y.0K" XMGI%2"<(,E:8D*`ASY/0?"&*D<2*:2"J59VP!S88@>6G<=Q,(;82Q1DX/CH'& XM&VF,49@826VX$@@Q.@?"G_7=%ZV#,HBTX6R$,;?C@V:\P08;;]Q!;+<WS?<C XM&LFB`0(9;QSEQAMDX7836>:Q`6(:,N8Q6QUNE`F'3'341U9XC#89VPCH?FLO XM2PB3@4(8+(C!PA@LD,%"&5NE@1P*I$[IP[1;U72O$8M*3+'%&&O,<5^K;?;: XMS)Z!=MIHJMT<5\ZLT>PS7J`I8#)+4R15!1Q-`!A&ARB(48<9*<Q6$<"MGK'C XM?<:6-Y#39NR@P!ZSS7&L'&11Y(;7%(E-<$5D>#W;<$OA]H:R9(Q8!@HB#$U' XMT70<G?0<<RQ=A@@IH`V"QR"`;&.I/)`L=9I)C7CV;'S71AA+3'#J'`I02)&$ XM$U0,P40218!>^&QZHRQ>TT^+!`-4(@F1!15%-/$$$46()$*M9;0@DY>$&YYZ XMRJR;(5*VDXHT1!!2$!&##;H'JX9,+73:JE/!HYX;':H_5[Q(-!RO///.0V]8 XM&S=1;SU[;F1/T<-T1/P]".8C3X0503!111$RH.!&"KK[SVY\0Z$ZW<E]=3)5 XM$J8P-CJ@P`1<VX(-NG"Z]VU/?EP3"0[$!X+[Y6]__2,#``TCP#,04#ID`%$8 XM$'B?*BVP@0^,(`XH*+SM38%!.<%!#)^VA1C(H`LB>8IAPI"AL:5!#_MR2@OD XMYJ+$L$%'!ZP@36R(P]WH$((\A$.74(`"<NTF!2CP(0A64*<4I`"([](=$7TC XMDR,FT0U+C$D3Q=6"%!8L>WWHB][X=K2-P*EX40L*U=)@M3)@#0U:4P'7O`8V XMBL!-#G*CF]WPMD>CP<&/)D%@Y>PSG,S)B'.>`]T4BB`%*Y!2BHA#01*$\*F[ XM8=$,6X`!!0-9D3W680S*`ERAV,#'2Y+$)(`TG',"]+C4A2$-_R%#+S&9AV`J XM((]"VYX1CIG,9?ZRF5RCY=3<4+6K@2!K,U'DTQ@9M@969'+:.QGQ,F@EV+73 XM,+T$P321:4@$IC)DA6E<#+0).3I(SG#PPV#KIN5.#^JO"#'PWPA%4,(3(L<\ XM07+*X6S#NSD@T#8N9*52=@C+&-`PG2SIGL38B3SD+:]YSXM>&*8GA^KIAWT( XM'-[JV!F^Y'&%?"D]7_I:NC[L23&@ZQQH_41B4!!RT39DA,-67@`"&BRTH>Y" XMH0IC2L7<G.&*,D2C$$4`T::T[W30M"4N`;1+:_XQFX\#P2`+><A$+O)KY5P; XM1>Q@.+61[9QU-2=%VN`VBMQS<5/2)S_-XT\Y3(XB,O4>23EXTO+ICHESHZ/T XMU/=2G]90G3,=:$U-BE/SB0"R3FP!^N;%T\I^%:`7#*KQZ,?!HO(/!6LAHPQ4 XM@-3$V6&,M\%M&Y;:U*>NQ(1118X=5RC%Q(YTH!MLZOB:-P/D<=4Y7,J1&^K0 XM!F;)@:J85>Q`?0B^Y1*AN;HS3U-&I*P6]*H%8@C2X(HK3=5"Q7PU;2QX#2/> XM]LBAO.<-UAS6@-V0NG=2KU/N39GKW`B128E<,\-26M`J/:P7M?<2Z&IEL%FB XMXN^@_;.#;P<8W`&M!%[7E>)M7<A`@G%T"Q3^J`4C_%\9#'7`CCU?&/!0)NJV XM0$T>`4D+H(I`H&9VPLF-@7>3*X+I5E=`THD)O2PJQ38H4*.NC*`,9OC3U/[X XM>#DHZ(7WE]#_Z<[(UBT@'-*`AV#!H07ADD.PB'/1)[?RQ#+(@8JGF-WCKG8& XM`18R"&1'NR<TCY2Z*Y/@T-M*WZEH*?WEWG]GH&<]\[D(?L:=%'07*SJ8&<TR XM63-Z965HX+&WSO.;KYX;2^1*7SK-FD9,?=B0KA8`3%:)%FFH9^!.4E-:5J?. XM-(@8/(95MUJ+9(CUHFNJYR44(0M#N%WN=`I'[>0A,801]I5/50-W&AO9RE8I XM'EK@;&@_&*1[J^)53TP#68K$#KI3B7UDDF@FI`$D)P8V%[UX!C"6&[<:/J-( XMNNB4>@O1"'YN0A"H\%@RYUK-(&+R93'W;@>^<@ORYO<747!O,FH8MVL1R/_0 XM*/%ZMT$D4QB"%(I0NO"^8<EXA)EF?L9RN]@,+JCA&6I28YJ>M?SF>HD-2/8U XMAF\B,IPCC\+^ID`%)!0A")(VE0CFQ/2F,SWH0Z>""+RV<S+U')P#*8(I06=T XMI)-2Z4X/.].U7CJI4[U@5O=Y(DDI!3]W/>E56KK8P\YV/T]=`55/EMJ!7@0H XM,"$+;_]ZW.<>]I'[/0MWSXS-<8[SE\]<YC&ON<P8WWA<">0E,9F)WH@524/: XMK3BQV<B:0()YF0`RK6OU)M;%V36X(K:]TVXT2J30]DF[A/9N/[JDERH0T>>8 XM+*4!@>'^"JG`.HXGA/WG;'RLW0DSMK.Z"]":W*"L.E'7NM)NO@:?CU+/CE8F XMQH&#M[-O9ZCD><@J96GXQP_6OE@A/AXIO1Q.+TAN$E+U/]_:.%U/9__&WIUU XM9WL!&'A2P'NC`G^%$7S#]S'X!`*"]3C)9U@0!C$MQGTQ=A@<X1'45QA@AFB? XMYG_:)V`U]3E4,%^[TR4#@H#D-S_)Q5G=%ST[M7YO$&T?J&BQ=WXP1F2312+B XM-X/?!DU7<!/P<@?R1W\\D7J&M'?ZUWJ-U'\V&(*R=WNU-WNU1X`&&(3K=@=[ XM(7RS07Q\XH#'5Q$1>%BW864A6%+>E5,8.'W5UX$AMG!/6'XBZ%TFF%[W45_D XM51B]LH+LU()IZ'TQZ!7L!X>RQDXQ@(.V)F/J)X@^F')"8W!A``=%B%;UUTU) XMN'IOU83&-3]1&(!4F'M>5X`@H!E0`(EPL(4+F#@-^(#(%SD2N'QF*(=H"&-J XM*'T:V(;7YX&$^%\U%5_D4X<HB(?WI8?!5H.%B%P6J(;?QX.#"&['N%J'6&OD XMHX,K!7Z,2(->`TU!X")M,(E/PT]J97]LI82L1TZO!VJ&"("X)X#K:(6C*!#; XM^`9.IH!=R("`E4]A2!%C.('Q4X$VU5BUF($K@8M']H;.R(O=!6/`>!\@(H^' XM4XR[.&U^2(N`2%HRB(T'>8/2V#S4N(@]B)'0-`0CTA1RX(U0@WKBB']NM7^: XM"'M0J(Y3*(6@N'OOR!4C"7[TZ%?V6'SXN$\0Z(IDR'RRF(R>98L#R8&Y:)#G XM"()RV(MTZ%QV"#GC-8P/R8?(^(_0QVS6^)'?MI1QR(F(.(WIMY7-"$U&X!1T XM8)+@B(1M%4Z9F)$O25`RR8Y5J'NG5)-G.2$Y>3@[^86L*(9`R8\2QD$N>(%& XMN8'65Y!6N5I.J9!0&8P?85_5MX?&^%\3"9`529:-6)D:*9>)*`([>)$_V!=- XM`"+&HI8H:8EMN83FZ(3/Z$YZYHESZ8Z:49IT8"RH6(^J>(]@Z).M6%A!&8OS XM,XN8&7T"B9ANN)C;AY4OJ)7,N)D1"85AR9%C^9P@V1=$(`=A`"1B\!^H68GW XM=XGY5X[\MXGI*)>R.8!V*8J:D9W;&0;=F8!,E8J*PY.].5B!"8LL-FW$F95K XM>(M(J9B<&8*-*5^/>8>1F8=5.:!R>)G^N8RBJ9S3,IU$T)&:>9T*$`1C!3C? XM>80I*9XKR81P*8>=N(Z?*`6T"8\;"GKSJ9OUZ9?YV$_*MV(4R)]$:9QL&*#8 XMQZ`L>*/.&:$\:H@4:J'6.9H9.BYSTZ';I)KD^)9>^9IR&9LF.IOK:8"70BX] XMMY=>R#@QNH_Z6:-GZ*/_>92)N:/1V:!B"J'7V)6N^5_1Z)EBJ8@7:J1=02X( XM)XDP87J4Z*%,BHDL.:*<")-^=J(IRA7BHFNGJ*5]R:6^"9C`*9C^6)@!F:-E XMJHN`2E,)::"4!IE3.9D0>:E7*:F96:02^J:C%J>@68VDVGX*<`1=(1QXD)9Y XM.G][NJ3AN9KDV9+HN%V"2I<S>9>:X:IH60:QFILZN9OV^9?ZF)\TVH\VRIR& XM>9P$:::@RIB9^HL'*I6228P2ZJ#-"9J!R)6E.J35":39V!=)0`1#<"S)4@9* XM2A%LV:1_^J1NVJN$6J4UF:[KBBS5IZC("J.-NJR/^J7.&J;0.JD`6JE*V:;3 XM5J#8NJD(VJG<&J2A^H<P:)%K.JX;6:'EFK&LZ@1W\J[AV*?CZ:0,&Y=2&I/J XM&8H&"+)FXJ\ORJCX.;#-.I@V):HXFK#)2;&KY:T7J*;BRK/FM[%$:J[/U!>9 XMPV$B&Z]^*J+T^G_H.:4K2Y.:D;3`9:Q\^:\R^Y,T6X;[:;`X:QB'.:V6^K0A XMZ+/*&*[-:+8D2JYRNJKGJ@!)T`8E409&P1)OM+0?BJLF:YZ\&K4JVX[XJAES XM6[=WBW;L@[5;:GP!*Z.O6+.1:K%B*ZTZ6K8GBZ8'.ZI&R[9@2;0=&[1QNW*4 XMQWB.%WFK\7B2-[JD:WDNH6YDL7F[489SXWGB%31+4`9Y4!,`HBHL882V.HY- XMVYI^NUHX2':@@Q);5W2#*Q"WF[OBQ:)<>*PQR[@S.Z.7&ZAR>6W)ACNZ0Q@% XM@TP])IR+E;DY2Z8[>Z;STYA4D`1-4`1$%P1-``6Z0R9&T:T)>06?0P1/<`4F XM1R^EBCPUA;].H+_\:QB:PQ*E"E\B(<`$K#O&@DR?RKDD%6#(0X)JJ&1TT`)X XM(*$R,(L6[%D8W`)YP,$51AN@HX8'G,$;++23\F(?K#LI+,(</)&CA"!F<&U" XM4`54('!3L`31AW9L.KPB@6?N)`1/\`1,$'UWPFOFL1*.V+P;\1_JQ;L.5*OP XMNK?RZK37RT[%F[S(6W:%"L70I5Z*NZC4R[76*\11*A+:FVV&X;W4%+Y?.Y3D XM.[F4>K[5FI`UM;[M^[[Q.[]E$L0NB;D!G+_[V[]T\+_W:\@%+`(IG,"+/,"' XM;!@/_!P<3,$B\<+T=7(JS,$>?,(@S,DRS,(4QD&:[,BNJ\$<[,*@#,.I/,*D XM3,-%8,,XK,,\[,-B"\022L1R:<1(K,1&P<1EX,2L*@09XB)NH+L<ZKJ^>\4D XM&Z+".\CST\5E]\5<M[Q[=LQ.H<S02Y^KV*7,NL5_ZV@Z3`5/X`3=FQ1Q7&5S XM/)QB.K:5N[!JK+[LZ[Y4`+_R:QCT*\B[VK.1W,";[+\LS%T"QL"3C,K#`<D% XMS<@.S"Z63,J8;,)4<,&BO,+H2U*?/-&A3"^C?-$#5<HV=<HQ;-%YW,*FW,H& XM_,HSS$$U?!RUO,-!T,,_#"+\S)2AAH.^G,1BN\2(T<2G=;0*8,QT@,Q1'%WN XMRLQ6/+*WFL71W,^N`X!>[!+)6ZA"3=1C/"4P^\V-ZZ42/,ZQ4\[GG,[?RP9R XM#*9T'+9CBIQ)*:'TW,?W_,?Z',CVN]"2W,@8K,AT#=`(C<`#K<`@8-"-7,D1 XM+,X3%M&G',(DW=43EM$4S=&P[-$35L(BG<J)3=C'P\H:[<K#T=$E/64L/<LN XM?6PY#-,RG<LTO<LX?<0Z?1@\/08^[8A-0"_LXP2R;09Y0,7-K-3`6[+S:MGO XM%)M1;;S*R[(U&=L'Y@:T32:V7<9:>\:_F<;2?)YZ9COK>\ZX<\])L-IP#+[L XM;-;N7,=I3;;R'-V:E9!\;,_X#,CUR\+)5<AUC<AX[=YZ_<A]_<\'+=B7?-*9 XM'="=3,J,O=$9_-B=+=DHO=?]#=F7K=\HK-*Q_-FT+-JV'-.X?!BZS,*\[&BJ XM#<R]T]/#_-/05`3"(0?)[3&WC=3?F)I+';SE2=[$"]75+-5@C,T@KA0B7MM) XMDM6\J:R.2X9JW(F@0TK7'039+=;K#*G/BM;PK+!L;=[U[,?Y+`+[/-?R?=!W XM/=``O,`,G=()7=]Y?=\./=AJ+`.&7>"([<D*#N"<K=C'0^#[;>"J3,J8O>"; XM+>!J/BFR_.!9,-JW/--*@=I%#-9.8#O<>S[06=*,YDXA-W*E`W!#4`53H.'" XMO!(B$2YCX!Z.F#EAH!(C;MNXG=1,R]M:K,;4?+PP?LW$7;5<HNDVSMS3VY/5 XM^[B^[>.T\V?8K=WJS-U&#K:2&][QO.0"=MY.KMXU_95]:-]VS<GQC>7OK>5\ XMC>#3XM>`W=`0G-\A3>85;>;5WN8A3.>^#=(57.`CO<IGKMDLD>;=?N>AG><1 XM7MH4?MH6CM.`+NC+!IJ%7N>'+I>)3G).P.B.#ND<+NG+,3>6SJIG6>ES4!N= XM?N+@N=O0O.)._=O63'"E/MQ4*Q`%[QZUP>I:_>H\SN*PB1(_3NM";NMC7=8% XM>]:[GN1X7.>-&>W,GLCL_>=48,Z![L;TCJ$7/P=/D"$)?Y(+KY)NV=NB[N*D XM+MR%FO,[#WPM*KT;C\:PWN,`&/)!/N1O?.MDW=TG_]U(3KE*SL(MG^4&/M?D XM///G+._14^C0U+QFMNDE/ARY_>D-KZLVS<5$+_%&C\UJ'XELK_$Y#LY=JS=0 XM-@<GYE'[1F\I<.@BX&P*!]1%@`<#$R`]OY98K.)R3^P#->IV/]4R[OBE@N/) XMZO?6*Y1:G_)<O_*^_?7++@+FDH5SC=:5W>,179R&P>T]WI_?:BYDX!NE6L*R XM+P*_04ACH=!HG1@``_-Q>P3:"0?L,@9ST/B/;S>1C^(,'_2A[O$0/_$17ZC( XM'XG+W_R</P=VP_>?O]7A+/KCN_5WO-9>GY!$(`5!<`5!(`1,,.]DH)W<^1^M XMO^NO;_UOBM:TS_^V[P+A/MTWT'B??_I]8L'XE;2<@M:6D>\`70L0;7D6XM?L XM.IO;2E4LY0&6I;Y`VYP?CH!^)L[G\:D4!^J:VMR[?'4O^V&S#OC]PI_G`U@< XM+]>A/(I4OM2:@')VC:G]O;_X-_^ZE_V#3_@OYH$W!^BQG)VI0C]O2P.B/??S XM;M)`K&`U="`/L+WH]_-`%/4S@9:OQ:&GX*;Y3IU`L`)-\`G*"BFXZE[@UGIN XML,[\?;1W5OK4'PXT=KIC]0TAL2<2K,`"624]T+3U.58U!""*4IB"(5#R/;,K XMZ/!.H!8$;B_N[GE!KN`'R\#>,X/.S5&%/O&U!L&;RG.#)0WUZ34M8AXJ8)UK XM;\I.K\G!<H'7OEV;VW\/+P:P.37T_U+AB^E]`[`Q##0)J#L08/"#:&+J1AR: XMEA(+L1V&^V6&X0UT"IM`&&Z,(4D#YJ%(."(BP"9B`AE4;FVO=WFZR5<""V$6 XM?&I;,!%VP8K709KA&WB&)$[\P4"G%YS:V?DC?>GO!F9"./CRI%PH/&BC\`XX XMHBK@!M:>C:."(W#ZL29K"*4PGPI<A/30'D)#<7@&)6$:I(3.QQ*V077(\MAA XMV!."4ZZ1Q4.\]@M7FQF("6V@!00'YG`&[`9LTWOW,!!*/Z"W#RM?/TR!$Z]0 XME28X\`B77M9J=?>)',K`T4<#[9C.PH0-L<LU,OKF[$#A7P-[$]'*%;$,%PR' XM8:_H'>9A121#!0A-5J+O81/X\'>1Q%Q5TOQA2L1F3E$@:0I(Z.ID(L&R60$0 XM89DOG'CZ'"(GW'(]T2$&Q;CE1_@#2P"$;F\:#L*26!51HB+DAFVQ$]*!EAB] XM7F+30X/ET+N=PYK(Z[K>&]2)Y$X!?D*U*(1(H5!$C(;A+'K"6!?G/`LJ-(10 XM82*=LE:(&0',4`2&(D`8+@5BB!2/X5)T1*^*(]H-N"@-%5X^G(I]R_I9Q;L( XMK`1":B0DJ[$,NL3%U14!XTP<C+WO$C+$L@@9'V):+(YK<0%>N9^8^N"3:&0P XM3I#5[`;AE\D*W&6\AM-",Q8XSH@=Q9R8ZH7^34S90L78[0S@M]*%7J(%@$=G XMYV(^XVH3C3#A*!I#I5@&E"$?=`JJT3P\1=(C$JL@WQ)ZLM$N;L/::*C<0'XL XM`_M1Z?5%WA@3?>,"1'3W;`@L`;-GVK*#:*EW7DLP5D+T=Q.'XSPSBVZ1/*HQ XMG^CR5%]CE(>/,2)&G^B8$ZBC1%-#UQ%*Q0#MV.:X(Y3RCN!M/7:VL.A9QB,) XMRX6_8\'HR#K7'O_1.3,"2>`(5(&1\P6$0!(@;1..0'@$T1(D^`NKVG[K(0JR XMQBKF&J6B%:2+=6XV#DCV)!"PY!CDB]ZL[Y&_KJ4&$R*''(L>TOIIPH/&$TL: XMB02*)[(45L=3N/O&W>QS1!NAP2!(K9B6^N-K_))4,4P*R!BW"`/E$1F4HT=! XMILGQ%P._8N0BC,*16N5$%6D8DN-BS)&]@@`:P=AW`,L`\&.*?6$((,-*IR_^ XM8$B,BUW2F9'`N%<7LV'1&Y,&2%7>%T-!T]"DB_J+!C$P9CW@Z)\RI>7ZD,6Q XM3GY*3FDB65^*?(>-3#**2/YG/D9-$I`"[TOB?19]H2Q0XZKDE4HA049%6:D/ XM$Z5O$Y.,DAOJ2E9)TQ(D08R$`FL2FL,-B0X[I*8DCLQ26KI#YB@*\R27LY;8 XM\IYIRY*`'8Q435`,9`,<<CI#Z27_8_5[>.C2U''#@PD'EH*6U(T+THSUQF#Y XM&^DEIER(]Q)9,DM/Z=M\XL!Y`DU`C7"C9`<"@-U;>W)1[E^*A,[Q!*#`$$`" XM0<`)'(%Y5W6,5-$@$L=M"$BQDL0PR25L!)`0<U%*3`+Y,^MCT!R:[W)CQLN# XM."_=9+V$DR%33C(YMY;>XMIZ.X[,LESLB/&6"I?CR4R9DPMHPA16U32+!/L0 XMET53MQW-A]D9(R;%8YK0Q6TZ!7?)%1LDQ[241^YJVL"L^?#:&GJ#:U!.KD%$ XM:*D[Q.:Q!(`.$<>P"7;#Y6K*V31.:M.R6,"$=#GU67GH$-/RX8$TRVG.T.9G XMB0D5,V$ZHK9YW+;DVZ.&M%)1VLK,ER[Q9N9$;AAS4HY#!PFY`N?'3(>$LS,: XMSF#G-8<=E+J3J4]R@@3*:03-9NG$G$YS;1I!O]8YH=SG3`K4CG2BS,>".BVF XM@`M)A^I.N4ZY."L)H4G\+W:S4-4I1.4KF9Z:K)2]4]?]3GOY.`LG8W268%-Y XM(+&`$P2>G!-!5!0Q=A#%(E,&4*01I#6>2>#83)RI,WEFA8M;0K,YL(2_$3@Z XMQ+B4FX@R-B;-V?D/U26K&0X45'!$3;\Y-3M>*O1<A@'5@`B3!Q;9(/"LG\+S XM?L[!Q6DIGJ<^RP,5,]$$OL'W0PI?OTD!WE$$#)>/"`?&S&X8G[$2@SI,+'@2 XM.>A57(0KT8B>@?;I%]^G5XR?,S`X@DP8BAV)C4A0H$]`""B!(C`$M*7R#)V= XML=IDKV.SO>8=<V`*&:S;8$@U5BV1H`B@@*@R9JBNRE-S4-?I,EVB:X^RG*"A XM&=QEM1@)<,()<9Z8($EJ5VSH@UQ"*6"A(?0ZYZ*Y+*2$DA%&TC(P2<O%X8@. XM7&E:@`;9J6>@CCT3"::4Z*C/1MA)M5#?U'%<K8K:IY'1N#;1%!`"6G`$@0X3 XM9"P-TH.$4]2IZL$!40DXY:=KZ1^QI8R$ETS*8]8?<J1,^9-?'C1]^1A-(8SL XMD]F.%;I(6!@J9:$1I(6&P4?B0O"&'H5D-\5VR`.PB8Z8]N@HF;X`'#]2P-C! XM*5`%\H>^2C?OI@[$AY6F$YODD]QSAD%*]@[]8B7AT/N1#X+OX4P9-!(1_2F4 XM%`D/I[F@$1$@4'=,PT&-B&0W<-(3N8UPB--0"H*/?)9+DX5)(R57R*@=HI5V XM5)OP48_"NQ%-DV*4GDMWDDHE7DU5GRAUHV:AE>H$,\11>*6@#]8Q2%K*3VPI XM+L6&NK0$.9=>FCV*Z0P\IB@`59`1+T-?F.EO(::;DG%V2G\930&;0P6H%!4! XM4<G]DF@.:HXY,3/$V'U5"0=1(X@/F:@5E=6`!$=T!)*"2AUJ+-6GAM0D"O?, XMYVPHJ;\'!-15.G!7/:I>_:0P%56H!E**2HN`T#FE&L&Q1AWM9U<Y*E[MJ2!U XMA,+2<#948Y11S:5[DI=N45^*16EBLG$"1*=_R("%<D:AQ57UINOPF>)/H#98 XM"VM>!:G,I)*63S!YO:3`4;U^AN?O--;#0UD)JV4UK)D5J*Y)Z'9">UD0D)!$ XMQ\_,N_22'7("@W$1YH&%7DHM^D(75IO48_H3M5(!&A!56>LU<:T<9E_.TWHZ XM.H@`/@5_^[2:0LMU.@7:Z1U]IXNOSJG"(O8DCX#[LX-4(`O<F@QV!K13EK21 XM;DJ-ZAD!YE^#`(`5L%L5CA383#<&%9HO(C";JKKNAB6B+W9$?NUV`>;"?I?' XMI&'/P!(A,\XAGE9$):827`TG(9N=408H6`$*&B_-NS$OW*1@C(MZ`N?<B0+- XMEO/NTO1,#G8#W&/C-(K%,"DB0Z?)3^/+_I0""M2!A4\SL\N68TLS`\)-C8R+ XM%A##".J'56,SP*]=V2P[^^P+ETUE!)6M1;0KBSOLX!`@.5%-B+X!'<'1Y(86 XM.0,T;:P65*#&#$&",VRENG6D]C;`RB:ZH9_]AJT4L:ZIIB)3AYY<JJF-];&J XM4FS69QD$HCV1FC6HDJ'.6DNEV2T%K1)-M';7IEI:@>,Y2ZTH8+4N4Y/:3`_C XMR.2J?-8;YH$I4`?$0#S<JR*P83(U_D-H-46E=8:TUM:>R.+P4A=M#6BT`?+1 XM2E;(>E,IK:P-MK<VTRY7H:HQ00!1+2:>]K>&V-"Z5$<KJ<V0P])CGE94JVJK XM*JM]K;[NU<[6D)13IT"F*P-\(]#.S=;4:\G"NJH/'<+=J@2^H6A#J0U`MANT XME"Y;HA-I)RLVN[<:5=_"VZ0@;>&G+/U"UY8G?%:DRFUKH'C[ME!/+GV.*?`% XM<,=JBQ`8J=2*VU-+!52K>3VWZ=69JML9RA9)0H@$M")UWO+:WI-)\^)P2+3% XM-I3>`(!;-VGJP+6I/[=0V5R6D&B5J\/EM$4UVX):$B1JZ2=I!;<MU$B*U_[A XM5%9M8&VUL77E.L:N"O:H:?/TDR(@1KJI5>A9OB=IBD0PEZ_"3K]*$>IM64"[ XMF#;G>AL0D''X`F.-K)(6Z.9=E0AWLU##O:(/MU1$W%JB="ENJ.VVH_9T.%73 XM2G)-KM4MM%@WJTI3B0AKFV(D@K;#5MYFT$%+<TWJ2L2\68C8@M*YFP-X+G;$ XM09`6[QI<*'IY:VVT-;J`%^EB6U#S:0TOTT6\3O?;?M>;%5[)[<F]NNA6Y6K5 XM9LER@5I`[+N4-.9N7BWF=H\O',"YH]<'32C3VT0%;MXMN/:L4#G?HKL;J^UF XM[5JR5^(6WG>25)LNUK14B]?43MU4^WLA;_!UM<,W.4(3YPMZAQ"N%82[]9)V XMWL!*?UWOL.VW<]<Z+-:9JFROK^K-OMBL_PK;T/MW>6?@%1F>=?QNV\-K<7N= XMXA6Y5I,K-%[V^W@U1>3%E_&W\J9*_(@;S4/:S;5&<_G2V_U;:&]C1S3!<3?Z XM2@8Q,H`=K?6-.MAWTBY"%VPWN&_&;&Y2<\?I3L$;@6FOMDU(M[<"&T8G`74O XM)525JLK4W`+?E`M_)V\<A+6?TJ0<R22Y)(O`6F5W%37-UB"S^A'0*AK1PON. XM"S-))_E00<##>:OI1JS*U3RZ+L&E3DV^:M>2DE06K"GJ<*N\PYY4[DK?&*!8 XM[2X!OL',-N@>W&_YAWWP$(:70OA7\J;!R[EJ+_FMN#;Q_#[=C`LP*:007;)Z XM\Z=A8,+4>TLN!Y;"[I<*9]T0O&[[PF"MJ_(H*7@*S;M$9^Y(,*FON`S$8@:1 XM)`3Q#*8!U!=]^EP#W&P782[>Q9ZB`?]-]SE+B[!-L\03.`EGXL&)?D<Q[]7` XMZ[?</A>4"US2+5%Q?_!/_M&_'QB?Z&I2@,5&@1?G5N5;B\_GZO"MAW"X"M?( XM2ERQV3%.Q\D8]CI@3FQ'"<,PA:W6F$<J8=.W>PL4R26O,,"\)M(//"(C)[*3 XMKR_2,F)3:UIVMZE_&I*Q#ISZ/E.9`*D=6BNGO/"<LJHHX!$\!15H8K1XUS8A XMMTN2!<5)'F8`>!`?VQJ<;!$QP3W`.I@;MF23W,24<0E]Q(6!$E\O:(R$=RGN XMU<2Z%R&28FSL>SLP66#(6E.V%E]HLI/SP$L>E&<E#^=?DV57RD:=0%_P&!L* XMW,,CCP$/-JO*5]DG1^*`[$)S+]:S63EPRQ0!\DI5G\M"?K]VTB$+M*];'+UN XM^MTN+P:JUF4W5$`$6R=L,R0&AKSA"5*#W`V\B:@]-'$8/B%2(@TS,8M;M8'& XMN8%XU`92,N6+*W?%;!@.MYN9E\)FYD8Q>0;_6YH<<'.PWEV]W+`T&Q;.K)9C XM:?@EO$9XZ1KE@8P)?^F*#89A(@^8%S/`96D,2/BPNW<6055*04;\!VY1*J.H XMMSAE]-J-WS)"LBF"><-<+>E@)[[F;,`HM*'$D`UR,V?VB+C!*CPDK=:)+Q-% XM,'.(.\WR:!UK94%+-[]26`:N?6<>!U>SO`AE,WR>1]T7")/0M=R$?2=W=<L= XMTUH)F'$[7E%`0EZF=UD5+TN14#T;4ALPQW2`,[NLN\&.5?)?Y<-D8;!JZ#N1 XMF@M##-BYK+GG%F`<C)/O)ID4K$EA1+^L``T3OZ_UNLV5^`@+&&E<&/'87\[` XM#-KQHF(/C)<E;X5>F5<R1G.C#2V?4;`2]=!I0Z]\94!UGU%O?H:P^[FXRFCY XM](-KM*9-T$OY0"-EZ]RPV)]<)J_..:GPEJI;52-T=0;3=+>UR.7^49>A2@'I XMSFP*/+\0$_-PJ`P<NB%6!3W#$HD:1-BS=V:W^+8,4$SOZ9FK81.B-SR!#'7E XM;2(K#`>DK@A1L&+VE9KD+A%NAUC4";-$9\=@/&VL-#%6Q#LXIX+J*%B;.6NU XM%<H3]Q)3X&E\<2]PK*LU#'1G>F*0RZ:2LYS^(*_EWS;GV@*=F0J;WL93^$VO XM8BL<88OOA*ZAVS,R=D_5^2RAM>G,U&P*6RL0)M!O>&AYII8H5`2H4/+X:LA" XM1GDSBYF"1&<<`*=QI(@U079:JMP1*:*GN?5N@#.R!)5\#&W=`ZH$HZE)?I98 XME(:D>R\`=0Z!,S1`JPR$<"0KNM=4D2+#I`S,7I:P0Q5JP@XB"[M<.^QY';>8 XMX7]0"JL:F\QGF;N2070W_-B*>EJS:E]LHDMOBCZ]PYA%%V-NZ+&30LI&F*Q: XM'R_C!QR4G?%7(LH[>C?3:@N\J7VUU$6U,Z#]$FD)#8*9-?'=NGE9P%1/.^L] XM,73(;M2QDU-GTL$:LD6UF"/5(<A4RVQ4S0VYMLJ^<30:6/YD2=R,.VUNMKU" XMNT?W9OUJ9*L>RM:N!GH#VP"E_92+=-,ND22S(4MM&WHZ<3:"C3W.$V5J2VQM XM89]2`.DWOL,,F($`01Z3\P365"0$<F-=:&*V#7>3QK_TN35=:M$,FKURN;;4 XM_88G8.M-O8FJM,\ER_3X[Q37KJVSUS;=!J8<*X7J&G(=,,PU;8`R@T]=,Q5V XM_:/#=+'TMF2:0)EI8(VFB?6:5L@F@3ICU9+).0DWXY8B_)HVV.LS8(:K->;> XM':UD#K2`,&`&:!S>AD)^[7O':^0@4!&S]N[6Z5I?)PY^[:__A&8(V+%K8$_L XM<!.H3PRA3B`"06,'5!4$L=D`,1&_]Z)B1Y#_;1L">.^.P_+ATC6<5=T<[N]( XM5,&VV%TZ9CI`P5VJ#"X,,N!/O.SJZYI=<Z':X!V\F['MW;FS<?10UM'E]RA3 XMXZ=KM-%P4Q[2?9MIBTQ6/)61U@17V17\<U_P=ERZ\0J5UM%C63]?Z1/^PW%V XM!6_5;%(I7V,Q/<//=U-:W@>%+D/O)/&!=^]$RLY?)BD5$`O]8?6T>'8X6:4Q XM-QS_'9D[3@H0(D=:'BT^:,(W6"?[>`)W8&QB;;:KM4UJ'<^;QPV/CTVO32E& XMN#!>T8EX[V*S/WX[!;F`J-T$VH7'ZF@<MYFJK:[AI9CJ\FWI#9#_-MASG#`6 XM.YI,PCTDHJ?FU*_+T65VS<1YJ%UQ4K#C3L&1TZJ1C<%+]BT.K(,5EKL!6>ZU XM"W&MM,FO&0$;XU<.R.]X'G_D:=N*.F!)+H&+LE+ES>JP>$_Q#:R-6RM4MI^# XM.UICH-N)H76Y+!?B_A%*]U8D7I;+<G'UYL<\G"1S2@EX,?G\'--PVB"+5X2\ XMQ3GYOBR1H!PU.H5.L3>*N5/8X[S5[;XJ?J[+O38P-N2E.F8G<MA,(`>ZQ2SH XMD-PVOVJ?+6N`=@R'YM1*FA,GO;W)KWD,+8YGE'E&;>UI.DMY*&:9U;-@R`'0 XMV;BM-?<TW-E3)*ARQ!DSXU;1L`\7M*\&=)-]T\D`%?/:,]D0V^`2WJ(+54__ XMZ1'=50MH6-W,@_8S']I+V#?3V-5F9Y>&NVO7C&4#5X:.[K=W^.1UKU4/)-R$ XM-[(OQVR<[;)5$J_-%^$&<*!L8J2KVDD,0`%D$>(`NOZ]Y85V^\EUND[CO/9J XM%NHUF:C/;`*IU^?ZO4#F75IM1_*)[K:?,0S'Q'([FM_NWQP:T_F9'0[(68IO XM]/6[MZ>S1^^B#G'"B@'UB(6IMTVYLE#@"9`@4D)FW9P8'I7N!`HL@2_@B0?& XM86\IO+I412'93MMMGK.Y$>6!#%S(D!OKEF-E)L$[H@6XB);>Z+#EH*)D-RF4 XMW\@)/--AIN(\?G'=L(<X<'XHB3CG<MW*%G9G:7N<W?DZ8@?*`SJ6\F/!ZOZ$ XM0+;D<P,/JRO$Q!O/,]5!=M#U?'/W!7HHVK4[C;/K>QBO:PK^7MYON]=&T8"] XM-;=H$YZ`=T.!#W%0_$8S=H+MV'7S4X_L&9TM'VU37,VMJ@Z/RGNLR;U,80?7 XMX5-5^^<=^C.W79.MUT^\;6#9=@YLRR&QO="%>=F.ZRX^PE/;I4[1B8=%A^R6 XMG'7SO[I=V<?F96<)F;UJAFF.[MF[.H@?OJ*=M,_6+`QR0)L92.VK?>2<=32; XMU@<:#N+MM=V\X_8YRO]V^VSWQ+_]#03WX6X\W91Q!WL;L=4L]\JI/);D%'CN XM=S2Z4[NQ1_."`*719J*XV\VB*WMMP"K(]1C-@2G,0P=OX@$]@.>\`IXL$/A& XM/]0D"HR/,S)^FBGTFSS87_2D%P,Y/JF#WPF_OROZ8Y_5&+X:W^I>!NC\O&'X XMJ,C,BC/>]9NTF_R'Q^;,,LH';NN'[F[8L3'T,PC1ZP>,FJ@U%)E0"?Y]*>CU XM1\]\3;:G+@/&GE\H:C&OUT4UGLGT=`^1<WJRW=!S:K1']M0^KNOX34OJ$7B% XMA]L7/L@S87<>I"D.5[_U'SV^V'D\7^F8@DA_UM6=Q$-DU*[:0UYK1^MD]4K& XM]>8%W%4$LU_!D5ZP#GS<5?!]Q0<_%2(\P:MH8,[@C?'"SP,-?]RC=Z;^MF4U XMCU;W4GW/#%!0?N393/+.HAOX6%MS)X_KH7Q<E_+.VK2'>*Y)TZ^[<HSM9][F XMV?80Q^9+%0+5,V#>MS-\-:\B>K[`AT\$G^B3`>ZN:U7\.(_'L1M++W'RCO2' XM?G#7^"&_P;IW@0G?D[R&!-+'F[Y+<WE.=.@YA([>^ET!?/JD']P/?@;/I&O? XMZJL(:U_()3[,UO;!/"<3R+B/\94^UF?&$+?'KXX?C^I!OH:WX1S^W2MKR9OO XMBV>)%P/-R^W;<G>IUYN7M??E=S?U=GH#5/EQU]_GV=96\'L/PO_QD;>0;ZZ4 XMG>2G,*\?;H%TRE?\T]NKETA=7]H%-_(@]+^>K1*Z%1$>%+V7MS9L5-FX^L2' XMNW0[SN_M@^ZSB'FCSY>!?LY/_FE^S>=V5L7W)?^'3OA\W]H?=+M/PA=\46_P XMHMWRBWH)S^,;^\\^]:5?[(?\-H8[AK^SD?7J%VG#_DXN^\$>[9_RIOWV6_E" XMK_MOGK#W_7'+E5(N4#$67#CG]+E=`B`1XKJ(7HE54/?+"7;<WHN6`!*`GQ\S XMU_%1<NF>Z<>$K7?"S:Z&(;%[U-S\YXVU3"+>*E?3T59Q7=$@!W0*UM^*E_#I XM=2I@IV#M_74/H/>W^=4D,.!2(`..?SL>3,3QG7L>7R6G`6IT6=WZM4_8>LK: XM_,7HB0$QX%+0`O9Q_-<2V`3.!##>#(#@U8":7P1H@'QZ4V`%6.[A9D`@!FA^ XM57&7G&97!*):1R`.9\^-9"59[B+F/8$L61N8[%&!#]\,4'=A@3]7Q:>3R8%B XMGA=8_E%XYY^%-P;6:D6;&;CA"6G(6BJV^'ERJ8_\U1=497,@TY>">7=/GUA6 XMSD5]A0HDV`?R@"949Q2%Y#3^CFO3X<!_XE;8AZ"-??;=/(??G7U<',O7&2%/ XM>DV5PY<Q2_@-ET.1(3)OSC<%=FT['MF>I(:L/KG@C@1V`8.'VQE2PN!^ZDX; XMEJH$?,=/4F#<L`\$(!S(XCF#LHU30`%6@2X;]W?(47S?WS!'!SR#UN`"Z`?Z XM@**?Q$#Z"8'JW^&7R;E[2&#L]^0Y;;O>P^,3-7[M#MG`,M&#RQ,<@*&!@VX` XM`2@)/FE.W^C6"=IGY%S49\[98]3@<4,!<H+RW9M$!M9W`H9K05[-%G79FX#V XM^6U>'!:W/VAQ85Q!4D"L?NY;=@._I7%PR`;'QFD5,ET]DVQ$&HG1'-<7G&3U XMP1SPAW4%O\-8!U))@PD?3,A-S(0GAXI@$WIP,-6]@="%;9M>WN>B&2`ZH4Q( XMT]"$/J&=D%RM<RR<[0;Z_8"!(+HW"!)MZYXAB/AI<NT@_?<.EDASP'T!\T%M XMSUJ)!!UD,/&@)_C?1!]BH=@5>Y!=;.$8P-E`$TDA3U@3.H4?P3^HTYE+K5M! XMN)\=A(M07;@4]H0K`EZHP@%^!9%4N-Z!@CM-,//O!'KLGBD(SZ&""]I]]Z"U XM:1<AO"?*.42U(%]V"[XQ.H9;"(7`A:!A@..(7`'E`1PP!^*$[A)J"$G,@:(: XM#1#QX8&GFB*W"+F&JN$F"!4FAHO='UCJ^7CH'SIX"A*!AR`*T-FI@9\=E#(G XM-3)AH5R8%FZ&Q=%9.!8:4#=?-E64M(43F2]X'<J%Q2")\@H52V(A1M;C:&3- XM80L@3K%'8TZ;(QV*AK+(6E@:SH5]P29A(N0\K&$F)1]F"#E/;%CWT89CFVW( XM#=V'W(/`<QB"?C9:#]B`4(6FGB`HPQ&"&^"0)Y?P.U-`$+`SD3K/!3^GW+T! XMI*#K1^N)@,+7Y.4$V![BFH"X+]&#)R#GEA34!O.A@%@?XF(GHAN0(AH\L2'F XM=XA!@/XA8=<BOHCNP3AX():#*,`YF`&F@P6:_-3NI8&)X-*6!+IR=`"*B!\* XMB'KAVL5;]850WU^("2*$2:*+N"3"B`QAR`<A2H@O3H5H,5V(&:+Q]JVH>]88 XMV=>@789V66:X"`IN$=&'J#M0.O$=4%.5Y3UPP(H86,V)N(N9$1MN?_QAC:?W XMO6AX8AZ@)V:)B"$$9OXEB%;A@H@5$H=;81C!(<8M@:*9T23J84B330/>)7%2 XM7SVV"$6*D<CG%QF.B1I@F9@*EGVG6)K8"FJ&"EQZAD8T%ZN-XN.(/`$5DQN0 XMEW!)3MI>R)5):62(VP4KK@2S8FSH`&9^>6`WR`WMBK(B6J(C3F(\HH]X%49U XMZF`',:=%5;A%FG8;/&]=X0@(<%"(X4*Y`TU)<U_<LUBGO59W6GOVG2D09USW XM]J>=9]Y:H688X&FH$;D0(,R*=F(+YBZ6`;TBC$<#T(#`8FW(T+UH0E.DT"L2 XMBE-ALA@<_HC#8;/8[G5XW)@[V/+)$^>,MI0MYE%5&;R8XCEJUY^[%#$:B_;B XM%9@O]H?[H@%R,>HENR$D)M'YAN9>51@$$HR3(:.X#B*,R9K"&.^)!-?B/2.. XMO8EHB2/R,=(!D^)6UMM,:J0;13"Z`0NH6^Q"$:P!IY^EZ!=>:8#A'B@H_(LA XM8Q`62WV*T8K8)RI&A&<:"K!SR1:T!6XQ`Z@`NP4KN`8>1P3-S<0\?`X`Q\6" XM7D@(T(&*95+@3*%$V2AC;!LW`L"0-GH]I-*W,EIH1#^'H4%H*`4R`%LCD+V- XM>&-YH#?R#GVCUV,>72#=`A'!!F0PX$28V%0$9M[B0D&820<Q(\T$!91QY*)B XM%D'<B]]:X11D$!77$AFE+=4_VTD=`8H=-VQ-EH&[Z2`WP=Y8!L0`$DH-<`$% XM"W!C*P$[LC`UP"<X0,4'3P0X(;X1*Q<5[N@>AHCE3I"@+$Q&:DP-0!H2CQD, XM88`8H$727`W@UTB$*$#7N"Z*<=*!V-@V/@$?EI/A0FQO)X;T.&>L`::"WF`2 XM/APV@+DAF?U0_T;#:#F^=*D3F?`1M!MK'/IX)9`1:P#'8?A\'%P!VT@V/@$- XMC>!X$X0++J$"@)81*VE)K(+9/8$\XY16,692!V2LTO@H!4A>;'@';HQ^XE%8 XMDT20"20%21P<BVT;((@HGHS+HH]FC>F.H-$,8BV\5C^`XZB</8O,6>)`$3YG XMU")RZ+>!9ZI$N:A0J6LMP*2P%0@$P!A3(0/0)ZO$R<$&!&]FQ.-@&[0`?D(5 XM%C/R0&Y4S5B#&&R[P?-@AJF+%(Y583.V@50``CE!8G8Y8^C&#Q$/E^(E.-YM XMBERD%ZE`5I``XWI'!(2.990/5#K21R?=R6=:288/(67H9*F":*)%>"JNB;P> XMV/4PCF_/(_+(_Z2':L@@Z3P>CV@4=D30?(:A4:?`.Q*2C&1V&)$=61_"EK5( XM0H_ZE5_#H\%'DZ1X:/VX:Y`=*+EE_0?E6SQUT15%F>03$1;<0G'+!C<K%H#= XMG3C70.:*)ILLB98P@(L6#9`-]HG;7HWXHNF2;&33F-XI=>3@H0@<*H@8G:KG XMSBUGT:+S%IVI?!X>((G--4`S!A1A%+!^-@OD"*S1:=J90W$=##6F64BH0T80 XMC-FYV+_U:2AA9`0B:&82'$@P2X:1)%L11[H=<5$BTC@E+D+$Y`<),$*-8E$> XM.376%-2CM%BL26>8X1\YO66$X,WDB!S@:9AC8L:GD83@Q@9'=$@!)Z$/]45L XM%1!E/!D@(GE!B&]0&X0+#"2N.)KED@W'+!E2H@$CY8L`X\F.V!X*A/?I@012 XM/SD'K)0M)0@9^"F3@]_`6$+.;4'B4P5#1I,TY#3Y*,96V.2VT5':D>R$-XEA XM*!0!!+@H'6@1Y*1A84YJCCQ$.@EN4)'C!CN)15*5\"2K8E/BE`;2&T!/UG)% XMW!VP_*`!12-!F$^*=U,?/YE2[I)D9;C0<!%H:F6[X&9L%&_8G)%*Y)6X20A0 XM)21DCT,3PA.,E;("2UE6,A,)139A./`$MPM)P`0$"3CC->'\.$V&!`H@15`$ XM>80C8<!);(?E7`E2)I8M)3/1/SB60`UB*5(NEM=$8TG+48*W9%XA5P"-TEP4 XMXEIT&>%DAX&G312P0O@6$@)O?25360J"BE)C4)F^:(1SF=6(6\P63L:P5E0: XM:_F=*P@=AHW^X[X#0#(;9Z/<^&6-DL3&VC@V6I?:1G9I'VR7A5/=^+.TCN#$ XMX-A*%(XXT-^8JFP;Z27U0#BR-8>C&I(X&@J,X\_A.-Z+O]I3:3T6&=@C<E`Y XMMAV7(P+A/89G6"4LP3EZ/9]C!P%'CH[VC^FX%$E/F9#J>*H$4^`*',$[W([. XMCNP8KM&.KB.'6=+DCD3>).D[%F?!8X<Y/`Z2QB,GZ=LHCX(D6E)'?`25).Z8 XMOCTLF&$%9Q[>"_3C8X9.JH]N'/\X8-9,\*/%5,$E&EREH"9!W(]TU\+6!K23 XM18:X"$VHEHIEN&!:/H'K'8.64*")[U0&XT=.%"M"KX%=N9!MV60X4)9BY-4- XM$%VJ8G1<4C`K0@$@`AI04LZ6N&3"QS>\F7&FJ)8[QI3YI+YHX^%-'R4'EV<" XMC!9@&.C,_922G7$Y&$&3SJ6:9E16B\*E@H;6.)3C)!H042*8$R4/D;"I<2#! XM17E%KH\;Y6,19Q:0@Q6>Z1O$BYI"J8F6P)D$Q$NY'V*0P63'B`.ZF:OFH&E, XM%HCD'LD(!IJ,8J"BR"QV.V>@*48D6G,I)FU%:[($K"8:<%;"EB8E/FD)&H3[ XM9-EV;`J:!,0_J14*3@SBF>DL,F]'Q7.)4)J*7R.W**90FE2EI7E59IJPA)]6 XM438<GB9DIC^RCZ*F;U!`0E(T32E29D0BJ*:]U0C9FWKB2RDC#G4VH!98D]"; XM()LIHE,283SEZ.=3^IHFY*IW8>9N0A1)L%!>FTR9*49-)HQ>X<((!20!6$"4 XM%1F9(N8%F!-(1H3@&!0I1]X_;1[B]AV)9$90?=DC<62P)%!C!#0Q_":^.3%F XM;6[7S#G,U)RGR$O))\*:1N'10W,:G(3F%YBC,9-07<,)`F9C1Z7DM7%VG/U3 XMP7%OZH-\4"/DJN2;FA1-XZKHF;_BC!AP"I.YDM4Y!!R<AJ((N4PFBLTD#4=Q XM0E7`V%35=#9MKDK#6`1@`=K2A*7\)`L:T;`2JX2<^Y(.%([E04(4.18$S8(B XM@:ORA45)8M5K!VZ080F56Q69U12&)QL&4*5K$-R4-(<1>QK5U7ES\G$"74ZU XM=;Z4^*+7F06"G0.GYSEV%IVZYM&)=B:=0.4S^2Q"815A->DR@G8"1MSYX]"= XMNL,9,`;L2Y'G/]7_A6%=GD&%@#2>JF)"TGNV86]89!96R0<6U5QU'WT%FN=K XM*<X)=%Y!'O!Y/GPU@,8H>@:+-Z!FT!5`GZ?GK?FEK7`(I]G94R*=J9[:J>1- XM<^O7Q=DR9IPOHV!U6M$.N*?8(A;JGKSG_#EWCHXZ!OY9K1V?8!7PR0P"-7P# XM$1`D_`:T9--',49I=.9):6<F!0:HV``4&EL7Y/;I9_Z)!D@!>H#^5.+GM)5K XM)I/FI\*)?AI^BJ;'](01E8XF=`EI5F&V)_U9=^Z>0A!:DT*(#9';Y(8]19I# XM"W86.4:5'$8!,8,BH.?F>/:&Y6MP2*K84;1QDYG#)H$6D'Q#!.5+%`GXUG^0 XM@$Z"MF2S^4#Z<4F!$[H10*&[@12J9_Z20"=-^:(UH:S&$UHP=*$<:&*GS+5P XM1N<+-X(.@9-=8U5&11J`1C"T"[5(..@U=H)BC;$GQNF^Y9`))HK!0YX*O,40 XMN:RUH/MG[@F#'D>09&"0!IP9VT8;<0;<!!J+=>C`E*$BC*%!2%"BG"8:QT/` XM8:"FOR&'WC,Z$^"Y%$6A\R/!T\1$G[6BDWC7N4LZ9QEP?<)4Z2.?^6R.GK*F XM9A"+;IVH)PCZ&YZ?JV?ZF92MGYO=#5<DYG#69/R)B-:?(H#_"4$-34$`1(%U XM"DU<@AP0C7()HIH-,!N&H<)B0P>-0A1D9\^6<)J#"V?:B7$YB)0=L?+\B!=D XM9G'H?BJ"LZ=R*$.1A?F?=J@[L(>=BR7Z)T%DW%3N`W\ZDBYG+01STF'5YS4: XM!DRC!2DX"N/9`*^F!<HQ_IG\8D**C?:B.^(XVB.6HZQGHKETHEIJY@JZK/F= XM)J?]*1>2CBAGWUERSHSO(4D*!*6<4,ARM(R^H"[2*5,>XJ.&"(U4BXB%W>%P XM@DAZ%NLA.F6/OH<Y*4D1D&Y5_JBX`]Z<AT#-]YF[=%@<FO1Y`#I[U2<4P)1F XMH_]F8/=UYJ*V450ZE5*DR*)%JBPRG*TGQ=GNX0!OIU<'DJ*DAX%8J)*68S34 XM60IX2H=KZ>!9'4*>^B<SZHPN0)517!@,ZE<VZ79H[H0Y.VGW$AKZI)<D4!I/ XMH36BI.CT'7XK2"F1Y!-];Y4&AU4?&$SB@AMX+\R9H=F4Y@*Z2W.=2>#?9:,_ XMIT.:018JG:EE"C*JH>S<,M>&3G*')EB::&:91PR49?,D!G=AGC7]-806QC<) XM+;J='JG98"H`HNBF(+H5])!)6Q7FEHYC[PE;&DV]I(IHC^F)'J'O9JA)$_1[ XM`Q-?5T"6IN[&CH"9>F5U)F=:F6:G>LC#9P-TG0`G+@J1&B#8:;H0CH9^7BE& XM*HS::K!IP#&;$H8_(?.G,FZ;3R7L^7;BD'N:$"IE#*+%Z4=ZDKZE@B=+2L@4 XMGG4I3-J)IHNAZ!LW,U&GCX5UZHB4ID7#&7"X;*=&W&::25&H98"%FB@LI*%G XM><I]"IRD2&5:H1XNZRF">':2D*YIAE>"9F![Z*1`6^RGOVE_^IP*IR``<5J( XM&J<#*G):DM)0S*EA<)=Z)>>CXQF=BJ(@P"AQ!+0O%&*`X*$B>1-J9;J%GJ%G XMP'^`H?:,4&"A59I.J:AH-JI]BJ@7J`99HIH$7"H:FJ(*C&\HD.AZZJ90&$5( XMHU8)P*E_RD/\$,,I(1J=&:*2UW%Z<JZD^:?<:9<NHNNFC_F)(J'P9F151N5, XM1X`IZC2AHM=I91J-C@%7JF::I6H*I>FCFHU6H&#J0XJ!UB25ZGUQIK:G:6K! XM^*(N93'JUMB'OI]_J(T*9P"HO,4,P*/N0&AI7&J@]BBU9X+:G"ZHR>>1ZJ!: XM"E(`6C!$W!<%),HP+I2FD6IWFDD)JVQ`:9J-@J&B::QYGN(ER$2R6IE^JB$H XM.1JJIHS-(MN)6YRJ\&@GQY^>DW/J(.I4O*I_IX_*IP*IMJJ0"JBB<K$=$I,% XM3`$X$Q3`,R$2.=1`\_/I3_)I\D>;-H6V*9EW+Q2IG^@$H5$BJ5@>A;CSF7QQ XM2VF*K):I56I3VHI2BEI,;'F%!E8*:[3*L+X*,-X-<"4,A3->42B&HJ>5Z<*Z XMJ)JI7&D(^8N*H,$H";JFYJ?+Y8S:FR80<*JJND/6J4G;G4JNAJ2!9W(JESYK XM06HSNJXZ(0`K=#JP[JHCQZ%:BLX[IR@:VJB:!,CJHUJL.J#>*=,:K5JJ&>LV XMVJP&G=A,Q3HN6*HEZTY9K5ZDUVH>>9^6JBZK#<FT?:N!*)V:H]JI3(6K*J#" XMJ@2JSCJK%CNUJI^JH):$]:.1.K3"<;VJ&@&L3J@9PMPB.#RM$ZN6&K@&"QV" XMJ'8#-*29ZFB:M1ZN(E376GZ>K-9JR@J'.IR9C,"AJ]D\XUH[:C\\B\):XB!- XMJJ!FJ[)V_>4'K,*C5$"@KH)KXEIL=0IL@J!A)/26X(*X0"ZL/KQ!8D"W9`AO XMQ)W&`J05S$*OL23\"'J(U2`3%`:^@8\`;!2&O(%T@+JV5BX">0`LX)>/Z*L@ XM'0!C%463$!10`<J!H)&X!@M)PKQ`%C`+TFL;0+W6+04$]AJ^&0@MDW*`'?@3 XM\4'JZF"LKMTKX@I:\@0OE?>R%(P624B0$/`@*7?`'*`#!#PSP;AF*@@!N$:G XM"'X8L%4"%I`%\)QCPF^05@A*B%4740:4;TL$"D)&Q$);P19P'=P'T:OYNCA6 XMK_T!K)#`GAFJ1ICP:Z`@%Y$\DE:8%=%;%_`N\`M'$>VZ%D2OH%-OF5GM,\7! XM>-0;!#+%@3]&0*09!.R:D594"5H`!-L;"`O(JW(@Q+H+A]3P*BOT!B^"MP#" XM*@>5AOB6.IU8>("T4"U,L+V&"IO<`1L@P"2J;O"63D$)B[K"L$D"[@`%%!V0 XM0XH`'1@(L9!0P!-DL4O$@C%F=+$.`AD;PIZOUBMRD,)*1[T#&;LBK`>2`9+0 XM9.*P#%=%D5;PL""`#PO)/K'R!/C1*M`MK,88,`9I"\4K:5$8\([)P4MU2*D! XM[@%9L"0\LLK!RM>#1J\H`'R4`L2N:T836QA0L,YK_1JY\@7C8LP*KL(2:FL/ XMN;<M;#3`S1JK%JA]ZNUYMU:'B"G+N0`-I1O9J123%C@]Z2P$=DF'0>E'<P&A XMDAD,L,'!1"&?R1.K0X5O")NNNE4,44E:DFB_8IV#5>L:GL)4-T!5JN"9IYMJ XML'(BVJ_4*N4*MEJN0.)ZQ[YPB9Y8YYJ'%J.F6`U0EKZ#>NH;0\S&H#]IV%6) XM0I+5+#3B7B:FGB`SVYA21M<*AA49,:5Z%H:FSBZ;XMS/B$Y\=T<C7*DI2IOF XM["V+FD:%!%J6B:IXL_]LF2E0CJIS"'ZZ$7:;*>BW^65B7:?KBT"UR0'1F^YJ XM(LBRY$&1H$\Y"+0L<H"Z>J_JPH80R;Y;5"SD8!1XA/E!6E'''E(^K$!5'+2P XM3L;S2BBQKT$`GG43<+*)@RL+R](TAP-QD%;8:5@MC"!5&K6I['DU@-5K(Z&F XMJ:X!D='4>F5/@74453X57Q6AX*R[B462LPEK9=I%QBHZQ.;)6TFLA2NE*M@B XMD&M!QAJ:-J[.:CPK$)2F@RT=4'>=M+SAR.B+EHPC9*]ICI:!Q&A_:52TG:*K XMM_F.&HG3&]H:G/:RO04P*\S&K3_J<IJN^JQZ4F&JT!9`8!=W5-EN<$KF\P!E XMR@IVR])JE2&05J1A:RXAMAJJ2479$K?_5L9*GEJE\*R8.MDNMK'*\U#/<K8K XMJF>;D;JH*^MHBX).BX]FZ9K:UJB[+([:0SH5KNW;6J[NJ<KI2(>@VJVWJF>8 XMT-*DV\7RJ-LBD!N<%4EYKF>&`7#;!A20ZFQE6]@ZI0LHJ]!L)K>!58#+V"JN XM(2IT.Z*2GH2+_2K@7K>[9F?;FGZVA>#Z:5O*9;@E#[J=";+BQF^)KKE5<T9W XM^UJ0M@9E#7F,AIMY:H_*WNZL,M][:\S&M\CL?&M);D9()KJXWVX5^-L9X(@H XMN-6M#4"X(KB%%I!+!UBW&>N7ZN"&J86*D6O=2JYEISW[E6*X6:&&JV4`:QTN XM";'6L@HA+KVV5T89GVB)NW8^BRCN#%G3GK;(:#QZG1&4+JY!*[<6LRXHC<NN XMZJ.W;<N9V^:X5H5^ZU8)K/QM%HF'0E"-T/ITITRC@>Z4U2EFK)CJDJNI2K=9 XMIU(@Z`Z*'>C1M9HV=:OD>]I6RDCN1/[`!/@93L`Y,^_PCG.#Y[H.HKDL;M.6 XM;&RZ4%;42<F$3U32F;$MEH5X$OY7^R0D=FU[]5X-M8Y(+/KHVIP$+LYILNFZ XMAF[/^?#=`,PJ9(NU+D+`KIT"Z6*V(B,R69%^K5/N=NM,BJ4AX,OJU9VZ_)/_ XM1&4]GWG`K@L'!`'V02R*D'X%WBZX2P;$HJ(:#K"Q:H,)W4S9C4:DY&ZP:^ZB XMNU"N.`KMNJ<J*[6[(5J[[R"VF^KZ3ZRNC25RRH/V':KK<::E<N$8L.VZ9SO' XMN.#M8IVU0</+!GB[Z:[5:NQ^K/E*CL4[4KSU+GMZ[X:M#.)]>C`.M`NCOWOP XM*KR1R*)W$TB\#Z]Q&^"Y2_30RJMC3;S!;KK+N"JZCBM`%#!HO`YOS=OQJJC` XM*(M*Y8J\U:YX^X_*HY6AP:OJWE$+;VK9<$2\,Z\AX>U.H0!A@>MV;7!0+^\H XM]0:[O&0HA0.XLQ,?C8B5@@!8+\^;3$R]%*[J*?1*N^KGU[?D,9W\[L((N(E@ XM"D#9*_%NO<IN)#('<+1.G\0*TKZ52MQ(6U,^O68OWHNH#(@,$JZ)F[YS+VU! XMAEQRA`EEJ<M0?JZZZ6`68'X39L:E*;-2E$1JWLI#_&]NG!!A\BZ]*"\<4$`* XM@&.`H(MUHKZ";KK[V.*\D2VCR_J&3VFO&XK/BJH;J<5)\L:?HZ^VF_(BM(11 XM4K30[CH%UBC(C_HGW8E'X(C,OG8*WUO@0HFWJ#YY1G)#S"].$NFV<V(I'IEM XMPK1FHMD7^2:'EHF8(OS^?N!-\7N9U;B$4?([MP)F%>V()76F6*P*ZKNAD0&J XMK\N[,QZXDRI9(/_>"?0O[0OCX0#/[3O[X(Z]^Z]1T/_:*;4O:^K4(9K<[9C+ XMIGZW!R6I"_Z6:4EOMNO`-+W66+=8^>:6X:)WYIM*E')JNMDY$@TZKM[:Y[*+ XM\2^2,@;,OX*N\YNU0;_XF4@KNV$S!;#AJ\XQNTYC^9/]$I>GH+;)H'F_X.8$ XM?+:TOR;('@O_RK>$$;'ROLY'EF3OHP07"2V`^1OH]3B+Z07R!&<PZF^IHI&M XM!_"5*\ECH8=B"A<\U$;!KTUX!-Z(P?$!>A'!I<!8BJ`[!#@'!MSJJP*[P7!P XMUSMWX0`-K@#,Y-+`<W#X]`:/"XBO]S5^%HKVKI2+[UZNB^$`M2#@1NT!-[E= XM;6"UGM$[`O:^%_#ORXCN.O\3`+@`F9=J",'D82V_?;"=\@<;<"XP'^?W&KBS XM)5]A3X(`1*.S&0,'OC/P(E3]R@&C<"`LH"F^(J_VBQ5JF]1C;?%?WK08H12G XM`3^5EJ]'.%6B6`9<$'JCJILG9$0#5?V7E*:796!FCL'I(3(^EH_;0]"Z!8"^ XM2:AC\OXFP[CJ`A=#YH]#*__XO4G#;/#<(.A*I9,IU6LK0GKNTBS,#GM8Z:Z2 XMJP<ONH6*/,R4VL)>F@>Z\:&IMR^VBKF*?*#1(MP1-<*B;L7)%4K"'2(E3,E@ XMP/4H890)DY>>("<,PA@2%+$CZ5Y*P1FQC,3,JK^G;R@L$\S#>>$U,>16@J]P XMIA@+4[\BL1Q`$O/#BMW3N`-'C3TP]_OX0I7?;S"\?@[#1D4Q'&8<PWRLYEO> XM,L/%'1'L7"1%&2V=YPT+J3Y-4@P&+V@XYN[`?"J>G:^@.J@1JM+I]V8$@\-Q XM2[(K$[C#KNBMV(`R83EG$R/HVL'2UU1@B^)G>S"R:Q:'3S#Q&BH5%IJ\YH7+ XM]@ZC;J\>^GINJV\JIAD"F[>G0A7F$#.]EK![NQ1O2Y.I4QRHWJB@:.CKN'V< XM0?'JA%V5`6?Q2>QVW1#'ZUF<[A:[L.^Q^Q].QIKQSPL0K[V6;I6;%[^0NFD, XM::KVQ7'JC<K:KE;1F=LJ>0W&I:]S^FDZQAH8JOLDU0Z!AE+PWTK&QRL+'#Y9 XMQCS=9"P<(\`P7@ZP[@*3GC'39!SSOZVO:`RJ!L1B:QR:&_-/[`Y@Z2Y,Q"UD XM2ZN#ZJ8H[NAJT\J>1^^:JS\IO;XOU1E-:<7(L./X2.:FQ#`'S)V)BQ^P7\P8 XMTZGJY,&VXQIJ1DI55AG;OQ$K_AL'"@J:<7)L\7;&&*]FX!_#Q0DPI0OD7:XF XMKFK%%[^L9ES:.HCBJ:;NDW7R0L3FH^<K`N^MC_%G@0P7D`NRG;+WFL0`<FMR XM"L/`5IH,S)\IC9Y":'S].F``95$2*MK$5".WZ:9ZC5V<,"S:OA8^,9*!'$S$ XMRK"YN!AGE`VJ$"$%'`%"@)1E(E\Z)\<:4`?``?5OKVL*"\BY9)0\);>^R?'- XM>P_GO-P0M_8&2,E4,NTK'7^\U''(FZWNQ8TF>$NZKKA"\!57`?^[E;!Z+&Y^ XMQ_&QARM.HL"&0X4<G!+%YMDZ:0)SE%(FTJ(EE\G-+XIL)3^)TDP9"6U.OS7E XMH1P=S\@[6XU,Y?K`EN&:F8Q"AVC-%<P$D[^=,AZP!$O!M:T3+"I#P5DP;GL& XMZ[5>\,#K"5;!:@@:_$20RM+LJMP%J\'*;]6Y28DD]MXL][#JC,U>PD=P4L;1 XMG:B6`X"]=Q\WV'W:1H%NL7PF&\(@[Z)H,&Y@9&G<R_O.>R!BO4>2\)TTU--Y XM\$HL+).WO/12Q10M>)-FE$:NLB.ID9W+9+#Q^Q2C->QRJLP>N9?4U1KP*;-' XM'S%V8"_3RNP1K.Q9U,NX\OH+9(@I].V=81'K#F:7`C`L'P$F@?+#*Y,DA.XF XMQ3#C4&C`PPQ^),>O[Y<<^ZY2$G/#7#$[RY3R7#SI7H!V<6E,]*Y?U3)#+!AC XMRPY,=,<M1U,Q8_2QK6`:AF39E)#$S#+&?D$S-Y(RDK\L,^<A@:-TYZ9H9`15 XMT-P+$D;L\O@[+XLI[#*_/.`PS<=KP&R4?F3Z\KW<V6AD`+/3;.\<S*]>U2PO XMRYQF<72'=>JZQ7)R'`"'O5?ILZJ+ALV]<H-,,B_`+>JT&]H6ARQCMSH)L\S0 XM7:\,*-5'?K#8G"*_?2;5%MHWM\W)<1Z,-D>W0A??+`J#S#CP,3GJI9ZV+VF< XM[\[-C:)`:RW3GO*><Y<MZWG`;^^3-'_!FS#4;!ZTR^?OG`LO1\U?LWZ5+UM( XM2C->F@M5S5IS1O8Z6TA?,U76!@H!;,(4\"AAG549[MQIJJ[)L3U\.`_`:K-` XMT#OGSJKKLXS=!KW:K<EL'8=18U0915_95X%!D.`(YVW[KLJLWN*LLFK^0QA! XMM(XDU]S,=F1LH*#@.^\-CU(IS"B#&HZRE`@I`XJW,_(\OUJ;E#.VN0OCR'LD XMJ=A'GE=Q,JV:S!:EH/*N@Y3:SH+"%VE_H'B+\G&+)2=\59D!?3V\>`^?5+`6 XMTW@;\UG6!CK0B8OR7.%FMR7SY'P:_\@2<IL<`;^=CB^>W!/+QP\E?0RSVL?D XMV119`A>?)W"A;$!>T&OD`ZT^\X6-<D@+"[_(!%(#74-GT"$S@68IW\5Y:/>[ XM"N;$FN'Q1.3A!A^!BZG&6)AVU`ZB!!%WL$^X]D;I&,I2K,/-HBI7=`8S&HET XM4V;#@4$[!6`QQ(KP:7!B]`]-1AO+G+'&W!P/DVDT!?E`Q\6I*1L*.2O`E:X' XMW?J]O6C@41E&DQYJ-#=Q0XO%F>E'BQ*WR#LT$P=(R]'L`QV-TLK$5N[JV!&& XM&4MEG_SE(I&++Q6W_9;0!&75F.*&MT&P=&E14@$8I5^;)//'\V9.Q?:I"%%4 XM3G`2-Y"J,)';AZG2<A\9T$K'+C#>(;(<<Z/+\DF5J*W2MG0D(D6YS88FW#ST XM6L>W)4Y,_#T;/DC>6?R(N'PEB>L=4[Y/90Q9#^V^M&>Q$?PE?UTTMX&[K"TO XMYI5[4"04_Z7B(RAJL0N&'$7<'9BKQ(C+0]0`(S`=H`VK9VZ<<R806(_7QA20 XM!9A.YO1O7,X"T[<T]_8W3WY;6U(`4`O3Q$(N#0,<R&YT@EPF&=2U=$!-3-?% XMQC01G>%^T'0S-HWT:M/8!C>-#.D8ZK3`+!+,6#F(E/5,_],1-4*]&PS2O8U' XM"Y;IT"HQ#_VB#58'=1$EL`71ZATZ"A]S&<IT/XU.MQ0A=4*L2=_/G/1.G5RZ XM`5RCICS>?H]QK8(93VO##!P;<VSHT_PT[C('G-.89X<`3+\JEM81.5`GMO86 XM+=WW!7=<=8,@JATB7O+PW!:K2V)UPU=6BPL3M85;43O/,"UJ7$U/R-JSY(7# XM/`'DP^%9>0Y4P>?B.7R29PG)7MU72YZZGU<YP#&?ER=*/5:K"&^U5YU`O[P% XM-1VP5:,E9K5"C2QW?X@SE7A9LP1FM0:M]C;/>G34U2@.F^0QAO99=]4L=7TF XM:[3/TF]<2=*NUJ$U3AW.K'=/@!%@!'P!88V02BZD%T_$&C%GO0F1E%"M"R]A XMF+(J:#DCT9NR$@T56[0,A2&A&,^Y#R>1X6QH1)FLO9PZU9@'5+C&+&Q9V[43 XMS?]\Q'#PB76;E,>QA\_\ZI77=8-V@CK6($8HBJ$^LHIJ1(8P7),$D50!B3N/ XM"UCG?NT@*-09LUJ-#V,S_G5<S4'/U22H/@LZ$!GA]624^_8/J+4?R@>I:F)> XM9#V-4MBW761]5L,`9W.R+/86S[ZT1C4':MBB=>1,6D/(^J[\=SDCO9`DB@!= XMN-?L@XY`77P(8R8+DY<.$6/%?P!C*Q&7@SQB$]Y[$?$IXQN(%\?"0P/;]3(# XM%+PPON78-#:%J5^AD-K-G#5D?P1%]J=B(G)P%39F+2Z@LTG!B*UE_]</WR%B XM.'O8:;-D"Z-AV1GVEVU@,\\=-(I=/RO$CJ)'>F5[V:"UN-!:,U%D)$R=--J( XM:':(0V+;UE'<FSU4(]?X,YIY1(?2273X"]ZXV#KV&R%C&P7N-9!=12_:3/:. XM#4?TV*-%0R(TJYS@S92M-AC9!.@K)PJN!`J7KPRZU9.R-%E0QXW:;D"IO6$+ XMSV1V9[T(K=H^C:M=8N/1#[*:FF*;8I$PG"Q=LM@)[3YC(4@H-[8(<-L1"'00 XM"-#I?@%9@/O"/5VP"T9W4A\,"],1"P-%*]M/`+/M;`\1`&QQMHZFHLW@WL!J XME]I<MKA=:[];="!,=8@DN@WUN\OYB=KG]@X(:)-_F^T&S68CV&XV1GU:^]%( XMXA0P;J/;=_88^8[IV=$FG^UOQ]OG'?G9[`;:^K;]3&@7U14G$`P,)]H2B9@B XM;&<(PR]A=&SOM=6AGK%L-]OV%1.M8+04TK8;0&W[N/:J._%Q;]LB`*A[!WC; XM'Q`[.F$G:D@`CD`<$,?"<DY5<Q]G&W8;+6"#R=T>S6US.]*9K;/;E:+)DC,B XMK%.;,!R7QW7V$'<1<JH%`:NXJFQS?9WI&4C`$T!T&`'P2W8#88EK10$RP>WL XM7NIU=-V#2@==0OT#(!3)Z&,\'5_3T]UPRTT&J-WPE%C9<.S<-_=7G6J3O7?W XMT'U6'R(3M,?J;M<D&QS>370OW/3VLPLMI\G2<ET=;$+8_';=VW<?9P%W$[(B XMY]"`;TRM2-,!AO?GYT8N$%]`R;'[]6HS<4"Y24MQ<1FW:1N\R1/W(CCY[CJ4 XMYK%PG+'=G"_0ZB%OPU@QDIIUWV2^S]"].L5H*XJ%K7?GOTDJ\)U+S`$:=BXM XM@+&[1*&[VTOS#1K*\?UG-\ZX,"'L\2[>27<^NW2_D1R7Z'WSD-Z"ME87>9.A XMD0(1(#;%-H0!UDE^!PCF=QZ'?J^SBU9ED%;'VL2SF;U^EP'MMQOP?J_9*&OV XM+:IFF9ON*.$!0MV[-N0M9_<%2T"T&D'!2K^R&$E0FU0)N,/[04T(RO=FO0U^ XMV&9V!#[Q3N"2DL*=`S_.]?9HW6;KVN$WW)M7-VTCQYVW)+U9Z<HR!2ZS*E(` XMO5!O`G%EV/!]"KM=,3@0D\+]W0$V_;U6$T@Y^`SNQ*6AZ%WU'3!.Q_ZW0!QU XMZZ<KMGD,#Y9VK[=,"R1+CI?O3BL_"L6!**!\2$ZSS@''=B3GJB"R2R>M#>'! XMJDR@+!S<'0ZY/7SGG&8XO/5ORX#*=X?-6=??C.Y9,HR@X:0VNLU_5ZY)>'4\ XM$$>(IL0`#GXWW'!VA(VJLDU=MI@74./<[A+?,`=*U,KWF#V'_^!C:")^VTG4 XMM[:#7/CEVWOT&B.%9[EF]X<++!3&]7$['4V'N=.T40UA3]V@=-4]>\;7%]LI XMG:K8R6UFGTWC!-25MRN,2&O>BYPE'N)@XO/VT[-T!TP#1[^C!\6)!N-Q39"A XMWJ/BF:A4PU9SMB*N4@O4DS4\7%D_XM/XWPUK3^(#MC>(C=O4^5LP_H$JWLMS XM_WUBD^"$^)`8>7-MTC@X?@;DX@QH(?U29]Y[]DSMB]_BV3C]G!=ON%BN,KV^ XMC>)V<BD.7$K3F;0R3A9!W`6E>$Q-NFFO>%\K#HNS+,`L_GM_@\%>[[>(V^`+ XM="-.#?)^B1XD'F;/2(&W\TVB"@1\`_K]_P'CU/<@?(0CW>?X_[U]<[@]]3?M XM@_S4P]W_!TV#N1V%F/MF0U5_`A^*3</BN,7&6B=`Y"(``^$QD`4A=48,E),1 XM(MQ0#B*+`-Q:=L`*R^3.XS=[$SX<I&TAYY3+XAIV4FZ5EV%8N=:XL+D!1#GZ XM_2=XY?"U0ZYIXA8'W5;N&(L`Z#>E@);SM5?YYHA;S&1N>1(*E\\@J,)<#FXL XMY?3#6%Z6SR#`F%_NE0#F*%I>#F_NY63`L>67U^(FN44^C</CA_3KEDCWXA0Y XM1[X4H.1%N$J^WA'C5(`QWN[X$]>SD&B0#T<0]P]\:+?>Q-25'9EWY--XN?V: XM;^;9N/+M<_O@W3A).YO+`9RY!^XX)]Y'-_;=DBOA!7B<K3V[YA4Y;.Z.4^:7 XM-_M,<+_/[W9F?I+GX^*X$21.\]1U65*>QXYYFOG"HJ<-Y*AX0<X#FYF%MA0^ XM$9:MB/:F#%7GWKLJ^S?O/.8<T!NP*UK:6"=M,Y_WKKFT#+"-7^!E-J-KGZ=. X2O6LF_C;GT9RX:;T.&N)V<_L! X` Xend END_OF_FILE if test 32728 -ne `wc -c <'print11.c.Z.uue'`; then echo shar: \"'print11.c.Z.uue'\" unpacked with wrong size! fi # end of 'print11.c.Z.uue' fi if test -f 'scope.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'scope.c'\" else echo shar: Extracting \"'scope.c'\" \(14921 characters\) sed "s/^X//" >'scope.c' <<'END_OF_FILE' X/* ****************************************************** X * * X * A spy program to reveal X11 traffic * X * * X * James Peterson, 1988 * X * (c) Copyright MCC, 1988 * X * * X ***************************************************** */ X X#include "scope.h" X X X/* ********************************************** */ X/* */ X/* ********************************************** */ X X#define DefaultPort 6000 X Xchar ServerHostName[255]; Xlong ServerBasePort = DefaultPort; Xlong ServerInPort = 1; Xlong ServerOutPort = 0; Xlong ServerDisplay = 0; X X X/* ********************************************** */ X/* */ X/* */ X/* ********************************************** */ X Xshort GetServerport () X{ X short port; X X enterprocedure("GetServerport"); X X port = ServerBasePort + ServerOutPort + ServerDisplay; X debug(4,(stderr, "Server service is on port %d\n", port)); X return(port); X} X Xshort GetScopePort () X{ X short port; X X enterprocedure("GetScopePort"); X X port = ServerBasePort + ServerInPort + ServerDisplay; X debug(4,(stderr, "scope service is on port %d\n", port)); X return(port); X} X X/* ********************************************** */ X/* */ X/* ********************************************** */ X XUsage() X{ X fprintf(stderr, "Usage: xscope\n"); X fprintf(stderr, " [-h<server-host>]\n"); X fprintf(stderr, " [-i<in-port>]\n"); X fprintf(stderr, " [-o<out-port>]\n"); X fprintf(stderr, " [-d<display-number>]\n"); X fprintf(stderr, " [-v<n>] -- verbose output\n"); X fprintf(stderr, " [-q] -- quiet output\n"); X fprintf(stderr, " [-D<debug-level>]\n"); X exit(1); X} X X Xchar *OfficialName() /* forward type declaration */; X XScanArgs(argc, argv) X int argc; X char **argv; X{ X Verbose = 1 /* default verbose-ness level */; X X /* Scan argument list */ X while (--argc > 0) X { X ++argv; X if (**argv == '-') X switch (*++*argv) X { X /* X debug levels: X 2 - trace each procedure entry X 4 - I/O, connections X 8 - Scope internals X 16 - Message protocol X 32 - 64 - malloc X 128 - 256 - really low level X */ X case 'D': X debuglevel = atoi(++*argv); X if (debuglevel == 0) X debuglevel = 255; X debuglevel |= 1; X Verbose = 7; X debug(1,(stderr, "debuglevel = %d\n", debuglevel)); X break; X X case 'q': /* quiet mode */ X Verbose = 0; X debug(1,(stderr, "Verbose = %d\n", Verbose)); X break; X X case 'v': /* verbose mode */ X Verbose = atoi(++*argv); X debug(1,(stderr, "Verbose = %d\n", Verbose)); X break; X X case 'o': X ServerOutPort = atoi(++*argv); X if (ServerOutPort <= 0) X ServerOutPort = 0; X debug(1,(stderr, "ServerOutPort = %d\n", ServerOutPort)); X break; X X case 'd': X ServerDisplay = atoi(++*argv); X if (ServerDisplay <= 0) X ServerDisplay = 0; X debug(1,(stderr, "ServerDisplay=%d\n", ServerDisplay)); X break; X X case 'i': X ServerInPort = atoi(++*argv); X if (ServerInPort <= 0) X ServerInPort = 0; X debug(1,(stderr, "ServerInPort = %d\n", ServerInPort)); X break; X X case 'h': X if (++*argv != NULL && **argv != '\0') X strcpy(ServerHostName, OfficialName(*argv)); X debug(1,(stderr, "ServerHostName=%s\n", ServerHostName)); X break; X X default: X fprintf(stderr, "Unknown option %c\n", **argv); X Usage(); X break; X X } X else X { X /* file argument to scope -- error */ X Usage(); X } X } X X /* check for different port numbers or different machines */ X if (ServerInPort == ServerOutPort) X if (ServerHostName[0] == '\0') X { X fprintf(stderr, "Can't have xscope on same port as server (%d)\n", X ServerInPort); X Usage(); X } X X} X X X/* ********************************************** */ X/* */ X/* ********************************************** */ X Xmain(argc, argv) X int argc; X char **argv; X{ X ScanArgs(argc, argv); X InitializeFD(); X InitializeX11(); X SetUpStdin(); X SetUpConnectionSocket(GetScopePort()); X SetSignalHandling(); X X MainLoop(); X} X XTimerExpired() X{ X debug(16,(stderr, "Timer tick\n")); X} X X/* ********************************************** */ X/* */ X/* ********************************************** */ X X/* X here is where we would add code to allow control from X the keyboard. We would want to read a command and X interpret it. Possibilties: X X (a) verbose level setting X (b) reset time X (c) save X requests to a file. X (d) replay X requests from a file. X (e) allow fake events, errors to be generated. X*/ X XReadStdin(fd) X FD fd; X{ X char buf[2048]; X long n; X X enterprocedure("ReadStdin"); X n = read(fd, buf, 2048); X debug(4,(stderr, "read %d bytes from stdin\n", n)); X} X XSetUpStdin() X{ X enterprocedure("SetUpStdin"); X UsingFD(fileno(stdin), ReadStdin); X} X X/* ************************************************************ */ X/* */ X/* */ X/* ************************************************************ */ X X/* X xscope is really meant to look at one client at a time. However, X it can easily handle multiple clients and servers. To do so, X we need to have a pair of FDs: one for the client and one for the X server for that client. If either goes away, so does the other. X We need to be able to identify the other FD of a pair, so that if X we get input from one, we can write it to the other. X*/ X Xstruct fdinfo X{ X Boolean Server; X long ClientNumber; X FD pair; X}; X Xstatic long ClientNumber = 0; Xstruct fdinfo FDinfo[StaticMaxFD]; X XSetUpPair(client, server) X FD client; X FD server; X{ X if (client >= 0) X { X ClientNumber += 1; X FDinfo[client].Server = false; X FDinfo[client].pair = server; X FDinfo[client].ClientNumber = ClientNumber; X if (server >= 0) X { X FDinfo[server].Server = true; X FDinfo[server].pair = client; X FDinfo[server].ClientNumber = FDinfo[client].ClientNumber; X } X } X else if (server >= 0) X { X close(server); X NotUsingFD(server); X } X} X X XCloseConnection(fd) X FD fd; X{ X debug(4,(stderr, "close %d and %d\n", fd, FDPair(fd))); X StopClientConnection(ServerHalf(fd)); X StopServerConnection(ClientHalf(fd)); X X close(fd); X NotUsingFD(fd); X close(FDPair(fd)); X NotUsingFD(FDPair(fd)); X} X X/* ************************************************************ */ X XFD FDPair(fd) X FD fd; X{ X return(FDinfo[fd].pair); X} X XFD ClientHalf(fd) X FD fd; X{ X if (FDinfo[fd].Server) X return(FDinfo[fd].pair); X return(fd); X} X XFD ServerHalf(fd) X FD fd; X{ X if (FDinfo[fd].Server) X return(fd); X return(FDinfo[fd].pair); X} X Xchar *ClientName (fd) X FD fd; X{ X static char name[12]; X X if (ClientNumber <= 1) X return(""); X sprintf(name, " %d", FDinfo[fd].ClientNumber); X return(name); X} X X X/* ********************************************** */ X/* */ X/* ********************************************** */ X X/* when we get data from a client, we read it in, copy it to the X server for this client, then dump it to the client. Note, we don't X have to have a server, if there isn't one. */ X XDataFromClient(fd) X FD fd; X{ X unsigned char buf[2048]; X long n; X FD ServerFD; X X enterprocedure("DataFromClient"); X n = read(fd, (char *)buf, 2048); X debug(4,(stderr, "read %d bytes from Client%s\n", n, ClientName(fd))); X if (n < 0) X { X PrintTime(); X perror("Client --> read error:"); X CloseConnection(fd); X return; X } X if (n == 0) X { X PrintTime(); X fprintf(stdout, "Client%s --> EOF\n", ClientName(fd)); X CloseConnection(fd); X return; X } X X ServerFD = FDPair(fd); X if (ServerFD < 0) X { X ServerFD = ConnectToServer(false); X SetUpPair(fd, ServerFD); X } X X /* write bytes from client to server, allow for server to fail */ X if (ServerFD >= 0) X { X long BytesToWrite = n; X unsigned char *p = buf; X X while (BytesToWrite > 0) X { X int n1 = write (ServerFD, (char *)p, (int)BytesToWrite); X debug(4,(stderr, "write %d bytes to Server%s\n", n1, ClientName(fd))); X if (n1 > 0) X { X BytesToWrite -= n1; X p += n1; X } X else X { X perror("Error on write to Server"); X CloseConnection(fd); X BytesToWrite = 0; X } X } X } X X /* also report the bytes to standard out */ X ReportFromClient(fd, buf, n); X} X X/* ********************************************** */ X/* */ X/* ********************************************** */ X X/* similar situation for the server, but note that if there is no client, X we close the connection down -- don't need a server with no client. */ X XDataFromServer(fd) X FD fd; X{ X unsigned char buf[2048]; X long n; X FD ClientFD; X X enterprocedure("DataFromServer"); X n = read(fd, (char *)buf, 2048); X debug(4,(stderr, "read %d bytes from Server%s\n", n, ClientName(fd))); X if (n < 0) X { X PrintTime(); X perror("read error <- Server"); X CloseConnection(fd); X return; X } X if (n == 0) X { X PrintTime(); X fprintf(stdout, "EOF <-- Server%s\n", ClientName(fd)); X CloseConnection(fd); X return; X } X X ClientFD = FDPair(fd); X if (ClientFD < 0) X { X CloseConnection(fd); X return; X } X X /* write bytes from server to client, allow for client to fail */ X { X long BytesToWrite = n; X unsigned char *p = buf; X while (BytesToWrite > 0) X { X int n1 = write (ClientFD, (char *)p, (int)BytesToWrite); X debug(4,(stderr, "write %d bytes to Client%s\n", n1, ClientName(fd))); X if (n1 > 0) X { X BytesToWrite -= n1; X p += n1; X } X else X { X perror("Error on write to Client"); X CloseConnection(fd); X BytesToWrite = 0; X } X } X } X X /* also report the bytes to standard out */ X ReportFromServer(fd, buf, n); X} X X X X/* ************************************************************ */ X/* */ X/* Create New Connection to a client program and to Server */ X/* */ X/* ************************************************************ */ X X#include <sys/types.h> /* needed by sys/socket.h and netinet/in.h */ X#include <sys/uio.h> /* for struct iovec, used by socket.h */ X#include <sys/socket.h> /* for AF_INET, SOCK_STREAM, ... */ X#include <sys/ioctl.h> /* for FIONCLEX, FIONBIO, ... */ X#include <netinet/in.h> /* struct sockaddr_in */ X#include <netdb.h> /* struct servent * and struct hostent * */ X#include <errno.h> /* for EINTR, EADDRINUSE, ... */ Xextern int errno; X Xstatic int ON = 1 /* used in ioctl */ ; X XNewConnection(fd) X FD fd; X{ X FD ServerFD = -1; X FD ClientFD = -1; X X ClientFD = ConnectToClient(fd); X ServerFD = ConnectToServer(true); X SetUpPair(ClientFD, ServerFD); X} X X X/* ************************************************************ */ X XFD ConnectToClient(ConnectionSocket) X FD ConnectionSocket; X{ X FD ClientFD; X struct sockaddr_in from; X int len = sizeof (from); X X enterprocedure("ConnectToClient"); X X ClientFD = accept(ConnectionSocket, (struct sockaddr *)&from, &len); X debug(4,(stderr, "Connect To Client: FD %d\n", ClientFD)); X if (ClientFD < 0 && errno == EWOULDBLOCK) X { X debug(4,(stderr, "Almost blocked accepting FD %d\n", ClientFD)); X panic("Can't connect to Client"); X } X if (ClientFD < 0) X { X debug(4,(stderr, "NewConnection: error %d\n", errno)); X panic("Can't connect to Client"); X } X X UsingFD(ClientFD, DataFromClient); X ioctl(ClientFD, FIOCLEX, 0); X ioctl(ClientFD, FIONBIO, &ON); X StartClientConnection(ClientFD); X return(ClientFD); X} X X X X/* ************************************************************ */ X/* */ X/* */ X/* ************************************************************ */ X X X XFD ConnectToServer(report) X Boolean report; X{ X FD ServerFD; X struct sockaddr_in sin; X struct hostent *hp; X X enterprocedure("ConnectToServer"); X X /* establish a socket to the name server for this host */ X bzero((char *)&sin, sizeof(sin)); X ServerFD = socket(AF_INET, SOCK_STREAM, 0); X if (ServerFD < 0) X { X perror("socket() to Server failed"); X debug(1,(stderr, "socket failed\n")); X panic("Can't open connection to Server"); X } X (void) setsockopt(ServerFD, SOL_SOCKET, SO_REUSEADDR, (char *) NULL, 0); X (void) setsockopt(ServerFD, SOL_SOCKET, SO_USELOOPBACK,(char *) NULL, 0); X (void) setsockopt(ServerFD, SOL_SOCKET, SO_DONTLINGER, (char *) NULL, 0); X X /* determine the host machine for this process */ X if (ServerHostName[0] == '\0') X (void) gethostname(ServerHostName, sizeof (ServerHostName)); X debug(4,(stderr, "try to connect on %s\n", ServerHostName)); X X hp = gethostbyname(ServerHostName); X if (hp == 0) X { X perror("gethostbyname failed"); X debug(1,(stderr, "gethostbyname failed for %s\n", ServerHostName)); X panic("Can't open connection to Server"); X } X X sin.sin_family = AF_INET; X bcopy((char *)hp->h_addr, (char *)&sin.sin_addr, hp->h_length); X sin.sin_port = GetServerport(); X X if ((sin.sin_port == ScopePort) X && strcmp(ServerHostName, ScopeHost) == 0) X { X char error_message[100]; X sprintf(error_message, "Trying to attach to myself: %s,%d\n", X ServerHostName, sin.sin_port); X panic(error_message); X } X X /* ******************************************************** */ X /* try to connect to Server */ X X if (connect(ServerFD, (struct sockaddr *)&sin, sizeof(sin)) < 0) X { X debug(4,(stderr, "connect returns errno of %d\n", errno)); X if (errno != 0) X if (report) X perror("connect"); X switch (errno) X { X case ECONNREFUSED: X /* experience says this is because there is no Server X to connect to */ X close(ServerFD); X debug(1,(stderr, "No Server\n")); X if (report) X warn("Can't open connection to Server"); X return(-1); X X default: X close(ServerFD); X panic("Can't open connection to Server"); X } X } X X debug(4,(stderr, "Connect To Server: FD %d\n", ServerFD)); X if (ServerFD >= 0) X { X UsingFD(ServerFD, DataFromServer); X StartServerConnection(ServerFD); X } X return(ServerFD); X} X X X/* ********************************************** */ X/* */ X/* ********************************************** */ X Xchar *OfficialName(name) Xchar *name; X{ X struct hostent *HostEntry; X X HostEntry = gethostbyname(name); X if (HostEntry == NULL) X { X perror("gethostbyname"); X exit(-1); X } X debug(4,(stderr, "Official name of %s is %s\n", name, HostEntry->h_name)); X return(HostEntry->h_name); X} X END_OF_FILE if test 14921 -ne `wc -c <'scope.c'`; then echo shar: \"'scope.c'\" unpacked with wrong size! fi # end of 'scope.c' fi if test -f 'xscope.1' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xscope.1'\" else echo shar: Extracting \"'xscope.1'\" \(3140 characters\) sed "s/^X//" >'xscope.1' <<'END_OF_FILE' X.TH XSCOPE 1 "8 Sept 1988" "X Version 11" X.SH NAME Xxscope - X Window Protocol Viewer X.SH SYNOPSIS X.B xscope X[ option ] ... X.SH DESCRIPTION X.I Xscope Xsits in-between an X11 client and an X11 server and prints the contents Xof each request, reply, error, or event that is communicated between them. XThis information can be useful in debugging and performance Xtuning of X11 servers and clients. X.PP XTo operate, \fIxscope\fP must know the host, port, and display to use Xto connect to the X11 server. In addition, it must know the port on Xwhich it should listen for X11 clients. Two cases are common: X.PP X.TP 5 X(1) The X11 server is on the same host as \fIxscope\fP. XIn this case, the input port for \fIxscope\fP should be selected as an XX11 server on a different display, and the client DISPLAY argument Xadjusted to select \fIxscope\fP . For example, if the X11 server is Xon port 6000, display 1, then \fIxscope\fP can use port 6002 as its Xinput port. The client can use display 1 for direct access to X11 or Xdisplay 2 for access to \fIxscope\fP. X.PP X.TP 5 X(2) The X11 server is on a different host than \fIxscope\fP. XIn this case the same input and output ports can be used, and the host Xcomponent of the DISPLAY is used to select \fIxscope\fP or X11. X.SH ARGUMENTS X.PP X.TP 10 X.B \-i<input-port> XSpecify the port that \fIxscope\fP will use to take requests from clients X(defaults to 1). XFor X11, this port is automatically biased by 6000. X.PP X.TP 10 X.B \-o<output-port> XDetermines the port that X\fIxscope\fP will use to connect to X11 (defaults to 0). XFor X11, this port is automatically biased by 6000. X.PP X.TP 10 X.B \-h<host> XDetermines the host that \fIxscope\fP will use to find its X11 server. X.PP X.TP 10 X.B \-d<display> XDefines the display number. The display number is added to the input Xand output port to give the actual ports which are used by \fIxscope\fP. X.PP X.TP 10 X.B \-q XQuiet output mode. Gives only the names of requests, replies, errors, and Xevents, but does not indicate contents. X.PP X.TP 10 X.B \-v<print-level> XDetermines the level of printing which \fIxscope\fP will provide. The Xprint-level can be 0 (same as quiet mode), 1, 2, 3, 4. The larger Xnumbers give more and more output. For example, a successful setup Xreturns a string which is the name of the vendor of the X11 server. XAt level 1, the explicit field giving the length of the string is Xsuppressed since it can be inferred from the string. At level 2 and Xabove the length is explicitly printed. X.SH EXAMPLES X.LP Xxscope -v4 -hcleo -d0 -o0 -i1 X.PP XThis command would have xscope communicate with an X11 server on host X``cleo'', display 0; xscope itself would be available on the current Xhost as display 1 (display of 0 plus the 1 of -i1). Verbose level 4. X.LP Xxscope -q -d1 -o1 -o3 X.PP XThe X11 server for the current host, display 2 (1 for -d1 plus 1 for -o1) Xwould be used by xscope which would run as display 4 (1 for -d1 plus 3 for X-o3). Quite mode (verbose level 0). X.SH SEE ALSO XX(1), X11 Protocol document (doc/Protocol/X11.protocol) X.SH AUTHOR X.PP XJames L. Peterson (MCC) X.PP XCopyright 1988, MCC X.SH BUGS XCode has only been tested on Sun3's. END_OF_FILE if test 3140 -ne `wc -c <'xscope.1'`; then echo shar: \"'xscope.1'\" unpacked with wrong size! fi # end of 'xscope.1' fi echo shar: End of archive 2 \(of 4\). cp /dev/null ark2isdone MISSING="" for I in 1 2 3 4 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 4 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Mike Wexler(wyse!mikew) Phone: (408)433-1000 x1330 Moderator of comp.sources.x