help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Multi-Plot-Windows at last! A contribution


From: Joao Cardoso
Subject: Multi-Plot-Windows at last! A contribution
Date: Fri, 20 Oct 1995 23:32:03 +0100

Hi,

Here comes a contribution. Comments desired.
Code is at the end.
Enjoy,

Joao

Joao Cardoso, INESC     |       e-mail: address@hidden
R. Jose Falcao 110      |       tel:    + 351 2 2094345
4000 PORTO, PORTUGAL    |       fax:    + 351 2 2008487

#
# Multi-Window-Plot
#
# Created by Joao Cardoso on Oct 20, 1995. address@hidden
#
# WHAT IS?
# 
# This package allows multi-plot-window (as opposed to multiplot) under octave.
# 
# It consist in a few new functions and in modifications to existing Octave
# functions. The modifications done are generally minor, and are done to make
# the new functionalities transparent to the user.
# Note however that Octave builtins `gsplot' and `gplot'  can't be modified
# and thus the new functionalities cannot be used with them.
# There is also the possibility of give meaningful names to the plot legend.
# 
# WHAT DO YOU NEED?
# 
# You need a version of gnuplot that support pipe input or standard input
# redirection, such as 3.6b188 (really a _pre_ 3.6 release, patch level 188 -
# Mar 1995). I have not experimented  with a vanilla 3.5.
# If your gnuplot works as `gnuplot < command_file' it should be OK.
# 
# This package works through pipes, creating a new gnuplot process for each
# window. Your system must support named pipes and the `mknod pipe_name p'
# command or equivalent.
# 
# All Octave functions that need to be modified are in this directory, and
# should be found by Octave _before_ the original ones; don't install this
# directory under the script distribution tree of Octave. You should setup your
# LOADPATH accordingly.
# E.g. my is: `LOADPATH = /u/jcard/octave//:/usr/local/lib/octave/1.1.1/m//',
# and this directory in under `/u/jcard/octave'.
# I do not advise overwriting Octave's original plot directory with the new
# functions.
# If you have any doubts about a plot, start another Octave, set
# `LOADPATH = /usr/local/lib/octave/1.1.1/m//' or equivalent, repeat the
# same plot commands, and compare the two plots. Any differences should be
# reported (preferably investigated...).
#
# DESCRIPTION:
# 
# Basically, if you use the standard Octave's plot functions, you will notice
# (hopefully) no alterations with this package. When you need a second plot
# window, just issue a `fig(2)' command, and a new plot window will appear, with
# all further plots directed to it. If you want to revert to the old plot 
window,
# just issue a `fig(1)' command. You can use as many plot windows as you want.
# `fig' without argument gives the number of the current plot-window.
# 
# If you want to close a plot-window, type `close_fig(n)', where `n' is the
# number of the plot-window that you want to close; with no argument, it closes
# the current plot-window. You should open plot-windows in increasing order;
# although you can reopen through `fig' a previously closed plot-window, in my
# system this does not work, because of a bug in Octave (I think).
# `close_all_fig' closes all plot-windows. In this case you can reopen the plot-
# windows.
# 
# `gnu_i(string_command)' send a command directly to gnuplot, and you should
# conform to gnuplot's syntax.
# All new functions use this command; you can use whatever gnuplot command you
# want. If you want to plot directly to gnuplot, use e.g., after having a plot-
# -window:
#       
#   tmp = sin(1:0.1:10)';
#   tmp_file = octave_tmp_file_name;
#   eval(sprintf("save %s tmp", tmp_file));
#   gnu_i(sprintf("plot ""%s"" title ""This is a sin()"" with lines",tmp_file))
#   gnu_i("set title ""Voila'"";set grid;replot")
# 
# As the `set' command can't be disabled, a substitute, `gset', is provided.
# E.g. gset("set nokey; set grid; replot"). Also, `gclear' replaces Octave's
# `clearplot'.
# 
# Also, `gpurge_tmp_files' has the same functionality as `purge_tmp_files', as
# this can't also be disabled. `tmp_file_name' is the substitute for
# `octave_tmp_file_name' for internal use. You can, and should, use the octave
# equivalent. `strntok' is also for internal purposes.
#
# The `fmt' option of `plot' has been extended. `fmt' is now made up of two
# semi-colon separated fields. The first is the legend for the line plotted, the
# other the usual option. E.g. plot(sin(1:0.1:10),'This is a sin();b+') will
# plot a sin() in blue with crosses, and write the legend `This is a sin()'.
# If no name is given, there is no necessity for the semicolon.
#
# POSSIBILITIES:
#
# The mechanism is general enough to enable using several plot packages
# simultaneously. The only requirement is that the plot programs accept commands
# through a pipe or standard input. The name of the plot program is obtained
# through the `gnuplot_binary' command. If gnuplot_binary is set to another
# program other than gnuplot, before a plot-window is opened, than _that_ window
# will be driven by that program, while the others will be driven by other
# programs. You can use `gnu_i' to drive the alien program.
#
# IMPROVEMENTS:
#
# First, a user level `quit'. This is a must, for calling `gpurge_tmp_files'
# and `close_all_fig'. If you forget this, the plot-windows will not be
# destroyed when you leave Octave. You have to `kill' then by hand.
#
# Better handling of back-grounding jobs.
#
# Correct the problem (bug?) in `fig' in order to avoid the deadlock between
# launching the external program and opening the pipe in Octave. If the pipe
# is opened with a "w" flag, the open will not return until an external program
# open the pipe for read; if the program is launched before opening the pipe,
# the `system' will not return. Opening the pipe with a "w" would kill the
# external program as soon as Octave closed the pipe.
#
# The extended `fmt' for plot and the `hold' functionality was done very
# careless... They should be fine tuned (but don't rely on me for the job).
#
# Use pipes to send the data files to gnuplot. It would be faster and avoid
# the problem of having tmp files. In my system, pipes can be only 5K long
# before the sending job gets blocked. One had to send the command to gnuplot,
# and only after that starting to write to the pipes.
# One would dynamically allocate more pipes, reusing them after use. Attention
# to the `hold'! Ah, a serious problem! gnuplot does `replot' by rereading
# the files!.
# This is very promising... Does anybody want to do it?
#
# BUGS?
# 
# The functions `contour' and `mesh' are not completely converted. I am not
# familiarized with them. However, you can use the `sombrero' function, because
# that part of `mesh' is implemented. If you convert these functions, please
# e-mail them to me or to the Octave mailing list.
#
# Of course, there must exist BUGS. I hope that you use this package and report
# any bugs that you find. When the frequency of bugs start to decrease or cease,
# I will put the package in the `Archive of Octave contributions', at 
# `http://www.tsc.uvigo.es/GTS/Octave/oct_arch.html'.
# 
# NEW FUNCTIONS:
# 
# close_all_fig.m       - close all plot-windows and terminate all gnuplot proc.
# close_fig.m           - close the current or specified plot-window
# fig.m                 - creates a new or makes current a specified. 
plot-window
# gclear.m              - clear the current plot-window
# gnu_i.m               - direct gnuplo interface
# gpurge_tmp_files.m    - purge tmp files created through `tmp_file_name'
# gset.m                - substitute for `set'
# strntok.m             - internal usage, retrieves a token from a string array
# tmp_file_name.m       - give a non-existing file name for posterior usage
# 
# Partially modified Octave functions:
# 
# contour.m
# mesh.m
#
# All other functions are modified Octave functions.
#
# Enjoy it,
#
# Joao Cardoso
#
-----------------------cut here, uudecode, gunzip, tar ------------------------
begin 644 n-plot.tar.gz
M'XL("-P>B#   VXM<&QO="YT87( [%W[5]O&L^^O]E^Q44Z*5(QK^8%OH<DM
M):address@hidden>GC27R/+:J-'#E61C<WJ^?_N=F=W5R\9  ?.]B702+.UC=O8U
M\YG97<G?&KM!_/TWCWFQ=J/;Z;!O&&,MLT&_;+LI?L75@(!&N]DPM[L=N#<;
MV^;V-ZSSJ%S):Q+%5LC8-W_:5CA8D6X4!I/Q.AA:[^6+_H_BT(^#SW7O,<HP
M&XWM=OOZ_N^VFM3_9K?;AE$ _=_L;+>^88W'8*9X?>7]/YSX=NP$/H/>9R^9
M' address@hidden'2.Z+:(J-0\<?00H^MD(K#L(:<V+NB;0ACR>A'['X
address@hidden<?,#Z<V9?P+T=\S address@hidden,W1$DO\*K(#M0R\%
M4<" XV,[9LU&C9D__-"I,^H_B/FI;X5QW?%Y9/OU<0PL6<#XT/$'4"GV$NK0
M-':K56?(=-T.W(GG1[IE8(3)OOV6^>P9W!GL[[]9-OI': FC6A&-].'C;K4B
MJEGE/C!8K8Z;$&[IOK%E[A)MGRA"EC$4RLS=2N4YLZ)HXO&address@hidden)F!4S(%'E
M;L1E6J"R91J;0$?2[D-@'%B1[3A0!6!>=A6/H4'UOCXV=\9- RL%&51_5JNW
MZW\Y_X?.Z''F/EXWS/]FJ[F=F?\FS'\3TI?S?QU7,O^'-$M&NISQZO&#_U$$
MG&:FM3/@?HSS,F3!D%W"W HNV2=_H\;LD%LQ3'address@hidden \)XY40SI:\R"
address@hidden<>=9GF0!)V9,PA$A)I,X.AT@(9X8/address@hidden:.':W9-8JL?D0
M F/D!GW+9;\<O3\_.3PY2&[.]]^?GAX<]=* -X=O#X0L>29XU345IZ&\2$B\
address@hidden;&&>TG.DD.*QPY)#T: "!83:G+#XC?$AJ).(F#"XC7:4VV";)GTKL
MC<^'CLM1BLC;<]_R.)"I+#"5#TBR;K -9+<2S:$[/#T:@R"/A[KF??:# 7L1
ML;%62U*C*$I)PX#"H12,N9_F>Q%IM21Y3;O<U(QEY('PCTC]U?<#/OT^CN?L
M6RAGY$^PW\_[#K35O% address@hidden" CR5]<T" _#(-2U$Y=;$1<CEN-8GX0\(C7%
M_YIPW^8U!B(ZY!-,Y 81C"F9Z ]? SJRST3[YVI+77=IA3Z,<UW[F=L6TH"9
M8M$8M*:<]2>C&LV1B.:(address@hidden'EHZ#I46*]LETI5+4N0ZKL8T_<!;"'&:%
MZ[Y-NT#PKOVK&JRR?%!#D+^;% )\G#LI.5!U+'9BJ+BFO:$&82\&FJ;5?".=
M/%GE]]12]?_/)?4_-?AC(8";\'^GO8#_S4ZWU/_KN!+]+Z;<Z-SV!D+A+P1$
M,,-0/J$*EH("[@' #D)GRJ,EZEP$!9X'FI]](E(;ZU/3I$^?%=2RBD2!5-"^
MPT%&+NG%#(BOAU(@#0<U!C(.] "(3&address@hidden>IPZ$ZB"address@hidden 
O&G[N'5EYS_'H\N
M'LT N&'^=UHM4\[_%EC^Z/]I-IJ=<OZOXWK.]H/Q/'1&%S'3]PV<="V:>FTQ
M 6%V7OCLMSH[ (O5AYD+_WH7 %L(A\ OV+(Q8AL!;.HBA40YF"SD8/$&PQCP
M$-]E\V#";(!!(1\XZ [H3P![ 0X" ?$]H"T/Q<(< H#&Q!^ ?8$2).:A%V$9
M^ #SDOW"?1["U#^9]%W'9F\=F_L address@hidden"R%8(#G0>8,<G$D.V)L Z%HX
M,7<9=R!%R*8\C% "address@hidden@$NP;,:address@hidden>(TZ4(MT\H,$$$BGQ> 
MB(1X=% <NB[K<P; ;CAQ:P#_8O;;8>_7X_<]H+-W]#O[;>_T=.^H]_LNI(TO
M HCG4RXH.=[815$)_(>address@hidden>G^KY!^[^?#MX>address@hidden(R]
M.3YE>^QD[[1WN/_^[=XI.WE_>G)\=E!G[(SS&UH1;3_J"6BL 8\MQXUD=7^'
MOHN -7? +K#>(;<Y"/X!LT#&C^<W=Q#0L-P ;#^LHFR]75 address@hidden:4/O')[\?
M'OT"G!Z2]5ACEZ$3<Z5VL"^!RI+>K+'M;H>]LZ*([4T!NN];7C]T!B.X?;?'
M&DVS]4.-O3_;JS^8^DDT)\I.IL]J# #SE8%>JTEDC?A.,0(+QO:WW"C8(=,5
M/6B>XP:C67('2>$O_*NQ<>!:88VH# (/;.L $/\DK &9].IC$A!A3AB!+A)$
M1Y'X!9N9?F>NU><PZN;R5T#I*J#MO,%I"I1_!6IP)K XQCO1N6?!Z)XQ_<K(
MV#7?P<5ZOQZ>L;.#_=[A\1$[.NZQWL%9[^ U=)L5VQ?,YS,8R&22*7/G,@C)
M_L?LFC0K*@)K$,Z_< 8#[K<&.#  6EBQ!=6; [\N-KX(C2;AT+(Y&469K'X@
MFTBD\@/TLWD<>+=%R-3AEZ!H:JR%_0O_B,(* YE/81!G[! <]F T716MW:*]
M0MA(0S-(*R3%ZI+9+KJ/;%$&address@hidden")\\T$HH+RPFFEY3.0FI,*:L
MW+3O6D:VPZ;<1O^B/C/0IYD)F*N ;)<*5F8NN7CA[RC&86LH<VR>address@hidden
MR"address@hidden<]EF/address@hidden)('''H;J1THZIN,=\%(BWU'1>RF$5<X
M9J]X&$2"HQHE,#(I/I,7-GU&&>address@hidden)FY]35E;Y3<PRXHWFP$+-IHL4[
MUS\;P$@ @U*5:1K+4C<Q-=Y^SD=_WMS,/"-B%"[O'OK-<=Y$7,@7FT0NC(:A
M%:address@hidden:<address@hidden"7HU1JH0:!R"/+2\3\+#120J-V(I&1@@X"CM'"4
MAA$Y48!?7=6KU>LGQ'!\LZV/8Y5:address@hidden".!N>_DR>address@hidden'M>T%T-&_Q!*
MSW3'J,WU/XW:E>[4_A3N'-$LN3SH?B'0CC%#\I- .,)N,0_9/Q(DJB.R) H"
MY7;B9(4L8'B#Q6^9"X)!"814-C#F12-H;RD<DAFFA /V7 0,(>Y)9RU"*6VW
M0$)RPW2R6C+S<B6QN0$\ H%,ZTAYE0U4,FF%7)LA4VR>%":D442A5ZN%'=Y4
M,Z1)M4K"6 &1N'0!_=-+VG\66,E/9?^U6NU6:O^UM\G^:Y?KOVNY2ONOM/]*
M^^]>address@hidden)\*,%-^)@ address@hidden KW<_ODA",3+J_DIG(
MW)1+II31=3PGCD0+_(9=X >)R0%X4*SO6I,XB&S+18!)([U@)[Y2B%UIXCOP
ME%/61>NS(<AF[#G%BL1GRNC)F#/0Z(9 3GD;Q9HI1(49,.[92]9$VT3>MS/W
MVT8!M&"-=AB?C1& 0S/(address@hidden>.,N5^BHU;R2N3)$8UG &
M$QH:\<.+T<Z+T<address@hidden&2F(7Z;AK&*=&LEZ?E2TBU)NKV:=&<EZ:NEI#N2
M]/8BZ02]7=?"8B!&U+#6[=H[(2X'C'!VB+A*B01O>ZGU/^C7I\)_K-GM%M?_
M2O__FJYT_0]&@)XN_N6>^%\39PIRV(]1$7^"N(address@hidden((\[\F
M0<RC!]R0(VUJL=!6SNV'O.3\EWZ.)]G_V^XVFQG[KTO[?[NE_;>6J[3_2ONO
MM/_N9?])V<address@hidden'FN!C[ 0F%_3PV6\_>.C_SXX[1V\5NMT
MS]D)#R^L<:3&]W "]B*OL]]HH4_L'U%K?"@3',address@hidden>N-J+99C96
MV(4F[L5/'YNYA:[%9:S<>J#T[PMW?<Z7;_MQ2/Y\UH=&@GY-UP!R#GQI\J3)
M79B7;H3[#W&?92&3MF+=$884CJKZ#V*A2&2K/@<)Q"4)L51PQ2Z9BVM59# ]
MPE)A^PM>*E1/Q95"%7[M0J%*(-<)U6-QF3 MO[!*6(Q8N4BXD#BW1IC&TA)A
MIH*XX*4>[S_.%0UVZZ&>76R_<address@hidden/J4(>:.%+
address@hidden<^L_A/\;K4:)_]=QE?B_Q/\E_K\7_D?9B>address@hidden;X&ON;
M:<%PJ G(WYN$,CUM0L'B CQ#-Z0V1TF,address@hidden +/">&(59C1!E/
MC]*)TD']W\R>N'address@hidden@(? KS"MO6R.!("+*],38OM"LPD4&,.5"4
MEJ$T=CZW+S-7EO*5T_)*%8M^_0/R_H$]^P>R\(=F:+=#")A[*7(7!Z.7(??<
MJDEN<address@hidden>>Z=>X^  F[R_S5;ZOQO!R[  F;+;)7G?]9RE?J_
MU/^E_K^7_D]EI]KL/_2 <=PQ:Q1TX8^LF?%FO5*NF*+E6J1HB"VORXU<EKN6
M,I,W;J4R4P&+"EBZV" address@hidden&VN$(>1&6)ZU98CST Y CG$\U[%P"&*L
MDJ-643JNLDA3>0$_S,Y]@"#PU_Z(57:NN'(U?9A3U#P7-1=;/LC3!-'(#29#
M+Q/2D,]V"BXH])4")PQWX^(1>&RUC[NK=D'CHRF"]9V:N8.$Z,\FG2:<6N[B
MD0'*4]SRFSG!^.OQV]?G^^]>T\/;address@hidden'/'F%4R9*W"R3YH VUW5SN
ME^DK1.B08CIN="VS'_D%>address@hidden;$\*WEZ&UNBL$DMW<#N2;5>N4)BGQ;
M.9FV<@QYP$)GMVJMRD(E7@ RO:XBE/BV]5&;[ZFU07T$[L# %[;XN"_>1:W$
M%UJ;"DA<8BE3Y.I"%K+IB?]LV<++F'V/0Z6R4$2NHE2K;(+TZ.D=>,B_M>8:
MG)K*D!2M1D7?E<VC&P%KEI#T(@\<H(8Z5!+T</address@hidden,3]9)?$_\(N?"0/X$W^
MOTZC4SS_V^J4[_]9RU7B_Q+_E_C_7OA?R$ZFU^OUK ]0!<L%?P70DV 3PN'_
M#(;='/Y3[L54"807?%N?40$W7Q/.QQ:?TYB<1&PF#P5:F)?1MFGJ2&RV&>W_
MKK/address@hidden "2-:!2$EGUQHXA[<8=0)address@hidden *1K&<address@hidden@#QX
M. 9\P0>address@hidden;X(V_R0N8\CSF7Y)V]D!G''I0GVF0FEBN3YWER6!B9V=7(9"/@
M C4"#"-XQ3W.KGL^M<YQG_(7M NQZ/^;/H'_K]UM)?Z_-KX+T&R9G6:I_]=Q
ME?J_U/^E_G\8_]_TP?U_TW_N_YL^H?_OENX_Z?Q[:._?7'K_Y#KB'/=AR8UB
MPL6'"<address@hidden;>*L6=B1FG8J"address@hidden/449G=ZB)@F=)P8(852\)R!9\
MK2=E>@=/RC(WYT,Z.6_GM_M:O9Q;SJ:9-ECIZ7QB3^?**76SE_-+=4ZJ]__+
MO2*/X@&\T?^7/?_3P?=_-[O-<O_?6JX2_Y?XO\3_]\+_2G8N> #3B((/,!.Q
address@hidden)U#Z 1_!#^@'UWL"=PNN0-4=7Y(S,./_>ZK]_^UNM[WP_M]ML]3_Z[A*
M_5_J_U+_W]O_MZ#[16!![\O E3H_S9C1]_(LP!!489P[$9"\+ ?U-!ULXZ _
M!R)*.(IJ<address@hidden,TQ;/&D address@hidden"R\A0/2KHX"C0!;:XO'#L
M"QB?(4($?/NH> \R.J#PQ:+4O8H:9*7/F #G]1LK(UU;RRHC6,address@hidden"8TL
MJ:address@hidden)"UZ0>0(H^"Y+$_8C=Y<9' :address@hidden
MH6B!=K6M"&8(E:&H"A<(S7!U4A)H^!.O+S[W1(<SL8<42;S'%SA!H=Z8.M*S
address@hidden'$9:^EU8!(#S$LEE @30V_JOJ(UBQL6XMA_X'4& >.&$&RZDGN
MP'?G>/HV-\SHO;?JJ'ILX<?IK$B.-X&E(;,=!.$ QP*/DN$XRX<"*R(W5$8>
M*W7\ 36A&(A 1O4I =F0WG5%X\D4+/8"$G_01)&#7_\1.B<B"?SF70_J0]\H
MHC2(0R%>9#R86: 5>+1#3WFIH?UD-C5Q2K0I?D"C:VT9!'I=VY3'D81[7"DG
M-6Z(06I249$Y*+(FP%_(I?H=V#.9#DK<J"LRS>5TZ)Q3DJBU(A&6)4BWD_3M
ME<S1Q*5^ -[D>^U44_2AFM]EJMF_534A2_$LU9U/424]57VXXU2Y<TW*8,F9
M*XO6"KT.[49+);_^'YT_QEM@;WK_:\,TT_7_MEC_;Y?K_VNY2OQ?XO\2_S_$
M^C_(address@hidden>_T\H&G=<_<^S\G6M_JME>E,>_%EZ$,A<?BJHL#C^'+^3P'"-E+Y:
M K<\Y/^Y:M'\VK,_A17>_&M5Y3)F;H'WNJ5J:M/=50N:T/G+%C0E:OZR5S/+
MZZY7'address@hidden/?OY[^L_/?T_+
M\]_I#M#[;,2\VP[0,(\G[[/U]!IT-[W36=ID0^PC[0#]6C: SN^V =3<<7:<
MS+;/<M?GO]NNS^GMSK9_^792$?\_P?FO5K?;3/#_=E>\_ZE;[O]<RU7B_Q+_
ME_C_8?#_0Y__FO[S\U_3)SW_]87B_\<\6/8L:U8L@)7ICMJZ(UY8O0+PY^%]
MY0&<U>O#[W?!IP^$\=>&;Z]C,P]Y'YSI/"!>!++J_=_C23CBYZKXA]T%< /^
M,address@hidden:#7-[&WW!9KM=?O]K/5?Z%N/""-#EA\"6!X?<"Z:X"0IP#84S.^16
MLJWF4T[4;#S<E\"$**KTWIV<OSE\>W!^M/?N("]^<E&:@>I6*:-<%$JF_.2P
M8,H.'7^03X<"?X-MP%SRS^W address@hidden address@hidden:![%W .@
MA'L7Z<.;4/%TIUMJ>NH[C6I%I,Y\<R3TV-:09O0"T[;+8<#F6Z!0D^?L$H&G
M1<<address@hidden)address@hidden:+*GS?R7R\?; S^*X#Y:$DXS$ 7+VO
M6[IC[,"?S0%]Y;' >)address@hidden:4A;<&address@hidden;WO\F5];^Q]V%ZS__
M:;:VS87O/W:W2_F_EFN)_7^-Y7^CX?]5V/U?E]G_Y5C]V&\PRAV?/DN&Y&-H
address@hidden/G1QY^?K-FXV^[41]'0KOM69-5'P?35(address@hidden/J!)C/@(;address@hidden
M@)EN X<<K%MXR!XH$?;S-<F0M]?<!CM)'@@5QS3%=P5D1QZ?] B.4*N#8<4^
M?2 [\",DWH 6IP^1?2*\1AOC(9G+1Z"!51<39;33T^WU8W4(Q7*=0;Y4W-:,
MF"3YO($B0V6C'X address@hidden<U P;!^PB19;\?\JECI1OB,;/:( \CPYH&
MS@ (  X-PXF/'[##?=+(Y4:4G%U%NC#OAD.8Q9 (!F\46:'CSD4EL 8HE^Q)
M& (<@Z&!6Z4"address@hidden<NVYP">6H7??:EL;$-\($^]1"43R'(:T/^-":N+'<
M(*_55<I!$&<3RNB?5+3<D+Z08 M3)"5=E^I_%1D0'A,WXDN2O%5) )&-E\0_
M5_']8+8L_[]4/#DI8'0OH_$O+:5Q?3(?25'address@hidden:UMIE^&^(U!$)__8=34
M*627Q!QF\#29P5O,L(T9Z""([ $Z_"%&)N7!1@:>L"G%>2O-)@9HX-OT?148
M*]#7'[00#',-7_JG]?&/AW]L_'.I?10,)<<-SL;<=D#HR2[!T6W%R;D,+&53
MH[,(^-46_#/3A%X Y3%VK;G*2/K#2AN(LO?22>A9-#8!JX/X@>'O^+8[&<@3
M-.A$DX-T"J/;ZKL\.0LAE1,-:O'1QD3S%;2W*$^<P:address@hidden * 86'A
MA*,OV*":1KD:$0E1B<EX'(2R[^I)6QP)^X?](J:I;$F*TFE<&[(QJ.#D_(0I
M?P$\L.(%#9ND:\K?$>@+OYAN,TW7DK]]=\(7Z 5INK;\]4  ^[&53S=+TW7D
MKSVWBL4"'IA$:4VV5<EA<%E,&M,X)"LV0D<>6$;GHB]>,OH^)@9$<Z\?N-D0
M(7DR 21@,L^R23,AB7#($B9ID D0TS\3 !.9IK$,(J1 7C!X0%!#WEURX:+#
MZHR<NNGCR?'A4>],>7JC,<7\?/P_!Z>GQZ<_[YU2%(F+)"8)address@hidden ROSX6
M3^(3@(?O3MZ_/1-Y' HYZQV<T*/(GBL(7<W2^ZHG9C_J C3V=S<, _VQ'SZB
M-[8B'*K*?$9UNYMQ7$O[%=?]S1UKRQ1?!*T0K6RDM6GN*+\!/!LR7=97CJ2I
M1)E[8XN<RZFO/)N85A=$:LG)!C9L/H=<_5Y,L>Q3J\\2Q[_ZVE$*-I"U)1M+
MGC'Y@:;_:^]9F]LVKOU,_0I8'@^IEJ)$4I)SI;:YOK:::-)8'C^:Z3BY)$1"
M)"(28 %2)#N=_O:>URYV 1"D+)E2,D";1 1VS[[.GM>>/4=U/66ZAM=K\QUI
M@/,ABH(UQ"N2>_Y*]T,'>,7)6P"M&+I 2:@-;'KL+IP:&_ZI<><O27K0SUB6
M)",Z'8B!P5]3,:"^+WIH=E"!ZY/address@hidden"D,AE<I)$/S0C'$/W7H;SNG>U?7(
M!?)WY6+.>TP";'=/99GBGH"<H)-4F7O62/*:4ZEA5Z)]O;;2_]J5].8OKO7_
M=BV#0!37^YM=3Q&1XDK_L2LE=*6XVG.[FJ)/Q94.V0*8>MN$MXU&8\<DO]E2
MK=RZ[8WJ'N76/=ZH[DENW9<;U?TFM^[_[-H)U!1GV=NII)&DHCD,UCWC OJ=
MG;NUHMB3452]2DI:&=%REBBRUS4#0+V 52M<ZL&F<%K%<*XVA=,NAC/>%,Y1
M,9S>IG".B^',address@hidden)B6G)&_5FW7K^,?[PE^SON%]X:]9]\5]X9OX
MH#81<U7SV/\4U-D(5/Y! $RP+WH'[42WAR8K.EQ41@)\K7*5:address@hidden/+54R-
M#W 4(&;1Q-'8\H BGA::-!-+LBDE8U6CYWHX.P"O1CX1NPYTRI 'LWRXL-**
MU.::'=B]$<:RKCNF$+IY?TA +>B/.16K8!AS8%9%1E]<$47?3#7%M(NK*CDY
address@hidden:UI7E75GF%+B%3;address@hidden:3,+6BVESDS$(4WGKK
M\$1*K5YR$TPND&8*S%/P+I7SGW]1R(''R?_CG!PWC?A?=/[3;I7WO[;R/+A5
MFS')J4U!:0,][H6R7]OO7\"'-]XUZ4&NPY^4C?=?^QBED$[)R8#5<!PJCX<8
M(9W<J$3)RLH;4ZR.1E:A;=I*:5Y7<M1:46KILYFYV'"[0PU0P/P,S/CGW3,.
address@hidden'_5<U?TH%BY7B+5 &V?\4:N1K!0!<%__WJ'64CO_;:K;+_;^-
MI_3_+OV_2__O>W$\#M.D&)X^L+5>\P&MXG?\B</J"H?#DQ=^3;CB3B;HY46'
address@hidden T+D)8QR>'JT+LKMYV*I[1JM:R7N5,=F<CCOP7)OE,I!<CIO/
M<JG"$V&U3_*QX_\O'RG^?[.,__](3\G_2_Y?\O^'B/^_7!7_?[DJ_O]RP_C_
MR]]E_/_%H\3_-^+]WS43J%J-WU/X?^W_C4-^)/V_W3Y2_/_ER\/#=JG_;_$I
M^7_)address@hidden&R<address@hidden/W6!5PW#U6R< I-+!8[9GD0;I_H4
M?AM 2/!P[0\-,ST=^E$_\;6*T2L51BA^W.C,B0&NT\&MU]L*<GBRQ8N_8DCK
M,U;0;<,"WS%7IW=B->!;YMRA%5[UNQPE6]V@)1M!YGR="YVF)S/?<&"ZME ]
M%!,Z+0L1) I 
X35[8QR+UL;address@hidden<R!IO,F-VPWG'&<;=_IS;O5O.*#L(address@hidden
MM.:F$036]E[W73LEYN^GTICS98_(?XM'//]MM8\S]I_V46G_V<I3RG^E_%?*
M?_>2_Q:address@hidden&P2'L\/-*1CB6EK3W167RA&X5]I+,H\*+(/]-9
M/"7_B=_Z(_Q_^>3X?YG_<2M/R?]+_E_R_WOQ_^4*_K_<F/\OGPC_7]R)_R\?
MA/\O[\S_ER7_?[A'^7^:\;H>address@hidden/,address@hidden,O_;5AY-Q?)B1$JP
MMX)/ R+TE Z3C7M\5CSU@'^XT=+A6(9DMO9Z8=2/@1O&2<D1)@V-.)J<.]I*
address@hidden/T[<WDXE%?;-^?R+"DQ9D1D(B65U4G$T<VK:+ZAVU:address@hidden/BF7_]T9A
M[,&@!E]#!5@;__'PV-C_*/^W#\O[']MY]/[7&% +>&LG+SX'OQBO2!K9G_M!
M/YP[W:#JB! C(72LS[#C I2/@S"@;0??49C\ <5AK"/Q>IQ)%&)@'J84F!A8
MSJW"N1?;$,V6 .C#D0PSRNV[BW?G^H_.ZT_OWY^__9B\P)W-U"address@hidden @)_
M9&I9L6V-"+E8AJC.==^H!7-_Q@&4X?4SAEJYEJB)U_WZ[C]G_I2#0</[Z]$L
M'L)K_D6+HWX9 
#F&@<2$8.#4XW1/L2E_H8)AZ&address@hidden(,_J$O\"N5RJ,(address@hidden
address@hidden"K_AB.'0'?ON+6I/*"17E_Y2RV5-ZE/_O\*M0?G[6V7]:QR<I^T_SY/BD
MI/_;>$K[3VG_*>T_]_/_'0Z<FN7W.QRP 6<H LL@<B=#AR48&-IK%6RPCIXF
ML8JV&*-6!#CL+;S>#*^W[CP7RXS&"<#%Q-WVL:U$JR[^2)XQ6""*R5C;A?DX
M=?Q!$%(82&\QC=QD%"G#D;@%B1WH-^Y<^QMX+/U/!+EMVW]>MC/ZW\E1Z?^[
ME2>E_R6B?*("YKRCN/^&6@;address@hidden'&[OE%H'I&\</[*6IFT^EN+%X6DK2A]1
M4>\C&(W6?B2;C=:F_#VME27JL;^7Y#070Q%( T!<;VI69^IH ZK[2=A\)R\@
MOJ/2KJBD?1SO?^,!WY%<JOP?U,HCQ?]H':address@hidden;^-)\G\0!BBSKOF#
M$7"%B6?GH2RVS/>IK9+M;^^1_?_^_-6;'\^_4AMK\C^<M%[J^S]'K:-#TO];
MI?Z_E8<8\VPT]?=_HOV\_P[0@;;]:TGH<X]-_=SYZ?M7'YV+#]\:AH.)V[O!
M V078TEC(C-LW#3QUD '"B>3,.9 UU0 O^^)22 T+0T7>$TQB(&]H^+M.M?>
MW G@'T4[8C(IPR<address@hidden>/)YD )1961%'O574:=+?"KM''X."H<_*1%V81
M&/address@hidden&C]0">RP>^/)U4BS)^[(G]*%#%#BXXE+A%34VEGL891LYVTX1</!
M'%3_B&T'8F*XFODP"="++BMC56JT.^"_T:)2I5/PL5!BU+2AP'0XBU?V RJ!
address@hidden"0F1#F7'#;Y:$I%A S5+OA :QK%_Y4-=4O3QJHH* GX]&]&)7JR&PXD"
M*&RYK!*AP9M+YQ^7GYRWY^=OODTL"H%'address@hidden)+F2'JU(address@hidden)Z $4^QZ
M&!Y@';\A/;GO1UZ/+0'QK#=$1;K=.+EJ?O.-4P-,QO5RG<XD\CKX'BH IXD]
MT(DQAQ[T]M8;.5AXG^[E1(3;>address@hidden/>8N)%F'(;=P7/%V8^"$#P=0'F
M,8[UXIJ-1VH,\S"ZB;$O7?7F3^I:+1TA5M$Z)$856(G+'QHY.X6!3(= @09#
address@hidden<(U_TQ=5-G:1PA'ZW-P18RN[P#^R82)[D-J'F%A>OSW %;3RG.[X)
M0GY)QYS.I(address@hidden(1N#_G/FW[DA.=-"*!2J!H&address@hidden:8D!-PP$E:O";/_@
MI0NC)>TE )5,R#4:>) $">3.E0<address@hidden"2T ,/@N(SW']5I * ''2\Y&- 
M>@W;L"?R/>;$:$=!7-!*F)@Q36-7#(K"A)85X/WM\M6;=Z\^?N^XO1[=SAI0
address@hidden/SYUNKK0GYV#V0'1QP.F6@<'IP>S.#H8A3UW=##RK]3[9@/^
M=S ^.*C6]>8UIP8GBT?038&L$M[!Z E)W?ZM#_H9)L5 RUE"WZIQ,E^$*0EH
MM?41D2PRJ!&:-P%:G_KA[ IO>E^1.4K9G*9H!'8#CL[&[:']"7>F/1G%0[?Q
address@hidden'DO78X+X1=24[84ST,J A3\%7;6Q[P?7@ [(L$IMJH!W@,6
MUH >0 GW:H03?.L!0Q@@T\-K^&Q>>W/^X?7[BW<?+R[?GC*>_Y\;^QA7%;#5
MY\D!^LEXI:B2GG'JKI[/.I4F6S!,address@hidden<@Y= ;Z?H3T%[1Y8E
M(00-YZ>A%Q 0H9JQ!\RO3\WHC5YW?L7-[<?Q#-VBNJBBMO:J:M:$7Q'1$-LB
M<5TC[%"=FB9K[0AZ'^F8>PH?)0/%M*'08^XR,XN0<VFV%H[Z9A.(V-FN-9.N
M\:[#XX$96_/'B'$&!**DJCW$3H103:RCZL(><address@hidden&$6
MK-,%2J=KGI,;:7-4SAR 9;=I'U[SX8+=SIGD0 GU .K(%>A;+()$7L]-&@5(
M%%@&&:07?H!,@J)! *GRHC-:4IPK8"/)20S55=R%9Q1&CLEWPED,&X,ZTK?G
M @4J/!81=L*T*O1BHD'(K^JPTWHNKB-Y-5[-!EA'J'CM FL$-Y0<IVM9F:HR
M[HR%"7!-V$4/^':V^S+3>ANH4XNN.!V2=V!', UP+O8"/address@hidden:(#:.%51%>
MRCMEJ2>9^%] Z8N20K#)XV4P=1<-88&V\,FDP=?YB)(3,/R"61I)UAOHA"C<
M&RB$ T$L3Z.F0;M3O46('K AZ/<U'E8!S6;Y0$V,3"72L0I9_3FU!2!(K7EZ
MV&B>address@hidden;9I ^'G:]5,2UJJ4N'0G>'?WHYR%N-2CO=U=)\D,
MM5M/ address@hidden/<address@hidden/1%0F"1TX;,F.8GH#-( ILU!
address@hidden"address@hidden"EP,)&X/\V,A&8["6[_O]36_QT_J"O.-)_%#J&5'-0V,"$1H
M!$.FC2I]<)$A*2;!6P"^$3II88HKI;*O5G4&+^*&IDB_)"DS71Y&address@hidden
ME21Z8[R-=+)6?1RE)P&%2>QE'B94.=T4!GU!R0)P4%-QWC^\=^J:289*VS($
address@hidden<YA0851H3H8)_?>N]=C6,101Z/ILB:$LW.%R7^\Q13V-XV.2I(/
MTAP82A_4G0G1YGF(],L;^_L8$QK#^( 801HO"*BCOBB!UY2%Q,Z'IMRVZ5J]
MI%BJ"_%G$8B5NAF*IM3%!N,+EJU9VZU>36']V=4?JWO$C'<DV)]\0/))"8MH
M4_0BT,<\D8#DB#3I8#<%M"J2'+ 8DN7A"\4:J$O2(9H=AY.C(2:I >+LT.3P
MQ+^[_/#A@@Z<+\X_G.JU&'N](address@hidden address@hidden
address@hidden@:^ZCFNX%'+(>GGO)address@hidden@B&A/',SUS6'#,Z
M(S=A)LXR(5(RL*NI"PO<-X 1^1!ZV\'L<-'2$%XNM.HJWQ *$:A0R<:XIM*"
address@hidden"LW)CRQW4%6!QC&)0NH-ST!$N1^R.?0OZ$86/(+\'5X^D+GEU:.MA
MDW%.A53?8EL08PY:Q6%0%0[Z-/)1XN *DA#PQW?O+_]^_N/YVX^"'93"!PDJ
M&CA$Q^ZB"UNUX20HBKIHG7 .Q6K$DBS=$YTH)address@hidden,5$0DKEZ6NJ*M<3-
MPG\?I/PH7*+)0TG30'UA6*;JQRG/0J>+QUI5!$D3-73)I(%:@#=E'AOT1Y+<
M\ K0>1_-A &JA<ZOX940K-=AA.R:.Q:%L!O&address@hidden/$!7^0C*8S&U+I
address@hidden/YT#7R!$%B/Y0G;0AG6,address@hidden@=A,]N(MK_1J :=Q2
MYHS=^2YE-N)9)-%*SY[D<YP%4Q\TA2#3-E(_+8MAL[BD(( "-_2OU>#5[N)A
MH'F1<3[=Y[H(OEV6,*OI;C2<R_0HC2',22B^$3=39#:9>8*M&0+5=Q4C5F*N
M I?P&L5+A)50ED8BS,I4,@1%IYIBQG-73(9 [U!0!H7= T2.0;-$H$O3QD'1
M66:X"C5T#&([!A1?HJUUG 1E XP2K?13[(F]!M"%)%G"%G?J2C;V1"YLH(ET
MKMMR8T1;address@hidden:)E1C7C:5&% T)%,G=.J%Y79I%VG E)/KX!P>]>@"4K"6S
M#KT+,(<7L&7$8V3(ES#:H=NW>JZD,4.<E1U/+; \*^D1W8BL&E#4<@VB?B&?
address@hidden)L$AM:Y#%70K.G-$("S"M,#DLG3\\5>%[D9\ZK
M(0F(7H3*D9JW9UJ )QVHR\)?%2E&Y.$.8&<>Y>44/VLH$Q_\'Q$$ 8U][ OB
MQYN0#''+J["_U')_'Q7N;YGV?/HNL:B;UK:N^/2(>1C]?*ID:0M8MYB,O"FB
M%11#/1U7X\*!S1"0^> :)FODNQ'EDTG,P<[W;)"N6ZH+[\UP? 4##!/DUVH?
M#1?9D+@'address@hidden)J^BT=0JBQ9QI,)F2EQ0V\/W;]$:\4VMB)I<O:R ;&
M KB:(S^6&W27UP!Y%J&9EP4=,GN2X9\FD<R[VD\O,>68IQ1T=07-18202]1D
MXZ0\^DJ+6896%\45+^B1C9Q*LFD,U\\C99SZW2/3,YGMB*RA59MP6!H5%\+N
address@hidden:UAER2G+66S).E^2CKN<#J=G!X<S.?SQC3N-6:W_B!L>/'!=Q\_''!-
M-+9U7(#7&$['(Z5FO#W_R?GKI[>OT;SU0>Q;*5>@ROX*EP^F?YS[<\J?32-T
M8\>address@hidden@address@hidden:HL P-B(]?":G00%8O-"GT3Z8* 
@N$F(!HI&,address@hidden
address@hidden;#6LBU2]:ZM%Q"TT/O$H(I_>TG)A5;84(P(!5R4[:2Q;HI
MBL.L#G$90[ERT9\1&&#D>[<<address@hidden>9;131193NI.'T"B4QL7;V/L
MZ],OTO+UA2Q0LZ9(VR)NC#'B'9)</O%2YONTH5_A#M.?!LH"N.'Q#[&+L+QK
M',M%WFIPO'W/@U]#= :NTR_S$!)>//;!Z>_D,>-_8A2N1[C_=7)\HN]_GIP<
MX_D_%"O/_[?RE/[_I?]_Z?]___B?'"-Z:D<EE#B&*1?Y)#[BYP"DZJ!'68HI
ME3'5-[+3!9%1FE*$3S%=-?VWJF(ULA4_B'1 1\SB&?3TSQ[?W4['K"0@'1\^
M^F-WD&T;A=V:%-)A*6%DJOV.?Y;J%KI9V'",R)-&S72]6O,TB/:JF?24F135
M?[*"9E('S;[OI><IIT-Z^"D(T+V]U"BY-G[(J^O''0Q9JF-16AEVC8\$>$>Y
address@hidden);Z,^B"V<]D6VQU address@hidden;Q<Z<TLG_2MZJC[:
M/<6/(R\8P$Z5:NCZK-[893,!5 4DEXY9[1JCH\VN,9JDIZH]]+UFV!;:&TLR
M#*OK 4AWTR#R=T\:C%JAQIHE:A2OT6WGMF"-DI6!68G\17I"/address@hidden(
address@hidden(I48"7K+0&AUE*O+=*1G:O/$74SLKJ9;!BKDX \6#I_33-=C%)=
MC+B+4:J+T=HN%K6?C[1\!9U6!0>T&?8BUO1])"0&TNS!/H;1V;C#I0S4R932
M&#2^XRY7N'2'7;[A"D9Y:):W)1]\_3;>"9$L\C2UR)H7Y*'address@hidden()HA
M\G0BC46145!A('PNH%RZ1!'M&M^+=E$Z7(U'."'FHA5,C(#KHXME3#:"37?>
M ]#K\8:address@hidden,<'[Y;82D5OJ_I#EYC/Q?1ZTCI?^?-(_P+F"S
M];)=WO_;RE/J_Z7^7^K_]]/_=8HH/&address@hidden Y96^EOT+DDIA0D/.(F44]NK
M<YH$O/F62:CP%UV5O)$Z=,8"PABS)SR8[  1FZ*S'N ^_#SCTK, 3S<ZDRB<
address@hidden,address@hidden">ZG^V'=:address@hidden@J/+B\ PO_WWGTB;2]_GK>-(5
M]NDX address@hidden>RCQC1"<O8;J!KNER!#W]V&0AS#(BI4RHI+*%U'! R"K]SL5(](D
M?,6+O3SOS[CC]-L0-: CI^CL1&?EXDY)X904IZZLS+VA5A>;.4N:61K-F$N[
ML$Q %9$9[&*MK,QA]007$W 2_UPDLUZQUJ"BL"49+_[*[59.>V=<Q&B)401&
M*9^65LO)*):YI9IGB8!GC$55,T$;F%71YAZ1L@@]$+^^1P\;#^BO! +3" 2#
M3,9LCWC->%5?5JZ6[H\I_N5LJ0X>*@:SB=$E0(AD0R;"+D_O=0Y$^+.3W:C4
M1?H^C@>H]^B8J2_0]K/W<[!;address@hidden/GA1B+N X4NU/%EIF?\,M Z-2%
MN75%@(8/0ON>MKS\>address@hidden>)O+_RS:=_QT?E_+_-IX<^;^4
M_$O)OY3\[R+Y9U.7I0^NG*;S[W\[6IYOVY'45\/)":N^*LO:_JH<:RLSS]DE
M':>2;NJ9DTFP9PK2W.53ZD!A'/:<D\Y%DPID#CD732BR:(I)V3[:M XV38NL
M$M863>,\TVB!SOGH7UA"G?,M6M24.L>DEOG,3ZIJ(Y^4-,H91Y9ZC);4F9,R
M[TG*-&G^W]H^_V^WVCG\O\S_MI6GY/\E_R_Y_WWY?R[%S\@ +4L&.%HA ^3"
M*I0#6I8<L+D8T,X7 [Y$"FAM) 78O%BS:<V0LQQ8&'MNQ=:>Q<FE8BM3T7#&
MP<9VE*7&?)\DWK5\;#9,?&L<KZ=;T.\S+;"'R*H6LJ>L>1#&=^JCAK1Q'\?W
M[N-XHSZ6-I_'>M+^WU_# +0V_Q_F_&'_[^-V"\]_VV7\QRT]Y?EO*0664N##
M^'^C^48\P%=*@<_^G#'^%%9?9T=)W)DRII0\-] [&E16^XBO\!#/\0]?Y8RM
MK2L9S_ <O_#$R*)GJ[7*W?Z)6EJ>YI/A_U_! +2&_Q\?-77\YY/FR4OB_V7^
MK^T\)?\O^7_)_Q^(_Z]D25DA(&W]60MCE2DEYP+42HZ[HK)Q]RGOYE,JJ6_N
MM:>"2T^%5YX*+SRMO^Y48(C)Z5W>%8A-KCE5[GZ[R70?RKW95,G>GLBO8UUF
MJN1?[3%K%OO#%WO#K[^[M,;[?X/;&JE;2YD15<R;&17K0D8E>P_#'/G:NRS9
MNT#&*JB&^>9*Q;JP4LG>address@hidden/>Y\I!=SW;6B32X5K;]25& NW' G;33]
MQD4B:P=\^>1OB'+VY1R-=>;*?P'*Y4!^H)5?>=-GW3V?=;=\UM_Q6;/'U]WO
B2<_ 9M=Z'IB$%5SG*8W.Y5,^Y5,^Y5,^_P5$VN5' &@! +=\
 
end


reply via email to

[Prev in Thread] Current Thread [Next in Thread]