ELF>)@@XG@8@@@@@@@@@@@@ @@u@u x 0@0@u0@u@@ Ptd::U:UQtd/lib64/ld-linux-x86-64.so.2GNU'?DI%ntuL{TWX]589&x$bQSVY[#^`a" r +e./2CmU(f!h<E3BFw 7:;vl AJ0H\~k|=>@46c*zGK,i pN}-_Z1jd)MRgosq OPya) ``I|@ ?H0CP    ),./14569;=?ACGIJKLMNPSVXZ\^_abcefiloqsuvyz{|}~6h oo ooooE3: : oG3:#:hffd̃@:h:hg̃@f̃@̃@h̃@̃@h̃@̃@j̃@̃@ j̃@G-̃@Gm̃@m̃@õ@ʼnppoppodopCEoppopoopoݣkoo9 l`2b֝pK̃@֝pqX̃@̃@ٝp̃@_Y`Ỹ@̃@̃@|!̃@̃@̃@oooooooooŹ@o+|ok C奃~̃@k|̃@̃@̃@̃@̃@̃@̃@6h̃@6h̃@6ho6hI6ho o6hon6h oo.ś oo6h%Il  <ok%%30}7O3%eUuVTd!,Kg*]%CtK%CuDuDuJDuDu Du(DufCu `Cu0DuEu l@)Eu b2@U`D1uEu Eu E1u,E1u=SR1u E1u R1u`kF1ua`>S1u$F1uS1u| K.@"UG1u |c@O(T  2@Q G1u`@H1uH1u!@Eu, w@1u`@1u8DuaA1uA1uK@Du k@eHDu  LB1u(Eu1PDuZ`B1u6C1uXDuvC1u9`DuhDu !D1upDu!@EuxDuDu%HEu t@ t@ =b@? )@!t@ '@5T1u u@$*I1u@T1u(EuP I1u`J1uU6J1u9CuEuJ1u> uK1u`K1uZu x/@_L1uL1u  JM1uDuCDuoDu_DuDu1Du]DuHDuDu@EuuDu`Eun 5@d`CuChEu a@C`M1ux n@H4N1utN1ud O1u`O1u6 P1ub~P1uM P1u'Cu`iQ1uCuzQ1uCuCuCu, 3@Cu Cu8DuUCu'Cu zl@xCuDuDu m/@ \DuDuqCulibdl.so.2__gmon_start___Jv_RegisterClasseslibm.so.6libpthread.so.0closeopen64__errno_locationlseek64readwritelibc.so.6sprintfstrncmpclosedirstrncpy__stack_chk_failunlinkmkdirreallocgetpidstrdupchmodstrtokstrlenmemsetstrstrrmdirmemcpymallocopendir__ctype_b_locstderrgetuidreadlinkexecvpfprintfreaddir64memmoveaccessstrcmp__libc_start_mainfree__environ__xstat64libcrypt.so.1par_current_execpar_basenamesize_load_me_1size_load_me_0_38size_load_me_0_34size_load_me_0_9size_load_me_0_5__libc_csu_finisize_load_me_0_1size_load_me_0_40size_load_me_0_44size_load_me_0_42par_env_cleanpar_current_exec_procsize_load_me_0_26size_load_me_0_14size_load_me_0_18size_load_me_0_22par_dirnameget_username_from_getpwuidsize_load_me_0_10par_cleanupsize_load_me_0_20size_load_me_0_35size_load_me_0_31size_load_me_0_6name_load_me_0size_load_me_0_39size_load_me_0_2my_file_IO_stdin_used__data_startsize_load_me_0_43my_mkfilesize_load_me_1_3size_load_me_0_19size_load_me_0_27size_load_me_0_11size_load_me_0_15size_load_me_0_23my_sizesize_load_me_0_21size_load_me_0_36size_load_me_0_32__libc_csu_initsize_load_me_0_7name_load_me_1size_load_me_0_3size_load_me_0_30__bss_startsize_load_me_1_2size_load_me_0_16size_load_me_0_28size_load_me_0_24size_load_me_0_12size_load_me_0size_load_me_0_37_endsize_load_me_0_33size_load_me_0_8par_rmtmpdirsize_load_me_0_4par_mktmpdirsize_load_me_0_41_edatapar_setup_libpathpar_findprogsize_load_me_1_1size_load_me_0_17size_load_me_0_29size_load_me_0_13par_init_envsize_load_me_0_25GLIBC_2.2.5GLIBC_2.4GLIBC_2.39 ui Kzii Wii aui KBu@EuHEub0Bu8Bu@BuHBuPBuXBu`Bu hBu pBu xBu Bu BuBuBuBuBuBuBuBuBuBuBuBuBuBuBuCuCuCuCu Cu!(Cu"0Cu#8Cu$@Cu%HCu&PCu'XCu(HMH55%5@%5h%5h%5h%5h%5h%5h%5h%5hp%5h`%5h P%5h @%5h 0%5h %5h %5h%5h%5h%z5h%r5h%j5h%b5h%Z5h%R5h%J5hp%B5h`%:5hP%25h@%*5h0%"5h %5h%5h% 5h%5h %5h!%5h"%5h#%5h$%5h%1I^HHPTIt@H t@Hn@HHI5HtHÐ=i5UHt$HHu5Hl5HHu=5ff.UH=5HtHt (@uIAÐUHH@H}HuH}t H5Hu HEHEHEHEHUt HM<=uHEHEȉ)ȉEH5HE[HcUHuH}uAHcEHE<=u2HUHT5HH)HHHEHcEHEHHEHEHEHHEH}uHEHEUHH H}HuH}UHSHHH}HuHU<=uHEH}vEHuH}HEH}tKH}MH‹EH9"HMHUȈHMHEHEuEHL5HEE HEEHUHHuP5t;EԃHH4H= 5H5H5HuiE5EԃHH<HEH}u EJHcEHH55H}HMH 5H5HPHcEHHHEԉEHEHEHEHUt HM<=uEHHH,5HHEȉHE)ESHHHu EEHHH5HHHEHEHEHUȈHMHEu HU<=uHM=HEHUHMȈHUHEHEuEEHH[UHH H}?EHHHH:5HHUHEHHHUHHUHHtHEHuH}HuUHH0dH%(HE1HDžSHDu@¾Hu@yHDžHHy HDžkHcHHu HDžH54H~H~H~IAHv@hH~Tu@H~[H~H}H}HUdH3%(t蝽HH[UHSHH84HEH8ƼHEH}H}Hju@PH}Hv@6H8bH}HSEEHcϻHEHMHH8H}оv@IH@H}t+X%=@u4tH}о H}耻H}跻HEH}&HEH}H}込H8t H8HH[UHH H}H}HEH}uHEtBH}t;HEt0H}v@zH;EuH}3H}%UHSHHHH@H8H0H@ҺH8ĺ(4"4Hc:H 4H=4H8H@v@诺H=4HP$uHEH;0u Dž,bH=4AyE}u:軺H 4H=k4HHAh:URDž, E쉅,,H[UHH@}HuHUȿPHEqH}-Tu@ڼHEH}t]H}E}tF}t@}t:HEHH=4HMAH¾:U莺EBH 4H4HEH8HuE}u E}H4} w@AH4}`@-H~4}aAHr4}AHf4} LBHZ4}`BݹHN4}6CɹHB4}C赹H64} !D衹H*4}`D荹H4} EyH4}EeH4} EQH4}`kF=H4}F)H4}UGH4} GH4}`@HH4}HٸH4}*IŸH4} I豸H4}`J蝸H4}J艸H4}JuHv4} uKaHj4}`KMH^4}_L9HR4}L%HF4} JMH:4}`MH.4}4NH"4}NշH4} OH 4}`O護H4} P虷H4}~P腷H4} PqH4}`iQ]H4}QIH4}SR5H4} R!H4}`>S H4}SH4}(T}ʹH=4蜴gv@蝸HHHEH8ƼHWH4H @4H4HEH8HuE}u E}tUH4}5TJH4}@T6H4}U"} H=4ٳUH}:UôHu迭u@EhEHHHEH8bHxHEUH}:UoH}EHHHEH0H}sEE;E|H=h4HuWEEÐfffff.Hl$L|$H-4L=4Ld$Ll$Lt$H\$H8L)AIHI蛲Ht1@LLDAHH9uH\$Hl$Ld$Ll$ Lt$(L|$0H8ÐHH8UHSHH84Ht1H@uHHuH[ÐHH/:exe/proc/%i/%sPAR_TEMPPAR_PROGNAME.%s%s%sPAR_INITIALIZEDPAR_SPAWNEDPAR_CLEANPAR_DEBUGPAR_CACHEPAR_ARGCPAR_ARGV_0PAR_GLOBAL_DEBUGPAR_GLOBAL_TMPDIRPAR_TMPDIRPAR_GLOBAL_TEMPPAR_GLOBAL_CLEANPAR_CLEAN=1__ENV_PAR_CLEAN__ LD_LIBRARY_PATHLIBPATHLIBRARY_PATHPATHDYLD_LIBRARY_PATHC:\TEMP/tmpTMPDIRTEMPDIRTEMPTMPUSERUSERNAMEpar-SYSTEM%s%s%s%s%s%scache-%s%s%02x%s%stemp-%u%s..%s/%slibperl.so.5.8.8ELF>\@P@8@11 22323` 77373Ptd@@QtdV8czM(k"Qw&}6XJjK~N( J:D#_!&\|#})T8$PO/~^I7  |BdKR Sdu$pw4o;%vN+@sNBWcO=*AZa*,yjA IMZX>~T|v* ;01f]{?}s5'*GYvg A*GVHvhilm ,[ Y;{uebi,|7wOM^=``L'E2=!} X \FB<)&tk~,IgzSWtbO,^Pb  9X#>Z3^:ORd5/.DLQ3xUY?WwU9z^ h n-~V:&K7-rHP00pT',gK>K^yU.Fl5^$qK<8husEZtwvh1  ZA8. B6X&S_aW{iBT6X@9"L{V&qNH6p-2LfN`jsda&9S/)yg/h -}f"!#MP>.l?]K <O $guoi2%/50%QD tJ<R<'ew.}sqGX-@}xG:>*=#4e]vA ,\?bC|pl\nCZ#[Gu?{4~7d3sc2\' he1O{]x5_&r4y( tbA`)Sx3pz!/WW>G Q9>n;c~\D<t6Cai@f7_o:2M=D#2$1;" +%Q$wka[+42UZ95@gfpRr"8S;+nElD` +yo2p'h.V_THC!}"P;oW^8]d.P<jKmLmI,0+3#.bFlr koy CM(3xYEjMP'_ +Wqga:DnvmfOmtUR)9iAqySub21Yw?B(QR*9@ k( }d [H1q'tQm %^I_xc`40\FQ {7 9%qiek~RJe&0jE1=] <H[Cr:cu\:$GD;P~y0\YMi,/Jy*?IwCZ- hI CNf%S_ U:rH=v]m 6n(P4aLVzV< R#Gkl?@8J@NkV8p dXqzlU>?Q f R+$o5r)=4eaTX|le)6|_uo"gzm/$z7)tK)r`Bd[JS je-Gu DI=8M"F%j45(n[i3vnIn`;7 -pm U.[ sckL-FTbF66csh]+V|{JF(LY!ExZ o1FUb@aY]3!sTWHL!%>g NAx'ErHE3YE{fJxTCBj1"*/q[N!Az0|c5`OB7@l BR P#" B@$!A0YR@Ai H 1J @L0(t"!" D (!p@'B@ B!4I@-2"`D"C "AH0J#0`(P1)!`E3 p@"-ب A  0!aA|A F) ` a: P$eDD4H"T$l @!Y0bJB!$p+ @L(D JBQ DG0@@ 8:D@   ((`c@BFBD4"(h *D N@S&!GHA@!"P@ @@ 0 @N@E FР(g" @Vpb0H"( 05:TBD#@*R#D(CP0 eDDAA$(!)@P r@"$i0E1H,bH$@H (H H @ @\#!!BĀ i@H BxAF$8X""](bx%%  @%Б!"(\)@u. ( 0 &I"D@E P$DBXTlA$H A`$@@@H@@*JB$d@Bb(R*@ a a `!H0P  XAH  D"!` H P `@1A1p 0 *@A Bd$R' `@p@PH@@$@11 Q 4FB! ` "@%88gDF@# mH ) Q^ F@@eY"B D"H!h(`NQ2-B"PJ@ܢ$H@D  CQ$ p$B @@F!CIQBG.(i1J ! B"!5)QBaD 1@!(!Q @0@6`J41DNP,0Te@E !@ DHB@$dQQ0IXpJ B@#QBFy I@@@m4AU %(8@s @H1(H$$ !C!PJ@0x@ b€58*0$!@'X젊$b@ 0@ @ @,8P0 9()AA(1 J0@@@ (U# @@A (H),X EB #Ɓ(L@ '@ p@@ !%&+,-1279;>@BCEGHJKMOQTVYZ[]`bcdfghnpstwxz}  $',/36:=@BEFGHIJMOPRTWXZ[^`cehjknprsvy{   #%'*,./124569:=@EFIJNQSVWXY[]^acgjmqtuvwy|    !$%&(*,.12469;=ACEGHIJLNPQT]_`fgjkmrvy}~   #%'*+,/12389ABEHIKLMNOSUVWY[^`fghjkloqsx|~  "$'(*-.0245679?@BDFHLNQRSTUVY\^aceijkruwyz~  "%'()+-./13568;<=?@ABDEILQSTVYZ\acefjklnoptvxz| !#%(+-.048@ADEGILMPQSUXZ\^cghjlmpqruvwz{}nƎFPZ@GsxbO῀!e ̿Դ$)ZFm<Y.o,b%ic㍉\P<=͜&j[a.nkت-CjR>Q@au Yg/N$ڰTAA0Z< /c8 ͤvTb>}L=׉\+(PI F#_ˇe΀^lHӀBΉ.U#j_Yvaz?zk7gaQ9s-;q~7)z76'd: (YTu) Pm@ga]#_)b'Ƿwv_J*clQxנYW.IGK CD1-ք-PJEיִSauP6Wx=fUnk o\bmY $y9ުZD"ހL2QnnG@ VnJd er@^>ݔ/8QaY^2whNK7jXHĝ^P\=L8ٙ]]©atoc!$~<n5P۞Q/h+B5A xTY!Jjv2T>]G@YԌOh'֮`GV2D&-eGlb̶c~OnqD 7cv=CE ]nY$9e(9G-;u|'T \ܟVY`Io#_ ttfJFA1 g]DY$f!*#Q8|B}VIYN٩ItYz+(PnBHObzWΎhLYn|msK}fَL80](Qs~:|:&!| 8dk2'+Mr\@(G_n?  0.4w?yw.lE\<=J?yy LO;:j<{Җl .ϥ[%'~2kYj $v94Ayk#}U/J \ldQP\$:g.?&(_^&fxCss2$2?bha bY^+RîT8k0IXq 6mni DI̛Y~>o}MxhwQpaz`ƞ7?)̼'驪q!F}a@[.:{7@8G iĮX=YsJfdҥagP1h=PMCPb *žnY$ T0boQ/AO 8~pMNTganzŸ(T]IEXHC؅kBWD)E0KJs/O}mAEL@/^ sԑۣTs9hao*͗ YY^?zl}~dm:'p #ړrU=.`E>mDxTF_{hp*oyv@b);v, lHڭU_+yx.3ҖjmxP((k\'JgᮼqX% >BDOe DŽZZ55\!1$W*ͽל41=)J-]Sw7q3xuq̠jgV (<;}6ELFPֶQ ?(ԛ])I6~k]x9 |Y-qfnend_3ccaSwODomXFbQE H“ȇղ1MVD op>Y'V 4!} ,ԇێFG<쐑zF>&3Ckq#V S{oSxD4Rr9\Ae8#什R+ΗLYxGUIb-49'x=sHPA?x7+Bݜqa~Ou<=#ZOyƌY7i-Mtpݙmc +C[jPC?Y9F%Kr(>HDAJYo)f/i N(`9A?}|hz9l SWYnQpDew'R|Pb=s@<`L7උoH[EL5둛 yR! jhg;[H \=Ej0L'aKy>Icto8Cҫ{ha,H>8ŧE7s%&}B4(h.llA)I.Xs{6hFvKdn2a7]3hkf c_usғOq@o*DR2ivȿ#^XِkjYڅr[FGd/h%4ac1fOd9e1_G=hS<_6}jE]2娵)Z4W1=⿚{ 0q[4Q' ޕq(%Bxj 88~T]WNd SCE힐W=|]xU $_yr7AdUVfP,pRh0# W\P'j}_M^u͋)J{HIipyp0ļL"~N$' 3xvtè\qYpb $׌[0uir pUsx':b\~$Cf4 Vlcso àŋc ~[[뤪~Y$CjR;chiBސY rw{>o8 !;`|-gFn  =i`Tl2Gb'-31ֿhf_0mi0ΧX~e6WqJJe2 /@d|` ŝtmY=7hg2}а̥ L\)ĉk†8[QQ65Paek@}~HDbCvTIW6O8="hAZ~ -0ʪY_*%/:F˂AkT0IF7™)H޿_/=iG~uB.V$f)P5 _V=D|NYCLYd?K ȰpDL& 19DHY O,3@k/kz="~6R` )VJ4[X! -_DX o/s)2 =F_e}Z\u0)? k5Q䝚3Xk)Dv6W-6ڳW%<]A< @H;dǤXlWI }_WYGeZ DJk >;ąSM&WUI٘LUA<Ȟ㤭Yab2D6/Wn|,P3b`W~vUѨ8UV !8;ReG(%|GR$SѻJ%mT$O7&ñq<U)J?$J1iղqLB3iڬi#A8#(O;\JHNJ5BBE60Mb B+V5覱{|Ņo/Wn< ._gUC~,s)R^:|YQkD0lgNP+D.IʘOrKl2d^&&&j r>_'h `K /WnhmMz&laYJA HL % A(уLܓ͖OOkJksK‹(g[,̛  v<=^<1X]DƮhOhQ}_;zԟ8gB˵ha `K6GLfFL0 uwsHd9V)) LY3#AXg[ⲥ` ]،`:==^}ܧ(r/K(Aqתx<H3-wV߾:RK_F9{eR6gq׀+ ''ZH5V_^7ᐛ*R0&xZzch_Fۦk KiI :FƿRHKI)6,Eq:EHӄɮsKQsܪN}@ˊSRCTz7;o`] !:V)-:!ZЂUeCZuTs#"N>zV<"ou{@XJDx=f,U֍`%l5-;뢊 7A13-7e*Ib*7Z;j*Jaos>VHni뽜ژ|*m>mKޟc ov9zcY#w\LV%>cn4m\86mp> -OC%`_g)X,H0d6&Zdx]HhŊdD{L\;85]eWs(W|4Ld.Z{{6z>pnSKC̶Rw(+^DE}_.?1>Ib8æx=S9(mML|?߫ʟ/BD9@^> sO2]dKRrS;1eCZy}`5lں9;#.MԸbI? p!'^:7az?2Dk!$ 7^¹1/?BET$U#$ۿvDT 7= 0l}M1Cq}j{QNhZ8MqTMGg&gbF*dCms@k`T#:Uw4=<\;u= Qu"e'|e1Cmga3Ša+bX4ҟS]wӌ_24ϽK k;{͛Y5S՛ޱ,}_x+Ͻ8XۼKSJIR!FdzF EJ'y<;R4{l'ZM/Z`-[M/S9)zIv,+&8Y'%ϋWxi2]UY٦K:dV]3nJpOZ7Wo3ӣ[Gkru%MɈTGv7B%Oq~`|AILa˱:iziGAg@c"QsY;Wii[?A }O[ 6i Zx3Cىto[V0(,KCWJ}X{{.F~}ؤPx]Q9SnX`Ei+*^P#[>EXjhu⍸2[maTPĤ*,1˼$O|@9-!e0bYל^ D٥i5YkvA1ANJ՜BDHs7P\fA\Tz`^:'>#.Q!F@#5N+o!8K%I%dEF-<7`&]JEu}%X,i,hH%-OG%4Kb# +F!R&YH%EgJ*,L%ZJ#1$Ii!56(NM%xeu9&,_?l,H%)W, \- $C5I&F}M)?_L ON+%Q%F$4u?/ 6?)K%J%Ht,P%~n d B XZz Pp `  @K L6 a sV PlM  > @f # 8Ly   ? | '\n pF @ Y\L MX  = 2 l-   dX @A# o! 81 ; J 3 h vT d_ [ pk @; n* ? Ћ TO `P :> =  | 53.Y`3  1 gP ~ % ~K p 3 Ѓ dg MC OP x ,  Hd 0 - ,  WE ] `3(B  W0 HX +O 0 KF Y7D : A& @܄ HU 0^l5 s@ 5 @Y v[z ) pJ,` 0 P7 | A Xz P pg  p= ` 4 v<  J  We Zc `P_ @b( 2RG %Z   , 1 @ "q  o c C  4N # 2 :  DT' ,"$  >v= ,  (  C5J 0 M ?9 `]L @-" L p k* V]i `- Pu `C ` x [ `$?ӂ3? } 3 pu j x0 T+ F %w ,/ p% _ F F: NCD 0T ^ ТF 9! 38^  W"<   fa Pq > T 6 v (h E ` C 3r _; ( ^f `Qzd 26 F0 & 38W 6 p" !x F :~ P G  pd$ _ g 0jm > Z 6` 6 I8 & P# 4, |n oK ks< '/~ 0K4 ^@ @ m? t M:S p, Uc]% @,  38  P qc p/ b; 7 @ vZ@ rk :  aYp|3 [3\T P^j n ? `3   0DR pfp |Q @U~ Lns I P Y 6 b W cy % PJ| 05 P gsB XJ  S 0^e `tz `uP ~ v74 @} u_ i~ 0P#S; ij ,> < uC `v) E 0z# p] == V w [= 0#  SBǂ35C p }[ y  p8P  }@ 8&t г Ef 38 1Z o1 P  `V\  SS r  R5ax жQA p <S ^\ P    d N Pu ^y > N tZ @C\ РK P {O _ L1  | 4`0  BQ (g 2 r ` p 0_L/  G  7RJ _# p<  z7 py N p, Z@L K17 @w I+ <  P p9Z@ %H  0[a 3 @v g  P` օ 0 5 08LW Px4 P KQ AZ8 @ > Pb *2 = ML {$ c 8 sn ( Wf P  * R: <[ n' P/2 <  . on  pk W[ q @ NWP9 @ \ BJj tx E@ h ; `   ` 3 @z x 0BY P.   k  p( @ Q8 33 `w ZC p  Z W- %% @  4AtO V  y P   ~s P @ 38| 7() I" l1   J!# ?/=  TR ) 0m% 0 x] sy H E И hv G Pv{  P e N P6 `7 })5 P [R g9 ^538p jL P !@ p T %; @ 3In ` 0 s6 "38 I ` S( @ 6 b  Y. O xg ЩM @5r p5;  )z иo   p U#  R Q. | J 38 38 ~3 P ( |3a  z g @D /> %F YC & l  P; ;8$ G  `tw \ 7   =  0{j `/ <3 k p `|3Z `x PCgd @^  PMV M p / @lf 0 1fo  PLE1 p g   mI= " &" :2 #a gKr @>=`H %i 0. >^ 3% 4  -3  MS ^# g`  @^O `m [  h P-@ P # pH + ^z0 @  4 @ o2 R u )E ` O M  6* pQAP\3TF e)m Dz @% @ R 93 P % _S `& r X T `383  { <G] 0  y?6  E 0t     y(o c t 0 A< ' @>U$j % 5 `j pf `˄ 6# 0x" 29 c P W4" `: ~< 'y? v |a 5m `r P  n+ ]j8 \B N` _ E I > @DUe Чj 1 P A оp3I >r ( @7 0?u1 f %A( 1oY h ';3 pn L b  pB k Y 9F C & n| `5y J 6Y k 0>  0]a @e P3O    #W $T n @ >B 8  s~N *  wp t %rP ['! 6 ,  `xM k[& L  q O A d p e \P /Q @ C @ b`  w (X 03 d"4 Pz  @\ @ WFj 0 l 0_ X 4m] O p а  `1dq б s p`3 ws@  `'9l ~ P ,5 Ka R! @Ni@ m x3 _tS a ``D L C S ]U J   i + 0g$ G о@ t @* 0M4  3 t @ rT ^f E m LFF" pF? q c ! { 3W &Hu~ Mc 0H3  gi C 0d ; { "  - P3J ^ |d Pva O \ J }x. ?u : R  P4 B!]3t i W c+ = / c _6 `n+ B pv qN yw 0- Pp !T< P AO J P\Q  ( 0  rB !" U[ Pk`3 eQ P<Y< y!`38  My݆ hC 7" 8 0 `I 1 @1 >q p P( 58 F$h ` ( 1 e'N p" c j[  Gdo @p @ȅ йHni pN * g= % C lW P5* u9 ` 48 Ч W(: ?5 pd q a? `s M8i @ ^ @CA } O A ]2  ) 8 i Ы! g M  4L h d2[ D3$l Z pB{ dm !? 0l X c *  p8 dX L7 L= 05 ` p( 4 (Ex* kt z5 ` Iu д D Q @I p y  "' .7 Ђ  `2O F  aO e ~  PWm  3;V ߂3vh ] φ 0h ]oU{ + D a =t  SM  "38a 5 ` tE  pu:W U u 0M P  Z E? A:b  0n | 5:0 " 35mE 0 CI GT t` 0c P x* @p_ P J  `9qX p2# `_kt l m `lf b r . / @ j 1  P 0s \  @:]3 v p | 6N ! F PfrqU #C W X 7   *U 3H Ts 04 *aN D4 ~ M; `38 Ai ? H> 0: \^  U ^ G @ M  :Z - HD `4 & #63^ `= 06 L E p W$ ЋQK XBd . 0V=X -3 b N% D | O2 9 uM 0 iR P , {  6 ,# ~H   g p  Kk 3j cV >p K$ ` ( `5OW /[ $u  n 0 0{ <= 08 / U 0 W/ > I (i e} @?Z 3S ^ b pi Zf Ш+ Bv} ?FG P oX @)< 0N 7 \ 0,z 0`  $H ?G е 3р \S 1A ` `5 Rh  Pg s ] 4+ `Yj^ s  @M7| 5C~ K2* U V]0 PW (#N - ~ N6 50 @w L) I g 8) ; gv~3 A @ " 38% W NgO PR a  ` W nT `^O j =o T _ oH [  9e] e~ L0K V 0VT? q TB 0 Wm )_  Q@ Ц 4 ` l U J ]aa y з$ !8 `i - 09 U. <!I p   3(! @FU PJ{; = p U PSx"4 | Zg 0J p5 3m' -  _Dm  D 1 =_ ` P @'0 И \> E ] pH A P e p* KZ PA /L p ' #)/f q e @h0 `7h pUg u #  ;i8 Z?  |5!K  ^R 05j Z4L h  @dX= : @ :u p X?s & `#  @RD @d . `A[ h | 6}  "6.  T q! 71 0".  [L   x:5a P =QNq ' >2 @  JƆ@3 k Ьq  [Yu d 4 {] СUY `Qo 0x@3B2 3!a w/ [ `@  ~ Oo> G (cw + p$7/\  <   p+<Nr &J p & ` ) 8oM @ T 4 0  X CiC g V+ pmg K {) JR{ pl WC p G bWkb  eT7 y J 38  38y R `4 | r 38Om 4 p [-' %M N 0 %r  \P 9T ; A i ;C\ `1 1 Q} >"9 0 s `H < 0 "  }e b P65 ID a S q p5 Є Z1  = 07  wA :  p:  h|3! 38} PAq0 uo P\ Tt [ }/B W*e qD pO ]} :g6F 0 eV '6 )A 2U  V ` P v е > 09 Bc PH  @W $I K P {D c !6: >U_ P$ 0C^L @Q*s _J  EJ /E  C5 VM {n Яw: 9T U #hT p^K {*1  R] D v o 0  Q P y : P  @X 23 П q< V 0hY О݃ 0{m< p Mr3   y}V  38k `k" ,] BR @^1 6 mI  0B*p  +( pu  tQ P8U 9  `K P {/ kcUd 02 T i> K ` k =Pn% p54 i\ dM  x . g\j @ `@ zL  ( 3`j 5  q P(zW P]  38z pn# [3 `x  !oul g& 0"Y CI G ` '  #l @{ @p p*] *  38= p- X= 04 ) q G 0 )D : 2 P] y P X U{  + 0S]~ plpj Pw b   v G & 9 F! CVI P SD @I ' $mI  ? 0j k <u <5 &b n t$ @p  38J P  `38' 0/B w{ `.$ ^3z P. `% Pz >] 7 g ` , gx @ ?R @ To : " & {  } 0BE . p o p [ t  z ; KH32 0Q C  Ec: 8Zr  p v Pb p8u Pv pb'`\38v `a3 s rd  ЎJ O] * S8;e is @b    N `n{  &S9 J j(+ `B`q3 "P Ps  ; ~ Jl u  _O Y * `V} :-G ` h7 } ( M p y @ S ^  38- B*Q|3kA m  @a 0cG FC fe ) u @O[ @q 0 PW"Yx|3 0`o;% p} FX (s gg  p*_ У\  * ` O `i & U<"`38b_ PRe   `Eq pF[ | 0:} P;( `38U @ y\/ QI 0#/= 1 B p W \} p' - n %Y c7 y .{  2[w PA  ЖF[ * W e `  @`&*38 0  k 5 p fl;  pVIu  ~ PJm? `=` iQ 3)V <  s` P[B [Mh b6 @ I[ 0  G P [ 0n } D)0  SOw w( :? o M$) p9]4 WV n_l  p[8  V{ `45 @ S pr вJ p i 1 , 9 @ : m 0wK l o P' Zk w& "E [ П2R  $b Х|A @ FI p |f aZ 0 "T  ]: o %S PW4 _ p 0F G @9V0 `z LZ Bg 8  co$ @ G^ px y : e} 0Gl i. U @ I m X Q X9E # \W 0h/ `pJ  +  px CB L 0 0c @0 0. 3 V4  J  ]T ^7 pc lK t  `J  pg 0 38L  X  8w p 0j   d30 W 0' / D; p S?} ;B7 x M 0 Xb pO  0I7 r B @ g 'A kEB p Xj ) I ?/ ] X 0 Q%| 5  @;( } P-% =t 5 uG + xIx  p` p7Q  ~ {2 C. '' p/kW e Pp y# y 'K> C ^ "X 0+PH > v "  z 38v  R=^  38G# S  eb!  ' -%- > L }0 } Ir q=   UQb ! L ? " P AnF  e `(Z8 Va /6 E2( 0 L K kl  S?f 9 P  5A ` >`f3 +   I R `6E  C! p=P   x  .? n | ak ʃ z;t 01# 4U . PFD B [  @ Q '` @; `V lkr l PH 0 J8 0 Ca* pRK o ` d  l4 ` s  hLa Ф- ` @36k Q  [U )!38? I p _ _A z A- p jUp 3. x5  p P WG ,;Q b) pC:bY p jo+ ]U 3$ 0f @-} ;H* 0SCց PgU_+ P[.  !y `U3 o j b & ^ R > P 6 4 FI pt3 0 [ 0e  ZK '  Gm _h 1 Y P 0q + PQ ^ PP p   D: & p#H p |R .Ml Э pm2 G  r G  <1  g  h $ /m pZ d m Ю> PW 6n 4 `{Q6  n/ `H A g} PF#X `! `u { PX   "/ 08 P L@ @ f X"  @un `Z %O B /& #[ t7 @y !H* `RJ+ ZEI 5> ] r S .{QH p 5T @^ WCN % u 4& 00g  0JL) >d `2 sY >P t < F Y P|b  PK {QN ' W P'#& ,M P 2x ~ `Pa  D  5/P  : @Wt P>_ 0 V 0} "b YV  J C G e `385 p I\$ @ 2x N 7 %  r k : b D 0i   pzL  YI O _ u pw @9@ w p_| @5S  eo  @h2ju k `w ` 4 0 : 7S| p466 p{ 0  M   Q 4G       9  x $T   pŁ f~  9 @ lW [C Xf k P }\ E; A }E  y d; S Ji Py UE C  } JsY % R d3 R5:y p  rBH vl ? w :I  }-  @__gmon_start___fini__cxa_finalize_Jv_RegisterClassesPerl_nothreadhookPerl_sv_freePerl_dounwindPerl_pop_scopesiglongjmpPerl_PerlIO_stderrPerlIO_printfPerl_my_exitPerl_my_failure_exit__errno_locationPerl_croakPerl_get_svPerl_gv_fetchpvPerl_get_avPerl_gv_AVaddPerl_init_argv_symbolsPerl_sv_setpvstrchrPerl_sv_setivPerl_av_clearPerl_newSVpvPerl_av_pushPerl_sv_utf8_decodePerl_init_stacksPerl_new_stackinfoPerl_safesysmallocPerl_init_debuggerPerl_gv_HVaddPerl_get_hvPerl_doing_taintgetuidgeteuidgetgidgetegidPerl_my_unexecgetpid__xstat64Perl_newSVPerl_sv_setpvnPerl_sv_setpvfPerl_moreswitchesPerl_newSVpvnPerl_sv_catpvstrlenPerl_sv_catpvn_flagsPerl_newSVsvPerl_formPerl_PerlIO_stdoutPL_do_undumpPerl_safesysfreePerl_savepvPerl_grok_hexPerl_sv_growPerl_uvuni_to_utf8Perl_sv_setsv_flagsPerl_savepvnPerl_ckwarn_dPerl_parse_unicode_optsPerl_grok_octPerl_warnerPerl_my_setenvPerl_newAVPerl_sv_2pv_flagsPerl_sv_catpvfPerl_magicnamePerl_sv_magicPerl_pp_enterevalPerl_pp_entersubPerl_eval_svPerl_save_op__sigsetjmpPerl_taint_properPerl_stack_growPerl_push_scopePerl_save_intPerl_free_tmpsPerl_require_pvPerl_newSVpvfPerl_sv_2mortalPerl_eval_pvPerl_sv_2boolPerl_call_svPerl_block_gimmePerl_push_returnPerl_pop_returnPerl_cxincPL_ppaddrPerl_call_listPerl_av_lenPerl_av_shiftPerl_save_freesvPerl_markstack_growperl_runPerl_call_methodPerl_get_cvPerl_newSVOPPerl_start_subparsePerl_newSUBPerl_call_pvPerl_call_argvPerl_sv_upgradePerl_hv_magicPL_curinterpPerl_hv_storePerl_mg_set__stack_chk_failperl_freePerl_PerlIO_fileno__fxstat64Perl_sv_getsstrncmpsetegidseteuidPerl_candoPerlIO_rewindlseek64PL_sigfpe_savedPerl_rsignal_saveexecvPerl_rsignal_restorePerl_lex_startPerl_newHVPerl_savesharedpvstrrchr__ctype_b_locstrcpyPerlIO_fdopenPerl_rsignal_statePerl_instrPerlIO_ungetcPerl_sv_insertPerl_PerlIO_stdingetenvPerl_pad_newPerl_boot_core_PerlIOPerl_boot_core_UNIVERSALPerl_boot_core_xsutilsPerl_setdefoutPerlIO_binmodePerl_yyparsestrerror_rPerl_filter_addPerl_find_script__strtol_internalPerlIO_openPerl_my_popenPerl_ckwarnPerl_rsignalPerl_save_pptrPerl_save_I32Perl_gv_checkperl_parsePerl_op_freePerl_get_hash_seedPerl_sv_chopPerl_filter_delPerl_call_atexitPerl_safesysreallocPL_memory_wrapPerl_croak_nocontextPL_thr_keypthread_key_deleteperl_destructPerl_my_fflush_allPerlIO_destructPL_use_safe_putenvPerl_PerlIO_closePerl_sv_clean_allPerl_ptr_table_freePerl_sv_clearPerlIO_cleanupPerl_free_tied_hv_poolPerl_reentrant_freePerl_sv_free_arenasPerl_sv_clean_objsperl_constructPerl_runops_standardPerl_sv_nosharingPerl_sv_nolockingPerl_sv_nounlockingPerl_runops_debugPerl_peepPerl_pregcompPerl_regexec_flagsPerl_re_intuit_startPerl_re_intuit_stringPerl_pregfreememsetPerl_init_i18nl10nPerl_set_numeric_standardPerlIO_initPerl_reentrant_initPerl_hv_ksplitsysconfPerl_sighandlerPL_NoPL_YesPL_sv_placeholderPerl_sv_2ivPerl_sv_2nvperl_allocpthread_setspecificpthread_key_createPL_op_mutexpthread_mutex_initPL_dollarzero_mutexPerl_is_gv_magicalPerl_magic_freeovrldPerl_gp_refPerl_amagic_callPerl_pp_pushmarkPerl_mg_findPL_AMG_namesPerl_newSVivPerl_gp_freePerl_hv_deletePerl_gv_fullname4Perl_sv_backoffPerl_gv_fullnamePerl_gv_efullname4Perl_gv_efullnamePerl_gv_efullname3Perl_gv_fullname3Perl_gv_initPerl_gv_IOaddPerl_messPerl_qerrormemcpyPerl_hv_fetchPerl_is_utf8_idcontPerl_is_utf8_digitPerl_gv_stashpvPerl_warnPL_sig_namePerl_gv_stashpvnPerl_newGVgenPerl_newIOPerl_hv_clearPerl_gv_stashsvPerl_gv_fetchmethPerl_gv_autoload4S_autoloadPerl_sv_untaintPerl_gv_fetchmethod_autoloadPerl_gv_fetchmethodPerl_save_scalarPerl_load_modulePerl_gv_fetchmeth_autoloadPerl_Gv_AMupdatePerl_sv_unmagicPerl_gv_handlerPerl_gv_fetchfileS_autolenPerl_lex_endPerl_pmflagPerl_keywordPerl_scan_vstringPerl_yyerrorPerl_yywarnPerl_save_itemPerl_save_sptrPerl_deprecate_oldPerl_deprecatePerl_scan_numPerl_my_atofPerl_sv_setnvPerl_sv_setuvPerl_grok_numberPerl_PerlIO_clearerrPerl_is_utf8_alnumPerl_sv_pvn_force_flagsPerl_str_to_versionPerl_utf8n_to_uvuniPL_utf8skipPerl_is_utf8_markPerl_filter_readPerl_PerlIO_readPerl_PerlIO_errorPerl_utf16_to_utf8Perl_sv_usepvnPerl_av_storePerl_my_pclosePerl_utf8_to_uvchrPerl_sv_cat_decodePerl_newPVOPPerl_newPMOPPerl_is_utf8_stringPerl_diePerl_av_popPerl_av_unshiftPerl_yylexPL_no_myglobPerl_newOPPerl_allocmyPerl_sv_recode_to_utf8Perl_save_vptrPerl_save_generic_pvrefPerlIO_apply_layersPerl_sv_catsv_flagsPerl_PerlIO_tellPerl_delimcpyPerl_utf8_hopPerl_av_fetchPerl_pad_findmyPerl_sv_utf8_upgrade_flagsPerl_ninstrPerl_newGVOPPerl_newCVREFPerl_append_elemPerl_newUNOPPL_warn_nosemiPerl_utf16_to_utf8_reversedPerl_cv_const_svPL_opargsPL_warn_reservedPerl_save_destructor_xPerl_scalarPerl_append_listPerl_block_startPerl_block_endPerl_scopePerl_newCONDOPPerl_newFOROPPerl_newLOOPOPPerl_newLOGOPPerl_newSTATEOPPerl_newATTRSUBPerl_newMYSUBPerl_newFORMPerl_intro_myPerl_invertPerl_newWHILEOPPerl_modPerl_prepend_elemPerl_dofilePerl_newANONATTRSUBPerl_newANONHASHPerl_newANONLISTPerl_newLOOPEXPerl_oopsHVPerl_refPerl_listPerl_newLISTOPPerl_newSLICEOPPerl_newNULLLISTPerl_sawparensPerl_localizePerl_newPROGPerl_my_attrsPerl_pmruntimePerl_newAVREFPerl_newSVREFPerl_myPerl_newGVREFPerl_newHVREFPerl_bind_matchPerl_newRANGEPerl_newBINOPPerl_newASSIGNOPPerl_jmaybePerl_oopsAVPerl_convertPerl_utilizePerl_packagePerl_linklistPerl_ck_concatPerl_ck_matchPerl_ck_nullPerl_ck_svconstPerl_custom_op_descPerl_hv_fetch_entPL_op_descPerl_custom_op_namePL_op_namePerl_sv_newmortalPerl_ck_bitopPerl_oopsCVPerl_save_hintsPerl_ck_rvconstPerl_pad_allocPerl_ck_anoncodePerl_pad_add_anonPerl_save_freeopPerl_op_const_svPerl_cv_ckprotostrcmpPerl_pad_block_startPerl_newHVhvPerl_savestack_growPerl_op_refcnt_unlockpthread_mutex_unlockPerl_op_refcnt_lockpthread_mutex_lockPerl_op_clearPL_checkPerl_ck_ftstPerl_pad_freePerl_pad_swipePerl_op_nullPerl_newSVpvn_sharePerl_scalarvoidPerl_scalarkidspthread_getspecificPerl_refkidsPerl_ck_returnPerl_ck_sassignPerl_cv_undefPerl_pad_undefPerl_newXSPerl_newCONSTSUBPerl_save_hptrPerl_newPADOPPerl_ck_methodPerl_pmtransqsortPerl_uvuni_to_utf8_flagsPerl_swash_initPerl_bytes_to_utf8Perl_newSVuvPerl_scalarseqPerl_pad_leavemyPerl_leave_scopePerl_force_listPerl_ck_repeatPerl_gen_constant_listPerl_pp_anonlistPerl_listkidsPerl_ck_sortPerl_fold_constantsPerl_ck_subrPerl_ck_listiobPerl_ck_evalPerl_ck_funPerl_ck_substrPerl_ck_truncPerl_ck_joinPerl_ck_shiftPerl_ck_selectPerl_ck_requirememmovePerl_sv_force_normal_flagsPerl_ck_openPerl_mode_from_disciplinePerl_ck_rfunPerl_ck_definedPerl_ck_lfunPerl_ck_lengthconstPerl_ck_indexPerl_fbm_compilePerl_ck_grepPerl_ck_existsPerl_ck_execPerl_ck_exitPerl_ck_eofPerl_ck_diePerl_ck_deletePerl_ck_spairPerl_pad_tidyPerl_ck_splitPerl_vload_modulePerl_load_module_nocontextPerl_ck_globPerl_apply_attrs_stringPerl_newRVPerl_sv_cmpPerl_pad_fixup_inner_anonsPerl_hv_existsPerl_newANONSUBPerl_pad_compname_typePerl_pad_check_dupPerl_pad_add_name__rawmemchrPerl_pad_resetPerl_pad_pushPerl_av_extendPerl_pad_svPerl_do_dump_padPerl_dump_indentPerl_cast_ulongPerl_av_fillPerl_cv_clonePerl_regdumpPerl_regpropPerl_regnextPerl_save_re_contextPerl_save_boolPerl_vmessPerl_sv_len_utf8PL_regkindPL_foldPL_variesPL_simplePerl_utf8_lengthPerl_repeatcpyPerl_newRV_noincPerl_to_uni_foldPerl_sv_compile_2opPerl_sv_utf8_downgradePerl_save_freepvPerl_reginitcolorsPerl_debprofdumpPerl_watchPerl_pv_displayPerl_sv_peekPerl_set_numeric_localPerl_sv_uni_displayPerl_debopPerl_stashpv_hvname_matchPerl_debPerl_deb_stack_allPerl_despatch_signalsPerl_debstackPerl_dump_vindentPerlIO_vprintfPerl_do_gvgv_dumpPerlIO_putcPerl_do_gv_dumpPerl_do_hv_dumpPerl_gv_dumpPerl_do_pmop_dumpPerl_op_dumpPerl_do_op_dumpPerl_do_sv_dumpPerl_do_magic_dumpPerl_hv_iterinitPerl_hv_itervalPerl_hv_iternext_flagsPerl_hv_iterkeysvPerl_sv_dumpPL_vtbl_svPL_vtbl_envPL_vtbl_envelemPL_vtbl_sigPL_vtbl_sigelemPL_vtbl_packPL_vtbl_packelemPL_vtbl_dblinePL_vtbl_isaPL_vtbl_arylenPL_vtbl_globPL_vtbl_mglobPL_vtbl_nkeysPL_vtbl_taintPL_vtbl_substrPL_vtbl_vecPL_vtbl_posPL_vtbl_bmPL_vtbl_fmPL_vtbl_uvarPL_vtbl_defelemPL_vtbl_collxfrmPL_vtbl_amagicPL_vtbl_amagicelemPL_vtbl_backrefPL_vtbl_utf8PerlIO_putsPerl_magic_dumpPerl_dump_evalPerl_pmop_dumpPerl_dump_formPerl_dump_subPerl_dump_packsubsPerl_dump_allPerl_PerlIO_setlinebufPerl_rninstrPerl_ibcmpPerl_ibcmp_localePL_fold_localehtovshtovlvtohsvtohlPerl_my_swabnPerl_get_op_namesPerl_get_op_descsPerl_get_no_modifyPL_no_modifyPerl_get_opargsPerl_get_ppaddrPerl_get_vtblPL_vtbl_regdatumPL_vtbl_regdataPL_vtbl_regexpPL_vtbl_isaelemPerl_mini_mktimePerl_seedgettimeofdayPerl_my_socketpairPerl_getenv_lenPerl_getcwd_svgetcwdPerl_sv_taintPerl_init_tmlocaltime_rPerl_PerlIO_flushPerl_get_contextPerl_pidgonePerl_wait4pidsigactionsigemptysetPerl_my_forkPerl_setenv_getixS_vdie_commonPerl_sv_2cvPerl_write_to_stderrPerl_PerlIO_writePerl_mallocPL_no_memPerl_safesyscallocPerl_sv_vsetpvfnPerl_vwarnPerl_vwarnerPerl_die_wherePerl_report_evil_fhPerl_warner_nocontextPerl_warn_nocontextS_vdie_croak_commonPerl_vcroaksrand48_rdrand48_r__strtoul_internaldup2Perl_taint_envPerl_do_execfreePerl_do_exec3Perl_my_popen_listPerl_do_aexec5Perl_set_contextPerl_atfork_unlockPerl_atfork_lockPerl_vdiePerl_die_nocontextPerl_mess_nocontextPerl_vformPerl_form_nocontextPerl_savesvpvPerl_screaminstrPerl_fbm_instrPL_freqPerl_mfreePerl_my_clearenvPerl_reallocPerl_my_strftimeunsetenvPerl_callocPerl_mg_magicalPerl_magic_regdata_cntPerl_magic_getuvarPerl_magic_setisaPerl_magic_setamagicPerl_magic_gettaintPerl_magic_settaintPerl_magic_setmglobPerl_magic_setuvarPerl_magic_freeregexpPerl_csighandlersigaddsetsigprocmaskPerl_whichsigPL_sig_numPerl_magic_setutf8Perl_magic_setcollxfrmPerl_mg_freePerl_magic_setregexpPerl_magic_setfmPerl_magic_setbmPerl_magic_regdatum_setPerl_magic_killbackrefsPerl_magic_setdblinePerl_magic_setvecPerl_do_vecsetPerl_magic_getvecPerl_do_vecgetPerl_magic_getsubstrPerl_sv_pos_u2bPerl_magic_setsubstrPerl_magic_setglobPerl_magic_getglobPerl_magic_setposPerl_sv_lenPerl_magic_getposPerl_sv_pos_b2uPerl_magic_setarylenPerl_mg_copyPerl_magic_wipepackPerl_magic_nextpackPerl_magic_scalarpackPerl_magic_sizepackPerl_magic_setpackPerl_magic_existspackPerl_magic_clearpackPerl_magic_getpackPerl_magic_setnkeysPerl_magic_getnkeysPerl_hv_iternextPerl_magic_clearsigPerl_magic_setsigPL_csighandlerpPerl_magic_getsigPerl_magic_clear_all_envPerl_magic_set_all_envPerl_hv_iterkeyPerl_magic_clearenvPerl_magic_setenvPerl_magic_regdatum_getPerl_mg_clearPerl_save_allocPerl_mg_sizePerl_vivify_defelemPerl_avhv_fetch_entPL_no_helem_svPL_no_aelemPerl_magic_getdefelemPerl_magic_getarylenPerl_mg_lengthPerl_magic_setdefelemPerl_mg_getPerl_magic_setsetgroupssetreuidsetregidPerl_magic_getPerl_sv_copypvgetgroupsPerl_magic_lenPerl_is_utf8_string_loclenPerl_report_uninitPerl_reentrant_sizePerl_reentrant_retrygetnetbyname_rgetprotobyname_rgetpwnam_rgetgrnam_rgetservbyname_rgetservent_rgetprotoent_rgetprotobynumber_rgetnetbyaddr_rgetgrent_rgetgrgid_rgethostent_rgetpwent_rgetpwuid_rgetnetent_rgetservbyport_rgethostbyname_rgethostbyaddr_rPerl_offer_nice_chunkPerl_bytes_from_utf8Perl_unshare_hekPerl_unsharepvnPerl_newSVhekPerl_hv_free_entPerl_hv_clear_placeholdersPerl_share_hekPerl_hv_delayfree_entPerl_hv_iternextsvPerl_sv_taintedPerl_hv_delete_entPerl_hv_undefPerl_hv_exists_entPerl_hv_store_entPerl_hv_store_flagsPerl_hv_scalarPerl_he_dupPerl_ptr_table_fetchPerl_ptr_table_storePerl_sv_dupPerl_av_reifyPerl_av_existsPerl_av_fakePerl_av_makePerl_av_undefPerl_avhv_keysPerl_sv_isaPerl_avhv_itervalPerl_avhv_iternextPerl_avhv_exists_entPerl_avhv_store_entPerl_av_deletePerl_avhv_delete_entPerl_pp_nullPerl_pp_setstatePerl_pp_pushrePerl_pp_gvPerl_pp_constPerl_pp_method_namedPerl_pp_methodPerl_vivify_refPerl_pp_aelemPerl_is_lvalue_subPerl_sv_mortalcopyPerl_sv_2uvPerl_save_aelemPerl_pp_aelemfastPerl_sub_crush_depthPerl_pp_eqPerl_pp_leavePerl_pp_enterPL_no_symrefPL_no_usymPerl_pp_nextstatePerl_pp_leavesublvPerl_tmps_growPerl_pp_leavesubPerl_pp_orPerl_pp_cond_exprPerl_pp_andPerl_pp_grepwhilePerl_pp_unstackPerl_pp_substPerl_sv_force_normalPerl_rxres_savePerl_pp_concatPerl_pp_preincPerl_sv_incPerl_pp_iterPerl_pp_helemPerl_save_deletePerl_save_helemPerl_save_gpPerl_do_readline__lxstat64Perl_nextargvPerl_do_closePerl_is_utf8_string_locPerl_do_openPerl_sv_unrefPerl_start_globPerl_pp_matchPerl_dowantarrayPerl_pp_qrPerl_newSVrvPerl_pp_aassignsetresuidsetresgidPerl_pp_rv2hvPL_no_localize_refPerl_do_kvPerl_save_hashPerl_pp_rv2avPerl_save_aryPerl_pp_printPerl_do_printPerl_pp_joinPerl_do_joinPerl_pp_addPerl_pp_readlinePerl_pp_rv2gvPerl_pp_padsvPerl_save_clearsvPerl_pp_sassignPerl_pp_stringifyPerl_pp_gvsvPerl_sv_add_arenaPerl_sv_report_usedPerl_sv_newrefPerl_sv_reftypePerl_dirp_dupPerl_ptr_table_clearPerl_any_dupPerl_ptr_table_newPerl_ptr_table_splitPerl_fp_dupPerlIO_fdupopenPerl_mg_dupPerl_rvpv_dupPerl_gp_dupPerl_cx_dupPerl_si_dupPerl_ss_dupPerl_re_dupPerl_sv_isobjectPerl_sv_truePerl_sv_unref_flagsPerl_io_closePerl_sv_blessPerl_sv_replacePerl_sv_magicextPerl_sv_rvweakenPL_vtbl_ovrldPerl_sv_resetPerl_sv_usepvn_mgPerl_sv_setpv_mgPerl_sv_setpviv_mgPerl_sv_setpvivPerl_sv_setref_pvnPerl_sv_setpvn_mgPerl_sv_setref_nvPerl_newSVnvPerl_sv_setnv_mgPerl_sv_setref_ivperl_clonePerlIO_clonePerl_sv_setref_uvPerl_sv_setuv_mgPerl_sv_setiv_mgPL_warn_uninitPerl_cast_ivPerl_cast_uvPerl_sv_nvPerl_sv_uvPerl_sv_vcatpvfnfrexpgcvtPerl_sv_vsetpvf_mgPerl_sv_setpvf_mgPerl_sv_setpvf_mg_nocontextPerl_sv_vsetpvfPerl_sv_pvn_forcePerl_sv_catpv_mgPerl_sv_catpvn_mgPerl_sv_catpvnPerl_sv_pvn_nomgPerl_sv_pvnPerl_sv_pvPerl_sv_2ioPerl_sv_collxfrmPerl_mem_collxfrmPerl_sv_cmp_localePerl_save_generic_svrefPerl_sv_setref_pvPerl_sv_setsv_mgPerl_sv_setsvPerl_sv_eqPerl_utf8_to_bytesPerl_sv_pvbyten_forcePerl_sv_pvbytenPerl_sv_pvbytePerl_sv_pvutf8n_forcePerl_sv_pvutf8nPerl_sv_pvutf8Perl_sv_catsv_mgPerl_sv_catsvPerl_sv_utf8_encodePerl_sv_utf8_upgradePerl_sv_2pvutf8Perl_sv_2pvutf8_nolenPerl_sv_2pvbytePerl_sv_2pvbyte_nolenPerl_sv_2pvPerl_sv_2pv_nolenPerl_looks_like_numberPerl_sv_setpvf_nocontextPerl_vnewSVpvfPerl_newSVpvf_nocontextPerl_sv_vcatpvf_mgPerl_sv_catpvf_mgPerl_sv_catpvf_mg_nocontextPerl_sv_vcatpvfPerl_sv_catpvf_nocontextPerl_sv_ivPerl_sv_decPerlIO_isutf8Perl_PerlIO_eofPerlIO_getcPerlIO_fast_getsPerl_PerlIO_get_cntPerl_PerlIO_get_ptrPerl_PerlIO_set_ptrcntPerl_pp_scalarPerl_pp_threadsvPerl_pp_padanyPerl_pp_lockPerl_pp_srefgenPerl_pp_stubPerl_pp_splitPerl_pp_lslicePerl_pp_listPerl_pp_reversePerl_pp_unshiftPerl_pp_shiftPerl_pp_popPerl_pp_pushPerl_pp_refgenPerl_pp_splicePerl_pp_anonhashPerl_pp_hslicePerl_pp_existsPerl_pp_deletePerl_pp_keysPerl_pp_valuesPerl_pp_eachPerl_pp_aslicePerl_pp_quotemetaPerl_pp_definedPerl_pp_lc__ctype_tolower_locPerl_to_utf8_lowerPerl_pp_uc__ctype_toupper_locPerl_to_utf8_upperPerl_pp_lcfirstPerl_pp_ucfirstPerl_to_utf8_titlePerl_pp_cryptcrypt_rPerl_pp_chrPerl_uvchr_to_utf8_flagsPerl_pp_ordPerl_pp_sprintfPerl_do_sprintfPerl_pp_rindexPerl_pp_indexPerl_pp_posPerl_pp_av2arylenPerl_pp_vecPerl_pp_substrPerl_pp_lengthPerl_pp_octPerl_grok_binPerl_pp_hexPerl_pp_i_negatePerl_pp_i_ncmpPerl_pp_i_nePerl_pp_i_eqPerl_pp_i_gePerl_pp_i_lePerl_pp_i_gtPerl_pp_i_ltPerl_pp_i_subtractPerl_pp_i_addPerl_pp_i_moduloPerl_pp_i_dividePerl_pp_i_multiplyPerl_pp_right_shiftPerl_pp_left_shiftPerl_pp_absPerl_pp_nePerl_pp_gePerl_pp_lePerl_pp_gtPerl_pp_ltPerl_pp_subtractPerl_pp_dividePerl_pp_multiplyPerl_pp_intfloorceilPerl_pp_sqrtPerl_pp_logPerl_pp_expPerl_pp_srandPerl_pp_randPerl_pp_cosPerl_pp_sinPerl_pp_atan2Perl_pp_complementPerl_pp_notPerl_pp_negatePerl_pp_bit_orPerl_do_vopPerl_pp_bit_xorPerl_pp_bit_andPerl_pp_scmpPerl_pp_sgePerl_pp_slePerl_pp_sgtPerl_pp_sltPerl_pp_snePerl_pp_seqPerl_pp_ncmp__isnanPerl_pp_repeatPerl_pp_modulofmodPerl_pp_powPerl_pp_postdecPerl_pp_predecPerl_pp_postincPerl_pp_undefPerl_pp_chompPerl_do_chompPerl_pp_schompPerl_pp_chopPerl_do_chopPerl_pp_schopPerl_pp_transPerl_do_transPerl_pp_studyPerl_pp_gelemPerl_pp_blessPerl_pp_refPerl_pp_anoncodePerl_pp_prototypePerl_pp_rv2cvPerl_pp_rv2svPerl_pp_padavPerl_pp_padhv_LIB_VERSIONPerl_cx_dumpPerl_save_threadsvPerl_savestack_grow_cntPerl_save_destructorPerl_save_listPerl_save_mortalizesvPerl_save_aptrPerl_save_nogvPerl_save_padsvPerl_save_ivPerl_save_I8Perl_save_I16Perl_save_longPerl_save_shared_pvrefPerl_save_svrefPerl_pp_regcmaybePerl_pp_regcresetPerl_pp_lineseqPerl_pp_scopePerl_find_runcvPerl_pp_wantarrayPerl_pp_leavetryPerl_pp_orassignPerl_pp_andassignPerl_pp_xorPerl_pp_leaveevalPerl_pp_mapstartPerl_pp_entertryPerl_pp_enterloopPerl_pp_rangePerl_pp_leaveloopPerl_pp_requirePerl_pp_dofilePerl_pp_dbstatePerl_pp_exitPerl_pp_enteriterPerl_pp_resetPerl_pp_callerPerl_pp_flopPerl_pp_flipPerl_pp_mapwhilePerl_pp_grepstartPerl_rxres_freePerl_pp_gotoPerl_pp_dumpPerl_pp_redoPerl_pp_nextPerl_pp_lastPerl_pp_returnPerl_rxres_restorePerl_pp_formlinePerl_pp_substcontPerl_pp_regcompPerl_pp_syscallPerl_pp_getlogingetlogin_rPerl_pp_egrentendgrentPerl_pp_sgrentsetgrentPerl_pp_ggrentPerl_pp_ggrgidPerl_pp_ggrnamPerl_pp_epwentendpwentPerl_pp_spwentsetpwentPerl_pp_gpwentgetspnam_rPerl_pp_gpwuidPerl_pp_gpwnamPerl_pp_eserventendserventPerl_pp_eprotoentendprotoentPerl_pp_enetentendnetentPerl_pp_ehostentendhostentPerl_pp_sserventsetserventPerl_pp_sprotoentsetprotoentPerl_pp_snetentsetnetentPerl_pp_shostentsethostentPerl_pp_gserventPerl_pp_gsbyportPerl_pp_gsbynamePerl_pp_gprotoentPerl_pp_gpbynumberPerl_pp_gpbynamePerl_pp_gnetent__h_errno_locationPerl_pp_gnbyaddrPerl_pp_gnbynamePerl_pp_ghostentPerl_pp_ghbyaddrPerl_pp_ghbynamePerl_pp_semopPerl_do_semopPerl_pp_semctlPerl_do_ipcctlPerl_pp_msgctlPerl_pp_shmctlPerl_pp_semgetPerl_do_ipcgetPerl_pp_msggetPerl_pp_shmgetPerl_pp_msgrcvPerl_do_msgrcvPerl_pp_msgsndPerl_do_msgsndPerl_pp_shmwritePerl_do_shmioPerl_pp_shmreadPerl_pp_timePerl_pp_sleeppausePerl_pp_alarmPerl_pp_gmtimegmtime_rPerl_pp_localtimePerl_pp_tmstimesPerl_pp_setpriorityPerl_pp_getpriorityPerl_pp_setpgrpsetpgidPerl_pp_getpgrpgetpgidPerl_pp_getppidPerl_pp_killPerl_applyPerl_pp_utimePerl_pp_chmodPerl_pp_unlinkPerl_pp_chownPerl_pp_execPerl_do_execPerl_do_aexecPerl_pp_systemPerl_pp_waitpidPerl_pp_waitPerl_pp_forkPerl_pp_closedirPerl_pp_rewinddirPerl_pp_seekdirPerl_pp_telldirPerl_pp_readdirreaddir64_rPerl_pp_open_diropendirPerl_pp_rmdirPerl_pp_mkdirPerl_pp_readlinkPerl_pp_symlinkPerl_pp_linkPerl_pp_renamePerl_pp_chrootPerl_pp_chdirfchdirdirfdPerl_pp_ftttyisattyPerl_pp_ftsvtxPerl_my_statPerl_pp_ftsgidPerl_pp_ftsuidPerl_pp_ftpipePerl_pp_ftdirPerl_pp_ftfilePerl_pp_ftblkPerl_pp_ftchrPerl_pp_ftsockPerl_pp_ftsizePerl_pp_ftzeroPerl_pp_ftrownedPerl_pp_fteownedPerl_pp_ftisPerl_pp_ftlinkPerl_my_lstatPerl_pp_ftctimePerl_pp_ftatimePerl_pp_ftmtimePerl_pp_fteexeceaccessPerl_pp_ftewritePerl_pp_ftereadPerl_pp_ftrexecPerl_pp_ftrwritePerl_pp_ftrreadPerl_pp_getpeernamePerl_pp_getsocknamePerl_pp_ssockoptgetsockoptsetsockoptPerl_pp_gsockoptPerl_pp_shutdownPerl_pp_acceptPerl_pp_pipe_opPerl_pp_listenPerl_pp_connectPerl_pp_bindPerl_pp_sockpairPerl_pp_socketPerl_pp_flockPerl_pp_ioctlPerl_pp_fcntlPerl_pp_truncateftruncate64Perl_pp_tiedPerl_pp_filenoPerl_pp_closePerl_pp_sysseekPerl_do_sysseekPerl_do_seekPerl_pp_seekPerl_pp_tellPerl_do_tellPerl_pp_sysopenPerl_pp_eofPerl_do_eofPerl_pp_sendsendtoPerl_pp_syswritePerl_pp_sysreadrecvfromPerl_pp_recvPerl_pp_readPerl_pp_prtfPerl_pp_selectPerl_pp_leavewritePerl_pp_enterwritePerl_pp_getcPerl_pp_sselectPerl_pp_dbmopenPerl_pp_untiePerl_pp_dbmclosePerl_pp_tiePerl_pp_binmodePerl_pp_umaskPerl_pp_openPerl_do_opennPerl_pp_diePerl_pp_warnPerl_pp_rcatlinePerl_pp_globPL_no_securityPerl_pp_backtickPerl_pp_statPL_warn_nlPerl_pp_lstatPerl_pp_fttextPerlIO_has_basePerl_PerlIO_get_bufsizPerl_PerlIO_get_basePerl_pp_ftbinaryPerl_swash_fetchPerl_utf8_to_uvunishmatshmdtPerl_ingroupfchownfchmodkillpgexecvpPL_sh_pathexeclPerl_do_binmodePerl_PerlIO_seekPerl_do_pipePerlIO_intmode2strPerlIO_opennPerl_do_open9PerlIO_has_cntptrPerlIO_canset_cntPerl_PerlIO_set_cntPerl_regclass_swashPerl_to_utf8_foldPerl_is_uni_space_lcPerl_is_uni_alnum_lcPerl_is_utf8_spacePerl_ibcmp_utf8Perl_is_uni_alnumPerl_is_uni_digit_lcPerl_utf8_distancePerl_pregexecPerl_is_utf8_charPerl_uvchr_to_utf8Perl_utf8n_to_uvchrPerl_is_utf8_xdigitPerl_is_uni_xdigitPerl_is_uni_xdigit_lcPerl_is_utf8_punctPerl_is_uni_punctPerl_is_uni_punct_lcPerl_is_utf8_printPerl_is_uni_printPerl_is_uni_print_lcPerl_is_utf8_graphPerl_is_uni_graphPerl_is_uni_graph_lcPerl_is_utf8_cntrlPerl_is_uni_cntrlPerl_is_uni_cntrl_lcPerl_is_utf8_lowerPerl_is_uni_lowerPerl_is_uni_lower_lcPerl_is_utf8_upperPerl_is_uni_upperPerl_is_uni_upper_lcPerl_is_uni_digitPerl_is_uni_spacePerl_is_utf8_asciiPerl_is_uni_asciiPerl_is_uni_ascii_lcPerl_is_utf8_alphaPerl_is_uni_alphaPerl_is_uni_alpha_lcPerl_is_utf8_idfirstPerl_is_uni_idfirstPerl_is_uni_idfirst_lcPerl_is_utf8_alnumcPerl_is_uni_alnumcPerl_is_uni_alnumc_lcPerl_pv_uni_displayPerl_to_utf8_casePerl_to_uni_lowerPerl_to_uni_lower_lcPerl_to_uni_titlePerl_to_uni_title_lcPerl_to_uni_upperPerl_to_uni_upper_lcPerl_deb_nocontextPerl_vdebPerl_debstackptrsXS_Regexp_DESTROYXS_Internals_HvREHASHXS_utf8_is_utf8XS_Internals_rehash_seedXS_Internals_hash_seedXS_Internals_SvREADONLYXS_PerlIO_get_layersXS_Internals_hv_clear_placeholdXS_Internals_SvREFCNTXS_utf8_unicode_to_nativeXS_utf8_native_to_unicodeXS_utf8_downgradeXS_utf8_upgradeXS_utf8_decodeXS_utf8_encodeXS_utf8_validXS_UNIVERSAL_VERSIONXS_UNIVERSAL_canXS_UNIVERSAL_isaPerl_sv_derived_fromXS_attributes__warn_reservedXS_attributes_reftypeXS_attributes__guess_stashXS_attributes__fetch_attrsXS_attributes__modify_attrsXS_attributes_bootstrapPerl_printf_nocontextPerl_fprintf_nocontextPL_no_wrongrefPL_no_helemPL_no_sock_funcPL_no_dir_funcPL_no_funcPL_uuemapPerl_pp_unpackPerl_pp_packPerl_pp_sortPL_hexdigitPL_patleavePL_force_link_funcsPerl_Tstack_sp_ptrPerl_Top_ptrPerl_Tcurpad_ptrPerl_Tstack_base_ptrPerl_Tstack_max_ptrPerl_Tscopestack_ptrPerl_Tscopestack_ix_ptrPerl_Tscopestack_max_ptrPerl_Tsavestack_ptrPerl_Tsavestack_ix_ptrPerl_Tsavestack_max_ptrPerl_Ttmps_stack_ptrPerl_Ttmps_ix_ptrPerl_Ttmps_floor_ptrPerl_Ttmps_max_ptrPerl_Tmarkstack_ptrPerl_Tmarkstack_ptr_ptrPerl_Tmarkstack_max_ptrPerl_Tretstack_ptrPerl_Tretstack_ix_ptrPerl_Tretstack_max_ptrPerl_TSv_ptrPerl_TXpv_ptrPerl_Tna_ptrPerl_Tstatbuf_ptrPerl_Tstatcache_ptrPerl_Tstatgv_ptrPerl_Tstatname_ptrPerl_Ttimesbuf_ptrPerl_Ttainted_ptrPerl_Tcurpm_ptrPerl_Tnrs_ptrPerl_Trs_ptrPerl_Tlast_in_gv_ptrPerl_Tofs_sv_ptrPerl_Tdefoutgv_ptrPerl_Tchopset_ptrPerl_Tformtarget_ptrPerl_Tbodytarget_ptrPerl_Ttoptarget_ptrPerl_Tdefstash_ptrPerl_Tcurstash_ptrPerl_Trestartop_ptrPerl_Tcurcop_ptrPerl_Tin_eval_ptrPerl_Tdelaymagic_ptrPerl_Tdirty_ptrPerl_Tlocalizing_ptrPerl_Tcurstack_ptrPerl_Tcurstackinfo_ptrPerl_Tmainstack_ptrPerl_Ttop_env_ptrPerl_Tstart_env_ptrPerl_Terrors_ptrPerl_Tav_fetch_sv_ptrPerl_Thv_fetch_sv_ptrPerl_Thv_fetch_ent_mh_ptrPerl_Tmodcount_ptrPerl_Tlastgotoprobe_ptrPerl_Tdumpindent_ptrPerl_Tsortcop_ptrPerl_Tsortstash_ptrPerl_Tfirstgv_ptrPerl_Tsecondgv_ptrPerl_Tsortcxix_ptrPerl_Tefloatbuf_ptrPerl_Tefloatsize_ptrPerl_Tscreamfirst_ptrPerl_Tscreamnext_ptrPerl_Tmaxscream_ptrPerl_Tlastscream_ptrPerl_Tregdummy_ptrPerl_Tregcomp_parse_ptrPerl_Tregxend_ptrPerl_Tregcode_ptrPerl_Tregnaughty_ptrPerl_Tregsawback_ptrPerl_Tregprecomp_ptrPerl_Tregnpar_ptrPerl_Tregsize_ptrPerl_Tregflags_ptrPerl_Tregseen_ptrPerl_Tseen_zerolen_ptrPerl_Tseen_evals_ptrPerl_Tregcomp_rx_ptrPerl_Textralen_ptrPerl_Tcolorset_ptrPerl_Tcolors_ptrPerl_Treg_whilem_seen_ptrPerl_Treginput_ptrPerl_Tregbol_ptrPerl_Tregeol_ptrPerl_Tregstartp_ptrPerl_Tregendp_ptrPerl_Treglastparen_ptrPerl_Treglastcloseparen_ptrPerl_Tregtill_ptrPerl_Tregcompat1_ptrPerl_Treg_start_tmp_ptrPerl_Treg_start_tmpl_ptrPerl_Tregdata_ptrPerl_Tbostr_ptrPerl_Treg_flags_ptrPerl_Treg_eval_set_ptrPerl_Tregnarrate_ptrPerl_Tregprogram_ptrPerl_Tregindent_ptrPerl_Tregcc_ptrPerl_Treg_call_cc_ptrPerl_Treg_re_ptrPerl_Treg_ganch_ptrPerl_Treg_sv_ptrPerl_Treg_magic_ptrPerl_Treg_oldpos_ptrPerl_Treg_oldcurpm_ptrPerl_Treg_curpm_ptrPerl_Treg_oldsaved_ptrPerl_Treg_oldsavedlen_ptrPerl_Treg_maxiter_ptrPerl_Treg_leftiter_ptrPerl_Treg_poscache_ptrPerl_Treg_poscache_size_ptrPerl_Tpeepp_ptrPerl_Tregcompp_ptrPerl_Tregexecp_ptrPerl_Tregint_start_ptrPerl_Tregint_string_ptrPerl_Tregfree_ptrPerl_Treginterp_cnt_ptrPerl_Treg_starttry_ptrPerl_Twatchaddr_ptrPerl_Twatchok_ptrPerl_Treg_match_utf8_ptrPerl_Tcomppad_ptrPerl_Iorigargc_ptrPerl_Iorigargv_ptrPerl_Ienvgv_ptrPerl_Iincgv_ptrPerl_Ihintgv_ptrPerl_Iorigfilename_ptrPerl_Idiehook_ptrPerl_Iwarnhook_ptrPerl_Iminus_c_ptrPerl_Ipatchlevel_ptrPerl_Ilocalpatches_ptrPerl_Isplitstr_ptrPerl_Ipreprocess_ptrPerl_Iminus_n_ptrPerl_Iminus_p_ptrPerl_Iminus_l_ptrPerl_Iminus_a_ptrPerl_Iminus_F_ptrPerl_Idoswitches_ptrPerl_Idowarn_ptrPerl_Iwidesyscalls_ptrPerl_Idoextract_ptrPerl_Isawampersand_ptrPerl_Iunsafe_ptrPerl_Iinplace_ptrPerl_Ie_script_ptrPerl_Iperldb_ptrPerl_Iperl_destruct_level_ptrPerl_Ibasetime_ptrPerl_Iformfeed_ptrPerl_Imaxsysfd_ptrPerl_Imultiline_ptrPerl_Istatusvalue_ptrPerl_Iexit_flags_ptrPerl_Istdingv_ptrPerl_Istderrgv_ptrPerl_Idefgv_ptrPerl_Iargvgv_ptrPerl_Iargvoutgv_ptrPerl_Iargvout_stack_ptrPerl_Ireplgv_ptrPerl_Ierrgv_ptrPerl_IDBgv_ptrPerl_IDBline_ptrPerl_IDBsub_ptrPerl_IDBsingle_ptrPerl_IDBtrace_ptrPerl_IDBsignal_ptrPerl_Ilineary_ptrPerl_Idbargs_ptrPerl_Idebstash_ptrPerl_Iglobalstash_ptrPerl_Icurstname_ptrPerl_Ibeginav_ptrPerl_Iendav_ptrPerl_Icheckav_ptrPerl_Iinitav_ptrPerl_Istrtab_ptrPerl_Isub_generation_ptrPerl_Isv_count_ptrPerl_Isv_objcount_ptrPerl_Isv_root_ptrPerl_Isv_arenaroot_ptrPerl_Iforkprocess_ptrPerl_Ifdpid_ptrPerl_Itainting_ptrPerl_Iop_mask_ptrPerl_Imain_cv_ptrPerl_Imain_root_ptrPerl_Imain_start_ptrPerl_Ieval_root_ptrPerl_Ieval_start_ptrPerl_Icurcopdb_ptrPerl_Icopline_ptrPerl_Ifilemode_ptrPerl_Ilastfd_ptrPerl_Ioldname_ptrPerl_IArgv_ptrPerl_ICmd_ptrPerl_Igensym_ptrPerl_Ipreambled_ptrPerl_Ipreambleav_ptrPerl_Ilaststatval_ptrPerl_Ilaststype_ptrPerl_Imess_sv_ptrPerl_Iors_sv_ptrPerl_Iofmt_ptrPerl_Iexitlist_ptrPerl_Iexitlistlen_ptrPerl_Imodglobal_ptrPerl_Iprofiledata_ptrPerl_Irsfp_ptrPerl_Irsfp_filters_ptrPerl_Icompiling_ptrPerl_Icompcv_ptrPerl_IBINCOMPAT0_ptrPerl_Icomppad_name_ptrPerl_Icomppad_name_fill_ptrPerl_Icomppad_name_floor_ptrPerl_Igeneration_ptrPerl_IDBcv_ptrPerl_Iin_clean_objs_ptrPerl_Iin_clean_all_ptrPerl_Ilinestart_ptrPerl_Ipending_ident_ptrPerl_Isublex_info_ptrPerl_Iuid_ptrPerl_Ieuid_ptrPerl_Igid_ptrPerl_Iegid_ptrPerl_Inomemok_ptrPerl_Ian_ptrPerl_Icop_seqmax_ptrPerl_Iop_seqmax_ptrPerl_Ievalseq_ptrPerl_Iorigenviron_ptrPerl_Iorigalen_ptrPerl_Ipidstatus_ptrPerl_Imaxo_ptrPerl_Iosname_ptrPerl_Ish_path_compat_ptrPerl_Isighandlerp_ptrPerl_Ixiv_arenaroot_ptrPerl_Ixiv_root_ptrPerl_Ixnv_root_ptrPerl_Ixrv_root_ptrPerl_Ixpv_root_ptrPerl_Ixpviv_root_ptrPerl_Ixpvnv_root_ptrPerl_Ixpvcv_root_ptrPerl_Ixpvav_root_ptrPerl_Ixpvhv_root_ptrPerl_Ixpvmg_root_ptrPerl_Ixpvlv_root_ptrPerl_Ixpvbm_root_ptrPerl_Ihe_root_ptrPerl_Inice_chunk_ptrPerl_Inice_chunk_size_ptrPerl_Irunops_ptrPerl_Itokenbuf_ptrPerl_Isv_undef_ptrPerl_Isv_no_ptrPerl_Isv_yes_ptrPerl_Ilex_state_ptrPerl_Ilex_defer_ptrPerl_Ilex_expect_ptrPerl_Ilex_brackets_ptrPerl_Ilex_formbrack_ptrPerl_Ilex_casemods_ptrPerl_Ilex_dojoin_ptrPerl_Ilex_starts_ptrPerl_Ilex_stuff_ptrPerl_Ilex_repl_ptrPerl_Ilex_op_ptrPerl_Ilex_inpat_ptrPerl_Ilex_inwhat_ptrPerl_Ilex_brackstack_ptrPerl_Ilex_casestack_ptrPerl_Inextval_ptrPerl_Inexttype_ptrPerl_Inexttoke_ptrPerl_Ilinestr_ptrPerl_Ibufptr_ptrPerl_Ioldbufptr_ptrPerl_Ioldoldbufptr_ptrPerl_Ibufend_ptrPerl_Iexpect_ptrPerl_Imulti_start_ptrPerl_Imulti_end_ptrPerl_Imulti_open_ptrPerl_Imulti_close_ptrPerl_Ierror_count_ptrPerl_Isubline_ptrPerl_Isubname_ptrPerl_Imin_intro_pending_ptrPerl_Imax_intro_pending_ptrPerl_Ipadix_ptrPerl_Ipadix_floor_ptrPerl_Ipad_reset_pending_ptrPerl_Ilast_uni_ptrPerl_Ilast_lop_ptrPerl_Ilast_lop_op_ptrPerl_Iin_my_ptrPerl_Iin_my_stash_ptrPerl_Ihints_ptrPerl_Idebug_ptrPerl_Iamagic_generation_ptrPerl_Icollation_ix_ptrPerl_Icollation_name_ptrPerl_Icollation_standard_ptrPerl_Icollxfrm_base_ptrPerl_Icollxfrm_mult_ptrPerl_Inumeric_name_ptrPerl_Inumeric_standard_ptrPerl_Inumeric_local_ptrPerl_Inumeric_compat1_ptrPerl_Iutf8_alnum_ptrPerl_Iutf8_alnumc_ptrPerl_Iutf8_ascii_ptrPerl_Iutf8_alpha_ptrPerl_Iutf8_space_ptrPerl_Iutf8_cntrl_ptrPerl_Iutf8_graph_ptrPerl_Iutf8_digit_ptrPerl_Iutf8_upper_ptrPerl_Iutf8_lower_ptrPerl_Iutf8_print_ptrPerl_Iutf8_punct_ptrPerl_Iutf8_xdigit_ptrPerl_Iutf8_mark_ptrPerl_Iutf8_toupper_ptrPerl_Iutf8_totitle_ptrPerl_Iutf8_tolower_ptrPerl_Iutf8_tofold_ptrPerl_Ilast_swash_hv_ptrPerl_Ilast_swash_klen_ptrPerl_Ilast_swash_key_ptrPerl_Ilast_swash_tmps_ptrPerl_Ilast_swash_slen_ptrPerl_Iyydebug_ptrPerl_Iyynerrs_ptrPerl_Iyyerrflag_ptrPerl_Iyychar_ptrPerl_Iyyval_ptrPerl_Iyylval_ptrPerl_Iglob_index_ptrPerl_Isrand_called_ptrPerl_Iuudmap_ptrPerl_Ibitcount_ptrPerl_Ipsig_ptr_ptrPerl_Ipsig_name_ptrPerl_Iptr_table_ptrPerl_Ibeginav_save_ptrPerl_Inullstash_ptrPerl_Ixnv_arenaroot_ptrPerl_Ixrv_arenaroot_ptrPerl_Ixpv_arenaroot_ptrPerl_Ixpviv_arenaroot_ptrPerl_Ixpvnv_arenaroot_ptrPerl_Ixpvcv_arenaroot_ptrPerl_Ixpvav_arenaroot_ptrPerl_Ixpvhv_arenaroot_ptrPerl_Ixpvmg_arenaroot_ptrPerl_Ixpvlv_arenaroot_ptrPerl_Ixpvbm_arenaroot_ptrPerl_Ihe_arenaroot_ptrPerl_Ipsig_pend_ptrPerl_Isig_pending_ptrPerl_Inumeric_radix_sv_ptrPerl_Iregex_pad_ptrPerl_Iregex_padav_ptrPerl_Ireentrant_buffer_ptrPerl_Isavebegin_ptrPerl_Icustom_op_names_ptrPerl_Icustom_op_descs_ptrPerl_Iperlio_ptrPerl_Iknown_layers_ptrPerl_Idef_layerlist_ptrPerl_Iencoding_ptrPerl_Idebug_pad_ptrPerl_Itaint_warn_ptrPerl_Iutf8locale_ptrPerl_Iutf8_idstart_ptrPerl_Iutf8_idcont_ptrPerl_Isort_RealCmp_ptrPerl_Icheckav_save_ptrPerl_Iclocktick_ptrPerl_Iin_load_module_ptrPerl_Iunicode_ptrPerl_Isignals_ptrPerl_Istashcache_ptrPerl_Ireentrant_retint_ptrPerl_Isharehook_ptrPerl_Ilockhook_ptrPerl_Iunlockhook_ptrPerl_Ithreadhook_ptrPerl_Irunops_std_ptrPerl_Irunops_dbg_ptrPerl_Ippid_ptrPerl_Ihash_seed_ptrPerl_Ihash_seed_set_ptrPerl_Irehash_seed_ptrPerl_Irehash_seed_set_ptrPerl_Ifdscript_ptrPerl_Isuidscript_ptrPerl_Ipte_root_ptrPerl_Ipte_arenaroot_ptrPerl_Gcurinterp_ptrPerl_Gthr_key_ptrPerl_GYes_ptrPerl_GNo_ptrPerl_Ghexdigit_ptrPerl_Gpatleave_ptrPerl_Gdo_undump_ptrPerl_Gop_mutex_ptrPerl_Gdollarzero_mutex_ptrPerl_Gsh_path_ptrPerl_Gsigfpe_saved_ptrPerl_Gsv_placeholder_ptrPerl_Gcsighandlerp_ptrPerl_Guse_safe_putenv_ptrperlsio_binmodePerlIO_arg_fetchPerlIOUtf8_pushedPerlIO_modestrPerlIOBase_poppedPerlIOBase_noop_okPerlIOBase_noop_failPerlIOBase_eofPerlIOBase_errorPerlIOBase_setlinebufPerlIOUnix_filenoPerlIOStdio_modePerlIOUnix_oflagsPerlIOBase_pushedPerlIOPending_pushedPerlIOCrlf_set_ptrcntPerlIOBuf_set_ptrcntPerlIOBuf_bufsizPerlIOBuf_get_cntPerlIOBuf_get_ptrPerlIOBase_clearerrPerl_PerlIO_fillPerlIOCrlf_get_cntPerlIO_getposPerlIO_setposPerlIOBase_filenoPerlIO_getnamePerlIOMmap_unmapmunmapPerlIOMmap_mapmmap64abortPerlIOBuf_poppedPerlIO_list_freePerlIOBuf_get_basePerlIOMmap_get_basePerlIO_list_allocPerlIO_allocatePerlIOBase_readPerlIOBuf_readPerlIOPending_readPerlIOBuf_pushedPerlIOStdio_flushfflushPerlIOStdio_fillfgetcPerlIOStdio_setlinebufPerlIOStdio_clearerrPerlIOStdio_errorferrorPerlIOStdio_eoffeofPerlIOStdio_tellftello64PerlIOStdio_seekfseeko64PerlIOStdio_writefwritePerlIOStdio_readfreadPerlIOStdio_filenoPerlIOUnix_tellPerlIOUnix_seekPerlIOUnix_writePerlIOUnix_readPerlIO_sv_dupXS_PerlIO__Layer__findXS_PerlIO__Layer__NoWarningsPerlIO_tab_svPerlIO_list_pushPerlIO_clone_listPerlIO_debugPerlIOUnix_refcnt_decPerlIO_fd_refcntPerlIOUnix_closePerlIOUnix_refcnt_incPerlIOPending_set_ptrcntPerlIOPending_seekPerlIOPending_fillPerlIOBuf_tellPerlIOBuf_seekPerlIOBuf_writePerlIOMmap_writePerlIOCrlf_writePerlIOBuf_flushPerlIOMmap_flushPerlIOCrlf_flushPerlIOStdio_closefclosePerlIOUnix_pushedPerlIOBase_closePerlIOBuf_closePerlIOMmap_closePerlIO__closePerlIOBase_flush_linebufPerlIOBuf_fillPerlIOMmap_fillPerlIO_layer_fetchPerlIO_define_layerPerlIO_find_layerPerlIO_default_bufferPerlIO_stdioPerlIO_perlioPerlIO_parse_layersPerlIO_default_layersPerlIO_unixPerlIO_rawPerlIO_crlfPerlIO_mmapPerlIO_utf8PerlIO_removePerlIO_bytePerlIO_default_layerPerlIORaw_openPerlIO_popPerlIOCrlf_binmodePerlIOCrlf_pushedPerlIOPending_flushPerlIO_releaseFILEPerlIOStdio_pushedPerlIOPending_closePerlIO_cleantablePerlIORaw_pushedPerlIOBase_binmodePerlIO_pushPerlIOBuf_openPerlIO_exportFILEPerlIO_findFILEPerlIOStdio_openfreopen64fopen64PerlIO_importFILEPerlIOUnix_openPerlIOBase_dupPerlIOMmap_dupPerlIOBuf_dupPerlIOStdio_dupPerlIOUnix_dupPerlIOBase_unreadPerlIO_pendingPerlIOBuf_unreadPerlIOMmap_unreadPerlIOCrlf_unreadPerlIOStdio_unreadPerl_PerlIO_unreadPerlIO_apply_layeraPerlIO_tmpfilePerlIO_resolve_layersPerlIO_reopenmkstemp64PerlIO_stdstreamsPerlIO_vsprintfPerlIO_sprintfPerlIO_stdoutfPerlIOPop_pushedPerl_cast_i32Perl_hugePerl_grok_numeric_radixPerl_my_atof2__strtod_internalPerl_scan_octPerl_scan_binPerl_scan_hexstrxfrmPerl_new_collatePerl_new_ctypePerl_set_numeric_radixlocaleconvsetlocalePerl_new_numericnl_langinfoPerl_init_i18nl14npacksizePerl_packlistPerl_pack_catmodfPerl_unpackstringPerl_unpack_strsize_normalsize_shriekingPerl_sortsvlibdl.so.2libm.so.6libpthread.so.0libc.so.6__environlibcrypt.so.1_edata__bss_startlibperl.so.5.8GLIBC_2.2.5GLIBC_2.4GLIBC_2.3r ui N ui D ui ^ii ii ui 23@23hH23qP23rX23Hr`23rh23rp23sx23Xs23s23s230t23xt23t23u23Pu23u23u230v23xv23v23v23w23(w23xw33w33x330x33x 33@33dH33P33dX33d`33q33d33|33d333333d3333d333343E>43L>(43V>843^>H43e>X43p>h43|>x43>43>43>43>43>43>43>43>43>53>53>(53>853?H53?X53?h53!?x53*?534?53=?53N?53Z?53f?53t?53z?53?63?63?(63?863?H63?X63?h63?63hi63KR63ؕ63R63ui6363ai63Fp63Jp63Np63Rp63Vp63Zp63^p63bp73fp73jp73np73rp 73vp(73zp073~p873p@73pH73pP73p`73&h73*p736x73173`e@\3@\3H\323 d3(d30d328d3@d3Hd3Pd3Xd3`d3hd3pd3Ŏxd3ʎd3ώd3Ԏd3 d3d3َd3Ed3d3d3d3d3d3d3d3d3d3e3e3¢e3e3 e3!(e3'0e3-8e33@e39He3?Pe3EXe3K`e3Qhe3Wpe3]xe3ce3ie3oe3ue3{e3e3e3e3e3e3e3e3e3e3e3e3Ïf3ɏf3Ϗf3Տf3ۏ f3(f30f3E8f3@f3`f3ehf3pf3xf3f3f3f3f3=f3O<f3f3 f3&f3,f33f3:f3@f3Ff3Pf3Vf3g3`g3_g3\g3g g3m(g3#0g3W8g3v@g3Hg3Pg3Xg3S`g3hg3Rpg3xg3g3g3g3Zg3g3fg3g3gg3MTg3ʎg3w<g3ʐg3Ȑg3Ӑg3ѐg3ܐg3ڐh3h3h3h3 h3(h30h38h3@h3Hh3Ph3Xh3`h3hh3ph3'xh3.h38h3Ch3͛h3Oh3כh3Th3h3Yh3h3^h3h3ch3h3hh3oh3mi3ti3xi3|i3 i3(i30i38i3@i3Hi3Pi3Xi3`i3hi3pi3xi3i3i3i3i3i3i3i36i3‘i3Ƒi3,i3ni3p<i3ri3ˑi3ʑi3ёj3ij3A~j3j3ّ j3ߑ(j30j38j3@j3Hj3Pj3Xj3`j3hj3pj3!xj3e<j3(j3/j36j3<j3Bj3֮j3j3j3Ij3<j3Nj3Uj3^j3gj3nj3sk3=k3wk3ok3 k3(k30k3f8k3@k3Hk3Pk30Xk3`k3hk3~pk3xk3k3Òk39k3̒k3Ւk3ޒk3k3k3k3k3k3k3 k3k3k3!k3l3'l3Rl31l3; l3h(l3h0l3E8l3J@l3OHl3ohPl38Xl3t`l3hl3Tpl3\xl3ol3cl3ml3kl3ql3vl3~l3l3l3l3NCl3l3l3l3+tl3Wtl3m3m3m3ȓm3͓ m3ғ(m3֓0m38m3n@m3|nHm3vnPm3ۓXm3B`m3hm3fnpm3^nxm3m3m3m3m3 m3m3m3Qtm3Rtm3+m33m3<m3Dm3Lm3Um3]m3bn3kn3tn3{n3 n3(n30n38n3@n3Hn3Pn3Xn3`n3hn3Ȕpn3ϔxn3֔n3ݔn3n3n3Xnn3sn3Enn3sn3sn3sn3>nn3n36nn3n30nn3*nn3o3o3 o3o3 o3'(o32C0o308o35@o3#nHo3XPo3sXo3=`o3Eho3npo3Mxo3no3o3Yo3]o3go3no3to3zo3o3o3o3o3o3so3o3o3p3p3!gp3•p3ɕ p3ӕ(p3ݕ0p38p3@p3Hp3Pp3 Xp3`p3hp3$pp3-xp38p3Bp3Kp3Tp3]p3fp3np3xp3p3p3p3p3p3p3p3p3q3Ȗq3ϖq3֖q3ݖ q3(q3m0q3m8q3@q3Hq3Pq3Xq3 `q3hq3pq3xq3q3q3 q3.q3>q3Iq3Sq3dq3rq3q3q3q3q3q3ʗq3q3r3 r3!r38r3g r3P(r3#0r3j8r3s@r3Hr3Pr3Xr3Ƙ`r3ژhr3pr3xr3r31r3Cr3Zr3Sr3fr3_r3lr3}r3ʎr3r3r3r3r3r3יr3ϙs3s3s3s3! s3(s3<0s348s3Q@s3IHs3]Ps3pXs3h`s3hs3}ps3xs3ns3s3Ěs3ؚs3s3s3s3s3$s34s3Ds3Ts3ds3ts3s3s3t3ƛt3Лt3ڛt3 t3(t30t38t3@t3*Ht3:Pt3QXt3I`t3ht3^pt3xt3t3t3t3t3t3t3t36t3‘t3Ƒt3,t3nt3p<t3rt3ˑt3ʑt3ёu3iu3A~u3u3ّ u3ߑ(u30u38u3@u3Hu3qPu3Xu3`u3hu3pu3!xu3e<u3(u3/u3u3u3Ĝu3֮u3u3u3Ϝu3<u3ޜu3u3u3gu3nu3sv3=v3wv3ov3 v3Y(v30v38v3@v3,Hv35Pv3EXv3U`v3fhv3vpv3xv3v3v3ҝv3v3v3v3v3v3v3 v3v3*v3$v39v3Mv3Yv3w3dw3ww3lw3 w3h(w3h0w3E8w3J@w3OHw3ohPw38Xw3t`w3hw3tpw3\xw3ow3cw3mw3kw3qw3vw3~w3w3w3w3NCw3Ow3w3ґw3+tw3Wtw3x3x3x3ȓx3͓ x3ғ(x3֓0x38x3n@x3|nHx3vnPx3ۓXx3B`x3knhx3fnpx3^nxx3x3x3x3x3x3x3x3Qtx3Rtx3˞x3Ξx3ўx3Ԟx3מx3gx3"ex3ڞy3ݞy3y3:cy3b y3(y3f0y3(e8y3t@y3Hy3Py3bXy3`y3hy3py3xy3y3y3y3y3Xny3sy3Eny3sy3sy3sy3>ny3y36ny3y30ny3*ny3z3z3 z3z3 z3'(z32C0z308z35@z3#nHz3XPz3sXz3=`z3Ehz3npz3Mxz3nz3z3 z3]z3gz3nz3tz3zz3z3z3z3z3z3sz3z3z3{3{3!g{3{3 {3*({3=0{3J8{3J@{3JH{3JP{3JX{3J`{3Jh{3Kp{3 Kx{31K{3=K{3KK{3YK{3\{3g{3q{3}{3{3{3{3{3J{3J{3K{3{3|3J|3J|3J|3Ɵ |3ϟ(|3m0|3m8|3@|3؟H|3P|3X|3`|3;bh|3dp|3@x|3h|3g|3c|3+|30|36|3@|3D|3H|3K|3O|3R|3V|3Y}3]}3`}3d}3g }3k(}3o0}3t8}3x@}3}H}3P}3X}3`}3h}3p}3x}3}3}3}3}3}3}3}3}3}3}3}3à}3Ǡ}3ˠ}3Ϡ}3Ӡ}3֠~3٠~3ݠ~3~3 ~3(~30~38~3@~3H~3P~3 X~3 `~3h~3p~3x~3~3"~3'~3,~31~35~33s3Pgȫ332t3h3H3(333p93kx93Q9393e939393e937939393939393!9393^9393:3:3%:3&:3" :3(:3k0:38:3@:3VH:3P:3X:3`:3:h:3Ep:3zx:3::3`:3%:3V:3:3w:3:3m:3:3:3:3:3U:3:3a:3:3;3;3[;3;3n ;3y(;3'0;3c8;3@;3RH;3-P;3SX;3`;3h;3p;3x;3;3";3;3A;3M;3;32;3;3n;3;3;3F;3;3;3;3;3<3<3<3<3U3U3U 3U(3U03U83U@3UH3UP3UX3U`3Uh3Up3Ux3U3U3U3U3U3U3U3U3U3Uȑ3UБ3Uؑ3U3U3U3U <3(<390<38<3@<3H<3$P<3[X<30`<3h<3p<3x<3<3<3<3<3<3<3o<3<3.<37<3J<3<3<36<3i<3<3=3=3=3+=3 =3a(=30=38=3w@=3oH=3P=3X=3`=3|h=3p=3Ax=3=3=3=3(=3o=3=3=3 =33=3~3~3~3~3~36~3t~3/~333l33p 3(303835@3H3P3X3`3h3p3x333p3`3,3&33[3333Q33b3333h3m33S 3(30383@3H3P3X3`3h3p3x3333Y3Z33333Ȁ3EЀ3؀33w3(3333s3v3 3(3O03l83@3H3P34X3`3hh3-p3Lx33L33D33t33a33ȁ3Ё3؁3333s3333)3 3(3k03P83@3H3TP3X39`3Yh3p3(x3-3333r33W3336Ȃ3 Ђ3~؂3333r3333I383 3(3t03S83t@3RH3P3|X3`3oh3zp3x3j333<3_33&333Qȃ39Ѓ3+؃3@333[333(33 3(30383@3H3$P3X3|`3Lh3Wp3]x3C3E33333l333Ȅ31Є3J؄333333v3I3H3 3(350383@3H3P3X3$`3?h3p3Ox3333)3`33I33|3aȅ3Ѕ3\؅33\333'34333 3(3303|83@3H3PP3X3`3h3Xp3x3(33g33<33#333Ȇ3І3}؆33333f333%3 3(303#83@3mH3P3 X3`3bh37p3x33333S303333ȇ3(Ї3H؇3333333 33 3(30383Z@3H3P3<X3!`3h3Ip3x3338333L333_3Ȉ3AЈ3؈3y33H3333'3 3v 3(303s83j@3JH3qP3yX3`3 h3p3px33x333 33v33ȉ3؉33333333 3(3@3X3h3333Ȋ3Њ3؊3333p3x333333333ȋ3333333 3(30383@3H3P3X3`3h3p3x333333333333(3033333333Ȏ3Ў3؎3333(30383@3H3P3X3`3h3p3x333333833333333333ؓ333 3(303H3P3X3p3x3333333Љ3p3x333 3؋3Ќ3،333333333 3(3@3X3`3h3p3x333333ȍ3Ѝ3؍33383@3H3P3h3x333 33ȏ3Џ3؏3333333(303P3X3`3h3p3x33333333Ȑ3А3ؐ333333333333 3(30383@3H3P3X3`3h3p3x33333Ȓ3В3ؒ3333333 3(30383@3H3P3X3`3p33333ȓ3Г333333383@3`3h333037837H373737P3`3j3j3j333O33333}(3}03}83}@3}H3}P3}X3}`3}h3}3VЋ333333Ȍ303`83qH3P3333{ 3X3`3p3333N33 3333 33@3xH3x333h3lx333M3;33M(383 h3dx333j333 3O(383@h3333 3 (33`3lh33 313= 3(3M`3@h33 33 3(33h313Z333(3@3'p333&3i(3@3h333U3L(3`3:h3p3x3z3333333D3B3JȜ3М3؜33333333n3  3(30383-@3H3P3X3`3h3%p3 x333[3-3+3333n3ȝ3Н3؝3C33V333 3<3c3 3(30383J@3XH3P3X3`3h3Np3x3F3_333Z3m3p3d33Ȟ3О31؞3?333333 33H 3(303283@3H3=P3X3`3h3hp3x3333#33333X3ȟ3 П3؟33t3^383-33q3B3 3(3D0383@3gH3HP3yX3`3h3>p3x33t3d333m3333}Ƞ3TР3ؠ3333633333= 3(303e83@3H3P3~X3`3h3p3x333o3333'3k3c3ȡ3С3ء33!33e3<3333 3w(30383@3H3P3X3`3h3p3x3333x33r35333Ȣ3{Т3آ33v3Z333C33d3x 3(30383?@3H3hP3EX3`3h3p3x332333-333g33ȣ3=У3أ3 3l3S333%3?33U 3(30383 @3H3P3GX3 `3h3&p3x33Y3K33`33333Ȥ3Ф3pؤ3$3o3l33*3333 3(303.83}@3H3P3 X3`3h3p3Lx3D33G3303L33j33ȥ3+Х3,إ3333 3f343E33 3N(3u0383@3H3P3X3.`3h3|p3yx3/333u333X3A33Ȧ3Ц3=ئ3f3K33P33333 3(3J0383$@3H3OP3X3i`30h3\p3Jx3o3\333R33333ȧ3+Ч3ا3}3Z3_3]3\3 3b3^3 3(30383+@3H3)P3X3K`3h3Tp3Mx3g3(33>3N333333^Ȩ3 Ш39ب3@3I33~333Y33G 3(3w03 83@3H36P3X3`3h3p3x303;33Q33|3333ȩ3Щ3Zة3 3353> 33X3X3Ȭ3E3E3EЬ333K33x3X33ȭ3Э3ح333333333Nد3N3N3Nx3N 33333(3X3XȰ3X3X3X033а3333363c3r33Ȯ3~Ю3خ3T3s33)3D3:3V3`3'3'h3mH3m(3m3mp30333h3H3(33p3P33xX3x83x33333ap3aP3a33x3X33434`34ȯ3AЯ333sذ3s3s33333434ȱ343433333@3Nx3333/33 3]83:`32h33б3ر303@3*H3ih3p3k3@3P3=3=3{=3=3E>3>3f>3>3y >3(>30>38>3@>3H>3P>3X>39`>3'h>3;p>3(x>3>3>3>3B>3>3>3>3>3>3>3>3>3>3 >3h>3\>3 ?3?3F?3?3G ?3 (?3A0?3 8?3@?3H?3'P?3 X?3`?3h?3 p?3x?3?3?3?3?3?3?3 ?3?3r?3F?3?3?3?3?3 ?3?3X@3@3w@3@33 @3I(@3P0@3a8@3]@@3}H@3P@3[X@3Q`@3!h@3p@3^x@3M@3@3@3!@3Q@3@3@3@3@3T@3@3V@3@3&@3@3@3PA3A3A3A3 A3(A30A38A3@A3HA3PA3'XA3`A3_hA3pA3xA3BA3A3A3A3A3A3A3A3A3 A3!A3"A3A3wA3A3A3B3:B3B3@B34 B3#(B3c0B38B3@B3HB3$PB3XB3n`B3UhB3zpB3'xB3mB3B3B3B3 B3zB3YB3{B3:B3(B3B3B3)B3B3B3B3*C3)C3+C3C3, C3-(C3E0C3"8C3@C3}HC3qPC3OXC3`C3UhC3pC3xC3C3C3C3uC3.C3C3C3!C3AC3$C3C3C3cC3C3C3C3/D3,D30D3RD3v D31(D30D3L8D3@D3WHD3$PD3%XD3`D32hD3pD3,xD3pD33D34D3D34D3D3D3D35D3>D3D36D3D3D37D3D3E38E3E39E3 E3z(E30E3k8E3@E3HE3:PE3;XE35`E37hE3pE3\xE3E3?E3jE3;E3E3E3<E3=E3E3fE39E3E3E39E3gE3=E3>F3F3F3?F3@ F3(F3@0F3A8F3`@F3FHF31PF3sXF3B`F3hF3CpF3xF3F3dF3DF3EF3FF3F3F3F3^F3F3GF38F3F3F3F3F3$G3G3UG3G3 G3(G3~0G3,8G3@G3 HG3]PG3HXG3`G3IhG3pG3xG3GG3G3KG3,G3G3/G3G3"G30G3LG3NG3MG3G3G3pG3NG3OH3PH3QH3H37 H37(H30H3%8H3@H3HH3PH3TXH3`H3RhH3apH3xH3SH3AH3IH3H3H3H3TH3H3H3H3H3UH3VH3H3H3H3cI3WI3I3I3. I3W(I30I38I3_@I3HI3PI3XXI3K`I3hI3pI3xI3YI3ZI3cI3I3[I3I3yI3wI3 I3\I3I3I3WI3]I3I3{I3^J3_J3;J3J3 J3(J3`0J38J3@J3CHJ3PJ3[XJ3`J3hJ3pJ3axJ3eJ3bJ3J3J3*J3J3J3J3dJ3J3eJ3J3RJ3fJ3J3J3tK3K3gK3"K3 K3h(K30K38K3i@K3OHK3PK3{XK3`K3hK3pK3xK3K3dK3jK3kK3 K3lK3 K3mK3K3K3nK3K3K3oK3K3K3L3tL3fL3sL3< L3(L3_0L3z8L3p@L3)HL3PL3TXL3q`L3rhL3pL3sxL3L3tL3L3uL3L3gL3L3cL3{L3L3L3vL3WL3wL3L3xL3kM3*M3nM3M3 M3r(M30M3y8M3+@M3HM3zPM3XM3-`M3hM3pM3{xM3|M3uM3>M3}M3~M3XM3M3M3M3[M3M3M3M3M3M3%M3N3dN3 N3N3l N3(N30N3n8N3@N3HN3bPN3XN3<`N3ghN3pN3xN3N3N3N3N3N3N3N3N3N3N3N3 N3GN3N3&N3N3O3rO36O3IO3  O3N(O30O38O3@O3HO3PO3XO3`O3ehO3qpO3xO3O3O3O3O3O3O3O3vO3O3>O3O3|O3O3O3MO3O3P3?P3P3P3 P3(P3"0P38P3@P3HP3PP3XP3`P3hP3pP3UxP3P3P3`P3P3P3P3P3P3P3P3P3P3OP3P3<P3P3Q3CQ3Q3Q3P Q3(Q30Q38Q3 @Q3HQ3*PQ3XQ3.`Q3hQ3pQ3xQ3Q3QQ3Q3Q3,Q3Q3Q3aQ3Q3Q30Q3Q34Q3{Q3Q3Q3R3R3R3BR3h R3(R30R3S8R3M@R3HR3PR3XR3`R3AhR3pR3xR3R3eR3?R3uR3 R3R3R3/R3R3ZR3 R31R3R3R3R3R3S3VS3S3S3O S3/(S30S38S3@S3HS3PS3XS3n`S3hS3pS3xS3S3S35S3VS3S3S3S3S3S3BS3S3S3&S3S3*S36S3T3T3uT3#T3 T3(T30T38T3@T3HT3BPT3XT3`T3<hT3pT3xT3mT3kT3T3T3T3T3T3T3pT3T3T3T3!T3T3T3*T3U3U3)U3 U3 U3(U3D0U38U3@U32HU3PU3XU3`U31hU3TpU3CxU38U3U3U3U3,U3=U3qU3U3PU3U3uU3U3U3U3U3U3]V3V3.V3V3 V3(V30V38V3@V3qHV3PV3eXV3i`V3'hV3pV3RxV3V3V3]V3 V3V3V3V3V3V3uV3YV39V3WV3V3V3V3W3W3RW3jW3b W3(W30W3x8W3F@W3HW3PW3XW3`W3hW3pW3xW3W32W3W3W3W3$W3W3CW3W3pW3W3W3W3W3W3W3RX3X3X3X3 X3X(X30X3I8X3@X3HX3bPX3XX3`X3/hX3pX3xX3X3X3X3X3X3X3X3X3iX3YX3X3X3!X3X3&X32X3Y3Y3Y3Y3f Y3D(Y30Y38Y3@Y3HY3qPY3\XY3`Y3hY3KpY3xY3!Y3Y37Y3EY3Y3Y3Y3^Y3Y3Y3Y3Y3HY3CY3Y3Y3Z3Z3Z3~Z3 Z3"(Z30Z38Z3@Z3HZ3PZ30XZ3y`Z3=hZ3pZ3xZ3]Z3hZ3PZ3Z3Z3Z3Z3Z3Z3Z3Z3Z3Z3KZ3Z3sZ3}[3>[3[3[3 [3([3 0[3?8[3@[3H[3P[3X[3`[3h[3#p[3x[3[3x[3[3[3[3[3[3[3[3@[3q[3[3[3[3[3~[3y\3 \3S\3\3 \3t(\30\38\33H<J=A H50%0@%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0h P%0h @%0h 0%z0h %r0h %j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h %0h!%0h"%0h#%0h$%0h%%0h&%0h'p%0h(`%0h)P%0h*@%0h+0%z0h, %r0h-%j0h.%b0h/%Z0h0%R0h1%J0h2%B0h3%:0h4%20h5%*0h6%"0h7p%0h8`%0h9P% 0h:@%0h;0%0h< %0h=%0h>%0h?%0h@%0hA%0hB%0hC%0hD%0hE%0hF%0hGp%0hH`%0hIP%0hJ@%0hK0%z0hL %r0hM%j0hN%b0hO%Z0hP%R0hQ%J0hR%B0hS%:0hT%20hU%*0hV%"0hWp%0hX`%0hYP% 0hZ@%0h[0%0h\ %0h]%0h^%0h_%0h`%0ha%0hb%0hc%0hd%0he%0hf%0hgp%0hh`%0hiP%0hj@%0hk0%z0hl %r0hm%j0hn%b0ho%Z0hp%R0hq%J0hr%B0hs%:0ht%20hu%*0hv%"0hwp%0hx`%0hyP% 0hz@%0h{0%0h| %0h}%0h~%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0h P%0h @%0h 0%z0h  %r0h %j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h %0h!%0h"%0h#%0h$%0h%%0h&%0h'p%0h(`%0h)P%0h*@%0h+0%z0h, %r0h-%j0h.%b0h/%Z0h0%R0h1%J0h2%B0h3%:0h4%20h5%*0h6%"0h7p%0h8`%0h9P% 0h:@%0h;0%0h< %0h=%0h>%0h?%0h@%0hA%0hB%0hC%0hD%0hE%0hF%0hGp%0hH`%0hIP%0hJ@%0hK0%z0hL %r0hM%j0hN%b0hO%Z0hP%R0hQ%J0hR%B0hS%:0hT%20hU%*0hV%"0hWp%0hX`%0hYP% 0hZ@%0h[0%0h\ %0h]%0h^%0h_%0h`%0ha%0hb%0hc%0hd%0he%0hf%0hgp%0hh`%0hiP%0hj@%0hk0%z0hl %r0hm%j0hn%b0ho%Z0hp%R0hq%J0hr%B0hs%:0ht%20hu%*0hv%"0hwp%0hx`%0hyP% 0hz@%0h{0%0h| %0h}%0h~%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0% 0h % 0h% 0h% 0h% 0h% 0h% 0h% 0h% 0h% 0h% 0h% 0hp% 0h`% 0h P% 0h @% 0h 0%z 0h  %r 0h %j 0h%b 0h%Z 0h%R 0h%J 0h%B 0h%: 0h%2 0h%* 0h%" 0hp% 0h`% 0hP% 0h@% 0h0% 0h % 0h% 0h% 0h% 0h % 0h!% 0h"% 0h#% 0h$% 0h%% 0h&% 0h'p% 0h(`% 0h)P% 0h*@% 0h+0%z 0h, %r 0h-%j 0h.%b 0h/%Z 0h0%R 0h1%J 0h2%B 0h3%: 0h4%2 0h5%* 0h6%" 0h7p% 0h8`% 0h9P% 0h:@% 0h;0% 0h< % 0h=% 0h>% 0h?% 0h@% 0hA% 0hB% 0hC% 0hD% 0hE% 0hF% 0hGp% 0hH`% 0hIP% 0hJ@% 0hK0%z 0hL %r 0hM%j 0hN%b 0hO%Z 0hP%R 0hQ%J 0hR%B 0hS%: 0hT%2 0hU%* 0hV%" 0hWp% 0hX`% 0hYP% 0hZ@% 0h[0% 0h\ % 0h]% 0h^% 0h_% 0h`% 0ha% 0hb% 0hc% 0hd% 0he% 0hf% 0hgp% 0hh`% 0hiP% 0hj@% 0hk0%z 0hl %r 0hm%j 0hn%b 0ho%Z 0hp%R 0hq%J 0hr%B 0hs%: 0ht%2 0hu%* 0hv%" 0hwp% 0hx`% 0hyP% 0hz@% 0h{0% 0h| % 0h}% 0h~% 0h% 0h% 0h% 0h% 0h% 0h% 0h% 0h% 0hp% 0h`% 0hP% 0h@% 0h0%z 0h %r 0h%j 0h%b 0h%Z 0h%R 0h%J 0h%B 0h%: 0h%2 0h%* 0h%" 0hp% 0h`% 0hP% 0h@% 0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0h P%0h @%0h 0%z0h  %r0h %j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h %0h!%0h"%0h#%0h$%0h%%0h&%0h'p%0h(`%0h)P%0h*@%0h+0%z0h, %r0h-%j0h.%b0h/%Z0h0%R0h1%J0h2%B0h3%:0h4%20h5%*0h6%"0h7p%0h8`%0h9P% 0h:@%0h;0%0h< %0h=%0h>%0h?%0h@%0hA%0hB%0hC%0hD%0hE%0hF%0hGp%0hH`%0hIP%0hJ@%0hK0%z0hL %r0hM%j0hN%b0hO%Z0hP%R0hQ%J0hR%B0hS%:0hT%20hU%*0hV%"0hWp%0hX`%0hYP% 0hZ@%0h[0%0h\ %0h]%0h^%0h_%0h`%0ha%0hb%0hc%0hd%0he%0hf%0hgp%0hh`%0hiP%0hj@%0hk0%z0hl %r0hm%j0hn%b0ho%Z0hp%R0hq%J0hr%B0hs%:0ht%20hu%*0hv%"0hwp%0hx`%0hyP% 0hz@%0h{0%0h| %0h}%0h~%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%0h %0h%0h%0h%0h%0h%0h%0h%0h%0h%0h%0hp%0h`%0hP%0h@%0h0%z0h %r0h%j0h%b0h%Z0h%R0h%J0h%B0h%:0h%20h%*0h%"0hp%0h`%0hP% 0h@%0h0%/h %/h%/h%/h%/h%/h%/h%/h%/h%/h%/h%/hp%/h`%/hP%/h@%/h0HH=/HtHÐ=yV0UHu;H=/tH=B/m HH8/H//HHu8V0fDUH=/HtH/HtH=/IAÐ1ffff.SH`HHtHǃ`HH9xH?HHHH HHxH+SHHHPHHHHSHHH@HHC HHH@HHHHH;HHxuH~|[utNHHcHNHPHHVHBH`HcBHHC`HChB C0BHB(HHH8tzHx1H4HvHHtx t&H.HH5 1HHH@8H@HtHHx@Hu뼋WSHu t$t %HfDǃ@HuLJttƉLJfff.H@yHHH5 1,fff.H1Ht HH@8HHHfH\$Hl$H HHtHH@8H@ Ht#H\$Hl$H1HtHH@8H@ HH~HH@8H@ ŐAVAUDnATLbUHSNEHz?-tKI4$HIH(HHSHH@8H02AtoI<$?-ufGLwtZ<-u e=@ HHuLHIHHH@8H0CAuH5G HHHHHHXHNHHH@8Hp HHEt@AtjII4$1HHHHH@8Hp HtGHH@t t tK yHHFAu[]A\A]A^HHHH@8Hp HHHH@8Hp AAISH4}HH@HxHHHHCHHH@HHCHC tCTHCHCPCXQHC`HChHHCp7C0HC(C4 C@HC8CDǃHCxǃ[DATH5- SHHHLPHPKHH0HH5 H߹ H@8H@ HH`HH5 HH H5 HHHHH5 HHHH1H@8H0H(H5e HߺoHH1H@8H0HH5; H߹;HH1H@8H0HLPH[A\ÐH\$Hl$H HHtHH@8H@(Ht#H\$Hl$H1HtHH@8H@(HHHH@8H@(ŐH\$Hl$Ld$Ll$ALt$H(I(誾A2t9t DD9uAD~ IF8-t%1H$Hl$Ld$Ll$Lt$ H(fD@wvHH5 L1HB HcHH5k QH5b LBHD$HHHL$P -H59 E LkHt$HH HVHT$HB<vB<vB< v܀_t׀:ftЀ=txHHL{m H\$HdHH\$I$ I$HLHL$H []A\HÀ~-HNt1H H[]A\H9 H)AHHLHHl HLH AHLHT$HLHHT$H AHLOu OHL$HEƇSHL$H0 HNƇKHD$HHtIDŽ$HD$0< I$FtHHxz LI$uH  H52 t16fDH5C AƄ$NHL$H`Ƈ(HL$HKƇLHL$H6H0H  H5 1WLHHH1oL׶H5 H1VL辶H5 H1=1LHL$HO/HHXHt$LHI$XHHD$u-Xf< t&< t"< t< ftHHT$0< uHBHD$z-HBHD$HƇOHtHtH tIDŽ$ HƇOHtHt H t趴IDŽ$HL$HHH-n/HvH5 H1HH LSH5 HH1϶H]HHuH5X HT$HBHD$zt[HD$<:<=A$hADŽ$h?L蝻D$HijHt$~x~HFHD$1Ҁ~HtH;uHH)Ht$HT$HL$HT$E1LD$HHD$HD$H98H5 1LHD$Hl$1I$HHHPH9vQHv;Hv0Hv%HvHvH9HHHL I$HLHH0I$HHv0E1HHT$HHT$HHD$HD$Hf L1_BHD$H$ HL"H5 1LHT$HHHT$ HAHD$HL$1F<vF<vF< v@_t@:t@=HL8H\$HHH\$E\HEHH5! LcHJRB<B<B< _H` H5 LHL$SHt$LL$&I$ LQI$H5 LI$ H5 L1I$HHHHPHHHHHH9HH|<-lE1ҹ"HL{HH)HLA诶LD$H E11HL1ILD$+QH5 L1HVH5 L1H r H5 T1H5e L1H\$Hl$Ld$HIԺHVHHt.HAMHH$Hl$Ld$1H@8H0HfH$Hl$Ld$Hffff.SHGHH9tHtHL [A[Ät UHCHCUHSHHT$H|$HHH+GH$<DŽ$8HGT$HD$<H|$HL$H$1HyHHD$HH@ H)HHD$HL$HHBHHj@$$D$HDŽ$fDŽ$ 7EЀ|$$$xD$ ЋT$$$T$t Ȁ$$HL$2HT$H|$(1HHD$ HL$‰$HD$ HƄ$D*HD$ HT$HL$t5$<HHHBHDŽ$8BP;BTH|$\HD$HL$HA$8HH[]HD$ǀHT$HHHPBP;BTOHL$HD$ Ht H|$H 1H,H|$HHt$H|$HT豮HT$BPBTHT$HXHHBHǂXH|$H$$<HT$|$HHHHBHH)H$8eHH|$HT 1HH@8H0Ht$H|$(跦HL$(HD$00^HD$H9(.HD$(HT$H98PHT$(1H|$HHD$@HT$HL$($HƄ$t1rt5HD$@HT$(H'HL$(ǁHD$(T$$;P0}H|$(fHL$(D$$;A0|HT$(BP;BTHL$(HHHPHHHH`H`T$ HEH|$(H5n 1H1 HH~(H|$(H5] H1螙4@S1HH<$G0D$ HH|$HD$H $HT$$HƄ$Rt$HD$H$HH[H$D$ ;C0}H<$覮H$T$ ;P0|H $AP;ATH$HHHPuH0Ht (]H$oH$HXHHH9xul;H$HxH+SHHHPHHHHSHHH@HHC HHH@HHHHH;HHxtyH<$H$HHHH HpHHt x H<$HH5 1譗H<$?H$H@H $HXHuK(H$ht uSH$H@Ht t$ H蒞H$HXHt]H $HAHǁXH H<$1諩HHtHғH訢 MH$HtHHHH@pHHC H$HHtx tRH<$HH5; 1oH $AP;AT3H!t$ H茝HH@8H@HtHHx@HuHH@8H@H>HHx@H:)HHHtx t(H<$HH5 H1躕H<$1OHH@8H@HtHHx@Hu뺐H\$Ld$HI16@LH؝LH\$Ld$HH齬ffff.H\$Hl$Ld$ HHI[HtHH@8H@uHI<$t%HE H)HHH޹HTHH][HDL]A\A]A^%HUhtAWAVAUIATA1UHSHHdH%(H$1iHHH@©H@H 1H芫1H0HHH8艩H8H 1HQH8HDHƅH0莽H5 H՚Ht0HHHH@8H0כH HH蠽H5> H臚HHttHH= HL8HH@8L0觫GHcڀ<b/Hھ/HHHHLHKH5 HHHHHXHHH@8Lx(M1ҹELH螮MHF/HI9H/H9(I]H/HL0=H莯HItcH9t^Hp1HûIUDE1ILHH)趜HǤ/L;(t HH/H/H0I9t LL)IL,II]HwH5%ƅH˜HHtHT$HHHl$`HL$HH`Hx8ȎHT$HH`HH@8H`HNzHC8HL$HH8-YHD$H<H5 }HT$HH8H8Ht"H8HϞǾ1蜲HL$HH8H HT$`Ht$hH|$HcH|$HԍH\HL$HQTH5 HiHD$HQHD$H1H8H HJHHA8#ux!uH|$HH] H_xHH|HT$H H8MHL$HƁQEu?@< t6< < f< ~<#vHEf< u< Hu HE< t< JHT$HH H|$HH5 1IHT$HH|$HHHvA?:H|$HH5 1H|$HH IHҎIH|$HH LHh跎IHELH;BrjDL*I\-LI|- D#bHD#HH|$HL L)1AHLwIHELH9ByAFuH|$H1LIHD$HƀƀH|$HL;HIbHT$HƂQAIWGHT$x=HL$HƁƁH|$HH5 I軵HD$HƀHlH|$HH5 I_蕵Au%HD$XHL$XHH;l$TH!H|$HHމI?H|$HHE1HҼHt$pH|$HH0 AHt$pH|$HLHAH|$HHt$pH~ AłHmAGMGB< :< 2< D%< < H= LL= (HD$HH`H"xI_H|$HH5& E111H螭HIL<HL$HLHHHH HD$`H|$HH L賋H|$HH w Hv L1H|$HLu H w H| L1H|$HHf L^H|$HH LJVl$THD$XOH5 H褭HT$HHHL$HHe }_ H|$HH5 H|$HlHL$HH8H|$HH5 A11pH= _HH] H|$HA9nH|$HE111L H|$HE111L7H=s LL=G H|$xtH|$xsn H|$H1XHT$HHHH H|$H裎HL$H1HHHfHH8vHCxH|$HwH|$HxH|$HH|$8t H|$HT$8H|$HH5 owH|$HH HƹH|$HH5 HT$HHHH׀HXHHH@8HXHƀI]H|$HuHC8HC@LH|$H H|$HH5ڷ ~HH5ȷ JXHH@8AELhH|$H~HL$HHHHπHXHHH@8HXHƀ>L#5H5f ID$8ID$@H|$H ~H1JXHH@8CHXH|$HHT$HHX H6H|$HH5* 5HL$HH-/HX }HD$H8@t]HL$HHHtLx uFHH@8Ht:H@Ht1HHp8Ht%H|$HL{ 1HD$Ht]HL$HH HtLx uFHH@8Ht:H@Ht1HHp@Ht%H|$HL 1蓋HD$Ht]HL$HHHtLx uFHH@8Ht:H@Ht1HHp@Ht%H|$HL 11HD$HyH= 豓Ht'H= HHHD$HH|$HVHT$Hǂ H HL$H HT$HH`@HH`HHƂHHHPtHpHL$HHǁ`}nHT$HO iH|$HHT$HBP;BT~H~H|$HHL$H1HǁXH$dH3%(H[]A\A]A^A_HD$H( HH5i H1H`H( 8HXHPzH|$HH5 H1豠A$H=f HHIu H] t t t t tހ-HfzE1}jH DXH It t t tހ tـ-(H=ű HRL< t+< t$< t < tHfE< uMLZEHtu6HT$HuƂƂH]#H|$HXHh t̀ tȀ tÀ ft tI!L뉀xHٯ HDHPHL$HH9H|$HH5 1HL$HH5 1H`HuVHt$`H|$H1APkHL$HH=$ HHHHX@0< 1ɺ 1HHT$H<UB< wHB< v\HL$Hǁ@;/{HsH|$HYHHD$HH5HT$HH@H|$`H HED$`HD$`+HL$XH HL$`HL$@HT$Xt$TH|$HH<- HQB< v-t.t_@tHqH=9 |HuH|$HHHualH5 H)H|$HH5 vHH@8HHYHT$Hƒ-H|$HH H͆C @H|$HH薏H= HH9HD$HH|$H1LM)貘H|$HHUvHL(HL)J,(K4,nH5ͬ H1 H|$H1H܎H|$HHy HIUHt$pH|$HH ATuHt$pH|$HH HT$HH|$HL M LHQHT$pHHB H\$HT$ Hc Hl$HD$(H IH$Hܭ HD$Ha LD1薍HL$HH ƁQI$HH0tHT$HLHH8-jH|$HH jH|$HH5s 1Ț}TiHD$HƀƀH= H|$HHA11ӭH|$H蟟tH|$HH 1cH|$H1ҾBcH|$HH5 1*H|$H`H`HH8xHL$HH`HHH{HD$HHHH謠SH|$HH HeHHdH|$HH* HуH|$HH5г yH|$HH H蠃H|$HH5; 1H3H|$HH5׳ 10H5 HH1H|$HH5^ H1HT$xH|$HH5 1HL$HH5 1HHјHD$HH(8HXHPrHT$HHH|$HH5' H`HP81腘DAUIATAUSHH|$Ht$L$8H=Ы 薉Ht11 H}HD$1DDLIUHHH9@1E~jHHu`H;utRLfDHQHCH9tHt2H9v-HCHH9w :Ht @H;uH9uHT$H8 HtHHCH9BHHT$H+@ H//;HD$HHtHeHT$HǂHL$HHHǁ6fHD$HHǀHp7HT$HL$H|$(1R0T$HƁOHD$ 跘HL$HT$ $HƄ$YYHD$ HL$HH[]A\A]H9HCHH9:Ht H;uH|$H5 1qHL$H8 HPHHHCH9t#HuH9lHCHH9[:HtDH;uHQHHu3D{HT$H0(IuHΗHL$HHH1@WH $H|$LDH[]A\A]HT$ǂHL$D$9A0~H|$l|HT$L$;J0|HT$BP;BTHL$H8HHHHPt t$HmHD$>6HT$H4$H|$wHD$H8Ht$HvmHT$HHtx t_H|$0HH5 1eHL$H0HH5 H1HeHpqHH@8H@HtHHx@Huffff.Ld$Ll$IH\$Hl$H(H` IH(H]H跃HtgHhH9tKHAHH)LLlI$`HL<_H\$Hl$Ld$Ll$ H(H5gL/e1HEH,듐H\$Hl$HLd$H HIԃ|KpHHcHHc HHH,Ld Hl$H$Ld$HH={/1谋Hy/H8tHx/8UvDfffff.AUATUSHH|$l$IH|$yHL$AP;ATH|$H|$HD$HL$HHHH`tRHHH@xHtHHH@HHHHAHD$HH}HT$HǂHL$HHHǁ`HD$HǀƀpH^HT$XHD$H Hd`HT$HHǂ HE`HL$Hǁ$HcHT$HHHHpHL$ P HD$HHT$Hǂǂ $aH#v/HHD$H98 tHy/DEWH|$1uHT$H HHPHtTHc‰HDP Ht/HP @uHP uHL$H H_HD$HHǀ HHǀ^HT$H8HǂHtH8H#vHL$Hǁ8HD$H@H^HT$HXHǂ@ƂHƂIƂJƂKƂLƂMƂNƂOƂQƂRƂS6HL$H0HǁXH^HD$H`HtH]HT$Hǂ`HL$HHǁh]HD$HHHǀ]HT$HHHǂ]HL$HX HǁǁlHD$HHHǀX =]HT$HHHǂHǂ]HL$HHǁHD$HHǀHT$HHǂώHL$H(HHǁHǁ\HD$HH\HT$H0Hm\HL$H8HY\HD$HHE\HT$H@H1\HL$HHHǁ(HǁHǁ0Hǁ8HǁHǁ@HǁHǁHǁHǁHǁHǁHǁHǁHǁHǁHǁHǁHǁHǁHǁHǁHǁHǁHǁ [HD$H(HHǀZHT$HHHǂ(ZHL$H HHǁZHD$H HHǀ ZHT$HH HHǂ oZHL$H@HHǁH PZHD$H8HHǀ@1ZHT$H` Hǂ8Hǂ0HL$H Hǁ` HD$HHHǀ YHT$H HHǂYHL$H HYHD$H HYHT$H HtYHL$H H`YHD$H HLYHT$H H8YHL$H H$YHD$H HYHT$H HXHL$H HXHD$H HXHT$H HXHL$H HXHD$H HXHT$H HXHL$H HpXHD$H H\XHT$HHHXHL$HH4XHD$HHǀ Hǀ Hǀ Hǀ Hǀ HHǀ Hǀ Hǀ Hǀ Hǀ Hǀ Hǀ Hǀ Hǀ Hǀ Hǀ Hǀ Hǀ HǀHǀHT$HHǂHtHWHL$HHǁhHD$HxHǀhHT$HHHHǂHVHL$H HVHD$HpHǀ HVHT$BP;BTHǂp$H|$jutHL$A0HT$B@HL$ATtH|$HcHz H1oHT$H@tH|$HcHw H1oHL$HxH HHH fDHD$T~ HZuHT$1HxHׁ` HxH HH` HHH HxH`HHx@UHL$HHHǁxHL DhI$HtKH|$ttHKLCH H|$1HInHCHHuA9| HcIHD$HHHTHT$HH-qHL$HHHǁǁ H eHD$HHHǀ ǀ$ ǀ H KeHT$HHǂ ǂ ǂpHhHeHL$HHǁhǁtHǃpHT$HHHHhHdHǃhǃtHHuHL$DTEHT$HǂTbHL$ Hǁ JHD$HHǀ.HT$HXHǂǂHL$HxH|$WHD$H܄HT$Hx˄HL$HHǁx评HD$HpHǀ蓄HT$HHǂpwHL$HHǁHǁxPHD$HǀHT$HHP(HuHHL$HHB(HuHHu 9HHxHX HD$H߃HT$HHuHL$HyHHD$Hx`貃HT$Hz(褃HL$Hy8薃HD$Hxx舃HT$HƂƂǂH ǂL aH|$WHL$HHHHZ(HtBH{ H+Ht{gtDK(Ex HHHuHT$HHHzt)@ @H:H+zςHL$H` HT$HH8訂HL$H藂HD$HǀHT$H[]A\A]ÁHH|$HpHs^H1H|$HD$HL$$HD$HƄ$H0Ht (HD$HT$HPHwH mHO`HrHL$H ǁXHXHǁ Hy^HL$H[]A\A]H)g/H(H;l$H:Ht!)Hze/HH<HHuH H8 HTe/HMq0HXHmIHD$H) HcTH1mh"H\H:蓀H|$H HcȾ10h%H|$HO HcȾ1hff.UH1 HSHHe/H@H LJlLJLJPHLJH` H HLJLJLJLJLJHLJLJ HLJ0HLJ8HLJ@LJdƇƇLJ$ LJ( fLJ, LJ0 LJP `LJ HLJP LJX Ƈh HLJx Hc/HƇ HHƇ LJh HHe/HLJLJƇ0HLJHHHd/HLJPHLJXHLJ`HLJHHc/HLJLJHLJHLJ HHvd/Ƈ(HLJ0Ƈ8LJ<HHp LJ@GPGTHLJH(Hc/H H`ƇpHLJpLJHHa/LJLJHLJPHLJXHHc/HLJxLJHLJHLJHHd/LJlHHd/HHa/HH5$8 HH脁HH%kHm1HDž( DKHDžhƅlHDžsHrHmH0x H0HHH05sHHƺ%sHHƺsH0HHH+HBH0Hl?3@H H0HHP H0H H0H H0H H/H8[RHrHHxT}H5 1HH(HhHƊ Hp1H-dHxH 1HdHH 1HcHrHH qH HHwH HHHH(tH|HH` HƺHIH^/HH8 gVdHHHOHL|HHH[]zHHPaH`OkHH H#a t"H]/HHh {HH  Dž H  HI_/HHHS t}Hl^/ H Dž HHH;S$ tXtDHPa/$ Dž H @#HHn\ mHH{HHK\$ HH{HUxSHPHH^/H8t0H]/Hދ8J~HHߺx[]1BGfH-\/1HHlyuk}HJu@H=r^/1TuH=\/1TtHŊ H=o ƹ1oH H=+ ƹ1oH5 !zLHHv*LF~wHҡ HcHH= LHuA8Iu1~GHH=~ uKHuAxSfDq1~AHHH9s0< vJH=E LH=!T ʈ A: A:@ A:@ A:@H=Н fATIUHj SHt-Et'1Ht HtLVDHD HHAu[]A\1fff.HSHtFHv8HtC@uPH[CHHC8C@[AWDAVAUATEUHSHD$PAHt$0HT$(L$$D$TuF*HD$81E1E1D$\AMHI(H\$8D$DAD$L1ҋD$$:wHT$0@HĨH[]A\A]A^A_HL{D$DM T$PDL$\AD$HD$XЋD$TD$$D$\D;L$\!tLT$HT$XLcHD$0HL#A|$v+H HHA 8oLHHaBHLd$`H]LDƀ1HL$HD$`Ƅ$BHHH(HHAHAHH@HxH+]HHHXHHHHUHHH@HHE HHH@HHH]HHHxsHRhLetfDH]H4cHE H)HL9V|$DkHD$(H HCHT$0HSHH t$HHCL{HHEtVHHEt H H YHEH0HPHHUHH HHxH+UHHHPHHHHUHHH@HHE HHH@HHHEHHHxHDL$LD$$H fDHD$(@HHHHp0HcH.hHxHP HD$8BaHBIHD$8HcD$$L|T$$MT$\:D$TAD$DЉD$\1AD$HD$LD$XHHHHp0HcgHLh AED$TD$$IUHT$8D$\HM|MzD$DD$H1D$LD$XADD$PE;|$$,0|$$-@H|$8DkI(f[D$DD|$$8t@ t_HH(HPHHH80lM}XM]AI([A"tHHx'tHfWf.@  HDL$$gDL$Hl$Ld$HH\$Ll$ILt$H(Ht>HHX8Ht2DSEH{8tPCCt'L9c0H$Hl$Ld$Ll$Lt$ H(H3HtH 3Hs HtH2Hs(Ht ~ HsHtH2Hs8HtH2HsHtH2HdI$H@8cQQH, HHH$Hl$Ld$Ll$1Lt$ H(&LHC0LHMLhPt'Mt"LYDLALHs?Hs(H2fAWIAVIAUATUSHHH:DZED$ HD$HHL$HHu*{RB<vB<wHk} HHtPHSBH|:uHCHtx uHH@8Hp(HtI9HtL9tLhHHuID$ HD$D$ ;BZH[]A\A]A^A_HE@XpLh8MePMtA<$/tCI`AEHLBHI`L`8HUILB@H HHP1|JH- LLU-HH, LL:-Hffffff.Hl$Ld$HLl$Lt$IH\$H(HIEHXPHHq HHDH;HL@PH MLDEtgLHL)DHq AHL,:IHLH$Hl$ALd$Ll$HHHHP@Lt$ H(9@H=p LHtV %H F uH$Hl$Ld$Ll$Lt$ H(H$Hl$Ld$Ll$Lt$ H(gffff.H j Hp H9AHEPcHEH@8H@0HHE5cDH * HJp H9AHEDAuDDAbDH\$Hl$HHHt~ tH5 1&_fDHHh8H}(tHHl$H\$H+bHE(DAWAVIAUIATUHSH(HL$LD$DL$ F D$'t &E1 HLGHEHxt#M HHEH@e XYX1HHV.LeHL\1LID$8HEHX8 QHI`HEHP8AHBHHEHn HH8I`Hx8t I`HP8HQPHEE1E1*HHLH@8@@HEH@8Hh0fMHEtAFLpPH]LT$Ht$1@HC@HT$HEHPH\$ T$'uuH([]A\A]A^A_HEHXte ~L^11LbHELHP8IHB8DAPLHEH@8H@8HHh`HEH@8H@8HI`Hp8A_HChHEMH@8H@8HIPHB8KHELLH@8Hp87H(L[]A\A]A^A_]HL8H8]DH\$Hl$HHHt~ tH54 1F\fDHHh8H} tHHl$H\$HkTHE D t2t tHH@8Hx uKHt ~ tGHH@8Hx(u@HH@8HtHxtÐAWAVAUATUSHhdH%(H$X1H|$0Ht$(T$$L$ Ht$8*1E1Hl$8HD$@HD$HHD$0L$$H HD$HD$PL$ H$'t*HUt/:uULe:hL}LeRL+\$8H|$HAHL$0H`@%uHD$88HL$8B<B<_HD$0HHHD$HH|$HDt$$E|$ H t%|$ H t|$ H> Hj HEHL$8H|$0H5 1=NHT$0HJ tH H|$0=HL$0HHL$HHD$HDhEHD$@H$XdH3%(HD$@Hh[]A\A]A^A_ÐH|$HnHL$HAtAD+l$8AE,1}:IA<$AT$Il$Ld$8*AEL4$=Lt$4Ht$8IcLHGAMAEB3:LHHcB0:B3DD$$Ht$HH|$0CHHD$@t>HHHD$@t1HT$H9t'x DL$ HT$HIH|$0LHb,L9t$tLYH|$@HD$H9D$@HT$@HHX8HK(HHL$HHD$HHH{PD+|$(Ht$(H|$0D:HCPHT$0HHHHT$Hx/HcHSIH$HD$HL$@HHX4Ht$8H|$0?,Ht$8H|$0OHT$8BHHHHD$0H H9z Eu H@XR|$ |$ H@X@%HL$8H|$0H5O 1x$HEHH@8Dx@ExHx8mHT$8H|$0H5{ 1=$PFHD$8ml$$HHXT$ Ht$@H|$0`HL$89!|$ Ht$@H|$0_{H=9 LH`HT$@HHXOH@X @EmHT$8a<Zd|$ t΃|$ $HL$0O^H|$0?HL$(H|$0Hz 1:`z A:Qz A:@Az A:@yHD$0Hxuo(LHT$01HHx(!(ZLHL$0(1HH 5LHHD$01H HT$@HHXHH@8L`(MuH|$0H4HH@8L`(H|$0S1L]?L58/InH1H|$0AHLb;HtH0H|$0L9HL$0HxHhHHhHDHHu%H=Px LH HD$@HHB8Hp(Hu"Ht$@H|$03HHL$@H@8HHp(JXA1H|$0m>x A:x A:@x A:@HL$@HHB8HX Hu H|$0H?HH@8HX HD$@HJXE1E1HT$@H|$0IHPW)Ht$(H=&x HHxH|$0H5x TH|$0HHLH|$0H5w  MH|$0H5w yTH|$0HHILH|$0H5w LH|$0H5w 8TH|$0HHLH|$0H5yw  LH|$0H5hw SH|$0HHKH|$0H5Bw  \LH|$0H51w SH|$0HHKH|$0H5 w  LH=v 7[ A:[ A:@Z A:@sZ A:@bHD$@x uGHH@8Ht;H@Ht2H3HD$8HHH9T$8s]0< vHt$@H|$08HH@8H@벋D$ |$ |$ HT$0ƂRHL$@HH@8HH HHB8LD$8EHT$@H|$01H0TH=t LHiHD$@H붺H= LHtH=t LHl)H=_* _ A: ^ A:@^ A:@^ A:@HL$@H!H= u A~Hx{ HcHHT$@H|$0HH H@8H0v5HL$@HT$0HH@8HHxWHT$0HL$@H|$0H HH@8H@HHHH@8HH0tHD$@H_HT$@HH@8H{ wH|$0H3HL$0HBt HH0HH@ HyPu[H5i 1ɺ >HHD$XH5s L?HL$ HT$H5s L1?HT$ H5i L1?fff.H\$Ll$HL|$Hl$ILd$Lt$HHHHT$IDD$L5'/HO HHD$t!{ CH1HHD$E1LHL HItkHHQ8Hj8HEHxH|$u&r@uH9YPtLCHEHxPHX8HEHT$HHELxLH\$Hl$ Ld$(Ll$0Lt$8L|$@HHHH@PHD$@L5!&/H|$LOE1fH޹"1L1\FHD$fLL$HL$Hr EL1&2H@`ALLHHhPH(HL9?{ tE1ALHHLYL$HHT$LH@8HHHIN AHLHT$ALHLAHLHxP8ff.AWAVAUATIUSHHH|$L$ E1~ A$E1HL1fD<:Ht<'uCHHuHHEHD$1}:H)IM)IAH|$1E)LD:HI>IL+t$Ld$LH|$E1LLL HHhDD$EtHHA8HP8HHxHHH[]A\A]A^A_ICHS<:tHHHH=e L2HT$H|$H5e H`HP01{@H|$H~HH|$HPH09IHxPOHHNHHV@AHvPH|$fAHHEIHuH=d H|$AV1LT9HH|$DL69IfH=d Lu9H\$H IHM)CH@`H0HF8H9P81/H=Yd LtDL$EMH|$HH[]LLAA\A]A^A_i@f>fDUHH5c 1ɺSHHa8HtHc HH HtH[]H&;HH; H5c H?1H¾1H*H H5|c 1ɺH7HtHgc HH~ HuH5n H19H\$Hl$DLd$Ll$ILt$L|$H8IIIjHHt&HHl$H\$Ld$Ll$ Lt$(L|$0H8MtItkHz /H$H$E1LLHtHH@8H@8HHxHtSx[DLALLAg#HlHdH /LH$H;u@HxPu4E1LLLLAWcIAVAUATUSHXH|$M/HtHP HD$HP H9BnH|$cL HD$ 10HH$HT$H|$ALHP HD$(PHDŽ$HD$0D$ H/HHtOHH@8HHC SHHyHPHHDŽ$HA,HD$@H$HD HH@uAAE1D$HCHHD$H|$HAHLHE1HtHLEMP8MZ8M6IH@`HHzHtxAADD$D$MAtACAN\8ABH /McAAJXH`H|$HE1HL:HH\$ZHr@_ :u_ :Fe_ :FU_ :FEHBPH=_ HLhP HLIHCHH|$1LH9HFHH@8LX8IET$0DT$ЃE҉D$0u5L$H|$A0c1L:=D$HX[]A\A]A^A_ÃT$0©HfWf.@  „C HDŽ$Hd$0L$AH|$c1L<1kHL$;PBLHHxHtH80qH|$H6ZCtBHLEHI@8H^ LD$H|$H5h MDX@H^ EHD13LEH i DH\$Hl$Ld$HHIHu1HHl$H$Ld$HHHxPt޺c*HtHH I$P H9AtHLB;cHL*ыA;$PuAtHcH\Ht{ yH/HLH!HZHH@8H@8HFH>fff.Hl$Ld$HLt$H\$E1Ll$L|$HHdH%(H$1HHIHIIHXHI}HSLAE_AE< HHALHL0A~ tDHHE1ILLHIHKLHH@8H0htuvfM9tL2H$dH3%(LH$H$ L$(L$0L$8L$@HHÐHxI,I LH!!HH@8Hx(t*LH!HH@8Hp(L1HILH HH#HH@8Hp($H 8=tÐH1H t0u LJ` /@/LJ` ƇQHc  ( t, LJ( 0 it+gt-ct2otDmt/s@t?xt*@ÁÁÁfÁÁfÁ fffff.SHH:l HcH>gu|~euv~tfun~puh~r@u^~ouX~t@uN~ouH~b@u>~ yu8~ n@u.~ uu(~ m@u~ bu~e@u~rt1[m< wHk HcHd<wHk HcHE<3wH!l HcHC<4wHl HcHB<5zHm HcHa<YH>n HcHD<38Hun HcHA<3H$o HcHe<Ho HcHg~e~t~n~efz~tp~bf~yfZFg~e~tFgg~eZ~tP~pF~rf:~o0~t&~of~b~ y~ nf~ a~ m~ e1~e~tfF6[F H1[1@~l~ef~n~o1~l~lv~efj~r\1U1~s1~f1F@vEHT$H L9vF< @_t{@.L9Lw$< t< t< t < t< @u HH9uH)H~ :=F<w?HT$8dH3%(HD$HH[]A\A]A^A_II9Au]F<vHD$L|$H Ht$H@vH|$LD1(HT$ H$LAE1IHI9wUEL<_t0HIJ KI9L4vH|$tH|$H-C 1H4$H|$LHH+ $H$Ht$H|$AIv HD$H HT$IuH H9s9A}.u2AE0< w&IIL9vAUB< v_tIHD$Ht$1Ll$VH IDL$H|$A)H HT$J  LH+L$HT$Ht$H|$Ll$2fAVIAUATUST H;H HtH H9BL Mt#H L9vHL)H=DL%"* xH55* HHHT IăE@H) LH1[I$L IL A< t< t< t< ft< tAME)1LHHH9H`HH`HHDBHHH8H) 1H) MDHH1HH)H=L L9L9uHH < t< t< t< @t< tAIA);H8H1L%) 1LHHH]H`HH`HHDBHHH8H( 1H1 LHH1D A9}H`@H)ЃhtHHHH ~EhtHHH@8HHHx*H`H5( HHP81Jǃ< Hǃ@ 1[]A\A]A^Ã( tPH H9( t=H` L%m' Hu' LDHF HH19L%' D H> McHH1ǃ M@H@DP@tH{) LH1^H& @LH1AH`H5& HHH81 ShHhhh1[DH\$؉H Hl$Ld$HLl$Lt$H(ALDw@H HEHHV1H|HHHHHHfD H`@H HHVMHCxHHtAELHH( DH$Hl$Ld$Ll$Lt$ H(ÐH\$Hl$HHHuH\$Hl$HH% HHHl$H\$1HH5% t@H\$Hl$HHHuH\$Hl$HH(% HHHl$H\$1H(Hl$Ld$HLt$L|$IH\$Ll$HXHL$LD$ILL$HLd$`L/HH@8HX(Ht J Ht$H=$ H ; H5$ H8H> HEH MLD1LzHHHH09HH~HD$H\$(Hl$0Ld$8Ll$@Lt$HL|$PHXfDH|$vHT$E1HމHHHt H@ u@H U$ H$ H MLD$H5$ IHLD1LHFHt$HH|$HH\$ QH|$AMt EL HHH(H[HAHAHH@HxL+mHILhHHHHUHHH@HHE HHH@HHH]HHHxVHuTHJHUhEPHH;UpETHUhHH+EHHE H)HEHD$HCHT$HCL{HSHEhHHt$ ҃nhLmHHH@8H0HxF HH^HPHCHHJ" HH@8H0QHHH@8H0FHH0HH|$t HD$@H\$IEHEEP;ET+HHHUHH HHxH+UHHHPHHHHUHHH@HHE HHH@HHHa8 HEHHH q! HxH\$C 1LHQHHIa(HfWf.@ I]IEHCHT$HCHSHH޹HHHtHHxt@AMLLH$HH9HD$HHUhP HHHHA HHH(u"1HHHH80fH3HHHtx t&HDHH5 1HHH@8H@HtHHx@HuAWAVIAUATUSHxHt$HT$91HF&I M HE1HT$IԍAЀ_Hk< Mt IEH9.D$'3eE1LW|$'HA$Ht$LHLLAH |$'H2 H A Ht$ILH$HDL+d$E1LHHHL$HvDH5D L1.p0uHT$HD$rHH@x@bn@.@e@EAD$Gc}.H]A$.UI_9BЀ_< ,M9HMt IEH9IHUBЀ_< }_u'LtHG L1MD$'.E0< /LfHt$HLH蓽HHv1HپLHT$HHxH[]A\A]A^A_ÄuM9A $I HJMt IEH9tILtHs L1HMH= HL$`uH;A$eUIH\$`_Q+-_^fDBHHk< _1L:HD$'HT$HBSM9H5/1 L1DA$IHrAHD$G@_HD$(Hs.McLcfWHD$8JD$FD$0HD$HH.JHD$PH.JHD$XFIl$@<6}_.1LS|$FHD$0f.O; D$0HL@|$GQAH j@HH+T$Ht$H $ IE1LH$HzH & HcHAAu"H5s L16LHAt$H|$FHT$8DHHHH;D$8tAI @H D$GH\$8A4$IH|$(tHD$(HH9Hl$(AHЃ|$FHX ~D$0H. HBYxGH*XD$GL$0AH H9D$8HT$8HLsH؃HH H*X맾LH|$8H*D$8D$0D$FR1L:HLH+T$Ht$HL$pLm D$'HL$H\$AqHD$GHH5 #HL$HH L1uH\$Hl$Ld$Ll$ H(11HHýIHc HLÀ ĬEtA$AE%tA@ t 1A%L hHHHl$H\$Ld$Ll$ H( ֶfDATIUSH H;( t[]A\@HI$( E< t< t< t< ft< t?I$`@%uR}w]@UB<vB<vB< v _t-uNHI$`@%uI$ Ht@ uA$J t}vHLuU-t(H"HtI;$ &L"]EH3) I$( L1][]A\fff.AVHAUATUHSHL L LH HH5) H1ٷHH>HttM9H HtAH`@%ukH HtV@ tPH`@%uC>vGHwH( MD)H1L []A\A]A^J uB<HuHfDH`@%uO;wXB<vB<vB< v _t;:uRHtGH`@%uH Ht@ uJ t;vHHtHuH9 6< t< t< ft < t< L H' H1D)L []A\A]A^ÍB<_HALHL' H1uH HQrH f.AVIAUATIUHSH< I$ H9r/fE< t< t< ft< t < ufDHH9uE<(HH9s,E< t< t< ft< t < ufDHH9uI$`@%u6I$ Ht@ tI$`@%t A$J t }zUB<v B<AH]B<vSB< vL_tIHI$`@%u&I$ Hty@ tsI$`@%ue;wpB<wDuI$ H9s+f< t< t< t< t < ufDHH9r<,[]A\A]A^A$J t;vHLu?_A[]A\A]A^À~(*atKEHUt&<(<))HHD% HپL1EHL:HLAvH)LFt ,[]A\A]A^1HLHuH5 ,LL1]9BHH< t< t< t< @t< t2H=S KH0DAUIATIUSHHD$HHzt_F %=HT$苿HA|$ v I$Hxt'HT$H,H9sl;\u fc;\tcHH9fuLfAH y#HH IM11LHH$@IHL[]A\A]HBHD$HHsH9tfAH LxVH9Hv;<\tHHH9v%<\uHH9v;\t\H\HI$H+HPGI$LH0LHخAD$ HtH yH\$Hl$HLd$Ll$H8` u;HX HLJX H` H\$Hl$ Ld$(Ll$0H8@t[tVHX ( LJ( LJ H҉HtH` HLJX fHH HIċ@ <t+L1҉HH` HǃH ?tCI$H@HD$I$H0HT$HtAD$ ItH LHM脢HT$L"H}HAVAUIATUHSH0FHHBHD$(HILd$(m fWɁ L9fWLt$ ) D$>HD$ Hx]H*^D$H\$ I9Xv[) YD$D$tHT$(E1LHL $qH $Hy@HЃHH H*XH0f([]A\A]A^HT$("iHAWAVIAUATUSHH`@H>#tH[]A\A]A^A_FLF< < H= LHuA@< t< uA@Mh< uIAE< t< t0< wLDH]C< v 7 ."2 T K B D4 Iuf%< t< Dt< t< t IA$< uL @BH< t< t< t< t< t fLE<$A$H)H~5I`Hx8襱I`HLH@8I`4HC8E<$I`1ɺ 1LCHZIA< iIA< YH]L}"L2HIHP@LIfffff.AWL| AVIAUATIUHSHL9HT$DD$ L $A$B<B<B< _D$ À':NI Ht@ t I`@%tAJ B@<=LL qA$L-.ADJ ;x ADHÀ;yHLuHL)L,*M9rLHIL+I9H5 L1UIH؄(I`@%u3I H@ I`@%u|A|$AL$It$A<vA<v _E:E:IHZA|$:A|$$E:AD$IEH AJ tA|$zMl$LLյu,A$;EH+l$H$H(HL[]A\A]A^A_LLjuLEfffff.UHSHHHtE H蒳Ht"HMHH5 HH1'A  B$^w&B@HD$D$륃tH$D$듉Ѓ@fDAUATAUHSHHH@HHHcLJL9AHHILHH( H H L t JH( H0 t IH0 LHhzHH9Pf1H趺HHHH H HHH)ױC HK 1H@H`DhHH`Hx8tH`HHp8=HH@8Hp DHHH I< hH8HLHII€JVI)H H HƅIH HL LL L L HHBHHHDž( HDž0 H thH8HLH9H8HĬHDž8HL[]A\A]H H9r II9tA$< t< u苅hItH8HI9HHH H HH H H腠ƅJƅIH8H胶*H8HLHH AWAVAUATIUSHxdH%(HD$h1T$,L$(< t< t< t < t< Iu L5II$`A$9PHs I$`PHI$ A$E}Ht @ d A$J v HT$@LLHT$@H|$PL˲EcI$`AE@HA$ D$7A$ ZA$ OLIHLMIHcHBAF \$(%H AF 4 LHl$@HT$PHD$LAHD$8HT$ HD$I$`t0I$ HtA tI$`@%tA$J III$ HqHH)HTH9Q$IA$ LA;$ 'H9rVD\trA;$ mA;$ ,|$7uCAHII9$ DU uI$8HuI$`@HU\uHEI;$ s|$,u#UA;$ A;$ A\UIHoH9sD>HIHH+HBAEI$ Ht$8HLD$LL$ LL+HD$@$T$LI$`I$ AHct$LHH0IH8HHH9v8H HH9t': uI$8HuI$`H@HH9uHE\I6HHxH~vx\L@A$ A;$ H|$8HL$8H9Hw,A;$ AHHH9\uDT$,E8H\HI$`Aߋ@HA$ D$7A$ H= ݰHDxAAD|$PxAEAILH+HBI;$ ILH+HA@Ip< w< A@IH< I$8HI$8I$ 1LHHI$I$ I$ AI$`@HA$hI$I9$P1L聲HLHާI$ HL֨C HK 1H@I$`@HD$0I$`Hx8tI$`LHp8HH@8Hp T$0HL謨I$ HHBHIDŽ$( IDŽ$0 I$ +DAHA;$ I$ H@ I$`@%D$7L$(uIHhIHH@I$`t"I$ Ht @ bA$J tt$(Hl$@|$7AN I$`I@HA$ HJHAH;BYI$H sM$P HT$hdH3%(HHx[]A\A]A^A_A$J HHHPH9rx\t:\u HH9fsLH)ШD\$,EdE8IHhI$ LL蜶II$ HqH9rBn\tiA8fD|$7u ҐAHII9$ 1U uI$8HuI$`@HU\ufDHEI;$ sA\tDL$,Eu UHD8tA\IHyHT$@HHDI;$ vDPH|$ H9HHufI$ Ht@ tI$`@%tA$J D$7A@IPH<  IH+HPI$8HLL1NJI$`A$ BHEAx :A@ 0@H6Ht$8 Ax   IIPH+HPuI$`@%A$J AD|$PHD$@I$`I$ I$`@%t$(dHL5HL$@ALLLHAHBIHsH;蜮HI$H M$H HL$@HALLēHl$@DAV11AUATUSLJ` HHH@H; 11H)HHE1E1E1fE{S$t+B< wEA<]t0< w }]AtAH;l$HD$ -AAH$!@$&AF<fAF<AF< A_zA$ttA@tnA&thB<vB<wYMtQA<vA<wCH $HHUB<vB<v+$H4$H|$ۜAjDEAEAWH]A9Ic DDA)H9\$AIcEH݈ -AH]mAG2H=s A@\DDϙAWHH=[ @DE贙AWHDEAH9\$A-$MqDZfDJfD~>8F<[<{ "@t9\8H]m@Ad$AAfDIcHT$ HT$A)H`@%u7H Ht@ t H`@%tHD$J t }ULuLB<H $HT$E1H|$AH6H $H! t€DHAHDHH+ $~3H4$H|$1ҹHtHT$AdL HD$A L B<IB< >_0}$HT$L vCH{0< HB< v,1}>DH= DGH$Gu$B$AAAE< v @$YAPAu0HD$ LuH|$LLzH=" 訖HtPuH= 蓖Ht7A OA< HfDJHA< vAHT$ !H= D2Ht$A(AAE< CH0< vA(ffff.H\$Hl$HLd$Ll$ILt$HHHdH%(H$1HtLz  HH@8p@H@8HHHHt;T*x1$Lt$@LL$AH43LL#;$I7H\$LL腗"HvHC|:u |:1ҹ LL~HHtHH@8H@Ht)Ht z T$1LLHLLII$ L)H~ A}=Ic$ HT$LL$1HLrI܀ Ic$ LIĀ @%@ADŽ$ ]s1M$ A}( @Htp1H$dH3%( H$ H$(L$0L$8L$@HHf19HH@8HHxuffA$8 tA$ A<oLLI$ ADŽ$ 8(?Hx82TP@HD$DHH@8H;HxJ+A}>fD^Dkff.AVAUATIUSILE1  H Hǀ H` u", LJ, ( 0 Ic A HT$hH; +LJ HL$h19@LJ( @ ZAD AD ADž` BADž "LaOH H9T$hH\$hHl$hDCHAELt$hHD$hIx\u }E0H=3 Hs)]DE]]L)U)Mx A< )Hc(AIx HcA< LIc ADž( ADŽŀ aaE#B<3#B< (#_#I I\$M Al$H9sAD$< P< HH= HoE1E11ɺLL-ADž I AT$I\$9;A S t8 t3 t. Dt$ tI < t< t< t< t < tL販+ADž I AD$0< A A\$Il$C< _.oC<C<B1E LL_H]I` LLaHI`A9PHs I`PHAADž I DH]C< v<11LLME HEk9HMI`ADž` A9PHs I`PHAADž LI hID$ADž` \ADž 2LI SRA4 I\$HA4 A( R9I`A9PHs I`PH]AADž I Eh I\$EtAD$0< ?A 97ADž I A c+ID$ADž` ;ADž !LI RTI`A9PHs I`PHA A"A8  "A;4 "ADž L,֓ED$IT$ID$A>)BA=K6ADž` HADž I It$Li8{H6I`A9PHs I`PHAADž I II I90  8I;( 7ADž It$L(I A 6I I E1Aƅ @ALL/A H)@ADž I I8H_Ah A DBIPHuIHHHPPH5 L1:^HƺL[HHHX} qHEHP8HdHzYH@8I8LH@HHP8I8r1҃¾1誆HEH@8H@HAHDZHEH@8H@Hƀ|I`@%uEI Ht@ t I`@%tAJ WI8H ד 1LNIDž8I8HtSAHtAhFI8LzH9FI8LfIDž8AƅQAhHAHGAJH H I LHD [I HL MM M HHBHIDž( IDž0 AƅJAƅII I8HFM; 3AhIDž( IDž0 AEhAƅH EII HL,ZI HHxIIHuWrLXI H¹LHWnI H ALFXHLMIHHxyLMIDžAHGI H: ALWI HL MM M HHBHIDž( IDž0 I Ah4,II9P1LpHLHfI HL gC t HL蜅HK 1H@I`hHI`Hx8tI`LHp8=hHH@8Hp HىLfwHH0MI A$HH@[4 43Hv@A|$YA|$@WYA|$@tA|$Lu H9I]JMAQt A<$=CLL脪AQ!.I8I 1I8L臲HIHt8tLjH# LM fjHH'FI H$A>IHLLHT$pH$R$IFH9EA $KLEI`@%ub;B<v$B<vB< v_t't :"H"I`@%uI Ht@ uAJ tfAD$Il$<=@<><~zt2AD$< !< !< !< @!< !A LeuCCA4 A;8 LB/ADž` ADž M %11LLoHA wA8 VA;4 IADž L,蹈A8 t A;4 A tAD$0< AD$I\$9GAD$IT$94ADž` ADž I JA( <,A#0I I9r[.II9t A<$ uILL[A8 A;4 M ADž( L]I`A9PHs I`PHAA,$ID$ADž I ED$IT$ID$A=1 ADž` PADž I ?A4 dMt$)A `I0 I9 PA4 Ip Hcȃ A4 LL跬Iƀ}P'H!3"3`3q FI`@%u3I Ht@ t I`@%t AJ t A>dEA<M=A<B=A< 7=1_AH5_.I,I; r;2UB<vB<v B< v_ucEHI9 2I`@%uI Ht@ t I`@%t AJ t}vHLIuM 2fHH9< fDAh #tjU(#x@}$<H;\H݋$ $t }QEA$IH$H$H HAHHH9$D)HHD@HA9Hp1A8HIF:Hv9}Ƅ$Ƅ$0I` }?H} M#J{tpt ?}{H4(<{<}HVuH  <\uӀ~HVtHI` HfxXH]I9w@P pHHCA$II9wNHkI9JH$:t CEh A!iA#] H= bH#CHhHH:)tHH9HLHHH9uH)HFHNd vLLB9t ADž8 M I L(PhH$L9HqHrH$HH;]HIHIP P%Ѓ$!Љ$LOLOHLC=fDMx LLI`A9PHs I`PHAL1Lb1HLFI` @%@I Ht@ t I`@%t AJ tI`@%@I`A9PHs I`PHAADž M ZHH5Xt H $I1ɉLASH1LHH@PHHpPaHXv HALH>I HLHH1ҾLEI` @%A <$t 1<@ AhLH҃H0 >yfA trt+A qA H= THH5 L>@Cq@Mq@AqM IM AL$Mt$A8 $>(A o t8 t3 t. t) @t I < t< t< t< t< ftL-ADž M aH9!;:{:L{nHt$PLKVAE EA<$:u A|$:wHt$P1ҹ L\=HH$t9H1HB8DH@Eu)H@8HtzXg+HH$@t1I$E1HT$PLNHH$t6HHT$8H9H$t!HHB8D@@EuHx8t zX +H$tH$V AA* HAAfLgHHB8H@0HtHHJ@L" Hx L11KHDŽ$HDŽ$DŽ$1YIHL9t A|$  AhtI8HCM AƅQHLJ( H GIc ADŽŀ zA|$#Il$I`@%u5I Ht@ t I`@%t AJ t A|$[DAT$B<v'B<v _tAt$H=5 QHUI I E1Aƅ @AHL轩A HÅuH5 HL A &#ADž I H5# HLфH1(I`ADž` A9PHs I`PHAADž LI H5 HLfH'IH ADž` FHH@H$HHH$HtN$t;@t6\u/@t*\t"HxHHH$tP$uADž` CI`A9PHs I`PHAADž LI 蓊E4 EA <-<[<{ADž( oH߾}HNHHDŽ$lHL$(HT$0H)E1HLHkH$c^IЃ@a}HNHIZ%HEI9v }U,$LHuLH)HH$8H4dHm H 7 E11ILH$1nHË$tHLr.C#HH@H$HHH$$u C VgH$8H$HH9s9H$L)H HH$HQHD2HH9:8L+$L!HH$LKHLL$n,InA Hק HcHM M9sA< < M9 Aƅ A>-LeI`@%u2I Ht@ t I`@%t AJ t ;eB<7"B<,"1_I L$E1HLrI H9s  8}u>A -ALE11HL袺It -Ln+A4 Ip Hcȃ A4 ADž I`@HA` A< < < < D< <#{M E8 EIF$ADž I A4 Ip Hcȃ A4 ADž FIM9ADžnH5 LA$A H= JH鮿HL藄I I E1LAƅ $AHLeIA uH5 LL~A =M; =$ADž M 饽HL.qXAD$IL$IT$<<E<="ADž` FADž I C1A_TH9T$htHD$hHI ADž( L?AJ H5{ L1CYAH$HH@8x@Hx8<IHH@8Hp(HuHL2=HH@8Hp(H E1 LE1CHDŽ$`At%I LA >'I I Aƅ %AALLcA H %ADž I ͻA( \A  I0 I9  I`Aƅ@A9PHs I`PHI @AADž UI I;P I HL$hA/ID$ADž I L\lH= GHUH پL1?@8AJ 'M HDŽ$麼ADž I 0L&p$L)HcH911ADž` LL虑HI"I`A9PHs I`PHAADž LM ρLyA|$< f$@I8HAh Il$I M DŽ$U   HAA`&A'A"D \A"8I`@%u3I Ht@ t I`@%t AJ t }[UB<B<B< 1_t: !@B<vuB< vn1_L9s EHHI`@%u3I Ht@ t I`@%t AJ t }UB<wM HHH$HELLH$D-HHc$HI; sHL9>HCM  C HD)$gDHHHu` t/QHHI; HQs' uHA 8 uԀx uHA AI I HH+HPD$E H$@M HLLAL2H HLH)HHYH$H$OLHHHXEFHLH$;A' A`DŽ$q I`A9PHs I`PHI`AAh !@HADž <ADž <A A $'4D$HEt HI; DED:$'tA uI`@HHc$HLH9uH$HSHH)L}I HHBHI HHz  I I HI HH+HBB z fI`A LLBH蒁HHD8A tA H4A IT$} I`ED9@Hs I`D@H<EADž I AhMM M M II9P1LAHLHa6I HLZ7C t HLUHK 1H@I`hHI`Hx8tI`LHp88HH@8Hp HىL27I HHPHI`IDž( IDž0 I xHI(A8 {A;4 nM ADž( L]3靰fDq Ip Hc.AIp OADž` LADž I RI I AALLH蓕ADž *HLHnA I *ADž ADž I ˯I I AALLH A H&ADž I vH5 HL=p~H5\ LL&pXI`Aƅ%A9PHs I`PH%AADž I AhtI8HA$M 鄯A4 <[<{<-ADž( tH5 HL^oA IT$%I`ED9@Hs I`D@H;EADž I *I HL,n}{E<[t<{TL}O?UHEHÄuH+B<v+B<v$B< v_t3H= 7:HXSSHI`@%uI Ht@ t I`@%t AJ t;vHLufHH9]jID$ADž` 6ADž 8LI ADž I 1LfƬH5e L1IHWA|$Kf!t{uA|$+A|$Il$A|$H5 L1H@HA|$A|$@Mt$DA|$DMt$L9fH5}1L)I L)H@HH?HHHCI LD$XHLLHD)uLHc$I HL+2H3II H I HL0Hc$II 9ADž I +M9AhI8HI`LLhHBu&ADž HLiI`ADž` A9PHs I`PHI &AADž ~M I)HLLLH$N1~g0H5 1ҹ L HHt!HHB8D@@EuHx8t zX90IH E1Lv1Ht*H(H;l$pt HUHB8x@uHx8t zX/Ƅ$A $eLL$IH1ҾL9"1HLLALH1ҾL"HH¾L9@HL_-IX MwADž` H5 LU,鿻L3H ML1<.H% A؉پL1!.BH$LGM6A~%!ADž I cHL1{HA|$:H$L$LALH)ItIH$H'H$DŽ$E@LsIAL$H& L1A,-Il$I M Aƅ DŽ$H$HT 1L .VHLLL+= 1҉LADž` DADž 4I L{>yADž( ADž( I A Lw)鷦IT$ADž` { LuL IK2HPHLLELoGH5ѓ L1A LGNH L1*3IH"IP ЃB%DŽ$I0 I9  A4 Ip Hcȃ A4 %ADž M դH5Oy L(銪:ADž I 饤ADž` EADž 4I LtA8suLL)HBLLcADž LM L$wE1HH$HLFIH HHƹL/H1ҾL LHL3IH LIiIDžH HLv8:HH9I`@%u4I H@ I`@%;B<v B<E1MLHLoHa<}($IH L$IA< u ILHL4E1HLLHLo2I1_GAJ $LLu1J1)t>tdt "MtIc LMŀ *I x:HpLLtHEHLyHHH$H5 LI $MLL0*邡HL&u 1҉0HL5uf@@DH=v HHA< JI` HP(IEHHH@8HDH=v HHIHfA Ƀƒ{;O}F9;=WJ'=T"cJI (H5 v L#Mt LL(:ADž I H=u HHuIHfH=C HHIHf@ADž EH5= L"CI`A9PHs I`PHI *AADž 7ADž` 9ADž !I L H5Ȍ L1^;It$LqHI`@%u2I Ht@ t I`@%t AJ t ;SEB<B<1_BEE1A1ɺHL=vI QB( :L? BH$HH$BƄ( HDŽ$H$LL6HZHT$0"HLvBH$^}+HuHL$(HT$0LE1LH)InDŽ$H$9IPI8L+uI8L8a#ADž Aƅ#I H=r LͼI H&J 1L#I HL MM M HHBHIDž( IDž0 AƅQI _H5+q LuLH5 L18I H\$h+E4 IDž( IDž0 EtE8 Et'H5q Lw1M H5p LPI ADž` NADž ΛADž s1LjI HH 1L;HHIDž( IDž0 II I "I ZD$E1HDŽ$ND$E1>H5ho L17A4 Ip Hcȃ A4 LLW/A|$>ID$t<ADž` JADž I 馚HL  ADž` RADž I jI Hko L=AKtI H^o LAL)AMI@'H1 ޵&L:6I`@%u.I Ht@ t I`@%t AJ t;wOB<vB<wSݹI`HP.&LhH1}I`@H鬹HLu1҉1_HL3,tH5m L+H50n L14I ͹H5m L13H5m L131LH#1HLLLHAI1ɉL/!Hp 1Ҿ L!HIcHC$_H1ҾL1HL.HHL&@HL$IX fIX H$VADž` >ADž "I LDH$HH@\DŽ$lH$HH@DŽ$IAƅ %H5f1L) I H)H@HH?HHH-LD$XHA HHLd{>D\H1ҾLI1ɉLqH1LHH@PHHpP&.LH H}B HALH I HLHH0AhL҃ D $It]H1ҾL 1HL,L1ҾLHc 1HLHHI w1LH( 1LH1HLt<,tC<=}>%ADž M LLr鰺AA=u%ADž M I9HSv \ A8 HHXI9wHP렃fA I SI Ht#I; sI;0 ;I;( .LADž LcIĀ=((${D$EunI`@%u4I Ht@ t I`@%t AJ t A<$B<B<_A<$$H$H$HHP8DR@E}Hz8r-DH@8LHh8Hh0HHI` LHp(I` CHX(I` @%M LLsCLL0$0H$LLe!靏I` L7H$1ҾL@1HLS'I` H%I fADž8 I0 EIc I` L&IՀ ADž M LH$HAI I` H%>HEH@H$H$HEHu@I`A9PHs I`PHAADž M Y$A;PHHD L1MLH$HA t!A8 H. LLE<$`II`@%u4I Ht@ t I`@%t AJ t A<$fA$B<|B<q_hA<$$]A(DA8 ftBH$t!H$HH@8H@u Hx8ffI I90 A -{%Lh.JA A<wLJHA<v!1LL*(H HJ.L%L&&A<${IPHc Hc I L HDADž M xADž M I`A9PHs I`PHH$AIc I` L&IՀ ADž yADž` M iH$I fADž8 ADž M I0 &x> D$EI`A9PHs I`PHI` ALLHp(ZI Ht@ t I`@%t AJ t I`@%t@I`A9PHs I`PHAADž M [H$LLtI` H@(H H$HH@8Dp@EaHp8HTAD$Il$< tU< tQ<)9Lf*HH#LeH$HH@8h@YHx8IHE< fuMɾH$LLҿI` H@(H 黿ULHxA t@%ADž M A4 Ip Hcȃ A4 A( uH@H5^ ADž LI  qH$HLH$H$H L9w)II9tA$< t< t< t< @t< tA<$:D#AhhA<$#]A|$!QMIuCfDIA< t< ft< t< t< @tބS< @G< ?< 7< /< 'LHt< t< t< ft< t< uH ] LLH@EhEIAJt/   t t t HuщA|$:ID$LEA|$H5u L1f#A|$A|$钦I9fDHfDHSHSI9HA\L  -ANHpHg MD)!LA1L$$LLruLLnrtH *M LLL"8LLGH<;tb<)t^E1ALADž oHLqtLLqrtH5L L1LLqEtI ADž` )ADž M fADž8 )I( A<$(LL1F8(@ō-sI ADž` cADž M fADž8 cI( A<$(t8(@ō-kLLikADž` ADž M {kI ADž` ADž M fADž8 I( A<$(LL1>8(@ō-kLL=HÍB< mvuC0< nE1HAƅ ALeHI`@%u7I Ht@ t I`@%t AJ tA A B<v B<ur;UI ADž` ADž M fADž8 I( A<$(LL1'8(@ō-TLL2RTLLRTLLQTLLQnTLLQRTLZLQ6TLLQTLoLnQSI ADž` ,ADž M fADž8 ,I( A<$(QLL1&8(@ō-SI ADž` ADž M fADž8 I( A<$(LL1*&8(@ō->SI ADž` fADž M fADž8 fI( A<$(LL1%8(@ō-RI ADž` iADž M fADž8 iI( A<$(1LL1j%8(@ō-~RLsLObRI ADž` ADž M fADž8 I( A<$(LL1$8(@ō-RI ADž` xADž M fADž8 xI( A<$(ULL1$8(@ō-QI ADž` zADž M fADž8 zI( A<$(LL1.$8(@ō-BQLLN&QLLt3HI`A9PHs I`PHAADž LI PADž` %ADž M PADž` $ADž M PI ADž` ADž M fADž8 I( A<$(LL1#8(@ō-%PLLyM PL L]MOI`@HADž M A` OI ADž` +ADž M fADž8 +I( A<$(LL1L"8(@ō-`OI`@HADž M A` 3OHMA $L1AI ADž` TADž M fADž8 TI( A<$(_LL1!8(@ō-NI ADž` UADž M fADž8 UI( A<$(LL18!8(@ō-LNADž` VADž M %NI ADž` ADž M fADž8 I( A<$(xLL1 8(@ō-MADž` WADž M MLtLJMA OM LL; HI`@%u3I Ht@ t I`@%t AJ t }"UB<O"B<D"_;"'f0":"Am#I H ADž LaHDŽ$DŽ$Ƅ$AAuo}=uA4 A8 $t2I H$AH$A1ɺLYGI ADž $L1Ҁ}("E<:<{t A"ft=Ic IH L1I݀ LIDžH 豷$v#IPH%# H(# I LHD I pK}:^$A XLLH7KI ADž` jADž M fADž8 jI( A<$(LL18(@ō-JLqL+HJI`@HADž M A` JI ADž` kADž M fADž8 kI( A<$(LL18(@ō-.JADž` UADž M JLL[GIE1E1LLDADž` ADž I II ADž` 'ADž M fADž8 'I( A<$(LL158(@ō-IILLF-ILLFII ADž` ADž M fADž8 I( A<$(dLL18(@ō-HADž` FADž M HLELEnHLDLERHI ADž` PADž M fADž8 PI( A<$(LL18(@ō-GI ADž` OADž M fADž8 OI( A<$(ELL1~8(@ō-GADž` QADž M kGADž` CADž M DGLBLD(GI ADž` AADž M fADž8 AI( A<$({LL18(@ō-FL"LDFADž` ADž M FI ADž` ADž M fADž8 I( A<$(LL18(@ō-%FI ADž` ADž M fADž8 I( A<$(xLL18(@ō-EADž` @ADž M EI ADž` >ADž M fADž8 >I( A<$(LL1*8(@ō->EL?LB"EADž` YADž M DADž` =ADž M DI ADž` ;ADž M fADž8 ;I( A<$('LL1`8(@ō-tDL<LAXDADž` TADž M 1DI ADž` ADž M fADž8 I( A<$(LL18(@ō-CI ADž` hADž M fADž8 hI( A<$($LL1]8(@ō-qCI ADž` [ADž M fADž8 [I( A<$(LL18(@ō-CI ADž` &ADž M fADž8 &I( A<$(dLL18(@ō-B'ADž` ADž M BLL?nBLL?RBI ADž` nADž M fADž8 nI( A<$(LL18(@ō-AADž` VADž M AI ADž` yADž M fADž8 yI( A<$(LL1W8(@ō-kAI ADž` {ADž M fADž8 {I( A<$(LL18(@ō- AE1E1LL@I ADž` ADž M fADž8 I( A<$(LL198(@ō-M@LL=1@LE< LII`@%u0I Ht@ t I`@%t AJ tA<$wCA$B<vB<wIuJ(ADž` ADž M ?LL*f1҉1_LL$xLALL IH$H AL~IcB|0:1ҹ LLzHt,HH@8Hp8HtL-HHt @tTHH1HLlHI@ H$H5 M LH+HL"1L H=T LH#IPvH= LLALL}B|0:1ҹ LLQHHH@8H@(A<$(ADž` `ADž M =A tH5%/ LE1A1ɺLL8H1LP7ADž` ADž I 5=LL8(IZ.ADž I =E1E1LL7ADž` ADž I < ADž` YADž M 24I ADž` mADž M fADž8 mI( A<$(!LL1Z8(@ō-n4A<$:6A|$:{6LL$HHT$PIt$E1L$Ht$PLI:tAA1A)!6H5 LL1_I`OLI]Ht$@LȥIUhAEPHI;UpAETIUhu LIUhHI+EHIE H)H~wI`HSH5 LHCIU1dIEH5 LHHIE1DI81HLНAEPA;ET~LLNHH޹L޺HIE H)HbHH޹L跺HGI8LPH9t8HEH@8H@Hƀ< NHEHX8LHCHEMHEH@8H@Hƀ-MA DH MLIPI HtH1LHpPH1ҾLI` I`A9PHs I`PHAADž M 1I`H5 LPH1F1HL脮I` I`A9PHs I`PHAADž M d1I`1LHp881HLI` I`A9PHs I`PHAADž M 0LLHƺ>{ADž` 7I EA I I( >(;L1w8(@ō-0 ADž` XADž M d0I ADž` ADž M fADž8 I( A<$(LL18(@ō-0ADž` NADž M /ADž` SADž M /ADž` MADž M /ADž` LADž M h/ADž` KADž M A/ADž` XADž M /I`@HADž M A` .ADž M .I ADž` ADž M fADž8 I( A<$($LL1]8(@ō-q.E1E1LLj)ADž` ADž I /.LL{t?'tE1AHL)$ADž I -$ADž I -AH LL +-I ADž` ADž M fADž8 I( A<$(LL1&8(@ō-:-I`LL@HA` A Ht8I ADž ,LLI*,I`@%u3I Ht@ t I`@%t AJ t }UB<v B<eM I)IHL0HI`@%u.I Ht@ t I`@%t AJ t;wmB<vB<wRt/I HAALLGLHHÀ;$H5 L11_HL:1҉됺H=U HHu3EHu<  < < < < IH= HEHu< < < < < HLDK>7}:DH$LL$xAHLHADž M ":HIHI HLL)LLH$!HDŽ$Ƅ$HL軮UADž` ADž M )I I L訯I H LA跟H$I AHL藟+HLWH5 L1$g<;OI H5= L111HL|HH$IIH HH(UHE1E1 t; t6 t1 t, ft%IcH=\ A(3UHDDSHuIcE+t9L$t(I H IL1E1IH LHHXH$HI H$1H$AAL#At"I 'H5 L1CI )'H5: L#I ADž` gADž M fADž8 gI( A<$( LL1F8(@ō-Z'I ADž` ADž M fADž8 I( A<$(LL18(@ō-&I ADž` ADž M fADž8 I( A<$(MLL18(@ō-&LL#~&I ADž` ADž M fADž8 I( A<$(ѲLL1 8(@ō-&LLr#&HL萪u1҉l1__HL;tSD HD uLH5 1HH @ tI ǃ H1ҾJH` [D< EuQHP HuUHH HHH HHBǃ ǃH )[LJ( [鯧h !t#uH Hǃ` HHHH HH H H HHBHǃ( Hǃ0 H 8Hx ǃ@ ǃ4 ǃ< HP ǃD @@tǃ( ǃD ,[ǃ( HǃP ,[fAVIH@ AUATUSHH2H4 H#H< HHD HH( HH` H觨Hh HءD( EuXD Dx:HcE1H HA蜡H HHHE9uH HtH`HHHaH HH HӼH HļH H赼H0 H覼H( H藼HH舼H HɎHp HHx H H8H5HHH H膎H, H藠HH舠HP HYH HH0 H xǃ( ǃ, ǃ ǃ4 詹 Hp 蘹ǃ< Hx Lǃ@ ǃD HǃH HǃP Hǃ` ǃ ǃh ǃL AFH FHH@HD$HHHT$Ht|;t+F H AHH f H HHH HH H HH@H Hǃ( Hǃ0 Hǃ8H H[]A\A]A^HT$"H(H 3HtHHH HUHHʖHH AWAVAUATUHSHh0H5$HHHD$0HT$0H XBL BP BT BHX HB H` HB(DžL DžP DžT B` HD$83H\$8HL$0HHD$@HHAHfHt$`H` Lt$@H\$PE1D$L,Ht$ HT$fT McH BcftT x =?fH5ic BfftT x =P DžP fDHl$PIHT$PHCft&x=H n LcfB HH5e HcڸH\$(D<^D)HIHX Hr HcHIHp(F"HH@HD$`IH@(HLH= LHtNز A:u'Ͳ A:@u A:@u  A:@tH= LH!HHfHH IHX IcLd$PH\$(HH58f HMI)I)^A$ uBI\$MuH\$PfAD$HX IET  ApH5sg HcNfHg DH IFHX oHDžX _1HX JAF9vIVAvHHX Dž H蕬X H}X AF9vIVAvH萴HX HDžX AFHIvI[IVHI1HGAvHH8HX \AFHIvIIVHI1HAvHHHX AFHIvI˚IVHI1H跅H HX IHH$I6菚HX HDžX ANHD$E1IF11HH$M|HX pMFIHHX KI^I6HLIHH贉HX MFI1ҾH袏HX MFI1ҾH耏HX IHX HDžX INIV1HäDž HX I~11H6IVH1H腤HX Dž OIVI1H^HX 2HDžX "HDžX 1ҾHX 1HX 11HX INIVHAvMMF輕INIVHAvMMF蜗HDžX |IHX mIVAvHIڨUDžX FDžX 7DžX (DžX DžX HDžX IHHX xIHHX aIHHX JIHHX 3I6H裴HH(HX |HT$H5۾ H舌H` HX UHDžX EIE1A1ɺ1HHD$IFH$|IVH1H*HX AFHI^M&IvH\$L$$1EF1IHp|IV1HHϡMfHMt9Iv1HtH@LH1H蠡HH¾H-HAvHH+HX OIMNE1ANIV1HHD$IFH$&AvHHHX IvMn躶HIMfOANIVMI1HH\$L$$ΟAvHH菮HX IMN1MFANHIVHD$IFH$艟AvHHJHX nAF1ɺ1HIMNHD$IFH$EFzIVH1HJAvHHHX AF1ɺ1HIMNHD$IFH$EFzIVH1HAvHH茭HX I6HuHX IvH蝱HH¾MHH肱1HH¾@HHkH5 HX H腤0I6HH1H3HX I6H蜗HX INIVHAvMi~HX 1HHX IvHۑHX 1H%HX IvH HX qAvI1H耔HX TAvI1HcHX 7A61HHX I6H#1H`H!HX AvIHHX A6H芚H HX IvH踯IHHU@HH蠓HX tIvHxIVHH@HH_HX 3IvH7@HH2HX I6H 1HH HX IHX IvHHH貣IvHHsIH1ҾH~1HþH1H`HHH¾H @HH&HX *IN1ҾH7IVIHþHHH¾H譏@HHȂHX I1ҾHڃIvHH軟HH¾HX@HHsHX wIN1ҾH脃I^IvHIaHH¾HLH¾H@HHHX I^IVHAv6kHH¾HÍAvH@H迁HX IIVHAvjHH¾H}AvH@HyHX }IVIH)HX ]IFHX MINAv1MHvHX ,INM1ҾHvHX INAVHAvMNMFHHfHH 1HzIvHiHDžX Dž IHX {HDžX kIHX \HDžX LIHX =I6HHX &D$L,H|$@\$LH4H蕍Ht$0IHFH|$8H|HHD$0MH5H,HL$8H)L$PH|$PL+t$@HcD$PHT$8Ld$@IHBHD$PIcM4ND$L,H|$@\$LH4HHL$0HIHAH|$8H\$0MHHHHt$8H)t$PH|$PL+t$@HcD$PHT$8Ld$@IHBHD$PIcM4H IcA1HDžX Džn1H1HHpxAvH1HHT$ H(IH= LH\7UHSHHH>HtH{Ht٘CH߉H CL CP CT HC HX HC(H` H[]鑘Hl$Ld$HH\$HHIHtH$Hl$Ld$HHv(HtNHHtMHEHHtHvHtHHtHHHuHEH+LDuHsHmuHu(E D|FÁ~fttt1ÁD}ȍBw@$t$!fDt#u1f~ ÍB҃wff.HtN$HHH9rv øHH9GfrHu1HtH@XHF(fx BtHÐ@%uH@(@$ fuN$@HfDN%@HHfff.HF(H HÐSH@HHvt>)HH^oH@E11HH觉HtHpFtH[HH}-[H H߹1[0SH8HHvt>蹉HHnH8E11HH7HtHpFtH[HH}-[H H߹1[H\$Hl$HLd$HI1HAHHLIyEtHEH$Hl$Ld$HHHLH$Hl$Ld$"1HEDUHSHHF$@H F%uF f]tf[tf\tHH[]@HS(B HJFf w B$tDA Ff wA$u!H蠘tC |f]tf[&^EHB H1!I|HH[]ffffff.H5'K H1 fH5B H1fffff.SHV(HHt#H5B H1HH[fvfDHVHGHfH\$Hl$HLd$HHHteF fuF$tH^(C f=tuf=t6C$umHHwLH\$Ld$HÐH\$Hl$HF HHf=_tBHx-HH5@ H1lHH8wHH\$Hl$HfD|HfDLl$Lt$IH\$Hl$ILd$L|$HHH Lf(F%fA|$ t&LH\$Hl$ Ld$(Ll$0Lt$8L|$@HHIt$(F %=WFHH@HD$HL8AH tBAD$%@t:AE f}f=fH G uH5@ LL18AE f tDftf} t 1f=L 1AD$% AT$%LL hHHtIt$(LfAD$ ]L4ID$(IVLH4]HHXID$(HIFCHHw-AD$%H@8ID$kHH0AE N fvGf}f=< 3 HoF 1HT$?IcfH(F H5;F L1輍H #F d H F u HE uH E 301&{HeH@XHHx Hmff.SV HHv(?HC(HCH[fffff.H\$Ld$IHl$HHGhH7H(HHGhHG H)H Hft8f=@t.f=tHf=@t>HfuHHC(HtEHfHHtC HuH9uf=u@HtM HH[]A\A]f uMtI $HAxHHH@HtHHSHHHtBu@@yxo@HV(H HZHt C 1tHL}jff.H\$Ld$HLt$L|$IHl$Ll$H8F HII58uf=tBf=]tHH\$Hl$Ld$Ll$ H(Hy H= ƹ`1RH] H= ƹb1Rff.Ld$H\$IHl$HH^(H>-S Dt$C$@uC%uHkHtf} t'HHHl$H$Ld$H}%xHEHCHFHEHCHF(EHLDK%@UHSHHHHxhHt HxP}H@hHHxPc HH@`HYDSEt4HHxPt H@PHfH[]fHHHtHǀHxHnHxpHbYE@;EDM@HHHU8HcHAHU8H!M@HDžHEHHpHCHHH@HHH@@>HHpXH&HfHHT`HX&H [XHvH5 H1VfH\$Hl$HLt$L|$HLd$Ll$H8HII 0HIHB8L`8MDX@EI$HxHH[M$I@`HHH@PHt|HH= LHPLuaH`@HD$tH`PHM$AH H LɾHHD1>H`T$PHLH$1HH HHI>IEH@8L`8IEH@8@@PI$LHLh`\@I$:HLphI$LxP;HPHILEAI$LphI$LxPI$f!H=b LHH@tbHt'-HBXtH -H1M'L9;Hu'L';HuAF %=t9IW1LL(ILL1Ҿ^,+HHL6_HC(ffffff.H\$Hl$Ld$Ll$ILt$pH(AE1pHHMcLH3-fDm J]$]%HEA$H tM\tM\E\LEXI$H0HI$LH0D@HHH@HEPc 1HLPA#tAI$PHt4H1H@HHEHHHhHI$PHtHHpPL-HEhI$Ht B<0H/-HLH$Hl$Ld$Ll$NLt$ H(AHL-H1L=Ht@I$ HLFI$ L*HHEPI$ HHI$ HL4H/1-H5 LJ1HfAWIAVAUATUSHHt$0HT$(HL$ dH%(H$1HZ(Hi(CHH@H$HL EHEH@H$HEHHD$8HT$0B%AH AŃA D$LL$HC tJ%E t Ht$0N%Hl$0DE%A`HD$0EHX(PH$H_T$LSDt$HH$Ld$8EH$ffCHH=uL$ELE11E1-l$LoHCf8fAHE9}V;$}HHLr H[Hu%f5taf:fMHLD; GH](HugHL H[HOH{uHL ߃HLE$H$Hl$Ld$H0Hu(L Hu(f~ nLD HLH$Hl$Ld$H~fffff.Hl$Ll$HH\$Ld$ILt$H(f~ teE$@HE(HXt*Lc(AT$ NfftWf tQH[f} t3HH$Hl$Ld$Ll$Lt$ H(DF$@u,HF(HXHL DHLH[HF(H53U HX HH5u LHXHHXHC(fx HP0J RfHHB(fx H@(fx IuH@(HHHxPI;PH@@abxHB0fx wH@(fx hH@(HHH;xPSH@@Q8a>x/e$?tM%B fRfSuM%HE(LHpHVHPLLAD$ f=t*E1f=t/LLAf} t1L3M$M4$I$f} tMt$(I$HL-HLLMt$(M$$IHtHL9t/P ftftHHugH@HHHMt$(F1ɀxM%8bfff.ATHIUHSt%F$tH^(HtfHLH[Hu[H]A\@AWAVAUATIUHSHDn L5 -EIcAt H}  tA$H ttAO'v}A$ u_H]H,H9u=f=fDtftfDH3HH9HC fuC%@tHH[]A\A]A^A_úHOHHuXcHE(`%A$ WfA^EE fE DH-IcHHEAA$H pA$ [fQH3H)HLHH9HHEH HLID$A$ I$H(HI$HsHuIE u[HLAHHL[]A\A]A^A_1Ҿ*A ID$H9,u1LS릐Ee 똺DLHEAHU(fz B%@HHL[]A\A]A^A_1Ҿ(HLHHLDH\$Hl$؉Ld$Lt$IL|$Ll$IH88AL$ Hù1HMHH-McfDs JLc(HCC$H<$C%H$ID$IHt B<(H# -HLBH8Ht(H\$Hl$HLd$Ll$ Lt$(L|$0H8ffD9p uH@(LHH@HB0H\$Hl$Ld$Ll$ Lt$(L|$0H8PC%W11LIHLH -H5 LJ1%$DH\$Ld$HLl$Lt$H(AHI$HHlLHI$HHSMDHLd$H\$HLl$Lt$ H(DH\$Hl$HLl$Lt$ILd$H(HAH-McB0Hƹ1HHH -fDv JH^(HFF$F%IHtB< uH2 -LBH8t0H$Hl$Ld$Ll$Lt$ H(HL#HcLH$Hl$Ld$Ll$HLt$ H(v1ҾHLH -H5L LJ1^"fffff.AWIAVAUATUSHHXHF(HxHEH@(HD$V%Hh IV%IIFHuAF ff=f=^E1HD$ HD$(AH  C%C%AhtI9D$0D$4HD$8MAE<&<$D HL@D$4fDHL0"Hl$HmI9uD$0MAE<@<%<;{Ht$(LUHXHL[]A\A]A^A_Hُ<;~B<@M<\Du>D$4IE1fAEI$<9w Hy HcH<*QDHt$(LӋHL$ H57 HL1* < uIII9PaC%VE fXf=HE(H@Hfx `%E1HD$ HD$(@ID$0xHt$(LHXHL[]A\A]A^A_HVfDD$4IE ff+Ht$(LŠ|$4HH H t$4ILHEiD$4IE f{ff=HL"D$4IHLu"HL%pEGAEMD$OAEfDIA<$[uHt$(LH5 HD$LL1HL$t$4HIL蘌T$OAUE]LAAHHD$8L9zE f}f EQHt$(LTt$4Ha HIL vfDf} iEf Ht$(L t$4H- HILċ/E f%f f=ff=\EHt$(L蝈t$4H HILTf} EZHt$(L]t$4HW HILE f=uf kEHt$(Lt$4H6 HILȊ3e%~HXH[]A\A]A^A_AF%LL ЈC%I~(f =C%3HG(IWH4HH@8P@H@8HHD$ HD$ E1HD$(@HHt$(u H@`HD$(HD$ @HL(De%E1HD$ HD$(E1E1HE1HLHD$PHED$HT$PHHPHD$HhH|$8D$tEtLl$8IEfHE(Hfx HP(HuHHBHuz%HB(Hfx fHP(IGH5c+ LL$HUHT$@1 HLHD$Ht$H 0+ E1LLHL$1ҾLHHD$HhHT$@HUSEO% E1HD$ HD$(:Ht$ 1LB"If.SF Hf t5f=\tHHH1[F$@u܃@F$H[H-fF H@HHFH[SHH1HH[ffff.UHSHHHv(Hf~ tpHtqC$@tHFHt`HHH[] H~uf~ uF%@tۃ@HC$HHHS(HBHC0H@HvH2s HHH HVHp(HSf.Hl$Ld$HH\$Ll$H8F$I^ u9DtNHF(fx tCfx A$J @tfwM%HH\$Hl$ Ld$(Ll$0H8ÐHL5ftLf1HDLHI$DLH@%@rHp(FftMHH@HD$HH0LzHDLHHLH4HT$Hffff.Hl$Ll$HH\$Ld$ILt$H(H F$Lv(MAF f=t?ft9LEH LmHH$Hl$Ld$Ll$Lt$ H(fDHHE(L8Hù1HL%,HHfC 9LLI$ C%HHCHf@ :I$ HEHk0[[L1H7LH(F$^fH\$Ld$HHAHDHLd$H\$HHsH\$Hl$HF HHf tbf=t1f t+HH+HH\$Hl$H1ҾHHntHS H14fHq,fF H@XHFH\$HHl$HfH\$Hl$HHt=t5t-HѾHH\$Hl$HHH HHH\$Hl$11HKff.H\$Hl$HF HHf tbf}t1f t+HHHH\$Hl$H1Ҿ}HH>tHS H1fHA,fF H@PHFH\$HHl$HfAWIAVIAUATUSHxF HcЉD$,H",HT$ V$AA @t8At Du LLׂIHxL[]A\A]A^A_èuAIG(HD$0Io(E ffHHD$hHT$pHD$`HD$HT$T$`HEAW%AG f=_H=,HLL薁I:0E&At@AAuEAAG f=_H,HLLhIND\$`LmvAHHl$0LHD$` H HcHHLT$,HLLmE ffffpAG f=t&f=@f=fDtf=uDHD$HD$_HHELHLHT$HHHPL$_H%LmHD$0H(HLALmH11LAHEHHLHLkHHL$0HLkE f f=t*f t$HT$H,ILH H- ~T$,HLAeLm<|$,|$,E ff}tf tHT$H,ILH HCS R~A1@u*AEu f} wHLuLmAMjLUHT$H,LH H 1o*HLALm2H}HUHT$0HmE%@Hu(FHH@HD$pHHHD$8Ht$8 L1HL-LHLHHLHLkHD$0H#E%@Hu(FrHH@HD$pHHHD$@Ht$@ LE1HLLHLHHfHL$H,H LD$`LL HL$@11E%@7Hu(FHH@HD$pHH0L1HLAG%Hu I9o0nHLHXLLLt$,H1LILLAG f=_?H,H H( ILY{f=t.f=@rf=fDp]DOHD$hE f fff=1HD$HD$_`#NLHL$0HH6|$,H,HL$LLH{ILLHXf=HUI1LH@HUI1LsHHHHHD$P-HHD$hH|$PL!HD$HIFHL$HHȀ{ EHD$P8$tHq HLHL$hHT$PHAL1D$_`HT$L[HD$8 HT$L?HD$@HL$Ha,Hz LD$`LL HL$81H](Ht>H( H F HDHL$ C f}f= fH HD$h HT$PT$,HLU LLHfHT$LiH`HU(fz lHR(IFHHHP@HT$PH@HHD$h=LLaHH[(H<C f8HS(IFHH0HT$ H HP@HD$ H5. LD@1HH@HH@HD$hHHHD$PHLgH|$PfDHLpIG0HUI1LH01L+HSI1LqH@tdHSI1LSHHHH(HT$  HP% HT$"HLHD$PHSI1LH01L}ff.H7@$tx%t HfDHP(fz tHftJ$ HDHRf.V$tHF(fx tHt fx ftH@@%@tʀV$`%ff.Hl$Ld$HH\$HHF(IHXHtf{ t#LHH$Hl$Ld$HVfDV tHSPHH HHH@HtHH H IȾH1뎐USHHF$n umHHuxH1H߾HHT 1HH߾}RHH7 HH߉[]H12f{HHƉީHHH[] H@SF$Ht=HF(H@Ht0Hxt)Hc,fF HPHFHH[HHH@(H@Htfx t [HD`%H[Ld$Ll$IH\$Hl$ILt$L|$H8F$tHF(fx CH5m 1ҹ L]HHtHHB8p@tYH5 1ҹ L1HHtHHB8H@t=LLH\$Hl$Ld$Ll$ Lt$(L|$0H8Hx8tzXyHx8tzXyI](LLIE(HL1Ҿ1HLcLHHHLHL羦H@0LH\$Hl$Ld$Ll$ HLt$(L|$0H8S@%@Lp(AF AAIHtMHXHkHt9:uHk:uHC/@HPHHIHhH> ALL7E ~ u%AF k1LE1ux&uHAH9u@p%느LH$Hl$Ld$Hf.Ld$H\$H^ I&LHLd$H\$Hff.H\$Hl$HF$HHuHHH\$Hl$H=tHC(@ f%tAwf t8f @uH H1xH H1bH< Ld$H\$H^ IFLHLd$H\$H雤ff.ff.H\$Hl$HF$HHtHF(H@HtH@Htfx tHHH\$Hl$HHp(1eH\$Hl$HLl$Lt$E1L|$Ld$H8L=,f~ I8IAG6HFHŹ1HHC$@IHC(fAHpvLLHA IąH@(H@fx nHX(fDu EIcLLIHE}M$HE(E%HHHE0DL!HEH+ID$(H@HtNHXHtEH޺L`H[HuILH\$Hl$Ld$Ll$ Lt$(L|$0H8AD$ f=_H,HLLH\$Hl$Ld$Ll$ Lt$(L|$0H8nHLHH@(H@H8tUHP(HuHHHuHЀc$H(vL HLLLHbH5 L1QH\$Ld$IHl$HUP$Ht%Hh(E f=t5ft'f=uRHLtHHl$H$Ld$HÃʀS$S HLf} t E$ Et/K%@C f=_tKH1,HH5. L1C f=_t2H,HH5ݲ HL1hHLHHLff.H\$Hl$HF$@Ht)DHH@(Hpf~ t%HH\$Hl$HH\$Hl$HHUff.H\$Hl$HF$Hn t%HF(fx t,HHl$H\$H@H\$Hl$HHH1ҾHHH Hff.[ff.UHSHBP$H@%t$Hp(F f=tYw"fu(ʀS$H^HH[]@f=tf=t/C f=_t3HH,HH5u H1ʀS$K%@H HHHHl$Ld$HH\$Ll$H(F$I^ oLHƉҞLh(HIu(H^HtPH{tHH\$Hl$Ld$Ll$ H(K H,tf tf tf}tftLI](fE H,HLfE HHEH\$Hl$Ld$Ll$ H(Ld$Ll$ILt$H\$IHl$L|$HXH҉t$HL$L-h t Hr(FHH@HD$ HL(LLHHHP8Ht BDHXHHB8HhHt#LHLHI$HB8LHhHEHX`I$`H]Hp8HChLHt$H]L1ҾHL:HCHHEH@HH%@HEH@HH@H]HsHHHHC@HELH@HHHEHp@A$LLED$A9D$@ADŽ$~ L$H\$(Hl$0Ld$8Ll$@Lt$HL|$PHXÐA$I$`DxHt I$`PHHӳ 1LLI$`DxHfHT$ I&LH5< L1:f.H\$Hl$Ld$HHItdB ffH5 HFH1HHLH H HH$Hl$Ld$HB ft?f=tOL@HTHB$t@HfDIt$(Ft5HH0\B$@uLG1HHI뇹"1HaHfH\$Hl$؉Ll$Lt$ILd$L|$8HHHL$HT$%HŹ1HHH,fE HE$HEHD$HE(L0MNHT$HHPHE0HT$H龝LE%HD$HPHm1HLH1HI1LLLIJHD$LuLHHT$L"IUHELH4º+LYHCIULH4ºHD$1ɺ@fx EC%HD$L;fx EAD$%{%tu LLLH\$Hl$ Ld$(Ll$0Lt$8L|$@HHHLjIHLWfH\$Ld$HLl$L|$IHl$Lt$HHLD$AAH)M0HØE f`fE$AMnA$]8Hù1HHH,fDc McJHk(HCDC$IHAHC0DC%HEHHH]LuIHt B< /H-,HLBH11LIILH\$Hl$ Ld$(Ll$0Lt$8L|$@HHE%@Hu(1Ht1F HH HHH1A9LLHD$Hf} ILfLHHLIDLH\$Hl$ HLd$(Ll$0Lt$8L|$@HH2f}$A$a LE(ADLHEAğHtIHE(HLLD$LD$A@ L LE HM(HQf'f$q fffHyDYI`I`XHABHLL HcHN, LH Hӧ 1I`XHHL^AN%@u[lHfWf.@  M%IsHL~HfA~ UAN%KH1HxHefz ZB$@PA$@I`I`XHABHL H L1LL?HLM1HɐtH1Ҁ80fu qfI`I`XHABHFf:L} 5LfII`I`XHABHHLHC,H5 LJ1fDHHL$LD$HL$LD$sHfffff.Hl$Ld$Ll$Lt$IL|$H\$H8MIIMHH&fA|$ 8oHù1HHHO,fC HLc(HCC$C%IEHHC0IHHIHt H,HLI,$HMl$I$HM}11L*IIEIH(LH\$Hl$Ld$Ll$ Lt$(L|$0H8AD$%HHIt$(HtDF uZHHx„t LLLL xDLLLLMUfHHtHPHwHtH80HѾ1LH\$Hl$Ld$Ll$ Lt$(L|$0H8IȾH1ǩt\HfWf.@  7LL0ZLL@9LL09LL HbLHLH<,H5 LH1fff.AWAAVMAUIATIUSHtU]LLLH HLNIH@HL[]A\A]A^A_{HsY ADŽ$1fA} %LLIDI$H$I$IDŽ$H4$LpLH%LLHWLH DHIؾ%LHDE%HS(Hu "HRHtfz uHB(fx t M%H$x%A$H]HHH9L-,HMfI$HSHHHHA$;BHHBHHH9HHS AD@tfBfvftqff}|f@mfcf u>HS8HzID$HI9$tHA$;BFM%@Mt fA~ 0IzMfA~ LLM$$HLLHLxIHD$LI$IDŽ$IHL[]A\A]A^A_L*1HL$(LLH LHMHI؉[]LH1A\A]A^A_mHS(ID$HI9$fy HH"HLIV(Hfz @H$fx }A$?IF0fx Hp(HHxpLIHcAN$@LLLLH$HLBIHD1H$fx RLHLH[]A\A]A^A_1ҾV1Ҿ+LGIHLHIc$뤀x%E%@HH(fy Hz8~HA(HLHB8HA(JXHE(H@(H@HIAf$DH\$Hl$LLd$Ll$ILt$L|$HXMɉt$ IDD$LL$Ll$`Hl$ht(AQ BffrC$MH@LL/IH]HH|$t,1ҾLHHHLHDHHL꾭L診HD$ L8M6H|$[D$Ht$ LA$HL$LD$ 1ҾLH;D$H}HT$ HtH9Lj0Lt HEH/IEM1ILLHM~8IFHHDI^@T$ P$|$ T$ P%H\$(Hl$0Ld$8Ll$@Lt$HL|$PHXIyL1IH1LH1Ҿ*LHD$ZHK(1HtHAfufH=fx 2@$@(A$HHl$ 11L:HI1f$A f=tftff=fx xHp(Ht:F HHt$HPHKHtH80„5Ht$LcLLX1HLFIPTP1HIH3,fAF HAF%M6IFHLH HLHy@tHHx3tHfWf.@  ƒLfDHl$Ld$LLt$H\$ILl$HHMAHL$t Ax$GE1H\$Ht-ES BfIf5C$lH1ҾLHHLHL$LD$1ҾLHD$bHHD$HtHh0HHHEEu>H;\$tUDs$HLH$HHH\$ Hl$(Ld$0Ll$8Lt$@HHH;\$tHC(H@0HH;\$uDH11LHf{ Hs(HtF KHHtHPH@H\$fDH{L1IH1LH1Ҿ*L)HD$HK(1HtHAfu;Hwfx l@$@_A$OHDf$;A f=t"ftfHyDH1Ҿ*LHD$A@ f=AfA 11LHHL贿u=tTHfWf.@  ƒ f=uaHHxHH80Lff.UHH5z 1ҹ SHHѹHtHHQ8DR@EtNH5< 1ҹ H覹HtHHQ8DJ@Et3HHFHHH[]1Ҿ6>Hz8tyXyHz8tƀyXyHH1Ҿ蜻1HH߾HHHHH|H߾H@HHH[]fDAWAVIAUIATIUHSHf~ #=H H fz  ~X L1HJIƿ8Hù1HLHH,fC HHHCHC(H C%Lc0 |C$A|$XxTI>eL3IF(HHHAt$ LHH`MAD$YH` 9PH8Hù1HLHH,fC "HHHC'K$HC(C%Lc0IEH&HHI]HID$8HHID$@HHL[]A\A]A^A_é mfA} I]HېVL9mL5R,E11ffff}ffBfvpf @H3HthL9HtvHS A@tfuHS(HEHHHB8H@0HtHHB@H= 0GHiH3AHuHH5HHL9uEzIT$PHHHH@HPAL$XAL$\ H7fy f*HZ(CHH@HD$HH0A|$$UC tH`@%uAL$`IT$PHLHHHHT$HHH辩IT$PHHHH@HP : u*B: uB:| uB:q uAL$X LHH`PH IH2HIHT$H޹"H yIV@]LAL$X@AL$\@HH At$ LHHHHiLHY> ~fDC AAt%C Hi HHD C C tPHH@HD$HH0AL$X+LHɸLH蹸HLH覸HT$H޹"HH1HHE1ZfHl$Ld$HH\$Ll$H(F$@I`Hv(f~ 0H^0HH](f{ LkHCLZ1HHL蚯HHE0H9E(H](LkH,fC HLH@hHC1CYH{?H[LH H{EH[LHH{E f=_H,HHLH\$Hl$Ld$Ll$ H(FC$@NLf\H L1AH\$Hl$Ld$Ll$ H(FH]0HLHcHH\$Hl$Ld$Ll$ H(H5 LO1HL蝷HHE(HE0:L蕽HHLr1L1LHQHHL>H5o 1ff.H\$Hl$HLd$Hht!HTH$Hl$Ld$Hf~ ϮHHHHɼHHHHH`HHHHH߀H%@HH@HHHhHǃKCH5{ 1HHI&HShH+HH;SpHShJHH+CHHC H)HHH1HtHGHELH+HHl$H$Ld$H^hH8ҁۼHHH9HHH߀H%@HH@HHHLHl$H$Ld$HA@HLJHLJHH$Hl$Ld$HHH襳;HHH轿HHHSh@HSHtHH[`ܻ[1AWAAVL5 AUL- ATIUHSHHpfDf=tpf tjf tdf{ S$@u"C ff!f#1ҾHHH1HYHAD$ f}u H}tC f!tf#ttH,HcH AT$ f}tPf LtGH II 1Hf{ 7C%HH'HH?LD뇃@fS$tf#tJLHf{ #It8LHFs HHHA`t;H[]A\A]A^A_C%tLH1HIغ@HA`uHHHHH[]A\A]A^A_1Ҿ`عH\$Ld$HLl$Lt$IHl$H(HAAt fy HE11ҾLQHH/,IctnH,fDk HDs$HCI$Ht <(H,HLH@ D9tCH$Hl$HLd$Ll$Lt$ H(Hs(L蔪fa$iLH$Hl$Ld$Ll$HLt$ H(ɳHLH_,H5 LH1fSHH1ҾMHH"HHƺHH1[Offffff.SHH1ҾHHҮHHƺRHH1[ffffff.Hl$Ll$HLt$H\$MLd$L|$HHT$(H$MH$t$4M͉L$$HD$HT$3A@ ff f=\IPLE1E1HT$8I@D$DAE f})f fuAE$DtIE(fx LHHH3ILHLHHrT$DHHᄡ莵HHcPHD`%HT$8HᄉHHP1'HT$t$4HDD$$HIHT$HT$H$HD$$H1HT$(H\$XHl$`Ld$hLl$pLt$xL$HĈ@LHHHHHHHL$D@IA@%HI,fA@ HRpAIPHD$8D$DNAX%I@LE1HD$8I@AܹD$DH1ҾE1٩IHD$8D$DH@(HHX(HC(HD$HHPHHT$Pc$IHC(1šIHP(HLHHHC0HT$HHHD$PL8IG(I2LHWL$D@H^,H5| H1AWAAVMAUMATIUHSHT$fAx HHD$HMHA(LfA|$ u @ uH5+ H1QIv(H1HH裬H52 HHD$*HHHgC t HHLK  AxIt'H@H Љ1uɾ^HH 1‰1I@LHHHT$HHHH¾HþHHޱHD$Mt fA} LtIv(1F H11ڼHL$H11IƼLH1Ҿ5H豲HH11袼HHH¾/LHH¾H5! HHHH1Ҿt$IHE11H,H ( DžDž H[]A\A]A^A_H1HH莪EIH5, HHËC < LK  AxIt&HH Љ1uɾ^HH 1‰1I@LHHLHHHH¾H赼HHЯH@ IH5+ HHHHGC HHH5 1AWAAVAUATIH1UHSLHHD$H%@MHD$tL1ҾHިHD$AAt0HSL20HSH E1HuhHSH HtU1ҾHfLHHSIƋ0rHSHBHCHHHIDH11DL`A AHLD$HL$MDHN DL`H[]A\A]A^A_HSHBHCHSHBHCfH\$Ld$HLl$HAHL$8LD$@HH 5LL$HIH)H$)x)p)h)`)X)P)H)@HD,8腔HH$IHLDHD$HD$ $D$0HD$ˡH$L$L$Hff.HLD$@DLL$HJL.I)H$A)x)p)h)`)X)P)H)@H$I$ D$0HD$HD$ HD$ HATUHSģ@$ItH@(HxH5 1ҹ HvHHtHHB8p@DH5J 1ҹ HFHHtHHB8H@.HH5% H E1E11H¾1H薵H5 1ҹ HH5 1ҹ HHǞHHH@8HR8H@8HB8HHB8H@8Ht@HJXHHHB8DX@EuHx8t zXH5! HHHHPH1ҾH螠HHL蛷LH谓[]LA\Hx8zX Hx8zXHch HFh 1HH/LHHH ,fAD$ HHhID$ID$(f@ IT$(HAHHBID$(1H@躟1HHHHLHH蚶@HHHH*1H1H˪IH@HcLHH@?ff.AWIAVIAUATIUHSLHM`E1 DHHE< t< t< t< t < fHuLLLH1Ҿ踢LLH¾ŴLL1H襾LH1Ҿ胢HLH¾萴H5!~ HL HIL[]A\A]A^A_H1ɾ1dHHS< < HHE< t< t< t< t< t HDuHLH)1HLΡLHL軴HIH袢HHE11L$1HLrLHL_I_H\$Hl$HLd$Ll$HLt$L|$H8IIE:H HL $HtH1HHpPIEHHH@8Hp(H H| E1 H`HHt8H H9t,HH\$Hl$Ld$Ll$ Lt$(L|$0H8rfH5!| H 1H¾H1xfDLH5LHH1HHHHH¾"LH1HHHH¾H5{ HH cIH1ɾH1ܯ HHlHH@8Hp(fff.AWMAVMAUIATIUHSHdH%(H$1H҉t$ HD$8tHr(FHHHD$8MHD$0t%Iu(FFHH@HD$HHHHD$0H|$8FHD$ LL HT$Ht$8H H9MHD$(t LHMt LHԴMt LHĴHL$(A hH|$8tHT$(HH@8X@GE1MD$1MI$HxH8HT$(HH@8Ht @D HL$0HT$(LHH|$,Hx{MHuu3I$~HtLHHHHt\H`DhHt H`PHI$Hp HL$8HHv HD1ͥH`DhHLHE1HnCMHO 1LH躦I$H _/HXXI$HHPI$fLH苨HH|PHDžDžL$ 9M@~ HMH$dH3%(L( HĘ[]A\A]A^A_ÐH|$0HL$09MHH1LHTHL`8M@DAD$HT$8H5Ur H1SHT$H"HH|$8HD$0hH`@HHlH`H`HHPH H HDJHLF8Hw HHD1%HHHD$ ;D"1HD$8tZA u<t HHxt+#H讨tHv #H1T@HL$0Ht$(1H輞H|$00HL$HHT$0HHt$(IHHE17PHDžI$HP@H9pHT$8H5q H1赹DHT$(H1HHH@8H@8HT$8ګI,fHH Ht$ HHPH5h HW HDM|$tSMtNHI$LHf%f I$HB`Ht HHpPHu2Hr8Hu)HP H|$8HtHL$(HHpPHtHE1LHM|$txHfHȠIHxPAD$HL$(H@XfHHftI$ff HLHVHI$HfI$HLHHHHHI$HHHHǀHI$HH@xHBxHHH@xI$HHpx萷HH聆ht tPI$HL$(HHH`H`I$Hp8hHChI$HPHB8H|$0tHL$HHT$0LHD E?|$I$fA LH51HHSHCHI$H@HH%@I$H@HH@I$HsHHHHC@I$HH@HHI$Hp@I$H5I$tH|$0tHD$08+Ll$8MuLl$ MhHH9P1H薨HH H5Qq HIH`IH`Lc HHDJHHH8Hq 1軧HT$(1ALHCHIE1IHHHJHH@8Hp(虒IH@8Hp(HUHHx:L:HPHMLEAHEJH HQHHDHyI҃HfAWAVAUATUSHHH|$Ht$HT$HT$4HHHD$(IHD$ I fHD$ HLyxMH|$11L }HHL9HHHT$@HT$ H QpT$8X`HL$@HcD$<H,\$ uCuH|$AF S9D$$v HT$$;PvCs yHH|$@ (L$ =ɚ;DIIL$ uL$Lcl$tH(L[]A\A]A^A_D$ HD$Ht$1HHLcuHcD$ T$ ILEf.H\$Hl$؉Ld$Ll$HLt$L|$H8@G@;GDM@HU8HHAHcHAHU8HH!M@XA HQHIFHI;IH01HHH@oH1LHprH@HI$1LLH`HQrLLH>r11LH/vH1ɺLHHvHEHHHHEuDžDž Dž LH\$Hl$Ld$Ll$ Lt$(L|$0H8fDH HiHHiH HiH HiuHHIHII11LHE1@tD@u&EA@tAЉЃ$ tjDu&Adu&@ʉ9uuuDtCAA FBD  D2HH uApῃ AAFAAA FBD  D2HH uH9s-< t*< t&< t"< t< t<#ft> tHH9wHHH9wƐfffff.>{t1FH~0< wHB< v,t 1}OA< wHJHA< v1}Dfffff.fffff.HVHB8HtÐHB@ff.HH9u1ÐVH[ <uVHc…HtËVfATHIUHSH9F@t8H@HHHrHuSHZ <tI)IDc[]A\I)IfDc[]A\ff.HLAAUHATUSHH(dH%(HD$17`HH{HH{HH{HH{HHfHHfHHfHHfHH@{HHRHHHǃ_HHǃ.fHH__HHP_HHfHHRHHeH`HeH HeH(HeH0HwzH8HLHH)rH@HzeHHH^HPH\eHXHMeH`HzHhHHǃ`d^HpHHǃhJ^HtHǃp1^HxHǃtXQHHHǃx]H(HHǃtyH0H]H4H]HHtkH@PHHHHL`MtMAD$PtDH5^ H1`1ҹHHUHt HH)MA9l$PsHD$dH3%(u H([]A\A]?offffff.HLF@LM9tQAAHAPfA@HFHH8Ht!HF@I9tHH+V8H|'HF(+FDQI@HF@LHÃFTLHH5`E H1zffff.HHN@LAL9tYވQfAHFLH8Mt*HF@I9t!HH+V8H|61EHF(+FADQHAHF@HHfDFTHHH5D H1"zfH\$Ld$HHl$Ll$ILt$L|$HHHt FDFD~&H\$Hl$ Ld$(Ll$0Lt$8L|$@HHH~ {H{8zC^H{HtYHwHt LHH{HwHt LHH{Hw Ht LHH{Hw(Ht LHH{zHK(H)HD$ELc@HAB(Ѓf< vH5:A L1xH5I HcHH|$I$HT$HD$z IDŽ$1L=`,ID$LxyHC(HcLH4$HDLpILpW}1MHt$1HI$tHHID$Ht$LjGHD$HK(IHcIH|SyHK(HcLIHt&GHK(HcIHDHD$H{0yHC(H$LHtcII$HHHyxH{(xH;xH{xHHl$ H\$Ld$(Ll$0Lt$8L|$@HHxH5S? L1.wHZ? H=0( ƹj12pH>? H=<( ƹh1pfDATUHSHF(HHPHV(HfD(tKf;yu tc t^ tY tQ tL#t @N H9S vH HS(u (uz?uz#u@H;S tHHS(:)uHHS( []A\LCIHM)H9C@tHSH5Ha~LCHކ L j> IuH@ H5T> LLALH1uATHwR USHLF@LHM9 HcI9L$OL LN@DIIA@APAfAAAQA HFH@8HtYL;^@tSHV8LH)HMHI)BPHL;^@t(LV8LL)HHFHP8LL)ЋBJL9oHFHH8HtDL;^@t>HH+V8HHF(+FDQL;^@tHH+V8H|iHFH@8P@ofGL[]A\H1DFTЉFT[]A\HH5? H߉1ktHH5@? H߉1TtH5-? HH1?tH5> HH1*tf.HBB(HBH@H@H@PFtQUHS HtcDʃD9HUt U t tC;Et @߈ U@t @߈[]DʃD9tH2U럃ECD*DHH uUcE(C(D*(D(HHu U8#AEC@D*DHH uTABTI1HHBLMffff.H\$Hl$Ld$Ll$ILt$HIH$HL$PHH ;L$XHIH)H$)x)p)h)`)X)P)H)@dH%(H$(15SLHHD$%SHHv HD$HT$H*H=vH)H\$ LH_HH|$HL_HHD$HHLD D!H$$D$0HD$H$0HD$Q@HtRHH@HD$HH0H|$v HD$HT$H__HD$H5t HLD1pHT$"LxHf1҉ЉD(tJȃD(u+"u1@uH=\; H øfff.H\$Hl$HHH9F@HLtHghH)HEH\$Hl$HÐHvHvHvHvHvHvHH9HHDH\$Hl$HLl$Ld$H(vhIHӅ HRHL`HC(HHH@L9wvHC(H0H9t"LXHC(H0F @HSH9s0MCK CHɸICLCP KPHH@HsF tfu$cPCHl$H\$Ld$Ll$ H(úwLfHtʋP(~@(CPtDHr{=MhIąu fDH$H pH$DrEA5$@D9t+$u!A4tA8AHBH$$p$$p$m$pE1E1% D$` D$`HL$0IHT$ LL$PH$H$$$x9Ë$OH$A9DLDE$$P$$%$H|$ht t Ht$hNP$THt$hFT$A4H$ED9AH|$hDŽ$P HT$hBT$THBXH$XH$HPnH$HAHBH$t HBH$$1H$HT$8H$Ht$8H$`jDHL$8HT$H$H$AA4 $t AND$Et'HT$hD)ZB A9Ht$XHL$hHq(D$$)$$p$pHt$hHV`HH$HBH$HBH$HBH$HB H$B($p$H$HH$HBH$HBH$HBH$HB $B($pHF`aHL$HH$XfjmA+HcA<!De]$pH$DFhEH|$ht t HD$hD`$p\Hw\HL$hLA`A W H׉HAD8E H(M, ȃAD HL$hHA`H(HA`HHH@H@H@H$H$HkH$HHE AH%Ld( HKEA$tE:Msf}=%tL9vE1A$(EtH$HmhjI=H$CHsfBH$H$LHHB%L$HcHjTHH$H$Hh}"HE<HuHD(L`LhI9wHpI9H$Lb, H X, L+CHPuxu$볍7HLcfEH$>iH$HEH|$1HƄ$H$HT$H$6H$FI$<&FD$pD$pAAE@H$HAgH$H$DŽ$DŽ$DŽ$DŽ$Ƅ$HBH$~$$pHD$hHp`tH&HL$hHq`HT$(H$pH$HL$hHT$H$Hq`H$pHL$hHQ`B u jH$H$$p|Ht$hHF`` bHD$hH$H$HP`pGH$H|$h HT$hJPL9H$L>IECHL$hH$H$HQ`H:$pHT$h1HB`t>H($pf t& t! t t uHL$hHq`DHT$h1Hr`t'N( $p GЃ v!HL$hHq`T~H$HIHtx,t H9D$pH$$ fDHT$h1HB`tIEME(Ho DLL$IA)1"fD1HHDt'H ,H9tH‰HDHHueIU@0HD$8IE(8-dHHI;M Vx]LIIM(HD$@L=tAIE(IULLL$HHH+L$HHH)HT$H HD$4$1I!M;}@OM HD$@IM(8IU H$HE1H)LS*HH$IE(JH:tH=tH.tI[WMCL9vA;@:t @=t@.uL9ME(A@9LD$(9tHD$(HL$(H9IM(wH9T$(tHD$(HIE(HD$(x]M](dA8{]@ LD$@H HcHHT$ H9U@ HE(H HcHHD$ H9E@uؾLtD$\uLM(HT$hHN H L HELIH9T$(H) LL$H$LEHE˃L$\HZ A)1ZE1HD$HD$TIH9F@u@Lt/HELE(H e H LL$IA)1HE({ )7 HLqAHD$HbHF(NP!j =uHHE(E`E1HD$HD$TL$T.HLM賜L9m@HD$xtPHH+M8H HEHP8HE(H+EDJL;m@t"HT$xH+U8He HEH@8PHL$xLHL腘t~H|$HtvH\$HM<8OHLHHtML9m@tSH/+<uHL$xHSHL#A'HL]HD$xkDL$@ExHE(HU H98)? HHE(IH9E@tHUH5+LLEHM(Ha H5 L1L)M HT$HHHLyML9m@t D]\EHٺHLgL;m@teHH+M8H} HEHP81|$@JL;m@t9HH+M8H HEHP8$+EDJD$XL;m@E\D$XA-`ID$HE(HL$(D$\HL$h$A D$Xt$@H=P HHH8 Hֺ4H)Ɖ1ۃ3|$@>t 1HHL$HHL=IH9u@t]HL$HH+M8HJ HEHP8HE(+$JH;u@t.HL$HH+M8HHEHP8H$H+EDJHD$H%HLHT$HHHL艕H] H9](L$DMsHL}8)zIH9E@HT$`HU(tHUH5L{LEHM(H H5 L1L)M HL$xHSHLHGHE(IH9E@tHUH5KLLEHM(HT H5 L1L)M D$tLe(E`MPL)<{<})HE(HHE(IA$<\uA|$ID$tHE(IH9F@tHVH5L^HELE(H L$@H5 LL$IA)1萠HLBIIH9U@D$\HL֌E HLIǃEHIH9E@ LH+U8HHEH@8PD$\=HZHLH](IHE(8]HLIIH9U@g LH+M8HHEHP8E()؉JD$\HZH](zzHD$`MHH$ MfH9U wD> HH9u Hu(wHHL薋HE(8tE`E HL複IIH9M@bLH+U8HHEH@8PD$\HLLHLHI$t0HU(H;U HA?T$\HD$PtE1lIA$zKHD$@H9E@B<LrA$r?{ EhE@Y H$t~H\$TLD$(HLHLڐH$H$H$IH$H9s6H)HH$t&HHT$0HLoH$H$uH$H$H$~LBHD$@H9E@ $AUIHL$I&HU LL I}?{L;AIWLH$H$D舄$LLHHËEhtK HL1I`HLGC HHL`tEhIH9E@ H$LHD*$IUAID$HHH)HHE@$LF/HM(HL$pQHHBЀ,< ~ E1Hp }MH}( LD11yHD$xA},\HE(H$H$11 GA" H$:0tAL$xHLL$lH](rD$\> UHLHLTUH(QIHD$@H9E@tXLH+M8HAHEHP8HD$pH+EDJHT$@H;U@t$LH+M8HQ HEHP8HE(+D$pJAD$l~ HT$PE~HL$P E:D;l$l/HD$@H;E@tHUH5~LLEHM(H H5 L1L)M JH HcHH$HHET^J|#<BH HcHHL4I3HLIsHLIL'LM(HEH LD$`LLH+L$`LL$H$A)1pIIHDŽ$z0t#AD$0< w11 L9EXHL$(HT$0LE1LDŽ$HDŽ$L$H$HE I9/HUHHL$@H)H9M@tHUH5}LHUHY L HuIH5 H LLLL1\ID$H$A|${3 HL$(HT$0E1H$LDŽ$HDŽ$L$L$H$/IHDŽ$ IHDŽ$ IHDŽ$ IHDŽ$AT$IL$HBH H H@H$LaIHDŽ$ IEHL%҃IHL6IH9E@tXLH+U8H HEH@8PD$\HL,HLIނIH9M@uD$\HL~E`IHL袂IH9M@tqLH+U8H HEH@8PD$\.E%҃\ HL~MPIHL1IH9U@uD$\HLG~IHL/~MPIEE`HMPL%҃ ~I E`HL}HLI薁IH9E@\11 H ~ ;EXH](0< wHHHU(0< vIHD$@H9E@t HU;JP EEL/@t %҃1HL|HT$@H;U@ItSHH+M8HHEHsHP8+EDJHL$@H;M@t"LH+M8HHEHP8HE()JHm(HL耀D$\9HE H9qHUHIH)H9E@fDHLp|HLI"ID$\H9U@LH+U8HvHEH@8PD$\E%҃EHL%҃{HLIIH9U@d{{Le vHCI9IBHE Hm(HLIHm(Le IHT$@H9U@tSHH+M8HOHEHsHP8+EDJHL$@H;M@t"LH+M8HbHEHP8HE()JHL~D$\EE`HMPL%҃ zIkHLzE`IHL~D$\>MHT$@H;U@L$lfEofAOHL$PD$\D$lA,HLYzLHHLuIHL$@H9M@t E\L+HL~HD$@H;E@txLH+M8HHEHP8HD$pH+EDJHT$@H;U@tDLH+U8HHEA{HH8QHL$@H;M@tE\tfAG$HLyLHHL!uHD$@H;E@EHDEHIH9E@tHUH5pL^Hu(LEHH H5e L1L)M }HHHE HHE rHH5Z L1H$L$LHLh~H$H$ID$HE(HT$@H9U@tHUH5oLLEHM(He& H5 L1L)M 5H5oLfLEHM(H H5p L1L)M HE(HLe HE(IH9E@tHUH5DoL HELE(H H5 LL$IA)1?{ffffff.AWIAVE1AUIATUHSH(D$$u_HH9^@t v\#HLrH;]@IHH+U8H,HEH@8PH;]@AHm(HLE1vHD$$D$HD$EHHLHLmD$IHE(H;E sO<|tH<)tDHT$HLd$$fHHtOT$$MLDA MAuD$$ AMtQ|$u D$$A H(L[]A\A]A^A_D$$tE1޺8HpIE\$HLQqMLDH5Ѷ HL1AWAVAUIATIUHSHHdH%(H$x1HA`H$<HL$@LL$ Ht$HHT$HL$ $$cD$/$ H)HLLH$ iHHŋ$HLH$ $rH\$HAD$XLDŽ$DŽ$HL$Ht$ D$@1;^DŽ$DŽ$H\$hH\$XHl$`DŽ$1DŽ$DŽ$L$$D$pRHHD$(H$xdH3%(HD$( HĈ[]A\A]A^A_Ë$=zDŽ$|$p~D$p$HIHc$1HHű${HcH IFHc$H1H萱IF(I0H$( t D$AH$HHHHH$B IFHP IFH@(IV$B$IVB$0t D$A1H$L誵D$E@H$LH7$;$QH$HH;HDIFHP(IFH@ A$eQEIFLH@H@H$e,,HG HG8IVHB(HB@IV$B0IV$B4iIFHPIFH@H$LIHE0H9$D$EtD$EcD$ER$t AF\=AN\0HD$(HdH$Hy@HKFH$0Ht$ H$@LDŽ$ HPlLc$Ht$ H$ H$8H$0L$LH$H$$(IL$0pD$4IFH@(H@ H@H@H@@H@8H$LmHt$ H T L趞HD$P,HcL`(^IDHD$PH$H@(HLHHHBHAHBHAHBHAHB HA B(A(HD$PH@(HDAf\IFcIFHA@=H$@Ht$ LHjH$,LltI~+H=4+1MHt$ H R L贝HD$P,HcL`(\IDHD$PH$H@(HLHHHBHAHBHAHBHAHB HA B(A(HD$PH@(HDAf\IFIF(II~HT$HH\$`HH)H9$tHT$PH5]HT$HHL HuIH5 H LLLL1HT$HH\$`H)L9$tHT$PH5g]L/HT$HHL 7 HuIH5% H1 LLLL1fffff.AUATIH= USHHtxLHL-=LHI$X Ht1HxH`HuADŽ$TH[]A\A]HLH`HI$XI$`I$hI$pI$xI$띐LHcHMJHPIDAȃtDt?FHHHPI@t+t@~EDHHAȃtuH@8ÐAAftHAzt1H@AUIATUSHH0HtYE1fIItEI0B, tHM+LJ`IH5 Hlj1H臫IuH[]A\A]H\$Ld$HHL&HLyH5: HLHLd$H\$1H$@AWIAVMAUIATIUSHHI9D$v < D$H HkLLUHI_cD l @A<^Ht0< Hĵ LL1赱DHHHt|MHStI$L;pK >x"D\ gH= ALLHбHHuH ALL話|$tH ALL腱I$HH[]A\A]A^A_HĴ ALLRH ALL0Hq ALLHR ALLH/ ALLðnALL訰SH LLA膰H: ALLiHW LL1譯AWAVAUATUHSHHHH1HHIHD$DHUUUU${ UL L L D$I9bI9I9H;Y+KL tpuPx4HUHHcH9FHHHHH9u1L{ H]H LLDH1{C H LH۸I$HcD$HBH @HHHHUUUUt { UH! LH萸D$t#1fDH LHk;\$uAD$BI$HH[]A\A]A^A_Hı LH.C %=tHLH C %H LH߷JI9Hq uHa LH輷$ (uЩuH HxuHHi:1`+ f.@ MBHe LHND$I3H߰ LHHHL[]A\A]A^A_1H LH (ЩH HxfWf.@ |H LH艶D$LHHHBI$HH@H6 VH HcHHZ! LH-C HH8YH5S1HH LHIC HALHHHL@HsH HL1H,C iLHWH] LH耵NHA LHi7H% LHR H LH; H4 LH$H LH Hخ LHHҮ LHߴH LHȴHH@`HHHH LHHH@1Hw LH聴OH7 LHj8H LHS!H LH< H LH%tx fH`HHH9H`@%HjHH׭ HL@ ;H3D$@HH LHHH1H {HHZ LH@ 辨HHޞH HLHAH HLH1{THLHAE1HHHH)Hì HLH1>H LH觲H LH萲HH LHHH1HG LHY@ATUHSHHHtH`umC f=_|H+HH5(1HC fv HXH5 H1[]A\1H HcHL tC f=_ufDHH赠HHHp.HH11HHpx蒻HSH01H聻H0HF/HHHS(HEH<1HHUIHC(1ALHHAD$I$HHFH5 HH1LHwfHs(HtoH@+HHH5g HH1輞H[HH5 H1H藞b"1LHHZHSHEH4HH53 H1Q"1HH]DAUATUSHHHL HHt2LmLM9t"HH5 HMLH1辝L t4L HH5p H1芝HfL L @tLHHkHt H`Hٰt L tH0tsE HH0HCHPHHCƃH1[]A\A]ÐHȦHsHԾ@YH;QHH01ۚhtHf H1³offff.H\$Ld$HLl$HIH AMH1H5 #LLHLd$H$Ll$HcHLD$@DLL$HJL.I)H$A)x)p)h)`)X)P)H)@H$I$ D$0HD$HD$ HD$蠹HUM1HSLIH Q H谘HtbHHx@tXH5= 1H0H HAPHt HHPPHtH5 H1H HQ@HH[]H5 1HH []VfDUM1HSLIH HHt#HHP@HtHHH5 []1鈚HH []DUM1HSLIH Q H谗Ht#HHPPHtHHH5@ []1(HH []镝DHl$Ld$HH\$Ll$H(HI蔵HI H5 H1ș1ALLHIEHHH H¾1IHI$H@8HP0L9t>A1LH賬IEHHH w H¾IH1蘖H` H補HKH + HHH\$Hl$1Ld$Ll$ 1H(MH5 HH\$Hl$Ld$1Ll$ H(鿘ffffff.AVAUIATIUHH SHHH 1LDsҕEXHUPI$ɃHЃ?HHpHE%@H>H_ LN DH [ DLD$HD1HT$Lcf} t*H}8t#H N DLL1>Hu8LMXu/HUPI$HHH@HH@Hx8H51LHE`L+EX HUPI$HHH@Ht0HH@Hx8t"B\@B]tH HLިEX@c:HHHxtHHH IDLL1HL#AvH LHL1[]A\A]A^ߓH Ţ LDL1ȓ`HԢ HLH HLfH HLާE`DH͢ HL辧H HL觧EXH HL荧EXDHb HLnEXfDH< HLNEXfDH HL.EX[fDH HLEX3H HLHUPI$HHH@HHH@Hx8ffff.AV1AUIATIUHH SDs+E"fH5 L1誔E f=_H2+HDH H5\ A$IL1dHEHf}"EP"H54 L17HUHtEf} IH T H+H DLL1LWH}i}$}%+E f=f=H  1LDLHE0HbP"H5Y L1聓E$t$H](HtHLDL/H[Hu[]LLAvA\A]A^H T 1閐H51L%E f=_{HLyP"H5 L1f=f=sf=f=E%@D:LEH  H51LM HHS+D_E%^E$ t }%HHxHLʏpH5F1LHE$(H] HL轣U$¨L@ @iHHHxtHHH R IDLL1HLEHHE0HtH | ILDL1貎HE(H n HIRLDL1苎=f!f=Xff~fDzLE(H Zf=f=fDJH  1LDLHE8HP"H5i L1葐H ӟ 1LDLڍHE@HP"H50 L1XH 1LDL衍HEHHH5& L1#f:f/f!fDf%zf$f#ff=fE% l@U ffr@H HLfs$ffDff HLDLpH8 HL螠E%@\H[ HL}EH5 L1觎kH HLPU$LH LDL1IƋ Hԛ HLU$|H HLU$RH HL֟U$,Hg HL踟U$f=8f=]XEHHE0HtH њ ILDL1HE(H Ú HILDL1H HL)gH HLPf-fbf-ffkf=[H HLÞH  ALDL1DHW HL荞H5 L1跌ZH5 L1行 H ALDL1H HL+E%@[ H HLE%@Hי HLߝE% kH@@wH™ HL蘝`XH HLyAf1ffD!f}f fffffDfDfsfHffDfDfDRf\D!fDffWf+f'E%H HL>E%ƒ`@` uHp HLE%HZ HLE%E%@H HLěH HL譛E%H HL蒛E%sH HLwE%kH{ HL\E%HT HLAE%zH1 HL&E%WH HL E%4HU HLE%H HL՚E%yH HL躚E%RHՖ HL蜚E%+Hܖ HL~E%>H HLcE%H HLHE%E%@Hw HL#E%yHK HLE%@E%tH HLؙE% tH HL躙E%Ѓ@tHЖ HL蜙E%]H HL~FE%@E%tH. HL$E%H HLE%@Hڕ HLE%@H HLĘE%@H HL裘kE% aH] HL肘J}%@H5 HLa)E%@H HL@E%@tH HLE%tH HLE%Ѓ tH HLE%yH HLǗE%Hk HL詗q@AWAAVAUIATIUHSHH$@DD$lDL$hD$gY AHH5П IӉ$DHD$1DD$QH$I$迸I D a@?fD@@@%D$pP -$ D$v0Pdx|$vD$wttH? LH$AD$ @O@|$vtAD$ IHJH|,H{ LH蓕IH LDHH1$$H5 LH1荃LHfH[]A\A]A^A_H7 HcH|$vH# LHH LHޔfH LH辔fHؒ LH螔q$H HcHfH LHnHk LHWfHM LH>H( LH'AD$ %=H LHrH$ LHJ@H LHΓH LH跓fH LH螓H~ LH臓fH` LHnHA LHWhfH" LH>AH LH'!fH LHHÐ HHHAHBIHH@2H LHŒAD$ I$BXHB8Ht @DBX{fZPI$@XxHM LHRI$@X%=AH? LH(I$PX¨3 l@EH LHI$DD_ @AD$ @I$@H LHVAD$ @|$wHHя LH1AD$ @"H LHא@H LH贐H a 1A|\HǏ LH芐D$pH LHgH5̏ HL1~AD$ LI$H L@1LDH{AD$   LɁ$ $ AD$1$$ I$HHH IL1DH;{AD$ -I$L$HLHHHL@HH5HL1}AD$ H5bh L1|}I$H A LDHL@1zI$H / LDHL@1z$v_I$HH(Ht1H$HDL$hLDD$lDHHD$D$g$JI$H@0HtH ڎ ILDH$ tH HcHAD$tI$H  LDHL1yI$H DLHL@8譐I4$HF@Ht#DH"H ߏ IDLH1yI4$LFHH ׏ D1LHyI4$HNHHt|$gtAwLHϯI4$LFPH 1LDH@yI$H LDHLc@X1!yI$H LDHL@`脀I$H ̐ LDHL@h1xI$H [ LDHL@p1xI$H LDHD1xI$H ( LDHD1x$WI$H  LDHL@x1TxT$h9T$lI$HHкHtIH2H u3H9H׎ t#HЎ uHN`Hʎ HtHH@@H II1LDHwD$h9D$l}I$ALHwI$H a LDHL@@1wI$H n LDHL@H1`wI$H ` LDHL@P#I$H M LDHL@81$wI$H@8HeLH , LDH1vI$H ! LDHH@8D@1vI$H  LDHH@8L@1vI$H LDHH@8L@1vI$H LDHH@8L@ 1mvI$H ۍ LDHH@8L@(1JvI$H ȍ LDHH@8L@81'vI$H LDHH@8D@@1vI$H LDHH@8D@D1uI$H LDHH@8D@H1uI$H LDHH@8L@P1uI$H r LDHD@X1{uI$H e LDHH@8L@0ڀI$H G LDHL@816uI$H 7 LDHL@@1uI$H ' LDHL@H1tI$H LDHL@P1tI$H LDHL@X1tI$H LDHL@`1tI$H ی DLHL@h1|tI4$HFpHtH nj IDLH1UtI4$LFxH DLHI4$HHtH IDLH1tI4$LH DLHnI4$HHtH n IDLH1sI4$LH _ LDH$I$H R LDHL1sI$H C BD<^v H 9 DLDH1IsI$H " LDHL1&ssI$H LDHL1sI$H8HPHT$x@ H,H9H$H54 L1`uH$ 1HHD$XsI4$DŽ$1ҹHH1HtHHuCHcƒHA9$M$$H9NHHI$H  LDHL1rI$HH@8H9V H)H5 LH1tI$H ؆ LDHL@81qI$H ʆ LDHL@1qI$H LDHL@1qI$H LDHL@@1mqI$H 1LHXHq   IHԲHxtHHH d 1IDLHqD$h9D$lHLHr5T$lD$gAHDŽ$T$TD$P};\$h$1LH/L$H HL1DH}pHt/H$HD$PDDL$hDD$THHT$$LH ɂH$$LH^q9isI$H LDHD@P1pI$H LDHL@81oI$H LDHL@@1oI$H HLDL@H1oI$xP@t@THHHH$HD$gAwDD$lDL$hHHT$LA$сH5 HL1qEH5 HL1q,H5 HL1qH5 LH1qLHoH5 HL1iqH5x HL1PqH5I HL17qH56 HL1qH5# HL1qrH5 HL1pYH5 HL1p@H5 HL1p'H5 HL1pH5 HL1pH5݁ HL1op H`HHH9H`@%H}I$H ALDH@ dmHH;Yy+H *H; y+HN H;a{+Hz H; |+Hz H;y+Hz H;Ux+Hz H;w+Hİ H;y+Hz H;y+Hz H;y+Hz tzH;x+Hwz tjH;w+Hlz tZH;uy+Hdz tJH;mz+H]z t:H;x+HTz t*H;x+Hڑ tH;z+IH q{ uHڤH ,z ILDL1`EfMt/uH Sq+@u3AH@8%HQHuDEH { 1LDLS`EHEHt$H \z IL1DL$`EE(oHE HH Fz IL1DL_E(}wtNH5x1L趖HcM(HU E1LL$hHLH踁H5!HL14bHL_ Le}wHmHH([]A\A]A^A_LH x 1IDLL9_EH x DL1DL_}eEc?}gEH x LDL1^}@H Tx DLDL1^H x LcLDL1^rH] HHCH x E1LDLH$L 1O^HCH x ALDLH$LK1&^T$HMLHD$hDL$$DD$ t$$LHD$spH5Kx LVfHH Qw LDL1]H w LDL1]H w 1LDL]E}EiH Jw LDL1V]IH5w LeT$HM LHD$hDL$$DD$ t$$LHD$offffff.H\$Ld$HH(I跎LHE1E1H1HD$$豂H\$Ld$ H(fH\$Ld$HHIgHLH\$Ld$H1HfHDa@H\$Ld$HHIHLH\$Ld$H1H鹂fH\$Hl$HLd$HIRz1HHALHiHHH諍H v 1HI1H[I$H@8H@HHpHHtHH$Hl$Ld$Hp`HXH av HHH$Hl$1Ld$1H`[ATIUHSy1LHHAH踏HHHH v H11IH[I$H@8H@8HL`PMt+XXH辌HMH u AH1[]A\1ZHpHHt [H]A\_H职[HH u H]A\11ZAWIAVAUATIUSHHH:JE1E1HJ(HuHHHk} uHEH@8Ht݋P@uHx8tHL!HEH@8Hxt HL7uHSBH|:uHEH@8Hp(HtI9$HxLaHHpIAID;r>H[]A\A]A^A_ffff.SHGHHnHHtH8^HHH[ha1L9r0RD9tCH9Ds HHI9v$<\uHD9tH9v\HH9vHD$8HfHHt DuHHDtIHD9uHFHHDIEt!DGEtIHHE8tAzuH1fff.H\$Hl$DEtLHH)H)H9}1H\$Hl$L9HsHHiH)H9wHH9rHD9uI9v4EL^I:LuM9v!AGIH8tIAI9wL^Lffff.USDEtuLIHYH)I)L9wkHiL9w`AID9uI9v5IJIA:BHuM9v!AGIH8tIAI9wIJH[]@L9Hr[]1fffff.t9IE1 @HI>A@8tHn+@:<u AA9u1øf.t9IE1 @HI>A@8tHn+@:<u AA9u1øf.Hl$Ld$HH\$HHItH9WuHH$Hl$Ld$HfDB$u1HZ(Hu H[Htf{ u H{HDHHLHtHH`HxPH`HxP H`HxPt+H`@H@PHȃHtHԅt.H` H@PHȃHufDt,H` H@PHȃHxH`1HxPiOH` H@PHȃH+t6t.t&HqHD$0Ho DHqqHD$0tyftotgt_tWtOtGt?t7t/HtH|$tHT$HstHHT$ HN HD$ Ht ~ C1 H|$H AL%wN A DLdt`Ht }5HD$ LD$0H\N HL$(MDLH$1wHEt"HT$HHxHt@fDH\$8Hl$@Ld$HLl$PLt$XL|$`HhHT$L%M AH ?GfDHHB8H@0HtHCHj@LcxH noHqHEHt }H=N LH\$8Hl$@Ld$HLl$PLt$X1L|$`HhlGHD$ LD$0HM HL$(MDLHl$H$1=GHT$HHxH@LD$0HL$(HM IDLH\$8Hl$@1Ld$HLl$PLt$XL|$`HhFfLD$0HL$(HM DLH\$8Hl$@Ld$HLl$P1Lt$XL|$`HhFHM IȾHfff.ATASHHHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@HB+8*HH$HHD$HD$HD$ D$0HD$_H[A\ffff.HHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H$H$D$0HD$HD$ HD$HHSHHHT$0Ht$(HH<HL$8LD$@LL$HH)H$)x)p)h)`)X)P)H)@H>A+8)HH$HH$D$0HD$HD$ HD$;HH[fH\$Hl$1Ll$Lt$HLd$H(HIMtJ;HpIHt HHxuhAD$I$H@IEI$H(AD$ % AHtAIUHH)HH$Hl$Ld$Ll$Lt$ H(ùLH-JHpFtCHH@IEHpHH(HH@r"LLHbHWL"HbHpH빐USHHHl$LD$D$HGHhtJHT$HHpOHXHHH@8HD$ B HH8t*Hx66Ht:T$HH*HjEHZH5iH1A+/HHH@8H0FtHH@HD$HH뛹"HHaHHHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H$H$D$0HD$HD$ HD$X0UHH=G SHIHHu3H< t< t< t< t< @tHt 0< [H(HTHHn^H(HH$twH(1HH$1҅u?H(H  H Yf.\HH,H1HtUƅ8HH[]H(BH  BH Yf.\HH,H1NH(HH#u3H(G  G Yf.sIH,HZH5=G H1V 116H3H,H,\HH,H1뤐ATIUHSH xA1H=$D <  @A<.vF t tH5F L1[VH u1H][]A\fDHcHH uH uH rfH \H@ HvH 1^H GH  f.11ɺ H;ƍB< wHB< v  H5E L1"UfH]_[]A\HH5E L1TfDAWIAVIAUATIUSH8>-1L11A?wD$@E1AA$H|$ ;eT$D$ @F8  ;C8|D$ 1A?rIc݋| @9,"| s&Hcŋ| 1A?r9tZ&D$H5 L-HHt H5> L-B| F!BD BD |$.!HL7B| !Ll$(@H1LLFu}tD$,E1A|$ |$ 1(EuHD$1Ic݋| 8r@9t]@| Hcŋ| HD$8r9ti H$IcDD$AL1E!HH B9H)Hcŋ| |$& |$11S^H5< L1Mff.SHHHT$0Ht$(HH<HL$8LD$@LL$HH)H$)x)p)h)`)X)P)H)@H2+8HH$HH$D$0HD$HD$ HD$$ff.HHm2+H8k uHH=; 1E@HH=4+QuHH; H=ƹ( 1Eff.HH=3+LuHH; H=ƹ 1[Eff.USHHhHL$LD$D$9HT$HHzAHXHHH@8HD$ B HXHutHH:t"Hz0(HH:uH[]HLH5[H1C!fHHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H$H$D$0HD$HD$ HD$HSHHHT$0Ht$(HH<HL$8LD$@LL$HH)H$)x)p)h)`)X)P)H)@H0+8OHH$HH$D$0HD$HD$ HD$;H[fHHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H$H$D$0HD$HD$ HD$H*HSHHHT$0Ht$(HH<HL$8LD$@LL$HH)H$)x)p)h)`)X)P)H)@H.+8HH$HH$D$0HD$HD$ HD$)H[fH\$Ld$HLl$Lt$H8IIjHI/*MHHLLE1HD$$#I$H\$Ld$ Ll$(Lt$0HH8HHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H$H$D$0HD$HD$ HD$ HSHHHT$0Ht$(HH<HL$8LD$@LL$HH)H$)x)p)h)`)X)P)H)@H-+8OHH$HH$D$0HD$HD$ HD$H[fSHFt8HHBHD$HH|$HH|$cBHT$HHs5H[HT$".OHfHl$H\$ELd$HIHcH BMt%HcLHH$Hl$Ld$H5HHl$H$Ld$1HHaHl$H\$HHHt0H'HXHAHHH\$Hl$HH4H\$Hl$1HfH\$Hl$HLd$Ll$ILt$L|$LHt$DD$EAHIcM$DuMHT$As  1H\$Hl$Ld$Ll$Lt$L|$LHAS>DDeHcMEI)D9MhID$LD$DHDtqD9~lIcN>AD9uM9Lv3AEHL$MA:@uI9vACHI8tHL9uDUD\$ED$낋|$t9t$̅t1HcELIKASI$fPLfHH@8H@HtHHp@HuAWIAVEAUEATAUHSHHD$PHHD$ @$Ht$L\$PDd$TDl$XDt$\D$`$D$d$D$h$D$l$D$pHD$PH|$HD$HD$XHD$HD$`HD$ HD$hHD$(HD$pHD$0HD$xHD$8H$HD$@ HD$8@HD$xHD$@H$A5HL$H@HH=~?HĘH[]A\A]A^A_Åu}tH D`@AMcL4HHtEAdC$ELcE96HL-HHtHL$HLH^=~D9qH1t:@[ff.Lt$L|$IH\$Hl$ILd$Ll$HXH +HH9t)H\$(Hl$0Ld$8Ll$@Lt$HL|$PHXfDH!+HzHLD$(HcAA|$AMcHc3HHLH&H|D=IcL&AHHl$0H\$(Ld$8Ll$@Lt$HL|$PHX&HD$H+H8 H;HcD$L,MHy+HJ<*H 9LM!LD$ \$ H@+Hc{L HcHc2H +I$LHHJ<(%H+LHJ((=HHcT$ J<(HH|=%H+HJ(CH\$(Hl$0HLd$8Ll$@Lt$HL|$PHX4HcD$Dd$L,Ll$J<*t-DHH HʐHL$HAHHHuA|$HcH1EHD$~`D$$1fH!+HH<(HcH1H+HHD$H|HHH4(H$D$$D9d$$uHD$HT$HH+H*t$H׃HcH5*H+HID!H~+HJ<(7Hk+HJ)H:D$HH4JD)IHH7+H H1HvH:uf.ff.L|$H\$IHl$Ld$Ll$Lt$HdH%(H$x1Ht$HDD$DD$lD$ptH|$H/+%Htf1H|$Ht Ht$HL?7H$xdH3%(3H$H$L$L$L$L$HĸH=# %HItHHT$pI,HD$lHD$PD$_HT$0HI HT$(IHD$ HT$I9HT$ HD$0ILA:LH$HT$(HHD$8 \$lI IH|$HDcH9IMcAIDH=wH|$8tHcADd$lDp/H|$8LHt$Hr*HT$Ht$0.A@txtmH|$PI I9|$_u H|$P1D$DH|$Pg4H\$H|$p.^H|$8D$_LTHL$fLzuHL$@L[VH\$8Ht$0L4HD$PD&Ht$HI-xA%=@1D$_'H|$P@u|$_H ! tH B@H! HuHD$HH HD$PH|! IHL$PH5v! IL11HHH(HtK@HQHt6H:t AuN HztN @F `tHzt̀F H Hu1HuHHHH(HuH HtA9fuHf.HHHt&HPPHHHH@Ht Hyt@PøfDË@Tff.HHB IHtHHt HpL1HP1fDHP 1DB(u tH9rt11Ƈftt t!z(1ÀtJ(1Ãb(1@b(1f.B(f 1ffffff.HHB IHtHHHt HpL1HHHrH1HHl$Ld$HH\$HHo8IH]Ht\S vBHHx(t8Etq ЉC S t$сt ! ȉC HEAT$@;U tH$Hl$Ld$HID$8HcAT$@+AT$@ӐH7fDto@DH+S8Hu#HcHHǂ[fDLh [AHl$HcH5H\$Ld$HIHH6HHS8L"AD$ %BC@B AD$ H$Hl$% AD$ Ld$HfAUATIUSHLJ HEtaI$(tH,H I$1H1(H߃A$h 1HrEuHĈ[]A\A]ffffff.AWAAVAUATUSHH +8NHHHDŽ$HHD$HEDŽ$HD$HHD$E@;ED DŽ$HEpHH9Ehs$9}$E49E0}$McHxN4J<0$]$tHEh$tHUxHH$HxJ4FtHHHt x It!H$H$AH,IMI$HxHHM4MWAF$@HHH(H\HAAHH@HxH+]HHHXHHHHUHHH@HHE HHH@HHH]HHHxHEhHH;EpHEhHH+EHUhLHHHCLsHEHHHUHH HOHxH+UHHHPHHHHUHHH@HHE HHH@HHHEHHHxHHH@8H0HtWF HHtAHPH.H\$ HN)DHSH޿11H1$tm@$tHmh$t$uQ$@t LH+HD$HEHD$HHD$HH[]A\A]A^A_ÃE0Fm0멩@DdHfWf.@  fD$0'DE@H$H5Hu1HE1P.H$HHHB8H@0HtHHR@H+IH HE1J 1$fDHHx0HIH&+HLJ H.HHHA HHH(tH/HH80H*MtI$H@`HH"cH+JHHtx t\H(HH5 H1yDHHtx tDH(HH5-51FH HH@8H@HtHHx@HuHH@8H@HtHHx@Huffff.ATL%+UHSI4$Ht6L@HH3Ht!HuH +L)H[]A\H=X Hu []A\@ :Et. :Eu# :Eu :Etfff.SHz H'HC C(1[SHz HHt'HC C([1ff.AUIATIUSHHHX(HuHHT'HtmHCH+HtH@ Ht HLLH{ HtC*t} LKH9It.H]H{8tHL=H]I$LHp8HC8H\$Hl$ 1Ld$(Ll$0H8HT$;'Hƀ>*u~HFHErffffff.SF Ht(%H GAF HK 1[H $AH[1ÐHl$Ld$HH\$Ll$ILt$H8HHXH{ vPHHx(tFgHHIt1E u\@(H\$Hl$1Ld$ Ll$(Lt$0H8E tE1E1g1HL/&gHL?ICHLhEtjHEHPI$`HHc@DH)C tI$`@%t$1HxuI9HINHuIAfAN(CHLxHHtIHLHHL@ ImHT$ L$ H1LR#HcL$ L1HHIffff.Hl$Ld$HH\$H(HIHXH{ vpHHx(tfgH#HtT@(xMD$ C tI$`@%tWI$`HLPDT$ HcfH\$Hl$1Ld$ H(ËU %H E tHL:$HT$ HLfDUSHHHjHt7Ft(HPH`HH+PD H1[]@kվ tH H1ĐAWEAVE1AUIATIUSHHT$HL$HHX(Hu.yH@(Ht-ELD$HL$HLLAHHtMCHCukE<w@PtD@DtbHSLD$Ht$@̓ ELA]#HHuHD[]A\A]A^A_HSHuLL"LHH1H{IEfAVIAUIATUSHH/'HHH(HHAAHH@HxH+kHHHhHHHHSHHH@HHC HHH@H,HHShH+HHHH;SpHxHShHH+CHHC H)HIELeHH5C HEL#H9 HHHH HHxH+SHHHHPHHHHSHHH@HHC HHH@HHHHHHx[]A\A]A^1DHHH}H0HHShLH) HH HHHHA HHH(&HHtx t&HHH5%&1>HHH@8H@HtHHx@HuAWH IAVL5 AUIATUSHHH4$A H/LDHsTHCPCTHHH(HHAAHH@HxH+kHHHhHHHHSHHH@HHC HHH@H,HHShH+HHHH;SpHxHShHH+CHHC H)HIGLeH HEAE tLeLm1L#LHHHHH H$HxH+SHHHPHHHHSHHH@HHC HHH@HHHHHHxCP;CT~HHH1[]A\A]A^A_HLHHHH=HHHHH4$HWHH< HHHHA HHH(HHShhHHtx t&HHH5B#1[HHH@8H@HtHHx@HuAVIAUATIUHSLjHMIEH1HHHHp0HHHHH(HHAAHH@HxH+]HHHXHHHHUHHH@HHE HHH@L$IHUhLeHLHHH;UpHxHUhpHH+EHHE H)HI\$H5Ml$1HH]H]L HHH HcHxH+]HHHHXHHHHUHHH@HHE HHH@HHHEHHHx []LA\A]A^@H]L#HH]eI$Hx@L []LA\A]A^ùHHHIHHoI HEHHHA HHH(HHUhH^LHLHHI$L H@@C H LDHHtx t&HHH5, 1EHHH@8H@HtHHx@Huf.H\$Ll$ILt$L|$HHl$Ld$HHHD$PHL$IDD$ EH$HWhH/HH;WpHWhHH+CHHC IcH)HH9IELeHAHE~3Iu HAE(xfHcHLeHHHEA~ H$II$L#T$ HHt$H\$Hl$ Ld$(Ll$0Lt$8L|$@HHuLeHuHHDHHB@A}puIcu(HLeHHHEaHShLH HHfff.AUIATIUSHHH/%HsTHCPCTHHH(HsHAE1AALHHH@HxH+kHHHhHHHHSHHH@HHC HHH@HHLHHHH  H$HxH1HHH HHxH+SHHHPHHHHSHHH@HHC HHH@HHHHHHxCP;CT~HHH[]A\A]HH2HHFtHhIHHh6 H HHHA HHH(]HHtx t&HHH5H1aHHH@8H@HtHHx@HufDAUIATIUSHHH/HHH(H!HAAAALHHH@HxH+kHHHhHHHHSHHH@HHC HHH@HHLHHHH ]L$$HxVHHHH HHxH+SHHHHPHHHHSHHH@HHC HHH@HHHHHHxH1[]A\A]ú H.HHHA HHH(HHtx t&H HH5l1HHH@8H@HtHHx@Huf.AVIAUIATIUSHHH/HsTHCPCTHHH(H\HAE1AALHHH@HxH+kHHHhHHHHSHHH@HHC HHH@HHLHHHLH$HxbHHHH HHxH+SHHHPHHHHSHHH@HHC HHH@HHHHHHxCP;CT~HHH1[]A\A]A^fHLHHHHcD HHHHA HHH(tHHtx t&H HH5:1SHHH@8H@HtHHx@HuH @H @HHz tJH 1Hfffff.H\$Hl$HHHHHxHtFt!HPHpHH\H\$Hl$1HfHHfffff.Ld$Ll$1H\$Hl$H(HIIHXHHt%Hf{ x_ LHD$ H$Ld$Hat$ HeHL1HLHHHHH5HH`Lcd$ HHJH42HHxML8tAEL(Ae LHH$H HHJE1H AE < tt_D$ SAEM,$Mt LHH$(H$01L$8L$@L$HL$PHX%=H$LHHH=H0D$ gt$ H H8IHq FHH@H$HL0A>_H=BL7LM<$D$ MI$D$ H!H*t$ HH HIUHBH$HDH qHLH1SH=HtI;tD:HHD$ H*t$ HHl D$ t$ 1HF qH= Lu]L H$"_ I`'H*HcLA11LHBH5LH1fff.H\$Hl$HLd$Hz(HtQHr H~*HL$HxJ Ht7HHH$Hl$1Ld$HHr FtLHH0롉HHtHH HHwHHxtEI,e 땹"1. HIHHHfH1HAVAUIATUSHHtuH1[]A\A]A^Lt$ KLH0HLHpHL LHHLHHLHSHHtHLH-@uHLH"H1HG IfSz(HtHr H1[1@Hr FtHH0ܹ"1 Hffff.Ld$Ll$IH\$Hl$ILt$L|$HdH%(H$1FHHBH$HAT$(HcƒH$Il$ HHLAtAd$HtH$1H$dH3%(pH$H$L$L$L$L$HDH$"H@fDIt$ FHH@H$HH(/H=HBHH$H9.L$H$HD$ MHT$HD$4$/u]HT$LuD$8u@HH9HT$HA:ILLH$Le$HvAL$H$"LHEXUHSHHHHHtxHPPHHHHHHt]G(xV;APQHcHtCHAt7HD…~A_tHq0HtHcHHKHcHHmH1[]@AU1ATIUHSHTHLAHEHX(Ht,HCHtH@Ht HHLHHuIcLpH1[]A\A]AVIAUIATUSHHh(Ht fDLeMtI|$u4HmHuA} tH5L1IE[h]A\A]A^L1Ҿ|LÉLHLLAT$HcL[]A\A]A^Hl$Ll$HH\$Ld$ILt$H(HHx@u#H$Hl$Ld$Ll$Lt$ H(fDyHItHPHHEHpH~ E1LHt]HHtUI H9tICHELHpHHELHXHHEH@@It$Ad$ID$:IT$H5*L1E1LHtHXrHUJ@HZHx6HR8HLHtFHI H9t7HCBf{ Lr8x7HHHIcH9}1HBHHEH5*LHP81HLHUHcfffff.Hl$Ld$HLl$H\$ILt$H(HIHx@HRHHpH~ E11GHHHH H9tFI$HHpHvI$CHHXHI$H@@IuRAeIEDHLH]H$Hl$1Ld$Ll$Lt$ H(HXHHuDH HXHLp8f{ x@HHPIcH9|H I$HP8HH'fE11HtHX HD HcfDH\$Hl$HHHrHHtCf~ x2HHHH`HHHcPDHH\$Hl$1HHcˋU %H E tHƐAVIAUIATUSHHHj(HtfLeMtI|$uwHmHuAM u&HBHD$D$H[]A\A]A^I`@%úHBHD$H2HHT$LHD$L1ҾLÉLJHLLAT$HcLHD$ D$H[]A\A]A^HT$"LLJHT$L"LHcfAU1IATUHSH4LHIELcHP(HtEDBHJHtBHE8BD HtHAHtLHHHuLH5H1[]A\A]H\$Hl$HHHHHx@uBHpHHtHH9HHpHF @uH\$Hl$1HH+HfDAW1AVIAUATUHSH HAtEHLe HDLHEHX(IcH$HIIH\$D$ L9HtpCHCu9Ht4HHt,HHLHEHx(tCCtIF8H$Dt$ HuHEL`(M9tH\$LD$ HuH4$L}t#H1[]A\A]A^A_H\$MD$ 멋U %H E tHLMff.AWAVAUIATUHSHLB A8~AH{HcHH< t< t< t< Dt< tMAoLLcJ4I1ɺ 1HNIcׁALL0MtLAl AlH1[]A\A]A^A_H HH@8H@HHxI HLHH@8H@H8HƹHI LHH@8H@HHqH HH@8HXHVF HHxLH*H HH@8H@HHxpI HLHH@8H@HvHƹHCpI LHH@8H@HHCxHHt>E IDžF7 H@AkF HxAlA Al6FH@A%AH FHH@8H@H;HH@HC`FHxAlA /AltRHyH FHH@8H@HOHH@HChI HH@8H@HHxh/H@h"FHHBHD$HH< t< t< t< t< t1ɺ 1HE1E1A 5< #< "< < < HDAH*H E %=HUHBHD$H2A@ HT$H9IHH8IA@ HHRHH=\ƹ 1^AxXHX wIDžX E AHL&IX FH@AH tFH@AXHHtE IDž*F u`1۩VF %=MHHBHD$HI(AxIP FHEXFH@AH!HLIpH FHH@8H@H<HH@HCXAHHtHLIFdHxAlA AlFbHH@IpFH@AhILHX+1E IXfAxIPOHFTH@AO AOFH@A(H8HFIH@ AL AoLcJ<iIRHT$EMcaPH=LHfIHHLAV 2HH"x HH@8HH@HHHH@HCPHT$HLHpH=HI`HtL-E IDž`vIH8AI HHD$A@ H|$IH)H8HH胻A IHHA9HHp@Ht L6HHLfD |1҅A AtA; @ A=A VA 1A AtA;  A3@hfDHuHLIdA 1A Aw9ȺjA A; TG;fD+HT$"H D膹A 1A AA; A; HLIHLm[SH=8 HDAO4EAtH HLIDž 3@HLI`HLIH1LHUHBHD$LH|$Ht!111BH % H9uu*IDž MHT$"HLIHEHtKuGAOIDž A A; A; IHu:HLIIHH@AO@HtH tHLDHH=ƹ 1fDLl$Lt$IH\$Hl$ILd$L|$H8Hz ?~LGOHHcHIH&HPPIHHH@HL`0HMHALcAƅLLLL'AE_ Af AtTE^IHX(AƅIHHB(AtA IH@(Ht HIHX(H\$Hl$1Ld$Ll$ Lt$(L|$0H8I HHq8HFHHHPpH LL5IHtLI@(HLL*;HLLۿ+AFtGI>HWLHJ t)AH< t< t< t < t< u@HHu1HWBAN AOLH=9 L/ALLIpL蘲IHsx iHH@8HYH@HLHLHPPM8IHtrHPPIHHH@HtWHŋ@XtM;EPHHcHE t9HEt-Hu0HHcL$)'IXH I LLAH L蟱IcL英v (HLL*;HDLLɽ+AF1I>HWLHJ DAH< t< t< t < t < HHuAL LܰI(LǰI8L~AhL蚰 A:m A:@\A:@KA:@:IHwkDA( V %H F LiI HH@8H@HHLHP`ʯA L趯A HW1LLk11ruHcHuD$0| HT$ D@DD$L(HIIIhMHI(1҃"H=ZH11HH(HѠH(HHHHE@ f=BHf=Cf=AD$0 HT$ D@DD$L(HIIIHIIi1҃"H=H1_HH(HѠ@H(H@H8H8HE@ f=Ef=Ff=D"AH(HѠH(HHcHHE@ f=Pf=Qsf=OD$0HT$ D@DD$L(HIIIHI1҃"H=aH1!HqH(HѠH(HHHHE@ f=Uf=V^f=TD$04HT$ D@DD$L(HIIIHIYt71҃"H=TH1SHH(HH(H}H(HjH(HWDD$A0DHT$ ADD$A0L"DHT$ ADD$H(HLH8L@HLHHt'1҃"H=HL1gHH(HHH(H@H8HHHt1҃"gH=1HQH(HHHHǠ11҃"H="1誻HfD$0HT$ D@DD$L(IIII71҃"H=1.H~fDDD$A0DHT$ ADD$A0D"DHT$ ADD$L(DMIIIhIH$(u1҃"H=D1|H@H(HHHH踫1҃"H=11!HqD$04HT$ D@DD$L(IIII蠡1҃"H=1觹HL(I@I8IHIIPЮt&1҃"H=@1MHDH(HHH(HHHH51҃"DH=-1޸H.fDD$0HT$ D@DD$L(IIIIw.1҃"H=1^HfDL(IIIIhI葱1҃"`H=-1HJfDD$A0DHT$ ADD$A0D"DHT$ A@D$H(HDH8L@HLHH1҃"H=HD1UHD$0{HT$ D@DD$L(HI@I8IMPHIH˸1҃":H=H1ѶH!DD$A0DHT$ ADD$A0L*DHT$ ADD$A0L"DHT$ ADD$H(DLL@L8HPHHHHT$H$輪1҃"kH=LL1HMHT$HBHD$/HT$HBHD$LHT$HBHD$OHT$HBHD$HT$HBHD$HT$HBHD$ HT$HBHD$HT$HBHD${HT$HBHD$JHT$HBHD$vHT$HBHD$EHT$HBHD$HT$HBHD$GHT$HBHD$8HT$HBHD$HT$HBHD$HT$HBHD$fSH(HH8MH(Hp:H(H'H(HH(H8H(HXH(HH(HH(HH(H8H(HH(H |H(H8iH(HPVH(H`CH([6fDATSHH,HH(=L(I|$ I$H(HǀpL(I$I$L(I$I$L(I$@I$8L(I$`I$XL(I$rI$L(I$VI$L(I$:I$L(I$@I$8L(I$I$L(I$(I$ L(I$@I$8L(I$XI$PH(HhH`H[A\ÐH HH fffff.HHp(HtFA<w ~Pt H6Hufff.ATIUSHHuHH{H+HLqHu[]IDŽ$A\ff.SH HtH HH [ÿHHHHHHH9H vHHH9HRuHHfffff.H\$HcHl$H{ Ld$Ll$Lt$L|$H8EAAIHxHHL$DeDuDl+ ADtLHH\$Hl$Ld$Ll$ Lt$(L|$0H8ff.AWHcAVAUIATUSHL&H9ID$HD$tH[]A\A]A^A_D|$AMcL9~!9t!!9uHcH9'I<$RH<Aƅ $HHHD$I4$ILH A?I4$DLI<Aƅ D)1HcHhUI|$HcID$HD$I$ EDT$IE1AI0HtXL)HD)HHcI HHHthH1H7HtHF#D9uHH7HufI8u Il$@AE9IHcH9Aƅ uID$I<$HH׾H1HHD$eAWIAVAUAATEUHSH(HHT$D$'D&D$IHL0DA#FLMHSIHt-H9kuDH9kIHHېuLu#D$t H|$H([]A\A]A^A_D$HVL;HMHLMLLDHHDL$1mMHCHHHCuHII:H{~HLIn\D$Ht$AHT$HL$'IcD$'HD$H1|$'Dl$H9T$D$ HT$D$D$D$IHIcMH$H3HIHLCE9 uE9huI@H;D$L$tH|$M9HLuCD ;D$uInE111@AȉH1E1E1eDHl$Ld$HLl$H\$H(f~ IIx(I\$HHl$H\$Ld$Ll$ H(P&HtL HID$PHHtAHHLHHfff.SHvH3HH[wSHHHVBtHVH[HHHrFt&HH@HD$HBHHHD$HH[HT$*HDH\$Hl$HLd$HHHIHrHt~ tLHԎH{tjAD$ u$fHHH$Hl$Ld$H>HH3֐HH@8P@uHx8tI$HxPtPHwHTH{[H$Hl$Ld$HfDH\$Hl$HHHtJH.HU@Ht F @u%E8HE@HHl$H\$H@H%F RH5E1肾fAWAVIAUATIUSHHL(MtvHDx1HH@HH@IUHLLHtHHuA9| HcI\I$LLL(H[]A\A]A^A_鋋H[]A\A]A^A_fff.AWfWAVAUATUHSHH<$HXB D,EHBHD$HD$HcD$L,fLHHHL=*AHE1HHtwL9zuHEHt HHEH9P@tpH<$HAuHEfWX@ H,H)PHUB H,H9BtKHB H[]A\A]A^A_HD$ID$9D$xHU=M @HEHhoe ffff.AWfWIAVIAUATUSH(L.IEHD$Dd$AC$T$AE Xf.zt AFAƇ Hc|$H舷HHIcIuHH,H肪A?I}?AƇ T$H1HD)HcH̋DL$I]AEIcIED$IH11L`I Ht\ALE11 HHHHH:tfH HHtHAD!D9uHAHHuI;taD9AL9LHHL9tOIIuLh$IEI}DKH$IUH([]A\A]A^A_Im똃~AFuM9HtAYHcH,H1HHH$蝊AF % D$IEAF % AF IEaHD$ D$HT$ H*HLULuA0EJIrEt'HE1AH Љ1E9uߍɉ 1‰D$D$uXE"HEHcPL AEH$D!HHHt`MHUH(LhD$D$9D$HD$ 9IcDDED LHuHLPH]|IEHAƇ H([]A\A]A^A_LLKfDAWAIAVAUATAUSHHt$DD$D$HHL0A#FL,M.I]HtyLc HHLCA9(uE9`uI@H;D$MtH|$M9HLuCD ;D$uHCD$t H|$ιHCH[]A\A]A^A_DD$Ht$HÉDL\HCHCIEHI]IFIFLDD$Ht$HÉDLHCHCIEHI]IFHI;FIFCIHL;/fDH\$Hl$1Ld$H(IHD$x*HLAZH\$Hl$Ld$ H(fDHL$D$HcHH$eH1|$$H9t HfDH\$Hl$HLd$HHHItVHrHtFH*HCxt HLHH$Hl$Ld$H鐇HpHtFHH$Hl$Ld$HfDAWAAVIAUATIUSHHf~ H.Lm@H}MtRAI]uCHېtBH*HHt1H9CtAD$ @JH]@HH[]A\A]A^A_HuՋM8H}9M8aHuDHcHuHԔ*H9UD$[1H|$0HT$@"L衳HD$ H菬H|$01H$HD$(f@ oH$DL$HLD$@HL$ H|$0Dd$HT$L$HHt$(H|$0PAHH|$0MIH|$0LEHHt$(H|$0LAHHT$0HH<HEHHEHE L@HEHXLeH|$0膒I$@PTI$HhHD$GH|$ N8D$D$WqIEAXE AE H nI}HHIU1HHHHyHT$(HHHt$(H|$0PHH|$0ǖH|$0H躖MHH|$0LH|$0HTHt$(H|$0HAH艊D$ZH|$0pHiH|$0HHYHdC HHJHPHHl$(HD$(@ -HT$@Ht$ H|$0膮|$WHH |$WHT$@Ht$ H|$0MH ILHH|$ 1U?HHx„:1HD$(@ jfDD$@HL$ H$Ht$(H|$0&H|$ |$Wt HT$@Ht$ H|$0臭H :DD$@HL$ HHt$(H|$0ψAHfWf.@  HT$ HHT$0H:|$WHT$ R T$<|$@HD$(0t#LH Љ1uɉ 1‰D$HT$0AʼnD$8D#BL4L2IHLT$@LEMcHHHHLCE9 uE9HuI@L9tM9HLLuCD8 3D$8uHCL%*L9D$<tHt @AE1$HD$ @OHHEI>HT$0H9Z@Ht$ H|$(HtHT$0HBHHHBu0HD$ ` "@D$<MAE1HXL[]A\A]A^A_E|$@HT$( ^LH Љ1u6LD$@Ht$ EH|$(ALHDd$HD$$HL\${LxMnfAG |$UVH|$(pL&HH|$(pL wfDH|$(HT$@HL$WLL\$tnDHD|$WL\$ADDI9tAuZAHD$ IہH H|$(HT$@"HTIRHD@(DȃD$WBL$LE1@H|$(LuL\$HsH|$(pLcHT$0XB B HsH|$({ILcZL諢HcHqHDD jID$HsLHVrHt@ID$[HcHqHDD lID$諔ID$IHCLHHprHt@IE댐UHHSHAHHqHADNHIcH9~@HcL E1LHHAL)E)INHIHAHH9|EAALL HHfDIAI9tHt BHLHEuL+A8IEt6A@L HH HHA8LHAuHaHHHH[]LDSFHt H@~[|DH5JH1ݗffff.f~ x HH@Ðkff.H\$Ld$HLl$Hl$ILt$H(HAf~ xZEHIcH;PHHI H91HH$Hl$Ld$Ll$Lt$ H(DP薎HH}LrEIHtpHEHHHُE1LHHHp0Ht:HHH@8H0Ht(F ?HHx„u!f{ ^H@Ay11ELHLwpLL轍HHLL覆1MAF tUIHtHJHHtH80f{ H@AQ1yuEIfWf.@  KDHLHjIHxHHHPHHH80HLВMHL轒tGHfWf.@  `LL芗HLLHnL_ DLl$Lt$IH\$Hl$ILd$H(H|F fIUHzxZBHt:HBH t1HM HH3LL#H[cuIUH H+J8HHu%HBH$Hl$Ld$Ll$Lt$ H(HHBIUHB8HIUg]H5c|*1謓fff.H\$Hl$HLd$Ll$HLt$H(Ht%Ff~ HEH@H?t'L LH$Hl$Ld$Ll$Lt$ H(HE@HHL"tH HHEHHEHhHEHhE @tHHDPVHIHL#HH(HHAAHH@HxL+cHIL`HHHHSHHH@HHC HHH@L$IHShL#HHHH;SpHxHShSLH+CHHC L)HIFMl$HID$HL+sH51HL [u~H/yHHHH H+HxH+SHHHPHHHHSHHH@HHC HHH@HHHHHHxHHH0HHpIeLLH|I f} HH諎HH HHkH舗HSh@ HɖHHHA HHH(H54y*1}HHtx t&HSHH51bHtHH@8H@HtHHx@HuH\$Hl$HLd$Ll$HLt$H(Ht!Ff~ xwHEH@H?t'L LH$Hl$Ld$Ll$Lt$ H(HuH HNHHHL HHNE @tHH藂DPHIHL#HH(HHAAHH@HxL+cHIL`HHHHSHHH@HHC HHH@L$IHShL#HHHH;SpHxHShSLH+CHHC L)HIFMl$HID$HL+H5|1HL u~HuHHHH H+HxH+SHHHPHHHHSHHH@HHC HHH@HHHHHHx HHH0HHtmIeLLHyI f} HH;HH谔HHgHHSh@ HYHHHA HHH(H5u*1 HHtx t&HHH51^H5qHH@8H@HtHHx@HuH\$Ld$1HI HLHtHH@8HHHHHBHBHLd$H\$Hfff.AUATA1UHSHH HHIstAA|$HcHXHIEAHX8tlIcHHHUzIEAL$Hcу@HIEHIEHPIEHPt 1HEH` D9uHL[]A\A]H=tt*1荄ffff.AWIAVAUA1ATUHSH2~ HHIsAtd|tIc1HyIIL`8IL AEIHHBIHBD1H}IIHƹHH:tA9HL[]A\A]A^A_H=s*1ŃDHl$Ll$HLt$H\$ILd$L|$H8f~ AI]McHKI9H{8H3H9HCHPL]HH@8H@HtHHx@HuAUIATIUSHHf~ I$BHt:HBt1HHI$HLH4HGuI$Hz8yI$H@8I$HI$H@H@I$Hp@HtfF u H[]A\A]ú#LwoHtH@I$LHp@GI$H@@H[]A\A]úP9oHLLeff.H\$Ld$HLl$Hl$ILt$H(HIFbf~ PnHIHH+HH(HHAAHH@HxH+kHHHhHHHHSHHH@HHC HHH@H,HHShH+HHHH;SpHxHSh>HH+CHHC H)HIFH$HEHELmHHwH5oHgH]HHHH H3HxH+SHHHPHHHHSHHH@HHC HHH@HHHHHHxH$Hl$Ld$Ll$Lt$ H(I$LLHHl$H$Ld$Ll$PLt$ H(_HHH`HH |HShLHu|HHZO H3{HHHA HHH(H5]*1tHHtx t&HuHH5c1|FHYHH@8H@HtHHx@Hu뼐H\$Hl$Ld$Ll$H(HIHAtsf~ xqEHUIcH;BNHHI$ HH9t7BHtHt)y DtH\$Hl$Ld$Ll$ H(DH01ӐPfkHIEH@HHHlE1LHHHp0^Ht:HHH@8H0Ht(F HHx„u$f} PHE@AQfDL` HHL[E1HHLTH@PtHHXHHHHL1eDHLH\$Hl$HLd$Ll$ H(u\HHUHPHkH>H80,DHLjHE2ffDthHfWf.@  f} xZHE@A1HLYyLH>LBHLoLt|HLo@U11HSHn_HtHC uu,H5 kH1qfDHH?C tԾHvuHHx uH[]HjHHe[uHjH=Zff.H\$Ld$HLl$IHIQLHHgHHLH߹^H$HLd$Ll$Hfffff.SH7QHH[>ff.H\$Hl$Ld$Ll$HH(IIP1HALHdHt HpF u1H\$Hl$Ld$Ll$ H(HLHufffff.H\$Hl$Ld$HH(IpP1HALH]dHt HpHH\$Hl$Ld$ H(AD$t!I$HBHD$HH5ihH1oHT$LHwHDH\$Ld$HLl$AHIDpIfDHL6C *HEH@8HtH@Ht@ HtHE1Hh0H|$t+HD$1LHLD\HtH@x oHHLHDL9Hx HH\$(Hl$0HLd$8Ll$@Lt$HL|$PHXLKHT$"HLKoIMC H `uH dH5dLL1f@HH@8HP8jALL1HFfD:t"Ht('HHHuHH:uHXHHIM)ILD$MT$1LLdHL$H5b`MHL1fHH@8HP8H}@@A;$PdC AB@<=wC tI$`@%B<vB<v _T$1LLdHHHL1OZI$L$E1ILLB1LL+?HH\x RHH@8HBH@H5HID$hHLHcHI\$lLH>HCLHtHELxPMLFHD$cLLLLL|\H=|LHI$`Lx0H5^LL12dHL$H5^MHL1L<$AdH5L1cfffff.Hl$H\$HLd$Ll$H8HGL'Lh(MtmIEH@D$HE L)HLLH OIHT$LHI\$qID$HEH]H\$Hl$ Ld$(HLl$0H8HPHGL,f.H\$Hl$HH/HHuFt HHx t 1HHEHCH+H\$Hl$HHffffff.H\$Hl$Ld$HF IH Ѓt#HUHzHBHEH@@` uH]LZHE @E tHLH$Hl$Ld$HI $HUA DeB HH\^D$I4$FH@^I4$F %=QID$H6H HH H9H9>JH1H H H HyH9~)HUH I$HCL#Hxfff.Hl$H\$HLd$Ll$Lt$H(HGL/x$fHNHcHNHPHHVHcBHHBH]H`HcBHHE`HEhB E0BHELr(@$HBHHJHHPD0ƅ<tltILH?HELmH$Hl$Ld$Ll$HLt$ H(HCHƅHI9rH3F uƅLcM9sXHE L)H|jH I$MpƅIaHHcBHJHHPHHD(rIuF tAHsƅbLH+]L1LHBHHcL$LegHCHCaH\$Ld$HHl$Ll$H(HGL/A@$t<At(HBHHJHHPDd0fHhXHsTH\,CPHCTE;EEHHcAHHPLHHQH+CHBH`HBHChH+C`HBC0B BHDb0HB(HCL+Hl$H\$Ld$HLl$ H(E18H`YE[Hl$H\$HLd$Ll$Lt$L|$HxHHOL Q$MHH$D$AT$ ƒ  +@HP tWL LCtG>A LHHQHHt&@ H9tHHIHH0H92uII$L(A} 5H5SH1'H\$HHl$PLd$XLl$`Lt$hL|$pHxà sHH I9 {WI$H0HHE@%HH5S=*H RH1*'iI$H@8P@u Lh8MuuHL$8HT$0E1LHTHIuUHUHuTH)EPETHD$8E1HHHHHHP@HpPdZHiHH@8Lh8MH`UHuTHT)EPETIUHzHHMA$D$ t.D$ t!D$ tH?D$ HMIUA%t#HHH@8Hx8t )HzPHEhD8H$HE|$u#HHH@8Lp ID`AHt(H`H;HHDžH`IELHPPD$ u;HuAGHMHcHH)HH9tH HHHUHUH9HEHjfDHE H+$IcHH9EIH<$HHH0H@H$H]L0HLEhcIEHP`uPH2JHN@:u$J:AuJ:Au J:AtHF8L;h8oA|$ NLHXLHHH:HH IEHxPtH`HHHH@8Lh8MtIUHzPHz@H5nOH1#HzPSHB`HHD$8HH@8Hp8L9IMHHH,HHI@AF ЃtLH8AF  AF ILhL"1HXHHEhHHcHHHT$ HuHHT$ HEhIEL`xHEH07$HC;CsCHHcAHHPHHYHD$ H+EHCH`HCHEhH+E`HCE0C CHHC(D$ Lk8C0IEH@pHC`T$ShIEHxpHE@%CiIEH@pIEH@pH~LHOBu@F;EDjHcHHHE8HHcHHE8!M@IEI$H@pHHHHHHHE|$*L0I@HoH$H+D$ IHIIcHH@8H@ HCPHHH@8AFLp HLsXHCpIHqHFH9rHy8HH9tH)HHHAIH8IHAHH9>E`EIcHt$(HqML<L BIHB8IHIH\$ H9LHH&!HZHH:HID$XH(ID$XH@HID$pHHID$XHHZHH:HID$XH(ID$XH@HID$pHHID$XHLH6LH"HHHH@8Hp HHHP8ID$PHB It$XHBHHH+B8HHBID$XHHB8HID$XHH@HHHH@8Hp HHHP8ID$PHB It$XHBHu}HH+B8HHBID$XHHB8HID$XHH@HZH)H19HID$XH?'ID$XH@HID$pHHID$XH1HZHH8HID$XH&ID$XH@HID$pHHID$XH^H\$Hl$HLd$Ll$Lt$L|$H8HL/NHcHNHPL$LfIcD$HID$H_H`IcD$HHG`HGhAD$ G0AD$AT$0HM|$(@Ƈu_LsM9ID$8HHHxpMmAE AELkGP;GT+LHfLmH&HhA|$hIt$8HtzIT$`HHHPpuiLH:HH\$Hl$Ld$Ll$ Lt$(L|$0H8+H*HƅHI9jH3F ufDLHG L)HH IM&HHHH@8Hp HHHP8ID$PHB It$XHBHuqHH+B8HHBID$XHHB8HID$XHH@LH+_L1LW)HHcL4LuPIuF t~I6HHZH H5HID$XH$ID$XH@HID$pHHID$XHOAEGP;GT=LH)LHCH H(HrLk@fffff.USHHH/HuHtKF u'tPHHx„t+HCH+HH[]HHtHPHwHuBHEHHCH@0H[]étHfWf.@  (?H80fDUSHHHH0HhHtOF u.tOHHxt,HCH+H@0H[]HHtHPHwHu;HCH+HH[]étHfWf.@  s>H80USHHH/HuHtRF u1tRHHx„u2HEHHCH@0H[]DHHtHPHwHu=HCH+HH[]étHfWf.@  ƒ=H80낐ATUSHHH0HhHtJF HHxtHKhH{HcQHcHHQHChH߃"HChHcHHCH9HCA@$tE0tAt H%AH!HChHPHShHHHShHB+JHChHcBHHShH,HkEtSA:H+HC[]A\HfDHH4HPHHH80HCHHPHCL$HcL.AD$ @HC H)H~~HLesH:HH!HChHcHCHЁb HHH@8HH+HC[]A\H@0étHHfWf.@  4HHHT$HgLH+Iv;HcHlfffff.SHHƇHcPHHHHBHcDHHGHGP;GT&HcS0HC(t;s@}HHC[H@fAWAVAUATIUSHHGHH$HPPHH$HЋW@HLp$HD$XAX@t HHHD$XH$B$@H HHL$HHT$HB %=HL$HA k< SHD$HI$@HHH@H$HL(HL$HA DŽ$t< $H$@` A$Ƅ$HD$HAƄ$L@ tI$`@%Af\AƄ$H$I$H$Ƅ$HDŽ$HL$@HD$8HT$PH$HT$0DHD$HP uE1A$Rt DADDEHD$P@X0OE\0MH$\ \$|AXÃH|$X?HD$H@ t#I$`@%u$8HL$XAHH@H$HHHD$hHD$XƄ$@ tI$`@%Ѓ$H|$hH$9EHu AE]$tHT$HB }HL$HAE1D|$HD$MLHLH $HL$`A$$p HT$HB %=5HH@H$HL(DŽ$MH$ILHL$`E_DELEu)I$HtHQPI$HHHhHL$P}PHL$HQ %= H5*L1H[]A\A]A^A_I$HH@8HHD$HID$ H)HHH޹L'HHD$hƄ$HL$HDE1ɃHD$MD$LHH $LHL$`A$N$LLLL)N9HL$HH$A tI$`@%H|$hHT$PI$AD$xD$H$H$LLL)LH$Lb ߺH$+H$H$L"HEH$HcHN4(D$x@$HD$HM9AHD$MALHL$H$LHL$`A$T$x9T$|dE^t,H}0L9t#HL$`LLL)IL4H)HLHD$`HE$HcN<(tH$@ H$LAL)LL& HT$8Ht$HL9IHLL%HM$H$ELD$`LHT$HHLA$HII$I$ HB$HZA;D$@ID$I$HHt$@L\HT$PBX%A$fHT$0Ht$X"L8HD$hLH9D$XH$tHT$XHLI$`H#H$L H$BHH@H$HHHD$hƄ$A$Ƀ$PX$$AN\AƄ$HT$hH$AL@ 9HL H5.L1:pHT$0H$"L7HD$h;Ht$HH$BL7IH$L$%HT$HB H$L)t$`H$LHL$`L H$La H=H$H$L HD$HHHzt*@ H:H+z/HT$Hb HL$HHH$E1HHHHD$HHHH@HBHL$HHH$HH@HBA tI$`@%ЃAH$LHHH$t AƄ$Hct$xI$LHk"LHHCHL$HQ H A $Dt $Q $t AƄ$HT$HB @A$tA$$A;L$@ID$I,$HLMH$H I$`@%L)t$`H$AHL$`LL_*LLLL)2LHH$HL-LJI $H$EDM$A@A;@7A@I$LHcBH4H4pHHrFD$|D~F $^V$Ln NH$HF(HT$HLv8Ln@HV0HL$`HHFPHnXHNHHPDH$I$ID$H@8H59*L1IH:,HD$HHHt$HL#HL$PHD$HI$` Lt$pDŽ$HEHcHEHcIlMtHD$`L)H9H$HD$`D)~HcHLHHEHT$HL)HHh$t AƄ$I$I$ HjHBHT$HB %h B $t AƄ$HL$HA @A$tA$%$t HD$HH $A;T$@LVHt$hH|$pH$HD$p$HT$HMHEHL$`HLHcH$D$HD$MtI9LAAA$L$|9$HEHcI\D)tL;t$pLctH|$pLL]L|$pH$HR1L)t$`LLHT$`=/LHRH$ILLD$(X,LD$(A@L;t$pt4HL$HT$`HD$pH1D)HcʃHcH+HHFH|$pL$t AƄ$I$Hc$LHkLHHCI,$HLI,$AE)u~H$Ht\Ht$HLLH)H-H$Ht$hHcHt$HLFHt$hHH$Ht$HLL"LH+$Ht$HIcLHH)ITH1BHAHD9uH$HHt$hHffff.Ld$H\$IHl$Ll$Lt$L|$HXHWHB$@I$P LkLHCH+IHD$FH6ELLAAv#HHmID$I$@$@Hku AE LLAE @`LkID$I,$HLI$P HRHGHsL,NH+HIH\$E PHEH@HD$ HEL8D$E tI$`@%D$I9H1M9vAF9IH@HD$IHAF tI$`@%HL$LLAe ߺ8T$t:@ 1HLCHH@HD$ HL8HL$ E1LLLAE @utHD$L(I$ID$HH\$(Hl$0Ld$8Ll$@Lt$HL|$PHXËE  @HT$ "HL;-ILL|HS*HT$"LL,H1LL#AE RAE mHIEH@HD$AF tI$`@%ƒI$`@%yAe lM9HT$ LL*LH)@HHH@HD$ HL8HL$LLAM 1HT$ "HL+I"HT$ LL)LHHH+LsE HT$ "HL+IgLLVLLfHT$ LL\+H31LL3 AE vf.Hl$H\$HHHH3~ wsF %=t'HLH3F @uGHEH\$Hl$HHHHHQH9tHBHAH` H3F @tHtfH5 *H\$1Hl$H@Hl$H\$HLd$Ll$Lt$L|$HHL/HG L)HHHcPH H JHHX<t4H5 H1H\$Hl$ Ld$(Ll$0Lt$8L|$@HHHS`H$Ht%=eHH@8H$LAV LcxM HD$AF L=2tIH@HD$IL8AD$ I$HT$H9PH$HHH#CHLH}H$HHHI$LH8\)1LH7IEH IUHEHEHHE@%tiHH;ifIEH IUHEHEHpLL I!HChHHH$HH$L9xLf6IH@L9~fAF I@HtHHHHHH_DJE-b L9xtH H9GH$HH0tBH$HHHH;H$L HI#D$HHFHHH$LHH.YfuwIBHunHHHH!LHHLHOHHT$"LH&IbLH HP1HLH HtHHHH HcCKLcxMtA|$LHD1H IHHHCxCI$E1E1y1LH@Py#&I$AFLpHI$HHB8I$LH@@(HFHHHH$H0I$HHpHH$H5HH1BfHl$H\$HLd$Ll$Lt$L|$HhHL LhHHD$ HG@$ P%1D$AD$ AA!%=E1AM  tl @HD$ HL$ H HHQHEHEHH\$8Hl$@Ld$HLl$PLt$XL|$`HhHEfP%D$gE1ɄDEELLH!DL$E1DL$HPHLEDT$EtZMI6H H9HUB%Cƒ`t@HGI63fI$HxDpMH tI6F IHD$ HL$ HHqHEHEH/EELLH!É* E1I3ZHEP%D$:EH5*LH1rfELHbHu~PLHMHt^H@HHHHH@0HHD$t:HJ HHMHtHt$HH/Hu A 1LLH?DHHH5H1H HHHeHLH@PyE1IHE1yHH7"LH HAELhHHH@@HD$ HT$ HHZHEHEH IEHxPt~ t{EuCAD$tTI$H@HD$0I$H0H\$0HLHHI6LLLHI6HT$0L"H\!HR$HfI6_LH# HHSHWhHHH;WpHWhtHH+CHHC[H@[HShDAWAVAUATIUSHhHHD$PHOq$@@HHHD$PHT$0I$Ht x )E1I D$HfL$.t&D$HtD$Ht LD$HMfA~ ILx8Mf|$.Hl$PD$HHT$0B <HT$0HH@HHD$8u Bf|$.Hl$0HD$@D$LHL$`I$HL$ HD$fHT$PHLI$L$LLHIuA$AƄ$IH@PI E @I4$ID$ H)H~}HVHT$PHnf|$.E |$HHUHJHBH)HPLf LHH#HQHGHHT$0HLHkHLJ IHMHqHI$HHxL)HIL5A:AU3LDSHB<vB<vB< vH=HtHT$LHl$P2fHqHrH]H; Hf|$.t6Dl$HEu,HEHxu!I uI$@ LL[II$L;HII$1L}\$Hubf|$.t5HL$0A `HD$0HL$0P %H A -HD$0I$@ @HL$0HSHT$PHKIuA$AƄ$HD$PI$ID$HHh[]A\A]A^A_L)0HE,LL(HX/PHL$@H+\$@LIt HL$ H)HUHt$`1HBHH9vH1,L|$HD\$HEHH|$8I$LLn;H@PI$HH@8Hp HQLIH7%E1E1L瀠I$HD$$I$H$LHH@8H0JI$HH@8H0F @ILx8 Ht$0PL` PI$L HII$1LMI.D$H?f|$.t0HD$0@ HL$0Q %H A HD$0@ @~HD$PHL$0HT$PH PLLH7HHD$8HD$@D$LHLzHL$0A </Ht$0LHL$0A 1u %=tHt$01LIHT$0HHH@HD$@D$LLf|$.2ID$I$LLH LLf|$.)I$1LLA$HL H LLI1HT$PLHHD$Pf|$.HL$PLLH1HHL$PfHIxIHLPLIT$h1I$(,8HXHPH HL1?HLHLrHL$LLLHHL%HLHL`HLLS=HLHH@8Hp Hl$H\$HLd$Ll$Lt$L|$HLHL/IWPHAW$HL`Ѓ+D$TE@@D$\MuILmAF.IH@H$IHHD$pH|$p{D$kAG`H$uD$ktAWXT$kLd$HƅAF !Ad$\ƅAG`|$TIEH IUHEHEHH$H$L$L$L$L$HĸÐHHH@8L0HE L)HLLHILmAFH$"LHHD$pEL$LEuWHHH|$ tFHWPHHHH@HD$H.H`@%HL$HI\ƅL|$ HT$HH$9BHAOXL$@qHD$HD@PElD$XD$`D$DAV fD$DDD$DHT$ D$DBX0H\$p|$@H\$8H\$pH\$(H\$01H|$HH8HGHcHD$pHD$0HcGHHD$0H9D$8HAGYu4A~ v-IHx(t#gLHCHt@(D$\;E@H@D$THEP$T$lu HE L)HIH IIED$\;E@} HHELmHVHAV IHx(LgH{HH,H(H|$HG\HWH D$Dvt$Xd$XAV D$`D$`HD$0|$`DT$XHD$(T$XfDHL$HQ\0t11AF tH`@%ЉЃ8D$DHD$HL4$DL$XLD$pHL$8D$HT$0Ht$H HT$ HAGXtAO`|$kt HL$HI\H\$HC^9|$T{D$@teA~ IHx(gLH HHHT$HH8t#HBA(H\$HHHS;a|$\;}@IEH IUHEHEHIAV D$DD$XD$`t1L$DD$@;H5H1D$DRDD$DD$DDHH5HL$ AX%EƅH1H\$pLHHH$DL$DLD$8HL$0Ht$HHHD$09H|$HG\R@ut D$DfAF|$kt HT$H B\tƅHL$ HAGXtAO`H\$HC^H|$Hg\HG0D$@HD$pHG0T$0A)HG_HL$HQHHAD$8H\$HD)C@[H|$Ht$@P1ۅ|$lLmHE !D$;L)HIcH9'DEP;EX19D$lD$dTHL$lHcHD$pHcHD$0HD$8H+D$0H9HT$0HHHAF t H`@%tnD$dIL$d9L$lIHIEHT$HHHB4 tHBB tx )VH5OH17Ht$0HHzIEH jgE1E11LH0 gLH@H:D$DHD$HHPH D$D L$@AGYt`A~ IHx(gLHHHH\$HH8t:HCA(HHS;gaH|$HHt HG;t1LmL$DDHLLDH;IAV D$DD$XD$`IKgE1E11LH gLHH&RucHL$HD$0+D$pHAHHQH\$HCXCTCPH{0mrLLHuIDd$(\$8HHt$(D)H|$HO\HG0_@D$0HD)GHHWpIWHHt$0H_HXD)7fffff.H\$Ld$HLl$Hl$Lt$H(HoL7HOHHIOE`It u}HMPHHHH@Ht@DHMPHHLHE1E1rHHPB IFMfHl$Ld$Ll$HHCLt$ H$HH(LHsH\$Hl$HLd$Ll$H(H:IIHti tI9H H1YA} tj1H(I$E1HLHHfAE Iu$ƃH\$Hl$Ld$Ll$ H(@E @ubMuHH H@I$E1HLHHHt HtEfAE tE @tHHtHHI$@HHH@ ff.AWAVAUIATUSHxHHD$pHWhHOHcHHD$ HBHGhHcBHHHGHHD$(HWhHD$ HHD$0HWLJlB$D$Dt'D$DtD$Dt /IUD$DB%@tYHL$ H+L$(IcEPHHTIcEXH9HT$(H9T$ r)HH3HtAƅLHHH9\$ sHL$0H9L$pKL|$(I I I HD$8HD$HD$THD$XHD$`HD$HT$H $ HL$hH9L$H9L$H9 $H; )L9|$ IHt$hLHD$hIHT$hIB @ HD$`HD$ HD$`H9D$pHD$`HT$ AƅHHD$h@ GHT$hIEHT$8Dr A@% t,H@0HP(HD$`H~ fHRufz  Ht$hLHT$ Ht$hLL)HL9|$ A1!fDHt_L9|$ AƅDI7LDeIHt$hHLHIEHtC @tHLQHuHLQHD$hLMHD$HP HƁT$L9|$ Io HHL9t$ AƅH]LHHD$1HUIHtHLLe|$DLut$Ht$h1HLbT$TDT$TT$THt$hE1HLL D\$HEZAD$ @ELLBH:LL>*L;t$ L|$XML9|$ IL|$(HD$8HD$HD$THD$XAltC+&A A Al0t< 4oA A A 1A A|$DADžlDT$DEH|$8HT$ L9r1LH+D$(I HD$0H9D$pHrH0HI7IL9sIEIUHHx[]A\A]A^A_HT$Ht$hLHT$hB @HLaA; 'A A; IEHL$(LHPIEH,H)L$ H|$ HcD$THT$ HHH)xE @HD$(HH(2Ht$hL~Ht$h1L~L9|$ MIL9d$ AƅLIT$HHƹLIl$I$E1Ht$hHLHt HtEHL$hfA tE @tHL)|HT$(HjHL$(HT$ LHt$h?L|$XL|$0wML;d$ uHL$(Ht$hLLՍqLHT$(H9T$ 3WA EA A ިA HL`mH|$Ht6|$Ta|AHc\$THT$XH|$XHH4HH)\$ 6HD$pH+D$0HL$(H#H=)1Ld$L|$IH\$Hl$ALl$Lt$HHHGL7@$I.tE0tAt AU I$P tvIM$ K WfDLA <HLHHt?H M4$H9HHH0HHH;0tuHEH0F H H5L1uDH\$Hl$ Ld$(Ll$0Lt$8L|$@HHʍAD  HEH@HD$HEHIT$B$8B%tZH5)H HL1YIT$B$u|B% z%H5!)L1 HLHHEH@8HX(HID$x%@$tZfDIID$M4$HID$@$u @%%H5)HL1ID$H@$u@%ugAEu({ HL@ @HIID$M4$H.HLU cSLtA)H5"L1HT$HLH;I$LHH5)L1YM7IEM}H HGMP$u@%Ѓ"fA~ {ID`AIE IoIcH$H)HH98fA~ 1E7M D9Ht1ɉLLKHLtH0F tLBHIE@$u @%&H5)HL1L脽AD$ _5IEP$Ht^ttTLIMfA~ HQIEHI@HcHLoC @IIEM}HwE:IH$H}H0HHIEL<+M}H@LHH@8Lp MaIEx%"P$@%LWIE@$H5L1L'H$HP HLHJLLIEP$0HHDLHLL1D`|HT$LLHHH(IEP$)Lf|IE@$XtTIGIEIEH A1ҹ HLHHaHT$1HL^I IIEM}HjHIE@$iM'IEM}H+IE@$7I/IEM}HHL虸IIEIEVH5eL1HLHH@8Lp HLLL}LLwLDLiLH=h)1 HLLHH|ff.Hl$Ld$HL|$H\$Ll$Lt$HHHWhL7HcHHWhL$LgLH+GIHGI@$@II$H{ HHB8H@0Ht x E1 H IcH4HuHE H)H~^HFH HVHEHEHH\$Hl$ Ld$(Ll$0Lt$8L|$@HHH HPH%H@8PHH_HHHB8H+LhMfA} VH HPHHT$HT$HLh@MHI\$H@ I9r-I\$DHsLHAI9IHHt F HT$HIcH4HuHE H)HHFH HVHEHEHHELHHH j1DH3LH!HI9sNHH@8HLhMfA} qLHHHD$H]IcL<J ;L9HUhHH;UpHUhID$H+EHHT$HBHI$HLuqH5d1H`H8HELHUHHJHBHEHMH_fHLHHz"ID$I9@.qLHHHD$ H{ HB8{LH5f LHfHH[HHJHT$HHx8HH["HE L)H~nLaLHL)HHHH9HVHyLI]0LHHHrLHHUhI)ܹLLHIIIcH HMa HaHEHT$HHH }DH=)1f.Ld$Lt$IH\$Ll$H(HGhLHcHHGhHGHHPH_HGL,LsHSLLHLkID$M4$H\$Ld$Ll$HLt$ H(ffffff.H\$Hl$HLd$Ll$Lt$H8HWH/B$AA@HP LeLFH}LmvAHEHAA3HHHCH+@$@Lmu AD$ LHAD$ @LeDHP HRHGHuL$_H}LmO F AuHC@$Au#G tuHHH}O 1EAtCIuF %=AHHpO %=5HH@H;A8H9^HH)H9rfEHH9HLH話AD$ @LHfwHIuH}F 8O HE@ D$IuFH@ XD$LHAD$ @zMeHCL+Hl$H\$Ld$ Ll$(HLt$0H8ËO vHH@@HHUED$\fDD$gDHUtHH)H9AH'H0H9{H}HuO rHH@Hx5HALHHxH*fW HHHЃHH H*XLHAD$ @Hff.H\$Hl$HLd$HHGH@$@HiHP t H1FHHqH3HP tCumHC H)H~uHHNHHFH HHHJH HHHl$H$Ld$HHPHGH,bHHx uHHH{HsH A ?HvHt=HHHL#;E @u)I,$HCL#H$Hl$Ld$HHH HHfffff.H\$Hl$HLd$HHGH7HPHGL$HG H)H~aLfHCHn@$ t P%xY`uH+Ld$HH$Hl$HfH+P%HHHHCH4ȃ`rH+HCHLHHpHHHsHCffff.H\$Ll$HHl$Ld$H(HH(LhL`HG@%@t LIHՀt uTfL9tLHHE @u'ImHCL+Hl$H\$Ld$HLl$ H(HH0fAD$ u ƃLHuf.H\$Hl$HLd$HHGL'HPHGH,I$HKE @t HHI,$HCL#Hl$H$Ld$HHfH\$Hl$HLd$HH/HG H)H~JHCx%x`HP(HCLeHHH@8HHEHCL#Hl$H$Ld$HHDHH`HHCx%yHP(HCLeHH4xHE렐HhN VHVHHhH`FHHH9sHH9HRBwHB fDAWE1AVAAUAATUSHH|$Ht$LhMt_AD$I\$HJ, H9w 8HH9v/C Lf(H\H,H1qHHHH H*XgfHfff.HHHH H1HHH1H#FHHHu HHtH9H@uH@1fDHtSH~tLLLNE1I!DH HHHHHHtHHuIM9rK HFfDH\$Hl$1Ld$HHHHItHH讹HtH$Hl$Ld$HfDL9rI$xH9sL)H+DHff.SHHHPHt/HPH0HHPH)HH@HHPH8H!c 1[fDSeHHH@H@AHSH1HHHȥH[SH HtH HH [ÿHHH@HHHH9H vHH@H9HRuH@Hfffff.SH HtH HH [ÿuHHHXHHHxH9H vHHXH9HRuH Hfffff.SH HtH HH [ÿHHH8HHHH9H vHH8H9HRuHPHfffff.SH HtH HH [ÿuHHHXHHHxH9H vHHXH9HRuH Hfffff.SH HtH HH [ÿHHHPHHHH9H vHHPH9HRuHPHfffff.SH HtH HH [ÿuHHHHH0H9H vHHH9HpuHHDSH HtH HH [ÿHHH(HHHH9H vHH(H9HRuHHfffff.SH HtH HH [ÿuHHH HHHH9H vHH H9HRuHHfffff.SH HtH HH [ÿHHHHHHH9H vHHH9HRuHHfffff.SH HtH HH H [ÿqHHH HHHH9H vHHH9HRuHHSHx HtHx HHHx [ÿHp HHHHp HH9Hx vHHH9HRuHHSH HtH HH [ÿuHHHHHHH9H vHHH9HRuHHfffff.SH HHt@ 1賢Hǃ ǃ H`HTH`[@1HƺHdfH\$Hl$HHHHtXFt-H H9tFH H9t:H H9t.H;5V)t%EP;EX},EPHUHEPHHK HHl$H\$HþHfffff.USHHH`Ht]HETH`HEEE CP;CX| H{CPHSHCPHH,HH[]yH@HSHtrH;jH[a[fffff.UHSHHhHt/HHu HHt C@uGHHuHp HtHHHuHHDžp HDžx HtHHHuHHDžHDž HtHHHuHHDžHDž HtHbHHuHHDžHDž HtH0HHuHHDžHDž HtHHHuHHDžHDž HtHHHuHHDžHDž HtHHHuHHDžHDž HtHhHHuHHDžHDž HtH6HHuHHDžHDž HtHHHuHHDžHDž HtHHHuHHDžHDž HtHHHuHPHDžHDž HtHnHHuH HDžPHDžHDHDž Dž HDžhHDž`H[] H\$Hl$HLd$H; Iv-H L H$Hl$Ld$HÐH$Hl$HLd$HfDAWAVAUIATUSHHL~H>IoLd-I9HH@LH)H9L4H1HLܙML$HI]MMtpLE1@H HtKHHHHHHHHt,HAHHH H1HH1L!L9uHHHuHM9t HIH[]A\A]A^A_H=D)1]ffff.HH\$HH HHl$H1HLd$HLl$Lt$L|$H1H8H#FIIIAH,H.HEHu 8HHt-H9XuLpH\$Hl$Ld$Ll$ Lt$(L|$0H8E1IHtkIHHIHHXLpHUHHEID$HEID$uI;D$vLLH\$Hl$Ld$Ll$ Lt$(L|$0H8sIPHHHIPHH9IHvHHH9HRuHHAfH\$Hl$1Ld$Ll$H(HIHItHH艪HHt!HHl$H\$Ld$Ll$ H(DLHL譳I$HHHLfHl$Ll$HLt$H\$ILd$L|$HxHIu0E1LH\$HHl$PLd$XLl$`Lt$hL|$pHx~ tHH軩HIuAFt?} u9HEHpPHt,LH\$HHl$PLd$XLl$`1Lt$hL|$pHxM`M I$ATI`I$AD$HAD$ ILLE AD$%AD$ U tHEH@0@uAd$ ƒvH5L1HHcH࿨ I$HMLHQHPHAI$HBHEI$H@HBHEI$H@ HB HELI$Hp(HC(HELLI$Hp0 Ht@HC0LHLLHEI$LLHp8oHC8HEHp@H;p8DI$LLCHC@HEHpHHt @.I$HpHHEI$H@PHBPHEI$H@XHBXHEI$H@`HB`HEI$H@hHBhHE@ HpxLLI$Ht@HCxHELLI$HHt@HHELLI$HȜHt@HHEI$Hpp1HtL-HCpHEI$H1HtL HHEI$H1HtLHHEI$fHEI$HEI$AD$ 4<,AXrI$HMHHI$HALHBHEI$H@HBHEI$H@HBHEI$H@ HB HELI$Hp(YHC(HELLI$Hp0^Ht@HC0LHLL@HEI$LLHp8)HC8HEI$H)H@@HHB@f HE1I $H@HHt H@HEHPHHQHH HEI$H@PHBPHEI$H@XHBXHUt3HB`I$HH@8H @D HBXHt@HCX1AFI$s HC`AFS HUI$HRpHPpHEHpxHtHBHm LLI$Ht@HCxHUI$HEI$HLLǙHHUI$fHEI$HxP H@hHCh{`I$HMLHQHPHAI$HBHEI$H@HBHEI$H@ HB HELI$Hp( HC(HELLI$Hp0Ht@HC0HLLLHUI$HRHHPHHU1I$Hr@Ht HRHL蕢HC@HELLI$HpP誘Ht@HCPHELI$@XBXHELI$Hp8׭HC8I$H@8HS@JLI$HUHRHPHEI$H@HBHEI$H@HBHEI$H@ HB LHLLLI$HUHRHPHEI$H@HBHEI$H@HBL)I$HUHRHPHEI$H@HBLI$uLnI$HUHR HP ZLI$HUHRHP=I$0LI$HULHRHPHEI$H@HBHEI$H@HBHEI$H@ HB HELI$Hp(HC(HELLI$Hp0ŖHt@HC0HELLI$Hp@衖Ht@HC@HUI$RHPHHEHHQHHHL$ HHHHH9H\$ H<HT$0HH\$8HD$(HE1H|$(HPHH@HT$0ILHL$(I$HT$(HI$HP8HE@HH|$8L|$ H PIHL$0LLH1HHL$0蠕Ht@HHMuHD$(H\$ HDHD$(HEHPH+PHSI 1H\$(HH HH9H\$(u+L"I$HULHRHPHEI$H@HBHEI$H@HBHEI$H@ HB HELI$Hp(軋HC(HELLI$Hp0Ht@HC0HLLL袕HEI$H@8HB8HEI$H@@HB@HUBPB>HEI$@8B8HEI$@H@8Hf@<LGHDl$l$ Dt$Dl$ LH$HHT$HHPT$ HHPE1E11H$6Dl$l$ E1E1"HL葛fff.Hl$Ld$HH\$HH`IHtbHTH`HCHC Hu{HAd$ L H؁K H$Hl$Ld$H$Hffffff.HtFefAWAVAUIATUHSHv EHH HIUHUhHH;UpHUhHH+ELHHHCLcHEq{HHMHp HHxH+MHHHHHHHHHUHHH@HHE HHH@HHHEHHHHx3yA|$LH`AE IUHB0L9Lr0HAL HItLH詘H HIHHp(HHFFHH@HxH+]HHHXHHHHMHHHPHHU HHH@HHH]HH)HHHx;HH޹H|H LAUAu t-IEHHp0_AU ЀAE tXAu @ƃv2IEHx(t LHɒAE %@=@Au @ƍP1ۃ v5vAE %@ AE H[]A\A]A^A_HHcHHHcHI$AmHAd$ tHH5HHPP1荏IUBPIEAu HXPmLH1 \Au WLH1*^AE LH1SjAE IUHZ8HtHH褈H9t7IEHHX8^H9t"IEHHX8JH9t 1LHIUHzHHt @GHBHIE1HxpgIEHWIEHGAu ~1IUH:HtHzu|AE %=@ƃHfHUhf1@ H諓HHHF HHp(*LHrAE E裎AE 6IEHHp0y\HrHH1f\Au I}dAE %@ HAE HHH[]A\A]A^A_#\IUH HH IUH HH IuH3IUH HH vIUH HH \IUH HH BIuH41IuHCIuH IuH>IuHMIuH\rIU HJt*HBHHAE %AE %RHHtx tfHtHH513]HoHBHH1H@HpZIEHPHHHIEH@HHAu HH@8H@HtHHx@HuyDH\$Hl$HHHHFF @t=H H9H H9H H9H;5s)HxHIHHH\$Hl$1HJsFudFt-H H9taH H9tUH H9tIH;5Os)t@HHRjKuH`C HTH`H\$Hl$HC@SHHC H1%=t'Hc ~t[Xu[cfHxHc H[D1afHl$Ld$HLl$H\$H(FII HHC t5t%<tXHLHp0XC D<C tAX{ vHMHtAD$L`0IP u`e C @u1HH\$Hl$Ld$Ll$ H(HLp릺~HLHt%HL^{LLQtM 돺UHLHu{H5s1H5p)1fffff.Hl$Ll$HLt$H\$ILd$H(L`IMI$TH`AD$ E I$AD$U %E U ƒtEHEHxt# H8H+xte HEH@HEH@U %H E HEL M MtLLHHLULH$Hl$Ld$Ll$Lt$ H(úHLnU fD]HELfE ]HLdHLQOH8胇HEeIfff.AVIAUAATIUS~ HHX(HHh( HH]HtcCD9uHSHHHEtHB Ht HLLH{ HtSgt C(~A؆Cu(HʆH]HuI$Hx(t)[]A\A]A^1HsLTʃt/w@uAD$ % AD$ 1[]A\A]A^HLMTff.N @4T@V tfDHHH8HtH@ u=HA Ht@ u.HA(Ht@ uHAHt@ uHA8Ht@ t@V SSV HtQHH1F tE%=tS H[SHHHc H[fffff.AWIAVAAUIATAUSHD$ EuGEA t(L1H Љ1D9uɉ 1‰D4I`HHEATI`HLHEEE kDH]Dڀ|$LLEADyHHHUIcHBHELpHEH@U E |$t $U HH[]A\A]A^A_AHL$HT$IcD$HD$NDd$ILH&H\$Hl$HLd$Ll$H(F IHDn{tLpfE tNfC DHLjHEHH@(HB(E % C HEe H@(EHLKbHHEHCHEK DmCI$`C Hl$Ll$ HA$TI$`H\$Ld$H(HLT `@HL1jjDH\$Hl$HLd$HF IHթ< u\HL HPH9v7HHHHtbMt]LH!uIHL HHhLH$Hl$Ld$HLHHHPL H9vHH+HHHlE낋C %=tbH{IHH0HtHPHtH9LHFRpHoLHhHL HPuC c oH=i)1'yHl$Ld$HH\$HH`IHtlHTH`MHCC uHHl$H$Ld$HúHHgHIT$H9PsHHy誯HDH\$Ll$HHl$Ld$ILt$H(HtSN tHHIL+  t?Hc |L)`HL)`HL HL`H$Hl$Ld$Ll$Lt$ H(HHxu/HhL0HHugH8HLnHHH@HH@K tHLfK U\K :HLwHHl$Ld$HLl$Lt$IL|$H\$H8L$~ IAMr0GyHù1HMHHUHB(HHZ(I9A#ArA|$ tZAD$KAqLc} |MtwAD$toI$HHt x 1H9uRLLaEI$H@8H9(t(H9h(t"H9h tH9h8ftH9htH;h@qAqLcfzD$@MDkC(t~ZLLy_HC H$HLHC袄E t%E HHl$H\$Ld$Ll$ Lt$(L|$0H8Ã|$@tLs 몺dAFLs HH@8HH@fff.H\$Hl$HLd$Ll$ILt$H8F EEH\$@ft>u7HHtOH@ HtiHHEIcIcHH+\$HHUH\1H\$Hl$Ld$ Ll$(Lt$0H8Ld)E1ɹw1$vI$뎿 vHEHH@H@H@I$HB HM`f.H\$Hl$؉Ld$Ll$ILt$L|$H8N HIMEtBI$`I$HH9t!gtBtf@tt <ftLHEHx(tFHL!rHt4tH\$Hl$Ld$Ll$ Lt$(L|$0H8Ãtt@~vH5L1PzHU~HcH?fq뻀DaL[a)MLHLD,$Lu@(`H(WH`)MILHLD,$u1Hj`)H_)H c)Hb)Ha)H5b)H$a)Hb)H`)H`)H(a)MILHLD,$ttA~tLDM H^)/H@a)#H|^)Hh^) Hda)H`)H^)H`)H^)1HH_)H_)H_)H^)H9_)HE_)Hya)tH%^)hH^)\H5`)L1+xff.E1E1t1nfffff.AWIAVAUIATUSHH(dH%(H$1Hth>HH8tVH|$1Gt>{-Lstt1ȍHHD9}IUryfLuH$dH3 %(H([]A\A]A^A_HH@HHtː``H@HHusLs9~IUrxD$ H$HH $H,Hu)D%=,HmHHE@|tLeI$H@8HHtVS u%H C { v'HH@HHHtAI$H@8Hp HtLNI$H@8Hp(HTHHxPFLBM91Lm$fIUD$ H$D$ ;BeHL}CAbHLARHL7k}iffff.Hl$Ld$HLl$Lt$IH\$H(F II̩Y<MHEH8Ht HxID$H<I\$LHH>iHUHHEL`HEHXHEHH@E %h E At AuDH$Hl$Ld$Ll$Lt$ H(E H+xue PHLH$Hl$Ld$Ll$Lt$ H(y@HL\MU %H E cHLH$Hl$Ld$Ll$Lt$ H(|{RE +uH=\)1lH\$Hl$HHHDC @uH\$Hl$HfHHH\$Hl$HfH\$Ld$HLl$Hl$ILt$H(F IMLT{ IHInH9hH8HLcHLpC %h C AtFAtS %H C uiH$Hl$Ld$Ll$Lt$ H(Q5fHHLkHLHLZHInH9h+HLH$Hl$Ld$Ll$Lt$ H(zfH\$Hl$HHHMC @uH\$Hl$HfHHH\$Hl$HdHl$Ld$HLl$Lt$IH\$H(F IIMM } @HEIT$H9PHLLH6aB#HEL`E %h E At AuH$Hl$Ld$Ll$Lt$ H(HLH$Hl$Ld$Ll$Lt$ H(I ff.H\$Ld$HIH$S$HHYLH\$Ld$HHl$H\$H$H`HHtHHTH`HCHC H$xYHHl$H\$H葛Hfff.H\$Hl$HHH7YC @uH\$Hl$HfHHH\$Hl$H^Hl$Ld$HH\$Ll$H(F I%=HL(fAE urLbE1E1<HLLHrH HAH;A}]HAHLLHHAH,M 9HH\$Hl$Ld$Ll$ H(ú<LaHxHX떍PHLnPH 됾 otH3j L1RH5i1iDH\$Hl$HLd$HN HIw%HoHcHHHQK %H C HK L`t uH$Hl$Ld$HHHH$Hl$Ld$H25HuF f=_HnQ)L$1HHIH5sHLH1hHHQK >HHPK &GK HHpHTI~H\$Ld$HLl$IHIOPHHL6LH$Ld$Ll$Hff.Hl$Ld$HH\$HH`IHtJHTH`HCLC HHW6HHl$H$Ld$HܗHAWAVAUIxATUSH8Ht$@H5= LIHL)L8:(1xL,7HD$Ll$ LIDŽ$p IDŽ$x IDŽ$IDŽ$ HD$IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$IDŽ$ IDŽ$PIDŽ$HIDŽ$ ADŽ$ ADŽ$TAL ADŽ$XIDŽ$`IDŽ$hA$L I I$ I0I$0`LlI$ I HLI$IDŽ$ ADŽ$ ADŽ$ WL:I$ HHK)ADŽ$ ADŽ$ H01Ht 1L\GHI$ I$ I LH@I$ H@I$ H@I$ H@ I$:WL蒑I$ HHhJ)ADŽ$ ADŽ$$ H01Ht LFHI$ I?I$ I LL|$H@I$ H@I$ H@I$ LH I$VLfI$H` HIHLHHP3I$HIHLI$5VIHLI$HIPI$PIXI$XI`I$`IhI$hIpI$pIxI$xII$II$II$II$II$Y/I$I$xHIxLWUI$L'/I$I$HIL%UI$I$HIHLUI$H!I$HtLL:Ht@I$I`LLRI$`ALA$II$YLLLHD$yHILLW:ILLI$=:ILLI$#:II$1HtLcILLI$9Ht@I LLI$9Ht@I$ A(LI0LA$(9Ht@I$0I8IXI$8I@I$@AHA$HAIA$IAJA$JAKA$KALA$LAMA$MANA$NAOA$OAQA$QARA$RASA$S1HtL0bI`LLI$X8Ht@I$`AhLIxLA$hAlA$lAA$IpI$p&8I$xALI`LA$AA$AA$7I$hHo1LI$`.II$xHo1LIHoI$1LHLWI$ I L.I LLHL0I6P7Ht@I$ HLHcQ\H~c10LL7Ht@I$ HLH\H9t/ItFuHLLHpOLHRHuI$ ILLHHI$6ILLI$6ILLI$m6ILLI$S6ILLI$96ILLI$6Ht@ILLI$5ILLI$5ILLI$5ILLI$5ILLI$5ILLI$z5ILLI$`5ILLI$F5ILLI$,5ILLI$5IHLLI$4Ht@IPLLI$H4ILLI$P4ILLI$4ILLI$4I LLI$m4Ht@I(LLI$ J4Ht@ILLI$('4Ht@ILLI$4Ht@I0LLI$3Ht@I8LLI$03Ht@I@LLI$83Ht@I$@APLIxLA$PApA$pZ3Ht@I$xAIAP A$AHA$P A$LlLL,HHt@I$ I IH>I 1HH+HHHI$ HI H+HHHI$ HI H+HHHI$ HIH+HHHI$II LHBHLI$ AA$II$II$I I$ I I$ A A$ A A$ A A$ A A$ A A$ A A$ A A$ !+Ht@M I$ I8HBI$ 1I( H+HHHHI$( II0 H H+HHHI$0 A8 fA$8 A< I@ LLA$< *I$@ AH I` A$H IP I$P AX A$X 1HtLSI$` Ah I A$h Ip I$p Ix I$x 1HtLSI$ A LILA$ A A$ )Ht@I LLI$)Ht@I LLI$ o)Ht@I LLI$ L)Ht@I LLI$ ))Ht@I LLI$ )Ht@I LLI$ (Ht@I LLI$ (Ht@I LLI$ (Ht@I LLI$ z(Ht@I LLI$ W(Ht@I LLI$ 4(Ht@I LLI$ (Ht@I LLI$ 'Ht@I LLI$ 'Ht@I LLI$ 'Ht@I LLI$ 'Ht@I LLI$ b'Ht@I LLI$ ?'Ht@ILLI$ 'Ht@ILLI$&Ht@I$AIDŽ$ ADŽ$( AƄ$, IDŽ$8 A$AA$AA$II$AA$II$AA$II$II$II$II$II$II$II$IDŽ$@ AH IAƄ$ IDŽ$pA$H AL A$L AP A$P AT A$T IX I$X I` I$` Ah A$h Al A$l  GH1I$OIx (G(1HI$x(qG(H1I$IxLLI$xH4$Ht@H+ILLI$H4$Ht@H+HH(uD$k AEPAUXAD$PAETAT$XAD$T HcHFIcT$X1HID$HHEAD$Su61IEHLLIl$HH4#Ht@HDIcD$PHH9}IEpI+E`H?HH91 HH8F1HHID$`Iu`IUhIEpI|$`H)IT$`H)ID$`IT$hH)ID$pHHHH9 H8AE0AD$0AE4AD$4 HcHEIcT$41HID$(H=AD$0y I|$(Iu(HcH8AA$AA$> HcHIEIc$1HID$xHA$ I|$xIuxHcH)8ILL9IxLLI$M"ILLI$x3"I$xI$LLHHIEIT$I+EHI$HLH@HID$ID$ AE@AD$@AEDAD$D44ID$8I$IHc7IEI$II$IDŽ$IDŽ$ID$II$7I$0I06ILL7!ILLI$!Ht@I$ILILI$II$II$II$AA$II$ Ht@ILLI$| ILLI$b Ht@I LLI$? Ht@I$ I@LI(LI$( Ht@I8LLI$@Ht@I0LLI$8I$0IXLIpLI$XAhA$hAlA$lApA$pAtA$taHt@I$pALILIDŽ$IDŽ$A$AA$H7ILLI$ILLI$ILLI$I$ALAAIDŽ$IDŽ$A$AIDŽ$IDŽ$A$A$ADŽ$IDŽ$fA$IDŽ$IDŽ$IDŽ$IDŽ$IDŽ$ADŽ$ ADŽ$$IDŽ$(ADŽ$0ADŽ$4ADŽ$8ADŽ$<ADŽ$@ADŽ$DIDŽ$HADŽ$PADŽ$TADŽ$IDŽ$IIDŽ$IDŽ$IDŽ$IDŽ$IDŽ$IDŽ$IDŽ$IDŽ$ADŽ$IDŽ$IDŽ$ADŽ$ADŽ$ADŽ$IDŽ$ADŽ$IDŽ$IDŽ$ IDŽ$(IDŽ$0IDŽ$8AƄ$IDŽ$@ADŽ$HIDŽ$PIDŽ$XIDŽ$`IDŽ$hADŽ$pADŽ$tIDŽ$xIDŽ$I$IADŽ$IDŽ$I$II$II$II$II$ED$I$M|$THt$LHt$LHB1HLIFHItHH@8Hx8tLI,$CLLIT$hAD$PHI;T$pAD$TIT$hoHI+D$HID$ H)HI1LH]HpP!>LHHEI$IELH@8Hp8*AD$PA;D$TL(HcHE %=E qtTHuH~tFHVH6HL$L.ƒHELH0-L0JA$t:)LM4%LM)1L0HCHuHNHH*f.F u"z HH9wE M M H I$ A HL+HHx tHHHEH;HH@HL1HVH6HL$La-AAAA} ;At6E eM AM HT$HNHEHPAH]LH3>,EC %A@HEL@ fT:/HH9E M H]LC HCHuN H*Ff.uzE M N f. '{f(L.HH9HMAHHHH H*XHEL@ S.QHL4HL HLE IHLE < M 8HL@4Hu|HT$HH9HEHHP8HL4Hu)L#&VHD$kHL L0*HL3HL3 L0HLM HMU %~ E M HMHT$HH*fW*HA HEHPDHLHL2lHLE FHL2.fW 6*xHEHPM HLr2Hu6HL^2.HLHЃHH H*XHEL@ +HuHHLF H5l4)ffffff.Hl$Ll$HH\$Ld$ILt$L|$H8HLxPMH!*1J.AM HIHH@8Hx8HLe*HuTHHUhEPHH;UpETHUhLH+EHHE L)H1I\$LH%HH%ID$H]1IHH@8Hp8H]H3FtjHL`HCHEEP;ETsHMtAe H\$Hl$Ld$Ll$ Lt$(L|$0H8LLHINHIHCHEEP;ET~DHH.HUhDF tHH@yfHl$Ld$HH\$Ll$ILt$H8HF (<D DnM H]C f.2LHCHMHQHH*f.A u2z0HH?H1H)HH9wE pM HHQG0E %=E %=>E HEHPH\$Hl$HLd$ Ll$(Lt$0H8E uũQHuH~HVH6HL$L%,HELH0$LH]tHuH~dA$tuu)L+E 1 HEHuE$tEuľ)L*tL1ҐL'HCHuHNH H*f.F u%z#HH9wE M M HVYI$ A HL!HH.x tHHHEH;HHPHL 1HVH6HL$L#AAAA} KAt6E uM AM HT$HHEHPAH]LH3"EC 6AQHEL@ fTS1%HH9E M H]LC iHCHuN H*Ff.uzE M N f. f(L%HH9HMAHHHH H*XHEL@ HXHL!+HLHLK E IHLxH E < M 7HL*Hu|HT$HH9HEHHP7HLt*Hu'Lg HD$HHHeHLy L7'HLHL)@w L&HL[M HMU %~ E M HMHT$HH*fW!HA HEHxHD$HHH9ZDHLHuHL(/HL9 E HL(fW i :HEHPM hHL(HuHL(HLHЃHH H*XHEL@ !HuHHLF H5+ Hl$Ld$HLl$Lt$IL|$H\$H8L $AIIMFBMH;!HuTH/EPHET!HUhHH;UpHUhHH+EHHE H)H/+LkHE H{H)HLgHE HwH)HLvHE H^H)HIc7HLcHH(IHCHE L)HEHcT$@H4$HI\$$HHH5SID$1H]H13LeI4$Ht0F HHHHHyAEIE@AEP;ETLe~HHHl$H\$Ld$Ll$ Lt$(L|$0H8H5q)H1u$HfWf.@  kHHx[H|$HUh81ҐBLH@GLLHIHH޹HHSHHH"HHHHHH޹HHHE H)HHH޹HhHH4H80pHaf.AWAVAUATUHSHH8dH%(H$(1H$H$LD$xLL$pV Ƅ$ tH`@%Ѓ$ H$H$H$hHH:H|$x$}$$7H,+IH9H$H$H$H$pH$HDŽ$0HDŽ$HL$`H\$PHHHT$hHL$XH\$HHD$@H$`H$|H$H$HDŽ$HT$8HL$0H\$(HD$ HDŽ$`HDŽ$XLƄ$HDŽ$PL$p9%tHH9$H$pwL9$7H$H$L)ALFL$pLH9$HFH$ppHt$hH$AHcȅAH$H$p>$$0H$gƄ$Ƅ$Ƅ$1Ƅ$Ƅ$ E1$Ƅ$E1Ƅ$HDŽ$H$(Ƅ$HDŽ$>. C<%vU1%$ H$HF$H$pB<4HHcHHx HcHHFH$pH Ƅ$Ƅ$Ƅ$ Ƅ$H$pt B<1E1E1Ƅ$B*uHFH$Ht$hH$p?At H$pHH$p$H$p0u HDŽ$`H$LH$" H$` LfHH$H VHB@ f=tfsH H$H"1dHLH$`tH$H$H$H3HNH$L)LH H$HH$Ld$PHt$HHH0H҈u逼$t<0E1H$H$H$HH$L{ H$HH$HúHHH$L0H@H$`H HQ/$HҸLd$PHt$HD؈$H0Hu퀼$0AƄ$0Ƅ$bHFqHH$pHFƄ$0H$pLH$H H$H HQwH$PH$(HH$PH$H$X"Hs H$HD$xHL$xHPHBHA?E$p9$14E8AFHHHT$pH4Fs HH@A$p9$„EcAGHHHT$pH,E@ HEH@H$XHEHH$Ƅ$E QH$H`>H|$xhr fVH\$x0% HSHcHlE1$Ht$A$ HDŽ$DŽ$  lqHT$x0HL$xƒHQHDŽ$BH\$xHSHBHCHE10t$]HL$x0LHQHH$BHH@H$`HH0H$I@ =H$H`@%$Ƅ$D9$p!D;$pH|$x5 HL$x0HQ$|D$|1H$pƄ$EI$|HH$=H|$xHT$x0HL$xƒHQHH$H$HCC H$H`@%H$I kH$@H@ ۼ$CH$@THH@H}H$@HHH@H$`HL0H$A H$H`@%q$t@H$H;$`s.HT$@H$1H߉$HHc$HH$H$H$H$H$`H$Ƅ$H)$H$@kHHPH€hHEZH$$Ld$PHH$H$P"H8H$(Y1LhVfHT$x0HL$xƒHQH$|dHƄ$H$@HH@hHHDŽ$OGAOfDD;$pfHT$pIcHl$0$OH$H HDŽ$XƄ$H$H HT$x06HL$xƒHQHDŽ$$ $T$0G$8q0$HHHcHH|$HHIL1H|$#LI.IH|$LH|$)u L-{HLDL-8%=PuH|$rHHItHx HhHT$EbE^AN MtIcE(I$IU L-EH uHE@PDHL%Hf:L#HH5HL1gLH6fDAWIAVMAUIATIUHSH(HLD$F %=HT$ E K,%h E H;\$ v/HuHSH9VH|$ HH)H>1豰HEHXADD)HuHcHFHHH9V:HJ<(HFJ'H H9sHIFHA@IH9rHt$L,HEHXE @H([]A\A]A^A_AbHL"DD)WHEHHT$HHXIOd%I9LH+T$HL)H9MPD)~HcLLHI|AEL+l$HELhE @FHLuH([]A\A]A^A_HH@HD$ BHLHuHEHt$LL(L E @HLHu$D+l$uAMt)LHLL)H躪Ht$LHKLHL藪8M)IcHLLH){HL$L1HAHBHD9uMHt$LLNHt$LLM6H51#H5+L1fHl$Ll$HLt$H\$ILd$L|$HHHIF %=HT$H]ILIHD$HPH9SM9H|$H;IT$LwHEL`E %h E AtAt HLpH\$Hl$ Ld$(Ll$0Lt$8L|$@HHHHCHD$L;VHLM9H]eL+\H\$Hl$HHHGC @uH\$Hl$HfHHH\$Hl$HH\$Hl$HLd$Lt$HLl$H8F IID%=HT$H IHD$HH(H9QM9H|$H9HLHHhHHH@C %h C At Au%H\$Hl$Ld$ Ll$(Lt$0H8HLէHHAHD$L)KHLM9H TDL!GH\$Hl$HHAHC @uH\$Hl$HHHH\$Hl$H3A饴DFtHH@HHH12fFtHH@HHHùffffff.Ft HH1@Ld$Ll$ILt$L|$IH\$Hl$HHHIIDD$~ @ǃ    (IP ftcI LOf>A HHLwHHt4x +H9HIHHHH;tuI$HB  HI1HI.uD >I1H\$Hl$ HLd$(Ll$0Lt$8L|$@HH@HI6HEDt$H@8H@0HHDEHH@PIHEH@8X@u HH8HuL1LAH1HHLܽH1ҾL*11HLkE11ɉHLLHEH@8DX@Eu HH8H H5LL1_HH@8HHHfDHE1H@8DP@EHH8LLUA|$ IHHH@8I@ L]tII$H@HD$I$H0T$ L踱H(HHH5L1HT$LLHH5L1ifH\$Hl$H(N HHу Ht}@HHBHD$H21ҹHHtx tH5(HH1HH@8HtH@HtH\$Hl$ H(HHB8Ht H@HuHR@H5H1HT$HmHH0-H5(H71FfDHl$Ld$HLl$Lt$E1H\$H8F IIfHUHBHD$H2HT$HLHHEMIE H$HAE(HIcE(IIE HH\$Hl$Ld$ Ll$(Lt$0H8úoHItHP Ht A;$X tHE ?HT$H"LyH2MtIE AE(1IdHLbH$IHCIE1E1o1HL*oHL:IHX H$HAE(Hl$Ld$HL|$H\$ILl$Lt$HXHI FHHBHD$ HHT$MAD$9I$HBHD$HHT$LD$ E1E1Mt9HT$HuWDHl$0H\$(Ld$8Ll$@Lt$HL|$PHXH|$Mt LLMtL@뮋M AD$ % 9I`@%LI`Ht$LLlI`IHLAF^IHBHD$ HHT$E1LD$ M5HT$HHUHB8HH@0HtH8HBPLG@HsLHHHPH@HD1踫E1AD$tI$HHt$HLHMHA8HT$ HP8HEH@8@@HEHXAPHMyXHQPHtI`LxHMIXEHMHA8H@(HD$HA8L`(HMAX@tHQPHtI`LTHMIX@GE1HMHA8H@ HD$HA8L` HMAX HQPHtI`L軦HMIX HMAD$ HL芩 LL AAHLfDHLdAXHLCM xM HL4HLLHHMmHL谨HLPHL@E zHL+jHL8 L)#H1 LAE FHMHA8H@8Ld$ HD$HD$?L9qHM!HELHp8kHD$HMHELHp8H EHD$HMHELHp8HHD$HMHELHp8H(HD$HMHELHp8HHD$HMLLHL$HƁ HT$ HHLdHt$HLTHHLvHL$HcH5ǿHL1@苿HMIuH5צ(L1HzPeHF0HtHHQ@H5FuL1fff.H\$Hl$HLd$HHHIt/ʥHHHLLH$Hl$Ld$HfDH AD$ @tLH茰f.Hl$Ld$HH\$HHItb~ tnH`HtTHTH`HCC LHHgHHl$H$Ld$HÐ1H@믾ftHH11趥@H\$Hl$HLd$H(HH~LfHcBt"@u?@ ؃LEHHH\$Hl$HLd$ H(fHT$HT$LHKHT$HHIH HL6H먐H`HtlHTH`HBB pHLHHcCHADOO CHvH H/Hfffff.H\$Ld$HHl$HH`IHHETH`HEEE LHH\CP;CX| HCPHSHCPHH,M HH$Hl$Ld$HHf.H\$Hl$HHHC @uH\$Hl$HHHH\$Hl$Hd@馣fDH\$Hl$HLd$Ll$ILt$HHHHFHHBHD$L2HEHUHBHD$L*LD$MtQHL$E1Hu/1MtLH\$ Hl$(Ld$0Ll$8Lt$@HHËS E % 9uE1L;D$uM9LLL18@땐HT$"HL{I^HT$"aHI&DL-HD$&I$`@%oI$`upLLLȾI$`HHLRCHHBHD$L2HD$H9D$tfHL1谇L5,HD$nHLLXI$`HHLCHHBHD$L*H9HLL18@HRHL&BD$tqHL$HT$LLӃL9tyII1|$ LD$:HT$"HLܿIHT$"HL迿IHL$HT$LLbL9tIIE1ffffff.AWAVAUATIUSH(HH|$HT$ FHHBHD$ H*HD$D8D;|$ yAD$ HD$ fHE1E1IcL|$HH9w_HHD$ H9vQHD$yH#(H|$E1LHyHD$HtHHD$ HH9wAD$u9M^I~ HD$ IEHT$HcIEIEIEHD$ HT$H([]A\A]A^A_éH|$wLUHIHx HHD$HWIHcH9.HHH)H6H9HNHH)1HHGt3HTHH9si>HNy HH9tN9@yHGHT$HHD$ȄHHHxuhH(HD$HHHBHD$HHBHK HPHH[]A\fHHPH[]A\HH H@HD$C tLH8H+xQc HwHT$D5C HT$HHyHoH8 H6HH6H\$Ld$HLl$IHIJHLxHLd$H@IEHLl$H$HHfDH\$Ld$HLl$IHIպxLLHLd$H$Ll$Hzvf.H\$Hl$HHHbxCtHHl$H\$HHHHH\$Hl$1HH\$Ld$HLt$L|$IHl$Ll$HHHIABHHBHD$L*M1C tI$`h%ՃAF t A1ҩ 9tWHT$LLLHHHLQwCHH@HD$HL(DHL$E1LLL*H\$Hl$ Ld$(Ll$0Lt$8L|$@HHI$`P%҃L1LLv두HT$"HnIfDLLEtAF 1ҩ HT$"HL-I5DH\$Hl$HHHBC @uH\$Hl$HHHH\$Hl$H餘@fDH\$Hl$HHHuS %=t!u+Hl$S H\$HÐ1HHqS H5(H1ffff.vufDH\$Hl$HLd$HIHJuHtUCt$HH@HEHHH$Hl$Ld$HùHHLH$Hl$Ld$H鶬fDCtHH봹1f1ɔfH\$Hl$HLd$1HIH荚HtOCt$HH@HEHHH$Hl$Ld$HùHHLH$Hl$Ld$H CtHH뺹1f1陊fH\$Hl$HLd$H(BIHtNHHBHD$HHL$HL菍C tM H\$Hl$Ld$ H(Áe DHT$"H^HfFfD14@SHHF t$HH0H@HD$HT$H1H[éu H%[HT$"٪H@ATISHHHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H(8oHH$HHL$HD$HD$ D$0HD$H[A\ffff.Hl$Ld$HLl$H\$H8H`IIHtqHTH`LHCC ՂMHLHHE1HD$${HHl$ H\$Ld$(Ll$0H8]HHHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H$H$D$0HD$HD$ HD$wHSHHHT$0Ht$(HH<HL$8LD$@LL$HH)H$)x)p)h)`)X)P)H)@H(8mHH$HH$D$0HD$HD$ HD$vH[fH\$Hl$HLd$Ll$HH8IIHE1HMHHLHD$$E @uH\$Hl$ Ld$(Ll$0H8HLH\$Hl$ Ld$(Ll$0H8[ff.HHL$8LD$@HH 2LL$HH)H$)x)p)h)`)X)P)H)@H$H$D$0HD$HD$ HD$ HDATISHHHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H΃(8lHH$HHL$HD$HD$ D$0HD$XH[A\ffff.H\$Ld$HILl$Lt$IH8IH$MHLLHE1HD$$ H\$Ld$ Ll$(Lt$0H8@HHL$8LD$@HH 2LL$HH)H$)x)p)h)`)X)P)H)@H$H$D$0HD$HD$ HD$=HDATISHHHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H(8OjHH$HHL$HD$HD$ D$0HD$舐H[A\ffff.F tHH@驀fHl$Ld$HH\$HHIN E %=tI$`I$HH9tat6I$ A -HLHtH$Hl$Ld$HHEHLHڐHLHiM %=1҃HL1HEH@U %H E M AHL5M nfDHUHH9B%H E M HjthM YHE@ \*@ U %H E M HUHzu&%H E uvM HB`%ȁ E _HL计HUKHLxM ʦHLH$Hl$Ld$HmHLbHUvHLN=HE1LHPH0dtxHELH0虗\HLCH5(L1ޘfffff.ATHIUHSN qE %=LtI$`I$HH9tYt(I$ A ,HLӔHt[]A\HEHLHǍHLHfM fD%=ul%=t^%H E  M HEX@ @ []A\HL7|U LEHI9@5%H E M I@[]A\Ð{eM &HL{M LEI0>@tuG<vGH<HH:G<vG<vLEIxE%ȁ E IHL蠞LE5%H E HEM H@[]A\HLtM [HLH]A\ vH:G< v@HA<9BB0LEHI0HBH9JA< vˍABA<yA<nABHL詝HL虝&HL}M HLiLEIPHI9PI@HEHHHpH9sfDFHEHH90rN1QЀ GIP1L&t8HELH0[[XHL]A\ĂHL9LEbH5I}(L1菔ffffff.AWAVAUATUSH dH%(H$ 1H|$Ht$HT$L$,F t҃aHL$A <HD$` DL$,Et!H|$bHT$B HT$B %H B H|$,HD$H`HHH9-HD$HQ hHHxD=#HDŽ$Ht$H|$5vH|$C} At׃H|$&HѡD$(HD$ HL$I (HH0FuHH@HJHD$HD$,HcH9Q`HHc\$,Ht$HcH|$HHqHL$1҅IT$,HHcHPHL$HcD$,H1H9BtH HH$ dH3 %(aH []A\A]A^A_HL$A /H|$1HT$H|$1HH跌H|$1HxbHD$HHcD$,HBHt$HH|$PH|$H`AH|$fHD$HF % = H|$H$HD$ H$HtlHT$ E1D|D$(bHt$H|$yHt$H蹂HT$0ƿoHDŽ$HD$ E1E1D$(H|$L$AI$ mizDH$LH|$zAtHA8tH9uD)!HcDD$,EHt$H|$ALiAtJH$HtHT$H HQH9Dt$,_Ht$H|$rH|$(AuH|$y tH|$גUfHt$H|$LyaHt$H|$ Ln~E@HDHH|$ HH)H9H<_11E@Ht$H|$qHT$ÍsH T$,Hy)9OE1Ht$H|$HcH)蓅Ią~/H$ A$IEHA8}uEHT$HHH+HXH2HcD$,HNHTIcHH9HH.DE1넋D$H%=`Ht$H|$AdHHDHcT$,Ht$`H2H9-HT2H)HL$HH9PH|$H薇HT$HF HH@H$HHHD$ XH$t PADOHH9Ht$H|$HE1HD$T$,H_H|$qHHT$HHH0FHH@`Ht$H|$1]Ht$H|$HT$,1U9P)DtD)Ht$H|$L蜊H|$vHt$H|$AoHt$H|$?AIHT$HH+(HhHcHTHD$HH9QHHD(H$Hh]E8TH$HvHL$HHH+H9/H|$ HHH)H9DHt$H|$L辉EHT$HH+(HhfDHcLHHHI17zHt$H|$3HL$H1H|$HHT$H D=HH HE1HDŽ$D$(HT$ oHt$H|$̈́H|$o]1H|$蓁tNHL$HF H|$H$"4HD$ v~HD$HQ ?H|$H51變HGHH51B]fH5B1-]ffff.Hl$Ld$HH\$HV Iƒ tq uNU ELwLHúHirHH(K HHl$H$Ld$HfD tRHLiHHyPyuHy@uMHiHHuI$ H@Ht e EeHE@XMm@]HMDfffff.Hl$H\$HLd$HL'I$HC Hڃ wHHHI$HELeH$Hl$Ld$HHff.H\$Ld$HHIH3dHID$I$H\$Ld$HHfDUSHHHGH/P$t6tt,tuFHC H)H~!H HHEHCH+HH[]ÐHHHsHHCH+HH[]AWAVAUATUSHH|$(HH0HXF HH@H$HHHD$8@HHH@H$HL HL$8A tHt$(H`@% H$D$GLHt$HL)Ht$XHT$(HB@$D$lt&D$ltD$lt HrD$lHL$(I@L$pH3HHt$PMH|$PHL$(HWPHHHLxGXt 0tƁ|$GAg\H|$(ƇHD$PLkHP8H HL$(HAHH4HH@8H@ HHD$0 |$luHT$PZXHL$(1L)Ht$0HlHt$0H|$(^H|$0Ht$(f H HL$0HBHHT$(B@;BD@ Ht$(H|$(N@HxHW8HcHAHt$0HW8HH4AHW8H(HxH+_O@HHHXHHHWHH@HHG HH@HxL,HIL/H0H|$P_XD$hD$tHD$xHD$(L$LH@H$t+t & HE< t< t< t< @t< t0~L$XL$ ML$du D$X Lc IG 8^A_\T$G9 AWPT$XH;l$HT$dYIL$GHT$(H HT$ HL$(LAMHL)H\$8H|$(D$HD$HL$HH$Ht$(L.AG\t ƆAG\t)IW0L9t HHL)IH,HD$HH)HHD$HIH|$(HHcLH)谉|$tHÅK|$GtK H|$(HG L)HII]APAeL9rwH|$(H)>t$tHÅul|$GtK HT$(HB L)HIAHI]E9wPIHcDJ4 IGHcDJ L9st$tH\$ tH|$(H\AO\Ht$(ƆeHDP H|$(HHH)vD\$tHE|$GtM Ht$(HF L)HjIImHkH;l$HsPH|$P_X)E< t< t< t< t < u(fDHH;l$HstdUHDP uIH;l$HHD$PHD`XA=@< < <  < < HH;\$HtJEtfH|$(LLlIBIGHcJ, H9l$HvH$HL$(LH$H+AH)$H$HAD+$D9d$deH;l$HE䋄$EH\$(H @I]IAIuHtHHt HxT$tuH|$(ZLLkIH|$(HiZH)l$HH|$(HHT$H-L$tHÅI|$GHt$(HF L)H IAI]H|$(L/D$p;G@D$hHT$(L* H|$x9H\$(L+H,H5xHqHf|$lL+HT$(HL$(HBHHPHAHIcHMC @yI]H\$(IEHHCHH|$(H51QHĸ[]A\A]A^A_Ht$8H|$(H$"6I5H|$(tcH$H|$(LL"jIyH|$(HXC|$lH|$(HGL/HeH5}H1(QOHt$(H|$(HƄSHT$PHL$(BX%ZXLDeK BHH`HH1NHcHHD$(H HD$0H0HH<HuH$LLH|$HHH|$(rD$GHD$X&D$hD$tHD$x=HL$0A @|$lHt$(IcHF L)HH9EHT$0HI}HHLH0kHL$(HAHHH|$(6V%|$lH|$(HHH@8H@ HHD$0PlHH@8H@ HD$0H|$0/HD$PXXD$hD$tHD$xDHH|$(PsHHD$x?HD$(HPhHH;PpHPhHt$(HH+FHHF H)HDH|$xLkHGHHCHD$PXXD$hD$t_HHEDB uH|$(HnuxMI@}H;l$HHr{HH;\$HdH|$(HHH)~DT$tHEuV|$GtM HT$(HB L)H~EIIIm; HtHH;\$Hs; u{H|$(H.UH|$(LLWfIH|$(LL=fIH|$(HTHKx0 AWP@AG\%=H|$(LH$AWHHcƒH$^H;l$H IHD$(E1H$HT$HHHA言HIH|$(LHH)DD$tHE|$GtK H|$(HG L)HII]|$GqLH$H;l$HNifDHC IcL)HH9E~ILt$(L1I Ht$0H|$(1ɉfHLtHHSHD9uAD$MlHt$(HFL.HHt$P^XD$hD$tHD$xHD$0H|$(HH޹3dHHHkH\$(L+?H~LLDHcIHt$0H|$(H|$(HR[HHL$(HQh H|$(LLDcI$H|$(LXHLLtcIHH|$(HRAG^H$AHHD IH;l$H1D8eHt0HD8#t HH;\$Huf^H=t`(1pHH)H|$(Hj}DL$tHEt H|$(HpQ|$GtM Ht$(HF L)HH|$(LL{bIIIm|$Gu.HH$2H$H|$("1 $H|$(HwWHffffff.Hl$Ld$HLl$L|$H\$Lt$HHHWhHHcL$HBLgHGhHcBHHWhL)IHHGILxID$HD$H`@DD$HGX$؃`tVI4$FXHH@+T$B (Iʅ D9HT$HcHIHEL}HfEAA M9r{H LH$H$HHI9r[H3FHH@+T$B (IʅxD9}HT$HcAHHHuH$HHI9sDIGELDHELeHIGHEHEHH\$Hl$ Ld$(Ll$0Lt$8L|$@HHfDH IHXYL|H8YH\$Hl$HLd$Ll$H(HGhH/LoD HHGhHG@$tbtIcITHJH9s7H HBHHCH+Ld$H\$Hl$Ll$ HH(fDHEHBfD|AVAUATUHSHHGhHHcHHGhHG@$L,LotFIEH9v%IMHHHAHQHHHHH9wHEH]HH[]A\A]A^HEHPHEL$HL)Ad$ HL9HHH@8HLHo\AD$ %=_I$H@HD$I$H0HT$H'AD$ H`@%I$HL4HL9r8fHI9";y1HH!IHH[(HHHCH9sHKQAHHHH9rMzvHH ILLHFI$HHHT$HBH9s!HJQAHHHH9rAD$ %h AD$ AD$ @I]u&Me!HT$LHF[HLHdI$HHlfAWAVAUIATUSHHH$HWhHOHcHHWhL<LHL$HGHPHGI_HHT$MwfA~ PL^hHH@H?IGIUhHI;UpIUh@LI+ELHH$IE!rH5iL bLWfA~ I]IHPHHt$L>HL$A @t HLWcL+|$HL$IIcHHHHPIEIUHH[]A\A]A^A_H$LLH)HjnH9$k1DHsLHDeuOHLLeYH9$wfA~ I]:LLDmHHP/LLvLHIL&vIUhfff.H\$Hl$HLd$Ll$H(HL(HhLIIHC H)H~:MtPIE@HudHELeHHCHH\$Hl$Ld$Ll$ H(HHH6ZMHuHEH HUHHCHLHHHl$Ll$HH\$Ld$H(L'I$HViIH@Ht LHHM,$HELeH\$Hl$Ld$HLl$ H(AWAVAUATIUSHHWhL?HcHHWhL4HGLwHD$HGI^HPHGHHT$MnfA} y81L`HHHtHL WHLL{kHI9sfA} I\$xgIEHPHHt$L;HL$A @t HLf`L+t$HL$IIcHHHHPID$I$HH[]A\A]A^A_LLjHHP뒺PLndHZH@HtTIFIT$hHI;T$pIT$htSLI+D$LHM<$9nH5eL%^LSLLsLHFL(sIT$hfffff.AUATUHSHHGhL'HcHHGhHG@$HH_t:LkM9H HsHIEHELmHH[]A\A]HcEPLHcUXH)HHH9|#HHJI9rfH3H5HHI9sHELeHH[]A\A]I4$HstsHfDAWAVAUATIUSHXHWhH/HcL,HBLoHGhHGI]HD$8MufA~ L{HHl$@L9I>WT$ 1LGD$I@H9XD$D$ AP)‰T$(vHD$@L)HD$+D$ T$҉D$,t5I@HRl$L@H3LJHHuL+l$8D$,I||$ HD$Ht<HcD$ HHyeHct$HD$HHIH|$HHH0xXD$,tkD$(9D$Hc\$,IHQHH;AHYl$(t7IHPH4H0T$(HHH)HHHHu|$t&Hc|$ILHcT$HH8HWIcHID$I\$@$LkWE1|$ uOl=ID$M,$HHX[]A\A]A^A_HsFHH@I$`+HDL$L$HIL9|$@I7IFHH@D$ 4I>HcT$LGI@H9 Lm#I>WT$D$D$ )‰T$(T$ D$(H8s1LLND$(YPLs_HH@HIEID$hHI;D$pID$hM+l$LID(I,$8iID$@$t0҃tt L SH5vLXLNID$HHX[]A\A]A^A_Ë\$ HT$HHcH4IuI@HH|$HehI>HcT$GD$ LG"IHc\$,H1HH+A8HH9|$HcT$H,HH)HVIHcD$ Ht$HLL<LTI@Ht0D$ AD$PA;D$XH݋\$ HuLHz@uH|$Hg Hs L10OLC@ېl$ HL$HHcHH3LH%5uLn|$HD$0t.HcD$HH`HLHHD$0 TIcHID$LhID$@$/ID$ Hcl$ L)HH9D$ Hct$IL<LLHH0SIAHt;D$ AD$PA;D$X:D$ t\$ LHuLH?uIOl=Hc|$,HyL$(9L$D$D$ILHHcD$HtT$HL)HHHHuILHoI$ IE.I@ЉD$eIT$ T$HHcHtIuIAH;L,>l$ IHHcD$HH3LH3uI|$(IHH@HH4‹T$,I$ ڍBHHHHu|$fHc|$IHcT$Ht$0HH8HQH|$0d/T$,LLIIaLLFLGxIHUHct$ HcD$HH4HcT$(HD$ +D$HcT$LGBDD$ [D$ NLI+\$L$ Ht$@LLHHcnML,Ml$LL!iLHeHl$H\$HLd$Ll$Lt$L|$HHHOHA$D$ D$D$DD$u|HMD$ A%@u|HLkH[C  y$L$ E1HH6H‹\$ H HMeHDЅ MIUHMD$ A%@tHEhLcHcHHEhHEL4LuHD$L+AE  t@H5rWHH\$Hl$ Ld$(1Ll$0Lt$8L|$@HH*D$ty$\I^L I9r.fDHL$ E1LH 6HIDHHI9sL+t$LDt$ HEHL$LeHELeH\$Hl$ Ld$(Ll$0HLt$8L|$@HHI^I9rL fHL$ E1LHSHIDHHI9skBHPL$ HH+HBL$ E1HHRH(fDl$EBHHHUI9wH HJHBII$HJHBI^L I9s6DHPL$ LH[+HIDHHI9H3FuH;HH;ffff.9ff. 9ff.Hl$Lt$HH\$Ld$ALl$L|$H8HGH@$L+tE0tAtjAAE1A} HCHEAEtjLH#IH]HE H)H~|MtVLHHGAHt{HEH]HH\$Hl$Ld$Ll$ Lt$(L|$0H8LH2#IEuHCH HSHEHEHHH޹Hy@HiEH]t"LLHJHHEHXHPZLLHG:HfAWAVAUIATUSH(HWhHHc HLpHWhHWL<LHT$ HHL$HG@$ @%HD$D$x I`@DD$D$dIoI9I IHD$8DHHUH;T$|IEx%I$IM9rtI4$FHH@+D$L$Ht$LM؉YAHŋD$uHHT$tHU:HD$D$x IE@$tYt&L+|$ IIcHIEI9HPvBIHIIEMuHH([]A\A]A^A_fL7;L+[I Ht$HL$HUIEx%IoAHI9rSHHH@A9DLHI9r4H3FuL7݉H5 :(H([]A\L1A]A^A_%IcHL$HH9PDHL8AVAUIATUSHL7HGM&HPHGAD$H,(I$H@HD$I$HU %߉E H|$rHMHD$HTH9Q7AD$ H1HD$HHD$HuRHEH+0HpE %h E I.E @t HL|DIEMuHH[]A\A]A^@HB<v"B<vB< v_t\HDHD$HHHD$HucI`@%>HL$HtPfDB<vB<vB< v_t \HHl$HHL$HHuM HLIAD$ HMH1kHL8yH9(H9HGL@H)HL$I7H<HHHHH9uI\It0 1HHL:gHT$"LXHffff.Hl$Ld$HH\$HHHLbHtPH HtHs @ƃ sa ID$H IT$HEHEHH HHEHUHH$Hl$Ld$H tP uHyHH HHEHUHHyx$ID$H IT$HEHEHH9u ufKPHHFHu1HH@s HyPn AWAVIAUATUSHXHHD$L8AO g tI`@%AG %=t5IF1LHPIFHLc HIT7HT$HK HT$81LL7HHD$8HtLH,I`@%AAƆcH9s3FHHHH9uAG @t LLj@IFHL$IHHX[]A\A]A^A_IH@HD$8IHcDIFHPIFHHT$ ^IH@HD$8IH(HD$8HHT$ Lhz HL$ HL;jHL$ A %H A HD$8HHH9HD$(HT$0HL$@HT$HL$&fDHt$HL:H\$0H9l$(EH5(HHL$LD$HT${1HT$0I9sHL$ IM)HL9hsLHLH+|EHT$ HHT$0HwLAO H9ZfDPH FHH9u5HT$8 LLSHHL$ HI H+HXHD$HHT$ 1Lb H[Ht$ l5HD$ HL$HLL?LHLDHD$ HEHt$ L=3AWAVIAUATUSHhdH%(HD$X1HHT$L:AO w tI`@%AG %=t5IF1LHPIFHLc HI3HT$HK HT$81LL3HHD$8HtLH,I`@%AAƆsH9s*HHHH9uAG @t LLHfDE @t HL/9ID$M,$H\$8Hl$@Ld$HLl$PHLt$XL|$`HhHEH@HD$HEH`HEH@HD$HEHHH|$@<=HT$HLL|$ HL$LHL*E %=uHT$H;T$ID$HL$LHPID$L4LLQ/HL$HD$H9waAN MuH(U AQ <Fʈ HT$ HL MHHLkHH)ALL)녋E %=u!HEH@HD$HEH8L27HT$L1H.HT$Hff.Ld$H\$IHl$Ll$Lt$L|$HhL/ImU  tI$`@%E %=t0ID$1LHPID$HHc HH-I]E %=HT$1HLJ-H t@I$`@%nA$AƄ$q#HfDE @t HL?6ID$M,$H\$8Hl$@Ld$HLl$PHLt$XL|$`HhHEH@HD$HEH`HEH@HD$HEHHH|$@<=HT$HLL|$ (HL$LHLEE %=uHD$H9D$ID$HL$LHPID$L4LLa,HL$HD$H9waAN MuH8U AQ<Fʈ HT$ HLJHHL kHH)ALL9녋E %=u&HEH@HD$HEH8HT$L/2HT$L1H +Hff.Hl$L|$HH\$Ld$Ll$Lt$HHHGHHHHGLzH H $HZL2CHH@HD$HL(C tH`@%H(LpMAFtxIH0LL+H4$HHH$IHEL}H\$Hl$ Ld$(HLl$0Lt$8L|$@HHHT$"HHIYfDL"1HnHHtfDHHHH*H H1HHc6CtuHH@HD$HL(;HpH(HpHǀH(HpHǀH(LpHT$"HHGIff.H\$Ll$HHl$Ld$Lt$H(HHGH1LiHPHGFH,HL`} IvH`@%HuH~HFHEHD @E %H E H`HtH`@%HC L)H5IEImHl$Ld$Ll$HHCLt$ H$HH(HuIHVvIIv>Iv3Iv(IvHL9HHfDH9v`IvCIv8Iv-Iv"IvHL9H҃HHH7HuH61LHHMHH+HQE %H $E HC L)HLLH(IHHn%tIĐHHHuHVL6HuRH~v`HDHFD@?ʀPM (HH'6HuLHS uHuHH5HuH={LLfHl$Ld$HH\$Ll$H8HHGHHPLaHGCL,!HH@HD$HH0H`tPC tI tH`@%HHhHHH`HHHHHƋC ukLHmAE @HE L)HLLH&IID$Ml$HEHEH\$Hl$ Ld$(Ll$0HH8ÐH`@%u Ai1H-HnfDLH.nHT$H޹"CHfDH\$Hl$HLl$Ld$Lt$H(HGhHLwHcHHGhHGH,HHHoHGL$LmH)HLL@fAD$ u~IE@ tH`@%t\AD$ @Lkt LH9-L)HHcIDL`HPHCHl$Ld$HLl$HH$Lt$ H(AL$ LH<oƃcAWAVAUATUHSH8HOHGHHQHH$H`@DD$ A%~H3FHH@HD$4HCL#E1HD$LkAM tH`Dp%AAAAT$ 1 tH`X%ӃE1A9tdLEIEHH@HD$HH0HT$H>H`IH8HHMAW MI$H@HD$ AEI$L IEH@HD$(IEHHE@%HD$(D$4T$4HD$(9MLD$ HcHLHHHs)؅D$0~ EMt LHT$0T$ HHcT$ H4$WH$@ @t HH*H$HT$HHEHUHH8[]A\A]A^A_ËD$4~EtHT$41LH=D$4+D$ D$ D$4T$41D$4f‰D$4 DHT$0LH+HT$"HI?H)AT$ MATHT$ L"H?AEIPHT$("LH>HD+,fDD$0HHff.AWAVAUATUHSHHHOHGHHQHHT$H`@DD$A%D$DHHSE1HT$ HD$LcAL$ tH`Dh%AAAHD$1ۋP tH`X%ӃE1A9EtuHt$EIEHH@HD$0HH0HT$0Hl;H`IHHHHT$AMEEDIDHT$D$D~ EAD$#I$L$DH@HD$8I$H'HD$89HHT$8HcHL$H43E1HW;H>)؅D$@~ EMt LHD$@D$HHcT$Ht$HT$B @t HH{'HD$ HT$HHEHEHHH[]A\A]A^A_@H3FHH@+D$HD$D D$D*HT$D1LH>:AD$fHT$8"LHMeHCL+Hl$H\$Ld$Ll$ HH(H@LHHfDHHHf_LH AD$ @uLepHUB LH fffff.H\$Hl$HLd$HHP H/tOHuHULeFu B t>E1!H1HHHHPHHHCHHMHULeB t\HHhI4$Ft=HHHH H H9HDI$HCL#HH$Hl$Ld$HHH뽐HHHHUB H\$Hl$HLd$HHP H/tOHuHULeFu B t>E1 H1HHHHPHHHCHHMHULeB t\HHhI4$Ft=HHHH H H9HEI$HCL#HH$Hl$Ld$HHH뽐HHHHUB H\$Hl$HLd$HHP H/tOHuHULeFu B t>E1H1HHHHPHHHCHHMHULeB t\HHhI4$Ft=HHHH H H9HOI$HCL#HH$Hl$Ld$HHH뽐HHHHUB H\$Hl$HLd$HHP H/tOHuHULeFu B t>E1H1HHHHPHHHCHHMHULeB t\HHhI4$Ft=HHHH H H9HLI$HCL#HH$Hl$Ld$HHH뽐HHHHUB H\$Hl$HLd$HHP H/tOHuHULeFu B t>E1H1HHHHPHHHCHHMHULeB t\HHhI4$Ft=HHHH H H9HMI$HCL#HH$Hl$Ld$HHH뽐HHHHUB H\$Hl$HLd$HHP H/tOHuHULeFu B t>E1H1HHHHPHHHCHHMHULeB t\HHhI4$Ft=HHHH H H9HMI$HCL#HH$Hl$Ld$HHH뽐HHHHUB H\$Hl$HLd$Ll$H(HWH/B$@HP LeHuHULmFH߹EAA HH>HCH+@$@Lmu AD$ LHAD$ @LelfHP HRHGL$iHULmB tyIuHF Hh|HC1@$@tpH)LHrAD$ @ujMeHCL+Hl$H\$Ld$Ll$ HH(B uHH IuHF tFt HHP끐LHu HUHHSHUB LH< H\$Hl$HLd$Ll$H(HWH/B$@HP LeHuHULmFH߹EAA-HH>HCH+@$@Lmu AD$ LHAD$ @LelfHP HRHGL$iHULmB tyIuHF Hh|HC1@$@tpHLHAD$ @ujMeHCL+Hl$H\$Ld$Ll$ HH(B uHH@IuHF tFt HHP끐LH HUHHSHUB LH\ Hl$H\$HLd$Ll$H(HWHB$@HP LcHsHLkFHEAANHHoHEH]@$@Lku AD$ 9LHAD$ @@LcHP HRHGL$hHLkB t[IuHFHXtcHHHHugH5V$HH\$Hl$Ld$1Ll$ H(B uHH~IuHFuHhHHtHUH 'H5~HHHrHHH?LH+AD$ @u3MeHELmH\$Hl$Ld$Ll$ HH(HSDLHeHB LHMHl$H\$HLd$Ll$H(HWHB$@HP LcHsHLkFHEAA>HHWHEH]@$@Lku AD$ &LHAD$ @(LcHP HRHGL$hHLkB t[IuHFHXtcHHHPugH5F"HH\$Hl$Ld$1Ll$ H(B uHHnIuHFuHXHHtHLHH?H1H)HH?H.AD$ @u.MeHELmH\$Hl$Ld$Ll$ HH(HSLHmHB LHUHl$H\$HLd$Ll$H(HWHB$@HP LcHsHLkFHEAANHHOHEH]@$@Lku AD$ LHAD$ @ LcHP HRHGL$hHLkB t[IuHFHXtcHHHPugH5V HH\$Hl$Ld$1Ll$ H(B uHH~IuHFuHhHHtHH?LHHKAD$ @u3MeHELmH\$Hl$Ld$Ll$ HH(HSDLHHB LHmH\$Hl$HLd$Ll$H(HWH/B$@HP LeHuHULmFH߹ EAA] HHqHCH+@$@Lmu AD$ $LHAD$ @DLefHP HRHGL$iHULmB HHhHIuFHHPHH?LHHHAD$ @MeHCL+H\$Hl$Ld$Ll$ HH(ËB wHHUHHiH5HHl$H\$Ld$1Ll$ H(@HUtLHYHH%HUB LHY@H\$Hl$HLd$Ll$H(HWH/B$@HP LeHuHULmFH߹ EAAM HHHCH+@$@Lmu AD$ LHAD$ @LeafHP HRHGL$iHULmB tkIuHFHhtsHHPHLHAD$ @ueMeHCL+Hl$H\$Ld$Ll$ HH(ËB  uHHnIuHFuHXHLHHUHUB @LHff.Hl$H\$HLd$Ll$H(HWHB$@HP LcHsHLkFHEAAHHHEH]@$@Lku AD$ DLH4AD$ @`Lc{fHP HRHGL$iHLkB HHXHE@%IuFHHPLHHAD$ @MeHELmH\$Hl$Ld$Ll$ HH(B vHHHHE@%h@IuFtVHHPLHHAD$ @hLHXHSPHHHHHB LHmHl$H\$HLd$Ll$H(HWHB$@HP LcHsHLkFHEAA^HHHEH]@$@Lku AD$ DLHAD$ @`Lc{fHP HRHGL$iHLkB HHXHE@%IuFHHPLHHAD$ @MeHELmH\$Hl$Ld$Ll$ HH(B vHHUHHE@%h@IuFtVHHPLHHoAD$ @hLHXHSPHHHHHB LH=H\$Hl$HLd$HHGHP L'HPHGH,I4$N HHPH@ f.HH~E @ulI,$HCL#Hl$H$Ld$HHI4$N sHI4$H‹N h1HHE @tHH놅HxSHHsE @aH A 9H`E L#uLI$'HH9kHH fDfWfHHHE @-HHPfff.ATUSHHHP H/tXHuHULeFuBtHE1!H`HHMHHHHPHCHHH[]A\fDHULeJ %=B u!tuHHHUB uf"H@ D$I4$F*H@ H L$H f.HEHJI$HCL#HH[]A\I4$F tw%=B %=8HHHHHHpH H H9HDI$HCL#HH[]A\HI4$HUF rB HHYD$I4$FDH8I4$F %=VID$H6H HH H9H9>JH H6H H HyH9~)HHHHxID$HHpHUH I$HCL#H`@H\$Hl$HLd$H(HP H/tSHuHULeFu J tAE1HHHwHHPHHHCHHHULeJ u'B tHHGHUJ u}B %=#H@ D$I4$F-H@ f.D$H H HBI$HCL#HH\$Hl$Ld$ H(I4$F tt%=B %=@@ HHpHaH H H H9qHGI$HCL#HTHI4$HUF uJ HHD$I4$FHhH H6H H HyH9~HLI$HCL#HI4$F %=QID$H6H HH H9H9>!@t?H H6H H HyH9~HBI$HCL#HNHUJ HHxHx1HH H H9yH I$HCL#HH I$HCL#Hf.H\$Hl$HLd$H(HP H/tSHuHULeFu J tAE1HPHHwHHPHHHCHHHULeJ u'B tHHHUJ B %=#H@ D$I4$F)H@ L$H H f.HBI$HCL#HH\$Hl$Ld$ H(I4$F tm%=B %=@@HHpH]H H H H9qHBI$HCL#HXHI4$HUF uJ HHGD$I4$FH(H H6H H HyH9~HOI$HCL#HI4$F %=UID$H6H HH H9H9>!@t?H H6H H HyH9~HGI$HCL#HVHUJ HHxHx1HH H H9yH I$HCL#H H I$HCL#Hf.H\$Hl$HLd$H(HP H/tSHuHULeFu J tAE1HHHwHHPHHHCHHHULeJ u'B tHHHUJ u}B %=#H@ D$I4$F-H@ f.D$H H HFI$HCL#HH\$Hl$Ld$ H(I4$F tt%=B %=@@ HHpHaH H H H9qHCI$HCL#HTHI4$HUF uJ HH D$I4$FHH H6H H HyH9~HNI$HCL#HI4$F %=QID$H6H HH H9H9>!@t?H H6H H HyH9~HFI$HCL#HNHUJ HHxHx1HH H H9yH I$HCL#HH I$HCL#Hf.H\$Hl$HLd$H(HP H/tSHuHULeFu J tAE1HHHwHHPHHHCHHHULeJ u'B tHHHUJ B %=#H@ D$I4$F)H@ L$H H f.HFI$HCL#HH\$Hl$Ld$ H(I4$F tm%=B %=@@HHpH]H H H H9qHFI$HCL#HXHWI4$HUF uJ HHD$I4$FHH H6H H HyH9~HMI$HCL#HI4$F %=UID$H6H HH H9H9>!@t?H H6H H HyH9~HCI$HCL#HVHUJ HHxHx1HH H H9yH I$HCL#H H I$HCL#Hf.H\$Hl$HLd$Ll$Lt$H8HWH/B$AA@HP LeLFH}LmAHEHAAcHH)HCH+@$@Lmu AD$ ZLH AD$ @LeDHP HRHGHuL$_H}LmO F AuHC@$Au,G t#HHH}O DIuF uHC@$ŁH@ D$@IuFH@ \D$LHAD$ @MeHCL+HH\$Hl$Ld$ Ll$(Lt$0H81EAtCIuF %=AvHHpO %=HH@HA8 H0H9EHH9:HLH0AD$ @ @LHO  jHH@fHUHIuH}F @ O -D$LHfWAD$ @MeHCL+HzDHHD$Hf%H9skHH)H9AH}HuO 7HH@HxKHAwLHHҐx2H*fWHH)H9CHH/HЃHH H*XLHAD$ @yLH Hfffff.Hl$H\$HLd$Ll$H(HWHB$AA@HP LcHsH;LkFAH EHAAHHHEH]@$@Lku AD$ ^LHAD$ @LcHP HRHGL$dH;LkO u"G tuHHaH;O IuV "@O %=AyHL@MAHHpL9r'H H9v1HIIIH9DH@ $IuFH@  $f. uszqH5HH\$Hl$Ld$1Ll$ H(eDO H$IuH;V O ]D^$LH]AD$ @MeHELmH\$Hl$Ld$Ll$ HH(HHN$IuFH3HH@HIApHSE8HI9wxILHLAAD$ @TLHDHH@Hx4HA1H;O {LHu>IIHHMx1I*fWLLHAD$ @oLAHL H*Xfff.Hl$H\$HLd$Ll$H(HWHB$ǃ@HP LcHsHLkF HEAAHHHEH]@$@Lku AD$ DLHAD$ @LcfHP HRHEL$hHLkJ u#B tuHHwHJ IuF H= J %=É%=AÄTHHpEHH@HIH I HAMtEu6IHAL nID8HH9H@ $IuFH@ Y$LHAD$ @MeHELmHH\$Hl$Ld$Ll$ H(DJ HIuHF J THH$IuFQfHhJHH@HHƻHS>LH#HH@HAhHJ Et LIIHLHIHLHH J4H9oD8SHHLPAD$ @u=MeHELmHLHY HHHLøAD$ @tLH0HHHff.H\$Hl$HLd$HHGHP L'HPHGH,I4$N HH@H@ f.wf. vHHKE @uhDI,$HCL#Hl$H$Ld$HHI4$N bHI4$N Z1HHE @tHHf뎅xtHHHLE @rH A @HqE L#uaI$?HfHuHHHP\f.fv Hg;HHHsE @'@H\$Hl$HLd$H(HGHP L'HPHGH,I4$F 7HH f. Qf.HHwE @HC It$H)HHFHnHHCHH\$Hl$Ld$ H(ÐI4$F rHFf(f. n@dH $ $H55HHl$H\$f(Ld$ H(mf(D-HHH@HHH A 3H0E L#uI$HCL#HHHHE @uI,$HH*H\$Hl$HLd$H(HGHP L'HPHGH,I4$F tvH@ f.vv)HHE @HC It$H)HHFHnHHCHH\$Hl$Ld$ H(I4$F uHrf.BwzH$)$H5HHl$H\$Ld$ H(魷HHMHgDHHHHPHxHH9Pv9FLH諲LH;HHHHH9Jw 1LHvLHi@Ld$H\$IHl$Ll$Lt$L|$HHHWHB$@I$P LkHsH+LsFtH4ELAAPHHID$I$@$@Hku AE -LLAE @LkID$I,$HfDI$P HRHGL,SH+LsU t2%=HEH@HHy$1 [HEHhIT$B$II9tLLAE %=AIEHHHL$1AE tI$`@%ЉÃHtnH1HHL$HH9HHHPIEH9PIHDELH4 耻IUHBHHBIEHH@AE %h AE ID$I^@%@tIT$hHcHIT$hHID$HAE @LsLkID$M4$HH\$Hl$ Ld$(Ll$0Lt$8L|$@HHËU } HL腊U >HE@ f.+zIT$H,B$.@L"IT$B%@ID$hHcHID$hLHIT$H)HLcAυ!9 LcL9 H5sL1iHSHLLHT$LL fDAE %H AE BLL.iHEH@HHHLL_IEHL$IEH@H+U jLL躭HLʾjHLHLcID$ H)HL9|\HI9vIHt` IL9rJ HDEO4LH4臸zHLw HI+\$LL_IHHcHIT$u5JI)%H5vL1謹H=1農fffff.Hl$H\$HLd$Ll$Lt$L|$HXHWHB$@HP LsHsHLcFHEAA褵HH/HEH]@$@Lcu AF LHKAF @LsHELeHHP HRHGL4_HLcB u%B tHHHB TH@ D$fWf.L$Aǀd$D$f.ߨzD$D$1I4$F |$%=AHIH@H1HE8t H)HHEEHH9HLH$[%=AHHXD$D$HD$I4$F ?4)HI4$F DB jfIfHP fWf.AvfW||$uEf.u8Xַ|$f( H)H*D$fWD$f.zL$f(E8tfWf.ztL$\f(EtfWߵLH4AF @ID$Mt$HEHEHH\$(Hl$0Ld$8Ll$@Lt$HL|$PHXÐH5HH\$(Hl$0Ld$81Ll$@Lt$HL|$PHXmHH@HHE1D$D$HD$.f(H HSH藹f(lLHc%HIH@HE1WD$H贶HD$D$HH7D$HH*HB 3LH谔LHЧHD$D$HHD$<$XD$襵$D$H؃HH H*XL$HrHЃHH H*XHl$H\$HLd$Ll$Lt$H8HWHB$@LcHP HsLLkF(LڹEHAA6HH^HEH]@$@Lku AD$ \LHܜAD$ @0LcHELmH\$Hl$Ld$ Ll$(HLt$0H8LLkES Au,AC t"ALH蚗LES A1AI@ D$IuFH@ L$5LH誠AD$ @Me&AD$  fLHHRHGL$SIuV ES D%=IH@HHǁAtHHpHFHEHH*ES AeHfIuLV VES 1A}LH腵D$IuFyHhsHSIHx'LH m@A E1D)HHBHEAAAuȻHH@HHEHtH@tHHuEu ɐLH_AD$ @MeHH@HHAuLES LHEHx~H*f(fW @f(uHt@YtHYuLHAD$ @uyMeAD$ ]BHHH H*XHHH H*XmHxEHLH~AD$ @LHyLHiwHHrHH9tHx&H*fWȮLHAD$ @HЃHH H*XH\$Hl$HLd$HHGH/HPHGL$HUz v H5V'H$1Hl$Ld$HMLHuF %=t0H襱HuF @uQLeHCHl$H$Ld$HHHHHQH9tHBHAHE` HuF @tH"Hl$H\$HHHH3~ wsF %=t'H H3F @uGHEH\$Hl$HHHHHQH9tHBHAH` H3F @tH蔠fH5'H\$1Hl$H@H\$Hl$HLd$HHGH/HPHGL$HUz v H5ƕ'H$1Hl$Ld$HL`HuF %=t=HuHuF @u^AD$ tfLeHCHl$H$Ld$HHfHHHQH9tHBHAHE` HuF @tH腟AD$ u1LHzff.Hl$H\$HLd$Ll$Lt$H(HGH7x%uHHG H)HHFH HVHEHEHH$Hl$Ld$Ll$Lt$ H(L.LvMAu @΃~vKIEH8Ht?Hxt8 PH+xAe IEHIEH@Au %H AE xAE @H 6HAHcHHqHH HHGH7HLH襮HtV HtEIEH CuH@`HHB8H@0HtHHJ@H H1芓IELHHX`wIEHX`H IFI^HEHEHXH LHyH LHʅtaH L9tHLHaAE @tLHLeAu H gLHıxLH贃XX1HHyMeHH91HID$8IEHX8RHIEH H`HP8AHBHIEH@8Lh0IEHXuAVAUATIUSHGhHHcHHGhHGL,LoHPHGL41L9v1H3LH迖I9rHcLLZwAF @uAID$ H)HHH޹LHLsHC[]I$ID$A\A]A^HLL臛DH\$Hl$HLd$HHGL'HPHGI4$H,HHcHvE @t HH/I,$HCL#Hl$H$Ld$HHfffff.AWAVAUATUHSHHGhL7LHcHHGhHGL$LgHPHGM9L,Lv!LfHSLHH͎I9wHUM)IAE @IcHuEHE H)HHH޹H诒HHCLkHEHEHH[]A\A]A^A_LH/ffff.H\$Hl$HLd$HHGL'HPHGH,I$HE @t HHڙI,$HCL#Hl$H$Ld$HHfH\$Hl$HLd$Ll$H(HGL'@$@tjM,$IHȓLHHJHHcHtE @t HHKID$Il$Hl$Ld$Ll$ HHCH\$HH(HHH@8L(HG L)HLL@IhAWAVAUATUSHHHHL"LjL9Ht` HtMtAD$LAD$jI$H@HD$Lt$I$EDL8nA9~AAFEAIDHHcH5HLHMHIBAHuEAE^A)E1HI4H )AHIHA:tC<IyD AL$ 1E0E1gLH蝬IEH IUHHCHH[]A\A]A^A_H5H1vH[]A\A]A^A_HT$LH0Lt$IEDIEH IUHHCHH[]A\A]A^A_AD$-H HHGHH[AFP˞HxHcH讞HTH=;'1T@H\$Hl$HLd$Ll$H(HH0HXFHHHL+LctLAA<vYH HE L)HLLH)IID$I\$HEHEH\$Hl$Ld$Ll$ HH(HHcHD"1贪HaH=ZLdIEH@8L(4H=LH|$Iu HtHH H1ɇm@H`1Hx0pH`Hp0躝HVH5Ӭ1t@Hl$Ld$HH\$Ll$H(HHGHHPLaHGHL,tC u>uIID$H IT$HEHEHH\$Hl$Ld$Ll$ H(fH(lC tHHH0~HH0HHLHAE @uID$Ml$HEHEHLH覐@H\$Hl$HLd$HHGH/HPHGL$I$uJHC H)HHHH蚈HHELeHl$Ld$HHCH$HHfLHHwIH\$Hl$HLd$Ll$H Lt$L|$HhdH%(HD$(1L'M $AAt ILPIwjHT$E1HLHӜHt @I,$HCL#HHT$(dH3%(H\$8Hl$@Ld$HLl$PLt$XL|$`HhLH=HLxMhARHL螎|@uH5LH1nvHHHPH0ʡHHuHCB7.+"L=߄'1(H'LH4t$HH`nI4LAuH'Ic1ɋ1 t`L11tuHc@D;ʃBwt HcƃD\HcHcAɈTuHcHHt$HD ƠHHtM $H芎f.H\$Hl$HLd$H(HGL'HL$HD@$I4$AA趚HHHu.HEx%xGI$HELeHH\$Hl$Ld$ H(ÐHHHH*tHHEx%yHD$Ht H0HF8H9X8t2HuH5sH1ylH pHNHHV@E1HvPHHHD$tHH@8HX8fDLd$H\$IHl$Ll$Lt$L|$HHL7M.AE E1I$P txIM$ K YLA :HLL $苕HHL $t?H M4$|H9hHIH(HHH;(tuIEH(E H5|L1HkH\$Hl$ Ld$(Ll$0Lt$8L|$@HHDA} M 8IH@HD$IHIT$B$2B%t H5ۀ'H QPHL1jbHLqIfIH@8H(IT$B$ tB%x~ƒ`uFI.ID$M4$HID$@$u @%H5'HOL1+jHLjLL,$eL $AA HB(fx tMLLhHbI6LhHOHT$LL6H 1ҹHLpHIHT$1HLudI$ IID$M4$H)L詛tL譐HH(H5L1OH5~'L1>HL)pHIMvLl$H\$IHl$Ld$Lt$L|$HHL?I/E <  DHEH@HD$HEHIUB$B%tH5Q~'H HL1%h4 HLNoHIEx%I/IEM}HH\$Hl$ Ld$(Ll$0Lt$8L|$@HHI H9BhIEP%`HPHNIEH4FHH@HD$HL01L蕇HI`1Ld$Hx0tI`LHp0訓HE1MLHL1h} RHEH8Ht=HxtE H+x聕e HEH@HEH@HEHE @E t HLIP txIM IK U@LA =HLGHHt8H M}H9HIH(HHH;(tuI$H(HEH(E t:  H5OL1fHwaE 9^L苀H ܣHHE1E11LfHH@8HhEH@$u H5{'HL1eP$HLeHT$HLݚHI`LHp0H 1ҹ HLPlHHHT$1HLrI IIEM}HHH(HLUzH5AL1ߑ)Lu;IIEM}HHT$LIHEmLˋH52z'L1x HLckHH (fH\$Hl$HLd$Ll$Lt$L|$H8HWH/HBH4Hwz%L.HC H)HHCP$uj@%t1XHfK|4HCH+H1HC@$bHELmHHCHH\$Hl$Ld$Ll$ Lt$(L|$0H8HHH{H9HGwuHCP$7fDfA} IEDpAHC IcH$H)HH9fAE E1EtI]fH51-LHrXIEHp@H#HwHtH@IEHHp@'OIEH@@DE@H5tH1LHLDE@ffff.G0HW(G0H4;w@| Xff.SHXOCPCXxH{HHcHtsHCH[H='h'1@xSw@HwDxH8HcHBsHC8[H=g'1xfffff.AUATIUHSHG@;GDI$U@HM8H@HcHU@I$H@I$M@HU8H@HcHQHu8U@I$HcHH։M@Ad$ M@HcQHHE8AD$L U@I$HcHu8H@8H֍AHU8HM@Xby1XHIMI$HC8H@uHx8tPI$HC8H@HtHLHg{HC8I$1HHX8pHH`I$HP8AHBHI$H6HH8H`Hx8t H`HP8HQPI$H@8L`0H[]A\A]fDI$HHp8zI$HXH[]A\A]þsy?H_IEHI$-ffffff.SGDH@BGDxH8HcHpHC8[H=e'1uffffff.AUABt.ATHcUHnSHHDg@BL%A;GD~HyK@A;CDHC8Hcщ,ЍAHS8HAC@HCD[]A\A]ff.SG@H;GD~yK@HS8HCHcHAHS8HK@[fH\$Hl$HLd$HG@HIԃ;GD~4yK@HC8HcH,ЍAHS8HL$AHS8HK@Hl$H$Ld$HH\$Hl$HLd$HG@HIԃ;GD~xK@HC8HcH,ЍAHS8HL$AHS8HK@Hl$H$Ld$HAVAAUIATUSHE1FfK@KDIHS8HcHAHS8HH,AHS8HAD$K@A9|71HbmKTHƹHHcC@;CD~Hw[]A\A]A^fff.H\$Hl$HLd$Ll$H(G@HIÃ;GDcK@HC8HHcD$ЍAHS8HL,AHS8C@tEHH,AHS8HAHl$Ld$Ll$ C@H\$H(9wH\$Hl$HG@HH;GD~ wH+kK@HC8HcHH,ЍAHS8HK@Hl$H\$HÐH\$Hl$HG@HH;GD~vK@HC8HcH,ЍAHS8HK@Hl$H\$HfH\$Hl$HG@HH;GD~LvK@HC8HcH,ЍAHS8HK@Hl$H\$HfH\$Hl$HG@HH;GD~uK@HC8HcH,ЍAHS8H$K@Hl$H\$HfH\$Hl$HG@HH;GD~uK@HC8HcH,ЍAHS8HK@Hl$H\$HfUHSHHG@;GD~4uK@HEHS8HcHAHS8HH,AHS8H K@H[]UHSHHG@;GD~tK@HEHS8HcHAHS8HH,AHS8H K@H[]H\$Hl$HG@HH;GD~ltK@HC8HcH,ЍAHS8H K@Hl$H\$HfUHSHHG@;GD~tHCK@HS8HHcHAHHs8HHƍAHS8HH,AHS8H#K@H[]UHSHHG@;GD~sK@HEHS8HcHAHS8HH,AHS8HK@H[]H\$Hl$HLl$Ld$ILt$H(L&1hHAT$ HŃv`I$Hx(tU tPHL]AD$ u_I$HUH@(HB(AD$ ADžt% E E @}ADžtHH$Hl$Ld$Ll$Lt$ H(fLLE-CAt Au9AT$ % AD$ EXHLgstLLlHHtHpLHCH+H@0H[]étHfWf.@  |aH80f.USHHH/HuHtKF u(tKHHx„u+HCH+H@0H[]HHtHPHwHu?fHCH+HH[]étHfWf.@  ƒ`H80H\$Ld$E1Ll$Hl$H(HHHpH(LhHt/F HHHPAH@1Ht*E tSHUHHJHA9tJH IEHCL+HH\$Hl$Ld$Ll$ H(étGHEHxA9uH IEHCL+H봩t8HE1HxANt`HEfWf.@  [tOHfWf.@  DHuLE1HDu(1HH,__DH80HE180AAWAVAUATUHSH(HGL?@$D$#HNHcHNHPL$LfIcD$L4ID$LwH`IcD$HHG`HGhAD$ G0AD$ID$(HD$AD$0D$AD$8hAD$HDžHEhE1MLuHPD(HUhjHKHV9HHH@8H0FlHA5HxM;IcH IHPHHHEHMHH[]A\A]A^A_fDHPH!!H`1Hx0tH`HHp0lPHHP@HMDžaHIHf~ 8|$&D$HQ/httfA} 5fDHHH@pHEhHcHLmHEhDž( HHHUHUH[]A\A]A^A_1ҹ"HXA5HHHH@8H0FtoHH:HbHH5eHDH1[]A\A]A^A_"fDhHHrbHHH@8H0*1ҹ"HWHfDhh:HNHcHNHPHHVHBH`HcBHHE`HEhB E0BHB(HB8hHBHDb1HL&,H`H@XHM)LLLH1Ht$ LDH0}HuJCfHU@HHM8HHcH@8H@(HHU@HHX8Hs([HC(kfHhDO:ff.AWAVAUATIUSHHL7NHcHNHPL,LnHwIEAMH`IcEHHG`HGhAE G0AEIcE@AU0M}(ƇH,Ht-HcHI9H HHEfDI,$IuxL IM`Ht-AE%=HHX8H3LIEpHIHtI;$xtLM$L,L,ID$HH[]A\A]A^A_I9HaHsLHH0I9HEAƄ$w5IEhHHHHN[I6H0HEAWIAVMAUIATUSHL9H$3V NfHF(MgM9I I$F$Hn(HH H[Ht}C f-fwH{(HtH4$9uHH[]A\A]A^A_M9tID$@ f-fI,$IH$MLHLHuXHmHtI9tE f-fw1I$fff:I HPIl$|H5\L1CH\$Hl$HLd$HIHH>1҅x,D$HV%=@t?=`t1HHU-HH$H$HL$HĨHUH5UHL1fH\$Hl$HLd$Ll$HLt$HHHI$HvH}:BHJtEHLHHHH$(H$ L$0L$8L$@HHÐ1}:Bu&}:Bu}:AuH5lQ1cHH3G@ItvHL(H$L=xDHH޿ =xH$H9D$X}!LLH:HLH#HLHHݹ"1HHIIvf.AWAVAUATUHSHHGH@$D$Tt#D$TtD$Tt ,D$THLcHD$0H CHEfx 63HT$0%=9 HL$0H@ f.'ZHD$0@{HH E1f. H,HH*f(-t\%YYf(Xf.? H,HH*\f(YXf. H,HuH  IHH5UAH1D$$TDHL$0HH@H$HHHD$8H|$8t H$u#H5RH11HĨ[]A\A]A^A_HD$88tӀHEfx 5HH$HH@8Hp(H HT$8E1H#*HHtQH H9tEID$H IT$HEHEH]Ht$0H$"HGHD$8Ht$8HHD$@ HHH@8H@ HHD$xE 1HR1HUTHD$HHD$XHDŽ$HT$ H5oQH/ALeEIcIHI)I$S сtHL8A  HD$XD$dHD$htHHx E1E1IEP;ETLeH$H|$Xq H|$ht Ht$hH Mt LH Mt LH H$HT$x$fz gHL$xHH@H;$Ht$xڹH*L(A] 8IUHx LLD$8H HOHt$H1H$/HL$HHHHHD$@,>HD$ HHHD$(EPETHE L)H6HUhHH;UpHUhLH+EHHHMl$ID$HT$0IT$HE:4HHB%ALeEHD$XD$dE1HD$hE1EP;ETLeBfHH3HHe9HHt$8HRIEHLD$8Ht$HHN1H-HT$HHHHHHHD$@\HHD$XHL$@9. HUTD$dHD$hE1E1E1Ƅ$Ƅ$HT$(HH/IL|$hIH@8HHXHHHH8HL$X|/Hp@HtH9t$Xt H3!HH@8HH@@HD$hAI\$K D$d|LLH%ILH$2IU.CE1A9~HcM[]A\A]1HHtHCHH0aLAEA;ECAEHHcAHHPLL,LiAEH+CHAEH`IEHChH+C`HAEC0AE AEHAE0Im8IE(HEH@pAEhIE`HEHxpAEiHEH@pC@;CDoK@HHS8HcHAHS8H!K@HEH@xHHH@HHHL#HCHEH@@OH0HChH'뇃EHHZH-AEH\$Ld$IHl$Ll$HcLt$L|$HHL$H@HHHL4IHHT$LxxLD$DHPEMHH+*HHHHp8HsTHCPCTHC H)HHHH@8L HShHH;SpHShHH+CHLeHHct$HHMHEtLeL}1L#LHH+~'HuHF tH@D$CP;CTH+HDD$E~'D$H\$Hl$ Ld$(Ll$0Lt$8L|$@HHIH@PH|$tHt$H IHǀMtLHIH@xMtLHIHǀH5H^DLD$Љ)HHHHcHfH D$H-HShYfAWIAVAUIATUHLHSHHdH%(H$1LD$L'\(HH!HuTHEEPETH`L9,ht 0 H\$PH5H:L1H߃0 HHSHsHHHHHHDž|(HHHHHHME@;EDnJ M@HU8HH E1HcAHU8HuHM@IH`HD$I9AEHD$ HEfD$@7D$DHC;CtCHHcAHHPHHQH`I9ιDL+eIDbH`HBHEhH+E`HEBE0B BHB0HB(hB8HE@ HB@BHH[]A\A]A^A_þLH]H!LHHEA|$<7It$@HLHkLHwHCI HCAOH5]1LHHtLH}E1LHt0H0LHUID$PHkHCI HCH5 LH1LAHH1HLHlH5* LuHLLLIALMEIHH5 LLHHHH@8H@ IHHXIH`HIMEH=&1 ffff.ShHHuHpHt7 [HHH@8H0 [H51 [DAWAVAUATIUSHHGL7@$5InIIE C U tSсHE f.@ H5 'L1_H[]A\A]A^A_Éс|C uƁttu.DHEH80yC JHLYU /HLGU cHL(C HLf.zC t&H@ f.Z@ECHEHhHH@H9|uH)IcT$XLxIcD$PDIH9bID$ HcL)HH92Mt7M,/LHHHnLLH4HCHL9uO4ID$M4$HH[]A\A]A^A_ID$LI.H@(HPID$L,LTID$@%@I$Ht x H5q[LuHHtCHH@8H0Ht4EHEHhFHH@H9M.ID$M4$H/A'sHftċE HEHtHPHwYHtH80HLf.gHL1CHHLID$LH@(H@(HPID$H41HM!ALLuRfHEfWf.@  LLL]IDLHEHxHLv@qHHBHD$L*HLRP HÉ%=t1ҹHLHsPHHOH9GrZ1C^tHC0HCP1c\HHC0HAHcC@HAHHcHAHCHcHA H9sPsH[]Ít6HHHJHU늋zP|?HHfH\$Hl$HHHHtH;HHEH\$Hl$HAVL5AUAATIUSI$OD9PHcHHPH,HoEwzIcLHuxL0HM`Ht,E%=vHHX8H3LHEpHHHI;$xLI$oIHuHLHuHLI$o AHuPGLI E8A$hHEHI$Hu@HtLLI$o}hu7Hu8HtHU`HHHPpKI$o[]A\A]A^I$LHH@8Hp I$HHP8HEPHB HuXHBHuQHH+B8HHBHEXHHB8HHEXHH@YHEhHHHHvHZLrLzHHEXLHEXH@HHEpHHHEXHL|$H\$IHl$Ld$Ll$Lt$HHHD$@HGfx D$,P$@tXH\$@H;HH\$@W 0?HL0|$,u+A>u%H5L1ILp(M:A>0IILJHD$PiHcD$.D$/HHD$0HPHD$PL$HD$\ IHt'HL$L$PLHL蹹HIIIIHYI ƒwHHcHHH0~ It`H"1L{IHOHHW@E1HwPLyHrHH@8Hp8H^II$HxHHxP~Hh`HH}HG8Hp8L9tHu늁D$.HAHXH5L12ILH$XH$`L$hL$pL$xL$HĈHA8HHxptHXHTEHAHXD$/:E1|$,u?H\$@IzH|$0HD$0HXHHL$0D$.E1|$,NH&MXLILJXLAH1HLH}H5mHL1IAD$AGPA;GT<ILpI;AHcAHHPH,HiHcEH4IwI7HcEIHIG`IGhE AG0EAHE(IEЃI$HxPmIHH@8HX HH@HDpIG HcH)HH9EIcI}HHD$8HHT$8H0HD$8UD$-IDHD$HIcW0IG(tA;w@FIwTLAGPLLAGT,I$HxP}|$-t#EtH\$H1H3LHD9uIWhHI;WpIWhYM+oLLID*HD$HII$PPILNHcHNHPHHVHBI`HcBHIG`IGhB AG0BAHB(I{L3IH5HLL1IpIH5 L1IK|$.t,H|$Pt$HD$XHtHT$fx tzHBHHuI9hjH|$PnHD$XH`fx Io fDLPHcHDPHIGfx uH5SL1ILyLI%=^H5L1}IFL}h@H]XHH@HD$ IG L$ Dt$ H)HAHcH9~EIcI}HHD$8HHT$8H0ILHH@8Hp `IHHP8HEPHB HHH+B8HHBHHB8HHH@H@HHL LT$ HHL!H@HIGH]XHUHD$8D$-hHU8HE`HHHBpcHu8LRHLI}HXx8Le8I$@pHE`I$H@pI$HPpHEHdEHPpHL9AG@A;GDAO@IIW8HcHAIW8H!AO@I$H HPpHHIHHIG}hLIHMH@8H@ HEPIHH@8tA@L@ IIcLEXHEpIHJHAH9Hz8HH9t(H)HHHBIH8IHBHH9A^AvHcHcHjHLD$LD$IHB8IHIH:HT$8IuLD$4LD$IHh|$-tIHHI`HtLHPHtb HuAhtH\$HII$Lh@H5 L1IIo(E11D$-HD$81LIIHcAHHPHHQHcBHIGIHcBHIG`IGhHcJ AO0BAHB(IIG(4A;w@LH5 L18IH5! L1I|$/HD$`HLIWhA^HcML"E8AhHEHIEEhHLJIoAD$ILHH@8HHKAh@C ЃtHLC HK L`AhH5y1LHHIWhHI;WpIWhII+GHLH !I/I$A1HLHP`pLuI$H=&1LLI$LDIWhmHLff.ff.USHHHGx$Hp(`H;A}HcAHHPH,HiHcEHHCHHcEHHC`HChHcU S0EHE(HHC(t;s@|ICP;CT1HEH`HEHH[]ÉHaHmDHfDHfDHpa!HHH5[]1HCHH5HP(H1[]UHSHHGx$Hp( H;F|oHcFM0HHPHH^HcCHHEHEHcCHHE`HEhS U0C9щHC(H3HCH`HCPH[]ÉH3H{HcHU(H4~Hp==HHH5[]1HEHH5HP(H1[]ffffff.Hl$H\$HLd$Ll$Lt$L|$HHHGL?x$Hp(H;FNHcHNHPL,LnIcEHIEH]H`IcEHHE`HEhAE E0AEIE(HD$AE0D$H@AE\IuHHIuHHHIE1HD$ƅ|$I9IAuI7HKHI4$@LeHHhA1AHD$HHtHzHD$H\$Hl$ Ld$(Ll$0Lt$8L|$@HHfH5HH\$Hl$ Ld$(Ll$01Lt$8L|$@HH@HH1HpH5b뚀|$H3HBHI4$ƅHI9IAuH3F ufIuxH脼IM`Ht-AE%=HHX8H3HEIEpHIHtH;xtH1HYHD$HA}hIu8HmIU`HHHPpuXH II$IcE@AL$IEXLeHHD$HIAHD$DAE8hIEHHIu@H\HVOI7F @xHEH5HH\$Hl$ Ld$(Ll$0HP(Lt$81L|$@HH鐾HHHH@8Hp HHHP8IEPHB IuXHBHuQHH+B8HHBIEXHHB8HIEXHH@IEhHHHH'4HZHvH~HIEXHIEXH@HIEpHHIEXH/fff.Hl$H\$HLd$Ll$Lt$L|$HHHGhHL?LgHHGh~vH芅H5yH;FKHcIH$NHcHNHPL$LfIcD$L,ID$LmH`IcD$HHE`HEhAD$ E0AD$ID$(HD$A$A\$0H5HH\$Hl$ Ld$(Ll$01Lt$8L|$@HHlv;t茄9UH;pYHxHHIHBHEHHEH\$1Hl$ Ld$(Ll$0Lt$8L|$@HHHHHhD$AD$8hID$HEt$H6HH HI]F8HHxEHHgHH@8Hp(OHH80f HDAWAVAUATUHSHHt$HT$hHhHHH@8HCL+HT$MeHBI9HD$HJ I9UHAHHؼHL$HT$AHH轼 H@HO#HcHHPHHGH-8u9OHcHOL}HPHH_HCDsH`HcCHHE`HEhC E0CHC(H;Dc0VC8hHCHDktz<|<<A1<.tuE1ɉHVD)@ɉFHFtHF JE HHt HH@@t  HHZ@H<>tE1<.u{.u{.{HAoH<|tAMH<<6H<H[]A\A]A^A_Ht$@LN Ht$@H|$@O HuI0C %= H$H޹LI0Ƅ$C : H$H H$HH0H9QH)H|$@H$GHHH@H$HHHD$HMHD$HLdD$oH$H$H$LpHBHD$PHD$XD$dD$hHD$pHD$xƄ$I)Ƅ$HDŽ$H\$Ht$AIwH=HcHIID$H9D$xsA<$ tHD$HAD$ IAH5HHDIHTHT$PB y IHt$PHP fWT$d1 +f.)‰%)t1Y 9ut1^9ufWf.Xf.\$d1Lt"fD#H;T$duD$dMdƄ$H|$P1GHH@H$HHHD$XH$$HD$P@ tI`@%3 Ƅ$$AHL$XH$HcHT$XHD$XH9HD$psfDH< H9u1D|$o[H\$pHڄHf< t< t< t< ft< 1fDHuAIHD$HAI$HL$@A tI`@%]HT$HL1HH9uHT$HCMdHTHT$H#D$hLd$xƄ$ A$I0HL+ L`$tI0H I0HHcD$hHI HcD$0HIGHHHPIGIH)H|$PD$oGHT$Ht$P"LHD$XHL$XH$|$oHT$puH< t< t< t< t< fDH9wAI$/A$I0HLH+HBI0l$hH$tK I0HHcHHcD$0HIGIIGH@(AH5HHDIHHL$PA Ht$PLf(L$d+$)L$dL1҃ H9uBMdHL$PA) HH@H$HHHD$XH$H\$P$C I`@%HL͞;$$d9D$du HHD$XH9D$XHD$psKHt$X1H<  HT$X <  $HEH;T$p$uƄ$@HD$P@ HHH@H$HHHD$XH$HL$P$A S|$d;$M$$HHD$XHD$p1HT$pH9T$Xs:HD$X t*HH;D$pttHH;D$pƄ$uD$p+D$X$Ƅ$$$y$i H\$X x-A $HIuكAD$  yHs&<DHLLLM謽AHL$ IHcHD$HH9L$(^HD$(Ht$(H6\$dHt$PFT$d+$5)D$d L1@ H9uAMd$9D$d<\$dLl$XHcÉ$H\$XILl$pHHO< tF tA t< t D|$oHt$pHE Ht$pHHI9vU t΀ tɀ tĀ t t$I(EȈ$耼Ht$pHHEHt$p뙄pH9t D$hF$I0HL+ L`$tI0H I0HT$PL]@tI0HHhI0H$HHPHL:H9HIL $Ƅ$Ƅ$Bf(fW \f.>A I`IHH9I`@%L$$LT$dHf(¸LHcD$dII`@%$HT$pHt$PL蘖Ht$PF @pL豽cHT$pH9UL$d+$t#)L$d~L1҃ H9uBMdMD$H=LHu=I0HHL9s+AP t t t t @u IL9rA.A@.A@.l$hLd$xHD$@@ 6I0HLH+HBA$H$HT$HH$HcLijH$Lb ߺH$I0H$LԸI0HL`L l$dL1 H;T$duD$dMdHL$PHD$pLH+D$XHHBHT$PI0]H\$PHc$HHB$Ht$XLHuA HuIJI`@%HL臗‰$H$9x9T$d$Hc$HD$XHD$p1Ht$pH9t$XHD$X HH;D$ptƄ$HHD$XH9D$XHD$prH|$X1H< t:HT$X$HEH;T$p$4< uщ+L$X$HT$pAH IP HtHD$A9@LiLHHID$PHH41ԈHEx$&AD$\AD$XAE tH`@%tAD$`AD$`IT$PHLLHHLHT$HHHYAE H`@%DžML$PtAL$`fHJHH@DhLEueHHtYIA|$XyAd$%HEL}H8HT$"LHcI}AD$`bLGUfHP :{tu1B:ptu%B:etuB:Ztu AL$X lfAd$X_DAd$`%DAL$`DrHHHXIT$PHHHHHpIT$PHHH4tCDHH†ML$PHT$LHHIDžH9HLHIAU AWAVAUIATUSHHGhL'HcHHGhH,HoHl$HH+GHD$ HGHPHGHHT$8Lt$@M 1$HH@IHHHI9HuF utL9%=fuqHHfDLȹHI9rHufF uHI9sHcD$ H,ImA;HE1LR%1L>3L%LH+D$H5Hv(HL1[]A\A]A^A_IHHcHAƅJHD$xHL$XHT$PHt$HH|$@LL$hHD$HD$pLD$`H$1THt$8HcLI]PHD$8@ @ HcD$ HL$8HHHHPIEIUHH[]A\A]A^A_H5Ht$HH|$@1HT$PHt$H1H|$@ɛpHL$XHT$P1Ht$HH|$@詛PHL$XHT$P1Ht$HH|$@LD$`脛+HL$XHT$P1Ht$HH|$@LL$hLD$`ZHD$pHL$XHT$PHt$HH|$@LL$hLD$`H$1'H|$@1HL薧H\$Hl$HLd$Ll$H(HGL'HPHGL,HG L)HH(H`HXWu`H(HXHtRHbHHLH!AE @ujID$Ml$HHCHH\$Hl$Ld$Ll$ H(Ã"tEID$H IT$HHCHLLIBLH腦H=1HNffff.H\$Ld$HHL'藫H IT$ID$HCHLd$H\$HHffff.H\$Ld$HHL'ןH IT$ID$HCHLd$H\$HHffff.AVAUATIUSHGL/h fTXfUH(HHHH\A$I$(LID$ L)HLLLxIID$@$LLI]AMIEtfTiIHLόI$ID$[]A\A]A^HIuFLHHXM$(IIIIʃA$I$(LIID$ L)H ID$@$ (MI$ LH詜IEIHLHL茜IEIVHLًHLnIEAVHLI 7HLLIEI^HŐHt?HHt7HLHH;tHAHLHuM,$ID$[]A\A]A^HIuF % =1 HM$(HIIIIZA$E1"H=NH1MIjE1"bH=;1+ILE1"!fA?L(IIIIhI܁A$NE1"i[qA$t %A$ID$ H)H9ID$@$OWMM$ LL{LHCIUHLJxLL߈HCI]H@Ht?HHt7HLHtH;tH0AHLqvHuLLI_}IGIcUHLJkLL_IGAUHL,kID$I$HH[]A\A]A^A_H3L{FHH@I7FHHXM$(MIIIhIH$+A$@E1"I_H3F % =)1ɂHM$(HIIIhMI裊A$I$(LHI$(LMID$ H)HHH޹L衆HID$@$LDLHkjMHCtfA>IUHLuID$I,$HH[]A\A]A^A_I$(LHH(E1"H=HH1ILqH$fAUHLhqH= 1لIH=ܐ1迄I(;mff.+mff.AWAVAUATIUSH(HGH/Dh HG H)HOfA;fA<M$(I@I8IHIIPzyA$E1" mA$t %A$ID$@$MDM$ LLHEIHLtHELLHD$蛄HEI^IHt?HHt7LLH4|H;tHALL1rHuLLAHHD$LHpIcV gLLHl$HHD$LHHpMcnLfI^Hu3\HLL݃HEHHLLHH.H;$ID$ H)HHHLCHHuL}FhHH@I7ŋF % =HT$ L~HI$(t$ HL@L8HPHHHHT$H$|vA$I$(LHIoHH 脂fA;HOHuF % =1L}HM$(HI@I8IMPIHA$I$(LHHI$(LHMID$@$4L臞,LH]譃MHHEt$fA;IFHHt IcNLMID$I$HH([]A\A]A^A_HH@HD$ HHNHHID$I,$HH([]A\A]A^A_E1"|HT$ H= H11I\E1"H=H1 IILypGLyH=̋1I鋘ff.{ff.H\$Ld$HHl$HHGhHHcHHGhHGL$LgHHHGLH,4zHcHHHH?OcE @t HH辇ID$Il$Hl$Ld$HHCH$HHH\$Hl$HLd$HHGhHwHHcHHGhHGH,HoHVv L$HptnuGH LH@~AD$ @u>HELeHHCHH$Hl$Ld$HHcLHbbAD$ @tLHφH HEHCH+HfD[ff.Kff.H\$Hl$HLd$HHGhHwHHcHHGhHGH,HoHVv L$Ht;HcLHaAD$ @uEHELeHHCHH$Hl$Ld$HHEH HUHHCHDLHՅ雄ff.鋄ff.H\$Ld$HHl$HHGhHHcHHGhHGL$LgHHHGLH,{HcHHHH?`E @t HH>ID$Il$Hl$Ld$HHCH$HHH\$Ld$HHl$HHGhHHcHHGhHGL$LgHHHGLH,_HcHHHH?/`E @t HH螄ID$Il$Hl$Ld$HHCH$HHH\$Ld$HHl$HHGhHwHHcHHGhHGL$LgHVv H,LcHcHHHH?_E @t HHID$Il$Hl$Ld$HHCH$HH\ff.H\$Hl$HLd$HHGH/HPHG1L$ЗHHL_AD$ @uJHC H)HHHH{HHELeHl$Ld$HHCH$HHfLH%ATUSHHHGH/HPHGH|$L$8HC@%HuFttHH@H.wHH$H+T$LH2^AD$ @uJHC H)HHHHzHHELeHHCHH[]A\HsfLHU^xfDH\$Hl$HLd$Ll$H(HHGH1HPHiHGFL,HH@SAHC H)H~cEx@IcLHP]AE @unHELmHHCHH\$Hl$Ld$Ll$ H(HEH HUHHCHHHHyHraLHPfffff.ATUSHH0HWH/B%wHuFHH@HHD$(fz &Ld$(eH(LE1HưvHtL(IİHC@$HC H)HyCP;CXQM&IcT$Ho&EL$ED$ H5HHH IcT$H-p&HAD$lD$A$D$AD$$1$HH)gHEHCH+HH0[]A\f{qHSfMtHC H)HGCP ;CXIc4$H菁HHfHEIct$HsHHfHEIct$HWHHfHEIct$ H;HHpfHE Ict$HHHTfHE(Ict$HHH8fHE0Ict$HHHfHE8Ict$HˀHHfHE@Ict$ HHH諀HHeHEHȓLd$(LHSfz &H(LE1HHL(IHEH HUHHCHH0[]A\þH,jHHH]vHlD Hi#HH H+vHˁff.ATUSH/HHG H)H HLeUkH*H*^HHH|dHEHC@$H*H*^H[HH0dID$HH*H*^-HHdID$HIH*H*^~HHcI$L#HC[]A\HH赑IHHtHfH\$Hl$HLd$Ll$Lt$L|$H8HHGH1HPHiHGFL,HLxHuHFHLpHuFHD`uiDDDpHcLHHH?VWAE @t LH{LmHCH+Ld$H\$Hl$HLl$ Lt$(L|$0H8HX1H/gHlAfiHlIDlIff.H\$Ld$HHl$Ll$H(HHGH1HPLaHGFH,tuHLhI4$FtTHxDaHHcHXVE @t HHzI,$HCL#Hl$H\$Ld$HLl$ H(Hl@ lIfDH\$Ld$E1Lt$Hl$E1Ll$H(HOHGHH/HQL,A%~.HuHFHLpHuFHD`udDDdHcLHHH?dUAE @t LHyLmHCH+Ld$H$Hl$HLl$Lt$ H(Ht1H?eHkAfnjIIff.H\$Hl$HLd$HHOHGH/1A%HQL$tHuFHH@HOsLHcHTAD$ @uIHC H)HHHH)qHHELeHl$Ld$HHCH$HHÐLHxHjyH\$Hl$HLd$HHGHH/HPHGL$t HtsHLHSAD$ @uIHC H)HHHHipHHELeHl$Ld$HHCH$HHÐLHwHǃH\$Ld$HHl$HHGhHwHHcHHGhHGL$HVLgv H,LbHHcHRE @t HHawID$Il$Hl$Ld$HHCH$HHf.H\$Ld$HHl$HHGhHwHHcHHGhHGL$HVLgv H,L`aHHcHRRE @t HHvID$Il$Hl$Ld$HHCH$HHf.H\$Ld$HHl$HHGhHwHHcHHGhHGL$HVLgv H,L`HHcHQE @t HH!vID$Il$Hl$Ld$HHCH$HHf.H\$Ld$HHl$HHGhHwHHcHHGhHGL$HVLgv H,L `HHcHQE @t HHuID$Il$Hl$Ld$HHCH$HHf.ATUSHGhHHwHHcHHGhHGH,HVHov L$H_LHcHPAD$ @u:HC HH)HHH)mHHBLbHHC[]A\HLHtfAVAUATUSHGhHL'HcHHGhH,HoHH+GIHGIHPHGL,IcL41H7^HC@$@LH)HHI4$Hl@$HH0HnHcLHLHkiOAE @uWHC H)HHHHlHHELmHHC[]A\A]A^H@LH1HP{LHsHuHULH+{e fu.HI9r%HuFu1ҹ"H\tIcL4LHkH1H^Hƹ1H HAWAVAUATUHSHHGhL/HcHHGhL$LgLH+GHD$HGHPHGL41HX\H$p{fD$ [q8 xfct܅1|$ !L$HL$|LTyHD$0HHHD$5yD1LHvAp8tLH[^HT$HI^DHJY|$ LmtHL$x1D$pHcH)LW~Ãvۋ$poP@HcLHLAF @HcD$ItHE H)HHFLvHEHEHHĈ[]A\A]A^A_HcD$HLHHH]'LAF @THE H)H(Ls|$ LcHELeH~ @u+IM9r"I4$Fu1ҹ"HetHcD$L$LeH1H[$t,OH5kH1mOLHx\HT$Hf\$|%$pN$tNHH޹HgHLH=oHHxgH1LHon$xDž|$ HE\$ @$@ugLL)HHv%D$tALL1HfVIuHD$t0g@Ht`HH0DHKD$tIt$IT$ALHf뢋$pM$t1茀?1HHHAWAVAUATUSHHHHGH1HPLyHGFL4HH@I7AFHhLl$txDLHrD$Hcуt %LHHAF @t LH\mM7HCL;HH[]A\A]A^A_HUDLHHru,l8u,tH^Ő=v^fDHǃ\HcǃJAUATUSHHHGL'Hl$HPHGL,1HqD$Hcуt %LHGAE @u}HC L)HLLHvdIID$Ml$HHCHH[]A\A]H|T1HH qbj8utLHksHǃKHcǃ9H\$Hl$HLd$Ll$Lt$H(HGH/HPHGL$HG H)H~b1H6U\AtgIcLHFAD$ @uDHELeHHCHH$Hl$Ld$Ll$Lt$ H(HH.cHLHjH5HQHIt>HH@8H` THcIEHH@8H0EIEH@8HH XvHH HHH DH HEHCH+H&Hl$Ld$HH\$HHH0L`Ht ~ HbHH@8HXHtIHHxHHt=Htx)HIT$H@HH ID$HEHUH2HH@Hht5ID$H IT$HEHEHH$Hl$Ld$HfD HH@8HGHXHR5fDUSHHHH0HhHt~ tzHaHH@8H@Ht1HHxHHt%fHEH HUHHCHH[]g0u HEH HUHHCHH[]HH@8HvH@Huhf.H\$Hl$HLd$HHH0HhFHL`HuHHt ~ HaHH@8H@Ht@HHxHHt4LLHEH HUHHCHH$Hl$Ld$Hf8u HEH HUHHCH@YITHH@8HXH@HcFfffff.H\$Ld$HHl$HHHGH1LaHPHGHH,t ~ H_HH@8H@HtLHHxHHt@[HHHjBE @uyID$Il$HHCHH$Hl$Ld$HeDEu ID$H IT$HHCHHH@8H\H@HgJHH`fwff.AVAUATUSHGHH/@$sE1AHuHHt ~ eH^HH@8LhMIMHyHu*@LHHLAHEIMH(HyHH H0XujH(H0HtWHp1HnIIEu HC H)HnHHH]HSAuH+HC[]A\A]A^H%dDEu HC@$tquHEH HUHHC[]A\A]A^HLH=_yAfDHH@8HLhMyHyfH\$Ld$IHl$Ll$Lt$H(HH0HXFHL0H3LkHt ~ L\HH@8HhHt`H]H{HHt fnH]LRHHCHt9IEI$ IUI$ID$HH$Hl$Ld$Ll$Lt$ H(bDEu IEI$ IUI$ID$H"1xI&HH@8H,HhH7f.H\$Hl$HLd$Ll$Lt$H8L/HGIuHPHGFL$HH@HD$IEHH(HD$Hv |/HUtsE1HKJHcLHHH?>AD$ @EMetHpHCL+Hl$H\$Ld$ Ll$(HLt$0H8ÐHD$HHHD$v</tHHQHA`H1HMGLHa`HT$" wHH\$L|$HHl$Ld$ALl$Lt$HHHOHGL'HQL,A%~I4$FHHH@IAI4$FHH@HD$I$HH(HD$Hv|/HU|E1DHAuHcLHHH?|LHO`YHT$"HhuHQfDH\$Hl$HLd$Ll$Lt$H8dH%(H$1HGHHPHGHiL,ƇH1FHH8HWAHC H)HExuIcHLHVAE @HELmHHCHH$dH3%(H$H$L$ L$(L$0H8HEH HUHHCHHHH=WHMD"1tHLH^D_fDH\$Ll$HHl$Ld$Lt$H(HHGH1LiHPHGFH,HL0IuF~HL u\LL.8HcHHHH?9E @t HH^ImHCL+Hl$H$Ld$HLl$Lt$ H(H܄1HI둹"1HrIq"1rIFfff.H\$Ll$HHl$Ld$Lt$H(HHGH1LiHPHGFH,HL0IuF~HL u\LLOHcHHHH?8E @t HH]ImHCL+Hl$H$Ld$HLl$Lt$ H(H1H|H둹"1HqIq"1qIFfff.H\$Ll$HHl$Ld$Lt$H(HHGH1LiHPHGFH,HL0IuF~HL u\LLoHcHHHH?7E @t HH[ImHCL+Hl$H$Ld$HLl$Lt$ H(HĂ1HlG둹"1HpIq"1pIFfff.H\$Hl$HLd$Ll$H(L/HGIuHPHGFH,t{HL uYL_HcHHHH?6E @t HH [ImHCL+Hl$H\$Ld$HLl$ H(@Hށ1HF딹1oIwfLd$H\$IHl$Ll$Lt$H(HOHGL7HQL,A%=I$HH@8Hp(HpHVE1L:RHHuID$@%H3F!HH(1A$H{ uFHH@8Ht:H@Ht1HHp8HL9X@HcHH?fD1LL5AE @uLIFMnI$ID$HH$Hl$Ld$Ll$Lt$ H(Hl1LDPDLL5YI6IV H t^uFHH(H}~"1L nH@HHx Hu1I$HH@8Hp(HHE1LPHHL1LL3AE @MnA$I^ID$I$HHxHHPjH5L2Hg2HcHH?Z"1LmHHLHHH@8Hp(uHLHHH@8Hp(H~1LJCJLLW#DH\$Hl$HLd$HHGH/@$t_HP(HGE1HHt x MtA$0< HEH HUHHCHH$Hl$Ld$HHuV HL H1LH=gDHH@8HaH@HTHHp8HDHTL1ɺ 1H7tDHEH HUHHCH%fDHHx >HE1@HEH HUHHCHfHHE11HkIf.SHg5H x@ItHAH HQHHC[HHAH HQHHC[HÐHAH HQHHC[HDSH4H x@ItHAH HQHHC[HHAH HQHHC[HÐHAH HQHHC[HDSH4H x@ItHAH HQHHC[HHAH HQHHC[HÐHAH HQHHC[HDSH4H xPH%=tHAH HQHHC[HHAH HQHHC[HDHAH HQHHC[HDSH3H xPH%=@tHAH HQHHC[HHAH HQHHC[HDHAH HQHHC[HDSH3H xPH%=tHAH HQHHC[HHAH HQHHC[HDHAH HQHHC[HDSH2H xPH%=`tHAH HQHHC[HHAH HQHHC[HDHAH HQHHC[HDSH2H xPH%= tHAH HQHHC[HHAH HQHHC[HDHAH HQHHC[HDSH1H xPH%=tHAH HQHHC[HHAH HQHHC[HDHAH HQHHC[HDH\$Hl$HLd$H1HSL#HJHSH,x?H`HH,E @uFID$Il$HHCHH$Hl$Ld$HID$H IT$HHCHfHHPSHw0H x@H`uHAH HQHHC[HHAH HQHHC[HHAH HQHHC[HDSH0H x`HCLfx t% 9t%HAH HQHHC[HË 9uHAH HQHHC[H@HAH HQHHC[HD:ff.SHg/H x HAH HQHHC[HDHAH HQHHC[HDSH'^H xPH%=tHAH HQHHC[HHAH HQHHC[HDHAH HQHHC[HDH\$Hl$HLd$H.HSL#HJHSH,xVH*pH*\HH^yIE @uDID$Il$HHCHH$Hl$Ld$HID$H IT$HHCHHH@Nfffff.H\$Hl$HLd$H-HSL#HJHSH,xVH*pH*x\HH^xHE @uDID$Il$HHCHH$Hl$Ld$HID$H IT$HHCHHHMfffff.H\$Hl$HLd$H-HSL#HJHSH,xVH*pH*\HH^2xHE @uDID$Il$HHCHH$Hl$Ld$HID$H IT$HHCHHHLfffff.USHHHGH/@%t HE@upH8,H+xAH0@H>ttHEH HUHHCHH[]@HEH HUHHCHH[]HH8`Jt;|UH HEHCH+HfHEH HUHHCHH[]H HEHCH+HH[]H HEHCH+HOf.USHHHGH/@%t HE@upH+H+xAH0H=ttHEH HUHHCHH[]@HEH HUHHCHH[]HH8@It;|UH HEHCH+HfHEH HUHHCHH[]H HEHCH+HH[]H HEHCH+HOf.USHHHGH/@%t HE@upH)H+xAH0HHH@8L`MI$Hx8HCEHHx,HË@ H%H C D$ HH@HHH@I$Hp8CfAfAT$ HHPHHH@IFI^HEHEHH\$Hl$Ld$ Ll$(Lt$0H8þHVC IFH IVHEHEH@HH@8HL`MHHT$ H0<:fHHT$ H0^'@ALHHM^f+Vff.Ld$H\$IHl$Ll$Lt$L|$HXHGHDp fAXL+HH3HFHH@H$H3HFHH@HD$H+L{Ht } HL2DHcLHHH?hAE @IFMnHHCHH\$Hl$Ld$Ll$ Lt$(L|$0H8þHQul> H IVIFHCHH릐0II$H@8HHhH&LH2?fNHCHLHH HyHl$Lt$HH\$Ld$Ll$L|$HhdH%(H$(1HGHHHHGLrH D$HL$LbHMt+Ht { HPuu= IFH IVHEHEHH$(dH3%(!H$8H$@L$HL$PL$XL$`HhÐHE1HH t { g1HHwG]fHH@8H:LhM-IUHz8A|$ uI$H@8Ht LxMuLHk6HIUH@8LxHD$ HH$Hr8;H4$HT$NAIH{8t1LHIH5DHC8IH5DHC@IƀsIHp8HHx@t~1D;D1-OL$H$HHt$3HT$B @u6HT$IFIVHEHEH0HH@8HHPHHlIHp8HIHx@<$1;1L|$1;1LH IUIEHEHUHI$H@8HLpMHH2HH@8Lx<$|$DH\$Ld$HHl$Ll$Lt$H(HH0L`FHLpI,$Ml$Htl} HH22HH@8L`HtJMtEI$Hp8Ht8H7D)IEH IUHHCH8E1HJuj7 H IUIEHCHHH$Hl$Ld$Ll$Lt$ H(fDHEH@8H2L`M; HCLHHH A{f)IIEH IUHHCHrDHl$Lt$HH\$Ld$Ll$H8HHXL(LpHt { 4HH0HH@8L`MI$Hx8AEIEH@HD$IEL(I$H\$HHp86ډLh0IFH IVHEHEHH\$Hl$Ld$ Ll$(Lt$0H8HT$L"HSLIzH'^1H"aHHuk5 H IVIFHEHUHiHH@8HL`MIFH IVHEHEH(HELHHH ?zHl$Lt$HH\$Ld$Ll$H8HHXL(LpHt { 4HH.HH@8L`MI$Hx8AEIEH@HD$IEL(I$H\$HHp844ډLXBIFH IVHEHEHH\$Hl$Ld$ Ll$(Lt$0H8HT$L"HJIzH_\1H aH-Guk$4 H IVIFHEHUHiHH@8HL`MIFH IVHEHEH(HELHHH (>zAWAVAUATIUSHHHH0HXFcHH@HD$H3HFaHH@HD$H3HFbHH@HD$HkL+HH\$(HD$ Ht%} HL,HH@8H@HD$ E1Mt!A} wLL,HH@8LxHMAƄEH|$ M}HT$ HHx8t 1HLIHx8t 1LLA$9T$t$HL$0|$*HD$ |$0H5HH5HC8HT$ |$0HrH5HC@HL$ HƀsI|$4LHC8IH5V|$45HC@IƀsHT$ HHp8HHx@IHx8Hx@|$01A;$1D|$41A;$1DHL$(I$ HT$(HAID$HI$H L Dt83H|$ 'EID$LHLH S;HT$ HHx8t 1HL4 IHx8t 1LL HD$(HL$(I$ HHQI$ID$HHH[]A\A]A^A_IEH@8HxLxMfDHEH@8H"H@HHD$ + "HD$H3HFLe"HD$H3HFLG"HD$ID$HT$ HLH 4:L'$HL$ HHp@HtL$HT$ HHx8tzIHp8Ht L#IHp@Ht L#IHx8Hx@|$4eMW1H/W1LHx@{|$0fDgfDH\$Ld$IHl$Ll$Lt$L|$H8HH0HXFHH@H$H3HFHH3HkFLxHLhH]Lu1H{ oHL(HH@8HhHHHEHx8t 1HL A$$DD,AH]H5aE HC8H]H5ND. HC@HEƀsHEHp8H(Hx@1E;$D1@I$ IVIFID$I$HT LL@HEHx8t 1HL '- I$ IVIFID$I$HH\$Hl$Ld$Ll$ Lt$(L|$0H8fHH@8HHhHoLHk"H3IF/fLI$H$L HEHp@Ht L HEHx8uHx@uD{ IFI$ IVI$ID$H%ID$HHLH 6HEHx8H|(1LfH\$Lt$HHl$Ld$Ll$L|$H8HHHCH1HWLqFL<HH@H$G%LMt A|$ E1 HZ>M+1 LHAG @t LH,IFM~Hl$Ld$Ll$ HHCLt$(H\$L|$0HH8M&Ii@HHH{H$?I$H@8HPLhMFIEHh8H5HHqHH)4$L!HcHH?(HCLLHH 4fH\$Hl$HLd$Ll$Lt$L|$HhHHHSHOHhH HL$HpL(F4HH@HD$ E1L}f|$LeM&A|$ yLH#HH@8LpMMIHx8D$D$$AE ODIEH@IĀt#f|$HjQHiQHHE1f|$IHHp8(t$$L1SID$H IT$HHCHH$Hl$Ld$Ll$Lt$ H(fDAE fDHHz HЃ tHHEHh8HkHHyHH#L>InHH@8HHhHu 1HS:H1ҹ"H<:HqH7L1H[H!L1H+H\$Ld$HHl$Ll$H(H?H/Lgu @֍BɃ߃q t9fxPID$H IT$HHCHH\$Hl$Ld$Ll$ H(HEH@8HpHtNHv fyHH(HItHPHt?HHHID$IT$HHCHH ID$HCH;HmHH7HH I;EHuffff.H\$Hl$HLd$Ll$Lt$L|$H8HOHGH7A%HQL,uBHFH HVHHGHH\$Hl$Ld$Ll$ Lt$(L|$0H8fDH.LfHt} tID$H IT$HHCH먐HUHB8HtLpMfA~ xXHB8HtH@HtHHp8HtH8!LHcH*AE @ID$Ml$HHCH-qL&HItsHShHH;SpHShLH+CHHC L)H~fIGIl$HtpID$HH+0H5gI1H HZHCH} HU LH!HH1AF H]tH`@%Ht$(HHD$(@ @HcD$HL$(HHPHHHEHUHLHHH>HT$HHHIIHT$@H1'HD$0AF tH`@%HD$8H9D$HpFHHpHHT$HHH9| HHH)H;$HG$AF tH`@%IIHHp8HډL!HHHBfIH\$HHHp8 $HډLHdHT$H11fITLHAHcLHHD$HHLH HLWHHIGHL)+HT$HHHH9 HHH57H1!LH$HHe)H#HUh@ff.H\$Hl$HH/HWhHHH+GH+tHHl$H\$HHG H)H~3HuH HHHHHUHEH@HHHff.AWAVAUIATUSHdH%(H$x1HWhL?HcHHWhH,HoHH+GLeH$HOHGHQHHT$HUHT$PA f=f=H|$PID$HD$(@ 8It$Il$FHH@HD$ I9ID$vHuF'HH@D$HT$Pz QHD$X Lw A$ Hc$I HIEHHHPIEIMHH$xdH3%(HĈ[]A\A]A^A_H|$PtHL$Py HH@8HLpMfA~ qLLHHIUhHI;UpIUhHI+EHHCHHELH541L LHc$IUHHIEHHHPIEIMHHH@8HH@HHD$XHHx8H5 D$0tI`@%!HT$(B %=aHH@HD$`HHI`D$4@%uHL$(A 5 ЃD$4H|$ =HT$ IEHT$8fx HD$(@ tI`@%uHt$(LIHD$`D$HT$(B HL$(HE1D$GHD$HE1H@HL$(Ld$ Hc\$D$lHIIH9PH(D$~D$l9D$#D$4lH\Hl$(IEfx HT$XHL$ LHHHp8HIMHUHH+LHBHEHH@E %H E D$04I`@%#J #H9 |$GHD$Hu%HH)HLH9xLIH9HL&HD$HD41L2HD$ HI(1HLIEHT$XLHt$PH LHt$(HT$`LHI`@%HT$`9T$iHL$(HHL$)T$D$GHD$HL;|$83HL$(MI HD$(@ @vHT$XHuAHt$LLI]"HL$A @DHc$HL$HHPHHIEIUH=HLH)H)HT$ HT$(H+Ld$HD$GL$CHT$(LHHX|x HHEL9`HIEfx lHL$XLHHp8jHT$ HIiHL8HL;d$ HD$8HT$(L)HD$ H+L$T$1H)cHL$XLHHp8HT$XH>LPHT$XHt$PLLHL~HdHL6\$4Ht$(1HLCHL$(D$lHHH9PHHT$XLHl$pHHp8HT$ L$LL$lIHHH}HL$(HHPHHH@Q H A D$0t $Q HD$(@ @ HT$XHuAt Ht$(LHc$L$lHHt$LHI]HL$HCHKIEIEHHt$(HT$`LHHD$(H D$4 HT$(HoKD$HT$`9T$7HLTzHLD@H5-L1HL HeHt$(LJHLIGI IWIEIEHH5B-L1`T$HLLHT$()؉D$HLLLHLIUhfff.ff.ff.H\$Hl$HLd$Ll$Lt$L|$HhHWhL?HcHHWhH,HoHH+GHD$HG@$@HLeMA|$ 1HA|$ I Hv LHHcD$H HHCHHHPHCH HH\$8Hl$@Ld$HLl$PLt$XL|$`HhfDL L@I$H@8HtLhMCfA} 1HA|$ I7I$H@8H&H@HHD$(HT$(HLp@MpI)HMLIHDLLHRHT$(HtLHNLHjHcD$H HHCHHHPHCH HHC1LHH pqLHUHI&HcD$LcHI HD$H9HShHH;SpHSh!HEH+CHIFHHEHL;H5*1HHHHT$HSHHJHBHCH H1HIH<HT$(HHx8LH gHC L)H~mHiLHH)HHHH9HVHyHILHHHH+HShL)LLHHIHcH HKbHTHCHT$(LHH H=%1H\$Hl$HHHHtFH HtHH H\$Hl$HfH\$Lt$E1Hl$Ld$HLl$L|$H8HOHGH/y%HQL\LH1"LHI6oLLHI[LHyHHHHnAHHUhAWAVAUIATU1SHhHGL7HPHGHIFD$HD$(HT$I\S tIH%=HHHx:19D$T$LЉT$HHuT$D$Dd$AЃ)A)HD$(Hp F HD$IcL|$01H$fI\C nHHHH^D;`^HFA9| HcH)HA9}HHITfHHu|$HL$H1HT$@Ht$8LD$fI|tItF @!HHuHt$HcLHT$B @\HD$(HT$H\$(HPIEH@$Dt^H|$tVH*D$PD$ H*D$X^JI LHXD$ D$ HHLD$ IEI]HHh[]A\A]A^A_fDID1HLeS fDHH@LHH 11f. TzrH,H*\Y bH,HT$XHT$PHD$PHT$HLL LuEC %=I1HL{2H$HL'HHHH L1Lf(H5 %L1fff.AWH AVAUATUSHHHHPL8HhHT$HPHT$HBIHH1LHHIH$HHHImHCHShHH;SpHSh HH+CHHC H)H'LmHD$LeHEAGgIHxIl$Bu Il$HHH]ID$HEL}1HHIH@8Hp88L#HI4$ urHShIl$HH;SpHShYH+k1HH*M,$HT$IT$XHHID$ID$M|$1HHIH@8Hp8L#I4$HHHCL#HH[]A\A]A^A_H5H+HHc"LHH+wHI`HHH5j[]A\A]A^A_1LHHfDHt$HߺPNI$Ht$E1E1PH>HHH HHJHShH9HShH\$Hl$HLd$Ll$Lt$L|$HHH?L'H_At$ @֍BɃ߃q tUfDxpDLHHCH HSHEHEHH\$Hl$ Ld$(Ll$0Lt$8L|$@HHÐI$H@8HpHIv DfyDLHHIvH@HmHHHHD$UHH1HHp0HItx tfHD$x +H_ HT$+H1JH>HH HCHEH}HHH@8H@8HHD$tHUhHH;UpHUhHH+EHHE H)HHCH$IFHHCHE H+$H~xHT$HH$rHJHHH$HHBH]Ht$HYHH]LHMHH2xH$HHYH$kHH޹H=H)LHHH#HbHUhf[ff.AWAVAUATUHSH(HWhHHcHHWhL,LoHGHD$ M}MeAW  H D$PHD$HHDD$HD$qDD$D$IHM)IDt$It$HVHHH(H%HAAHH@HxH+]HHHXHHHHUHHH@HHE HHH@HHHUhH]HHHH;UpHxHUhHH+EHHE HcT$H)HH91T$tLHAHHHuH]Ht$1HRHHUHH HHHxH+UHHHHHPHHHHUHHH@HHE HHH@HHHEHHHxQt3T$LHHHL98nL$E1E1LHjHrL+l$ IIcHHEHXHPHEHUHH([]A\A]A^A_It$1HHHT$HHHHD$HHHH(H?HAAHH@HxH+]HHHXHHHHUHHH@HHE HHH@HHHUhH]HHHH;UpHxHUhHH+EHHE HcT$H)HH9T$tL@HAHHHuH]HT$HH1H@8Hp8IH@8Ht @DILp8IvHAH ID$qHD$>IHTH@@HT$D$PIL$HT$H([HH5[ 1]A\A]A^A_HHDHBHHHDH)HAG 1҃ H57 H1 HHHHA HHH(HHUh+HHUhR HIHHHA HHH(HIFIH@8HpHHtx t4HHH5k1HH5= 1HH@8H@HtHHx@Huff.H\$Hl$HLd$Ll$Lt$L|$H8HGH@%uHCHL9UFI$H@8H@0HIDHHHHH@1"1HHfLLHII$H@8HH@HHHp8HHH0ƿh1ҹ"HH%HFHH0H0XT H0t*HCHH t} t=1HH11H51HEH@8HtHP벹"1HHYH蘴XLLHI2H߹"1H@kff.AWAVAUATIUSH(dH%(H$1HGL?@$HP(HGHHtID$ L)H,I9$I$H|1I$ADŽ$L־I$Ht x  L I$ IWIGID$I$HH$dH3%(H([]A\A]A^A_I7F < 6IIDŽ$ADŽ$F HHI$LۮI$H5aHH8ѽHHHL*I$0ƿ6A$-H\$E11H<LHHL虲HAL۹EH]E1tSE1E1' t" t@t t t tAHAE9]uC(@IT$D9fz 8IGI$ IWI$ID$H=I$`@%C@<=wdEH%4DD)9}K~1EH}y>C @G@IFI^I$ID$HH[]A\A]A^A_L腳t{ H@PkHHpHL9tHt LwHMtAELhH@HLL蒱HHLjHID$HH[]A\A]A^A_LL`IID$M4$HH[]A\A]A^A_HH޹L HHL E1E1k1HLLLLŶIHLbfPLL1Hu ^HLL0HuZfDAWIAVAUAATUS1HxHT$ HL$LD$A tH`@%ЉÃHD$@ tI`@%1*HT$H9T$ Ht$ HF1L贴H|$GHHBHD$hHD$HHT$8@HHBHD$`L2Ht$`HD$hHH9HF@AԈ\$/t HL$H9L$ SH|$H9|$ CHL$ Q Ht$ 1ҹLIc膳HT$ HD$0AD$H HcH9Q|A[D$@|$/!HD$`HD$hHPH9QHHT$0D$@eA[Dd$@t H9HCt$@D$@HcH|H1HH HcL$@Ht$ HLIcH|$ HHHD$0HYHT$ B %H B |$/bAfDHL$8LA\A]A[f1EHt$0t/H"HHD9uHT$0AD$HDHD$0HL$0fH|$ IcHHHD$0AD$HcH9QHt$ LHL$ HD$0H1HHxH)H|$0HH|$ HC۽3Ht$LFA[D‰D$@HcHH1HHD$0IcHD$ HHYH|$ G %H G A\Hl$hLd$`A]A[fDHD$ H AtAtHt$ L3Hx[]A\A]A^A_ÐA[rHL$ A JH|$G`DHt$HT$h"LHD$8HD$@SDHt$HT$`"LI>Ht$LHYHL$ A %H AA D$0{D$8pAfHHt$0HL$8HA\LA]7A[AHt$0.1Et%H|$0 HHHD9H|$0uHL$`H95HL$hH9bHT$ HHH@RHu1HL$XMLl$0HL$tfDHL$Ht$8HAiLEHL$HHD$XLLAiLHD$8H)HT$XH!LLII)HPHIu9LH+\$0HT$H9T$ HL$H9L$ xH|$ HHXMVHu1HD$XMLl$0HD$tHL$Ht$8HAiLuHL$HHD$XLLAiLHD$8H)LHT$XH LLII)H耼HIu^LH+\$0HD$H9D$ HT$H9T$ HL$ MHHXH,H|$ HHH@M1HH|$XMLl$0H|$HL$Ht$8HAiL胵HL$HHD$XLLAiLHD$8H)ZHT$XH1LLII)H莻HI MuHt$ ALLL蟜HcL$@HT$0LHt$ 1E)H|$02HHHD9H|$0uHT$8Ht$ AHL+VHt$ L HD$0HD$ H Ht$ IH)AL$HcL$@HT$0LHt$ 1lHT$8Ht$ H)ALH讛xHH#HHAH#BHFHAH#BHFHAH H#BH HFH uxHH HHAH BHFHAH BHFHAH H BH HFH uxuHH3HHAH3BHFHAH3BHFHAH H3BH HFH u/Ld$Ll$IH\$Hl$ILt$L|$HXHP t#HH0F|HHxAE Ѓ  ct7ft1LLAAE tH5%L1UDI$`Ht IUHBHD$HHHT$HI$HJHL$H,FHH@HHD$HL0F L|$1AE 1H$% 9tlI$`HHT$LLI$`HLH$H$@HHBHD$L2H4$L1kIHT$HLHL$HBH9E1H<$H4$L=E1DH\$(Hl$0Ld$8Ll$@Lt$HL|$PHXfIEhE1xM$ 11ɉLLOHtH0I9t LzAǃ9}HT$LLGLL AE E11H蓿I٢H|LLE1轋HLLLHALLHu} fDuH} HBAHH} uAHHD$u1H$AE %=t1LLFIUHD$HBIEHH@AU %|@AE .LLWLL׺aHT$"L^I$I2L&II$P "EAA:-HL$'HT$LLD$'軈|$'PHIH$UHAHuLH)H)HHD$H9LH4$HT$"LIHT$LLuALd$Ll$IL|$H\$IHl$Lt$HHJ I , ;I$`Ht IUHBHD$H*H|$t*u"%=^IUHBHD$H* tI$`@%HtHD$HH1LLiAE @tLL7H\$Hl$ Ld$(Ll$0Lt$8L|$@HHÁt1L談AM H5t%L1躺fHhxM$ 11ɉLL>HtHI9t LLơ9}ZH$HD$HHTHZH9sBxHH9s yfAWIAVAUATUSH(Ht$ V HGX%tS HT$ HH@H$ H$ D$D)IGDh%AuUHL$ Q u(%=HH@H$ HL$ hQ IGDh%ك҃?D!$:_Lp(MHD$ @HHBH$HHL$ H$A L$ / L9D$Ds1HS@BA FHЅxD$DJHI9wH\$ C @@ D$DH([]A\A]A^A_ÅQL`(A MpH\$ C.HHBH$HHD$ HH$@ H9D$D:HfAH$@C…yf1fD$DHt$ H$ "L赲"HD$ P IG@%DDH@E1$$H@(LH$HHHHHD$xH$t*H0F HH@HD$xHL$xHH$HD$ @ HHBH$HH$HT$ B Ƅ$H$H$E1HLH$Hc]HHD$hD$wtH0FHH@HD$hD$wD$EBL$L$L$L$A H$H9$ L$H$AD$DL$HT$LD$DH"%AEIH9$tLHL辠H$IL9$ H$LL M9HsWD$H$E~H$I)HNd It$ ,H$LL$L$H)IH9l$x2 H;$6D$DH@%AEI?Lh(HE1LAAIEH0聒HL$t!H0F,HL`I\$H$HD$ @HHBH$HHT$ E1E1B udHH$D$DH9D3HSAEtfHH9tAH$HLIHHH$D$DH9r)H;$t<H %HH9HLLLD$$I9LD$vD$DA@HE1Dl$@H@(LHD$8HHH!HHD$0H$t*H0FHH@HD$0HD$0HH$HT$ BHHBH$HHT$PHD$ @ A Ƅ$HL$PH$H_E1HLHL$HsHHD$(tH0F HH@HD$(L$@: Ld$PLl$PL$MH\$HH9\$PD$DQHl$PsH9$3EHm%HM9v=T$@H$ M)LLNd It$ ՘ILH)O$&M,H;l$HHt$8HLDH9D$0HjEH %LD$DLH蔜IfHt$ H$ LHD$ P %H$H9D$DHT$r) fDfAL;$D$DH%EHH9$H$HLuM9IsU$H$ H$I)HNd It$ ͎H$LL$L$H)IL9l$xGD$DH%LELLH蜒IE$D$DH%LELHT$hH^IEH%HLHIHӉH$H$H9$9H$$u,H$HHH9 t鈄$H$H$LtH$HL$PH$H9L$PHT$P҈$u)HT$PHHH9t鈄$Ht$PH$LtHD$PQ@AHT$ L+$HLp\@AEHT$ M)HLh0HLLِIH$Ht$ L蜂H$蟙gH|蠓HD$`4H|茓H$HT$`Ht$ LMH|$`S@9H3@>HH$H| 4IH$MH@N$0H$H| H$H$H$H@IL$HL蔊&LnHD$hfJLnHD$(D$D>H$H$LH虅L$Hl$`1D$DL$1D$D1D$DvH5uL1輖HH$E1D$DEH5ʵ(L1苖H5L1uH5~)L1_H5ôlL1IH5L5H\$Ll$HZHl$Ld$ILt$L|$Ht$ HrFHH@HsAL{HkFHL`HuFHHXHT$DHExx B#HH;D$@v~EH$H$L$L$L$L$Hy;fDLyHZLyI5뎁|$ ,DE1jHItс|$ ,tiAGfIH@H$IH0$9|*IcLcN$0LL9LgIcHcLfAG %=t1LL~ICHcH9QH9HcIcLH节IHXIHH@AG @upAcLL`SH$L"LH )K<,1HccH\1LL}AG /LL蓆LLHCfffff.H\$Hl$H^Ld$Ll$HLt$L|$HHHvFHHsFLhHH@HD$HL0HL$Hv HHHHHRHH9tgADH\$Hl$ Ld$(Ll$0Lt$8L|$@HH+wHsIFvHT$"H踚In苄HD$HHHLckDl$KH|$oAEfteIEH@H$IEH(H$H;L$uHus%IcLD$H|$H5H1ΊH|$LQH:H|$H$LHf.H\$Hl$Ld$Ll$ILt$H(HrHZFH@ E1.D,tHH3FtlHH@AHsFHHXC|.2*t-H$Hl$Ld$Ll$Lt$ H(Lcn두IcDH$Hl$Ld$Ll$Lt$ H(GL(nHh軍"fDDDH$Hl$Ld$Ll$Lt$ H(eDH$Hl$Ld$Ll$Lt$ H(:f.ATAUSti D9tR11ldxVHcH:HHMdAHHTx'HD9uH[]A\Ë 1H=q%1袁fUHSHt! t!@tUH[]Ð u߅ҋMu* 9tu gt:1]H[]f ԋEIu%=@H[]1]ffff.AWIAVAUAATIUHSHH(u-Av7E1H(D[]A\A]A^A_Lqu(HL9wH3fF tH`HcHAƄ$A$tA$LH)H~HuH]F|HH@D$ HsHkFOHH@A$AtA$LH)IIHI9H}W trtHH0~ Ht^HHA$tA$Ct$ DH}AHI9H}W uH{ A_A$tA$YLM$H)II@HI9HHuFtbHHA$tA$A$ uA$SuH_tHAI9HuFu"1L踍HA$tA$LH)HHuI$ LuH]H9fHD$HD$FHH@HD$CHH@Hl$HD$A$tA$LL)II2HHA$tA$ HHWAIM9I6Fu1L詌HA$tA$^L9HuH]FRHH(UB<B<H3FHH@AA$tA$JLH)IIEy>\HHhA$tA$DlAHI9H3FuLhHA$tA$OLuM9HuFHH@A$tA$LL)IIIM9NI>W tltHH0~ HtXHHA$tA$`HOAIM9I>W uH{ AfSHLXSAUH5ءHL1)LH޿YrA$%=@gH1\AH1L`H"1L H3H"1LHH11LZ`HE1LD`HH@8H3H@H&HHx8A$t?A$t4H1L_{ HLmHH@8H@HHp8Lrt$ D谆HH@8H^H@HQHHx8CA$t?A$t4H1LQ_{ \HLllHH@8H@HHp8LqmKHş1L^H1L^H1L^H1L^H1L^"1LH1H9L;dL.d~L!d\LdrHLdxA.HHhA$t A$u4D/sAHI9H3FuLcHH1L]H|1L]Hr1L]H1L]gHi1Lo]H*1LY]TH1LC]LcfDp}I}GHEHDHH@8HH@HH!HH@8HH@HHfDSHHFHHBHD$H^< < < < < H{@:mHHHH)H)D$HH<:uCH{c}&DT}1JID$H9<}22EH]< t< t< t< ft< Etq< t< t< @t < t< H BHtD< t< t< t< t< tD}EfWH=`%1pE)ffff.H11GHff.AWEAVIAUIATIUHSHH9DD$ 3H)HHHHH91HyhrHXIHHHCHHI9HuHHtFuϹ"1L IH8/1AwHG^%H\$LHHpMt }5IH8HLHھL&VLi{Et-Wh|$ H$$xy|$ _HLPHĸ1[]A\A]A^A_MHCAFt~IH(}/Hl]%H\$LHHp%I(g8HXHPfOMHt\IHIHL1b^"1LL}HnIHTKLv|IH(H\%H\$L1HHeoxH=]%1mfHE1E1!`HfH\$Hl$HLd$H(HWH7B$t]HG H)HHR(HCH,Ht } 1E1H9H\$Hl$Ld$ H(H>HFHW H tmHH@HD$HHHL$HHHǃ^HH0HH(ǃHnH Hx3 HcHHo[%H  H1a\HH0~ H*@HEH@8HL`MI$Hx8HH1HH$]ǃI$HHp8jdH0ƿwQaH^HSHT$H"HzH Hwu7HH"Hǃ1H\ǃHCLHHH nfATIUHSHHHHtWV @tHH@HtHfWf.@ HH-QC u()HvH[]A\5LdS ~fSHH@HD$HHHL$HtKLHj1Hu9IHH/uf.6zJHH@ LBLHXc1҅H[]A\fD>S S IH`@%8HH%\HHHfS fH*HLA_ @uzHH5`bLHP1A&H!j&HT$"HHxHHHo[ HHH,@S \HH=C sHH5RLHP1)A,H]HA,H1IX@L:W@H\$Ld$HLl$Lt$IHl$H(HIAt~ tB1 L tua H$HHl$Ld$Ll$Lt$ H(HH@8HtHhHtHEHp8Ht#`DLH$Hl$Ld$Ll$Lt$ H(*jID$HHLH jefffff.H\$Ld$HHl$HHIt~ t31 L-suN$` 1H$Hl$Ld$HHH@8HtHhHtHEHp8HtBFID$HHLH DjfH\$Ld$HHl$HHIt~ t<1 Lrui_ H$HHl$Ld$H@HH@8HtHhHtHEHp8HtH$Hl$Ld$HBID$HHLH i{@H\$Hl$Ld$Ll$H(HIHHH8H|-tGHp@HtmH9th_AHEL1Hp@StEHELHp8RHEH@8H@@H\$Hl$Ld$Ll$ H(HL^HELHp8Rt HEHE11t^ 1fDH\t0A$t %A$A$HEEHE6DH\$Hl$HLd$Ll$H(HIt{{ t%@ua1H\$Hl$Ld$Ll$ H(DHH@8Ht LhMuP@tƾ L)ptID$1HLH g ] 1HHuv@LL\k@t$IEH@PIEH@XIUHB`HBhIEƀ 0fffff.H\$Ll$HLt$L|$IHl$Ld$HHHII=H4z HL VHH@8L`A} ELLUHH@8HhI$Hx8t 1HLw8HEHx8t 1LL_8HPI$<$H5F,:HC8H]H55|$:HC@I$HB8HB@HUHB@HB8I$ƀI$Hp8HHEHx@tI LLR8LOHEHp@HLOI LLERH\$Hl$ Ld$(Ll$0Lt$8L|$@HHfIEH@8HHhHHH@8HgL`MpU<$:V|$:f_ff.ATUSHWHH/B$t?HG H)H;HR(HCHH9 H%mǃHǃHELeHAT$ u`I$HHHBAD$tfI$H0H0W[]A\DI$Hx uHvlBAT$ t@L"1HnoH1ҹ"LHWoHRtH5LH1ffHH@RHSH Hk?AD$I$H8 VHHN%H  H1|OHCHP(HCHHHB8H@0HtHHJ@HO1H:OǃH߹"1LTnH`I$HAWAVIAUEATEUSHH$HT$@H$Ht$HL$ LLTHT$PAH<|<-EIDAA%=tFuQHT$PH<>t><Lz@H$dH3%(B HĨ[]A\A]A^A_HT$PH< HT$XHP8HT$PHHT$`HP@HT$PHT$o1Ht$@T$<jD$EtH9\$xR{|HAn $DŽ$EHl$xD$EBHE< t< t< t< t< ftD$E/AE<- D$EA$uIcA||1EƄ$wDŽ$ |$sH$+ $^ HL$($HL RIǀ}BHHLL))HT$PHA;HD$HHHB8H@0HtHIHZ@Ht x  L[HH5{H1,ZLLAHT$PHcH5k1L_=I*H$A}>LeƄ$wEDŽ$|$sA$L<&ufDCH< t< ft< t< t< @t<-D$E HHAHD$(H$E1E1HLH$HD$$D$0XHID$pEUMUA:f6B<+B< _QfDHEH9sp{|ugHSCH9>B< t< t< t < t< "HH9wHPy1L7H}-HT$PIHƀ<IAE< t< t< t< t< Dtހ|$qƄ$ru|$rA}-uA}@ HH$9HHL|^LH12H$E1E11LH$H\$D$H$VIH\$(D$pHE< t< t< t< t< tI@zAIA)LL>HT$PHH@8HPH)x1L|6 HT$PLeHƀaƄ$a}|SAEH<- A |$qƄ$r |$rH$D $ $HL$(HLMHT$PIHƀ| HE< t< t< t< t< tfWD L[U LFH?H>%H v1 L?HT$PHL&L9:LAWL9)HT$PHHp8LhGL9PL9HT$HLHH@8H@0HHDHwHHH@1>D$tA|$=Il$7$bEuL|$0D$pM0HCH< Ht< t< t< t< ftߋ$t#HT$(H2V Z0< U$ HT$(LH2HIMI$Lx8MtgLL1LLFL%L9 LUL9LNL9I$suHT$PHƀs$HDML$t1LL@HID$pHALUALHt1L26HD$HHHB8H@0HtHHZ@L+$H gL9HgHuIؾHEL1 :'D$pAD$ LHB(RHm L1w6A}D$EAHm1L+HLL&HT$PIHƀ|D$EHًH! t€DHAHDHft{H$HHH! t€DHAHDHfb/LN L+u6HH@8H6L`P>8XfHD$(H0F Lf#HT$PH53mLH1KH5@m-L1KHT$PHƀ<DH(HD$@D$HD$HD$8HD$D$0$TH(fff.H(HD$8D$HD$HD$D$0$H(ffff.H\$Ld$HLl$Lt$IH81I=HI}LLH23HqkLH%LLHM:HlLH+.I$HHE1E1HHHD$$H IHL`81H\$Ll$(LLt$0Ld$ H8AWIAVAUIATUSHHHH@8H@HD$0HH|$0tHD$0HЃA tPIHt ~ L5HH@8H@HLHp8&At A6ADžADžIHB8Hx HD$@HD$ IHD$HB8LHp ILH@8Hp #LHIu1ILLH@8H0{2IH@8H0F @HH@HD$@HHIXILL$@LHD$$AE1A'IXAkH|$@AAAT$(%A=T$,t/L61LLIDIX;e*H#8HI6HX1LLH2LHAH)LLV!HL$@II\$ALLH1!*H7HIu;IIH0N1IXH˓LLz1HL$@IALL H9HIXIIALHHHD$A$HAPL 5I(;HXHP IHaiIL1/HfL4PIfHT$ LNH^fDLH9IH@8H0F !fDHf1L$H|$@I8-qH5XLLH*IH@8H@HH@8HH[]A\A]A^A_I.L3HI(78HXHPAIHgIL1A.IHngL1.57IHT$@xKA%=t8IHgL1-ISHLL#(+I(HXHPrIHeIL1r-IH|$0tHD$0H;IXtyI1LH|$0t+HT$0HtIHtHHxH5VLLH )HH1[]A\A]A^A_HH1[]A\A]A^A_þL1hI(58HXHPaIHeIML1^,IX9I2I HtBIL@HH@8H H@HIL(ILHH@8H@HHp8@4IƿAF!AA/D$(A9uT$,A9AT$,t$(HH55k&IL=LHHD'HL91HL::Ifffff.Lt$L|$IH\$Hl$ILd$Ll$H8Ht~ t-H\$Hl$Ld$Ll$ Lt$(L|$0H8DHH@8HtHhHtHE>u,IFx$yM9uLL{HtHEHx8HxtHELHp8\#3D HHEHx8*Au^D#HEHx8sHEHx8_^HELHp8"EHEDLHp8kH-HEDHx8vCD#1E$HLL $H1HLDC fDEHu%AHE9H9l$EI9E< < < < < Hu< t%< t< t< tHL9< uf)HAEEE1H9l$vEA+\EI  E~E1H9l$AvI HL HtEHF%AHE9H9l$EfqI fE_E1H9l$AMI HL H'EH%AHE9#H9l$I9C.:EMfHD9HL9u'E@EE1H9l$E1EHHLrEH%AHE9nH9l$cE H9l$oEf} \H%E1E9"} EAHH9l$sI9HHc 9tH%: 8HL9uA1I9KHcU9t H%:0u HL9u+D$AEIEE1H;l$r1HLH= ?H1HLCEH%AHE9H9l$EI9UB<B<B< _HHL9B<)HEI BE@E1H9l$A.I HLHEH%AHE9~H9l$wDPI EE1H9l$AI HLHEH7%AHE9~H9l$vH9l$EH%E1EAHH9l$VE9MI9g} HuY@: HL9uiI95EH0< w"0< HL9uI9EH0< vD0< bHL9uI9 Hf HL9EDB t} K1HLH=X H1HLDC EH%AHE9H9l$I EsE1AIHT$1I9 HfHL9#EDB u1I9 H_HL9UAtI9HoB<vB<vB< v _HL9uk1I9h HUAu _rHL9udI9w0MȃDHL9;tE11HHLu{I9H< t< t< t< t < fHL9uf1HLLH1HLLH fD1HLLH 1HLnLHfDB<'B< _ 1HL<_dVH9l$E1} Au@p@EH%AHE9NH9l$C} 9I HLHtE9Lm'LeH5OLL. LA'L9H53LL #L'L H56L)L L&LH56Lr)L UL&LH5?3LL~ ,L&LH5NLLR ffff.Hl$Ll$HH\$Ld$H(H^IHs HtH{(ttHsHtH{tH\$Hl$Ld$Ll$ H(DLHCHLIHUHB@@t AL$ @HBH9B8uLb@HC(HLIH]HC @@t AL$ @HC H9C8KLc@H]>fff.Hl$Ll$HH\$Ld$H(H^IHs(Ht H{ |HsHtH{tH\$Hl$Ld$Ll$ H(ÐLHCHLIHEHPB@tAL$ @HEHPH9P@uL`8HC HLIt]H]HC(@@tAL$ @H]HC(H9C@;Lc8H].LLM HEL`HEHPwLLM HEL` H]HC(ffff.AUATUSHHD4Do@DDE)D$EMAt$B.;CD!D9IcLL HHS8HcωBHHcω{@HS8~BIHHcω{@HS8~JIHHC8Hc׍~DA{@D9|D4HC8Hc׉HcDH{@HS8yHHc{@HS8yHS8HcHyHHS8AD$HcyHC8HcK@H[]A\DA]HoD4{@EH5>EH1 fff.AWAVAUATIUSH,HL$%<ҁHۉ$AkIH$H$H$DŽ$0H\$X$$HL$`H$PI$ DŽ$DŽ$DŽ$DŽ$HD$PHT$HHL$@\$H$HL)HA~/JHq$4@!H$L)9$0I$} H$QH #$€<D$AT$@E$9$0KHc$Hc$LMcL4HL$hP$I$H9D$ht=I9t8A$H9$0I$$LuaA$M$-A$A+$CD5I$A+$I$AH$LJtI$A$A;D$@7L"($ I$L)H D$DŽ$D$$A}4M$A$H$IA$(M9$ tA^Am@ tN@ tH@H0F1ɀ_DŽ$0$1Fuk$_^CCCЃ 1Ƀ_DŽ$0$Av$af1ҍE1<8KA}-x$HP $0H$L9$0cYHc$L45H$M$L'$0M$;$0} D$EtY$0A$I$A$A+$B3I$A+$I$AH$LsD$EtD$0EtI$A$A;T$@L5I$A닺LLNA}B$HP$_„IA$[$ H"t00ft)D$1ɺ HLTAlj$LSHL$XHT$PHLHL$`HT$HHLD$Ht$P1ɺ LD$Ht$H1ɺ L牄$LA$ $ $ $ $ $A$a$0 ƒ$_ @$0 $0 ƒ$_ ƒwDŽ$0>Hc$LH $D<9$L> HH9vE11LLL'RI$DD$@t XrHLS HH@H$HH(I$(H|$P1E$4E$0H$p.C tI$`@%u$HH$HHL$PLA$C *Hu"Ht@DE1E1rHHL&H$E$4E$0I$(I$ H$1LH$I$IDŽ$H$H$I$(H$HLAEl$@譹AD$@$I$I$HD$HA$M$I$ U^1ЉÃt A$HudADŽ$pLHLA$E;l$@} DLLsH$H$LI$ H$I$(I$˸t A$ADŽ$pDŽ$fA}$A$a$0 ƒ$_!„)I$LuLHƹH"LLLD9$LH9v$H;D$pt9H$H9AD$HL$` HLLH;D$xuL9t'H$DLA9 DŽ$0$t[$0A$M$CFA+$H$(ADA+$I$H$(H$Lg$t"$0tI$H$($A;D$@I$$HCtH$HIAHI$AHLHHI$H$((I$D$1ɺ LLTH9vH$H9AD$HL$` HLiH9D$puI$H$I$L9t@4t,2t;'t6:ft/H $<(uYfz9t=4t)2t5't0:t+H j$<(uhfztOHJA<w4tHB$<(t܀'t2tBHHŀ:tBHfEt$@AJH$4@!@/"Zt*0t%#t 1AoHP$HcD<[H$HcD<G@!t @/H$H$Hc"f{ LL"vLLH56L>L(I$ u'LLH5HL'L_A}1LL臿H=w\H1LLjCH HHc$H1$XLLH1LLLH+I$ L$H5L诺LOAMDA+$I$xȃЍT D<AA)ǍBDHHc‰$H4oA$pI$x PHHt7A;$Hc~H#I$HI$xH1ƵIHcHI$HI$xѸD ˆ$D $/$8;] }OuLHu]LLu(AA\$@{ A;\$@} LrL M$LEtG$8~:A$u.H f HrA$AL1HE0HI$t @$0Hu LI$Ht $0X$8I$EH$HE($I$xu&E;l$@-DLaaHc$D GDŽ$HHx$LKLCH5LL $D$$X$>$DŽ$L$|fDŽ$HEH5G$H(L9AE }xMȃADt$t*$cH$HLHD$bL9sx$'H$HL HI9vBEtH$DIHEu*Et%$HHLr111HL,LHa1҄D98D$EtH$HL YEDfDI $HL1H1DD$|1HLLkt1HLsLH訯1҄D9(EDEI $HL`1H1HLLH(1HLLH$H$HLE1 1HL蚟<_&1HL耟<_H$D aH1,L<EAA9 I9H$$H$@H$EH$H$ H\$HHt$@HD$8L$THT$0qH=L9H9\$HHt$@HL`HL$8HT$0LHt$@蹥H9tL9H;D$HH$I9%H$E HL费H=HeL9lH$H;$tBAL$1DD$THL$H1LH$D$$BH$HL"H$H9$tJH$A1L$DD$TLH$Ht$Ht$0D$$H$HLQ@LHLI$H$HLDD$(ACDD$(HAPE1A_ADD$(A DD$(HAPE1A_AH Z D$DŽ$DŽ$HEH5'$H(I9I DHLAHt$t*$fH$HLKD$H  D$DŽ$DŽ$HEH $H(I95I DHL蚟Hu$t*$H$HLXD$L9舧HHL9UHDP ut*$OH$HL4DL9hfHHL9DUHDP tt*$H$HLzDL9AUHHDŽ$,A}#DŽ$HI9AUubMȃADt$t*$6H$HLHD$E11HLLguRAUЃ""JHMI9uF<M@S 1F<` @SGL9{HHL9UHDPtt,D$E?H$HL$DL9Xf HHL94UHDPut*$H$HLjDH pD$DŽ$DŽ$HEH5$H(I9I DHL Ht$t*$/H$HLD$H !D$DŽ$fDŽ$HEH G$H(I9I DHLaHu$t*$H$HLkD$L9OHD_t"HL9oMHPtمt*$ H$HLDL9 բHE_tPt,D$EH$HLNDHL9MHPtH [$AD$x$I L$xHLHu+AHEH$H(I9S} uEt,D$EH$HLEH h$At$tRI L$tHLYHuYEt*$H$HLiEfHEHҧ$H(I9} uAHcLE1ADHcLE1ܣA̱,L$0H$H$H$<LLہH$ H$LHH$H$H$A1LLeH$1AغLAHH$H$H9$1fDH$HH5$H$H9$rADA@Ѓ A_ DoA@Ѓ A_ D\I9H$$H$@H$AH$H$ HD$hHT$`t$pHL$XH$I9H$E HL0L9HuyH$H;$t>AL$1DD$pHt$1HLH$D$t)$H$HLwHt$hHLHL$`HT$XLHt$hHH9#L9H$H9$tJAL$1DD$pHt$XLH$D$H$HD$b$ H$HLHcLE1~AHcLE1eAL2L*H5L蛎LLLH5gLoLǡ@sƻL軲H5mLLL脡l蚻L蒲H5LL[gfDkLcH5LL,vBL:H5L諍LLfD H5LlLԠPLH5lLCL諠}A1@sAWIAVIAUATUSHHHT$`HL$XLD$PDL$LtB % $uTAg\DŽ$AƆAG^tAIcWHHD$PH+D$XH9~'1HH[]A\A]A^A_ÁN\ƇH|$`tHT$`B HD$XH$$HT$PIIHO@HHL$xHT$xI HD$hH9gAG\$0A_H|$p HT$xHPHL$x+\$pHl$XA DŽ$HDŽ$)ЉD$tHcD$pT$tL$LHD$@HcHD$PT$@DEVL$$DD$tLHT$xHt$`$?HH$t-AG^t&HT$`H$HH+HH$H$H$tH$H$HHH$D$E IH(FH6H$HD$XD$HE$EH$HG(H;D$xxAHl$H$AGHHcWHHD$PL,L1H)WMHcH9~ Ld AHcGHt$]HO(H;L$htIAH9$LHC$LHAAHPA H)費HM9AXHL$$AG]AEH\$0Ht$@HHL$xE1EAHL0H$/IHW8HHT$xZH@OLL臐IHO8HL$x2 tA0DŽ$|$p$AoHHT$xH@HL$x+l$pY ݉l$t)D$t$D$IEDg4nHT$xHhA>D$P+D$XD))9D$twHl$XD$tHDŽ$HHL$PH+HH$ H82LLjIHG@HD$xIH :HHG "HO WHL$PHL}tIHeH$T$LH$TtAHIHL$PHL%tH@ u QL9D0H< uHLLt}HyiHA HHD$`QLH)؉T$hHcH9|$_THy(/|$_ILLvIMAD$hHQ(HT$`IL$l HLL8L1LQ]IwLLNwIMHAHD$`LL1wIEH@HD$`T$lHLL}\HT$lLHLc\T$$HL\A$HHDL\HHyDH5cL1_HLiCHLti@HLK\HWD$H$HKMLLH$蹙HH0H5L1יHy( ImHEt5MH$Hcр<!t!tA$D)HIE1MHHLL>H|$_DH|$`fLL`uIMHQ HT$`AD$hH|$`O|$_6Hy(|$_5LL tIMHi($EHEL@L$HELE@ L$MMtOLLHLdIMIEPDD)Et AGD9LHcLH)ŀ|$_tDH9WHHLLtfDH9-H$HHLL踸tu|$_Hl$`H|$`1Hy(OLLD)YI L$MLM)IHMKH9LE$EM9LLLE18MD@H$"HLhIm+L$HH$L$E1HL$uHItJAE^jH$HHT$HH+HNfDLLrIEH@ HD$`L$fDH1|$(HD$D$HD$ H$HÐIx ALÍB@<=IDVAB<wFy4tPA< v(tA<wFyH5Hc1"fL(Iw2FHcH$H=I HJ$Hw5HH AHH?ȀAAЃ?ȀAAI fHHAHH ?ȀAAHH?ȀAAЃ?ȀAAILAHH5 1<wCy<tfDA< fv^tA<wCy<xCl@tfA<wCxcIC=LDCxDuHqHC<<C<<C<CfHE1$Hfff.AVHIAUATUSHML$L9rHI9 yA@<=w8HEy$,DIw\@t@@@t 1[]A\A]A^ÀA<w CuC1LHLHt@tLHI9R1L9[]A\A]A^ÍA><wCy<t1kt]A< v3t A<JC><6Cx1)CxuHoHCHcHH)ԁII1HH)H]VLLDHH9s%HyH? ˆHH9rHL)(H:HiII1HHUL1IM[]LA\A]A^ff.UHHSHH9rMH=Oo$HH)1H9|U1HH)H9|?HHH9wHH[]H= o$1HH)H9|HHH9w;,HstHuHtSF f=_t?Hm$HH HAIH1,nHH[]1jHnqH,H1mEUHSHHH9rHH=?n$H)1H9}(HH)H9|HHH9wHH[]1,HrtHsHtLF f=_t8Hl$HH H@IH1,#mHH[]HpHخ,H1ls1lffff.H\$Hl$HLd$Ll$H(I,IH҈t^H(H=H0H@Hv @uHOHپ,L1UlDHw!IEA]H\$Hl$Ld$Ll$ H(Hw HHAE؃?ȀAEIEHHHHAEHH ?ȀAEHH?ȀAE؃?ȀAEIE_@HjHپ,L1}k(H%H=@ DHH AEHH?ȀAE؃?ȀAEIEHvtHHHAEHH?ȀAEHH?ȀAEHH ?ȀAEHH?ȀAE؃?ȀAEIE]HHAEHH?ȀAEHH ?ȀAEHH?ȀAE؃?ȀAEIEHH9woHAEH?ȀAEHH?ȀAEHH?ȀAEHH ?ȀAEHH?ȀAE؃?ȀAEIEHAEAEH<ȀAEHH6?ȀAEHH0?ȀAEHH*?ȀAEHH$?ȀAEHH?ȀAEHH?ȀAEHH?ȀAE HH ?ȀAE HH?ȀAE ؃?ȀAE IE Dbff.1bf1ybfAWIAVAUEATIUSHHHT$(HL$ .,mH|$(AA$@HD$0uMAuGLE1HD$@HD$8AAH|$ UHT$ 1H)Hw6H|$ tHT$ HE$$Ld$0H\$0HHH[]A\A]A^A_Ð{E@<=w!H|$(vAD$`IwIEHHF f=_sHe$HH8IHپ,L1e@{AqLE1AHD$@HD$8~A[LE1AHD$@HD$81A H|$8HD$@Am(HVDHcHLE1AHD$@HD$82EH|$8HD$@A%HpLL^HHLL1*TgHvMHvAHv6Hv+Hv HvHH9H|$8HT$0ALHSL$8LLH$HĢLE1SH£HLL1uSDELL$0HLLL1OSHD$0H|$(LDL$8L$(HPLLH$HLE1 SHT$(HT$8?H$HLL1R#L9D$8HT$0AME)L `ALLD$HqH$H^LL1RHHLL1wRHAH|$8 AH|$8IAH|$8uLe1ۃHHH hHHپ,L1aMLD$0H;LL1Qjff.AWAVIAUATIUHSHHHHHD$u HHb$0DhDEH$F<0HD$t A?HD$@HL$H9 rHt$E1LDH1Ht)H t0H HHA1HH\$Hl$HH HʐH5zE1E1HSAH f.Ld$H\$H8HIHdH%(HD$1^HL 9HT$dH3%(uH\$(Ld$0H8BZfHgHffffff.H\$Hl$HHH=1Ht)H t0H HH@1HH\$Hl$HH HH5xE1E1HC@H f.Ld$H\$H8HIHdH%(HD$1]HL9bHT$dH3%(uH\$(Ld$0H82YfHQHffffff.H\$Hl$H>_HHt5<1Ht)Ht0HHH?1HH\$Hl$HH HH5wE1E1H)?HH\$Hl$H>_HHt5=<1Ht)Ht0HHH%?1HH\$Hl$HH H+H5GwE1E1H>HLd$H\$H8HIHdH%(HD$14\HL@HT$dH3%(uH\$(Ld$0H8WfH1Hffffff.H\$Hl$HHH7;1Ht)H t0H HH>1HH\$Hl$HH H-H5AvE1E1H=H f.Ld$H\$H8HIHdH%(HD$1$[HLZHT$dH3%(uH\$(Ld$0H8VfHMHffffff.H\$Hl$HHH':1Ht)H t0H HH=1HH\$Hl$HH H&H51uE1E1HzMtHHH|$u2I6HH$H9HH|$H|$t HD$HT$H1H|$t 1LH4H\$8Hl$@Ld$HLl$PLt$XL|$`Hh1LH/.HH^HvHH$E1HHHH)H0HFHH@HD$HHH0HT$HLKHLHUL)HD$HLHgUL)HD$H H5pE1ALHh7I\H(HH HHH9ɃHT$"HdH HLTL)HD$DHqL cL HH$NAHfAWAVIAUATUSHHT$0$LH|$0H|$8L$DD$/HT$HHD$XD$.D$ot9HD$0HHHD$Xt'HuHD$PD$nD$oH)H9sD$oHHt$PD$nH$HD$`)H$HHHD$`ME1|$nH|$`D$FMD$G|$F HT$PL |$/|$.H$HT$xE1E111HD$ H$HT$HT$pHD$H$HT$H$L;t$X|$oL;t$Pt|$nti|$GuL9|$Hu[H|$0tHD$0L01H$tCHD$HH$H1/@H)I9|$nN< |$oHĸ[]A\A]A^A_À|$GuL;t$Pfr |$nR|$FuHT$`H9T$H;|$Gu L9|$H)Hu?|$/LAHt$ H|$8QLl$HL$Ht$ H|$8LK7H\$xHuB|$.'HD$HHt$ H|$8QL$$HL$Ht$ H|$8L7Hl$pHuC|$/IHg|$.HD$HMƄ$HtkAuL vB$fDA $@AA:u @8DLLM9LtML)ML)RHuHW?Au@Ll$HL$LH|$8L6L$$HL$Ht$HH|$8L5AHA$HD$HHA$H\$HLd$Ll$IHIHH)PLHHLH$Ld$Ll$Hv5fDHL ہL HH$HHt0H0Ht(fF VeLdJHt @OI$HH@8Hp(HWH~E1L=HHtH0Ht fF 0H~L-5$M$ I]IH}H3I$HHH@8Hp(HtgE1HLJ=HtH0L9tfF tLTtAƄ$IUH5}L0I]IHuH[]A\A]A^HL6HH@8Hp(}:BT}:BDH}H5}LU08EHH*I$HH@8L>TH3E$F(HH@HD$HHHHHl$E$H9|B<vOB<vHB< vA_u D5B<v+B<v$B< v_tH=|@HHH9wLSubH3HA|H5E|AƄ$L7/HL4HH@8Hp(HL|4HH@8Hp(H{H5?AƄ$L.zHT$"LFXHH{H5{AƄ$L.Dfffff.fffff.fffff.1ffff.fffff.SHHHtH`4u H8PH5[{H1 [1L u[1Ðfffff.HHGhHOHDHHGhA@HH4L 1I@tHLIcHH)HtH5z1N@AB < uuH IHwH7HH IHwH7HHGhHwHHHGhHcHH)HuJAHHH H@ uH HHWHH@H HHWHHH5#z1Mfff.Ld$Ll$IH\$HHGhH0HHGhHcHILo/PLH'IEI\$Ll$I$H$Ld$H@Ld$Ll$IH\$HHGhH HHGhHcHILoOLHD'IEI\$Ll$I$H$Ld$H@H\$Hl$HLd$HHGhHwHHHGhHcƒHcHH,H)H.HHHL t)tBH HHoH/H$Hl$Ld$HAD$tiH HHoH/Ht5HF tQHHtoHPHAL$ H HSHDHkH+|H HHoH/fuDtZHfWf.@  „uAd$ H HSHDHkH+HHxHtH80*NHl$Ll$HH\$Ld$Lt$L|$HHGhL'D0HHGhIcHHWLH)IIEAt{AAD$HZI9HD$PHD$H3FtWHH@HD$PHHLADH\$Hl$HLd$Ll$H(HGhHwHHHGhHcHH)HAHL$HGN,&@% tcHPHGH,LHHHHLk E @t HHO1K,,LcHl$Ll$ L#H\$Ld$H(v+HH5oj1=Hl$H\$HLd$HHGhHwHHHGhHcHH)Hu^YHcL$J4&FHuH H HHDHHEH4LeLeH$Hl$Ld$HH5i1F=fDUHSHHGhHwHHHGhHcHH)Hu&YHcHH4=H]HH]H[]H5i1U IƁNHHH@8Hp8&=HH IdH5f15DATH5bSHH(H($dH%(HD$1HcHH$cD$k7H$H5YbHHR7H$H5ObHH97H $H5IbHH 7H$H5>bHH7H0$H51bHH6H$H5%bHH6HN$H5bHH6HU$H5bHH6H$H5bHH6H$H5bHHq6H$H5bHHX6HbHHvH$H5aHH-6HaHHKH$H5dHH6HaHH HQ$H5aHH5HaHHH$H5aHH5H$H5aHH5HdDHHH$H5aHHh5H9DHHHw$H5qaHH=5H aHH[HD$dH3%(uH([A\ 'ff.Hl$Ld$HLl$Lt$IH\$L|$HxHIIDD$DL$tH9tI$LH@PHD$@Hf'u-H HHl$PH\$HLd$XLl$`Lt$hL|$pHxH=r\ Lt|$dH`E1LHlH@HH HT$ H9(HH@8L8HD$8MtMH@(HHD$8t?AGIHPPH9Ht$8HPLHfH[E1LHHnHH H9[HH@8H@ HHD$0BH|$8MD$/lH_ALHaL8A t!H i_AALLHtIH@8H@(HHD$8|$/SH|$8HT$0E1HT$L @T$D$H HD$.H\$DL$LDD$LHHH9tiIAD;|$tSI$1HH{Hu H5tLD$@HdHپH1GH ~H L$Ht$8E1ILH XE1HD$8,|$/LHwHL$Ht$8E1LHHHH9\$ PH}$IHR8HHT$@H5`H1h/LHHH@8H@(HD$8OH\$Hl$HLd$Ll$HLt$H(F I H1HE1HH C ItHLp01LH.MHtLLm#t:@1Mt/LE1LAHLHzH H9H$Hl$Ld$Ll$Lt$ H(H1H^1LHIn-HtC ff.H\$Hl$HLd$Ll$H(HGhLgHHHGhHcIH)HAHH,M,,AE u,H JD%HkH+H\$Hl$Ld$Ll$ H(éu"uoAE % = uIEHxtJt%FtVHHLH1H H HDJT%HkH+뀐LXAE LcPIEHxu1ҹ"H?5LcHH5]1,Hl$H\$HLd$HHGhH7HHGhHHcHHGH)HHulHG H)H~PH%LeHc1H H HHDIH]H]H$Hl$Ld$HfHH5]1,H\$Hl$HLd$Ll$Lt$H(HGhH/LgD(HHGhHG@% HPHGL4IcIH)Hu.AEHL$LHCH(L0E uH5\H1n+tHE1HH0v LHHhAF @t LHVLcHl$Ll$Lt$ L#H$Ld$H(f{ICHH5E gffff.Hl$H\$HLd$Ll$Lt$H(HGhHLgD(HHGhHG@% HPHGL4IcIH)HAEHHHHEHL0B tktdHL AT$ urƒ  ttAF @t LH.H]H]H$Hl$Ld$Ll$Lt$ H(H5*[H1)CI;I$H@0HLHHPPtf@z*LH !HaI$Hx8RHH@8HH@0HtHHyP1HtHHBPHyI$HB`Htx tHB8HTHH@PH?ffffff.H\$Hl$HLd$Ll$H(HGhHHK8HHHChHcHH)HHuWGHHH tCt;HHjL AD$ t7 H+Ld$H\$Hl$Ll$ H(ÐH5YH1?(I$DEy8HC H)HbH5aHH.HH*HEAt8HC H)HH57aHH-HHHEA@umI$H@`HH@8H*@D HC H)H~wH5`HHx-HHHEI$H@8HuHC H)H~GH5GsHH--HHBHEZHHHfHnHHHKHHHH3HHHHHAWAVAUATUHSH(HGhHHHGhHHcHH)HAHHL4HD$IH HL8HD$DjHT81HHIHT$ D$ H$kHH@HD$ HH:-Au Hl$ HEO A ||$ ID$ IA1I\$IHCuH$"HH-HH5 WH1X%IFHEH([]A\A]A^A_Ð|$ uB+DEɁtatΰF+DÃtrF+DøwfDHGHHDfHu HHHtfAxfy H1Á`1f.HtCHHt;@ taHVtHVF+HtrHVuu HHHVHw1ffff.1ffff.HHtHHt @øHtHHt @ øHtHHtHf.fffff.HHc@Ht$tHWHHuHHHffff.HItT#tOrtVwatYbtuttpt@ HÄuHfHruH11+uHH1ɸA+uHBbuWfH1ɸA+gHHAɉAIt @AH<#t5tAfffff.HHt7HHt/H@HtHHt H;HfD Hff.HHt7HHt/H@HtHHt HHfDk Hff.HHtHHt@HÐ+ Hff.HHtHHt6H@HtH@xHt IHA+HH HHfH\$Ld$HLl$H(HK#I8HHIHT$LLHD$1H|$H\$Ld$Ll$ H(ffffff.HHtHHt6H@HtH@hHt IHAHH HHfH\$Ld$HLl$HH #I8IHIHLLH- H$Ld$Ll$Hf.H\$Ld$H(H#I8HT$LHǹ\$ H\$Ld$ H(HHt7HHt/H@HtH@HHt HfDHfD Hff.HHu HHH6HtHHH\$Hl$HLd$Ll$ILt$HHH#I8H51HIHHHLHLH$HCHD$HCHD$+EtUHUHBHD$HHL$LLHHLHl$(H\$ Ld$0Ll$8Lt$@HHHT$"HLHfDHHT$0HL$8HH7LD$@LL$HH)H$)x)p)h)`)X)P)H)@H$H$D$0HD$HD$ HD$ HHH]#8H5W]H1 ffff.Hl$Ll$HH\$Ld$H(H1IHsPHtdH{tFH{HHCHCP1HCHHS0AHuLIcHHDHCHC HC(HE`H\$Hl$HLd$Ll$ H(@Hl$Ll$HH\$Ld$ILt$L|$HHH{PCAE1Au;LH$H$L$L$L$L$HHT$ƿD$ LcuD$(%=uHS0HD$@H)H|H=k$HH k$H1Lt$@DD$ 1HILM)ML3HCHHHw;HUD% BHCHLsPLHC HC0L)HCHHCHC(HCIHHk$|.HS03HuLf+HHC0"AIHH@8HC <v-t;HH@H$HHH5WXL1 HL*C H$HLHHEDIPHC(HCHC H5W1L1i H5"ZL1X H\$Hl$HLd$HH]IH{HtHC@H9tg HCHC HC(HE`LH$Hl$Ld$Hfffff.ATHIUSHtYHHHHuJH~Ht5H~~)1HHHt8Ht LH{HH9k H[]A\ []A\SHHCHt[ÐH{8t9H{8DHS81HHC)H{tHCHC(HC [@HC8HC@HC8HC@Hl$Ld$HH\$HHIHCHtCu/HCXHCHLH{t'HCHHC HC(t&H$Hl$Ld$HHCXHCfDHLH$Hl$Ld$HH H@H@H@HHfffff.ATUHHSH]Ht.Hغ f@tHH8uHH[]A\Hɿ$1IĺHMtI\$LefAW1IAVAUIATUSHHH|$HT$HBHLt$thH|$LHcH~NI9IMNM~qH|$LL)M)LLHHMH|$J#LHtMuLH+D$H[]A\A]A^A_HH|$LuMbȀB H1[]A\A]A^A_fff.H\$Hl$HLd$Ll$H(HIIHt8HHt0Hx(tDHLHLH\$Hl$Ld$Ll$ H(H\$Hl$1Ld$Ll$ H(?ffff.HHt7HHt/H@HtH@XHt IHAH HHfSHHH)#8jHT$HǹHHuT$H[ffff.H\$Hl$HLd$Ll$ILt$H(IIHHH9HN1H~LLL HHH?H9}!tH)I.LHL4Hx#HHH$Hl$Ld$Ll$Lt$ H(HuDH\$Hl$HLd$Ll$HL|$Lt$H8IIML6x uXH3H>tH7HtIF0MLLHHH\$Hl$Ld$Ll$ Lt$(L|$0H8HH@HH1@Hxt HcHHffff.H\$Hl$HH@Hht Hm u1Hqt"H19uH\$Hl$HHHffffff.HHx4@HHx@HHHxHHfHHHxHHfHHx@HHILƉHxHHÐAWIAVIAUIATIUSH @ILLHHHHy#8HuA$tLHH[]A\A]A^A_fDAWIAVIAUIATE1USHHHh }`F8HuSAusItNHLLIIuHt8IHtHL[]A\A]A^A_HtAA֐L(fDHHtHHtHxHt HH HHH1xfffff.SHHH@xt8H[ÉHtH`1[fffff.AWIAVIAUIATIUSHHhLLHHy1uA$tLɃ t IHHH[]A\A]A^A_H\$Ld$1Ll$Lt$IL|$Hl$H8HIII΋h@% =t.HHl$H\$Ld$Ll$ Lt$(L|$0H8L}LLHH}u;A$tuMtIH@u lIH]HtHt!1Hl$H\$H(H`HHu1HHl$ H\$H(H`HpXHtFt?HH@HD$HHHt}rt1H2HHtH)H;D$sHZHT$"HfDH #SH /LH51LHrHHh#H L[H5$LT@Ld$IH5&LH\$Ll$HHfLHIHHLHLd$H$Ll$HH ffff.AWAVAUATUHSHH'HIHEHL L|$HD$1HIHD$H@HH@@H|11LHHLLHOHLHAHD$Hߋp1LHH#HD$HHt+HD$H@Ht HpHcMhLHL[]A\A]A^A_fH\$Hl$HLd$HHFH9FIH|-H{HpHsHtVHH9whHHCHCHHHHSHHCL"HjtEH$Hl$Ld$HHH9wHHHCH=+#1D@AWIAVE1AUIATUSHHHtYH{I~J1AHC1Ht(HtLLHHCH(LLHLIH9CHL[]A\A]A^A_fDUHSHH#H$@L$XHHEH$8H$HL$PH)H$)x)p)h)`)X)P)H)@;dH%(H$(1D Z$HH$$D$0HD$H$0EHD$uDiZ$E;H\$ tH`H`H oHH5oHHHR8HHDыHH1HHHH<HڋH!ကtȋ=Y$HDHBHDHH)wH$(dH3%(uHH[]Ë ; uՋ ; uH=GHt8unY$HǺA1MY$S1ہw%H#HcljH=dG1[fff.H\$Ld$HHl$HHI@ ht_D~'H`1H$Hl$Ld$HLBt 8uE$EtH HvfDH#HcωH=F1ffff.H׉PHAWAVAUIATUSHHt6HHtwH@Ht!HHtЉH[]A\A]A^A_1HH1AL8MtI_MHH;tHLAEL9uLH=E1 ff.H~ vfDff.H\$Ld$Ll$Lt$IH(IIXLLLH\$Ld$HLl$Lt$ H(ffff.H1HHl$Ld$HH\$HHICHS0% = t&HCHtH)HS(H$Hl$HLd$HHuLHHC0H\$Hl$HLd$Ll$HLt$H(IArLct LH$Hl$Ld$Ll$Lt$ H(HDLH`H3LcuHHHHC0DAWIAVIAUATUSHHH|$HHyHpQQ)II1MHD$!HE8HEH9E(~MIHU(H+UHE8H)I9HINM9vIDLL)L9HCځIHtH}(LHII)H\$H](M9uH|$LqH|$LMuIH\$PueHH[]A\A]A^A_N$3L9rH9IA|$ ID$uH|$Lu IQ1H|$LuIfDHl$Ld$HLl$Lt$IH\$H(HIIHCHtCu H{Pu2HtILLHLH$Hl$Ld$Ll$Lt$ H(HLQHuHCHuHCXHt%HCH$Hl$1Ld$Ll$Lt$ H(HLGHCHCXqf.AWIAVAUATUSHHH|$HT$HJ@HzI1Hl$LtL9IM8IMH]JIE(HLcH9w'[fHIE(IE(H9v6HI9vTLcHS uHPH9r{ @ IU(I@tH|$LIM9ILlIHuAHH+D$H[]A\A]A^A_HHT$H[]A\A]A^A_H|$LCH|$L4H|$HIJILHfAWIAVAUATIUSHH.EItpH]H$@HM(H9s*H)HHLH~HM(HH9rE1H+$H]0.uHL#tIAHҩuUE1IFIcIF IF(I`Ht"H}tHLBIcHHDHH[]A\A]A^A_;HU0HU(HH)HE(H;E HU0sHtH}t1HLftHE(H)H)E01I/LE1HIF0GfHl$Ld$HLl$H\$H(HI IHCHt H{Pu'HCXLH\$Hl$Ld$Ll$ H(HLHtIHHBHHt HBH@Hl$Ld$HH\$HHIHXHH_~{H#1H;tGH/#H;tQH#H;tEHLHD CpH1҅tDeH$Hl$HLd$HHL^HcHHcgH H\$Hl$HLd$Lt$ILl$H(HHuIH>t>LAHt H}AHuL^HDLNHuN LH$Hl$Ld$Ll$Lt$ H(AUIATUHSHHtiH6HtaHHhLcHE`HHu 0HHt(HPHҐt HHu4`HHHuHL[]A\A]- IHLHtѐfffff.H\$Hl$HLd$HH]IH{HtHC@H9tHCHC HC(HE`LH$Hl$Ld$Hfffff.Hl$Ld$HLl$H\$H(HI:AHCXHtHCHCXHC HC(HLOIcHHH\$Hl$HDLd$Ll$ HH(fHHt7HHt/H@HtHHt HHfD Hff.AUHHIATUSHL MtOI\$I$DH9t+HHHt@%=uHL%H9uLL MuH[]A\A]f.Lt$L|$IH\$Hl$ILd$Ll$H8H.HI@H}hH}HEHE HE(H*HLLcMHLHHE8H}HI9IMNLDJ+HD)LMMLe1Le IHH\$Hl$HLd$Ll$ Lt$(L|$0H8HLjuqHLtbIHHLEHM8HU(HLI]HL躶LcuHLLcMMtIHH6LLVH\$Hl$HLd$HHL&HcuI|$tAHu H@tH$Hl$HLd$HHHH$Hl$Ld$H϶HHHffffff.Hl$H\$HHHHxH;U|Ht=H\$Hl$HHHEHH=r7HHHP1yHEH H591!H\$Hl$HHPHHt7HPHH1HuH=7HH\$Hl$1H 趻HPffff.USHHHWhHHc HHWhHWqH H)HtPHcH,H4*Ft*HH0H=61薵HkHEHH[]@"1HHcH,fAWHAVAAUIATIUHSHHHD$H HD$=I$PLXM~;LPE1LLHHH9JLCLu A<( IM9uE I$ I$XHHxE$EH55LPHLLI?H541LI{LHHt$L蓼HtHt$LCI$ A$E1M111LLE1bA$L!HLHH=4HL1³HH[]A\A]A^A_H=4L11蛳H5b6L1HH\$Ld$ILl$HH;#IH=4HHD#1Hs>HsL11I$ LLH$Ld$HLl$HfDAWAVAUATUSH(HH|$ Ht$H H HD$H KH t t t t tހ:tلaA<vA<v _[HHuF<vF<vF< v@_tE1E1@(HtH9MH[HuHEH<)+t9<(DtuIE1fu<\uEHfuH|$ 4H([]A\A]A^A_IH|$ I)HLHHIMHL$tH|$ LL2HHt$H|$ L"LeII)H(1[]A\A]A^A_H|$ '@ōl"u9DH|$ @H3Aɾ1H$H|$ H1IDH|$ 1]HMH3I)ӐHl$H\$HLd$HHXHtHxH$Hl$Ld$HE1䀿HȵH!#HXHH/H5#H H5a#HH5#HH5#HH5#HH5#HH5f#HH5g#HHs11H7HXH HHMtTHXLH7HXHxDHHUHXH=p0IHXH&HXf.H\$Hl$HHHyXH #HcHH\$Hl$Hfffff.H\$Hl$1Ld$Ll$ILt$L|$HHD$PIHT$LD$DL$Dt$XLd$`$l$hH\$pHtcLX0MtZ$H\$pIMl$hLd$`LDt$XDL$HƉT$PLD$HT$H\$Hl$ Ld$(Ll$0Lt$8L|$@HHAfH\$1Hl$ Ld$(Ll$0Lt$8L|$@HHH\$Ld$HHl$Ll$H8HGhHOH0HHGhHcHH)IIAXFHH,Ht FHH@HD$HD HL(1At=HC1HtHt*F twHHHHHHT$LH荵HLctdHHHH螹JD%HkLd$(Ll$0H+H\$Hl$ H8éuItoHfWf.@  DH HT$"QIHHxI1?HtH80,HtH5~/1ffffff.Hl$Ld$HH\$HHIHtQHCH=-HP1詫HCH@(Ht HLHu!HHHEH$Hl$Ld$H~H$Hl$Ld$Hff.HHB@t俉BHH!#H9Pt 1H@k1H@ATIUSHHH@藪HHHt.HHt&H#H9Pu DH9PtHH@u[H]A\ËP@u@PHL[H]A\DHl$Ld$IH\$HHHH{HtHC@H9t mHCHLH$Hl$1Ld$HDSHH?Ht=H#HHt,HHH9WuH9wuHR#8蓪HH[7[DH\$Hl$HLd$Ll$HLt$L|$HHdH%(HD$1HIIMH6HHH~L9@H1HT$dH3%(H\$Hl$ Ld$(Ll$0Lt$8L|$@HHLHDHI HHt7HHHPH3иMLLHH}BAyHezf.ATUHSHqHAuHHH;u[]DA\fDH\$Ld$HHI7HLH\$Ld$HHff.AUIATIUSHH.Ht9HHH;t HLxHH9uHIEH[]A\A]@UHHH=K)1SH1߃uHHH蚦1胶߃yuHPHtHHDžPHXHtHHDžXH[]ffffff.Hl$Ld$HH\$Ll$H(HIu HH\$Hl$Ld$Ll$ H(H>t貶HEHHLHHIt*H@H@8HtHLHuHL9uHHHEHtH@H=(HHP1w1jHHu HHHHtHB@t b11DH\$Ld$HLl$Lt$IL|$Hl$H8H:IIMulHjHu]Ht-H 'HRMH=y'IE1ȥHC HLH\$Hl$Ld$Ll$ Lt$(L|$0H8DHwH5+)L19HHHtMtHS1HI$H &H]MH=&MIELHEI,$1HS HEH@ HTILLLLH:LLE17'fLILLLHLEHl$Ld$ILl$Lt$IL|$H\$HxH$Ht$0IMDL$,Ht HEHI_1L@HHLL?AHT$GLP0MH$Hl$MDL$,HHLHT$ $T$$T$$$LAHHt@LLHT$0ILHL迶HHL |$GIt7@HH\$HHl$PLd$XLl$`Lt$hL|$pHxe눃uHEHHHALHD$8HHT$8HH+HtWLP0MtNH$H\$MDL$,HL$8HLHT$ $T$$T$$$LAHHu13HELLH@HX ܮLD$0HLHLHHL1ff.H\$Hl$HLd$Ll$H8dH%(HD$1H#H8HIu21HT$dH3%(HH\$Hl$ Ld$(Ll$0H8H}tHHȱHt;uHHHHL5Hމ軺HHtH#LmE1HEHHL蟴HHtHHXHL(K0Lm=HHtH9#H9PuH9PtHHu1DH@ffffff.H\$Ld$DLl$Lt$ML|$Hl$HXLd$pH$IdH%(HT$1Ht$IH$Mt I,$Hl$x~3H0FA}#HH8T$ht$`1I葼Å=E1HT$dH3%(LH\$(Hl$0Ld$8Ll$@Lt$HL|$PHXH0F'HL0H}~H]Ht$LƼHHL許H}vHEHAaD1L"A}#HLHH%MCHt$LFH<$LH觫HT$LIHLqHIHHHh覟_A}IuEImH#H5"1I,$IHt$L衻HHԷHHQMtfH<$LHT$LIHL豱HI!HHHXH##HH#HL5IL(IH\$Hl$HLl$Ld$H(H#H8Ğ1HIt9HtU;tPLHٶ#E1HHLHHtHHhH\$Hl$HLd$Ll$ H(DHHwH5dA艶Ht HwH5DHaHuH5DMHuDp1hHH\$Hl$LLd$Ll$ELt$L|$HHH\$`IHt$HT$IDl$PHtHHt @ D$h~L}#H=D$XAAt)HD$pH0FHH8T$XD1薸AE 1}IHHH;DDHLHH }at:HHl$ H\$Ld$(Ll$0Lt$8L|$@HH@HU1HLH@HLHHafDH|$LHT$HIHL譮HH6RL"1HD1/fH\$Hl$HLl$Lt$IL|$Ld$HHdH%(HD$1HIHEHt'HHtH@HH@PHHHtuIEH=ILHL`1It$ךID$@HHDLLHHLHHILL虭HHt HL膜HT$dH3%(HugH\$Hl$ Ld$(Ll$0Lt$8L|$@HHHEHLH7HLEHHE1LLH;ff.+ff.Hl$Ld$HLl$H\$ELt$H8dH%(HD$1HItFHEHXHAAu^HHDHaHI$Hx豙jHT$dH3%(LuMH\$Hl$Ld$ Ll$(Lt$0H8HqjxHH)HH西DHl$Ll$DL|$H\$ILd$Lt$HHH|$Ht$AL2IA^u1E1v1LH\$Hl$ Ld$(Ll$0Lt$8L|$@HHÉƤHt$H|$ALLHItANH|$Hffff.H\$Ld$HLl$Lt$IL|$H(II負H #H iHLE1IHLLHLLh0H$Ld$Ll$Lt$L|$ H(offffff.Ld$Ll$ILt$L|$IH\$Hl$H8HIICHKHIE@HS8HHC HC(IEHHC8H)C0L9LHNHH{(K4'H)H)H9H{(tH5IEI)H`MtLLLL讠HHHl$H\$Ld$Ll$ Lt$(L|$0H8DHS(H)m@[!LLkHKH1f.Hl$Ld$HLl$Lt$IH\$H(HIICuNHC(Ht II)L;CsaH{Pu9HLLLH$Hl$Ld$Ll$Lt$ H(饰D諥LL螥H{uHCXHtFHCH9LLHuLC(I$`HH$Hl$Ld$Ll$Lt$ H(LLHCHCXNAVIAUIATIUHSHHCHHt HCHHC@HSHHE@MHs(H{H9O&IL$A1DHFHC(VLHtPHs(H{IIHH9v7AP uHFH9r1HFHHC(F HS(HBHC(B Lu[]A\A]A^@HFHC(LF HHC8HC(HC HEHHC8H)C0(HL[HLL]A\A]LA^鿮HLHSH1sHl$Ld$HLt$L|$IH\$Ll$H8HHIILhSt/MubH\$Hl$1Ld$Ll$ Lt$(L|$0H8DMtLLHLH\$Hl$Ld$Ll$ Lt$(L|$0H8C\&L9uL輫f.HHt7HHt/H@HtH@`Ht IHAH鷜軷 HHfH\$Hl$H(H#H8/uHl$ H\$H(HT$HHLj\$HEfAWIAVIAUIATMUSLHM9H4$| MHL9tD1HLLHHtHLH4$ILHLHu1H[]A\A]A^A_f.H\$Ld$HLl$Lt$IHl$H(HIIt2Ht-8HHLHgt2HL@1ۉHl$H$Ld$Ll$Lt$ H(LME1HLLLWAWIAVAUIATUSHXL$HT$@L$tGLLHLN+HHl$H\$Ld$Ll$ Lt$(L|$0H8LL襻HIt8uLtIEHLϲpHH@   fCH51ɺLtHH!L1NI$ IHHL%L(I}H1HHLHIEHHHHI9mL@HL1螱H51ɺLÏHJH5ZtL袏H) t) fCH5u1ɺLtHH51ɺLVHfffff.Hl$HH\$Ld$HHHEMILIMEHtH@HPH= A1H*Ht+1HHLH$Hl$Ld$HH#E11HLHH\$Hl$HHHHuHH\$Hl$HÐH>teHHڟ1fDAVH1AUATIUSHHH=L]H+HtDDLmALHHtHPBu)HHHuAA?~>HH+Hu[]A\A]A^HrH=1HL軔HL0ILDAVAUIATIUHHSHHPHLJHHXLLI$PǫLI$XGH=|1HLcLuMt8I^IHH;tL1HLcH9uLLuMu[]A\A]A^fH\$Ld$HLl$Lt$IHl$H(HIAHHHhH=1HtBHmPHt9LzELHLIH$Hl$Ld$HLl$Lt$ H(ALAELHLH$Hl$Ld$Ll$HLt$ H(遳+ H$1Hl$Ld$Ll$Lt$ H(ÐHfff.HGff.HGff.HGff.HG ff.HG(ff.HG0ff.HG4ff.HG8ff.HG@ff.HGDff.HGHff.HGPff.HGTff.HGXff.HG`ff.HGhff.HGpff.HGxff.HHHHHHH0HHHHHHHHHH H(H0H8H@HHHPHXH`HhHlHpHtHxHHHHHpHxHHHHHHHHHHHHHHHHHHHHH H$H(H0H4H8H<H@HDHHHPHTHXHHHHHHHHHHHHHHHHHHHHH H(H0H8H@HHHPHXH`HhHpHtHxHHHHHHHHHHHHHHHHHHHHH H(H0H8H@HHHIHJHKHLHMHNHOHPHQHRHSHXH`HhHlHpHxHHHHHHHHHHHHHHHHHHHHHHH H(H0H8H@HHHPHTHXH`HhHpHxHHHHHHHHHHHHHHHHHHHHHHHH H(H0H8H@HHHHHHHHHHHHHHH H H H H H$ H( H, H0 H8 H@ HH HP HX H` Hh Hp Hx H H H H H H H H H H H H H H H H H H H H( H, H0 H4 H8 H< H@ HD HH HP HX H` Hh Hp Hx H H H H H H H H H H H H H H H H H H H H H H( H0 H8 H< H@ HH HL HP HX H` Hh Hp Hx H H H H H H H H H H H H H H H H H H H H H H H H( H, H8 H@ HH HL HP HT HX H` Hh Hl Hm HpHxHHHHHHHHHHHHHHHHHHHHH H(H0H8H@HHHPHXH`HhHHHHHHHHHHHHHHHHHHHH H(H0H8H<H@HHHPH#H#H#H!#HɃ#H#H#Hi#Hـ#H#H#H#H9#H#Ðf.`r(f.s z H,@1f.`zf.zr,fDf.szf.z(s&Ðf.szH,1f.,`, f.vf.:Hz2s0Hf.s.z,f.r\HH,H1HH,H1f._HHff.f._rVf.&r1f.z_HHz f.r8\HH,H1HfDzf.fHzrH,Hffffff.ptKfWf.tC1҅xD ? DYt1Yut^Yzf(ߺfffff.UHSHHHHtpH`HHH9H`@%tDFtzHH@HD$HHLHD$M I9wH9LHHu L LL9vA8.t 1H[]ÐI@HH[]ËH |HT$HAW1AVAUATUSHHH|$HT$HHD$@HD$HHD$PH$HD$`HD$hxHDDŽ$HD$0 HH$H$< t< t< t< t< t<+<-D$/HMxVI*D$0A*YD$0XD$0VH|$(H1qMyLLHH H*XL$0LH+\$ H|$(ˍu^HD$EH`.HD$"H|$(蓍 A $H|$(HR1NqH|$(H]11qE11DS1HH HT$H9HT$HL$LD$D$HHD$HD$uHxH*H [D$H [@HЃH HH H*[XDAWAVAUATIUSH8HL$H|$(Ht$ HT$LD$HAuME11HuHL$HHL$ @u 뵹)HLwHp듹]HLaHpzH5@L1p[]A\HFf.AWIAVAUIATUSH8H.L~f0L9sWH;L%4< t:< t6< ft0< t,<#tLDHA,AB0t?I9vE< fuHI9wI*1H8[]A\A]A^A_Ð} tHI9wپ*LL$-uL$tAB0LH*LAB0L$HD1XL$qA(DI9L%`U!|I9B< *:[BAB(AB$E< t+< t'< t#< t< t<#HI9} uHI9wDAH=L$5_HL$*LL$tL$t:At1AB0ML 'H'Aؾ*LMD1WL$HAL9AB(AB$Er I*@UB< v *t[u(AB0HHH51LHD13nIj)LHLL$L$Az,cIB]HhHAB0HLJH H5!LLD1mIR$HLL$L$HAB(w$/H$HD$0HT$(An(A^ $(4A^$IH$LH$IFH$IFH$IFH$IF H$IF(H$IF0H$AF0$HDŽ$ "$H=aDUH $ $`I ~ H$H0LT1$ZL@H40YLH>H$ $(%=SvP$(H5׾L1d$\$(H=1THD$`HHcHIHcH1H@H҉$,)Ӄ Hc~-DH#A LL = HcH#ALL`=$\H$$IH$IFH$IFH$IFH$IF H$IF(H$IF0sۉ$\~I L$1HT$P3HH@ALLLH$<9H$ H?FuL{G볍Kۉ$\I L$1HT$X3HH@ALLLH$$<9rH$ HFuL9HT$@I HD$hH›HT$`Kۉ$\sH$ HuC[H@ fW$f.C  Rf.AUHH@H$HH0H$LHHjH$\HH$IƄ$>HT$0HLHȀ$>tID$H$LLAHL H$H):L[bHL@0$\|I?HwDŽ$\ H54L1`H$ H=FwHH@H$HL ID$HBK$,؃HHHBIHQHH9Q@Hc$,HH$$9N1$,1$(BuC$\I;$,P$\ A$E$\uH$@0H1H$H$ HFZHH@H$HHH$H$$\9$\Hc$\ALL8$(Z$\xIHH@DdI?$Hw)Åۉ$\ 6AF0AV,AN$Av AF,Ef($X$TIF$P$LINI$XInH$@H$0INH$8Av0$\$\$\t9L$H$LI.LLJAH$uH9$uAF0$T$P$LH$@Ef($$XAV,H$0AN$A^ AF0H$8IvInIVIDŽ$\H$M FumHDŽ$AHLL#7$\$\H$ HC tHL+C tL^b\S :%=(C AHH@H$HHH$1Cۉ$\I L$01H$3H@ALLLȉ$069c H$ HFuL3벍Sۉ$\I L$<1Ht$pCH@f$<CALLLf$<59 H$ HFuL`@H$ HFHH@H$HHH$H$HHHIHH9P}DŽ$\-~غVUUU)ڍR$\Ho9$\D$\ALLH$DMH D#IcDH$HT$ $r4AƄ$H5C#AL?$S0 ƒ?$SC< ƒ?HT$ $HCH?L$3`~|11҃>H5C#AL?$0 Hȹ?$HcHT$ L$$/$@3H5ALL#3H$H)$H$H$-Cۉ$\I L$<1Ht$x3H@ALLLf$<29 H$ H FuL=f뱍sۉ$\I L$1H$3HH@ALLLH$&29t H$ H FuL<볍Sۉ$\Kۉ$\{I L$<1H$7H@ALLLff$<19H$ H FuLc<묍Sۉ$\I L$41H$1H@ALLL$419VH$ H FuL;볍Cۉ$\sI L$1H$3HH@ALLLH$09H$ H FuL_;볍sۉ$\I L$,1H$1H@ALLL$,09UH$ H FuL:봍Kۉ$\sI L$$1H$9H@ ALLLZ$$/9H$ H? FuLY뮍Sۉ$\I L$1H$5H@ ALLL$.9KH$ H FuLvYI?Hw$\9$\Hc$\H)HwIHH@>Cۉ$\,I L$01H$?H@lj$0CALLL$03.9H$ H FuL+릍sۉ$\ M 1eH@$(IHPHH9P;,LNY<I$(HLHpH0*6IH+9HBc H$ HrFuL9+뀍Kۉ$\I L$:1H$3H@ALLLf$:-9]H$ HFuL*볍Sۉ$\{I L$1H$3HH@ALLLH$,9H$ Hb FuL7*볍Sۉ$\I L$(1H$1H@ALLL$(,9]H$ HFuL)H$ H F0 HH@H$HL ID$HAS$,HHAIHQHH9QHc$,HH$$9NÃ$(H$, IL$11$\H;$,P$\ QB<v B<|  $\uH$1HH$뙍SL$HDŽ$$\LI 1H$5H@ ALLL$e*9H$ HFuLT$(M c6$\sۉ$\H$ HUCuF H@=$,$,HT$HALL$?)넍sۉ$\;I L$01H$1H@ALLL$0P)9H$ H[FuL&봍Kۉ$\I L$1H$/HH@ALLLH$(9t!H$ HIFuL|&)$\EHHHHT$8fHHȀHɈuHL$8$IALLH)[(HLR$`H\$h~H$HHH$$`WAHH@H$HH0H$LGHH H$~IHH$IƄ$>HT$0HLHȀ$>tHL16C S HT$(1HLf7HL$H$`L~H$HHH$$`FH@$,=LJRHL1 6LLuFD$`Ht$XE~H$H1HH$$`?D$`Ht$PE~H$H1HH$$`$`H$~H$H0HH$$`$`Ht$x~H$H0HH$$`D$`Ht$pE~H$H0HH$$`$`H$~H$H1HH$$`@$`H$~H$H1HH$$`$`L~H$H0HH$$`\D$`H$E~H$H0HH$$`D$`H$E~H$H1HH$$`D$`H$E~H$H0HH$$`D$`H$~H$H1HH$$`$`H$~H$H0HH$$`$`H$~H$H0HH$$`D$`H$E~H$H0HH$$`$`H$~H$H1HH$$`$`H$~H$H1HH$$`gD$`H$E~H$H0HH$$`l$`L~H$H1HH$$`y$`H$~H$H1HH$$`$`H$~H$H0HH$$`If($Y$YkIH\$`f($0H;\$@(L$Y9IL$f(f( HYX,fWȀf.Ȉ$wHL$`$AHLLH)G!HT$(H޹LOH)$\IHH@L,"LLHL1C0L+fDHT$(H޹"LVOHHT$( HL9O 4$\I;$,X$\\A$ $\uH$1HH$AO #DŽ$,11I?HcH1HwHH$\)H$"LNHH$LmNIH$"LPNmH$L6NI S<$,tH$@0HH$IHPHH$H9HH9H$s$,t-$(BщH$HH$IHPHH$H9VHH9H$s=H5L1DALLt$)$\$(Au'yHw#A LL=$\ $\ Hc$\H@#ALL H'#A LL$\ $\ Hc$\H'#ALLYLL=I1$(ZH$ȉ$\hLLa=H$kIL$11$\H;$,X$\QB<vB<w,  $\uH$1HH$렃 LLvlD$E$@$\H$H*$X$$HAAD$8D$H3EH$N$@H$H$*$PX$$HAAD$D$E҉$P-$@HH$HUH*X$$HAAD$k$H3H$$@H$H$뵋$LH*X$$HAAD$D$Eɉ$L$@$LH$*$XX$$HAAD$$҉$XR$@HH$HHHЃH ƄHLHD$hA9LHHT$hH1DŽ$EPH;\$HrD$E$$H=i&Hm$$*$~(D$Yp$$fWf.$v3$D$X$fWf.$w$H|$(^$4Y$L$+HIF H+D$hHHLHD$hHT$hHHL$`A0v HD$hI+FHH+D$HHt$`LHD$`x(qHT$HH9$HL$hH1Ft;HH@AHD$`Hl$hE1h DŽ$H$]LHT$hLH= HD$h$$HH5`L19HH9\$HED; HEH@H$HELH="L LH$xHpu @H>tI9s9D)ljȍW0HI9rHIDŽ$EHEHH:0tHLAHLHD$h HL$h1EHH;\$HEt$ IcIF H+D$hHH9y DAFPA;FX DLE$@g $?$HHH!$H$L|5HLHD$hd5LH HT$hHLHD$h'LH HT$hH:LHD$hh'LH HL$hH[LHD$h4LHw HT$hHHcLHD$h'LHN HT$hH/LHD$h4LH( HT$hHHcLHD$h&LH HT$hHX$TLHD$hM4LH HT$hH$\LHD$ho&LH HT$hHLHD$hI&LH~ HL$hHHcLHD$h &LHU HL$hH{LHD$h3LH/ HL$hHHLHD$h%LH HL$hH"Dd$4H5vL10A)IcHD$HH)H9IcHHT$`H$HL$`HD$`R,$I$HT$`$@ HL$`$HD$`HRH Dh(H$HH$@0B,LzHL$hHjLzIAAtPHD$`H$LH(LL$(HLD$HHL$PHT$`J0HD$HH9$uAuIHL$`H$HT$h$Q,$Q$$Di(HiLyQ H$HQH$HE9 HH+|$P1WA u6H 1#AƄm  Am HHAuAƆ HD$HLH)H@HpHHIHH$(!H$(H H;\$H<  <@wƄ$CHAm AA?uS&111A$@$BHT$ AANHLHcA$AEH9\$Hv1E1 <@HAm ?H9\$H11pAD$E䉄$~hLl$hHE1Hu1LAHH$*LHIEIE9uHL$hAD$HHLH\$HL$hD)AE4HH+T$PIcHHH?H҉$PE11$HDŽ$HDŽ$DDD$HH+|$PIcH9 IcH)EHD$`@0!$LH*X$$HAAD$H;\$H,L1HT$H<HL$(EHLAiH)RD$H$$LEH$($@_$LH$iHD$`x($ IF H+D$hHHD$HH)H H3IcLHD$hHH$1LHHT$hH$HD$HMcH)HI9~ALcAt$LHcEIHLhIAO hHED$PH5#E1.d$pD$pHAHD9$PAuHT$pE&E HL$`a0$:HD$HH)HIcH9~Aԋ$Ip< A~%IpAHHH$AE HbL$p1EAL$ D$p<H$d$pD9uD)AEHT$HL$HIcċ$H))H9DOMcHLLI/EIM~YZAttJH$) I H:Ht H8u$HM H+9HyL$IF H+D$hHHD$hLLK\ESHT$hHfDH*X$$HAAD$*$@$LH$IcH;D$H\$XHD$EuEE|$~mLl$hHDŽ$uLH$LTLHIE$ID9$uHT$hAD$E)H\HTHT$hHL$`EA0DŽ$D1 D|1E1 <@HEm A?H9\$Hv <@wHAm ?H9\$H <@HAm DA ‰?D ; HCH9D$Hv { HCHDH9\$HsIF H+D$hHmHD$hHL)HT$hH4HL$`a0$DA ‰D QHHT$(HL.I5H5R L,HHLIHLAEIUHBH$LL$pIcDEHEff$\ȉ$Tl$T.$$TT$\Uf$\zHT$hDLH%HD$hj$H=pHx/H|$@@tHT$@HHL$hIFIH)HHL$hD$h+$Hh[]A\A]A^A_EpHL$`I0b1DŽ$PjHH+|$PIcHHHH?HAHcH !1ҹ"HL-HHT$hLHHD$hHT$hLHHD$htHD$HH)HHD$HH)HE1IF H+D$hHHD$hLL_HL$hHjLHD$h&LH7HT$hHkHHH H*XHHH H*XHHH H*XHT$(LL+ILAt$LHcoHIIcHBIEAM bHRED$P~?E1'd$pD$p<A1HD9$P~Au HL$pE1IF H+D$hHnHD$hLLHT$hHH5(|L1"H5o|L1"HT$hLHHD$hVED$P,H5 #E1+|$pD$pHAHD9$PAuHD$pH5{L1*"H5}L1"H5 {L1"ED$PE1'|$pD$pA0HD9$PAuHD$pHT$hLLD$L $H L $LD$HD$hKHT$hLH HD$hs1EAL$JD$pH$|$pD9u;HIp1t HIpt HIpt HIpt HIpt HIp t HIp@t HIpy HIpHH^D$pIMHIDH9w/t t t t @t u HH9fv@I HxA]H5xL1H5vxL1H5ExL1)D`McgH5xL1D‰A ‰D 'ffffff.SIHH@1HHH4$HT$HDL$0HE1LLuH@[ffffff.H\$Ll$HLt$Hl$ALd$H8HL LpHhHG@$tE0tAt g A@EHEH@HD$HEH(AD$I$H@H$I$HAIFH<$HT$HAD$ thH`A@%uUHTL9A HH D HuH HHHCHHl$H\$Ld$ Ll$(HLt$0H8E1D"HLH=&HRDHT$H"H&HHHII1HHD$`H4$MHT$HE1LLL߉D$0HHÐHHHfff.HH\$Hl$HHHHH6u H9wBH\$Hl$HòDHH\$Hl$HHHHH6tH\$Hl$HH9ݸwf.H\$Ld$HHl$HFIt9CHHht:HH@H9H$Hl$Ld$HCHuHLffff.UHSHHF t]HH C t(H@ f.w 1f.H[]D%=tDHH $  $%=tf(DHH*HDHH*@DLl$IH5H\$Hl$HLd$H(IԺHFHH@8H@t=HLl&@t-HLLHHl$H\$Ld$Ll$ AH(ALbLl$IH5 H\$Hl$HLd$H(IԺHHH@8H@t:HL%@t*HLLHHl$H\$Ld$Ll$ E1H(ALAWAVAUATUHSHxHGhL7HcHHGhHH_HWHH)HHHHD$LlHWB$D$PtbH HL$(Db%twHE HH)H~JHAH HQHEHEHHD$(HD$(Hx[]A\A]A^A_@!HUJ$L$P딹HHHHDHHHD$P@.|$P HHL$`HT$hH3E1HHHD$  @t3HHHt(5:u+:Bu D$7:BtD$7HL$ HHxH H@@HHHT$ HHpHHEHL$ HHPHH#HHBE@;ED M@HHU8HcHAHU8H!M@HT$ HH@xHHH@HHHHED$8NH`HDž1Hx0tH`HHp0 HHT$hHD$ D$7D$8EDd$AHmhIHL$fy HT$HDxAHL$fA EHE IcL)HH9EMD$<~jLE1Ht$1DH1HtHAHHE9uAGMD$<Mt"LLcHD$H)D$<IID$H iD$0HD #ED$HHL$@~RD$T$DD$$` HItI$IHIEuAuD\$EMDL9bNH$H9T$LMTHD$@H$H$ H$HDŽ$ HD$PD$`H$(H$ H$ H$ H$H$HSHKD$`H HH$H D$$H$H$H$L$HHHIH$IIHH+$H$H$HH+$H$H$HHHL$xH$HD$PDH$H9\$xL;$L;$VIEIIIL9$wL+$H$H$LHl$`H$H$H$H$HSH$HH$eH\$xIuH|$HHLD$T$8LD$L$Lt$xL$D$\A1;H$HH|$HH0LD$T$89D$\LD$7HH~MIKI9wI\$L9IInI9w XIL9sPLH$H|$HH)HHH1HH?HHH\HLD$T$89D$\LD$}HkL9rL9$t8IEIIIM9rHL$xHHIIHL$xH\$xHHIIL9H\$xrH$HIIIIH$IT$H|$HH1LD$T$89D$\LD$ID$$L$MH$D$\lH$HHC~1H$HD$PH$D$`HHHH)HAHϋD$`HH$HL$PH$D$`H HCHH$HT$@HH\$@HLHHH+$HHD$PHH,L1iHHHH H*XHHEEAHUI$HI$HUHEAHI$HUI$EHI$EAHI$~HUHEAHEHbffffff.AWEAVIιAUIATIԺUHH5ZSHXHH@8H@DH@7ICItHI9rJ<HHD$H$HSHEH+fDHHHHL9uIH EHLMLHD$HHDfLJHHLDH<tZHWH)HH9Ht5LLHHLHHHHHH H)HH9uMHHIHHuH9$tHHD$IEu#LLHLHX[]A\A]A^A_IH MLHLIHD$HH$H="1UHSHH"HtHs"HCHHuH[ÐH/Hpanic: POPSTACK ARGVDB::argsDB::DBDB::dblineDB::subDB::singleDB::traceDB::signal5.8.75.8.65.8.45.8.35.8.25.8.15.8.0%_/%d.%d.%d/%sx86_64-linux-gnu-thread-multi%_/%d.%d.%d%_/%s-dPERL5DB_THREADEDuse Devel:: split(/,/,q%c%s%c)PERL5DB %sNo directory specified for -I -M-muse no Can't use '%c' after -mname () split(/,/,qMissing argument to -%c-seval_sv()Callback called exitrequire q%c%s%cCHECKINIT%s failed--call queue abortedpanic: top_env panic: restartop %s syntax OK /proc/self/exemain::Fmain::-main::+Can't stat script "%s"Setuid script not plain file No #! line#!Very long #! lineNot a perl script PHOOEY Args must match #! lineNo setuid script name /dev/fd/%d/%s/usr/bin%s/sperl%d.%d.%dCan't do setegid! Can't do seteuid! mainmain::%240sDB::CORE::GLOBAL::::No code specified for -e-P-Suse Config;print Config::myconfig(),\n \n",linux" Built under %s\n"10:56:40Nov 27 2007," Compiled at %s %s\n"Config::config_vars(qw%c%s%c)/dev/nullversionhelpPERL5OPTDIMUdmtwPERL5LIBPERLLIB/etc/perl/usr/local/lib/perl/5.8.8/usr/local/share/perl/5.8.8/usr/lib/perl5/usr/share/perl5/usr/lib/perl/5.8/usr/share/perl/5.8/usr/local/lib/site_perl/dev/fd/cc -E%s -ne%s%s%s %s | %_ %s %_ %s-Cprogram input from stdinCan't open /dev/null: %s -xPERLCan't chdir to %sSTDINSTDOUTstdoutSTDERRstderr:utf8PENPERL_SIGNALSunsafePERL_SIGNALS illegal: "%s"%s had compilation errors. PERL_HASH_SEED_DEBUGHASH_SEED = %lu NoNe SuChScalars leaked: %ld /bin/sh -perl.cNo %s allowed with (suid) fdscriptRecompile perl with -DDEBUGGING to use -D switch (did you mean -d ?) Usage: %s [switches] [--] [programfile] [arguments]-0[octal] specify record separator (\0, if no argument)Module name required with -%c option"-%c" is on the #! line, it must also be used on the command line%s This is perl, v%vd built for %s Copyright 1987-2006, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page. Can't emulate -%.1s on #! lineBEGIN failed--compilation abortedSetuid/gid script is writable by worldYOU HAVEN'T DISABLED SET-ID SCRIPTS IN THE KERNEL YET! FIX YOUR KERNEL, OR PUT A C WRAPPER AROUND THIS SCRIPT! Setuid script name may not begin with dash Can't change argv to have fd script Can't do setuid (cannot exec sperl) Effective UID cannot exec script "\nCharacteristics of this binary (from libperl): \n"," Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP THREADS_HAVE_PIDS USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API; $"="\n "; @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV; print " \%ENV:\n @env\n" if @env;print " \@INC:\n @INC\n";Unrecognized switch: -%s (-h will show valid options)Illegal switch in PERL5OPT: -%cWrong syntax (suid) fd script name "%s" Missing (suid) fd script name (1../^#!.*perl/i)|/^\s*#(?!\s*((ifn?|un)def|(el|end)?if|define|include|else|error|pragma)\b)/||!($|=1)||print/^\s*#(?!\s*((ifn?|un)def|(el|end)?if|define|include|else|error|pragma)\b)/||!($|=1)||printCan't open perl script "%s": %s Can't ignore signal CHLD, forcing to defaultNo Perl script found in input Execution of %s aborted due to compilation errors. Unbalanced scopes: %ld more ENTERs than LEAVEs Unbalanced saves: %ld more saves than restores Unbalanced tmps: %ld more allocs than frees Unbalanced context: %ld more PUSHes than POPs Unbalanced string table refcount: (%ld) for "%s"panic: pthread_key_create failed panic: pthread_setspecific (%d) [%s:%d]panic: MUTEX_INIT (%d) [%s:%d]-a autosplit mode with -n or -p (splits $_ into @F)-C[number/list] enables the listed Unicode features-c check syntax only (runs BEGIN and CHECK blocks)-d[:debugger] run program under debugger-D[number/list] set debugging flags (argument is a bit mask or alphabets)-e program one line of program (several -e's allowed, omit programfile)-f don't do $sitelib/sitecustomize.pl at startup-F/pattern/ split() pattern for -a switch (//'s are optional)-i[extension] edit <> files in place (makes backup if extension supplied)-Idirectory specify @INC/#include directory (several -I's allowed)-l[octal] enable line ending processing, specifies line terminator-[mM][-]module execute "use/no module..." before executing program-n assume "while (<>) { ... }" loop around program-p assume loop like -n but print line also, like sed-P run program through C preprocessor before compilation-s enable rudimentary parsing for switches after programfile-S look for programfile using PATH environment variable-t enable tainting warnings-T enable tainting checks-u dump core after parsing program-U allow unsafe operations-v print version, subversion (includes VERY IMPORTANT perl info)-V[:variable] print configuration summary (or a single Config.pm variable)-w enable many useful warnings (RECOMMENDED)-W enable all warnings-x[directory] strip off text before #!perl line and perhaps cd to directory-X disable all warnings)Z|gwD`@:utf8:utf8:utf8:utf8d'&&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&.&&&&&&&&&&&&T0&&.&&&&&&&&&&&&&&&&&&..&.&&r/&&&.&&L/&&&..-..&&&&&&&&.&..&&&..&&...&.&&.'/.../VERLOADTF8LOCALEARNING_BITShas no overloaded magicin overloaded package left /lib/Bad symbol for hashBad symbol for arraySIGARGVOUT (Did you mean &%s instead?) Had to create %s unexpectedlyXPORTAnyDBM_File::ISANDBM_FileDB_FileGDBM_FileSDBM_FileODBM_FileNCODINGUse of $%s is deprecated%8.6f%s::_GEN_%ldFileHandle::IO::Handle::Bad symbol for filehandleUNIVERSALCannot create %s::ISA%s::SUPERunimportErrnoTIEHASHniloverloadStub found while resolvingCan't resolve______K______________________________________________________________i_^O^^O^O^O^O^^O^O^^^O^^O^O^O^^^O^O^^O^O^^^^^^^^^^O^^O^^O^O^O^O^O^O^O^O^O^O^O^^O^O^O^O^O^O^O^O^O^O^O^O^O^O^O^^^^^^^^^^^^^^^^^^^^^^^^^^^^O^O^O^O^^O^^^^^^^^^^^^^^^^^^^^^^^^^^^^O^^O^ffffpfVfaaffffpfVffaeeh!ikhkjhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhjhlkhhhhhhhhhhgjjO^O^O^O^O^8e8euwuwuwuwuwuwuwuwuw[uwuwuwuwLuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwBBBBBBBBBuwuwuwuwuwuwuwЃuwuwuwuwuwuwuwuwuwuwuwPuwuwuwuwuw~-vV-vVVVV-vVV-v-v-vVVV-v-vkV-v\V-v-v-v-v-v-v-v-v-v)-v݆-vV99VV݆V.VV-vkkkkkkkkk҅VVV-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-vVV%V-v9-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-vք-vVAUTOLOAD, right argument in overloaded package , right argument has no overloaded magicOperation "%s": no method found,%sargument %s%s%s%sCopy method did not return a referenceAttempt to free unreferenced glob pointers, Perl interpreter: 0x%pName "%s::%s" used only once: possible typoVariable "%c%s" is not importedGlobal symbol "%s%s" requires explicit package nameBad symbol for filehandle (GV is unique)Can't use anonymous symbol table for method lookupRecursive inheritance detected while looking for method '%s' in package '%s'Can't locate package %_ for @%s::ISAUse of inherited AUTOLOAD for non-method %s::%.*s() is deprecatedCan't use %%! because Errno.pm is not available%s method "%.256s" overloading "%s" in package "%.256s"elseif should be elsifnext token ???within patternwithin stringnext char ^%c\%03o at %s line %ld, near "%.*s" %_%s has too many errors. at EOFat end of lineUse of %s is deprecatedcomma-less variable listcharnamesConstant(%s) unknown: %s} is not definedConstant(%s): %s%s%sPropagatedCall to &{$^H{panic: scan_numMisplaced _ in numberIllegal octal digit '%c'Illegal binary digit '%c'Integer overflow in %s number%s number > %s non-portableinteger+-0123456789_float;|})]oaiuw!=No comma allowed after %s([{< )]}> )]}>Search pattern not terminatediomsxiogcmsx[\]^_?[...][#!%*<>()-=])} =wds]rnftbxcavaA01! zZ79~L\uU\lpanic: yylexqr:'{$+-()| \%c better written as $%clLuUEQMissing right brace on \x{}Missing right brace on \N{}\N{...}Missing braces on \N{}qqUnrecognized character \x%02XFormat not terminatedLINE: while (<>) {chomp;our @F=split(%s);our @F=split(qour @F=split(' ');;}continue{print;}=cutperl -indirCan't exec %sToo late for "-%.*s" optionpanic: input overflowuniquelvaluelockedUnterminated attribute listsyntax errorUnmatched right curly bracket+-*/%.^&|<Reversed %c= operatorbare << to mean <<""Excessively long <> operatorUnterminated <> operatorGlob not terminatedreadline{$:+-Array lengthScalarFinal $ should be \$ or $nameYou need to quote "%s"$@"'`q&*<%Array $#+-'"studyNumberStringBackticksBackslashmsyqqwxrCOREThread.pmqualify as such or use &Bad name after %s%sBareword__ANON__::__ANON__%s::DATA:encoding(%_)CORE::%s is not a keywordmyourMissing $ on loop variable__PACKAGE__No such class %.1000s<> should be quoteseval { };subroutine namesort is now a reserved wordMissing name in "my sub"Prototype not terminated$@%*;[]&\|&*+-=!?:.do ;0377777777770xffffffffBinaryOctalHexadecimaloctalhexadecimalPTqȔ +Lm6Pϓ] T M C9@X524D4@3333333333 4EAB84@9!!!!!!!!!!!!!!!!!!!!!!!!!!177S7!6!!!!!!!!!!!!!!!!!!!!!5!3!!E3p22eMGGMMMMMMMMGGGGGGGGGGGGGGGGGGGGGGMGGGGGGGGGGGGGGGGGGWMIMMGMLGGGGGGGLGGGLGLGGG|KKZ77--A----eI-y$HaE)M>nG K$U1uuBc;q*kD]A%f!x\bD]A%>~W d~;Х/~ܹ`ϸ~Z)ɵM-ϳoS4 ubʬvZ>W;8hL&ʨjN!y1qBy]A% q*m M˾kOqZ>߿eK2XY>>bYbYZZPEPPPPPPPPPPPP9PP/%PPPPPPPPPPPPPPPPPPyrPB?@@ @0@Number too longIdentifier too longUse of /c modifier is meaningless without /gUse of /c modifier is meaningless in s///Integer overflow in decimal number (Might be a runaway multi-line %c%c string starting on line %ld) (possibly a missing "use charnames ...")}} did not return a defined valueWarning: Use of "%s" without parentheses is ambiguous%s found where operator expected (Missing semicolon on previous line?) (Do you need to predeclare %.*s?) (Missing operator before %.*s?) %s (...) interpreted as functionCan't find string terminator %c%s%c anywhere before EOF;}continue{print or die qq(-p destination: $!\n);}Transliteration pattern not terminatedTransliteration replacement not terminatedSearch pattern not terminated or ternary operator parsed as search patternAmbiguous use of %c{%s%s} resolved to %c%s%sAmbiguous use of %c{%s} resolved to %c%sfilter_del can only delete in reverse order (currently)No package name allowed for variable %s in "our"Can't use "my %s" in sort comparisonPossible unintended interpolation of %s in stringBad evalled substitution pattern\.^$@AGZdDwWsSbBpPXC+*?|()-nrtfeaxz0123456789[{]} #Invalid range "%c-%c" in transliteration operatorAmbiguous range in transliteration operatorUnrecognized escape \%c passed throughMissing control char name in \cpanic: constant overflowed allocated spaceMissing right curly or square bracketBEGIN { require 'perl5db.pl' }Unsupported script encoding UTF32-LEUnsupported script encoding UTF32-BEUnterminated attribute parameter in attribute listThe 'unique' attribute may only be applied to 'our' variablesInvalid separator character %c%c%c in attribute listUnmatched right square bracketDelimiter for here document is too longMultidimensional syntax %.*s not supportedScalar value %.*s better written as $%.*sCan't use \%c to mean $%c in expressiondump() better written as CORE::dump()Ambiguous call resolved as CORE::%s(), %sBareword "%s" refers to nonexistent packageAmbiguous use of -%s resolved as -&%s()Operator or semicolon missing before %c%sAmbiguous use of %c resolved as operator %c"no" not allowed in expressionPrecedence problem: open %.*s should be open(%.*s)Possible attempt to separate words with commasPossible attempt to put comments in qw() listSubstitution pattern not terminatedSubstitution replacement not terminatedIllegal character in prototype for %_ : %sIllegal declaration of anonymous subroutineIllegal declaration of subroutine %_"use" not allowed in expression0b11111111111111111111111111111111A?@@BEGIN"do" to call subroutinesOut of memory for yacc stackPnV4P|Z8.PgF$P P F & q % PP e  } ' Qo5MxO@zA`I .PPPPwhM5csJv[2c=PPteVG7|lK0q-:888. 0/12FG99 4;EU|"wx 3=SW~{IYZe*+$)V}Abd^\?DC76TXPc]a_[H`Q !|))  .1HL9DzUljQQa\t44QtStkkk{kk4#>:tzoRQikkI=jAlDQ4Q!$}G2b-r ?jjBj4N>jjTc_$.)$(;;d6);)()]{,$];((;;([1):;)j?[)<=./;^(;5)(d),-i;);{ABCD](;){))[[{)-[,0(]({){{;{)':;st,?jklmno{{({;{(t;$%;(Y;:;{)]   (Rh@;;!$%&)(,*+-){;);)@(();*(;]] }*[!=[$%&](]*+$-,-),-*};{@}~,-,-[(]-(,-*[,-,-r),-!/0$%&((*+)-4,-),-:)){)}~;}}@,-;,-}T} !";),-,,-[{,-)/012345,-8}?;<=,-),-){,-;,-{,-~()     )){),-,-#$%&'()?{8).;<=,-,-;7)9:;)     ;)!#4,-4#$%&'()58.{;<=T79:5)8,;<= :; ?!"}#$%&'(58].;<=7!9:$%&()*+,-} !":;?@/0123458;<=[]!$%&()*+,-,- !":;?@~/0123458;<=   ]!!"$%&(*+-ghl458);;<=~@   |[ !"),-/0123458;<={~   !"#$%&'(,-./012345789:;<=   !"#$%&'(,-./012345789:;<=?  #$%&'(!.$%&(*+7-9:OPQS;@),n:;u[!y$%&(*+-]({@~./0!45$%&(*+-ABCD[ !"@)45,8;<={~:;[?!t$%&(*+- !"{]~@/0123458;<=[  {~#$%&'(.79: ,- #$%&'(.  79::?#$%&'(.79:  ,- /01234#$%&'(!.$%&(*+7-9:;@ !"!$%&()*+-12345[8;<=@ !"!$%&(*+-~2345[8;<=@!$%&()*+-~[] !"@/0123458;<=~ !"[!$%&()*+-3458;<=@~!" 45 8[;<=#$%&'(. ~ 79:#$%&'(.  79:#$%&'(.  79:#$%&'(!.$%&()*+7-9:  @#$%&'([!.$%&()*+7-9:@~),:;[!?$%&(*+- !"@]~0123458;<=[!$%&()*+-@~  [#$%&'(),.~79:; ! $%&()*+-]#$%&'(@.79: [ ,-/0123#$%&'(!~.$%&()*+7-9:  @#$%&'([!.$%&(*+7-9:@~[,  ~)#$%&'(.:;?79:]  ),#$%&'(.:;?79:  ]#$%&'(!?.)-709:3789:;?@),:;?f),] !":;,-?/0123458;<=]), !":;?,-/0123458;<=)], !":;?0123458;<=]),5 !":;,-?/0123458;<=),] !":;,-?/0123458;<=),]:;? !"]),,-/0123458:;;<=? !")],,-/0123458:;;<=? !"],-/0123458;<=), !":;?,-/0123458;<=] !"),,-/0123458:;;<=? !"]),,-/0123458:;;<=? !")],,-/0123458:;;<=?]),):; !":;?,-/0123458;<=]]),):; !":;?,-/0123458;<=]]), !":;,-?/0123458;<=),] !":;?,-/0123458;<=]), !",-:;?,-/0123458;<=]), !",-:;?,-/0123458;<=]), !":;?,-/0123458),] !":;?,-/0123458),]:;? !"),-,/012345]:;?),] !":;?,-/012345),]:;? !",-/012345]), !":;?,-/012345),] !":;,-?/012345), !"]:;?,-/012345),] !":;?,-/012345),] !":;?,-/01234),),]:;:;? ",-]/01234]),),:; ?:;?,-/0123),] ]:;?,-/0123),] :;?,-/0123),:;] ,-/0123] ,-/,-/0123,-/0123,-/012,-/01,-/,-GAyAo%(;1fXq<qA=<Ee>Kqq<xqZ{|@jEKkyCV\qlW'Xu~mKyr<]'>U)s@t>AC@B_\kBuv    &(HL"&<?+A-/'3Y^A`y*ay06892qqqq4q:qon<KKKKK}Jqq,qq,,,D,R,,N,ZKKOPQS,`FaF,MTbcd,fnpqyG{,,e5>%#(%#iPm^I,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7AC5<D@?stz >B= 8 !"#$%&'()*+,-./01234,6,,,,,,9,:;hijl,,NN|NN~,7AC5<D@?ccNp,B,xc7cAC5<D@?cccc=Bjj8jj=j7xAC5<D@?j8B=,,,,,,,,,,,,,,,,,,,,, 8,,,,,,NNNN,N,,,wa !"NN#)*+,-./012346 !"#9:;5)*+,-./012346jjjjj9j:;jj} !"jj#jjjjjj)*+,-./0123476AC5<D@9?:;B7AC5<D@?=B7AC5<D@?8=B7AC5<D@?8=B8=7AC5<D@?B8 !"#=)*+,-./012346 !"8#9:;)*+,-./012346 !"#9:;)*+,-./012346 !"#9:;)*+,-./0123476AC5<D@9?:; !"#B)*+,-./01234=76AC5< D@9?:;B8llll=7lAC5<D@?Bl8=7AC5<,D@?B8 !"#=)*+,-./01234JJ689:;J !"7#AC5<.D@?)*+,-.J/01234B6lllll9l:; !"=#lllllll)*+,-./01234786AC5<7D@9?:; !"#B)*+,-./01234=76AC5<D@9?:;B8JJJJJ=J !"#8)*+,-./0123469:; !"#)*+,-./0123469:; !"#)*+,-./01234g6qv9:; K[LLLLLLBBBBBBRRRRRRLLLLLLLLLLLLLLLLLLLLLLLffBBBBOBBffBBBBOOOBBBBBBBBBBBBBfOyyyyyRRRRzRzRyRRRRzzzRRRRRRRRRRRRRzuuuuuufffffOOOOvOvOOOOOffvvvOOOOOOOOOOOOOvyyyyyyyyyyyyyyyyyyyyzzzzszszzzzzssszzzzzzzzzzttsuuuuttuutuuuuruuruuuuuuutrrrvvvvgvgvrvvvvgggvvvvvvvvvhhghhhhssssisisssssiiisssssssssttttttitttttttttttttrrrrrrrrrrrrrrrrrrrggggggggggggggggggghhhhhhhhhhhhhhhhhhkkiiiikkiikiiiiiiiiiiikmmnnmmmnnnppmnpppoopoooMMMMoMkkkkkkkkkkkkkkmmmmmmnnnnnnmmmmmmmnnnnnnpppppppppppooooooooMMMMMMM(? w + ] O gsK + *  G \ 3` g'{r ) #7[u" _;1[ w gwwwww     ++  !66''/7())---..**88:9%%%%%%%%;%&&222222222222233333333444445555550011111""###,$$$$%z A:gGRM h_rbg FwHIJKLMNO#Q$&zdRY[G!STUVW]Possible precedence problem on bitwise %c operatorinternal error: obsolete function save_hints() calledBareword "%_" not allowed while "strict subs" in useAssignment to both a list and a scalarType of arg %d to %s must be %s (not %s)Missing comma after first argument to %s functionCan't use bareword ("%s") as %s ref while "strict refs" in usepanic: MUTEX_UNLOCK (%d) [%s:%d]panic: MUTEX_LOCK (%d) [%s:%d]%_() called too early to check prototypeStatement unlikely to be reached (Maybe you meant system() when you said exec()?) No such pseudo-hash field "%s" in variable %s of type %sBad index while coercing array into hashUseless use of %s in void contextUseless use of sort in scalar contextpanic: unexpected lvalue entersub args: type/targ %ld:%lupanic: unexpected lvalue entersub entry via type/targ %ld:%luUnexpected constant lvalue entersub entry via type/targ %ld:%luCan't localize lexical variable %sFound = in conditional, should be ==Constant subroutine %s redefined'%s' trapped by operation maskMalformed prototype for %s: %_Using a hash as a reference is deprecatedUsing an array as a reference is deprecatedUseless use of %s with no valuesArray @%s missing the @ in argument %ld of %s()Hash %%%s missing the %% in argument %ld of %s()/%s/ should probably be written as "%s" (Maybe you should just omit the defined()?) %s argument is not a subroutine name%s argument is not a HASH or ARRAY element%s argument is not a HASH or ARRAY element or sliceBad symbol for form (GV is unique)Value of %s%s can be "0"; test with defined()Use of /g modifier is meaningless in splitApplying %s to %s will act on scalar(%s)Can't use %s for loop variableVersion number must be constant numberCan't define subroutine %s (GV is unique)Can't redefine unique subroutine %sCan't redefine active sort subroutine %sBEGIN not safe after errors--compilation abortedParentheses missing around "%s" listCan't declare class for non-scalar %s in "%s"NOT IMPL LINE %dToo many arguments for %sNot enough arguments for %sa SCALARan ARRAYa CODEa HASHConstant is not %s reference"my sub" not yet implementedPrototype mismatch: sub %_ (%_): none vs op.cFIELDSa constantdidsimplicit split to @_a variableoops: oopsHVoops: oopsAVThat use of $[ is unsupportedlocaldo blocknon-lvalue subroutine callCan't modify %s in %sCan't undef active subroutineautouseSubroutine %s redefinedToo late to run CHECK blockToo late to run INIT block"package" with no arguments# comment %04lx %04lx XXXX %04lx XXXX %04lx %04lx %04lx %04lx %04lx FINALblock or sub {}one of %ssubroutine entryscalar[]%s%c...%c__ANONIO__STRINGCORE::GLOBAL::requireopen_INopen_OUTdefined(@array) is deprecateddefined(%%hash) is deprecatedpanic: ck_grepFormat %s redefinedBareword found in conditional() operator constructCORE::GLOBAL::do\s+&`'123456789+-panic: ck_splitDB::postponed@array%hashModule name must be constantCORE::GLOBAL::globFile::GlobFile::Glob::csh_globattributesattributes.pm%s[%s:%ld]Runaway prototype%s:%ld-%ldCan't declare %s in %sCan't declare %s in "%s", @$%* Can't use global %s in "my"w.b2WdWWWWW1}WWWWWWWWWWWWWWWWWWW$bWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW$UWW;WWUWWWWWWWWWWWWWWWWWWWWWWWWW$$WWWWWWWJbbWJJJWWWWnAPP'-**)b))A(!(panic: pad_free curpadpanic: pad_free popanic: pad_sv popanic: pad_allocpanic: pad_swipe curpadpanic: pad_swipe poscope"our" variable %s redeclared%2d. 0x%lx<%lu> FAKE "%s" %2d. 0x%lx<%lu> %_ never introducedpad.cpanic: cv_clone: %s"%s" variable %s masks earlier declaration in same %s (Did you mean "local" instead of "our"?) PADNAME = 0x%lx(0x%lx) PAD = 0x%lx(0x%lx) %2d. 0x%lx<%lu> (%lu,%lu) "%s" Variable "%s" may be unavailableVariable "%s" will not stay sharedpanic: pregfree comppadregcomp.cpanic: regfree data code '%c'...%s in regex m/%.*s%s/̈́Panic opt closealphspacgrapasciblancntralnuloweuppedigiprinpuncxdigitPOSIX class [:%.*s:] unknownEmpty \%c{}Missing right brace on \%c{}+utf8::%.*s !utf8::%.*s %04lx %04lx AlnumASCIIBlankSpaceInvalid [::] classInvalid [] range "%*.*s"%cutf8::Is%s nopSequence (? incomplete?-don't Unmatched (Unmatched )Junk on end of regexpUnmatched [Internal urpQuantifier follows nothingTrailing \Internal disasterCan't do {n,m} with n > mNested quantifiersNULL regexp argumentRegexp out of spacePERL_RE_COLORSvalue of node is %d in Offset macroSequence (?#... not terminatedvalue of node is %d in Length macroQuantifier unexpected on zero-length expression%s in regex; marked by <-- HERE in m/%.*s <-- HERE %s/Variable length lookbehind not implemented in regex; marked by <-- HERE in m/%.*s <-- HERE %s/Lookbehind longer than %lu not implementedPOSIX syntax [%c %c] belongs inside character classes in regex; marked by <-- HERE in m/%.*s <-- HERE %s/POSIX syntax [%c %c] is reserved for future extensionsUnrecognized escape \%c in character class passed through in regex; marked by <-- HERE in m/%.*s <-- HERE %s/False [] range "%*.*s" in regex; marked by <-- HERE in m/%.*s <-- HERE %s/Sequence (?%c...) not implemented(?p{}) is deprecated - use (??{})Sequence (?{...}) not terminated or not {}-balancedEval-group not allowed at runtime, use re 'eval'Eval-group in insecure regular expressionSwitch condition not recognizedSwitch (?(condition)... contains too many branchesUnknown switch condition (?(%.2sUseless (%s%c) - %suse /%c modifier in regex; marked by <-- HERE in m/%.*s <-- HERE %s/Useless (%sc) - %suse /gc modifier in regex; marked by <-- HERE in m/%.*s <-- HERE %s/Sequence (%.*s...) not recognizedReference to nonexistent groupUnrecognized escape \%c passed through in regex; marked by <-- HERE in m/%.*s <-- HERE %s/Quantifier in {,} bigger than %d%.*s matches null string many times in regex; marked by <-- HERE in m/%.*s <-- HERE %s/ CC&Y hsJ}tjNYHx  ~^  h 0666666[6666 6 5zl3z &7' 't% % % % % a&& % X%t%,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#,#,#,#,#,#,#,#,#,#,&&&&&&&,,,,&&,&&&&&&&&,&&,&&&,,&,&&&&&&,,-,--&&&&&&&-&,&-,n-&&,-&,/############################################### 1.........#######---m-##1-########/##/###/D/#0###### 10 1, 1 1####### 1#/# 1%, 1##- 1#,  !!!$$&'((((,-.///88886789:;8$ &'(+/01,*)854=!<,>%5lu %s \t\n\r\f\"\\\%o\0WILDSV_UNDEFSV_NOSV_YESSV_PLACEHOLDER<%lu%s>FREEDRVPVPVIVPVNVPVMGPVLVCV(%s)CV()BMFM(null)[%s] [UTF8 "%s"](%g)(%lu)(%ld)(NULL)[%lu]NULL OP IN RUN%*s%s = 0x%lx "%s" :: " "%s" {} { GV_NAME = %s-> %s (RUNTIME)PMf_PRE %c%s%c%s PMf_PRE (RUNTIME) PMf_REPL = ,USED,TAINTED,ONCE,SCANFIRST,ALL,SKIPWHITE,CONST,KEEP,GLOBAL,CONTINUE,RETAINT,EVALPMFLAGS = (%s) %-4d%*sTYPE = %s ===> (%d) DONE (was %s) LINE = %lu PACKAGE = "%s" LABEL = "%s" TARG = %ld ,VOID,SCALAR,LIST,UNKNOWN,KIDS,PARENS,STACKED,REF,MOD,SPECIAL,TARGET_MY,REFCOUNTED,COMMON,HASH,BACKWARDS,SQUASH,DELETE,COMPLEMENT,IDENTICAL,GROWS,DOLIST,AMPER,DB,HASTARG,NOPAREN,INARGS,NOMOD,SV,AV,HV,MAYBE_LVSUB,LVAL_DEFER,STRICT_REFS,OUR_INTRO,BARE,STRICT,ARYBASE,WARNING,ENTERED,LINENUM,INTRO,EARLY_CV,GUESSED,SLICE,EXISTS_SUB,NUMERIC,INTEGER,REVERSE,SVREF,IN_RAW,IN_CRLF,OUT_RAW,OUT_CRLF,EXIT_VMSISH,HUSH_VMSISH,FT_ACCESSPRIVATE = (%s) PADIX = %ld REDO ===> NEXT ===> LAST ===> OTHER ===> REFCNT = %lu SV = 0 PADBUSY,PADTMP,PADMY,TEMP,OBJECT,GMG,SMG,RMG,ROK,WEAKREF,OOK,FAKE,READONLY,OVERLOAD,pIOK,pNOK,pPOK,SCREAM,ANON,UNIQUE,CLONE,CLONED,CONST,NODEBUG,COMPILED,LVALUE,METHOD,LOCKED,WEAKOUTSIDE,SHAREKEYS,LAZYDEL,HASKFLAGS,REHASH,CLONEABLE,INTRO,MULTI,ASSUMECV,IN_PAD,OUR,IMPORTALL, SV AV HV CV ),EVALED,IsUV,TAIL,VALID,TYPED,UTF8SV = NULL%s RV%s PV%s PVIV%s PVNV%s PVBM%s PVMG%s PVLV%s PVAV%s PVHV%s PVCV%s PVGV%s PVFM%s PVIO%s UNKNOWN(0x%lx) %s UV = %lu IV = %ld (OFFSET) NV = %.*g RV = 0x%lx PV = 0x%lx ( %s . ) CUR = %ld LEN = %ld PV = 0 STASH TYPE = %c TARGOFF = %ld TARGLEN = %ld TARG = 0x%lx ARRAY = 0x%lx (offset=%ld) ALLOC = 0x%lx FILL = %ld MAX = %ld ARYLEN = 0x%lx ,REAL,REIFY,REUSED FLAGS = (%s) Elt No. %ld (%d%s:%d hash quality = %.1f%% KEYS = %ld RITER = %ld EITER = 0x%lx PMROOT = 0x%lx NAME = "%s" Elt %s [UTF8 "%s"] [REHASH] HASH = 0x%lx PROTOTYPE = "%s" COMP_STASH START = 0x%lx ===> %ld ROOT = 0x%lx XSUB = 0x%lx XSUBANY = %ld GVGV::GV DEPTH = %ld OUTSIDE_SEQ = %lu LINES = %ld PADLIST = 0x%lx ANONMAINUNIQUEUNDEFINED OUTSIDE = 0x%lx (%s) NAMELEN = %ld GvSTASH GP = 0x%lx SV = 0x%lx REFCNT = %ld IO = 0x%lx FORM = 0x%lx AV = 0x%lx HV = 0x%lx CV = 0x%lx CVGEN = 0x%lx GPFLAGS = 0x%lx LINE = %ld FILE = "%s" FLAGS = 0x%lx EGV IFP = 0x%lx OFP = 0x%lx DIRP = 0x%lx PAGE = %ld PAGE_LEN = %ld LINES_LEFT = %ld TOP_NAME = "%s" TOP_GV FMT_NAME = "%s" FMT_GV BOTTOM_NAME = "%s" BOTTOM_GV SUBPROCESS = %ld TYPE = '%c' TYPE = '\%o' MAGIC = 0x%lx envenvelemsigsigelempackelemmglobnkeystaintsubstrposbmfmuvardefelemcollxfrmamagicamagicelem MG_VIRTUAL = &PL_vtbl_%s MG_VIRTUAL = 0 MG_PRIVATE = %d MG_TYPE = PERL_MAGIC_%s MG_FLAGS = 0x%02X TAINTEDDIR REFCOUNTED GSKIP MINMATCH MG_OBJ = 0x%lx MG_LEN = %ld MG_PTR = 0x%lx => HEf_SVKEY ???? - please notify IZ %2ld: %lu -> %lu MG_VIRTUAL = 0x%lx MG_TYPE = UNKNOWN(\%o) FORMAT %s = SUB %s = (xsub 0x%lx %d) sv(\0)arylen(#)glob(*)pos(.)backref(<)overload(A)bm(B)regdata(D)env(E)isa(I)dbfile(L)shared(N)tied(P)sig(S)uvar(U)overload_elem(a)overload_table(c)regdatum(d)envelem(e)fm(f)regex_global(g)isaelem(i)nkeys(k)dbline(l)mutex(m)shared_scalar(n)collxfrm(o)tiedelem(p)tiedscalar(q)qr(r)sigelem(s)taint(t)uvar_elem(v)vec(v)v-string(V)utf8(w)substr(x)defelem(y)ext(~)WATCHING, %lx is currently %lx WARNING: %lx changed from %lx to %lx (0x%lx) at 0x%lx %*s REFCNT = %ld %*s FLAGS = (CBBBAAAA[BDB-BBBrBB A\FEEE|E|E|Efeaae e5d eosssssst)tBtnf$s=sVs[ttttroo hjFhl@Y@rjbZRJB:2*" ڐҐʐԼ zdTD during global destruction. /dev/urandomPRINT at %s line %ldchunk, <%s> %s %ldsocketclosedunopened%s%s on %s %s %s%s%s on %s %sPERL_HASH_SEEDEXECInsecure %s%sCan't forkpanic: kid popen errno readpanic: pthread_setspecificutil.c, '.' not in PATHexecute on PATHCan't %s %s%s%sFilehandle %s opened only for %sputFilehandle opened only for %sput (Are you trying to call %s%s on dirhandle %s?) (Are you trying to call %s%s on dirhandle?) Your random numbers are not that randomUnknown Unicode option letter '%c'Unknown Unicode option value %luCC@Signal SIG%s received, but no signal handler set. SIG%s handler "%s" not defined. panic: magic_killbackrefs (flags=%lx)Attempt to set length of freed arrayCHLDCLDCLEARNEXTKEYFIRSTKEYFETCHSIZESTOREEXISTSFETCH__DIE____WARN__No such hook: %sNo such signal: SIG%sIGNOREDEFAULTSize magic not implementedassigning to $^Omg.cUUUUUUUUUUUUwarnings::Bits %upanic: magic_len: %ld.1 . J U......Jg...J............... w..........'.X)...........................y...............................?&j)&U);)((&~(R(&&&&'))&&)}'N'&.'&&&&&&&&&&&&&+p++g*&,&+&A,'&&p+p+p+p+p+p+p+p+p+&&=-8*,p,&&&&&&&&&&&&&&&&&&&&&&&&&&&,y&&A&&,%&&&&&&&&&&&&&&&&&&&&&&&&&&&,&,gethostbyaddrgethostbynamegethostentgetgrnamgetgrgidgetgrentgetnetbyaddrgetnetbynamegetnetentgetpwnamgetpwuidgetpwentgetprotobynamegetprotobynumbergetprotoentgetservbynamegetservbyportgetservent111^2^2^2333333 4 4 411111111q4q4q411C5C5C5 (utf8)Bad hash%ld/%ldAttempt to free non-existent shared string '%s'%s, Perl interpreter: 0x%pAttempt to delete readonly key '%_' from a restricted hashAttempt to access disallowed key '%_' in a restricted hashAttempt to delete disallowed key '%_' from a restricted hashNo such pseudo-hash field "%s"NEGATIVE_INDICESPOPEXTENDUNSHIFTpanic: null arraySTORESIZEPUSHpseudohashPseudo-hashes are deprecatedCan't coerce array into hashOut of memory during array extendCan't call method "%s" on an undefined valuewithout a package or object referenceCan't call method "%s" on unblessed referenceCan't locate object method "%s" via package "%.*s"Can't locate object method "%s" via package "%.*s" (perhaps you forgot to load "%.*s"?)Use of reference "%_" as array indexDeep recursion on anonymous subroutineDeep recursion on subroutine "%_"Overloaded dereference did not return a referenceUndefined subroutine &%_ calledCan't modify non-lvalue subroutine callCan't return %s from lvalue subroutine%s returned from lvalue subroutine in scalar contextCan't return a %s from lvalue subroutineUse of freed value in iterationCan't localize pseudo-hash elementglob failed (can't start child: %s)glob failed (child exited with status %d%s)utf8 "\x%02X" does not map to Unicodepanic: pp_match start/end pointersReference found where even-sized list expectedOdd number of elements in hash assignmentCan't return array to lvalue scalar contexton an undefined valueCan't call method "%s" %sNot a CODE referencea subroutineUndefined subroutine calledNo DB::sub routine defineda temporarya readonly valueEmpty arraypanic: pp_substSubstitution looppanic: pp_iterREADLINE, core dumped$&*(){}[]'";\|?<>~`panic: pp_matchRegexpNot a HASH referenceNot an ARRAY referenceOut of memory during array extendCan't return hash to lvalue scalar contextLVALUEGLOBFORMATsv.cBizarre SvTYPE [%ld]panic: ss_dup inconsistencypanic: del_backrefCan't upgrade to undefCan't weaken a nonreferenceReference is already weakCLONE in Argument "%s" isn't numericCLONE_SKIPcat_decode0123456789ABCDEF0123456789abcdefpanic: frexp"%%%c""%%\%03lo"end of stringNULLREFmsix%s=%s(0x%lx)panic: sv_insertNot a subroutine referenceBad filehandle: %sBad filehandle: %_Bizarre copy of %s in %sBizarre copy of %sSubroutine %s::%s redefinedWide character in %sWide characterWide character in $/%%%%%%%%%$$$$$$$`?C?&??>>S>@CvBrAm?CC"=:)8PPMQMQQPQPPPTSPS!SSRRpPROQPQ}QaTpPPQSOOQPQiRSTTzXVVVVVVVhXWVVVVed6ddccNcbf|fhfQfhhhh1hg5gf9fe#bjeZlp)p=pNp_pppooooooKoOmOm:n:nlllllxmamKm"mKmmdp| !-9ELX E3 32 non-portablepanic: do_trans_simple_utf8 line %dpanic: do_trans_simple line %dpanic: do_trans_complex_utf8 line %dpanic: do_trans_complex line %dArg too short for msgsndchmodchownkillUnrecognized signal name "%s"unlinkutime$&*(){}[]'";\|?<>~` -cCan't exec "%s": %sWide character in print:rawUse of -l on filehandle %slstatsysopenUnknown open() mode '%.*s'Missing command in piped openCan't open bidirectional pipeecho inplace openCan't open %s: %sBad arg length for %s, is %lu, should be %ldWarning: unable to close filehandle %s properly. panic: sysopen with multiple argsMore than one argument to '%c&' openMore than one argument to '>%c' openMore than one argument to '<%c' openFilehandle STD%s reopened as %s only for inputFilehandle STDIN reopened as %s only for output|tr -s ' ' '\012\012\012\012'|Can't do inplace edit: %s is not a regular fileCan't rename %s to %_: %s, skipping fileCan't remove %s: %s, skipping fileCan't do inplace edit on %s: %sUbUVYWbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUXThe stat preceding -l _ wasn't an lstat͆%s limit (%d) exceeded%lx %d regexp memory corruptioncorrupted regexp pointerspanic: unknown regstclass %dNULL regexp parametercorrupted regexp programMalformed UTF-8 character (fatal)panic: paren_elems_to_push < 0Complex regular subexpression recursionregexp unwind memory corruptionyޯۮj˩l Luuuuu:T-NZ~qhqhDfwn~uWN MƼƼƼR3 Internals::HvREHASH $hashrefUsage: utf8::is_utf8(sv)inputoutputdetails%_(%_)Usage: utf8::upgrade(sv)Usage: utf8::decode(sv)Usage: utf8::encode(sv)Usage: utf8::valid(sv)(undef)UNIVERSAL::isaUNIVERSAL::canUNIVERSAL::VERSIONutf8::is_utf8utf8::validutf8::encodeutf8::decodeutf8::upgradeutf8::downgradeutf8::native_to_unicodeutf8::unicode_to_nativeInternals::SvREADONLY\[$%@];$Internals::SvREFCNT\%PerlIO::get_layers*;@Regexp::DESTROYInternals::hash_seedInternals::rehash_seedInternals::HvREHASHuniversal.c::ISA::CACHE::Usage: PerlIO_get_layers(filehandle[,args])get_layers: unknown argument '%s'Usage: UNIVERSAL::hv_clear_placeholders(hv)Usage: utf8::unicode_to_native(sv)Usage: utf8::native_to_unicode(sv)Usage: utf8::downgrade(sv, failok=0)Cannot find version of an unblessed reference%s does not define $%s::VERSION--version check failed%s defines neither package nor VERSION--version check failed%s v%vd required--this is only v%vd%s version %s required--this is only version %sUsage: UNIVERSAL::can(object-ref, method)Internals::hv_clear_placeholdersRecursive inheritance detected in package '%s'Usage: UNIVERSAL::isa(reference, kind)Usage: attributes::_warn_reserved ()Usage: attributes::reftype $referenceUsage: attributes::_guess_stash $referenceUsage: attributes::_fetch_attrs $referenceUsage: attributes::_modify_attrs $reference, @attributesA variable may not be unsharedUsage: attributes::bootstrap $moduleshareuniquattributes::_warn_reservedattributes::_modify_attrsattributes::_guess_stashattributes::_fetch_attrsattributes::reftypexsutils.cattributes::bootstrap Use of uninitialized value%s%sSemicolon seems to be missingUnquoted string "%s" may clash with future reserved wordUnsuccessful %s on filename containing newlineCan't use %s ref as %s refCan't use string ("%.32s") as %s ref while "strict refs" in useCan't use an undefined value as %s referenceModification of non-creatable array value attempted, subscript %dModification of non-creatable hash value attempted, subscript "%s"Modification of non-creatable hash value attempted, subscript "_"Modification of a read-only value attemptedOut of memory! Insecure dependency in %s%sUnsupported socket function "%s" calledUnsupported directory function "%s" calledThe %s function is unimplemented"my" variable %s can't be in a packageCan't localize through a referencepanic: memory wrap`!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~T(3>IU`kvͮü¢кƳ֦̠󬡾˽ūğ  !"#$%&')*+,-./012456789:;<=?@ABCDEFGHJKLMNOPQRSVWXYZ[\]^_abcdefghijlmnopqrstuwxyz{|}~ZEROHUPQUITTRAPABRTBUSFPEKILLUSR1SEGVUSR2PIPESTKFLTCONTSTOPTSTPTTINTTOUURGXCPUXFSZVTALRMPROFWINCHPWRSYSNUM32NUM33RTMINNUM35NUM36NUM37NUM38NUM39NUM40NUM41NUM42NUM43NUM44NUM45NUM46NUM47NUM48NUM49NUM50NUM51NUM52NUM53NUM54NUM55NUM56NUM57NUM58NUM59NUM60NUM61NUM62NUM63RTMAXIOTPOLLUNUSEDstubpushmarkwantarrayconstgvsvpadsvpadavpadhvpadanypushrerv2gvrv2svav2arylenrv2cvanoncodesrefgenblessbacktickrcatlineregcmayberegcresetregcompsubstconttranssassignaassignschopschompi_preinci_predeci_postinci_postdecpowi_multiplyi_dividei_modulorepeati_addi_subtractconcatstringifyleft_shiftright_shifti_lti_gti_lei_gei_eqi_nei_ncmpsltsgtslesgesnescmpbit_andbit_xorbit_ori_negatenotcomplementsrandhexoctrindexsprintfcryptucfirstlcfirstuclcquotemetarv2avaelemfastaelemasliceeachvaluesdeleteexistsrv2hvhelemhslicejoinlsliceanonlistanonhashsplicepushpopunshiftreversegrepstartgrepwhilemapwhilerangeflipcond_exprandassignorassignentersubleavesubleavesublvcallerwarndielineseqnextstatedbstateunstackenterleaveenteriterenterloopleaveloopnextredodumppipe_opfilenobinmodeuntietieddbmopendbmclosesselectgetcenterwriteleavewriteprtfsysseeksysreadsyswritesendrecveoftellflocksockpairlistenacceptshutdowngsockoptssockoptgetsocknamegetpeernameftrreadftrwriteftrexecftereadftewritefteexecftisfteownedftrownedftzeroftsizeftmtimeftatimeftctimeftsockftchrftblkftfileftdirftpipeftlinkftsuidftsgidftsvtxftttyfttextftbinaryreadlinkopen_dirreaddirtelldirseekdirrewinddirclosedirwaitwaitpidgetppidgetpgrpgetprioritytmslocaltimegmtimealarmsleepshmgetshmctlshmreadshmwritemsggetmsgctlmsgrcvsemgetsemctlsemopdofileenterevalleaveevalentertryleavetryghbynameghbyaddrghostentgnbynamegnbyaddrgnetentgpbynamegpbynumbergprotoentgsbynamegsbyportgserventshostentsnetentsprotoentsserventehostentenetenteprotoenteserventgpwnamgpwuidgpwentspwentepwentggrnamggrgidggrentsgrentegrentthreadsvsetstatemethod_namedcustomnull operationconstant itemscalar variableglob valueglob elemprivate variableprivate arrayprivate hashprivate valuepush regexpref-to-glob castscalar dereferencearray lengthsubroutine dereferenceanonymous subroutinesubroutine prototypereference constructorsingle ref constructorreference-type operatorquoted execution (``, qx)append I/O operatorregexp internal guardregexp internal resetregexp compilationpattern match (m//)pattern quote (qr//)substitution (s///)substitution iteratortransliteration (tr///)scalar assignmentlist assignmentscalar chopscalar chompdefined operatorundef operatormatch positioninteger preincrement (++)integer predecrement (--)integer postincrement (++)integer postdecrement (--)exponentiation (**)integer multiplication (*)integer division (/)integer modulus (%)repeat (x)integer addition (+)integer subtraction (-)concatenation (.) or stringleft bitshift (<<)right bitshift (>>)numeric lt (<)integer lt (<)numeric gt (>)integer gt (>)numeric le (<=)integer le (<=)numeric ge (>=)integer ge (>=)numeric eq (==)integer eq (==)numeric ne (!=)integer ne (!=)numeric comparison (<=>)integer comparison (<=>)string ltstring gtstring lestring gestring eqstring nestring comparison (cmp)bitwise and (&)bitwise xor (^)bitwise or (|)integer negation (-)1's complement (~)array dereferenceconstant array elementarray slicehash dereferencehash elementhash slicejoin or stringlist sliceanonymous list ([])anonymous hash ({})grep iteratormap iteratorflipfloprange (or flip)range (or flop)logical and (&&)logical or (||)logical xorconditional expressionlogical and assignment (&&=)logical or assignment (||=)method lookupsubroutine exitlvalue subroutine returnsymbol resetline sequencedebug next statementiteration finalizerblock entryblock exitforeach loop entryforeach loop iteratorloop exitselect system callwrite exitgetsockoptsetsockopt-R-W-X-r-w-o-O-z-A-b-f-p-l-u-g-k-t-T-Bopendirtimesdo "file"eval "string"eval "string" exiteval {block}eval {block} exitsethostentsetnetentsetprotoentsetserventendhostentendnetentendprotoentendserventsetpwentendpwentsetgrentendgrentper-thread valueset statement infomethod with known nameunknown custom operator(abs(bool(nomethod(""(0+(+(+=(-(-=(*(*=(/(/=(%(%=(**(**=(<<(<<=(>>(>>=(&(&=(|(|=(^(^=(<(<=(>(>=(==(!=(<=>(cmp(lt(le(gt(ge(eq(ne(!(~(++(--(atan2(cos(sin(exp(log(sqrt(x(x=(.(.=(=(neg(${}(@{}(%{}(*{}(&{}(<>(int0123456789abcdef0123456789ABCDEF\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}panic: sysconf: %spanic: bad pagesize %ldperlio.cPerlIO::Layer::findPerlIO::Layer::NoWarningsPerlIO::LayerPERLIO_DEBUG(none)%.40s:%ld fd %d refcnt=%d Cannot flush f=%p Layer %ld is %s define %s %p warning:%s %.*s => %p PerlIOCannot find %.*s Pushing %s Unknown PerlIO layer "%.*s"PERLIOPerlIO_pop f=%p %s Cleanup layers for %p :raw f=%p :%s (Null)PerlIO_push f=%p %s %s %p r+/tmp/PerlIO_XXXXXXw+IrIwHashCodeDestruct %p Destruct popping %s Clone %p from %p fdupopen f=%p param=%p bytesunixstdioperliopendingcrlfmmapDon't know how to get file namepanic: sysconf: pagesize unknownpanic: PerlIO layer array corruptRecursive call to Perl_load_module in PerlIO_find_layerInvalid separator character %c%c%c in PerlIO layer specification %sArgument list not closed for PerlIO layer "%.*s"Usage class->find(name[,load])Layer does not match this perlPerlIOBase_dup %s f=%p o=%p param=%p More than one argument to open(,':%s')openn(%s,'%s','%s',%d,%x,%o,%p,%d,%p) panic: sprintf overflow - memory corrupted! PerlIO_binmode f=%p %s %c %x %s 0 but trueInteger overflow in octal numberIllegal octal digit '%c' ignoredOctal number > 037777777777 non-portableInteger overflow in binary numberIllegal binary digit '%c' ignoredBinary number > 0b11111111111111111111111111111111 non-portableInteger overflow in hexadecimal numberIllegal hexadecimal digit '%c' ignoredHexadecimal number > 0xffffffff non-portableAA @0@Can't fix broken locale name "%s"perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). perl: warning: Failed to fall back to the standard locale ("C"). POSIXabstrxfrm() gets absurdLANGUAGELC_ALLPERL_BADLANGunset LANGUAGE = %c%s%c, LC_ALL = %c%s%c, LC_LC_ALL= %.*s = "%s", LANG = %c%s%c UTF-8PERL_UNICODEpack/unpack repeat count overflowNo group ending character '%c' found in template()-group starts with a count in %sToo deeply nested ()-groups in %s'%c' allowed only after types %s in %sDuplicate modifier '%c' after '%c' in %s'/' does not take a repeat count in %sWithin []-length '*' not allowed in %sWithin []-length '%c' not allowed in %s'/' must be followed by 'a*', 'A*' or 'Z*' in packCode missing after '/' in packCharacter in 'C' format wrapped in packCharacter in 'c' format wrapped in packCannot compress negative numbers in packCan only compress unsigned integers in packCannot compress integer in packAttempt to pack pointer to temporary value'@' outside of string in unpack'X' outside of string in unpack'x' outside of string in unpack'/' must follow a numeric type in unpackUnterminated compressed integer in unpack'P' must have an explicit size in unpackCount after length/code in unpacklength/code after end of string in unpackCode missing after '/' in unpackInvalid type ',' in %ssSiIlLxXMalformed integer in [] in %sInvalid type '%c' in %s'X' outside of string in %s@XxuaAZInvalid type '%c' in pack'%%' may not be used in pack'X' outside of string in packInvalid type '%c' in unpack%.*lu0000000000fFdDcCsSiIlLnNUvVqQjJNegative '/' count in unpack=S=S=S=S=S=S=S=S=S=S==S=S==S=x=x=x=x=x=x=x=x=x=x=C??E???????????????????????wEDCS??iS?NRQ U?T?G?FNQ?P?*PO?`O?D??????DCSN?VN?NRMVM?L?NL?7LK?6K?HHH9B@????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????Q??A??????P????C????????????????M??AA??????6K????\@'r>a>an>a>a>a>a>a>an>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>avVutnt>a>aa>asygg>ad>ad>aLsd>ae>a}rd>a^r>aVu>a>a>a>a>a>aVutfe?c>ab>asfCf>ag>ae>alqc>ae>ape^hn>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>ayg>a>agb>a>a>a>a>a>ae>a>a>a>ao>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>af>a>aa>a>a>a>a>a>ae>a>a>a>aq?`@sort::hints$$Undefined subroutine in sortUndefined sort subroutine "%_" calledSort subroutine didn't return single valueSort subroutine didn't return a numeric value;@`0@pH@0h@@Ф@@0@@8AXAAA0AAЫBp@B0BB B`CP@C pC`CCPDP(DPDpxDDpD0EHExEEE`(FPFxFF0F!G"0G#HG0$xG$G4G`6H8`HP9Hp9H9H9H9H9I0: Ih\?\p@\0B\F]HX]I]K]`L]L^M8^Nh^P^_^0`_@`0_``_pa_b_@c_pc_c`f`` gx`g`0h``i`ja m@apphapasau buHbvxb@bbc8c`c@cc0cc`d`dPxdd@ddpe8e`e@ee e0eeК(fPf@pfPffffgHg pgggghhhh0h@h@iphii i j`(jHjhj`j`j8k`kpk`k@l0l`llll`l@ mHm`m mPmmnn0n0nnn@n@opooo8pp pqP 8q0qqrXrprr@rrrrs sHs`sspss0"t@#0t%`t@%xt&t&t(t(t)up+@uYuZu|vXvv@vHwPwwpwxPxPxxy8ypXyypyy0zXzzz{@ `{ { { { { | H|||p||}@0}H}`}p}}}}@}P~~0~`H~p`~x~~~~~P~`p(@Xp`p(@`h "@p#h##0'+ +8,`,-p.Ђ@03( 6`6;<==(>P?@pBЄ0DpHPK@LȅpLLLM@@N`NO0PІP@QQ@PRhR SUY`\`p\x\0]@]Ȉ@^`@cpc0ggЉg hPh`h0phHh`hxh i@ijj`j jHkq؋rr(rHsst0t،Ptpt uPvv w xy`z0zP@|x}}Ўp~ Ѐ`Іp `Ў0pP p0pȑ`p0Pp`ВP`xПP Hhp8`x@ ` P0p@Xp ЗP0 @P0`șPH` h @Л`(@@Xp0`Pp @p h Ȟ@HPx` ؟!$@P'h(p(( ))0*X`*..// /0`/P/p0055@670`;``<=?A C8Mh@NX\\p]H ^x``ȥq@vHvh{PȦ8hP8hp p8@``ȩ`p0Pp0PpЪо@0PH@`x@ث`8X`x`ج``8X`x`حp( Hpx` H0xȯ 0 P@@`0x@ȱ`(@p P` Hph@ȳ 00H`д  Hpе! !#h`%% 'p'(Hp)x)@*ط*p+(+P -x`--0.`/001X1Zй[P[[@@\h\\^غpa(pgPghPoq qػy`|0 ؼp(Xpx Pнз`@ @8pPh@@p8PP(@Xp0@x0P H`0@ H0`@x`P@h@@8 PPx(@h@"0$`@%') *H+p,-7P89=p?@BpBB`DF pIhJPNR0T`WY\`^p_8beg0h(jXqprtv@wh0y0z0{0|0}00~X0 HpЕHpPТP@80`0 д 0`X Px@hpP 0`@ (P@ 0`Xp @Hx 0 X@ pP p  8X@xP `8`@P 0 P!pp!!0""#@`#p$%&P'('X(p((0))H)xP**P,-(0.X.// 0081X1x`2`3333(4@ 4X4x44p55p6`889`p: ;<@@8P@P@p`BCDD(KxpR0TUh@VWkk po`rv0wPx(`yx p@`@ p(ЕXЖ0Ц0`@0@@pp``00X`h08X@x@P `8 08 8p`x0p H p(Xp(PPxp0` "#@#p$%')(p*P ,-./0 1H4p66`77P888P9X9xP::p;;p< <8>?@ APBD0EPF@H8PHPKK0M PR(TPUxWp\p_ aPe epghjl@opopqru|8|X0(pX`P p X `  ` 0 0P Ph    8 p   @ p 0 @   p    @ p (PX0! !8P$p$')**@+hP,-.003@MMNNPW@YpZZ@[`[[\\ ]PfPtPuv Px``@0H`xP0 0 ( h P8`hP0@P`` Xp p'p()@) `)8)XP*xp*+`++,p,(,@ -`--0...@//0/HP0h00`111p2282P3p344 555 06@6`6x@777 88  :p @: < = 0A !AH!A`!B! B!PB!B!B!B"@C8"`CP"@D"PE"`I#pI(#I@#IX#Ip#I#J# J#J#PK#K$0L@$Mh$V$W$W$X%Y@%PZp%0[%[%P\%P]&aH&`cp&f&i&k&Pl 'mH'@np'0p'r'u(wH(pw`(0x(x(x(`y(py(y)z() z@)0zX)@zp)`z)z)z)z)z){*{*|0*|P*P}h*}*~*p~*~*0*+P0+P+Ѐp++P+++p+, ,@8,P,h,@,,,P,І-0-@-0`-x--@--Љ- .P@.X.0.Ў.P./0(/АP/h/// 0(0ГP0000`0Е011010H1@`1`x11202H2Ph2И223 3@30h3@3304`4444Р4(5@5h5 55 5Ф 6H6 667 (7P77P7Ы7P8(80h8888p9099`99 :зH:x:::P:л;08;X;;; ; <0P<x<0<<<=00=`= ==`=p>>pH>0x>>>?@?Pp????@ @Pp@@@@A A@AhA`AAPAA(BPBpBBPBP C`8CpPChCCCCCCCD(D@D XD0pD@DPD`DpDDEE0EHE`ExEEEE E0E@FP F`8FpPFhFFFFFFFG(G@G XG0pG@GPG`GpGGHH0HHH`HxHHHH H0H@IP I`8IpPIhIIIIIIIJ(J@J XJ0pJ@JPJ`JpJJKK0KHK`KxKKKK K0K@LP L`8LpPLhLLLLLLLM(M@M XM0pM@MPM`MpMMNN0NHN`NxNNNN N0N@OP O`8OpPOhOOOOOOOP(P@P XP0pP@PPP`PpPPQQ0QHQ`QxQQQQ Q0Q@RP R`8RpPRhRRRRRRRS(S@S XS0pS@SPS`SpSSTT0THT`TxTTTT T0T@UP U`8UpPUhUUUUUUUV(V@V XV0pV@VPV`VpVVWW0WHW`WxWWWW W0W@XP X`8XpPXhXXXXXXXY(Y@Y XY0pY@YPY`YpYYZZ0ZHZ`ZxZZZZ Z0Z@[P [`8[pP[h[[[[[[[\(\@\ X\0p\@\P\`\p\\]]0]H]`]x]]]] ]0]@^P ^`8^pP^h^^^^^^^_(_@_ X_0p_@_P_`_p__``0`H```x```` `0`@aP a`8apPahaaaaaaab(b@b Xb0pb@bPb`bpbbcc0cHc`cxcccc c0c@dP d`8dpPdhddddddde(e@e Xe0pe@ePe`epeeff0fHf`fxffff f0f@gP g`8gpPghgggggggh(h@h Xh0ph@hPh`hphhii0iHi`ixiiii i0i@jP j`8jpPjhjjjjjjjk(k@k Xk0pk@kPk`kpkkl l0l0Hl@`lxlll(mPpmmm8n`n`nn(oPo oo0opp(pPp&p&p@'p'qp(0q@-q01q 2q0W0rWPrXrPYryrys`{@s{Xs{ps |sp|s|s}t0~Ht~xtttu@uЏhu0uuvXv`vzRx (b4 bTcLtcD(d$@d'$Xdo  <d  (0$pf,D@go $tho  $h 0Pisi,i  L,(j (084|lm  @$ys  (z=,Hz,,~ $\3   <t ( $l$H $ C  $<H  $d8  < (0L  (08  H,4@ !d0` Lp (08< ($0 0$<   d"<|(e (,X]  , XG,4D dIL9 (08$ 0LH (08P$LC 0t    [ L { (08`\ 8[ | x_L V (08 ;,  4 p ,T  ! 0 Y0$ p D  L  (08`, h PLL  (08P x , p ,    @L [  (08$d    ,    xP  = h (4 7LT S (08< V  (0 Z+,Z04ZX T0[ l([X ,h[  `L8a  (08$ k|   $4 l 0,\l4 <mV (0<p+ (0< ro (@$L(th @Dtpu (0`L8v2 (08@L (xr (08P,\Xz0<zF (0${ @p|@}F <4@}} (0Lt  (08<0 (0<r (0LD  (08,   ,5  < (0,4J  Pd|l$h   L (08 D4`  (0@L|$ (08,o $ȫ   $@< T)lȬЬ*جЬp p$$p{   ,Lȭ |h p x>$   $p 0$د? $D? lj ,X P"$w   $pr 0<,ȳE (0,lش  @$xm   55, $3LD C (08`$ e 0$h`   $ 0 ( , $Lhh 0,t   0,Q $h 0$   ,$< $T 0$|(   , ,@ @< (04D  0,|H  @,8Q  @h,p  @,$` @,T   0Ld (08,#   0 , $Lx 0,tl  @ V `-puL (08@L Hod b,  $ `/   $ h? 0$! r   $,! E 0,T!< L! (08@4!{   @$ "{ 0,4"0B   0Ld"Pf (08"p]"#," $$#`C @$L#G 0$t#=  # #X u #  L#H!  (08L$,Fd$,E$|$-   ,$- $.y,$`.I @$$%06   L%15 l%1 %825 %X2%P2] ,%2?  @$&4   <&5] \&5t&5 &06,&(6 $&6 0,'p7V  `$4'9'   ,\':  P,'h 0*0^A4*`^A,T*^_  L*a (08PL*pe  ( 08P$$+f L+xg,l+g L+j (08@,+8l @L,mN (08l,}9,} ,} ,} ,,h~  @$ -  04-,L- @<|-* (0-x- -.1L.M (08l.. $<.8A (0L.H (08@,,/ $\/ 0L/2 (08pL/Б (08`L$0 (08Lt0P3 (08@,0@  ,0~  @L$1 (08Lt1V (08`,1d @L1 (08D2\2t2`B2[22ئ2Ц2ئ7,3e  43@ <L381  (P383,3(* P,3(  ,4  L49$d4I4#$44d4 $5p 0L,5(N. (08$|5( 0L57!   (08L5 (08LD6 (08L64 (08`L6@62 (08 <470F  (0t7F<7HG} (07GL L7G (08@L<8(J (08@,8Q[ <8S (0$8hU]   $9U,D9V  ,t9V[  ,9V[  $9VQ 0D9X ( 0@<D:[  ( 0L:`j (08$:ЉN 0L:! (08`$L;؏N 0$t;7  ; $;7  $;(   ,< L4<` (08@< 8<@n<t< $<=F4=@F$L=x   t=7===U =P=H\ >:>a4>L>d>|>>> >>P>H?@,?8<,D?`@t??؜? $?  $?Н  0?H@@$,@8  @T@_ t@0%@H,,@X  L@ (08$,AX TA<lAg (0,A(8  P,A8 @ B$$B   $LB   $tB`   B $B @,B@ `4CG 0LC,lC(p,C C$C $D/ 0,/ (08`,W@ DW@\W@ $tW@ 0WA$WAk $WPA    XBn L,XXB (08@L|XB3 (08PLXCZ  (08`LYFj  (08PlYG0$YHH   LYH (08@,Z0K   04ZKLLZK (08@,ZhLe 4ZL   @L[M  (08LT[W (08[`\ [h\; $[\ 0[H]1 \p]3 ,\]_ D\]O \\^' t\0^< L\X^ (08\`P $\a   ,]a?   0$L]b t]c3]c,]c    0$]f 0$^`gy 0$,^ji 0T^nd <t^Pn (0L^n (08@,_`o @,4_t  @,d_x @,_P|` P<_% (0$`p 0$,`H 0,T` $``b  `$` 0$` 0$aF  $DaF  ,la؈  @,aX 0a،4abb< Ldo3 (08P,o@7   0$o 8   , p9  0L>$$ >p   $Lh>p   <t> (0$ ? 0ܟ?_ ?W @W <X@W \@W ,|@X ,AX ܠ8AW ,xAp ,,AX ,\AJ   0$C  0,C&  0,DX , EX ,DPEX ,tEW ,EW ,ԢEV ,FW ,4@FX ,dpFV $Fx   ,Fs @$HH 0,I[ ,DI[ ,tJg ,@Jw $ԤJ   $K} $`K[DK ,dL ,L  0ĥM'MMMB,MDMTdN|MMN,,ĦN ,`O @$$ QQ,LXR ,|R $XS 0LԧT` (08`$X<Wg<\HX (0<Y (0ܨZZL[ (08@Ld`b (08Lh (08@Ljh (08@$T0k $|kf Ll (08p< h (0,L PL|x (0 8 ̫=$( 0L  (08@Ld (08P$P   Lܬ (08@,(kLLx[ (08P$ 0Lĭ@C (08@,@] ,Dp t@ < X  (0,Ԯ@  ,= ,L! ,| P,h  PLܯH (08P,, L\ (08PL  (08LXW (08,Lh PL|O (08$̱# 0$C  $C  <D m (0PH$@C  $ܲhC  L (08@T0l($ e  $he  $Գe  $e  $@Y DY dY Y L@: (08@0 (L$ h (08@t@8L0 (08@  L$ (08`t` X $P    $̶     x$$p   Ld$|   $p   $̷   `$ X   44 0$lx 04Pm P̸,> ,5 @$D 0,l8   0$(   $Ĺ   $h   $   $<X   $d   ,H < (0LX (08LL"M (08P<#/ (@$ܻ$_ 0$%   ,,& $\X'   $@(   <() (0$*6 0$+] @,<- !P$l.j  $/ 0$0 0$1 0$ 2 0$4@3+ 0$\H6   7k08kľ8k8{09{$9{D9{dP:{:{$;   ̿;k; H<$@   ,> , ? ,<x@ ,lhA ,XB ,HC $8D @$F,<E2 `lI,I @,`J  , Mk P$`O{ 0$<P @$d`R @LT (08,xX @, H[ @,<\ pl`$`P 0$b 0,c @$e 0,,8g @\(j,t j @$kZ P$l  @,o% $u LDPv%  (08!0(, / p G ,P @<D (0,pP `$ 0,X @L ؒ (08L\h  (08P, PL (08`,D@ @$tФ& 0,إ ,x P< (@<ح$T 0L|X (08<Ȳ, (0 L$v (08tLؾ (08 PL(  (08,, `,\%  P, P$h @$ PL g  (08L\k (08,( ", P 4,, P$\H @,0 ",v   0, ,p LD  (08`$  L  (08 xL$ (08t$  04@ 0 $ 0$,   $T    $|[ 0$ 0,  P,M L, K (08|:40;30,8;  @L;r (08,,D @\E|F'GrxGGGHj, XH("@,<XI<   LlhRS  (08P$x_ 0$P`S 0< a (0LLb @ (08L (08P< (0L," (08L|xm (08L (08 h. 4Ld?|@3Lh (08@< (0LT (08p< (0< % (0,$ ,T $ 0h`XLP (08DL\g (08     90 $  D^@d| H^@ ^@@,H L^@l p^@ (^@h4p T^@t ( ^@ P^@$< \^@|HP  0^@p x ,^@L(d0 ^@$W   $ W   L X (08@\,t  p 'L8 (08$  J  40 '$LH J  tp 0x '$ J   0 '$ J  $!0L<! (08P$!  0D" (0@H&@&,8&D0&\(&t &Q`&X&&$X'l   $'l   $,'}   ,T@) ,1n $02 0$2 0$3 0,,H4 $\4 0$5   ,6e $X6  0,075 p$4@; 0,\<@,h? $C 0$DH 0$ (E   $4E# 0$\F 0$HP 0LJ (08`4Md @4N[0,LO|OPPxPpP6P`P,PDP\PtPPPPP3PQR(<RSTRUl(SZpSTSZTT$HT 0$Tg 0U(<(UH \XU|XUQUYU[0VQxVPVP V"$WU<HWUTW5lWZ$XF 0(Y^$pYq  0YZ$Z  0,ZJ LZ^$d[V   H[I0x[U[),[   P \,]#$D ] 0,l] !$`r   ,p`m `l$a   <xa2,Tan La (08P$b 0cW$PcC ,<xc   0,lc @xd#da d d dd4d LdLddz (08@Le (08@e=e4eBLTex (08@,f @ff0 Xg<$,xgc LTg (08P$h   Li (08@,Xi L8k4$lXk   k3kLk (08@`l$,hlS 0Tl$llo   $l 0LHm (08P$ n 0L4`on (08PLpW (08@$qy 0q$q   ,<r   0<ls (0$sr   $s~ 08tU<tv  (0,Tt @$`v   vo wc ,hw Lw  (08P$lXyz   Ly (08`${   $ X}B  ,4}P$d@~ @$   @<,h{ $[   $K,D  P,t: $ 5  <8\ (0, X  $<؂ 0dp;,|m @,؄5  $  @Ї1,  `$L 0,t  P,0i  Pph,`   @,4  P$d 0,6  @,(   0< (0,,8  @\ؓWt ^0L` (08@$ 0L  (08$\ؗ P$P  PȘ^0$   L ($,ș   T`tК(,p(,R  @$ <8J <\h (0<؞ (0,X   0 ($ <Tl؟П,ȟD\tx4pLhd`|XPH@80 ($ <Tl؞О,ȞD\tx4pLhd`|XPH@80 ($  < T l       ؝ Н, ȝD \ t        x4 pL hd `| X P H @ 8 0 ($  < T l       ؜ М, ȜD \ t      x4pLhd`|XPH@80 ($ <Tl؛Л,țD\tx4pLhd`|XPH@80 ($ <TlؚК,ȚD\tx4pLhd`|XPH@80 ($ <TlؙЙ,șD\tx4pLhd`|XPH@80 ($ <TlؘИ,ȘD\tx4pLhd`|XPH@80 ($ <TlؗЗ,ȗD\tx4pLhd`|XPH@80 ($ <TlؖЖ,ȖD\t  x4 pL hd `| X P H @ 8 0 !($! #L>*V>.^><e>Ap>B|>D>E>I>L>N>P>S>U>a>c>d>e>f?g?i?k!?l*?m4?n=?oN?pZ?qf?rt?sz?t?u?v?V?w?x?y?~?hiKRؕRuiaiFpJpNpRpVpZp^pbpfpjpnprpvpzp~ppppp&*61`e9DN^r  aXoCF(z ‡ =3 [@x oooo73  & 6 F V f v         !!&!6!F!V!f!v!!!!!!!!!""&"6"F"V"f"v"""""""""##&#6#F#V#f#v#########$$&$6$F$V$f$v$$$$$$$$$%%&%6%F%V%f%v%%%%%%%%%&&&&6&F&V&f&v&&&&&&&&&''&'6'F'V'f'v'''''''''((&(6(F(V(f(v((((((((())&)6)F)V)f)v)))))))))**&*6*F*V*f*v*********++&+6+F+V+f+v+++++++++,,&,6,F,V,f,v,,,,,,,,,--&-6-F-V-f-v---------..&.6.F.V.f.v.........//&/6/F/V/f/v/////////00&060F0V0f0v00000000011&161F1V1f1v11111111122&262F2V2f2v22222222233&363F3V3f3v33333333344&464F4V4f4v44444444455&565F5V5f5v55555555566&666F6V6f6v66666666677&767F7V7f7v77777777788&868F8V8f8v88888888899&969F9V9f9v999999999::&:6:F:V:f:v:::::::::;;&;6;F;V;f;v;;;;;;;;;<<&<6<F<V<f<v<<<<<<<<<==&=6=F=V=f=v=========>>&>6>F>V>f>v>>>>>>>>>??&?6?F?V?f?v?????????@@&@6@F@V@f@v@@@@@@@@@AA&A6AFAVAfAvAAAAAAAAABB&B6BFBVBfBvBBBBBBBBBCC&C6CFCVCfCvCCCCCCCCCDD&D6DFDVDfDvDDDDDDDDDEE&E6EFEVEfEvEEEEEEEEEFF&F6FFFVFfFvFFFFFFFFFGG&G6GFGVGfGvGGGGGGGGGHH&H6HFHVHfHvHHHHHHHHHII&I6IFIVIfIvIIIIIIIIIJJ&J6JFJVJfJvJJJJJJJJJKK&K6KFKVKfKvKKKKKKKKKLL&L6LFLVLfLvLLLLLLLLLMM&M6MFMVMfMvMMMMMMMMMNN&N6NFNVNfNvNNNNNNNNNOO&O6OFOVOfOvOOOOOOOOOPP&P6PFPVPfPvPPPPPPPPPQQ&Q6QFQVQfQvQQQQQQQQQRR&R6RFRVRfRvRRRRRRRRRSS&S6SFSVSfSvSSSSSSSSSTT&T6TFTVTfTvTTTTTTTTTUU&U6UFUVUfUvUUUUUUUUUVV&V6VFVVVfVvVVVVVVVVVWW&W6WFWVWfWvWWWWWWWWWXX&X6XFXVXfXvXXXXXXXXXYY&Y6YFYVYfYvYYYYYYYYYZZ&Z6ZFZVZfZvZZZZZZZZZ[[&[6[F[V[f[v[[[[[[[[[\\&\6\F\V\f\v\\\\\@\323  !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~6 D D @$D@@@@ DD@ 6B"6(( ""&@  T*T0D V6 W76666d"T"d"T"l"\#l"\#%.%%.%%>%% D.%%.%%%)%%6$$6$$6$$6$$6$$6$$>$$$$$$$$$$$$."#"")77 7677777777 ("(")")" ((77)66666Hldh66H( ((" (HDHHh2ivvi HAHAH&"$@@IB6H]H6@@AHDDDDDD6R 6UB"("  .T""."". "( " ""," ""7I7III)))6)7 ))])]I7)))"6667("("("("(("("(""("("(6@"@6"6(6(6(((66666666 (D@ 2ŎʎώԎ َE¢!'-39?EKQW]ciou{ÏɏϏՏۏEe=O< &,3:@FPV`_\gm#WvSRZfgMTʎw<ʐȐӐѐܐڐ'.8C͛OכTY^chomtx|6‘Ƒ,np<rˑʑёiA~ّߑ!e<(/6<B֮I<NU^gns=wof0~Ò9̒Ւޒ !'R1;hhEJOoh8tT\ocmkqv~NC+tWtȓ͓ғ֓n|nvnۓBfn^n QtRt+3<DLU]bkt{Ȕϔ֔ݔXnsEnsss>n6n0n*n '2C05#nXs=EnMnY]gntzs!g•ɕӕݕ $-8BKT]fnxȖϖ֖ݖmm  .>ISdrʗ !8gP#jsƘژ1CZSf_l}ʎיϙ!<4QI]ph}nĚؚ$4DTdtƛЛڛ*:QI^6‘Ƒ,np<rˑʑёiA~ّߑq!e<(/Ĝ֮Ϝ<ޜgns=woY,5EUfvҝ *$9MYdwlhhEJOoh8tt\ocmkqv~NCOґ+tWtȓ͓ғ֓n|nvnۓBknfn^nQtRt˞ΞўԞמg"eڞݞ:cbf(etbXnsEnsss>n6n0n*n '2C05#nXs=EnMn ]gntzs!g*=JJJJJJJK K1K=KKKYK\gq}JJKJJJƟϟmm؟;bd@hgc+06@DHKORVY]`dgkotx}àǠˠϠӠ֠٠ݠ  "',15sPg2t  HHP`C5I.libperl.so.5.8.8Y9.shstrtab.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.data.rel.ro.dynamic.got.got.plt.data.bss.gnu_debuglinkXX8B oCC6 (z(zFF‡%o2oA@@xK [ UP<[\\ aaagaa@Y o@}6232232(23(2@23@2P 737p93p9X=3=x@\3@\ W `3`@! `xparELF>.@@@@8@@@@@@@@@@ ``H ``@@ Ptd@@TTQtd/lib64/ld-linux-x86-64.so.2GNU\gMFmRO< L&, pU=(7YJrV6ul H^WT8SN9nX@#/ E>x`.4QPcC21_{03f"*%e)D B[Izbtdsw$~':5|KvAy-;}!iZ]aGk?j o+qh%c @@G(I D+8Mcdghjklmnpqrsvwz{~ղq0G-I}Lݣk/ś㞇k C : ɢʼn !oĹ@k|nqX{u|d|K|$2b ff`Y{JkGCEG3:}A?,xdl```'}l_  { 8$ 4yVJ%%$gVf3;U`X{738]{6)y?n D_%|Te2u6KemT9F !ttY*,K(yn!*%WI2fDRQ%{p h)@5 @[6 Yk@"b :@u @)$!``@g 6@  @H+@5X`Z ` @#!`` @U 6@ z<@d"`` I}@ h@N ku@xVP` 0@Kb a w@I@ Ѓ@^ .@ 4@", @; 49@UH`e @Ex 8@QOP`@` jw@O /@9 @U {s@ap`C j@? (@libperl.so.5.8__gmon_start___Jv_RegisterClassesPerl_sv_2ivPerl_reentrant_retryPerl_Ttainted_ptrPerl_Iexit_flags_ptrPerl_save_destructor_xPerl_Icompcv_ptrPerl_Tin_eval_ptrPerl_atfork_lockperl_constructPerl_get_svPerl_croak_nocontextPerl_av_shiftPerl_sv_2pv_flagsPerl_Gop_mutex_ptrPerl_sv_setpvnPerl_sv_2uvPerl_Ilinestr_ptrPerl_formPerl_sv_setivPerl_newSVpvPerl_Ieval_root_ptrperl_freePerl_Top_ptrPerl_mg_setPerl_Tcurstackinfo_ptrPerl_sv_2mortalPerl_newRVPerl_vmessPerl_newSVPerl_atfork_unlockPerl_Gsigfpe_saved_ptrPerl_sv_setpvPerl_Gthr_key_ptrPerl_hv_fetchPerl_newSVpvnPerl_Gdo_undump_ptrPerl_Iperl_destruct_level_ptrPerl_gv_fetchpvperl_runPerl_Tstatbuf_ptrPerl_sv_newmortalPerl_dounwindPerl_newXSperl_destructPerl_sv_setuvPerl_av_fetchPerl_croakperl_parsePerl_safesysmallocperl_allocPerl_Ireentrant_buffer_ptrPL_memory_wraplibdl.so.2dlclosedlsymdlopendlerrorlibm.so.6libpthread.so.0pthread_getspecificopen64lseek64pthread_mutex_destroyreadlibc.so.6__register_atforkexitsprintfstrncmpclosedirstrncpysignal__stack_chk_failunlinkmkdirreallocmemchrgetpidstrdupstrtokstrlenmemsetstrstrrmdirgetpwuid_rmemcpy__strtol_internalopendirgetenv__ctype_b_locgetuidreadlinkexecvpreaddir64_rmemmoveaccessstrcmp__libc_start_main__environ__xstat64__lxstat64libcrypt.so.1_edata__bss_start_endpar_current_execpar_basename__libc_csu_finiXS_Internals_PAR_BOOTpar_env_cleanpar_current_exec_procpar_dirnameget_username_from_getpwuidpar_cleanupXS_DynaLoader_dl_load_filesize_load_me_2XS_DynaLoader_dl_unload_file_IO_stdin_used__data_startboot_DynaLoaderXS_DynaLoader_dl_find_symbolXS_DynaLoader_dl_errorxs_init__libc_csu_initXS_DynaLoader_dl_install_xsubXS_Internals_PAR_CLEARSTACKpar_rmtmpdirname_load_me_2XS_DynaLoader_dl_undef_symbolspar_mktmpdirpar_setup_libpathpar_findprogpar_init_envGLIBC_2.2.5GLIBC_2.4GLIBC_2.3GLIBC_2.3.2p ui oPii {ii ri ui oui o` `o``g`}``y``tp````` `(`0`8`@` H` P`cX` ``h`p`x```````````````` `!`"`#`$`% `&(`'0`(8`)@`lH`*P`+X`,``-h`.p`/x`0`1`2`3`4`5`6`7`8`9`:`;`<`=`>`?`@`A`B`C`D `E(`F0`G8`H@`IH`JP`KX`L``Mh`Np`Ox`P`Q`R`S`T`U`V`W`X`Y`Z`[`\`]`^`_```a`bHscH52 %4 @%2 h%* h%" h% h% h% h% h% hp% h`% h P% h @% h 0% h % h % h% h% h% h% h% h% h% h% h%z hp%r h`%j hP%b h@%Z h0%R h %J h%B h%: h%2 h %* h!%" h"% h#% h$% h%% h&% h'p% h(`% h)P% h*@% h+0% h, % h-% h.% h/% h0% h1% h2% h3% h4% h5% h6%z h7p%r h8`%j h9P%b h:@%Z h;0%R h< %J h=%B h>%: h?%2 h@%* hA%" hB% hC% hD% hE% hF% hGp% hH`% hIP% hJ@% hK0% hL % hM% hN% hO% hP% hQ% hR% hS% hT% hU% hV%z hWp%r hX`%j hYP%b hZ@%Z h[0%R h\ %J h]%B h^%: h_%2 h`%* ha1I^HHPTI@H@HI}@HH HtHÐ== UHt$HH H HHu ff.UH=/ HtHt `IAÐUHHHEȌ@8HHM@Ҍ@YUHSH8HHdH%(HE1H@~Hu~THcH/Ht5Hcؿ8IHHHH@'8HHHHEdH3%(tH8[UHH@H}HuH}t HS Hu HEHEHEHEHUt HM<=uHEHEȉ)ȉEH HE[HcUHuH}suAHcEHE<=u2HUH HH)HHHEHcEHEHHEHEHEHHEH}uHEHEUHH H}HuH}UHSHHH}HuHU<=uHEH}EHuH}HEH}tKH}H‹EH9"HMHUȈHMHEHEuEH HEE HEEHUHHu t;EԃHH4H= 5Hv Ho HuiE EԃHH<HEH}u EJHcEHH5 H}$HMH  H HPHcEHHHEԉEHEHEHEHUt HM<=uEHHH HHEȉHE)EHHHu EEHHHZ HHHEHEHEHUȈHMHEu HU<=uHM=HEHUHMȈHUHEHEuEEHH[UHH H}?EHHHH HHUHEHHHUHHUHHtHEHuH}HuUHH@ dH%(HE1HDž|H@¾@?yHDžHHy HDžkHc[HHu HDžHHHE.}"uu@HEHEHEHEHEHEHEHHEHEH8[A\A]UHSHhH}HEHEHE @HE@HE#@HE0@HE5@HEG@HEEH}VHEH}t HEuHuH}N~HuH}HulH}JHH=X ;HH}/HHxHEH / HEHUH}I)@YHuH}EEHHDŠHEHE)Hh[UHSH츁HH~dH%(HE1HDž~HDž~HDž~HDž~H@HDž~P@HDž~'@HDž~G@HDžP~@HDžX~U@HDž`~\@HDžh~d@HDžp~i@HDžx~G@HDž~m@HDž~r@HDž~G@HDž~{@HDž~G@HDž~HDž~HDž~Dž @dH~H~t2H~t$H~tH~H@~H~H~uwDž8跲HOC8 8虲HHHX8yHaH@ C<ڷ8SH蛲HHX躷83HǺG@!HC@蓷8 HTHHXs8H脲HHCHS8̱HHHX38謱HTHHCP8茱HԱHH@H@XH[UHHHuض8QHǾT躶83HǺu@UHATSHpHuE8H`0@HEH}tHE<1uHEHt `%8螰Hǹ @HEH}4HEHH@8H@ HEE]ɵ8BHHuع菳HEH}HEH@ %tHEHHHHE1HEHi8HǹH͵HEEHHHH HH8HuֳuEE 9E2} ;Eu9E%8cHHu觰HEȃEA 9E|п躴83Hǹ@|HEH}tsHEHH@8Hy8HǺŽ@H肰HEHH@8H@ %@t*HEHH@8H08詮HH螲8荮Hǹǎ@֯HEH}HE@WHEH}t0HEHH@8H譳8&HHUH路7H L HEHH@8Hs8HLHT8ͭH588豭HIH@蚶H| Hu H&H=u HY Hb HEHEHH@8H@ %tHEHH@8HHHHE8HEHH@8H蒲8 HǹHHEHuH}蕭EHEHH@8H@ %tHEHH@8HHHHE8HEHH@8H8菬HǹHzHEHo H0MHUЎ@ưH=? %E}t/}t)}t#H H" H0M@}Hp[A\UHSHq8H貲X8ѫHǹG@w@N@Hÿ-8覫HǺG@H6H[UHSH(}HuHUпaHþHh)@h)@H+@.uMH H Hu իH= ٭8Hp`8٪HaH<8赪H=HEyp`EHH<DHm Hf HEHHHU HHc@HC HH@&  HHHH HHf@  E4H HP܌ EHHH‹EHHHEHHEE;E|H HP EHHHHH  EPH=b A|@کE}uH=B 蕪EH=3 @@>Hu:H Hu@H H Ht H= H=ً BHJE}tu칝i@p@%EH([ÐHHGhHOH0HHGhHcHH)HuFHHDHHH5j1荭DHl$Lt$HH\$Ld$Ll$L|$HHHGhLgHD(HHGhAEHL4K44F,HL8IcIH)H<HEE1I\Ht{C t%HHH5^lHtLMLHkH k^H $H5jH &lIIHL1H\$Ld$苬H1v H =kH5CkH蛬Hv H kH5?kH~Hv H kH5=kHaHv H jH5;kHDHu H jH5;kH'Hu H jH5:kH H(H9kAH蹩HHiHHHL LI$ID$4H5AHL$J4&FHL0E1~ HEItFH@AAH(HbAH\H0FHH@xLLEE艢H]IH:MHtoHELHI4ߝLeLeH$Hl$Ld$Ll$Lt$ H(f1蜣IH\@kHH5>aHH1H5`1zHo 1HtH so fffff.Hl$L|$H-i L=i Ld$Ll$Lt$H\$H8L)AIHI蛜Ht1@LLDAHH9uH\$Hl$Ld$Ll$ Lt$(L|$0H8ÐHH8HHUHSHHi Ht1H`HHuH[ÐH蓢Hperlxsi.cDynaLoader::boot_DynaLoader/proc/self/exe/:exe/proc/%i/%sPAR_TEMPPAR_PROGNAME.%s%s%sPAR_INITIALIZEDPAR_SPAWNEDPAR_CLEANPAR_DEBUGPAR_CACHEPAR_ARGCPAR_ARGV_0PAR_GLOBAL_DEBUGPAR_GLOBAL_TMPDIRPAR_TMPDIRPAR_GLOBAL_TEMPPAR_GLOBAL_CLEANPAR_CLEAN=1__ENV_PAR_CLEAN__ getpwuidLD_LIBRARY_PATHLIBPATHLIBRARY_PATHPATHDYLD_LIBRARY_PATHC:\TEMP/tmpTMPDIRTEMPDIRTEMPTMPUSERUSERNAMEpar-SYSTEM%s%s%s%s%s%scache-%s%s%02x%s%stemp-%u%s..%s/%sARGVperl0%s: execution of %s failed - aborting with %i. %s: creation of private temporary subdirectory %s failed - aborting with %i. Internals::PAR::BOOT-e--main.cpanic: MUTEX_DESTROY (%d) [%s:%d]par.pl#!/usr/bin/perl eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell package __par_pl; # --- This script must not use any modules at compile time --- # use strict; #line 159 my ($par_temp, $progname, @tmpfile); END { if ($ENV{PAR_CLEAN}) { require File::Temp; require File::Basename; require File::Spec; my $topdir = File::Basename::dirname($par_temp); outs(qq{Removing files in "$par_temp"}); File::Find::finddepth(sub { ( -d ) ? rmdir : unlink }, $par_temp); rmdir $par_temp; rmdir $topdir; if (-d $par_temp) { # Something went wrong unlinking the temporary directory. This # typically happens on platforms that disallow unlinking shared # libraries and executables that are in use. Unlink with a background # shell command so the files are no longer in use by this process. my $tmp = new File::Temp( TEMPLATE => 'tmpXXXXX', DIR => File::Basename::dirname($topdir), SUFFIX => '.cmd', UNLINK => 0, ); # Because the par_temp directory is going to be deleted in a # background process, the parent process id may be reused before the # background process completes. To ensure that the temporary # directory does not get reused while it is being deleted, try to # rename it to a name that is related to the temporary script file. # FIXME: This breaks threaded applications. A fix is in the works, but may # still take a while. The fix would be to make sure that this is only # run in the LAST REMAINING thread. # my $tmpname = (File::Spec->splitpath($tmp->filename))[2]; # filename # $tmpname =~ s/\.[^.]*$/.dir/; # my $newDir = File::Spec->catpath( # (File::Spec->splitpath($par_temp))[0..1], $tmpname); # if (rename $par_temp, $newDir) { # outs("Renamed $par_temp to $newDir"); # $par_temp = $newDir; # } if ($^O =~ m/win32/i) { print $tmp " :loop rmdir /q /s \"$par_temp\" if exist \"$par_temp\" goto loop rmdir \"$topdir\" rm \"" . $tmp->filename . "\" "; close $tmp; my $proc; Win32::Process::Create( $proc, $ENV{COMSPEC}, "$ENV{COMSPEC} /c \"" . $tmp->filename . "\" >nul 2>nul ", 1, NORMAL_PRIORITY_CLASS, "." ); } else { print $tmp "#!/bin/sh while [ -d '$par_temp' ]; do rm -rf '$par_temp' done rmdir '$topdir' rm '" . $tmp->filename . "' "; chmod 0700,$tmp->filename; my $cmd = $tmp->filename . ' >/dev/null 2>&1 &'; close $tmp; system($cmd); } outs(qq(Spawned background process to perform cleanup)); } } } BEGIN { Internals::PAR::BOOT() if defined &Internals::PAR::BOOT; eval { _par_init_env(); if (exists $ENV{PAR_ARGV_0} and $ENV{PAR_ARGV_0} ) { @ARGV = map $ENV{"PAR_ARGV_$_"}, (1 .. $ENV{PAR_ARGC} - 1); $0 = $ENV{PAR_ARGV_0}; } else { for (keys %ENV) { delete $ENV{$_} if /^PAR_ARGV_/; } } my $quiet = !$ENV{PAR_DEBUG}; # fix $progname if invoked from PATH my %Config = ( path_sep => ($^O =~ /^MSWin/ ? ';' : ':'), _exe => ($^O =~ /^(?:MSWin|OS2|cygwin)/ ? '.exe' : ''), _delim => ($^O =~ /^MSWin|OS2/ ? '\\' : '/'), ); _set_progname(); _set_par_temp(); # Magic string checking and extracting bundled modules {{{ my ($start_pos, $data_pos); { local $SIG{__WARN__} = sub {}; # Check file type, get start of data section {{{ open _FH, '<', $progname or last; binmode(_FH); my $buf; seek _FH, -8, 2; read _FH, $buf, 8; last unless $buf eq "\nPAR.pm\n"; seek _FH, -12, 2; read _FH, $buf, 4; seek _FH, -12 - unpack("N", $buf), 2; read _FH, $buf, 4; $data_pos = (tell _FH) - 4; # }}} # Extracting each file into memory {{{ my %require_list; while ($buf eq "FILE") { read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); my $fullname = $buf; outs(qq(Unpacking file "$fullname"...)); my $crc = ( $fullname =~ s|^([a-f\d]{8})/|| ) ? $1 : undef; my ($basename, $ext) = ($buf =~ m|(?:.*/)?(.*)(\..*)|); read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); if (defined($ext) and $ext !~ /\.(?:pm|pl|ix|al)$/i) { my ($out, $filename) = _tempfile($ext, $crc); if ($out) { binmode($out); print $out $buf; close $out; chmod 0755, $filename; } $PAR::Heavy::FullCache{$fullname} = $filename; $PAR::Heavy::FullCache{$filename} = $fullname; } elsif ( $fullname =~ m|^/?shlib/| and defined $ENV{PAR_TEMP} ) { # should be moved to _tempfile() my $filename = "$ENV{PAR_TEMP}/$basename$ext"; outs("SHLIB: $filename\n"); open my $out, '>', $filename or die $!; binmode($out); print $out $buf; close $out; } else { $require_list{$fullname} = $PAR::Heavy::ModuleCache{$fullname} = { buf => $buf, crc => $crc, name => $fullname, }; } read _FH, $buf, 4; } # }}} local @INC = (sub { my ($self, $module) = @_; return if ref $module or !$module; my $filename = delete $require_list{$module} || do { my $key; foreach (keys %require_list) { next unless /\Q$module\E$/; $key = $_; last; } delete $require_list{$key} if defined($key); } or return; $INC{$module} = "/loader/$filename/$module"; if ($ENV{PAR_CLEAN} and defined(&IO::File::new)) { my $fh = IO::File->new_tmpfile or die $!; binmode($fh); print $fh $filename->{buf}; seek($fh, 0, 0); return $fh; } else { my ($out, $name) = _tempfile('.pm', $filename->{crc}); if ($out) { binmode($out); print $out $filename->{buf}; close $out; } open my $fh, '<', $name or die $!; binmode($fh); return $fh; } die "Bootstrapping failed: cannot find $module!\n"; }, @INC); # Now load all bundled files {{{ # initialize shared object processing require XSLoader; require PAR::Heavy; require Carp::Heavy; require Exporter::Heavy; PAR::Heavy::_init_dynaloader(); # now let's try getting helper modules from within require IO::File; # load rest of the group in while (my $filename = (sort keys %require_list)[0]) { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; unless ($INC{$filename} or $filename =~ /BSDPAN/) { # require modules, do other executable files if ($filename =~ /\.pmc?$/i) { require $filename; } else { # Skip ActiveState's sitecustomize.pl file: do $filename unless $filename =~ /sitecustomize\.pl$/; } } delete $require_list{$filename}; } # }}} last unless $buf eq "PK\003\004"; $start_pos = (tell _FH) - 4; } # }}} # Argument processing {{{ my @par_args; my ($out, $bundle, $logfh, $cache_name); $quiet = 0 unless $ENV{PAR_DEBUG}; # Don't swallow arguments for compiled executables without --par-options if (!$start_pos or ($ARGV[0] eq '--par-options' && shift)) { my %dist_cmd = qw( p blib_to_par i install_par u uninstall_par s sign_par v verify_par ); my @add_to_inc; while (@ARGV) { $ARGV[0] =~ /^-([AIMOBLbqpiusTv])(.*)/ or last; if ($1 eq 'I') { push @add_to_inc, $2; } elsif ($1 eq 'M') { eval "use $2"; } elsif ($1 eq 'A') { unshift @par_args, $2; } elsif ($1 eq 'O') { $out = $2; } elsif ($1 eq 'b') { $bundle = 'site'; } elsif ($1 eq 'B') { $bundle = 'all'; } elsif ($1 eq 'q') { $quiet = 1; } elsif ($1 eq 'L') { open $logfh, ">>", $2 or die "XXX: Cannot open log: $!"; } elsif ($1 eq 'T') { $cache_name = $2; } shift(@ARGV); if (my $cmd = $dist_cmd{$1}) { delete $ENV{'PAR_TEMP'}; init_inc(); require PAR::Dist; &{"PAR::Dist::$cmd"}() unless @ARGV; &{"PAR::Dist::$cmd"}($_) for @ARGV; exit; } } unshift @INC, @add_to_inc; } # XXX -- add --par-debug support! # }}} # Output mode (-O) handling {{{ if ($out) { { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; require IO::File; require Archive::Zip; } my $par = shift(@ARGV); my $zip; if (defined $par) { open my $fh, '<', $par or die "Cannot find '$par': $!"; binmode($fh); bless($fh, 'IO::File'); $zip = Archive::Zip->new; ( $zip->readFromFileHandle($fh, $par) == Archive::Zip::AZ_OK() ) or die "Read '$par' error: $!"; } my %env = do { if ($zip and my $meta = $zip->contents('META.yml')) { $meta =~ s/.*^par:$//ms; $meta =~ s/^\S.*//ms; $meta =~ /^ ([^:]+): (.+)$/mg; } }; # Open input and output files {{{ local $/ = \4; if (defined $par) { open PAR, '<', $par or die "$!: $par"; binmode(PAR); die "$par is not a PAR file" unless eq "PK\003\004"; } CreatePath($out) ; my $fh = IO::File->new( $out, IO::File::O_CREAT() | IO::File::O_WRONLY() | IO::File::O_TRUNC(), 0777, ) or die $!; binmode($fh); $/ = (defined $data_pos) ? \$data_pos : undef; seek _FH, 0, 0; my $loader = scalar <_FH>; if (!$ENV{PAR_VERBATIM} and $loader =~ /^(?:#!|\@rem)/) { require PAR::Filter::PodStrip; PAR::Filter::PodStrip->new->apply(\$loader, $0) } foreach my $key (sort keys %env) { my $val = $env{$key} or next; $val = eval $val if $val =~ /^['"]/; my $magic = "__ENV_PAR_" . uc($key) . "__"; my $set = "PAR_" . uc($key) . "=$val"; $loader =~ s{$magic( +)}{ $magic . $set . (' ' x (length($1) - length($set))) }eg; } $fh->print($loader); $/ = undef; # }}} # Write bundled modules {{{ if ($bundle) { require PAR::Heavy; PAR::Heavy::_init_dynaloader(); init_inc(); require_modules(); my @inc = sort { length($b) <=> length($a) } grep { !/BSDPAN/ } grep { ($bundle ne 'site') or ($_ ne $Config::Config{archlibexp} and $_ ne $Config::Config{privlibexp}); } @INC; if ($Config{_delim} eq '\\') { s{\\}{/}g for @inc } my %files; /^_<(.+)$/ and $files{$1}++ for keys %::; $files{$_}++ for values %INC; my $lib_ext = $Config::Config{lib_ext}; my %written; foreach (sort keys %files) { my ($name, $file); foreach my $dir (@inc) { if ($name = $PAR::Heavy::FullCache{$_}) { $file = $_; last; } elsif (/^(\Q$dir\E\/(.*[^Cc]))\Z/i) { ($file, $name) = ($1, $2); last; } elsif (m!^/loader/[^/]+/(.*[^Cc])\Z!) { if (my $ref = $PAR::Heavy::ModuleCache{$1}) { ($file, $name) = ($ref, $1); last; } elsif (-f "$dir/$1") { ($file, $name) = ("$dir/$1", $1); last; } } } next unless defined $name and not $written{$name}++; next if !ref($file) and $file =~ /\.\Q$lib_ext\E$/; outs( join "", qq(Packing "), ref $file ? $file->{name} : $file, qq("...) ); my $content; if (ref($file)) { $content = $file->{buf}; } else { open FILE, '<', $file or die "Can't open $file: $!"; binmode(FILE); $content = ; close FILE; PAR::Filter::PodStrip->new->apply(\$content, $file) if !$ENV{PAR_VERBATIM} and $name =~ /\.(?:pm|ix|al)$/i; # Do not let XSLoader pick up auto/* from environment $content =~ s/goto +retry +unless +.*/goto retry;/ if lc($name) eq lc("XSLoader.pm"); } outs(qq(Written as "$name")); $fh->print("FILE"); $fh->print(pack('N', length($name) + 9)); $fh->print(sprintf( "%08x/%s", Archive::Zip::computeCRC32($content), $name )); $fh->print(pack('N', length($content))); $fh->print($content); } } # }}} # Now write out the PAR and magic strings {{{ $zip->writeToFileHandle($fh) if $zip; $cache_name = substr $cache_name, 0, 40; if (!$cache_name and my $mtime = (stat($out))[9]) { my $ctx = eval { require Digest::SHA; Digest::SHA->new(1) } || eval { require Digest::SHA1; Digest::SHA1->new } || eval { require Digest::MD5; Digest::MD5->new }; # Workaround for bug in Digest::SHA 5.38 and 5.39 my $sha_version = eval { $Digest::SHA::VERSION } || 0; if ($sha_version eq '5.38' or $sha_version eq '5.39') { $ctx->addfile($out, "b") if ($ctx); } else { if ($ctx and open(my $fh, "<$out")) { binmode($fh); $ctx->addfile($fh); close($fh); } } $cache_name = $ctx ? $ctx->hexdigest : $mtime; } $cache_name .= "\0" x (41 - length $cache_name); $cache_name .= "CACHE"; $fh->print($cache_name); $fh->print(pack('N', $fh->tell - length($loader))); $fh->print("\nPAR.pm\n"); $fh->close; chmod 0755, $out; # }}} exit; } # }}} # Prepare $progname into PAR file cache {{{ { last unless defined $start_pos; _fix_progname(); # Now load the PAR file and put it into PAR::LibCache {{{ require PAR; PAR::Heavy::_init_dynaloader(); { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; require File::Find; require Archive::Zip; } my $zip = Archive::Zip->new; my $fh = IO::File->new; $fh->fdopen(fileno(_FH), 'r') or die "$!: $@"; $zip->readFromFileHandle($fh, $progname) == Archive::Zip::AZ_OK() or die "$!: $@"; push @PAR::LibCache, $zip; $PAR::LibCache{$progname} = $zip; $quiet = !$ENV{PAR_DEBUG}; outs(qq(\$ENV{PAR_TEMP} = "$ENV{PAR_TEMP}")); if (defined $ENV{PAR_TEMP}) { # should be set at this point! foreach my $member ( $zip->members ) { next if $member->isDirectory; my $member_name = $member->fileName; next unless $member_name =~ m{ ^ /?shlib/ (?:$Config::Config{version}/)? (?:$Config::Config{archname}/)? ([^/]+) $ }x; my $extract_name = $1; my $dest_name = File::Spec->catfile($ENV{PAR_TEMP}, $extract_name); if (-f $dest_name && -s _ == $member->uncompressedSize()) { outs(qq(Skipping "$member_name" since it already exists at "$dest_name")); } else { $member->extractToFileNamed($dest_name); outs(qq(Extracting "$member_name" to "$dest_name")); } } } # }}} } # }}} # If there's no main.pl to run, show usage {{{ unless ($PAR::LibCache{$progname}) { die << "." unless @ARGV; Usage: $0 [ -Alib.par ] [ -Idir ] [ -Mmodule ] [ src.par ] [ program.pl ] $0 [ -B|-b ] [-Ooutfile] src.par . $ENV{PAR_PROGNAME} = $progname = $0 = shift(@ARGV); } # }}} sub CreatePath { my ($name) = @_; require File::Basename; my ($basename, $path, $ext) = File::Basename::fileparse($name, ('\..*')); require File::Path; File::Path::mkpath($path) unless(-e $path); # mkpath dies with error } sub require_modules { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; require lib; require DynaLoader; require integer; require strict; require warnings; require vars; require Carp; require Carp::Heavy; require Exporter::Heavy; require Exporter; require Fcntl; require File::Temp; require File::Spec; require XSLoader; require Config; require IO::Handle; require IO::File; require Compress::Zlib; require Archive::Zip; require PAR; require PAR::Heavy; require PAR::Dist; require PAR::Filter::PodStrip; eval { require Cwd }; eval { require Win32 }; eval { require Win32::Process }; eval { require Scalar::Util }; eval { require Archive::Unzip::Burst }; } # The C version of this code appears in myldr/mktmpdir.c sub _set_par_temp { if ($ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/) { $par_temp = $1; return; } foreach my $path ( (map $ENV{$_}, qw( PAR_TMPDIR TMPDIR TEMPDIR TEMP TMP )), qw( C:\\TEMP /tmp . ) ) { next unless $path and -d $path and -w $path; my $username; my $pwuid; # does not work everywhere: eval {($pwuid) = getpwuid($>) if defined $>;}; if ( defined(&Win32::LoginName) ) { $username = &Win32::LoginName; } elsif (defined $pwuid) { $username = $pwuid; } else { $username = $ENV{USERNAME} || $ENV{USER} || 'SYSTEM'; } $username =~ s/\W/_/g; my $stmpdir = "$path$Config{_delim}par-$username"; mkdir $stmpdir, 0755; if (!$ENV{PAR_CLEAN} and my $mtime = (stat($progname))[9]) { open (my $fh, "<". $progname); seek $fh, -18, 2; sysread $fh, my $buf, 6; if ($buf eq "\0CACHE") { seek $fh, -58, 2; sysread $fh, $buf, 41; $buf =~ s/\0//g; $stmpdir .= "$Config{_delim}cache-" . $buf; } else { my $ctx = eval { require Digest::SHA; Digest::SHA->new(1) } || eval { require Digest::SHA1; Digest::SHA1->new } || eval { require Digest::MD5; Digest::MD5->new }; # Workaround for bug in Digest::SHA 5.38 and 5.39 my $sha_version = eval { $Digest::SHA::VERSION } || 0; if ($sha_version eq '5.38' or $sha_version eq '5.39') { $ctx->addfile($progname, "b") if ($ctx); } else { if ($ctx and open(my $fh, "<$progname")) { binmode($fh); $ctx->addfile($fh); close($fh); } } $stmpdir .= "$Config{_delim}cache-" . ( $ctx ? $ctx->hexdigest : $mtime ); } close($fh); } else { $ENV{PAR_CLEAN} = 1; $stmpdir .= "$Config{_delim}temp-$$"; } $ENV{PAR_TEMP} = $stmpdir; mkdir $stmpdir, 0755; last; } $par_temp = $1 if $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/; } sub _tempfile { my ($ext, $crc) = @_; my ($fh, $filename); $filename = "$par_temp/$crc$ext"; if ($ENV{PAR_CLEAN}) { unlink $filename if -e $filename; push @tmpfile, $filename; } else { return (undef, $filename) if (-r $filename); } open $fh, '>', $filename or die $!; binmode($fh); return($fh, $filename); } sub _set_progname { if ($ENV{PAR_PROGNAME} and $ENV{PAR_PROGNAME} =~ /(.+)/) { $progname = $1; } $progname ||= $0; if ($ENV{PAR_TEMP} and index($progname, $ENV{PAR_TEMP}) >= 0) { $progname = substr($progname, rindex($progname, $Config{_delim}) + 1); } if (!$ENV{PAR_PROGNAME} or index($progname, $Config{_delim}) >= 0) { if (open my $fh, '<', $progname) { return if -s $fh; } if (-s "$progname$Config{_exe}") { $progname .= $Config{_exe}; return; } } foreach my $dir (split /\Q$Config{path_sep}\E/, $ENV{PATH}) { next if exists $ENV{PAR_TEMP} and $dir eq $ENV{PAR_TEMP}; $dir =~ s/\Q$Config{_delim}\E$//; (($progname = "$dir$Config{_delim}$progname$Config{_exe}"), last) if -s "$dir$Config{_delim}$progname$Config{_exe}"; (($progname = "$dir$Config{_delim}$progname"), last) if -s "$dir$Config{_delim}$progname"; } } sub _fix_progname { $0 = $progname ||= $ENV{PAR_PROGNAME}; if (index($progname, $Config{_delim}) < 0) { $progname = ".$Config{_delim}$progname"; } # XXX - hack to make PWD work my $pwd = (defined &Cwd::getcwd) ? Cwd::getcwd() : ((defined &Win32::GetCwd) ? Win32::GetCwd() : `pwd`); chomp($pwd); $progname =~ s/^(?=\.\.?\Q$Config{_delim}\E)/$pwd$Config{_delim}/; $ENV{PAR_PROGNAME} = $progname; } sub _par_init_env { if ( $ENV{PAR_INITIALIZED}++ == 1 ) { return; } else { $ENV{PAR_INITIALIZED} = 2; } for (qw( SPAWNED TEMP CLEAN DEBUG CACHE PROGNAME ARGC ARGV_0 ) ) { delete $ENV{'PAR_'.$_}; } for (qw/ TMPDIR TEMP CLEAN DEBUG /) { $ENV{'PAR_'.$_} = $ENV{'PAR_GLOBAL_'.$_} if exists $ENV{'PAR_GLOBAL_'.$_}; } my $par_clean = "__ENV_PAR_CLEAN__ "; if ($ENV{PAR_TEMP}) { delete $ENV{PAR_CLEAN}; } elsif (!exists $ENV{PAR_GLOBAL_CLEAN}) { my $value = substr($par_clean, 12 + length("CLEAN")); $ENV{PAR_CLEAN} = $1 if $value =~ /^PAR_CLEAN=(\S+)/; } } sub outs { return if $quiet; if ($logfh) { print $logfh "@_\n"; } else { print "@_\n"; } } sub init_inc { require Config; push @INC, grep defined, map $Config::Config{$_}, qw( archlibexp privlibexp sitearchexp sitelibexp vendorarchexp vendorlibexp ); } ######################################################################## # The main package for script execution package main; require PAR; unshift @INC, \&PAR::find_par; PAR->import(@par_args); die qq(par.pl: Can't open perl script "$progname": No such file or directory\n) unless -e $progname; do $progname; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; }; $::__ERROR = $@ if $@; } CORE::exit($1) if ($::__ERROR =~/^_TK_EXIT_\((\d+)\)/); die $::__ERROR if $::__ERROR; 1; #line 1021 __END__ Usage: DynaLoader::dl_undef_symbols()%s object version %s does not match %s%s%s%s %_Usage: DynaLoader::dl_install_xsub(perl_name, symref, filename="$Package")Usage: DynaLoader::dl_find_symbol(libhandle, symbolname)Usage: DynaLoader::dl_unload_file(libref)Usage: DynaLoader::dl_load_file(filename, flags=0)XS_VERSION%s::%sbootstrap parameter$::DynaLoader.cDynaLoader::dl_load_fileDynaLoader::dl_unload_fileDynaLoader::dl_find_symbolDynaLoader::dl_undef_symbolsDynaLoader::dl_install_xsubDynaLoader::dl_errorDynaLoader::_guts1.04PERL_DL_NONLAZYUsage: DynaLoader::dl_error()DynaLoader;P)AlB+CD;D F4.G\PH[HKpKL$NLOt&vvwy{<V|l} 4\l  <,d,̝<TlzRx $/@9 $D/@ $l0@ $1@  $1@ $4@f $ 4@" $46@  $\6@ $8@Q $49@U $:@ $z<@d $$<@ ' $Lc@z $tdd@X $e@ $ug@W ,h@N  $j@? $DYk@" $l{s@ $ku@x $u@ $jw@O , w@ $<|@u $dI}@ zRx pK,4E P$dȏ 0$U 04.  $) 0$; 0$< 0d|, &@pA (@ @@@o@P@@  `0 p@@ o@oo@`(@(@(@(@)@)@.)@>)@N)@^)@n)@~)@)@)@)@)@)@)@)@)@*@*@.*@>*@N*@^*@n*@~*@*@*@*@*@*@*@*@*@+@+@.+@>+@N+@^+@n+@~+@+@+@+@+@+@+@+@+@,@,@.,@>,@N,@^,@n,@~,@,@,@,@,@,@,@,@,@-@-@.-@>-@N-@^-@n-@~-@-@-@-@-@-@-@-@-@.@.@..@>.@N.@^.@n.@~.@.@.@.@.@.@.@`@@@[GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 20071123 (prerelease) (Ubuntu 4.2.2-3ubuntu4)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7).shstrtab.interp.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss.comment @@ %@@@L!o@p+ @P 3P@P;o@Ho@W@ap@p0  k(@(f(@(0q.@.]w@}@a @T@|`````8`(`@``P P^%s: creation of %s failed - aborting with %i. %s: creation of private temporary subdirectory %s failed - aborting with %i. %iPAR_ARGV_%i;P@ `HpSuj8` ""#(%P'xE'(011@#3h9(99zRx $H*@ $D8+@  $lX+@ $-@f $K.@" $m/@  $ x/@ $42@Q $\b2@U $3@ $5@d $ 6@ ' $]@z $$]@X $L^@ $t`@W $a@C $=b@? $|c@ $k@e $<zl@x $dl@) $n@ zRx h4,4`4 &@d4/9z '@ t@@@o@@ @ k Bup#@(#@H o"@oot!@0@u.'@>'@N'@^'@n'@~'@'@'@'@'@'@'@'@'@(@(@.(@>(@N(@^(@n(@~(@(@(@(@(@(@(@(@(@)@)@.)@>)@N)@^)@n)@~)@ @u@u@Bu@v@0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u0u 4T@0u0uGCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)GCC: (GNU) 4.2.3 (Ubuntu 4.2.3-2ubuntu7).shstrtab.interp.note.ABI-tag.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss.comment @@ %@@@!o@+  @ 3@k;ot!@t!THo"@"`W(#@(#Hap#@p# k'@'f'@'pq)@)dKwt@t} u@ u :U:;U;,@u@@u@(@u(@0@u0@BuBBuBH`Cu`C@Eu(E@ (EPxF5FILEbd24a2d5/Config_heavy.pl~h# This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. package Config; use strict; # use warnings; Pulls in Carp # use vars pulls in Carp ## ## This file was produced by running the Configure script. It holds all the ## definitions figured out by Configure. Should you modify one of these values, ## do not forget to propagate your changes by running "Configure -der". You may ## instead choose to run each of the .SH files by yourself, or "Configure -S". ## # ## Package name : perl5 ## Source directory : . ## Configuration time: Wed Jan 14 22:49:45 UTC 2009 ## Configured by : Debian Project ## Target system : linux yellow 2.6.24-16-server #1 smp thu apr 10 13:15:38 utc 2008 x86_64 gnulinux # ## Configure command line arguments. #PERL_PATCHLEVEL= our $summary = <<'!END!'; Summary of my $package (revision $revision $version_patchlevel_string) configuration: Platform: osname=$osname, osvers=$osvers, archname=$archname uname='$myuname' config_args='$config_args' hint=$hint, useposix=$useposix, d_sigaction=$d_sigaction usethreads=$usethreads use5005threads=$use5005threads useithreads=$useithreads usemultiplicity=$usemultiplicity useperlio=$useperlio d_sfio=$d_sfio uselargefiles=$uselargefiles usesocks=$usesocks use64bitint=$use64bitint use64bitall=$use64bitall uselongdouble=$uselongdouble usemymalloc=$usemymalloc, bincompat5005=undef Compiler: cc='$cc', ccflags ='$ccflags', optimize='$optimize', cppflags='$cppflags' ccversion='$ccversion', gccversion='$gccversion', gccosandvers='$gccosandvers' intsize=$intsize, longsize=$longsize, ptrsize=$ptrsize, doublesize=$doublesize, byteorder=$byteorder d_longlong=$d_longlong, longlongsize=$longlongsize, d_longdbl=$d_longdbl, longdblsize=$longdblsize ivtype='$ivtype', ivsize=$ivsize, nvtype='$nvtype', nvsize=$nvsize, Off_t='$lseektype', lseeksize=$lseeksize alignbytes=$alignbytes, prototype=$prototype Linker and Libraries: ld='$ld', ldflags ='$ldflags' libpth=$libpth libs=$libs perllibs=$perllibs libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl gnulibc_version='$gnulibc_version' Dynamic Linking: dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' cccdlflags='$cccdlflags', lddlflags='$lddlflags' !END! my $summary_expanded; sub myconfig { return $summary_expanded if $summary_expanded; ($summary_expanded = $summary) =~ s{\$(\w+)} { my $c = $Config::Config{$1}; defined($c) ? $c : 'undef' }ge; $summary_expanded; } local *_ = \my $a; $_ = <<'!END!'; Author='' CONFIG='true' Date='$Date' Header='' Id='$Id' Locker='' Log='$Log' Mcc='Mcc' PATCHLEVEL='8' PERL_API_REVISION='5' PERL_API_SUBVERSION='0' PERL_API_VERSION='8' PERL_CONFIG_SH='true' PERL_REVISION='5' PERL_SUBVERSION='8' PERL_VERSION='8' RCSfile='$RCSfile' Revision='$Revision' SUBVERSION='8' Source='' State='' _a='.a' _exe='' _o='.o' afs='false' afsroot='/afs' alignbytes='8' ansi2knr='' aphostname='/bin/hostname' api_revision='5' api_subversion='0' api_version='8' api_versionstring='5.8.0' ar='ar' archlib='/usr/lib/perl/5.8' archlibexp='/usr/lib/perl/5.8' archname64='' archname='x86_64-linux-gnu-thread-multi' archobjs='' asctime_r_proto='REENTRANT_PROTO_B_SB' awk='awk' baserev='5.0' bash='' bin='/usr/bin' binexp='/usr/bin' bison='bison' byacc='byacc' byteorder='12345678' c='' castflags='0' cat='cat' cc='cc' cccdlflags='-fPIC' ccdlflags='-Wl,-E' ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='gcc' ccsymbols='' ccversion='' cf_by='Debian Project' cf_email='perl@packages.debian.org' cf_time='Wed Jan 14 22:49:45 UTC 2009' charsize='1' chgrp='' chmod='chmod' chown='' clocktype='clock_t' comm='comm' compress='' config_arg0='Configure' config_arg10='-Dvendorlib=/usr/share/perl5' config_arg11='-Dvendorarch=/usr/lib/perl5' config_arg12='-Dsiteprefix=/usr/local' config_arg13='-Dsitelib=/usr/local/share/perl/5.8.8' config_arg14='-Dsitearch=/usr/local/lib/perl/5.8.8' config_arg15='-Dman1dir=/usr/share/man/man1' config_arg16='-Dman3dir=/usr/share/man/man3' config_arg17='-Dsiteman1dir=/usr/local/man/man1' config_arg18='-Dsiteman3dir=/usr/local/man/man3' config_arg19='-Dman1ext=1' config_arg1='-Dusethreads' config_arg20='-Dman3ext=3perl' config_arg21='-Dpager=/usr/bin/sensible-pager' config_arg22='-Uafs' config_arg23='-Ud_csh' config_arg24='-Ud_ualarm' config_arg25='-Uusesfio' config_arg26='-Uusenm' config_arg27='-Duseshrplib' config_arg28='-Dlibperl=libperl.so.5.8.8' config_arg29='-Dd_dosuid' config_arg2='-Duselargefiles' config_arg30='-des' config_arg3='-Dccflags=-DDEBIAN' config_arg4='-Dcccdlflags=-fPIC' config_arg5='-Darchname=x86_64-linux-gnu' config_arg6='-Dprefix=/usr' config_arg7='-Dprivlib=/usr/share/perl/5.8' config_arg8='-Darchlib=/usr/lib/perl/5.8' config_arg9='-Dvendorprefix=/usr' config_argc='30' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8 -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des' contains='grep' cp='cp' cpio='' cpp='cpp' cpp_stuff='42' cppccsymbols='' cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include' cpplast='-' cppminus='-' cpprun='cc -E' cppstdin='cc -E' cppsymbols='__ELF__=1 _FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=7 __GNUC__=4 __GNUC_MINOR__=2 __GNU_LIBRARY__=6 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _LP64=1 __LP64__=1 _POSIX_C_SOURCE=200112L _POSIX_SOURCE=1 _REENTRANT=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE=1 __USE_LARGEFILE64=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_REENTRANT=1 __USE_SVID=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 _XOPEN_SOURCE=600 _XOPEN_SOURCE_EXTENDED=1 __amd64=1 __amd64__=1 linux=1 __linux=1 __linux__=1 unix=1 __unix=1 __unix__=1 __x86_64=1 __x86_64__=1' crypt_r_proto='REENTRANT_PROTO_B_CCS' cryptlib='' csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' d_Gconvert='gcvt((x),(n),(b))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' d_PRIXU64='define' d_PRId64='define' d_PRIeldbl='define' d_PRIfldbl='define' d_PRIgldbl='define' d_PRIi64='define' d_PRIo64='define' d_PRIu64='define' d_PRIx64='define' d_SCNfldbl='define' d__fwalk='undef' d_access='define' d_accessx='undef' d_aintl='undef' d_alarm='define' d_archlib='define' d_asctime_r='define' d_atolf='undef' d_atoll='define' d_attribute_format='define' d_attribute_malloc='define' d_attribute_nonnull='define' d_attribute_noreturn='define' d_attribute_pure='define' d_attribute_unused='define' d_attribute_warn_unused_result='define' d_bcmp='define' d_bcopy='define' d_bsd='undef' d_bsdgetpgrp='undef' d_bsdsetpgrp='undef' d_bzero='define' d_casti32='undef' d_castneg='define' d_charvspr='define' d_chown='define' d_chroot='define' d_chsize='undef' d_class='undef' d_clearenv='define' d_closedir='define' d_cmsghdr_s='define' d_const='define' d_copysignl='define' d_crypt='define' d_crypt_r='define' d_csh='undef' d_ctermid_r='undef' d_ctime_r='define' d_cuserid='define' d_dbl_dig='define' d_dbminitproto='define' d_difftime='define' d_dirfd='define' d_dirnamlen='undef' d_dlerror='define' d_dlopen='define' d_dlsymun='undef' d_dosuid='define' d_drand48_r='define' d_drand48proto='define' d_dup2='define' d_eaccess='define' d_endgrent='define' d_endgrent_r='undef' d_endhent='define' d_endhostent_r='undef' d_endnent='define' d_endnetent_r='undef' d_endpent='define' d_endprotoent_r='undef' d_endpwent='define' d_endpwent_r='undef' d_endsent='define' d_endservent_r='undef' d_eofnblk='define' d_eunice='undef' d_faststdio='undef' d_fchdir='define' d_fchmod='define' d_fchown='define' d_fcntl='define' d_fcntl_can_lock='define' d_fd_macros='define' d_fd_set='define' d_fds_bits='define' d_fgetpos='define' d_finite='define' d_finitel='define' d_flexfnam='define' d_flock='define' d_flockproto='define' d_fork='define' d_fp_class='undef' d_fpathconf='define' d_fpclass='undef' d_fpclassify='undef' d_fpclassl='undef' d_fpos64_t='undef' d_frexpl='define' d_fs_data_s='undef' d_fseeko='define' d_fsetpos='define' d_fstatfs='define' d_fstatvfs='define' d_fsync='define' d_ftello='define' d_ftime='undef' d_futimes='define' d_getcwd='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' d_getgrent_r='define' d_getgrgid_r='define' d_getgrnam_r='define' d_getgrps='define' d_gethbyaddr='define' d_gethbyname='define' d_gethent='define' d_gethname='define' d_gethostbyaddr_r='define' d_gethostbyname_r='define' d_gethostent_r='define' d_gethostprotos='define' d_getitimer='define' d_getlogin='define' d_getlogin_r='define' d_getmnt='undef' d_getmntent='define' d_getnbyaddr='define' d_getnbyname='define' d_getnent='define' d_getnetbyaddr_r='define' d_getnetbyname_r='define' d_getnetent_r='define' d_getnetprotos='define' d_getpagsz='define' d_getpbyname='define' d_getpbynumber='define' d_getpent='define' d_getpgid='define' d_getpgrp2='undef' d_getpgrp='define' d_getppid='define' d_getprior='define' d_getprotobyname_r='define' d_getprotobynumber_r='define' d_getprotoent_r='define' d_getprotoprotos='define' d_getprpwnam='undef' d_getpwent='define' d_getpwent_r='define' d_getpwnam_r='define' d_getpwuid_r='define' d_getsbyname='define' d_getsbyport='define' d_getsent='define' d_getservbyname_r='define' d_getservbyport_r='define' d_getservent_r='define' d_getservprotos='define' d_getspnam='define' d_getspnam_r='define' d_gettimeod='define' d_gmtime_r='define' d_gnulibc='define' d_grpasswd='define' d_hasmntopt='define' d_htonl='define' d_ilogbl='define' d_index='undef' d_inetaton='define' d_int64_t='define' d_isascii='define' d_isfinite='undef' d_isinf='define' d_isnan='define' d_isnanl='define' d_killpg='define' d_lchown='define' d_ldbl_dig='define' d_libm_lib_version='define' d_link='define' d_localtime_r='define' d_locconv='define' d_lockf='define' d_longdbl='define' d_longlong='define' d_lseekproto='define' d_lstat='define' d_madvise='define' d_malloc_good_size='undef' d_malloc_size='undef' d_mblen='define' d_mbstowcs='define' d_mbtowc='define' d_memchr='define' d_memcmp='define' d_memcpy='define' d_memmove='define' d_memset='define' d_mkdir='define' d_mkdtemp='define' d_mkfifo='define' d_mkstemp='define' d_mkstemps='undef' d_mktime='define' d_mmap='define' d_modfl='define' d_modfl_pow32_bug='undef' d_modflproto='define' d_mprotect='define' d_msg='define' d_msg_ctrunc='define' d_msg_dontroute='define' d_msg_oob='define' d_msg_peek='define' d_msg_proxy='define' d_msgctl='define' d_msgget='define' d_msghdr_s='define' d_msgrcv='define' d_msgsnd='define' d_msync='define' d_munmap='define' d_mymalloc='undef' d_nice='define' d_nl_langinfo='define' d_nv_preserves_uv='undef' d_nv_zero_is_allbits_zero='define' d_off64_t='define' d_old_pthread_create_joinable='undef' d_oldpthreads='undef' d_oldsock='undef' d_open3='define' d_pathconf='define' d_pause='define' d_perl_otherlibdirs='undef' d_phostname='undef' d_pipe='define' d_poll='define' d_portable='define' d_procselfexe='define' d_pthread_atfork='define' d_pthread_attr_setscope='define' d_pthread_yield='define' d_pwage='undef' d_pwchange='undef' d_pwclass='undef' d_pwcomment='undef' d_pwexpire='undef' d_pwgecos='define' d_pwpasswd='define' d_pwquota='undef' d_qgcvt='define' d_quad='define' d_random_r='define' d_readdir64_r='define' d_readdir='define' d_readdir_r='define' d_readlink='define' d_readv='define' d_recvmsg='define' d_rename='define' d_rewinddir='define' d_rmdir='define' d_safebcpy='undef' d_safemcpy='undef' d_sanemcmp='define' d_sbrkproto='define' d_scalbnl='define' d_sched_yield='define' d_scm_rights='define' d_seekdir='define' d_select='define' d_sem='define' d_semctl='define' d_semctl_semid_ds='define' d_semctl_semun='define' d_semget='define' d_semop='define' d_sendmsg='define' d_setegid='define' d_seteuid='define' d_setgrent='define' d_setgrent_r='undef' d_setgrps='define' d_sethent='define' d_sethostent_r='undef' d_setitimer='define' d_setlinebuf='define' d_setlocale='define' d_setlocale_r='undef' d_setnent='define' d_setnetent_r='undef' d_setpent='define' d_setpgid='define' d_setpgrp2='undef' d_setpgrp='define' d_setprior='define' d_setproctitle='undef' d_setprotoent_r='undef' d_setpwent='define' d_setpwent_r='undef' d_setregid='define' d_setresgid='define' d_setresuid='define' d_setreuid='define' d_setrgid='undef' d_setruid='undef' d_setsent='define' d_setservent_r='undef' d_setsid='define' d_setvbuf='define' d_sfio='undef' d_shm='define' d_shmat='define' d_shmatprototype='define' d_shmctl='define' d_shmdt='define' d_shmget='define' d_sigaction='define' d_sigprocmask='define' d_sigsetjmp='define' d_sockatmark='define' d_sockatmarkproto='define' d_socket='define' d_socklen_t='define' d_sockpair='define' d_socks5_init='undef' d_sprintf_returns_strlen='define' d_sqrtl='define' d_srand48_r='define' d_srandom_r='define' d_sresgproto='define' d_sresuproto='define' d_statblks='define' d_statfs_f_flags='undef' d_statfs_s='define' d_statvfs='define' d_stdio_cnt_lval='undef' d_stdio_ptr_lval='undef' d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_ptr_lval_sets_cnt='undef' d_stdio_stream_array='undef' d_stdiobase='undef' d_stdstdio='undef' d_strchr='define' d_strcoll='define' d_strctcpy='define' d_strerrm='strerror(e)' d_strerror='define' d_strerror_r='define' d_strftime='define' d_strlcat='undef' d_strlcpy='undef' d_strtod='define' d_strtol='define' d_strtold='define' d_strtoll='define' d_strtoq='define' d_strtoul='define' d_strtoull='define' d_strtouq='define' d_strxfrm='define' d_suidsafe='undef' d_symlink='define' d_syscall='define' d_syscallproto='define' d_sysconf='define' d_sysernlst='' d_syserrlst='define' d_system='define' d_tcgetpgrp='define' d_tcsetpgrp='define' d_telldir='define' d_telldirproto='define' d_time='define' d_times='define' d_tm_tm_gmtoff='define' d_tm_tm_zone='define' d_tmpnam_r='define' d_truncate='define' d_ttyname_r='define' d_tzname='define' d_u32align='define' d_ualarm='undef' d_umask='define' d_uname='define' d_union_semun='undef' d_unordered='undef' d_unsetenv='define' d_usleep='define' d_usleepproto='define' d_ustat='define' d_vendorarch='define' d_vendorbin='define' d_vendorlib='define' d_vendorscript='define' d_vfork='undef' d_void_closedir='undef' d_voidsig='define' d_voidtty='' d_volatile='define' d_vprintf='define' d_wait4='define' d_waitpid='define' d_wcstombs='define' d_wctomb='define' d_writev='define' d_xenix='undef' date='date' db_hashtype='u_int32_t' db_prefixtype='size_t' db_version_major='4' db_version_minor='6' db_version_patch='21' defvoidused='15' direntrytype='struct dirent' dlext='so' dlsrc='dl_dlopen.xs' doublesize='8' drand01='drand48()' drand48_r_proto='REENTRANT_PROTO_I_ST' dynamic_ext='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared' eagain='EAGAIN' ebcdic='undef' echo='echo' egrep='egrep' emacs='' endgrent_r_proto='0' endhostent_r_proto='0' endnetent_r_proto='0' endprotoent_r_proto='0' endpwent_r_proto='0' endservent_r_proto='0' eunicefix=':' exe_ext='' expr='expr' extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared Errno' extras='' fflushNULL='define' fflushall='undef' find='' firstmakefile='makefile' flex='' fpossize='16' fpostype='fpos_t' freetype='void' from=':' full_ar='/usr/bin/ar' full_csh='csh' full_sed='/bin/sed' gccansipedantic='' gccosandvers='' gccversion='4.2.3 (Ubuntu 4.2.3-2ubuntu7)' getgrent_r_proto='REENTRANT_PROTO_I_SBWR' getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR' getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR' gethostbyaddr_r_proto='REENTRANT_PROTO_I_TsISBWRE' gethostbyname_r_proto='REENTRANT_PROTO_I_CSBWRE' gethostent_r_proto='REENTRANT_PROTO_I_SBWRE' getlogin_r_proto='REENTRANT_PROTO_I_BW' getnetbyaddr_r_proto='REENTRANT_PROTO_I_uISBWRE' getnetbyname_r_proto='REENTRANT_PROTO_I_CSBWRE' getnetent_r_proto='REENTRANT_PROTO_I_SBWRE' getprotobyname_r_proto='REENTRANT_PROTO_I_CSBWR' getprotobynumber_r_proto='REENTRANT_PROTO_I_ISBWR' getprotoent_r_proto='REENTRANT_PROTO_I_SBWR' getpwent_r_proto='REENTRANT_PROTO_I_SBWR' getpwnam_r_proto='REENTRANT_PROTO_I_CSBWR' getpwuid_r_proto='REENTRANT_PROTO_I_TSBWR' getservbyname_r_proto='REENTRANT_PROTO_I_CCSBWR' getservbyport_r_proto='REENTRANT_PROTO_I_ICSBWR' getservent_r_proto='REENTRANT_PROTO_I_SBWR' getspnam_r_proto='REENTRANT_PROTO_I_CSBWR' gidformat='"u"' gidsign='1' gidsize='4' gidtype='gid_t' glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib ' gmake='gmake' gmtime_r_proto='REENTRANT_PROTO_S_TS' gnulibc_version='2.7' grep='grep' groupcat='cat /etc/group' groupstype='gid_t' gzip='gzip' h_fcntl='false' h_sysfile='true' hint='recommended' hostcat='cat /etc/hosts' html1dir=' ' html1direxp='' html3dir=' ' html3direxp='' i16size='2' i16type='short' i32size='4' i32type='int' i64size='8' i64type='long' i8size='1' i8type='char' i_arpainet='define' i_bsdioctl='' i_crypt='define' i_db='define' i_dbm='define' i_dirent='define' i_dld='undef' i_dlfcn='define' i_fcntl='undef' i_float='define' i_fp='undef' i_fp_class='undef' i_gdbm='define' i_grp='define' i_ieeefp='undef' i_inttypes='define' i_langinfo='define' i_libutil='undef' i_limits='define' i_locale='define' i_machcthr='undef' i_malloc='define' i_math='define' i_memory='undef' i_mntent='define' i_ndbm='define' i_netdb='define' i_neterrno='undef' i_netinettcp='define' i_niin='define' i_poll='define' i_prot='undef' i_pthread='define' i_pwd='define' i_rpcsvcdbm='undef' i_sfio='undef' i_sgtty='undef' i_shadow='define' i_socks='undef' i_stdarg='define' i_stddef='define' i_stdlib='define' i_string='define' i_sunmath='undef' i_sysaccess='undef' i_sysdir='define' i_sysfile='define' i_sysfilio='undef' i_sysin='undef' i_sysioctl='define' i_syslog='define' i_sysmman='define' i_sysmode='undef' i_sysmount='define' i_sysndir='undef' i_sysparam='define' i_sysresrc='define' i_syssecrt='undef' i_sysselct='define' i_syssockio='undef' i_sysstat='define' i_sysstatfs='define' i_sysstatvfs='define' i_systime='define' i_systimek='undef' i_systimes='define' i_systypes='define' i_sysuio='define' i_sysun='define' i_sysutsname='define' i_sysvfs='define' i_syswait='define' i_termio='undef' i_termios='define' i_time='define' i_unistd='define' i_ustat='define' i_utime='define' i_values='define' i_varargs='undef' i_varhdr='stdarg.h' i_vfork='undef' ignore_versioned_solibs='y' inc_version_list='5.8.7 5.8.6 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0' inc_version_list_init='"5.8.7","5.8.6","5.8.4","5.8.3","5.8.2","5.8.1","5.8.0",0' incpath='' inews='' installarchlib='/usr/lib/perl/5.8' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' installman1dir='/usr/share/man/man1' installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' installprivlib='/usr/share/perl/5.8' installscript='/usr/bin' installsitearch='/usr/local/lib/perl/5.8.8' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' installsitelib='/usr/local/share/perl/5.8.8' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' installvendorarch='/usr/lib/perl5' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' installvendorlib='/usr/share/perl5' installvendorman1dir='/usr/share/man/man1' installvendorman3dir='/usr/share/man/man3' installvendorscript='/usr/bin' intsize='4' issymlink='/usr/bin/test -h' ivdformat='"ld"' ivsize='8' ivtype='long' known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared' ksh='' ld='cc' lddlflags='-shared -L/usr/local/lib' ldflags=' -L/usr/local/lib' ldflags_uselargefiles='' ldlibpthname='LD_LIBRARY_PATH' less='less' lib_ext='.a' libc='/lib/libc-2.7.so' libperl='libperl.so.5.8.8' libpth='/usr/local/lib /lib /usr/lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/libgdbm.so /usr/lib/libgdbm_compat.so /usr/lib/libdb.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libpthread.so /usr/lib/libc.so /usr/lib/libcrypt.so' libspath=' /usr/local/lib /lib /usr/lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt' libswanted_uselargefiles='' line='' lint='' lkflags='' ln='ln' lns='/bin/ln -s' localtime_r_proto='REENTRANT_PROTO_S_TS' locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' longdblsize='16' longlongsize='8' longsize='8' lp='' lpr='' ls='ls' lseeksize='8' lseektype='off_t' mail='' mailx='' make='make' make_set_make='#' mallocobj='' mallocsrc='' malloctype='void *' man1dir='/usr/share/man/man1' man1direxp='/usr/share/man/man1' man1ext='1p' man3dir='/usr/share/man/man3' man3direxp='/usr/share/man/man3' man3ext='3pm' mips_type='' mistrustnm='' mkdir='mkdir' mmaptype='void *' modetype='mode_t' more='more' multiarch='undef' mv='' myarchname='x86_64-linux' mydomain='' myhostname='localhost' myuname='linux yellow 2.6.24-16-server #1 smp thu apr 10 13:15:38 utc 2008 x86_64 gnulinux ' n='-n' need_va_copy='define' netdb_hlen_type='size_t' netdb_host_type='char *' netdb_name_type='const char *' netdb_net_type='in_addr_t' nm='nm' nm_opt='' nm_so_opt='--dynamic' nonxs_ext='Errno' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' nvGUformat='"G"' nv_preserves_uv_bits='53' nveformat='"e"' nvfformat='"f"' nvgformat='"g"' nvsize='8' nvtype='double' o_nonblock='O_NONBLOCK' obj_ext='.o' old_pthread_create_joinable='' optimize='-O2' orderlib='false' osname='linux' osvers='2.6.24-16-server' otherlibdirs=' ' package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' patchlevel='8' path_sep=':' perl5='/usr/bin/perl' perl='' perl_patchlevel='' perladmin='root@localhost' perllibs='-ldl -lm -lpthread -lc -lcrypt' perlpath='/usr/bin/perl' pg='pg' phostname='hostname' pidtype='pid_t' plibpth='' pmake='' pr='' prefix='/usr' prefixexp='/usr' privlib='/usr/share/perl/5.8' privlibexp='/usr/share/perl/5.8' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='8' quadkind='2' quadtype='long' randbits='48' randfunc='drand48' random_r_proto='REENTRANT_PROTO_I_St' randseedtype='long' ranlib=':' rd_nodata='-1' readdir64_r_proto='REENTRANT_PROTO_I_TSR' readdir_r_proto='REENTRANT_PROTO_I_TSR' revision='5' rm='rm' rmail='' run='' runnm='false' sPRIEUldbl='"LE"' sPRIFUldbl='"LF"' sPRIGUldbl='"LG"' sPRIXU64='"lX"' sPRId64='"ld"' sPRIeldbl='"Le"' sPRIfldbl='"Lf"' sPRIgldbl='"Lg"' sPRIi64='"li"' sPRIo64='"lo"' sPRIu64='"lu"' sPRIx64='"lx"' sSCNfldbl='"Lf"' sched_yield='sched_yield()' scriptdir='/usr/bin' scriptdirexp='/usr/bin' sed='sed' seedfunc='srand48' selectminbits='64' selecttype='fd_set *' sendmail='' setgrent_r_proto='0' sethostent_r_proto='0' setlocale_r_proto='0' setnetent_r_proto='0' setprotoent_r_proto='0' setpwent_r_proto='0' setservent_r_proto='0' sh='/bin/sh' shar='' sharpbang='#!' shmattype='void *' shortsize='2' shrpenv='' shsharp='true' sig_count='65' sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL UNUSED ' sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", "UNUSED", 0' sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 17 29 31 ' sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0' sig_size='69' signal_t='void' sitearch='/usr/local/lib/perl/5.8.8' sitearchexp='/usr/local/lib/perl/5.8.8' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' sitelib='/usr/local/share/perl/5.8.8' sitelib_stem='' sitelibexp='/usr/local/share/perl/5.8.8' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' siteman3direxp='/usr/local/man/man3' siteprefix='/usr/local' siteprefixexp='/usr/local' sitescript='/usr/local/bin' sitescriptexp='/usr/local/bin' sizesize='8' sizetype='size_t' sleep='' smail='' so='so' sockethdr='' socketlib='' socksizetype='socklen_t' sort='sort' spackage='Perl5' spitshell='cat' srand48_r_proto='REENTRANT_PROTO_I_LS' srandom_r_proto='REENTRANT_PROTO_I_TS' src='.' ssizetype='ssize_t' startperl='#!/usr/bin/perl' startsh='#!/bin/sh' static_ext=' ' stdchar='char' stdio_base='((fp)->_IO_read_base)' stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)' stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)' stdio_filbuf='' stdio_ptr='((fp)->_IO_read_ptr)' stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' strings='/usr/include/string.h' submit='' subversion='8' sysman='/usr/share/man/man1' tail='' tar='' targetarch='' tbl='' tee='' test='test' timeincl='/usr/include/sys/time.h /usr/include/time.h ' timetype='time_t' tmpnam_r_proto='REENTRANT_PROTO_B_B' to=':' touch='touch' tr='tr' trnl='\n' troff='' ttyname_r_proto='REENTRANT_PROTO_I_IBW' u16size='2' u16type='unsigned short' u32size='4' u32type='unsigned int' u64size='8' u64type='unsigned long' u8size='1' u8type='unsigned char' uidformat='"u"' uidsign='1' uidsize='4' uidtype='uid_t' uname='uname' uniq='uniq' uquadtype='unsigned long' use5005threads='undef' use64bitall='define' use64bitint='define' usecrosscompile='undef' usedl='define' usefaststdio='define' useithreads='define' uselargefiles='define' uselongdouble='undef' usemallocwrap='define' usemorebits='undef' usemultiplicity='define' usemymalloc='n' usenm='false' useopcode='true' useperlio='define' useposix='true' usereentrant='undef' usesfio='false' useshrplib='true' usesitecustomize='undef' usesocks='undef' usethreads='define' usevendorprefix='define' usevfork='false' usrinc='/usr/include' uuname='' uvXUformat='"lX"' uvoformat='"lo"' uvsize='8' uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' vendorarch='/usr/lib/perl5' vendorarchexp='/usr/lib/perl5' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' vendorhtml1direxp='' vendorhtml3dir=' ' vendorhtml3direxp='' vendorlib='/usr/share/perl5' vendorlib_stem='' vendorlibexp='/usr/share/perl5' vendorman1dir='/usr/share/man/man1' vendorman1direxp='/usr/share/man/man1' vendorman3dir='/usr/share/man/man3' vendorman3direxp='/usr/share/man/man3' vendorprefix='/usr' vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' version='5.8.8' version_patchlevel_string='version 8 subversion 8' versiononly='undef' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' yacc='yacc' yaccflags='' zcat='' zip='zip' !END! my $i = 0; foreach my $c (8,7,6,5,4,3,2) { $i |= ord($c); $i <<= 8 } $i |= ord(1); our $byteorder = join('', unpack('aaaaaaaa', pack('L!', $i))); s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m; my $config_sh_len = length $_; our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL'; ccflags_nolargefiles='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include ' ldflags_nolargefiles=' -L/usr/local/lib' libs_nolargefiles='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libswanted_nolargefiles='gdbm gdbm_compat db dl m pthread c crypt' EOVIRTUAL # Search for it in the big string sub fetch_string { my($self, $key) = @_; # We only have ' delimted. my $start = index($Config_SH_expanded, "\n$key=\'"); # Start can never be -1 now, as we've rigged the long string we're # searching with an initial dummy newline. return undef if $start == -1; $start += length($key) + 3; my $value = substr($Config_SH_expanded, $start, index($Config_SH_expanded, "'\n", $start) - $start); # So we can say "if $Config{'foo'}". $value = undef if $value eq 'undef'; $self->{$key} = $value; # cache it } my $prevpos = 0; sub FIRSTKEY { $prevpos = 0; substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 ); } sub NEXTKEY { my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2; my $len = index($Config_SH_expanded, "=", $pos) - $pos; $prevpos = $pos; $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef; } sub EXISTS { return 1 if exists($_[0]->{$_[1]}); return(index($Config_SH_expanded, "\n$_[1]='") != -1 ); } sub STORE { die "\%Config::Config is read-only\n" } *DELETE = \&STORE; *CLEAR = \&STORE; sub config_sh { substr $Config_SH_expanded, 1, $config_sh_len; } sub config_re { my $re = shift; return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/, $Config_SH_expanded; } sub config_vars { # implements -V:cfgvar option (see perlrun -V:) foreach (@_) { # find optional leading, trailing colons; and query-spec my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft, # map colon-flags to print decorations my $prfx = $notag ? '': "$qry="; # tag-prefix for print my $lnend = $lncont ? ' ' : ";\n"; # line ending for print # all config-vars are by definition \w only, any \W means regex if ($qry =~ /\W/) { my @matches = config_re($qry); print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag; print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag; } else { my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry} : 'UNKNOWN'; $v = 'undef' unless defined $v; print "${prfx}'${v}'$lnend"; } } } # Called by the real AUTOLOAD sub launcher { undef &AUTOLOAD; goto \&$Config::AUTOLOAD; } 1; FILEeaed4082/Config.pm :#line 1 "/usr/lib/perl/5.8/Config.pm" # This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. package Config; use strict; # use warnings; Pulls in Carp # use vars pulls in Carp @Config::EXPORT = qw(%Config); @Config::EXPORT_OK = qw(myconfig config_sh config_vars config_re); # Need to stub all the functions to make code such as print Config::config_sh # keep working sub myconfig; sub config_sh; sub config_vars; sub config_re; my %Export_Cache = map {($_ => 1)} (@Config::EXPORT, @Config::EXPORT_OK); our %Config; # Define our own import method to avoid pulling in the full Exporter: sub import { my $pkg = shift; @_ = @Config::EXPORT unless @_; my @funcs = grep $_ ne '%Config', @_; my $export_Config = @funcs < @_ ? 1 : 0; no strict 'refs'; my $callpkg = caller(0); foreach my $func (@funcs) { die sprintf qq{"%s" is not exported by the %s module\n}, $func, __PACKAGE__ unless $Export_Cache{$func}; *{$callpkg.'::'.$func} = \&{$func}; } *{"$callpkg\::Config"} = \%Config if $export_Config; return; } die "Perl lib version (v5.8.8) doesn't match executable version ($])" unless $^V; $^V eq v5.8.8 or die "Perl lib version (v5.8.8) doesn't match executable version (" . sprintf("v%vd",$^V) . ")"; sub FETCH { my($self, $key) = @_; # check for cached value (which may be undef so we use exists not defined) return $self->{$key} if exists $self->{$key}; return $self->fetch_string($key); } sub TIEHASH { bless $_[1], $_[0]; } sub DESTROY { } sub AUTOLOAD { require 'Config_heavy.pl'; goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/; die "&Config::AUTOLOAD failed on $Config::AUTOLOAD"; } # tie returns the object, so the value returned to require will be true. tie %Config, 'Config', { archlibexp => '/usr/lib/perl/5.8', archname => 'x86_64-linux-gnu-thread-multi', cc => 'cc', d_readlink => 'define', d_symlink => 'define', dlsrc => 'dl_dlopen.xs', dont_use_nlink => undef, exe_ext => '', inc_version_list => '5.8.7 5.8.6 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0', intsize => '4', ldlibpthname => 'LD_LIBRARY_PATH', libpth => '/usr/local/lib /lib /usr/lib', osname => 'linux', osvers => '2.6.24-16-server', path_sep => ':', privlibexp => '/usr/share/perl/5.8', scriptdir => '/usr/bin', sitearchexp => '/usr/local/lib/perl/5.8.8', sitelibexp => '/usr/local/share/perl/5.8.8', useithreads => 'define', usevendorprefix => 'define', version => '5.8.8', }; FILE%7b4a836d/Archive/Zip/NewFileMember.pm#line 1 "/usr/local/share/perl/5.8.8/Archive/Zip/NewFileMember.pm" package Archive::Zip::NewFileMember; use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.26'; @ISA = qw ( Archive::Zip::FileMember ); } use Archive::Zip qw( :CONSTANTS :ERROR_CODES :UTILITY_METHODS ); # Given a file name, set up for eventual writing. sub _newFromFileNamed { my $class = shift; my $fileName = shift; # local FS format my $newName = shift; $newName = _asZipDirName($fileName) unless defined($newName); return undef unless ( stat($fileName) && -r _ && !-d _ ); my $self = $class->new(@_); $self->fileName($newName); $self->{'externalFileName'} = $fileName; $self->{'compressionMethod'} = COMPRESSION_STORED; my @stat = stat(_); $self->{'compressedSize'} = $self->{'uncompressedSize'} = $stat[7]; $self->desiredCompressionMethod( ( $self->compressedSize() > 0 ) ? COMPRESSION_DEFLATED : COMPRESSION_STORED ); $self->unixFileAttributes( $stat[2] ); $self->setLastModFileDateTimeFromUnix( $stat[9] ); $self->isTextFile( -T _ ); return $self; } sub rewindData { my $self = shift; my $status = $self->SUPER::rewindData(@_); return $status unless $status == AZ_OK; return AZ_IO_ERROR unless $self->fh(); $self->fh()->clearerr(); $self->fh()->seek( 0, IO::Seekable::SEEK_SET ) or return _ioError( "rewinding", $self->externalFileName() ); return AZ_OK; } # Return bytes read. Note that first parameter is a ref to a buffer. # my $data; # my ( $bytesRead, $status) = $self->readRawChunk( \$data, $chunkSize ); sub _readRawChunk { my ( $self, $dataRef, $chunkSize ) = @_; return ( 0, AZ_OK ) unless $chunkSize; my $bytesRead = $self->fh()->read( $$dataRef, $chunkSize ) or return ( 0, _ioError("reading data") ); return ( $bytesRead, AZ_OK ); } # If I already exist, extraction is a no-op. sub extractToFileNamed { my $self = shift; my $name = shift; # local FS name if ( File::Spec->rel2abs($name) eq File::Spec->rel2abs( $self->externalFileName() ) and -r $name ) { return AZ_OK; } else { return $self->SUPER::extractToFileNamed( $name, @_ ); } } 1; FILE$4da89903/Archive/Zip/StringMember.pm #line 1 "/usr/local/share/perl/5.8.8/Archive/Zip/StringMember.pm" package Archive::Zip::StringMember; use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.26'; @ISA = qw( Archive::Zip::Member ); } use Archive::Zip qw( :CONSTANTS :ERROR_CODES ); # Create a new string member. Default is COMPRESSION_STORED. # Can take a ref to a string as well. sub _newFromString { my $class = shift; my $string = shift; my $name = shift; my $self = $class->new(@_); $self->contents($string); $self->fileName($name) if defined($name); # Set the file date to now $self->setLastModFileDateTimeFromUnix( time() ); $self->unixFileAttributes( $self->DEFAULT_FILE_PERMISSIONS ); return $self; } sub _become { my $self = shift; my $newClass = shift; return $self if ref($self) eq $newClass; delete( $self->{'contents'} ); return $self->SUPER::_become($newClass); } # Get or set my contents. Note that we do not call the superclass # version of this, because it calls us. sub contents { my $self = shift; my $string = shift; if ( defined($string) ) { $self->{'contents'} = pack( 'C0a*', ( ref($string) eq 'SCALAR' ) ? $$string : $string ); $self->{'uncompressedSize'} = $self->{'compressedSize'} = length( $self->{'contents'} ); $self->{'compressionMethod'} = COMPRESSION_STORED; } return $self->{'contents'}; } # Return bytes read. Note that first parameter is a ref to a buffer. # my $data; # my ( $bytesRead, $status) = $self->readRawChunk( \$data, $chunkSize ); sub _readRawChunk { my ( $self, $dataRef, $chunkSize ) = @_; $$dataRef = substr( $self->contents(), $self->_readOffset(), $chunkSize ); return ( length($$dataRef), AZ_OK ); } 1; FILE%b083d5fc/Archive/Zip/ZipFileMember.pm5#line 1 "/usr/local/share/perl/5.8.8/Archive/Zip/ZipFileMember.pm" package Archive::Zip::ZipFileMember; use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.26'; @ISA = qw ( Archive::Zip::FileMember ); } use Archive::Zip qw( :CONSTANTS :ERROR_CODES :PKZIP_CONSTANTS :UTILITY_METHODS ); # Create a new Archive::Zip::ZipFileMember # given a filename and optional open file handle # sub _newFromZipFile { my $class = shift; my $fh = shift; my $externalFileName = shift; my $possibleEocdOffset = shift; # normally 0 my $self = $class->new( 'crc32' => 0, 'diskNumberStart' => 0, 'localHeaderRelativeOffset' => 0, 'dataOffset' => 0, # localHeaderRelativeOffset + header length @_ ); $self->{'externalFileName'} = $externalFileName; $self->{'fh'} = $fh; $self->{'possibleEocdOffset'} = $possibleEocdOffset; return $self; } sub isDirectory { my $self = shift; return ( substr( $self->fileName, -1, 1 ) eq '/' and $self->uncompressedSize == 0 ); } # Seek to the beginning of the local header, just past the signature. # Verify that the local header signature is in fact correct. # Update the localHeaderRelativeOffset if necessary by adding the possibleEocdOffset. # Returns status. sub _seekToLocalHeader { my $self = shift; my $where = shift; # optional my $previousWhere = shift; # optional $where = $self->localHeaderRelativeOffset() unless defined($where); # avoid loop on certain corrupt files (from Julian Field) return _formatError("corrupt zip file") if defined($previousWhere) && $where == $previousWhere; my $status; my $signature; $status = $self->fh()->seek( $where, IO::Seekable::SEEK_SET ); return _ioError("seeking to local header") unless $status; ( $status, $signature ) = _readSignature( $self->fh(), $self->externalFileName(), LOCAL_FILE_HEADER_SIGNATURE ); return $status if $status == AZ_IO_ERROR; # retry with EOCD offset if any was given. if ( $status == AZ_FORMAT_ERROR && $self->{'possibleEocdOffset'} ) { $status = $self->_seekToLocalHeader( $self->localHeaderRelativeOffset() + $self->{'possibleEocdOffset'}, $where ); if ( $status == AZ_OK ) { $self->{'localHeaderRelativeOffset'} += $self->{'possibleEocdOffset'}; $self->{'possibleEocdOffset'} = 0; } } return $status; } # Because I'm going to delete the file handle, read the local file # header if the file handle is seekable. If it isn't, I assume that # I've already read the local header. # Return ( $status, $self ) sub _become { my $self = shift; my $newClass = shift; return $self if ref($self) eq $newClass; my $status = AZ_OK; if ( _isSeekable( $self->fh() ) ) { my $here = $self->fh()->tell(); $status = $self->_seekToLocalHeader(); $status = $self->_readLocalFileHeader() if $status == AZ_OK; $self->fh()->seek( $here, IO::Seekable::SEEK_SET ); return $status unless $status == AZ_OK; } delete( $self->{'eocdCrc32'} ); delete( $self->{'diskNumberStart'} ); delete( $self->{'localHeaderRelativeOffset'} ); delete( $self->{'dataOffset'} ); return $self->SUPER::_become($newClass); } sub diskNumberStart { shift->{'diskNumberStart'}; } sub localHeaderRelativeOffset { shift->{'localHeaderRelativeOffset'}; } sub dataOffset { shift->{'dataOffset'}; } # Skip local file header, updating only extra field stuff. # Assumes that fh is positioned before signature. sub _skipLocalFileHeader { my $self = shift; my $header; my $bytesRead = $self->fh()->read( $header, LOCAL_FILE_HEADER_LENGTH ); if ( $bytesRead != LOCAL_FILE_HEADER_LENGTH ) { return _ioError("reading local file header"); } my $fileNameLength; my $extraFieldLength; my $bitFlag; ( undef, # $self->{'versionNeededToExtract'}, $bitFlag, undef, # $self->{'compressionMethod'}, undef, # $self->{'lastModFileDateTime'}, undef, # $crc32, undef, # $compressedSize, undef, # $uncompressedSize, $fileNameLength, $extraFieldLength ) = unpack( LOCAL_FILE_HEADER_FORMAT, $header ); if ($fileNameLength) { $self->fh()->seek( $fileNameLength, IO::Seekable::SEEK_CUR ) or return _ioError("skipping local file name"); } if ($extraFieldLength) { $bytesRead = $self->fh()->read( $self->{'localExtraField'}, $extraFieldLength ); if ( $bytesRead != $extraFieldLength ) { return _ioError("reading local extra field"); } } $self->{'dataOffset'} = $self->fh()->tell(); if ( $bitFlag & GPBF_HAS_DATA_DESCRIPTOR_MASK ) { # Read the crc32, compressedSize, and uncompressedSize from the # extended data descriptor, which directly follows the compressed data. # # Skip over the compressed file data (assumes that EOCD compressedSize # was correct) $self->fh()->seek( $self->{'compressedSize'}, IO::Seekable::SEEK_CUR ) or return _ioError("seeking to extended local header"); # these values should be set correctly from before. my $oldCrc32 = $self->{'eocdCrc32'}; my $oldCompressedSize = $self->{'compressedSize'}; my $oldUncompressedSize = $self->{'uncompressedSize'}; my $status = $self->_readDataDescriptor(); return $status unless $status == AZ_OK; return _formatError( "CRC or size mismatch while skipping data descriptor") if ( $oldCrc32 != $self->{'crc32'} || $oldUncompressedSize != $self->{'uncompressedSize'} ); } return AZ_OK; } # Read from a local file header into myself. Returns AZ_OK if successful. # Assumes that fh is positioned after signature. # Note that crc32, compressedSize, and uncompressedSize will be 0 if # GPBF_HAS_DATA_DESCRIPTOR_MASK is set in the bitFlag. sub _readLocalFileHeader { my $self = shift; my $header; my $bytesRead = $self->fh()->read( $header, LOCAL_FILE_HEADER_LENGTH ); if ( $bytesRead != LOCAL_FILE_HEADER_LENGTH ) { return _ioError("reading local file header"); } my $fileNameLength; my $crc32; my $compressedSize; my $uncompressedSize; my $extraFieldLength; ( $self->{'versionNeededToExtract'}, $self->{'bitFlag'}, $self->{'compressionMethod'}, $self->{'lastModFileDateTime'}, $crc32, $compressedSize, $uncompressedSize, $fileNameLength, $extraFieldLength ) = unpack( LOCAL_FILE_HEADER_FORMAT, $header ); if ($fileNameLength) { my $fileName; $bytesRead = $self->fh()->read( $fileName, $fileNameLength ); if ( $bytesRead != $fileNameLength ) { return _ioError("reading local file name"); } $self->fileName($fileName); } if ($extraFieldLength) { $bytesRead = $self->fh()->read( $self->{'localExtraField'}, $extraFieldLength ); if ( $bytesRead != $extraFieldLength ) { return _ioError("reading local extra field"); } } $self->{'dataOffset'} = $self->fh()->tell(); if ( $self->hasDataDescriptor() ) { # Read the crc32, compressedSize, and uncompressedSize from the # extended data descriptor. # Skip over the compressed file data (assumes that EOCD compressedSize # was correct) $self->fh()->seek( $self->{'compressedSize'}, IO::Seekable::SEEK_CUR ) or return _ioError("seeking to extended local header"); my $status = $self->_readDataDescriptor(); return $status unless $status == AZ_OK; } else { return _formatError( "CRC or size mismatch after reading data descriptor") if ( $self->{'crc32'} != $crc32 || $self->{'uncompressedSize'} != $uncompressedSize ); } return AZ_OK; } # This will read the data descriptor, which is after the end of compressed file # data in members that that have GPBF_HAS_DATA_DESCRIPTOR_MASK set in their # bitFlag. # The only reliable way to find these is to rely on the EOCD compressedSize. # Assumes that file is positioned immediately after the compressed data. # Returns status; sets crc32, compressedSize, and uncompressedSize. sub _readDataDescriptor { my $self = shift; my $signatureData; my $header; my $crc32; my $compressedSize; my $uncompressedSize; my $bytesRead = $self->fh()->read( $signatureData, SIGNATURE_LENGTH ); return _ioError("reading header signature") if $bytesRead != SIGNATURE_LENGTH; my $signature = unpack( SIGNATURE_FORMAT, $signatureData ); # unfortunately, the signature appears to be optional. if ( $signature == DATA_DESCRIPTOR_SIGNATURE && ( $signature != $self->{'crc32'} ) ) { $bytesRead = $self->fh()->read( $header, DATA_DESCRIPTOR_LENGTH ); return _ioError("reading data descriptor") if $bytesRead != DATA_DESCRIPTOR_LENGTH; ( $crc32, $compressedSize, $uncompressedSize ) = unpack( DATA_DESCRIPTOR_FORMAT, $header ); } else { $bytesRead = $self->fh()->read( $header, DATA_DESCRIPTOR_LENGTH_NO_SIG ); return _ioError("reading data descriptor") if $bytesRead != DATA_DESCRIPTOR_LENGTH_NO_SIG; $crc32 = $signature; ( $compressedSize, $uncompressedSize ) = unpack( DATA_DESCRIPTOR_FORMAT_NO_SIG, $header ); } $self->{'eocdCrc32'} = $self->{'crc32'} unless defined( $self->{'eocdCrc32'} ); $self->{'crc32'} = $crc32; $self->{'compressedSize'} = $compressedSize; $self->{'uncompressedSize'} = $uncompressedSize; return AZ_OK; } # Read a Central Directory header. Return AZ_OK on success. # Assumes that fh is positioned right after the signature. sub _readCentralDirectoryFileHeader { my $self = shift; my $fh = $self->fh(); my $header = ''; my $bytesRead = $fh->read( $header, CENTRAL_DIRECTORY_FILE_HEADER_LENGTH ); if ( $bytesRead != CENTRAL_DIRECTORY_FILE_HEADER_LENGTH ) { return _ioError("reading central dir header"); } my ( $fileNameLength, $extraFieldLength, $fileCommentLength ); ( $self->{'versionMadeBy'}, $self->{'fileAttributeFormat'}, $self->{'versionNeededToExtract'}, $self->{'bitFlag'}, $self->{'compressionMethod'}, $self->{'lastModFileDateTime'}, $self->{'crc32'}, $self->{'compressedSize'}, $self->{'uncompressedSize'}, $fileNameLength, $extraFieldLength, $fileCommentLength, $self->{'diskNumberStart'}, $self->{'internalFileAttributes'}, $self->{'externalFileAttributes'}, $self->{'localHeaderRelativeOffset'} ) = unpack( CENTRAL_DIRECTORY_FILE_HEADER_FORMAT, $header ); $self->{'eocdCrc32'} = $self->{'crc32'}; if ($fileNameLength) { $bytesRead = $fh->read( $self->{'fileName'}, $fileNameLength ); if ( $bytesRead != $fileNameLength ) { _ioError("reading central dir filename"); } } if ($extraFieldLength) { $bytesRead = $fh->read( $self->{'cdExtraField'}, $extraFieldLength ); if ( $bytesRead != $extraFieldLength ) { return _ioError("reading central dir extra field"); } } if ($fileCommentLength) { $bytesRead = $fh->read( $self->{'fileComment'}, $fileCommentLength ); if ( $bytesRead != $fileCommentLength ) { return _ioError("reading central dir file comment"); } } # NK 10/21/04: added to avoid problems with manipulated headers if ( $self->{'uncompressedSize'} != $self->{'compressedSize'} and $self->{'compressionMethod'} == COMPRESSION_STORED ) { $self->{'uncompressedSize'} = $self->{'compressedSize'}; } $self->desiredCompressionMethod( $self->compressionMethod() ); return AZ_OK; } sub rewindData { my $self = shift; my $status = $self->SUPER::rewindData(@_); return $status unless $status == AZ_OK; return AZ_IO_ERROR unless $self->fh(); $self->fh()->clearerr(); # Seek to local file header. # The only reason that I'm doing this this way is that the extraField # length seems to be different between the CD header and the LF header. $status = $self->_seekToLocalHeader(); return $status unless $status == AZ_OK; # skip local file header $status = $self->_skipLocalFileHeader(); return $status unless $status == AZ_OK; # Seek to beginning of file data $self->fh()->seek( $self->dataOffset(), IO::Seekable::SEEK_SET ) or return _ioError("seeking to beginning of file data"); return AZ_OK; } # Return bytes read. Note that first parameter is a ref to a buffer. # my $data; # my ( $bytesRead, $status) = $self->readRawChunk( \$data, $chunkSize ); sub _readRawChunk { my ( $self, $dataRef, $chunkSize ) = @_; return ( 0, AZ_OK ) unless $chunkSize; my $bytesRead = $self->fh()->read( $$dataRef, $chunkSize ) or return ( 0, _ioError("reading data") ); return ( $bytesRead, AZ_OK ); } 1; FILE0e4de658/AutoLoader.pmZ#line 1 "/usr/local/share/perl/5.8.8/AutoLoader.pm" package AutoLoader; use strict; use 5.006_001; our($VERSION, $AUTOLOAD); my $is_dosish; my $is_epoc; my $is_vms; my $is_macos; BEGIN { $is_dosish = $^O eq 'dos' || $^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'NetWare'; $is_epoc = $^O eq 'epoc'; $is_vms = $^O eq 'VMS'; $is_macos = $^O eq 'MacOS'; $VERSION = '5.67'; } AUTOLOAD { my $sub = $AUTOLOAD; my $filename = AutoLoader::find_filename( $sub ); my $save = $@; local $!; # Do not munge the value. eval { local $SIG{__DIE__}; require $filename }; if ($@) { if (substr($sub,-9) eq '::DESTROY') { no strict 'refs'; *$sub = sub {}; $@ = undef; } elsif ($@ =~ /^Can't locate/) { # The load might just have failed because the filename was too # long for some old SVR3 systems which treat long names as errors. # If we can successfully truncate a long name then it's worth a go. # There is a slight risk that we could pick up the wrong file here # but autosplit should have warned about that when splitting. if ($filename =~ s/(\w{12,})\.al$/substr($1,0,11).".al"/e){ eval { local $SIG{__DIE__}; require $filename }; } } if ($@){ $@ =~ s/ at .*\n//; my $error = $@; require Carp; Carp::croak($error); } } $@ = $save; goto &$sub; } sub find_filename { my $sub = shift; my $filename; # Braces used to preserve $1 et al. { # Try to find the autoloaded file from the package-qualified # name of the sub. e.g., if the sub needed is # Getopt::Long::GetOptions(), then $INC{Getopt/Long.pm} is # something like '/usr/lib/perl5/Getopt/Long.pm', and the # autoload file is '/usr/lib/perl5/auto/Getopt/Long/GetOptions.al'. # # However, if @INC is a relative path, this might not work. If, # for example, @INC = ('lib'), then $INC{Getopt/Long.pm} is # 'lib/Getopt/Long.pm', and we want to require # 'auto/Getopt/Long/GetOptions.al' (without the leading 'lib'). # In this case, we simple prepend the 'auto/' and let the # C take care of the searching for us. my ($pkg,$func) = ($sub =~ /(.*)::([^:]+)$/); $pkg =~ s#::#/#g; if (defined($filename = $INC{"$pkg.pm"})) { if ($is_macos) { $pkg =~ tr#/#:#; $filename = undef unless $filename =~ s#^(.*)$pkg\.pm\z#$1auto:$pkg:$func.al#s; } else { $filename = undef unless $filename =~ s#^(.*)$pkg\.pm\z#$1auto/$pkg/$func.al#s; } # if the file exists, then make sure that it is a # a fully anchored path (i.e either '/usr/lib/auto/foo/bar.al', # or './lib/auto/foo/bar.al'. This avoids C searching # (and failing) to find the 'lib/auto/foo/bar.al' because it # looked for 'lib/lib/auto/foo/bar.al', given @INC = ('lib'). if (defined $filename and -r $filename) { unless ($filename =~ m|^/|s) { if ($is_dosish) { unless ($filename =~ m{^([a-z]:)?[\\/]}is) { if ($^O ne 'NetWare') { $filename = "./$filename"; } else { $filename = "$filename"; } } } elsif ($is_epoc) { unless ($filename =~ m{^([a-z?]:)?[\\/]}is) { $filename = "./$filename"; } } elsif ($is_vms) { # XXX todo by VMSmiths $filename = "./$filename"; } elsif (!$is_macos) { $filename = "./$filename"; } } } else { $filename = undef; } } unless (defined $filename) { # let C do the searching $filename = "auto/$sub.al"; $filename =~ s#::#/#g; } } return $filename; } sub import { my $pkg = shift; my $callpkg = caller; # # Export symbols, but not by accident of inheritance. # if ($pkg eq 'AutoLoader') { if ( @_ and $_[0] =~ /^&?AUTOLOAD$/ ) { no strict 'refs'; *{ $callpkg . '::AUTOLOAD' } = \&AUTOLOAD; } } # # Try to find the autosplit index file. Eg., if the call package # is POSIX, then $INC{POSIX.pm} is something like # '/usr/local/lib/perl5/POSIX.pm', and the autosplit index file is in # '/usr/local/lib/perl5/auto/POSIX/autosplit.ix', so we require that. # # However, if @INC is a relative path, this might not work. If, # for example, @INC = ('lib'), then # $INC{POSIX.pm} is 'lib/POSIX.pm', and we want to require # 'auto/POSIX/autosplit.ix' (without the leading 'lib'). # (my $calldir = $callpkg) =~ s#::#/#g; my $path = $INC{$calldir . '.pm'}; if (defined($path)) { # Try absolute path name, but only eval it if the # transformation from module path to autosplit.ix path # succeeded! my $replaced_okay; if ($is_macos) { (my $malldir = $calldir) =~ tr#/#:#; $replaced_okay = ($path =~ s#^(.*)$malldir\.pm\z#$1auto:$malldir:autosplit.ix#s); } else { $replaced_okay = ($path =~ s#^(.*)$calldir\.pm\z#$1auto/$calldir/autosplit.ix#); } eval { require $path; } if $replaced_okay; # If that failed, try relative path with normal @INC searching. if (!$replaced_okay or $@) { $path ="auto/$calldir/autosplit.ix"; eval { require $path; }; } if ($@) { my $error = $@; require Carp; Carp::carp($error); } } } sub unimport { my $callpkg = caller; no strict 'refs'; for my $exported (qw( AUTOLOAD )) { my $symname = $callpkg . '::' . $exported; undef *{ $symname } if \&{ $symname } == \&{ $exported }; *{ $symname } = \&{ $symname }; } } 1; __END__ #line 430 FILE4b610126/Compress/Zlib.pm7~#line 1 "/usr/local/share/perl/5.8.8/Compress/Zlib.pm" package Compress::Zlib; require 5.004 ; require Exporter; use AutoLoader; use Carp ; use IO::Handle ; use Scalar::Util qw(dualvar); use IO::Compress::Base::Common 2.015 ; use Compress::Raw::Zlib 2.015 ; use IO::Compress::Gzip 2.015 ; use IO::Uncompress::Gunzip 2.015 ; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD); $VERSION = '2.015'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( deflateInit inflateInit compress uncompress gzopen $gzerrno ); push @EXPORT, @Compress::Raw::Zlib::EXPORT ; BEGIN { *zlib_version = \&Compress::Raw::Zlib::zlib_version; } sub AUTOLOAD { my($constname); ($constname = $AUTOLOAD) =~ s/.*:://; my ($error, $val) = Compress::Raw::Zlib::constant($constname); Carp::croak $error if $error; no strict 'refs'; *{$AUTOLOAD} = sub { $val }; goto &{$AUTOLOAD}; } use constant FLAG_APPEND => 1 ; use constant FLAG_CRC => 2 ; use constant FLAG_ADLER => 4 ; use constant FLAG_CONSUME_INPUT => 8 ; our (@my_z_errmsg); @my_z_errmsg = ( "need dictionary", # Z_NEED_DICT 2 "stream end", # Z_STREAM_END 1 "", # Z_OK 0 "file error", # Z_ERRNO (-1) "stream error", # Z_STREAM_ERROR (-2) "data error", # Z_DATA_ERROR (-3) "insufficient memory", # Z_MEM_ERROR (-4) "buffer error", # Z_BUF_ERROR (-5) "incompatible version",# Z_VERSION_ERROR(-6) ); sub _set_gzerr { my $value = shift ; if ($value == 0) { $Compress::Zlib::gzerrno = 0 ; } elsif ($value == Z_ERRNO() || $value > 2) { $Compress::Zlib::gzerrno = $! ; } else { $Compress::Zlib::gzerrno = dualvar($value+0, $my_z_errmsg[2 - $value]); } return $value ; } sub _save_gzerr { my $gz = shift ; my $test_eof = shift ; my $value = $gz->errorNo() || 0 ; if ($test_eof) { #my $gz = $self->[0] ; # gzread uses Z_STREAM_END to denote a successful end $value = Z_STREAM_END() if $gz->eof() && $value == 0 ; } _set_gzerr($value) ; } sub gzopen($$) { my ($file, $mode) = @_ ; my $gz ; my %defOpts = (Level => Z_DEFAULT_COMPRESSION(), Strategy => Z_DEFAULT_STRATEGY(), ); my $writing ; $writing = ! ($mode =~ /r/i) ; $writing = ($mode =~ /[wa]/i) ; $defOpts{Level} = $1 if $mode =~ /(\d)/; $defOpts{Strategy} = Z_FILTERED() if $mode =~ /f/i; $defOpts{Strategy} = Z_HUFFMAN_ONLY() if $mode =~ /h/i; $defOpts{Append} = 1 if $mode =~ /a/i; my $infDef = $writing ? 'deflate' : 'inflate'; my @params = () ; croak "gzopen: file parameter is not a filehandle or filename" unless isaFilehandle $file || isaFilename $file || (ref $file && ref $file eq 'SCALAR'); return undef unless $mode =~ /[rwa]/i ; _set_gzerr(0) ; if ($writing) { $gz = new IO::Compress::Gzip($file, Minimal => 1, AutoClose => 1, %defOpts) or $Compress::Zlib::gzerrno = $IO::Compress::Gzip::GzipError; } else { $gz = new IO::Uncompress::Gunzip($file, Transparent => 1, Append => 0, AutoClose => 1, MultiStream => 1, Strict => 0) or $Compress::Zlib::gzerrno = $IO::Uncompress::Gunzip::GunzipError; } return undef if ! defined $gz ; bless [$gz, $infDef], 'Compress::Zlib::gzFile'; } sub Compress::Zlib::gzFile::gzread { my $self = shift ; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'inflate'; my $len = defined $_[1] ? $_[1] : 4096 ; if ($self->gzeof() || $len == 0) { # Zap the output buffer to match ver 1 behaviour. $_[0] = "" ; return 0 ; } my $gz = $self->[0] ; my $status = $gz->read($_[0], $len) ; _save_gzerr($gz, 1); return $status ; } sub Compress::Zlib::gzFile::gzreadline { my $self = shift ; my $gz = $self->[0] ; { # Maintain backward compatibility with 1.x behaviour # It didn't support $/, so this can't either. local $/ = "\n" ; $_[0] = $gz->getline() ; } _save_gzerr($gz, 1); return defined $_[0] ? length $_[0] : 0 ; } sub Compress::Zlib::gzFile::gzwrite { my $self = shift ; my $gz = $self->[0] ; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; $] >= 5.008 and (utf8::downgrade($_[0], 1) or croak "Wide character in gzwrite"); my $status = $gz->write($_[0]) ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gztell { my $self = shift ; my $gz = $self->[0] ; my $status = $gz->tell() ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzseek { my $self = shift ; my $offset = shift ; my $whence = shift ; my $gz = $self->[0] ; my $status ; eval { $status = $gz->seek($offset, $whence) ; }; if ($@) { my $error = $@; $error =~ s/^.*: /gzseek: /; $error =~ s/ at .* line \d+\s*$//; croak $error; } _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzflush { my $self = shift ; my $f = shift ; my $gz = $self->[0] ; my $status = $gz->flush($f) ; my $err = _save_gzerr($gz); return $status ? 0 : $err; } sub Compress::Zlib::gzFile::gzclose { my $self = shift ; my $gz = $self->[0] ; my $status = $gz->close() ; my $err = _save_gzerr($gz); return $status ? 0 : $err; } sub Compress::Zlib::gzFile::gzeof { my $self = shift ; my $gz = $self->[0] ; return 0 if $self->[1] ne 'inflate'; my $status = $gz->eof() ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzsetparams { my $self = shift ; croak "Usage: Compress::Zlib::gzFile::gzsetparams(file, level, strategy)" unless @_ eq 2 ; my $gz = $self->[0] ; my $level = shift ; my $strategy = shift; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; my $status = *$gz->{Compress}->deflateParams(-Level => $level, -Strategy => $strategy); _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzerror { my $self = shift ; my $gz = $self->[0] ; return $Compress::Zlib::gzerrno ; } sub compress($;$) { my ($x, $output, $err, $in) =('', '', '', '') ; if (ref $_[0] ) { $in = $_[0] ; croak "not a scalar reference" unless ref $in eq 'SCALAR' ; } else { $in = \$_[0] ; } $] >= 5.008 and (utf8::downgrade($$in, 1) or croak "Wide character in compress"); my $level = (@_ == 2 ? $_[1] : Z_DEFAULT_COMPRESSION() ); $x = new Compress::Raw::Zlib::Deflate -AppendOutput => 1, -Level => $level or return undef ; $err = $x->deflate($in, $output) ; return undef unless $err == Z_OK() ; $err = $x->flush($output) ; return undef unless $err == Z_OK() ; return $output ; } sub uncompress($) { my ($x, $output, $err, $in) =('', '', '', '') ; if (ref $_[0] ) { $in = $_[0] ; croak "not a scalar reference" unless ref $in eq 'SCALAR' ; } else { $in = \$_[0] ; } $] >= 5.008 and (utf8::downgrade($$in, 1) or croak "Wide character in uncompress"); $x = new Compress::Raw::Zlib::Inflate -ConsumeInput => 0 or return undef ; $err = $x->inflate($in, $output) ; return undef unless $err == Z_STREAM_END() ; return $output ; } sub deflateInit(@) { my ($got) = ParseParameters(0, { 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_ ) ; croak "Compress::Zlib::deflateInit: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $obj ; my $status = 0 ; ($obj, $status) = Compress::Raw::Zlib::_deflateInit(0, $got->value('Level'), $got->value('Method'), $got->value('WindowBits'), $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), $got->value('Dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldDeflate" : undef) ; return wantarray ? ($x, $status) : $x ; } sub inflateInit(@) { my ($got) = ParseParameters(0, { 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Zlib::inflateInit: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $status = 0 ; my $obj ; ($obj, $status) = Compress::Raw::Zlib::_inflateInit(FLAG_CONSUME_INPUT, $got->value('WindowBits'), $got->value('Bufsize'), $got->value('Dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldInflate" : undef) ; wantarray ? ($x, $status) : $x ; } package Zlib::OldDeflate ; our (@ISA); @ISA = qw(Compress::Raw::Zlib::deflateStream); sub deflate { my $self = shift ; my $output ; my $status = $self->SUPER::deflate($_[0], $output) ; wantarray ? ($output, $status) : $output ; } sub flush { my $self = shift ; my $output ; my $flag = shift || Compress::Zlib::Z_FINISH(); my $status = $self->SUPER::flush($output, $flag) ; wantarray ? ($output, $status) : $output ; } package Zlib::OldInflate ; our (@ISA); @ISA = qw(Compress::Raw::Zlib::inflateStream); sub inflate { my $self = shift ; my $output ; my $status = $self->SUPER::inflate($_[0], $output) ; wantarray ? ($output, $status) : $output ; } package Compress::Zlib ; use IO::Compress::Gzip::Constants 2.015 ; sub memGzip($) { my $out; # if the deflation buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]) ; $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGzip"); IO::Compress::Gzip::gzip($string, \$out, Minimal => 1) or return undef ; return $out; } sub _removeGzipHeader($) { my $string = shift ; return Z_DATA_ERROR() if length($$string) < GZIP_MIN_HEADER_SIZE ; my ($magic1, $magic2, $method, $flags, $time, $xflags, $oscode) = unpack ('CCCCVCC', $$string); return Z_DATA_ERROR() unless $magic1 == GZIP_ID1 and $magic2 == GZIP_ID2 and $method == Z_DEFLATED() and !($flags & GZIP_FLG_RESERVED) ; substr($$string, 0, GZIP_MIN_HEADER_SIZE) = '' ; # skip extra field if ($flags & GZIP_FLG_FEXTRA) { return Z_DATA_ERROR() if length($$string) < GZIP_FEXTRA_HEADER_SIZE ; my ($extra_len) = unpack ('v', $$string); $extra_len += GZIP_FEXTRA_HEADER_SIZE; return Z_DATA_ERROR() if length($$string) < $extra_len ; substr($$string, 0, $extra_len) = ''; } # skip orig name if ($flags & GZIP_FLG_FNAME) { my $name_end = index ($$string, GZIP_NULL_BYTE); return Z_DATA_ERROR() if $name_end == -1 ; substr($$string, 0, $name_end + 1) = ''; } # skip comment if ($flags & GZIP_FLG_FCOMMENT) { my $comment_end = index ($$string, GZIP_NULL_BYTE); return Z_DATA_ERROR() if $comment_end == -1 ; substr($$string, 0, $comment_end + 1) = ''; } # skip header crc if ($flags & GZIP_FLG_FHCRC) { return Z_DATA_ERROR() if length ($$string) < GZIP_FHCRC_SIZE ; substr($$string, 0, GZIP_FHCRC_SIZE) = ''; } return Z_OK(); } sub memGunzip($) { # if the buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]); $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGunzip"); _removeGzipHeader($string) == Z_OK() or return undef; my $bufsize = length $$string > 4096 ? length $$string : 4096 ; my $x = new Compress::Raw::Zlib::Inflate({-WindowBits => - MAX_WBITS(), -Bufsize => $bufsize}) or return undef; my $output = "" ; my $status = $x->inflate($string, $output); return undef unless $status == Z_STREAM_END(); if (length $$string >= 8) { my ($crc, $len) = unpack ("VV", substr($$string, 0, 8)); substr($$string, 0, 8) = ''; return undef unless $len == length($output) and $crc == crc32($output); } else { $$string = ''; } return $output; } # Autoload methods go after __END__, and are processed by the autosplit program. 1; __END__ #line 1452 FILE977c405f/File/GlobMapper.pm#line 1 "/usr/local/share/perl/5.8.8/File/GlobMapper.pm" package File::GlobMapper; use strict; use warnings; use Carp; our ($CSH_GLOB); BEGIN { if ($] < 5.006) { require File::BSDGlob; import File::BSDGlob qw(:glob) ; $CSH_GLOB = File::BSDGlob::GLOB_CSH() ; *globber = \&File::BSDGlob::csh_glob; } else { require File::Glob; import File::Glob qw(:glob) ; $CSH_GLOB = File::Glob::GLOB_CSH() ; #*globber = \&File::Glob::bsd_glob; *globber = \&File::Glob::csh_glob; } } our ($Error); our ($VERSION, @EXPORT_OK); $VERSION = '1.000'; @EXPORT_OK = qw( globmap ); our ($noPreBS, $metachars, $matchMetaRE, %mapping, %wildCount); $noPreBS = '(? '([^/]*)', '?' => '([^/])', '.' => '\.', '[' => '([', '(' => '(', ')' => ')', ); %wildCount = map { $_ => 1 } qw/ * ? . { ( [ /; sub globmap ($$;) { my $inputGlob = shift ; my $outputGlob = shift ; my $obj = new File::GlobMapper($inputGlob, $outputGlob, @_) or croak "globmap: $Error" ; return $obj->getFileMap(); } sub new { my $class = shift ; my $inputGlob = shift ; my $outputGlob = shift ; # TODO -- flags needs to default to whatever File::Glob does my $flags = shift || $CSH_GLOB ; #my $flags = shift ; $inputGlob =~ s/^\s*\<\s*//; $inputGlob =~ s/\s*\>\s*$//; $outputGlob =~ s/^\s*\<\s*//; $outputGlob =~ s/\s*\>\s*$//; my %object = ( InputGlob => $inputGlob, OutputGlob => $outputGlob, GlobFlags => $flags, Braces => 0, WildCount => 0, Pairs => [], Sigil => '#', ); my $self = bless \%object, ref($class) || $class ; $self->_parseInputGlob() or return undef ; $self->_parseOutputGlob() or return undef ; my @inputFiles = globber($self->{InputGlob}, $flags) ; if (GLOB_ERROR) { $Error = $!; return undef ; } #if (whatever) { my $missing = grep { ! -e $_ } @inputFiles ; if ($missing) { $Error = "$missing input files do not exist"; return undef ; } } $self->{InputFiles} = \@inputFiles ; $self->_getFiles() or return undef ; return $self; } sub _retError { my $string = shift ; $Error = "$string in input fileglob" ; return undef ; } sub _unmatched { my $delimeter = shift ; _retError("Unmatched $delimeter"); return undef ; } sub _parseBit { my $self = shift ; my $string = shift ; my $out = ''; my $depth = 0 ; while ($string =~ s/(.*?)$noPreBS(,|$matchMetaRE)//) { $out .= quotemeta($1) ; $out .= $mapping{$2} if defined $mapping{$2}; ++ $self->{WildCount} if $wildCount{$2} ; if ($2 eq ',') { return _unmatched "(" if $depth ; $out .= '|'; } elsif ($2 eq '(') { ++ $depth ; } elsif ($2 eq ')') { return _unmatched ")" if ! $depth ; -- $depth ; } elsif ($2 eq '[') { # TODO -- quotemeta & check no '/' # TODO -- check for \] & other \ within the [] $string =~ s#(.*?\])## or return _unmatched "[" ; $out .= "$1)" ; } elsif ($2 eq ']') { return _unmatched "]" ; } elsif ($2 eq '{' || $2 eq '}') { return _retError "Nested {} not allowed" ; } } $out .= quotemeta $string; return _unmatched "(" if $depth ; return $out ; } sub _parseInputGlob { my $self = shift ; my $string = $self->{InputGlob} ; my $inGlob = ''; # Multiple concatenated *'s don't make sense #$string =~ s#\*\*+#*# ; # TODO -- Allow space to delimit patterns? #my @strings = split /\s+/, $string ; #for my $str (@strings) my $out = ''; my $depth = 0 ; while ($string =~ s/(.*?)$noPreBS($matchMetaRE)//) { $out .= quotemeta($1) ; $out .= $mapping{$2} if defined $mapping{$2}; ++ $self->{WildCount} if $wildCount{$2} ; if ($2 eq '(') { ++ $depth ; } elsif ($2 eq ')') { return _unmatched ")" if ! $depth ; -- $depth ; } elsif ($2 eq '[') { # TODO -- quotemeta & check no '/' or '(' or ')' # TODO -- check for \] & other \ within the [] $string =~ s#(.*?\])## or return _unmatched "["; $out .= "$1)" ; } elsif ($2 eq ']') { return _unmatched "]" ; } elsif ($2 eq '}') { return _unmatched "}" ; } elsif ($2 eq '{') { # TODO -- check no '/' within the {} # TODO -- check for \} & other \ within the {} my $tmp ; unless ( $string =~ s/(.*?)$noPreBS\}//) { return _unmatched "{"; } #$string =~ s#(.*?)\}##; #my $alt = join '|', # map { quotemeta $_ } # split "$noPreBS,", $1 ; my $alt = $self->_parseBit($1); defined $alt or return 0 ; $out .= "($alt)" ; ++ $self->{Braces} ; } } return _unmatched "(" if $depth ; $out .= quotemeta $string ; $self->{InputGlob} =~ s/$noPreBS[\(\)]//g; $self->{InputPattern} = $out ; #print "# INPUT '$self->{InputGlob}' => '$out'\n"; return 1 ; } sub _parseOutputGlob { my $self = shift ; my $string = $self->{OutputGlob} ; my $maxwild = $self->{WildCount}; if ($self->{GlobFlags} & GLOB_TILDE) #if (1) { $string =~ s{ ^ ~ # find a leading tilde ( # save this in $1 [^/] # a non-slash character * # repeated 0 or more times (0 means me) ) }{ $1 ? (getpwnam($1))[7] : ( $ENV{HOME} || $ENV{LOGDIR} ) }ex; } # max #1 must be == to max no of '*' in input while ( $string =~ m/#(\d)/g ) { croak "Max wild is #$maxwild, you tried #$1" if $1 > $maxwild ; } my $noPreBS = '(?{OutputGlob}' => '$string'\n"; $self->{OutputPattern} = $string ; return 1 ; } sub _getFiles { my $self = shift ; my %outInMapping = (); my %inFiles = () ; foreach my $inFile (@{ $self->{InputFiles} }) { next if $inFiles{$inFile} ++ ; my $outFile = $inFile ; if ( $inFile =~ m/$self->{InputPattern}/ ) { no warnings 'uninitialized'; eval "\$outFile = $self->{OutputPattern};" ; if (defined $outInMapping{$outFile}) { $Error = "multiple input files map to one output file"; return undef ; } $outInMapping{$outFile} = $inFile; push @{ $self->{Pairs} }, [$inFile, $outFile]; } } return 1 ; } sub getFileMap { my $self = shift ; return $self->{Pairs} ; } sub getHash { my $self = shift ; return { map { $_->[0] => $_->[1] } @{ $self->{Pairs} } } ; } 1; __END__ #line 680FILEad452d8e/File/Temp.pm@#line 1 "/usr/local/share/perl/5.8.8/File/Temp.pm" package File::Temp; #line 138 # 5.6.0 gives us S_IWOTH, S_IWGRP, our and auto-vivifying filehandls # People would like a version on 5.004 so give them what they want :-) use 5.004; use strict; use Carp; use File::Spec 0.8; use File::Path qw/ rmtree /; use Fcntl 1.03; use IO::Seekable; # For SEEK_* use Errno; require VMS::Stdio if $^O eq 'VMS'; # pre-emptively load Carp::Heavy. If we don't when we run out of file # handles and attempt to call croak() we get an error message telling # us that Carp::Heavy won't load rather than an error telling us we # have run out of file handles. We either preload croak() or we # switch the calls to croak from _gettemp() to use die. eval { require Carp::Heavy; }; # Need the Symbol package if we are running older perl require Symbol if $] < 5.006; ### For the OO interface use base qw/ IO::Handle IO::Seekable /; use overload '""' => "STRINGIFY", fallback => 1; # use 'our' on v5.6.0 use vars qw($VERSION @EXPORT_OK %EXPORT_TAGS $DEBUG $KEEP_ALL); $DEBUG = 0; $KEEP_ALL = 0; # We are exporting functions use base qw/Exporter/; # Export list - to allow fine tuning of export table @EXPORT_OK = qw{ tempfile tempdir tmpnam tmpfile mktemp mkstemp mkstemps mkdtemp unlink0 cleanup SEEK_SET SEEK_CUR SEEK_END }; # Groups of functions for export %EXPORT_TAGS = ( 'POSIX' => [qw/ tmpnam tmpfile /], 'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/], 'seekable' => [qw/ SEEK_SET SEEK_CUR SEEK_END /], ); # add contents of these tags to @EXPORT Exporter::export_tags('POSIX','mktemp','seekable'); # Version number $VERSION = '0.21'; # This is a list of characters that can be used in random filenames my @CHARS = (qw/ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 _ /); # Maximum number of tries to make a temp file before failing use constant MAX_TRIES => 1000; # Minimum number of X characters that should be in a template use constant MINX => 4; # Default template when no template supplied use constant TEMPXXX => 'X' x 10; # Constants for the security level use constant STANDARD => 0; use constant MEDIUM => 1; use constant HIGH => 2; # OPENFLAGS. If we defined the flag to use with Sysopen here this gives # us an optimisation when many temporary files are requested my $OPENFLAGS = O_CREAT | O_EXCL | O_RDWR; my $LOCKFLAG; unless ($^O eq 'MacOS') { for my $oflag (qw/ NOFOLLOW BINARY LARGEFILE NOINHERIT /) { my ($bit, $func) = (0, "Fcntl::O_" . $oflag); no strict 'refs'; $OPENFLAGS |= $bit if eval { # Make sure that redefined die handlers do not cause problems # e.g. CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; $bit = &$func(); 1; }; } # Special case O_EXLOCK $LOCKFLAG = eval { local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; &Fcntl::O_EXLOCK(); }; } # On some systems the O_TEMPORARY flag can be used to tell the OS # to automatically remove the file when it is closed. This is fine # in most cases but not if tempfile is called with UNLINK=>0 and # the filename is requested -- in the case where the filename is to # be passed to another routine. This happens on windows. We overcome # this by using a second open flags variable my $OPENTEMPFLAGS = $OPENFLAGS; unless ($^O eq 'MacOS') { for my $oflag (qw/ TEMPORARY /) { my ($bit, $func) = (0, "Fcntl::O_" . $oflag); local($@); no strict 'refs'; $OPENTEMPFLAGS |= $bit if eval { # Make sure that redefined die handlers do not cause problems # e.g. CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; $bit = &$func(); 1; }; } } # Private hash tracking which files have been created by each process id via the OO interface my %FILES_CREATED_BY_OBJECT; # INTERNAL ROUTINES - not to be used outside of package # Generic routine for getting a temporary filename # modelled on OpenBSD _gettemp() in mktemp.c # The template must contain X's that are to be replaced # with the random values # Arguments: # TEMPLATE - string containing the XXXXX's that is converted # to a random filename and opened if required # Optionally, a hash can also be supplied containing specific options # "open" => if true open the temp file, else just return the name # default is 0 # "mkdir"=> if true, we are creating a temp directory rather than tempfile # default is 0 # "suffixlen" => number of characters at end of PATH to be ignored. # default is 0. # "unlink_on_close" => indicates that, if possible, the OS should remove # the file as soon as it is closed. Usually indicates # use of the O_TEMPORARY flag to sysopen. # Usually irrelevant on unix # "use_exlock" => Indicates that O_EXLOCK should be used. Default is true. # Optionally a reference to a scalar can be passed into the function # On error this will be used to store the reason for the error # "ErrStr" => \$errstr # "open" and "mkdir" can not both be true # "unlink_on_close" is not used when "mkdir" is true. # The default options are equivalent to mktemp(). # Returns: # filehandle - open file handle (if called with doopen=1, else undef) # temp name - name of the temp file or directory # For example: # ($fh, $name) = _gettemp($template, "open" => 1); # for the current version, failures are associated with # stored in an error string and returned to give the reason whilst debugging # This routine is not called by any external function sub _gettemp { croak 'Usage: ($fh, $name) = _gettemp($template, OPTIONS);' unless scalar(@_) >= 1; # the internal error string - expect it to be overridden # Need this in case the caller decides not to supply us a value # need an anonymous scalar my $tempErrStr; # Default options my %options = ( "open" => 0, "mkdir" => 0, "suffixlen" => 0, "unlink_on_close" => 0, "use_exlock" => 1, "ErrStr" => \$tempErrStr, ); # Read the template my $template = shift; if (ref($template)) { # Use a warning here since we have not yet merged ErrStr carp "File::Temp::_gettemp: template must not be a reference"; return (); } # Check that the number of entries on stack are even if (scalar(@_) % 2 != 0) { # Use a warning here since we have not yet merged ErrStr carp "File::Temp::_gettemp: Must have even number of options"; return (); } # Read the options and merge with defaults %options = (%options, @_) if @_; # Make sure the error string is set to undef ${$options{ErrStr}} = undef; # Can not open the file and make a directory in a single call if ($options{"open"} && $options{"mkdir"}) { ${$options{ErrStr}} = "doopen and domkdir can not both be true\n"; return (); } # Find the start of the end of the Xs (position of last X) # Substr starts from 0 my $start = length($template) - 1 - $options{"suffixlen"}; # Check that we have at least MINX x X (e.g. 'XXXX") at the end of the string # (taking suffixlen into account). Any fewer is insecure. # Do it using substr - no reason to use a pattern match since # we know where we are looking and what we are looking for if (substr($template, $start - MINX + 1, MINX) ne 'X' x MINX) { ${$options{ErrStr}} = "The template must end with at least ". MINX . " 'X' characters\n"; return (); } # Replace all the X at the end of the substring with a # random character or just all the XX at the end of a full string. # Do it as an if, since the suffix adjusts which section to replace # and suffixlen=0 returns nothing if used in the substr directly # and generate a full path from the template my $path = _replace_XX($template, $options{"suffixlen"}); # Split the path into constituent parts - eventually we need to check # whether the directory exists # We need to know whether we are making a temp directory # or a tempfile my ($volume, $directories, $file); my $parent; # parent directory if ($options{"mkdir"}) { # There is no filename at the end ($volume, $directories, $file) = File::Spec->splitpath( $path, 1); # The parent is then $directories without the last directory # Split the directory and put it back together again my @dirs = File::Spec->splitdir($directories); # If @dirs only has one entry (i.e. the directory template) that means # we are in the current directory if ($#dirs == 0) { $parent = File::Spec->curdir; } else { if ($^O eq 'VMS') { # need volume to avoid relative dir spec $parent = File::Spec->catdir($volume, @dirs[0..$#dirs-1]); $parent = 'sys$disk:[]' if $parent eq ''; } else { # Put it back together without the last one $parent = File::Spec->catdir(@dirs[0..$#dirs-1]); # ...and attach the volume (no filename) $parent = File::Spec->catpath($volume, $parent, ''); } } } else { # Get rid of the last filename (use File::Basename for this?) ($volume, $directories, $file) = File::Spec->splitpath( $path ); # Join up without the file part $parent = File::Spec->catpath($volume,$directories,''); # If $parent is empty replace with curdir $parent = File::Spec->curdir unless $directories ne ''; } # Check that the parent directories exist # Do this even for the case where we are simply returning a name # not a file -- no point returning a name that includes a directory # that does not exist or is not writable unless (-e $parent) { ${$options{ErrStr}} = "Parent directory ($parent) does not exist"; return (); } unless (-d $parent) { ${$options{ErrStr}} = "Parent directory ($parent) is not a directory"; return (); } # Check the stickiness of the directory and chown giveaway if required # If the directory is world writable the sticky bit # must be set if (File::Temp->safe_level == MEDIUM) { my $safeerr; unless (_is_safe($parent,\$safeerr)) { ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)"; return (); } } elsif (File::Temp->safe_level == HIGH) { my $safeerr; unless (_is_verysafe($parent, \$safeerr)) { ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)"; return (); } } # Now try MAX_TRIES time to open the file for (my $i = 0; $i < MAX_TRIES; $i++) { # Try to open the file if requested if ($options{"open"}) { my $fh; # If we are running before perl5.6.0 we can not auto-vivify if ($] < 5.006) { $fh = &Symbol::gensym; } # Try to make sure this will be marked close-on-exec # XXX: Win32 doesn't respect this, nor the proper fcntl, # but may have O_NOINHERIT. This may or may not be in Fcntl. local $^F = 2; # Attempt to open the file my $open_success = undef; if ( $^O eq 'VMS' and $options{"unlink_on_close"} && !$KEEP_ALL) { # make it auto delete on close by setting FAB$V_DLT bit $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, 0600, 'fop=dlt'); $open_success = $fh; } else { my $flags = ( ($options{"unlink_on_close"} && !$KEEP_ALL) ? $OPENTEMPFLAGS : $OPENFLAGS ); $flags |= $LOCKFLAG if (defined $LOCKFLAG && $options{use_exlock}); $open_success = sysopen($fh, $path, $flags, 0600); } if ( $open_success ) { # in case of odd umask force rw chmod(0600, $path); # Opened successfully - return file handle and name return ($fh, $path); } else { # Error opening file - abort with error # if the reason was anything but EEXIST unless ($!{EEXIST}) { ${$options{ErrStr}} = "Could not create temp file $path: $!"; return (); } # Loop round for another try } } elsif ($options{"mkdir"}) { # Open the temp directory if (mkdir( $path, 0700)) { # in case of odd umask chmod(0700, $path); return undef, $path; } else { # Abort with error if the reason for failure was anything # except EEXIST unless ($!{EEXIST}) { ${$options{ErrStr}} = "Could not create directory $path: $!"; return (); } # Loop round for another try } } else { # Return true if the file can not be found # Directory has been checked previously return (undef, $path) unless -e $path; # Try again until MAX_TRIES } # Did not successfully open the tempfile/dir # so try again with a different set of random letters # No point in trying to increment unless we have only # 1 X say and the randomness could come up with the same # file MAX_TRIES in a row. # Store current attempt - in principal this implies that the # 3rd time around the open attempt that the first temp file # name could be generated again. Probably should store each # attempt and make sure that none are repeated my $original = $path; my $counter = 0; # Stop infinite loop my $MAX_GUESS = 50; do { # Generate new name from original template $path = _replace_XX($template, $options{"suffixlen"}); $counter++; } until ($path ne $original || $counter > $MAX_GUESS); # Check for out of control looping if ($counter > $MAX_GUESS) { ${$options{ErrStr}} = "Tried to get a new temp name different to the previous value $MAX_GUESS times.\nSomething wrong with template?? ($template)"; return (); } } # If we get here, we have run out of tries ${ $options{ErrStr} } = "Have exceeded the maximum number of attempts (" . MAX_TRIES . ") to open temp file/dir"; return (); } # Internal routine to replace the XXXX... with random characters # This has to be done by _gettemp() every time it fails to # open a temp file/dir # Arguments: $template (the template with XXX), # $ignore (number of characters at end to ignore) # Returns: modified template sub _replace_XX { croak 'Usage: _replace_XX($template, $ignore)' unless scalar(@_) == 2; my ($path, $ignore) = @_; # Do it as an if, since the suffix adjusts which section to replace # and suffixlen=0 returns nothing if used in the substr directly # Alternatively, could simply set $ignore to length($path)-1 # Don't want to always use substr when not required though. my $end = ( $] >= 5.006 ? "\\z" : "\\Z" ); if ($ignore) { substr($path, 0, - $ignore) =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge; } else { $path =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge; } return $path; } # Internal routine to force a temp file to be writable after # it is created so that we can unlink it. Windows seems to occassionally # force a file to be readonly when written to certain temp locations sub _force_writable { my $file = shift; chmod 0600, $file; } # internal routine to check to see if the directory is safe # First checks to see if the directory is not owned by the # current user or root. Then checks to see if anyone else # can write to the directory and if so, checks to see if # it has the sticky bit set # Will not work on systems that do not support sticky bit #Args: directory path to check # Optionally: reference to scalar to contain error message # Returns true if the path is safe and false otherwise. # Returns undef if can not even run stat() on the path # This routine based on version written by Tom Christiansen # Presumably, by the time we actually attempt to create the # file or directory in this directory, it may not be safe # anymore... Have to run _is_safe directly after the open. sub _is_safe { my $path = shift; my $err_ref = shift; # Stat path my @info = stat($path); unless (scalar(@info)) { $$err_ref = "stat(path) returned no values"; return 0; } ; return 1 if $^O eq 'VMS'; # owner delete control at file level # Check to see whether owner is neither superuser (or a system uid) nor me # Use the effective uid from the $> variable # UID is in [4] if ($info[4] > File::Temp->top_system_uid() && $info[4] != $>) { Carp::cluck(sprintf "uid=$info[4] topuid=%s euid=$> path='$path'", File::Temp->top_system_uid()); $$err_ref = "Directory owned neither by root nor the current user" if ref($err_ref); return 0; } # check whether group or other can write file # use 066 to detect either reading or writing # use 022 to check writability # Do it with S_IWOTH and S_IWGRP for portability (maybe) # mode is in info[2] if (($info[2] & &Fcntl::S_IWGRP) || # Is group writable? ($info[2] & &Fcntl::S_IWOTH) ) { # Is world writable? # Must be a directory unless (-d $path) { $$err_ref = "Path ($path) is not a directory" if ref($err_ref); return 0; } # Must have sticky bit set unless (-k $path) { $$err_ref = "Sticky bit not set on $path when dir is group|world writable" if ref($err_ref); return 0; } } return 1; } # Internal routine to check whether a directory is safe # for temp files. Safer than _is_safe since it checks for # the possibility of chown giveaway and if that is a possibility # checks each directory in the path to see if it is safe (with _is_safe) # If _PC_CHOWN_RESTRICTED is not set, does the full test of each # directory anyway. # Takes optional second arg as scalar ref to error reason sub _is_verysafe { # Need POSIX - but only want to bother if really necessary due to overhead require POSIX; my $path = shift; print "_is_verysafe testing $path\n" if $DEBUG; return 1 if $^O eq 'VMS'; # owner delete control at file level my $err_ref = shift; # Should Get the value of _PC_CHOWN_RESTRICTED if it is defined # and If it is not there do the extensive test local($@); my $chown_restricted; $chown_restricted = &POSIX::_PC_CHOWN_RESTRICTED() if eval { &POSIX::_PC_CHOWN_RESTRICTED(); 1}; # If chown_resticted is set to some value we should test it if (defined $chown_restricted) { # Return if the current directory is safe return _is_safe($path,$err_ref) if POSIX::sysconf( $chown_restricted ); } # To reach this point either, the _PC_CHOWN_RESTRICTED symbol # was not avialable or the symbol was there but chown giveaway # is allowed. Either way, we now have to test the entire tree for # safety. # Convert path to an absolute directory if required unless (File::Spec->file_name_is_absolute($path)) { $path = File::Spec->rel2abs($path); } # Split directory into components - assume no file my ($volume, $directories, undef) = File::Spec->splitpath( $path, 1); # Slightly less efficient than having a function in File::Spec # to chop off the end of a directory or even a function that # can handle ../ in a directory tree # Sometimes splitdir() returns a blank at the end # so we will probably check the bottom directory twice in some cases my @dirs = File::Spec->splitdir($directories); # Concatenate one less directory each time around foreach my $pos (0.. $#dirs) { # Get a directory name my $dir = File::Spec->catpath($volume, File::Spec->catdir(@dirs[0.. $#dirs - $pos]), '' ); print "TESTING DIR $dir\n" if $DEBUG; # Check the directory return 0 unless _is_safe($dir,$err_ref); } return 1; } # internal routine to determine whether unlink works on this # platform for files that are currently open. # Returns true if we can, false otherwise. # Currently WinNT, OS/2 and VMS can not unlink an opened file # On VMS this is because the O_EXCL flag is used to open the # temporary file. Currently I do not know enough about the issues # on VMS to decide whether O_EXCL is a requirement. sub _can_unlink_opened_file { if ($^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'VMS' || $^O eq 'dos' || $^O eq 'MacOS') { return 0; } else { return 1; } } # internal routine to decide which security levels are allowed # see safe_level() for more information on this # Controls whether the supplied security level is allowed # $cando = _can_do_level( $level ) sub _can_do_level { # Get security level my $level = shift; # Always have to be able to do STANDARD return 1 if $level == STANDARD; # Currently, the systems that can do HIGH or MEDIUM are identical if ( $^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'MacOS' || $^O eq 'mpeix') { return 0; } else { return 1; } } # This routine sets up a deferred unlinking of a specified # filename and filehandle. It is used in the following cases: # - Called by unlink0 if an opened file can not be unlinked # - Called by tempfile() if files are to be removed on shutdown # - Called by tempdir() if directories are to be removed on shutdown # Arguments: # _deferred_unlink( $fh, $fname, $isdir ); # # - filehandle (so that it can be expclicitly closed if open # - filename (the thing we want to remove) # - isdir (flag to indicate that we are being given a directory) # [and hence no filehandle] # Status is not referred to since all the magic is done with an END block { # Will set up two lexical variables to contain all the files to be # removed. One array for files, another for directories They will # only exist in this block. # This means we only have to set up a single END block to remove # all files. # in order to prevent child processes inadvertently deleting the parent # temp files we use a hash to store the temp files and directories # created by a particular process id. # %files_to_unlink contains values that are references to an array of # array references containing the filehandle and filename associated with # the temp file. my (%files_to_unlink, %dirs_to_unlink); # Set up an end block to use these arrays END { local($., $@, $!, $^E, $?); cleanup(); } # Cleanup function. Always triggered on END but can be invoked # manually. sub cleanup { if (!$KEEP_ALL) { # Files my @files = (exists $files_to_unlink{$$} ? @{ $files_to_unlink{$$} } : () ); foreach my $file (@files) { # close the filehandle without checking its state # in order to make real sure that this is closed # if its already closed then I dont care about the answer # probably a better way to do this close($file->[0]); # file handle is [0] if (-f $file->[1]) { # file name is [1] _force_writable( $file->[1] ); # for windows unlink $file->[1] or warn "Error removing ".$file->[1]; } } # Dirs my @dirs = (exists $dirs_to_unlink{$$} ? @{ $dirs_to_unlink{$$} } : () ); foreach my $dir (@dirs) { if (-d $dir) { # Some versions of rmtree will abort if you attempt to remove # the directory you are sitting in. We protect that and turn it # into a warning. We do this because this occurs during # cleanup and so can not be caught by the user. eval { rmtree($dir, $DEBUG, 0); }; warn $@ if ($@ && $^W); } } # clear the arrays @{ $files_to_unlink{$$} } = () if exists $files_to_unlink{$$}; @{ $dirs_to_unlink{$$} } = () if exists $dirs_to_unlink{$$}; } } # This is the sub called to register a file for deferred unlinking # This could simply store the input parameters and defer everything # until the END block. For now we do a bit of checking at this # point in order to make sure that (1) we have a file/dir to delete # and (2) we have been called with the correct arguments. sub _deferred_unlink { croak 'Usage: _deferred_unlink($fh, $fname, $isdir)' unless scalar(@_) == 3; my ($fh, $fname, $isdir) = @_; warn "Setting up deferred removal of $fname\n" if $DEBUG; # If we have a directory, check that it is a directory if ($isdir) { if (-d $fname) { # Directory exists so store it # first on VMS turn []foo into [.foo] for rmtree $fname = VMS::Filespec::vmspath($fname) if $^O eq 'VMS'; $dirs_to_unlink{$$} = [] unless exists $dirs_to_unlink{$$}; push (@{ $dirs_to_unlink{$$} }, $fname); } else { carp "Request to remove directory $fname could not be completed since it does not exist!\n" if $^W; } } else { if (-f $fname) { # file exists so store handle and name for later removal $files_to_unlink{$$} = [] unless exists $files_to_unlink{$$}; push(@{ $files_to_unlink{$$} }, [$fh, $fname]); } else { carp "Request to remove file $fname could not be completed since it is not there!\n" if $^W; } } } } #line 1008 sub new { my $proto = shift; my $class = ref($proto) || $proto; # read arguments and convert keys to upper case my %args = @_; %args = map { uc($_), $args{$_} } keys %args; # see if they are unlinking (defaulting to yes) my $unlink = (exists $args{UNLINK} ? $args{UNLINK} : 1 ); delete $args{UNLINK}; # template (store it in an array so that it will # disappear from the arg list of tempfile) my @template = ( exists $args{TEMPLATE} ? $args{TEMPLATE} : () ); delete $args{TEMPLATE}; # Protect OPEN delete $args{OPEN}; # Open the file and retain file handle and file name my ($fh, $path) = tempfile( @template, %args ); print "Tmp: $fh - $path\n" if $DEBUG; # Store the filename in the scalar slot ${*$fh} = $path; # Cache the filename by pid so that the destructor can decide whether to remove it $FILES_CREATED_BY_OBJECT{$$}{$path} = 1; # Store unlink information in hash slot (plus other constructor info) %{*$fh} = %args; # create the object bless $fh, $class; # final method-based configuration $fh->unlink_on_destroy( $unlink ); return $fh; } #line 1066 sub newdir { my $self = shift; # need to handle args as in tempdir because we have to force CLEANUP # default without passing CLEANUP to tempdir my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef ); my %options = @_; my $cleanup = (exists $options{CLEANUP} ? $options{CLEANUP} : 1 ); delete $options{CLEANUP}; my $tempdir; if (defined $template) { $tempdir = tempdir( $template, %options ); } else { $tempdir = tempdir( %options ); } return bless { DIRNAME => $tempdir, CLEANUP => $cleanup, LAUNCHPID => $$, }, "File::Temp::Dir"; } #line 1101 sub filename { my $self = shift; return ${*$self}; } sub STRINGIFY { my $self = shift; return $self->filename; } #line 1131 sub unlink_on_destroy { my $self = shift; if (@_) { ${*$self}{UNLINK} = shift; } return ${*$self}{UNLINK}; } #line 1160 sub DESTROY { local($., $@, $!, $^E, $?); my $self = shift; # Make sure we always remove the file from the global hash # on destruction. This prevents the hash from growing uncontrollably # and post-destruction there is no reason to know about the file. my $file = $self->filename; my $was_created_by_proc; if (exists $FILES_CREATED_BY_OBJECT{$$}{$file}) { $was_created_by_proc = 1; delete $FILES_CREATED_BY_OBJECT{$$}{$file}; } if (${*$self}{UNLINK} && !$KEEP_ALL) { print "# ---------> Unlinking $self\n" if $DEBUG; # only delete if this process created it return unless $was_created_by_proc; # The unlink1 may fail if the file has been closed # by the caller. This leaves us with the decision # of whether to refuse to remove the file or simply # do an unlink without test. Seems to be silly # to do this when we are trying to be careful # about security _force_writable( $file ); # for windows unlink1( $self, $file ) or unlink($file); } } #line 1294 sub tempfile { # Can not check for argument count since we can have any # number of args # Default options my %options = ( "DIR" => undef, # Directory prefix "SUFFIX" => '', # Template suffix "UNLINK" => 0, # Do not unlink file on exit "OPEN" => 1, # Open file "TMPDIR" => 0, # Place tempfile in tempdir if template specified "EXLOCK" => 1, # Open file with O_EXLOCK ); # Check to see whether we have an odd or even number of arguments my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef); # Read the options and merge with defaults %options = (%options, @_) if @_; # First decision is whether or not to open the file if (! $options{"OPEN"}) { warn "tempfile(): temporary filename requested but not opened.\nPossibly unsafe, consider using tempfile() with OPEN set to true\n" if $^W; } if ($options{"DIR"} and $^O eq 'VMS') { # on VMS turn []foo into [.foo] for concatenation $options{"DIR"} = VMS::Filespec::vmspath($options{"DIR"}); } # Construct the template # Have a choice of trying to work around the mkstemp/mktemp/tmpnam etc # functions or simply constructing a template and using _gettemp() # explicitly. Go for the latter # First generate a template if not defined and prefix the directory # If no template must prefix the temp directory if (defined $template) { # End up with current directory if neither DIR not TMPDIR are set if ($options{"DIR"}) { $template = File::Spec->catfile($options{"DIR"}, $template); } elsif ($options{TMPDIR}) { $template = File::Spec->catfile(File::Spec->tmpdir, $template ); } } else { if ($options{"DIR"}) { $template = File::Spec->catfile($options{"DIR"}, TEMPXXX); } else { $template = File::Spec->catfile(File::Spec->tmpdir, TEMPXXX); } } # Now add a suffix $template .= $options{"SUFFIX"}; # Determine whether we should tell _gettemp to unlink the file # On unix this is irrelevant and can be worked out after the file is # opened (simply by unlinking the open filehandle). On Windows or VMS # we have to indicate temporary-ness when we open the file. In general # we only want a true temporary file if we are returning just the # filehandle - if the user wants the filename they probably do not # want the file to disappear as soon as they close it (which may be # important if they want a child process to use the file) # For this reason, tie unlink_on_close to the return context regardless # of OS. my $unlink_on_close = ( wantarray ? 0 : 1); # Create the file my ($fh, $path, $errstr); croak "Error in tempfile() using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => $options{'OPEN'}, "mkdir"=> 0 , "unlink_on_close" => $unlink_on_close, "suffixlen" => length($options{'SUFFIX'}), "ErrStr" => \$errstr, "use_exlock" => $options{EXLOCK}, ) ); # Set up an exit handler that can do whatever is right for the # system. This removes files at exit when requested explicitly or when # system is asked to unlink_on_close but is unable to do so because # of OS limitations. # The latter should be achieved by using a tied filehandle. # Do not check return status since this is all done with END blocks. _deferred_unlink($fh, $path, 0) if $options{"UNLINK"}; # Return if (wantarray()) { if ($options{'OPEN'}) { return ($fh, $path); } else { return (undef, $path); } } else { # Unlink the file. It is up to unlink0 to decide what to do with # this (whether to unlink now or to defer until later) unlink0($fh, $path) or croak "Error unlinking file $path using unlink0"; # Return just the filehandle. return $fh; } } #line 1483 # ' sub tempdir { # Can not check for argument count since we can have any # number of args # Default options my %options = ( "CLEANUP" => 0, # Remove directory on exit "DIR" => '', # Root directory "TMPDIR" => 0, # Use tempdir with template ); # Check to see whether we have an odd or even number of arguments my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef ); # Read the options and merge with defaults %options = (%options, @_) if @_; # Modify or generate the template # Deal with the DIR and TMPDIR options if (defined $template) { # Need to strip directory path if using DIR or TMPDIR if ($options{'TMPDIR'} || $options{'DIR'}) { # Strip parent directory from the filename # # There is no filename at the end $template = VMS::Filespec::vmspath($template) if $^O eq 'VMS'; my ($volume, $directories, undef) = File::Spec->splitpath( $template, 1); # Last directory is then our template $template = (File::Spec->splitdir($directories))[-1]; # Prepend the supplied directory or temp dir if ($options{"DIR"}) { $template = File::Spec->catdir($options{"DIR"}, $template); } elsif ($options{TMPDIR}) { # Prepend tmpdir $template = File::Spec->catdir(File::Spec->tmpdir, $template); } } } else { if ($options{"DIR"}) { $template = File::Spec->catdir($options{"DIR"}, TEMPXXX); } else { $template = File::Spec->catdir(File::Spec->tmpdir, TEMPXXX); } } # Create the directory my $tempdir; my $suffixlen = 0; if ($^O eq 'VMS') { # dir names can end in delimiters $template =~ m/([\.\]:>]+)$/; $suffixlen = length($1); } if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) { # dir name has a trailing ':' ++$suffixlen; } my $errstr; croak "Error in tempdir() using $template: $errstr" unless ((undef, $tempdir) = _gettemp($template, "open" => 0, "mkdir"=> 1 , "suffixlen" => $suffixlen, "ErrStr" => \$errstr, ) ); # Install exit handler; must be dynamic to get lexical if ( $options{'CLEANUP'} && -d $tempdir) { _deferred_unlink(undef, $tempdir, 1); } # Return the dir name return $tempdir; } #line 1605 sub mkstemp { croak "Usage: mkstemp(template)" if scalar(@_) != 1; my $template = shift; my ($fh, $path, $errstr); croak "Error in mkstemp using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => 1, "mkdir"=> 0 , "suffixlen" => 0, "ErrStr" => \$errstr, ) ); if (wantarray()) { return ($fh, $path); } else { return $fh; } } #line 1648 sub mkstemps { croak "Usage: mkstemps(template, suffix)" if scalar(@_) != 2; my $template = shift; my $suffix = shift; $template .= $suffix; my ($fh, $path, $errstr); croak "Error in mkstemps using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => 1, "mkdir"=> 0 , "suffixlen" => length($suffix), "ErrStr" => \$errstr, ) ); if (wantarray()) { return ($fh, $path); } else { return $fh; } } #line 1691 #' # for emacs sub mkdtemp { croak "Usage: mkdtemp(template)" if scalar(@_) != 1; my $template = shift; my $suffixlen = 0; if ($^O eq 'VMS') { # dir names can end in delimiters $template =~ m/([\.\]:>]+)$/; $suffixlen = length($1); } if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) { # dir name has a trailing ':' ++$suffixlen; } my ($junk, $tmpdir, $errstr); croak "Error creating temp directory from template $template\: $errstr" unless (($junk, $tmpdir) = _gettemp($template, "open" => 0, "mkdir"=> 1 , "suffixlen" => $suffixlen, "ErrStr" => \$errstr, ) ); return $tmpdir; } #line 1734 sub mktemp { croak "Usage: mktemp(template)" if scalar(@_) != 1; my $template = shift; my ($tmpname, $junk, $errstr); croak "Error getting name to temp file from template $template: $errstr" unless (($junk, $tmpname) = _gettemp($template, "open" => 0, "mkdir"=> 0 , "suffixlen" => 0, "ErrStr" => \$errstr, ) ); return $tmpname; } #line 1796 sub tmpnam { # Retrieve the temporary directory name my $tmpdir = File::Spec->tmpdir; croak "Error temporary directory is not writable" if $tmpdir eq ''; # Use a ten character template and append to tmpdir my $template = File::Spec->catfile($tmpdir, TEMPXXX); if (wantarray() ) { return mkstemp($template); } else { return mktemp($template); } } #line 1832 sub tmpfile { # Simply call tmpnam() in a list context my ($fh, $file) = tmpnam(); # Make sure file is removed when filehandle is closed # This will fail on NFS unlink0($fh, $file) or return undef; return $fh; } #line 1877 sub tempnam { croak 'Usage tempnam($dir, $prefix)' unless scalar(@_) == 2; my ($dir, $prefix) = @_; # Add a string to the prefix $prefix .= 'XXXXXXXX'; # Concatenate the directory to the file my $template = File::Spec->catfile($dir, $prefix); return mktemp($template); } #line 1949 sub unlink0 { croak 'Usage: unlink0(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; cmpstat($fh, $path) or return 0; # attempt remove the file (does not work on some platforms) if (_can_unlink_opened_file()) { # return early (Without unlink) if we have been instructed to retain files. return 1 if $KEEP_ALL; # XXX: do *not* call this on a directory; possible race # resulting in recursive removal croak "unlink0: $path has become a directory!" if -d $path; unlink($path) or return 0; # Stat the filehandle my @fh = stat $fh; print "Link count = $fh[3] \n" if $DEBUG; # Make sure that the link count is zero # - Cygwin provides deferred unlinking, however, # on Win9x the link count remains 1 # On NFS the link count may still be 1 but we cant know that # we are on NFS return ( $fh[3] == 0 or $^O eq 'cygwin' ? 1 : 0); } else { _deferred_unlink($fh, $path, 0); return 1; } } #line 2014 sub cmpstat { croak 'Usage: cmpstat(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; warn "Comparing stat\n" if $DEBUG; # Stat the filehandle - which may be closed if someone has manually # closed the file. Can not turn off warnings without using $^W # unless we upgrade to 5.006 minimum requirement my @fh; { local ($^W) = 0; @fh = stat $fh; } return unless @fh; if ($fh[3] > 1 && $^W) { carp "unlink0: fstat found too many links; SB=@fh" if $^W; } # Stat the path my @path = stat $path; unless (@path) { carp "unlink0: $path is gone already" if $^W; return; } # this is no longer a file, but may be a directory, or worse unless (-f $path) { confess "panic: $path is no longer a file: SB=@fh"; } # Do comparison of each member of the array # On WinNT dev and rdev seem to be different # depending on whether it is a file or a handle. # Cannot simply compare all members of the stat return # Select the ones we can use my @okstat = (0..$#fh); # Use all by default if ($^O eq 'MSWin32') { @okstat = (1,2,3,4,5,7,8,9,10); } elsif ($^O eq 'os2') { @okstat = (0, 2..$#fh); } elsif ($^O eq 'VMS') { # device and file ID are sufficient @okstat = (0, 1); } elsif ($^O eq 'dos') { @okstat = (0,2..7,11..$#fh); } elsif ($^O eq 'mpeix') { @okstat = (0..4,8..10); } # Now compare each entry explicitly by number for (@okstat) { print "Comparing: $_ : $fh[$_] and $path[$_]\n" if $DEBUG; # Use eq rather than == since rdev, blksize, and blocks (6, 11, # and 12) will be '' on platforms that do not support them. This # is fine since we are only comparing integers. unless ($fh[$_] eq $path[$_]) { warn "Did not match $_ element of stat\n" if $DEBUG; return 0; } } return 1; } #line 2107 sub unlink1 { croak 'Usage: unlink1(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; cmpstat($fh, $path) or return 0; # Close the file close( $fh ) or return 0; # Make sure the file is writable (for windows) _force_writable( $path ); # return early (without unlink) if we have been instructed to retain files. return 1 if $KEEP_ALL; # remove the file return unlink($path); } #line 2222 { # protect from using the variable itself my $LEVEL = STANDARD; sub safe_level { my $self = shift; if (@_) { my $level = shift; if (($level != STANDARD) && ($level != MEDIUM) && ($level != HIGH)) { carp "safe_level: Specified level ($level) not STANDARD, MEDIUM or HIGH - ignoring\n" if $^W; } else { # Dont allow this on perl 5.005 or earlier if ($] < 5.006 && $level != STANDARD) { # Cant do MEDIUM or HIGH checks croak "Currently requires perl 5.006 or newer to do the safe checks"; } # Check that we are allowed to change level # Silently ignore if we can not. $LEVEL = $level if _can_do_level($level); } } return $LEVEL; } } #line 2267 { my $TopSystemUID = 10; $TopSystemUID = 197108 if $^O eq 'interix'; # "Administrator" sub top_system_uid { my $self = shift; if (@_) { my $newuid = shift; croak "top_system_uid: UIDs should be numeric" unless $newuid =~ /^\d+$/s; $TopSystemUID = $newuid; } return $TopSystemUID; } } #line 2402 package File::Temp::Dir; use File::Path qw/ rmtree /; use strict; use overload '""' => "STRINGIFY", fallback => 1; # private class specifically to support tempdir objects # created by File::Temp->newdir # ostensibly the same method interface as File::Temp but without # inheriting all the IO::Seekable methods and other cruft # Read-only - returns the name of the temp directory sub dirname { my $self = shift; return $self->{DIRNAME}; } sub STRINGIFY { my $self = shift; return $self->dirname; } sub unlink_on_destroy { my $self = shift; if (@_) { $self->{CLEANUP} = shift; } return $self->{CLEANUP}; } sub DESTROY { my $self = shift; local($., $@, $!, $^E, $?); if ($self->unlink_on_destroy && $$ == $self->{LAUNCHPID} && !$File::Temp::KEEP_ALL) { if (-d $self->{DIRNAME}) { # Some versions of rmtree will abort if you attempt to remove # the directory you are sitting in. We protect that and turn it # into a warning. We do this because this occurs during object # destruction and so can not be caught by the user. eval { rmtree($self->{DIRNAME}, $File::Temp::DEBUG, 0); }; warn $@ if ($@ && $^W); } } } 1; FILE'6df33ade/IO/Compress/Adapter/Deflate.pm B#line 1 "/usr/local/share/perl/5.8.8/IO/Compress/Adapter/Deflate.pm" package IO::Compress::Adapter::Deflate ; use strict; use warnings; use bytes; use IO::Compress::Base::Common 2.015 qw(:Status); use Compress::Raw::Zlib 2.015 qw(Z_OK Z_FINISH MAX_WBITS) ; our ($VERSION); $VERSION = '2.015'; sub mkCompObject { my $crc32 = shift ; my $adler32 = shift ; my $level = shift ; my $strategy = shift ; my ($def, $status) = new Compress::Raw::Zlib::Deflate -AppendOutput => 1, -CRC32 => $crc32, -ADLER32 => $adler32, -Level => $level, -Strategy => $strategy, -WindowBits => - MAX_WBITS; return (undef, "Cannot create Deflate object: $status", $status) if $status != Z_OK; return bless {'Def' => $def, 'Error' => '', } ; } sub compr { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflate($_[0], $_[1]) ; $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub flush { my $self = shift ; my $def = $self->{Def}; my $opt = $_[1] || Z_FINISH; my $status = $def->flush($_[0], $opt); $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub close { my $self = shift ; my $def = $self->{Def}; $def->flush($_[0], Z_FINISH) if defined $def ; } sub reset { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflateReset() ; $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub deflateParams { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflateParams(@_); $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "deflateParams Error: $status"; return STATUS_ERROR; } return STATUS_OK; } #sub total_out #{ # my $self = shift ; # $self->{Def}->total_out(); #} # #sub total_in #{ # my $self = shift ; # $self->{Def}->total_in(); #} sub compressedBytes { my $self = shift ; $self->{Def}->compressedBytes(); } sub uncompressedBytes { my $self = shift ; $self->{Def}->uncompressedBytes(); } sub crc32 { my $self = shift ; $self->{Def}->crc32(); } sub adler32 { my $self = shift ; $self->{Def}->adler32(); } 1; __END__ FILE5b3b2259/IO/Compress/Base.pmQ#line 1 "/usr/local/share/perl/5.8.8/IO/Compress/Base.pm" package IO::Compress::Base ; require 5.004 ; use strict ; use warnings; use IO::Compress::Base::Common 2.015 ; use IO::File ; use Scalar::Util qw(blessed readonly); #use File::Glob; #require Exporter ; use Carp ; use Symbol; use bytes; our (@ISA, $VERSION); @ISA = qw(Exporter IO::File); $VERSION = '2.015'; #Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16. sub saveStatus { my $self = shift ; ${ *$self->{ErrorNo} } = shift() + 0 ; ${ *$self->{Error} } = '' ; return ${ *$self->{ErrorNo} } ; } sub saveErrorString { my $self = shift ; my $retval = shift ; ${ *$self->{Error} } = shift ; ${ *$self->{ErrorNo} } = shift() + 0 if @_ ; return $retval; } sub croakError { my $self = shift ; $self->saveErrorString(0, $_[0]); croak $_[0]; } sub closeError { my $self = shift ; my $retval = shift ; my $errno = *$self->{ErrorNo}; my $error = ${ *$self->{Error} }; $self->close(); *$self->{ErrorNo} = $errno ; ${ *$self->{Error} } = $error ; return $retval; } sub error { my $self = shift ; return ${ *$self->{Error} } ; } sub errorNo { my $self = shift ; return ${ *$self->{ErrorNo} } ; } sub writeAt { my $self = shift ; my $offset = shift; my $data = shift; if (defined *$self->{FH}) { my $here = tell(*$self->{FH}); return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) if $here < 0 ; seek(*$self->{FH}, $offset, SEEK_SET) or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; defined *$self->{FH}->write($data, length $data) or return $self->saveErrorString(undef, $!, $!) ; seek(*$self->{FH}, $here, SEEK_SET) or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; } else { substr(${ *$self->{Buffer} }, $offset, length($data)) = $data ; } return 1; } sub output { my $self = shift ; my $data = shift ; my $last = shift ; return 1 if length $data == 0 && ! $last ; if ( *$self->{FilterEnvelope} ) { *_ = \$data; &{ *$self->{FilterEnvelope} }(); } if (length $data) { if ( defined *$self->{FH} ) { defined *$self->{FH}->write( $data, length $data ) or return $self->saveErrorString(0, $!, $!); } else { ${ *$self->{Buffer} } .= $data ; } } return 1; } sub getOneShotParams { return ( 'MultiStream' => [1, 1, Parse_boolean, 1], ); } sub checkParams { my $self = shift ; my $class = shift ; my $got = shift || IO::Compress::Base::Parameters::new(); $got->parse( { # Generic Parameters 'AutoClose' => [1, 1, Parse_boolean, 0], #'Encode' => [1, 1, Parse_any, undef], 'Strict' => [0, 1, Parse_boolean, 1], 'Append' => [1, 1, Parse_boolean, 0], 'BinModeIn' => [1, 1, Parse_boolean, 0], 'FilterEnvelope' => [1, 1, Parse_any, undef], $self->getExtraParams(), *$self->{OneShot} ? $self->getOneShotParams() : (), }, @_) or $self->croakError("${class}: $got->{Error}") ; return $got ; } sub _create { my $obj = shift; my $got = shift; *$obj->{Closed} = 1 ; my $class = ref $obj; $obj->croakError("$class: Missing Output parameter") if ! @_ && ! $got ; my $outValue = shift ; my $oneShot = 1 ; if (! $got) { $oneShot = 0 ; $got = $obj->checkParams($class, undef, @_) or return undef ; } my $lax = ! $got->value('Strict') ; my $outType = whatIsOutput($outValue); $obj->ckOutputParam($class, $outValue) or return undef ; if ($outType eq 'buffer') { *$obj->{Buffer} = $outValue; } else { my $buff = "" ; *$obj->{Buffer} = \$buff ; } # Merge implies Append my $merge = $got->value('Merge') ; my $appendOutput = $got->value('Append') || $merge ; *$obj->{Append} = $appendOutput; *$obj->{FilterEnvelope} = $got->value('FilterEnvelope') ; if ($merge) { # Switch off Merge mode if output file/buffer is empty/doesn't exist if (($outType eq 'buffer' && length $$outValue == 0 ) || ($outType ne 'buffer' && (! -e $outValue || (-w _ && -z _))) ) { $merge = 0 } } # If output is a file, check that it is writable if ($outType eq 'filename' && -e $outValue && ! -w _) { return $obj->saveErrorString(undef, "Output file '$outValue' is not writable" ) } if ($got->parsed('Encode')) { my $want_encoding = $got->value('Encode'); *$obj->{Encoding} = getEncoding($obj, $class, $want_encoding); } $obj->ckParams($got) or $obj->croakError("${class}: " . $obj->error()); $obj->saveStatus(STATUS_OK) ; my $status ; if (! $merge) { *$obj->{Compress} = $obj->mkComp($got) or return undef; *$obj->{UnCompSize} = new U64 ; *$obj->{CompSize} = new U64 ; if ( $outType eq 'buffer') { ${ *$obj->{Buffer} } = '' unless $appendOutput ; } else { if ($outType eq 'handle') { *$obj->{FH} = $outValue ; setBinModeOutput(*$obj->{FH}) ; $outValue->flush() ; *$obj->{Handle} = 1 ; if ($appendOutput) { seek(*$obj->{FH}, 0, SEEK_END) or return $obj->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; } } elsif ($outType eq 'filename') { my $mode = '>' ; $mode = '>>' if $appendOutput; *$obj->{FH} = new IO::File "$mode $outValue" or return $obj->saveErrorString(undef, "cannot open file '$outValue': $!", $!) ; *$obj->{StdIO} = ($outValue eq '-'); setBinModeOutput(*$obj->{FH}) ; } } *$obj->{Header} = $obj->mkHeader($got) ; $obj->output( *$obj->{Header} ) or return undef; } else { *$obj->{Compress} = $obj->createMerge($outValue, $outType) or return undef; } *$obj->{Closed} = 0 ; *$obj->{AutoClose} = $got->value('AutoClose') ; *$obj->{Output} = $outValue; *$obj->{ClassName} = $class; *$obj->{Got} = $got; *$obj->{OneShot} = 0 ; return $obj ; } sub ckOutputParam { my $self = shift ; my $from = shift ; my $outType = whatIsOutput($_[0]); $self->croakError("$from: output parameter not a filename, filehandle or scalar ref") if ! $outType ; $self->croakError("$from: output filename is undef or null string") if $outType eq 'filename' && (! defined $_[0] || $_[0] eq '') ; $self->croakError("$from: output buffer is read-only") if $outType eq 'buffer' && readonly(${ $_[0] }); return 1; } sub _def { my $obj = shift ; my $class= (caller)[0] ; my $name = (caller(1))[3] ; $obj->croakError("$name: expected at least 1 parameters\n") unless @_ >= 1 ; my $input = shift ; my $haveOut = @_ ; my $output = shift ; my $x = new IO::Compress::Base::Validator($class, *$obj->{Error}, $name, $input, $output) or return undef ; push @_, $output if $haveOut && $x->{Hash}; *$obj->{OneShot} = 1 ; my $got = $obj->checkParams($name, undef, @_) or return undef ; $x->{Got} = $got ; # if ($x->{Hash}) # { # while (my($k, $v) = each %$input) # { # $v = \$input->{$k} # unless defined $v ; # # $obj->_singleTarget($x, 1, $k, $v, @_) # or return undef ; # } # # return keys %$input ; # } if ($x->{GlobMap}) { $x->{oneInput} = 1 ; foreach my $pair (@{ $x->{Pairs} }) { my ($from, $to) = @$pair ; $obj->_singleTarget($x, 1, $from, $to, @_) or return undef ; } return scalar @{ $x->{Pairs} } ; } if (! $x->{oneOutput} ) { my $inFile = ($x->{inType} eq 'filenames' || $x->{inType} eq 'filename'); $x->{inType} = $inFile ? 'filename' : 'buffer'; foreach my $in ($x->{oneInput} ? $input : @$input) { my $out ; $x->{oneInput} = 1 ; $obj->_singleTarget($x, $inFile, $in, \$out, @_) or return undef ; push @$output, \$out ; #if ($x->{outType} eq 'array') # { push @$output, \$out } #else # { $output->{$in} = \$out } } return 1 ; } # finally the 1 to 1 and n to 1 return $obj->_singleTarget($x, 1, $input, $output, @_); croak "should not be here" ; } sub _singleTarget { my $obj = shift ; my $x = shift ; my $inputIsFilename = shift; my $input = shift; if ($x->{oneInput}) { $obj->getFileInfo($x->{Got}, $input) if isaFilename($input) and $inputIsFilename ; my $z = $obj->_create($x->{Got}, @_) or return undef ; defined $z->_wr2($input, $inputIsFilename) or return $z->closeError(undef) ; return $z->close() ; } else { my $afterFirst = 0 ; my $inputIsFilename = ($x->{inType} ne 'array'); my $keep = $x->{Got}->clone(); #for my $element ( ($x->{inType} eq 'hash') ? keys %$input : @$input) for my $element ( @$input) { my $isFilename = isaFilename($element); if ( $afterFirst ++ ) { defined addInterStream($obj, $element, $isFilename) or return $obj->closeError(undef) ; } else { $obj->getFileInfo($x->{Got}, $element) if $isFilename; $obj->_create($x->{Got}, @_) or return undef ; } defined $obj->_wr2($element, $isFilename) or return $obj->closeError(undef) ; *$obj->{Got} = $keep->clone(); } return $obj->close() ; } } sub _wr2 { my $self = shift ; my $source = shift ; my $inputIsFilename = shift; my $input = $source ; if (! $inputIsFilename) { $input = \$source if ! ref $source; } if ( ref $input && ref $input eq 'SCALAR' ) { return $self->syswrite($input, @_) ; } if ( ! ref $input || isaFilehandle($input)) { my $isFilehandle = isaFilehandle($input) ; my $fh = $input ; if ( ! $isFilehandle ) { $fh = new IO::File "<$input" or return $self->saveErrorString(undef, "cannot open file '$input': $!", $!) ; } binmode $fh if *$self->{Got}->valueOrDefault('BinModeIn') ; my $status ; my $buff ; my $count = 0 ; while (($status = read($fh, $buff, 16 * 1024)) > 0) { $count += length $buff; defined $self->syswrite($buff, @_) or return undef ; } return $self->saveErrorString(undef, $!, $!) if $status < 0 ; if ( (!$isFilehandle || *$self->{AutoClose}) && $input ne '-') { $fh->close() or return undef ; } return $count ; } croak "Should not be here"; return undef; } sub addInterStream { my $self = shift ; my $input = shift ; my $inputIsFilename = shift ; if (*$self->{Got}->value('MultiStream')) { $self->getFileInfo(*$self->{Got}, $input) #if isaFilename($input) and $inputIsFilename ; if isaFilename($input) ; # TODO -- newStream needs to allow gzip/zip header to be modified return $self->newStream(); } elsif (*$self->{Got}->value('AutoFlush')) { #return $self->flush(Z_FULL_FLUSH); } return 1 ; } sub getFileInfo { } sub TIEHANDLE { return $_[0] if ref($_[0]); die "OOPS\n" ; } sub UNTIE { my $self = shift ; } sub DESTROY { my $self = shift ; local ($., $@, $!, $^E, $?); $self->close() ; # TODO - memory leak with 5.8.0 - this isn't called until # global destruction # %{ *$self } = () ; undef $self ; } sub filterUncompressed { } sub syswrite { my $self = shift ; my $buffer ; if (ref $_[0] ) { $self->croakError( *$self->{ClassName} . "::write: not a scalar reference" ) unless ref $_[0] eq 'SCALAR' ; $buffer = $_[0] ; } else { $buffer = \$_[0] ; } $] >= 5.008 and ( utf8::downgrade($$buffer, 1) or croak "Wide character in " . *$self->{ClassName} . "::write:"); if (@_ > 1) { my $slen = defined $$buffer ? length($$buffer) : 0; my $len = $slen; my $offset = 0; $len = $_[1] if $_[1] < $len; if (@_ > 2) { $offset = $_[2] || 0; $self->croakError(*$self->{ClassName} . "::write: offset outside string") if $offset > $slen; if ($offset < 0) { $offset += $slen; $self->croakError( *$self->{ClassName} . "::write: offset outside string") if $offset < 0; } my $rem = $slen - $offset; $len = $rem if $rem < $len; } $buffer = \substr($$buffer, $offset, $len) ; } return 0 if ! defined $$buffer || length $$buffer == 0 ; if (*$self->{Encoding}) { $$buffer = *$self->{Encoding}->encode($$buffer); } $self->filterUncompressed($buffer); my $buffer_length = defined $$buffer ? length($$buffer) : 0 ; *$self->{UnCompSize}->add($buffer_length) ; my $outBuffer=''; my $status = *$self->{Compress}->compr($buffer, $outBuffer) ; return $self->saveErrorString(undef, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; *$self->{CompSize}->add(length $outBuffer) ; $self->output($outBuffer) or return undef; return $buffer_length; } sub print { my $self = shift; #if (ref $self) { # $self = *$self{GLOB} ; #} if (defined $\) { if (defined $,) { defined $self->syswrite(join($,, @_) . $\); } else { defined $self->syswrite(join("", @_) . $\); } } else { if (defined $,) { defined $self->syswrite(join($,, @_)); } else { defined $self->syswrite(join("", @_)); } } } sub printf { my $self = shift; my $fmt = shift; defined $self->syswrite(sprintf($fmt, @_)); } sub flush { my $self = shift ; my $outBuffer=''; my $status = *$self->{Compress}->flush($outBuffer, @_) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; if ( defined *$self->{FH} ) { *$self->{FH}->clearerr(); } *$self->{CompSize}->add(length $outBuffer) ; $self->output($outBuffer) or return 0; if ( defined *$self->{FH} ) { defined *$self->{FH}->flush() or return $self->saveErrorString(0, $!, $!); } return 1; } sub newStream { my $self = shift ; $self->_writeTrailer() or return 0 ; my $got = $self->checkParams('newStream', *$self->{Got}, @_) or return 0 ; $self->ckParams($got) or $self->croakError("newStream: $self->{Error}"); *$self->{Compress} = $self->mkComp($got) or return 0; *$self->{Header} = $self->mkHeader($got) ; $self->output(*$self->{Header} ) or return 0; *$self->{UnCompSize}->reset(); *$self->{CompSize}->reset(); return 1 ; } sub reset { my $self = shift ; return *$self->{Compress}->reset() ; } sub _writeTrailer { my $self = shift ; my $trailer = ''; my $status = *$self->{Compress}->close($trailer) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; *$self->{CompSize}->add(length $trailer) ; $trailer .= $self->mkTrailer(); defined $trailer or return 0; return $self->output($trailer); } sub _writeFinalTrailer { my $self = shift ; return $self->output($self->mkFinalTrailer()); } sub close { my $self = shift ; return 1 if *$self->{Closed} || ! *$self->{Compress} ; *$self->{Closed} = 1 ; untie *$self if $] >= 5.008 ; $self->_writeTrailer() or return 0 ; $self->_writeFinalTrailer() or return 0 ; $self->output( "", 1 ) or return 0; if (defined *$self->{FH}) { #if (! *$self->{Handle} || *$self->{AutoClose}) { if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) { $! = 0 ; *$self->{FH}->close() or return $self->saveErrorString(0, $!, $!); } delete *$self->{FH} ; # This delete can set $! in older Perls, so reset the errno $! = 0 ; } return 1; } #sub total_in #sub total_out #sub msg # #sub crc #{ # my $self = shift ; # return *$self->{Compress}->crc32() ; #} # #sub msg #{ # my $self = shift ; # return *$self->{Compress}->msg() ; #} # #sub dict_adler #{ # my $self = shift ; # return *$self->{Compress}->dict_adler() ; #} # #sub get_Level #{ # my $self = shift ; # return *$self->{Compress}->get_Level() ; #} # #sub get_Strategy #{ # my $self = shift ; # return *$self->{Compress}->get_Strategy() ; #} sub tell { my $self = shift ; return *$self->{UnCompSize}->get32bit() ; } sub eof { my $self = shift ; return *$self->{Closed} ; } sub seek { my $self = shift ; my $position = shift; my $whence = shift ; my $here = $self->tell() ; my $target = 0 ; #use IO::Handle qw(SEEK_SET SEEK_CUR SEEK_END); use IO::Handle ; if ($whence == IO::Handle::SEEK_SET) { $target = $position ; } elsif ($whence == IO::Handle::SEEK_CUR || $whence == IO::Handle::SEEK_END) { $target = $here + $position ; } else { $self->croakError(*$self->{ClassName} . "::seek: unknown value, $whence, for whence parameter"); } # short circuit if seeking to current offset return 1 if $target == $here ; # Outlaw any attempt to seek backwards $self->croakError(*$self->{ClassName} . "::seek: cannot seek backwards") if $target < $here ; # Walk the file to the new offset my $offset = $target - $here ; my $buffer ; defined $self->syswrite("\x00" x $offset) or return 0; return 1 ; } sub binmode { 1; # my $self = shift ; # return defined *$self->{FH} # ? binmode *$self->{FH} # : 1 ; } sub fileno { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->fileno() : undef ; } sub opened { my $self = shift ; return ! *$self->{Closed} ; } sub autoflush { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->autoflush(@_) : undef ; } sub input_line_number { return undef ; } sub _notAvailable { my $name = shift ; return sub { croak "$name Not Available: File opened only for output" ; } ; } *read = _notAvailable('read'); *READ = _notAvailable('read'); *readline = _notAvailable('readline'); *READLINE = _notAvailable('readline'); *getc = _notAvailable('getc'); *GETC = _notAvailable('getc'); *FILENO = \&fileno; *PRINT = \&print; *PRINTF = \&printf; *WRITE = \&syswrite; *write = \&syswrite; *SEEK = \&seek; *TELL = \&tell; *EOF = \&eof; *CLOSE = \&close; *BINMODE = \&binmode; #*sysread = \&_notAvailable; #*syswrite = \&_write; 1; __END__ #line 980 FILE#683d70df/IO/Compress/Base/Common.pmS`#line 1 "/usr/local/share/perl/5.8.8/IO/Compress/Base/Common.pm" package IO::Compress::Base::Common; use strict ; use warnings; use bytes; use Carp; use Scalar::Util qw(blessed readonly); use File::GlobMapper; require Exporter; our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE); @ISA = qw(Exporter); $VERSION = '2.015'; @EXPORT = qw( isaFilehandle isaFilename whatIsInput whatIsOutput isaFileGlobString cleanFileGlobString oneTarget setBinModeInput setBinModeOutput ckInOutParams createSelfTiedObject getEncoding WANT_CODE WANT_EXT WANT_UNDEF WANT_HASH STATUS_OK STATUS_ENDSTREAM STATUS_EOF STATUS_ERROR ); %EXPORT_TAGS = ( Status => [qw( STATUS_OK STATUS_ENDSTREAM STATUS_EOF STATUS_ERROR )]); use constant STATUS_OK => 0; use constant STATUS_ENDSTREAM => 1; use constant STATUS_EOF => 2; use constant STATUS_ERROR => -1; sub hasEncode() { if (! defined $HAS_ENCODE) { eval { require Encode; Encode->import(); }; $HAS_ENCODE = $@ ? 0 : 1 ; } return $HAS_ENCODE; } sub getEncoding($$$) { my $obj = shift; my $class = shift ; my $want_encoding = shift ; $obj->croakError("$class: Encode module needed to use -Encode") if ! hasEncode(); my $encoding = Encode::find_encoding($want_encoding); $obj->croakError("$class: Encoding '$want_encoding' is not available") if ! $encoding; return $encoding; } our ($needBinmode); $needBinmode = ($^O eq 'MSWin32' || ($] >= 5.006 && eval ' ${^UNICODE} || ${^UTF8LOCALE} ')) ? 1 : 1 ; sub setBinModeInput($) { my $handle = shift ; binmode $handle if $needBinmode; } sub setBinModeOutput($) { my $handle = shift ; binmode $handle if $needBinmode; } sub isaFilehandle($) { use utf8; # Pragma needed to keep Perl 5.6.0 happy return (defined $_[0] and (UNIVERSAL::isa($_[0],'GLOB') or UNIVERSAL::isa($_[0],'IO::Handle') or UNIVERSAL::isa(\$_[0],'GLOB')) ) } sub isaFilename($) { return (defined $_[0] and ! ref $_[0] and UNIVERSAL::isa(\$_[0], 'SCALAR')); } sub isaFileGlobString { return defined $_[0] && $_[0] =~ /^<.*>$/; } sub cleanFileGlobString { my $string = shift ; $string =~ s/^\s*<\s*(.*)\s*>\s*$/$1/; return $string; } use constant WANT_CODE => 1 ; use constant WANT_EXT => 2 ; use constant WANT_UNDEF => 4 ; #use constant WANT_HASH => 8 ; use constant WANT_HASH => 0 ; sub whatIsInput($;$) { my $got = whatIs(@_); if (defined $got && $got eq 'filename' && defined $_[0] && $_[0] eq '-') { #use IO::File; $got = 'handle'; $_[0] = *STDIN; #$_[0] = new IO::File("<-"); } return $got; } sub whatIsOutput($;$) { my $got = whatIs(@_); if (defined $got && $got eq 'filename' && defined $_[0] && $_[0] eq '-') { $got = 'handle'; $_[0] = *STDOUT; #$_[0] = new IO::File(">-"); } return $got; } sub whatIs ($;$) { return 'handle' if isaFilehandle($_[0]); my $wantCode = defined $_[1] && $_[1] & WANT_CODE ; my $extended = defined $_[1] && $_[1] & WANT_EXT ; my $undef = defined $_[1] && $_[1] & WANT_UNDEF ; my $hash = defined $_[1] && $_[1] & WANT_HASH ; return 'undef' if ! defined $_[0] && $undef ; if (ref $_[0]) { return '' if blessed($_[0]); # is an object #return '' if UNIVERSAL::isa($_[0], 'UNIVERSAL'); # is an object return 'buffer' if UNIVERSAL::isa($_[0], 'SCALAR'); return 'array' if UNIVERSAL::isa($_[0], 'ARRAY') && $extended ; return 'hash' if UNIVERSAL::isa($_[0], 'HASH') && $hash ; return 'code' if UNIVERSAL::isa($_[0], 'CODE') && $wantCode ; return ''; } return 'fileglob' if $extended && isaFileGlobString($_[0]); return 'filename'; } sub oneTarget { return $_[0] =~ /^(code|handle|buffer|filename)$/; } sub IO::Compress::Base::Validator::new { my $class = shift ; my $Class = shift ; my $error_ref = shift ; my $reportClass = shift ; my %data = (Class => $Class, Error => $error_ref, reportClass => $reportClass, ) ; my $obj = bless \%data, $class ; local $Carp::CarpLevel = 1; my $inType = $data{inType} = whatIsInput($_[0], WANT_EXT|WANT_HASH); my $outType = $data{outType} = whatIsOutput($_[1], WANT_EXT|WANT_HASH); my $oneInput = $data{oneInput} = oneTarget($inType); my $oneOutput = $data{oneOutput} = oneTarget($outType); if (! $inType) { $obj->croakError("$reportClass: illegal input parameter") ; #return undef ; } # if ($inType eq 'hash') # { # $obj->{Hash} = 1 ; # $obj->{oneInput} = 1 ; # return $obj->validateHash($_[0]); # } if (! $outType) { $obj->croakError("$reportClass: illegal output parameter") ; #return undef ; } if ($inType ne 'fileglob' && $outType eq 'fileglob') { $obj->croakError("Need input fileglob for outout fileglob"); } # if ($inType ne 'fileglob' && $outType eq 'hash' && $inType ne 'filename' ) # { # $obj->croakError("input must ne filename or fileglob when output is a hash"); # } if ($inType eq 'fileglob' && $outType eq 'fileglob') { $data{GlobMap} = 1 ; $data{inType} = $data{outType} = 'filename'; my $mapper = new File::GlobMapper($_[0], $_[1]); if ( ! $mapper ) { return $obj->saveErrorString($File::GlobMapper::Error) ; } $data{Pairs} = $mapper->getFileMap(); return $obj; } $obj->croakError("$reportClass: input and output $inType are identical") if $inType eq $outType && $_[0] eq $_[1] && $_[0] ne '-' ; if ($inType eq 'fileglob') # && $outType ne 'fileglob' { my $glob = cleanFileGlobString($_[0]); my @inputs = glob($glob); if (@inputs == 0) { # TODO -- legal or die? die "globmap matched zero file -- legal or die???" ; } elsif (@inputs == 1) { $obj->validateInputFilenames($inputs[0]) or return undef; $_[0] = $inputs[0] ; $data{inType} = 'filename' ; $data{oneInput} = 1; } else { $obj->validateInputFilenames(@inputs) or return undef; $_[0] = [ @inputs ] ; $data{inType} = 'filenames' ; } } elsif ($inType eq 'filename') { $obj->validateInputFilenames($_[0]) or return undef; } elsif ($inType eq 'array') { $data{inType} = 'filenames' ; $obj->validateInputArray($_[0]) or return undef ; } return $obj->saveErrorString("$reportClass: output buffer is read-only") if $outType eq 'buffer' && readonly(${ $_[1] }); if ($outType eq 'filename' ) { $obj->croakError("$reportClass: output filename is undef or null string") if ! defined $_[1] || $_[1] eq '' ; if (-e $_[1]) { if (-d _ ) { return $obj->saveErrorString("output file '$_[1]' is a directory"); } } } return $obj ; } sub IO::Compress::Base::Validator::saveErrorString { my $self = shift ; ${ $self->{Error} } = shift ; return undef; } sub IO::Compress::Base::Validator::croakError { my $self = shift ; $self->saveErrorString($_[0]); croak $_[0]; } sub IO::Compress::Base::Validator::validateInputFilenames { my $self = shift ; foreach my $filename (@_) { $self->croakError("$self->{reportClass}: input filename is undef or null string") if ! defined $filename || $filename eq '' ; next if $filename eq '-'; if (! -e $filename ) { return $self->saveErrorString("input file '$filename' does not exist"); } if (-d _ ) { return $self->saveErrorString("input file '$filename' is a directory"); } if (! -r _ ) { return $self->saveErrorString("cannot open file '$filename': $!"); } } return 1 ; } sub IO::Compress::Base::Validator::validateInputArray { my $self = shift ; if ( @{ $_[0] } == 0 ) { return $self->saveErrorString("empty array reference") ; } foreach my $element ( @{ $_[0] } ) { my $inType = whatIsInput($element); if (! $inType) { $self->croakError("unknown input parameter") ; } elsif($inType eq 'filename') { $self->validateInputFilenames($element) or return undef ; } else { $self->croakError("not a filename") ; } } return 1 ; } #sub IO::Compress::Base::Validator::validateHash #{ # my $self = shift ; # my $href = shift ; # # while (my($k, $v) = each %$href) # { # my $ktype = whatIsInput($k); # my $vtype = whatIsOutput($v, WANT_EXT|WANT_UNDEF) ; # # if ($ktype ne 'filename') # { # return $self->saveErrorString("hash key not filename") ; # } # # my %valid = map { $_ => 1 } qw(filename buffer array undef handle) ; # if (! $valid{$vtype}) # { # return $self->saveErrorString("hash value not ok") ; # } # } # # return $self ; #} sub createSelfTiedObject { my $class = shift || (caller)[0] ; my $error_ref = shift ; my $obj = bless Symbol::gensym(), ref($class) || $class; tie *$obj, $obj if $] >= 5.005; *$obj->{Closed} = 1 ; $$error_ref = ''; *$obj->{Error} = $error_ref ; my $errno = 0 ; *$obj->{ErrorNo} = \$errno ; return $obj; } #package Parse::Parameters ; # # #require Exporter; #our ($VERSION, @ISA, @EXPORT); #$VERSION = '2.000_08'; #@ISA = qw(Exporter); $EXPORT_TAGS{Parse} = [qw( ParseParameters Parse_any Parse_unsigned Parse_signed Parse_boolean Parse_custom Parse_string Parse_multiple Parse_writable_scalar ) ]; push @EXPORT, @{ $EXPORT_TAGS{Parse} } ; use constant Parse_any => 0x01; use constant Parse_unsigned => 0x02; use constant Parse_signed => 0x04; use constant Parse_boolean => 0x08; use constant Parse_string => 0x10; use constant Parse_custom => 0x12; #use constant Parse_store_ref => 0x100 ; use constant Parse_multiple => 0x100 ; use constant Parse_writable => 0x200 ; use constant Parse_writable_scalar => 0x400 | Parse_writable ; use constant OFF_PARSED => 0 ; use constant OFF_TYPE => 1 ; use constant OFF_DEFAULT => 2 ; use constant OFF_FIXED => 3 ; use constant OFF_FIRST_ONLY => 4 ; use constant OFF_STICKY => 5 ; sub ParseParameters { my $level = shift || 0 ; my $sub = (caller($level + 1))[3] ; local $Carp::CarpLevel = 1 ; return $_[1] if @_ == 2 && defined $_[1] && UNIVERSAL::isa($_[1], "IO::Compress::Base::Parameters"); my $p = new IO::Compress::Base::Parameters() ; $p->parse(@_) or croak "$sub: $p->{Error}" ; return $p; } #package IO::Compress::Base::Parameters; use strict; use warnings; use Carp; sub IO::Compress::Base::Parameters::new { my $class = shift ; my $obj = { Error => '', Got => {}, } ; #return bless $obj, ref($class) || $class || __PACKAGE__ ; return bless $obj, 'IO::Compress::Base::Parameters' ; } sub IO::Compress::Base::Parameters::setError { my $self = shift ; my $error = shift ; my $retval = @_ ? shift : undef ; $self->{Error} = $error ; return $retval; } #sub getError #{ # my $self = shift ; # return $self->{Error} ; #} sub IO::Compress::Base::Parameters::parse { my $self = shift ; my $default = shift ; my $got = $self->{Got} ; my $firstTime = keys %{ $got } == 0 ; my $other; my (@Bad) ; my @entered = () ; # Allow the options to be passed as a hash reference or # as the complete hash. if (@_ == 0) { @entered = () ; } elsif (@_ == 1) { my $href = $_[0] ; return $self->setError("Expected even number of parameters, got 1") if ! defined $href or ! ref $href or ref $href ne "HASH" ; foreach my $key (keys %$href) { push @entered, $key ; push @entered, \$href->{$key} ; } } else { my $count = @_; return $self->setError("Expected even number of parameters, got $count") if $count % 2 != 0 ; for my $i (0.. $count / 2 - 1) { if ($_[2 * $i] eq '__xxx__') { $other = $_[2 * $i + 1] ; } else { push @entered, $_[2 * $i] ; push @entered, \$_[2 * $i + 1] ; } } } while (my ($key, $v) = each %$default) { croak "need 4 params [@$v]" if @$v != 4 ; my ($first_only, $sticky, $type, $value) = @$v ; my $x ; $self->_checkType($key, \$value, $type, 0, \$x) or return undef ; $key = lc $key; if ($firstTime || ! $sticky) { $x = [ $x ] if $type & Parse_multiple; $got->{$key} = [0, $type, $value, $x, $first_only, $sticky] ; } $got->{$key}[OFF_PARSED] = 0 ; } my %parsed = (); if ($other) { for my $key (keys %$default) { my $canonkey = lc $key; if ($other->parsed($canonkey)) { my $value = $other->value($canonkey); #print "SET '$canonkey' to $value [$$value]\n"; ++ $parsed{$canonkey}; $got->{$canonkey}[OFF_PARSED] = 1; $got->{$canonkey}[OFF_DEFAULT] = $value; $got->{$canonkey}[OFF_FIXED] = $value; } } } for my $i (0.. @entered / 2 - 1) { my $key = $entered[2* $i] ; my $value = $entered[2* $i+1] ; #print "Key [$key] Value [$value]" ; #print defined $$value ? "[$$value]\n" : "[undef]\n"; $key =~ s/^-// ; my $canonkey = lc $key; if ($got->{$canonkey} && ($firstTime || ! $got->{$canonkey}[OFF_FIRST_ONLY] )) { my $type = $got->{$canonkey}[OFF_TYPE] ; my $parsed = $parsed{$canonkey}; ++ $parsed{$canonkey}; return $self->setError("Muliple instances of '$key' found") if $parsed && $type & Parse_multiple == 0 ; my $s ; $self->_checkType($key, $value, $type, 1, \$s) or return undef ; $value = $$value ; if ($type & Parse_multiple) { $got->{$canonkey}[OFF_PARSED] = 1; push @{ $got->{$canonkey}[OFF_FIXED] }, $s ; } else { $got->{$canonkey} = [1, $type, $value, $s] ; } } else { push (@Bad, $key) } } if (@Bad) { my ($bad) = join(", ", @Bad) ; return $self->setError("unknown key value(s) @Bad") ; } return 1; } sub IO::Compress::Base::Parameters::_checkType { my $self = shift ; my $key = shift ; my $value = shift ; my $type = shift ; my $validate = shift ; my $output = shift; #local $Carp::CarpLevel = $level ; #print "PARSE $type $key $value $validate $sub\n" ; if ($type & Parse_writable_scalar) { return $self->setError("Parameter '$key' not writable") if $validate && readonly $$value ; if (ref $$value) { return $self->setError("Parameter '$key' not a scalar reference") if $validate && ref $$value ne 'SCALAR' ; $$output = $$value ; } else { return $self->setError("Parameter '$key' not a scalar") if $validate && ref $value ne 'SCALAR' ; $$output = $value ; } return 1; } # if ($type & Parse_store_ref) # { # #$value = $$value # # if ref ${ $value } ; # # $$output = $value ; # return 1; # } $value = $$value ; if ($type & Parse_any) { $$output = $value ; return 1; } elsif ($type & Parse_unsigned) { return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be an unsigned int, got '$value'") if $validate && $value !~ /^\d+$/; $$output = defined $value ? $value : 0 ; return 1; } elsif ($type & Parse_signed) { return $self->setError("Parameter '$key' must be a signed int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be a signed int, got '$value'") if $validate && $value !~ /^-?\d+$/; $$output = defined $value ? $value : 0 ; return 1 ; } elsif ($type & Parse_boolean) { return $self->setError("Parameter '$key' must be an int, got '$value'") if $validate && defined $value && $value !~ /^\d*$/; $$output = defined $value ? $value != 0 : 0 ; return 1; } elsif ($type & Parse_string) { $$output = defined $value ? $value : "" ; return 1; } $$output = $value ; return 1; } sub IO::Compress::Base::Parameters::parsed { my $self = shift ; my $name = shift ; return $self->{Got}{lc $name}[OFF_PARSED] ; } sub IO::Compress::Base::Parameters::value { my $self = shift ; my $name = shift ; if (@_) { $self->{Got}{lc $name}[OFF_PARSED] = 1; $self->{Got}{lc $name}[OFF_DEFAULT] = $_[0] ; $self->{Got}{lc $name}[OFF_FIXED] = $_[0] ; } return $self->{Got}{lc $name}[OFF_FIXED] ; } sub IO::Compress::Base::Parameters::valueOrDefault { my $self = shift ; my $name = shift ; my $default = shift ; my $value = $self->{Got}{lc $name}[OFF_DEFAULT] ; return $value if defined $value ; return $default ; } sub IO::Compress::Base::Parameters::wantValue { my $self = shift ; my $name = shift ; return defined $self->{Got}{lc $name}[OFF_DEFAULT] ; } sub IO::Compress::Base::Parameters::clone { my $self = shift ; my $obj = { }; my %got ; while (my ($k, $v) = each %{ $self->{Got} }) { $got{$k} = [ @$v ]; } $obj->{Error} = $self->{Error}; $obj->{Got} = \%got ; return bless $obj, 'IO::Compress::Base::Parameters' ; } package U64; use constant MAX32 => 0xFFFFFFFF ; use constant LOW => 0 ; use constant HIGH => 1; sub new { my $class = shift ; my $high = 0 ; my $low = 0 ; if (@_ == 2) { $high = shift ; $low = shift ; } elsif (@_ == 1) { $low = shift ; } bless [$low, $high], $class; } sub newUnpack_V64 { my $string = shift; my ($low, $hi) = unpack "V V", $string ; bless [ $low, $hi ], "U64"; } sub newUnpack_V32 { my $string = shift; my $low = unpack "V", $string ; bless [ $low, 0 ], "U64"; } sub reset { my $self = shift; $self->[HIGH] = $self->[LOW] = 0; } sub clone { my $self = shift; bless [ @$self ], ref $self ; } sub getHigh { my $self = shift; return $self->[HIGH]; } sub getLow { my $self = shift; return $self->[LOW]; } sub get32bit { my $self = shift; return $self->[LOW]; } sub add { my $self = shift; my $value = shift; if (ref $value eq 'U64') { $self->[HIGH] += $value->[HIGH] ; $value = $value->[LOW]; } my $available = MAX32 - $self->[LOW] ; if ($value > $available) { ++ $self->[HIGH] ; $self->[LOW] = $value - $available - 1; } else { $self->[LOW] += $value ; } } sub equal { my $self = shift; my $other = shift; return $self->[LOW] == $other->[LOW] && $self->[HIGH] == $other->[HIGH] ; } sub getPacked_V64 { my $self = shift; return pack "V V", @$self ; } sub getPacked_V32 { my $self = shift; return pack "V", $self->[LOW] ; } sub pack_V64 { my $low = shift; return pack "V V", $low, 0; } package IO::Compress::Base::Common; 1; FILEf754b50d/IO/Compress/Gzip.pm#line 1 "/usr/local/share/perl/5.8.8/IO/Compress/Gzip.pm" package IO::Compress::Gzip ; require 5.004 ; use strict ; use warnings; use bytes; use IO::Compress::RawDeflate 2.015 ; use Compress::Raw::Zlib 2.015 ; use IO::Compress::Base::Common 2.015 qw(:Status :Parse createSelfTiedObject); use IO::Compress::Gzip::Constants 2.015 ; use IO::Compress::Zlib::Extra 2.015 ; BEGIN { if (defined &utf8::downgrade ) { *noUTF8 = \&utf8::downgrade } else { *noUTF8 = sub {} } } require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $GzipError); $VERSION = '2.015'; $GzipError = '' ; @ISA = qw(Exporter IO::Compress::RawDeflate); @EXPORT_OK = qw( $GzipError gzip ) ; %EXPORT_TAGS = %IO::Compress::RawDeflate::DEFLATE_CONSTANTS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); sub new { my $class = shift ; my $obj = createSelfTiedObject($class, \$GzipError); $obj->_create(undef, @_); } sub gzip { my $obj = createSelfTiedObject(undef, \$GzipError); return $obj->_def(@_); } #sub newHeader #{ # my $self = shift ; # #return GZIP_MINIMUM_HEADER ; # return $self->mkHeader(*$self->{Got}); #} sub getExtraParams { my $self = shift ; return ( # zlib behaviour $self->getZlibParams(), # Gzip header fields 'Minimal' => [0, 1, Parse_boolean, 0], 'Comment' => [0, 1, Parse_any, undef], 'Name' => [0, 1, Parse_any, undef], 'Time' => [0, 1, Parse_any, undef], 'TextFlag' => [0, 1, Parse_boolean, 0], 'HeaderCRC' => [0, 1, Parse_boolean, 0], 'OS_Code' => [0, 1, Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code], 'ExtraField'=> [0, 1, Parse_any, undef], 'ExtraFlags'=> [0, 1, Parse_any, undef], ); } sub ckParams { my $self = shift ; my $got = shift ; # gzip always needs crc32 $got->value('CRC32' => 1); return 1 if $got->value('Merge') ; my $strict = $got->value('Strict') ; { if (! $got->parsed('Time') ) { # Modification time defaults to now. $got->value('Time' => time) ; } # Check that the Name & Comment don't have embedded NULLs # Also check that they only contain ISO 8859-1 chars. if ($got->parsed('Name') && defined $got->value('Name')) { my $name = $got->value('Name'); return $self->saveErrorString(undef, "Null Character found in Name", Z_DATA_ERROR) if $strict && $name =~ /\x00/ ; return $self->saveErrorString(undef, "Non ISO 8859-1 Character found in Name", Z_DATA_ERROR) if $strict && $name =~ /$GZIP_FNAME_INVALID_CHAR_RE/o ; } if ($got->parsed('Comment') && defined $got->value('Comment')) { my $comment = $got->value('Comment'); return $self->saveErrorString(undef, "Null Character found in Comment", Z_DATA_ERROR) if $strict && $comment =~ /\x00/ ; return $self->saveErrorString(undef, "Non ISO 8859-1 Character found in Comment", Z_DATA_ERROR) if $strict && $comment =~ /$GZIP_FCOMMENT_INVALID_CHAR_RE/o; } if ($got->parsed('OS_Code') ) { my $value = $got->value('OS_Code'); return $self->saveErrorString(undef, "OS_Code must be between 0 and 255, got '$value'") if $value < 0 || $value > 255 ; } # gzip only supports Deflate at present $got->value('Method' => Z_DEFLATED) ; if ( ! $got->parsed('ExtraFlags')) { $got->value('ExtraFlags' => 2) if $got->value('Level') == Z_BEST_SPEED ; $got->value('ExtraFlags' => 4) if $got->value('Level') == Z_BEST_COMPRESSION ; } my $data = $got->value('ExtraField') ; if (defined $data) { my $bad = IO::Compress::Zlib::Extra::parseExtraField($data, $strict, 1) ; return $self->saveErrorString(undef, "Error with ExtraField Parameter: $bad", Z_DATA_ERROR) if $bad ; $got->value('ExtraField', $data) ; } } return 1; } sub mkTrailer { my $self = shift ; return pack("V V", *$self->{Compress}->crc32(), *$self->{UnCompSize}->get32bit()); } sub getInverseClass { return ('IO::Uncompress::Gunzip', \$IO::Uncompress::Gunzip::GunzipError); } sub getFileInfo { my $self = shift ; my $params = shift; my $filename = shift ; my $defaultTime = (stat($filename))[9] ; $params->value('Name' => $filename) if ! $params->parsed('Name') ; $params->value('Time' => $defaultTime) if ! $params->parsed('Time') ; } sub mkHeader { my $self = shift ; my $param = shift ; # stort-circuit if a minimal header is requested. return GZIP_MINIMUM_HEADER if $param->value('Minimal') ; # METHOD my $method = $param->valueOrDefault('Method', GZIP_CM_DEFLATED) ; # FLAGS my $flags = GZIP_FLG_DEFAULT ; $flags |= GZIP_FLG_FTEXT if $param->value('TextFlag') ; $flags |= GZIP_FLG_FHCRC if $param->value('HeaderCRC') ; $flags |= GZIP_FLG_FEXTRA if $param->wantValue('ExtraField') ; $flags |= GZIP_FLG_FNAME if $param->wantValue('Name') ; $flags |= GZIP_FLG_FCOMMENT if $param->wantValue('Comment') ; # MTIME my $time = $param->valueOrDefault('Time', GZIP_MTIME_DEFAULT) ; # EXTRA FLAGS my $extra_flags = $param->valueOrDefault('ExtraFlags', GZIP_XFL_DEFAULT); # OS CODE my $os_code = $param->valueOrDefault('OS_Code', GZIP_OS_DEFAULT) ; my $out = pack("C4 V C C", GZIP_ID1, # ID1 GZIP_ID2, # ID2 $method, # Compression Method $flags, # Flags $time, # Modification Time $extra_flags, # Extra Flags $os_code, # Operating System Code ) ; # EXTRA if ($flags & GZIP_FLG_FEXTRA) { my $extra = $param->value('ExtraField') ; $out .= pack("v", length $extra) . $extra ; } # NAME if ($flags & GZIP_FLG_FNAME) { my $name .= $param->value('Name') ; $name =~ s/\x00.*$//; $out .= $name ; # Terminate the filename with NULL unless it already is $out .= GZIP_NULL_BYTE if !length $name or substr($name, 1, -1) ne GZIP_NULL_BYTE ; } # COMMENT if ($flags & GZIP_FLG_FCOMMENT) { my $comment .= $param->value('Comment') ; $comment =~ s/\x00.*$//; $out .= $comment ; # Terminate the comment with NULL unless it already is $out .= GZIP_NULL_BYTE if ! length $comment or substr($comment, 1, -1) ne GZIP_NULL_BYTE; } # HEADER CRC $out .= pack("v", crc32($out) & 0x00FF ) if $param->value('HeaderCRC') ; noUTF8($out); return $out ; } sub mkFinalTrailer { return ''; } 1; __END__ #line 1202 FILE&bb513083/IO/Compress/Gzip/Constants.pm#line 1 "/usr/local/share/perl/5.8.8/IO/Compress/Gzip/Constants.pm" package IO::Compress::Gzip::Constants; use strict ; use warnings; use bytes; require Exporter; our ($VERSION, @ISA, @EXPORT, %GZIP_OS_Names); our ($GZIP_FNAME_INVALID_CHAR_RE, $GZIP_FCOMMENT_INVALID_CHAR_RE); $VERSION = '2.015'; @ISA = qw(Exporter); @EXPORT= qw( GZIP_ID_SIZE GZIP_ID1 GZIP_ID2 GZIP_FLG_DEFAULT GZIP_FLG_FTEXT GZIP_FLG_FHCRC GZIP_FLG_FEXTRA GZIP_FLG_FNAME GZIP_FLG_FCOMMENT GZIP_FLG_RESERVED GZIP_CM_DEFLATED GZIP_MIN_HEADER_SIZE GZIP_TRAILER_SIZE GZIP_MTIME_DEFAULT GZIP_XFL_DEFAULT GZIP_FEXTRA_HEADER_SIZE GZIP_FEXTRA_MAX_SIZE GZIP_FEXTRA_SUBFIELD_HEADER_SIZE GZIP_FEXTRA_SUBFIELD_ID_SIZE GZIP_FEXTRA_SUBFIELD_LEN_SIZE GZIP_FEXTRA_SUBFIELD_MAX_SIZE $GZIP_FNAME_INVALID_CHAR_RE $GZIP_FCOMMENT_INVALID_CHAR_RE GZIP_FHCRC_SIZE GZIP_ISIZE_MAX GZIP_ISIZE_MOD_VALUE GZIP_NULL_BYTE GZIP_OS_DEFAULT %GZIP_OS_Names GZIP_MINIMUM_HEADER ); # Constant names derived from RFC 1952 use constant GZIP_ID_SIZE => 2 ; use constant GZIP_ID1 => 0x1F; use constant GZIP_ID2 => 0x8B; use constant GZIP_MIN_HEADER_SIZE => 10 ;# minimum gzip header size use constant GZIP_TRAILER_SIZE => 8 ; use constant GZIP_FLG_DEFAULT => 0x00 ; use constant GZIP_FLG_FTEXT => 0x01 ; use constant GZIP_FLG_FHCRC => 0x02 ; # called CONTINUATION in gzip use constant GZIP_FLG_FEXTRA => 0x04 ; use constant GZIP_FLG_FNAME => 0x08 ; use constant GZIP_FLG_FCOMMENT => 0x10 ; #use constant GZIP_FLG_ENCRYPTED => 0x20 ; # documented in gzip sources use constant GZIP_FLG_RESERVED => (0x20 | 0x40 | 0x80) ; use constant GZIP_XFL_DEFAULT => 0x00 ; use constant GZIP_MTIME_DEFAULT => 0x00 ; use constant GZIP_FEXTRA_HEADER_SIZE => 2 ; use constant GZIP_FEXTRA_MAX_SIZE => 0xFF ; use constant GZIP_FEXTRA_SUBFIELD_ID_SIZE => 2 ; use constant GZIP_FEXTRA_SUBFIELD_LEN_SIZE => 2 ; use constant GZIP_FEXTRA_SUBFIELD_HEADER_SIZE => GZIP_FEXTRA_SUBFIELD_ID_SIZE + GZIP_FEXTRA_SUBFIELD_LEN_SIZE; use constant GZIP_FEXTRA_SUBFIELD_MAX_SIZE => GZIP_FEXTRA_MAX_SIZE - GZIP_FEXTRA_SUBFIELD_HEADER_SIZE ; if (ord('A') == 193) { # EBCDIC $GZIP_FNAME_INVALID_CHAR_RE = '[\x00-\x3f\xff]'; $GZIP_FCOMMENT_INVALID_CHAR_RE = '[\x00-\x0a\x11-\x14\x16-\x3f\xff]'; } else { $GZIP_FNAME_INVALID_CHAR_RE = '[\x00-\x1F\x7F-\x9F]'; $GZIP_FCOMMENT_INVALID_CHAR_RE = '[\x00-\x09\x11-\x1F\x7F-\x9F]'; } use constant GZIP_FHCRC_SIZE => 2 ; # aka CONTINUATION in gzip use constant GZIP_CM_DEFLATED => 8 ; use constant GZIP_NULL_BYTE => "\x00"; use constant GZIP_ISIZE_MAX => 0xFFFFFFFF ; use constant GZIP_ISIZE_MOD_VALUE => GZIP_ISIZE_MAX + 1 ; # OS Names sourced from http://www.gzip.org/format.txt use constant GZIP_OS_DEFAULT=> 0xFF ; %GZIP_OS_Names = ( 0 => 'MS-DOS', 1 => 'Amiga', 2 => 'VMS', 3 => 'Unix', 4 => 'VM/CMS', 5 => 'Atari TOS', 6 => 'HPFS (OS/2, NT)', 7 => 'Macintosh', 8 => 'Z-System', 9 => 'CP/M', 10 => 'TOPS-20', 11 => 'NTFS (NT)', 12 => 'SMS QDOS', 13 => 'Acorn RISCOS', 14 => 'VFAT file system (Win95, NT)', 15 => 'MVS', 16 => 'BeOS', 17 => 'Tandem/NSK', 18 => 'THEOS', GZIP_OS_DEFAULT() => 'Unknown', ) ; use constant GZIP_MINIMUM_HEADER => pack("C4 V C C", GZIP_ID1, GZIP_ID2, GZIP_CM_DEFLATED, GZIP_FLG_DEFAULT, GZIP_MTIME_DEFAULT, GZIP_XFL_DEFAULT, GZIP_OS_DEFAULT) ; 1; FILE"5a25f5b2/IO/Compress/RawDeflate.pmx#line 1 "/usr/local/share/perl/5.8.8/IO/Compress/RawDeflate.pm" package IO::Compress::RawDeflate ; # create RFC1951 # use strict ; use warnings; use bytes; use IO::Compress::Base 2.015 ; use IO::Compress::Base::Common 2.015 qw(:Status createSelfTiedObject); use IO::Compress::Adapter::Deflate 2.015 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError); $VERSION = '2.015'; $RawDeflateError = ''; @ISA = qw(Exporter IO::Compress::Base); @EXPORT_OK = qw( $RawDeflateError rawdeflate ) ; %EXPORT_TAGS = ( flush => [qw{ Z_NO_FLUSH Z_PARTIAL_FLUSH Z_SYNC_FLUSH Z_FULL_FLUSH Z_FINISH Z_BLOCK }], level => [qw{ Z_NO_COMPRESSION Z_BEST_SPEED Z_BEST_COMPRESSION Z_DEFAULT_COMPRESSION }], strategy => [qw{ Z_FILTERED Z_HUFFMAN_ONLY Z_RLE Z_FIXED Z_DEFAULT_STRATEGY }], ); { my %seen; foreach (keys %EXPORT_TAGS ) { push @{$EXPORT_TAGS{constants}}, grep { !$seen{$_}++ } @{ $EXPORT_TAGS{$_} } } $EXPORT_TAGS{all} = $EXPORT_TAGS{constants} ; } %DEFLATE_CONSTANTS = %EXPORT_TAGS; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); sub new { my $class = shift ; my $obj = createSelfTiedObject($class, \$RawDeflateError); return $obj->_create(undef, @_); } sub rawdeflate { my $obj = createSelfTiedObject(undef, \$RawDeflateError); return $obj->_def(@_); } sub ckParams { my $self = shift ; my $got = shift; return 1 ; } sub mkComp { my $self = shift ; my $got = shift ; my ($obj, $errstr, $errno) = IO::Compress::Adapter::Deflate::mkCompObject( $got->value('CRC32'), $got->value('Adler32'), $got->value('Level'), $got->value('Strategy') ); return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; return $obj; } sub mkHeader { my $self = shift ; return ''; } sub mkTrailer { my $self = shift ; return ''; } sub mkFinalTrailer { return ''; } #sub newHeader #{ # my $self = shift ; # return ''; #} sub getExtraParams { my $self = shift ; return $self->getZlibParams(); } sub getZlibParams { my $self = shift ; use IO::Compress::Base::Common 2.015 qw(:Parse); use Compress::Raw::Zlib 2.015 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY); return ( # zlib behaviour #'Method' => [0, 1, Parse_unsigned, Z_DEFLATED], 'Level' => [0, 1, Parse_signed, Z_DEFAULT_COMPRESSION], 'Strategy' => [0, 1, Parse_signed, Z_DEFAULT_STRATEGY], 'CRC32' => [0, 1, Parse_boolean, 0], 'ADLER32' => [0, 1, Parse_boolean, 0], 'Merge' => [1, 1, Parse_boolean, 0], ); } sub getInverseClass { return ('IO::Uncompress::RawInflate', \$IO::Uncompress::RawInflate::RawInflateError); } sub getFileInfo { my $self = shift ; my $params = shift; my $file = shift ; } use IO::Seekable qw(SEEK_SET); sub createMerge { my $self = shift ; my $outValue = shift ; my $outType = shift ; my ($invClass, $error_ref) = $self->getInverseClass(); eval "require $invClass" or die "aaaahhhh" ; my $inf = $invClass->new( $outValue, Transparent => 0, #Strict => 1, AutoClose => 0, Scan => 1) or return $self->saveErrorString(undef, "Cannot create InflateScan object: $$error_ref" ) ; my $end_offset = 0; $inf->scan() or return $self->saveErrorString(undef, "Error Scanning: $$error_ref", $inf->errorNo) ; $inf->zap($end_offset) or return $self->saveErrorString(undef, "Error Zapping: $$error_ref", $inf->errorNo) ; my $def = *$self->{Compress} = $inf->createDeflate(); *$self->{Header} = *$inf->{Info}{Header}; *$self->{UnCompSize} = *$inf->{UnCompSize}->clone(); *$self->{CompSize} = *$inf->{CompSize}->clone(); # TODO -- fix this #*$self->{CompSize} = new U64(0, *$self->{UnCompSize_32bit}); if ( $outType eq 'buffer') { substr( ${ *$self->{Buffer} }, $end_offset) = '' } elsif ($outType eq 'handle' || $outType eq 'filename') { *$self->{FH} = *$inf->{FH} ; delete *$inf->{FH}; *$self->{FH}->flush() ; *$self->{Handle} = 1 if $outType eq 'handle'; #seek(*$self->{FH}, $end_offset, SEEK_SET) *$self->{FH}->seek($end_offset, SEEK_SET) or return $self->saveErrorString(undef, $!, $!) ; } return $def ; } #### zlib specific methods sub deflateParams { my $self = shift ; my $level = shift ; my $strategy = shift ; my $status = *$self->{Compress}->deflateParams(Level => $level, Strategy => $strategy) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; return 1; } 1; __END__ #line 977 FILE"f701c215/IO/Compress/Zlib/Extra.pm#line 1 "/usr/local/share/perl/5.8.8/IO/Compress/Zlib/Extra.pm" package IO::Compress::Zlib::Extra; require 5.004 ; use strict ; use warnings; use bytes; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS); $VERSION = '2.015'; use IO::Compress::Gzip::Constants 2.015 ; sub ExtraFieldError { return $_[0]; return "Error with ExtraField Parameter: $_[0]" ; } sub validateExtraFieldPair { my $pair = shift ; my $strict = shift; my $gzipMode = shift ; return ExtraFieldError("Not an array ref") unless ref $pair && ref $pair eq 'ARRAY'; return ExtraFieldError("SubField must have two parts") unless @$pair == 2 ; return ExtraFieldError("SubField ID is a reference") if ref $pair->[0] ; return ExtraFieldError("SubField Data is a reference") if ref $pair->[1] ; # ID is exactly two chars return ExtraFieldError("SubField ID not two chars long") unless length $pair->[0] == GZIP_FEXTRA_SUBFIELD_ID_SIZE ; # Check that the 2nd byte of the ID isn't 0 return ExtraFieldError("SubField ID 2nd byte is 0x00") if $strict && $gzipMode && substr($pair->[0], 1, 1) eq "\x00" ; return ExtraFieldError("SubField Data too long") if length $pair->[1] > GZIP_FEXTRA_SUBFIELD_MAX_SIZE ; return undef ; } sub parseRawExtra { my $data = shift ; my $extraRef = shift; my $strict = shift; my $gzipMode = shift ; #my $lax = shift ; #return undef # if $lax ; my $XLEN = length $data ; return ExtraFieldError("Too Large") if $XLEN > GZIP_FEXTRA_MAX_SIZE; my $offset = 0 ; while ($offset < $XLEN) { return ExtraFieldError("Truncated in FEXTRA Body Section") if $offset + GZIP_FEXTRA_SUBFIELD_HEADER_SIZE > $XLEN ; my $id = substr($data, $offset, GZIP_FEXTRA_SUBFIELD_ID_SIZE); $offset += GZIP_FEXTRA_SUBFIELD_ID_SIZE; my $subLen = unpack("v", substr($data, $offset, GZIP_FEXTRA_SUBFIELD_LEN_SIZE)); $offset += GZIP_FEXTRA_SUBFIELD_LEN_SIZE ; return ExtraFieldError("Truncated in FEXTRA Body Section") if $offset + $subLen > $XLEN ; my $bad = validateExtraFieldPair( [$id, substr($data, $offset, $subLen)], $strict, $gzipMode ); return $bad if $bad ; push @$extraRef, [$id => substr($data, $offset, $subLen)] if defined $extraRef;; $offset += $subLen ; } return undef ; } sub mkSubField { my $id = shift ; my $data = shift ; return $id . pack("v", length $data) . $data ; } sub parseExtraField { my $dataRef = $_[0]; my $strict = $_[1]; my $gzipMode = $_[2]; #my $lax = @_ == 2 ? $_[1] : 1; # ExtraField can be any of # # -ExtraField => $data # # -ExtraField => [$id1, $data1, # $id2, $data2] # ... # ] # # -ExtraField => [ [$id1 => $data1], # [$id2 => $data2], # ... # ] # # -ExtraField => { $id1 => $data1, # $id2 => $data2, # ... # } if ( ! ref $dataRef ) { return undef if ! $strict; return parseRawExtra($dataRef, undef, 1, $gzipMode); } #my $data = $$dataRef; my $data = $dataRef; my $out = '' ; if (ref $data eq 'ARRAY') { if (ref $data->[0]) { foreach my $pair (@$data) { return ExtraFieldError("Not list of lists") unless ref $pair eq 'ARRAY' ; my $bad = validateExtraFieldPair($pair, $strict, $gzipMode) ; return $bad if $bad ; $out .= mkSubField(@$pair); } } else { return ExtraFieldError("Not even number of elements") unless @$data % 2 == 0; for (my $ix = 0; $ix <= length(@$data) -1 ; $ix += 2) { my $bad = validateExtraFieldPair([$data->[$ix], $data->[$ix+1]], $strict, $gzipMode) ; return $bad if $bad ; $out .= mkSubField($data->[$ix], $data->[$ix+1]); } } } elsif (ref $data eq 'HASH') { while (my ($id, $info) = each %$data) { my $bad = validateExtraFieldPair([$id, $info], $strict, $gzipMode); return $bad if $bad ; $out .= mkSubField($id, $info); } } else { return ExtraFieldError("Not a scalar, array ref or hash ref") ; } return ExtraFieldError("Too Large") if length $out > GZIP_FEXTRA_MAX_SIZE; $_[0] = $out ; return undef; } 1; __END__ FILE)eb4f3936/IO/Uncompress/Adapter/Inflate.pm #line 1 "/usr/local/share/perl/5.8.8/IO/Uncompress/Adapter/Inflate.pm" package IO::Uncompress::Adapter::Inflate; use strict; use warnings; use bytes; use IO::Compress::Base::Common 2.015 qw(:Status); use Compress::Raw::Zlib 2.015 qw(Z_OK Z_DATA_ERROR Z_STREAM_END Z_FINISH MAX_WBITS); our ($VERSION); $VERSION = '2.015'; sub mkUncompObject { my $crc32 = shift || 1; my $adler32 = shift || 1; my $scan = shift || 0; my $inflate ; my $status ; if ($scan) { ($inflate, $status) = new Compress::Raw::Zlib::InflateScan CRC32 => $crc32, ADLER32 => $adler32, WindowBits => - MAX_WBITS ; } else { ($inflate, $status) = new Compress::Raw::Zlib::Inflate AppendOutput => 1, CRC32 => $crc32, ADLER32 => $adler32, WindowBits => - MAX_WBITS ; } return (undef, "Could not create Inflation object: $status", $status) if $status != Z_OK ; return bless {'Inf' => $inflate, 'CompSize' => 0, 'UnCompSize' => 0, 'Error' => '', } ; } sub uncompr { my $self = shift ; my $from = shift ; my $to = shift ; my $eof = shift ; my $inf = $self->{Inf}; my $status = $inf->inflate($from, $to, $eof); $self->{ErrorNo} = $status; if ($status != Z_STREAM_END && $eof) { $self->{Error} = "unexpected end of file"; return STATUS_ERROR; } if ($status != Z_OK && $status != Z_STREAM_END ) { $self->{Error} = "Inflation Error: $status"; return STATUS_ERROR; } return STATUS_OK if $status == Z_OK ; return STATUS_ENDSTREAM if $status == Z_STREAM_END ; return STATUS_ERROR ; } sub reset { my $self = shift ; $self->{Inf}->inflateReset(); return STATUS_OK ; } #sub count #{ # my $self = shift ; # $self->{Inf}->inflateCount(); #} sub crc32 { my $self = shift ; $self->{Inf}->crc32(); } sub compressedBytes { my $self = shift ; $self->{Inf}->compressedBytes(); } sub uncompressedBytes { my $self = shift ; $self->{Inf}->uncompressedBytes(); } sub adler32 { my $self = shift ; $self->{Inf}->adler32(); } sub sync { my $self = shift ; ( $self->{Inf}->inflateSync(@_) == Z_OK) ? STATUS_OK : STATUS_ERROR ; } sub getLastBlockOffset { my $self = shift ; $self->{Inf}->getLastBlockOffset(); } sub getEndOffset { my $self = shift ; $self->{Inf}->getEndOffset(); } sub resetLastBlockByte { my $self = shift ; $self->{Inf}->resetLastBlockByte(@_); } sub createDeflateStream { my $self = shift ; my $deflate = $self->{Inf}->createDeflateStream(@_); return bless {'Def' => $deflate, 'CompSize' => 0, 'UnCompSize' => 0, 'Error' => '', }, 'IO::Compress::Adapter::Deflate'; } 1; __END__ FILE624c170f/IO/Uncompress/Base.pm#line 1 "/usr/local/share/perl/5.8.8/IO/Uncompress/Base.pm" package IO::Uncompress::Base ; use strict ; use warnings; use bytes; our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS); @ISA = qw(Exporter IO::File); $VERSION = '2.015'; use constant G_EOF => 0 ; use constant G_ERR => -1 ; use IO::Compress::Base::Common 2.015 ; #use Parse::Parameters ; use IO::File ; use Symbol; use Scalar::Util qw(readonly); use List::Util qw(min); use Carp ; %EXPORT_TAGS = ( ); push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; #Exporter::export_ok_tags('all') ; sub smartRead { my $self = $_[0]; my $out = $_[1]; my $size = $_[2]; $$out = "" ; my $offset = 0 ; if (defined *$self->{InputLength}) { return 0 if *$self->{InputLengthRemaining} <= 0 ; $size = min($size, *$self->{InputLengthRemaining}); } if ( length *$self->{Prime} ) { #$$out = substr(*$self->{Prime}, 0, $size, '') ; $$out = substr(*$self->{Prime}, 0, $size) ; substr(*$self->{Prime}, 0, $size) = '' ; if (length $$out == $size) { *$self->{InputLengthRemaining} -= length $$out if defined *$self->{InputLength}; return length $$out ; } $offset = length $$out ; } my $get_size = $size - $offset ; if (defined *$self->{FH}) { if ($offset) { # Not using this # # *$self->{FH}->read($$out, $get_size, $offset); # # because the filehandle may not support the offset parameter # An example is Net::FTP my $tmp = ''; *$self->{FH}->read($tmp, $get_size) > 0 && (substr($$out, $offset) = $tmp); } else { *$self->{FH}->read($$out, $get_size) } } elsif (defined *$self->{InputEvent}) { my $got = 1 ; while (length $$out < $size) { last if ($got = *$self->{InputEvent}->($$out, $get_size)) <= 0; } if (length $$out > $size ) { #*$self->{Prime} = substr($$out, $size, length($$out), ''); *$self->{Prime} = substr($$out, $size, length($$out)); substr($$out, $size, length($$out)) = ''; } *$self->{EventEof} = 1 if $got <= 0 ; } else { no warnings 'uninitialized'; my $buf = *$self->{Buffer} ; $$buf = '' unless defined $$buf ; #$$out = '' unless defined $$out ; substr($$out, $offset) = substr($$buf, *$self->{BufferOffset}, $get_size); if (*$self->{ConsumeInput}) { substr($$buf, 0, $get_size) = '' } else { *$self->{BufferOffset} += length($$out) - $offset } } *$self->{InputLengthRemaining} -= length($$out) #- $offset if defined *$self->{InputLength}; $self->saveStatus(length $$out < 0 ? STATUS_ERROR : STATUS_OK) ; return length $$out; } sub pushBack { my $self = shift ; return if ! defined $_[0] || length $_[0] == 0 ; if (defined *$self->{FH} || defined *$self->{InputEvent} ) { *$self->{Prime} = $_[0] . *$self->{Prime} ; *$self->{InputLengthRemaining} += length($_[0]); } else { my $len = length $_[0]; if($len > *$self->{BufferOffset}) { *$self->{Prime} = substr($_[0], 0, $len - *$self->{BufferOffset}) . *$self->{Prime} ; *$self->{InputLengthRemaining} = *$self->{InputLength}; *$self->{BufferOffset} = 0 } else { *$self->{InputLengthRemaining} += length($_[0]); *$self->{BufferOffset} -= length($_[0]) ; } } } sub smartSeek { my $self = shift ; my $offset = shift ; my $truncate = shift; #print "smartSeek to $offset\n"; # TODO -- need to take prime into account if (defined *$self->{FH}) { *$self->{FH}->seek($offset, SEEK_SET) } else { *$self->{BufferOffset} = $offset ; substr(${ *$self->{Buffer} }, *$self->{BufferOffset}) = '' if $truncate; return 1; } } sub smartWrite { my $self = shift ; my $out_data = shift ; if (defined *$self->{FH}) { # flush needed for 5.8.0 defined *$self->{FH}->write($out_data, length $out_data) && defined *$self->{FH}->flush() ; } else { my $buf = *$self->{Buffer} ; substr($$buf, *$self->{BufferOffset}, length $out_data) = $out_data ; *$self->{BufferOffset} += length($out_data) ; return 1; } } sub smartReadExact { return $_[0]->smartRead($_[1], $_[2]) == $_[2]; } sub smartEof { my ($self) = $_[0]; local $.; return 0 if length *$self->{Prime} || *$self->{PushMode}; if (defined *$self->{FH}) { # Could use # # *$self->{FH}->eof() # # here, but this can cause trouble if # the filehandle is itself a tied handle, but it uses sysread. # Then we get into mixing buffered & non-buffered IO, which will cause trouble my $info = $self->getErrInfo(); my $buffer = ''; my $status = $self->smartRead(\$buffer, 1); $self->pushBack($buffer) if length $buffer; $self->setErrInfo($info); return $status == 0 ; } elsif (defined *$self->{InputEvent}) { *$self->{EventEof} } else { *$self->{BufferOffset} >= length(${ *$self->{Buffer} }) } } sub clearError { my $self = shift ; *$self->{ErrorNo} = 0 ; ${ *$self->{Error} } = '' ; } sub getErrInfo { my $self = shift ; return [ *$self->{ErrorNo}, ${ *$self->{Error} } ] ; } sub setErrInfo { my $self = shift ; my $ref = shift; *$self->{ErrorNo} = $ref->[0] ; ${ *$self->{Error} } = $ref->[1] ; } sub saveStatus { my $self = shift ; my $errno = shift() + 0 ; #return $errno unless $errno || ! defined *$self->{ErrorNo}; #return $errno unless $errno ; *$self->{ErrorNo} = $errno; ${ *$self->{Error} } = '' ; return *$self->{ErrorNo} ; } sub saveErrorString { my $self = shift ; my $retval = shift ; #return $retval if ${ *$self->{Error} }; ${ *$self->{Error} } = shift ; *$self->{ErrorNo} = shift() + 0 if @_ ; #warn "saveErrorString: " . ${ *$self->{Error} } . " " . *$self->{Error} . "\n" ; return $retval; } sub croakError { my $self = shift ; $self->saveErrorString(0, $_[0]); croak $_[0]; } sub closeError { my $self = shift ; my $retval = shift ; my $errno = *$self->{ErrorNo}; my $error = ${ *$self->{Error} }; $self->close(); *$self->{ErrorNo} = $errno ; ${ *$self->{Error} } = $error ; return $retval; } sub error { my $self = shift ; return ${ *$self->{Error} } ; } sub errorNo { my $self = shift ; return *$self->{ErrorNo}; } sub HeaderError { my ($self) = shift; return $self->saveErrorString(undef, "Header Error: $_[0]", STATUS_ERROR); } sub TrailerError { my ($self) = shift; return $self->saveErrorString(G_ERR, "Trailer Error: $_[0]", STATUS_ERROR); } sub TruncatedHeader { my ($self) = shift; return $self->HeaderError("Truncated in $_[0] Section"); } sub TruncatedTrailer { my ($self) = shift; return $self->TrailerError("Truncated in $_[0] Section"); } sub postCheckParams { return 1; } sub checkParams { my $self = shift ; my $class = shift ; my $got = shift || IO::Compress::Base::Parameters::new(); my $Valid = { 'BlockSize' => [1, 1, Parse_unsigned, 16 * 1024], 'AutoClose' => [1, 1, Parse_boolean, 0], 'Strict' => [1, 1, Parse_boolean, 0], 'Append' => [1, 1, Parse_boolean, 0], 'Prime' => [1, 1, Parse_any, undef], 'MultiStream' => [1, 1, Parse_boolean, 0], 'Transparent' => [1, 1, Parse_any, 1], 'Scan' => [1, 1, Parse_boolean, 0], 'InputLength' => [1, 1, Parse_unsigned, undef], 'BinModeOut' => [1, 1, Parse_boolean, 0], #'Encode' => [1, 1, Parse_any, undef], #'ConsumeInput' => [1, 1, Parse_boolean, 0], $self->getExtraParams(), #'Todo - Revert to ordinary file on end Z_STREAM_END'=> 0, # ContinueAfterEof } ; $Valid->{TrailingData} = [1, 1, Parse_writable_scalar, undef] if *$self->{OneShot} ; $got->parse($Valid, @_ ) or $self->croakError("${class}: $got->{Error}") ; $self->postCheckParams($got) or $self->croakError("${class}: " . $self->error()) ; return $got; } sub _create { my $obj = shift; my $got = shift; my $append_mode = shift ; my $class = ref $obj; $obj->croakError("$class: Missing Input parameter") if ! @_ && ! $got ; my $inValue = shift ; *$obj->{OneShot} = 0 ; if (! $got) { $got = $obj->checkParams($class, undef, @_) or return undef ; } my $inType = whatIsInput($inValue, 1); $obj->ckInputParam($class, $inValue, 1) or return undef ; *$obj->{InNew} = 1; $obj->ckParams($got) or $obj->croakError("${class}: " . *$obj->{Error}); if ($inType eq 'buffer' || $inType eq 'code') { *$obj->{Buffer} = $inValue ; *$obj->{InputEvent} = $inValue if $inType eq 'code' ; } else { if ($inType eq 'handle') { *$obj->{FH} = $inValue ; *$obj->{Handle} = 1 ; # Need to rewind for Scan *$obj->{FH}->seek(0, SEEK_SET) if $got->value('Scan'); } else { my $mode = '<'; $mode = '+<' if $got->value('Scan'); *$obj->{StdIO} = ($inValue eq '-'); *$obj->{FH} = new IO::File "$mode $inValue" or return $obj->saveErrorString(undef, "cannot open file '$inValue': $!", $!) ; } *$obj->{LineNo} = $. = 0; setBinModeInput(*$obj->{FH}) ; my $buff = "" ; *$obj->{Buffer} = \$buff ; } if ($got->parsed('Encode')) { my $want_encoding = $got->value('Encode'); *$obj->{Encoding} = getEncoding($obj, $class, $want_encoding); } *$obj->{InputLength} = $got->parsed('InputLength') ? $got->value('InputLength') : undef ; *$obj->{InputLengthRemaining} = $got->value('InputLength'); *$obj->{BufferOffset} = 0 ; *$obj->{AutoClose} = $got->value('AutoClose'); *$obj->{Strict} = $got->value('Strict'); *$obj->{BlockSize} = $got->value('BlockSize'); *$obj->{Append} = $got->value('Append'); *$obj->{AppendOutput} = $append_mode || $got->value('Append'); *$obj->{ConsumeInput} = $got->value('ConsumeInput'); *$obj->{Transparent} = $got->value('Transparent'); *$obj->{MultiStream} = $got->value('MultiStream'); # TODO - move these two into RawDeflate *$obj->{Scan} = $got->value('Scan'); *$obj->{ParseExtra} = $got->value('ParseExtra') || $got->value('Strict') ; *$obj->{Type} = ''; *$obj->{Prime} = $got->value('Prime') || '' ; *$obj->{Pending} = ''; *$obj->{Plain} = 0; *$obj->{PlainBytesRead} = 0; *$obj->{InflatedBytesRead} = 0; *$obj->{UnCompSize} = new U64; *$obj->{CompSize} = new U64; *$obj->{TotalInflatedBytesRead} = 0; *$obj->{NewStream} = 0 ; *$obj->{EventEof} = 0 ; *$obj->{ClassName} = $class ; *$obj->{Params} = $got ; if (*$obj->{ConsumeInput}) { *$obj->{InNew} = 0; *$obj->{Closed} = 0; return $obj } my $status = $obj->mkUncomp($got); return undef unless defined $status; if ( ! $status) { return undef unless *$obj->{Transparent}; $obj->clearError(); *$obj->{Type} = 'plain'; *$obj->{Plain} = 1; #$status = $obj->mkIdentityUncomp($class, $got); $obj->pushBack(*$obj->{HeaderPending}) ; } push @{ *$obj->{InfoList} }, *$obj->{Info} ; $obj->saveStatus(STATUS_OK) ; *$obj->{InNew} = 0; *$obj->{Closed} = 0; return $obj; } sub ckInputParam { my $self = shift ; my $from = shift ; my $inType = whatIsInput($_[0], $_[1]); $self->croakError("$from: input parameter not a filename, filehandle, array ref or scalar ref") if ! $inType ; if ($inType eq 'filename' ) { $self->croakError("$from: input filename is undef or null string") if ! defined $_[0] || $_[0] eq '' ; if ($_[0] ne '-' && ! -e $_[0] ) { return $self->saveErrorString(undef, "input file '$_[0]' does not exist", STATUS_ERROR); } } return 1; } sub _inf { my $obj = shift ; my $class = (caller)[0] ; my $name = (caller(1))[3] ; $obj->croakError("$name: expected at least 1 parameters\n") unless @_ >= 1 ; my $input = shift ; my $haveOut = @_ ; my $output = shift ; my $x = new IO::Compress::Base::Validator($class, *$obj->{Error}, $name, $input, $output) or return undef ; push @_, $output if $haveOut && $x->{Hash}; *$obj->{OneShot} = 1 ; my $got = $obj->checkParams($name, undef, @_) or return undef ; if ($got->parsed('TrailingData')) { *$obj->{TrailingData} = $got->value('TrailingData'); } *$obj->{MultiStream} = $got->value('MultiStream'); $got->value('MultiStream', 0); $x->{Got} = $got ; # if ($x->{Hash}) # { # while (my($k, $v) = each %$input) # { # $v = \$input->{$k} # unless defined $v ; # # $obj->_singleTarget($x, $k, $v, @_) # or return undef ; # } # # return keys %$input ; # } if ($x->{GlobMap}) { $x->{oneInput} = 1 ; foreach my $pair (@{ $x->{Pairs} }) { my ($from, $to) = @$pair ; $obj->_singleTarget($x, $from, $to, @_) or return undef ; } return scalar @{ $x->{Pairs} } ; } if (! $x->{oneOutput} ) { my $inFile = ($x->{inType} eq 'filenames' || $x->{inType} eq 'filename'); $x->{inType} = $inFile ? 'filename' : 'buffer'; foreach my $in ($x->{oneInput} ? $input : @$input) { my $out ; $x->{oneInput} = 1 ; $obj->_singleTarget($x, $in, $output, @_) or return undef ; } return 1 ; } # finally the 1 to 1 and n to 1 return $obj->_singleTarget($x, $input, $output, @_); croak "should not be here" ; } sub retErr { my $x = shift ; my $string = shift ; ${ $x->{Error} } = $string ; return undef ; } sub _singleTarget { my $self = shift ; my $x = shift ; my $input = shift; my $output = shift; my $buff = ''; $x->{buff} = \$buff ; my $fh ; if ($x->{outType} eq 'filename') { my $mode = '>' ; $mode = '>>' if $x->{Got}->value('Append') ; $x->{fh} = new IO::File "$mode $output" or return retErr($x, "cannot open file '$output': $!") ; binmode $x->{fh} if $x->{Got}->valueOrDefault('BinModeOut'); } elsif ($x->{outType} eq 'handle') { $x->{fh} = $output; binmode $x->{fh} if $x->{Got}->valueOrDefault('BinModeOut'); if ($x->{Got}->value('Append')) { seek($x->{fh}, 0, SEEK_END) or return retErr($x, "Cannot seek to end of output filehandle: $!") ; } } elsif ($x->{outType} eq 'buffer' ) { $$output = '' unless $x->{Got}->value('Append'); $x->{buff} = $output ; } if ($x->{oneInput}) { defined $self->_rd2($x, $input, $output) or return undef; } else { for my $element ( ($x->{inType} eq 'hash') ? keys %$input : @$input) { defined $self->_rd2($x, $element, $output) or return undef ; } } if ( ($x->{outType} eq 'filename' && $output ne '-') || ($x->{outType} eq 'handle' && $x->{Got}->value('AutoClose'))) { $x->{fh}->close() or return retErr($x, $!); delete $x->{fh}; } return 1 ; } sub _rd2 { my $self = shift ; my $x = shift ; my $input = shift; my $output = shift; my $z = createSelfTiedObject($x->{Class}, *$self->{Error}); $z->_create($x->{Got}, 1, $input, @_) or return undef ; my $status ; my $fh = $x->{fh}; while (1) { while (($status = $z->read($x->{buff})) > 0) { if ($fh) { print $fh ${ $x->{buff} } or return $z->saveErrorString(undef, "Error writing to output file: $!", $!); ${ $x->{buff} } = '' ; } } if (! $x->{oneOutput} ) { my $ot = $x->{outType} ; if ($ot eq 'array') { push @$output, $x->{buff} } elsif ($ot eq 'hash') { $output->{$input} = $x->{buff} } my $buff = ''; $x->{buff} = \$buff; } last unless *$self->{MultiStream}; $status = $z->nextStream(); last unless $status == 1 ; } return $z->closeError(undef) if $status < 0 ; ${ *$self->{TrailingData} } = $z->trailingData() if defined *$self->{TrailingData} ; $z->close() or return undef ; return 1 ; } sub TIEHANDLE { return $_[0] if ref($_[0]); die "OOPS\n" ; } sub UNTIE { my $self = shift ; } sub getHeaderInfo { my $self = shift ; wantarray ? @{ *$self->{InfoList} } : *$self->{Info}; } sub readBlock { my $self = shift ; my $buff = shift ; my $size = shift ; if (defined *$self->{CompressedInputLength}) { if (*$self->{CompressedInputLengthRemaining} == 0) { delete *$self->{CompressedInputLength}; *$self->{CompressedInputLengthDone} = 1; return STATUS_OK ; } $size = min($size, *$self->{CompressedInputLengthRemaining} ); *$self->{CompressedInputLengthRemaining} -= $size ; } my $status = $self->smartRead($buff, $size) ; return $self->saveErrorString(STATUS_ERROR, "Error Reading Data") if $status < 0 ; if ($status == 0 ) { *$self->{Closed} = 1 ; *$self->{EndStream} = 1 ; return $self->saveErrorString(STATUS_ERROR, "unexpected end of file", STATUS_ERROR); } return STATUS_OK; } sub postBlockChk { return STATUS_OK; } sub _raw_read { # return codes # >0 - ok, number of bytes read # =0 - ok, eof # <0 - not ok my $self = shift ; return G_EOF if *$self->{Closed} ; #return G_EOF if !length *$self->{Pending} && *$self->{EndStream} ; return G_EOF if *$self->{EndStream} ; my $buffer = shift ; my $scan_mode = shift ; if (*$self->{Plain}) { my $tmp_buff ; my $len = $self->smartRead(\$tmp_buff, *$self->{BlockSize}) ; return $self->saveErrorString(G_ERR, "Error reading data: $!", $!) if $len < 0 ; if ($len == 0 ) { *$self->{EndStream} = 1 ; } else { *$self->{PlainBytesRead} += $len ; $$buffer .= $tmp_buff; } return $len ; } if (*$self->{NewStream}) { $self->gotoNextStream() > 0 or return G_ERR; # For the headers that actually uncompressed data, put the # uncompressed data into the output buffer. $$buffer .= *$self->{Pending} ; my $len = length *$self->{Pending} ; *$self->{Pending} = ''; return $len; } my $temp_buf = ''; my $outSize = 0; my $status = $self->readBlock(\$temp_buf, *$self->{BlockSize}, $outSize) ; return G_ERR if $status == STATUS_ERROR ; my $buf_len = 0; if ($status == STATUS_OK) { my $beforeC_len = length $temp_buf; my $before_len = defined $$buffer ? length $$buffer : 0 ; $status = *$self->{Uncomp}->uncompr(\$temp_buf, $buffer, defined *$self->{CompressedInputLengthDone} || $self->smartEof(), $outSize); return $self->saveErrorString(G_ERR, *$self->{Uncomp}{Error}, *$self->{Uncomp}{ErrorNo}) if $self->saveStatus($status) == STATUS_ERROR; $self->postBlockChk($buffer, $before_len) == STATUS_OK or return G_ERR; $buf_len = defined $$buffer ? length($$buffer) - $before_len : 0; *$self->{CompSize}->add($beforeC_len - length $temp_buf) ; *$self->{InflatedBytesRead} += $buf_len ; *$self->{TotalInflatedBytesRead} += $buf_len ; *$self->{UnCompSize}->add($buf_len) ; $self->filterUncompressed($buffer); if (*$self->{Encoding}) { $$buffer = *$self->{Encoding}->decode($$buffer); } } if ($status == STATUS_ENDSTREAM) { *$self->{EndStream} = 1 ; $self->pushBack($temp_buf) ; $temp_buf = ''; my $trailer; my $trailer_size = *$self->{Info}{TrailerLength} ; my $got = 0; if (*$self->{Info}{TrailerLength}) { $got = $self->smartRead(\$trailer, $trailer_size) ; } if ($got == $trailer_size) { $self->chkTrailer($trailer) == STATUS_OK or return G_ERR; } else { return $self->TrailerError("trailer truncated. Expected " . "$trailer_size bytes, got $got") if *$self->{Strict}; $self->pushBack($trailer) ; } # TODO - if want to file file pointer, do it here if (! $self->smartEof()) { *$self->{NewStream} = 1 ; if (*$self->{MultiStream}) { *$self->{EndStream} = 0 ; return $buf_len ; } } } # return the number of uncompressed bytes read return $buf_len ; } sub reset { my $self = shift ; return *$self->{Uncomp}->reset(); } sub filterUncompressed { } #sub isEndStream #{ # my $self = shift ; # return *$self->{NewStream} || # *$self->{EndStream} ; #} sub nextStream { my $self = shift ; my $status = $self->gotoNextStream(); $status == 1 or return $status ; *$self->{TotalInflatedBytesRead} = 0 ; *$self->{LineNo} = $. = 0; return 1; } sub gotoNextStream { my $self = shift ; if (! *$self->{NewStream}) { my $status = 1; my $buffer ; # TODO - make this more efficient if know the offset for the end of # the stream and seekable $status = $self->read($buffer) while $status > 0 ; return $status if $status < 0; } *$self->{NewStream} = 0 ; *$self->{EndStream} = 0 ; $self->reset(); *$self->{UnCompSize}->reset(); *$self->{CompSize}->reset(); my $magic = $self->ckMagic(); #*$self->{EndStream} = 0 ; if ( ! defined $magic) { if (! *$self->{Transparent} ) { *$self->{EndStream} = 1 ; return 0; } $self->clearError(); *$self->{Type} = 'plain'; *$self->{Plain} = 1; $self->pushBack(*$self->{HeaderPending}) ; } else { *$self->{Info} = $self->readHeader($magic); if ( ! defined *$self->{Info} ) { *$self->{EndStream} = 1 ; return -1; } } push @{ *$self->{InfoList} }, *$self->{Info} ; return 1; } sub streamCount { my $self = shift ; return 1 if ! defined *$self->{InfoList}; return scalar @{ *$self->{InfoList} } ; } sub read { # return codes # >0 - ok, number of bytes read # =0 - ok, eof # <0 - not ok my $self = shift ; return G_EOF if *$self->{Closed} ; my $buffer ; if (ref $_[0] ) { $self->croakError(*$self->{ClassName} . "::read: buffer parameter is read-only") if readonly(${ $_[0] }); $self->croakError(*$self->{ClassName} . "::read: not a scalar reference $_[0]" ) unless ref $_[0] eq 'SCALAR' ; $buffer = $_[0] ; } else { $self->croakError(*$self->{ClassName} . "::read: buffer parameter is read-only") if readonly($_[0]); $buffer = \$_[0] ; } my $length = $_[1] ; my $offset = $_[2] || 0; if (! *$self->{AppendOutput}) { if (! $offset) { $$buffer = '' ; } else { if ($offset > length($$buffer)) { $$buffer .= "\x00" x ($offset - length($$buffer)); } else { substr($$buffer, $offset) = ''; } } } return G_EOF if !length *$self->{Pending} && *$self->{EndStream} ; # the core read will return 0 if asked for 0 bytes return 0 if defined $length && $length == 0 ; $length = $length || 0; $self->croakError(*$self->{ClassName} . "::read: length parameter is negative") if $length < 0 ; # Short-circuit if this is a simple read, with no length # or offset specified. unless ( $length || $offset) { if (length *$self->{Pending}) { $$buffer .= *$self->{Pending} ; my $len = length *$self->{Pending}; *$self->{Pending} = '' ; return $len ; } else { my $len = 0; $len = $self->_raw_read($buffer) while ! *$self->{EndStream} && $len == 0 ; return $len ; } } # Need to jump through more hoops - either length or offset # or both are specified. my $out_buffer = *$self->{Pending} ; while (! *$self->{EndStream} && length($out_buffer) < $length) { my $buf_len = $self->_raw_read(\$out_buffer); return $buf_len if $buf_len < 0 ; } $length = length $out_buffer if length($out_buffer) < $length ; return 0 if $length == 0 ; $$buffer = '' if ! defined $$buffer; $offset = length $$buffer if *$self->{AppendOutput} ; *$self->{Pending} = $out_buffer; $out_buffer = \*$self->{Pending} ; #substr($$buffer, $offset) = substr($$out_buffer, 0, $length, '') ; substr($$buffer, $offset) = substr($$out_buffer, 0, $length) ; substr($$out_buffer, 0, $length) = '' ; return $length ; } sub _getline { my $self = shift ; # Slurp Mode if ( ! defined $/ ) { my $data ; 1 while $self->read($data) > 0 ; return \$data ; } # Record Mode if ( ref $/ eq 'SCALAR' && ${$/} =~ /^\d+$/ && ${$/} > 0) { my $reclen = ${$/} ; my $data ; $self->read($data, $reclen) ; return \$data ; } # Paragraph Mode if ( ! length $/ ) { my $paragraph ; while ($self->read($paragraph) > 0 ) { if ($paragraph =~ s/^(.*?\n\n+)//s) { *$self->{Pending} = $paragraph ; my $par = $1 ; return \$par ; } } return \$paragraph; } # $/ isn't empty, or a reference, so it's Line Mode. { my $line ; my $offset; my $p = \*$self->{Pending} ; if (length(*$self->{Pending}) && ($offset = index(*$self->{Pending}, $/)) >=0) { my $l = substr(*$self->{Pending}, 0, $offset + length $/ ); substr(*$self->{Pending}, 0, $offset + length $/) = ''; return \$l; } while ($self->read($line) > 0 ) { my $offset = index($line, $/); if ($offset >= 0) { my $l = substr($line, 0, $offset + length $/ ); substr($line, 0, $offset + length $/) = ''; $$p = $line; return \$l; } } return \$line; } } sub getline { my $self = shift; my $current_append = *$self->{AppendOutput} ; *$self->{AppendOutput} = 1; my $lineref = $self->_getline(); $. = ++ *$self->{LineNo} if defined $$lineref ; *$self->{AppendOutput} = $current_append; return $$lineref ; } sub getlines { my $self = shift; $self->croakError(*$self->{ClassName} . "::getlines: called in scalar context\n") unless wantarray; my($line, @lines); push(@lines, $line) while defined($line = $self->getline); return @lines; } sub READLINE { goto &getlines if wantarray; goto &getline; } sub getc { my $self = shift; my $buf; return $buf if $self->read($buf, 1); return undef; } sub ungetc { my $self = shift; *$self->{Pending} = "" unless defined *$self->{Pending} ; *$self->{Pending} = $_[0] . *$self->{Pending} ; } sub trailingData { my $self = shift ; if (defined *$self->{FH} || defined *$self->{InputEvent} ) { return *$self->{Prime} ; } else { my $buf = *$self->{Buffer} ; my $offset = *$self->{BufferOffset} ; return substr($$buf, $offset) ; } } sub eof { my $self = shift ; return (*$self->{Closed} || (!length *$self->{Pending} && ( $self->smartEof() || *$self->{EndStream}))) ; } sub tell { my $self = shift ; my $in ; if (*$self->{Plain}) { $in = *$self->{PlainBytesRead} ; } else { $in = *$self->{TotalInflatedBytesRead} ; } my $pending = length *$self->{Pending} ; return 0 if $pending > $in ; return $in - $pending ; } sub close { # todo - what to do if close is called before the end of the gzip file # do we remember any trailing data? my $self = shift ; return 1 if *$self->{Closed} ; untie *$self if $] >= 5.008 ; my $status = 1 ; if (defined *$self->{FH}) { if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) { #if ( *$self->{AutoClose}) { local $.; $! = 0 ; $status = *$self->{FH}->close(); return $self->saveErrorString(0, $!, $!) if !*$self->{InNew} && $self->saveStatus($!) != 0 ; } delete *$self->{FH} ; $! = 0 ; } *$self->{Closed} = 1 ; return 1; } sub DESTROY { my $self = shift ; local ($., $@, $!, $^E, $?); $self->close() ; } sub seek { my $self = shift ; my $position = shift; my $whence = shift ; my $here = $self->tell() ; my $target = 0 ; if ($whence == SEEK_SET) { $target = $position ; } elsif ($whence == SEEK_CUR) { $target = $here + $position ; } elsif ($whence == SEEK_END) { $target = $position ; $self->croakError(*$self->{ClassName} . "::seek: SEEK_END not allowed") ; } else { $self->croakError(*$self->{ClassName} ."::seek: unknown value, $whence, for whence parameter"); } # short circuit if seeking to current offset return 1 if $target == $here ; # Outlaw any attempt to seek backwards $self->croakError( *$self->{ClassName} ."::seek: cannot seek backwards") if $target < $here ; # Walk the file to the new offset my $offset = $target - $here ; my $got; while (($got = $self->read(my $buffer, min($offset, *$self->{BlockSize})) ) > 0) { $offset -= $got; last if $offset == 0 ; } return $offset == 0 ? 1 : 0 ; } sub fileno { my $self = shift ; return defined *$self->{FH} ? fileno *$self->{FH} : undef ; } sub binmode { 1; # my $self = shift ; # return defined *$self->{FH} # ? binmode *$self->{FH} # : 1 ; } sub opened { my $self = shift ; return ! *$self->{Closed} ; } sub autoflush { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->autoflush(@_) : undef ; } sub input_line_number { my $self = shift ; my $last = *$self->{LineNo}; $. = *$self->{LineNo} = $_[1] if @_ ; return $last; } *BINMODE = \&binmode; *SEEK = \&seek; *READ = \&read; *sysread = \&read; *TELL = \&tell; *EOF = \&eof; *FILENO = \&fileno; *CLOSE = \&close; sub _notAvailable { my $name = shift ; #return sub { croak "$name Not Available" ; } ; return sub { croak "$name Not Available: File opened only for intput" ; } ; } *print = _notAvailable('print'); *PRINT = _notAvailable('print'); *printf = _notAvailable('printf'); *PRINTF = _notAvailable('printf'); *write = _notAvailable('write'); *WRITE = _notAvailable('write'); #*sysread = \&read; #*syswrite = \&_notAvailable; package IO::Uncompress::Base ; 1 ; __END__ #line 1457 FILE 7053e3c7/IO/Uncompress/Gunzip.pm*#line 1 "/usr/local/share/perl/5.8.8/IO/Uncompress/Gunzip.pm" package IO::Uncompress::Gunzip ; require 5.004 ; # for RFC1952 use strict ; use warnings; use bytes; use IO::Uncompress::RawInflate 2.015 ; use Compress::Raw::Zlib 2.015 qw( crc32 ) ; use IO::Compress::Base::Common 2.015 qw(:Status createSelfTiedObject); use IO::Compress::Gzip::Constants 2.015 ; use IO::Compress::Zlib::Extra 2.015 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $GunzipError); @ISA = qw( Exporter IO::Uncompress::RawInflate ); @EXPORT_OK = qw( $GunzipError gunzip ); %EXPORT_TAGS = %IO::Uncompress::RawInflate::DEFLATE_CONSTANTS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); $GunzipError = ''; $VERSION = '2.015'; sub new { my $class = shift ; $GunzipError = ''; my $obj = createSelfTiedObject($class, \$GunzipError); $obj->_create(undef, 0, @_); } sub gunzip { my $obj = createSelfTiedObject(undef, \$GunzipError); return $obj->_inf(@_) ; } sub getExtraParams { use IO::Compress::Base::Common 2.015 qw(:Parse); return ( 'ParseExtra' => [1, 1, Parse_boolean, 0] ) ; } sub ckParams { my $self = shift ; my $got = shift ; # gunzip always needs crc32 $got->value('CRC32' => 1); return 1; } sub ckMagic { my $self = shift; my $magic ; $self->smartReadExact(\$magic, GZIP_ID_SIZE); *$self->{HeaderPending} = $magic ; return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") if length $magic != GZIP_ID_SIZE ; return $self->HeaderError("Bad Magic") if ! isGzipMagic($magic) ; *$self->{Type} = 'rfc1952'; return $magic ; } sub readHeader { my $self = shift; my $magic = shift; return $self->_readGzipHeader($magic); } sub chkTrailer { my $self = shift; my $trailer = shift; # Check CRC & ISIZE my ($CRC32, $ISIZE) = unpack("V V", $trailer) ; *$self->{Info}{CRC32} = $CRC32; *$self->{Info}{ISIZE} = $ISIZE; if (*$self->{Strict}) { return $self->TrailerError("CRC mismatch") if $CRC32 != *$self->{Uncomp}->crc32() ; my $exp_isize = *$self->{UnCompSize}->get32bit(); return $self->TrailerError("ISIZE mismatch. Got $ISIZE" . ", expected $exp_isize") if $ISIZE != $exp_isize ; } return STATUS_OK; } sub isGzipMagic { my $buffer = shift ; return 0 if length $buffer < GZIP_ID_SIZE ; my ($id1, $id2) = unpack("C C", $buffer) ; return $id1 == GZIP_ID1 && $id2 == GZIP_ID2 ; } sub _readFullGzipHeader($) { my ($self) = @_ ; my $magic = '' ; $self->smartReadExact(\$magic, GZIP_ID_SIZE); *$self->{HeaderPending} = $magic ; return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") if length $magic != GZIP_ID_SIZE ; return $self->HeaderError("Bad Magic") if ! isGzipMagic($magic) ; my $status = $self->_readGzipHeader($magic); delete *$self->{Transparent} if ! defined $status ; return $status ; } sub _readGzipHeader($) { my ($self, $magic) = @_ ; my ($HeaderCRC) ; my ($buffer) = '' ; $self->smartReadExact(\$buffer, GZIP_MIN_HEADER_SIZE - GZIP_ID_SIZE) or return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") ; my $keep = $magic . $buffer ; *$self->{HeaderPending} = $keep ; # now split out the various parts my ($cm, $flag, $mtime, $xfl, $os) = unpack("C C V C C", $buffer) ; $cm == GZIP_CM_DEFLATED or return $self->HeaderError("Not Deflate (CM is $cm)") ; # check for use of reserved bits return $self->HeaderError("Use of Reserved Bits in FLG field.") if $flag & GZIP_FLG_RESERVED ; my $EXTRA ; my @EXTRA = () ; if ($flag & GZIP_FLG_FEXTRA) { $EXTRA = "" ; $self->smartReadExact(\$buffer, GZIP_FEXTRA_HEADER_SIZE) or return $self->TruncatedHeader("FEXTRA Length") ; my ($XLEN) = unpack("v", $buffer) ; $self->smartReadExact(\$EXTRA, $XLEN) or return $self->TruncatedHeader("FEXTRA Body"); $keep .= $buffer . $EXTRA ; if ($XLEN && *$self->{'ParseExtra'}) { my $bad = IO::Compress::Zlib::Extra::parseRawExtra($EXTRA, \@EXTRA, 1, 1); return $self->HeaderError($bad) if defined $bad; } } my $origname ; if ($flag & GZIP_FLG_FNAME) { $origname = "" ; while (1) { $self->smartReadExact(\$buffer, 1) or return $self->TruncatedHeader("FNAME"); last if $buffer eq GZIP_NULL_BYTE ; $origname .= $buffer } $keep .= $origname . GZIP_NULL_BYTE ; return $self->HeaderError("Non ISO 8859-1 Character found in Name") if *$self->{Strict} && $origname =~ /$GZIP_FNAME_INVALID_CHAR_RE/o ; } my $comment ; if ($flag & GZIP_FLG_FCOMMENT) { $comment = ""; while (1) { $self->smartReadExact(\$buffer, 1) or return $self->TruncatedHeader("FCOMMENT"); last if $buffer eq GZIP_NULL_BYTE ; $comment .= $buffer } $keep .= $comment . GZIP_NULL_BYTE ; return $self->HeaderError("Non ISO 8859-1 Character found in Comment") if *$self->{Strict} && $comment =~ /$GZIP_FCOMMENT_INVALID_CHAR_RE/o ; } if ($flag & GZIP_FLG_FHCRC) { $self->smartReadExact(\$buffer, GZIP_FHCRC_SIZE) or return $self->TruncatedHeader("FHCRC"); $HeaderCRC = unpack("v", $buffer) ; my $crc16 = crc32($keep) & 0xFF ; return $self->HeaderError("CRC16 mismatch.") if *$self->{Strict} && $crc16 != $HeaderCRC; $keep .= $buffer ; } # Assume compression method is deflated for xfl tests #if ($xfl) { #} *$self->{Type} = 'rfc1952'; return { 'Type' => 'rfc1952', 'FingerprintLength' => 2, 'HeaderLength' => length $keep, 'TrailerLength' => GZIP_TRAILER_SIZE, 'Header' => $keep, 'isMinimalHeader' => $keep eq GZIP_MINIMUM_HEADER ? 1 : 0, 'MethodID' => $cm, 'MethodName' => $cm == GZIP_CM_DEFLATED ? "Deflated" : "Unknown" , 'TextFlag' => $flag & GZIP_FLG_FTEXT ? 1 : 0, 'HeaderCRCFlag' => $flag & GZIP_FLG_FHCRC ? 1 : 0, 'NameFlag' => $flag & GZIP_FLG_FNAME ? 1 : 0, 'CommentFlag' => $flag & GZIP_FLG_FCOMMENT ? 1 : 0, 'ExtraFlag' => $flag & GZIP_FLG_FEXTRA ? 1 : 0, 'Name' => $origname, 'Comment' => $comment, 'Time' => $mtime, 'OsID' => $os, 'OsName' => defined $GZIP_OS_Names{$os} ? $GZIP_OS_Names{$os} : "Unknown", 'HeaderCRC' => $HeaderCRC, 'Flags' => $flag, 'ExtraFlags' => $xfl, 'ExtraFieldRaw' => $EXTRA, 'ExtraField' => [ @EXTRA ], #'CompSize'=> $compsize, #'CRC32'=> $CRC32, #'OrigSize'=> $ISIZE, } } 1; __END__ #line 1071 FILE$797ae9ab/IO/Uncompress/RawInflate.pm#line 1 "/usr/local/share/perl/5.8.8/IO/Uncompress/RawInflate.pm" package IO::Uncompress::RawInflate ; # for RFC1951 use strict ; use warnings; use bytes; use Compress::Raw::Zlib 2.015 ; use IO::Compress::Base::Common 2.015 qw(:Status createSelfTiedObject); use IO::Uncompress::Base 2.015 ; use IO::Uncompress::Adapter::Inflate 2.015 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError); $VERSION = '2.015'; $RawInflateError = ''; @ISA = qw( Exporter IO::Uncompress::Base ); @EXPORT_OK = qw( $RawInflateError rawinflate ) ; %DEFLATE_CONSTANTS = (); %EXPORT_TAGS = %IO::Uncompress::Base::EXPORT_TAGS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); sub new { my $class = shift ; my $obj = createSelfTiedObject($class, \$RawInflateError); $obj->_create(undef, 0, @_); } sub rawinflate { my $obj = createSelfTiedObject(undef, \$RawInflateError); return $obj->_inf(@_); } sub getExtraParams { return (); } sub ckParams { my $self = shift ; my $got = shift ; return 1; } sub mkUncomp { my $self = shift ; my $got = shift ; my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Inflate::mkUncompObject( $got->value('CRC32'), $got->value('ADLER32'), $got->value('Scan'), ); return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; *$self->{Uncomp} = $obj; my $magic = $self->ckMagic() or return 0; *$self->{Info} = $self->readHeader($magic) or return undef ; return 1; } sub ckMagic { my $self = shift; return $self->_isRaw() ; } sub readHeader { my $self = shift; my $magic = shift ; return { 'Type' => 'rfc1951', 'FingerprintLength' => 0, 'HeaderLength' => 0, 'TrailerLength' => 0, 'Header' => '' }; } sub chkTrailer { return STATUS_OK ; } sub _isRaw { my $self = shift ; my $got = $self->_isRawx(@_); if ($got) { *$self->{Pending} = *$self->{HeaderPending} ; } else { $self->pushBack(*$self->{HeaderPending}); *$self->{Uncomp}->reset(); } *$self->{HeaderPending} = ''; return $got ; } sub _isRawx { my $self = shift ; my $magic = shift ; $magic = '' unless defined $magic ; my $buffer = ''; $self->smartRead(\$buffer, *$self->{BlockSize}) >= 0 or return $self->saveErrorString(undef, "No data to read"); my $temp_buf = $magic . $buffer ; *$self->{HeaderPending} = $temp_buf ; $buffer = ''; my $status = *$self->{Uncomp}->uncompr(\$temp_buf, \$buffer, $self->smartEof()) ; return $self->saveErrorString(undef, *$self->{Uncomp}{Error}, STATUS_ERROR) if $status == STATUS_ERROR; #my $buf_len = *$self->{Uncomp}->uncompressedBytes(); my $buf_len = length $buffer; if ($status == STATUS_ENDSTREAM) { if (*$self->{MultiStream} && (length $temp_buf || ! $self->smartEof())){ *$self->{NewStream} = 1 ; *$self->{EndStream} = 0 ; $self->pushBack($temp_buf); } else { *$self->{EndStream} = 1 ; $self->pushBack($temp_buf); } } *$self->{HeaderPending} = $buffer ; *$self->{InflatedBytesRead} = $buf_len ; *$self->{TotalInflatedBytesRead} += $buf_len ; *$self->{Type} = 'rfc1951'; $self->saveStatus(STATUS_OK); return { 'Type' => 'rfc1951', 'HeaderLength' => 0, 'TrailerLength' => 0, 'Header' => '' }; } sub inflateSync { my $self = shift ; # inflateSync is a no-op in Plain mode return 1 if *$self->{Plain} ; return 0 if *$self->{Closed} ; #return G_EOF if !length *$self->{Pending} && *$self->{EndStream} ; return 0 if ! length *$self->{Pending} && *$self->{EndStream} ; # Disable CRC check *$self->{Strict} = 0 ; my $status ; while (1) { my $temp_buf ; if (length *$self->{Pending} ) { $temp_buf = *$self->{Pending} ; *$self->{Pending} = ''; } else { $status = $self->smartRead(\$temp_buf, *$self->{BlockSize}) ; return $self->saveErrorString(0, "Error Reading Data") if $status < 0 ; if ($status == 0 ) { *$self->{EndStream} = 1 ; return $self->saveErrorString(0, "unexpected end of file", STATUS_ERROR); } } $status = *$self->{Uncomp}->sync($temp_buf) ; if ($status == STATUS_OK) { *$self->{Pending} .= $temp_buf ; return 1 ; } last unless $status == STATUS_ERROR ; } return 0; } #sub performScan #{ # my $self = shift ; # # my $status ; # my $end_offset = 0; # # $status = $self->scan() # #or return $self->saveErrorString(undef, "Error Scanning: $$error_ref", $self->errorNo) ; # or return $self->saveErrorString(G_ERR, "Error Scanning: $status") # # $status = $self->zap($end_offset) # or return $self->saveErrorString(G_ERR, "Error Zapping: $status"); # #or return $self->saveErrorString(undef, "Error Zapping: $$error_ref", $self->errorNo) ; # # #(*$obj->{Deflate}, $status) = $inf->createDeflate(); # ## *$obj->{Header} = *$inf->{Info}{Header}; ## *$obj->{UnCompSize_32bit} = ## *$obj->{BytesWritten} = *$inf->{UnCompSize_32bit} ; ## *$obj->{CompSize_32bit} = *$inf->{CompSize_32bit} ; # # ## if ( $outType eq 'buffer') ## { substr( ${ *$self->{Buffer} }, $end_offset) = '' } ## elsif ($outType eq 'handle' || $outType eq 'filename') { ## *$self->{FH} = *$inf->{FH} ; ## delete *$inf->{FH}; ## *$obj->{FH}->flush() ; ## *$obj->{Handle} = 1 if $outType eq 'handle'; ## ## #seek(*$obj->{FH}, $end_offset, SEEK_SET) ## *$obj->{FH}->seek($end_offset, SEEK_SET) ## or return $obj->saveErrorString(undef, $!, $!) ; ## } # #} sub scan { my $self = shift ; return 1 if *$self->{Closed} ; return 1 if !length *$self->{Pending} && *$self->{EndStream} ; my $buffer = '' ; my $len = 0; $len = $self->_raw_read(\$buffer, 1) while ! *$self->{EndStream} && $len >= 0 ; #return $len if $len < 0 ? $len : 0 ; return $len < 0 ? 0 : 1 ; } sub zap { my $self = shift ; my $headerLength = *$self->{Info}{HeaderLength}; my $block_offset = $headerLength + *$self->{Uncomp}->getLastBlockOffset(); $_[0] = $headerLength + *$self->{Uncomp}->getEndOffset(); #printf "# End $_[0], headerlen $headerLength \n";; #printf "# block_offset $block_offset %x\n", $block_offset; my $byte ; ( $self->smartSeek($block_offset) && $self->smartRead(\$byte, 1) ) or return $self->saveErrorString(0, $!, $!); #printf "#byte is %x\n", unpack('C*',$byte); *$self->{Uncomp}->resetLastBlockByte($byte); #printf "#to byte is %x\n", unpack('C*',$byte); ( $self->smartSeek($block_offset) && $self->smartWrite($byte) ) or return $self->saveErrorString(0, $!, $!); #$self->smartSeek($end_offset, 1); return 1 ; } sub createDeflate { my $self = shift ; my ($def, $status) = *$self->{Uncomp}->createDeflateStream( -AppendOutput => 1, -WindowBits => - MAX_WBITS, -CRC32 => *$self->{Params}->value('CRC32'), -ADLER32 => *$self->{Params}->value('ADLER32'), ); return wantarray ? ($status, $def) : $def ; } 1; __END__ #line 1053 FILE9b743a3b/PAR.pmg_#line 1 "/usr/local/share/perl/5.8.8/PAR.pm" package PAR; $PAR::VERSION = '0.991'; use 5.006; use strict; use warnings; use Config '%Config'; use Carp qw/croak/; # If the 'prefork' module is available, we # register various run-time loaded modules with it. # That way, there is more shared memory in a forking # environment. BEGIN { if (eval 'require prefork') { prefork->import($_) for qw/ Archive::Zip File::Glob File::Spec File::Temp LWP::Simple PAR::Heavy /; # not including Archive::Unzip::Burst which only makes sense # in the context of a PAR::Packer'ed executable anyway. } } use PAR::SetupProgname; use PAR::SetupTemp; #line 307 use vars qw(@PAR_INC); # explicitly stated PAR library files (prefered) use vars qw(@PAR_INC_LAST); # explicitly stated PAR library files (fallback) use vars qw(%PAR_INC); # sets {$par}{$file} for require'd modules use vars qw(@LibCache %LibCache); # I really miss pseudohash. use vars qw($LastAccessedPAR $LastTempFile); use vars qw(@RepositoryObjects); # If we have PAR::Repository::Client support, we # put the ::Client objects in here. use vars qw(@UpgradeRepositoryObjects); # If we have PAR::Repository::Client's in upgrade mode # put the ::Client objects in here *as well*. use vars qw(%FileCache); # The Zip-file file-name-cache # Layout: # $FileCache{$ZipObj}{$FileName} = $Member use vars qw(%ArchivesExtracted); # Associates archive-zip-object => full extraction path my $ver = $Config{version}; my $arch = $Config{archname}; my $progname = $ENV{PAR_PROGNAME} || $0; my $is_insensitive_fs = ( -s $progname and (-s lc($progname) || -1) == (-s uc($progname) || -1) and (-s lc($progname) || -1) == -s $progname ); # lexical for import(), and _import_foo() functions to control unpar() my %unpar_options; # called on "use PAR" sub import { my $class = shift; PAR::SetupProgname::set_progname(); PAR::SetupTemp::set_par_temp_env(); $progname = $ENV{PAR_PROGNAME} ||= $0; $is_insensitive_fs = (-s $progname and (-s lc($progname) || -1) == (-s uc($progname) || -1)); my @args = @_; # Insert PAR hook in @INC. unshift @INC, \&find_par unless grep { $_ eq \&find_par } @INC; push @INC, \&find_par_last unless grep { $_ eq \&find_par_last } @INC; # process args to use PAR 'foo.par', { opts }, ...; foreach my $par (@args) { if (ref($par) eq 'HASH') { # we have been passed a hash reference _import_hash_ref($par); } elsif ($par =~ /[?*{}\[\]]/) { # implement globbing for PAR archives require File::Glob; foreach my $matched (File::Glob::glob($par)) { push @PAR_INC, unpar($matched, undef, undef, 1); } } else { # ordinary string argument => file push @PAR_INC, unpar($par, undef, undef, 1); } } return if $PAR::__import; local $PAR::__import = 1; require PAR::Heavy; PAR::Heavy::_init_dynaloader(); # The following code is executed for the case where the # running program is itself a PAR archive. # ==> run script/main.pl if (unpar($progname)) { # XXX - handle META.yml here! push @PAR_INC, unpar($progname, undef, undef, 1); _extract_inc($progname) unless $ENV{PAR_CLEAN}; if ($LibCache{$progname}) { # XXX bad: this us just a good guess require File::Spec; $ArchivesExtracted{$progname} = File::Spec->catdir($ENV{PAR_TEMP}, 'inc'); } my $zip = $LibCache{$progname}; my $member = _first_member( $zip, "script/main.pl", "main.pl", ); if ($progname and !$member) { require File::Spec; my @path = File::Spec->splitdir($progname); my $filename = pop @path; $member = _first_member( $zip, "script/".$filename, "script/".$filename.".pl", $filename, $filename.".pl", ) } # finally take $ARGV[0] as the hint for file to run if (defined $ARGV[0] and !$member) { $member = _first_member( $zip, "script/$ARGV[0]", "script/$ARGV[0].pl", $ARGV[0], "$ARGV[0].pl", ) or die qq(PAR.pm: Can't open perl script "$ARGV[0]": No such file or directory); shift @ARGV; } if (!$member) { die "Usage: $0 script_file_name.\n"; } _run_member($member); } } # import() helper for the "use PAR {...};" syntax. sub _import_hash_ref { my $opt = shift; # hash slice assignment -- pass all of the options into unpar local @unpar_options{keys(%$opt)} = values(%$opt); # check for incompatible options: if ( exists $opt->{repository} and exists $opt->{file} ) { croak("Invalid PAR loading options. Cannot have a 'repository' and 'file' option at the same time."); } elsif ( exists $opt->{file} and (exists $opt->{install} or exists $opt->{upgrade}) ) { my $e = exists($opt->{install}) ? 'install' : 'upgrade'; croak("Invalid PAR loading options. Cannot combine 'file' and '$e' options."); } elsif ( not exists $opt->{repository} and not exists $opt->{file} ) { croak("Invalid PAR loading options. Need at least one of 'file' or 'repository' options."); } # load from file if (exists $opt->{file}) { croak("Cannot load undefined PAR archive") if not defined $opt->{file}; # for files, we default to loading from PAR archive first my $fallback = $opt->{fallback}; $fallback = 0 if not defined $fallback; if (not $fallback) { # load from this PAR arch preferably push @PAR_INC, unpar($opt->{file}, undef, undef, 1); } else { # load from this PAR arch as fallback push @PAR_INC_LAST, unpar($opt->{file}, undef, undef, 1); } } else { # Deal with repositories elsewhere my $client = _import_repository($opt); return() if not $client; if (defined $opt->{run}) { # run was specified # run the specified script from the repository $client->run_script( $opt->{run} ); return 1; } return 1; } # run was specified # run the specified script from inside the PAR file. if (defined $opt->{run}) { my $script = $opt->{run}; require PAR::Heavy; PAR::Heavy::_init_dynaloader(); # XXX - handle META.yml here! _extract_inc($opt->{file}) unless $ENV{PAR_CLEAN}; my $zip = $LibCache{$opt->{file}}; my $member = _first_member( $zip, (($script !~ /^script\//) ? ("script/$script", "script/$script.pl") : ()), $script, "$script.pl", ); if (not defined $member) { croak("Cannot run script '$script' from PAR file '$opt->{file}'. Script couldn't be found in PAR file."); } _run_member_from_par($member); } return(); } # This sub is invoked by _import_hash_ref if a {repository} # option is found # Returns the repository client object on success. sub _import_repository { my $opt = shift; my $url = $opt->{repository}; eval "require PAR::Repository::Client; 1;"; if ($@ or not eval PAR::Repository::Client->VERSION >= 0.04) { croak "In order to use the 'use PAR { repository => 'url' };' syntax, you need to install the PAR::Repository::Client module (version 0.04 or later) from CPAN. This module does not seem to be installed as indicated by the following error message: $@"; } if ($opt->{upgrade} and not eval PAR::Repository::Client->VERSION >= 0.22) { croak "In order to use the 'upgrade' option, you need to install the PAR::Repository::Client module (version 0.22 or later) from CPAN"; } if ($opt->{dependencies} and not eval PAR::Repository::Client->VERSION >= 0.23) { croak "In order to use the 'dependencies' option, you need to install the PAR::Repository::Client module (version 0.23 or later) from CPAN"; } my $obj; # Support existing clients passed in as objects. if (ref($url) and UNIVERSAL::isa($obj, 'PAR::Repository::Client')) { $obj = $url; } else { $obj = PAR::Repository::Client->new( uri => $url, auto_install => $opt->{install}, auto_upgrade => $opt->{upgrade}, static_dependencies => $opt->{dependencies}, ); } push @RepositoryObjects, $obj; # these are tracked separately so we can check for upgrades early push @UpgradeRepositoryObjects, $obj if $opt->{upgrade}; return $obj; } # Given an Archive::Zip obj and a list of files/paths, # this function returns the Archive::Zip::Member for the # first of the files found in the ZIP. If none is found, # returns the empty list. sub _first_member { my $zip = shift; foreach my $name (@_) { my $member = _cached_member_named($zip, $name); return $member if $member; } return; } # Given an Archive::Zip object, this finds the first # Archive::Zip member whose file name matches the # regular expression sub _first_member_matching { my $zip = shift; my $regex = shift; my $cache = $FileCache{$zip}; $cache = $FileCache{$zip} = _make_file_cache($zip) if not $cache; foreach my $name (keys %$cache) { if ($name =~ $regex) { return $cache->{$name}; } } return(); } sub _run_member_from_par { my $member = shift; my $clear_stack = shift; my ($fh, $is_new, $filename) = _tempfile($member->crc32String . ".pl"); if ($is_new) { my $file = $member->fileName; print $fh "package main;\n"; print $fh "#line 1 \"$file\"\n"; $member->extractToFileHandle($fh); seek ($fh, 0, 0); } $ENV{PAR_0} = $filename; # for Pod::Usage { do $filename; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; exit; } } sub _run_member { my $member = shift; my $clear_stack = shift; my ($fh, $is_new, $filename) = _tempfile($member->crc32String . ".pl"); if ($is_new) { my $file = $member->fileName; print $fh "package main; shift \@INC;\n"; if (defined &Internals::PAR::CLEARSTACK and $clear_stack) { print $fh "Internals::PAR::CLEARSTACK();\n"; } print $fh "#line 1 \"$file\"\n"; $member->extractToFileHandle($fh); seek ($fh, 0, 0); } unshift @INC, sub { $fh }; $ENV{PAR_0} = $filename; # for Pod::Usage { do 'main'; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; exit; } } # extract the contents of a .par (or .exe) or any # Archive::Zip handle to the PAR_TEMP/inc directory. # returns that directory. sub _extract_inc { my $file_or_azip_handle = shift; my $force_extract = shift; my $inc = "$PAR::SetupTemp::PARTemp/inc"; my $dlext = defined($Config{dlext}) ? $Config::Config{dlext} : ''; my $inc_exists = -d $inc; my $is_handle = ref($file_or_azip_handle) && $file_or_azip_handle->isa('Archive::Zip::Archive'); require File::Spec; if (!$inc_exists or $force_extract) { for (1 .. 10) { mkdir("$inc.lock", 0755) and last; sleep 1 } undef $@; if (!$is_handle) { # First try to unzip the *fast* way. eval { require Archive::Unzip::Burst; Archive::Unzip::Burst::unzip($file_or_azip_handle, $inc) and die "Could not unzip '$file_or_azip_handle' into '$inc'. Error: $!"; die; }; # This means the fast module is there, but didn't work. if ($@ =~ /^Could not unzip/) { die $@; } } # either failed to load Archive::Unzip::Burst or got an A::Zip handle # fallback to slow way. if ($is_handle || $@) { my $zip; if (!$is_handle) { open my $fh, '<', $file_or_azip_handle or die "Cannot find '$file_or_azip_handle': $!"; binmode($fh); bless($fh, 'IO::File'); $zip = Archive::Zip->new; ( $zip->readFromFileHandle($fh, $file_or_azip_handle) == Archive::Zip::AZ_OK() ) or die "Read '$file_or_azip_handle' error: $!"; } else { $zip = $file_or_azip_handle; } mkdir($inc) if not -d $inc; for ( $zip->memberNames() ) { next if m{\.\Q$dlext\E[^/]*$}; s{^/}{}; my $outfile = File::Spec->catfile($inc, $_); next if -e $outfile and not -w _; $zip->extractMember($_, "$inc/" . $_); } } rmdir("$inc.lock"); $ArchivesExtracted{$is_handle ? $file_or_azip_handle->fileName() : $file_or_azip_handle} = $inc; } # add the freshly extracted directories to @INC, # but make sure there's no duplicates my %inc_exists = map { ($_, 1) } @INC; unshift @INC, grep !exists($inc_exists{$_}), grep -d, map File::Spec->catdir($inc, @$_), [ 'lib' ], [ 'arch' ], [ $arch ], [ $ver ], [ $ver, $arch ], []; return $inc; } # This is the hook placed in @INC for loading PAR's # before any other stuff in @INC sub find_par { my @args = @_; # if there are repositories win upgrade mode, check them # first. If so, this is expensive, of course! if (@UpgradeRepositoryObjects) { my $module = $args[1]; $module =~ s/\.pm$//; $module =~ s/\//::/g; foreach my $client (@UpgradeRepositoryObjects) { my $local_file = $client->upgrade_module($module); # break the require if upgrade_module has been required already # to avoid infinite recursion if (exists $INC{$args[1]}) { # Oh dear. Check for the possible return values of the INC sub hooks in # perldoc -f require before trying to understand this. # Then, realize that if you pass undef for the file handle, perl (5.8.9) # does NOT use the subroutine. Thus the hacky GLOB ref. my $line = 1; return (\*I_AM_NOT_HERE, sub {$line ? ($_="1;",$line=0,return(1)) : ($_="",return(0))}); } if ($local_file) { return _find_par_internals([$PAR_INC_LAST[-1]], @args); } } } return _find_par_internals(\@PAR_INC, @args); } # This is the hook placed in @INC for loading PAR's # AFTER any other stuff in @INC # It also deals with loading from repositories as a # fallback-fallback ;) sub find_par_last { my @args = @_; # Try the local PAR files first my $rv = _find_par_internals(\@PAR_INC_LAST, @args); return $rv if defined $rv; # No repositories => return return $rv if not @RepositoryObjects; my $module = $args[1]; $module =~ s/\.pm$//; $module =~ s/\//::/g; foreach my $client (@RepositoryObjects) { my $local_file = $client->get_module($module, 1); # 1 == fallback if ($local_file) { return _find_par_internals([$PAR_INC_LAST[-1]], @args); } } return $rv; } # This is a conjunction of the early find_par and the late # find_par_last. It's called by PAR::Heavy for Dynaloader stuff. sub _find_par_any { return _find_par_internals([@PAR_INC, @PAR_INC_LAST], @_); } # This routine implements loading modules from PARs # both for loading PARs preferably or as fallback. # To distinguish the cases, the first parameter should # be a reference to the corresponding @PAR_INC* array. sub _find_par_internals { my ($INC_ARY, $self, $file, $member_only) = @_; my $scheme; foreach (@$INC_ARY ? @$INC_ARY : @INC) { my $path = $_; if ($[ < 5.008001) { # reassemble from "perl -Ischeme://path" autosplitting $path = "$scheme:$path" if !@$INC_ARY and $path and $path =~ m!//! and $scheme and $scheme =~ /^\w+$/; $scheme = $path; } my $rv = unpar($path, $file, $member_only, 1) or next; $PAR_INC{$path}{$file} = 1; $INC{$file} = $LastTempFile if (lc($file) =~ /^(?!tk).*\.pm$/); return $rv; } return; } sub reload_libs { my @par_files = @_; @par_files = sort keys %LibCache unless @par_files; foreach my $par (@par_files) { my $inc_ref = $PAR_INC{$par} or next; delete $LibCache{$par}; delete $FileCache{$par}; foreach my $file (sort keys %$inc_ref) { delete $INC{$file}; require $file; } } } #sub find_zip_member { # my $file = pop; # # foreach my $zip (@LibCache) { # my $member = _first_member($zip, $file) or next; # return $member; # } # # return; #} sub read_file { my $file = pop; foreach my $zip (@LibCache) { my $member = _first_member($zip, $file) or next; return scalar $member->contents; } return; } sub par_handle { my $par = pop; return $LibCache{$par}; } my %escapes; sub unpar { my ($par, $file, $member_only, $allow_other_ext) = @_; return if not defined $par; my $zip = $LibCache{$par}; my @rv = $par; # a guard against (currently unimplemented) recursion return if $PAR::__unpar; local $PAR::__unpar = 1; unless ($zip) { # URL use case ==> download if ($par =~ m!^\w+://!) { require File::Spec; require LWP::Simple; # reflector support $par .= "pm=$file" if $par =~ /[?&;]/; # prepare cache directory $ENV{PAR_CACHE} ||= '_par'; mkdir $ENV{PAR_CACHE}, 0777; if (!-d $ENV{PAR_CACHE}) { $ENV{PAR_CACHE} = File::Spec->catdir(File::Spec->tmpdir, 'par'); mkdir $ENV{PAR_CACHE}, 0777; return unless -d $ENV{PAR_CACHE}; } # Munge URL into local file name # FIXME: This might result in unbelievably long file names! # I have run into the file/path length limitations of linux # with similar code in PAR::Repository::Client. # I suspect this is even worse on Win32. # -- Steffen my $file = $par; if (!%escapes) { $escapes{chr($_)} = sprintf("%%%02X", $_) for 0..255; } { use bytes; $file =~ s/([^\w\.])/$escapes{$1}/g; } $file = File::Spec->catfile( $ENV{PAR_CACHE}, $file); LWP::Simple::mirror( $par, $file ); return unless -e $file and -f _; $par = $file; } # Got the .par as a string. (reference to scalar, of course) elsif (ref($par) eq 'SCALAR') { my ($fh) = _tempfile(); print $fh $$par; $par = $fh; } # If the par is not a valid .par file name and we're being strict # about this, then also check whether "$par.par" exists elsif (!(($allow_other_ext or $par =~ /\.par\z/i) and -f $par)) { $par .= ".par"; return unless -f $par; } require Archive::Zip; $zip = Archive::Zip->new; my @file; if (!ref $par) { @file = $par; open my $fh, '<', $par; binmode($fh); $par = $fh; bless($par, 'IO::File'); } Archive::Zip::setErrorHandler(sub {}); my $rv = $zip->readFromFileHandle($par, @file); Archive::Zip::setErrorHandler(undef); return unless $rv == Archive::Zip::AZ_OK(); push @LibCache, $zip; $LibCache{$_[0]} = $zip; $FileCache{$_[0]} = _make_file_cache($zip); # only recursive case -- appears to be unused and unimplemented foreach my $member ( _cached_members_matching($zip, "^par/(?:$Config{version}/)?(?:$Config{archname}/)?" ) ) { next if $member->isDirectory; my $content = $member->contents(); next unless $content =~ /^PK\003\004/; push @rv, unpar(\$content, undef, undef, 1); } # extract all shlib dlls from the .par to $ENV{PAR_TEMP} # Intended to fix problem with Alien::wxWidgets/Wx... # NOTE auto/foo/foo.so|dll will get handled by the dynaloader # hook, so no need to pull it out here. # Allow this to be disabled so caller can do their own caching # via import({no_shlib_unpack => 1, file => foo.par}) if(not $unpar_options{no_shlib_unpack} and defined $ENV{PAR_TEMP}) { my @members = _cached_members_matching( $zip, qr#^shlib/$Config{archname}/.*\.\Q$Config{dlext}\E(?:\.|$)# ); foreach my $member (@members) { next if $member->isDirectory; my $member_name = $member->fileName; next unless $member_name =~ m{ \/([^/]+)$ }x or $member_name =~ m{ ^([^/]+)$ }; my $extract_name = $1; my $dest_name = File::Spec->catfile($ENV{PAR_TEMP}, $extract_name); # but don't extract it if we've already got one $member->extractToFileNamed($dest_name) unless(-e $dest_name); } } # Now push this path into usual library search paths my $separator = $Config{path_sep}; my $tempdir = $ENV{PAR_TEMP}; foreach my $key (qw( LD_LIBRARY_PATH LIB_PATH LIBRARY_PATH PATH DYLD_LIBRARY_PATH )) { if (defined $ENV{$key} and $ENV{$key} ne '') { # Check whether it's already in the path. If so, don't # append the PAR temp dir in order not to overflow the # maximum length for ENV vars. $ENV{$key} .= $separator . $tempdir unless grep { $_ eq $tempdir } split $separator, $ENV{$key}; } else { $ENV{$key} = $tempdir; } } } $LastAccessedPAR = $zip; return @rv unless defined $file; my $member = _first_member($zip, "lib/$file", "arch/$file", "$arch/$file", "$ver/$file", "$ver/$arch/$file", $file, ) or return; return $member if $member_only; my ($fh, $is_new); ($fh, $is_new, $LastTempFile) = _tempfile($member->crc32String . ".pm"); die "Bad Things Happened..." unless $fh; if ($is_new) { $member->extractToFileHandle($fh); seek ($fh, 0, 0); } return $fh; } sub _tempfile { my ($fh, $filename); if ($ENV{PAR_CLEAN} or !@_) { require File::Temp; if (defined &File::Temp::tempfile) { # under Win32, the file is created with O_TEMPORARY, # and will be deleted by the C runtime; having File::Temp # delete it has the only effect of giving ugly warnings ($fh, $filename) = File::Temp::tempfile( DIR => $PAR::SetupTemp::PARTemp, UNLINK => ($^O ne 'MSWin32' and $^O !~ /hpux/), ) or die "Cannot create temporary file: $!"; binmode($fh); return ($fh, 1, $filename); } } require File::Spec; # untainting tempfile path local $_ = File::Spec->catfile( $PAR::SetupTemp::PARTemp, $_[0] ); /^(.+)$/ and $filename = $1; if (-r $filename) { open $fh, '<', $filename or die $!; binmode($fh); return ($fh, 0, $filename); } open $fh, '+>', $filename or die $!; binmode($fh); return ($fh, 1, $filename); } # Given an Archive::Zip object, this generates a hash of # file_name_in_zip => file object # and returns a reference to that. # If we broke the encapsulation of A::Zip::Member and # accessed $member->{fileName} directly, that would be # *significantly* faster. sub _make_file_cache { my $zip = shift; if (not ref($zip)) { croak("_make_file_cache needs an Archive::Zip object as argument."); } my $cache = {}; foreach my $member ($zip->members) { $cache->{$member->fileName()} = $member; } return $cache; } # given an Archive::Zip object, this finds the cached hash # of Archive::Zip member names => members, # and returns all member objects whose file names match # a regexp # Without file caching, it just uses $zip->membersMatching sub _cached_members_matching { my $zip = shift; my $regex = shift; my $cache = $FileCache{$zip}; $cache = $FileCache{$zip} = _make_file_cache($zip) if not $cache; return map {$cache->{$_}} grep { $_ =~ $regex } keys %$cache; } # access named zip file member through cache. Fall # back to using Archive::Zip (slow) sub _cached_member_named { my $zip = shift; my $name = shift; my $cache = $FileCache{$zip}; $cache = $FileCache{$zip} = _make_file_cache($zip) if not $cache; return $cache->{$name}; } # Attempt to clean up the temporary directory if # --> We're running in clean mode # --> It's defined # --> It's an existing directory # --> It's empty END { if (exists $ENV{PAR_CLEAN} and $ENV{PAR_CLEAN} and exists $ENV{PAR_TEMP} and defined $ENV{PAR_TEMP} and -d $ENV{PAR_TEMP} ) { local($!); # paranoid: ignore potential errors without clobbering a global variable! rmdir($ENV{PAR_TEMP}); } } 1; __END__ #line 1192 FILE98625c12/PAR/Dist.pmw`#line 1 "/usr/local/share/perl/5.8.8/PAR/Dist.pm" package PAR::Dist; use 5.006; use strict; require Exporter; use vars qw/$VERSION @ISA @EXPORT @EXPORT_OK $DEBUG/; $VERSION = '0.44'; @ISA = 'Exporter'; @EXPORT = qw/ blib_to_par install_par uninstall_par sign_par verify_par merge_par remove_man get_meta generate_blib_stub /; @EXPORT_OK = qw/ parse_dist_name contains_binaries /; $DEBUG = 0; use Carp qw/carp croak/; use File::Spec; #line 142 sub blib_to_par { @_ = (path => @_) if @_ == 1; my %args = @_; require Config; # don't use 'my $foo ... if ...' it creates a static variable! my $quiet = $args{quiet} || 0; my $dist; my $path = $args{path}; $dist = File::Spec->rel2abs($args{dist}) if $args{dist}; my $name = $args{name}; my $version = $args{version}; my $suffix = $args{suffix} || "$Config::Config{archname}-$Config::Config{version}.par"; my $cwd; if (defined $path) { require Cwd; $cwd = Cwd::cwd(); chdir $path; } _build_blib() unless -d "blib"; my @files; open MANIFEST, ">", File::Spec->catfile("blib", "MANIFEST") or die $!; open META, ">", File::Spec->catfile("blib", "META.yml") or die $!; require File::Find; File::Find::find( sub { next unless $File::Find::name; (-r && !-d) and push ( @files, substr($File::Find::name, 5) ); } , 'blib' ); print MANIFEST join( "\n", ' ', (sort @files), q( # ) ); close MANIFEST; if (open(OLD_META, "META.yml")) { while () { if (/^distribution_type:/) { print META "distribution_type: par\n"; } else { print META $_; } if (/^name:\s+(.*)/) { $name ||= $1; $name =~ s/::/-/g; } elsif (/^version:\s+.*Module::Build::Version/) { while () { /^\s+original:\s+(.*)/ or next; $version ||= $1; last; } } elsif (/^version:\s+(.*)/) { $version ||= $1; } } close OLD_META; close META; } if ((!$name or !$version) and open(MAKEFILE, "Makefile")) { while () { if (/^DISTNAME\s+=\s+(.*)$/) { $name ||= $1; } elsif (/^VERSION\s+=\s+(.*)$/) { $version ||= $1; } } } if (not defined($name) or not defined($version)) { # could not determine name or version. Error. my $what; if (not defined $name) { $what = 'name'; $what .= ' and version' if not defined $version; } elsif (not defined $version) { $what = 'version'; } carp("I was unable to determine the $what of the PAR distribution. Please create a Makefile or META.yml file from which we can infer the information or just specify the missing information as an option to blib_to_par."); return(); } $name =~ s/\s+$//; $version =~ s/\s+$//; my $file = "$name-$version-$suffix"; unlink $file if -f $file; print META << "YAML" if fileno(META); name: $name version: $version build_requires: {} conflicts: {} dist_name: $file distribution_type: par dynamic_config: 0 generated_by: 'PAR::Dist version $PAR::Dist::VERSION' license: unknown YAML close META; mkdir('blib', 0777); chdir('blib'); require Cwd; my $zipoutfile = File::Spec->catfile(File::Spec->updir, $file); _zip(dist => $zipoutfile); chdir(File::Spec->updir); unlink File::Spec->catfile("blib", "MANIFEST"); unlink File::Spec->catfile("blib", "META.yml"); $dist ||= File::Spec->catfile($cwd, $file) if $cwd; if ($dist and $file ne $dist) { if ( File::Copy::copy($file, $dist) ) { unlink $file; } else { die "Cannot copy $file: $!"; } $file = $dist; } my $pathname = File::Spec->rel2abs($file); if ($^O eq 'MSWin32') { $pathname =~ s!\\!/!g; $pathname =~ s!:!|!g; }; print << "." if !$quiet; Successfully created binary distribution '$file'. Its contents are accessible in compliant browsers as: jar:file://$pathname!/MANIFEST . chdir $cwd if $cwd; return $file; } sub _build_blib { if (-e 'Build') { _system_wrapper($^X, "Build"); } elsif (-e 'Makefile') { _system_wrapper($Config::Config{make}); } elsif (-e 'Build.PL') { _system_wrapper($^X, "Build.PL"); _system_wrapper($^X, "Build"); } elsif (-e 'Makefile.PL') { _system_wrapper($^X, "Makefile.PL"); _system_wrapper($Config::Config{make}); } } #line 397 sub install_par { my %args = &_args; _install_or_uninstall(%args, action => 'install'); } #line 418 sub uninstall_par { my %args = &_args; _install_or_uninstall(%args, action => 'uninstall'); } sub _install_or_uninstall { my %args = &_args; my $name = $args{name}; my $action = $args{action}; my %ENV_copy = %ENV; $ENV{PERL_INSTALL_ROOT} = $args{prefix} if defined $args{prefix}; require Cwd; my $old_dir = Cwd::cwd(); my ($dist, $tmpdir) = _unzip_to_tmpdir( dist => $args{dist}, subdir => 'blib' ); if ( open (META, File::Spec->catfile('blib', 'META.yml')) ) { while () { next unless /^name:\s+(.*)/; $name = $1; $name =~ s/\s+$//; last; } close META; } return if not defined $name or $name eq ''; if (-d 'script') { require ExtUtils::MY; foreach my $file (glob("script/*")) { next unless -T $file; ExtUtils::MY->fixin($file); chmod(0555, $file); } } $name =~ s{::|-}{/}g; require ExtUtils::Install; if ($action eq 'install') { my $target = _installation_target( File::Spec->curdir, $name, \%args ); my $custom_targets = $args{custom_targets} || {}; $target->{$_} = $custom_targets->{$_} foreach keys %{$custom_targets}; my $uninstall_shadows = $args{uninstall_shadows}; my $verbose = $args{verbose}; ExtUtils::Install::install($target, $verbose, 0, $uninstall_shadows); } elsif ($action eq 'uninstall') { require Config; my $verbose = $args{verbose}; ExtUtils::Install::uninstall( $args{packlist_read}||"$Config::Config{installsitearch}/auto/$name/.packlist", $verbose ); } %ENV = %ENV_copy; chdir($old_dir); File::Path::rmtree([$tmpdir]); return 1; } # Returns the default installation target as used by # ExtUtils::Install::install(). First parameter should be the base # directory containing the blib/ we're installing from. # Second parameter should be the name of the distribution for the packlist # paths. Third parameter may be a hash reference with user defined keys for # the target hash. In fact, any contents that do not start with 'inst_' are # skipped. sub _installation_target { require Config; my $dir = shift; my $name = shift; my $user = shift || {}; # accepted sources (and user overrides) my %sources = ( inst_lib => File::Spec->catdir($dir,"blib","lib"), inst_archlib => File::Spec->catdir($dir,"blib","arch"), inst_bin => File::Spec->catdir($dir,'blib','bin'), inst_script => File::Spec->catdir($dir,'blib','script'), inst_man1dir => File::Spec->catdir($dir,'blib','man1'), inst_man3dir => File::Spec->catdir($dir,'blib','man3'), packlist_read => 'read', packlist_write => 'write', ); my $par_has_archlib = _directory_not_empty( $sources{inst_archlib} ); # default targets my $target = { read => $Config::Config{sitearchexp}."/auto/$name/.packlist", write => $Config::Config{installsitearch}."/auto/$name/.packlist", $sources{inst_lib} => ($par_has_archlib ? $Config::Config{installsitearch} : $Config::Config{installsitelib}), $sources{inst_archlib} => $Config::Config{installsitearch}, $sources{inst_bin} => $Config::Config{installbin} , $sources{inst_script} => $Config::Config{installscript}, $sources{inst_man1dir} => $Config::Config{installman1dir}, $sources{inst_man3dir} => $Config::Config{installman3dir}, }; # Included for future support for ${flavour}perl external lib installation # if ($Config::Config{flavour_perl}) { # my $ext = File::Spec->catdir($dir, 'blib', 'ext'); # # from => to # $sources{inst_external_lib} = File::Spec->catdir($ext, 'lib'); # $sources{inst_external_bin} = File::Spec->catdir($ext, 'bin'); # $sources{inst_external_include} = File::Spec->catdir($ext, 'include'); # $sources{inst_external_src} = File::Spec->catdir($ext, 'src'); # $target->{ $sources{inst_external_lib} } = $Config::Config{flavour_install_lib}; # $target->{ $sources{inst_external_bin} } = $Config::Config{flavour_install_bin}; # $target->{ $sources{inst_external_include} } = $Config::Config{flavour_install_include}; # $target->{ $sources{inst_external_src} } = $Config::Config{flavour_install_src}; # } # insert user overrides foreach my $key (keys %$user) { my $value = $user->{$key}; if (not defined $value and $key ne 'packlist_read' and $key ne 'packlist_write') { # undef means "remove" delete $target->{ $sources{$key} }; } elsif (exists $sources{$key}) { # overwrite stuff, don't let the user create new entries $target->{ $sources{$key} } = $value; } } # apply the automatic inst_lib => inst_archlib conversion again # if the user asks for it and there is an archlib in the .par if ($user->{auto_inst_lib_conversion} and $par_has_archlib) { $target->{inst_lib} = $target->{inst_archlib}; } return $target; } sub _directory_not_empty { require File::Find; my($dir) = @_; my $files = 0; File::Find::find(sub { return if $_ eq ".exists"; if (-f) { $File::Find::prune++; $files = 1; } }, $dir); return $files; } #line 585 sub sign_par { my %args = &_args; _verify_or_sign(%args, action => 'sign'); } #line 600 sub verify_par { my %args = &_args; $! = _verify_or_sign(%args, action => 'verify'); return ( $! == Module::Signature::SIGNATURE_OK() ); } #line 629 sub merge_par { my $base_par = shift; my @additional_pars = @_; require Cwd; require File::Copy; require File::Path; require File::Find; # parameter checking if (not defined $base_par) { croak "First argument to merge_par() must be the .par archive to modify."; } if (not -f $base_par or not -r _ or not -w _) { croak "'$base_par' is not a file or you do not have enough permissions to read and modify it."; } foreach (@additional_pars) { if (not -f $_ or not -r _) { croak "'$_' is not a file or you do not have enough permissions to read it."; } } # The unzipping will change directories. Remember old dir. my $old_cwd = Cwd::cwd(); # Unzip the base par to a temp. dir. (undef, my $base_dir) = _unzip_to_tmpdir( dist => $base_par, subdir => 'blib' ); my $blibdir = File::Spec->catdir($base_dir, 'blib'); # move the META.yml to the (main) temp. dir. my $main_meta_file = File::Spec->catfile($base_dir, 'META.yml'); File::Copy::move( File::Spec->catfile($blibdir, 'META.yml'), $main_meta_file ); # delete (incorrect) MANIFEST unlink File::Spec->catfile($blibdir, 'MANIFEST'); # extract additional pars and merge foreach my $par (@additional_pars) { # restore original directory because the par path # might have been relative! chdir($old_cwd); (undef, my $add_dir) = _unzip_to_tmpdir( dist => $par ); # merge the meta (at least the provides info) into the main meta.yml my $meta_file = File::Spec->catfile($add_dir, 'META.yml'); if (-f $meta_file) { _merge_meta($main_meta_file, $meta_file); } my @files; my @dirs; # I hate File::Find # And I hate writing portable code, too. File::Find::find( {wanted =>sub { my $file = $File::Find::name; push @files, $file if -f $file; push @dirs, $file if -d _; }}, $add_dir ); my ($vol, $subdir, undef) = File::Spec->splitpath( $add_dir, 1); my @dir = File::Spec->splitdir( $subdir ); # merge directory structure foreach my $dir (@dirs) { my ($v, $d, undef) = File::Spec->splitpath( $dir, 1 ); my @d = File::Spec->splitdir( $d ); shift @d foreach @dir; # remove tmp dir from path my $target = File::Spec->catdir( $blibdir, @d ); mkdir($target); } # merge files foreach my $file (@files) { my ($v, $d, $f) = File::Spec->splitpath( $file ); my @d = File::Spec->splitdir( $d ); shift @d foreach @dir; # remove tmp dir from path my $target = File::Spec->catfile( File::Spec->catdir( $blibdir, @d ), $f ); File::Copy::copy($file, $target) or die "Could not copy '$file' to '$target': $!"; } chdir($old_cwd); File::Path::rmtree([$add_dir]); } # delete (copied) MANIFEST and META.yml unlink File::Spec->catfile($blibdir, 'MANIFEST'); unlink File::Spec->catfile($blibdir, 'META.yml'); chdir($base_dir); my $resulting_par_file = Cwd::abs_path(blib_to_par(quiet => 1)); chdir($old_cwd); File::Copy::move($resulting_par_file, $base_par); File::Path::rmtree([$base_dir]); } sub _merge_meta { my $meta_orig_file = shift; my $meta_extra_file = shift; return() if not defined $meta_orig_file or not -f $meta_orig_file; return 1 if not defined $meta_extra_file or not -f $meta_extra_file; my $yaml_functions = _get_yaml_functions(); die "Cannot merge META.yml files without a YAML reader/writer" if !exists $yaml_functions->{LoadFile} or !exists $yaml_functions->{DumpFile}; my $orig_meta = $yaml_functions->{LoadFile}->($meta_orig_file); my $extra_meta = $yaml_functions->{LoadFile}->($meta_extra_file); # I seem to remember there was this incompatibility between the different # YAML implementations with regards to "document" handling: my $orig_tree = (ref($orig_meta) eq 'ARRAY' ? $orig_meta->[0] : $orig_meta); my $extra_tree = (ref($extra_meta) eq 'ARRAY' ? $extra_meta->[0] : $extra_meta); _merge_provides($orig_tree, $extra_tree); _merge_requires($orig_tree, $extra_tree); $yaml_functions->{DumpFile}->($meta_orig_file, $orig_meta); return 1; } # merge the two-level provides sections of META.yml sub _merge_provides { my $orig_hash = shift; my $extra_hash = shift; return() if not exists $extra_hash->{provides}; $orig_hash->{provides} ||= {}; my $orig_provides = $orig_hash->{provides}; my $extra_provides = $extra_hash->{provides}; # two level clone is enough wrt META spec 1.4 # overwrite the original provides since we're also overwriting the files. foreach my $module (keys %$extra_provides) { my $extra_mod_hash = $extra_provides->{$module}; my %mod_hash; $mod_hash{$_} = $extra_mod_hash->{$_} for keys %$extra_mod_hash; $orig_provides->{$module} = \%mod_hash; } } # merge the single-level requires-like sections of META.yml sub _merge_requires { my $orig_hash = shift; my $extra_hash = shift; foreach my $type (qw(requires build_requires configure_requires recommends)) { next if not exists $extra_hash->{$type}; $orig_hash->{$type} ||= {}; # one level clone is enough wrt META spec 1.4 foreach my $module (keys %{ $extra_hash->{$type} }) { # FIXME there should be a version comparison here, BUT how are we going to do that without a guaranteed version.pm? $orig_hash->{$type}{$module} = $extra_hash->{$type}{$module}; # assign version and module name } } } #line 818 sub remove_man { my %args = &_args; my $par = $args{dist}; require Cwd; require File::Copy; require File::Path; require File::Find; # parameter checking if (not defined $par) { croak "First argument to remove_man() must be the .par archive to modify."; } if (not -f $par or not -r _ or not -w _) { croak "'$par' is not a file or you do not have enough permissions to read and modify it."; } # The unzipping will change directories. Remember old dir. my $old_cwd = Cwd::cwd(); # Unzip the base par to a temp. dir. (undef, my $base_dir) = _unzip_to_tmpdir( dist => $par, subdir => 'blib' ); my $blibdir = File::Spec->catdir($base_dir, 'blib'); # move the META.yml to the (main) temp. dir. File::Copy::move( File::Spec->catfile($blibdir, 'META.yml'), File::Spec->catfile($base_dir, 'META.yml') ); # delete (incorrect) MANIFEST unlink File::Spec->catfile($blibdir, 'MANIFEST'); opendir DIRECTORY, 'blib' or die $!; my @dirs = grep { /^blib\/(?:man\d*|html)$/ } grep { -d $_ } map { File::Spec->catfile('blib', $_) } readdir DIRECTORY; close DIRECTORY; File::Path::rmtree(\@dirs); chdir($base_dir); my $resulting_par_file = Cwd::abs_path(blib_to_par()); chdir($old_cwd); File::Copy::move($resulting_par_file, $par); File::Path::rmtree([$base_dir]); } #line 884 sub get_meta { my %args = &_args; my $dist = $args{dist}; return undef if not defined $dist or not -r $dist; require Cwd; require File::Path; # The unzipping will change directories. Remember old dir. my $old_cwd = Cwd::cwd(); # Unzip the base par to a temp. dir. (undef, my $base_dir) = _unzip_to_tmpdir( dist => $dist, subdir => 'blib' ); my $blibdir = File::Spec->catdir($base_dir, 'blib'); my $meta = File::Spec->catfile($blibdir, 'META.yml'); if (not -r $meta) { return undef; } open FH, '<', $meta or die "Could not open file '$meta' for reading: $!"; local $/ = undef; my $meta_text = ; close FH; chdir($old_cwd); File::Path::rmtree([$base_dir]); return $meta_text; } sub _unzip { my %args = &_args; my $dist = $args{dist}; my $path = $args{path} || File::Spec->curdir; return unless -f $dist; # Try fast unzipping first if (eval { require Archive::Unzip::Burst; 1 }) { my $return = !Archive::Unzip::Burst::unzip($dist, $path); return if $return; # true return value == error (a la system call) } # Then slow unzipping if (eval { require Archive::Zip; 1 }) { my $zip = Archive::Zip->new; local %SIG; $SIG{__WARN__} = sub { print STDERR $_[0] unless $_[0] =~ /\bstat\b/ }; return unless $zip->read($dist) == Archive::Zip::AZ_OK() and $zip->extractTree('', "$path/") == Archive::Zip::AZ_OK(); } # Then fall back to the system else { undef $!; if (_system_wrapper(unzip => $dist, '-d', $path)) { die "Failed to unzip '$dist' to path '$path': Could neither load " . "Archive::Zip nor (successfully) run the system 'unzip' (unzip said: $!)"; } } return 1; } sub _zip { my %args = &_args; my $dist = $args{dist}; if (eval { require Archive::Zip; 1 }) { my $zip = Archive::Zip->new; $zip->addTree( File::Spec->curdir, '' ); $zip->writeToFileNamed( $dist ) == Archive::Zip::AZ_OK() or die $!; } else { undef $!; if (_system_wrapper(qw(zip -r), $dist, File::Spec->curdir)) { die "Failed to zip '" .File::Spec->curdir(). "' to '$dist': Could neither load " . "Archive::Zip nor (successfully) run the system 'zip' (zip said: $!)"; } } return 1; } # This sub munges the arguments to most of the PAR::Dist functions # into a hash. On the way, it downloads PAR archives as necessary, etc. sub _args { # default to the first .par in the CWD if (not @_) { @_ = (glob('*.par'))[0]; } # single argument => it's a distribution file name or URL @_ = (dist => @_) if @_ == 1; my %args = @_; $args{name} ||= $args{dist}; # If we are installing from an URL, we want to munge the # distribution name so that it is in form "Module-Name" if (defined $args{name}) { $args{name} =~ s/^\w+:\/\///; my @elems = parse_dist_name($args{name}); # @elems is name, version, arch, perlversion if (defined $elems[0]) { $args{name} = $elems[0]; } else { $args{name} =~ s/^.*\/([^\/]+)$/$1/; $args{name} =~ s/^([0-9A-Za-z_-]+)-\d+\..+$/$1/; } } # append suffix if there is none if ($args{dist} and not $args{dist} =~ /\.[a-zA-Z_][^.]*$/) { require Config; my $suffix = $args{suffix}; $suffix ||= "$Config::Config{archname}-$Config::Config{version}.par"; $args{dist} .= "-$suffix"; } # download if it's an URL if ($args{dist} and $args{dist} =~ m!^\w+://!) { $args{dist} = _fetch(dist => $args{dist}) } return %args; } # Download PAR archive, but only if necessary (mirror!) my %escapes; sub _fetch { my %args = @_; if ($args{dist} =~ s/^file:\/\///) { return $args{dist} if -e $args{dist}; return; } require LWP::Simple; $ENV{PAR_TEMP} ||= File::Spec->catdir(File::Spec->tmpdir, 'par'); mkdir $ENV{PAR_TEMP}, 0777; %escapes = map { chr($_) => sprintf("%%%02X", $_) } 0..255 unless %escapes; $args{dist} =~ s{^cpan://((([a-zA-Z])[a-zA-Z])[-_a-zA-Z]+)/} {http://www.cpan.org/modules/by-authors/id/\U$3/$2/$1\E/}; my $file = $args{dist}; $file =~ s/([^\w\.])/$escapes{$1}/g; $file = File::Spec->catfile( $ENV{PAR_TEMP}, $file); my $rc = LWP::Simple::mirror( $args{dist}, $file ); if (!LWP::Simple::is_success($rc) and $rc != 304) { die "Error $rc: ", LWP::Simple::status_message($rc), " ($args{dist})\n"; } return $file if -e $file; return; } sub _verify_or_sign { my %args = &_args; require File::Path; require Module::Signature; die "Module::Signature version 0.25 required" unless Module::Signature->VERSION >= 0.25; require Cwd; my $cwd = Cwd::cwd(); my $action = $args{action}; my ($dist, $tmpdir) = _unzip_to_tmpdir($args{dist}); $action ||= (-e 'SIGNATURE' ? 'verify' : 'sign'); if ($action eq 'sign') { open FH, '>SIGNATURE' unless -e 'SIGNATURE'; open FH, 'MANIFEST' or die $!; local $/; my $out = ; if ($out !~ /^SIGNATURE(?:\s|$)/m) { $out =~ s/^(?!\s)/SIGNATURE\n/m; open FH, '>MANIFEST' or die $!; print FH $out; } close FH; $args{overwrite} = 1 unless exists $args{overwrite}; $args{skip} = 0 unless exists $args{skip}; } my $rv = Module::Signature->can($action)->(%args); _zip(dist => $dist) if $action eq 'sign'; File::Path::rmtree([$tmpdir]); chdir($cwd); return $rv; } sub _unzip_to_tmpdir { my %args = &_args; require File::Temp; my $dist = File::Spec->rel2abs($args{dist}); my $tmpdirname = File::Spec->catdir(File::Spec->tmpdir, "parXXXXX"); my $tmpdir = File::Temp::mkdtemp($tmpdirname) or die "Could not create temporary directory from template '$tmpdirname': $!"; my $path = $tmpdir; $path = File::Spec->catdir($tmpdir, $args{subdir}) if defined $args{subdir}; _unzip(dist => $dist, path => $path); chdir $tmpdir; return ($dist, $tmpdir); } #line 1132 sub parse_dist_name { my $file = shift; return(undef, undef, undef, undef) if not defined $file; (undef, undef, $file) = File::Spec->splitpath($file); my $version = qr/v?(?:\d+(?:_\d+)?|\d*(?:\.\d+(?:_\d+)?)+)/; $file =~ s/\.(?:par|tar\.gz|tar)$//i; my @elem = split /-/, $file; my (@dn, $dv, @arch, $pv); while (@elem) { my $e = shift @elem; if ( $e =~ /^$version$/o and not(# if not next token also a version # (assumes an arch string doesnt start with a version...) @elem and $elem[0] =~ /^$version$/o ) ) { $dv = $e; last; } push @dn, $e; } my $dn; $dn = join('-', @dn) if @dn; if (not @elem) { return( $dn, $dv, undef, undef); } while (@elem) { my $e = shift @elem; if ($e =~ /^$version|any_version$/) { $pv = $e; last; } push @arch, $e; } my $arch; $arch = join('-', @arch) if @arch; return($dn, $dv, $arch, $pv); } #line 1209 sub generate_blib_stub { my %args = &_args; my $dist = $args{dist}; require Config; my $name = $args{name}; my $version = $args{version}; my $suffix = $args{suffix}; my ($parse_name, $parse_version, $archname, $perlversion) = parse_dist_name($dist); $name ||= $parse_name; $version ||= $parse_version; $suffix = "$archname-$perlversion" if (not defined $suffix or $suffix eq '') and $archname and $perlversion; $suffix ||= "$Config::Config{archname}-$Config::Config{version}"; if ( grep { not defined $_ } ($name, $version, $suffix) ) { warn "Could not determine distribution meta information from distribution name '$dist'"; return(); } $suffix =~ s/\.par$//; if (not -f 'META.yml') { open META, '>', 'META.yml' or die "Could not open META.yml file for writing: $!"; print META << "YAML" if fileno(META); name: $name version: $version build_requires: {} conflicts: {} dist_name: $name-$version-$suffix.par distribution_type: par dynamic_config: 0 generated_by: 'PAR::Dist version $PAR::Dist::VERSION' license: unknown YAML close META; } mkdir('blib'); mkdir(File::Spec->catdir('blib', 'lib')); mkdir(File::Spec->catdir('blib', 'script')); return 1; } #line 1277 sub contains_binaries { require File::Find; my %args = &_args; my $dist = $args{dist}; return undef if not defined $dist or not -r $dist; require Cwd; require File::Path; # The unzipping will change directories. Remember old dir. my $old_cwd = Cwd::cwd(); # Unzip the base par to a temp. dir. (undef, my $base_dir) = _unzip_to_tmpdir( dist => $dist, subdir => 'blib' ); my $blibdir = File::Spec->catdir($base_dir, 'blib'); my $archdir = File::Spec->catdir($blibdir, 'arch'); my $found = 0; File::Find::find( sub { $found++ if -f $_ and not /^\.exists$/; }, $archdir ); chdir($old_cwd); File::Path::rmtree([$base_dir]); return $found ? 1 : 0; } sub _system_wrapper { if ($DEBUG) { Carp::cluck("Running system call '@_' from:"); } return system(@_); } # stolen from Module::Install::Can # very much internal and subject to change or removal sub _MI_can_run { require ExtUtils::MakeMaker; my ($cmd) = @_; my $_cmd = $cmd; return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd)); for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') { my $abs = File::Spec->catfile($dir, $cmd); return $abs if (-x $abs or $abs = MM->maybe_command($abs)); } return; } # Tries to load any YAML reader writer I know of # returns nothing on failure or hash reference containing # a subset of Load, Dump, LoadFile, DumpFile # entries with sub references on success. sub _get_yaml_functions { # reasoning for the ranking here: # - syck is fast and reasonably complete # - YAML.pm is slow and aging # - Tiny is only a very small subset # - XS is very new and I'm not sure it's ready for prime-time yet # - Parse... is only a reader and only deals with the same subset as ::Tiny my @modules = qw(YAML::Syck YAML YAML::Tiny YAML::XS Parse::CPAN::Meta); my %yaml_functions; foreach my $module (@modules) { eval "require $module;"; if (!$@) { warn "PAR::Dist testers/debug info: Using '$module' as YAML implementation" if $DEBUG; foreach my $sub (qw(Load Dump LoadFile DumpFile)) { no strict 'refs'; my $subref = *{"${module}::$sub"}{CODE}; if (defined $subref and ref($subref) eq 'CODE') { $yaml_functions{$sub} = $subref; } } $yaml_functions{yaml_provider} = $module; last; } } # end foreach module candidates if (not keys %yaml_functions) { warn "Cannot find a working YAML reader/writer implementation. Tried to load all of '@modules'"; } return(\%yaml_functions); } sub _check_tools { my $tools = _get_yaml_functions(); if ($DEBUG) { foreach (qw/Load Dump LoadFile DumpFile/) { warn "No YAML support for $_ found.\n" if not defined $tools->{$_}; } } $tools->{zip} = undef; if (eval {require Archive::Zip; 1;}) { warn "Using Archive::Zip as ZIP tool.\n" if $DEBUG; $tools->{zip} = 'Archive::Zip'; } elsif (_MI_can_run("zip") and _MI_can_run("unzip")) { warn "Using zip/unzip as ZIP tool.\n" if $DEBUG; $tools->{zip} = 'zip'; } else { warn "Found neither Archive::Zip nor ZIP/UNZIP as valid ZIP tools.\n" if $DEBUG; $tools->{zip} = undef; } return $tools; } 1; #line 1425 FILE1819963a/PAR/Filter.pmw#line 1 "/usr/local/share/perl/5.8.8/PAR/Filter.pm" package PAR::Filter; use 5.006; use strict; use warnings; our $VERSION = '0.03'; #line 64 sub new { my $class = shift; require "PAR/Filter/$_.pm" foreach @_; bless(\@_, $class); } sub apply { my ($self, $ref, $name) = @_; my $filename = $name || '-e'; if (!ref $ref) { $name ||= $filename = $ref; local $/; open my $fh, $ref or die $!; binmode($fh); my $content = <$fh>; $ref = \$content; return $ref unless length($content); } "PAR::Filter::$_"->new->apply( $ref, $filename, $name ) foreach @$self; return $ref; } 1; #line 106 FILEeb4ee2aa/PAR/Filter/PodStrip.pm#line 1 "/usr/local/share/perl/5.8.8/PAR/Filter/PodStrip.pm" package PAR::Filter::PodStrip; use 5.006; use strict; use warnings; use base 'PAR::Filter'; #line 22 sub apply { my ($class, $ref, $filename, $name) = @_; no warnings 'uninitialized'; my $data = ''; $data = $1 if $$ref =~ s/((?:^__DATA__\r?\n).*)//ms; my $line = 1; if ($$ref =~ /^=(?:head\d|pod|begin|item|over|for|back|end|cut|encoding)\b/) { $$ref = "\n$$ref"; $line--; } $$ref =~ s{( (.*?\n) (?:=(?:head\d|pod|begin|item|over|for|back|end|encoding)\b .*?\n) (?:=cut[\t ]*[\r\n]*?|\Z) (\r?\n)? )}{ my ($pre, $post) = ($2, $3); "$pre#line " . ( $line += ( () = ( $1 =~ /\n/g ) ) ) . $post; }gsex; $$ref = '#line 1 "' . ($filename) . "\"\n" . $$ref if length $filename; $$ref =~ s/^#line 1 (.*\n)(#!.*\n)/$2#line 2 $1/g; $$ref .= $data; } 1; #line 83 FILE4cde0143/PAR/Heavy.pmh#line 1 "/usr/local/share/perl/5.8.8/PAR/Heavy.pm" package PAR::Heavy; $PAR::Heavy::VERSION = '0.11'; #line 17 ######################################################################## # Dynamic inclusion of XS modules my ($bootstrap, $dl_findfile); # Caches for code references my ($dlext); # Cache for $Config{dlext} my ($cache_key); # The current file to find my $is_insensitive_fs = ( -s $0 and (-s lc($0) || -1) == (-s uc($0) || -1) and (-s lc($0) || -1) == -s $0 ); # Adds pre-hooks to Dynaloader's key methods sub _init_dynaloader { return if $bootstrap; return unless eval { require DynaLoader; DynaLoader::dl_findfile(); 1 }; $bootstrap = \&DynaLoader::bootstrap; $dl_findfile = \&DynaLoader::dl_findfile; local $^W; *{'DynaLoader::dl_expandspec'} = sub { return }; *{'DynaLoader::bootstrap'} = \&_bootstrap; *{'DynaLoader::dl_findfile'} = \&_dl_findfile; } # Return the cached location of .dll inside PAR first, if possible. sub _dl_findfile { return $FullCache{$cache_key} if exists $FullCache{$cache_key}; if ($is_insensitive_fs) { # We have a case-insensitive filesystem... my ($key) = grep { lc($_) eq lc($cache_key) } keys %FullCache; return $FullCache{$key} if defined $key; } return $dl_findfile->(@_); } # Find and extract .dll from PAR files for a given dynamic module. sub _bootstrap { my (@args) = @_; my ($module) = $args[0] or return; my @modparts = split(/::/, $module); my $modfname = $modparts[-1]; $modfname = &DynaLoader::mod2fname(\@modparts) if defined &DynaLoader::mod2fname; if (($^O eq 'NetWare') && (length($modfname) > 8)) { $modfname = substr($modfname, 0, 8); } # XXX: Multi-platform .dll support in PARs needs better than $Config. # FIXME: Config is always loaded by PAR.pm! $dlext ||= do { require Config; (defined %Config::Config) ? $Config::Config{dlext} : ''; }; my $modpname = join((($^O eq 'MacOS') ? ':' : '/'), @modparts); my $file = $cache_key = "auto/$modpname/$modfname.$dlext"; if ($FullCache{$file}) { local $DynaLoader::do_expand = 1; return $bootstrap->(@args); } my $member; $member = PAR::_find_par_any(undef, $file, 1) if defined &PAR::_find_par_any; return $bootstrap->(@args) unless $member; # we failed to find the dll, let DynaLoader (try or) throw an error $FullCache{$file} = _dl_extract($member, $file); # Now extract all associated shared objs in the same auto/ dir # XXX: shouldn't this also set $FullCache{...} for those files? my $first = $member->fileName; my $path_pattern = $first; $path_pattern =~ s{[^/]*$}{}; if ($PAR::LastAccessedPAR) { foreach my $member ( $PAR::LastAccessedPAR->members ) { next if $member->isDirectory; my $name = $member->fileName; next if $name eq $first; next unless $name =~ m{^/?\Q$path_pattern\E\/[^/]*\.\Q$dlext\E[^/]*$}; $name =~ s{.*/}{}; _dl_extract($member, $file, $name); } } local $DynaLoader::do_expand = 1; return $bootstrap->(@args); } sub _dl_extract { my ($member, $file, $name) = @_; require File::Spec; require File::Temp; my ($fh, $filename); # fix borked tempdir from earlier versions if ($ENV{PAR_TEMP} and -e $ENV{PAR_TEMP} and !-d $ENV{PAR_TEMP}) { unlink($ENV{PAR_TEMP}); mkdir($ENV{PAR_TEMP}, 0755); } if ($ENV{PAR_CLEAN} and !$name) { ($fh, $filename) = File::Temp::tempfile( DIR => ($ENV{PAR_TEMP} || File::Spec->tmpdir), SUFFIX => ".$dlext", UNLINK => ($^O ne 'MSWin32' and $^O !~ /hpux/), ); ($filename) = $filename =~ /^([\x20-\xff]+)$/; } else { $filename = File::Spec->catfile( ($ENV{PAR_TEMP} || File::Spec->tmpdir), ($name || ($member->crc32String . ".$dlext")) ); ($filename) = $filename =~ /^([\x20-\xff]+)$/; open $fh, '>', $filename or die $! unless -r $filename and -e _ and -s _ == $member->uncompressedSize; } if ($fh) { binmode($fh); $member->extractToFileHandle($fh); close $fh; chmod 0755, $filename; } return $filename; } 1; #line 183 FILE006159fd/PAR/SetupProgname.pm#line 1 "/usr/local/share/perl/5.8.8/PAR/SetupProgname.pm" package PAR::SetupProgname; $PAR::VERSION = '0.982'; use 5.006; use strict; use warnings; use Config (); #line 26 # for PAR internal use only! our $Progname = $ENV{PAR_PROGNAME} || $0; # same code lives in PAR::Packer's par.pl! sub set_progname { require File::Spec; if (defined $ENV{PAR_PROGNAME} and $ENV{PAR_PROGNAME} =~ /(.+)/) { $Progname = $1; } $Progname = $0 if not defined $Progname; if (( () = File::Spec->splitdir($Progname) ) > 1 or !$ENV{PAR_PROGNAME}) { if (open my $fh, $Progname) { return if -s $fh; } if (-s "$Progname$Config::Config{_exe}") { $Progname .= $Config::Config{_exe}; return; } } foreach my $dir (split /\Q$Config::Config{path_sep}\E/, $ENV{PATH}) { next if exists $ENV{PAR_TEMP} and $dir eq $ENV{PAR_TEMP}; my $name = File::Spec->catfile($dir, "$Progname$Config::Config{_exe}"); if (-s $name) { $Progname = $name; last } $name = File::Spec->catfile($dir, "$Progname"); if (-s $name) { $Progname = $name; last } } } 1; __END__ #line 92 FILEda1e51bf/PAR/SetupTemp.pm #line 1 "/usr/local/share/perl/5.8.8/PAR/SetupTemp.pm" package PAR::SetupTemp; $PAR::VERSION = '0.982'; use 5.006; use strict; use warnings; use PAR::SetupProgname; #line 29 # for PAR internal use only! our $PARTemp; # The C version of this code appears in myldr/mktmpdir.c # This code also lives in PAR::Packer's par.pl as _set_par_temp! sub set_par_temp_env { PAR::SetupProgname::set_progname() unless defined $PAR::SetupProgname::Progname; if (defined $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/) { $PARTemp = $1; return; } my $stmpdir = _get_par_user_tempdir(); require File::Spec; if (defined $stmpdir) { # it'd be quite bad if this was not the case if (!$ENV{PAR_CLEAN} and my $mtime = (stat($PAR::SetupProgname::Progname))[9]) { my $ctx = _get_digester(); # Workaround for bug in Digest::SHA 5.38 and 5.39 my $sha_version = eval { $Digest::SHA::VERSION } || 0; if ($sha_version eq '5.38' or $sha_version eq '5.39') { $ctx->addfile($PAR::SetupProgname::Progname, "b") if ($ctx); } else { if ($ctx and open(my $fh, "<$PAR::SetupProgname::Progname")) { binmode($fh); $ctx->addfile($fh); close($fh); } } $stmpdir = File::Spec->catdir( $stmpdir, "cache-" . ( $ctx ? $ctx->hexdigest : $mtime ) ); } else { $ENV{PAR_CLEAN} = 1; $stmpdir = File::Spec->catdir($stmpdir, "temp-$$"); } $ENV{PAR_TEMP} = $stmpdir; mkdir $stmpdir, 0755; } # end if found a temp dir $PARTemp = $1 if defined $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/; } # Find any digester # Used in PAR::Repository::Client! sub _get_digester { my $ctx = eval { require Digest::SHA; Digest::SHA->new(1) } || eval { require Digest::SHA1; Digest::SHA1->new } || eval { require Digest::MD5; Digest::MD5->new }; return $ctx; } # find the per-user temporary directory (eg /tmp/par-$USER) # Used in PAR::Repository::Client! sub _get_par_user_tempdir { my $username = _find_username(); my $temp_path; foreach my $path ( (map $ENV{$_}, qw( PAR_TMPDIR TMPDIR TEMPDIR TEMP TMP )), qw( C:\\TEMP /tmp . ) ) { next unless defined $path and -d $path and -w $path; $temp_path = File::Spec->catdir($path, "par-$username"); ($temp_path) = $temp_path =~ /^(.*)$/s; mkdir $temp_path, 0755; last; } return $temp_path; } # tries hard to find out the name of the current user sub _find_username { my $username; my $pwuid; # does not work everywhere: eval {($pwuid) = getpwuid($>) if defined $>;}; if ( defined(&Win32::LoginName) ) { $username = &Win32::LoginName; } elsif (defined $pwuid) { $username = $pwuid; } else { $username = $ENV{USERNAME} || $ENV{USER} || 'SYSTEM'; } $username =~ s/\W/_/g; return $username; } 1; __END__ #line 162 FILEaaa59b6e/Time/Local.pm#line 1 "/usr/local/share/perl/5.8.8/Time/Local.pm" package Time::Local; require Exporter; use Carp; use Config; use strict; use integer; use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK ); $VERSION = '1.1901'; @ISA = qw( Exporter ); @EXPORT = qw( timegm timelocal ); @EXPORT_OK = qw( timegm_nocheck timelocal_nocheck ); my @MonthDays = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ); # Determine breakpoint for rolling century my $ThisYear = ( localtime() )[5]; my $Breakpoint = ( $ThisYear + 50 ) % 100; my $NextCentury = $ThisYear - $ThisYear % 100; $NextCentury += 100 if $Breakpoint < 50; my $Century = $NextCentury - 100; my $SecOff = 0; my ( %Options, %Cheat ); use constant SECS_PER_MINUTE => 60; use constant SECS_PER_HOUR => 3600; use constant SECS_PER_DAY => 86400; my $MaxInt; if ( $^O eq 'MacOS' ) { # time_t is unsigned... $MaxInt = ( 1 << ( 8 * $Config{ivsize} ) ) - 1; } else { $MaxInt = ( ( 1 << ( 8 * $Config{ivsize} - 2 ) ) - 1 ) * 2 + 1; } my $MaxDay = int( ( $MaxInt - ( SECS_PER_DAY / 2 ) ) / SECS_PER_DAY ) - 1; # Determine the EPOC day for this machine my $Epoc = 0; if ( $^O eq 'vos' ) { # work around posix-977 -- VOS doesn't handle dates in the range # 1970-1980. $Epoc = _daygm( 0, 0, 0, 1, 0, 70, 4, 0 ); } elsif ( $^O eq 'MacOS' ) { $MaxDay *=2 if $^O eq 'MacOS'; # time_t unsigned ... quick hack? # MacOS time() is seconds since 1 Jan 1904, localtime # so we need to calculate an offset to apply later $Epoc = 693901; $SecOff = timelocal( localtime(0)) - timelocal( gmtime(0) ) ; $Epoc += _daygm( gmtime(0) ); } else { $Epoc = _daygm( gmtime(0) ); } %Cheat = (); # clear the cache as epoc has changed sub _daygm { # This is written in such a byzantine way in order to avoid # lexical variables and sub calls, for speed return $_[3] + ( $Cheat{ pack( 'ss', @_[ 4, 5 ] ) } ||= do { my $month = ( $_[4] + 10 ) % 12; my $year = ( $_[5] + 1900 ) - ( $month / 10 ); ( ( 365 * $year ) + ( $year / 4 ) - ( $year / 100 ) + ( $year / 400 ) + ( ( ( $month * 306 ) + 5 ) / 10 ) ) - $Epoc; } ); } sub _timegm { my $sec = $SecOff + $_[0] + ( SECS_PER_MINUTE * $_[1] ) + ( SECS_PER_HOUR * $_[2] ); return $sec + ( SECS_PER_DAY * &_daygm ); } sub timegm { my ( $sec, $min, $hour, $mday, $month, $year ) = @_; if ( $year >= 1000 ) { $year -= 1900; } elsif ( $year < 100 and $year >= 0 ) { $year += ( $year > $Breakpoint ) ? $Century : $NextCentury; } unless ( $Options{no_range_check} ) { croak "Month '$month' out of range 0..11" if $month > 11 or $month < 0; my $md = $MonthDays[$month]; ++$md if $month == 1 && _is_leap_year( $year + 1900 ); croak "Day '$mday' out of range 1..$md" if $mday > $md or $mday < 1; croak "Hour '$hour' out of range 0..23" if $hour > 23 or $hour < 0; croak "Minute '$min' out of range 0..59" if $min > 59 or $min < 0; croak "Second '$sec' out of range 0..59" if $sec > 59 or $sec < 0; } my $days = _daygm( undef, undef, undef, $mday, $month, $year ); unless ($Options{no_range_check} or abs($days) < $MaxDay) { my $msg = ''; $msg .= "Day too big - $days > $MaxDay\n" if $days > $MaxDay; $year += 1900; $msg .= "Cannot handle date ($sec, $min, $hour, $mday, $month, $year)"; croak $msg; } return $sec + $SecOff + ( SECS_PER_MINUTE * $min ) + ( SECS_PER_HOUR * $hour ) + ( SECS_PER_DAY * $days ); } sub _is_leap_year { return 0 if $_[0] % 4; return 1 if $_[0] % 100; return 0 if $_[0] % 400; return 1; } sub timegm_nocheck { local $Options{no_range_check} = 1; return &timegm; } sub timelocal { my $ref_t = &timegm; my $loc_for_ref_t = _timegm( localtime($ref_t) ); my $zone_off = $loc_for_ref_t - $ref_t or return $loc_for_ref_t; # Adjust for timezone my $loc_t = $ref_t - $zone_off; # Are we close to a DST change or are we done my $dst_off = $ref_t - _timegm( localtime($loc_t) ); # If this evaluates to true, it means that the value in $loc_t is # the _second_ hour after a DST change where the local time moves # backward. if ( ! $dst_off && ( ( $ref_t - SECS_PER_HOUR ) - _timegm( localtime( $loc_t - SECS_PER_HOUR ) ) < 0 ) ) { return $loc_t - SECS_PER_HOUR; } # Adjust for DST change $loc_t += $dst_off; return $loc_t if $dst_off > 0; # If the original date was a non-extent gap in a forward DST jump, # we should now have the wrong answer - undo the DST adjustment my ( $s, $m, $h ) = localtime($loc_t); $loc_t -= $dst_off if $s != $_[0] || $m != $_[1] || $h != $_[2]; return $loc_t; } sub timelocal_nocheck { local $Options{no_range_check} = 1; return &timelocal; } 1; __END__ #line 372 FILE(f9f179df/auto/Compress/Zlib/autosplit.ix#line 1 "/usr/local/share/perl/5.8.8/auto/Compress/Zlib/autosplit.ix" # Index created by AutoSplit for blib/lib/Compress/Zlib.pm # (file acts as timestamp) 1; FILE3a2b9e3d/Carp.pm6#line 1 "/usr/share/perl/5.8/Carp.pm" package Carp; our $VERSION = '1.04'; # This package is heavily used. Be small. Be fast. Be good. # Comments added by Andy Wardley 09-Apr-98, based on an # _almost_ complete understanding of the package. Corrections and # comments are welcome. # The members of %Internal are packages that are internal to perl. # Carp will not report errors from within these packages if it # can. The members of %CarpInternal are internal to Perl's warning # system. Carp will not report errors from within these packages # either, and will not report calls *to* these packages for carp and # croak. They replace $CarpLevel, which is deprecated. The # $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval # text and function arguments should be formatted when printed. # Comments added by Jos I. Boumans 11-Aug-2004 # I can not get %CarpInternal or %Internal to work as advertised, # therefor leaving it out of the below documentation. # $CarpLevel may be decprecated according to the last comment, but # after 6 years, it's still around and in heavy use ;) $CarpInternal{Carp}++; $CarpInternal{warnings}++; $CarpLevel = 0; # How many extra package levels to skip on carp. # How many calls to skip on confess. # Reconciling these notions is hard, use # %Internal and %CarpInternal instead. $MaxEvalLen = 0; # How much eval '...text...' to show. 0 = all. $MaxArgLen = 64; # How much of each argument to print. 0 = all. $MaxArgNums = 8; # How many arguments to print. 0 = all. $Verbose = 0; # If true then make shortmess call longmess instead require Exporter; @ISA = ('Exporter'); @EXPORT = qw(confess croak carp); @EXPORT_OK = qw(cluck verbose longmess shortmess); @EXPORT_FAIL = qw(verbose); # hook to enable verbose mode # if the caller specifies verbose usage ("perl -MCarp=verbose script.pl") # then the following method will be called by the Exporter which knows # to do this thanks to @EXPORT_FAIL, above. $_[1] will contain the word # 'verbose'. sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; return @_; } # longmess() crawls all the way up the stack reporting on all the function # calls made. The error string, $error, is originally constructed from the # arguments passed into longmess() via confess(), cluck() or shortmess(). # This gets appended with the stack trace messages which are generated for # each function call on the stack. sub longmess { { local($@, $!); # XXX fix require to not clear $@ or $!? # don't use require unless we need to (for Safe compartments) require Carp::Heavy unless $INC{"Carp/Heavy.pm"}; } # Icky backwards compatibility wrapper. :-( my $call_pack = caller(); if ($Internal{$call_pack} or $CarpInternal{$call_pack}) { return longmess_heavy(@_); } else { local $CarpLevel = $CarpLevel + 1; return longmess_heavy(@_); } } # shortmess() is called by carp() and croak() to skip all the way up to # the top-level caller's package and report the error from there. confess() # and cluck() generate a full stack trace so they call longmess() to # generate that. In verbose mode shortmess() calls longmess() so # you always get a stack trace sub shortmess { # Short-circuit &longmess if called via multiple packages { local($@, $!); # XXX fix require to not clear $@ or $!? # don't use require unless we need to (for Safe compartments) require Carp::Heavy unless $INC{"Carp/Heavy.pm"}; } # Icky backwards compatibility wrapper. :-( my $call_pack = caller(); local @CARP_NOT = caller(); shortmess_heavy(@_); } # the following four functions call longmess() or shortmess() depending on # whether they should generate a full stack trace (confess() and cluck()) # or simply report the caller's package (croak() and carp()), respectively. # confess() and croak() die, carp() and cluck() warn. sub croak { die shortmess @_ } sub confess { die longmess @_ } sub carp { warn shortmess @_ } sub cluck { warn longmess @_ } 1; FILE5cbb310d/Carp/Heavy.pm#line 1 "/usr/share/perl/5.8/Carp/Heavy.pm" # Carp::Heavy uses some variables in common with Carp. package Carp; # use strict; # not yet # On one line so MakeMaker will see it. use Carp; our $VERSION = $Carp::VERSION; our ($CarpLevel, $MaxArgNums, $MaxEvalLen, $MaxArgLen, $Verbose); sub caller_info { my $i = shift(@_) + 1; package DB; my %call_info; @call_info{ qw(pack file line sub has_args wantarray evaltext is_require) } = caller($i); unless (defined $call_info{pack}) { return (); } my $sub_name = Carp::get_subname(\%call_info); if ($call_info{has_args}) { my @args = map {Carp::format_arg($_)} @DB::args; if ($MaxArgNums and @args > $MaxArgNums) { # More than we want to show? $#args = $MaxArgNums; push @args, '...'; } # Push the args onto the subroutine $sub_name .= '(' . join (', ', @args) . ')'; } $call_info{sub_name} = $sub_name; return wantarray() ? %call_info : \%call_info; } # Transform an argument to a function into a string. sub format_arg { my $arg = shift; if (ref($arg)) { $arg = defined($overload::VERSION) ? overload::StrVal($arg) : "$arg"; }elsif (not defined($arg)) { $arg = 'undef'; } $arg =~ s/'/\\'/g; $arg = str_len_trim($arg, $MaxArgLen); # Quote it? $arg = "'$arg'" unless $arg =~ /^-?[\d.]+\z/; # The following handling of "control chars" is direct from # the original code - it is broken on Unicode though. # Suggestions? utf8::is_utf8($arg) or $arg =~ s/([[:cntrl:]]|[[:^ascii:]])/sprintf("\\x{%x}",ord($1))/eg; return $arg; } # Takes an inheritance cache and a package and returns # an anon hash of known inheritances and anon array of # inheritances which consequences have not been figured # for. sub get_status { my $cache = shift; my $pkg = shift; $cache->{$pkg} ||= [{$pkg => $pkg}, [trusts_directly($pkg)]]; return @{$cache->{$pkg}}; } # Takes the info from caller() and figures out the name of # the sub/require/eval sub get_subname { my $info = shift; if (defined($info->{evaltext})) { my $eval = $info->{evaltext}; if ($info->{is_require}) { return "require $eval"; } else { $eval =~ s/([\\\'])/\\$1/g; return "eval '" . str_len_trim($eval, $MaxEvalLen) . "'"; } } return ($info->{sub} eq '(eval)') ? 'eval {...}' : $info->{sub}; } # Figures out what call (from the point of view of the caller) # the long error backtrace should start at. sub long_error_loc { my $i; my $lvl = $CarpLevel; { my $pkg = caller(++$i); unless(defined($pkg)) { # This *shouldn't* happen. if (%Internal) { local %Internal; $i = long_error_loc(); last; } else { # OK, now I am irritated. return 2; } } redo if $CarpInternal{$pkg}; redo unless 0 > --$lvl; redo if $Internal{$pkg}; } return $i - 1; } sub longmess_heavy { return @_ if ref($_[0]); # don't break references as exceptions my $i = long_error_loc(); return ret_backtrace($i, @_); } # Returns a full stack backtrace starting from where it is # told. sub ret_backtrace { my ($i, @error) = @_; my $mess; my $err = join '', @error; $i++; my $tid_msg = ''; if (defined &Thread::tid) { my $tid = Thread->self->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); $mess = "$err at $i{file} line $i{line}$tid_msg\n"; while (my %i = caller_info(++$i)) { $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n"; } return $mess; } sub ret_summary { my ($i, @error) = @_; my $err = join '', @error; $i++; my $tid_msg = ''; if (defined &Thread::tid) { my $tid = Thread->self->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); return "$err at $i{file} line $i{line}$tid_msg\n"; } sub short_error_loc { my $cache; my $i = 1; my $lvl = $CarpLevel; { my $called = caller($i++); my $caller = caller($i); return 0 unless defined($caller); # What happened? redo if $Internal{$caller}; redo if $CarpInternal{$called}; redo if trusts($called, $caller, $cache); redo if trusts($caller, $called, $cache); redo unless 0 > --$lvl; } return $i - 1; } sub shortmess_heavy { return longmess_heavy(@_) if $Verbose; return @_ if ref($_[0]); # don't break references as exceptions my $i = short_error_loc(); if ($i) { ret_summary($i, @_); } else { longmess_heavy(@_); } } # If a string is too long, trims it with ... sub str_len_trim { my $str = shift; my $max = shift || 0; if (2 < $max and $max < length($str)) { substr($str, $max - 3) = '...'; } return $str; } # Takes two packages and an optional cache. Says whether the # first inherits from the second. # # Recursive versions of this have to work to avoid certain # possible endless loops, and when following long chains of # inheritance are less efficient. sub trusts { my $child = shift; my $parent = shift; my $cache = shift || {}; my ($known, $partial) = get_status($cache, $child); # Figure out consequences until we have an answer while (@$partial and not exists $known->{$parent}) { my $anc = shift @$partial; next if exists $known->{$anc}; $known->{$anc}++; my ($anc_knows, $anc_partial) = get_status($cache, $anc); my @found = keys %$anc_knows; @$known{@found} = (); push @$partial, @$anc_partial; } return exists $known->{$parent}; } # Takes a package and gives a list of those trusted directly sub trusts_directly { my $class = shift; no strict 'refs'; no warnings 'once'; return @{"$class\::CARP_NOT"} ? @{"$class\::CARP_NOT"} : @{"$class\::ISA"}; } 1; FILE0fdca3e9/Exporter.pm#line 1 "/usr/share/perl/5.8/Exporter.pm" package Exporter; require 5.006; # Be lean. #use strict; #no strict 'refs'; our $Debug = 0; our $ExportLevel = 0; our $Verbose ||= 0; our $VERSION = '5.58'; our (%Cache); $Carp::Internal{Exporter} = 1; sub as_heavy { require Exporter::Heavy; # Unfortunately, this does not work if the caller is aliased as *name = \&foo # Thus the need to create a lot of identical subroutines my $c = (caller(1))[3]; $c =~ s/.*:://; \&{"Exporter::Heavy::heavy_$c"}; } sub export { goto &{as_heavy()}; } sub import { my $pkg = shift; my $callpkg = caller($ExportLevel); if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { *{$callpkg."::import"} = \&import; return; } # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-( my($exports, $fail) = (\@{"$pkg\::EXPORT"}, \@{"$pkg\::EXPORT_FAIL"}); return export $pkg, $callpkg, @_ if $Verbose or $Debug or @$fail > 1; my $export_cache = ($Cache{$pkg} ||= {}); my $args = @_ or @_ = @$exports; local $_; if ($args and not %$export_cache) { s/^&//, $export_cache->{$_} = 1 foreach (@$exports, @{"$pkg\::EXPORT_OK"}); } my $heavy; # Try very hard not to use {} and hence have to enter scope on the foreach # We bomb out of the loop with last as soon as heavy is set. if ($args or $fail) { ($heavy = (/\W/ or $args and not exists $export_cache->{$_} or @$fail and $_ eq $fail->[0])) and last foreach (@_); } else { ($heavy = /\W/) and last foreach (@_); } return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy; local $SIG{__WARN__} = sub {require Carp; &Carp::carp}; # shortcut for the common case of no type character *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_; } # Default methods sub export_fail { my $self = shift; @_; } # Unfortunately, caller(1)[3] "does not work" if the caller is aliased as # *name = \&foo. Thus the need to create a lot of identical subroutines # Otherwise we could have aliased them to export(). sub export_to_level { goto &{as_heavy()}; } sub export_tags { goto &{as_heavy()}; } sub export_ok_tags { goto &{as_heavy()}; } sub require_version { goto &{as_heavy()}; } 1; __END__ FILE6f4d19ae/Exporter/Heavy.pm#line 1 "/usr/share/perl/5.8/Exporter/Heavy.pm" package Exporter::Heavy; use strict; no strict 'refs'; # On one line so MakeMaker will see it. require Exporter; our $VERSION = $Exporter::VERSION; $Carp::Internal{"Exporter::Heavy"} = 1; # # We go to a lot of trouble not to 'require Carp' at file scope, # because Carp requires Exporter, and something has to give. # sub _rebuild_cache { my ($pkg, $exports, $cache) = @_; s/^&// foreach @$exports; @{$cache}{@$exports} = (1) x @$exports; my $ok = \@{"${pkg}::EXPORT_OK"}; if (@$ok) { s/^&// foreach @$ok; @{$cache}{@$ok} = (1) x @$ok; } } sub heavy_export { # First make import warnings look like they're coming from the "use". local $SIG{__WARN__} = sub { my $text = shift; if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//) { require Carp; local $Carp::CarpLevel = 1; # ignore package calling us too. Carp::carp($text); } else { warn $text; } }; local $SIG{__DIE__} = sub { require Carp; local $Carp::CarpLevel = 1; # ignore package calling us too. Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT") if $_[0] =~ /^Unable to create sub named "(.*?)::"/; }; my($pkg, $callpkg, @imports) = @_; my($type, $sym, $cache_is_current, $oops); my($exports, $export_cache) = (\@{"${pkg}::EXPORT"}, $Exporter::Cache{$pkg} ||= {}); if (@imports) { if (!%$export_cache) { _rebuild_cache ($pkg, $exports, $export_cache); $cache_is_current = 1; } if (grep m{^[/!:]}, @imports) { my $tagsref = \%{"${pkg}::EXPORT_TAGS"}; my $tagdata; my %imports; my($remove, $spec, @names, @allexports); # negated first item implies starting with default set: unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/; foreach $spec (@imports){ $remove = $spec =~ s/^!//; if ($spec =~ s/^://){ if ($spec eq 'DEFAULT'){ @names = @$exports; } elsif ($tagdata = $tagsref->{$spec}) { @names = @$tagdata; } else { warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS]; ++$oops; next; } } elsif ($spec =~ m:^/(.*)/$:){ my $patn = $1; @allexports = keys %$export_cache unless @allexports; # only do keys once @names = grep(/$patn/, @allexports); # not anchored by default } else { @names = ($spec); # is a normal symbol name } warn "Import ".($remove ? "del":"add").": @names " if $Exporter::Verbose; if ($remove) { foreach $sym (@names) { delete $imports{$sym} } } else { @imports{@names} = (1) x @names; } } @imports = keys %imports; } my @carp; foreach $sym (@imports) { if (!$export_cache->{$sym}) { if ($sym =~ m/^\d/) { $pkg->VERSION($sym); # inherit from UNIVERSAL # If the version number was the only thing specified # then we should act as if nothing was specified: if (@imports == 1) { @imports = @$exports; last; } # We need a way to emulate 'use Foo ()' but still # allow an easy version check: "use Foo 1.23, ''"; if (@imports == 2 and !$imports[1]) { @imports = (); last; } } elsif ($sym !~ s/^&// || !$export_cache->{$sym}) { # Last chance - see if they've updated EXPORT_OK since we # cached it. unless ($cache_is_current) { %$export_cache = (); _rebuild_cache ($pkg, $exports, $export_cache); $cache_is_current = 1; } if (!$export_cache->{$sym}) { # accumulate the non-exports push @carp, qq["$sym" is not exported by the $pkg module\n]; $oops++; } } } } if ($oops) { require Carp; Carp::croak("@{carp}Can't continue after import errors"); } } else { @imports = @$exports; } my($fail, $fail_cache) = (\@{"${pkg}::EXPORT_FAIL"}, $Exporter::FailCache{$pkg} ||= {}); if (@$fail) { if (!%$fail_cache) { # Build cache of symbols. Optimise the lookup by adding # barewords twice... both with and without a leading &. # (Technique could be applied to $export_cache at cost of memory) my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @$fail; warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Exporter::Verbose; @{$fail_cache}{@expanded} = (1) x @expanded; } my @failed; foreach $sym (@imports) { push(@failed, $sym) if $fail_cache->{$sym} } if (@failed) { @failed = $pkg->export_fail(@failed); foreach $sym (@failed) { require Carp; Carp::carp(qq["$sym" is not implemented by the $pkg module ], "on this architecture"); } if (@failed) { require Carp; Carp::croak("Can't continue after import errors"); } } } warn "Importing into $callpkg from $pkg: ", join(", ",sort @imports) if $Exporter::Verbose; foreach $sym (@imports) { # shortcut for the common case of no type character (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next) unless $sym =~ s/^(\W)//; $type = $1; *{"${callpkg}::$sym"} = $type eq '&' ? \&{"${pkg}::$sym"} : $type eq '$' ? \${"${pkg}::$sym"} : $type eq '@' ? \@{"${pkg}::$sym"} : $type eq '%' ? \%{"${pkg}::$sym"} : $type eq '*' ? *{"${pkg}::$sym"} : do { require Carp; Carp::croak("Can't export symbol: $type$sym") }; } } sub heavy_export_to_level { my $pkg = shift; my $level = shift; (undef) = shift; # XXX redundant arg my $callpkg = caller($level); $pkg->export($callpkg, @_); } # Utility functions sub _push_tags { my($pkg, $var, $syms) = @_; my @nontag = (); my $export_tags = \%{"${pkg}::EXPORT_TAGS"}; push(@{"${pkg}::$var"}, map { $export_tags->{$_} ? @{$export_tags->{$_}} : scalar(push(@nontag,$_),$_) } (@$syms) ? @$syms : keys %$export_tags); if (@nontag and $^W) { # This may change to a die one day require Carp; Carp::carp(join(", ", @nontag)." are not tags of $pkg"); } } sub heavy_require_version { my($self, $wanted) = @_; my $pkg = ref $self || $self; return ${pkg}->VERSION($wanted); } sub heavy_export_tags { _push_tags((caller)[0], "EXPORT", \@_); } sub heavy_export_ok_tags { _push_tags((caller)[0], "EXPORT_OK", \@_); } 1; FILEfeb93716/File/Basename.pm#line 1 "/usr/share/perl/5.8/File/Basename.pm" #line 36 package File::Basename; # A bit of juggling to insure that C always works, since # File::Basename is used during the Perl build, when the re extension may # not be available. BEGIN { unless (eval { require re; }) { eval ' sub re::import { $^H |= 0x00100000; } ' } # HINT_RE_TAINT import re 'taint'; } use strict; use 5.006; use warnings; our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase); require Exporter; @ISA = qw(Exporter); @EXPORT = qw(fileparse fileparse_set_fstype basename dirname); $VERSION = "2.74"; fileparse_set_fstype($^O); #line 101 sub fileparse { my($fullname,@suffices) = @_; unless (defined $fullname) { require Carp; Carp::croak("fileparse(): need a valid pathname"); } my $orig_type = ''; my($type,$igncase) = ($Fileparse_fstype, $Fileparse_igncase); my($taint) = substr($fullname,0,0); # Is $fullname tainted? if ($type eq "VMS" and $fullname =~ m{/} ) { # We're doing Unix emulation $orig_type = $type; $type = 'Unix'; } my($dirpath, $basename); if (grep { $type eq $_ } qw(MSDOS DOS MSWin32 Epoc)) { ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/s); $dirpath .= '.\\' unless $dirpath =~ /[\\\/]\z/; } elsif ($type eq "OS2") { ($dirpath,$basename) = ($fullname =~ m#^((?:.*[:\\/])?)(.*)#s); $dirpath = './' unless $dirpath; # Can't be 0 $dirpath .= '/' unless $dirpath =~ m#[\\/]\z#; } elsif ($type eq "MacOS") { ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s); $dirpath = ':' unless $dirpath; } elsif ($type eq "AmigaOS") { ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/s); $dirpath = './' unless $dirpath; } elsif ($type eq 'VMS' ) { ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/s); $dirpath ||= ''; # should always be defined } else { # Default to Unix semantics. ($dirpath,$basename) = ($fullname =~ m#^(.*/)?(.*)#s); if ($orig_type eq 'VMS' and $fullname =~ m:^(/[^/]+/000000(/|$))(.*):) { # dev:[000000] is top of VMS tree, similar to Unix '/' # so strip it off and treat the rest as "normal" my $devspec = $1; my $remainder = $3; ($dirpath,$basename) = ($remainder =~ m#^(.*/)?(.*)#s); $dirpath ||= ''; # should always be defined $dirpath = $devspec.$dirpath; } $dirpath = './' unless $dirpath; } my $tail = ''; my $suffix = ''; if (@suffices) { foreach $suffix (@suffices) { my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$"; if ($basename =~ s/$pat//s) { $taint .= substr($suffix,0,0); $tail = $1 . $tail; } } } # Ensure taint is propgated from the path to its pieces. $tail .= $taint; wantarray ? ($basename .= $taint, $dirpath .= $taint, $tail) : ($basename .= $taint); } #line 210 sub basename { my($path) = shift; # From BSD basename(1) # The basename utility deletes any prefix ending with the last slash `/' # character present in string (after first stripping trailing slashes) _strip_trailing_sep($path); my($basename, $dirname, $suffix) = fileparse( $path, map("\Q$_\E",@_) ); # From BSD basename(1) # The suffix is not stripped if it is identical to the remaining # characters in string. if( length $suffix and !length $basename ) { $basename = $suffix; } # Ensure that basename '/' == '/' if( !length $basename ) { $basename = $dirname; } return $basename; } #line 278 sub dirname { my $path = shift; my($type) = $Fileparse_fstype; if( $type eq 'VMS' and $path =~ m{/} ) { # Parse as Unix local($File::Basename::Fileparse_fstype) = ''; return dirname($path); } my($basename, $dirname) = fileparse($path); if ($type eq 'VMS') { $dirname ||= $ENV{DEFAULT}; } elsif ($type eq 'MacOS') { if( !length($basename) && $dirname !~ /^[^:]+:\z/) { _strip_trailing_sep($dirname); ($basename,$dirname) = fileparse $dirname; } $dirname .= ":" unless $dirname =~ /:\z/; } elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { _strip_trailing_sep($dirname); unless( length($basename) ) { ($basename,$dirname) = fileparse $dirname; _strip_trailing_sep($dirname); } } elsif ($type eq 'AmigaOS') { if ( $dirname =~ /:\z/) { return $dirname } chop $dirname; $dirname =~ s#[^:/]+\z## unless length($basename); } else { _strip_trailing_sep($dirname); unless( length($basename) ) { ($basename,$dirname) = fileparse $dirname; _strip_trailing_sep($dirname); } } $dirname; } # Strip the trailing path separator. sub _strip_trailing_sep { my $type = $Fileparse_fstype; if ($type eq 'MacOS') { $_[0] =~ s/([^:]):\z/$1/s; } elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { $_[0] =~ s/([^:])[\\\/]*\z/$1/; } else { $_[0] =~ s{(.)/*\z}{$1}s; } } #line 365 BEGIN { my @Ignore_Case = qw(MacOS VMS AmigaOS OS2 RISCOS MSWin32 MSDOS DOS Epoc); my @Types = (@Ignore_Case, qw(Unix)); sub fileparse_set_fstype { my $old = $Fileparse_fstype; if (@_) { my $new_type = shift; $Fileparse_fstype = 'Unix'; # default foreach my $type (@Types) { $Fileparse_fstype = $type if $new_type =~ /^$type/i; } $Fileparse_igncase = (grep $Fileparse_fstype eq $_, @Ignore_Case) ? 1 : 0; } return $old; } } 1; #line 399FILEea50e5aa/File/Copy.pmf#line 1 "/usr/share/perl/5.8/File/Copy.pm" # File/Copy.pm. Written in 1994 by Aaron Sherman . This # source code has been placed in the public domain by the author. # Please be kind and preserve the documentation. # # Additions copyright 1996 by Charles Bailey. Permission is granted # to distribute the revised code under the same terms as Perl itself. package File::Copy; use 5.006; use strict; use warnings; use Carp; use File::Spec; use Config; our(@ISA, @EXPORT, @EXPORT_OK, $VERSION, $Too_Big, $Syscopy_is_copy); sub copy; sub syscopy; sub cp; sub mv; # Note that this module implements only *part* of the API defined by # the File/Copy.pm module of the File-Tools-2.0 package. However, that # package has not yet been updated to work with Perl 5.004, and so it # would be a Bad Thing for the CPAN module to grab it and replace this # module. Therefore, we set this module's version higher than 2.0. $VERSION = '2.09'; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(copy move); @EXPORT_OK = qw(cp mv); $Too_Big = 1024 * 1024 * 2; my $macfiles; if ($^O eq 'MacOS') { $macfiles = eval { require Mac::MoreFiles }; warn 'Mac::MoreFiles could not be loaded; using non-native syscopy' if $@ && $^W; } sub _catname { my($from, $to) = @_; if (not defined &basename) { require File::Basename; import File::Basename 'basename'; } if ($^O eq 'MacOS') { # a partial dir name that's valid only in the cwd (e.g. 'tmp') $to = ':' . $to if $to !~ /:/; } return File::Spec->catfile($to, basename($from)); } sub copy { croak("Usage: copy(FROM, TO [, BUFFERSIZE]) ") unless(@_ == 2 || @_ == 3); my $from = shift; my $to = shift; my $from_a_handle = (ref($from) ? (ref($from) eq 'GLOB' || UNIVERSAL::isa($from, 'GLOB') || UNIVERSAL::isa($from, 'IO::Handle')) : (ref(\$from) eq 'GLOB')); my $to_a_handle = (ref($to) ? (ref($to) eq 'GLOB' || UNIVERSAL::isa($to, 'GLOB') || UNIVERSAL::isa($to, 'IO::Handle')) : (ref(\$to) eq 'GLOB')); if ($from eq $to) { # works for references, too carp("'$from' and '$to' are identical (not copied)"); # The "copy" was a success as the source and destination contain # the same data. return 1; } if ((($Config{d_symlink} && $Config{d_readlink}) || $Config{d_link}) && !($^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'vms')) { my @fs = stat($from); if (@fs) { my @ts = stat($to); if (@ts && $fs[0] == $ts[0] && $fs[1] == $ts[1]) { carp("'$from' and '$to' are identical (not copied)"); return 0; } } } if (!$from_a_handle && !$to_a_handle && -d $to && ! -d $from) { $to = _catname($from, $to); } if (defined &syscopy && !$Syscopy_is_copy && !$to_a_handle && !($from_a_handle && $^O eq 'os2' ) # OS/2 cannot handle handles && !($from_a_handle && $^O eq 'mpeix') # and neither can MPE/iX. && !($from_a_handle && $^O eq 'MSWin32') && !($from_a_handle && $^O eq 'MacOS') && !($from_a_handle && $^O eq 'NetWare') ) { return syscopy($from, $to); } my $closefrom = 0; my $closeto = 0; my ($size, $status, $r, $buf); local($\) = ''; my $from_h; if ($from_a_handle) { $from_h = $from; } else { $from = _protect($from) if $from =~ /^\s/s; $from_h = \do { local *FH }; open($from_h, "< $from\0") or goto fail_open1; binmode $from_h or die "($!,$^E)"; $closefrom = 1; } my $to_h; if ($to_a_handle) { $to_h = $to; } else { $to = _protect($to) if $to =~ /^\s/s; $to_h = \do { local *FH }; open($to_h,"> $to\0") or goto fail_open2; binmode $to_h or die "($!,$^E)"; $closeto = 1; } if (@_) { $size = shift(@_) + 0; croak("Bad buffer size for copy: $size\n") unless ($size > 0); } else { $size = tied(*$from_h) ? 0 : -s $from_h || 0; $size = 1024 if ($size < 512); $size = $Too_Big if ($size > $Too_Big); } $! = 0; for (;;) { my ($r, $w, $t); defined($r = sysread($from_h, $buf, $size)) or goto fail_inner; last unless $r; for ($w = 0; $w < $r; $w += $t) { $t = syswrite($to_h, $buf, $r - $w, $w) or goto fail_inner; } } close($to_h) || goto fail_open2 if $closeto; close($from_h) || goto fail_open1 if $closefrom; # Use this idiom to avoid uninitialized value warning. return 1; # All of these contortions try to preserve error messages... fail_inner: if ($closeto) { $status = $!; $! = 0; close $to_h; $! = $status unless $!; } fail_open2: if ($closefrom) { $status = $!; $! = 0; close $from_h; $! = $status unless $!; } fail_open1: return 0; } sub move { croak("Usage: move(FROM, TO) ") unless @_ == 2; my($from,$to) = @_; my($fromsz,$tosz1,$tomt1,$tosz2,$tomt2,$sts,$ossts); if (-d $to && ! -d $from) { $to = _catname($from, $to); } ($tosz1,$tomt1) = (stat($to))[7,9]; $fromsz = -s $from; if ($^O eq 'os2' and defined $tosz1 and defined $fromsz) { # will not rename with overwrite unlink $to; } return 1 if rename $from, $to; # Did rename return an error even though it succeeded, because $to # is on a remote NFS file system, and NFS lost the server's ack? return 1 if defined($fromsz) && !-e $from && # $from disappeared (($tosz2,$tomt2) = (stat($to))[7,9]) && # $to's there ($tosz1 != $tosz2 or $tomt1 != $tomt2) && # and changed $tosz2 == $fromsz; # it's all there ($tosz1,$tomt1) = (stat($to))[7,9]; # just in case rename did something { local $@; eval { local $SIG{__DIE__}; copy($from,$to) or die; my($atime, $mtime) = (stat($from))[8,9]; utime($atime, $mtime, $to); unlink($from) or die; }; return 1 unless $@; } ($sts,$ossts) = ($! + 0, $^E + 0); ($tosz2,$tomt2) = ((stat($to))[7,9],0,0) if defined $tomt1; unlink($to) if !defined($tomt1) or $tomt1 != $tomt2 or $tosz1 != $tosz2; ($!,$^E) = ($sts,$ossts); return 0; } *cp = \© *mv = \&move; if ($^O eq 'MacOS') { *_protect = sub { MacPerl::MakeFSSpec($_[0]) }; } else { *_protect = sub { "./$_[0]" }; } # &syscopy is an XSUB under OS/2 unless (defined &syscopy) { if ($^O eq 'VMS') { *syscopy = \&rmscopy; } elsif ($^O eq 'mpeix') { *syscopy = sub { return 0 unless @_ == 2; # Use the MPE cp program in order to # preserve MPE file attributes. return system('/bin/cp', '-f', $_[0], $_[1]) == 0; }; } elsif ($^O eq 'MSWin32') { *syscopy = sub { return 0 unless @_ == 2; return Win32::CopyFile(@_, 1); }; } elsif ($macfiles) { *syscopy = sub { my($from, $to) = @_; my($dir, $toname); return 0 unless -e $from; if ($to =~ /(.*:)([^:]+):?$/) { ($dir, $toname) = ($1, $2); } else { ($dir, $toname) = (":", $to); } unlink($to); Mac::MoreFiles::FSpFileCopy($from, $dir, $toname, 1); }; } else { $Syscopy_is_copy = 1; *syscopy = \© } } 1; __END__ #line 459 FILEc4599de9/File/Find.pmZ#line 1 "/usr/share/perl/5.8/File/Find.pm" package File::Find; use 5.006; use strict; use warnings; use warnings::register; our $VERSION = '1.10'; require Exporter; require Cwd; # # Modified to ensure sub-directory traversal order is not inverded by stack # push and pops. That is remains in the same order as in the directory file, # or user pre-processing (EG:sorted). # #line 413 our @ISA = qw(Exporter); our @EXPORT = qw(find finddepth); use strict; my $Is_VMS; my $Is_MacOS; require File::Basename; require File::Spec; # Should ideally be my() not our() but local() currently # refuses to operate on lexicals our %SLnkSeen; our ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow, $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, $pre_process, $post_process, $dangling_symlinks); sub contract_name { my ($cdir,$fn) = @_; return substr($cdir,0,rindex($cdir,'/')) if $fn eq $File::Find::current_dir; $cdir = substr($cdir,0,rindex($cdir,'/')+1); $fn =~ s|^\./||; my $abs_name= $cdir . $fn; if (substr($fn,0,3) eq '../') { 1 while $abs_name =~ s!/[^/]*/\.\./!/!; } return $abs_name; } # return the absolute name of a directory or file sub contract_name_Mac { my ($cdir,$fn) = @_; my $abs_name; if ($fn =~ /^(:+)(.*)$/) { # valid pathname starting with a ':' my $colon_count = length ($1); if ($colon_count == 1) { $abs_name = $cdir . $2; return $abs_name; } else { # need to move up the tree, but # only if it's not a volume name for (my $i=1; $i<$colon_count; $i++) { unless ($cdir =~ /^[^:]+:$/) { # volume name $cdir =~ s/[^:]+:$//; } else { return undef; } } $abs_name = $cdir . $2; return $abs_name; } } else { # $fn may be a valid path to a directory or file or (dangling) # symlink, without a leading ':' if ( (-e $fn) || (-l $fn) ) { if ($fn =~ /^[^:]+:/) { # a volume name like DataHD:* return $fn; # $fn is already an absolute path } else { $abs_name = $cdir . $fn; return $abs_name; } } else { # argh!, $fn is not a valid directory/file return undef; } } } sub PathCombine($$) { my ($Base,$Name) = @_; my $AbsName; if ($Is_MacOS) { # $Name is the resolved symlink (always a full path on MacOS), # i.e. there's no need to call contract_name_Mac() $AbsName = $Name; # (simple) check for recursion if ( ( $Base =~ /^$AbsName/) && (-d $AbsName) ) { # recursion return undef; } } else { if (substr($Name,0,1) eq '/') { $AbsName= $Name; } else { $AbsName= contract_name($Base,$Name); } # (simple) check for recursion my $newlen= length($AbsName); if ($newlen <= length($Base)) { if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/') && $AbsName eq substr($Base,0,$newlen)) { return undef; } } } return $AbsName; } sub Follow_SymLink($) { my ($AbsName) = @_; my ($NewName,$DEV, $INO); ($DEV, $INO)= lstat $AbsName; while (-l _) { if ($SLnkSeen{$DEV, $INO}++) { if ($follow_skip < 2) { die "$AbsName is encountered a second time"; } else { return undef; } } $NewName= PathCombine($AbsName, readlink($AbsName)); unless(defined $NewName) { if ($follow_skip < 2) { die "$AbsName is a recursive symbolic link"; } else { return undef; } } else { $AbsName= $NewName; } ($DEV, $INO) = lstat($AbsName); return undef unless defined $DEV; # dangling symbolic link } if ($full_check && defined $DEV && $SLnkSeen{$DEV, $INO}++) { if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) { die "$AbsName encountered a second time"; } else { return undef; } } return $AbsName; } our($dir, $name, $fullname, $prune); sub _find_dir_symlnk($$$); sub _find_dir($$$); # check whether or not a scalar variable is tainted # (code straight from the Camel, 3rd ed., page 561) sub is_tainted_pp { my $arg = shift; my $nada = substr($arg, 0, 0); # zero-length local $@; eval { eval "# $nada" }; return length($@) != 0; } sub _find_opt { my $wanted = shift; die "invalid top directory" unless defined $_[0]; # This function must local()ize everything because callbacks may # call find() or finddepth() local %SLnkSeen; local ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow, $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, $pre_process, $post_process, $dangling_symlinks); local($dir, $name, $fullname, $prune); local *_ = \my $a; my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::getcwd(); my $cwd_untainted = $cwd; my $check_t_cwd = 1; $wanted_callback = $wanted->{wanted}; $bydepth = $wanted->{bydepth}; $pre_process = $wanted->{preprocess}; $post_process = $wanted->{postprocess}; $no_chdir = $wanted->{no_chdir}; $full_check = $^O eq 'MSWin32' ? 0 : $wanted->{follow}; $follow = $^O eq 'MSWin32' ? 0 : $full_check || $wanted->{follow_fast}; $follow_skip = $wanted->{follow_skip}; $untaint = $wanted->{untaint}; $untaint_pat = $wanted->{untaint_pattern}; $untaint_skip = $wanted->{untaint_skip}; $dangling_symlinks = $wanted->{dangling_symlinks}; # for compatibility reasons (find.pl, find2perl) local our ($topdir, $topdev, $topino, $topmode, $topnlink); # a symbolic link to a directory doesn't increase the link count $avoid_nlink = $follow || $File::Find::dont_use_nlink; my ($abs_dir, $Is_Dir); Proc_Top_Item: foreach my $TOP (@_) { my $top_item = $TOP; ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item; if ($Is_MacOS) { $top_item = ":$top_item" if ( (-d _) && ( $top_item !~ /:/ ) ); } elsif ($^O eq 'MSWin32') { $top_item =~ s|/\z|| unless $top_item =~ m|\w:/$|; } else { $top_item =~ s|/\z|| unless $top_item eq '/'; } $Is_Dir= 0; if ($follow) { if ($Is_MacOS) { $cwd = "$cwd:" unless ($cwd =~ /:$/); # for safety if ($top_item eq $File::Find::current_dir) { $abs_dir = $cwd; } else { $abs_dir = contract_name_Mac($cwd, $top_item); unless (defined $abs_dir) { warnings::warnif "Can't determine absolute path for $top_item (No such file or directory)\n"; next Proc_Top_Item; } } } else { if (substr($top_item,0,1) eq '/') { $abs_dir = $top_item; } elsif ($top_item eq $File::Find::current_dir) { $abs_dir = $cwd; } else { # care about any ../ $abs_dir = contract_name("$cwd/",$top_item); } } $abs_dir= Follow_SymLink($abs_dir); unless (defined $abs_dir) { if ($dangling_symlinks) { if (ref $dangling_symlinks eq 'CODE') { $dangling_symlinks->($top_item, $cwd); } else { warnings::warnif "$top_item is a dangling symbolic link\n"; } } next Proc_Top_Item; } if (-d _) { _find_dir_symlnk($wanted, $abs_dir, $top_item); $Is_Dir= 1; } } else { # no follow $topdir = $top_item; unless (defined $topnlink) { warnings::warnif "Can't stat $top_item: $!\n"; next Proc_Top_Item; } if (-d _) { $top_item =~ s/\.dir\z//i if $Is_VMS; _find_dir($wanted, $top_item, $topnlink); $Is_Dir= 1; } else { $abs_dir= $top_item; } } unless ($Is_Dir) { unless (($_,$dir) = File::Basename::fileparse($abs_dir)) { if ($Is_MacOS) { ($dir,$_) = (':', $top_item); # $File::Find::dir, $_ } else { ($dir,$_) = ('./', $top_item); } } $abs_dir = $dir; if (( $untaint ) && (is_tainted($dir) )) { ( $abs_dir ) = $dir =~ m|$untaint_pat|; unless (defined $abs_dir) { if ($untaint_skip == 0) { die "directory $dir is still tainted"; } else { next Proc_Top_Item; } } } unless ($no_chdir || chdir $abs_dir) { warnings::warnif "Couldn't chdir $abs_dir: $!\n"; next Proc_Top_Item; } $name = $abs_dir . $_; # $File::Find::name $_ = $name if $no_chdir; { $wanted_callback->() }; # protect against wild "next" } unless ( $no_chdir ) { if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) { ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|; unless (defined $cwd_untainted) { die "insecure cwd in find(depth)"; } $check_t_cwd = 0; } unless (chdir $cwd_untainted) { die "Can't cd to $cwd: $!\n"; } } } } # API: # $wanted # $p_dir : "parent directory" # $nlink : what came back from the stat # preconditions: # chdir (if not no_chdir) to dir sub _find_dir($$$) { my ($wanted, $p_dir, $nlink) = @_; my ($CdLvl,$Level) = (0,0); my @Stack; my @filenames; my ($subcount,$sub_nlink); my $SE= []; my $dir_name= $p_dir; my $dir_pref; my $dir_rel = $File::Find::current_dir; my $tainted = 0; my $no_nlink; if ($Is_MacOS) { $dir_pref= ($p_dir =~ /:$/) ? $p_dir : "$p_dir:"; # preface } elsif ($^O eq 'MSWin32') { $dir_pref = ($p_dir =~ m|\w:/$| ? $p_dir : "$p_dir/" ); } else { $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" ); } local ($dir, $name, $prune, *DIR); unless ( $no_chdir || ($p_dir eq $File::Find::current_dir)) { my $udir = $p_dir; if (( $untaint ) && (is_tainted($p_dir) )) { ( $udir ) = $p_dir =~ m|$untaint_pat|; unless (defined $udir) { if ($untaint_skip == 0) { die "directory $p_dir is still tainted"; } else { return; } } } unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { warnings::warnif "Can't cd to $udir: $!\n"; return; } } # push the starting directory push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; if ($Is_MacOS) { $p_dir = $dir_pref; # ensure trailing ':' } while (defined $SE) { unless ($bydepth) { $dir= $p_dir; # $File::Find::dir $name= $dir_name; # $File::Find::name $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ # prune may happen here $prune= 0; { $wanted_callback->() }; # protect against wild "next" next if $prune; } # change to that directory unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { my $udir= $dir_rel; if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) { ( $udir ) = $dir_rel =~ m|$untaint_pat|; unless (defined $udir) { if ($untaint_skip == 0) { if ($Is_MacOS) { die "directory ($p_dir) $dir_rel is still tainted"; } else { die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted"; } } else { # $untaint_skip == 1 next; } } } unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { if ($Is_MacOS) { warnings::warnif "Can't cd to ($p_dir) $udir: $!\n"; } else { warnings::warnif "Can't cd to (" . ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n"; } next; } $CdLvl++; } if ($Is_MacOS) { $dir_name = "$dir_name:" unless ($dir_name =~ /:$/); } $dir= $dir_name; # $File::Find::dir # Get the list of files in the current directory. unless (opendir DIR, ($no_chdir ? $dir_name : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_name): $!\n"; next; } @filenames = readdir DIR; closedir(DIR); @filenames = $pre_process->(@filenames) if $pre_process; push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process; # default: use whatever was specifid # (if $nlink >= 2, and $avoid_nlink == 0, this will switch back) $no_nlink = $avoid_nlink; # if dir has wrong nlink count, force switch to slower stat method $no_nlink = 1 if ($nlink < 2); if ($nlink == 2 && !$no_nlink) { # This dir has no subdirectories. for my $FN (@filenames) { next if $FN =~ $File::Find::skip_pattern; $name = $dir_pref . $FN; # $File::Find::name $_ = ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } else { # This dir has subdirectories. $subcount = $nlink - 2; # HACK: insert directories at this position. so as to preserve # the user pre-processed ordering of files. # EG: directory traversal is in user sorted order, not at random. my $stack_top = @Stack; for my $FN (@filenames) { next if $FN =~ $File::Find::skip_pattern; if ($subcount > 0 || $no_nlink) { # Seen all the subdirs? # check for directoriness. # stat is faster for a file in the current directory $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3]; if (-d _) { --$subcount; $FN =~ s/\.dir\z//i if $Is_VMS; # HACK: replace push to preserve dir traversal order #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink]; splice @Stack, $stack_top, 0, [$CdLvl,$dir_name,$FN,$sub_nlink]; } else { $name = $dir_pref . $FN; # $File::Find::name $_= ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } else { $name = $dir_pref . $FN; # $File::Find::name $_= ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } } } continue { while ( defined ($SE = pop @Stack) ) { ($Level, $p_dir, $dir_rel, $nlink) = @$SE; if ($CdLvl > $Level && !$no_chdir) { my $tmp; if ($Is_MacOS) { $tmp = (':' x ($CdLvl-$Level)) . ':'; } else { $tmp = join('/',('..') x ($CdLvl-$Level)); } die "Can't cd to $dir_name" . $tmp unless chdir ($tmp); $CdLvl = $Level; } if ($Is_MacOS) { # $pdir always has a trailing ':', except for the starting dir, # where $dir_rel eq ':' $dir_name = "$p_dir$dir_rel"; $dir_pref = "$dir_name:"; } elsif ($^O eq 'MSWin32') { $dir_name = ($p_dir =~ m|\w:/$| ? "$p_dir$dir_rel" : "$p_dir/$dir_rel"); $dir_pref = "$dir_name/"; } else { $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel"); $dir_pref = "$dir_name/"; } if ( $nlink == -2 ) { $name = $dir = $p_dir; # $File::Find::name / dir $_ = $File::Find::current_dir; $post_process->(); # End-of-directory processing } elsif ( $nlink < 0 ) { # must be finddepth, report dirname now $name = $dir_name; if ($Is_MacOS) { if ($dir_rel eq ':') { # must be the top dir, where we started $name =~ s|:$||; # $File::Find::name $p_dir = "$p_dir:" unless ($p_dir =~ /:$/); } $dir = $p_dir; # $File::Find::dir $_ = ($no_chdir ? $name : $dir_rel); # $_ } else { if ( substr($name,-2) eq '/.' ) { substr($name, length($name) == 2 ? -1 : -2) = ''; } $dir = $p_dir; $_ = ($no_chdir ? $dir_name : $dir_rel ); if ( substr($_,-2) eq '/.' ) { substr($_, length($_) == 2 ? -1 : -2) = ''; } } { $wanted_callback->() }; # protect against wild "next" } else { push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; last; } } } } # API: # $wanted # $dir_loc : absolute location of a dir # $p_dir : "parent directory" # preconditions: # chdir (if not no_chdir) to dir sub _find_dir_symlnk($$$) { my ($wanted, $dir_loc, $p_dir) = @_; # $dir_loc is the absolute directory my @Stack; my @filenames; my $new_loc; my $updir_loc = $dir_loc; # untainted parent directory my $SE = []; my $dir_name = $p_dir; my $dir_pref; my $loc_pref; my $dir_rel = $File::Find::current_dir; my $byd_flag; # flag for pending stack entry if $bydepth my $tainted = 0; my $ok = 1; if ($Is_MacOS) { $dir_pref = ($p_dir =~ /:$/) ? "$p_dir" : "$p_dir:"; $loc_pref = ($dir_loc =~ /:$/) ? "$dir_loc" : "$dir_loc:"; } else { $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" ); $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" ); } local ($dir, $name, $fullname, $prune, *DIR); unless ($no_chdir) { # untaint the topdir if (( $untaint ) && (is_tainted($dir_loc) )) { ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted # once untainted, $updir_loc is pushed on the stack (as parent directory); # hence, we don't need to untaint the parent directory every time we chdir # to it later unless (defined $updir_loc) { if ($untaint_skip == 0) { die "directory $dir_loc is still tainted"; } else { return; } } } $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir); unless ($ok) { warnings::warnif "Can't cd to $updir_loc: $!\n"; return; } } push @Stack,[$dir_loc,$updir_loc,$p_dir,$dir_rel,-1] if $bydepth; if ($Is_MacOS) { $p_dir = $dir_pref; # ensure trailing ':' } while (defined $SE) { unless ($bydepth) { # change (back) to parent directory (always untainted) unless ($no_chdir) { unless (chdir $updir_loc) { warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $dir= $p_dir; # $File::Find::dir $name= $dir_name; # $File::Find::name $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ $fullname= $dir_loc; # $File::Find::fullname # prune may happen here $prune= 0; lstat($_); # make sure file tests with '_' work { $wanted_callback->() }; # protect against wild "next" next if $prune; } # change to that directory unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { $updir_loc = $dir_loc; if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) { # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; unless (defined $updir_loc) { if ($untaint_skip == 0) { die "directory $dir_loc is still tainted"; } else { next; } } } unless (chdir $updir_loc) { warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } if ($Is_MacOS) { $dir_name = "$dir_name:" unless ($dir_name =~ /:$/); } $dir = $dir_name; # $File::Find::dir # Get the list of files in the current directory. unless (opendir DIR, ($no_chdir ? $dir_loc : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_loc): $!\n"; next; } @filenames = readdir DIR; closedir(DIR); for my $FN (@filenames) { next if $FN =~ $File::Find::skip_pattern; # follow symbolic links / do an lstat $new_loc = Follow_SymLink($loc_pref.$FN); # ignore if invalid symlink unless (defined $new_loc) { if ($dangling_symlinks) { if (ref $dangling_symlinks eq 'CODE') { $dangling_symlinks->($FN, $dir_pref); } else { warnings::warnif "$dir_pref$FN is a dangling symbolic link\n"; } } $fullname = undef; $name = $dir_pref . $FN; $_ = ($no_chdir ? $name : $FN); { $wanted_callback->() }; next; } if (-d _) { push @Stack,[$new_loc,$updir_loc,$dir_name,$FN,1]; } else { $fullname = $new_loc; # $File::Find::fullname $name = $dir_pref . $FN; # $File::Find::name $_ = ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } } continue { while (defined($SE = pop @Stack)) { ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE; if ($Is_MacOS) { # $p_dir always has a trailing ':', except for the starting dir, # where $dir_rel eq ':' $dir_name = "$p_dir$dir_rel"; $dir_pref = "$dir_name:"; $loc_pref = ($dir_loc =~ /:$/) ? $dir_loc : "$dir_loc:"; } else { $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel"); $dir_pref = "$dir_name/"; $loc_pref = "$dir_loc/"; } if ( $byd_flag < 0 ) { # must be finddepth, report dirname now unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $fullname = $dir_loc; # $File::Find::fullname $name = $dir_name; # $File::Find::name if ($Is_MacOS) { if ($dir_rel eq ':') { # must be the top dir, where we started $name =~ s|:$||; # $File::Find::name $p_dir = "$p_dir:" unless ($p_dir =~ /:$/); } $dir = $p_dir; # $File::Find::dir $_ = ($no_chdir ? $name : $dir_rel); # $_ } else { if ( substr($name,-2) eq '/.' ) { substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name } $dir = $p_dir; # $File::Find::dir $_ = ($no_chdir ? $dir_name : $dir_rel); # $_ if ( substr($_,-2) eq '/.' ) { substr($_, length($_) == 2 ? -1 : -2) = ''; } } lstat($_); # make sure file tests with '_' work { $wanted_callback->() }; # protect against wild "next" } else { push @Stack,[$dir_loc, $updir_loc, $p_dir, $dir_rel,-1] if $bydepth; last; } } } } sub wrap_wanted { my $wanted = shift; if ( ref($wanted) eq 'HASH' ) { if ( $wanted->{follow} || $wanted->{follow_fast}) { $wanted->{follow_skip} = 1 unless defined $wanted->{follow_skip}; } if ( $wanted->{untaint} ) { $wanted->{untaint_pattern} = $File::Find::untaint_pattern unless defined $wanted->{untaint_pattern}; $wanted->{untaint_skip} = 0 unless defined $wanted->{untaint_skip}; } return $wanted; } else { return { wanted => $wanted }; } } sub find { my $wanted = shift; _find_opt(wrap_wanted($wanted), @_); } sub finddepth { my $wanted = wrap_wanted(shift); $wanted->{bydepth} = 1; _find_opt($wanted, @_); } # default $File::Find::skip_pattern = qr/^\.{1,2}\z/; $File::Find::untaint_pattern = qr|^([-+@\w./]+)$|; # These are hard-coded for now, but may move to hint files. if ($^O eq 'VMS') { $Is_VMS = 1; $File::Find::dont_use_nlink = 1; } elsif ($^O eq 'MacOS') { $Is_MacOS = 1; $File::Find::dont_use_nlink = 1; $File::Find::skip_pattern = qr/^Icon\015\z/; $File::Find::untaint_pattern = qr|^(.+)$|; } # this _should_ work properly on all platforms # where File::Find can be expected to work $File::Find::current_dir = File::Spec->curdir || '.'; $File::Find::dont_use_nlink = 1 if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $^O eq 'MSWin32' || $^O eq 'interix' || $^O eq 'cygwin' || $^O eq 'epoc' || $^O eq 'qnx' || $^O eq 'nto'; # Set dont_use_nlink in your hint file if your system's stat doesn't # report the number of links in a directory as an indication # of the number of files. # See, e.g. hints/machten.sh for MachTen 2.2. unless ($File::Find::dont_use_nlink) { require Config; $File::Find::dont_use_nlink = 1 if ($Config::Config{'dont_use_nlink'}); } # We need a function that checks if a scalar is tainted. Either use the # Scalar::Util module's tainted() function or our (slower) pure Perl # fallback is_tainted_pp() { local $@; eval { require Scalar::Util }; *is_tainted = $@ ? \&is_tainted_pp : \&Scalar::Util::tainted; } 1; FILEbd50f145/File/Path.pmT#line 1 "/usr/share/perl/5.8/File/Path.pm" package File::Path; #line 104 use 5.006; use Carp; use File::Basename (); use Exporter (); use strict; use warnings; our $VERSION = "1.08"; our @ISA = qw( Exporter ); our @EXPORT = qw( mkpath rmtree ); my $Is_VMS = $^O eq 'VMS'; my $Is_MacOS = $^O eq 'MacOS'; # These OSes complain if you want to remove a file that you have no # write permission to: my $force_writeable = ($^O eq 'os2' || $^O eq 'dos' || $^O eq 'MSWin32' || $^O eq 'amigaos' || $^O eq 'MacOS' || $^O eq 'epoc'); sub mkpath { my($paths, $verbose, $mode) = @_; # $paths -- either a path string or ref to list of paths # $verbose -- optional print "mkdir $path" for each directory created # $mode -- optional permissions, defaults to 0777 local($")=$Is_MacOS ? ":" : "/"; $mode = 0777 unless defined($mode); $paths = [$paths] unless ref $paths; my(@created,$path); foreach $path (@$paths) { $path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT # Logic wants Unix paths, so go with the flow. if ($Is_VMS) { next if $path eq '/'; $path = VMS::Filespec::unixify($path); if ($path =~ m:^(/[^/]+)/?\z:) { $path = $1.'/000000'; } } next if -d $path; my $parent = File::Basename::dirname($path); unless (-d $parent or $path eq $parent) { push(@created,mkpath($parent, $verbose, $mode)); } print "mkdir $path\n" if $verbose; unless (mkdir($path,$mode)) { my $e = $!; # allow for another process to have created it meanwhile $! = $e, croak ("mkdir $path: $e") unless -d $path; } push(@created, $path); } @created; } sub _rmtree; sub _rmtree { my ($path, $prefix, $up, $up_dev, $up_ino, $verbose, $safe) = @_; my $up_name = $up eq '..' ? 'parent' : 'initial'; my ($dev, $ino, $perm) = lstat $path or return 0; unless (-d _) { print "unlink $prefix$path\n" if $verbose; unless (unlink $path) { carp "Can't remove file $prefix$path ($!)"; return 0; } return 1; } if (!chdir($path)) { # see if we can escalate privileges to get in # (e.g. funny protection mask such as -w- instead of rwx) $perm &= 07777; my $nperm = $perm | 0700; if (!($safe or $nperm == $perm or chmod($nperm, $path))) { carp "cannot make $prefix$path read-write-exec"; return 0; } elsif (!chdir($path)) { carp "Can't chdir to $prefix$path ($!)"; return 0; } } # avoid a race condition where a directory may be replaced by a # symlink between the lstat and the chdir my ($new_dev, $new_ino); ($new_dev, $new_ino, $perm) = stat '.'; unless ("$new_dev:$new_ino" eq "$dev:$ino") { croak "Directory $prefix$path changed before chdir, aborting"; } $perm &= 07777; my $nperm = $perm | 0700; unless ($safe or $nperm == $perm or chmod $nperm, '.') { carp "Can't make directory $prefix$path read+writeable ($!)"; $nperm = $perm; } my $count = 0; if (opendir my $dir, '.') { my $entry; while (defined ($entry = readdir $dir)) { next if $entry =~ /^\.\.?$/; $entry =~ /^(.*)$/s; $entry = $1; # untaint $count += _rmtree $entry, "$prefix$path/", '..', $dev, $ino, $verbose, $safe; } closedir $dir; } # restore directory permissions if required (in case the rmdir # below fails) now, while we're still in the directory and may do # so without a race via '.' unless ($nperm == $perm or chmod $perm, '.') { carp "Can't restore permissions on directory $prefix$path ($!)"; } # don't leave the caller in an unexpected directory unless (chdir $up) { croak "Can't return to $up_name directory from $prefix$path ($!)"; } # ensure that a chdir .. didn't take us somewhere other than # where we expected (see CVE-2002-0435) unless (($new_dev, $new_ino) = stat '.' and "$new_dev:$new_ino" eq "$up_dev:$up_ino") { croak "\u$up_name directory changed since entering $prefix$path"; } print "rmdir $prefix$path\n" if $verbose; if (rmdir $path) { $count++; } else { carp "Can't remove directory $prefix$path ($!)"; } return $count; } sub rmtree { my ($p, $verbose, $safe) = @_; $p = [] unless defined $p and length $p; $p = [ $p ] unless ref $p; my @paths = grep defined && length, @$p; # default to "unsafe" for non-root (will chmod dirs) $safe = $> ? 0 : 1 unless defined $safe; unless (@paths) { carp "No root path(s) specified"; return; } opendir my $oldpwd, '.' or do { carp "Can't fetch initial working directory"; return; }; my ($dev, $ino) = stat '.' or do { carp "Can't stat initial working directory"; return; }; my $count = 0; for my $path (@paths) { $count += _rmtree $path, '', $oldpwd, $dev, $ino, $verbose, $safe; } $count; } 1; FILE199ccb8c/FileHandle.pme#line 1 "/usr/share/perl/5.8/FileHandle.pm" package FileHandle; use 5.006; use strict; our($VERSION, @ISA, @EXPORT, @EXPORT_OK); $VERSION = "2.01"; require IO::File; @ISA = qw(IO::File); @EXPORT = qw(_IOFBF _IOLBF _IONBF); @EXPORT_OK = qw( pipe autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed print printf getline getlines ); # # Everything we're willing to export, we must first import. # import IO::Handle grep { !defined(&$_) } @EXPORT, @EXPORT_OK; # # Some people call "FileHandle::function", so all the functions # that were in the old FileHandle class must be imported, too. # { no strict 'refs'; my %import = ( 'IO::Handle' => [qw(DESTROY new_from_fd fdopen close fileno getc ungetc gets eof flush error clearerr setbuf setvbuf _open_mode_string)], 'IO::Seekable' => [qw(seek tell getpos setpos)], 'IO::File' => [qw(new new_tmpfile open)] ); for my $pkg (keys %import) { for my $func (@{$import{$pkg}}) { my $c = *{"${pkg}::$func"}{CODE} or die "${pkg}::$func missing"; *$func = $c; } } } # # Specialized importer for Fcntl magic. # sub import { my $pkg = shift; my $callpkg = caller; require Exporter; Exporter::export($pkg, $callpkg, @_); # # If the Fcntl extension is available, # export its constants. # eval { require Fcntl; Exporter::export('Fcntl', $callpkg); }; } ################################################ # This is the only exported function we define; # the rest come from other classes. # sub pipe { my $r = new IO::Handle; my $w = new IO::Handle; CORE::pipe($r, $w) or return undef; ($r, $w); } # Rebless standard file handles bless *STDIN{IO}, "FileHandle" if ref *STDIN{IO} eq "IO::Handle"; bless *STDOUT{IO}, "FileHandle" if ref *STDOUT{IO} eq "IO::Handle"; bless *STDERR{IO}, "FileHandle" if ref *STDERR{IO} eq "IO::Handle"; 1; __END__ FILE5c66bdea/SelectSaver.pm#line 1 "/usr/share/perl/5.8/SelectSaver.pm" package SelectSaver; our $VERSION = '1.01'; require 5.000; use Carp; use Symbol; sub new { @_ >= 1 && @_ <= 2 or croak 'usage: new SelectSaver [FILEHANDLE]'; my $fh = select; my $self = bless \$fh, $_[0]; select qualify($_[1], caller) if @_ > 1; $self; } sub DESTROY { my $self = $_[0]; select $$self; } 1; FILE401ee52e/Symbol.pm[#line 1 "/usr/share/perl/5.8/Symbol.pm" package Symbol; BEGIN { require 5.005; } require Exporter; @ISA = qw(Exporter); @EXPORT = qw(gensym ungensym qualify qualify_to_ref); @EXPORT_OK = qw(delete_package geniosym); $VERSION = '1.06'; my $genpkg = "Symbol::"; my $genseq = 0; my %global = map {$_ => 1} qw(ARGV ARGVOUT ENV INC SIG STDERR STDIN STDOUT); # # Note that we never _copy_ the glob; we just make a ref to it. # If we did copy it, then SVf_FAKE would be set on the copy, and # glob-specific behaviors (e.g. C<*$ref = \&func>) wouldn't work. # sub gensym () { my $name = "GEN" . $genseq++; my $ref = \*{$genpkg . $name}; delete $$genpkg{$name}; $ref; } sub geniosym () { my $sym = gensym(); # force the IO slot to be filled select(select $sym); *$sym{IO}; } sub ungensym ($) {} sub qualify ($;$) { my ($name) = @_; if (!ref($name) && index($name, '::') == -1 && index($name, "'") == -1) { my $pkg; # Global names: special character, "^xyz", or other. if ($name =~ /^(([^a-z])|(\^[a-z_]+))\z/i || $global{$name}) { # RGS 2001-11-05 : translate leading ^X to control-char $name =~ s/^\^([a-z_])/'qq(\c'.$1.')'/eei; $pkg = "main"; } else { $pkg = (@_ > 1) ? $_[1] : caller; } $name = $pkg . "::" . $name; } $name; } sub qualify_to_ref ($;$) { return \*{ qualify $_[0], @_ > 1 ? $_[1] : caller }; } # # of Safe.pm lineage # sub delete_package ($) { my $pkg = shift; # expand to full symbol table name if needed unless ($pkg =~ /^main::.*::$/) { $pkg = "main$pkg" if $pkg =~ /^::/; $pkg = "main::$pkg" unless $pkg =~ /^main::/; $pkg .= '::' unless $pkg =~ /::$/; } my($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/; my $stem_symtab = *{$stem}{HASH}; return unless defined $stem_symtab and exists $stem_symtab->{$leaf}; # free all the symbols in the package my $leaf_symtab = *{$stem_symtab->{$leaf}}{HASH}; foreach my $name (keys %$leaf_symtab) { undef *{$pkg . $name}; } # delete the symbol table %$leaf_symtab = (); delete $stem_symtab->{$leaf}; } 1; FILE7769bd00/UNIVERSAL.pm=#line 1 "/usr/share/perl/5.8/UNIVERSAL.pm" package UNIVERSAL; our $VERSION = '1.01'; # UNIVERSAL should not contain any extra subs/methods beyond those # that it exists to define. The use of Exporter below is a historical # accident that can't be fixed without breaking code. Note that we # *don't* set @ISA here, don't want all classes/objects inheriting from # Exporter. It's bad enough that all classes have a import() method # whenever UNIVERSAL.pm is loaded. require Exporter; *import = \&Exporter::import; @EXPORT_OK = qw(isa can VERSION); 1; __END__ #line 148 FILEad993a8c/base.pm#line 1 "/usr/share/perl/5.8/base.pm" package base; use strict 'vars'; use vars qw($VERSION); $VERSION = '2.07'; # constant.pm is slow sub SUCCESS () { 1 } sub PUBLIC () { 2**0 } sub PRIVATE () { 2**1 } sub INHERITED () { 2**2 } sub PROTECTED () { 2**3 } my $Fattr = \%fields::attr; sub has_fields { my($base) = shift; my $fglob = ${"$base\::"}{FIELDS}; return( ($fglob && *$fglob{HASH}) ? 1 : 0 ); } sub has_version { my($base) = shift; my $vglob = ${$base.'::'}{VERSION}; return( ($vglob && *$vglob{SCALAR}) ? 1 : 0 ); } sub has_attr { my($proto) = shift; my($class) = ref $proto || $proto; return exists $Fattr->{$class}; } sub get_attr { $Fattr->{$_[0]} = [1] unless $Fattr->{$_[0]}; return $Fattr->{$_[0]}; } if ($] < 5.009) { *get_fields = sub { # Shut up a possible typo warning. () = \%{$_[0].'::FIELDS'}; my $f = \%{$_[0].'::FIELDS'}; # should be centralized in fields? perhaps # fields::mk_FIELDS_be_OK. Peh. As long as %{ $package . '::FIELDS' } # is used here anyway, it doesn't matter. bless $f, 'pseudohash' if (ref($f) ne 'pseudohash'); return $f; } } else { *get_fields = sub { # Shut up a possible typo warning. () = \%{$_[0].'::FIELDS'}; return \%{$_[0].'::FIELDS'}; } } sub import { my $class = shift; return SUCCESS unless @_; # List of base classes from which we will inherit %FIELDS. my $fields_base; my $inheritor = caller(0); foreach my $base (@_) { next if $inheritor->isa($base); if (has_version($base)) { ${$base.'::VERSION'} = '-1, set by base.pm' unless defined ${$base.'::VERSION'}; } else { local $SIG{__DIE__}; eval "require $base"; # Only ignore "Can't locate" errors from our eval require. # Other fatal errors (syntax etc) must be reported. die if $@ && $@ !~ /^Can't locate .*? at \(eval /; unless (%{"$base\::"}) { require Carp; Carp::croak(<[0] = @$battr; if( keys %$dfields ) { warn "$derived is inheriting from $base but already has its own ". "fields!\n". "This will cause problems.\n". "Be sure you use base BEFORE declaring fields\n"; } # Iterate through the base's fields adding all the non-private # ones to the derived class. Hang on to the original attribute # (Public, Private, etc...) and add Inherited. # This is all too complicated to do efficiently with add_fields(). while (my($k,$v) = each %$bfields) { my $fno; if ($fno = $dfields->{$k} and $fno != $v) { require Carp; Carp::croak ("Inherited %FIELDS can't override existing %FIELDS"); } if( $battr->[$v] & PRIVATE ) { $dattr->[$v] = PRIVATE | INHERITED; } else { $dattr->[$v] = INHERITED | $battr->[$v]; $dfields->{$k} = $v; } } foreach my $idx (1..$#{$battr}) { next if defined $dattr->[$idx]; $dattr->[$idx] = $battr->[$idx] & INHERITED; } } 1; __END__ FILE2d8b7624/bytes.pm#line 1 "/usr/share/perl/5.8/bytes.pm" package bytes; our $VERSION = '1.02'; $bytes::hint_bits = 0x00000008; sub import { $^H |= $bytes::hint_bits; } sub unimport { $^H &= ~$bytes::hint_bits; } sub AUTOLOAD { require "bytes_heavy.pl"; goto &$AUTOLOAD if defined &$AUTOLOAD; require Carp; Carp::croak("Undefined subroutine $AUTOLOAD called"); } sub length ($); sub chr ($); sub ord ($); sub substr ($$;$$); sub index ($$;$); sub rindex ($$;$); 1; __END__ FILEbb3d36be/constant.pm #line 1 "/usr/share/perl/5.8/constant.pm" package constant; use strict; use 5.006_00; use warnings::register; our($VERSION, %declared); $VERSION = '1.05'; #======================================================================= # Some names are evil choices. my %keywords = map +($_, 1), qw{ BEGIN INIT CHECK END DESTROY AUTOLOAD }; my %forced_into_main = map +($_, 1), qw{ STDIN STDOUT STDERR ARGV ARGVOUT ENV INC SIG }; my %forbidden = (%keywords, %forced_into_main); #======================================================================= # import() - import symbols into user's namespace # # What we actually do is define a function in the caller's namespace # which returns the value. The function we create will normally # be inlined as a constant, thereby avoiding further sub calling # overhead. #======================================================================= sub import { my $class = shift; return unless @_; # Ignore 'use constant;' my %constants = (); my $multiple = ref $_[0]; if ( $multiple ) { if (ref $_[0] ne 'HASH') { require Carp; Carp::croak("Invalid reference type '".ref(shift)."' not 'HASH'"); } %constants = %{+shift}; } else { $constants{+shift} = undef; } foreach my $name ( keys %constants ) { unless (defined $name) { require Carp; Carp::croak("Can't use undef as constant name"); } my $pkg = caller; # Normal constant name if ($name =~ /^_?[^\W_0-9]\w*\z/ and !$forbidden{$name}) { # Everything is okay # Name forced into main, but we're not in main. Fatal. } elsif ($forced_into_main{$name} and $pkg ne 'main') { require Carp; Carp::croak("Constant name '$name' is forced into main::"); # Starts with double underscore. Fatal. } elsif ($name =~ /^__/) { require Carp; Carp::croak("Constant name '$name' begins with '__'"); # Maybe the name is tolerable } elsif ($name =~ /^[A-Za-z_]\w*\z/) { # Then we'll warn only if you've asked for warnings if (warnings::enabled()) { if ($keywords{$name}) { warnings::warn("Constant name '$name' is a Perl keyword"); } elsif ($forced_into_main{$name}) { warnings::warn("Constant name '$name' is " . "forced into package main::"); } } # Looks like a boolean # use constant FRED == fred; } elsif ($name =~ /^[01]?\z/) { require Carp; if (@_) { Carp::croak("Constant name '$name' is invalid"); } else { Carp::croak("Constant name looks like boolean value"); } } else { # Must have bad characters require Carp; Carp::croak("Constant name '$name' has invalid characters"); } { no strict 'refs'; my $full_name = "${pkg}::$name"; $declared{$full_name}++; if ($multiple) { my $scalar = $constants{$name}; *$full_name = sub () { $scalar }; } else { if (@_ == 1) { my $scalar = $_[0]; *$full_name = sub () { $scalar }; } elsif (@_) { my @list = @_; *$full_name = sub () { @list }; } else { *$full_name = sub () { }; } } } } } 1; __END__ FILEad30e879/integer.pm#line 1 "/usr/share/perl/5.8/integer.pm" package integer; our $VERSION = '1.00'; $integer::hint_bits = 0x1; sub import { $^H |= $integer::hint_bits; } sub unimport { $^H &= ~$integer::hint_bits; } 1; FILE8267b072/DynaLoader.pm"#line 1 "/usr/lib/perl/5.8/DynaLoader.pm" # Generated from DynaLoader.pm.PL package DynaLoader; # And Gandalf said: 'Many folk like to know beforehand what is to # be set on the table; but those who have laboured to prepare the # feast like to keep their secret; for wonder makes the words of # praise louder.' # (Quote from Tolkien suggested by Anno Siegel.) # # See pod text at end of file for documentation. # See also ext/DynaLoader/README in source tree for other information. # # Tim.Bunce@ig.co.uk, August 1994 use vars qw($VERSION *AUTOLOAD); $VERSION = '1.04'; # avoid typo warning require AutoLoader; *AUTOLOAD = \&AutoLoader::AUTOLOAD; use Config; # The following require can't be removed during maintenance # releases, sadly, because of the risk of buggy code that does # require Carp; Carp::croak "..."; without brackets dying # if Carp hasn't been loaded in earlier compile time. :-( # We'll let those bugs get found on the development track. require Carp if $] < 5.00450; # enable debug/trace messages from DynaLoader perl code $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug; # # Flags to alter dl_load_file behaviour. Assigned bits: # 0x01 make symbols available for linking later dl_load_file's. # (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL)) # (ignored under VMS; effect is built-in to image linking) # # This is called as a class method $module->dl_load_flags. The # definition here will be inherited and result on "default" loading # behaviour unless a sub-class of DynaLoader defines its own version. # sub dl_load_flags { 0x00 } # ($dl_dlext, $dlsrc) # = @Config::Config{'dlext', 'dlsrc'}; ($dl_dlext, $dlsrc) = ('so','dl_dlopen.xs') ; # Some systems need special handling to expand file specifications # (VMS support by Charles Bailey ) # See dl_expandspec() for more details. Should be harmless but # inefficient to define on systems that don't need it. $Is_VMS = $^O eq 'VMS'; $do_expand = $Is_VMS; $Is_MacOS = $^O eq 'MacOS'; my $Mac_FS; $Mac_FS = eval { require Mac::FileSpec::Unixish } if $Is_MacOS; @dl_require_symbols = (); # names of symbols we need @dl_resolve_using = (); # names of files to link with @dl_library_path = (); # path to look for files #XSLoader.pm may have added elements before we were required #@dl_librefs = (); # things we have loaded #@dl_modules = (); # Modules we have loaded # This is a fix to support DLD's unfortunate desire to relink -lc @dl_resolve_using = dl_findfile('-lc') if $dlsrc eq "dl_dld.xs"; # Initialise @dl_library_path with the 'standard' library path # for this platform as determined by Configure. push(@dl_library_path, split(' ', $Config::Config{libpth})); my $ldlibpthname = $Config::Config{ldlibpthname}; my $ldlibpthname_defined = defined $Config::Config{ldlibpthname}; my $pthsep = $Config::Config{path_sep}; # Add to @dl_library_path any extra directories we can gather from environment # during runtime. if ($ldlibpthname_defined && exists $ENV{$ldlibpthname}) { push(@dl_library_path, split(/$pthsep/, $ENV{$ldlibpthname})); } # E.g. HP-UX supports both its native SHLIB_PATH *and* LD_LIBRARY_PATH. if ($ldlibpthname_defined && $ldlibpthname ne 'LD_LIBRARY_PATH' && exists $ENV{LD_LIBRARY_PATH}) { push(@dl_library_path, split(/$pthsep/, $ENV{LD_LIBRARY_PATH})); } # No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. # NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && !defined(&dl_error); if ($dl_debug) { print STDERR "DynaLoader.pm loaded (@INC, @dl_library_path)\n"; print STDERR "DynaLoader not linked into this perl\n" unless defined(&boot_DynaLoader); } 1; # End of main code sub croak { require Carp; Carp::croak(@_) } sub bootstrap_inherit { my $module = $_[0]; local *isa = *{"$module\::ISA"}; local @isa = (@isa, 'DynaLoader'); # Cannot goto due to delocalization. Will report errors on a wrong line? bootstrap(@_); } # The bootstrap function cannot be autoloaded (without complications) # so we define it here: sub bootstrap { # use local vars to enable $module.bs script to edit values local(@args) = @_; local($module) = $args[0]; local(@dirs, $file); unless ($module) { require Carp; Carp::confess("Usage: DynaLoader::bootstrap(module)"); } # A common error on platforms which don't support dynamic loading. # Since it's fatal and potentially confusing we give a detailed message. croak("Can't load module $module, dynamic loading not available in this perl.\n". " (You may need to build a new perl executable which either supports\n". " dynamic loading or has the $module module statically linked into it.)\n") unless defined(&dl_load_file); my @modparts = split(/::/,$module); my $modfname = $modparts[-1]; # Some systems have restrictions on files names for DLL's etc. # mod2fname returns appropriate file base name (typically truncated) # It may also edit @modparts if required. $modfname = &mod2fname(\@modparts) if defined &mod2fname; # Truncate the module name to 8.3 format for NetWare if (($^O eq 'NetWare') && (length($modfname) > 8)) { $modfname = substr($modfname, 0, 8); } my $modpname = join(($Is_MacOS ? ':' : '/'),@modparts); print STDERR "DynaLoader::bootstrap for $module ", ($Is_MacOS ? "(:auto:$modpname:$modfname.$dl_dlext)\n" : "(auto/$modpname/$modfname.$dl_dlext)\n") if $dl_debug; foreach (@INC) { chop($_ = VMS::Filespec::unixpath($_)) if $Is_VMS; my $dir; if ($Is_MacOS) { my $path = $_; if ($Mac_FS && ! -d $path) { $path = Mac::FileSpec::Unixish::nativize($path); } $path .= ":" unless /:$/; $dir = "${path}auto:$modpname"; } else { $dir = "$_/auto/$modpname"; } next unless -d $dir; # skip over uninteresting directories # check for common cases to avoid autoload of dl_findfile my $try = $Is_MacOS ? "$dir:$modfname.$dl_dlext" : "$dir/$modfname.$dl_dlext"; last if $file = ($do_expand) ? dl_expandspec($try) : ((-f $try) && $try); # no luck here, save dir for possible later dl_findfile search push @dirs, $dir; } # last resort, let dl_findfile have a go in all known locations $file = dl_findfile(map("-L$_",@dirs,@INC), $modfname) unless $file; croak("Can't locate loadable object for module $module in \@INC (\@INC contains: @INC)") unless $file; # wording similar to error from 'require' $file = uc($file) if $Is_VMS && $Config::Config{d_vms_case_sensitive_symbols}; my $bootname = "boot_$module"; $bootname =~ s/\W/_/g; @dl_require_symbols = ($bootname); # Execute optional '.bootstrap' perl script for this module. # The .bs file can be used to configure @dl_resolve_using etc to # match the needs of the individual module on this architecture. my $bs = $file; $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library if (-s $bs) { # only read file if it's not empty print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug; eval { do $bs; }; warn "$bs: $@\n" if $@; } my $boot_symbol_ref; if ($^O eq 'darwin') { if ($boot_symbol_ref = dl_find_symbol(0, $bootname)) { goto boot; #extension library has already been loaded, e.g. darwin } } # Many dynamic extension loading problems will appear to come from # this section of code: XYZ failed at line 123 of DynaLoader.pm. # Often these errors are actually occurring in the initialisation # C code of the extension XS file. Perl reports the error as being # in this perl code simply because this was the last perl code # it executed. my $libref = dl_load_file($file, $module->dl_load_flags) or croak("Can't load '$file' for module $module: ".dl_error()); push(@dl_librefs,$libref); # record loaded object my @unresolved = dl_undef_symbols(); if (@unresolved) { require Carp; Carp::carp("Undefined symbols present after loading $file: @unresolved\n"); } $boot_symbol_ref = dl_find_symbol($libref, $bootname) or croak("Can't find '$bootname' symbol in $file\n"); push(@dl_modules, $module); # record loaded module boot: my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file); # See comment block above &$xs(@args); } #sub _check_file { # private utility to handle dl_expandspec vs -f tests # my($file) = @_; # return $file if (!$do_expand && -f $file); # the common case # return $file if ( $do_expand && ($file=dl_expandspec($file))); # return undef; #} # Let autosplit and the autoloader deal with these functions: FILEf238690d/Errno.pmt#line 1 "/usr/lib/perl/5.8/Errno.pm" # # This file is auto-generated. ***ANY*** changes here will be lost # package Errno; our (@EXPORT_OK,%EXPORT_TAGS,@ISA,$VERSION,%errno,$AUTOLOAD); use Exporter (); use strict; $VERSION = "1.09_01"; $VERSION = eval $VERSION; @ISA = qw(Exporter); @EXPORT_OK = qw(EBADR ENOMSG ENOTSUP ESTRPIPE EADDRINUSE EL3HLT EBADF ENOTBLK ENAVAIL ECHRNG ENOTNAM ELNRNG ENOKEY EXDEV EBADE EBADSLT ECONNREFUSED ENOSTR ENONET EOVERFLOW EISCONN EFBIG EKEYREVOKED ECONNRESET EWOULDBLOCK ELIBMAX EREMOTEIO ENOPKG ELIBSCN EDESTADDRREQ ENOTSOCK EIO EMEDIUMTYPE EINPROGRESS ERANGE EAFNOSUPPORT EADDRNOTAVAIL EINTR EREMOTE EILSEQ ENOMEM EPIPE ENETUNREACH ENODATA EUSERS EOPNOTSUPP EPROTO EISNAM ESPIPE EALREADY ENAMETOOLONG ENOEXEC EISDIR EBADRQC EEXIST EDOTDOT ELIBBAD EOWNERDEAD ESRCH EFAULT EXFULL EDEADLOCK EAGAIN ENOPROTOOPT ENETDOWN EPROTOTYPE EL2NSYNC ENETRESET EUCLEAN EADV EROFS ESHUTDOWN EMULTIHOP EPROTONOSUPPORT ENFILE ENOLCK ECONNABORTED ECANCELED EDEADLK ESRMNT ENOLINK ETIME ENOTDIR EINVAL ENOTTY ENOANO ELOOP ENOENT EPFNOSUPPORT EBADMSG ENOMEDIUM EL2HLT EDOM EBFONT EKEYEXPIRED EMSGSIZE ENOCSI EL3RST ENOSPC EIDRM ENOBUFS ENOSYS EHOSTDOWN EBADFD ENOSR ENOTCONN ESTALE EDQUOT EKEYREJECTED EMFILE ENOTRECOVERABLE EACCES EBUSY E2BIG EPERM ELIBEXEC ETOOMANYREFS ELIBACC ENOTUNIQ ECOMM ERESTART ESOCKTNOSUPPORT EUNATCH ETIMEDOUT ENXIO ENODEV ETXTBSY EMLINK ECHILD EHOSTUNREACH EREMCHG ENOTEMPTY); %EXPORT_TAGS = ( POSIX => [qw( E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM EPFNOSUPPORT EPIPE EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV )] ); sub EPERM () { 1 } sub ENOENT () { 2 } sub ESRCH () { 3 } sub EINTR () { 4 } sub EIO () { 5 } sub ENXIO () { 6 } sub E2BIG () { 7 } sub ENOEXEC () { 8 } sub EBADF () { 9 } sub ECHILD () { 10 } sub EWOULDBLOCK () { 11 } sub EAGAIN () { 11 } sub ENOMEM () { 12 } sub EACCES () { 13 } sub EFAULT () { 14 } sub ENOTBLK () { 15 } sub EBUSY () { 16 } sub EEXIST () { 17 } sub EXDEV () { 18 } sub ENODEV () { 19 } sub ENOTDIR () { 20 } sub EISDIR () { 21 } sub EINVAL () { 22 } sub ENFILE () { 23 } sub EMFILE () { 24 } sub ENOTTY () { 25 } sub ETXTBSY () { 26 } sub EFBIG () { 27 } sub ENOSPC () { 28 } sub ESPIPE () { 29 } sub EROFS () { 30 } sub EMLINK () { 31 } sub EPIPE () { 32 } sub EDOM () { 33 } sub ERANGE () { 34 } sub EDEADLOCK () { 35 } sub EDEADLK () { 35 } sub ENAMETOOLONG () { 36 } sub ENOLCK () { 37 } sub ENOSYS () { 38 } sub ENOTEMPTY () { 39 } sub ELOOP () { 40 } sub ENOMSG () { 42 } sub EIDRM () { 43 } sub ECHRNG () { 44 } sub EL2NSYNC () { 45 } sub EL3HLT () { 46 } sub EL3RST () { 47 } sub ELNRNG () { 48 } sub EUNATCH () { 49 } sub ENOCSI () { 50 } sub EL2HLT () { 51 } sub EBADE () { 52 } sub EBADR () { 53 } sub EXFULL () { 54 } sub ENOANO () { 55 } sub EBADRQC () { 56 } sub EBADSLT () { 57 } sub EBFONT () { 59 } sub ENOSTR () { 60 } sub ENODATA () { 61 } sub ETIME () { 62 } sub ENOSR () { 63 } sub ENONET () { 64 } sub ENOPKG () { 65 } sub EREMOTE () { 66 } sub ENOLINK () { 67 } sub EADV () { 68 } sub ESRMNT () { 69 } sub ECOMM () { 70 } sub EPROTO () { 71 } sub EMULTIHOP () { 72 } sub EDOTDOT () { 73 } sub EBADMSG () { 74 } sub EOVERFLOW () { 75 } sub ENOTUNIQ () { 76 } sub EBADFD () { 77 } sub EREMCHG () { 78 } sub ELIBACC () { 79 } sub ELIBBAD () { 80 } sub ELIBSCN () { 81 } sub ELIBMAX () { 82 } sub ELIBEXEC () { 83 } sub EILSEQ () { 84 } sub ERESTART () { 85 } sub ESTRPIPE () { 86 } sub EUSERS () { 87 } sub ENOTSOCK () { 88 } sub EDESTADDRREQ () { 89 } sub EMSGSIZE () { 90 } sub EPROTOTYPE () { 91 } sub ENOPROTOOPT () { 92 } sub EPROTONOSUPPORT () { 93 } sub ESOCKTNOSUPPORT () { 94 } sub ENOTSUP () { 95 } sub EOPNOTSUPP () { 95 } sub EPFNOSUPPORT () { 96 } sub EAFNOSUPPORT () { 97 } sub EADDRINUSE () { 98 } sub EADDRNOTAVAIL () { 99 } sub ENETDOWN () { 100 } sub ENETUNREACH () { 101 } sub ENETRESET () { 102 } sub ECONNABORTED () { 103 } sub ECONNRESET () { 104 } sub ENOBUFS () { 105 } sub EISCONN () { 106 } sub ENOTCONN () { 107 } sub ESHUTDOWN () { 108 } sub ETOOMANYREFS () { 109 } sub ETIMEDOUT () { 110 } sub ECONNREFUSED () { 111 } sub EHOSTDOWN () { 112 } sub EHOSTUNREACH () { 113 } sub EALREADY () { 114 } sub EINPROGRESS () { 115 } sub ESTALE () { 116 } sub EUCLEAN () { 117 } sub ENOTNAM () { 118 } sub ENAVAIL () { 119 } sub EISNAM () { 120 } sub EREMOTEIO () { 121 } sub EDQUOT () { 122 } sub ENOMEDIUM () { 123 } sub EMEDIUMTYPE () { 124 } sub ECANCELED () { 125 } sub ENOKEY () { 126 } sub EKEYEXPIRED () { 127 } sub EKEYREVOKED () { 128 } sub EKEYREJECTED () { 129 } sub EOWNERDEAD () { 130 } sub ENOTRECOVERABLE () { 131 } sub TIEHASH { bless [] } sub FETCH { my ($self, $errname) = @_; my $proto = prototype("Errno::$errname"); my $errno = ""; if (defined($proto) && $proto eq "") { no strict 'refs'; $errno = &$errname; $errno = 0 unless $! == $errno; } return $errno; } sub STORE { require Carp; Carp::confess("ERRNO hash is read only!"); } *CLEAR = \&STORE; *DELETE = \&STORE; sub NEXTKEY { my($k,$v); while(($k,$v) = each %Errno::) { my $proto = prototype("Errno::$k"); last if (defined($proto) && $proto eq ""); } $k } sub FIRSTKEY { my $s = scalar keys %Errno::; # initialize iterator goto &NEXTKEY; } sub EXISTS { my ($self, $errname) = @_; my $r = ref $errname; my $proto = !$r || $r eq 'CODE' ? prototype($errname) : undef; defined($proto) && $proto eq ""; } tie %!, __PACKAGE__; 1; __END__ FILEc9407e17/Fcntl.pm #line 1 "/usr/lib/perl/5.8/Fcntl.pm" package Fcntl; our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $AUTOLOAD); require Exporter; use XSLoader (); @ISA = qw(Exporter); $VERSION = "1.05"; # Items to export into callers namespace by default # (move infrequently used names to @EXPORT_OK below) @EXPORT = qw( FD_CLOEXEC F_ALLOCSP F_ALLOCSP64 F_COMPAT F_DUP2FD F_DUPFD F_EXLCK F_FREESP F_FREESP64 F_FSYNC F_FSYNC64 F_GETFD F_GETFL F_GETLK F_GETLK64 F_GETOWN F_NODNY F_POSIX F_RDACC F_RDDNY F_RDLCK F_RWACC F_RWDNY F_SETFD F_SETFL F_SETLK F_SETLK64 F_SETLKW F_SETLKW64 F_SETOWN F_SHARE F_SHLCK F_UNLCK F_UNSHARE F_WRACC F_WRDNY F_WRLCK O_ACCMODE O_ALIAS O_APPEND O_ASYNC O_BINARY O_CREAT O_DEFER O_DIRECT O_DIRECTORY O_DSYNC O_EXCL O_EXLOCK O_LARGEFILE O_NDELAY O_NOCTTY O_NOFOLLOW O_NOINHERIT O_NONBLOCK O_RANDOM O_RAW O_RDONLY O_RDWR O_RSRC O_RSYNC O_SEQUENTIAL O_SHLOCK O_SYNC O_TEMPORARY O_TEXT O_TRUNC O_WRONLY ); # Other items we are prepared to export if requested @EXPORT_OK = qw( DN_ACCESS DN_ATTRIB DN_CREATE DN_DELETE DN_MODIFY DN_MULTISHOT DN_RENAME FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC F_GETLEASE F_GETSIG F_NOTIFY F_SETLEASE F_SETSIG LOCK_EX LOCK_MAND LOCK_NB LOCK_READ LOCK_RW LOCK_SH LOCK_UN LOCK_WRITE O_IGNORE_CTTY O_NOATIME O_NOLINK O_NOTRANS SEEK_CUR SEEK_END SEEK_SET S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT S_IREAD S_IWRITE S_IEXEC S_IRGRP S_IWGRP S_IXGRP S_IRWXG S_IROTH S_IWOTH S_IXOTH S_IRWXO S_IRUSR S_IWUSR S_IXUSR S_IRWXU S_ISUID S_ISGID S_ISVTX S_ISTXT _S_IFMT S_IFREG S_IFDIR S_IFLNK &S_ISREG &S_ISDIR &S_ISLNK &S_ISSOCK &S_ISBLK &S_ISCHR &S_ISFIFO &S_ISWHT &S_ISENFMT &S_IFMT &S_IMODE ); # Named groups of exports %EXPORT_TAGS = ( 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)], 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)], 'seek' => [qw(SEEK_SET SEEK_CUR SEEK_END)], 'mode' => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT _S_IFMT S_IFREG S_IFDIR S_IFLNK S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT S_IRUSR S_IWUSR S_IXUSR S_IRWXU S_IRGRP S_IWGRP S_IXGRP S_IRWXG S_IROTH S_IWOTH S_IXOTH S_IRWXO S_IREAD S_IWRITE S_IEXEC S_ISREG S_ISDIR S_ISLNK S_ISSOCK S_ISBLK S_ISCHR S_ISFIFO S_ISWHT S_ISENFMT S_IFMT S_IMODE )], ); sub S_IFMT { @_ ? ( $_[0] & _S_IFMT() ) : _S_IFMT() } sub S_IMODE { $_[0] & 07777 } sub S_ISREG { ( $_[0] & _S_IFMT() ) == S_IFREG() } sub S_ISDIR { ( $_[0] & _S_IFMT() ) == S_IFDIR() } sub S_ISLNK { ( $_[0] & _S_IFMT() ) == S_IFLNK() } sub S_ISSOCK { ( $_[0] & _S_IFMT() ) == S_IFSOCK() } sub S_ISBLK { ( $_[0] & _S_IFMT() ) == S_IFBLK() } sub S_ISCHR { ( $_[0] & _S_IFMT() ) == S_IFCHR() } sub S_ISFIFO { ( $_[0] & _S_IFMT() ) == S_IFIFO() } sub S_ISWHT { ( $_[0] & _S_IFMT() ) == S_IFWHT() } sub S_ISENFMT { ( $_[0] & _S_IFMT() ) == S_IFENFMT() } sub AUTOLOAD { (my $constname = $AUTOLOAD) =~ s/.*:://; die "&Fcntl::constant not defined" if $constname eq 'constant'; my ($error, $val) = constant($constname); if ($error) { my (undef,$file,$line) = caller; die "$error at $file line $line.\n"; } *$AUTOLOAD = sub { $val }; goto &$AUTOLOAD; } XSLoader::load 'Fcntl', $VERSION; 1; FILE1218aa75/File/Glob.pm#line 1 "/usr/lib/perl/5.8/File/Glob.pm" package File::Glob; use strict; our($VERSION, @ISA, @EXPORT_OK, @EXPORT_FAIL, %EXPORT_TAGS, $AUTOLOAD, $DEFAULT_FLAGS); use XSLoader (); @ISA = qw(Exporter); # NOTE: The glob() export is only here for compatibility with 5.6.0. # csh_glob() should not be used directly, unless you know what you're doing. @EXPORT_OK = qw( csh_glob bsd_glob glob GLOB_ABEND GLOB_ALPHASORT GLOB_ALTDIRFUNC GLOB_BRACE GLOB_CSH GLOB_ERR GLOB_ERROR GLOB_LIMIT GLOB_MARK GLOB_NOCASE GLOB_NOCHECK GLOB_NOMAGIC GLOB_NOSORT GLOB_NOSPACE GLOB_QUOTE GLOB_TILDE ); %EXPORT_TAGS = ( 'glob' => [ qw( GLOB_ABEND GLOB_ALPHASORT GLOB_ALTDIRFUNC GLOB_BRACE GLOB_CSH GLOB_ERR GLOB_ERROR GLOB_LIMIT GLOB_MARK GLOB_NOCASE GLOB_NOCHECK GLOB_NOMAGIC GLOB_NOSORT GLOB_NOSPACE GLOB_QUOTE GLOB_TILDE glob bsd_glob ) ], ); $VERSION = '1.05'; sub import { require Exporter; my $i = 1; while ($i < @_) { if ($_[$i] =~ /^:(case|nocase|globally)$/) { splice(@_, $i, 1); $DEFAULT_FLAGS &= ~GLOB_NOCASE() if $1 eq 'case'; $DEFAULT_FLAGS |= GLOB_NOCASE() if $1 eq 'nocase'; if ($1 eq 'globally') { local $^W; *CORE::GLOBAL::glob = \&File::Glob::csh_glob; } next; } ++$i; } goto &Exporter::import; } sub AUTOLOAD { # This AUTOLOAD is used to 'autoload' constants from the constant() # XS function. If a constant is not found then control is passed # to the AUTOLOAD in AutoLoader. my $constname; ($constname = $AUTOLOAD) =~ s/.*:://; my ($error, $val) = constant($constname); if ($error) { require Carp; Carp::croak($error); } eval "sub $AUTOLOAD { $val }"; goto &$AUTOLOAD; } XSLoader::load 'File::Glob', $VERSION; # Preloaded methods go here. sub GLOB_ERROR { return (constant('GLOB_ERROR'))[1]; } sub GLOB_CSH () { GLOB_BRACE() | GLOB_NOMAGIC() | GLOB_QUOTE() | GLOB_TILDE() | GLOB_ALPHASORT() } $DEFAULT_FLAGS = GLOB_CSH(); if ($^O =~ /^(?:MSWin32|VMS|os2|dos|riscos|MacOS)$/) { $DEFAULT_FLAGS |= GLOB_NOCASE(); } # Autoload methods go after =cut, and are processed by the autosplit program. sub bsd_glob { my ($pat,$flags) = @_; $flags = $DEFAULT_FLAGS if @_ < 2; return doglob($pat,$flags); } # File::Glob::glob() is deprecated because its prototype is different from # CORE::glob() (use bsd_glob() instead) sub glob { splice @_, 1; # don't pass PL_glob_index as flags! goto &bsd_glob; } ## borrowed heavily from gsar's File::DosGlob my %iter; my %entries; sub csh_glob { my $pat = shift; my $cxix = shift; my @pat; # glob without args defaults to $_ $pat = $_ unless defined $pat; # extract patterns $pat =~ s/^\s+//; # Protect against empty elements in $pat =~ s/\s+$//; # things like < *.c> and <*.c >. # These alone shouldn't trigger ParseWords. if ($pat =~ /\s/) { # XXX this is needed for compatibility with the csh # implementation in Perl. Need to support a flag # to disable this behavior. require Text::ParseWords; @pat = Text::ParseWords::parse_line('\s+',0,$pat); } # assume global context if not provided one $cxix = '_G_' unless defined $cxix; $iter{$cxix} = 0 unless exists $iter{$cxix}; # if we're just beginning, do it all first if ($iter{$cxix} == 0) { if (@pat) { $entries{$cxix} = [ map { doglob($_, $DEFAULT_FLAGS) } @pat ]; } else { $entries{$cxix} = [ doglob($pat, $DEFAULT_FLAGS) ]; } } # chuck it all out, quick or slow if (wantarray) { delete $iter{$cxix}; return @{delete $entries{$cxix}}; } else { if ($iter{$cxix} = scalar @{$entries{$cxix}}) { return shift @{$entries{$cxix}}; } else { # return undef for EOL delete $iter{$cxix}; delete $entries{$cxix}; return undef; } } } 1; __END__ FILE9c9acf86/XSLoader.pm O#line 1 "/usr/lib/perl/5.8/XSLoader.pm" # Generated from XSLoader.pm.PL (resolved %Config::Config value) package XSLoader; $VERSION = "0.06"; #use strict; # enable debug/trace messages from DynaLoader perl code # $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug; my $dl_dlext = 'so'; package DynaLoader; # No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. # NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && !defined(&dl_error); package XSLoader; sub load { package DynaLoader; die q{XSLoader::load('Your::Module', $Your::Module::VERSION)} unless @_; my($module) = $_[0]; # work with static linking too my $b = "$module\::bootstrap"; goto &$b if defined &$b; goto retry; my @modparts = split(/::/,$module); my $modfname = $modparts[-1]; my $modpname = join('/',@modparts); my $modlibname = (caller())[1]; my $c = @modparts; $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename my $file = "$modlibname/auto/$modpname/$modfname.$dl_dlext"; # print STDERR "XSLoader::load for $module ($file)\n" if $dl_debug; my $bs = $file; $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library goto retry if not -f $file or -s $bs; my $bootname = "boot_$module"; $bootname =~ s/\W/_/g; @DynaLoader::dl_require_symbols = ($bootname); my $boot_symbol_ref; if ($^O eq 'darwin') { if ($boot_symbol_ref = dl_find_symbol(0, $bootname)) { goto boot; #extension library has already been loaded, e.g. darwin } } # Many dynamic extension loading problems will appear to come from # this section of code: XYZ failed at line 123 of DynaLoader.pm. # Often these errors are actually occurring in the initialisation # C code of the extension XS file. Perl reports the error as being # in this perl code simply because this was the last perl code # it executed. my $libref = dl_load_file($file, 0) or do { require Carp; Carp::croak("Can't load '$file' for module $module: " . dl_error()); }; push(@DynaLoader::dl_librefs,$libref); # record loaded object my @unresolved = dl_undef_symbols(); if (@unresolved) { require Carp; Carp::carp("Undefined symbols present after loading $file: @unresolved\n"); } $boot_symbol_ref = dl_find_symbol($libref, $bootname) or do { require Carp; Carp::croak("Can't find '$bootname' symbol in $file\n"); }; push(@DynaLoader::dl_modules, $module); # record loaded module boot: my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file); # See comment block above return &$xs(@_); retry: my $bootstrap_inherit = DynaLoader->can('bootstrap_inherit') || XSLoader->can('bootstrap_inherit'); goto &$bootstrap_inherit; } # Versions of DynaLoader prior to 5.6.0 don't have this function. sub bootstrap_inherit { package DynaLoader; my $module = $_[0]; local *DynaLoader::isa = *{"$module\::ISA"}; local @DynaLoader::isa = (@DynaLoader::isa, 'DynaLoader'); # Cannot goto due to delocalization. Will report errors on a wrong line? require DynaLoader; DynaLoader::bootstrap(@_); } 1; __END__ FILE'72da1942/auto/DynaLoader/dl_findfile.al#line 1 "/usr/lib/perl/5.8/auto/DynaLoader/dl_findfile.al" # NOTE: Derived from ../../lib/DynaLoader.pm. # Changes made here will be lost when autosplit is run again. # See AutoSplit.pm. package DynaLoader; #line 265 "../../lib/DynaLoader.pm (autosplit into ../../lib/auto/DynaLoader/dl_findfile.al)" sub dl_findfile { # Read ext/DynaLoader/DynaLoader.doc for detailed information. # This function does not automatically consider the architecture # or the perl library auto directories. my (@args) = @_; my (@dirs, $dir); # which directories to search my (@found); # full paths to real files we have found my $dl_ext= 'so'; # $Config::Config{'dlext'} suffix for perl extensions my $dl_so = 'so'; # $Config::Config{'so'} suffix for shared libraries print STDERR "dl_findfile(@args)\n" if $dl_debug; # accumulate directories but process files as they appear arg: foreach(@args) { # Special fast case: full filepath requires no search if ($Is_VMS && m%[:>/\]]% && -f $_) { push(@found,dl_expandspec(VMS::Filespec::vmsify($_))); last arg unless wantarray; next; } elsif ($Is_MacOS) { if (m/:/ && -f $_) { push(@found,$_); last arg unless wantarray; } } elsif (m:/: && -f $_ && !$do_expand) { push(@found,$_); last arg unless wantarray; next; } # Deal with directories first: # Using a -L prefix is the preferred option (faster and more robust) if (m:^-L:) { s/^-L//; push(@dirs, $_); next; } if ($Is_MacOS) { # Otherwise we try to try to spot directories by a heuristic # (this is a more complicated issue than it first appears) if (m/:/ && -d $_) { push(@dirs, $_); next; } # Only files should get this far... my(@names, $name); # what filenames to look for s/^-l//; push(@names, $_); foreach $dir (@dirs, @dl_library_path) { next unless -d $dir; $dir =~ s/^([^:]+)$/:$1/; $dir =~ s/:$//; foreach $name (@names) { my($file) = "$dir:$name"; print STDERR " checking in $dir for $name\n" if $dl_debug; if (-f $file) { push(@found, $file); next arg; # no need to look any further } } } next; } # Otherwise we try to try to spot directories by a heuristic # (this is a more complicated issue than it first appears) if (m:/: && -d $_) { push(@dirs, $_); next; } # VMS: we may be using native VMS directory syntax instead of # Unix emulation, so check this as well if ($Is_VMS && /[:>\]]/ && -d $_) { push(@dirs, $_); next; } # Only files should get this far... my(@names, $name); # what filenames to look for if (m:-l: ) { # convert -lname to appropriate library name s/-l//; push(@names,"lib$_.$dl_so"); push(@names,"lib$_.a"); } else { # Umm, a bare name. Try various alternatives: # these should be ordered with the most likely first push(@names,"$_.$dl_ext") unless m/\.$dl_ext$/o; push(@names,"$_.$dl_so") unless m/\.$dl_so$/o; push(@names,"lib$_.$dl_so") unless m:/:; push(@names,"$_.a") if !m/\.a$/ and $dlsrc eq "dl_dld.xs"; push(@names, $_); } foreach $dir (@dirs, @dl_library_path) { next unless -d $dir; chop($dir = VMS::Filespec::unixpath($dir)) if $Is_VMS; foreach $name (@names) { my($file) = "$dir/$name"; print STDERR " checking in $dir for $name\n" if $dl_debug; $file = ($do_expand) ? dl_expandspec($file) : (-f $file && $file); #$file = _check_file($file); if ($file) { push(@found, $file); next arg; # no need to look any further } } } } if ($dl_debug) { foreach(@dirs) { print STDERR " dl_findfile ignored non-existent directory: $_\n" unless -d $_; } print STDERR "dl_findfile found: @found\n"; } return $found[0] unless wantarray; @found; } # end of DynaLoader::dl_findfile 1; FILE0f6c19f8/lib.pm J#line 1 "/usr/lib/perl/5.8/lib.pm" package lib; # THIS FILE IS AUTOMATICALLY GENERATED FROM lib_pm.PL. # ANY CHANGES TO THIS FILE WILL BE OVERWRITTEN BY THE NEXT PERL BUILD. use Config; use strict; my $archname = $Config{archname}; my $version = $Config{version}; my @inc_version_list = reverse split / /, $Config{inc_version_list}; our @ORIG_INC = @INC; # take a handy copy of 'original' value our $VERSION = '0.5565'; my $Is_MacOS = $^O eq 'MacOS'; my $Mac_FS; if ($Is_MacOS) { require File::Spec; $Mac_FS = eval { require Mac::FileSpec::Unixish }; } sub import { shift; my %names; foreach (reverse @_) { my $path = $_; # we'll be modifying it, so break the alias if ($path eq '') { require Carp; Carp::carp("Empty compile time value given to use lib"); } $path = _nativize($path); if (-e $path && ! -d _) { require Carp; Carp::carp("Parameter to use lib must be directory, not file"); } unshift(@INC, $path); # Add any previous version directories we found at configure time foreach my $incver (@inc_version_list) { my $dir = $Is_MacOS ? File::Spec->catdir( $path, $incver ) : "$path/$incver"; unshift(@INC, $dir) if -d $dir; } # Put a corresponding archlib directory in front of $path if it # looks like $path has an archlib directory below it. my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir) = _get_dirs($path); unshift(@INC, $arch_dir) if -d $arch_auto_dir; unshift(@INC, $version_dir) if -d $version_dir; unshift(@INC, $version_arch_dir) if -d $version_arch_dir; } # remove trailing duplicates @INC = grep { ++$names{$_} == 1 } @INC; return; } sub unimport { shift; my %names; foreach (@_) { my $path = _nativize($_); my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir) = _get_dirs($path); ++$names{$path}; ++$names{$arch_dir} if -d $arch_auto_dir; ++$names{$version_dir} if -d $version_dir; ++$names{$version_arch_dir} if -d $version_arch_dir; } # Remove ALL instances of each named directory. @INC = grep { !exists $names{$_} } @INC; return; } sub _get_dirs { my($dir) = @_; my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir); # we could use this for all platforms in the future, but leave it # Mac-only for now, until there is more time for testing it. if ($Is_MacOS) { $arch_auto_dir = File::Spec->catdir( $dir, $archname, 'auto' ); $arch_dir = File::Spec->catdir( $dir, $archname, ); $version_dir = File::Spec->catdir( $dir, $version ); $version_arch_dir = File::Spec->catdir( $dir, $version, $archname ); } else { $arch_auto_dir = "$dir/$archname/auto"; $arch_dir = "$dir/$archname"; $version_dir = "$dir/$version"; $version_arch_dir = "$dir/$version/$archname"; } return($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir); } sub _nativize { my($dir) = @_; if ($Is_MacOS && $Mac_FS && ! -d $dir) { $dir = Mac::FileSpec::Unixish::nativize($dir); $dir .= ":" unless $dir =~ /:$/; } return $dir; } 1; __END__ FILEf12298bd/re.pm^#line 1 "/usr/lib/perl/5.8/re.pm" package re; our $VERSION = 0.05; # N.B. File::Basename contains a literal for 'taint' as a fallback. If # taint is changed here, File::Basename must be updated as well. my %bitmask = ( taint => 0x00100000, # HINT_RE_TAINT eval => 0x00200000, # HINT_RE_EVAL ); sub setcolor { eval { # Ignore errors require Term::Cap; my $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning. my $props = $ENV{PERL_RE_TC} || 'md,me,so,se,us,ue'; my @props = split /,/, $props; my $colors = join "\t", map {$terminal->Tputs($_,1)} @props; $colors =~ s/\0//g; $ENV{PERL_RE_COLORS} = $colors; }; } sub bits { my $on = shift; my $bits = 0; unless (@_) { require Carp; Carp::carp("Useless use of \"re\" pragma"); } foreach my $s (@_){ if ($s eq 'debug' or $s eq 'debugcolor') { setcolor() if $s eq 'debugcolor'; require XSLoader; XSLoader::load('re'); install() if $on; uninstall() unless $on; next; } if (exists $bitmask{$s}) { $bits |= $bitmask{$s}; } else { require Carp; Carp::carp("Unknown \"re\" subpragma '$s' (known ones are: @{[join(', ', map {qq('$_')} 'debug', 'debugcolor', sort keys %bitmask)]})"); } } $bits; } sub import { shift; $^H |= bits(1, @_); } sub unimport { shift; $^H &= ~ bits(0, @_); } 1; FILEd2e85afe/Compress/Raw/Zlib.pm:#line 1 "/usr/local/lib/perl/5.8.8/Compress/Raw/Zlib.pm" package Compress::Raw::Zlib; require 5.004 ; require Exporter; use AutoLoader; use Carp ; #use Parse::Parameters; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD); $VERSION = '2.015'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( adler32 crc32 ZLIB_VERSION ZLIB_VERNUM DEF_WBITS OS_CODE MAX_MEM_LEVEL MAX_WBITS Z_ASCII Z_BEST_COMPRESSION Z_BEST_SPEED Z_BINARY Z_BLOCK Z_BUF_ERROR Z_DATA_ERROR Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY Z_DEFLATED Z_ERRNO Z_FILTERED Z_FIXED Z_FINISH Z_FULL_FLUSH Z_HUFFMAN_ONLY Z_MEM_ERROR Z_NEED_DICT Z_NO_COMPRESSION Z_NO_FLUSH Z_NULL Z_OK Z_PARTIAL_FLUSH Z_RLE Z_STREAM_END Z_STREAM_ERROR Z_SYNC_FLUSH Z_UNKNOWN Z_VERSION_ERROR WANT_GZIP WANT_GZIP_OR_ZLIB ); use constant WANT_GZIP => 16; use constant WANT_GZIP_OR_ZLIB => 32; sub AUTOLOAD { my($constname); ($constname = $AUTOLOAD) =~ s/.*:://; my ($error, $val) = constant($constname); Carp::croak $error if $error; no strict 'refs'; *{$AUTOLOAD} = sub { $val }; goto &{$AUTOLOAD}; } use constant FLAG_APPEND => 1 ; use constant FLAG_CRC => 2 ; use constant FLAG_ADLER => 4 ; use constant FLAG_CONSUME_INPUT => 8 ; use constant FLAG_LIMIT_OUTPUT => 16 ; eval { require XSLoader; XSLoader::load('Compress::Raw::Zlib', $XS_VERSION); 1; } or do { require DynaLoader; local @ISA = qw(DynaLoader); bootstrap Compress::Raw::Zlib $XS_VERSION ; }; use constant Parse_any => 0x01; use constant Parse_unsigned => 0x02; use constant Parse_signed => 0x04; use constant Parse_boolean => 0x08; use constant Parse_string => 0x10; use constant Parse_custom => 0x12; use constant Parse_store_ref => 0x100 ; use constant OFF_PARSED => 0 ; use constant OFF_TYPE => 1 ; use constant OFF_DEFAULT => 2 ; use constant OFF_FIXED => 3 ; use constant OFF_FIRST_ONLY => 4 ; use constant OFF_STICKY => 5 ; sub ParseParameters { my $level = shift || 0 ; my $sub = (caller($level + 1))[3] ; #local $Carp::CarpLevel = 1 ; my $p = new Compress::Raw::Zlib::Parameters() ; $p->parse(@_) or croak "$sub: $p->{Error}" ; return $p; } sub Compress::Raw::Zlib::Parameters::new { my $class = shift ; my $obj = { Error => '', Got => {}, } ; #return bless $obj, ref($class) || $class || __PACKAGE__ ; return bless $obj, 'Compress::Raw::Zlib::Parameters' ; } sub Compress::Raw::Zlib::Parameters::setError { my $self = shift ; my $error = shift ; my $retval = @_ ? shift : undef ; $self->{Error} = $error ; return $retval; } #sub getError #{ # my $self = shift ; # return $self->{Error} ; #} sub Compress::Raw::Zlib::Parameters::parse { my $self = shift ; my $default = shift ; my $got = $self->{Got} ; my $firstTime = keys %{ $got } == 0 ; my (@Bad) ; my @entered = () ; # Allow the options to be passed as a hash reference or # as the complete hash. if (@_ == 0) { @entered = () ; } elsif (@_ == 1) { my $href = $_[0] ; return $self->setError("Expected even number of parameters, got 1") if ! defined $href or ! ref $href or ref $href ne "HASH" ; foreach my $key (keys %$href) { push @entered, $key ; push @entered, \$href->{$key} ; } } else { my $count = @_; return $self->setError("Expected even number of parameters, got $count") if $count % 2 != 0 ; for my $i (0.. $count / 2 - 1) { push @entered, $_[2* $i] ; push @entered, \$_[2* $i+1] ; } } while (my ($key, $v) = each %$default) { croak "need 4 params [@$v]" if @$v != 4 ; my ($first_only, $sticky, $type, $value) = @$v ; my $x ; $self->_checkType($key, \$value, $type, 0, \$x) or return undef ; $key = lc $key; if ($firstTime || ! $sticky) { $got->{$key} = [0, $type, $value, $x, $first_only, $sticky] ; } $got->{$key}[OFF_PARSED] = 0 ; } for my $i (0.. @entered / 2 - 1) { my $key = $entered[2* $i] ; my $value = $entered[2* $i+1] ; #print "Key [$key] Value [$value]" ; #print defined $$value ? "[$$value]\n" : "[undef]\n"; $key =~ s/^-// ; my $canonkey = lc $key; if ($got->{$canonkey} && ($firstTime || ! $got->{$canonkey}[OFF_FIRST_ONLY] )) { my $type = $got->{$canonkey}[OFF_TYPE] ; my $s ; $self->_checkType($key, $value, $type, 1, \$s) or return undef ; #$value = $$value unless $type & Parse_store_ref ; $value = $$value ; $got->{$canonkey} = [1, $type, $value, $s] ; } else { push (@Bad, $key) } } if (@Bad) { my ($bad) = join(", ", @Bad) ; return $self->setError("unknown key value(s) @Bad") ; } return 1; } sub Compress::Raw::Zlib::Parameters::_checkType { my $self = shift ; my $key = shift ; my $value = shift ; my $type = shift ; my $validate = shift ; my $output = shift; #local $Carp::CarpLevel = $level ; #print "PARSE $type $key $value $validate $sub\n" ; if ( $type & Parse_store_ref) { #$value = $$value # if ref ${ $value } ; $$output = $value ; return 1; } $value = $$value ; if ($type & Parse_any) { $$output = $value ; return 1; } elsif ($type & Parse_unsigned) { return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be an unsigned int, got '$value'") if $validate && $value !~ /^\d+$/; $$output = defined $value ? $value : 0 ; return 1; } elsif ($type & Parse_signed) { return $self->setError("Parameter '$key' must be a signed int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be a signed int, got '$value'") if $validate && $value !~ /^-?\d+$/; $$output = defined $value ? $value : 0 ; return 1 ; } elsif ($type & Parse_boolean) { return $self->setError("Parameter '$key' must be an int, got '$value'") if $validate && defined $value && $value !~ /^\d*$/; $$output = defined $value ? $value != 0 : 0 ; return 1; } elsif ($type & Parse_string) { $$output = defined $value ? $value : "" ; return 1; } $$output = $value ; return 1; } sub Compress::Raw::Zlib::Parameters::parsed { my $self = shift ; my $name = shift ; return $self->{Got}{lc $name}[OFF_PARSED] ; } sub Compress::Raw::Zlib::Parameters::value { my $self = shift ; my $name = shift ; if (@_) { $self->{Got}{lc $name}[OFF_PARSED] = 1; $self->{Got}{lc $name}[OFF_DEFAULT] = $_[0] ; $self->{Got}{lc $name}[OFF_FIXED] = $_[0] ; } return $self->{Got}{lc $name}[OFF_FIXED] ; } sub Compress::Raw::Zlib::Deflate::new { my $pkg = shift ; my ($got) = ParseParameters(0, { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Raw::Zlib::Deflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; my $windowBits = $got->value('WindowBits'); $windowBits += MAX_WBITS() if ($windowBits & MAX_WBITS()) == 0 ; _deflateInit($flags, $got->value('Level'), $got->value('Method'), $windowBits, $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), $got->value('Dictionary')) ; } sub Compress::Raw::Zlib::Inflate::new { my $pkg = shift ; my ($got) = ParseParameters(0, { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'LimitOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'ConsumeInput' => [1, 1, Parse_boolean, 1], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Raw::Zlib::Inflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; $flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ; $flags |= FLAG_LIMIT_OUTPUT if $got->value('LimitOutput') ; my $windowBits = $got->value('WindowBits'); $windowBits += MAX_WBITS() if ($windowBits & MAX_WBITS()) == 0 ; _inflateInit($flags, $windowBits, $got->value('Bufsize'), $got->value('Dictionary')) ; } sub Compress::Raw::Zlib::InflateScan::new { my $pkg = shift ; my ($got) = ParseParameters(0, { 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, -MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Raw::Zlib::InflateScan::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; #$flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; #$flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ; _inflateScanInit($flags, $got->value('WindowBits'), $got->value('Bufsize'), '') ; } sub Compress::Raw::Zlib::inflateScanStream::createDeflateStream { my $pkg = shift ; my ($got) = ParseParameters(0, { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, - MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], }, @_) ; croak "Compress::Raw::Zlib::InflateScan::createDeflateStream: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; $pkg->_createDeflateStream($flags, $got->value('Level'), $got->value('Method'), $got->value('WindowBits'), $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), ) ; } sub Compress::Raw::Zlib::inflateScanStream::inflate { my $self = shift ; my $buffer = $_[1]; my $eof = $_[2]; my $status = $self->scan(@_); if ($status == Z_OK() && $_[2]) { my $byte = ' '; $status = $self->scan(\$byte, $_[1]) ; } return $status ; } sub Compress::Raw::Zlib::deflateStream::deflateParams { my $self = shift ; my ($got) = ParseParameters(0, { 'Level' => [1, 1, Parse_signed, undef], 'Strategy' => [1, 1, Parse_unsigned, undef], 'Bufsize' => [1, 1, Parse_unsigned, undef], }, @_) ; croak "Compress::Raw::Zlib::deflateParams needs Level and/or Strategy" unless $got->parsed('Level') + $got->parsed('Strategy') + $got->parsed('Bufsize'); croak "Compress::Raw::Zlib::Inflate::deflateParams: Bufsize must be >= 1, you specified " . $got->value('Bufsize') if $got->parsed('Bufsize') && $got->value('Bufsize') <= 1; my $flags = 0; $flags |= 1 if $got->parsed('Level') ; $flags |= 2 if $got->parsed('Strategy') ; $flags |= 4 if $got->parsed('Bufsize') ; $self->_deflateParams($flags, $got->value('Level'), $got->value('Strategy'), $got->value('Bufsize')); } # Autoload methods go after __END__, and are processed by the autosplit program. 1; __END__ #line 1207 FILEdf7d9414/Cwd.pm= 5.006 ) { require XSLoader; XSLoader::load( __PACKAGE__, $xs_version); } else { require DynaLoader; push @ISA, 'DynaLoader'; __PACKAGE__->bootstrap( $xs_version ); } }; # Must be after the DynaLoader stuff: $VERSION = eval $VERSION; # Big nasty table of function aliases my %METHOD_MAP = ( VMS => { cwd => '_vms_cwd', getcwd => '_vms_cwd', fastcwd => '_vms_cwd', fastgetcwd => '_vms_cwd', abs_path => '_vms_abs_path', fast_abs_path => '_vms_abs_path', }, MSWin32 => { # We assume that &_NT_cwd is defined as an XSUB or in the core. cwd => '_NT_cwd', getcwd => '_NT_cwd', fastcwd => '_NT_cwd', fastgetcwd => '_NT_cwd', abs_path => 'fast_abs_path', realpath => 'fast_abs_path', }, dos => { cwd => '_dos_cwd', getcwd => '_dos_cwd', fastgetcwd => '_dos_cwd', fastcwd => '_dos_cwd', abs_path => 'fast_abs_path', }, qnx => { cwd => '_qnx_cwd', getcwd => '_qnx_cwd', fastgetcwd => '_qnx_cwd', fastcwd => '_qnx_cwd', abs_path => '_qnx_abs_path', fast_abs_path => '_qnx_abs_path', }, cygwin => { getcwd => 'cwd', fastgetcwd => 'cwd', fastcwd => 'cwd', abs_path => 'fast_abs_path', realpath => 'fast_abs_path', }, epoc => { cwd => '_epoc_cwd', getcwd => '_epoc_cwd', fastgetcwd => '_epoc_cwd', fastcwd => '_epoc_cwd', abs_path => 'fast_abs_path', }, MacOS => { getcwd => 'cwd', fastgetcwd => 'cwd', fastcwd => 'cwd', abs_path => 'fast_abs_path', }, ); $METHOD_MAP{NT} = $METHOD_MAP{MSWin32}; $METHOD_MAP{nto} = $METHOD_MAP{qnx}; # Find the pwd command in the expected locations. We assume these # are safe. This prevents _backtick_pwd() consulting $ENV{PATH} # so everything works under taint mode. my $pwd_cmd; foreach my $try ('/bin/pwd', '/usr/bin/pwd', '/QOpenSys/bin/pwd', # OS/400 PASE. ) { if( -x $try ) { $pwd_cmd = $try; last; } } my $found_pwd_cmd = defined($pwd_cmd); unless ($pwd_cmd) { # Isn't this wrong? _backtick_pwd() will fail if somenone has # pwd in their path but it is not /bin/pwd or /usr/bin/pwd? # See [perl #16774]. --jhi $pwd_cmd = 'pwd'; } # Lazy-load Carp sub _carp { require Carp; Carp::carp(@_) } sub _croak { require Carp; Carp::croak(@_) } # The 'natural and safe form' for UNIX (pwd may be setuid root) sub _backtick_pwd { # Localize %ENV entries in a way that won't create new hash keys my @localize = grep exists $ENV{$_}, qw(PATH IFS CDPATH ENV BASH_ENV); local @ENV{@localize}; my $cwd = `$pwd_cmd`; # Belt-and-suspenders in case someone said "undef $/". local $/ = "\n"; # `pwd` may fail e.g. if the disk is full chomp($cwd) if defined $cwd; $cwd; } # Since some ports may predefine cwd internally (e.g., NT) # we take care not to override an existing definition for cwd(). unless ($METHOD_MAP{$^O}{cwd} or defined &cwd) { # The pwd command is not available in some chroot(2)'ed environments my $sep = $Config::Config{path_sep} || ':'; my $os = $^O; # Protect $^O from tainting # Try again to find a pwd, this time searching the whole PATH. if (defined $ENV{PATH} and $os ne 'MSWin32') { # no pwd on Windows my @candidates = split($sep, $ENV{PATH}); while (!$found_pwd_cmd and @candidates) { my $candidate = shift @candidates; $found_pwd_cmd = 1 if -x "$candidate/pwd"; } } # MacOS has some special magic to make `pwd` work. if( $os eq 'MacOS' || $found_pwd_cmd ) { *cwd = \&_backtick_pwd; } else { *cwd = \&getcwd; } } if ($^O eq 'cygwin') { # We need to make sure cwd() is called with no args, because it's # got an arg-less prototype and will die if args are present. local $^W = 0; my $orig_cwd = \&cwd; *cwd = sub { &$orig_cwd() } } # set a reasonable (and very safe) default for fastgetcwd, in case it # isn't redefined later (20001212 rspier) *fastgetcwd = \&cwd; # A non-XS version of getcwd() - also used to bootstrap the perl build # process, when miniperl is running and no XS loading happens. sub _perl_getcwd { abs_path('.'); } # By John Bazik # # Usage: $cwd = &fastcwd; # # This is a faster version of getcwd. It's also more dangerous because # you might chdir out of a directory that you can't chdir back into. sub fastcwd_ { my($odev, $oino, $cdev, $cino, $tdev, $tino); my(@path, $path); local(*DIR); my($orig_cdev, $orig_cino) = stat('.'); ($cdev, $cino) = ($orig_cdev, $orig_cino); for (;;) { my $direntry; ($odev, $oino) = ($cdev, $cino); CORE::chdir('..') || return undef; ($cdev, $cino) = stat('.'); last if $odev == $cdev && $oino == $cino; opendir(DIR, '.') || return undef; for (;;) { $direntry = readdir(DIR); last unless defined $direntry; next if $direntry eq '.'; next if $direntry eq '..'; ($tdev, $tino) = lstat($direntry); last unless $tdev != $odev || $tino != $oino; } closedir(DIR); return undef unless defined $direntry; # should never happen unshift(@path, $direntry); } $path = '/' . join('/', @path); if ($^O eq 'apollo') { $path = "/".$path; } # At this point $path may be tainted (if tainting) and chdir would fail. # Untaint it then check that we landed where we started. $path =~ /^(.*)\z/s # untaint && CORE::chdir($1) or return undef; ($cdev, $cino) = stat('.'); die "Unstable directory path, current directory changed unexpectedly" if $cdev != $orig_cdev || $cino != $orig_cino; $path; } if (not defined &fastcwd) { *fastcwd = \&fastcwd_ } # Keeps track of current working directory in PWD environment var # Usage: # use Cwd 'chdir'; # chdir $newdir; my $chdir_init = 0; sub chdir_init { if ($ENV{'PWD'} and $^O ne 'os2' and $^O ne 'dos' and $^O ne 'MSWin32') { my($dd,$di) = stat('.'); my($pd,$pi) = stat($ENV{'PWD'}); if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) { $ENV{'PWD'} = cwd(); } } else { my $wd = cwd(); $wd = Win32::GetFullPathName($wd) if $^O eq 'MSWin32'; $ENV{'PWD'} = $wd; } # Strip an automounter prefix (where /tmp_mnt/foo/bar == /foo/bar) if ($^O ne 'MSWin32' and $ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) { my($pd,$pi) = stat($2); my($dd,$di) = stat($1); if (defined $pd and defined $dd and $di == $pi and $dd == $pd) { $ENV{'PWD'}="$2$3"; } } $chdir_init = 1; } sub chdir { my $newdir = @_ ? shift : ''; # allow for no arg (chdir to HOME dir) $newdir =~ s|///*|/|g unless $^O eq 'MSWin32'; chdir_init() unless $chdir_init; my $newpwd; if ($^O eq 'MSWin32') { # get the full path name *before* the chdir() $newpwd = Win32::GetFullPathName($newdir); } return 0 unless CORE::chdir $newdir; if ($^O eq 'VMS') { return $ENV{'PWD'} = $ENV{'DEFAULT'} } elsif ($^O eq 'MacOS') { return $ENV{'PWD'} = cwd(); } elsif ($^O eq 'MSWin32') { $ENV{'PWD'} = $newpwd; return 1; } if (ref $newdir eq 'GLOB') { # in case a file/dir handle is passed in $ENV{'PWD'} = cwd(); } elsif ($newdir =~ m#^/#s) { $ENV{'PWD'} = $newdir; } else { my @curdir = split(m#/#,$ENV{'PWD'}); @curdir = ('') unless @curdir; my $component; foreach $component (split(m#/#, $newdir)) { next if $component eq '.'; pop(@curdir),next if $component eq '..'; push(@curdir,$component); } $ENV{'PWD'} = join('/',@curdir) || '/'; } 1; } sub _perl_abs_path { my $start = @_ ? shift : '.'; my($dotdots, $cwd, @pst, @cst, $dir, @tst); unless (@cst = stat( $start )) { _carp("stat($start): $!"); return ''; } unless (-d _) { # Make sure we can be invoked on plain files, not just directories. # NOTE that this routine assumes that '/' is the only directory separator. my ($dir, $file) = $start =~ m{^(.*)/(.+)$} or return cwd() . '/' . $start; # Can't use "-l _" here, because the previous stat was a stat(), not an lstat(). if (-l $start) { my $link_target = readlink($start); die "Can't resolve link $start: $!" unless defined $link_target; require File::Spec; $link_target = $dir . '/' . $link_target unless File::Spec->file_name_is_absolute($link_target); return abs_path($link_target); } return $dir ? abs_path($dir) . "/$file" : "/$file"; } $cwd = ''; $dotdots = $start; do { $dotdots .= '/..'; @pst = @cst; local *PARENT; unless (opendir(PARENT, $dotdots)) { # probably a permissions issue. Try the native command. return File::Spec->rel2abs( $start, _backtick_pwd() ); } unless (@cst = stat($dotdots)) { _carp("stat($dotdots): $!"); closedir(PARENT); return ''; } if ($pst[0] == $cst[0] && $pst[1] == $cst[1]) { $dir = undef; } else { do { unless (defined ($dir = readdir(PARENT))) { _carp("readdir($dotdots): $!"); closedir(PARENT); return ''; } $tst[0] = $pst[0]+1 unless (@tst = lstat("$dotdots/$dir")) } while ($dir eq '.' || $dir eq '..' || $tst[0] != $pst[0] || $tst[1] != $pst[1]); } $cwd = (defined $dir ? "$dir" : "" ) . "/$cwd" ; closedir(PARENT); } while (defined $dir); chop($cwd) unless $cwd eq '/'; # drop the trailing / $cwd; } my $Curdir; sub fast_abs_path { local $ENV{PWD} = $ENV{PWD} || ''; # Guard against clobberage my $cwd = getcwd(); require File::Spec; my $path = @_ ? shift : ($Curdir ||= File::Spec->curdir); # Detaint else we'll explode in taint mode. This is safe because # we're not doing anything dangerous with it. ($path) = $path =~ /(.*)/; ($cwd) = $cwd =~ /(.*)/; unless (-e $path) { _croak("$path: No such file or directory"); } unless (-d _) { # Make sure we can be invoked on plain files, not just directories. my ($vol, $dir, $file) = File::Spec->splitpath($path); return File::Spec->catfile($cwd, $path) unless length $dir; if (-l $path) { my $link_target = readlink($path); die "Can't resolve link $path: $!" unless defined $link_target; $link_target = File::Spec->catpath($vol, $dir, $link_target) unless File::Spec->file_name_is_absolute($link_target); return fast_abs_path($link_target); } return $dir eq File::Spec->rootdir ? File::Spec->catpath($vol, $dir, $file) : fast_abs_path(File::Spec->catpath($vol, $dir, '')) . '/' . $file; } if (!CORE::chdir($path)) { _croak("Cannot chdir to $path: $!"); } my $realpath = getcwd(); if (! ((-d $cwd) && (CORE::chdir($cwd)))) { _croak("Cannot chdir back to $cwd: $!"); } $realpath; } # added function alias to follow principle of least surprise # based on previous aliasing. --tchrist 27-Jan-00 *fast_realpath = \&fast_abs_path; # --- PORTING SECTION --- # VMS: $ENV{'DEFAULT'} points to default directory at all times # 06-Mar-1996 Charles Bailey bailey@newman.upenn.edu # Note: Use of Cwd::chdir() causes the logical name PWD to be defined # in the process logical name table as the default device and directory # seen by Perl. This may not be the same as the default device # and directory seen by DCL after Perl exits, since the effects # the CRTL chdir() function persist only until Perl exits. sub _vms_cwd { return $ENV{'DEFAULT'}; } sub _vms_abs_path { return $ENV{'DEFAULT'} unless @_; my $path = shift; if (-l $path) { my $link_target = readlink($path); die "Can't resolve link $path: $!" unless defined $link_target; return _vms_abs_path($link_target); } if (defined &VMS::Filespec::vms_realpath) { my $path = $_[0]; if ($path =~ m#(?<=\^)/# ) { # Unix format return VMS::Filespec::vms_realpath($path); } # VMS format my $new_path = VMS::Filespec::vms_realname($path); # Perl expects directories to be in directory format $new_path = VMS::Filespec::pathify($new_path) if -d $path; return $new_path; } # Fallback to older algorithm if correct ones are not # available. # may need to turn foo.dir into [.foo] my $pathified = VMS::Filespec::pathify($path); $path = $pathified if defined $pathified; return VMS::Filespec::rmsexpand($path); } sub _os2_cwd { $ENV{'PWD'} = `cmd /c cd`; chomp $ENV{'PWD'}; $ENV{'PWD'} =~ s:\\:/:g ; return $ENV{'PWD'}; } sub _win32_cwd { if (defined &DynaLoader::boot_DynaLoader) { $ENV{'PWD'} = Win32::GetCwd(); } else { # miniperl chomp($ENV{'PWD'} = `cd`); } $ENV{'PWD'} =~ s:\\:/:g ; return $ENV{'PWD'}; } *_NT_cwd = defined &Win32::GetCwd ? \&_win32_cwd : \&_os2_cwd; sub _dos_cwd { if (!defined &Dos::GetCwd) { $ENV{'PWD'} = `command /c cd`; chomp $ENV{'PWD'}; $ENV{'PWD'} =~ s:\\:/:g ; } else { $ENV{'PWD'} = Dos::GetCwd(); } return $ENV{'PWD'}; } sub _qnx_cwd { local $ENV{PATH} = ''; local $ENV{CDPATH} = ''; local $ENV{ENV} = ''; $ENV{'PWD'} = `/usr/bin/fullpath -t`; chomp $ENV{'PWD'}; return $ENV{'PWD'}; } sub _qnx_abs_path { local $ENV{PATH} = ''; local $ENV{CDPATH} = ''; local $ENV{ENV} = ''; my $path = @_ ? shift : '.'; local *REALPATH; defined( open(REALPATH, '-|') || exec '/usr/bin/fullpath', '-t', $path ) or die "Can't open /usr/bin/fullpath: $!"; my $realpath = ; close REALPATH; chomp $realpath; return $realpath; } sub _epoc_cwd { $ENV{'PWD'} = EPOC::getcwd(); return $ENV{'PWD'}; } # Now that all the base-level functions are set up, alias the # user-level functions to the right places if (exists $METHOD_MAP{$^O}) { my $map = $METHOD_MAP{$^O}; foreach my $name (keys %$map) { local $^W = 0; # assignments trigger 'subroutine redefined' warning no strict 'refs'; *{$name} = \&{$map->{$name}}; } } # In case the XS version doesn't load. *abs_path = \&_perl_abs_path unless defined &abs_path; *getcwd = \&_perl_getcwd unless defined &getcwd; # added function alias for those of us more # used to the libc function. --tchrist 27-Jan-00 *realpath = \&abs_path; 1; FILE83695c25/File/Spec.pm#line 1 "/usr/local/lib/perl/5.8.8/File/Spec.pm" package File::Spec; use strict; use vars qw(@ISA $VERSION); $VERSION = '3.29'; $VERSION = eval $VERSION; my %module = (MacOS => 'Mac', MSWin32 => 'Win32', os2 => 'OS2', VMS => 'VMS', epoc => 'Epoc', NetWare => 'Win32', # Yes, File::Spec::Win32 works on NetWare. symbian => 'Win32', # Yes, File::Spec::Win32 works on symbian. dos => 'OS2', # Yes, File::Spec::OS2 works on DJGPP. cygwin => 'Cygwin'); my $module = $module{$^O} || 'Unix'; require "File/Spec/$module.pm"; @ISA = ("File::Spec::$module"); 1; __END__ #line 337 FILEafb66bb7/File/Spec/Unix.pm_#line 1 "/usr/local/lib/perl/5.8.8/File/Spec/Unix.pm" package File::Spec::Unix; use strict; use vars qw($VERSION); $VERSION = '3.29'; $VERSION = eval $VERSION; #line 42 sub canonpath { my ($self,$path) = @_; return unless defined $path; # Handle POSIX-style node names beginning with double slash (qnx, nto) # (POSIX says: "a pathname that begins with two successive slashes # may be interpreted in an implementation-defined manner, although # more than two leading slashes shall be treated as a single slash.") my $node = ''; my $double_slashes_special = $^O eq 'qnx' || $^O eq 'nto'; if ( $double_slashes_special && ( $path =~ s{^(//[^/]+)/?\z}{}s || $path =~ s{^(//[^/]+)/}{/}s ) ) { $node = $1; } # This used to be # $path =~ s|/+|/|g unless ($^O eq 'cygwin'); # but that made tests 29, 30, 35, 46, and 213 (as of #13272) to fail # (Mainly because trailing "" directories didn't get stripped). # Why would cygwin avoid collapsing multiple slashes into one? --jhi $path =~ s|/{2,}|/|g; # xx////xx -> xx/xx $path =~ s{(?:/\.)+(?:/|\z)}{/}g; # xx/././xx -> xx/xx $path =~ s|^(?:\./)+||s unless $path eq "./"; # ./xx -> xx $path =~ s|^/(?:\.\./)+|/|; # /../../xx -> xx $path =~ s|^/\.\.$|/|; # /.. -> / $path =~ s|/\z|| unless $path eq "/"; # xx/ -> xx return "$node$path"; } #line 82 sub catdir { my $self = shift; $self->canonpath(join('/', @_, '')); # '' because need a trailing '/' } #line 95 sub catfile { my $self = shift; my $file = $self->canonpath(pop @_); return $file unless @_; my $dir = $self->catdir(@_); $dir .= "/" unless substr($dir,-1) eq "/"; return $dir.$file; } #line 110 sub curdir { '.' } #line 118 sub devnull { '/dev/null' } #line 126 sub rootdir { '/' } #line 142 my $tmpdir; sub _tmpdir { return $tmpdir if defined $tmpdir; my $self = shift; my @dirlist = @_; { no strict 'refs'; if (${"\cTAINT"}) { # Check for taint mode on perl >= 5.8.0 require Scalar::Util; @dirlist = grep { ! Scalar::Util::tainted($_) } @dirlist; } } foreach (@dirlist) { next unless defined && -d && -w _; $tmpdir = $_; last; } $tmpdir = $self->curdir unless defined $tmpdir; $tmpdir = defined $tmpdir && $self->canonpath($tmpdir); return $tmpdir; } sub tmpdir { return $tmpdir if defined $tmpdir; $tmpdir = $_[0]->_tmpdir( $ENV{TMPDIR}, "/tmp" ); } #line 175 sub updir { '..' } #line 184 sub no_upwards { my $self = shift; return grep(!/^\.{1,2}\z/s, @_); } #line 196 sub case_tolerant { 0 } #line 208 sub file_name_is_absolute { my ($self,$file) = @_; return scalar($file =~ m:^/:s); } #line 219 sub path { return () unless exists $ENV{PATH}; my @path = split(':', $ENV{PATH}); foreach (@path) { $_ = '.' if $_ eq '' } return @path; } #line 232 sub join { my $self = shift; return $self->catfile(@_); } #line 257 sub splitpath { my ($self,$path, $nofile) = @_; my ($volume,$directory,$file) = ('','',''); if ( $nofile ) { $directory = $path; } else { $path =~ m|^ ( (?: .* / (?: \.\.?\z )? )? ) ([^/]*) |xs; $directory = $1; $file = $2; } return ($volume,$directory,$file); } #line 299 sub splitdir { return split m|/|, $_[1], -1; # Preserve trailing fields } #line 313 sub catpath { my ($self,$volume,$directory,$file) = @_; if ( $directory ne '' && $file ne '' && substr( $directory, -1 ) ne '/' && substr( $file, 0, 1 ) ne '/' ) { $directory .= "/$file" ; } else { $directory .= $file ; } return $directory ; } #line 358 sub abs2rel { my($self,$path,$base) = @_; $base = $self->_cwd() unless defined $base and length $base; ($path, $base) = map $self->canonpath($_), $path, $base; if (grep $self->file_name_is_absolute($_), $path, $base) { ($path, $base) = map $self->rel2abs($_), $path, $base; } else { # save a couple of cwd()s if both paths are relative ($path, $base) = map $self->catdir('/', $_), $path, $base; } my ($path_volume) = $self->splitpath($path, 1); my ($base_volume) = $self->splitpath($base, 1); # Can't relativize across volumes return $path unless $path_volume eq $base_volume; my $path_directories = ($self->splitpath($path, 1))[1]; my $base_directories = ($self->splitpath($base, 1))[1]; # For UNC paths, the user might give a volume like //foo/bar that # strictly speaking has no directory portion. Treat it as if it # had the root directory for that volume. if (!length($base_directories) and $self->file_name_is_absolute($base)) { $base_directories = $self->rootdir; } # Now, remove all leading components that are the same my @pathchunks = $self->splitdir( $path_directories ); my @basechunks = $self->splitdir( $base_directories ); if ($base_directories eq $self->rootdir) { shift @pathchunks; return $self->canonpath( $self->catpath('', $self->catdir( @pathchunks ), '') ); } while (@pathchunks && @basechunks && $self->_same($pathchunks[0], $basechunks[0])) { shift @pathchunks ; shift @basechunks ; } return $self->curdir unless @pathchunks || @basechunks; # $base now contains the directories the resulting relative path # must ascend out of before it can descend to $path_directory. my $result_dirs = $self->catdir( ($self->updir) x @basechunks, @pathchunks ); return $self->canonpath( $self->catpath('', $result_dirs, '') ); } sub _same { $_[1] eq $_[2]; } #line 439 sub rel2abs { my ($self,$path,$base ) = @_; # Clean up $path if ( ! $self->file_name_is_absolute( $path ) ) { # Figure out the effective $base and clean it up. if ( !defined( $base ) || $base eq '' ) { $base = $self->_cwd(); } elsif ( ! $self->file_name_is_absolute( $base ) ) { $base = $self->rel2abs( $base ) ; } else { $base = $self->canonpath( $base ) ; } # Glom them together $path = $self->catdir( $base, $path ) ; } return $self->canonpath( $path ) ; } #line 477 # Internal routine to File::Spec, no point in making this public since # it is the standard Cwd interface. Most of the platform-specific # File::Spec subclasses use this. sub _cwd { require Cwd; Cwd::getcwd(); } # Internal method to reduce xx\..\yy -> yy sub _collapse { my($fs, $path) = @_; my $updir = $fs->updir; my $curdir = $fs->curdir; my($vol, $dirs, $file) = $fs->splitpath($path); my @dirs = $fs->splitdir($dirs); pop @dirs if @dirs && $dirs[-1] eq ''; my @collapsed; foreach my $dir (@dirs) { if( $dir eq $updir and # if we have an updir @collapsed and # and something to collapse length $collapsed[-1] and # and its not the rootdir $collapsed[-1] ne $updir and # nor another updir $collapsed[-1] ne $curdir # nor the curdir ) { # then pop @collapsed; # collapse } else { # else push @collapsed, $dir; # just hang onto it } } return $fs->catpath($vol, $fs->catdir(@collapsed), $file ); } 1; FILE2965d249/IO.pm#line 1 "/usr/local/lib/perl/5.8.8/IO.pm" # package IO; use XSLoader (); use Carp; use strict; use warnings; our $VERSION = "1.23"; XSLoader::load 'IO', $VERSION; sub import { shift; warnings::warnif('deprecated', qq{Parameterless "use IO" deprecated}) if @_ == 0 ; my @l = @_ ? @_ : qw(Handle Seekable File Pipe Socket Dir); eval join("", map { "require IO::" . (/(\w+)/)[0] . ";\n" } @l) or croak $@; } 1; __END__ #line 68 FILE9197ebef/IO/File.pm#line 1 "/usr/local/lib/perl/5.8.8/IO/File.pm" # package IO::File; #line 126 use 5.006_001; use strict; our($VERSION, @EXPORT, @EXPORT_OK, @ISA); use Carp; use Symbol; use SelectSaver; use IO::Seekable; use File::Spec; require Exporter; @ISA = qw(IO::Handle IO::Seekable Exporter); $VERSION = "1.14"; @EXPORT = @IO::Seekable::EXPORT; eval { # Make all Fcntl O_XXX constants available for importing require Fcntl; my @O = grep /^O_/, @Fcntl::EXPORT; Fcntl->import(@O); # first we import what we want to export push(@EXPORT, @O); }; ################################################ ## Constructor ## sub new { my $type = shift; my $class = ref($type) || $type || "IO::File"; @_ >= 0 && @_ <= 3 or croak "usage: new $class [FILENAME [,MODE [,PERMS]]]"; my $fh = $class->SUPER::new(); if (@_) { $fh->open(@_) or return undef; } $fh; } ################################################ ## Open ## sub open { @_ >= 2 && @_ <= 4 or croak 'usage: $fh->open(FILENAME [,MODE [,PERMS]])'; my ($fh, $file) = @_; if (@_ > 2) { my ($mode, $perms) = @_[2, 3]; if ($mode =~ /^\d+$/) { defined $perms or $perms = 0666; return sysopen($fh, $file, $mode, $perms); } elsif ($mode =~ /:/) { return open($fh, $mode, $file) if @_ == 3; croak 'usage: $fh->open(FILENAME, IOLAYERS)'; } else { return open($fh, IO::Handle::_open_mode_string($mode), $file); } } open($fh, $file); } ################################################ ## Binmode ## sub binmode { ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])'; my($fh, $layer) = @_; return binmode $$fh unless $layer; return binmode $$fh, $layer; } 1; FILE5d2660b2/IO/Handle.pmd#line 1 "/usr/local/lib/perl/5.8.8/IO/Handle.pm" package IO::Handle; #line 256 use 5.006_001; use strict; our($VERSION, @EXPORT_OK, @ISA); use Carp; use Symbol; use SelectSaver; use IO (); # Load the XS module require Exporter; @ISA = qw(Exporter); $VERSION = "1.27"; $VERSION = eval $VERSION; @EXPORT_OK = qw( autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed format_write print printf say getline getlines printflush flush SEEK_SET SEEK_CUR SEEK_END _IOFBF _IOLBF _IONBF ); ################################################ ## Constructors, destructors. ## sub new { my $class = ref($_[0]) || $_[0] || "IO::Handle"; @_ == 1 or croak "usage: new $class"; my $io = gensym; bless $io, $class; } sub new_from_fd { my $class = ref($_[0]) || $_[0] || "IO::Handle"; @_ == 3 or croak "usage: new_from_fd $class FD, MODE"; my $io = gensym; shift; IO::Handle::fdopen($io, @_) or return undef; bless $io, $class; } # # There is no need for DESTROY to do anything, because when the # last reference to an IO object is gone, Perl automatically # closes its associated files (if any). However, to avoid any # attempts to autoload DESTROY, we here define it to do nothing. # sub DESTROY {} ################################################ ## Open and close. ## sub _open_mode_string { my ($mode) = @_; $mode =~ /^\+?(<|>>?)$/ or $mode =~ s/^r(\+?)$/$1/ or $mode =~ s/^a(\+?)$/$1>>/ or croak "IO::Handle: bad open mode: $mode"; $mode; } sub fdopen { @_ == 3 or croak 'usage: $io->fdopen(FD, MODE)'; my ($io, $fd, $mode) = @_; local(*GLOB); if (ref($fd) && "".$fd =~ /GLOB\(/o) { # It's a glob reference; Alias it as we cannot get name of anon GLOBs my $n = qualify(*GLOB); *GLOB = *{*$fd}; $fd = $n; } elsif ($fd =~ m#^\d+$#) { # It's an FD number; prefix with "=". $fd = "=$fd"; } open($io, _open_mode_string($mode) . '&' . $fd) ? $io : undef; } sub close { @_ == 1 or croak 'usage: $io->close()'; my($io) = @_; close($io); } ################################################ ## Normal I/O functions. ## # flock # select sub opened { @_ == 1 or croak 'usage: $io->opened()'; defined fileno($_[0]); } sub fileno { @_ == 1 or croak 'usage: $io->fileno()'; fileno($_[0]); } sub getc { @_ == 1 or croak 'usage: $io->getc()'; getc($_[0]); } sub eof { @_ == 1 or croak 'usage: $io->eof()'; eof($_[0]); } sub print { @_ or croak 'usage: $io->print(ARGS)'; my $this = shift; print $this @_; } sub printf { @_ >= 2 or croak 'usage: $io->printf(FMT,[ARGS])'; my $this = shift; printf $this @_; } sub say { @_ or croak 'usage: $io->say(ARGS)'; my $this = shift; print $this @_, "\n"; } sub getline { @_ == 1 or croak 'usage: $io->getline()'; my $this = shift; return scalar <$this>; } *gets = \&getline; # deprecated sub getlines { @_ == 1 or croak 'usage: $io->getlines()'; wantarray or croak 'Can\'t call $io->getlines in a scalar context, use $io->getline'; my $this = shift; return <$this>; } sub truncate { @_ == 2 or croak 'usage: $io->truncate(LEN)'; truncate($_[0], $_[1]); } sub read { @_ == 3 || @_ == 4 or croak 'usage: $io->read(BUF, LEN [, OFFSET])'; read($_[0], $_[1], $_[2], $_[3] || 0); } sub sysread { @_ == 3 || @_ == 4 or croak 'usage: $io->sysread(BUF, LEN [, OFFSET])'; sysread($_[0], $_[1], $_[2], $_[3] || 0); } sub write { @_ >= 2 && @_ <= 4 or croak 'usage: $io->write(BUF [, LEN [, OFFSET]])'; local($\) = ""; $_[2] = length($_[1]) unless defined $_[2]; print { $_[0] } substr($_[1], $_[3] || 0, $_[2]); } sub syswrite { @_ >= 2 && @_ <= 4 or croak 'usage: $io->syswrite(BUF [, LEN [, OFFSET]])'; if (defined($_[2])) { syswrite($_[0], $_[1], $_[2], $_[3] || 0); } else { syswrite($_[0], $_[1]); } } sub stat { @_ == 1 or croak 'usage: $io->stat()'; stat($_[0]); } ################################################ ## State modification functions. ## sub autoflush { my $old = new SelectSaver qualify($_[0], caller); my $prev = $|; $| = @_ > 1 ? $_[1] : 1; $prev; } sub output_field_separator { carp "output_field_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $,; $, = $_[1] if @_ > 1; $prev; } sub output_record_separator { carp "output_record_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $\; $\ = $_[1] if @_ > 1; $prev; } sub input_record_separator { carp "input_record_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $/; $/ = $_[1] if @_ > 1; $prev; } sub input_line_number { local $.; () = tell qualify($_[0], caller) if ref($_[0]); my $prev = $.; $. = $_[1] if @_ > 1; $prev; } sub format_page_number { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $%; $% = $_[1] if @_ > 1; $prev; } sub format_lines_per_page { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $=; $= = $_[1] if @_ > 1; $prev; } sub format_lines_left { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $-; $- = $_[1] if @_ > 1; $prev; } sub format_name { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $~; $~ = qualify($_[1], caller) if @_ > 1; $prev; } sub format_top_name { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $^; $^ = qualify($_[1], caller) if @_ > 1; $prev; } sub format_line_break_characters { carp "format_line_break_characters is not supported on a per-handle basis" if ref($_[0]); my $prev = $:; $: = $_[1] if @_ > 1; $prev; } sub format_formfeed { carp "format_formfeed is not supported on a per-handle basis" if ref($_[0]); my $prev = $^L; $^L = $_[1] if @_ > 1; $prev; } sub formline { my $io = shift; my $picture = shift; local($^A) = $^A; local($\) = ""; formline($picture, @_); print $io $^A; } sub format_write { @_ < 3 || croak 'usage: $io->write( [FORMAT_NAME] )'; if (@_ == 2) { my ($io, $fmt) = @_; my $oldfmt = $io->format_name(qualify($fmt,caller)); CORE::write($io); $io->format_name($oldfmt); } else { CORE::write($_[0]); } } # XXX undocumented sub fcntl { @_ == 3 || croak 'usage: $io->fcntl( OP, VALUE );'; my ($io, $op) = @_; return fcntl($io, $op, $_[2]); } # XXX undocumented sub ioctl { @_ == 3 || croak 'usage: $io->ioctl( OP, VALUE );'; my ($io, $op) = @_; return ioctl($io, $op, $_[2]); } # this sub is for compatability with older releases of IO that used # a sub called constant to detemine if a constant existed -- GMB # # The SEEK_* and _IO?BF constants were the only constants at that time # any new code should just chech defined(&CONSTANT_NAME) sub constant { no strict 'refs'; my $name = shift; (($name =~ /^(SEEK_(SET|CUR|END)|_IO[FLN]BF)$/) && defined &{$name}) ? &{$name}() : undef; } # so that flush.pl can be deprecated sub printflush { my $io = shift; my $old; $old = new SelectSaver qualify($io, caller) if ref($io); local $| = 1; if(ref($io)) { print $io @_; } else { print @_; } } 1; FILE0ee40944/IO/Seekable.pm#line 1 "/usr/local/lib/perl/5.8.8/IO/Seekable.pm" # package IO::Seekable; #line 96 use 5.006_001; use Carp; use strict; our($VERSION, @EXPORT, @ISA); use IO::Handle (); # XXX we can't get these from IO::Handle or we'll get prototype # mismatch warnings on C :-( use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END); require Exporter; @EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END); @ISA = qw(Exporter); $VERSION = "1.10"; $VERSION = eval $VERSION; sub seek { @_ == 3 or croak 'usage: $io->seek(POS, WHENCE)'; seek($_[0], $_[1], $_[2]); } sub sysseek { @_ == 3 or croak 'usage: $io->sysseek(POS, WHENCE)'; sysseek($_[0], $_[1], $_[2]); } sub tell { @_ == 1 or croak 'usage: $io->tell()'; tell($_[0]); } 1; FILE9ed76530/List/Util.pm#line 1 "/usr/local/lib/perl/5.8.8/List/Util.pm" # List::Util.pm # # Copyright (c) 1997-2006 Graham Barr . All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. package List::Util; use strict; use vars qw(@ISA @EXPORT_OK $VERSION $XS_VERSION $TESTING_PERL_ONLY); require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw(first min max minstr maxstr reduce sum shuffle); $VERSION = "1.19"; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; eval { # PERL_DL_NONLAZY must be false, or any errors in loading will just # cause the perl code to be tested local $ENV{PERL_DL_NONLAZY} = 0 if $ENV{PERL_DL_NONLAZY}; eval { require XSLoader; XSLoader::load('List::Util', $XS_VERSION); 1; } or do { require DynaLoader; local @ISA = qw(DynaLoader); bootstrap List::Util $XS_VERSION; }; } unless $TESTING_PERL_ONLY; # This code is only compiled if the XS did not load # of for perl < 5.6.0 if (!defined &reduce) { eval <<'ESQ' sub reduce (&@) { my $code = shift; no strict 'refs'; return shift unless @_ > 1; use vars qw($a $b); my $caller = caller; local(*{$caller."::a"}) = \my $a; local(*{$caller."::b"}) = \my $b; $a = shift; foreach (@_) { $b = $_; $a = &{$code}(); } $a; } sub first (&@) { my $code = shift; foreach (@_) { return $_ if &{$code}(); } undef; } ESQ } # This code is only compiled if the XS did not load eval <<'ESQ' if !defined ∑ use vars qw($a $b); sub sum (@) { reduce { $a + $b } @_ } sub min (@) { reduce { $a < $b ? $a : $b } @_ } sub max (@) { reduce { $a > $b ? $a : $b } @_ } sub minstr (@) { reduce { $a lt $b ? $a : $b } @_ } sub maxstr (@) { reduce { $a gt $b ? $a : $b } @_ } sub shuffle (@) { my @a=\(@_); my $n; my $i=@_; map { $n = rand($i--); (${$a[$n]}, $a[$n] = $a[$i])[0]; } @_; } ESQ 1; __END__ #line 282 FILE7f0762c7/Scalar/Util.pm z#line 1 "/usr/local/lib/perl/5.8.8/Scalar/Util.pm" # Scalar::Util.pm # # Copyright (c) 1997-2006 Graham Barr . All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. package Scalar::Util; use strict; use vars qw(@ISA @EXPORT_OK $VERSION); require Exporter; require List::Util; # List::Util loads the XS @ISA = qw(Exporter); @EXPORT_OK = qw(blessed dualvar reftype weaken isweak tainted readonly openhandle refaddr isvstring looks_like_number set_prototype); $VERSION = "1.19"; $VERSION = eval $VERSION; sub export_fail { if (grep { /^(weaken|isweak)$/ } @_ ) { require Carp; Carp::croak("Weak references are not implemented in the version of perl"); } if (grep { /^(isvstring)$/ } @_ ) { require Carp; Carp::croak("Vstrings are not implemented in the version of perl"); } if (grep { /^(dualvar|set_prototype)$/ } @_ ) { require Carp; Carp::croak("$1 is only avaliable with the XS version"); } @_; } sub openhandle ($) { my $fh = shift; my $rt = reftype($fh) || ''; return defined(fileno($fh)) ? $fh : undef if $rt eq 'IO'; if (reftype(\$fh) eq 'GLOB') { # handle openhandle(*DATA) $fh = \(my $tmp=$fh); } elsif ($rt ne 'GLOB') { return undef; } (tied(*$fh) or defined(fileno($fh))) ? $fh : undef; } eval <<'ESQ' unless defined &dualvar; use vars qw(@EXPORT_FAIL); push @EXPORT_FAIL, qw(weaken isweak dualvar isvstring set_prototype); # The code beyond here is only used if the XS is not installed # Hope nobody defines a sub by this name sub UNIVERSAL::a_sub_not_likely_to_be_here { ref($_[0]) } sub blessed ($) { local($@, $SIG{__DIE__}, $SIG{__WARN__}); length(ref($_[0])) ? eval { $_[0]->a_sub_not_likely_to_be_here } : undef } sub refaddr($) { my $pkg = ref($_[0]) or return undef; if (blessed($_[0])) { bless $_[0], 'Scalar::Util::Fake'; } else { $pkg = undef; } "$_[0]" =~ /0x(\w+)/; my $i = do { local $^W; hex $1 }; bless $_[0], $pkg if defined $pkg; $i; } sub reftype ($) { local($@, $SIG{__DIE__}, $SIG{__WARN__}); my $r = shift; my $t; length($t = ref($r)) or return undef; # This eval will fail if the reference is not blessed eval { $r->a_sub_not_likely_to_be_here; 1 } ? do { $t = eval { # we have a GLOB or an IO. Stringify a GLOB gives it's name my $q = *$r; $q =~ /^\*/ ? "GLOB" : "IO"; } or do { # OK, if we don't have a GLOB what parts of # a glob will it populate. # NOTE: A glob always has a SCALAR local *glob = $r; defined *glob{ARRAY} && "ARRAY" or defined *glob{HASH} && "HASH" or defined *glob{CODE} && "CODE" or length(ref(${$r})) ? "REF" : "SCALAR"; } } : $t } sub tainted { local($@, $SIG{__DIE__}, $SIG{__WARN__}); local $^W = 0; eval { kill 0 * $_[0] }; $@ =~ /^Insecure/; } sub readonly { return 0 if tied($_[0]) || (ref(\($_[0])) ne "SCALAR"); local($@, $SIG{__DIE__}, $SIG{__WARN__}); my $tmp = $_[0]; !eval { $_[0] = $tmp; 1 }; } sub looks_like_number { local $_ = shift; # checks from perlfaq4 return 0 if !defined($_) or ref($_); return 1 if (/^[+-]?\d+$/); # is a +/- integer return 1 if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/); # a C float return 1 if ($] >= 5.008 and /^(Inf(inity)?|NaN)$/i) or ($] >= 5.006001 and /^Inf$/i); 0; } ESQ 1; __END__ #line 342 FILE,696e25cd/auto/Compress/Raw/Zlib/autosplit.ix#line 1 "/usr/local/lib/perl/5.8.8/auto/Compress/Raw/Zlib/autosplit.ix" # Index created by AutoSplit for blib/lib/Compress/Raw/Zlib.pm # (file acts as timestamp) 1; FILE6333aadc/Archive/Zip.pm;#line 1 "/usr/local/share/perl/5.8.8/Archive/Zip.pm" package Archive::Zip; use strict; BEGIN { require 5.003_96; } use UNIVERSAL (); use Carp (); use IO::File (); use IO::Seekable (); use Compress::Zlib (); use File::Spec (); use File::Temp (); use FileHandle (); use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.26'; require Exporter; @ISA = qw( Exporter ); } use vars qw( $ChunkSize $ErrorHandler ); BEGIN { # This is the size we'll try to read, write, and (de)compress. # You could set it to something different if you had lots of memory # and needed more speed. $ChunkSize ||= 32768; $ErrorHandler = \&Carp::carp; } # BEGIN block is necessary here so that other modules can use the constants. use vars qw( @EXPORT_OK %EXPORT_TAGS ); BEGIN { @EXPORT_OK = ('computeCRC32'); %EXPORT_TAGS = ( CONSTANTS => [ qw( FA_MSDOS FA_UNIX GPBF_ENCRYPTED_MASK GPBF_DEFLATING_COMPRESSION_MASK GPBF_HAS_DATA_DESCRIPTOR_MASK COMPRESSION_STORED COMPRESSION_DEFLATED COMPRESSION_LEVEL_NONE COMPRESSION_LEVEL_DEFAULT COMPRESSION_LEVEL_FASTEST COMPRESSION_LEVEL_BEST_COMPRESSION IFA_TEXT_FILE_MASK IFA_TEXT_FILE IFA_BINARY_FILE ) ], MISC_CONSTANTS => [ qw( FA_AMIGA FA_VAX_VMS FA_VM_CMS FA_ATARI_ST FA_OS2_HPFS FA_MACINTOSH FA_Z_SYSTEM FA_CPM FA_TOPS20 FA_WINDOWS_NTFS FA_QDOS FA_ACORN FA_VFAT FA_MVS FA_BEOS FA_TANDEM FA_THEOS GPBF_IMPLODING_8K_SLIDING_DICTIONARY_MASK GPBF_IMPLODING_3_SHANNON_FANO_TREES_MASK GPBF_IS_COMPRESSED_PATCHED_DATA_MASK COMPRESSION_SHRUNK DEFLATING_COMPRESSION_NORMAL DEFLATING_COMPRESSION_MAXIMUM DEFLATING_COMPRESSION_FAST DEFLATING_COMPRESSION_SUPER_FAST COMPRESSION_REDUCED_1 COMPRESSION_REDUCED_2 COMPRESSION_REDUCED_3 COMPRESSION_REDUCED_4 COMPRESSION_IMPLODED COMPRESSION_TOKENIZED COMPRESSION_DEFLATED_ENHANCED COMPRESSION_PKWARE_DATA_COMPRESSION_LIBRARY_IMPLODED ) ], ERROR_CODES => [ qw( AZ_OK AZ_STREAM_END AZ_ERROR AZ_FORMAT_ERROR AZ_IO_ERROR ) ], # For Internal Use Only PKZIP_CONSTANTS => [ qw( SIGNATURE_FORMAT SIGNATURE_LENGTH LOCAL_FILE_HEADER_SIGNATURE LOCAL_FILE_HEADER_FORMAT LOCAL_FILE_HEADER_LENGTH CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE DATA_DESCRIPTOR_FORMAT DATA_DESCRIPTOR_LENGTH DATA_DESCRIPTOR_SIGNATURE DATA_DESCRIPTOR_FORMAT_NO_SIG DATA_DESCRIPTOR_LENGTH_NO_SIG CENTRAL_DIRECTORY_FILE_HEADER_FORMAT CENTRAL_DIRECTORY_FILE_HEADER_LENGTH END_OF_CENTRAL_DIRECTORY_SIGNATURE END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING END_OF_CENTRAL_DIRECTORY_FORMAT END_OF_CENTRAL_DIRECTORY_LENGTH ) ], # For Internal Use Only UTILITY_METHODS => [ qw( _error _printError _ioError _formatError _subclassResponsibility _binmode _isSeekable _newFileHandle _readSignature _asZipDirName ) ], ); # Add all the constant names and error code names to @EXPORT_OK Exporter::export_ok_tags( qw( CONSTANTS ERROR_CODES PKZIP_CONSTANTS UTILITY_METHODS MISC_CONSTANTS ) ); } # Error codes use constant AZ_OK => 0; use constant AZ_STREAM_END => 1; use constant AZ_ERROR => 2; use constant AZ_FORMAT_ERROR => 3; use constant AZ_IO_ERROR => 4; # File types # Values of Archive::Zip::Member->fileAttributeFormat() use constant FA_MSDOS => 0; use constant FA_AMIGA => 1; use constant FA_VAX_VMS => 2; use constant FA_UNIX => 3; use constant FA_VM_CMS => 4; use constant FA_ATARI_ST => 5; use constant FA_OS2_HPFS => 6; use constant FA_MACINTOSH => 7; use constant FA_Z_SYSTEM => 8; use constant FA_CPM => 9; use constant FA_TOPS20 => 10; use constant FA_WINDOWS_NTFS => 11; use constant FA_QDOS => 12; use constant FA_ACORN => 13; use constant FA_VFAT => 14; use constant FA_MVS => 15; use constant FA_BEOS => 16; use constant FA_TANDEM => 17; use constant FA_THEOS => 18; # general-purpose bit flag masks # Found in Archive::Zip::Member->bitFlag() use constant GPBF_ENCRYPTED_MASK => 1 << 0; use constant GPBF_DEFLATING_COMPRESSION_MASK => 3 << 1; use constant GPBF_HAS_DATA_DESCRIPTOR_MASK => 1 << 3; # deflating compression types, if compressionMethod == COMPRESSION_DEFLATED # ( Archive::Zip::Member->bitFlag() & GPBF_DEFLATING_COMPRESSION_MASK ) use constant DEFLATING_COMPRESSION_NORMAL => 0 << 1; use constant DEFLATING_COMPRESSION_MAXIMUM => 1 << 1; use constant DEFLATING_COMPRESSION_FAST => 2 << 1; use constant DEFLATING_COMPRESSION_SUPER_FAST => 3 << 1; # compression method # these two are the only ones supported in this module use constant COMPRESSION_STORED => 0; # file is stored (no compression) use constant COMPRESSION_DEFLATED => 8; # file is Deflated use constant COMPRESSION_LEVEL_NONE => 0; use constant COMPRESSION_LEVEL_DEFAULT => -1; use constant COMPRESSION_LEVEL_FASTEST => 1; use constant COMPRESSION_LEVEL_BEST_COMPRESSION => 9; # internal file attribute bits # Found in Archive::Zip::Member::internalFileAttributes() use constant IFA_TEXT_FILE_MASK => 1; use constant IFA_TEXT_FILE => 1; use constant IFA_BINARY_FILE => 0; # PKZIP file format miscellaneous constants (for internal use only) use constant SIGNATURE_FORMAT => "V"; use constant SIGNATURE_LENGTH => 4; # these lengths are without the signature. use constant LOCAL_FILE_HEADER_SIGNATURE => 0x04034b50; use constant LOCAL_FILE_HEADER_FORMAT => "v3 V4 v2"; use constant LOCAL_FILE_HEADER_LENGTH => 26; # PKZIP docs don't mention the signature, but Info-Zip writes it. use constant DATA_DESCRIPTOR_SIGNATURE => 0x08074b50; use constant DATA_DESCRIPTOR_FORMAT => "V3"; use constant DATA_DESCRIPTOR_LENGTH => 12; # but the signature is apparently optional. use constant DATA_DESCRIPTOR_FORMAT_NO_SIG => "V2"; use constant DATA_DESCRIPTOR_LENGTH_NO_SIG => 8; use constant CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE => 0x02014b50; use constant CENTRAL_DIRECTORY_FILE_HEADER_FORMAT => "C2 v3 V4 v5 V2"; use constant CENTRAL_DIRECTORY_FILE_HEADER_LENGTH => 42; use constant END_OF_CENTRAL_DIRECTORY_SIGNATURE => 0x06054b50; use constant END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING => pack( "V", END_OF_CENTRAL_DIRECTORY_SIGNATURE ); use constant END_OF_CENTRAL_DIRECTORY_FORMAT => "v4 V2 v"; use constant END_OF_CENTRAL_DIRECTORY_LENGTH => 18; use constant GPBF_IMPLODING_8K_SLIDING_DICTIONARY_MASK => 1 << 1; use constant GPBF_IMPLODING_3_SHANNON_FANO_TREES_MASK => 1 << 2; use constant GPBF_IS_COMPRESSED_PATCHED_DATA_MASK => 1 << 5; # the rest of these are not supported in this module use constant COMPRESSION_SHRUNK => 1; # file is Shrunk use constant COMPRESSION_REDUCED_1 => 2; # file is Reduced CF=1 use constant COMPRESSION_REDUCED_2 => 3; # file is Reduced CF=2 use constant COMPRESSION_REDUCED_3 => 4; # file is Reduced CF=3 use constant COMPRESSION_REDUCED_4 => 5; # file is Reduced CF=4 use constant COMPRESSION_IMPLODED => 6; # file is Imploded use constant COMPRESSION_TOKENIZED => 7; # reserved for Tokenizing compr. use constant COMPRESSION_DEFLATED_ENHANCED => 9; # reserved for enh. Deflating use constant COMPRESSION_PKWARE_DATA_COMPRESSION_LIBRARY_IMPLODED => 10; # Load the various required classes require Archive::Zip::Archive; require Archive::Zip::Member; require Archive::Zip::FileMember; require Archive::Zip::DirectoryMember; require Archive::Zip::ZipFileMember; require Archive::Zip::NewFileMember; require Archive::Zip::StringMember; use constant ZIPARCHIVECLASS => 'Archive::Zip::Archive'; use constant ZIPMEMBERCLASS => 'Archive::Zip::Member'; # Convenience functions sub _ISA ($$) { # Can't rely on Scalar::Util, so use the next best way local $@; !! eval { ref $_[0] and $_[0]->isa($_[1]) }; } sub _CAN ($$) { local $@; !! eval { ref $_[0] and $_[0]->can($_[1]) }; } ##################################################################### # Methods sub new { my $class = shift; return $class->ZIPARCHIVECLASS->new(@_); } sub computeCRC32 { my $data = shift; $data = shift if ref($data); # allow calling as an obj method my $crc = shift; return Compress::Zlib::crc32( $data, $crc ); } # Report or change chunk size used for reading and writing. # Also sets Zlib's default buffer size (eventually). sub setChunkSize { my $chunkSize = shift; $chunkSize = shift if ref($chunkSize); # object method on zip? my $oldChunkSize = $Archive::Zip::ChunkSize; $Archive::Zip::ChunkSize = $chunkSize if ($chunkSize); return $oldChunkSize; } sub chunkSize { return $Archive::Zip::ChunkSize; } sub setErrorHandler (&) { my $errorHandler = shift; $errorHandler = \&Carp::carp unless defined($errorHandler); my $oldErrorHandler = $Archive::Zip::ErrorHandler; $Archive::Zip::ErrorHandler = $errorHandler; return $oldErrorHandler; } ###################################################################### # Private utility functions (not methods). sub _printError { my $string = join ( ' ', @_, "\n" ); my $oldCarpLevel = $Carp::CarpLevel; $Carp::CarpLevel += 2; &{$ErrorHandler} ($string); $Carp::CarpLevel = $oldCarpLevel; } # This is called on format errors. sub _formatError { shift if ref( $_[0] ); _printError( 'format error:', @_ ); return AZ_FORMAT_ERROR; } # This is called on IO errors. sub _ioError { shift if ref( $_[0] ); _printError( 'IO error:', @_, ':', $! ); return AZ_IO_ERROR; } # This is called on generic errors. sub _error { shift if ref( $_[0] ); _printError( 'error:', @_ ); return AZ_ERROR; } # Called when a subclass should have implemented # something but didn't sub _subclassResponsibility { Carp::croak("subclass Responsibility\n"); } # Try to set the given file handle or object into binary mode. sub _binmode { my $fh = shift; return _CAN( $fh, 'binmode' ) ? $fh->binmode() : binmode($fh); } # Attempt to guess whether file handle is seekable. # Because of problems with Windows, this only returns true when # the file handle is a real file. sub _isSeekable { my $fh = shift; return 0 unless ref $fh; if ( _ISA($fh, 'IO::Scalar') ) { # IO::Scalar objects are brokenly-seekable return 0; } if ( _ISA($fh, 'IO::String') ) { return 1; } if ( _ISA($fh, 'IO::Seekable') ) { # Unfortunately, some things like FileHandle objects # return true for Seekable, but AREN'T!!!!! if ( _ISA($fh, 'FileHandle') ) { return 0; } else { return 1; } } if ( _CAN($fh, 'stat') ) { return -f $fh; } return ( _CAN($fh, 'seek') and _CAN($fh, 'tell') ) ? 1 : 0; } # Print to the filehandle, while making sure the pesky Perl special global # variables don't interfere. sub _print { my ($self, $fh, @data) = @_; local $\; return $fh->print(@data); } # Return an opened IO::Handle # my ( $status, fh ) = _newFileHandle( 'fileName', 'w' ); # Can take a filename, file handle, or ref to GLOB # Or, if given something that is a ref but not an IO::Handle, # passes back the same thing. sub _newFileHandle { my $fd = shift; my $status = 1; my $handle; if ( ref($fd) ) { if ( _ISA($fd, 'IO::Scalar') or _ISA($fd, 'IO::String') ) { $handle = $fd; } elsif ( _ISA($fd, 'IO::Handle') or ref($fd) eq 'GLOB' ) { $handle = IO::File->new; $status = $handle->fdopen( $fd, @_ ); } else { $handle = $fd; } } else { $handle = IO::File->new; $status = $handle->open( $fd, @_ ); } return ( $status, $handle ); } # Returns next signature from given file handle, leaves # file handle positioned afterwards. # In list context, returns ($status, $signature) # ( $status, $signature) = _readSignature( $fh, $fileName ); sub _readSignature { my $fh = shift; my $fileName = shift; my $expectedSignature = shift; # optional my $signatureData; my $bytesRead = $fh->read( $signatureData, SIGNATURE_LENGTH ); if ( $bytesRead != SIGNATURE_LENGTH ) { return _ioError("reading header signature"); } my $signature = unpack( SIGNATURE_FORMAT, $signatureData ); my $status = AZ_OK; # compare with expected signature, if any, or any known signature. if ( ( defined($expectedSignature) && $signature != $expectedSignature ) || ( !defined($expectedSignature) && $signature != CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE && $signature != LOCAL_FILE_HEADER_SIGNATURE && $signature != END_OF_CENTRAL_DIRECTORY_SIGNATURE && $signature != DATA_DESCRIPTOR_SIGNATURE ) ) { my $errmsg = sprintf( "bad signature: 0x%08x", $signature ); if ( _isSeekable($fh) ) { $errmsg .= sprintf( " at offset %d", $fh->tell() - SIGNATURE_LENGTH ); } $status = _formatError("$errmsg in file $fileName"); } return ( $status, $signature ); } # Utility method to make and open a temp file. # Will create $temp_dir if it doesn't exist. # Returns file handle and name: # # my ($fh, $name) = Archive::Zip::tempFile(); # my ($fh, $name) = Archive::Zip::tempFile('mytempdir'); # sub tempFile { my $dir = shift; my ( $fh, $filename ) = File::Temp::tempfile( SUFFIX => '.zip', UNLINK => 0, # we will delete it! $dir ? ( DIR => $dir ) : () ); return ( undef, undef ) unless $fh; my ( $status, $newfh ) = _newFileHandle( $fh, 'w+' ); return ( $newfh, $filename ); } # Return the normalized directory name as used in a zip file (path # separators become slashes, etc.). # Will translate internal slashes in path components (i.e. on Macs) to # underscores. Discards volume names. # When $forceDir is set, returns paths with trailing slashes (or arrays # with trailing blank members). # # If third argument is a reference, returns volume information there. # # input output # . ('.') '.' # ./a ('a') a # ./a/b ('a','b') a/b # ./a/b/ ('a','b') a/b # a/b/ ('a','b') a/b # /a/b/ ('','a','b') /a/b # c:\a\b\c.doc ('','a','b','c.doc') /a/b/c.doc # on Windoze # "i/o maps:whatever" ('i_o maps', 'whatever') "i_o maps/whatever" # on Macs sub _asZipDirName { my $name = shift; my $forceDir = shift; my $volReturn = shift; my ( $volume, $directories, $file ) = File::Spec->splitpath( File::Spec->canonpath($name), $forceDir ); $$volReturn = $volume if ( ref($volReturn) ); my @dirs = map { $_ =~ s{/}{_}g; $_ } File::Spec->splitdir($directories); if ( @dirs > 0 ) { pop (@dirs) unless $dirs[-1] } # remove empty component push ( @dirs, defined($file) ? $file : '' ); #return wantarray ? @dirs : join ( '/', @dirs ); return join ( '/', @dirs ); } # Return an absolute local name for a zip name. # Assume a directory if zip name has trailing slash. # Takes an optional volume name in FS format (like 'a:'). # sub _asLocalName { my $name = shift; # zip format my $volume = shift; $volume = '' unless defined($volume); # local FS format my @paths = split ( /\//, $name ); my $filename = pop (@paths); $filename = '' unless defined($filename); my $localDirs = @paths?File::Spec->catdir(@paths):''; my $localName = File::Spec->catpath( $volume, $localDirs, $filename ); $localName = File::Spec->rel2abs($localName) unless $volume; return $localName; } 1; __END__ #line 2048 FILEb6efcea0/Archive/Zip/Archive.pm]#line 1 "/usr/local/share/perl/5.8.8/Archive/Zip/Archive.pm" package Archive::Zip::Archive; # Represents a generic ZIP archive use strict; use File::Path; use File::Find (); use File::Spec (); use File::Copy (); use File::Basename; use Cwd; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.26'; @ISA = qw( Archive::Zip ); } use Archive::Zip qw( :CONSTANTS :ERROR_CODES :PKZIP_CONSTANTS :UTILITY_METHODS ); # Note that this returns undef on read errors, else new zip object. sub new { my $class = shift; my $self = bless( { 'diskNumber' => 0, 'diskNumberWithStartOfCentralDirectory' => 0, 'numberOfCentralDirectoriesOnThisDisk' => 0, # shld be # of members 'numberOfCentralDirectories' => 0, # shld be # of members 'centralDirectorySize' => 0, # must re-compute on write 'centralDirectoryOffsetWRTStartingDiskNumber' => 0, # must re-compute 'writeEOCDOffset' => 0, 'writeCentralDirectoryOffset' => 0, 'zipfileComment' => '', 'eocdOffset' => 0, 'fileName' => '' }, $class ); $self->{'members'} = []; if (@_) { my $status = $self->read(@_); return $status == AZ_OK ? $self : undef; } return $self; } sub members { @{ shift->{'members'} }; } sub numberOfMembers { scalar( shift->members() ); } sub memberNames { my $self = shift; return map { $_->fileName() } $self->members(); } # return ref to member with given name or undef sub memberNamed { my ( $self, $fileName ) = @_; foreach my $member ( $self->members() ) { return $member if $member->fileName() eq $fileName; } return undef; } sub membersMatching { my ( $self, $pattern ) = @_; return grep { $_->fileName() =~ /$pattern/ } $self->members(); } sub diskNumber { shift->{'diskNumber'}; } sub diskNumberWithStartOfCentralDirectory { shift->{'diskNumberWithStartOfCentralDirectory'}; } sub numberOfCentralDirectoriesOnThisDisk { shift->{'numberOfCentralDirectoriesOnThisDisk'}; } sub numberOfCentralDirectories { shift->{'numberOfCentralDirectories'}; } sub centralDirectorySize { shift->{'centralDirectorySize'}; } sub centralDirectoryOffsetWRTStartingDiskNumber { shift->{'centralDirectoryOffsetWRTStartingDiskNumber'}; } sub zipfileComment { my $self = shift; my $comment = $self->{'zipfileComment'}; if (@_) { $self->{'zipfileComment'} = pack( 'C0a*', shift() ); # avoid unicode } return $comment; } sub eocdOffset { shift->{'eocdOffset'}; } # Return the name of the file last read. sub fileName { shift->{'fileName'}; } sub removeMember { my ( $self, $member ) = @_; $member = $self->memberNamed($member) unless ref($member); return undef unless $member; my @newMembers = grep { $_ != $member } $self->members(); $self->{'members'} = \@newMembers; return $member; } sub replaceMember { my ( $self, $oldMember, $newMember ) = @_; $oldMember = $self->memberNamed($oldMember) unless ref($oldMember); return undef unless $oldMember; return undef unless $newMember; my @newMembers = map { ( $_ == $oldMember ) ? $newMember : $_ } $self->members(); $self->{'members'} = \@newMembers; return $oldMember; } sub extractMember { my $self = shift; my $member = shift; $member = $self->memberNamed($member) unless ref($member); return _error('member not found') unless $member; my $originalSize = $member->compressedSize(); my $name = shift; # local FS name if given my ( $volumeName, $dirName, $fileName ); if ( defined($name) ) { ( $volumeName, $dirName, $fileName ) = File::Spec->splitpath($name); $dirName = File::Spec->catpath( $volumeName, $dirName, '' ); } else { $name = $member->fileName(); ( $dirName = $name ) =~ s{[^/]*$}{}; $dirName = Archive::Zip::_asLocalName($dirName); $name = Archive::Zip::_asLocalName($name); } if ( $dirName && !-d $dirName ) { mkpath($dirName); return _ioError("can't create dir $dirName") if ( !-d $dirName ); } my $rc = $member->extractToFileNamed( $name, @_ ); # TODO refactor this fix into extractToFileNamed() $member->{'compressedSize'} = $originalSize; return $rc; } sub extractMemberWithoutPaths { my $self = shift; my $member = shift; $member = $self->memberNamed($member) unless ref($member); return _error('member not found') unless $member; my $originalSize = $member->compressedSize(); return AZ_OK if $member->isDirectory(); my $name = shift; unless ($name) { $name = $member->fileName(); $name =~ s{.*/}{}; # strip off directories, if any $name = Archive::Zip::_asLocalName($name); } my $rc = $member->extractToFileNamed( $name, @_ ); $member->{'compressedSize'} = $originalSize; return $rc; } sub addMember { my ( $self, $newMember ) = @_; push( @{ $self->{'members'} }, $newMember ) if $newMember; return $newMember; } sub addFile { my $self = shift; my $fileName = shift; my $newName = shift; my $newMember = $self->ZIPMEMBERCLASS->newFromFile( $fileName, $newName ); $self->addMember($newMember) if defined($newMember); return $newMember; } sub addString { my $self = shift; my $newMember = $self->ZIPMEMBERCLASS->newFromString(@_); return $self->addMember($newMember); } sub addDirectory { my ( $self, $name, $newName ) = @_; my $newMember = $self->ZIPMEMBERCLASS->newDirectoryNamed( $name, $newName ); $self->addMember($newMember); return $newMember; } # add either a file or a directory. sub addFileOrDirectory { my ( $self, $name, $newName ) = @_; if ( -f $name ) { ( $newName =~ s{/$}{} ) if $newName; return $self->addFile( $name, $newName ); } elsif ( -d $name ) { ( $newName =~ s{[^/]$}{&/} ) if $newName; return $self->addDirectory( $name, $newName ); } else { return _error("$name is neither a file nor a directory"); } } sub contents { my ( $self, $member, $newContents ) = @_; return _error('No member name given') unless $member; $member = $self->memberNamed($member) unless ref($member); return undef unless $member; return $member->contents($newContents); } sub writeToFileNamed { my $self = shift; my $fileName = shift; # local FS format foreach my $member ( $self->members() ) { if ( $member->_usesFileNamed($fileName) ) { return _error( "$fileName is needed by member " . $member->fileName() . "; consider using overwrite() or overwriteAs() instead." ); } } my ( $status, $fh ) = _newFileHandle( $fileName, 'w' ); return _ioError("Can't open $fileName for write") unless $status; my $retval = $self->writeToFileHandle( $fh, 1 ); $fh->close(); $fh = undef; return $retval; } # It is possible to write data to the FH before calling this, # perhaps to make a self-extracting archive. sub writeToFileHandle { my $self = shift; my $fh = shift; return _error('No filehandle given') unless $fh; return _ioError('filehandle not open') unless $fh->opened(); my $fhIsSeekable = @_ ? shift: _isSeekable($fh); _binmode($fh); # Find out where the current position is. my $offset = $fhIsSeekable ? $fh->tell() : 0; $offset = 0 if $offset < 0; foreach my $member ( $self->members() ) { my $retval = $member->_writeToFileHandle( $fh, $fhIsSeekable, $offset ); $member->endRead(); return $retval if $retval != AZ_OK; $offset += $member->_localHeaderSize() + $member->_writeOffset(); $offset += $member->hasDataDescriptor() ? DATA_DESCRIPTOR_LENGTH + SIGNATURE_LENGTH : 0; # changed this so it reflects the last successful position $self->{'writeCentralDirectoryOffset'} = $offset; } return $self->writeCentralDirectory($fh); } # Write zip back to the original file, # as safely as possible. # Returns AZ_OK if successful. sub overwrite { my $self = shift; return $self->overwriteAs( $self->{'fileName'} ); } # Write zip to the specified file, # as safely as possible. # Returns AZ_OK if successful. sub overwriteAs { my $self = shift; my $zipName = shift; return _error("no filename in overwriteAs()") unless defined($zipName); my ( $fh, $tempName ) = Archive::Zip::tempFile(); return _error( "Can't open temp file", $! ) unless $fh; ( my $backupName = $zipName ) =~ s{(\.[^.]*)?$}{.zbk}; my $status = $self->writeToFileHandle($fh); $fh->close(); $fh = undef; if ( $status != AZ_OK ) { unlink($tempName); _printError("Can't write to $tempName"); return $status; } my $err; # rename the zip if ( -f $zipName && !rename( $zipName, $backupName ) ) { $err = $!; unlink($tempName); return _error( "Can't rename $zipName as $backupName", $err ); } # move the temp to the original name (possibly copying) unless ( File::Copy::move( $tempName, $zipName ) ) { $err = $!; rename( $backupName, $zipName ); unlink($tempName); return _error( "Can't move $tempName to $zipName", $err ); } # unlink the backup if ( -f $backupName && !unlink($backupName) ) { $err = $!; return _error( "Can't unlink $backupName", $err ); } return AZ_OK; } # Used only during writing sub _writeCentralDirectoryOffset { shift->{'writeCentralDirectoryOffset'}; } sub _writeEOCDOffset { shift->{'writeEOCDOffset'}; } # Expects to have _writeEOCDOffset() set sub _writeEndOfCentralDirectory { my ( $self, $fh ) = @_; $self->_print($fh, END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING) or return _ioError('writing EOCD Signature'); my $zipfileCommentLength = length( $self->zipfileComment() ); my $header = pack( END_OF_CENTRAL_DIRECTORY_FORMAT, 0, # {'diskNumber'}, 0, # {'diskNumberWithStartOfCentralDirectory'}, $self->numberOfMembers(), # {'numberOfCentralDirectoriesOnThisDisk'}, $self->numberOfMembers(), # {'numberOfCentralDirectories'}, $self->_writeEOCDOffset() - $self->_writeCentralDirectoryOffset(), $self->_writeCentralDirectoryOffset(), $zipfileCommentLength ); $self->_print($fh, $header) or return _ioError('writing EOCD header'); if ($zipfileCommentLength) { $self->_print($fh, $self->zipfileComment() ) or return _ioError('writing zipfile comment'); } return AZ_OK; } # $offset can be specified to truncate a zip file. sub writeCentralDirectory { my ( $self, $fh, $offset ) = @_; if ( defined($offset) ) { $self->{'writeCentralDirectoryOffset'} = $offset; $fh->seek( $offset, IO::Seekable::SEEK_SET ) or return _ioError('seeking to write central directory'); } else { $offset = $self->_writeCentralDirectoryOffset(); } foreach my $member ( $self->members() ) { my $status = $member->_writeCentralDirectoryFileHeader($fh); return $status if $status != AZ_OK; $offset += $member->_centralDirectoryHeaderSize(); $self->{'writeEOCDOffset'} = $offset; } return $self->_writeEndOfCentralDirectory($fh); } sub read { my $self = shift; my $fileName = shift; return _error('No filename given') unless $fileName; my ( $status, $fh ) = _newFileHandle( $fileName, 'r' ); return _ioError("opening $fileName for read") unless $status; $status = $self->readFromFileHandle( $fh, $fileName ); return $status if $status != AZ_OK; $fh->close(); $self->{'fileName'} = $fileName; return AZ_OK; } sub readFromFileHandle { my $self = shift; my $fh = shift; my $fileName = shift; $fileName = $fh unless defined($fileName); return _error('No filehandle given') unless $fh; return _ioError('filehandle not open') unless $fh->opened(); _binmode($fh); $self->{'fileName'} = "$fh"; # TODO: how to support non-seekable zips? return _error('file not seekable') unless _isSeekable($fh); $fh->seek( 0, 0 ); # rewind the file my $status = $self->_findEndOfCentralDirectory($fh); return $status if $status != AZ_OK; my $eocdPosition = $fh->tell(); $status = $self->_readEndOfCentralDirectory($fh); return $status if $status != AZ_OK; $fh->seek( $eocdPosition - $self->centralDirectorySize(), IO::Seekable::SEEK_SET ) or return _ioError("Can't seek $fileName"); # Try to detect garbage at beginning of archives # This should be 0 $self->{'eocdOffset'} = $eocdPosition - $self->centralDirectorySize() # here - $self->centralDirectoryOffsetWRTStartingDiskNumber(); for ( ; ; ) { my $newMember = $self->ZIPMEMBERCLASS->_newFromZipFile( $fh, $fileName, $self->eocdOffset() ); my $signature; ( $status, $signature ) = _readSignature( $fh, $fileName ); return $status if $status != AZ_OK; last if $signature == END_OF_CENTRAL_DIRECTORY_SIGNATURE; $status = $newMember->_readCentralDirectoryFileHeader(); return $status if $status != AZ_OK; $status = $newMember->endRead(); return $status if $status != AZ_OK; $newMember->_becomeDirectoryIfNecessary(); push( @{ $self->{'members'} }, $newMember ); } return AZ_OK; } # Read EOCD, starting from position before signature. # Return AZ_OK on success. sub _readEndOfCentralDirectory { my $self = shift; my $fh = shift; # Skip past signature $fh->seek( SIGNATURE_LENGTH, IO::Seekable::SEEK_CUR ) or return _ioError("Can't seek past EOCD signature"); my $header = ''; my $bytesRead = $fh->read( $header, END_OF_CENTRAL_DIRECTORY_LENGTH ); if ( $bytesRead != END_OF_CENTRAL_DIRECTORY_LENGTH ) { return _ioError("reading end of central directory"); } my $zipfileCommentLength; ( $self->{'diskNumber'}, $self->{'diskNumberWithStartOfCentralDirectory'}, $self->{'numberOfCentralDirectoriesOnThisDisk'}, $self->{'numberOfCentralDirectories'}, $self->{'centralDirectorySize'}, $self->{'centralDirectoryOffsetWRTStartingDiskNumber'}, $zipfileCommentLength ) = unpack( END_OF_CENTRAL_DIRECTORY_FORMAT, $header ); if ($zipfileCommentLength) { my $zipfileComment = ''; $bytesRead = $fh->read( $zipfileComment, $zipfileCommentLength ); if ( $bytesRead != $zipfileCommentLength ) { return _ioError("reading zipfile comment"); } $self->{'zipfileComment'} = $zipfileComment; } return AZ_OK; } # Seek in my file to the end, then read backwards until we find the # signature of the central directory record. Leave the file positioned right # before the signature. Returns AZ_OK if success. sub _findEndOfCentralDirectory { my $self = shift; my $fh = shift; my $data = ''; $fh->seek( 0, IO::Seekable::SEEK_END ) or return _ioError("seeking to end"); my $fileLength = $fh->tell(); if ( $fileLength < END_OF_CENTRAL_DIRECTORY_LENGTH + 4 ) { return _formatError("file is too short"); } my $seekOffset = 0; my $pos = -1; for ( ; ; ) { $seekOffset += 512; $seekOffset = $fileLength if ( $seekOffset > $fileLength ); $fh->seek( -$seekOffset, IO::Seekable::SEEK_END ) or return _ioError("seek failed"); my $bytesRead = $fh->read( $data, $seekOffset ); if ( $bytesRead != $seekOffset ) { return _ioError("read failed"); } $pos = rindex( $data, END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING ); last if ( $pos >= 0 or $seekOffset == $fileLength or $seekOffset >= $Archive::Zip::ChunkSize ); } if ( $pos >= 0 ) { $fh->seek( $pos - $seekOffset, IO::Seekable::SEEK_CUR ) or return _ioError("seeking to EOCD"); return AZ_OK; } else { return _formatError("can't find EOCD signature"); } } # Used to avoid taint problems when chdir'ing. # Not intended to increase security in any way; just intended to shut up the -T # complaints. If your Cwd module is giving you unreliable returns from cwd() # you have bigger problems than this. sub _untaintDir { my $dir = shift; $dir =~ m/\A(.+)\z/s; return $1; } sub addTree { my $self = shift; my $root = shift or return _error("root arg missing in call to addTree()"); my $dest = shift; $dest = '' unless defined($dest); my $pred = shift || sub { -r }; my @files; my $startDir = _untaintDir( cwd() ); return _error( 'undef returned by _untaintDir on cwd ', cwd() ) unless $startDir; # This avoids chdir'ing in Find, in a way compatible with older # versions of File::Find. my $wanted = sub { local $main::_ = $File::Find::name; my $dir = _untaintDir($File::Find::dir); chdir($startDir); push( @files, $File::Find::name ) if (&$pred); chdir($dir); }; File::Find::find( $wanted, $root ); my $rootZipName = _asZipDirName( $root, 1 ); # with trailing slash my $pattern = $rootZipName eq './' ? '^' : "^\Q$rootZipName\E"; $dest = _asZipDirName( $dest, 1 ); # with trailing slash foreach my $fileName (@files) { my $isDir = -d $fileName; # normalize, remove leading ./ my $archiveName = _asZipDirName( $fileName, $isDir ); if ( $archiveName eq $rootZipName ) { $archiveName = $dest } else { $archiveName =~ s{$pattern}{$dest} } next if $archiveName =~ m{^\.?/?$}; # skip current dir my $member = $isDir ? $self->addDirectory( $fileName, $archiveName ) : $self->addFile( $fileName, $archiveName ); return _error("add $fileName failed in addTree()") if !$member; } return AZ_OK; } sub addTreeMatching { my $self = shift; my $root = shift or return _error("root arg missing in call to addTreeMatching()"); my $dest = shift; $dest = '' unless defined($dest); my $pattern = shift or return _error("pattern missing in call to addTreeMatching()"); my $pred = shift; my $matcher = $pred ? sub { m{$pattern} && &$pred } : sub { m{$pattern} && -r }; return $self->addTree( $root, $dest, $matcher ); } # $zip->extractTree( $root, $dest [, $volume] ); # # $root and $dest are Unix-style. # $volume is in local FS format. # sub extractTree { my $self = shift; my $root = shift; # Zip format $root = '' unless defined($root); my $dest = shift; # Zip format $dest = './' unless defined($dest); my $volume = shift; # optional my $pattern = "^\Q$root"; my @members = $self->membersMatching($pattern); foreach my $member (@members) { my $fileName = $member->fileName(); # in Unix format $fileName =~ s{$pattern}{$dest}; # in Unix format # convert to platform format: $fileName = Archive::Zip::_asLocalName( $fileName, $volume ); my $status = $member->extractToFileNamed($fileName); return $status if $status != AZ_OK; } return AZ_OK; } # $zip->updateMember( $memberOrName, $fileName ); # Returns (possibly updated) member, if any; undef on errors. sub updateMember { my $self = shift; my $oldMember = shift; my $fileName = shift; if ( !defined($fileName) ) { _error("updateMember(): missing fileName argument"); return undef; } my @newStat = stat($fileName); if ( !@newStat ) { _ioError("Can't stat $fileName"); return undef; } my $isDir = -d _; my $memberName; if ( ref($oldMember) ) { $memberName = $oldMember->fileName(); } else { $oldMember = $self->memberNamed( $memberName = $oldMember ) || $self->memberNamed( $memberName = _asZipDirName( $oldMember, $isDir ) ); } unless ( defined($oldMember) && $oldMember->lastModTime() == $newStat[9] && $oldMember->isDirectory() == $isDir && ( $isDir || ( $oldMember->uncompressedSize() == $newStat[7] ) ) ) { # create the new member my $newMember = $isDir ? $self->ZIPMEMBERCLASS->newDirectoryNamed( $fileName, $memberName ) : $self->ZIPMEMBERCLASS->newFromFile( $fileName, $memberName ); unless ( defined($newMember) ) { _error("creation of member $fileName failed in updateMember()"); return undef; } # replace old member or append new one if ( defined($oldMember) ) { $self->replaceMember( $oldMember, $newMember ); } else { $self->addMember($newMember); } return $newMember; } return $oldMember; } # $zip->updateTree( $root, [ $dest, [ $pred [, $mirror]]] ); # # This takes the same arguments as addTree, but first checks to see # whether the file or directory already exists in the zip file. # # If the fourth argument $mirror is true, then delete all my members # if corresponding files weren't found. sub updateTree { my $self = shift; my $root = shift or return _error("root arg missing in call to updateTree()"); my $dest = shift; $dest = '' unless defined($dest); $dest = _asZipDirName( $dest, 1 ); my $pred = shift || sub { -r }; my $mirror = shift; my $rootZipName = _asZipDirName( $root, 1 ); # with trailing slash my $pattern = $rootZipName eq './' ? '^' : "^\Q$rootZipName\E"; my @files; my $startDir = _untaintDir( cwd() ); return _error( 'undef returned by _untaintDir on cwd ', cwd() ) unless $startDir; # This avoids chdir'ing in Find, in a way compatible with older # versions of File::Find. my $wanted = sub { local $main::_ = $File::Find::name; my $dir = _untaintDir($File::Find::dir); chdir($startDir); push( @files, $File::Find::name ) if (&$pred); chdir($dir); }; File::Find::find( $wanted, $root ); # Now @files has all the files that I could potentially be adding to # the zip. Only add the ones that are necessary. # For each file (updated or not), add its member name to @done. my %done; foreach my $fileName (@files) { my @newStat = stat($fileName); my $isDir = -d _; # normalize, remove leading ./ my $memberName = _asZipDirName( $fileName, $isDir ); if ( $memberName eq $rootZipName ) { $memberName = $dest } else { $memberName =~ s{$pattern}{$dest} } next if $memberName =~ m{^\.?/?$}; # skip current dir $done{$memberName} = 1; my $changedMember = $self->updateMember( $memberName, $fileName ); return _error("updateTree failed to update $fileName") unless ref($changedMember); } # @done now has the archive names corresponding to all the found files. # If we're mirroring, delete all those members that aren't in @done. if ($mirror) { foreach my $member ( $self->members() ) { $self->removeMember($member) unless $done{ $member->fileName() }; } } return AZ_OK; } 1; FILE'ee055d92/Archive/Zip/DirectoryMember.pm#line 1 "/usr/local/share/perl/5.8.8/Archive/Zip/DirectoryMember.pm" package Archive::Zip::DirectoryMember; use strict; use File::Path; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.26'; @ISA = qw( Archive::Zip::Member ); } use Archive::Zip qw( :ERROR_CODES :UTILITY_METHODS ); sub _newNamed { my $class = shift; my $fileName = shift; # FS name my $newName = shift; # Zip name $newName = _asZipDirName($fileName) unless $newName; my $self = $class->new(@_); $self->{'externalFileName'} = $fileName; $self->fileName($newName); if ( -e $fileName ) { # -e does NOT do a full stat, so we need to do one now if ( -d _ ) { my @stat = stat(_); $self->unixFileAttributes( $stat[2] ); my $mod_t = $stat[9]; if ( $^O eq 'MSWin32' and !$mod_t ) { $mod_t = time(); } $self->setLastModFileDateTimeFromUnix($mod_t); } else { # hmm.. trying to add a non-directory? _error( $fileName, ' exists but is not a directory' ); return undef; } } else { $self->unixFileAttributes( $self->DEFAULT_DIRECTORY_PERMISSIONS ); $self->setLastModFileDateTimeFromUnix( time() ); } return $self; } sub externalFileName { shift->{'externalFileName'}; } sub isDirectory { return 1; } sub extractToFileNamed { my $self = shift; my $name = shift; # local FS name my $attribs = $self->unixFileAttributes() & 07777; mkpath( $name, 0, $attribs ); # croaks on error utime( $self->lastModTime(), $self->lastModTime(), $name ); return AZ_OK; } sub fileName { my $self = shift; my $newName = shift; $newName =~ s{/?$}{/} if defined($newName); return $self->SUPER::fileName($newName); } # So people don't get too confused. This way it looks like the problem # is in their code... sub contents { return wantarray ? ( undef, AZ_OK ) : undef; } 1; FILE"18be2ae6/Archive/Zip/FileMember.pm#line 1 "/usr/local/share/perl/5.8.8/Archive/Zip/FileMember.pm" package Archive::Zip::FileMember; use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.26'; @ISA = qw ( Archive::Zip::Member ); } use Archive::Zip qw( :UTILITY_METHODS ); sub externalFileName { shift->{'externalFileName'}; } # Return true if I depend on the named file sub _usesFileNamed { my $self = shift; my $fileName = shift; my $xfn = $self->externalFileName(); return undef if ref($xfn); return $xfn eq $fileName; } sub fh { my $self = shift; $self->_openFile() if !defined( $self->{'fh'} ) || !$self->{'fh'}->opened(); return $self->{'fh'}; } # opens my file handle from my file name sub _openFile { my $self = shift; my ( $status, $fh ) = _newFileHandle( $self->externalFileName(), 'r' ); if ( !$status ) { _ioError( "Can't open", $self->externalFileName() ); return undef; } $self->{'fh'} = $fh; _binmode($fh); return $fh; } # Make sure I close my file handle sub endRead { my $self = shift; undef $self->{'fh'}; # _closeFile(); return $self->SUPER::endRead(@_); } sub _become { my $self = shift; my $newClass = shift; return $self if ref($self) eq $newClass; delete( $self->{'externalFileName'} ); delete( $self->{'fh'} ); return $self->SUPER::_become($newClass); } 1; FILEd9c6ee32/Archive/Zip/Member.pmpC#line 1 "/usr/local/share/perl/5.8.8/Archive/Zip/Member.pm" package Archive::Zip::Member; # A generic membet of an archive use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.26'; @ISA = qw( Archive::Zip ); } use Archive::Zip qw( :CONSTANTS :MISC_CONSTANTS :ERROR_CODES :PKZIP_CONSTANTS :UTILITY_METHODS ); use Time::Local (); use Compress::Zlib qw( Z_OK Z_STREAM_END MAX_WBITS ); use File::Path; use File::Basename; use constant ZIPFILEMEMBERCLASS => 'Archive::Zip::ZipFileMember'; use constant NEWFILEMEMBERCLASS => 'Archive::Zip::NewFileMember'; use constant STRINGMEMBERCLASS => 'Archive::Zip::StringMember'; use constant DIRECTORYMEMBERCLASS => 'Archive::Zip::DirectoryMember'; # Unix perms for default creation of files/dirs. use constant DEFAULT_DIRECTORY_PERMISSIONS => 040755; use constant DEFAULT_FILE_PERMISSIONS => 0100666; use constant DIRECTORY_ATTRIB => 040000; use constant FILE_ATTRIB => 0100000; # Returns self if successful, else undef # Assumes that fh is positioned at beginning of central directory file header. # Leaves fh positioned immediately after file header or EOCD signature. sub _newFromZipFile { my $class = shift; my $self = $class->ZIPFILEMEMBERCLASS->_newFromZipFile(@_); return $self; } sub newFromString { my $class = shift; my $self = $class->STRINGMEMBERCLASS->_newFromString(@_); return $self; } sub newFromFile { my $class = shift; my $self = $class->NEWFILEMEMBERCLASS->_newFromFileNamed(@_); return $self; } sub newDirectoryNamed { my $class = shift; my $self = $class->DIRECTORYMEMBERCLASS->_newNamed(@_); return $self; } sub new { my $class = shift; my $self = { 'lastModFileDateTime' => 0, 'fileAttributeFormat' => FA_UNIX, 'versionMadeBy' => 20, 'versionNeededToExtract' => 20, 'bitFlag' => 0, 'compressionMethod' => COMPRESSION_STORED, 'desiredCompressionMethod' => COMPRESSION_STORED, 'desiredCompressionLevel' => COMPRESSION_LEVEL_NONE, 'internalFileAttributes' => 0, 'externalFileAttributes' => 0, # set later 'fileName' => '', 'cdExtraField' => '', 'localExtraField' => '', 'fileComment' => '', 'crc32' => 0, 'compressedSize' => 0, 'uncompressedSize' => 0, @_ }; bless( $self, $class ); $self->unixFileAttributes( $self->DEFAULT_FILE_PERMISSIONS ); return $self; } sub _becomeDirectoryIfNecessary { my $self = shift; $self->_become(DIRECTORYMEMBERCLASS) if $self->isDirectory(); return $self; } # Morph into given class (do whatever cleanup I need to do) sub _become { return bless( $_[0], $_[1] ); } sub versionMadeBy { shift->{'versionMadeBy'}; } sub fileAttributeFormat { ( $#_ > 0 ) ? ( $_[0]->{'fileAttributeFormat'} = $_[1] ) : $_[0]->{'fileAttributeFormat'}; } sub versionNeededToExtract { shift->{'versionNeededToExtract'}; } sub bitFlag { shift->{'bitFlag'}; } sub compressionMethod { shift->{'compressionMethod'}; } sub desiredCompressionMethod { my $self = shift; my $newDesiredCompressionMethod = shift; my $oldDesiredCompressionMethod = $self->{'desiredCompressionMethod'}; if ( defined($newDesiredCompressionMethod) ) { $self->{'desiredCompressionMethod'} = $newDesiredCompressionMethod; if ( $newDesiredCompressionMethod == COMPRESSION_STORED ) { $self->{'desiredCompressionLevel'} = 0; $self->{'bitFlag'} &= ~GPBF_HAS_DATA_DESCRIPTOR_MASK; } elsif ( $oldDesiredCompressionMethod == COMPRESSION_STORED ) { $self->{'desiredCompressionLevel'} = COMPRESSION_LEVEL_DEFAULT; } } return $oldDesiredCompressionMethod; } sub desiredCompressionLevel { my $self = shift; my $newDesiredCompressionLevel = shift; my $oldDesiredCompressionLevel = $self->{'desiredCompressionLevel'}; if ( defined($newDesiredCompressionLevel) ) { $self->{'desiredCompressionLevel'} = $newDesiredCompressionLevel; $self->{'desiredCompressionMethod'} = ( $newDesiredCompressionLevel ? COMPRESSION_DEFLATED : COMPRESSION_STORED ); } return $oldDesiredCompressionLevel; } sub fileName { my $self = shift; my $newName = shift; if ($newName) { $newName =~ s{[\\/]+}{/}g; # deal with dos/windoze problems $self->{'fileName'} = $newName; } return $self->{'fileName'}; } sub lastModFileDateTime { my $modTime = shift->{'lastModFileDateTime'}; $modTime =~ m/^(\d+)$/; # untaint return $1; } sub lastModTime { my $self = shift; return _dosToUnixTime( $self->lastModFileDateTime() ); } sub setLastModFileDateTimeFromUnix { my $self = shift; my $time_t = shift; $self->{'lastModFileDateTime'} = _unixToDosTime($time_t); } sub internalFileAttributes { shift->{'internalFileAttributes'}; } sub externalFileAttributes { shift->{'externalFileAttributes'}; } # Convert UNIX permissions into proper value for zip file # Usable as a function or a method sub _mapPermissionsFromUnix { my $self = shift; my $mode = shift; my $attribs = $mode << 16; # Microsoft Windows Explorer needs this bit set for directories if ( $mode & DIRECTORY_ATTRIB ) { $attribs |= 16; } return $attribs; # TODO: map more MS-DOS perms } # Convert ZIP permissions into Unix ones # # This was taken from Info-ZIP group's portable UnZip # zipfile-extraction program, version 5.50. # http://www.info-zip.org/pub/infozip/ # # See the mapattr() function in unix/unix.c # See the attribute format constants in unzpriv.h # # XXX Note that there's one situation that isn't implemented # yet that depends on the "extra field." sub _mapPermissionsToUnix { my $self = shift; my $format = $self->{'fileAttributeFormat'}; my $attribs = $self->{'externalFileAttributes'}; my $mode = 0; if ( $format == FA_AMIGA ) { $attribs = $attribs >> 17 & 7; # Amiga RWE bits $mode = $attribs << 6 | $attribs << 3 | $attribs; return $mode; } if ( $format == FA_THEOS ) { $attribs &= 0xF1FFFFFF; if ( ( $attribs & 0xF0000000 ) != 0x40000000 ) { $attribs &= 0x01FFFFFF; # not a dir, mask all ftype bits } else { $attribs &= 0x41FFFFFF; # leave directory bit as set } } if ( $format == FA_UNIX || $format == FA_VAX_VMS || $format == FA_ACORN || $format == FA_ATARI_ST || $format == FA_BEOS || $format == FA_QDOS || $format == FA_TANDEM ) { $mode = $attribs >> 16; return $mode if $mode != 0 or not $self->localExtraField; # warn("local extra field is: ", $self->localExtraField, "\n"); # XXX This condition is not implemented # I'm just including the comments from the info-zip section for now. # Some (non-Info-ZIP) implementations of Zip for Unix and # VMS (and probably others ??) leave 0 in the upper 16-bit # part of the external_file_attributes field. Instead, they # store file permission attributes in some extra field. # As a work-around, we search for the presence of one of # these extra fields and fall back to the MSDOS compatible # part of external_file_attributes if one of the known # e.f. types has been detected. # Later, we might implement extraction of the permission # bits from the VMS extra field. But for now, the work-around # should be sufficient to provide "readable" extracted files. # (For ASI Unix e.f., an experimental remap from the e.f. # mode value IS already provided!) } # PKWARE's PKZip for Unix marks entries as FA_MSDOS, but stores the # Unix attributes in the upper 16 bits of the external attributes # field, just like Info-ZIP's Zip for Unix. We try to use that # value, after a check for consistency with the MSDOS attribute # bits (see below). if ( $format == FA_MSDOS ) { $mode = $attribs >> 16; } # FA_MSDOS, FA_OS2_HPFS, FA_WINDOWS_NTFS, FA_MACINTOSH, FA_TOPS20 $attribs = !( $attribs & 1 ) << 1 | ( $attribs & 0x10 ) >> 4; # keep previous $mode setting when its "owner" # part appears to be consistent with DOS attribute flags! return $mode if ( $mode & 0700 ) == ( 0400 | $attribs << 6 ); $mode = 0444 | $attribs << 6 | $attribs << 3 | $attribs; return $mode; } sub unixFileAttributes { my $self = shift; my $oldPerms = $self->_mapPermissionsToUnix; if ( @_ ) { my $perms = shift; if ( $self->isDirectory ) { $perms &= ~FILE_ATTRIB; $perms |= DIRECTORY_ATTRIB; } else { $perms &= ~DIRECTORY_ATTRIB; $perms |= FILE_ATTRIB; } $self->{externalFileAttributes} = $self->_mapPermissionsFromUnix($perms); } return $oldPerms; } sub localExtraField { ( $#_ > 0 ) ? ( $_[0]->{'localExtraField'} = $_[1] ) : $_[0]->{'localExtraField'}; } sub cdExtraField { ( $#_ > 0 ) ? ( $_[0]->{'cdExtraField'} = $_[1] ) : $_[0]->{'cdExtraField'}; } sub extraFields { my $self = shift; return $self->localExtraField() . $self->cdExtraField(); } sub fileComment { ( $#_ > 0 ) ? ( $_[0]->{'fileComment'} = pack( 'C0a*', $_[1] ) ) : $_[0]->{'fileComment'}; } sub hasDataDescriptor { my $self = shift; if (@_) { my $shouldHave = shift; if ($shouldHave) { $self->{'bitFlag'} |= GPBF_HAS_DATA_DESCRIPTOR_MASK; } else { $self->{'bitFlag'} &= ~GPBF_HAS_DATA_DESCRIPTOR_MASK; } } return $self->{'bitFlag'} & GPBF_HAS_DATA_DESCRIPTOR_MASK; } sub crc32 { shift->{'crc32'}; } sub crc32String { sprintf( "%08x", shift->{'crc32'} ); } sub compressedSize { shift->{'compressedSize'}; } sub uncompressedSize { shift->{'uncompressedSize'}; } sub isEncrypted { shift->bitFlag() & GPBF_ENCRYPTED_MASK; } sub isTextFile { my $self = shift; my $bit = $self->internalFileAttributes() & IFA_TEXT_FILE_MASK; if (@_) { my $flag = shift; $self->{'internalFileAttributes'} &= ~IFA_TEXT_FILE_MASK; $self->{'internalFileAttributes'} |= ( $flag ? IFA_TEXT_FILE: IFA_BINARY_FILE ); } return $bit == IFA_TEXT_FILE; } sub isBinaryFile { my $self = shift; my $bit = $self->internalFileAttributes() & IFA_TEXT_FILE_MASK; if (@_) { my $flag = shift; $self->{'internalFileAttributes'} &= ~IFA_TEXT_FILE_MASK; $self->{'internalFileAttributes'} |= ( $flag ? IFA_BINARY_FILE: IFA_TEXT_FILE ); } return $bit == IFA_BINARY_FILE; } sub extractToFileNamed { my $self = shift; my $name = shift; # local FS name return _error("encryption unsupported") if $self->isEncrypted(); mkpath( dirname($name) ); # croaks on error my ( $status, $fh ) = _newFileHandle( $name, 'w' ); return _ioError("Can't open file $name for write") unless $status; my $retval = $self->extractToFileHandle($fh); $fh->close(); chmod ($self->unixFileAttributes(), $name) or return _error("Can't chmod() ${name}: $!"); utime( $self->lastModTime(), $self->lastModTime(), $name ); return $retval; } sub isDirectory { return 0; } sub externalFileName { return undef; } # The following are used when copying data sub _writeOffset { shift->{'writeOffset'}; } sub _readOffset { shift->{'readOffset'}; } sub writeLocalHeaderRelativeOffset { shift->{'writeLocalHeaderRelativeOffset'}; } sub wasWritten { shift->{'wasWritten'} } sub _dataEnded { shift->{'dataEnded'}; } sub _readDataRemaining { shift->{'readDataRemaining'}; } sub _inflater { shift->{'inflater'}; } sub _deflater { shift->{'deflater'}; } # Return the total size of my local header sub _localHeaderSize { my $self = shift; return SIGNATURE_LENGTH + LOCAL_FILE_HEADER_LENGTH + length( $self->fileName() ) + length( $self->localExtraField() ); } # Return the total size of my CD header sub _centralDirectoryHeaderSize { my $self = shift; return SIGNATURE_LENGTH + CENTRAL_DIRECTORY_FILE_HEADER_LENGTH + length( $self->fileName() ) + length( $self->cdExtraField() ) + length( $self->fileComment() ); } # DOS date/time format # 0-4 (5) Second divided by 2 # 5-10 (6) Minute (0-59) # 11-15 (5) Hour (0-23 on a 24-hour clock) # 16-20 (5) Day of the month (1-31) # 21-24 (4) Month (1 = January, 2 = February, etc.) # 25-31 (7) Year offset from 1980 (add 1980 to get actual year) # Convert DOS date/time format to unix time_t format # NOT AN OBJECT METHOD! sub _dosToUnixTime { my $dt = shift; return time() unless defined($dt); my $year = ( ( $dt >> 25 ) & 0x7f ) + 80; my $mon = ( ( $dt >> 21 ) & 0x0f ) - 1; my $mday = ( ( $dt >> 16 ) & 0x1f ); my $hour = ( ( $dt >> 11 ) & 0x1f ); my $min = ( ( $dt >> 5 ) & 0x3f ); my $sec = ( ( $dt << 1 ) & 0x3e ); # catch errors my $time_t = eval { Time::Local::timelocal( $sec, $min, $hour, $mday, $mon, $year ); }; return time() if ($@); return $time_t; } # Note, this isn't exactly UTC 1980, it's 1980 + 12 hours and 1 # minute so that nothing timezoney can muck us up. my $safe_epoch = 315576060; # convert a unix time to DOS date/time # NOT AN OBJECT METHOD! sub _unixToDosTime { my $time_t = shift; unless ($time_t) { _error("Tried to add member with zero or undef value for time"); $time_t = $safe_epoch; } if ( $time_t < $safe_epoch ) { _ioError("Unsupported date before 1980 encountered, moving to 1980"); $time_t = $safe_epoch; } my ( $sec, $min, $hour, $mday, $mon, $year ) = localtime($time_t); my $dt = 0; $dt += ( $sec >> 1 ); $dt += ( $min << 5 ); $dt += ( $hour << 11 ); $dt += ( $mday << 16 ); $dt += ( ( $mon + 1 ) << 21 ); $dt += ( ( $year - 80 ) << 25 ); return $dt; } # Write my local header to a file handle. # Stores the offset to the start of the header in my # writeLocalHeaderRelativeOffset member. # Returns AZ_OK on success. sub _writeLocalFileHeader { my $self = shift; my $fh = shift; my $signatureData = pack( SIGNATURE_FORMAT, LOCAL_FILE_HEADER_SIGNATURE ); $self->_print($fh, $signatureData) or return _ioError("writing local header signature"); my $header = pack( LOCAL_FILE_HEADER_FORMAT, $self->versionNeededToExtract(), $self->bitFlag(), $self->desiredCompressionMethod(), $self->lastModFileDateTime(), $self->crc32(), $self->compressedSize(), # may need to be re-written later $self->uncompressedSize(), length( $self->fileName() ), length( $self->localExtraField() ) ); $self->_print($fh, $header) or return _ioError("writing local header"); if ( $self->fileName() ) { $self->_print($fh, $self->fileName() ) or return _ioError("writing local header filename"); } if ( $self->localExtraField() ) { $self->_print($fh, $self->localExtraField() ) or return _ioError("writing local extra field"); } return AZ_OK; } sub _writeCentralDirectoryFileHeader { my $self = shift; my $fh = shift; my $sigData = pack( SIGNATURE_FORMAT, CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE ); $self->_print($fh, $sigData) or return _ioError("writing central directory header signature"); my $fileNameLength = length( $self->fileName() ); my $extraFieldLength = length( $self->cdExtraField() ); my $fileCommentLength = length( $self->fileComment() ); my $header = pack( CENTRAL_DIRECTORY_FILE_HEADER_FORMAT, $self->versionMadeBy(), $self->fileAttributeFormat(), $self->versionNeededToExtract(), $self->bitFlag(), $self->desiredCompressionMethod(), $self->lastModFileDateTime(), $self->crc32(), # these three fields should have been updated $self->_writeOffset(), # by writing the data stream out $self->uncompressedSize(), # $fileNameLength, $extraFieldLength, $fileCommentLength, 0, # {'diskNumberStart'}, $self->internalFileAttributes(), $self->externalFileAttributes(), $self->writeLocalHeaderRelativeOffset() ); $self->_print($fh, $header) or return _ioError("writing central directory header"); if ($fileNameLength) { $self->_print($fh, $self->fileName() ) or return _ioError("writing central directory header signature"); } if ($extraFieldLength) { $self->_print($fh, $self->cdExtraField() ) or return _ioError("writing central directory extra field"); } if ($fileCommentLength) { $self->_print($fh, $self->fileComment() ) or return _ioError("writing central directory file comment"); } return AZ_OK; } # This writes a data descriptor to the given file handle. # Assumes that crc32, writeOffset, and uncompressedSize are # set correctly (they should be after a write). # Further, the local file header should have the # GPBF_HAS_DATA_DESCRIPTOR_MASK bit set. sub _writeDataDescriptor { my $self = shift; my $fh = shift; my $header = pack( SIGNATURE_FORMAT . DATA_DESCRIPTOR_FORMAT, DATA_DESCRIPTOR_SIGNATURE, $self->crc32(), $self->_writeOffset(), # compressed size $self->uncompressedSize() ); $self->_print($fh, $header) or return _ioError("writing data descriptor"); return AZ_OK; } # Re-writes the local file header with new crc32 and compressedSize fields. # To be called after writing the data stream. # Assumes that filename and extraField sizes didn't change since last written. sub _refreshLocalFileHeader { my $self = shift; my $fh = shift; my $here = $fh->tell(); $fh->seek( $self->writeLocalHeaderRelativeOffset() + SIGNATURE_LENGTH, IO::Seekable::SEEK_SET ) or return _ioError("seeking to rewrite local header"); my $header = pack( LOCAL_FILE_HEADER_FORMAT, $self->versionNeededToExtract(), $self->bitFlag(), $self->desiredCompressionMethod(), $self->lastModFileDateTime(), $self->crc32(), $self->_writeOffset(), # compressed size $self->uncompressedSize(), length( $self->fileName() ), length( $self->localExtraField() ) ); $self->_print($fh, $header) or return _ioError("re-writing local header"); $fh->seek( $here, IO::Seekable::SEEK_SET ) or return _ioError("seeking after rewrite of local header"); return AZ_OK; } sub readChunk { my ( $self, $chunkSize ) = @_; if ( $self->readIsDone() ) { $self->endRead(); my $dummy = ''; return ( \$dummy, AZ_STREAM_END ); } $chunkSize = $Archive::Zip::ChunkSize if not defined($chunkSize); $chunkSize = $self->_readDataRemaining() if $chunkSize > $self->_readDataRemaining(); my $buffer = ''; my $outputRef; my ( $bytesRead, $status ) = $self->_readRawChunk( \$buffer, $chunkSize ); return ( \$buffer, $status ) unless $status == AZ_OK; $self->{'readDataRemaining'} -= $bytesRead; $self->{'readOffset'} += $bytesRead; if ( $self->compressionMethod() == COMPRESSION_STORED ) { $self->{'crc32'} = $self->computeCRC32( $buffer, $self->{'crc32'} ); } ( $outputRef, $status ) = &{ $self->{'chunkHandler'} }( $self, \$buffer ); $self->{'writeOffset'} += length($$outputRef); $self->endRead() if $self->readIsDone(); return ( $outputRef, $status ); } # Read the next raw chunk of my data. Subclasses MUST implement. # my ( $bytesRead, $status) = $self->_readRawChunk( \$buffer, $chunkSize ); sub _readRawChunk { my $self = shift; return $self->_subclassResponsibility(); } # A place holder to catch rewindData errors if someone ignores # the error code. sub _noChunk { my $self = shift; return ( \undef, _error("trying to copy chunk when init failed") ); } # Basically a no-op so that I can have a consistent interface. # ( $outputRef, $status) = $self->_copyChunk( \$buffer ); sub _copyChunk { my ( $self, $dataRef ) = @_; return ( $dataRef, AZ_OK ); } # ( $outputRef, $status) = $self->_deflateChunk( \$buffer ); sub _deflateChunk { my ( $self, $buffer ) = @_; my ( $out, $status ) = $self->_deflater()->deflate($buffer); if ( $self->_readDataRemaining() == 0 ) { my $extraOutput; ( $extraOutput, $status ) = $self->_deflater()->flush(); $out .= $extraOutput; $self->endRead(); return ( \$out, AZ_STREAM_END ); } elsif ( $status == Z_OK ) { return ( \$out, AZ_OK ); } else { $self->endRead(); my $retval = _error( 'deflate error', $status ); my $dummy = ''; return ( \$dummy, $retval ); } } # ( $outputRef, $status) = $self->_inflateChunk( \$buffer ); sub _inflateChunk { my ( $self, $buffer ) = @_; my ( $out, $status ) = $self->_inflater()->inflate($buffer); my $retval; $self->endRead() unless $status == Z_OK; if ( $status == Z_OK || $status == Z_STREAM_END ) { $retval = ( $status == Z_STREAM_END ) ? AZ_STREAM_END: AZ_OK; return ( \$out, $retval ); } else { $retval = _error( 'inflate error', $status ); my $dummy = ''; return ( \$dummy, $retval ); } } sub rewindData { my $self = shift; my $status; # set to trap init errors $self->{'chunkHandler'} = $self->can('_noChunk'); # Work around WinZip bug with 0-length DEFLATED files $self->desiredCompressionMethod(COMPRESSION_STORED) if $self->uncompressedSize() == 0; # assume that we're going to read the whole file, and compute the CRC anew. $self->{'crc32'} = 0 if ( $self->compressionMethod() == COMPRESSION_STORED ); # These are the only combinations of methods we deal with right now. if ( $self->compressionMethod() == COMPRESSION_STORED and $self->desiredCompressionMethod() == COMPRESSION_DEFLATED ) { ( $self->{'deflater'}, $status ) = Compress::Zlib::deflateInit( '-Level' => $self->desiredCompressionLevel(), '-WindowBits' => -MAX_WBITS(), # necessary magic '-Bufsize' => $Archive::Zip::ChunkSize, @_ ); # pass additional options return _error( 'deflateInit error:', $status ) unless $status == Z_OK; $self->{'chunkHandler'} = $self->can('_deflateChunk'); } elsif ( $self->compressionMethod() == COMPRESSION_DEFLATED and $self->desiredCompressionMethod() == COMPRESSION_STORED ) { ( $self->{'inflater'}, $status ) = Compress::Zlib::inflateInit( '-WindowBits' => -MAX_WBITS(), # necessary magic '-Bufsize' => $Archive::Zip::ChunkSize, @_ ); # pass additional options return _error( 'inflateInit error:', $status ) unless $status == Z_OK; $self->{'chunkHandler'} = $self->can('_inflateChunk'); } elsif ( $self->compressionMethod() == $self->desiredCompressionMethod() ) { $self->{'chunkHandler'} = $self->can('_copyChunk'); } else { return _error( sprintf( "Unsupported compression combination: read %d, write %d", $self->compressionMethod(), $self->desiredCompressionMethod() ) ); } $self->{'readDataRemaining'} = ( $self->compressionMethod() == COMPRESSION_STORED ) ? $self->uncompressedSize() : $self->compressedSize(); $self->{'dataEnded'} = 0; $self->{'readOffset'} = 0; return AZ_OK; } sub endRead { my $self = shift; delete $self->{'inflater'}; delete $self->{'deflater'}; $self->{'dataEnded'} = 1; $self->{'readDataRemaining'} = 0; return AZ_OK; } sub readIsDone { my $self = shift; return ( $self->_dataEnded() or !$self->_readDataRemaining() ); } sub contents { my $self = shift; my $newContents = shift; if ( defined($newContents) ) { # change our type and call the subclass contents method. $self->_become(STRINGMEMBERCLASS); return $self->contents( pack( 'C0a*', $newContents ) ) ; # in case of Unicode } else { my $oldCompression = $self->desiredCompressionMethod(COMPRESSION_STORED); my $status = $self->rewindData(@_); if ( $status != AZ_OK ) { $self->endRead(); return $status; } my $retval = ''; while ( $status == AZ_OK ) { my $ref; ( $ref, $status ) = $self->readChunk( $self->_readDataRemaining() ); # did we get it in one chunk? if ( length($$ref) == $self->uncompressedSize() ) { $retval = $$ref; } else { $retval .= $$ref } } $self->desiredCompressionMethod($oldCompression); $self->endRead(); $status = AZ_OK if $status == AZ_STREAM_END; $retval = undef unless $status == AZ_OK; return wantarray ? ( $retval, $status ) : $retval; } } sub extractToFileHandle { my $self = shift; return _error("encryption unsupported") if $self->isEncrypted(); my $fh = shift; _binmode($fh); my $oldCompression = $self->desiredCompressionMethod(COMPRESSION_STORED); my $status = $self->rewindData(@_); $status = $self->_writeData($fh) if $status == AZ_OK; $self->desiredCompressionMethod($oldCompression); $self->endRead(); return $status; } # write local header and data stream to file handle sub _writeToFileHandle { my $self = shift; my $fh = shift; my $fhIsSeekable = shift; my $offset = shift; return _error("no member name given for $self") unless $self->fileName(); $self->{'writeLocalHeaderRelativeOffset'} = $offset; $self->{'wasWritten'} = 0; # Determine if I need to write a data descriptor # I need to do this if I can't refresh the header # and I don't know compressed size or crc32 fields. my $headerFieldsUnknown = ( ( $self->uncompressedSize() > 0 ) and ($self->compressionMethod() == COMPRESSION_STORED or $self->desiredCompressionMethod() == COMPRESSION_DEFLATED ) ); my $shouldWriteDataDescriptor = ( $headerFieldsUnknown and not $fhIsSeekable ); $self->hasDataDescriptor(1) if ($shouldWriteDataDescriptor); $self->{'writeOffset'} = 0; my $status = $self->rewindData(); ( $status = $self->_writeLocalFileHeader($fh) ) if $status == AZ_OK; ( $status = $self->_writeData($fh) ) if $status == AZ_OK; if ( $status == AZ_OK ) { $self->{'wasWritten'} = 1; if ( $self->hasDataDescriptor() ) { $status = $self->_writeDataDescriptor($fh); } elsif ($headerFieldsUnknown) { $status = $self->_refreshLocalFileHeader($fh); } } return $status; } # Copy my (possibly compressed) data to given file handle. # Returns C on success sub _writeData { my $self = shift; my $writeFh = shift; return AZ_OK if ( $self->uncompressedSize() == 0 ); my $status; my $chunkSize = $Archive::Zip::ChunkSize; while ( $self->_readDataRemaining() > 0 ) { my $outRef; ( $outRef, $status ) = $self->readChunk($chunkSize); return $status if ( $status != AZ_OK and $status != AZ_STREAM_END ); if ( length($$outRef) > 0 ) { $self->_print($writeFh, $$outRef) or return _ioError("write error during copy"); } last if $status == AZ_STREAM_END; } $self->{'compressedSize'} = $self->_writeOffset(); return AZ_OK; } # Return true if I depend on the named file sub _usesFileNamed { return 0; } 1; FILE83d8a82b/overload.pm#line 1 "/usr/share/perl/5.8/overload.pm" package overload; our $VERSION = '1.04'; $overload::hint_bits = 0x20000; # HINT_LOCALIZE_HH sub nil {} sub OVERLOAD { $package = shift; my %arg = @_; my ($sub, $fb); $ {$package . "::OVERLOAD"}{dummy}++; # Register with magic by touching. *{$package . "::()"} = \&nil; # Make it findable via fetchmethod. for (keys %arg) { if ($_ eq 'fallback') { $fb = $arg{$_}; } else { $sub = $arg{$_}; if (not ref $sub and $sub !~ /::/) { $ {$package . "::(" . $_} = $sub; $sub = \&nil; } #print STDERR "Setting `$ {'package'}::\cO$_' to \\&`$sub'.\n"; *{$package . "::(" . $_} = \&{ $sub }; } } ${$package . "::()"} = $fb; # Make it findable too (fallback only). } sub import { $package = (caller())[0]; # *{$package . "::OVERLOAD"} = \&OVERLOAD; shift; $package->overload::OVERLOAD(@_); } sub unimport { $package = (caller())[0]; ${$package . "::OVERLOAD"}{dummy}++; # Upgrade the table shift; for (@_) { if ($_ eq 'fallback') { undef $ {$package . "::()"}; } else { delete $ {$package . "::"}{"(" . $_}; } } } sub Overloaded { my $package = shift; $package = ref $package if ref $package; $package->can('()'); } sub ov_method { my $globref = shift; return undef unless $globref; my $sub = \&{*$globref}; return $sub if $sub ne \&nil; return shift->can($ {*$globref}); } sub OverloadedStringify { my $package = shift; $package = ref $package if ref $package; #$package->can('(""') ov_method mycan($package, '(""'), $package or ov_method mycan($package, '(0+'), $package or ov_method mycan($package, '(bool'), $package or ov_method mycan($package, '(nomethod'), $package; } sub Method { my $package = shift; $package = ref $package if ref $package; #my $meth = $package->can('(' . shift); ov_method mycan($package, '(' . shift), $package; #return $meth if $meth ne \&nil; #return $ {*{$meth}}; } sub AddrRef { my $package = ref $_[0]; return "$_[0]" unless $package; require Scalar::Util; my $class = Scalar::Util::blessed($_[0]); my $class_prefix = defined($class) ? "$class=" : ""; my $type = Scalar::Util::reftype($_[0]); my $addr = Scalar::Util::refaddr($_[0]); return sprintf("$class_prefix$type(0x%x)", $addr); } *StrVal = *AddrRef; sub mycan { # Real can would leave stubs. my ($package, $meth) = @_; return \*{$package . "::$meth"} if defined &{$package . "::$meth"}; my $p; foreach $p (@{$package . "::ISA"}) { my $out = mycan($p, $meth); return $out if $out; } return undef; } %constants = ( 'integer' => 0x1000, # HINT_NEW_INTEGER 'float' => 0x2000, # HINT_NEW_FLOAT 'binary' => 0x4000, # HINT_NEW_BINARY 'q' => 0x8000, # HINT_NEW_STRING 'qr' => 0x10000, # HINT_NEW_RE ); %ops = ( with_assign => "+ - * / % ** << >> x .", assign => "+= -= *= /= %= **= <<= >>= x= .=", num_comparison => "< <= > >= == !=", '3way_comparison'=> "<=> cmp", str_comparison => "lt le gt ge eq ne", binary => "& | ^", unary => "neg ! ~", mutators => '++ --', func => "atan2 cos sin exp abs log sqrt int", conversion => 'bool "" 0+', iterators => '<>', dereferencing => '${} @{} %{} &{} *{}', special => 'nomethod fallback ='); use warnings::register; sub constant { # Arguments: what, sub while (@_) { if (@_ == 1) { warnings::warnif ("Odd number of arguments for overload::constant"); last; } elsif (!exists $constants {$_ [0]}) { warnings::warnif ("`$_[0]' is not an overloadable type"); } elsif (!ref $_ [1] || "$_[1]" !~ /CODE\(0x[\da-f]+\)$/) { # Can't use C above as code references can be # blessed, and C would return the package the ref is blessed into. if (warnings::enabled) { $_ [1] = "undef" unless defined $_ [1]; warnings::warn ("`$_[1]' is not a code reference"); } } else { $^H{$_[0]} = $_[1]; $^H |= $constants{$_[0]} | $overload::hint_bits; } shift, shift; } } sub remove_constant { # Arguments: what, sub while (@_) { delete $^H{$_[0]}; $^H &= ~ $constants{$_[0]}; shift, shift; } } 1; __END__ FILE5b7dc1eb/strict.pm#line 1 "/usr/share/perl/5.8/strict.pm" package strict; $strict::VERSION = "1.03"; my %bitmask = ( refs => 0x00000002, subs => 0x00000200, vars => 0x00000400 ); sub bits { my $bits = 0; my @wrong; foreach my $s (@_) { push @wrong, $s unless exists $bitmask{$s}; $bits |= $bitmask{$s} || 0; } if (@wrong) { require Carp; Carp::croak("Unknown 'strict' tag(s) '@wrong'"); } $bits; } my $default_bits = bits(qw(refs subs vars)); sub import { shift; $^H |= @_ ? bits(@_) : $default_bits; } sub unimport { shift; $^H &= ~ (@_ ? bits(@_) : $default_bits); } 1; __END__ FILE0cb7c55a/utf8.pm#line 1 "/usr/share/perl/5.8/utf8.pm" package utf8; $utf8::hint_bits = 0x00800000; our $VERSION = '1.06'; sub import { $^H |= $utf8::hint_bits; $enc{caller()} = $_[1] if $_[1]; } sub unimport { $^H &= ~$utf8::hint_bits; } sub AUTOLOAD { require "utf8_heavy.pl"; goto &$AUTOLOAD if defined &$AUTOLOAD; require Carp; Carp::croak("Undefined subroutine $AUTOLOAD called"); } 1; __END__ FILE88647770/vars.pm#line 1 "/usr/share/perl/5.8/vars.pm" package vars; use 5.006; our $VERSION = '1.01'; use warnings::register; use strict qw(vars subs); sub import { my $callpack = caller; my ($pack, @imports) = @_; my ($sym, $ch); foreach (@imports) { if (($ch, $sym) = /^([\$\@\%\*\&])(.+)/) { if ($sym =~ /\W/) { # time for a more-detailed check-up if ($sym =~ /^\w+[[{].*[]}]$/) { require Carp; Carp::croak("Can't declare individual elements of hash or array"); } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) { warnings::warn("No need to declare built-in vars"); } elsif (($^H &= strict::bits('vars'))) { require Carp; Carp::croak("'$_' is not a valid variable name under strict vars"); } } $sym = "${callpack}::$sym" unless $sym =~ /::/; *$sym = ( $ch eq "\$" ? \$$sym : $ch eq "\@" ? \@$sym : $ch eq "\%" ? \%$sym : $ch eq "\*" ? \*$sym : $ch eq "\&" ? \&$sym : do { require Carp; Carp::croak("'$_' is not a valid variable name"); }); } else { require Carp; Carp::croak("'$_' is not a valid variable name"); } } }; 1; __END__ FILE6ec48121/warnings.pm3#line 1 "/usr/share/perl/5.8/warnings.pm" # -*- buffer-read-only: t -*- # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! # This file was created by warnings.pl # Any changes made here will be lost. # package warnings; our $VERSION = '1.05'; use Carp (); our %Offsets = ( # Warnings Categories added in Perl 5.008 'all' => 0, 'closure' => 2, 'deprecated' => 4, 'exiting' => 6, 'glob' => 8, 'io' => 10, 'closed' => 12, 'exec' => 14, 'layer' => 16, 'newline' => 18, 'pipe' => 20, 'unopened' => 22, 'misc' => 24, 'numeric' => 26, 'once' => 28, 'overflow' => 30, 'pack' => 32, 'portable' => 34, 'recursion' => 36, 'redefine' => 38, 'regexp' => 40, 'severe' => 42, 'debugging' => 44, 'inplace' => 46, 'internal' => 48, 'malloc' => 50, 'signal' => 52, 'substr' => 54, 'syntax' => 56, 'ambiguous' => 58, 'bareword' => 60, 'digit' => 62, 'parenthesis' => 64, 'precedence' => 66, 'printf' => 68, 'prototype' => 70, 'qw' => 72, 'reserved' => 74, 'semicolon' => 76, 'taint' => 78, 'threads' => 80, 'uninitialized' => 82, 'unpack' => 84, 'untie' => 86, 'utf8' => 88, 'void' => 90, 'y2k' => 92, ); our %Bits = ( 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", # [0..46] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [30] 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6] 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1] 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [22] 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2] 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [31] 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [23] 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [24] 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11] 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [25] 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [12] 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [13] 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [14] 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [15] 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [16] 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [32] 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [17] 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [33] 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [34] 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [35] 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [36] 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [18] 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [19] 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [20] 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [37] 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [38] 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00", # [21..25] 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [26] 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [27] 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x00", # [28..38] 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [39] 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [40] 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [41] 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [42] 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [43] 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [44] 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [45] 'y2k' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [46] ); our %DeadBits = ( 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2a", # [0..46] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [30] 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6] 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1] 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [22] 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2] 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [31] 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [23] 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [24] 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11] 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [25] 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [12] 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [13] 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [14] 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [15] 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [16] 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [32] 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [17] 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [33] 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [34] 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [35] 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [36] 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [18] 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [19] 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [20] 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [37] 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [38] 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00", # [21..25] 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [26] 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [27] 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x00", # [28..38] 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [39] 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [40] 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [41] 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [42] 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [43] 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [44] 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [45] 'y2k' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [46] ); $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0"; $LAST_BIT = 94 ; $BYTES = 12 ; $All = "" ; vec($All, $Offsets{'all'}, 2) = 3 ; sub Croaker { local $Carp::CarpInternal{'warnings'}; delete $Carp::CarpInternal{'warnings'}; Carp::croak(@_); } sub bits { # called from B::Deparse.pm push @_, 'all' unless @_; my $mask; my $catmask ; my $fatal = 0 ; my $no_fatal = 0 ; foreach my $word ( @_ ) { if ($word eq 'FATAL') { $fatal = 1; $no_fatal = 0; } elsif ($word eq 'NONFATAL') { $fatal = 0; $no_fatal = 1; } elsif ($catmask = $Bits{$word}) { $mask |= $catmask ; $mask |= $DeadBits{$word} if $fatal ; $mask &= ~($DeadBits{$word}|$All) if $no_fatal ; } else { Croaker("Unknown warnings category '$word'")} } return $mask ; } sub import { shift; my $catmask ; my $fatal = 0 ; my $no_fatal = 0 ; my $mask = ${^WARNING_BITS} ; if (vec($mask, $Offsets{'all'}, 1)) { $mask |= $Bits{'all'} ; $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1); } push @_, 'all' unless @_; foreach my $word ( @_ ) { if ($word eq 'FATAL') { $fatal = 1; $no_fatal = 0; } elsif ($word eq 'NONFATAL') { $fatal = 0; $no_fatal = 1; } elsif ($catmask = $Bits{$word}) { $mask |= $catmask ; $mask |= $DeadBits{$word} if $fatal ; $mask &= ~($DeadBits{$word}|$All) if $no_fatal ; } else { Croaker("Unknown warnings category '$word'")} } ${^WARNING_BITS} = $mask ; } sub unimport { shift; my $catmask ; my $mask = ${^WARNING_BITS} ; if (vec($mask, $Offsets{'all'}, 1)) { $mask |= $Bits{'all'} ; $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1); } push @_, 'all' unless @_; foreach my $word ( @_ ) { if ($word eq 'FATAL') { next; } elsif ($catmask = $Bits{$word}) { $mask &= ~($catmask | $DeadBits{$word} | $All); } else { Croaker("Unknown warnings category '$word'")} } ${^WARNING_BITS} = $mask ; } my %builtin_type; @builtin_type{qw(SCALAR ARRAY HASH CODE REF GLOB LVALUE Regexp)} = (); sub __chk { my $category ; my $offset ; my $isobj = 0 ; if (@_) { # check the category supplied. $category = shift ; if (my $type = ref $category) { Croaker("not an object") if exists $builtin_type{$type}; $category = $type; $isobj = 1 ; } $offset = $Offsets{$category}; Croaker("Unknown warnings category '$category'") unless defined $offset; } else { $category = (caller(1))[0] ; $offset = $Offsets{$category}; Croaker("package '$category' not registered for warnings") unless defined $offset ; } my $this_pkg = (caller(1))[0] ; my $i = 2 ; my $pkg ; if ($isobj) { while (do { { package DB; $pkg = (caller($i++))[0] } } ) { last unless @DB::args && $DB::args[0] =~ /^$category=/ ; } $i -= 2 ; } else { for ($i = 2 ; $pkg = (caller($i))[0] ; ++ $i) { last if $pkg ne $this_pkg ; } $i = 2 if !$pkg || $pkg eq $this_pkg ; } my $callers_bitmask = (caller($i))[9] ; return ($callers_bitmask, $offset, $i) ; } sub enabled { Croaker("Usage: warnings::enabled([category])") unless @_ == 1 || @_ == 0 ; my ($callers_bitmask, $offset, $i) = __chk(@_) ; return 0 unless defined $callers_bitmask ; return vec($callers_bitmask, $offset, 1) || vec($callers_bitmask, $Offsets{'all'}, 1) ; } sub warn { Croaker("Usage: warnings::warn([category,] 'message')") unless @_ == 2 || @_ == 1 ; my $message = pop ; my ($callers_bitmask, $offset, $i) = __chk(@_) ; Carp::croak($message) if vec($callers_bitmask, $offset+1, 1) || vec($callers_bitmask, $Offsets{'all'}+1, 1) ; Carp::carp($message) ; } sub warnif { Croaker("Usage: warnings::warnif([category,] 'message')") unless @_ == 2 || @_ == 1 ; my $message = pop ; my ($callers_bitmask, $offset, $i) = __chk(@_) ; return unless defined $callers_bitmask && (vec($callers_bitmask, $offset, 1) || vec($callers_bitmask, $Offsets{'all'}, 1)) ; Carp::croak($message) if vec($callers_bitmask, $offset+1, 1) || vec($callers_bitmask, $Offsets{'all'}+1, 1) ; Carp::carp($message) ; } 1; # ex: set ro: FILEaaec672e/warnings/register.pm#line 1 "/usr/share/perl/5.8/warnings/register.pm" package warnings::register; our $VERSION = '1.01'; require warnings; sub mkMask { my ($bit) = @_; my $mask = ""; vec($mask, $bit, 1) = 1; return $mask; } sub import { shift; my $package = (caller(0))[0]; if (! defined $warnings::Bits{$package}) { $warnings::Bits{$package} = mkMask($warnings::LAST_BIT); vec($warnings::Bits{'all'}, $warnings::LAST_BIT, 1) = 1; $warnings::Offsets{$package} = $warnings::LAST_BIT ++; foreach my $k (keys %warnings::Bits) { vec($warnings::Bits{$k}, $warnings::LAST_BIT, 1) = 0; } $warnings::DeadBits{$package} = mkMask($warnings::LAST_BIT); vec($warnings::DeadBits{'all'}, $warnings::LAST_BIT++, 1) = 1; } } 1; FILE2bf7fde7/auto/Fcntl/Fcntl.so5ELF>@ @.@8@l+l+ p+p+ p+  ++ + Ptd***$$Qtd   (@ TU|CE.6bxqX ju  + C"J"'2]xW @ . . ? .   "__gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesboot_FcntlPerl_Tstack_sp_ptrPerl_Tmarkstack_ptr_ptrPerl_Tstack_base_ptrPerl_croakPerl_sv_2pv_flagsXS_Fcntl_constantPerl_newXSPerl_Isv_yes_ptrPerl_formPerl_get_svPerl_Top_ptrPerl_sv_newmortalPerl_newSVpvf_nocontextPerl_sv_2mortalPerl_Tcurpad_ptrPerl_Tstack_max_ptrPerl_Isv_undef_ptrPerl_sv_setivPerl_mg_setPerl_stack_growlibc.so.6_edata__bss_start_endGLIBC_2.2.5ui . . . + (- 0- 8- @- `- h- p- x- - -  -  -  -  -  - - - - - - - - - - H_eH5Z# %\# @%Z# h%R# h%J# h%B# h%:# h%2# h%*# h%"# hp%# h`%# h P% # h @%# h 0%" h %" h %" h%" h%" h%" h%" h%" hHH! HtHÐ=" UHu;H=! tH="  HHx" Ho" HHuh" fDUH= HtHk! HtH= IAÐH\$Hl$HLd$Ll$Lt$L|$HXvHL HHD*HHHL8AUHHcL4J0@HHHHHHD$ IcII)IAPHE1HI\HC t%HHH5HtvMHD$ HH iIHT$ H $H5H IH1H\$Ld$HH"1HH4HD$ 'H H rH5sHLHHHHHHHL0L3H\$(Hl$0Ld$8Ll$@Lt$HL|$PHXfD"1HH^HT$ H H5H11HHHHt@ L%HT$ H qH5rH1L%^N1HHHCHfL%JHH~HBIIHvHHcHH= LuָF2oHH AhhK U P P[@ @ Ha""g""o**$}**p+ p++ ++ ++ +(- (- H- H-. .. ..FILE596741b2/auto/List/Util/Util.soELF>'@؋@8@  (0   PtdQtdap.IgSa$5CF[eO/iYV@R`6G#^d\LXQmk7 %'ZMfDP94WU_H=EA8jJc1]N)K  bo (lh,-:*2;+>n"? B0&<T!3YD&KYZ]_aghjlo\.^qX@|`A(U*^Z"o!pc2CE옖w. x::^osB P"x GcAR % k+o0 ["'Gp 2ua"BU]0rdXIS7 h{{ @@ @7 P"A 9 `( K HM $ P5 : `ER <c B  fsF 3 p2N:  =j  9j @w 0u! pT?5 N__gmon_start___fini__cxa_finalize_Jv_RegisterClassesboot_List__UtilPerl_Gthr_key_ptrpthread_getspecificPerl_Tstack_sp_ptrPerl_Tmarkstack_ptr_ptrPerl_Tstack_base_ptrPerl_croakXS_List__Util_minPerl_newXSPerl_sv_setpvXS_List__Util_sumXS_List__Util_minstrXS_List__Util_reduceXS_List__Util_firstXS_List__Util_shuffleXS_Scalar__Util_dualvarXS_Scalar__Util_blessedXS_Scalar__Util_reftypeXS_Scalar__Util_refaddrXS_Scalar__Util_weakenXS_Scalar__Util_isweakXS_Scalar__Util_readonlyXS_Scalar__Util_taintedXS_Scalar__Util_isvstringXS_Scalar__Util_looks_like_numberXS_Scalar__Util_set_prototypePerl_gv_stashpvnPerl_hv_fetchPerl_gv_initPerl_Isv_no_ptrPerl_sv_setsv_flagsPerl_Isv_yes_ptrPerl_sv_2pv_flagsPerl_formPerl_get_svPerl_sv_setpvnPerl_croak_nocontextPerl_Top_ptrPerl_sv_newmortalPerl_looks_like_numberPerl_sv_setivPerl_mg_setPerl_Tcurpad_ptrPerl_mg_findPerl_sv_taintedPerl_sv_rvweakenPerl_Isv_undef_ptrPerl_mg_getPerl_sv_setuvPerl_sv_reftypePerl_sv_isobjectPerl_sv_2nvPerl_Itainting_ptrPerl_sv_upgradePerl_sv_taintPerl_sv_2uvPerl_sv_backoffPerl_sv_2ivPL_ppaddrPerl_Ireentrant_buffer_ptrdrand48_rPerl_newAVPerl_newSVPerl_av_storePerl_av_extendPerl_newHVPerl_sv_2cvPerl_push_scopePerl_Ttop_env_ptrPerl_save_sptrPerl_Ttmps_floor_ptrPerl_save_intPerl_Ttmps_ix_ptrPerl_save_vptrPerl_Tcurstackinfo_ptrPerl_Tcurstack_ptrPerl_Tstack_max_ptrPerl_cxincPerl_Tcurcop_ptrPerl_Tmarkstack_ptrPerl_Tscopestack_ix_ptrPerl_Tretstack_ix_ptrPerl_Tcurpm_ptrPerl_Tsavestack_ix_ptrPerl_Tsavestack_max_ptrPerl_Tsavestack_ptrPerl_Tcomppad_ptrPerl_Idefgv_ptrPerl_Irunops_ptrPerl_sv_freePerl_pop_scopePerl_sv_2boolPerl_save_freesvPerl_savestack_growPerl_new_stackinfoPerl_Istderrgv_ptrPerl_PerlIO_stderrPerlIO_printfPerl_my_exitPerl_gv_fetchpvPerl_sv_cmpPerl_sv_setnvlibc.so.6_edata__bss_start_endGLIBC_2.2.50ui R    l a b ȇ Ї c؇ m Z o d j % k e n g( h0 _8 [@ UH fh p x           Ȉ Ј ؈          ( 0 8 @ H  P !X "` #h $p %x & ' ( ) * + , - . /ȉ 0Љ 1؉ 2 3 4 5 6 7 8 9 : ;( <0 =8 >@ ?H @P AX B` Ch Dp Ex F G H I J K L M N OȊ PЊ Q؊ R S T V W XHgXH5e %e @%e h%e h%e h%e h%e h%e h%e h%e hp%e h`%e h P%e h @%e h 0%e h %e h %ze h%re h%je h%be h%Ze h%Re h%Je h%Be h%:e h%2e hp%*e h`%"e hP%e h@%e h0% e h %e h%d h%d h%d h %d h!%d h"%d h#%d h$%d h%%d h&%d h'p%d h(`%d h)P%d h*@%d h+0%d h, %d h-%zd h.%rd h/%jd h0%bd h1%Zd h2%Rd h3%Jd h4%Bd h5%:d h6%2d h7p%*d h8`%"d h9P%d h:@%d h;0% d h< %d h=%c h>%c h?%c h@%c hA%c hB%c hC%c hD%c hE%c hF%c hGp%c hH`%c hIP%c hJ@%c hK0%c hL %c hM%zc hN%rc hO%jc hP%bc hQ%Zc hR%Rc hSHH_ HtHÐ=1c UHu;H= ` tH= c HHc Hb HHub fDUH=] HtH_ HtH=] IAÐAW1AVAUATUSH8HT1L 8HH1*HH8H1L(8HpUHHcL<J8@)1j8sH;HHHL0HcIDI)IA]1E1+84HHI\HC t%HHH5 RHtWMMH-RL=R18H QH5SHMIL1H\$Ll$L<$1~8L%] H QH5QHLHH1@XC8LHQHH1#8,H SQH5cQLHHH1@X8HQHHV18H] H PH5QH[1H8HBQHH18L%\ H PH5PHL HH1@XF8OHPHH1&8/H VPH5PLHHH1@X8HPHHY18H\ H OH5QPH^1H8HDPHH 18H&\ H OH5PH1HV8_HOHH168?H[ H _OH5OH1H8HOHHo18H[ H OH5OHt1H8HOHH!18H4[ H NH5nOH&1Hl8uHLOHH1L8UHZ H uNH56OH1H8'HNHH18HZ H 'NH5NH1H8HNHH718H*Z H MH5NH<1H8HbNHH1b8kHZ H MH5NH1H48=HNHH18HY H =MH5TNH1H8HMHHM18HY H LH5NHR1H8HxMHH1x8H Y H LH5MH1HJ8SH*MHH1*83HdX H SLH5.NH1H8HLHHc18HX H LH5aMHh1H8H]MHH18H5@M H1Id8mH!MHAL H{ t/1089H LHAA LHH1H@8L 8Hx1H8HLHLq18H1H8H1H8H1Ho8xH@L8L;H[]A\A]A^A_1A8JHH1H$8-"H1HKI18"H1H#fD18H IH5ILH1?1H81HHAHHt@ L-Is1L-~If8oH kIH5lILH11H:8CHH1H H-KL-7IIICffff.AT1US8HN1H8HH1*HH8HHcHHH)H18HSUH1HcH,H(W8`H(L C %=tU1/88HJD%18Hu1H8HH(H+[]A\18H18H5IH1fAU1ATUSH8H1H~8HH1*HH\8eH-HcHHH)H1,85HUH1HcL,J(8 HCHITHH(E < BuH%E 18H1H8HrL(L+H[]A\A]H1HXL p8yHHLH(1O8XH5HH1wH=H1 H=H1AU1ATUSH8Hh1H8HH1*HH8HHcHHH)HZ18HmUH1HcL$N, q8zHH@% 1N8WH?H158>LH18#H1L(8 HcHHH1nfDAU1ATUSH8 Hx1H8HH1*HH8HHcHHH)H18H}UH1HcH,L$(8HH@% 1^8gHOIAD$ f1H(81H1H8HH18HW1H8HH(H+H[]A\A]D18H1H8HHH@L,AD$ f21h8qLHAD$ I$1H88A1HH1H8#HLH18HAE @Hu Ll18LH18H5<H1fDAU1ATUSH8H1Hn8wHH1*HHL8UHHcHHH)H18%HUH1HcL$J, 8HH@% 18HfE I18HHW1L8HV1Hl8uHH1S8\H1H:8CH L L#H[]A\A]f18H1H8H HfE H@L,"18HHHE1H8H޺Ho1H8HLH1i8rH:AE @Hu M,1@8ILH~1%8.H5:H1MDAW1AVAUATUSHH8HQ1L(8HH1*HH8DeHHcHHI)IDl$HEDxX1Icr8HItH<1L R8[H1I$88AH1I8(HHI$H[]A\A]A^A_18HIcHHT$HL4AF %=IH*@D$|$8EHL$H%=HH*@L$f.veEt D$IރID9158>HHJ C utzHL$@ f.wE뙩tIH L$518LHD$IHPHH*D$18HH HHPHxzH*1Y8bH*HT$H1L478@H1H8'HHHT$HD$HH[]A\A]A^A_HЃHH H*XkHЃHH H*XL$fffff.AW1AVAUATUSH8H1Hz8HH1*HHX8aH)HcHHH)H!1(81HUH1HcH,L,(8HHLtAF+IH@HD$IL81H8H1H8H1H8H^HHDx {1Ld$`8iH1H1H\B8KLHLHAE AE %=18 HHAEHDHVIEH@1HC8HHHD@ 18HrHHDH 1|8H8t fAE sfAF fD1A8JH1H(81HH(H+H[]A\A]A^A_18HHAEHDHIEH@1HC8HHHD@ Z18HnH1HDH x8HIHHDH 1N8WHHAEHDHIE@ C 18HHHDH n18HH1H\8HHED18HT$HǹLI1~8LH<1]8fH81>8GHH1H\ 8)HH18 LH018LHcg18HH1H\8HH18LH1a8jLH_*1C8LHH1H\%8.HHCj18H5!1H1/AW1AVAUATUSHH8H\$H/1L88HH1*HH8HdU1T$ HcHHI)ID|$`8iHq1L HD$HD$HD$ HD$(HD$08#H+H1H@HD$(8H HH8 1H(8H18HL |$EBD=E1HL,f1I}8D)HKA*H1Y$,\$ HcHL$D8MH1H+84HH1J(H 8HHN$(I1ED8E)H91H8HHH8HHH$18HH$1U8^H1H<8EH HcT$ HHHcD$HDHHH[]A\A]A^A_ffff.AWHcAVAUATUSH8T$HD$Ht$HHT$H;PH8[]A\A]A^A_1H8HsHT$HD$ HDHHHD$(HCHH@HD$HHPT$4HHcLt$(E1L$N,"MHD$(J HtS ? 181HB1H8Ht$ HHىK IIIID$D)9D$4n1I]8HH9KIEH@Hu`&t[@T%-1Z8c1HH1?8HHt$ HHىK BfIHtC18Ht$ HHىH@XufD18H1H8H1H18Ht$ H1H?H1@Hq8zT$HL$ HHt$HT$HHT$HPH8[]A\A]A^A_1-86HH18HHAW1AVAUATUSH88HD1L(8MHH1HH8HvHcHHI)IEE1\$$k8tH8GHHT$HAHT$>18HL$0HT$(E1HHbHH1H@xHD$8Hm18HGH1D$HEHXH8HHHHE1HPHHK2 HHBg8pH1HN8WHHL158>H1H8%H18 H1H8HHw18HQH1ƀ8HqHL`(MPI$AD$1AD$HH@i8rHH1HM8VHL+(1ILk,85HI$1HHH 8H1H8HI$1HHRHHH8H&1H8H}I$HHRHH1H8HI$1Hd8mH%1L K8TH H1X/88HH;X 1 8H1H8HC18HH1HX8HH1Hc@L$N$`N$A$8H1Ht8}HEH+1HA\$R8[HCH1ID$48=HU1H8$HH+1HA\$8H1AD$ 8H1AD$8HHAD$01Il$8ID$(HEH@pAD$hID$`8HH@%AD$iHUHzp HBpHHBpH~%HE1HXp58>Ht$Hlj'18!H 18HN; 18H1L08H1Iŋ8LcO$HH1I$A]Az8H1Ha8jHR1Hcʃ!:8CHHT$1H HUHRpHHHH8H1H8H_H1HHHHELp@8HH1HHX88HHLd$I18HH1HHP8I$HZ8cHk1L0A8JH"1H(81H18HvHH8-18HSHH@18H-HHHHHPHHE1Hhp8HH1t8}H5H1L`W8`HH1QHcƒHQHX*8I/H18HHS1H8H1I8HHcS1HHI$8HFS 18HS18HHS(1Hb8kH1L I8RH HHh Hk1#8,HdH1H8HL+ 1ILc8HHU1HHH8H1H8H{HU1HHRHHH8H1Hf8oH7HUHHRHH1H;8DH|HU1H8'H1H(8HT$H18HB18H,18H1H\$H8HhL$$1AT HcHHHHh8qH1HO8XH HHT$HL$H H8[]A\A]A^A_18#H{HH@18HUHHHHx„/AIE93HE1Hhp8HH18HSH1L`u8~H6H1QHcƒHQHXH8IMH1.87HHS1H8H21I8HHcS1HHI$8HdS 18HS18HHS(1H8H1L g8pH(HLh M1A8JHH1H%8.HL+ 1ILc8 HIU1HHH8H1H8HIU1HHRHHH8H1H8HUIUHHRHH1HY8bHIU1H<8EH1L(#8,H褿T$H18H`18HJ18H褿1H\$H8H&1H8H1H8HTHHL$HD$HH8[]A\A]A^A_1N8WHH@Q1,85H荿HH@t91 8HkHfWHH@ f. 18ڿH2H1H8辿HHcHH80E1w8耿HHHU1U8^Hf[1:8C HA1I8 HؽH1ID$ 8H躽HL`(M18H5H118HH8t18襾H}Hx tB1}8膾HHH5>11V8_Hr1;8DHHHH@8Hxt18HHHH@8H@HHx@e18HÿHHH@8H@HHx@NAW1AVAUATUSHH8謽H1H(8蓽H諾H1HHh8qH9HcHHHH)HHD$D$ 1-86HS1HcHHT$0HHH8H1HD$8H赻|$L(} 18ɼHL$@HT$8E1HHIH1H@xHD$(苿8蔼H1u8~HH1D$IHXHJ8HOHH褺I1HPHH HHB8!H蹽1H8HH18H臽1H;8ֻH~1賾8輻HĹ1H蚾8裻HH(1聾8芻HH1ƀa8jH"HL`(Mu I$AD$1AD$HH@8#H[H1H8HϹH+(1HHkݽ8H讹I$1HHH躽8úH˹1H衽8誺HrI$1HHRHHHv8H׹1H]8fH.I$HHRHH1H28;HsI$1H8Hָ1L 8H轸H1X8H衸H;XY1込8ǹH1H襼8讹H膼C1茼8蕹HMH1HXo8xH0H1Hc@L$N$`N$A$>8GH蟸1H%8.HH+1HA\$8 HH1ID$8H1H̻8ոH譸H+1HA\$誻8賸H;1AD$ 荻8薸H莺1AD$p8yHHAD$01M|$8ID$(IH@pAD$hID$`58>HFH@%AD$iIHzpHBpHHBpH~$I1HXp8Ht$(Hlj1̺8շH轹1贺8躷H;Ll$01Ll$ 艺8蒷H誶1L0p8yHa1IU8LcO$TH輸H1I$A]*83HK1H8H1Hcʃ!8H[HT$(1H IHRpHHHH踹8H虷1H蟹8訶HH1HHHIHh@v8H5SH趵1IL8UH5+H茵II$1HX88#HHxI1HX88HHXI$HT$H@8HHD$ HXH9t#1ø8̵Ht$HǹHW|$Ld$ AIDI1HP8I$Hs8|H脳1H(Z8cH;1HA8JH1.87H菴HHT$H;t?1 8HlH1H8Ht$HǹH胵AID;l$8I1Hhp豷8躴LH1蘷8衴HYH1L`{8脴HH1L 8%H荮1I$8 Hc1I8H躪HI$H[]A\A]A^A_1轮8ƫH讬INjD$ Y1蘮8衫HiIcHL4J0C %=HH*@D$|$ !EHL$8%=HH*@XD$ID9D$18H轩HJ C utmH@ 묩tH@ D$W1蚭8裪HH蘭D$3HHPH H*D$D1Q8ZHHO+fHHPHH*18 H1H8D$HLAG @uHM<1Ԭ8ݩH51H軬8ĩH茨L0L3H[]A\A]A^A_1萬8虩LHΪHЃHH H*XSHЃHH H*XD$UHSHH HtH HCHHuH[ÐHoHXS_VERSION%s::%s1.19bootstrap parameter::Util.cList::Util::maxList::Util::minList::Util::sumList::Util::minstrList::Util::maxstrList::Util::reduce&@List::Util::firstList::Util::shuffleScalar::Util::dualvar$$Scalar::Util::blessedScalar::Util::reftypeScalar::Util::refaddrScalar::Util::weakenScalar::Util::isweakScalar::Util::readonlyScalar::Util::taintedScalar::Util::isvstringScalar::Util::set_prototype&$List::UtilREAL_MULTICALLpanic: POPSTACK ab%s object version %s does not match %s%s%s%s %_Scalar::Util::looks_like_numberUsage: Scalar::Util::isweak(sv)Usage: Scalar::Util::set_prototype(subref, proto)set_prototype: not a subroutine referenceset_prototype: not a referenceUsage: Scalar::Util::looks_like_number(sv)Usage: Scalar::Util::readonly(sv)Usage: Scalar::Util::isvstring(sv)Usage: Scalar::Util::tainted(sv)Usage: Scalar::Util::weaken(sv)Usage: Scalar::Util::refaddr(sv)Usage: Scalar::Util::reftype(sv)Usage: Scalar::Util::blessed(sv)Usage: Scalar::Util::dualvar(num, str)Usage: List::Util::first(block, ...)Usage: List::Util::reduce(block, ...);Xh@H80pȽ8 X`xhPh(@8zRx L  (08P,lPN <p (0< (0<p (0,\j <P (0,0 < j (0<<P (0<| (0LR (08PL  (08PL\p (08L (08pL? (08pLLs (08L (08@L (08P0 P" h{Xoh ^ P pH( o(ooFo ~"""""""""##.#>#N#^#n#~#########$$.$>$N$^$n$~$$$$$$$$$%%.%>%N%^%n%~%%%%%%%%%&&.&>&N&^&n&~&&&&&&&&&''.'>'N'^'n'~''''  .shstrtab.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bssXXL o hh ^%oFF2o(( AHH(Kpp UP"P"Ph"h"P[''Sah{h{g2x{x{o}<     P P  FILE90523063/auto/IO/IO.soJELF>@D@8@$>$> @@ @  (@(@ (@ Ptd`:`:`:QtdCF E$:%/;2!<, 159@*)'.0&7BA3"?( +8= C#> D6- 42H )$ $Dz23568:;<=ABCD}͹0wqX򶚿|y }CE6˞?*cY~SaVQ2?w>qU n7r + @G-"' ltbOZ cC#{P,: M 5l p%n A `( C  47C  0#C  !xU &w p- 2, ) "l? p\ 0 #w +__gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesboot_IOPerl_Tstack_sp_ptrPerl_Tmarkstack_ptr_ptrPerl_Tstack_base_ptrPerl_croakPerl_sv_2pv_flagsXS_IO__Seekable_getposPerl_newXSXS_IO__Seekable_setposXS_IO__File_new_tmpfileXS_IO__Poll__pollXS_IO__Handle_blockingPerl_sv_setpvXS_IO__Handle_ungetcXS_IO__Handle_errorXS_IO__Handle_clearerrXS_IO__Handle_untaintXS_IO__Handle_flushXS_IO__Handle_setbufXS_IO__Handle_setvbufXS_IO__Handle_syncXS_IO__Socket_sockatmarkPerl_gv_stashpvnPerl_newSVivPerl_newCONSTSUBPerl_Isv_yes_ptrPerl_formPerl_get_svPerl_sv_2ioPerl_PerlIO_filenoPerl_sv_newmortalPerl_sv_setpvnPerl_sv_setivfsync__errno_locationPerl_croak_nocontextPerl_PerlIO_flushPerl_Top_ptrPerl_mg_setPerl_Tcurpad_ptrPerl_PerlIO_clearerrPerl_PerlIO_errorPerl_sv_2ivPerlIO_ungetcfcntlPerl_sv_2mortalPerl_Isv_undef_ptrPerl_newSVPerl_sv_freePerlIO_tmpfilePerl_newGVgenPerl_hv_deletePerl_do_openPerl_newRVPerl_gv_stashpvPerl_sv_blessPerlIO_setposPerlIO_getposlibc.so.6_edata__bss_start_endGLIBC_2.2.5ui C C C @ A =A 8A >A A  A 4A AA DA B 6B CB <B ? B E(B 20B @8B :XB `B hB pB xB B B  B  B  B  B B B B B B B B B B B C C C C  C (C 0C 8C  @C !HC "PC #XC $`C %hC &pC 'xC (C )C *C +C ,C -C .C /C 0C 1HrH5j, %l, @%j, h%b, h%Z, h%R, h%J, h%B, h%:, h%2, hp%*, h`%", h P%, h @%, h 0% , h %, h %+ h%+ h%+ h%+ h%+ h%+ h%+ h%+ h%+ h%+ hp%+ h`%+ hP%+ h@%+ h0%+ h %+ h%z+ h%r+ h%j+ h %b+ h!%Z+ h"%R+ h#%J+ h$%B+ h%%:+ h&%2+ h'p%*+ h(`%"+ h)P%+ h*@%+ h+0% + h, %+ h-HH( HtHÐ=* UHu;H=( tH=* HH* H* HHu* fDUH=& HtH( HtH=& IAÐAWAVAUATUHSH(HL HHD*HHHL0AUHcHHT$ HH@HZHHHL8IcII)IA4HE1*HT$ HH\HC t%HHH5sHtsMLHH lFH $H58H ;IIHL1H\$Ld$@HH"1HH4I%H& H H5HH.' H H5HhH' H H5HKH& H H5H.H& H H5HHHHH& H _H5HHs& H BH5HH& H %H5HH& H H5HH & H H5HnH7& H H5HQH% H H5H4H% H H5HH% H wH5vHHHHH5lHHH/HLHHHH H1HHHHHHHHvH@HHHHTHHHHH2HタHHHHHcHHHHHAHHHHHHHHHH HmHHHH5a HH1HHFHHHMHH+HHH+H~HHHH H1_HHHHH=HHHHHHHHHH^H\$ HHnHHHH8HHT$ HD$ HH([]A\A]A^A_Ð"1HHH jH5nLH1F1HHHHt@ L%7H (H5)LH1L%1HH}HhHL%HH@H\$Hl$HLd$Ll$Lt$H(HHXHHD"HH#IcHHH)HHAT$HHLcN,J4(L_HHHp8YHAHHAHt(Eu]HHH HJ4RHHHoL(L+H$Hl$Ld$Ll$Lt$ H(@H@HIcHJ4H5H1+H\$Hl$HLd$Ll$Lt$H(3HHHHD"HHIcHHH)HHAT$HHLcN,J4(HHp@HHL HAeHHZAHt(EuYHDHH HJ4HaHHL(L+H$Hl$Ld$Ll$Lt$ H(HHIcHJ4HLHHHH5zH1HH=~H1Cff.H\$Hl$HLd$HHL rHHHcHH=HHI)IAtH5:H1(H=t@ATUHS&%s object version %s does not match %s%s%s%s %_Usage: IO::Socket::sockatmark(sock)Usage: IO::Handle::sync(handle)%s not implemented on this architectureUsage: IO::Handle::setvbuf(handle, buf, type, size)Usage: IO::Handle::setbuf(handle, ...)Usage: IO::Handle::flush(handle)Usage: IO::Handle::untaint(handle)Usage: IO::Handle::clearerr(handle)Usage: IO::Handle::error(handle)Usage: IO::Handle::ungetc(handle, c)Usage: IO::Handle::blocking(handle, blk=-1)Usage: IO::Poll::_poll(timeout, ...)Usage: IO::File::new_tmpfile(packname = "IO::File")Usage: IO::Seekable::setpos(handle, pos)Usage: IO::Seekable::getpos(handle);p @H``0X 0(0pzRx L`\ (08`$lpM 0$x 0$l   ,@ $,w 0$T(n 0$|pw 0$ 0<  (0<  (0LL0 (08pD (0@$ 0$  7 0  5Xo @ ' @B Pp oooo(@ .>N^n~.>N^n~.>N^n~C @ .shstrtab.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bssXX, o @@ '%o2o AKppP UP[a55g255o`:`:}::4@ @@ @ @ @(@ (@A A@B @BC CC CCFILE97eef2dc/auto/File/Glob/Glob.soNELF>@pH@8@CC CC C  DD D Ptd???QtdCE B(-.#=5*7:;@<" )3 68/?2 C 1,0'&4!A+%D>9$;`@ ;>As*|CEqXB^%@: ^q 3 + ]R-i6"'8ifM~+KWQtA!~]7^JGK>* IL"qp; 03G G G ? e  x=  09 .Y ,__gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesbsd_globfreePerl_safesysfree__ctype_tolower_locPerl_Gthr_key_ptrpthread_getspecificPerl_Ireentrant_buffer_ptrreaddir64_rPerl_safesysreallocPerl_safesysmalloc__errno_locationPL_memory_wrapPerl_croak_nocontext__stack_chk_fail__lxstat64opendirclosedir__xstat64qsortgetenvgetpwnam_rPerl_reentrant_retrygetuidgetpwuid_rbsd_globstrcmpboot_File__GlobPerl_Tstack_sp_ptrPerl_Tmarkstack_ptr_ptrPerl_Tstack_base_ptrPerl_croakPerl_sv_2pv_flagsXS_File__Glob_doglobPerl_newXSPerl_sv_setpvXS_File__Glob_constantPerl_Imodglobal_ptrPerl_hv_fetchPerl_newSVPerl_sv_setuvPerl_Isv_yes_ptrPerl_formPerl_get_svPerl_Top_ptrPerl_sv_newmortalPerl_Tcurpad_ptrPerl_newSVpvf_nocontextPerl_sv_2mortalPerl_Tstack_max_ptrPerl_Isv_undef_ptrPerl_sv_setivPerl_mg_setPerl_stack_growPerl_sv_2uvstrlenPerl_newSVpvnPerl_Ttainted_ptrPerl_Itainting_ptrPerl_sv_taintPerl_sv_2ivlibc.so.6_edata__bss_start_endGLIBC_2.3GLIBC_2.4GLIBC_2.2.5ii ii ui G G G C E  E  E BE ;E E 2E E E E F F F F  F  (F  0F 8F @F HF PF XF `F hF pF xF F F F F F F F F F  F !F "F #F $F %F &F 'G (G )G *G + G ,(G -0G .8G /@G 0HG 1PG 3XG 4`G 5hG 6pG ?xG 7G DG 8G 9G :H (H50 %0 @%0 h%0 h%0 h%0 h%z0 h%r0 h%j0 h%b0 hp%Z0 h`%R0 h P%J0 h @%B0 h 0%:0 h %20 h %*0 h%"0 h%0 h%0 h% 0 h%0 h%/ h%/ h%/ h%/ hp%/ h`%/ hP%/ h@%/ h0%/ h %/ h%/ h%/ h%/ h %/ h!%/ h"%/ h#%z/ h$%r/ h%%j/ h&%b/ h'p%Z/ h(`%R/ h)P%J/ h*@%B/ h+0%:/ h, %2/ h-%*/ h.%"/ h/%/ h0%/ h1% / h2%/ h3%. h4%. h5%. h6%. h7pHH, HtHÐ=. UHu;H=, tH=. m HH. H. HHu. fDUH=* HtH[, HtH=* IAÐ9t ftH1HDHHHHt u1øf.AUIATUSHHHtDEeAEEt*H1HHH;Ht_D9uI}NIEH[]A\A]ff.AWAVAAUIATUHSH8H9HT$scILl$(fDDeLl$(HI]fA?tGfA[fA*tLEAEfD9u"HD$(H9l$w1fA} fA}u1H8[]A\A]A^A_H;l$u HHT$DHH3`f;uDEefEDtU1f!D$ AE1D$4HHHD$D$4耉D$ EuKfA9DEUHf]tWf}-uEu]fA9rfD;efwAHfڍ=|$ D$49D;|$ ڍ=f|$ D$49|$ D$4D$$]=;\$$QRHUfH8[]A\A]A^A_DA=A܍=A9HT$HHHcӋHHcӋHT$HHHcӋ5HT$HD$$HIcD@IH9HT$8HHT$ Bf6f/,HT$HHf/tHIH9t AfuHD$8H= HHHD$8H9D$HL$HHffHH9t:BHuALfHftH9L$8vBHfHfuf$@ D} HT$HT$(zU u%==D} H|$(H$H@H.IL$fAD$![18zH1L(8IZHH1Lq8:HbH1HQ8HBH0H|$MLHHut<"tHT$ D} HT$(~Ht$H=1HtHP Q18HHHHT$HL$H9L$8V18bH1L 8IBHjH1LY8"HJH1L98H*HBMLHLH" H=1fDAWAVIAUATUSHH f?{{HrHHH9HtHHfEHH9ufECLcft[LE1f{t|f}H3ft2f[uH3f]tfHu4HىftqHYfuLH.H []A\A]A^A_Hf]tftHA3Et,Asf}fLHI9LvfCf,tDIL$H9w3If[vf{tnf}fuEtIL$AH9v1FEuI9HvHfHL9r1DSfQHfuLH5IL$HuIL$AgAD$IL$f]tfHuHftHJHf]tfuL#fDH HAAA HQAuDL$HfHL9t Hu@fyfHH]H LD$L$fDfBIL9sLMHt>H<\uHt @fA@HHH H\@Lʐiff.H?H6DSHLHHtxA I҄uABIt[A ItgpDE@wEH A<wЍP A9tA@w%A AAA<wЍP D)t[A E1AHH[LpDE1븃 tt 11f.AW1AVAUATUSH(8tH 1L 8[HH1*HHp89Ha1L(W8 HHUHcHHT$ HH@18HHHHL8HcIDI)IA1E18HHT$ HH\HC t)DHHH5HMMH- L- 1e8.H H5HMIL1H\$Lt$L,$1(8HH1H 8"H1HI18H H  H5 H1H8~H HH18^H H H5 HQ1j83H1HQ8H AHHM1L #8HH1H8HLH18HH\$ H18H1H8rH 1H8YHHHT$ HD$ HH([]A\A]A^A_f1Y8""H1H`148H 5 H59 LH11H81HHHHt@ L5 (1L5 8H H5 LH171H8fHH1yHH- L5 IIAU1ATUSHO8H1H68HH1*HH8HHcHHHH)HK1Lc8HH@% 18HI18jHUHHcHCHH@HD$HH(1H\$]8&HCHwlH HcH158Hf1H8HHH@L,UE HCCHLp1AtL18HHID@-18HHIDHpHD$HLHHD$1A8YHH\$H)HcHH9o5E1E1"HAIH]D9t$ HD$ N$(L1H8HLH1H8HHI1H8H018H8^18pH8?18QHY8 1i82HH1K8H@'@8@## ## #  ## # Ptd"""<<Qtd%-# %( "+$'&!) *, $`H $&)|CEqX*X{+o 8w + n*Z"'=h%E1euKW5HD& 1& 8&    (!?   __gmon_start___init_fini__cxa_finalize_Jv_RegisterClassesboot_CwdPerl_Gthr_key_ptrpthread_getspecificPerl_Tstack_sp_ptrPerl_Tmarkstack_ptr_ptrPerl_Tstack_base_ptrPerl_croakPerl_sv_2pv_flagsXS_Cwd_fastcwdPerl_newXSXS_Cwd_getcwdXS_Cwd_abs_pathPerl_Isv_yes_ptrPerl_formPerl_get_svstrlenmemcpyPerl_Top_ptrPerl_sv_newmortal__errno_locationPerl_sv_setpvnPerl_Itainting_ptrPerl_sv_taintPerl_Tcurpad_ptrstrchrmemmovestrrchrPerl_Isv_undef_ptrPerl_sv_setsv_flags__lxstat64readlinkPerl_mg_set__stack_chk_failPerl_getcwd_svlibc.so.6_edata__bss_start_endGLIBC_2.4GLIBC_2.2.5'ii Iui S& & & # % % % +% % ,% '% % % % % %  %  &  &  &  &  & (& 0& 8& @& H& P& X& `& h& p& x& & & & & & &  & !& "& #HH5 % @% h% h% h% h% h% h% h% hp% h`%z h P%r h @%j h 0%b h %Z h %R h%J h%B h%: h%2 h%* h%" h% h% h%  hp% h`% hP% h@% h0% h % h% h% hHHu HtHÐ= UHu;H=c tH= ] HH Hw HHup fDUH=o HtH HtH=W IAÐAW1AVAUATUSH+8H1H(8HsH1D"HH8H@1L08H'AT$HHcL,J(@18HHHHHL8IcIH)H!1E1b8 HHI\HC t)HHH5HMLL%L-e18H JH5HIML1H\$Lt$L,$18ZHH1H8="H1HI1Lf8H H H5H21;8H H H5H18H H H5H18H61H8uH-1H8\H$1H8CHL(L+H[]A\A]A^A_fD1i8"H1H`$1D8H H5 LH11H81HHTHHt@ L5J 1L59 8H & H5' LH1G1H8VHH1HFL% L5 MLHl$Ld$HLl$Lt$IH\$HH(IHItH]H9LLHBHQALH$Hl$Ld$Ll$Lt$ H(fff.H\$Hl$HLd$Ll$ILt$H(IeLHZHIt2HCH9s)HI|-LH)HXI9IBHHB+I,H$Hl$Ld$Ll$Lt$ H(ffffff.AW1AVAUATUSH@dH%(H$@1%8H1H 8HmH1*HH8H;HcHHH)HH6]1HcHT$0~%1Hc8LHH\$0HH,18*HH@% 1^8HoHD$8HH tEHEHHD$HD$@;/H$0Ƅ$0/Ƅ$0HsHT$({H\$(H! t€DHCHDH1H+\$(8MHt$8HT$(HHxHT$81B %H B l8H8$@1I8HHHD$8@ @HT$0HD$81HH8HA8t18Ht$8H18HKHH$@dH3%($H@[]A\A]A^A_18AH1H8(HHH@HHD$8H$0HHD$(HLl$(HAEI! tL$ H€DIELLDҺIL+l$(pIIIH$0MHT$(H$H$0D$DHT$ H$0HD$HD$PHT$H$HD$H$/LIK'MLHDHL)H/H|$ HLI)LMƄtIT$HuL>HT$LHT$(B,0/t#IIHT$(/BƄ,0$$\9uR:$tc@92:$:$Iv&HD$/B(H|$ Lh@L+l$MI3J,08/"HD$H$18H1H8~Ht$8HǹHd@Ht$ H|$H=IHT$Ht$D$h%=.|$DH4$H|$?@HcƄ,$/JIv&HT$/B*H|$Lh@L+l$MtLCH/t C=HƄ,/ƄH<$LH=H4$LD$DIMR1q8Ht$8H01Q8H1HHH1)8Ht$8H5L$ ALI1H5LgAƄ$0HT$H$HD$H8MT$@(18*H5sH19HD$H(dfAT1USE8H1/8HH1D"HH 8H]18HH@% 18|H1H8cHHH@H18BHH718)HC @H(AD$1HHlH]M8H~8t128HH@18HH([]A\f18H HBf18HHW^fAT1US8^H&1H8EHH1D"HHy8"HIcHHH)H?1J8HkH@% 1'8H8H18HH18HFC @H(AD$1HHlH]8kH8t18PHH187HH([]A\1i8Hj1HP8HqHH@H1)8HH91 8H5H1UHSHH HtH HCHHuH[ÐHHXS_VERSION%s::%s3.29bootstrap parameter$::Cwd.cCwd::fastcwdCwd::getcwdCwd::abs_path..Usage: Cwd::fastcwd()%s object version %s does not match %s%s%s%s %_Usage: Cwd::abs_path(pathsv=Nullsv);<XhXzRx L8 (08P,lt  0,   0Lx (08,( ,L ' (!Xo( _ %    o oo o# &6FVfv&6FVfv& # .shstrtab.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bssXXP oH 8((_%o Z2o 0A  K  U P [(a(!(!g28!8!o""<}H"H"|# ## ## ## #% %0% %& && &&FILE'dc4a7119/auto/Compress/Raw/Zlib/Zlib.soELF>pE@p|@8@TsTs XsXs"Xs"HP ptpt"pt"PtdSSSDDQtdZ{F$&6jNHne7='`TO28qS?[Vb,#9a:KYW|h<014 fIpuw;s\B]>/y.~3@Xgo^ EQltM)R JG*mUALird"( _x5 }D+kvz-C%! cPaA  @ $B JhP 0@f!B $")   0 46(  G @\,ADEGHLMPQRVXYZ\]^`abdegijklnotuvwz}~}ql1=vcJJjJwq-6g$U-u]/}"_@fJRW*zT{oP졩Uuח%_A=s(s)#>az)%ǿ+) *LA/P8!CEjiC;ep،Qʉqşv- z"B l,=q&BLQ-*qX -2e9d+U^|u)ln<Ɵ9t#k(¯1Dƥ[J 4QOcdz(7DeªHؼP 0%qD6-P'Ln9@+9e[Xs,"tBȇhF;]}f18_qcEo;(X_jTLa ?v D& G  V %   f4 @   x W I d"'      & |e^u     a 4 7nq PR  E  pWN; PV 9 F  Є  z5 v PUq     y<   Y* l y) | p.  `W - pC4 v J G/ t"PL `6 F * k <p 0j  H5 `:   o V  ;{"} `~9 @\ w   W0  a  P\ 8\ / z ?i  p}& ^s & 0T _ P) B{" P* &~ 0N  P   `G5N{"{   ` prE @ `V pH  0_ <  q P*~G x # 0 <  C  T  ] VN  & ;   0 pB  pg> y      Y  V >U x  d6 < w\  `n0 Yj a 0 s0 pz l 0u A p   `X,__gmon_start___fini__cxa_finalize_Jv_RegisterClassesboot_Compress__Raw__ZlibPerl_Gthr_key_ptrpthread_getspecificPerl_Tstack_sp_ptrPerl_Tmarkstack_ptr_ptrPerl_Tstack_base_ptrPerl_croakXS_Compress__Raw__Zlib_constantPerl_newXSXS_Compress__Raw__Zlib_zlib_versionXS_Compress__Raw__Zlib_ZLIB_VERNUMXS_Compress__Raw__Zlib_adler32XS_Compress__Raw__Zlib_crc32XS_Compress__Raw__Zlib_crc32_combineXS_Compress__Raw__Zlib_adler32_combineXS_Compress__Raw__Zlib__deflateInitXS_Compress__Raw__Zlib__inflateInitXS_Compress__Raw__Zlib__deflateStream_DispStreamXS_Compress__Raw__Zlib__deflateStream_deflateResetXS_Compress__Raw__Zlib__deflateStream_deflateXS_Compress__Raw__Zlib__deflateStream_DESTROYXS_Compress__Raw__Zlib__deflateStream_flushXS_Compress__Raw__Zlib__deflateStream__deflateParamsXS_Compress__Raw__Zlib__deflateStream_get_LevelXS_Compress__Raw__Zlib__deflateStream_get_StrategyXS_Compress__Raw__Zlib__deflateStream_get_BufsizeXS_Compress__Raw__Zlib__deflateStream_statusXS_Compress__Raw__Zlib__deflateStream_crc32XS_Compress__Raw__Zlib__deflateStream_dict_adlerXS_Compress__Raw__Zlib__deflateStream_adler32XS_Compress__Raw__Zlib__deflateStream_compressedBytesXS_Compress__Raw__Zlib__deflateStream_uncompressedBytesXS_Compress__Raw__Zlib__deflateStream_total_inXS_Compress__Raw__Zlib__deflateStream_total_outXS_Compress__Raw__Zlib__deflateStream_msgXS_Compress__Raw__Zlib__deflateStream_deflateTuneXS_Compress__Raw__Zlib__inflateStream_DispStreamXS_Compress__Raw__Zlib__inflateStream_inflateResetXS_Compress__Raw__Zlib__inflateStream_inflateXS_Compress__Raw__Zlib__inflateStream_inflateCountXS_Compress__Raw__Zlib__inflateStream_compressedBytesXS_Compress__Raw__Zlib__inflateStream_uncompressedBytesXS_Compress__Raw__Zlib__inflateStream_inflateSyncXS_Compress__Raw__Zlib__inflateStream_DESTROYXS_Compress__Raw__Zlib__inflateStream_statusXS_Compress__Raw__Zlib__inflateStream_crc32XS_Compress__Raw__Zlib__inflateStream_dict_adlerXS_Compress__Raw__Zlib__inflateStream_total_inXS_Compress__Raw__Zlib__inflateStream_adler32XS_Compress__Raw__Zlib__inflateStream_total_outXS_Compress__Raw__Zlib__inflateStream_msgXS_Compress__Raw__Zlib__inflateStream_get_BufsizeXS_Compress__Raw__Zlib__inflateStream_set_AppendXS_Compress__Raw__Zlib__inflateScanStream_DESTROYXS_Compress__Raw__Zlib__inflateScanStream_DispStreamXS_Compress__Raw__Zlib__inflateScanStream_inflateResetXS_Compress__Raw__Zlib__inflateScanStream_scanXS_Compress__Raw__Zlib__inflateScanStream_getEndOffsetXS_Compress__Raw__Zlib__inflateScanStream_inflateCountXS_Compress__Raw__Zlib__inflateScanStream_compressedBytesXS_Compress__Raw__Zlib__inflateScanStream_uncompressedBytesXS_Compress__Raw__Zlib__inflateScanStream_getLastBlockOffsetXS_Compress__Raw__Zlib__inflateScanStream_getLastBufferOffsetXS_Compress__Raw__Zlib__inflateScanStream_resetLastBlockByteXS_Compress__Raw__Zlib__inflateScanStream__createDeflateStreamXS_Compress__Raw__Zlib__inflateScanStream_statusXS_Compress__Raw__Zlib__inflateScanStream_crc32XS_Compress__Raw__Zlib__inflateScanStream_adler32zlibVersionPerl_get_svPerl_sv_setivPerl_Isv_yes_ptrPerl_sv_2pv_flagsPerl_formPerl_croak_nocontextPerl_Top_ptrPerl_sv_newmortalPerl_sv_derived_fromPerl_sv_setuvPerl_mg_setPerl_Tcurpad_ptrPerl_sv_2ivPerl_sv_setpvPerl_Ireentrant_buffer_ptr__errno_locationstrerror_rPerl_sv_setnvPerl_safesysmallocmemsetdeflateInit2_deflateSetDictionaryPerl_safesysfreePerl_Tstack_max_ptrPerl_sv_setref_pvPerl_sv_2uvPerl_dowantarrayPerl_newSVivPerl_sv_2mortalPerl_stack_growdeflatePrimePerl_sv_2pvbytePerl_Tcurcop_ptrPerl_sv_utf8_downgradePerl_newSVpvPerl_mg_getPerl_sv_2boolmemmovePerl_sv_pvbyten_forcememcpyprintfputcharputsinflateEndPerl_sv_freePerl_Isv_no_ptrPerl_sv_backoffPerl_Icompiling_ptrPerl_sv_upgradePerl_sv_growinflateSetDictionaryPerl_sv_utf8_upgrade_flagsdeflateEndinflateInit2_Perl_newSVsvPerl_newSVpvf_nocontextPerl_Isv_undef_ptrPerl_sv_setpvnget_crc_tableinflateBackInit_zcalloczcfreeinflateBackEndinflateBackinflate_tableinflate_fastinflatePrimeinflateInit_inflateGetHeaderinflateSyncPointinflateCopyuncompresscompressBoundcompress2deflateInit_deflateSetHeaderdeflateCopyz_errmsg_tr_stored_block_tr_align_length_code_dist_code_tr_flush_blockdeflateBound_tr_initdeflate_copyrightinflate_copyright_tr_tallyzlibCompileFlagszErrorlibc.so.6_edata__bss_start_endGLIBC_2.2.51ui Ss"s"s"s"s"s"s"s"t"t" t"LS(t"\S0t"8t"gS@t"rSHt"SPt"SXt"S`t"Sht" {" {"({"ps"@{"KH{"Q`{"`Ph{"R{"Sv"]v"v"ev"o v"w(v"d0v" 8v" @v"xHv"lPv"gXv"`v"hv"pv"xv"v"v"v"v"v"av"~v"v"v"Rv" v"v"Iv"v"v"\v"Jw"w"w"Xw" w"(w"b0w"8w"@w"SHw"cPw"Xw"t`w"Mhw"rpw"xw"Zw"w"}w"w"w"kw"yw"w"nw"w"w"w"w"uw"jw"w"Ux"`x"Cx"x"8x"Q@x"Hx"Px"Xx"`x"hx"Hpx"xx"x"x" x" x"Ax" x"x"x"x"x"Ex"x"zx"x"x"x"y"y"y"y"B y"(y"0y"8y"v@y"Hy"Py"Xy"_`y"hy"py"xy"y" y"qy"!y""y"Fy"#y"Gy"$y"%y"&y"y"'y"(y")y"*y"+z"Kz",z"-z" z".(z"/0z"08z"1@z"2Hz"Pz"TXz"`z"hz"3pz"4xz"Wz"5z"6z"z"[z"7z"8z"9z":z";z"fz"<z"z"=z"Oz">z"?{"@H*EH5b8"%d8"@%b8"h%Z8"h%R8"h%J8"h%B8"h%:8"h%28"h%*8"hp%"8"h`%8"h P%8"h @% 8"h 0%8"h %7"h %7"h%7"h%7"h%7"h%7"h%7"h%7"h%7"h%7"h%7"hp%7"h`%7"hP%7"h@%7"h0%7"h %z7"h%r7"h%j7"h%b7"h %Z7"h!%R7"h"%J7"h#%B7"h$%:7"h%%27"h&%*7"h'p%"7"h(`%7"h)P%7"h*@% 7"h+0%7"h, %6"h-%6"h.%6"h/%6"h0%6"h1%6"h2%6"h3%6"h4%6"h5%6"h6%6"h7p%6"h8`%6"h9P%6"h:@%6"h;0%6"h< %z6"h=%r6"h>%j6"h?%b6"h@%Z6"hA%R6"hB%J6"hC%B6"hD%:6"hE%26"hF%*6"hGp%"6"hH`%6"hIP%6"hJ@% 6"hK0%6"hL %5"hM%5"hN%5"hO%5"hP%5"hQ%5"hR%5"hS%5"hT%5"hU%5"hV%5"hWp%5"hX`%5"hYPHH0"HtHÐ= 6"UHu;H=#1"tH=r5" HHh5"H_5"HHu5"fDUH=-"HtHC0"HtH=w-"IAÐAW1AVAUATUSH8H,1H(8H#H1D"HH8H1L(8HAT$HHcL<J8@ 1O8HHHHL0IcIDH)H; 1E18JHHI\HC t% HHH5@HtWMLL%AL=< 18H H5dHIML1H\$Ll$L<$ 1d8HN0"H H5H198rH."H H5%H18GH."H H5"H18H/"H _H5}H18HR/"H 4H5oHd18H."H H5ɇH91b8H-"H ށH5ƇH178pH-"H H5ÇH1 8EHV-"H H5HHH1@X8 H WH5HHH1@X8H."H H5HO1x8H-"H H5H$1M8H-"H ɀH5H1"8[H-"H H5H180H-"H sH5ÇH18Hn,"H HH5ȇHx18H+"H H5ՇHM1v8HH,"H H5ڇH"1K8H -"H H5H1 8YH+"H H5H18.H+"H qH5H18H+"H FH5Hv18H+"H H5HK1t8H*"H ~H5H 1I8H,"H ~H5 H18WH*"H ~H5H18,H*"H o~H5H18HB*"H D~H5$Ht18H*"H ~H5!HI1r8H+"H }H5&H1G8H+"H }H5+H18UH)"H }H58H18*H#*"H m}H5=H18H(*"H B}H5JHr18Hm*"H }H5WHG1p8H)"H |H5dH1E8~H*"H |H5iH18SHt)"H |H5nH18(H)"H k|H5sH18H("H @|H5xHp18HK)"H |H5}HE1n8Hp'"H {H5H1C8|H%)"H {H5H18QH '"H {H5H18&H("H i{H5H18H<("H >{H5Hn18H'"H {H5HC1l8H&"H zH5H1A8zH[&"H zH5H18OH&"H zH5H18$Hm'"H gzH5H18Hj&"H