green@vis.toronto.edu (Anthony Thomas Green) (04/11/91)
Here is a progress bar (% done gadget) custom control. Please use it and enjoy. It's free for all. Attached is the uuencoded PROBAR.ZIP which contains the following files: Length Method Size Ratio Date Time CRC-32 Attr Name ------ ------ ----- ----- ---- ---- ------ ---- ---- 3872 Implode 1898 51% 04-11-91 11:59 afb0ea99 --w PROBAR.DLL 788 Implode 434 45% 04-11-91 10:35 3811ae00 --w PROBAR.DLG 24 Stored 24 0% 04-11-91 10:33 14ed7512 --w PROBAR.H 245 Shrunk 170 31% 02-07-91 12:48 ff5b7a42 --w MAKEFILE 332 Implode 284 15% 04-11-91 10:35 76be3e85 --w PROBAR.RES 301 Shrunk 250 17% 02-12-91 08:12 ed11ccb1 --w PROBAR.DEF 2557 Implode 1494 42% 04-11-91 11:56 25554916 --w README.TXT 6297 Implode 2226 65% 04-11-91 11:50 d0250d0a --w PROBAR.C ------ ------ --- ------- 14416 6780 53% 8 Whoops! I forgot something. The probar.h that the README.TXT refers to is NOT the probar.h shown in the ZIP file. You will need to make a different file that includes 3 #defines. Simply copy the #define lines for the BAR_* messages from PROBAR.C and put them in a new .h file. This is the one you will need to include in applications that use ProBar. Sorry! What follows is the README.TXT.... ------------------------------------------------------------------------------ ProBar - A custom control for progress bars. This is FREE software. Most of this code was stolen, err, inspired by RAINBOW.C (the SDK sample code) and SETUP.C (the Microsoft sample setup/install program found on Online). I still don't have a very good handle on custom controls, but I am beginning to appreciate their usefulness. Install PROBAR.DLL into the dialog box editor by selecting ADD CUSTOM CONTROL from the file menu. If you've intalled Windows on your machine then you've seen this gadget. It's the blue bar with the % complete number in it. What I've done is made a handy resizeable custom control out of it. To use it, simply stick it in a dialog box with the dialog box editor. Then you simply send it messages telling it what to do. Don't forget to do this at the start of your code... #include "probar.h" and hProbarLib = LoadLibrary("probar.dll"); and this at the end... FreeLibrary(hProbarLib); ProBar understands 3 special messages: BAR_SETRANGE wParam: The maximum number the bar goes up to. lParam: Don't care. BAR_SETPOS wParam: The current position of the progress bar (from 0 to whatever you set in BAR_SETRANGE). lParam: Don't care. BAR_DELTAPOS wParam: A change in position. Can be negative. lParam: Don't care. Bizarre things will happen if you set the bar's position greater to what is defined by BAR_SETRANGE (or less than 0). ProBar is SIMPLE to use. If you have an operation you know is going to take 12345 steps, then... SendMessage(hProBar, BAR_SETRANGE, 12345, 0); Each time you have completed a step... SendMessage(hProBar, BAR_DELTAPOS, 1, 0); ProBar will update itself by growing it's bar and showing the new % complete. BUGS! ----- What would free software be without bugs? If you double click on the probar while using the dialog box editor you are supposed to get a dialog box that tells you about ProBar. Well, you *do* get a dialog box --- but it says Unrecoverable Application Error. Either don't do it or fix it! I'm sure it's something simple - but I just don't have time to look at it. However, if *you* fix it --- please don't keep the fix to yourself! Now that I have your attention: Lots of people are developing Windows code. Let's see some source! PLEASE. Thanks to Pierre Perret for his port of MicroEmacs to Windows. Questions? Comments? Advice? Don't hesitate to phone or email. Anthony Green green@vis.toronto.edu Work: (416) 340-0887 Home: (416) 537-9889 ---- Cut here ------------------------------------------------------------- begin 644 PROBAR.ZIP M4$L#! H & 'E?BQ:9ZK"O:@< " / * 4%)/0D%2+D1,3 \ $@,D M%38G.#EJ>TR=;A\)!@$3-.7VEO>;:L48<,"Q@QCV__\/$!^P+)!K(=8 _ !/ MH(^ _PL&/"CZJ0"IHDT[%R1<N6_/R@W;%J3<LG'KIB$.^J9IQT@_]ZU9NB"O MIG5+]NW=N2X;*B0)$D0P0-3J\"/MA,U#X@[(A+C0 /Q?,. =G18MV' S0)< MY;.5K#;@8 '3O'*!7*>:R[3G))I#!4@7(&& B@$F>W4_0.M<($*K !&)ZT"L M (\7A-IA>&2!>L"X#(;KOB"@?MH[0(H (7*D<#:Y$*K4IT*#2IU*-2O3H@:6 MJ7Z_6A1J@%-5A 9&&]P:5$I3LUTX%&B20E6G;+\P?\#F_\,V%] L48<4*P/ M"10KI&(.$4"Q*@NK8D]SEZN$$MB".^7.0L/*!3GVK5LZS[,%V1*DV+P@@RR/ MYKGCJ;H$>23\LFZ:0E]U2M2HTX( %33329T:?2I &R?*](CV!IIQHTR#'IU* M@,C0 YX >$6/6"$7K;J8O4?'V >S%WO5ZF*C#)'29=G2(<"Z ]/!\9;Q!](% MB@1Z'L,N]K]=!\(S$%Z!\ B$-ZBI%]9_>H8"K'TE<*BXR=1AS6LF@3B/B\I# MD7;-@)P]/?H T5:UMSC\H>Q;/9.GH4)AQI2F?0?8)XQ->P9G\,1&B0\TPJ;7 M*XOVQD:U6X!',0^-&:V-F>,F\+=!2S$U324W-NFQL5_DC>U(?]#BQ]*E@O\ M%*UYP]@<F]U$.I/;!_O%UN<+'KNNN[O&G@-ZNP.J37EKQ8N"]I72I4)=[)3X MRNU3HRZV2SVQ7=(K_]G)X2_.I[SGQ%9!+YZ/_O. \-$S'PCD?6-:#TIX3USR M3-);O8J^4+;*'I!5C+M'*&-MBLCD8.(*CLQ-'1F.?WU-S^_MC2%']D:1??M_ MFP3"M$V! 35G%'!GMCR"9S?P?(IG:CVEHC\ZNJZ<_TJGHN]GCYX^JJ[(76IC M+WA^"G%</W47UT]=:=]*6UQSDJ+!-9$H&_5,U#6NH5O+D5N BP)+^"!*0%P! MJSZSUZ]-FRXN_[%K4^4*,!>:XV ?M.EUYU!Q_18!,O;*#VC/#?!/$CW*FDEY MT1&/3WA[X9-?"(1X<]81CXZX*6^ >G?*PR./>/8$B)V^ 6)7Y^P&!?3!BFO+ MBNVOX-U DBWW=TK>0M74OH^J.XD_@*EP 5/!30-WU@AQ"^GRN%JU-AA6)/^% MP!*+/6-C;57_0NATUQ+WBM_D\0.7'_%'CO+&1PF,ZK@[4+YKKG,:EO?X%YE? M$,,>HYX$M9*BMGA^6#" >3W4R4,P5D.A9<:6R0ZT\:%7;FC/X2Y:I/D=\_4- MDC$[ST]KY:<7N0PO6 +<YCIBFD<,6#?#\0I;IG'C##!; ^A%]#.AP94!/(+< M[M:GR^5[AZ,E!AC:ACS#T0X#)K8(@=D-,(]PM )FNXPLTW4)I^5*;P"E1U6) M<E;<0/RRNH<H97A\0,24U]>,KR\ %%@&0,&!:80FC1\P7./&$7R*#@?0;82S MQP- 3=!W7H"M=PJG"Q&H9;H,+\\$GFOJY;M>?'_]>LM?O<3?5;@ =;W"]@31 M+_]GA^E*;.P0C=<M'D5%EW?P_(LY*LKJ5.%"9,0CK)N >8+WPV'W]E.,7XRM M6<TJ''#,PP^<O@5;XGW*)KF"QO,*\M;O,Z7?C[=.&3]]/<Y%2>=78FT VFSS MZ-NCJX^.?6'RNO3OSUO-F/9(UB.\;WY@=+D,=XA_]Z!<@SO,MQO0R=!;]N(U M9XR-2!B:CVK0ZG@'7"ZN\J*0[ ?X1'H]F/7CU\9F_?&^BF#9SFH7XSD=V](= M5UD/#*C$9_N:8V?EL)S L0\/** V[?A*U\[GV!L=>Y]C3R$\P ?';NO8(QS[ MM'-/<.PYGEW"OQS[A&-']>Z%CIW+L1LZ]F7''N+8G\SF &<<.R0$X:2G MV6D\NZ]O/W'L5@+6 %%\R[&W.G9SQY[CV,%<[5CB\E-W,>;CO;N39!_R%\EM MR7[EV$D]Y5N.7=RW3SGVA *>_W*VJSF8?7-Z&[.C[?A\=_N<<:]=\)])MYD# M(!=8AB\YDVS)D@ 6AA4,,X;+&,@A&8/:1D5,!- 43^.P"01+LO+DZ;3IU*,^ M?0X%*;6J4ZI)FQ8%@=&27XH+HU)MPH0)@\(DTI]+-^S8M2#?VBTKURP;%%-T M0[9MG;$M.V:Z9<]@#Y)L6KMIR99I:")O7C!PS0&N;M^$Z"3:;^N>17/T<(Y. M?+-OY4!;>U_MMLWQ=-IM-".V*2VWKMN6=--,U[U<.>/F0OF_D #X2*"$#RKX M/5\-$- SG4#9$=BRH<F!"BHB8>T8K'D9:SH(0*KC3_=MFX.$HK+",0(N)OXY M\JI$GIN1IX6FI9-]F!0^\].6'?/#F_]UJ&A#QZ=X4G\R@P@W$(G@J_SS,__T MF6H%8J=.N.;3DQ'OLBS9.M@?!=@6 "+HD$ZC^0H4\-,E^.H"GZO!IWQ8=E9< M\+ENT\+I.R?T[&::-KX-JD&>?:,]B+NSXR[R]48^7Y-/3T6#Y,K/LX?E_$// MD6%A4$L#! H & &)4BQ8 KA$XL@$ !0# * 4%)/0D%2+D1,1PT" M 1(C%!4V-VB)FML\!082$T3%]I;WH4I]*C2HU*E4LS(M"I)HTJ!,GQX%,;R# M$GWJ=,CR9@JRZ5.K18,*T>Y3H+=4(LL])DP6PSO'\-^,0?PR<394X%]?G?J5 M*-.C1J4&;;*\^31/J$^A5H72O846/9K4B?$&"2)X#[G65.#5M18)5>Y;H6'E MBOA_&,TN<B[=L'33CG'^*?5[:)'Q751*,#T4:5*F1*J7^+WC.)#!!P4YMD[_ M?MO&>+]U2X=:LP5I]JU<D'"0]UFY9>?.!2EF7,\AYS'( ;%,&N7 %IJ6#K,. MZY9,MDY;=@RV!J&LZXY="\)>GRU+%VV9=RTV+\@@_1I-T'6\C]SKLF[DN0QY M0'Q#'IAGD"50NVGGNC#7<K;Z6Y=ER=;!YC.P 3'.&MC ?KK$_I,2)?H%>2&[ MV+ITM!7<*>2-KSH5J="J5*FD+V::BALJ"S6$RH8T!X?1Q,N(8M+8!D\5S=N5 MQ),M$^9VFQ8.FYLNB.<WD]36O#\WR+-OM#<(,W?;LBZ0<AM( 3%-&TB!/15- M%PI;YWU;5XX\Y+DAN/D-;D!<H\PX\$V$> 5/4$L#! H #U4BQ82=>T4 M& !@ ( 4%)/0D%2+D@C9&5F:6YE($E$1%]/2R @(#$P-0T*#0I0 M2P,$"@ $ !69'%D)Z6_^J ]0 @ !-04M%1DE,17#DO!$31HX+ M,FS8@- !(N# @BX&JFDHD*!!,F7,-%"0@$T:-VM >!13Q@T=.7E6.+3(@N+# MBPE!O C"1$<,&RU;SD'(9DR9.ROFC/0)=.0=F4Z>$&FY$B)&C1SEC'%IT86< M,G.H.DVX<6-3@Q(7:C4X]:L+-!L3C%'88FJ+.B!:!)GCYFB+(W/L/LG:XLJ, MN%K*P(E+Y,N5)$Z(/+DRA;!AQ$28,!GK8LQ&4$L#! H & &)4BQ:%/KYV M' $ $P! * 4%)/0D%2+E)%4PT" 1(C%!4V-VB)FML\!082$T3%]I;W M_Q<$"%7J4Z%!I4ZEFI5I48 0X=\,8#V!$CZH$.!$@*L! C*O$R@_0H!D 7 _ M4,%0Y;X5&E:.]<1@W<M8UT%!CJT[E^[;-L;[K5LZXILM2+-OY8*$@[S/RBT[ M=RY(,?%[COQ4(M_-R-="T]+)WF'=DC'?:<N.*=\@_'?=L6M!#.NS9>FB+<._ MQ>8%&419HW%6Q_L(L2[KYG]6^>]G_NLSU1.HW;1S7<QO.?7^UF59LG6P]U& M;0%V!.@08)KW#P@4\-,E^-,%?E>#7U-%,[_./MDR\MIM6CC]FBZ(YS?3;/P& M=8,\^T9[@[C7;<NZR)\W\ON:_'HJ&J2J?.=]6U?.?^2Y(1*G4$L#! H ! M )M!3!:QS!'M^@ "T! * 4%)/0D%2+D1%1DR2")$21$J6! F@2'DB MI& #!46P%*&2!4H1A%>2."'RY,J4AU.H5!&"\$1&)R%'NHA8Y,1#(D6F#)&2 M! J5)$^<)#@!1<Z;,W+*S)D#0D@8.2#&O'%#QR<;$"U B,D#(@A3-$NI4G$! MXDC0,FY<*G@XY E,A$V>6"D21 B3(B"())%9D$C;MR 4%F'R) B1ET&H!$&K MEJU;N%,T'L&KEZ_?AP\C0GDBA<I'!0FN%(&"$$@,$%)B)H'IA(J3($V*/$SH MTZB<)&[,O$D 1,;JGF]<3Z&3ATT9VC-NMSYJA$V8,W-HTQ">^^@5-V2,N*%= M@[EK(FS.2*=MXR%02P,$"@ 8 '5^+%A9)5276!0 _0D H !214%$ M344N5%A4#0(!$B,4%38W:(F:VSP%!A(31,7VEO>ARGTK-*Q<D"U!!@4YMNY< MNF_;&.^W;NE0;[8@S;ZQWG"0]UFY9>?.!2EF?,]UV5!!\*:*-DWS$GZC4HL6 M!3GWK5FZ=[)WF>S>](W_!@&]0=()'\2:;%D0V@MY23O;LFY9@BPK5P[Q3NMV M+MPT[IN,L\X+4FK0I$Z%/KWJ<BA(%/%K?4\ENF1]AVT+AWWM]Q3/.JR;\SVU M*-6J4,3SIFG'.%WR CV?6Y9N7;@OJ)UN6+9LUE;8Z^[7R3^B&N13MVRV5[+B M^DF,?AKQ)U.]3_1OM&'M[.^P((BWG*+[[!MV!7WPR]GD3\B(<^)NL77>5_^J M=K%ESS!K-\+[S%?]%@37A^.NRXY-&Y9NF;=>9JH&@;_+FJW+ULV:[P)^12VA M2GTJ-*A4ET29,LEK]D=4DIG?;,XN9_T6CY1K>=,9TY:\9]6_@.ZQ=+QE4*)$ M00ZM.I7JTR;&^ZE3*L**?YN5,_7XI]DT9K^-D[H.G#S)FCK/6GV"J77;NUWI M5Y+76'UWCE*A?=NZ;=BQ:(8\_NF&/5-7RT=&/QN6[!DAU=NG>W*.LP*78MG6 M+;.&T&-IW6CD>0DFCTV!UNQUFR*W''837O1_I<ZEY4&+*KV,Y(-=D[E2-"FD MBML_K=ZR8<5$(3(7\0V5AOH52ZIO\AS*IZ9J7^>>)XTY=@WTG<LP;A;,ZLTQ M-34D:,<&EBA&EQG\B+T-%!^&K.*Z_FXVC?^9Z7DG[[GU-WCO2$ZD\N;:8_)! M6#<OJZ_6+I9P.6];E(QSTJ6+^YYP!+0> ^>BZR)V=W6^2[0BK@?NQ'='"\6Z M,TTK%F1/D$S?>+F2+W2J=AO%>U:[S59DRAWS&3V,WRO'C2"IR^!GT0C[*G@$ MNJ#M<;'6GO$BUC/H;CB=DVS^HG6D#\;YE\A<;K;3HT6P_2[4,*]U'7N./1X/ MGNL+-0:V>*,VSRH];S2KRG<AU1.RB2_BK,?D.KLFH3Z=4@WN#E7KE52E;SBV M47?J-)0S3_,REHJTZ>79#B-/D<4L<QDS]@1,\#*&M[LQCAY'@YAH4:94@R2- MD,F;G)\QK4B:<JJ'2"]*'UQUZ36OT]H!%M9 ,^P.<]2^&,5ZCN%,TX\&T!:[ M3VN&=G69.BJGEIC5%C'6GKJ<K-AHC5F1L<U Q@+)K,(4N1+M;*2<=-9>DSM% M/O,"3O.?FK0I5*9%FH5LK3:V3S6RTM*>;CE)+=<UR+5N#*WF!Q!*5@3F>VT9 M9AU3YDR:-2+[9>%L\B@M2)=/@=TW6;TB79-W%F C-:_]SD+KY:X7R=0%J]EW M&:()5.-D;F/B8ALPULBV[1KEEB"3X6Z3 <5@4G72S<0YH%15%:'K$[M7MI5S MT5!70(PL]9U8P0V)%EKUZ-00QKMEB^!['KOB=^YNMF0V\65$?0='0#Y*-4 E M<D&MH7^0(INTUT%D9\,I^>:7HK!-E1Q-)0PIUM L%$ !ME"?M\^)JC@_, ^* M8]7X9,;>Z5 =II)SXADN5='A9-6*NWX6Q I[JEBZ5?2'DM58KJ?IV)E'6%=U M\W'_9C$'"#W(O<I[GM=%%KMB:4$86N.<36PUR\N_M=<YC2?Y0V2"MW'[<OH4 M:QJ8"PWEV_:)NLQ+'[MAK%2C"7:Q,)(WKW9UOUW#R$$*$@D8J]*3A6NE"J&N MHIP$X41S]C "?\,4Z7295IW*<3S&8A:C#QE""=S)92_-GN2=HH3FO.F8ZKB: M*5LJ-IV /74%6?U&[<!3DOFWJ!L.4"&R&2*P2MAEO++!&]ZKN+9NI_D@N5TP M19!NKYVS=$)-6\;0$DKQ>/D. A8&%*KCJX[J16#6UELY$<RC3*R>PW4X;M%J MD2N?>3K)'Y2L'?A=]L>J2C0K^W08FNEON&@>5G1[&6:5N378,JB;RKF;P.HC MKG,WSON,\002K,#5YZYBS1,6Y7:=S#;GO0:0&R7-F#93%/RF";,E3)PX;U1O M)%NM.J\Y\V;+'-4[!T-(4$L#! H !@ & $1>BQ8*#270L@@ )D8 ( M4%)/0D%2+D-A"GL'!AL&NPQ+ PD'"PD+"0<6!P@&!08'!@4V!Q87"PH&" H+ M!085! 87!0H(!085!@HE!@@'& H'"@@+!PL$)00E! H&! 44!0DT!P87"1HK M_/S\^_O[# LL"RP+/ LL*ZP, 2(C%!4V-VB)FML\!082(Q3E]I;W,6/%$CB* M$+.H.&:L_P6.&G@>3][K\WE'LSDG=;JIXX[G =1GJ$/2O)7V%6AT-*_+7OZ- M_5BV_?RU??NE;:]N][K^YK/Y#$WQ+91!])U.!8X:B$^CW$_]WG[M.N]_'8US MKM^K^ #$9RA#47$P,9G^D(B_COH>O^95PE(YWK"N&\=RLAP9Q[N6KO,J<=0: MK8AZ^O[S1WBVZVG*]?6[=AW7<NT'7@-"K=$*C^7^3/X1.^->U/?GHAR9U&WC M_QRKP]MOB^O^D9,C)K;?3MB"9ZC#"&^H8R2?Z<CAVV^-H1ZF2Q9JN78H_3_J M]KN=B%$&4:/T#7ZKJ!CT];O@'!'W_T*2>YR4%+G;";.=-!Z]/^P_*7 [B*TW M]-:W.]@<NQ],[J-^U20:IWI2H_Z_59NI45V.2'&Y4Z+*IG]5(KTNSW(U0)+7 M#U%FN0[1_Q!IC4OW!".8@T^%.8DR[@W[;]RXE:1M3WVV]A+NO%MWN21TVD]* MZ;5;G59W,(Q[EFI'>]E:^Z".=.C!L-6%^DB/S]^A7J1CUD<,CG4)1GCKN1_5 MGR)MGS1NC\;]SW-'/NHI1V&4R+WAKUC\_#\?ZU4][OHO SL_U3O_HR[Q2<_V ME/-_O]N+^D^,1[L/P:+BN$GC0:\ELA-'K;\EM:U_W,X[:L7=&I/\K9'C\0J^ M<>OA\^OA\L-[G*_.<_#^*VE?3=Y&Y=GB/HU*I.S<4#W>(=H=_X9?[D-PCKO& M7TNC\@MII@ [KL :M_&LMTGLJ/..6V\TDC=N^UXB&WN)O&_U7XB[\$?.G^3F M%@0CIX/H',\WNC2W^TD(1G$-%NR;-^#15 ZG^P8#;3>=$@;-AVU#7P='A.>\ MZL]R=^[&(G;M)?;[^2GC?OM5NB:6A%[9F^AA&J8T!)HO(K-V]Z?]J.@#S=) M([YANTWBP@V5P.E9,VASZEV]CJ3G.A;7.^3,N=P5<H_."RAG/PFY?,YS32': M(DLAV<^KU!LX3[[:;R][(Z';#"&;-[4_'H49,;63V(Y2 %%<.S&GA63/E.#% MN:KN5SW%#1JLV**6,W16@\@D*:*V[]@MYKR&1]G,+4![PTXE9J],M^X;U M<>Z"N#%C_O*3</]UWNX?;VJ^'[&77]U_Z5F7[Q\/QIA7D33;[7FIAP>>\[:K M6EGDYGHXDVMS7T#D4>[PE&LAE=^"PD(R/P6@3ZQ/^&-B3%SMTE[BU](F68-M M;/_\.,$XNQZ,@W&<?,)#(&W#4[]6$$\$VZT[_.)Q%2YF?;,(FRJ.Q7YXO^*\ M\ZXMG^0B'B4U8;2?^T9YIK.4)%#OE^A0*407BTWT=F>/$9@'2<,+Z^&G_2[T M6J@Y*2B(F0-UR'#3* .H@Y-ZWE8W8C=I'**)[P\!C&?4'R0EO4.B$[V8C]+] M6?F?Q*]-4_*!]1R3#[1*,_G Q+4>L'&1ARKD( _:9S[J=!XI["=YF:1 TB,& M+D65X5[:SWPNT60.+7#9[F7>CE\XO&NFOFV-&^ WHT$%#<$SE/T)>@8?[Z(V M"7H&:VJWV\?2\?[53%;<A;BZ?T55[W,T;@-=^?1'_7&['3>^X3Z#> 70R$]+ M4VF+&1+?R#M+:TA'Y[.N/2-GB7 <KCM.,/*Y5D;SMF)S3_O]_:ECW$A+_A\, M1Q''G4XW<@'6!?--OH_9\LKTTEQ6;+4F?]2.&*7S#COCR"% \<.@.(W:!V#= M]ULXWF&JQ0^S+7M:.R![T2[B1U.)T]BBA>=;G'%.W=B##-%H^GWI?'M@?DZL M]0KIO=< 7+.=FUOJTTBH;OM\U(7=1M&QS"XY\J W[$8.>P)Z.CI7T$LN?*J M%(_?B9I:F)N?FY^3F<E[FTF!N:+\?(,K6)0.MOFZW!M-I3#D\0V8"V=ATD.2 M92!3"V7CKV-RA/VJ.R8>^4TJM,TTW_#7HI<*=Y-=B%.E)!B)\5XH=C66>+2< M+B_"VD\:M?J#7DJ71ISE%.:S"G_.<V]X&O^U]$#5AHQ>/G\K/\C<<@O?YL8" M9=996-6SL5T/0<9\;V'4*+UA_B>R5*V4_*H9C!YC=RWX(<C6UG^714CX\I?] M._Z$?RT:QO$']JTUZEQ%'!?(WWVO;WKJ5U%^S<[,9^<7EJ]+17A?X0F%E_;- M=]EK* _S$/0GT[#BP[BW];**83</1CR'2?Q6N-)-I9==TY/S-TKA"C_3B:BO M^9@^%U@=9.M:SMOJYJ1:[/^1,]5QOJ##LD,B,1EW@)%;(^6&FA<?^:HO%>*! M0SI'N;ETG<1 .IAZ?)O5T\CMB*,H@_X0>DBR0ZTA'=YK8[-I*CQL/FA2^*;^ MY4261R 1!F_0^_<))1Z"5B<IVWU+'4$9<0*7@QZ_X:"'$P3 4H%:V9K_IO05 M\SB+!2$Y#\^J(8<MOAA'_3B -WWC-COZ=]KG\QJ,K+E,S07=34Y&\ 82V.H: MSWHA^3!MKGLP'$;LADEU@^@97L^Y5PNQ9B]7>&YL@V(]+J.._ 0CE@N6KG$U MVVI'FAU"[$QNT$*HJVXGKBXGO@V>.F/$Q!5TX:EMGGP^!O[Y&"2?C(%_,@:Q M;QQLHK/:?P_,(_-8U8J@PZ/*S1.'<PK-S5<UW$2+(<O@NP*R<!7+?4E2S'Y( MK1WS1D/0X*)6\2[!2,6Q 0WS^2(G0F< &A&ZBER#$;[#]6LMG4\XAV]>_<T] MO+O#PHO;3W;B[:N7U)3"0H;6 M](\C^ 072#H8N"IE/W\.@J+NW7%I5V*[3^ M&R<?K]3]2GB;^:4_IG.<*JOLU_I(U!0\'^-Q9B-/Z$,9)V[V8O@13EC*^537 M0BC?HLEDZ36D(%>=._D)SY=4Y^SK+NP1^FNNIJ102P$""@ * !@!Y7XL6 MF>JPKVH' @#P "@ " 4%)/0D%2+D1,3%!+ 0(* M H & &)4BQ8 KA$XL@$ !0# * $ ( )(' !04D]" M05(N1$Q'4$L! @H "@ /52+%A)U[108 & @ 0 @ M ; D %!23T)!4BY(4$L! @H "@ $ !69'%D)Z6_^J ]0 @ M 0 @ J@D $U!2T5&24Q%4$L! @H "@ 8 8E2+%H4^OG8< M 0 3 $ H 0 @ >@H %!23T)!4BY215-02P$""@ * M 0";04P6L<P1[?H M 0 "@ ! " "^"P 4%)/0D%2+D1% M1E!+ 0(* H & !U?BQ86254EU@4 /T) * $ ( . , M !214%$344N5%A44$L! @H "@ & 8 1%Z+%@H-)="R" F1@ @ K 0 @ WA( %!23T)!4BY#4$L%!@ ( @ N@$ +8; end ----- CUT HERE ---------------- Anthony Green green@vis.toronto.edu