From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20130 invoked from network); 18 May 1999 14:56:17 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 18 May 1999 14:56:17 -0000 Received: (qmail 10090 invoked by alias); 18 May 1999 14:56:10 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 6307 Received: (qmail 10082 invoked from network); 18 May 1999 14:56:08 -0000 Message-Id: <9905181431.AA28595@ibmth.df.unipi.it> To: zsh-workers@sunsite.auc.dk (Zsh hackers list) Subject: PATCH: pws-18: 64-bit integer support Date: Tue, 18 May 1999 16:31:40 +0200 From: Peter Stephenson If you had followed back the trail of blood across the the physics research machines of Europe, you would have found me writing this. It is supposed to make use of 64-bit integers on 32-bit architectures more useful and reliable. The propagation and I/O for 64-bit file sizes is now supposed to be consistent. To make this work in shell functions etc., integer parameters and shell arithmetic is now also done in 64-bit precision. The last part just requires --enable-lfs and a 64-bit type; it does not require that large file support actually be enabled, which is mostly associated with the size of off_t and is tested separately by configure. There is a new type, zlong, which will be long long or equivalent in these circumstances, otherwise it is just long. If you do not explicitly --enable-lfs, or if your architecture is 64-bit anyway, zlong is always a long and no special handling is performed, everything should work wonderfully, and zsh generates pictures of fluffy bunnies gambolling in a field. Not. The memory management is the hairiest part of the story. I eventually found out that the problem in glob.c on SunOS 5.6 with gcc which I reported was because, although the alignments within structs were correctly handled, the compiler was quite reasonably assuming that the pointer to the struct had the correct alignment for the largest member. This was not necessarily true : (1) if the memory came off the heap. I've done my best to make sure that halloc produces zlong-aligned memory chunks, including padding out struct heap to four elements (which are presumably 32-bit, but as two are pointers and two size_t it seems a good bet the alignment is now OK anyway); this seems to have fixed the problem. However, I may have missed something, and the alignment also depends on what the underlying malloc() is producing. It may also be more wasteful on 32-bit architectures. (2) using zsh's own malloc as the underlying memory manager. I've simply changed long's to zlong's and padded structures out so that they look like multiple's of 8 bytes, and eventually it seemed to work. It could be suboptimal or even just plain wrong in places. It will certainly be less efficient. (Again, this only applies if you are using 64-bit integer support on 32-bit architectures.) Some changes in glob.c are aesthetic. I changed it to investigate the alignment problem, and it seemed neater the new way, so I left it. Numbers used by glob qualifiers are passed around as off_t in case this is larger than the other types. The existing routines zstrtol() and convbase() are promoted to reading and printing 64-bit types where necessary; they didn't otherwise need changing, but more use of convbase() is made than before to avoid having to work out a printf() format. Integer internal variables attached to parameters have been promoted to zlong as well, although in some special cases where I don't expect them to overflow such as mypid and lineno I have cravenly cast them to long for output and kept the %ld. I have tested the following architectures with --enable-lfs. LFS? off_t ino_t Compilers LFS Flags(1) Sunos 5.6 yes 64b 64b gcc, cc auto HPUX 10.20 yes 64b 32b cc -Ae(2) -D_LARGE_FILE_SOURCE -D_FILE64 AIX 3.2 no(3) 32b 32b gcc Irix 6.2(4) no(3) 32b 32b gcc (1) On SunOS, getconf generates these automatically; for HPUX I had to guess them. There's a note in INSTALL about this. (2) gcc failed on a header file with the large file definitions; this could be just a local problem, or not. (3) On these I just tested that 64-bit parameters and arithmetic were working. (4) This is where I tested zsh's malloc. It's still running at the moment, no funny messages. This will be in pws-19 for testing, maybe tomorrow. begin 644 z64_try1.dif.gz M'XL(""=T03<``WHV-%]TJ>?I[N>^NM5N MM\7E]?#VY.IJ=]'OU?XE7?'.?A"F)UIO-I@:LW6:2@0Z$ MV1UT#P=[APSTRR^B;76L5E\T\=&UQ"^_U$6[[7J)/?9E.W%B;YZ&=B!%-$^] M*!1I)+:<*)QXTRR66[M"W,YD:8),'=>+%7!=J.%$V+XODM2.TVS^*IEEJ1O= MAV+BX:O[F>?,A!U+$4:ID%_GON=XJ?0?A`QQLKM;%_7F,)O/HS@5DR@6OAU/ MI9IMAZ[PPE1.99S4F^TG_-6;L%H$%'6M]MA+1?*0I#(@%*-[DR9`MG6Q>MZ$]$0B;>08FS'L2?C(WJW2&8B*>&< MSKQ$P+\D]8`50*6,O4"&J>VWD`981TIW;#M?$&@.C/*<#.@$+MCS>8PXI<`) M9K<21;O-#&K[$\`NB\-$H(!FLM[,)22G`%82XRSM(I],HLRWT5`VL<+@2M!4#032C>OF]__#>8Q*[5:1'2,SN!]64(?'`;[7?C*Y. M/ERG8V&-Q\_G)X)&,.O_=Z6*,3R.ZY18<'N[FZ]^2G*@&J@W@=&3KT[ M*6QQ9_L9L:$,WE)FLP3@5-934"O;"14!4]_9#8Q<-ZSR+ M8>\XB&+8`62)^U?()(2)/![4N-DQ,#:0H/:X9KV9S"0`@B$`$4!:0E9"6\'R MI)@/Y#-(7T"D,R0;%"2PX17\YSFV3TH2@!E),AQ`VY5S&;IH)V!8;"R"=YIX MH8ORM6$Q+RUCIK@&=@"T'PD8<2-P!^BL8OEGYA$V=KK)OI!;MI-F-JF;=FE" MO)6A(\4#"#SPIK,4=2/Q7*F5NL*TB.VAXK#J3=+8$KY*E>.<'5/'(:%<1R$) M0ON@6/KRS@X9546ELOTC=EQLCMKND/-Q%O*.$=CN/(Y@0_`4WD08Z/NBB8'Z MTA#'Q^*@@0Y;W)"32L0Y['&J]1YCRSJ73'&HM]`NK).1;WLFXQ=9+PQ0Q2RI>;V.$=5*./_=1_*4EY.YT%PDH8LT"^L0DZZ]_L"RBLQL[;3:,`LY3^L+UK5:^Z))_Z-Q MU,6KG9)_%#NO8*P-.1:Z4,U@>G\$WI2'%TOC0HT[,SL6.TD:KQW?`?W0+PB3 MO3W$9(_,%5&I3>99FA@`-P4_G4!REZ6-(S:8;_R80_!,)\;6[^$U(#P0/R2_ MAULM`38'@,V7WL25$_%Y^';4[XU>7]Z.;C^]/\,069YYJ<+7>TUTO@SL!QCT M>X8FK4&K2C^1R]NO6\1W:95\,LV%<#"I3AZFE`&L;J\9)WXN/@[$UI;F@5[@ M)(Y!N,7\'`#=Z+Q!O-T_1-X>=)64\4])QQ3':)CN"/8P[);HX.QBOOV;^4=# M_%5OUTC(=QH:T@>$-I&JVF+C.UBI!ND#N"&DP9>AD9CDSN^T(`6R$S=8TGK4 M%:7R6(S\$ZVC@RK?VQN8&U2>YY3KDL[AH'0Z!%]&,#14B@0T`Z5W8P`UP)>!TTC&V:3]4Y*.O#!B)BI% M:=;>O/]X.]3QK`S7$#^)7@L@V-]O#2EEJ*:.]S';5C1*J1P@X=:0T,PG!3", M#"+\-(0)%"NKB"!R9<7;0.N[FS=G`V9/=Y_8T_L>>X:7G\\*_MR3:'&)4GLNCD]O+=8$5+%Y-TKK2TZF4[UL#:6Z^E/*?V+E+P M^S!ET#,'7:O04M,D,?!#6^SG\[=O1F7-S??4) MJ.U\[9@M)#>PO\@B/`G$C))NI#B?>'G^\7IX=BMXHD43"0K+17!J(16F.)>' M8'*[F'Q]>W9Q]D%-[M4H'"98#LPC2BDPAI._@VG-YTUC)@)`J%`R\HO?-2R$S*^S+!+2PD.,;59X0CPI<&A#KY@$X M"`E<\R:A,0]:8L=@D3<`3PIY:R"4=!4([<"I0@'L*&"#C4&#?F.+Z)@=,@E^ M$MH:32]QO:F7&L/;FX^GQ@ZZK`:&95&K+2;DZQ*Q?2S^^_D<7-7US?`S^L`: MSH3TG#TIQG!:CRA)%J"I"[#7-/(-\M#7'Z^N(&B39V9`Y5,?@Q0,"3A(SG*, MK<_GM^\I.D`*LYTL6E6-^[LL=E[@FZ)3<^'0;!TB%^BI<]*2E$$5ZFVF.E&, MG(!;(3<$>AQ$*7AU%E?,Q&N'A=\#-U6@$[=1;WYO'274[RZ$[*TRMVT>L7\H ML1''2LE7D,(8DY"=68N*BT;9-R0SLU&/%M_`S1 MK0%YXH3'W=)H0_P#`J_BMLK*`*%V[E@3K,V\]$Y:6DA:_(_":NDMB=@)47:=BHCS,1(F.'?.6G:T[`5F(=[$@Z)/QC%4 MW+IT1K*A`BT\>&Y#:/PPVTORM18RAKQ.>M@/&Z#GQJX)%/S8UX2*?1)'@8!< MF<7?H!Z/F'O8F4LB`&=.6J9)BL7/S3:&4<%@%=>J/Y[H;$&@<>/+-,#*#)FY M`5[SL`*N8_VRTEO=/N-&S\VX44;R'.0V37@>=OTNM9/TA\=Y-Z+T[+DGS:_Q^?EAGT&&GX\$ M.$CI73NU"[\DRXX)/X'M3V.9)-JEH2^SF4//FJT8IJ-CI?=;@=H?D*7!.C"HPBY\CTA^ MI=`=36`F+>K;&)'T]VHPWPPE.+CF%1-]'L$NF$61>;>X!9B/T3%K M;V-UN0Q43^1A28GQ-`06>/$"&V2_F7^4N.I&F""(%]0[4TO?S[`TY'::^/MO M@BEU=I(%YGW:0.=,JC/WPN"SN6T.6V_//IPU5.JW':0M M3/%JR@0`JY]%![*3-C:'F,1NCTF$IVD56>^&YE_^SC%^%#]6WGQ[I!NA>V4_ M)"O-/0CM4`:EFQL2"^Y"/*?[D&_GNWDW;U'LHAH-BP0K&2-@]#'C(9DH(E4; M@IET0#DQ//LJ\ZE-)GZ6S`Q-/S4#..4")X3'I'3JB=D%,-W,W1`V^HTCP8HA M\/]FDPL)%K?$OIBO3ZOI[#Z1\1UVO=%Y%M-(T/@MEG/(L]*(A;+/ M210\^V4'A^DYVXGMNN/,\R'%2PRH`"FQ'(-BV./<*)2.\6CCE?JZH[XWJ%5J M-G3$Q60P/V9N4:9(QS2@\W;FITM]>R4X?S@['Y;V M?C]5`'J;ZD8R`Z5>&@W^9R`MXY61S+$!QFFT,8#(6! MG3HSF93'>"A>,Y1&E1ZCBF1\ M>1_%+J*_)"8G]=<+:F_E/*LR91E\?V#NE7K[UCZE5NI)?I+L_&[7CN.BUM:# M\P#&##HY:8A9F+]!&W;F[9_6-X=JM1U#MX,$@H$2--C1@=G2O0IC^X[;*`BZ M>`JLVID.0\B%))0=H/-,XQQ.]WQTZ(#5%:^+U7FQVKI7&+O9F!+J>3//N%>F MGLBS;X5RE@[^JL=]=41ME(%/&WO3$:A5PGP4\Z"::CLZA/4LCO,]J]J3$[HG MH@Z"="2*,`I1AH:7/G:B))O@PU-?/?Z^$Y&&Y6$J`E2*(RG^)FKY`0!B!%]T MG@0..<'SQQKCOC.?4]>\I*P+'Q(U?)FLU]?]0:^SJJ_E64LSS,-!=[_L7B2BOR36$7CGAE=LE=-1$[NYN1J;YI+T6:S9KKFZV^-YNBE\."M3L M5%FA&HH][B?T-K03N&D$*)`61W&NQZJH^@KEU-JW"_TZ5_>)\56WV)R$DR+" M8(\/<_;VGVU@2YL6>RG;<1)E7OU>R^J`>?'S43+#+)"QYVRB<_7U"J&+`+.- M8_'UZ#FT+"^\0@PM^ZPE(?=+PVCSBOC>AUJUR!-40K;>F`\'O6[5F'/P-:`E M*^[VN5.KGLA^+.(QVQM!R*_4X/GMA^F=_A+-$]5)AC1YJ=&(!R-%^;FHCHF5 MTNX.E8_?TYTU/(NG<4CS"RY@/,V/U_D@,A90)9@=/%ZW#JM,T-#+!^N]@=4K M\:#3:W6!!?"PS#P=UGH*>0?>X,6FM04U8-O$(M`""G0U]`VOE$%BCZ=#;Z-[ MS-VIBL)"C>X:EF]CZHMW7H(=4VRY@&\W(%&&T(D<2F@9O.[#\W0W&D(%W[[" MPHSN#.(E'F%8-/,><[3,=^F,R<-[@;2,VIJ2`;Z42&=8KQ!=_'_3-1-^RQ*N M-_-Z,Q)7/Y6S7; M50EIO;@M4MB$,@3P%84QJYLJ6%%AIP/>_5&HLOPJ'7TUJG(?W3H86&85>8:M MP)D#:R\_J2=GW>_SP30_\WZ$XT>)#$!32CJ;)XLS4-AM\7ET,OQT?:J.VK`Q M-/=<'3(;`KY0C"N]6)3>J$.P(@5\\9]H#%7@;WB$`A__V$W2]&$$'D6&=UA= MAU$H@WGZ8#B!2_E=HM-#;`5(.W9F5)4,;V\_'>_N[O*12TTYBW6S52BQB`'J M24?SP#>Z26N3T[-&@^Y[<=LD25T9QRVQ M]4-B&%``SF-P0&D/W(;^I*Y!:1W`8DSIP'GLT?6X;H=`&J6LL M]:$:*#7];C2ZN/YX.AJ!%WBI!L7)U>7%-;B;T0 M^^1-JN5)>5^I2?4IMN1(^J?#MUCU7%S=O%9EI[[E41-0:Q2L.4CNS*O5%LF2BD5&9/@.#B`ED>")8'G.4!"-U?DO)FHY7=1INV M&ZWL-UK9<*1V1)D?[N.%)TC$\XM/NL]]>SOZ]1+8]^GV;"BLROB[LXL3'N^N MWK:YA?KE'3+P'*,Z)K"*K>CN\?8,I\`KUVV^.X\H;U1NW/R9@8']53G4H*&= M4'Y-N3EX#9]H$$\@P;J"+$D%"WCI3_<**PM%,2]SXM.UVA1_18!U5#0I%J53 MWGQ)O4R%'DIQ>"7\JB_%8@,/G_2CD!6D]`4=$AH>:L`"A$L\S?#7+OJJ#2PP MT8NND%12&EPBUYGGK\0>+,2C6B@E%2[_FDD\DA4X/Z9373"^4$[Y]LRF%>S` M4?//M<'R5654S)PA>)L2\G!0AN7YL1U.ES'0L_[1$C\A$A!G[$3,\08_^!$( MK/J8SNIQZWTO;Y;0A9'):!+AQ7,.)MI;OQB"([NZ_M7`GRTU\``!U1$OR^-= M>0/B]C;D'A;F).C+:X$,G/F#H0:W*6?1W4Z\BW"D6KVX"EZH/A:6;O?JH;]I MC%'`70$&5\.+`OB52[P<:6Q#H2'1X08B^^;R`R.K+Q!8_0/U4X!>?L<8UR8F MPN)_ANV?F*'J!4A'#:.FFBANFSIH3:-CA*:@'Y@$4.7U/SXA@'_E(T M;@!^86AP'"G"^27^(B*';$&J^F.,_6R4DZ<]I0KP%6FIBQ5/%!IQ^@F"JRU) MK;9.9/I>SWB.*KA$Z\^\,T3R;4I9=6-??)#_D0[W[.DNHS=1O\I0ULB9+FR% M%R'$CHK7%D9J"-@'+4N=CZPC5-U)+F&O>T_?V,'0#T]*\J)##-`MJ,%3/."Z M&(ZN+J]_/7M#HFGFME&1VN.36%\5_`83>Y[0OB\PL),BK7QT,6U^:P#XJO>2 MH)6<26_0:\_3F`XZT)Q">:^#=_&.PC79<7'?9PF$`GN%4(#9(I@*S02P5 MF`TRJ<`\)I`E6VDV*Q51LTDOL)EYS#!X^*QOOX&3,SMX_0U_NM#)#Z(D5+$NS\8JITSK&FF4#-7%G[`$K*"+\&2Y`;5R^^%_K3UI5]M(MI_)KU"8 M3)"Q3;QC3*`/;9R$,RQI##V92>=X!!:@B;>Q9`+TY/WV=[8U[]$.^"9A,^4EBE;$7?BTYD76"70%)I.!* M<+O;A'7SNN3<3;^54#/?(I:+3,7FC.YV-_8V<(&_QO<>MC#4/S>*<=)&&=^% M9*VZF`8T]!T7"?PWHHT.';1A;:Y4*Y7*KJ-%X0)1`0A^J^JWFGZK;W1BT(;^ MW-1O+?VVO=%1ZL0H"'9%Q''ME+&26(68$Y^2J>H&CI&-G/\Z+O"K;YUZ0;^V M8K"X%7+1W5'ZH"S9K^YLV[=]4.S;MWM.G=6+XXLE04G2RC$TWE%0)L$@KSF9 ML%FM^TX7$S2]3=WF6I45>FLU98G%1^SK\`UXLU@0NP(<`;\$W\AQ[SK!/!?N0P)2A$D_!9@]>XF,B__ M`]S+8:_?U@K8PDHH@DFL!$;L/FQ4$X?_C9G M'NV81Q,/)^*?\8`\E5I10G<%YR0:BTL$]LK.04X9H:S]+/7GO$KL=GYP^KXW MZ![T+]R"]"$#1U78$(!?CNJ[:6&=F6S08[8S/T[FE[ MFL4_<1<"NL0#Q]JG9V1!(J1M55G<6=W>P1=92#>A;N3B>0M'0^Q1X`\[#@N. MV,XY0#$0:98OR-`%E$1/9\E&,9$!*A:3 MH#@CL!*"-/76F@QI^/12;?PHK8_JB!=\_HQ3?\\Y6T0>S56]-/H/WK5:-U'V M!)TRFR6:3;5B23BF:-I0Y46TL:IK_)AP")8HH6R4D$&9X3Y9%T&@Q?Q#KPFAG;UZDX5 MG1+5:Q5M&&:8'\F\FDZB8+)`KOXOL'W!0A&C+(L.JN)%TZ_NB1]Y!3178UD$ M4IA1IE0:5PI=ZA:4U$"*CTYPAC2!H[RC`-\-IAO)KM%7C162CR3U&Z*93>7D7IVWS4;C5JV4",VNT2U&X9 MM5L+-=;GKS?:VRM0"\(EP_/?B\E7P2X/CO%CP`2"*"'[]9@D9(2H%I%A0O?# MN9U@(+^]S^UP17Y8-*?CU8W)`\LG?^8X MILLB\PLT!``_7;X_,PT-LM1B3'.QK_UB<"E=PZ$Z=K MNX34^;JXI#4)V%1%?/`6O0@1D-'M;T&KQZ!@].)B\/&L?_1I\.LQK`5]83BI MV_#'$7-CFA.@,K*E:4+EEV#2>_@`IZ]3UV\'VHU&H6"L[_G5&)Y'MOOHZ7W>H5,*FO:()24,R')T`D, M8')F:GE76YU*0B^483,,-5HQM9M`Y+93Y(?2;GZ:SB)O?AO;U<3>V3`)=8A9 MQX!G]PS5/F.%T%L_PB]N05WJ/EKZHIC,J44K\U,J=]'*_93,SB/3GX^=)*+: M2W:6*(S0_2\2*X\[KQ[GTV0-S7-4>,\@^:M3K.J MU>45S1DV"5?O5(P1SC)?;3#D)#P(LI3/]D[X^'COC9*N">6CRGW\.WP9\2=S M47#&(__>'\6&&XW*#@J;B_+D;5<6`L2??>C*U(=2N4Q+$S:I!;NK?#])M:G2 M-D,TB-_-L=^8H,E)BXQ3'#6>XNO8O#F!K^J=3ACFO;VJI M5F=Z[\]O8!"D+FH;M39W1,U!G1I<74;WU^9U]8B[0&TA:2HTZ83.CSPF;#*- M4!S(O>0!DNK#D_IB8N0A1A43B6%P'X3D'?61Y(II+'88"RW*H*$!"RM=U'R[ M$P\.\3#T2LY5"0WQC*&HO\5CU[JDAJ'REO&BQ0_XSSHPH/),\2_$^QSW^BB' MFTUG-5K2UG!,WLM=*C3TK7/%-V;R_2F1D%GD;\N+W,LM5 MN9]?Y`H\]W/QW,_'\W!%H7NYA>[E%WJZHM"7N86^7(+IP>GATE+AD)-3JDK) M*O7L?&FA,(ES"E4I685^6EHJ8_3RBLXL[DN%7T8M^9`9M?YVV>M?2+5U5^9Q MJTF'N:(\LR<5DC;NLM$]XXR&$QG$I<_/).V*0F/BVH6N(.W24I<1UZSEATC; M/3LY.3![E-S=UIITI2G/9V]8RF1.622%RE&._U4;[ODS6R\C,IW2/*!Q#YII ME9R'R=2GK?AA@29G\(3=QE(4>DCXGGE0S$N\3*M/:I5^T(Q+7,SF`WX*#?2?(3*)2SB&G3T:3,.)IBX_%A M:[%AJ8A5N[)-6FGR?`96<`B(AXS2-4LJF_T@2@^&#><(%7$/SM]_/.]U2PZ4 M'!]TQOXXP_Z-;)H:B7,.@5I@363-S;`MS%L8MR1:]%%6=B\?!D?D944I&8MP M)2_Y290;='KOX",[C6I7=VK`A4J&!,C@X+QW>L!.\%R=IZQ*E4%]YWNS0B+G MN_,>9*FVZNV&63KQ,17B-O&Q([J&1.M??50E(B?U84"A*T+_EM14IO,`'OX0 MU>*G,-;IW.Q%I'\TUX[Q,2B-XXCI!GNSO_*C2+EUCSW*HWO$B;_EG'!I`(?A M."8HN"!G9B$-%S'XPH.6-]'Q-=`Z.D#<,4;%R-+OS"EM.ST-U,^5)&./"D$$M,*">N#&C@?MLM)Y6 MXE5,&%' M0E#`;72GXC^0:A=%`W"QJQ`7*/UHHL:#/Z1RN`_9?2YYOKP)_-%0%<)C%OUD MC@=W0_)S2]IP-XL1E84N/IX9;883#%"I`C5SAVZNE M6@WY]EJIUDH<8`[/)Y5*@#\;/0:7!I5I46!ID)+=.;`_V M5=R`JI@L,HR435:B:LIHR%S5<5F`&.=X485^$ONGN,=DKG*_JVJ>G@UN$\2@ MA_A@0CIT%&5BJK`B#N\E7!;.B#%:MG&'=F)J4KP?!6__,W-0"6A-@1,KA1G3 M"^O?%S93<[Z)P2(G663E)?&CM8? M-#M.A:I0.\')@`S\[$`RQC:53!>')%)/:G#P8E$R$FZ">1C%$]R"H]A;V(IQ M,`F`'BSHIJ!)3*>1?R/3U94E3=81O<^@`S*<.9Y('SDXQHZZXX1_9!:E>K8@ M@NZX>1]XZ[3W2QK.J.P6PQU9<&DRV>F:3#'`R=$I8./6G$T%K:B86J60BV2< MB0RE-$0\5%W\*9LB'9=JY`.O55,N\&(,^J>7)S1HFA7K\W'OU#TI`&[PM[R/ MPNXW`FTUH/\K`O9AP\(_FZK`HI.D'4^X`J0X?RA=.&LG3F?A'`6E`F=OD/G@ M!G:_]C5V^#?)`<58E0VL;+32>:0>@QY%.^/3\W,:N)[V3PZ.CYUVAH"3,P*V MN#Q\5J!?E!W(3IO<(-4J=>7@$#GR,1G"W&B7B(N;SQ54?-[XH[*!IT%MU,:` M84%=;H)>(W^"7&/H^/C0>SJ3CK.`1TDZ,"9(27"(HX#$*?(BZ9EEK^."L@ZENWJ,X%<:A?AY':F]7LC) M[=XXQ3U!`)VJNPOCMY$'[2P5D>KB6KN^K3QZ(83A$?2/2`^(P%@S8TUM[BWI M+G11IV9-\&77&>_R)^XO4>E7I;M0_!OXO^!8`UV/&^ MHUJK-7@UH2DY?\>AOBRTQW6!/*")&R/-B9KM+PSPA2DITGBQG:$E44LZIXRJTC;M^$/*QE58%Q-2@'P6C9@]SZ5V(Q0ZX3/+JU M2SIMU,[O3&%#I5.K6[&8R(*MJ.W8Z-_F4W@W("X_%1+Z#EKR$O4W+_G%[[O)O_3WR;\-BJAX5H0WGGA MG2'PNO)O.1V^R[LETPS)AI*-6T.98QG>>.1+`/`DJX[2!MF;;'[3M_UN"*MMA`Q7E59G3GI*IZE2E5Z. MA^[40MB;AK3Y(^2N;?#_$IH1A.@`%:7JV&WJ6F]GFTX5_(CM)^=B-1%S#;MH ME+E'3M$PO_MZB-Z'9X4"-PJXAF)1+_E49[D\E[UI;1XW,D(.!O!DK,D)7+4@ MGE+G1H/SX/#XF$-.Y66<"(?6)!)O+O)@VT2RU#B[T&TNVW6ER3HT_"0:`+F0 M1Z)8+6LA;OC:TX$.5L?.1K_Y,MQ%9"%>1Q.?L<=P.QK*K5P>]%,* MW!24DY=!Y6/QFG6)E$?W:KW*9KEUS2;F^7\SO>"FVL85X160&K\JL`"'K)2G ML8[R/7B8)I@2R2N%B+*FW6H"_1AES!7#H85$!3XRK_@Q"D"9A(1*TP:#/@+[ M)=G)4[BVD6\(/1O551Y,D\0L:344]NV93C><$5IC*N6#4,9G0[A;?JI-6RE$ M9JZ;MH(D@/2[!\<'>`EK?CPX/S_X1\?00-.GJ'4RM:=%0OM`M#T@.FMFG]]K MC^':^TGJTM#TC6N5HT]2AM\B<.9H'/D;+CJ7=<>RY)#-BC6KV8YZZJA*Z M2\>V1'^OU4X:*A!SQEUJE93JT$1J1G?J*HT%`]=R,:RM;O.-CSREY:9K+O3% MP/>&*+]:18DEEZN0D9SVYKMK95Z<[C=9P;'"N/$S=^1#P:%5L.'1-B,MY26@&SY[GQ-#B+1EI/Q+W>@T'2<9]#$5`6.?8W' M)Y6$;J[A8]R"T;JQ9G>&9G?>^A.RCU8Q!E5C-E6(QB8%W.*G27]->'0D;S',O]<'X3,<+Y/X][Y;D_\E0<:;.)K18WL=7*;.(3 MQC3/;V)V:Z:XJEXD\Z__K)!\NA_'9R_[V[DC^<9NGM8,<5A&T>N;,8'1.6# MOK+#<6XJVI-'+H9T[9I&\?S@]/#L9`ER=B^0>UMCAA< M8>SXF1XC7'3F&$$EQ>SDE'YB2)6[IJOZPGUL`U*K5MDM*S]_AD;]7O?L]+"_ MA$A\VQBNH!+IP^.!C.3#=_ASOA7=#R"WHIBXD*W6DJ:,BE>A>G*G54YZ:N6V M*T>S=A,U-4T,J`6#512>+<&S];,TO3PZ7$+/1;!J/D#R@K6T&:&V(-3^681Z MRS'RGX62;^)4JS!.MM]M-$6HZ1_RR4?`NG!H<5 MY^>R0T\4/0;#D9]7OFEG`J#XU!$T)!A8XV<7R0]'_0ODYY M,+@-#>T_VR1.:ZDMM)J:<;Y5\2W$X]!&>:-$-IIE.=34MK>)9Z>G\:1E/`#MH4= M`&EQ^'P:3^/?SHXL> MH/5^4!MX<%`\%^[[C7O=`8DFP9$:3.R(.Z&0XH"+LF;;BXRC*4JU8Z M]7:GGKAH$.!D:`K;IW]KFRC*#R.*8GP:QF`BL/*B?&XS5+>H,>+40PXFX:1_6'NHWZ1!1!_ ML,K":'9AK(^+PQP_>=<^*=A`$D4/A*7QS70>W+[!1%N!""KCZP#T8005R0^+ M,+DP>C6ZGLX"LL$U/^*$"V\3'WT=1H"(R=8XV]H:QQ1Z;Y*ISX9+[I/XQ]%D MYLUCUD&^(M]3JK_#*"'^Y'L6!D)2I,1^!JCH#5CV;::,U"XK*3TU2BT9 M99G&<7K^H&8G-,=][:E9>&^H0KN>LI?,%!4JV4A"5BB20OP7*3P-_8>)"+'E MTH"2"_$E`L54U[^(D.8B$97+\B:.]]S-8I&J0:>*AJXV*P'+CH&Q5FC)JM$= M=K-32:YM`IVX[:Y5K/B$]1T2TN!#A%2QM3I,:4UX5!NU%5L][(,;7[FX]7*D.BN;-4KU4K=V7=&MTXM0SJ'RYF:G_$0A0[$T[?K9EP-H-4DO$G).`SJAKK< MDC*>5A7"_75TXSQ.%W,^`(R]Z_DT)'WGJSDN%.CYG96BF03_1E]\9!:/M0-Y MQIDB2)-S643!*#2BI=#`:E#HI^U.):%P(<")$5BO66$7JQS"EQ]Q`-^Q>%_[ M'N^*I&3@]C\AJ?@OSF>8U%](>4B@=HD-S`?CGM+` M5+'B!2EF\!\3#AH,.55Z'$F7/_*]X$Z+C+/4BVS6*LX2*I&(]+$,G=;E(:WV M3!C7B(>*4J5]U[LX?S">%8[CIP+R/-"'&+^69T:.IM\FG8 M5F'7T/FL<^-_PT`_Y'Q65A$DBEJG2"]Y,7:]TA7IQWH%]"]R13IO'FFZ79$N MM(K(=@8K$C8:XXJHLQJ>93J.-M'0,=K\@,*02"@VQQOA=2?:NI2HJ.EXPY=$-QX7[YHG9#8UM6&8Y/8R]2:*G`QB:8K#`445\LM.YH1(F4P?V&8R+ M@Y9?$JD"7:1.YY$8FH2`K(H3EW>B57%_DCLJC2\C+I`^H*<`%P(IGG!4!FIZ M;BF<&F9-%MTCF)M ML^_.0B\TD-O0H;_)NP>C:6+?V>*_Q02!_U2]Z&Y>WTS,.*W"'Y,IKT`$-@3K M*.+&G)W^I`!T%5Y6%52'II%`WMF0FG(:]CNI>X@R%OLFW*D:-A)+J'/[0]1A M)!/D8;*(_F603%%C)2-)C_L$,2P:Q.,D00BC];>Z]=7Z3@/W@2HZ*]F)53-B M.TG3BDD;(CUK*Z6"@(M%AZ9L](.>V,D@C^;ZS7PZIAV?JLDO(L:%#9`WP]FN MN6"@A3VFN@4:ONAA!DOE7B*@589G@B5K7A&:)VA$$Z+1G?#A9#+*-G2FZ6*; MRY:CD]HG82I.//=384U%TRXX\"MEN*',4,E2"7=Y[QHXC)O@-F.;KW;J<-0S MO.'$L-8^WP)FW-*6K=7K&&`5']J6#P]XL@U.G2HN('!X@`T.Y1CDE-L9/DZ\ M,;(!L&..IAY:/[(6-1E=HI`/_3\1;\#NM?#3X3].#TZ.NAR2U:CA7]8>LH'U MO853ZAL1:^X[PZE/(5F9?.)NGASFB4(6?);X8 M*B4),_`0:H.$1@Y';,Y*G+1R0!/'F4WVLJI(*C#I;#O?2W6A9\6SY>A:,#D" M,DQFUEP5'MX!.950G@M/3;HLY-@QFL;.<;%'THQ2P2PX0?;L@FD(_6#!B>Z3 MV8G&=J.M<2-#R%RK=1HM2.IQUG_WIKI6A@-J M]47Y+S!!RY>4Y\!SRH>FG!Y=(<:IL+@#>9P,,"B^__MY`Z$^7;\H(Q6]ZP$Z M,H,1NK[NV-@X5+.SGBX(("$_5.J\@R*H9A)0X`S%^LE$TR)EG!2CD M[[[SU?=GM'F@0`O.N.11"1MZ!1O/-SR/%;!9N92`M0%W MNNZ[XX/W_;WU5U`<;F(#_N"\XN+7$>:@.[@X_\>@>W;R\>BXY]*PY&T`MJJM M8)*2$%8Z`HAIK;#[O4AR^*"F#=A%@W05`<,0`._GUO\`XH-NA??OQX=G[Q`M!6/E[K M[%"YKF[@*25N:L#'0<0+^QY:.U?-#;4B;EG$HW3J"%^4H9^Z!]T/O0'\W_V; M^ZS\.CL,Z9_)?VL40,V^OA]<#Q3$@"$&&N)S8BQ]IDCRTZE;V/U2'@(OY)RSFW M'MO-:L&T?)><9-03E>?D[+!GEG%I%XE"U0%M#-BCY1_\Q[EXR"MC;!9/H%B9 M.`J)^6Z>^O\O=>FV(^)G[W#;@BW_=CH=PB[KLS?%;S[-*1H3`SEI$VF2Y(*7PK8R6I%>)4)Y^QA M0#:U>M!R>MA[=W3:2_H>?E'T1ZL7%RXA03@]2>&8;K--FH:,S("^82&?EU1E MX2N3T&"EW%=_QCF^L[-B%NID0NL=3]P:.[KF5VGLLQ9-='&V.8M5/F12: Tel: +39 050 844536 WWW: http://www.ifh.de/~pws/ Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy