libfile-type-perl-0.22.orig/0000750000175000017500000000000010131561363016777 5ustar bastianbastian00000000000000libfile-type-perl-0.22.orig/t/0000750000175000017500000000000010131561363017242 5ustar bastianbastian00000000000000libfile-type-perl-0.22.orig/t/files/0000750000175000017500000000000010131561363020344 5ustar bastianbastian00000000000000libfile-type-perl-0.22.orig/t/files/standards.mov0000640000175000017500000000765010131560406023060 0ustar bastianbastian00000000000000moovlmvhdk_k`X(@Rtrak\tkhdk_k`(@x$edtselst(mdia mdhdk_k`Xd:hdlrmhlrvideapplApple Video Media Handler\minfvmhd@9hdlrdhlralisapplApple Alias Data Handler$dinfdref alisstblstsdoSVQ3SMI xHHSorenson Video 3SMI SEQHsttsdstscstsz|stco udtatrak\tkhdk_k`(@$edtselst(tref hintxmdia mdhdk`k`_p3hdlrmhlrhintappl hint media handlerminf gmhdgmin@9hdlrdhlralisapplApple Alias Data Handler$dinfdref alisstbl4stsd$rtp  tims_sttspstscstszxstco0udtanameHinted Video TrackbhntiZsdp m=video 0 RTP/AVP 96 b=AS:260 a=rtpmap:96 X-SV3V-ES/90000 a=control:trackID=2 hinf totl npck tpaytrpynumptpylmaxr(maxr`(dmeddimm drep tmin? tmax? pmax dmaxBpayt`X-SV3V-ES/90000*udtahntirtp sdp b=AS:260 freewide mdatwidemdatAvA` (JъIQ%"֌РńKqiB$ZZ[Z],YHV0Mmؐ, #,rO@jhr%0 ! YtbE)hSkXC0 UK%B,RF1+5JY hEi,JQ+%C4 2d\}ĆyfVBBTmbVdYJ]9ADqk$T(ѱ Yt QP؄Q4Y"E0d ,e~ 0, >Ղ:Af̀ n7JzЖ"EdH4h,YeJ%> 7A HYT VHa; :vDd3!%8u01"R-av^Դ+t"m+6tn-jE_=V$H%P[ dYJ"@ FEJX+XF`,̖eZl[4)lah#aO #[ t큶G)ШZ6b-,I& Ŭ_AJV";šB,i?ġ-d-uk %[hYIXԥ&%icq7 JD+]Jۥ+XVYiI)XHG,. $ر)I+X,aKdšX_ aY-e5 7 l2\!Gkhb͈B֚6!athŋbِl l%&ZRleD.- EY"+Qՠ%N>8[t`Ded @OAMX2E ĉm1R] ֖.+ @n b$;almkcy#УV+2GJ k -+I!5!qeե Ջ˗ZA#JŴCkfi ,k%VKv1dx&@΍h-1bXh5B%)v%# "Aܭmլ%dG$$t k6~УHXeu+ ИH.6V``pcݹfiGYRMV udJYIi. 4IZmĖҳA$Jamb1c5)JdYOmRr%0GIfZ}m$6 ^_0_ׯ\Cin&Z[25bRX]u CY1 8Dc4(HAbŧDlv,I.%&Kekdp-bm,L_>ebUHMğ$HУeֱ,H>Jĕh5lZR!?me!JĿR&f?n-!aqX,2l0JfCWZ1J-.q,[FmH&-@Ь >2[.,SŽ C]p-0d!-۔_>çe/H>D4(VTb[%M"ĉb5I'>&E4ő,ˑ0r6{,B3?$Jl]GjFq%kg%"ŌJ)e,!&vHŞ ,)~bEԴmXuR!Mm?:`UJ#P,F-dS`6i`+JFc5dۮH0fK\BVJTŊĥ`FVB+%bP+ R@’@ٍMn:VIJ_Ĉvt+'t ֈȕvlgŒ!5hc r00фn$ՋGbZ@pX9 poEbЉ)J4b]`jR)\HVC4 #N1H4(H쐶R~ZHGjȐ X ?jDje+4[BeWJD $v]"e8&Jج[fl5(བྷ-`lE1'-B¶H#,bX(p0Vd.QKKGY)$ѣ#¤4ȱV̭l_ M$Tc u!<$er͉+%t 1b3Y# m#Jم)1j fXь`#&1n%cqh^s©aa`+&muG?T%˿F[&lHZŚ0l"𘗀(X@дl6 ? Ç??OH&%sAR``p` libfile-type-perl-0.22.orig/t/files/id3lib1.mp30000640000175000017500000003450610131560406022222 0ustar bastianbastian00000000000000@DqMACRZ@S[ШH&>1998 Fools of the World0T4ame p 0b@XH0T4Xhr0R@0R0$er t0b@p0R0"0RuԲ>*0b@p0R0Rvver t0b@ 0S@&0ft 0T4%@uԲCP0R0RoRPame Xhr0T4 DUFP9n'XJQ x|@;Pc^V^qg {8G_yżI2 >Ґ~ %G ˎ ,;ϔq2 -8O&\p`Gϔyk[ϔ.}>  ` j@eN`Eoƕ}}/ցr<2 _4_AP\ WLNb07@=[/XSrlPdlp}CϼXB8 ]{ d {+D24ME)0$ hU+[0O~ېsGj "B"8 ϑ/=-/a*C4XurA*p,gql翤]a ZjR*esڛIq%vdfRf@*T5wKWHiTNЖ!$B2?#ekגI֐e=ᅥ  4a0gf"\ŗ:|p"2(Ej + Pz n3)`e#}PaJXi1(J73GLT V&[ԈL(Y͇Aʺ:4qv|*vYSzmw5+ÚBzđٟm@Y߁M_d i(Ɉ few%* A=>f1c F(8@ j fptiǛV0AqY}WX <>uwА0F}%#;+wIDSJ dKfS(eqMLeip4Z <ܐ! IDHЋy &$е o[6<.i:jXX'|`0LcO2ʬeO3tբ4lC`:`L[S#lgsDؠɳ{umػ&c-T` <ˬ$LH:E8;aPf|A|0ˌ5MqSϐ/jW BdwFvYKpN7uXv̭ !A pZt[s+NEr5i2NVđGfQHa 8+bW BN1Q!䥯21;0Dw1 dovݲO2enq3H?T u hJ{ge=t8p`;#2*1XZi! KR³8b1,c;*&!rl l2dgfVS,5mXָk ŚG0Ƭ~ムH  fd&ئb'&IlNgj!:Ӊ4vSg yt3aDѣ2Pl)b (ɂ,A(ĦiCp߱~#)MXZMRi,W2V\ǨooTQC0D‘_gJﳠ82ks{YZtʍv:$A  ":"&b%Ȣ4ra-&c@ IW/!9zJҁC|GS]DtrrtVFqq=Xj_JtUWz0|<6Tk(ZJZz?yQXŽ9Hdg;L-{QM0j p QYj#GA gD3+ ,Ď$ D%xd&\c 9$IL 6- .\NԦ9ğt5.ڲEX5+L|,<;_Eu7/r!ޝZfaR1\tD@HOPf]Y3J%8 3G*c"?PpE2$WrPG,)b8L8NJ/`!GIS6sLPÕG  k mI6~]k8PT 0RsЕ rM N>(AdOhK@*x(OLVi@  LwFIQQ а00dF@F3rluwXI%˳EcCt=w^Y3c"Y &Oєӈ:L`K YP`J%(4bI0eq|x "Rl3@Pppb/2[ T'JL:)9etߧ~jPg"#E59jWB]Kgu T" \Ke_q_]Mi;תdRBlsp6$@$`a2VB D9BBEA0Q3lD,Raa&_hedˀf;<U(ɟKLqiT8C0f#C1(FdAGrG&) ;ʉhNge(aAm:7`ԣ}Ͷǐ_NR suw^L3hyGGyHKXҧTѥ-7Iha4`AF7;[B4'))*gLk3;V进?9('G&zf`%ö\˺W3L`<{-KV<. db@9P7M8bx.MM\ Ȁe"'0 MF;C^<,Ogv{<#乓ڃN`/ Y?tdހhқo *U(@Jlq@ @pqj4kȊ=!ǁ5ῇ¶!Z&v"0:@9^5%'JEŪ gN󗵋O/cDb--N 5c,2gx`0M0!1@C-1 H*A̹FRDr2!@)~Zjp>9"ZymNB=r9a7 ,HjoJ4@&@s9dH$ḃ.s#PfQ"P( ` .JA ߦ$JԘiD"`,2,/ؤ'% El/f:˳d_R/ @7HMlsp ԫ[PVHnPan{1JX@q}0~ BYEJ71{#إE|)\D1 5R;p\I0 1CP;D4B\p*(1Xŋ(җ PCLx  3Z86Eܓ|[@WN1`ë.c') Qɟ}UwhtºhR3նԘ8 3f1XsRPB :PFBؒJa\jM6cN'6ƈnVaF9 N&ϢcLZ6X@0BU{A9)nƥQ+Yd\O*@{HmWhip[Ux&\C44}jT q+,7^#@4Yly0+S_+Gʎyo`uob/ 1 F,`!Lm&Ј9;Kg 8W1#1;yU{iV5:W ry=Z7sN% F$äwp>HCp >xYcE'Pi^1 p4:#t4J@愦c&l.2hEiu'AM7:)+@lS,U ۩ްo>[ʖ-ח-rї}r`%ERBgEU }WJOGTI/ucfR1ʊѧ daCkȔ32ǎ nȁ"&HvhƆ,3-nẇ291(93{"SdA9[|* (eDmlp3YѢʀscrurʱx[6gqm/>oZz"ir.zKn%P/R\6}('jpzҖovf;s{[i gc% WF< Ŕ‰HKH 0M,Sz*ϬWyd;:Q:z`  ,UDmhZF.9|k4M&FBh@{@{uXMX,&*}x'G%@I@RE !f_8&U0$|M|N8ba""o=UIq N@`-.+-Ec6i֧T)--T$c2 9SHۼJco޾q>RhQԖ/+(Ei5=tZ"[l@oygzPU+\ީdYy2^(0DH@ @ L2  ŀ`Rنp8@A0ȄM3*M6MC2D`BdNKb\"s ʩbuD+CeP Z_2d8 * (}DmwhCQGg6kMX\sE xOFbDYjsUϽ;%#z7X?(FH;@z}"4*izt8! b#Ba1/vLM0Q |.1H$h2C0LbP32H0[Csr9smkԟ^$0cVlTn R-_x28U)hĎ`*3(G ө _ Dpކc`JNC!z¿o/+s8D`d Bf* D]LHDFVFЬ(|j@H:!bc3!#2e44D^Jr?}?򞾯77N"ӑd fЛ4 X B0whh@\贲^/uJMB+n6pa2BhKa8Bl.`V0jPZ|_Q:[!)B6~1dGHB!0 @CְXh@4g"ZT289RR"("4& IJ2<MG2A~nOe^ްi1~KH֞|x@1RoYϙGwBBqI2Edhѻi*0(ţFm6ulh3êp Jё٠rIphfHr$VˀdR ;*EKme{sjS_ZggmRs`1mcPKEF`I@@1@ȍ0̌QLp"vSG1^m 4k±kyj!?yj301{i;|_: @S`G% a:r'v}e{_gXZǞ$TqD"l\Ŗ3{dDP`w_:|7]& J :bx'&U5HEA(BƩ3<D A > bqdL08TPY(X,]ɷf+j4gDB,ܨLNdYћO@*0(mFmMeghK/?s]{GwĆ f#EB"VQc/ʚ ˸DBg6cdSUhQ)zڂ01FS.Q0ؽʶcn "^c0{QFh$y34%&͙OHR.6icI< CcҸ%i꓈AVPg ޤǷJ=%:힑P6JE=.6G-Їˣ4KM ,Z28lHPb+{6XhIKS 5FRi`I[Vå9h69JO/ e̮?Oi7 SҺdgL*@<@m(knpJf $ u3`Pp[T 1&Rj&DQETK[Vt40@(F*h, Bȋ8' ،lf3!az*,26P!rqWji|k=낊ZiueU`}e2P%fHpLBq).14j{' !Yw4lۈQVeT,4*a$Hres\́D$DI̒UPK+cI 14I$14hQ"sMyN4 L VTR$HeEJ.-e˪1OKJU$SVRKZRqdkiGxMiøe @#D K `,%D K `,%D K `,%D K `,%TAGTest 1Pudge1998All Rights Reserved%libfile-type-perl-0.22.orig/t/files/tarball.tar.gz0000640000175000017500000000027310131560406023114 0ustar bastianbastian00000000000000^E?tb.tar; @;؋LdFR@"HᎲ-q.b.{`N^fU1>k83N&lXMƘ$!a]—y媢:?>*i^Ng%O/:@D2jR}E%|C1(libfile-type-perl-0.22.orig/t/files/id3v2.4.mp30000640000175000017500000003450310131560406022061 0ustar bastianbastian00000000000000ID3sTIT2Test 1TPE1PudgeTRCK1TDRC1998TCON(37)COMMengAll Rights Reserved@DqMACRZ@S[ШH&>1998 Fools of the World0T4ame p 0b@XH0T4Xhr0R@0R0$er t0b@p0R0"0RuԲ>*0b@p0R0Rvver t0b@ 0S@&0ft 0T4%@uԲCP0R0RoRPame Xhr0T4 DUFP9n'XJQ x|@;Pc^V^qg {8G_yżI2 >Ґ~ %G ˎ ,;ϔq2 -8O&\p`Gϔyk[ϔ.}>  ` j@eN`Eoƕ}}/ցr<2 _4_AP\ WLNb07@=[/XSrlPdlp}CϼXB8 ]{ d {+D24ME)0$ hU+[0O~ېsGj "B"8 ϑ/=-/a*C4XurA*p,gql翤]a ZjR*esڛIq%vdfRf@*T5wKWHiTNЖ!$B2?#ekגI֐e=ᅥ  4a0gf"\ŗ:|p"2(Ej + Pz n3)`e#}PaJXi1(J73GLT V&[ԈL(Y͇Aʺ:4qv|*vYSzmw5+ÚBzđٟm@Y߁M_d i(Ɉ few%* A=>f1c F(8@ j fptiǛV0AqY}WX <>uwА0F}%#;+wIDSJ dKfS(eqMLeip4Z <ܐ! IDHЋy &$е o[6<.i:jXX'|`0LcO2ʬeO3tբ4lC`:`L[S#lgsDؠɳ{umػ&c-T` <ˬ$LH:E8;aPf|A|0ˌ5MqSϐ/jW BdwFvYKpN7uXv̭ !A pZt[s+NEr5i2NVđGfQHa 8+bW BN1Q!䥯21;0Dw1 dovݲO2enq3H?T u hJ{ge=t8p`;#2*1XZi! KR³8b1,c;*&!rl l2dgfVS,5mXָk ŚG0Ƭ~ムH  fd&ئb'&IlNgj!:Ӊ4vSg yt3aDѣ2Pl)b (ɂ,A(ĦiCp߱~#)MXZMRi,W2V\ǨooTQC0D‘_gJﳠ82ks{YZtʍv:$A  ":"&b%Ȣ4ra-&c@ IW/!9zJҁC|GS]DtrrtVFqq=Xj_JtUWz0|<6Tk(ZJZz?yQXŽ9Hdg;L-{QM0j p QYj#GA gD3+ ,Ď$ D%xd&\c 9$IL 6- .\NԦ9ğt5.ڲEX5+L|,<;_Eu7/r!ޝZfaR1\tD@HOPf]Y3J%8 3G*c"?PpE2$WrPG,)b8L8NJ/`!GIS6sLPÕG  k mI6~]k8PT 0RsЕ rM N>(AdOhK@*x(OLVi@  LwFIQQ а00dF@F3rluwXI%˳EcCt=w^Y3c"Y &Oєӈ:L`K YP`J%(4bI0eq|x "Rl3@Pppb/2[ T'JL:)9etߧ~jPg"#E59jWB]Kgu T" \Ke_q_]Mi;תdRBlsp6$@$`a2VB D9BBEA0Q3lD,Raa&_hedˀf;<U(ɟKLqiT8C0f#C1(FdAGrG&) ;ʉhNge(aAm:7`ԣ}Ͷǐ_NR suw^L3hyGGyHKXҧTѥ-7Iha4`AF7;[B4'))*gLk3;V进?9('G&zf`%ö\˺W3L`<{-KV<. db@9P7M8bx.MM\ Ȁe"'0 MF;C^<,Ogv{<#乓ڃN`/ Y?tdހhқo *U(@Jlq@ @pqj4kȊ=!ǁ5ῇ¶!Z&v"0:@9^5%'JEŪ gN󗵋O/cDb--N 5c,2gx`0M0!1@C-1 H*A̹FRDr2!@)~Zjp>9"ZymNB=r9a7 ,HjoJ4@&@s9dH$ḃ.s#PfQ"P( ` .JA ߦ$JԘiD"`,2,/ؤ'% El/f:˳d_R/ @7HMlsp ԫ[PVHnPan{1JX@q}0~ BYEJ71{#إE|)\D1 5R;p\I0 1CP;D4B\p*(1Xŋ(җ PCLx  3Z86Eܓ|[@WN1`ë.c') Qɟ}UwhtºhR3նԘ8 3f1XsRPB :PFBؒJa\jM6cN'6ƈnVaF9 N&ϢcLZ6X@0BU{A9)nƥQ+Yd\O*@{HmWhip[Ux&\C44}jT q+,7^#@4Yly0+S_+Gʎyo`uob/ 1 F,`!Lm&Ј9;Kg 8W1#1;yU{iV5:W ry=Z7sN% F$äwp>HCp >xYcE'Pi^1 p4:#t4J@愦c&l.2hEiu'AM7:)+@lS,U ۩ްo>[ʖ-ח-rї}r`%ERBgEU }WJOGTI/ucfR1ʊѧ daCkȔ32ǎ nȁ"&HvhƆ,3-nẇ291(93{"SdA9[|* (eDmlp3YѢʀscrurʱx[6gqm/>oZz"ir.zKn%P/R\6}('jpzҖovf;s{[i gc% WF< Ŕ‰HKH 0M,Sz*ϬWyd;:Q:z`  ,UDmhZF.9|k4M&FBh@{@{uXMX,&*}x'G%@I@RE !f_8&U0$|M|N8ba""o=UIq N@`-.+-Ec6i֧T)--T$c2 9SHۼJco޾q>RhQԖ/+(Ei5=tZ"[l@oygzPU+\ީdYy2^(0DH@ @ L2  ŀ`Rنp8@A0ȄM3*M6MC2D`BdNKb\"s ʩbuD+CeP Z_2d8 * (}DmwhCQGg6kMX\sE xOFbDYjsUϽ;%#z7X?(FH;@z}"4*izt8! b#Ba1/vLM0Q |.1H$h2C0LbP32H0[Csr9smkԟ^$0cVlTn R-_x28U)hĎ`*3(G ө _ Dpކc`JNC!z¿o/+s8D`d Bf* D]LHDFVFЬ(|j@H:!bc3!#2e44D^Jr?}?򞾯77N"ӑd fЛ4 X B0whh@\贲^/uJMB+n6pa2BhKa8Bl.`V0jPZ|_Q:[!)B6~1dGHB!0 @CְXh@4g"ZT289RR"("4& IJ2<MG2A~nOe^ްi1~KH֞|x@1RoYϙGwBBqI2Edhѻi*0(ţFm6ulh3êp Jё٠rIphfHr$VˀdR ;*EKme{sjS_ZggmRs`1mcPKEF`I@@1@ȍ0̌QLp"vSG1^m 4k±kyj!?yj301{i;|_: @S`G% a:r'v}e{_gXZǞ$TqD"l\Ŗ3{dDP`w_:|7]& J :bx'&U5HEA(BƩ3<D A > bqdL08TPY(X,]ɷf+j4gDB,ܨLNdYћO@*0(mFmMeghK/?s]{GwĆ f#EB"VQc/ʚ ˸DBg6cdSUhQ)zڂ01FS.Q0ؽʶcn "^c0{QFh$y34%&͙OHR.6icI< CcҸ%i꓈AVPg ޤǷJ=%:힑P6JE=.6G-Їˣ4KM ,Z28lHPb+{6XhIKS 5FRi`I[Vå9h69JO/ e̮?Oi7 SҺdgL*@<@m(knpJf $ u3`Pp[T 1&Rj&DQETK[Vt40@(F*h, Bȋ8' ،lf3!az*,26P!rqWji|k=낊ZiueU`}e2P%fHpLBq).14j{' !Yw4lۈQVeT,4*a$Hres\́D$DI̒UPK+cI 14I$14hQ"sMyN4 L VTR$HeEJ.-e˪1OKJU$SVRKZRqdkiGxMiøe @#D K `,%D K `,%D K `,%D K `,%libfile-type-perl-0.22.orig/t/files/blank.zip0000640000175000017500000000027710131560406022163 0ustar bastianbastian00000000000000PK%B/1 blank.gifUX 7F?$5cstLdd`d ?YtlS#5PK%B/1 @blank.gifUX7F?$5PKCflibfile-type-perl-0.22.orig/t/files/rebound.wav0000640000175000017500000004632610131560406022532 0ustar bastianbastian00000000000000RIFFLWAVEfmt DXdataL .l  !`Zo.. #  3m`,ܶ^ %+wFzڄ)<K!1g-" |Da%,,,)K$~ͣyޒbZ&x3>,:=2h"&=713+;͌&ɽ[!,Q6?<$H (Йٹ"͛C] V#;HG7D02.5 y 9b09FgD5%0tfľҁ* (I7:=?$+ -ڮ.˛1l#7Ki=- m޼H0n817a::=T5ʩWU(Te.yhBh؎*?(@3'C=Ď1?h,3>;B*s؈laD6*8A;3*"(Ϥ4,&1L=5>_*Dۑȣʨ֫ (6964O2UUɛh] W./?:^,a a˶m-!.27:$OYJ9'Px)J>V70(_ҼHB!- :;E*pXLą̼܊0135$|KΈg: `TG%;87]/'qeB"α@s)4'=,{ 0Ն̴K!:,/1<4*M0.60*t$-qѸͥɚGN -2;2$t&+\L'-33!Аb416 ; 0/.-t /Hb|ϱߚ9 194,$a Ֆ9"-9}- \#߭ϥR s%+G2/d;4l;{ s+b,R-@.> ՕʞѺ Dx-/+p' O {ܐ֤ _)45,Z$ W| Ԟүgo>& 1R0v$ э;لB%1,b3&# iҥX %)N-* n&R}` )))X*DB @ >X :T'+ )&r"]یN}y!y/*% t0u;)-& / 7]8sٮ0Y& $z/*! Bao}T" hc\)j.$JN/؜/r]$ - )4ܑ[$B T 'n.5# cg#c*({c,ݬe)! *&3,"I [t u"()CrH}r[E.5 Q$)# Z aڅ`8A 1 &?*e{֑$޸3!"'~%wqiAZuߎO #)K!N zJ@۰:J[j{%' R:hHF{ '#[k{@c|)=;:"( *`%އz jC$%<=ߺۣ^] &"yb+Mߌ5 \$ "QcXLLhߡk 8 !B aU^M <  }H X ."| T t3]6G! D Nh['# >Y1tAv#5yaF߯ Wz  2)c (= vhFUd3Ld'Y@n )^HUL]Q. {,]Y 8\, ;|/#>7vPex !fq @c--'vq `\0J<  |1 IH1 uc':AJ UthQ;ZZ\\| R\foq0 (|] N <3* ~C9qKX6uC `F/|\y Ik)Ec v STR>60 .zvH2 xzTwY5 y5 35&W$nT; ?`o_O>PXw iuS )e nbO 8[ ]9o  p'\!W E ~neJo&UY] `Q;%z"v[ r? ~!;Sl[ S >y>H3\ ri]R ,eO  X+NO p2g -B FZ ;1+< M} 7g) XV2  ny` WNv| DQ_xL# BE \|@S# o]/Iz  2 TMh4 SK SiZ [ky T p._$ B= oB C . kF!XK d8 jt#`_ % +DtR1E]ubn m_ RD [a (T + vJOb{J _k R*yG kA C B*Q1MN 5 -_ /t 1[cj p O_MY%\ # Q QTQtO vM  e9j i C  qYf D[s R C />e : w P *d|dLs.O ( + . :Y G Lxc!_LZ h ?fVB N g DHzO7k( x ! E Qs#oD F \qTr Z A ) e.a(@Wy+ \ ^ `aODL  ^ B` W1[wuF kO2CoJ ' v'/$d6 quz7lc4K  zY\ \IN K i(u;U MBy,< Mz rgm#Eg'  {sEDjK=bk|] ;ty0HE>70d$SC3+ F+R3641g.--G&`3,f6A8TfH|OrEyM!G$T[b]7BNZp,eJYbi<;WnX?X4b:bb1% Sf{j  6a^[B@#9N]Mw .DQ%8)WR.NA&%I&3tpHV+QjB|hFyT+\Qb/4e2"R{| A--b7 y?< 5g2Z 3+8c(7/Tam;7%Zi:nTg))**-/]U W0wyfj ;b $wbBkHB@y{>kCb:MmS?, WF8"mtM4ETe6$lTe@U!8J B~t{o4~26\DW +H7m9H?$Zd <*uajJyj,h.wya9Rj9V+E[pM,7WQqD(gikm|;KST{nae~0G^H#Mv |^abe|Z*1B4&]qS#< /IdkS_yY89`ZU(22p;dG+7|Tq;/MmhcRn&TF~?>I(cw IqL%&I9qOjz7!P1]i326Ne}NRa%|}L 'A["4K #fF&.~h;* a; c_ ueu8v0Z.-*)@rH?(QX ( ;#>X|R'}+bz5}%J2uM$TM]t1Z&uY ~XaPW]d<mA%__?X7830~-ke4npZWV){Aa8\(}#UP lT?|gP Y?U.Uq|Vk;)}"arE&s#B`.}U(o4k_dL:@gFTZ SpV:*{ /Qv_!aS7X=Ba{rrx{G#q]6o9+0=72,G$o>hQ-un-}/3p&"sSqUBP] dCYQ"A3 l/` (r'ZBH1Nxi%_hN"K<3E7Irg5Dm, qE"I(FY%MF`FN]v9lMm1yZLy+qLC#+(mA6 (5(n;+ }*<)r9" w%@+x<oB0Ab A7LV?>ZD:Hl 0v4W;`-gY{G) }xdg-#EK!0@5"2$LtR_-l po$p=;GWT$jjCw^au>70-0H5PmH[(?}rW jZ RN [RqIBz#V)S|CnXJ<\7l-6XyrOf2~UU|N!Tx|KPV[hj(k E|HU Kb\p f^UM pr_*XRFB%|)]SkaX`'y]E=mlm%o7ISo&ddfjTzX#{'R I<_;~8~FHc~3NX.}MqQuoko'~bCOG1mQtUn"}|xQG_(qL o>z!apL\p+|{Hb?#Pl>sz9lBPX'Lq})~~}M_< =r+R{b{esR1lK 8_A3d@Vg(Kml WxN%~DB\t@x1z`.kfEYep^qxXy=f0le^W#ZDvQ iz^B$ln$A^|e Rn= _+Y[^_!lDwD'qpS7f1F]tJ|#`[#tLeXJ;|v1Rte Je5p2]UNHq#Fjs.;zl=|%]ULBk!A_w43nq> $gXG4l.BUg04es:)k`?|IIIHx;[m-4jf3/mT9t@DGK>^[ @sT!@gH* 7FB>00EZ<%Os:"Z`5 $_L4??=< &;OK@eEJj< ST4RB3#69;< &8L= @a5#O[++]K#5Z=>F3"<72.*18> "4E7!<V+'IP 2Z@@Y/ PH#.X8 =G.L9%*?0!64+! 4.)$$-,*(*,.&*/.%,2'/7  *3&$.8(3+",5 &/-!)0&+-!#')%%&&'(%"-& -,!7) 33 B+89%K+ 9='I(6;&=! ,."(! .%)2 A)09"?%-2  ,,  ,/ A#11 "4  # -(#92&"-  ( 8"*.), /( !1 ! 4  &* "  /+ "%(.  %.  &" * "- ")! $  " !  #   #   ! !   #   $        "    #                                                                                      libfile-type-perl-0.22.orig/t/files/blank.gif0000640000175000017500000000006110131560406022115 0ustar bastianbastian00000000000000GIF89a!,@T;libfile-type-perl-0.22.orig/t/files/0001.avi0000640000175000017500000007346610131560406021443 0ustar bastianbastian00000000000000RIFF.wAVI LIST(hdrlavih8xLISTtstrlstrh8vidscvid@Bstrf((xcvidLIST`strlstrh8auds"V 'strf"VDLISTjumovi00dcttxjx }}}} RRSS ```` fhfi ^dr{==== ?(CCDCikhf VVVV BBFI6430MMKL sqooYXYX JHJH$4 ppsqcccc B@A?STRTONNN ecaaEEEE```a 1-31UYTRuvtuqqopZZZZ 7575;@A8!YZZVPITJ+VVXWZZ[[ lhnmbbabPPOP >>@@]\\\ \^^^]]\]NMON ONSNUVXX UUPUwtwk<<<<HIKL CDFG 2231;9:8rrhlUUWW QPQOSSTT ]]]] ,*.,vvwvJ^`d?Q=OqvtKKLLSSRR eKmRdffgGFHHNOQQ :8:9ikec]]`` RQQQ ooppYYWXaa`_ A@CBidpjZZ[[ GFFEHNIP6276]^^\ #*"UTUT __^^ CBCB QRQQyzyzKLMM ;:>=HHII srqqXW\ZtsuuPOQQtustWWXX ]^__ IJJK WWVV Z_]a`^gcHIDG mnnp¯LLJFHH@>[]Z`][bXM4,5q[ZKK1-$%XR^bz\h ?2*5aaZ[FLMJ"~U QQSS ceab"' '@6K70+(% RaLGMID=HCOPVW WNiW uhgg_a=31)hkfi#+ DGJLrqn| 57>?+!4-OMF?JA7466;:NbGZ`o[g#3(26I2DJKOQ _\ef 2077nkaU QQJKOSGQ^fnj  jnmkhgnjLA92__[[ ('+%QQZYjYn`YbSbUYJH!/HRZY`&;FCG!4@OO_jqucXMAOLJJYXWV }h] # 3) @RRD+'XJ 3_B'EwXp02au`%(7XaNbH_FL4Tfkɧҵ+/zz $lgTFhgKX1A-9Odqn1?[U<3jhH.|DIT:d@} %2FJ1)$թB9i{[pGPKJ;2iu62ė %!JX+Q?LV E=Tb5GUTHNlleW($-??>ojjjTTjj^?j1Vj1IVIIUmooo>>o5mTo>xooo?j?1Vjn@II!@A&&&V@V&P) )))))i9*D*=9=9==*=99999**;L6666mU5mm55m>55>mmmoo>>1T^n!1!!AVVV&VV&@V@! ߌ) ))))iD=}=9*99=99999==9=*D9މ⽔⯽6bbOFFttttt0GCCC\\\vv``v```vvvvygyyyyggggYUggUYYYYYU5YU5m5mooa1A &ii11nn11VV1n@AV!Vf) PŀrDMM}}MD*MM}}M}}iǶL66tt0QGQCGCCv```4````ww`` w-2H-%-77-vv-77gg7YYU5Uiǔi ^1^^1n11V1nf&f r r }}}}}ט'Н'''fbGbCCCCvC\\```wwww w ]wX -HwwHhhhH-HH-H2--2---vvggYQF0iƔ j^j^1V^V@c Б++''L6bqbqqq444w4w w w H ]h ]]XXX]2h22`2yyFriiiiaaToT?aї&Iirrr++'䂂\4444w4\w ZZ;h wHh22%gUtbņǮaTo񩠗i n AVrrrrrrrrrPߐ'Ț6<<<<333㿃ZZZZ Z  _4]]hHh2%gt#ʆZ;aӗaoTooToT T^V PȚ6666̈L(6((3(33333//33SzZ Z Z W h2\\y0g0:# :#::iO5OOOOOoo^TTO6<m5k5kYOF50GQUUkkkFkk5kUkkGGFGGÂ<ö66<Kzz((z((B BBN.Sp::˟I|1>>UUUYYYgYQttT񗠗ѣj??o>>UY05YQQYQQGkGgQ7Fkk<<6<((ٯ,(z{z6S.//33//WS.Bɹ..BB.$RI1?n?>>%7CtgFOӗaT1x>m>m0YUYYY7777v--7-qvC_C__L6L66<8,66(zɹS{.SSSSW..B.$$..uu0"`qˍ卣ї a T???>||U>UYY7%77%%7777777777``4__[[[[[p[<LLL8S,z鬢SS.{SS ~W.~$~$u[[uJ[(s̍җȩaa?y7-77Xw%-H2%%--%%XX%7XX-2XHHHhH2-7%H4WW[p[[[[[$L(38,z鬎zz,L6ɹS.S.~ep~$~~$[[$ppJpJuuJja?oToU>U7-X77XX-X]XXhXX X]h]]hhh2XX2-H2272H-QQF33/[SB.~up$~~Ӎ6<<,Ê6,8zLL/{َSR~ ~s[.[[$uupuusuu##sppRs_xCm7%7-HXH]XhXHXXXH ]H] -%2H%%2-vyFG aƟA3/S//B$.̂LL{҈zK/S{{{z ~~RsKN~$[[[uupuusJJs#s#_v-4%X]]]X  ]H7-%---yyQQFa&&WSW/.S8(,L{z{{eeeRe.SW$ B.J$[pssJJJJssJss#_q-XX-%h 2X] ] h]h%---``yyyQgggFOaaAIn@///S///LL,8,,8,8,鬎S{SSKٷ $~.~z~pSJJ$[ppsuJuJJsJs####4h  H2HHH ] ]] hhhHHH-%%%%`%ygYg05|a an&n&II33z((R<,,,z8K(zˍÎRL ~..B.湳KlsNp#s[puuuuJss######ssw4 2hh2h%H 2h hhhHwhhww2222%yggGGQGFOT ^ A@I&I((Ӎ,LS=  ?(CCDCikhf UUVV BBFI6430NPJJsrooYXYX KHKH$4 ppsqcccd A@A@STRTONNM ecaaEEEE``ac 1-31VZUQv{t{qropYZYY 7565;@A8!YZZVPITJ+UVXWYZ]^ lhnnababPQOP >>@@]][[ \^^^]]\]OMPNONSNTUXY UUOUwswk<=;<HIKL BDFG 2231;::8rrhlUUWW QOQOQSTU ][^] ,*.,wvxwJ^`d?R=OqvtKKMNTRRR eJmQdefgGFHHMNPQ :8:9hlec\]_` SRPP ooppZ[VWdda^ A@CBidpjZZZZ FFFEHNIP6276 ]^^\ + VTTR `a^^ CCAB RRRSxzz|KLMM ;:>=HGIH srqrXW\ZtsuuQPQRtustWWZZ ^^_^ IJJL XXTU Z_]a`^gcJIEF mnmp¯KLIGHH@>[]Z`][bXM4,5l[ZKK1-$%XR^bz\h  ?1)3aaZ[FLMJ"~U NPUT ceab"' '?5K60,(% RaLGMID;G>PPVX WNiW uhgg_a>4/(ijfi#+ DGJLrqn| 57>?+!4-OME>JA7466;:NbGZ`p[g#3(26I2DJKOQ ^\ff 2077nkaU QRKLOSGQ^fnj  jnmkhgnjLA92`_[[ '&*%QQZYjYn`YbSbUYJH!/GQ[Y`&;FCG!4@OO_jqubYL>OLJJYYVV }h] #!3) @QRD*'XJ 3_B'EwXp02au`%&8ZbNbH_FL4Tfkɬӹ--{| 'lgTFhgKX1A-9Odqn1@[U;3jhH.|DIS:d?} %1EJ1)$թC8i{[pGPJJ:1iu62ė %!JX+Q?LV C;Sb3EPRHNlleW($-Um?To>xoooo?^o@II!@A&&&V&P)P)))i`9*D*9*=;L6666ߛbOtxx0Goo>>n!1!!AVVAV&VV&@V@! ߌ) ))))iD=}=9*D9މ⽔⯽6bbOF0tttt0GGC0YU1A &ii11nn11VV1n@AV!fVfd) PŀrDMM}}MD*MM}}M}}iǶL66tt0GGGCGCC```v-U5Uiǔi^1^^1n11V1nf&f r r }}}}}ט'Н'''fbGbCow w hww 2HwwiƔj1V^V@cҗ Б++''L67bqbq4w4wwhw w - ]] h ]hX2H2yyyFriiiǗiaaooT?aї@Iirrr++'䂂`4444w4\w  Z;gtbņǮaToa񩠗i n AVrrrrrrrrrPߐ'Ț6<<<<333㿃ZZZZ Z  _4]]Hgt#ʆZ;aӗaoTTT T^V PȚ6666̈L(6((3(33333/S33SzZ Z Z W hH\\0g## :::iO5Oo^TTO6<m5F5YkO0UYYkFkk505kÂ<Èö66<Kzz((z((B BBN.S[::"I|1>>UUUYYYgYQttT񗠗ѣj??>>05Ykkkkgk7kFkk<<6<((ٯ,(z{z6S.//33//WS.Bɹ.BB.$RU>%%tgFOaT1x>m>mYvvv7vqC_C__L666<8,66(zɹS{.SSSSW..B.$$..uuU"-qˍ卣їaa T???>||U7>UYY7%77%%7v7`v4__[[[[[p[<LLL8S(z鬢Sz.{SS ~.~$[[uJ[(s̍җȩaa?y7-77Xw%%-X%H4WW[[[$L(38,z鬎zz,L6ɹS.S.~ep~.~~$[[$psJpcJuuJaja?oToU>U7-XX]2v2gQgF|33S[SB$$~~Ӎ6<<,Ê6,8zLLS{َSR~ ~s[[~[$uupuusuuppsppRs_axGU7-7-2hXXXXX]yFQ aƟA3/S//B$.̂LL{҈zK/S{{{z ~~RsKN~[uupuusJJss#_v-42- hhXH%2%QF&&WSW/S8(,L{z{{eeeRe.SW$ B.J$ppssJJuJssJss#_q-XX2`-XAIn@///S///LL,,,,8,8,S{SSKٷ $~.~z~BSJJ$[ppsJsJs 4h05aan&n&II33z((R<,,(z8K(zˍÎRL ~..B.湳KlsNppps[s#ssw4T ^ A@I&I((Ӎ,LSYZ\VUIOK+VVYWleqr`dbdPPPP >>@@`a^^NMQPSUOSro}nR;MjvKJMMSRSR aGjLecgjNOPP 9899qpe^nopoh^rl~H7FEFFFRAO0.24 \]]^ -#{{z{tsssttwxRRQRuust]]^^ [^\a_Yg[mnlmLKLGHGAAZ^^c[VfTdD (kv[[KA-.(#\OYevYhB1,;abXXFJLJ']cebb$+"&F7N50*%#I MDMGF9J;VZcW!mfijY\?C50% ijfi1# 1;@D-!3,(QN?=JA77M`F]bsco"5'60J-C3056mr[Q OOONLRCPaekj  ilnkGB=3!$)%mSo]UjVcMgHC!=" GLYXU;DCG4;OS]ckrtTTBHOLE۽ab" 3&#BSSF'%OW)4_D*?aG{C<`Z#&8\eMYLkFN3QefǪԫ+) $qgSGeeFR2B,=Qbrm3B[W:/kjG/q2OX;e?v$3EG4'ޢtC;_QsEM MJ<-isH4ۀ"#PS-AB`J@6Qd2JSWJOnlcU&$(:cjlIR9V_FS kА#1F̐ţDD99=D9}ݯ66cIcPddddd dddddEEdd PPȽ!"ȩȏVVVVVVV&nnnnn@I&I))IccccccdfdddP P dP EE EEddEEEEM*999*=*=ݑ}}L666c!m?xOOxoOmoom>oojj?TojTj^11j^V^nI@Ix0000000mm005mQUmmUU>omoox>Ooo5moo>ooT1 @nI!!<@@A&@V@f@@ P))DD99=*6bOOOOtFOGGCCCQCGQGCQQQyUUUmUmm5>mmUUmmUmxom>T oT^n^n!@AVVVV&V&@@  ))*99DŔ&6bbtttttttF0tCGC\v`4vv4wv`vUgUUmUUmomo1T AIAnn11nV1nnn&!V&ffP €DDM}9}MD=*}}M}M+f)LftFtG0GCC\\q``4444www`` -w wHH--UUYk0i aj1 1n11VVnVf @fr r}}}}ػ+'bbtqqqqCqq\4ww4w h w wwwHHHH-HH-HH%H%gQg0Fi촴ii a ?^ 11n^1VVA&!cc+++;)L6bq44444 ]]w]]] ]XwXHwHwHHggFQiiǣiaoaїc@ԣrrr}}+) "4 hh4   Z;]hwHwHQyGa aTOii ^ V&rrrrrrrrrrrPr'<<<<(3/({"$/ۆZZZZ :]]]XhhwH-Qyt#ZZ;;˂a񁠗ii돁aTT T 1n11PP6È6R(((z(zzz3333/{ɞZ/ZZZ  _W h2q%g\yQtF#Zʆ:WWӗixOOOOOOOOT T?><666<</,(z(zzz,((6((zzz/SS{{ZZ ZZ_:_::qW:"េ_WW;"ሠӗiiOOmUmO50O0QF50OoOOOO5<<<<<<<6668,8,((8,,{R((((JlB.ZZ Z Z::W:\0g\`y2yQG &cciiѦ xTmY50F555550F0Y00F500FkFFk܈(666K٬,{(SKW(zNS...WB.::33WW3I"1x>UmUUUggUYg0Q00QOaaAii1j?oxmUmUYYm0kkQ0kkkYkkGkkgkQQQQ<<̈LL(cK8,eezz{sS//z//S//B[B....[[R.1?>?>mUU7%7CQtF堩񗗗ia?o>o>mmUUYYYvv%vvCgQ_<̖c䶖6L,888((Lz[{ܭSS/SS/S~~~~[$[Ru.Ȥ>G"7"`qӍ"嗗iiaa ?TT>>|xUU77-%7vqq//[[[cLLL̊,/8K,ReSL/z{S$$u[[$u$pJs.鍍я끁|T|O77--77XX%-X%%7-%HH%%HH%vHHH2``\//[[[[[[6L(6{68zR/Lz{,{,/R幢{pS[[$[$$$u[[upuuJs6RƁaaaaxUm7--X77X-XhhHXHHXhhhhHHHHHH%hH2%22gQQFb3/3/~J~[~668KL,,,88SzX[\V UIOK+VVYWXY]^ leqr`dbdOPOP >>@@]]]Z `a^^^]\^ONOOMMQPTUVW SUOSrotmTxOOjj11j^V1nI@Im05mGUmomoooOm@I!!<@@A&@V@f@@  ))DD**6bOOO0tF?UUkkUmm5m n^n!@AVVVnV&V&@@  ))~*9*DŔ&)6bbtttttttF0tCGvCCfvv`vgUmUUmomoj1T AIAnn11nV11nn&!V&ffP €DDM}9}*D}=*}}M}M+f)Lf?tFtGC\`````w`` ww wUUYY0Ǵi aj1 ^1n11VnVf @fr r}}}}ػ+'bbtqqqCCq```ww w gvQ0Fi촴ii a^ ^j11n^1VVA&!ccr+++;)L6bbq`4` ]]w]] ]wwHwygFQiрiTaaїc@ԣrrr}}+)64 "4 hh4   ıZ;]]wwa aTxii ^ V&rr rrrrrrrrPr'<<<<(3/({"[/ۆZZZZ :4]]]]hXhhXH-%Fyt#ZZN;˂a񁠗ii돁aTa TaPP6È6R(((z(zzz/333/{ɞZ/ZZZ  _W h2q%g\yQtF#Zʆ:WWӗiѦxOOOOxOOO|T T?x<666<</(z,zzz,((((zzz/SS{{ZZ Z ZZ_:_::qW:"េ_WW;"ሠӗiiOOm5O0Q0oOOOO5<<<<<<<6668,8,((8,,{Rz((((JlB.ZZ Z Z::W:4\0g2yGGb &cciiѦ xTmY50F555550k00FF005k܈(666K٬,{(SKW(zNS...WB.::33WW3I"1>>UmUUUgFQ0QaaAiii1j?oxmUYYYQgkk<̂<̈LL(cK8,eezz{sS//z//S//B[B....[[{.1?>?>mU777CQtF堁lia?o>oYYCC%v%%C4gQ<̖c䶖6L,888{(Lz[ܭSS/S/S~~~$[$[{u.Ȥ>G"37"vqӍ"嗗iiaa T|>>|xUU77-gq`//[[[cLL̶̊,/8K,ReSL/z{S$o$u[[$u$pJs.鍍яȁ||T||xY7--%-H%2%-{%%HH%%HH`\4//[[6L(6{68zR/Lz{,{,/R幢{pS[[$[$$$u[[upuuJs6Raa||xU7-7-X-XhXh%hH%%gQFFb3/3/~J~[~668,L,,,88Sz> stream x+T endstream endobj 1 0 obj 11 endobj 3 0 obj << /Type /Page /Parent 4 0 R /Resources 5 0 R /Contents 2 0 R /MediaBox [ 0 0 0 0 ] >> endobj 5 0 obj << /ProcSet [ /PDF ] >> endobj 4 0 obj << /Type /Pages /Count 1 /Kids [ 3 0 R ] >> endobj 6 0 obj << /Type /Catalog /Pages 4 0 R >> endobj 7 0 obj << /CreationDate (D:20040506094844+01'00') /Creator (BBEdit) /ModDate (D:20040506094844+01'00') /Producer (Mac OS X 10.3.3 Quartz PDFContext) >> endobj 8 0 obj [ ] endobj xref 0 9 0000000000 65535 f 0000000107 00000 n 0000000022 00000 n 0000000125 00000 n 0000000266 00000 n 0000000227 00000 n 0000000325 00000 n 0000000374 00000 n 0000000534 00000 n trailer << /Size 9 /Root 6 0 R /Info 7 0 R /ID 8 0 R >> startxref 623 %%EOF libfile-type-perl-0.22.orig/t/files/File-Type.html0000640000175000017500000000705710131560406023037 0ustar bastianbastian00000000000000 File::Type - determine file type using magic


NAME

File::Type - determine file type using magic


SYNOPSIS

my $ft = File::Type->new();

# read in data from file to $data, then my $type_from_data = $ft->checktype_data($data);

# alternatively, check file from disk my $type_from_file = $ft->checktype_filename($file);


DESCRIPTION

File::Type uses magic numbers (typically at the start of a file) to determine the MIME type of that file.

File::Type can use either a filename, or file contents, to determine the type of a file.


METHODS

new

Returns a new File::Type object.

checktype_filename($filename)

Opens $filename (if possible) and returns the MIME type of the file.

checktype_contents($data)

Matches $data against the magic database criteria and returns the MIME type of the file.


TODO

* Add additional magic match criteria

* Automatically find mime type whether passed data or a filename.


BUGS

None known.

NOTES

Some magic definitions in the mime-magic file vary from those in other apps (eg image/x-png not image/png).


AUTHOR

Paul Mison <pmison@fotango.com>


SEE ALSO

the File::MMagic manpage and the File::MimeInfo manpage do the same job, but parse the magic file at runtime, rather than compiling it into code beforehand.

the File::Type::Builder manpage, which generates the code at the heart of this module.


LICENCE

This module is released under the same terms as Perl itself.


CVS

$Header: /usr/local/repository/Vendor/Fotango/File-Type/t/files/File-Type.html,v 1.1 2003/08/22 15:43:23 paul Exp $

libfile-type-perl-0.22.orig/t/files/tarball.tar.bz20000640000175000017500000000026310131560406023170 0ustar bastianbastian00000000000000BZh91AY&SY, A{힀 @@(4҈d 4ђ%G)) 7Jja G91hHbA\4 en-gb en-us]&EG_eRů[wHgDLZ IsVBR4DeviceConformanceTemplateL2 IsVBR4DeviceConformanceTemplate@.WM/WMADRCPeakReference;4WM/WMADRCAverageReferenceS t E˖˥r2CiR[ZX  VH$I˥r2CiR[Zn{" PIy!3 ު|O(Uݘ&@^PWMFSDKVersion9.00.00.2980WMFSDKNeeded0.0.0.0000 IsVBR@Rц1HARц1HWindows Media Audio 9* 64 kbps, 48 kHz, stereo (A/V) 2-pass CBRaWindows Media Video V8WMV2ܷ Ser@iM[_\D+Pÿa 0aDV *VVܷ SeM[_\D+W U[_\D+7PQ,,WMV2u{F`ɢ&k6&ufbl?9lNY:#- ]VV% "" w=$Aδg~dߒe?&I:x "bG)Zex(`4@¨@c1^Aݞ!U$ ]lj@%^Njz ^Q"8 9̋`A' HYDbtAgji=7.m"#yE!~33 Eyud$8W<Ӵi^oTBb$ EQ C7m,P9 ӬR6W >gv0P*OqEA>L^]hrz _w7"17#"ڳ&SԩCUDibiA9)aׁpJ=[kYp"U&k83b`Y jxB^@J$\0C`D&%IF@8Bɘ3P5":epJ̌F!vI P" g2ALqY"@c$`@&8+ A`Z.Q% !"#@@C Dn~i4"d cEEJSPUEFU%6 $@! 2>r>Z*kFZ ؃NV-%B jGo :jY5J;^\)5!$.ٟn=E-)Mn;L_sSgz.\%cuX#7 " dLd yQ2Edޏ LR3PNj#$H.2%k&$Ex9IZ"JܬFr02` $,HG Z$ɚ$aL#.f̂ qP&`klIabQL`J y$L%f9‰P5H UC\**(T>WD>B"D nTĘJa~5(*ϐҍ*IkÊ@5򂵣 +X5ؐcU\BDhD-0 A`>@w>kO6!RҰd ҠhI؆?OvxM] {"B#J!zbe*g\g] {"BGn hizVb՝E hH_hq.B.J.jB3`VW / 5~ w iURZ*^)g*qɰã4Vf|t!0)@}ʮ^"`@00 %L qan. *mF B+ZX'F[sk%x{Jwgi5QzopP?qm-͛uuplatfkXT^$bU`aKOƿ'[Jr`>#BcbEC<Ԗ7mg͎#[ cM8,kRTVژ;%q1ی^);ϖQZvmEVf9{!)QR)̇9[tqxc0 %3K`/>7խS;Wr1.lvD!^!@**)WPNl\iYLScaOVR1\o2KEA@/?Um)O;n>n57g62G°y!P-B-i _u_Qw-g}hZ&DvL[-,T)29$#%*FAy 8tmK| 6(+Ћ .cg(t x.LdW&$SLEwIE)FƀV0˼i˞g$K;#jgy$¥:x[q[-\Yۗk]4l .ɐDGtESVR;IՎ&&p`x%0Tػ hw^2O!q I:7xd6V1g_kxp^:_ %%q 7h3^8!N/C7 C(Bi㮯\BM )WdqWE6܋VWѺv>L}r?`b/n~_Q9vZ":P"`:0AMv=bn jj֔ɞp8"@+l@:ƭifh:gf\՗슚OEZ,o-!2/ R."B{e4<ɅS,Nv1hf>rb\g"5p͹&웒j swI217ì}rIFPoPvi3LC }ΰ0IbG.s9P0w@d Xi88C. O`9Ԓt5=fc7Dso+`A $] {"B"?nln>+"K}Cw^\ !\G~YcԚ1^5]61 2ᷝ]"?T>gF6 l9-)in<:X ~/4$){I9| i p: Le- bH|#UB)A(a0D66+0X !&) #(@؀)&)Lƛ [knC8! j?Ղ)!˷`k.-E״Re7"mOcC߅ܽqzQBcYY+^[uF487  ex]\D"&x no[ sÞ/o !fL[ʍ 1UFQN=贫!LCtJ**Vsbc493~4ޕxdJF 0TdE fX0Me4Yr|:'6n"-HD8J.tﳭ1gxzv¡%xVD(;%5Z!d9E8RECb&6@^V8 8BVtJMc=|,WTfe:Lu ŷ*JVqͪrdP(ff7֔4zk\m8"KȑLyZ2O5Xn3W[.5H8kvhR\4V6U[s k[.nnl-FMo;z# Įa_Q,ƔdZ.YM.^gjQomRAT9ade q6$wGX;QynRTjѴ$`3F!&AE~Ar]b$u$Jn_IaHi89#.hihv@- ftQ"$J81Txx q]Ơ05!Z I*jnlep# DA;J'⸃E5y!)$ `#b)~!IA=vK%OqxP'8'tm\0; G!@ O.&S6CXˏon.Z H ﲐ|_t\$LB:$#%WWEroe6@Gb U},8]B.6> w:p{  %bCC(㾢hżz> fJT; {!= F}|>B$7yF[6p8'ܚ[%7)%:- ҕs߶i2ET،S$K5[˭p=8,.ʲӎ $Myۿ6Iex{Sήvzu҈XY~uDun(]% {"B^zo7k:W9x&ij'yb5YJוBYbQ!jF #>̂I:1K/|FCޮbeo&Pso#拀QDOg[A[L\wo~1d"qp{)Z`/ԴQB-oώ|aK$\"7/$ `[MWvKxDP+JJT@GꋽbA`q:ՂдKvTyMZsKJ\.pKH8s3vWw0#bno,W8OZ /Eį+cI䗆duǪ߷2Xh8ʼn!! dʛS+hۅB@SͧW)R8B_1Te[93l4ҵM2K?T[,S|%KZNF|fO6wVA]sG{"-g^V=b%-h!yHRԷ0qQb+j<Φ<0 a $t{ѻ*$Έ|G Wpńhu͆3CWz&jx.&y1p8CT#1}|^d-p7Svi{y\,.f'|Y>7h9_[J0؊"h>,?oڶݪ:\=yvE mThv[ҢU'PҌ{Jki_?SjNy8%3/Fܤ9n.J:أ))Gt٭hJU5yh;N;n24E-&00q۞{4iC}-E AA*5ߏ5v~ռ1HGgW A{RHXŸfsPY}6> ہT:V%9n6ֳwUmcMާ }.yD&pA7J/8| U Zl {d̷u9͚N*N2Tf rTsW#Gv)Hli%HE+!&KGlNprSU0c8HSDôZ6+9e,--֪:md g&j}Jo2UlgE=5ͦ0W qFmV\7.qC3@(A B4=g}e,Z텅vF~yV7//{,_ߣmPܨ+ ZܜL mAi 6-)duDej~ꈤoa1!bb.jp]P)"24r3- )5s(Eg.UW=] {"BK AHLsiJMnM%# pVdfO86]u*Y ֶ~ԉWw'>g󰐯8 .do|mwƦ0%'J7y\';go]UOvzԐS6$m⳸ɇ^z{-([X<_Ī+ѳq<$m"EgP -s֩_zGs׋-I WnʭVg2F6 IT5IjHR?tVU" .'EM9ٗ;޴mKݻHԕH:ki zvuOzWڶN&8:R,ATu }w5Z#y)wg1Nal]iLS7Ee`Uv(m e疽in+ \JKe™O$߇-2WJ'2٭wMر;wنΥZOjDoτQž-\]c+Kx-]-h^ی=mo̙sJ@bpi3to7Sʵnl]`=μ̉3͗ZZP Wm[,So{,CCZjn4Yz͙]B/YD ꖌ^zei!{ W jn[뭲Glg X< ZU%ڞbVLcYʹDk;y!<0BNi|-m㍬U =˙g忂io6?bUjfYK7ɵ?[g@3c7s@4L)Ad؀9Wa FǗeMp<ҍD}O3B찈 !_u>0 sk0;,Dd,,2$]TŒ]TmQ Q{k|$+"ĵ:lC#6T~ZIN$b[G HcMV"Pl ~?BsZ5' %~.0t?.)-)x #)4Zaf0[y"jq y`qʿ壉 r"FwEEUA7#+D.WT92{؊-SS8ܛ y$Q\<uKW9pq*vVT,4 u m,٣*j+q@3)҆]- {"B26 yvj:#w?X6Q FEQ(($'yyRu4b#nD_d y0c()H _J#&yGajĈj/?4#X:uLE`3kq7QjeR(SKf@qGE 6?2CƾyW-_2ZW-zʵ;<; X؃-ƽs=s۴7Qި{1iADlE@DjAH2C6i@II]mn)+Dvx.=ifB4Al 6ݏWdZ͢66&V0hCx [.a[^Ԋإ$O̺鵂~!f{q"z5372`,Lw |>y~^s7pšL*ͽ^➯:%6ݗnK3q!<a X˘ 4sg5M,戴{-q:Bo ޖ*U~qhK\l <̨ 37N9kJX8ԓ3*do+bl]ȽRƼ݌m{8 `#fQ 4vp϶6ئU A\8|2:NDb˲HM)Vbh92>[48QE|96Y`س73]#A"A򷙪agOE*Doe[k`8?5/o> 7YyS{%*{׫in?}0Aw=(߁V(Л''j5V+JY秕1̛f|fo[ ?<x@K$vn6+DTs~( HZvDG=} ܠ hTV.~5v/]n q:EVp5e8JҦ+ҸWn,սs kTWv-VQsXVִ{'>bȀ9'K30?U/. )o}cۖDm&[jg+~,Q  zeVڮ] {"Bpnv7?ofbs0K <<),fw8VY9\KO-SvV{""^ k\[.`Z :Ko̓VB>[[a7mY)⋨TdyG)/a@k^\;rAp?&o j`k .)h:Zȧz-=x"hEuKZmL$Y 8𧊓sV$PW Ia2[l##6= -oûxoy@@y[3O4XI=T6*,cL3툧yʠqdP4ےs01sň b~݇TE@Ź26j $C= YSgɦ= +:K6"+tU(⫍~_Idkߎt!c)`c/bC"tR$ͫΡ#ES&cKYni\6oL+YU$e;Jնkt )[ӈ,mɛ*E } :f^{ (EIl'W̒ yp f qG80s @D]: !}Zy  mFB/&AdXmyfƛjB@GZQ(to8(Uc/^pޮF?Z(ְsX""y6vuX$oK9[)J6_[T1F8wvSwxڲҚxCTȏ)v52)adSͽ-j25A,H?;b.Q*^xc u);b#36 @'UUStbNĥW#L@ͪT WT2%E5G{6< @ep<.sfݨ3@RXc3[` oҭ>4`͂)ml :0ggByv ]5! {"BF SXJ{{ZQ>^$TyEdɘ` u4ҝm7 .uNv[튤z_ /WhG'5uvKT;gn 8D\9)H UʯՈ&ǩۘYE`q &.?ڣ(Lo)s(۰4T5/a&@Y:%PWUd7k$HMBjDHE4 w F^lYF82. ҿ߷%IʉG'gyn\t_=}NqN81y\U$R!`)(M$~ x P*L5Qݻ `z1kC?&XaL(ryUoԏOk^{%ݞN 9p$ܫؽQ5[qO5gx}jeWC8<`!.Ix:2}0l*hZ*[sVK=8^?SjDž6;*^9-E#S>v5y߫{m__:ێj,إu' (=U~5;NVf%xs}"\hynھ^VW6:E=CCV"f6)]mѺNJ"Pm/D>;@z:PZ>3vFLL:~(S[ޒGTiMNGP^.ngrê`XQ`\l?/*UOnm Ĝb ]VV_TH%oo{>Dߓ]plYQf͐ľ:pn.sjȿ4Q91 A# H3P8/9LUI1" H5$oQ01"& &[&k2?T#3z IŬ0F` 0LjZ*-IiU#G,aҒjj(i*>Bm`nP+V4@EP*RaAnठ0AyWƒmaU T%XҊ@\x +]u0Mߘm_P]$eZGw?: $!.VԸ: Dlg YhcӾ~fC"dq{JyJmxcI|7.Sȹ)mFGbXl\iT 8*듌C3eF D\L׀3 !2H$3hD$ ` d oNqao$f AdO-RMQ p ғ*V&p]U"/8Fa0* $c (ZuWPh*`)c!QVj% ǼMHPae8@ eD(J.BȭU`HB`%PdL, j`TA"P VPYIWI  i,-4}I$(D $E@UIAE7(7SAD}ZK-aVzJ..7qzSBz9ު\XvBhf^ᇛܚp7Ni.i0nc"c6)R ZV;L$vS̆]"FR׌.i}  q!нeD02 8 q׀d-fK( $1LA"}k2LQ2 "#Lf2T#&Y1@PnTqB@@Uh{=L7z=c9n.]XDū/AA*r.ܔy8#!`N 會0g  9+ B0AC1I! BDAXl+L+ U m5+N+LYl&&3ً+^DQTHʀD FOaeP8I-!iRItnQzeTc8%DI&e"E!$T?w}'cW`y9R\D + 0P[ * Pߣ>!K91K$^Uma`E H2&T#Er 7F.Ůd,!&18ML<ə!ĩz$EE7A$TSk1rR_ $(jXx&P5jӚ z{vES87ȼT%PKA}^&.  VBNa&$=Jxbf;qڻ3+{E4Jf&AU, i~):9Ïq4eV aP9H$â / +`\N!o&$&DVPUV ,/%  @l`WHDT00 XƑQMw?MjR reSZsI}vwL 1&4/t& CթKM>V8ő&1t XXP@7 Q#81xfA+aabbEpp!qĉ7c  Nd_99 r+e&&.NL0/'`H6'MFVmWj}κԐoyc3qkIR/7EWMS9|9tq&j@1@*5UԀB +"BEE Y!IY?TIJ`w$ VTX"}5FTJk 1" -,@@`g!" @ .7Z[ ICH(@ @B(C'x5p]uI0Cd-qʠ*Yl!I]kd PCЍu> $!HZFFhL}t0c4ŽzvLI϶:UqV#\ó`98ģc#_3#FM!$ޤ{+dSv:\Gt%M8Eɖ1$(\Zz՟0wXi>ԼfU3tinYPI3񤗉J;Ģ(;YkjԈйlQ~ r6i}R͊iAUVhQ[{rDwߩd}x*WݳUB]CUGP<t{q0< (BVUeT%MO~lkx8<ܘ^d=VM.sK۳Yz缭OuGUxo~xud癭?U4ׯfzL?zBaWѫ加~)'r(y-[>up ){tQ<|UƟ:7Vm;_>+.ybimF^<#^ugUnX^ %e|_.]K2?OحTKǹ3Y8W\ö9oji4;lںͮ ,Üi<5~h:7l= R픑AObm|Dv/^<%M$54U(3rPrXf`?0[gl.!QX8Ovm8rmEilߥʇ=^>o}=Z<7oT~mFjN⩠hyÙv)BD%@7̭+vn3AS3>u`JIεd[@>ރ]] _eSGR}il`pݣ74;Ǘz,Yt_YeQ~K^?ﭘ0 U:'&2Yc3%+~WfU0c 7_Uh!TyTP>\Dv9G~2\i"FOv#edtwL-ZuKtu8fN Z'eL/ p-oYtV+ S~#2{6jG[l+Dmo^s/P;-Řq4Zo&(6ڔ?$IKp͍]n6 iEUj:ŻT5AB>~(xw{=٩vMQ 3TE\r.[/O裾=)uP{Qb@b}A$=q[1*ts?>3VꃬT^n`{ըRMfnY^ǢGoOQ|5G~V9@?2 VR+UXJd&|O@Qe`X+K[;j/rˊd1X(8ꪙ%Z\ueT?rR\5zX:UvA Sġ k+Rn_3)U)3p~PIEP_6Lj һP4ة\S=eȫwZ(8_A񢋮?p^[[~uHX>0`w2 T4ѕ??\mhJ=ߗS qc{*i&T. }g|/_^fʀ1ix=R\U\a̎2&)yXj[?|]h:}QT+X@3;Bf!~N+10.V+? 7Sj?۹&_`eU}%?}$Y~cz_K@oyU8_~+˜\uQf缥O Ǧr1A4iT܊3x+6kl`Wrp~𐫜<uʶNuBqDM*dj(f ]kl PCn'1T8BԍwYSbY’3jXI R Ƹrk'Vph 5HޓERm:Ӫj=]?x:LQT|и]DžEQo6B_}S Tr(J=ߗ~|=\E##,KR.`/TGcusF4ӀGQ^۾Rܺ;i[TE"nK>\ ^u qQp{7M*wbP bbXt23=e IPO+JZ̷˕]uyXwl_ʫx(GR /[.ꪫTt_Qn`ZYB 9pK. WU}<%|e(HE&TO`?Rl#>/cSpGsAʭ_1}&J)&%jXuM GW@!dS~SR@d6[;n%VW]sƘGBE0'x?*;m י\ˀ  ؐ_! xL b;ǹչwj]I5^lcTQ;=y4}Ѫ"uz6a˭AAWD`9UcEFë$sTg^u:U1L{\S?TKD|HTsijsfQseL{(hcΖK'ldaEgM9LMG'F"ΪS{31RȈ1=}Q2hR ۑ7InlnPN&+"?Ih-MT@gsDyekŒ~Y tHfb҃o]yj׃=n\#}St2-FRe -m=E)iMx>Uφ]¶,pra|0 $:Nj3  D_DYhD Ll9tf6l9`BFv~$ym0d>Xn8]ՙfSȴڳyHI%;*0J;M$!Ha0 iJSMC8gGWɂ!ISÆ<6n**#歉ښ3Y5=}ifbn}*UN&)gһJcLȴ)`">TSYЙ-Ddd͠fDW N j̀+ɊfsV}dLp\q]wBL@z'1g+=|-dFp`|dSZB bSVo7N-W\Ԡdyd"&CuD!dJᲳW|  DBI% dԢy< b -L%QLO +i*PYQE+`U !@lV}j$Eh@a 7SYt \LUeJҁKvCq 5P bgQҧ`@`A(KubScDy IJ$/23^Y'R!rVs:F7=q[Gd"3hOPo3{q^-sx]›ytvPA9svYN2r`bL I$L$37*!9(N]E@$DŽw +e /15_# Ӻ32a3'씼I!2drL^s0V-e\c0bgBa 'c12.)@"ۈs$^$bEaI$ˀCPd4(H-P2 $! ԥfn AF(`@B!k <`䟀\\L@|Qj~.Aj#f[`P jB,LBW I 4eKA>%&HZ>PJu "VT4woվ(PA|ZJ  QԤ`1_'{㗁k+i>"%GKwMec;#kRQs7.n%G4=A|Hq$͚&m+,i)Zx3kCo=%,_gfwj"0 e.Rq 3SfHx?`I\zcIͣ41Tp`Հc+0F֤0P`!@p fk$@82Z^ 7ef2`+FK`^`'2L #1I8HxoJD 50XG".>iWs .IFHQʒS@1ĀA-,1|HV gNZ!P 5XI y @q&Q:2ȒBIO]hOTQ E[I.pB3 Io!*`PAb~5ORk_  |DR\zXE=@$ ewj۶$T ],O  Bqr~\#Qj'򺙹.y*f/P,q6c<.nfRӬJ5;URYj#5~#Z:)ߛ7I4dɜ57K XClf..B8I\1OktFbbsB1IEʞ;yiTri!DZCڋݠhy~f-Gt7"2y?nZB4ts;%+_-`;p{ ?7TUj Dxڅ(˷jTQ[4$EzcU驵vD"=&(dT@9[EQ,3hO1jش|_pF*~DLtFmCeTtEzw@m*oRD(ѳ֦o,@w-xlQ9MNWuOFF$9897VTi?b:뻊puEιޱ;gQˠU 5*ۗG\rw/hTLyzP-UX:^mNB/*욀tE9 7ƲeP7/}f ;rDUޏ5B>:U<0P;YΘr;m[[2sԴWD4J7 ':l7Yw˨Z~c)M6Y7?^tESͿ (߽7b9EUU?Fp\W,R}oސwQg4€DFg2j֨9\i#/]OY{ޤ [|b=<W'vtFqe=u%}@>wH)? eQ$/V9iYӗJ8MTl_61<\ snU {Z]߂]| :OCsӓ6{31#X9M.5u(6J˔@sõ#(VQ|Dh),RNVs<鱻 j6bz_W}l'78ñ){g؄ [wnQs2LwkhCP}z8~LFMe=akt`S!Gp@Iwse;Fj_ORwRs"ٽhаvf?\Xkjvқa{l- `+m&:#S}(9OHi/L/_bZKʕ>FJ2D; R(@ب~`Y!n6LႯ1MZ~y{|(>#ڤw6[:9(kJj'UV@2ރ\U3wxWLUK#Ym$"=7,}ɺ%iMw՜$݃Zf%ޚrv,FAͽ]]cXi䑇 6:N~#Q*kW3/))G_?{:y<¦q:A=Fq؉V]Oz}D!JvEƛnMVSU#gUXi^oS;:m&Xsv{b) 2okSuBs-}v) tYs1 "@9h T_YdX0h9 M{ɝ"å+Aʨls7.aEQҶ\֮҃ucȣV={@s.,4B=`f1{c[2ooNCs;J;̸.vtK;x6sXydˌ~17v=P9a OPgi]~Fb"iD4޸ֲ:^*-*P~βwVtk[e)jݯio"d.sY/e4]cr)^q  bmSXmsަdzڜň|`tpKI8DH8BJȴ#*df9tI޶}X ꃚ @]s*pqRRRb"ȠnZA̫cuOfLE5_ٌt 75sk'cM:A#]^vƲNfsUb "-::q*C}\m ]k|- :OC%݄;+f'D<=0r+MMC#ou9 ex| ׺fP,OĠQl @x@!cp!/ PM"+3%޿4k L񸹠8t62@ V\*+vRtuR"2ʪ9bhŝI$w(u.oSv7s2 sbk[:XM[@RE8"LX#E,M< dӀ aq 5E`i05S&$DA L‚EnR+(Ш2[!#ZYU4>+@ PF|#T 5A=1$ ,"XC  !BT2KʁX)5,!)vO eB w !G56hF44=wG8*IrfxSQ\*\slӻRT}7AŔ͜&wM >E[;wS7No"S968V7973T$e Z:̃1c /R+0*H%$]q-Y&Xđ,5A2XqTriQj CFmqh&rjDa^0g'"R"F Ld^^ V@$H2RDڱMu@&EnZ`Ei҉ɛ@"1xdJk GόJ5Ĵ<pk}!T1 ڰt b$06* q%  8eʍeY&%$ W>T R 0^0 W?7.T+ׂ>^ 7`!Jdv0E*y&e+ҧ|`aV2^W`\K%7[ N.uRrEb 2x-_dTbՋWa:cyQ0Hf *#8 SVoNʼD@kOL *HjXK]usBbd2dQ H`VrDUBʂVH5JOV LUS 0|($➨ID Pk5q&u"D:Ai 2+0HU*UNnI1A .&5(A@!XW¯Q: PQHBA(کbA7𢪥Tnd"[G=q&Liy$ -4X;#(ݸz18Ӯm3 ], -B5#t0Cd*""NjưF Ǫ$nD[۽7H3(4hv;=VsGC,K]dsf-.^Ojn?u3km=UҌIi9)Lq単#9 47w%kpH/[pwݢ2.N)dO&88h5LR?FK!g|eI5i*eφpAŊxb}CotjD~ÇR:?-zqIyDMc .х ε3S yi>ä?4ݳ'SL M[w !lwC#ad]5K77[p P:'þLR4l4lD|Mc=][cf׭.۟$@hky;ݱi [&H鰇tG /Xm\P]#V"55RHwNKq=D'9tV騀EV7ipUlmn95fZ{=/uPju6/Tyv0;`wTZsپO475BSk#`g@p$[qcջ_$3;IvI\S;M~5S nAh(a☾/x9YWNܹa)l kr}&bHQcK_Ұƒ @.Ř:WNbl\_vk }zrazٳ\PbF OM~#Og?wu(0;X*)I]5S~z,pmӑ\bFɺD6%wDvѰue::G9Hmr4QW4RFEKGJ#3;+"P9<6Ӓ咬#iQ:č>bAXgNrV"FN:X0~ m(n0 o9̈`a:† Mg[#xֈG(y$U.T9f `]ezAtH LQ;gx$֏EuoS71u-!% 7RT`$-~Fbla Lސ@Zwu(Wܽ;ly`B} ֈ;U~stL>l?5oOkrK:oi&%B!&bNgNJl8@]zݸ9B$a1DǨlTQֈZeNC1@"2^hw>ƍͽiܒ#lT\r~Y>To~oG!HwL6\Nl̎&Obv ye<y謌rI\nsgAcnqIj#Cs@"m"C3dџ,cX3MUƚ;F;5If$J(wQ0wr p¡0*-D6=< } [cZ ?І貱 8,&OmKkE ) f@'M;`n0na-"Ѷa3ul [~jVӏq)d֔F@0R!2c!mm'?UfDU6g Juֳ;l:΄N(tNE &zQ_CƘ쵸sh3#̧1qVg@ntC)qfPuM44XĬ@2K-2w[ILk]0v"G Z{y2%Ji[wr1uyꂭ·ƨlc}'Ӝ9nşkCw&?>Q܀PE~olMF5޶5&I5N@S pk.DM.rzQlqn3Zc^cԬEuH;gzޭzR!$!PZ#X* (n3m[k˚]2 v3dI^DMG¦qng3c(HT-;y|(9@)ް!oi)#fO\U[Z-7q)VۋVO覈!B+RÀ?6-9^S&$\ ^VN-zI+fZƏ_XCN{bYfOGv>v]ƣr6NJOǁ"rp-,-<7xHxr`4nTv#;n ]S ZC]r<d:^4~Yh13 ΀Dzޯƃm#}Ep^8 8$t[ѮbL(ᶒ ,!vmWfG9"k7m=I;kGEh"qX߃G+t uOF>S_jrj|߲ Rb /.Ȗ74Ry1>'qpYsXhpZ;;}Bʼn\E^ 3?-޹Fm;BӜ+<]ףs%cx"I#Ȼ&'7dl_ARow2vNAUgF3~`-!^+IY3Uȫ8Sa>h՞r E3}|$(Njs :֎Py " B}"+-#k &4kUb G{o`n0V4InMSkJlSZoɋ+$"fN:Sa'ۋNgVQ%7ܔ3H}\WEЖI'2Cv!֖:V#&E(KZPfQ(j zS۹N0"\ Ƕ,KTE}[53gt|BLQmݞWڦ҃MQ% ~5|ֹ54n2 Gz [J$)NMiNdk䴊3!9-dd-Vs"\KDTuM[)IjfΟ"DQZl9֑{ĥswVMHؠ]^56CÕiՄf^@'YOku5ٳZF}n031Nr=#Zc^y鼽:MÆ }ZNqm JTNhMbi td[ST[Ә鵯 K+@äX9C JRsͶ8^v*77rFc-| @jN{k# 08ۑ }ڞC@FHmuN D"_ߏVmhWY;-s@ɔz$Oa*ZXقWQJ&C|5 +$1mҦK:qY~PƉ5)IOpvF:PZgX3YJk\y/xjgEb<5aA<7øAJ;TD%fyi '} wR𘏩i7I6ڜ" ]U2V"VR9'N鞚jYz_sKxY<ċ<җ" Ҽ_\ .>Qt9%*kp-5bqgVkD]wSfl`3љLIX̖ 17S<]'FV1 D"M2Į)I`N*$`Z! =p`2"/]Js/0^q"LI3]F XZ%{X@2fXBu1@>](@)I` bיPSPJə P&!b 5BD K !|Ck( LJC,( %JJ 8$Jp>E"2S٭mwztH.#2g3f^ݬFbo2&r5n,4sLAs4 ӊQhyq \6R89(ػ"H"2@@,=j$5 g 3psVr%J1%3\JVfsAq 3U9 "~m00k1\[rӒbyHB;֎&h.8gEZ-[ց~srm94j>ۦm op&$gZX((wea:ss[e5طuMwՊa'd~u85 =o#uߢ&Ddz{'=a'1[J̒fwoO:v0>H*WW,~bk'G`fq76ڲbh[9GxA<ƥ;vUO1GUye<}U -F39ؕ|̫L~iD.$=q2'o ^ _6 P -LU&wnDyyN}:tqy@nnNL*e+ |DQj3{5  (䮘j*狤Q VA+Im07vtvw\<.FyUK4Wβ.buRe1IY- !N^Cyl>Chtqø!pIW =hxN.ާ8_>0:O1SQjHc77NtY`$:V.%1|7YK ]9  ^CN\wQ{p=tŹٚA+Ȣ~椓 spV'|Dj#`llٝ̉T%)**nyVQkSݢ:z飭0anfDi:eBnN$t}谋 8Cn%Ȭ)[h 7v^ľN#6ؼl7ǡ=?w];Zjt2$,Lz4k(֡1fԙv]u mXuꙺSwՒ;OG\A+?ճY2doO<>t)֦Z/s-9)L_[_86vzMr0{&X+?r;AjƎL49 $/asP}e6T$b~#΁ wu3LoQZ*bT8OវEptq_4cI9c9c=#"!> UtwlHu\bsǢo5ًCKGCviSN?;Y.vcwV֪'-# 1 t^tG .7i Nekb䗓HoGp/:yWfl o7RPp*FU /MF6gPjlV qsp m"xNui=-tG ; "uMcVRpxG2KGFkwQQ{k]~wt nw3WaCu3ks="Vm7]˪uv>PXUϪ> sNHHI(D/lve,9\ɼheڳii<&032fto۫,bV+dNэVZFfXc=\ϣ=W/-pG,O4>/e7jx*gAo9ۙy-dlQ;F9sl8F&̔\n\6ғ*ZE74:OxTL#S걤n2*wO2n _73wSb񈕓$Y%1ӐBR٘M@Ϧw|*|J8OA%6bHm>3i'{֊&oݲq`oRዱOEI)3ML%|19;p㱋"aeoY .v@ c8;{O9N@Ғ)KFx'x-;Ҵ'r? 0V*8U9h;Pw?;S ul1Xs#e?AYs{TcUASzQ7R ]  m"CmOr֝La%3d}< djߛ >e*-#dQY7hՕcE>,f>r: F0E@Oޭ 0x}dRG~1]'xI;qjJ` ؗ<`:RAe66S^4wH:@; 98C6g6aw3q!@6ݼ=,ӥK҉ϧ*8Kڵuo5 I25& UI!WBpX>@W Q U0{̢6JȎ»'FZ]t7 DU)c9qe^ ׯٖ.?Y ͱs$o5Tw&\Ԇ8yGv{MjL'o ]lY?-+$/ R P"’Ґs(=;j76٢9YO\ !=#ZD@읟 8 {܊g>S8zUOƦ2 ow@!f'a0'*#I58^M=oh8kn aD[Ӌ\m7 MBs>f#RN-&;}&h0a e'k$Z?Jk(%g/O'Aݺ=_i::%PsTٰ6 -#³&z^Za[(;.(_`:aG_ݗV>JpZ4Nhuch4jm*]68C=g<'؋F3s(彭6L95ȗ8@YV7f%ižN GΘ܅Lֈ3LMƢem137Œs]׶wef0e;'1E36]-0IwC#IjQdƯM d3ؐdjK% 񃵮;ݶI:ɄrG]5#K[ t3CC2NĆaڌ&rsAlӪSUV:fƝD}nrUPB}qA @q<լt[iNɫFҹȽu6r,~ SV9سvB?[ ]3VwVc 볞ோաFHz)..*˒󦜛=WiOqKA^,uE;d\,;t:/U׾7"8Eݳ߽M\92NmYx3jnuH̪3j  Cʊrc/'O&bN"qx g[SSj2'0 ռ"0DđiSq 搁7q{7U3ڙsuY'boH X5MS|]Dɤc0 SR‚z*X"I* 5$үĀ@TQd-iʁ;BV$"LdTJ)ƒ*+ !j  *+)u b@`@P oLR > ]gZb%MuBȬԡ^M$54 K<Pv 6vyQk0$xTIˆ4b)a)ˉ"F]u OLУTD/gPe2kYhqp)o7~:%ILA|ݳ#=4foC\ {tyw?DPh-u?K\֙OD+/8}&SVA;ﭠ6inQ@YF@hw0,b<3~qF@ٛ'aĘ^.L7q#e-DD`rAaϰiݴNf&Tg_,yts4uFG6늢ӳ6pG1TD떎=fvY-{ɇÉZ6HqkLٲRX7f)xh>ĉ67ܳӭ>9P! V=MkfԒGߗp;״j)S\Mo&u980EF 3fi9d29ոp\5~mf0B9ó^Ӽĩ6/)kv4& 27Ԁ[i*xƀV`q((Dlt~ERҴ0yRč "è ]e7  <CEnu\.dǰu'r*nPO݌;պGV!Tly+Muo[0P+95#8p Pь`9A_*ȓ32ϞAZX؁s3bWƇx9~b!]44dʻr4btLVzhM0Ï2+[%rUV@PTW7%bUV,hD1wj.c!:9'H8+bН,|yg D3T۵K~E tGHb5;tzԧW+nCXwS)To}W}:# WNjrПn@wH r]o1))G a /t){PSg̬]ln-xfI&5$4IpD|3f8E;c7 w,[ȍ: fVn^;:*]یOkɈgv?:wRR~T|=S { qd ̰oW8*#B0:4T=C3J}cg6_Ӧ~ͧlneFPD:tD/!5*;}J N i+C(fl`^)oZYܡ䵳Gm7c3J=JZD-KsZqb&K[jNs;8r,`؜#ufX;hWӓ='XNsOS96R̃TO.tze4D58Ne3gT=Ѧh1uKǑ~jc' 8qPF93 b3ƉthKDgfy 6I2A8J+e9uIG\Sg;[gL%_8"@eMtg"Η-j|DcфPGJRvRDD0 5gX[eH3v)$'u;isL6wi[PL +FwκiaM|r!Iȉe(at yrZim6[s9Xjê8J{Sx hͤsF.ʈ0gs|qu=q֍YUf{4(5-mDϥk ]& VVs%Yb|( LϧXg,B"Jk[W Qg* +"":{?3-ٳz),=84N;wv1l  Fia1Jn^b/P"V`@J$l!0 <@~ZJE{J5ąkJnԮY[6Ǹh^C  mN!@^ Mcŕ*yKTC1j rl G)م5\=,d]3 佦\LpIMqn/ggr, blKH0f @Z2i oM6z twŐb U9LE,@|RTEBU8+ hl`G+zbs,7 s3^Mbf2: @ _o[Ly1(z9g[&o3{V惒kzd4O@[SWfSyna:!PΡeVjR=lK|^[FS;bb]5j:DED&p؍@#b;wZ4+uxEl[^9,"g ^ZV b +QNcA >ڣbvZJ&g]OJ(u<=,tg3a}:fsmŎƨgMtP\jӜmO"Lt|O`DwUxBdvu95XΓT\vBkj6k<%}G[oN)`Rq-j^l 08Uwu&nhE }ԧ&5iJH,?Z:cd5YL,&S!]~KD}]B%Y^Xiն.Ge9 ; XէsqSxB__MkB7+6+,h"?Ȩ:AN"vK271X֜fNݤ&m!>,L,4!gc[rw/1ֳiŲޒ* V-mEl|be6tyZrɘ"QdD{+3S|E6zma5o8T1?d/u֛*k cmQ`}A(DTHTssn!01ud\?0pЏ܍05NaXAx^C'b&b٠,9{s $i#Zg>6Ae^T`*FO -VM;m1\[\vegL] ]P _oCDLuoR$٩'9DӈgYմqgɧ:JM#rź⁹ ))[(5;gjXv*gub˶AUWSڙGejIkZjXX"UNrG{J#!B6 >tMҸ/C#mm=jft H̱8I%kдƺl 1֨_:zo S{C@3HW4\yKDu R;NSC' G٤nkgOK=3JJ,ՊL15PFmAGN'qVëۜ͋2n=^S1; )+eטtq,c[:Ў#yYcrE&kx={3w4a (-.jdFfU;U>TO7beƔN@(٬>G޷-?h Zy:a\Ry)vQ1o%ډ7˦.BMa jxN2Yxȿoꔃ2(M\2c5i:;-3==;ycr׍rƠR߷۝-7Bޟ)zGRf0cZ.le\7N \,a$4ҮR#۲E8&eks7c?`Dbp)ɻ`G[ԥؾZu|jjI``A.Lf-ptuMÐ& WY4vtǘ2TޖӱKs(#t+:K'7i+TG#=1r$ޥitYʑA'&N"lKckжD؏?5.`i1Ӿ5,}a= xea#,;ݫUwsF ]* #9Wg3P6⟋ֻy8JcCm14w{9cv[o1i){pTc E1b )psLj̖l=8}7T'n6;.Ͱ2k"ns 5iqhko8a'E-u0<6bVO61ȅN5D}(+.sX1 04j%<0ƿV=Bݔ}s ާOykL֧~UڭܳmŻy?qK@vz˦LyZ4Xb`GWëq'pq0{F|6A:(*Ko=֗fn4v?ud/ I'1#DߍSlsO@ݍuO?","O@D< ]U  VwVk&/ɾg6D՘&T~ZJ-,hnqy.? DCaSJc`q4*ZMFΚ5;2&..u,޷~M'Ӏ/6}ɥYb>-Nnq۰qu /1xۊis'1 8=3NTĜ@b ɧ'dM9@)$#2 fKfҊ)M<8*SO;ͪ03N3y\\Jl޳lC^)V`bb)@͟bXwmWqvNϽc$ͯ=Ml5ɉy<ՀP+Kor6 (JY[y!+@@PԠXugDnQK[튩b*H%RT4 6Bw؏~ (;}gK{9Uߏc~ՕIwjkپwҷR|4-fqgNo18|ۊc#3gdx(NˏAA/Ɔפ`L-f9c֕vVwSF{=xsK";Y站ҿIׇ#6T x&3SS@"c 8ݐ/īDH3vnXxLLi_MkLg {Jxu;,NnQpA1})+ f mPcUFVp<p }DR ]u3 B]?L'ĈNhLEv;AVKӑi3iAcgvc -u;d٣h޺033;F6Igi6l~%Ha[Nrb鳲2K:H#g3Z>U NZ4[k4.Yzt({a)[O\ǐ4,@ۉHbR 8Pp:+_KD}r/ĺmW)WO=衄ݥ`tp+>d?I. C΋],+Xu#+)>šuzdwKsOcc7*dz!)ꗁav)jNj 3-'Vg{ؤŷ)2}O^rv1:yZLUgt~̚|n` YNJOD3ZރE镮9d a|璯=nk(j^jL]e$sg:#CTlLL&#&Ѡ8xAy)7݂(v/RzOkB::FMia'3*I@`ks`Vc^Su^TvDȆaR.$ )rvDۙ5=yوKjGi-N{eMcž$pF&T%5 Rk"\iIzppʾcXN #%]76s7\qqd4cVvlE'5iKqI#|<`Sp5P jw  (0( 9h;9<57H{0`qz3M'K6ůS fN a5<j FTW8Rܱ{YZߓRdUxwNgް=0t<];, Ⱦ0 7%'#?9Ϲ,.^166ΠWlv鍽Cwh3mF[}v4jjk"z: ֹ ]@1Ku܀Òm'{tLߏ,Qj Dd~?jK[,&U,5:eulj']mGU=)F v7sWT_3t_GdU_f93S~W#z+t|Oj[rGe%A?eA_6Zp'b) qmDwJNI iAw: r3o&e"yq (\&E:;)B+٭h} KR㤻ZF}zߝeEd[jڶ[9UfIW]M,)Ln vbMו|;/d5&5󐲆u6csѤz5рf%Zl*.AI)OEgj/i9/vuҌ\ɝKIjNt.6#Hol,io#C~ j>ƒC}Gso 8j{󙓜t}qFtg*rclz 9 9ө+spl:c1sA>C6y7(S%G=7&b6,u'g\0`b ]؋OmsXtwe'Szk*pqqg_H;]mjzSY3 Qrb<͘o.>Ȁy4Apkkmx)h9 q@.꛻Xd 2c\& GoIi we;V_xQvO<9ci~uu\ -8-!, #)HRaĈSOg'2Jʛ[ ]!+ zCN'qq26; ,if>N6O}d >lmAyAlnZmY!8A ⺇0c M~u>BNAzVkB-4FGm;ْ+@I=li6֦c_ $fqGh6p4@"E"h;:Jk;+D$mn4iK`8`6Żw\uIj3[9mGk?*<)8ݴMLihGl(tRA,".ց͓Ipq3{l*M@%\m\z7@P%>z{U~NT3ZE4(aLQœ%'wȪ F7[ASjM)l?|Dzx? ѼQ7@p0ylp.@Yhά:]xGmY}[t@~5<CO!3&'?7yDC:cqhάj`|JsdP_zsu٠o` iݼ-Jx?hhkqȻM}f *Nc,A5#͢[Nc&(7D31U,1T_.tZ#)Kp#Xahu%m&s3 h%&Ă4ΤZ=}D #%b[:SC?2~'ո\˧R"+sTqJGM[JmsETI0S}bc֋tw]LQʰi̶tO^홢-} (+B}coʌ8+MӤ'"7W!_ xNi9*t??n:{60bzx@IǑFyUԣӺ'KꄅZZh1܇l'ءM8 I O1ݯz0jE !SdAyXްAlkHw=ӌ}s?y[0l*!GWb$ w2KYGS~=dD!ipCiZ+4Jh42Gd;|#  Zh2;4:3cޥb۫§m^Ż%Oh3sRVT-7D'Yd?) x|Hlca98͸Ha8v9Y;UB& |916vlzm{k'~5{9zZɹr!dc9b %R3l?DlsԓuxdPIê'z.召“:ǦX#2w+vBU9zcvlNg ] VVcoz;.>ڸYva%U;bq~iSq0JkvD' b!0]o`._%QP!o6 WE\BZ HhVQlZhIݨB>͝Pw+@JVHA #oT1BvjBWDПUUWA JٛШRA951Hշc+:%$IrD ͼw4,p%quR_kɴ)q,YUkĠz" 0J37Db ћZf+'Ix1J wK9v]Tc$`C%`" `e+r*HJ 0@ zBf d pKB‘\@Ic[R$~iZ&O01dd)Aشoԡl"@@{=Il//Hse)]E'ffDf.3HL7"2^cIk(,B e(x&kW,$Pd7`"T ڋ7g Vti.&`@3ЀP` S@12P(){MAa<}I9wX.ʍ!Y4 WվԻce9ÛI7⻹ vĒVըw)zc/}]O짋=SK6T_8^&/}٥7Lql*53J+)JΗz]Sk>Yڝٻ8_JSϵn~/7S}ݜg38YҾ7_Anu;ҧuM11LLH`E*Yp񛯻8uSSt8 .0_ۿk>|] Y8wzWYR xMf;ϷTjw_Jf3bTd `]rL<1_VMA(?) _kF ?IB>7+\T?%֛_Y"\ @>)QA RkP`8DďM$M|ְp; (M BG b <A !DJ+`RT %!7/j*6oCn@/BXCk?RI+kK`rk'|' >1/Nb7v#K~1d&C0"2.7i$( Q ob$@$iLڃ̉ d_^nI=Ӿ1u-` %q}pg yGNCeOaf#%RVw ]6 BLseo\ly`n?t s]7 :lhGqsbbIf-z8a?uDyҎW) lET GbnAԌ/xH d魎yÿso`2헥fDfnOvUZIu cW4,n5tN!D(mFvmn8 71RӚG%.;齄g5aɍ/kiw/W=2STu>{):xi?n7UqIAY8I=J@,o\9t m'V8g,)H58E^Nj;SwTt^&K sei*YmqIcY[[T@ }쩩,_)qZM$PVͪ:i *$DtGU;I>*҂P8-\ %&D=#t9oz1ԤLlr6'xߥ%j>IZl#[noS.Q2//k .%w/z{Y!;s)L7a'lD=ʇfGjDmoO(g3<'PuL|`Zz -ȝ)+-NxoiY6.l[Jv/FyG 5qrHP`Uh~KS#M+~jHֽFyR3t2< $GT2"K(8G|rrZno4@ ҧq=[X6:I $h(Q8oVI"yJ;A$!9@lW~o#W[3 ^[SeixxjeY7 o36H4yR(YpyOCE5Bj}^sS qr]{qG}1I8\(P~ԗލؾiN|ϴ#b7m<0ure6sS's5۳1ODL]YMfc>"sM@21;{[lNZ3~~uֱ=~?W^zJe\"Bfv}tmoR7QXsyad` sOrs鼍\'h_X+$^!j,; n@)8=YvNl(ZKD\(pfY?}鸯g`aul֊sz!:J`aj+- aD䨰XPZSP3cjz׶q d|ksI&)5t\3VCdBW.I(s#>8jnDz t˱@[FyrX#;Bw!'-Q`r BBPӫYe3+1ʳ(yOu%*emJa+b`hwoY_Fy@k8 ixlY?Oi #v6j\V[  B =.yrfh鵥bmњcQeaZrXW&(wBڅjQvN+.Q}=2H*aPӗb$*Ε,ORGCOGM'E.* tu1AVi# 9ziQXqZ6:p/pԘWpxލ7L|;9%JII%6NKvZCg*xgWޛ]chM< >pLH弄 6ـt'V2Ifrxi)Ɲan"PMkՔM`pfEd3q'%`"ٹwZ"^DG39n>s e7fMȹ:nhS@?G,śX]|* 9ڀ2 &>'6(Y$^/U72YP9 }S`q=9-efps<՗VnpMIYAH %ּ{'-r6 og njS9-dMg^ VV=44{w2);L;Ec6Kj4kurTk3W9nqG1s[,l[)Θib=d8lXC٥uh}@me/C0ސBEh0yG<0W5ޢ:'(N%F3OF5:i/$c{7ska\ES9QX[1 muBY:մ:5~ojL`FLOXlVǙ]ДG8߄td ?) _O۰X@}k cc;VԼ55GOAZO[GNg+{t@ssT`D\ᛴ{H;(۶0ZsVx}&'#eZovfCwefbzAŅV,,K…4fTFgՄ9l:}SQYźd: [L̅s:umPT5J[6Ӭܿkݪ֏{ m<2әF8~Jj GӲpTzcK{}m^Ą{q]90\0DAk7z1iÙ1{U023 n28xY@xxf\Zuu35!;liCCc'D`ݍwn(ob]VCFo VRSspŇ 53X^b J8p7}NJ%ds3t`F4'Tک[)E1֤dp ,b,Ǎ:aèDw2Ȼq,`/CԘ`Ѫ`z[SV#W=DIq= ] VzVŮN=Jyz7+ȁyPdmBP`NoAkyNN0nR)pb/b$^sPLSJI^"0`InK $ RdHL!Nd ) fH@?I Jd+A@A2VU+ hV&z*B ݠ*#P˂ yT!%2@% 2 AYbAl@y@uը*x!B#PJ`6"I`ʀUI`).J€ R | 6U"(P{5Zຉ$,+k'OTڂrEQt7{q7e7W5Nq]sh^pgy9Pw"踖"L`\`# Z&$%&|0\Ldb"0j"Tb*U /3yHV8uRb ldbL I7vH`$7"H̀EU< PHye$ҵW)rPJ. a BQRO!uĕ@pBj$($Åe@-NC2B8R@2$̡%䐠)IR A aj/*U D,eP,tQA!Di$"*@6j3вx#NjP" gukJ"+*x) JMh! V 0bq*gɩrH3<]mz.cKoxً75鷻 tsO}׮Mb,oRzhIeړfϽV=w~b)H 2-:R`fqO9$<񅉜fiSl 䉊1%pDe) 픜_M 2pMvH0#ɑpiȌn 8/"19E,`EQ#1tD_5< < of pŪE#'`< &'+LER cT bB6@ PL%䢐 (g/*pV 7) X䐠B8`$ .(XT$!CH*g (Ck Q&, DeH “Aa B&QEDh2@RUX&! $ kfVS(r9. ꈁBA)~KI"Ujt n8XF"TUZ: _*Fo_>ImxK3p%tNMN7L$U\ !eq &Qf$4[]KO _ (5oDFW X]l _6zoPiHn ͓u;'PC5k {B{Y$~LA]Nn6Lf#1C0Cx3IL`+< 9OޒRyN79}(G0ٺS$WxJ<5[}&vnxA:15&{Djǔ[%y649nZ;FF|Ut jv?6lF\:~7b/tb^iNW;UmH0 2zQELgfwa, YaC@Y|"f~s0c(+#?xΠ?My['\x}vLIXIfq! [直$1-!t{#WjiֶGA&n`[w]GmY(da?0 ?jI>BjHTF<3 V-ڃI D"Vo<ݘ.WVqэVfgEz6| ˽m^+uL( \F$Gni?[5un}M Ԯ#&1߼ɂ1veŪ Q T/ioWwYV/ƋJGlZ~i4H<Jʜdhzg/sZ+@73=>y'7{ߡ|ѠzFk 4{yOf;T`8o߽;>9J#9v1+JԢX/)v|6wobmO3Xdu(L< 3}:}g=jVT2&39#`}%L]u]4F$ڻ]e7jTS͔v92pF'A2"vdAߓM:VWDcS Z>5PCnJY``$TLQe/, jMD4Pl26UZQ+0LXLjB!4B l`|U @n*!A>V-i$ BCP% L$-PnH7Zx `bSB䍶;@+U6i(֥gۏQlR297jwKa}wg1fM8ƛb&f]KG{.>pC)~.7NiSٺdJc7Tq3}1!JӥHFFf3up$ȘAց7LGi_ 7dҳ&SR\w`Mpa@dݐ% g&8M).@gwy*}\uN3z]UMbnM[Ug7/nx gOdl6,NthcBCJ:4"y'ATb5AEPpi]JT [_ZF "lZY ERJK )5 *C]3VdISu<$S>;% /q79sO6E13Ia2L2Be#eV\9:Phfw2,ƆιL&'"]nB. @nN, q9Zr"*h)*`A5@JHJ,ErV&F}r H@d{!C  ,i\=I/w%6;>di =3K*p)e)͕1OiwY]ׅC˛(,:S2!"" f,17ؙͮ]S7^VaSd{NmS9$$ӥ5Jڈ9ҿ7 EdyHRjS$ Ԙiy DMJ'+h ,# @r ` d2 Hj$l BB)倌R@@j[Ka׫KHk%k+i jthM#vS޹.J"1onپ]wlz@b2iISEƔv` Yw'hES̛1Jo,d3ʂ1TiԷNf]W $h@@.3"Db5Wq"Ы4'Ag7N)Mġ0G. 0q`kŝ@B ̙̼9h2ݙ)ɜd6t 2AɼMcbk2I$ 0q2k}D@H-8(!@Iqp@eLB @PAXnA(bl2ԑ BLb+BWR2+@9 HDEKQT2$*!¢\T, Qu++JR@B ǦH&% XBA$$nkIT(a@%A۔`/E2ZYax$M􆢺jgޏeg nO]'i=^wN/g_ۏΕ$ hx⻩tO^33u_Ċq3ugg٥ߵ& 'ĉB"q^&xJHPFJc7_u }3b/P0v@ ՜LLH"B0w&$|10Ax&$lbbA ]3,VXcDĂ!Lf&PY8LBFbbA11  4LAh ?11 && @|LA`A~  & "`TH?B00? ;A L AAIAv-4LxVQ "6 !A#؂(/oW18AL`E ݙO1/ A19BS{8HDɁ"ZŐ&M" -+Iy!K\IFϔ06H"OH,D1> dӀ aq 5E`i05S&$DA L‚EnR+(Ш2[!#ZYU4>+@ PF|#T 5A=1$ ,"XC  !BT2KʁX)5,!)vO eB w !G56hF44=wG8*IrfxSQ\*\slӻRT}7AŔ͜&wM >E[;wS7No"S968V7973T$e Z:̃1c /R+0*H%$]q-Y&Xđ,5A2XqTriQj CFmqh&rjDa^0g'"R"F Ld^^ V@$H2RDڱMu@&EnZ`Ei҉ɛ@"1xdJk GόJ5Ĵ<pk}!T1 ڰt b$06* q%  8eʍeY&%$ W>T R 0^0 W?7.T+ׂ>^ 7`!Jdv0E*y&e+ҧ|`aV2^W`\K%7[ N.uRrEb 2x-_dTbՋWa:cyQ0Hf *#8 SVoNʼD@kOL *HjXK]usBbd2dQ H`VrDUBʂVH5JOV LUS 0|($➨ID Pk5q&u"D:Ai 2+0HU*UNnI1A .&5(A@!XW¯Q: PQHBA(کbA7𢪥Tnd"[G=q&Liy$3Ih?9lNY:#Հlibfile-type-perl-0.22.orig/t/files/blank.bmp0000640000175000017500000000107010131560406022127 0ustar bastianbastian00000000000000BM86(  libfile-type-perl-0.22.orig/t/files/blank.jpg0000640000175000017500000003666610131560406022154 0ustar bastianbastian00000000000000JFIFHHVExifMM*bj(1r2iAdobe Photoshop 7.02003:08:26 10:36:02(&(HHJFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%?&Photoshop 3.08BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName iso-a4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName A4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH/8Ag{HH(dh 8BIMGG8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM?blanknullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM D0(JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%?8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMHhttp://ns.adobe.com/xap/1.0/ adobe:docid:photoshop:104bc2e6-d943-11d7-83b2-94aab7e93f76 Adobed !!3$3Q00QB///B''""  "334&4""   "  5!1AQ"aq2BR#r3bC4S$scDTd%5E&t6UeuFVfv/!1AQaq"2BR#br3C$4SDcs҃T%&5dEU6teuFVfv ?U@libfile-type-perl-0.22.orig/t/files/tarball.tar0000640000175000017500000002400010131560406022467 0ustar bastianbastian00000000000000t/files/blank.gif010075500007650000143000000000610656262225300136100ustar00blechunknownGIF89a!,@T;libfile-type-perl-0.22.orig/t/files/blank.tif0000640000175000017500000003462410131560406022146 0ustar bastianbastian00000000000000II*b9 (12(=)<I%fih9DS'DS'Adobe Photoshop 7.02003:08:26 10:35:05 adobe:docid:photoshop:104bc2e6-d943-11d7-83b2-94aab7e93f76 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName iso-a4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2003-08-26T09:33:57Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName A4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH/8Ag{HH(dh 8BIMGG8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM?blanknullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM E)JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?Tʩ$8BIM!UAdobe PhotoshopAdobe Photoshop 7.0?Olibfile-type-perl-0.22.orig/t/files/blank.png0000640000175000017500000000034610131560406022142 0ustar bastianbastian00000000000000PNG  IHDRh6 pHYs  gAMA|Q cHRMz%u0`:o_F\IDATxb?) HD"Y@ H@$k 5d D"Y@ H@$k 5Um-(&IENDB`libfile-type-perl-0.22.orig/t/files/0001.wav0000640000175000017500000000636310131560406021451 0ustar bastianbastian00000000000000RIFF WAVEfmt ++data ~{}~t}||{x{||{z~}z||}}~|{|ysvxtxz{|}yzxvzzyw{wy~|z{tsuttv}{}z}~{z~}y{||yvwxxv~x|~||{ywwx}z~~~}|wxxyy~}{yyzrwstutrtqutz||y}|~|||~y}{|zutrvwvzttqoplmpnqqqplnorprvtqtptssyxtwxpoqppoqtopwurvurqttwss{vu{vwxx{yu{twxx~w|}xxxy}z|~|}zwuwsxxxz{x|woqllmorplmnihllpptvvxx|yy}y~|~|}yyxz~zx{uqqsoqvvtuuzyv~~wx|y~|zxxsxxwuvxwwxz{{{{{xxzzxursuvtpmlnqvwusssuvwy|{zyxwvwvuusplkjmrtwxvuuuw{~~|zyyzz{|||zzyxvvwy{{zxutsronllmnqw~~~}}}|{zy|~~|yvtuuvwwxy{zzzxwvsrqopppqpnllmnqsusrrtw~~zvrqrtuvutqnmlkkmorwwupmmpstutrommmmmorsux{||{{}~}|{z{}~{xussqopppqsvwy{|~|xwx}~||zwvvxz~~}{zz{|}|~{xwvvvxwvwz{ywvttuvvwvusuvvz~}}~zxvusooommpsvxxwuqorwywvusstwz||}~~}}~}}~~}}~~|xwxvtsuutuxz}~{xwwuw|~yvtsstuwz{{{{z|zy{wrstw}zvsswz~~zyvvxyywuutstvy|ztv}|y}|xw{}}}~yxvuy|{}}|yusuvz~{}~|ztsx~~xuw|}{|}}}}{~~~}}{xtopw|~~try}wyyrqv||{{}xy{|}|xusu{|tkjnrttojjs}oegp{|xusy|zyx}~}~~xuuux{}zxyyvuvuromklp|}wrrzwsttusnkmow~}xsmjkpuvtssqrtvvsnlnosvwtqonnrvxxvurpt|}~zy{usw}pihlrvttvx{~xqpsuwvuuvxz{ywurnoprrqoonnrxzyzztpry~yvw~~tnnpuyvsu{zpnqruxvtwz}~}}|wuvvuux|~}{z|}sqzysqtvroooqy~wsompy}}~~~}zvyyyxleelvyropqtyuoopv~~|~~xvtpnry{{ynkpuy|zuspnqrmlpqt|{tsqmmuzyxxxz}~|zyyxvurprvwxxvsojgikmry~zvx{|}|wvz}wj`^_dlqqtvx~zqjhnv{vqifpy{snqx|~ytv|zzxv{~{xvw}}tot~vpor|{z~zpjlsz~}{yy~|vnebjsuwxrotx{}ysonqttpmlpzvtuwxww{~}}~}{}}ytonomnqqqtxupmljginsuwzyrlllkouvvy}}ywuux}~|zwrsx}~}{xvx~~xy}~{xy~{|ytstuxyyz{}~}{{}}yy{zz{zx~{vw}}{z}zz}wrruyqqy~}~||}~xsqqstvxvyupnpu{|xvy{xvsmjnt{}zwqqx~ysru{|}}}zwuvwutvwxyzxxsmjjms{}zxrou~wtwy~}yz{~|slmrz|yxy~~}}zz{}|{{yyxvsux}zwwyz||{||{{|~}}}zxxwz|zzupnpqw}~zwqooooqqprsx}}{xurtx|~~{wttwwutqmoolmpmkoqsvxvrqppssqponptusrqsutstvy~}|{~zwuuwz{zvuwxxzyvsrwxy{{wxz~~|z|~|}zxxxxurpptz~{yvuwy{zvrtx|~{}~}}~~{urrrsw|{zzusssxywtqru{~ysrtx|}{~||||{{}|vrrqtxxwxvuxyyxvqkhggjlmlmqsuutsqrwz|}yxz|~~~}~~|z{zz{~}}|zzyvtstwxz{{xvvuuwvrrrqu{|}}z||}~|yy{ywwxx{|~~|{z{{yyxzyyz{yxz{}~|}~~}{{{z{}~|ywvxzxy{|~~~yx{~||{}zvvvy|~|zwtsstsrvxwxyvspprx}}}{wuvwwxwvwxwywtrrqqqpqvwz|yvropompqsz~||zy{{{|~}}~|{yzywy{yy}~~~~}zyzz{}}|vsstx{|{yxvvyz|~}{{}~~|yyz{}|~~}}}{yy{|||xvsrsttuuwz~}{yx{}~{zyz}}{zyxz|}~}|~zxuttvyzzxuronpomljlptuusonqtw{|{{libfile-type-perl-0.22.orig/t/00setup.t0000640000175000017500000000070210131560406020724 0ustar bastianbastian00000000000000#!/usr/bin/perl use warnings; use strict; use lib './lib','../lib'; use Test::More tests => 4; use File::Type; use File::Type::Builder; my $ft = File::Type->new(); ok(defined $ft, 'new() returned something'); ok($ft->isa('File::Type'), "and it's the right class"); my $ftb = File::Type::Builder->new(); ok(defined $ftb, 'new() returned again'); ok($ftb->isa('File::Type::Builder'), "and it's the right class again"); libfile-type-perl-0.22.orig/t/01type.t0000640000175000017500000000305510131560406020552 0ustar bastianbastian00000000000000#!/usr/bin/perl -w use strict; use lib './lib','../lib'; use File::Type; use Test::More; =for testing Set up a list of files to test. =cut my $types = { "00setup.t" => "application/x-perl", "files/blank.jpg" => "image/jpeg", "files/blank.tif" => "image/tiff", "files/blank.bmp" => "image/x-bmp", "files/blank.png" => "image/x-png", "files/blank.pdf" => "application/pdf", "files/rebound.wav" => "audio/x-wav", "files/tarball.tar" => "application/x-tar", "files/tarball.tar.gz" => "application/x-gzip", "files/tarball.tar.bz2" => "application/x-bzip2", # "files/no-id3.mp3" => "audio/mp3", "files/id3v2.4.mp3" => "audio/mp3", "files/blank.gif" => "image/gif", "files/blank.zip" => "application/zip", "files/File-Type.html" => "text/html", "files/standards.mov" => "video/quicktime", "files/kite.asf" => "video/x-ms-asf", "files/0001.avi" => "video/x-msvideo", "files/0001.wav" => "audio/x-wav", }; plan tests => 2 * scalar keys %{ $types }; =for testing Initialise the object. =cut my $ft = File::Type->new(); =for testing Loop over the objects, testing each both ways. =cut foreach my $filename (sort keys %$types) { my $mimetype = $types->{$filename}; is($ft->checktype_filename("t/$filename"), $mimetype, "check file $filename"); my $data = read_file("t/$filename") || die; is($ft->checktype_contents($data), $mimetype, "check data $filename"); } sub read_file { my $file = shift; local $/ = undef; open FILE, $file or die "Can't open file $file: $!"; my $data = ; close FILE; return $data; } libfile-type-perl-0.22.orig/t/02mime.t0000640000175000017500000000320510131560406020516 0ustar bastianbastian00000000000000#!/usr/bin/perl -w use strict; use lib './lib','../lib'; use File::Type; use Test::More; my $types = { "00setup.t" => "application/x-perl", "files/blank.jpg" => "image/jpeg", "files/blank.tif" => "image/tiff", "files/blank.bmp" => "image/x-bmp", "files/blank.png" => "image/x-png", "files/blank.pdf" => "application/pdf", "files/rebound.wav" => "audio/x-wav", "files/tarball.tar" => "application/x-tar", "files/tarball.tar.gz" => "application/x-gzip", "files/tarball.tar.bz2" => "application/x-bzip2", # "files/no-id3.mp3" => "audio/mp3", "files/id3v2.4.mp3" => "audio/mp3", "files/blank.gif" => "image/gif", "files/blank.zip" => "application/zip", "files/File-Type.html" => "text/html", "files/standards.mov" => "video/quicktime", "files/kite.asf" => "video/x-ms-asf", "files/0001.avi" => "video/x-msvideo", "files/0001.wav" => "audio/x-wav", }; plan tests => scalar keys %{ $types }; =for testing Initialise the object. =cut my $ft = File::Type->new(); =for testing Loop over the objects, testing each both ways. =cut foreach my $filename (sort keys %{ $types }) { my $mimetype = $types->{$filename}; my $argument = $filename; my $checktype; # randomly read in file, or make filename correct if (rand > 0.5) { $argument = read_file("t/$filename") || die; $checktype = 'data'; } else { $argument = "t/".$argument; $checktype = 'file'; } is($ft->mime_type($argument), $mimetype, "magically checked $checktype"); } sub read_file { my $file = shift; local $/ = undef; open FILE, $file or die "Can't open file $file: $!"; my $data = ; close FILE; return $data; } libfile-type-perl-0.22.orig/NINJA0000640000175000017500000000021110131560406017551 0ustar bastianbastian00000000000000-- #YAML:1.0 attributes: charisma: 0.60 constitution: 0.47 dexterity: 0.53 intelligence: 0.07 strength: 0.33 wisdom: 0.2 libfile-type-perl-0.22.orig/lib/0000750000175000017500000000000010131561363017545 5ustar bastianbastian00000000000000libfile-type-perl-0.22.orig/lib/File/0000750000175000017500000000000010131561363020424 5ustar bastianbastian00000000000000libfile-type-perl-0.22.orig/lib/File/Type/0000750000175000017500000000000010131561363021345 5ustar bastianbastian00000000000000libfile-type-perl-0.22.orig/lib/File/Type/Builder.pm0000640000175000017500000001327610131560406023300 0ustar bastianbastian00000000000000package File::Type::Builder; use strict; use warnings; use IO::File; our $VERSION = "0.11"; sub new { my $class = shift; my $self = {}; bless $self, $class; return $self; } sub parse_magic { my $self = shift; my $data = shift; my $line = shift; # storage my $parsed = {}; my $pattern; # offsets $data =~ s/^([0-9a-fx]+)\s+//; $parsed->{offset} = $1; # pattern type $data =~ s/(byte | short | long | string | date | beshort | belong | bedate | leshort | lelong | ledate)(\s+)?//x; $parsed->{pattern_type} = $1; unless ($parsed->{pattern_type} =~ m/^(string|beshort|belong)/) { return undef; } # pattern mask, if exists; buggy? if ($data =~ m/^\&/) { # warn "pattern mask on line $line\n"; $data =~ s/\&([a-z0-9]+)\s+//; $parsed->{pattern_mask} = $1; } # handle pattern. Somewhat complex. PARSE: while ($data =~ s/(\s*\S*\s)//) { # add data to pattern. stop unless we've got significant whitespace. $pattern .= $1 unless $1 =~ m/^\s+$/; last PARSE unless ($pattern =~ m!\\\s$!); } # then tidy up return undef unless defined($pattern); $pattern =~ s/\s*$// unless $pattern =~ m/\\\s$/; $pattern =~ s/\\(\s)/$1/g; $pattern =~ s/\\$//g; $parsed->{pattern} = $pattern; # what's left is the MIME type $data =~ s/^\s*(.*)$//; $parsed->{mime_type} = $1; # check there's nothing undigested warn "On line $line, remaining '$data'. Using anyway.\n" if length($data); # check we've got a mime type to return if (!length($parsed->{mime_type}) || $parsed->{mime_type} !~ m!^[^/]*/[^/]*$!) { # warn "On line $line, no or improper MIME type: not used\n"; return undef; } return $parsed; } sub string { my $self = shift; my $parsed = shift; my $escape = $self->_get_escapes(); # build a code fragment. my $code; my $tab = ''; if ($parsed->{offset}) { $code = $self->_substr_handling($parsed->{offset}, 1024); $tab = ' '; # we have to use substr to advance to the anchor $code .= ' if (defined $substr && $substr =~ m[^'; } else { # can just anchor normally $code = ' if ($data =~ m[^'; } # manipulate regex; use File::MMagic code my $pattern = $parsed->{pattern}; # quote metacharacters # unless ($pattern =~ m!\\x!) { $pattern = quotemeta($pattern); $pattern =~ s/\\\\(.)/$escape->{$1}||$1/eg; # } $code .= $pattern; # close the [] delimited regex and return mime type $code .= ']) {'; $code .= "\n$tab return q{$parsed->{mime_type}};\n$tab }\n"; if ($tab) { $code .= "$tab}\n"; } return $code; } sub be { my $self = shift; my $parsed = shift; my $length = shift; # build both sides of the conditional my $offset = $parsed->{offset}; my $pattern = $parsed->{pattern}; # start with substr handling my $code = $self->_substr_handling($offset, $length); # rhs: template my $rhs; if ($pattern =~ s/^0x//) { $rhs = "pack('H*', '$pattern')"; } else { # warn "Not sure what this magic is"; return undef; } # build condition $code .= " if ($rhs eq ".'$substr ) {'; $code .= "\n return q{$parsed->{mime_type}};\n }\n }\n"; return $code; } sub _substr_handling { my $self = shift; my ($offset, $length) = @_; my $code = ' if (length $data > '.$offset.") {\n"; $code .= ' $substr = substr($data, '.$offset.', '.$length.");\n"; return $code; } sub _get_escapes { return { n => '\n', r => '\r', b => '\b', t => '\t', f => '\f', x => '\x', 0 => '\0', 1 => '\1', 2 => '\2', 3 => '\3', }; } 1; __END__ =head1 NAME File::Type::Builder - parse mime-magic and generate code =head1 SYNOPSIS my $build = File::Type::Builder->new(); while () { chomp; my $parsed = $build->parse_magic($_); my $code = $build->string_start($parsed); (or string_offset or beshort) } =head1 DESCRIPTION Reads in the mime-magic file format and translates it to code. (This documentation would be longer if I really expected anyone other than me to run the code.) =head1 METHODS =head2 new Creates a new File::Type::Builder object. =head2 parse_magic Pulls apart a line of a mime-magic file using a string of regular expressions. An example mime-magic file can be found in cleancode CVS at L =head2 string Builds code to match magic that's of type string. Has to do some cleverness to make the regular expression work properly. =head2 be Builds code to match 'beshort' and 'belong' magic (eg audio/mpeg, image/jpeg). =head1 PRIVATE METHODS =head2 _substr_matching Sometimes the data is smaller than the offset we're looking for in the file. If this is the case, then the file is obviously not of that type, and furthermore we should avoid issuing a couple of warnings that Perl would otherwise emit. This subroutine generates this code. =head2 _get_escapes Returns a reference to a hash defining characters that should not be escaped. =head1 TODO =over 4 * Add handlers for other magic types (bedate, byte, etc) * Make verbosity/logging nicer. * Find more edge cases. * Remove redundant 'if (length $data > 0)' check. =back Longer term: =over 4 * Fix for multiple magic format types? =back =head1 BUGS Incomplete. Some known issues with odd entries in mime-magic. Skips some mime-magic lines. =head1 SEE ALSO L, which is partially generated by this module. =head1 AUTHOR Paul Mison =head1 COPYRIGHT Copyright 2003 Fotango Ltd. =head1 LICENSE Licensed under the same terms as Perl itself. =cut libfile-type-perl-0.22.orig/lib/File/Type.pm0000640000175000017500000011621710131560406021711 0ustar bastianbastian00000000000000package File::Type; use strict; use warnings; use IO::File; our $VERSION = "0.22"; sub new { my $class = shift; my $self = {}; bless $self, $class; return $self; } sub mime_type { # magically route argument my($self, $argument) = @_; if (length $argument > 1024 || $argument =~ m/\n/) { # assume it's data. Saves a stat call if the data's long # also avoids stat warning if there's a newline return $self->checktype_contents($argument); } if (-e $argument) { if (!-d $argument) { return $self->checktype_filename($argument); } else { return undef; # directories don't have mime types } } # otherwise, fall back to checking the string as if it's data again return $self->checktype_contents($argument); } sub checktype_filename { # reads in 16k of selected file, or returns undef if can't open, # then checks contents my($self, $filename) = @_; my $fh = IO::File->new($filename) || return undef; my $data; $fh->read($data, 16*1024); $fh->close; return $self->checktype_contents($data); } sub checktype_contents { # checks file contents my($self, $data) = @_; my $substr; # autogenerated code begins if ($data =~ m[^TADS]) { return q{application/x-tads-game}; } if ($data =~ m[^Core\001]) { return q{application/x-executable-file}; } if ($data =~ m[^AMANDA\:\ TAPESTART\ DATE]) { return q{application/x-amanda-header}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '000003f3') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '000003e7') eq $substr ) { return q{application/x-library-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '000001b3') eq $substr ) { return q{video/mpeg}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '000001ba') eq $substr ) { return q{video/mpeg}; } } if (length $data > 0) { $substr = substr($data, 0, 2); if (pack('H*', 'fff0') eq $substr ) { return q{audio/mpeg}; } } if ($data =~ m[^MOVI]) { return q{video/x-sgi-movie}; } if (length $data > 4) { $substr = substr($data, 4, 1024); if (defined $substr && $substr =~ m[^moov]) { return q{video/quicktime}; } } if (length $data > 4) { $substr = substr($data, 4, 1024); if (defined $substr && $substr =~ m[^mdat]) { return q{video/quicktime}; } } if (length $data > 8) { $substr = substr($data, 8, 1024); if (defined $substr && $substr =~ m[^mp42]) { return q{video/quicktime}; } } if (length $data > 12) { $substr = substr($data, 12, 1024); if (defined $substr && $substr =~ m[^mdat]) { return q{video/quicktime}; } } if (length $data > 36) { $substr = substr($data, 36, 1024); if (defined $substr && $substr =~ m[^mdat]) { return q{video/quicktime}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '3026b275') eq $substr ) { return q{video/x-ms-asf}; } } if ($data =~ m[^ASF\ ]) { return q{audio/x-ms-asx}; } if ($data =~ m[^\ 0) { $substr = substr($data, 0, 4); if (pack('H*', '00051600') eq $substr ) { return q{application/data}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '00051607') eq $substr ) { return q{application/data}; } } if (length $data > 257) { $substr = substr($data, 257, 1024); if (defined $substr && $substr =~ m[^ustar\0]) { return q{application/x-tar}; } } if (length $data > 257) { $substr = substr($data, 257, 1024); if (defined $substr && $substr =~ m[^ustar\040\040\0]) { return q{application/x-gtar}; } } if ($data =~ m[^070707]) { return q{application/x-cpio}; } if ($data =~ m[^070701]) { return q{application/x-cpio}; } if ($data =~ m[^070702]) { return q{application/x-cpio}; } if ($data =~ m[^\!\\ndebian]) { return q{application/x-dpkg}; } if ($data =~ m[^\=\]) { return q{application/x-ar}; } if ($data =~ m[^\!\\n__________E]) { return q{application/x-ar}; } if ($data =~ m[^\-h\-]) { return q{application/data}; } if ($data =~ m[^\!\]) { return q{application/x-ar}; } if ($data =~ m[^\]) { return q{application/x-ar}; } if ($data =~ m[^\=\]) { return q{application/x-ar}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '65ff0000') eq $substr ) { return q{application/x-ar}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '3c61723e') eq $substr ) { return q{application/x-ar}; } } if ($data =~ m[^\032archive]) { return q{application/data}; } if ($data =~ m[^HPAK]) { return q{application/data}; } if ($data =~ m[^\351\,\001JAM\ ]) { return q{application/data}; } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lh0\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lh1\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lz4\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lz5\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lzs\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lh40\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lhd\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lh2\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lh3\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lh4\-]) { return q{application/x-lha}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\-lh5\-]) { return q{application/x-lha}; } } if ($data =~ m[^Rar\!]) { return q{application/x-rar}; } if ($data =~ m[^SQSH]) { return q{application/data}; } if ($data =~ m[^UC2\x1a]) { return q{application/data}; } if ($data =~ m[^PK\003\004]) { return q{application/zip}; } if (length $data > 10) { $substr = substr($data, 10, 1024); if (defined $substr && $substr =~ m[^\#\ This\ is\ a\ shell\ archive]) { return q{application/x-shar}; } } if ($data =~ m[^\*STA]) { return q{application/data}; } if ($data =~ m[^2278]) { return q{application/data}; } if ($data =~ m[^\000\004\036\212\200]) { return q{application/core}; } if ($data =~ m[^\.snd]) { return q{audio/basic}; } if ($data =~ m[^MThd]) { return q{audio/midi}; } if ($data =~ m[^CTMF]) { return q{audio/x-cmf}; } if ($data =~ m[^SBI]) { return q{audio/x-sbi}; } if ($data =~ m[^Creative\ Voice\ File]) { return q{audio/x-voc}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '4e54524b') eq $substr ) { return q{audio/x-multitrack}; } } if (length $data > 8) { $substr = substr($data, 8, 1024); if (defined $substr && $substr =~ m[^AVI]) { return q{video/x-msvideo}; } } if (length $data > 8) { $substr = substr($data, 8, 1024); if (defined $substr && $substr =~ m[^WAVE]) { return q{audio/x-wav}; } } if ($data =~ m[^EMOD]) { return q{audio/x-emod}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '2e7261fd') eq $substr ) { return q{audio/x-pn-realaudio}; } } if ($data =~ m[^MTM]) { return q{audio/x-multitrack}; } if ($data =~ m[^if]) { return q{audio/x-669-mod}; } if ($data =~ m[^FAR]) { return q{audio/mod}; } if ($data =~ m[^MAS_U]) { return q{audio/x-multimate-mod}; } if (length $data > 0x2c) { $substr = substr($data, 0x2c, 1024); if (defined $substr && $substr =~ m[^SCRM]) { return q{audio/x-st3-mod}; } } if ($data =~ m[^GF1PATCH110\0ID\#000002\0]) { return q{audio/x-gus-patch}; } if ($data =~ m[^GF1PATCH100\0ID\#000002\0]) { return q{audio/x-gus-patch}; } if ($data =~ m[^JN]) { return q{audio/x-669-mod}; } if ($data =~ m[^UN05]) { return q{audio/x-mikmod-uni}; } if ($data =~ m[^Extended\ Module\:]) { return q{audio/x-ft2-mod}; } if (length $data > 21) { $substr = substr($data, 21, 1024); if (defined $substr && $substr =~ m[^\!SCREAM\!]) { return q{audio/x-st2-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^M\.K\.]) { return q{audio/x-protracker-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^M\!K\!]) { return q{audio/x-protracker-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^FLT4]) { return q{audio/x-startracker-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^4CHN]) { return q{audio/x-fasttracker-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^6CHN]) { return q{audio/x-fasttracker-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^8CHN]) { return q{audio/x-fasttracker-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^CD81]) { return q{audio/x-oktalyzer-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^OKTA]) { return q{audio/x-oktalyzer-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^16CN]) { return q{audio/x-taketracker-mod}; } } if (length $data > 1080) { $substr = substr($data, 1080, 1024); if (defined $substr && $substr =~ m[^32CN]) { return q{audio/x-taketracker-mod}; } } if ($data =~ m[^TOC]) { return q{audio/x-toc}; } if (length $data > 0) { $substr = substr($data, 0, 2); if (pack('H*', 'fffa') eq $substr ) { return q{audio/mp3}; } } if ($data =~ m[^ID3]) { return q{audio/mp3}; } if ($data =~ m[^\/\/]) { return q{text/cpp}; } if ($data =~ m[^\\1cw\ ]) { return q{application/data}; } if ($data =~ m[^\\1cw]) { return q{application/data}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '85011400') eq $substr ) { return q{application/data}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '8501cb00') eq $substr ) { return q{application/data}; } } if (length $data > 4) { $substr = substr($data, 4, 1024); if (defined $substr && $substr =~ m[^pipe]) { return q{application/data}; } } if (length $data > 4) { $substr = substr($data, 4, 1024); if (defined $substr && $substr =~ m[^prof]) { return q{application/data}; } } if ($data =~ m[^\:\ shell]) { return q{application/data}; } if ($data =~ m[^\#\!\/bin\/sh]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\ \/bin\/sh]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\ \/bin\/sh]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\/bin\/csh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\ \/bin\/csh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\ \/bin\/csh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\/bin\/ksh]) { return q{application/x-ksh}; } if ($data =~ m[^\#\!\ \/bin\/ksh]) { return q{application/x-ksh}; } if ($data =~ m[^\#\!\ \/bin\/ksh]) { return q{application/x-ksh}; } if ($data =~ m[^\#\!\/bin\/tcsh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\ \/bin\/tcsh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\ \/bin\/tcsh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\/usr\/local\/tcsh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\ \/usr\/local\/tcsh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\/usr\/local\/bin\/tcsh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/tcsh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/tcsh]) { return q{application/x-csh}; } if ($data =~ m[^\#\!\/usr\/local\/bin\/zsh]) { return q{application/x-zsh}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/zsh]) { return q{application/x-zsh}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/zsh]) { return q{application/x-zsh}; } if ($data =~ m[^\#\!\/usr\/local\/bin\/ash]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/ash]) { return q{application/x-zsh}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/ash]) { return q{application/x-zsh}; } if ($data =~ m[^\#\!\/usr\/local\/bin\/ae]) { return q{text/script}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/ae]) { return q{text/script}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/ae]) { return q{text/script}; } if ($data =~ m[^\#\!\/bin\/nawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/bin\/nawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/bin\/nawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\/usr\/bin\/nawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/bin\/nawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/bin\/nawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\/usr\/local\/bin\/nawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/nawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/nawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\/bin\/gawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/bin\/gawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/bin\/gawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\/usr\/bin\/gawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/bin\/gawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/bin\/gawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\/usr\/local\/bin\/gawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/gawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/gawk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\/bin\/awk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/bin\/awk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/bin\/awk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\/usr\/bin\/awk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/bin\/awk]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\ \/usr\/bin\/awk]) { return q{application/x-awk}; } if ($data =~ m[^BEGIN]) { return q{application/x-awk}; } if ($data =~ m[^\#\!\/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^\#\!\ \/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^\#\!\ \/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^eval\ \"exec\ \/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^\#\!\/usr\/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^\#\!\ \/usr\/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^\#\!\ \/usr\/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^eval\ \"exec\ \/usr\/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^\#\!\/usr\/local\/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^eval\ \"exec\ \/usr\/local\/bin\/perl]) { return q{application/x-perl}; } if ($data =~ m[^\#\!\/bin\/rc]) { return q{text/script}; } if ($data =~ m[^\#\!\ \/bin\/rc]) { return q{text/script}; } if ($data =~ m[^\#\!\ \/bin\/rc]) { return q{text/script}; } if ($data =~ m[^\#\!\/bin\/bash]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\ \/bin\/bash]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\ \/bin\/bash]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\/usr\/local\/bin\/bash]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/bash]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\ \/usr\/local\/bin\/bash]) { return q{application/x-sh}; } if ($data =~ m[^\#\!\ \/]) { return q{text/script}; } if ($data =~ m[^\#\!\ \/]) { return q{text/script}; } if ($data =~ m[^\#\!\/]) { return q{text/script}; } if ($data =~ m[^\#\!\ ]) { return q{text/script}; } if ($data =~ m[^\037\235]) { return q{application/compress}; } if ($data =~ m[^\037\213]) { return q{application/x-gzip}; } if ($data =~ m[^\037\036]) { return q{application/data}; } if ($data =~ m[^\377\037]) { return q{application/data}; } if ($data =~ m[^BZh]) { return q{application/x-bzip2}; } if ($data =~ m[^\037\237]) { return q{application/data}; } if ($data =~ m[^\037\236]) { return q{application/data}; } if ($data =~ m[^\037\240]) { return q{application/data}; } if ($data =~ m[^BZ]) { return q{application/x-bzip}; } if ($data =~ m[^\x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a]) { return q{application/data}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '011257') eq $substr ) { return q{application/core}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '13579ace') eq $substr ) { return q{application/x-gdbm}; } } if ($data =~ m[^GDBM]) { return q{application/x-gdbm}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '061561') eq $substr ) { return q{application/x-db}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '053162') eq $substr ) { return q{application/x-db}; } } if ($data =~ m[^\=\\n\\n________64E]) { return q{application/data}; } if ($data =~ m[^\377\377\177]) { return q{application/data}; } if ($data =~ m[^\377\377\174]) { return q{application/data}; } if ($data =~ m[^\377\377\176]) { return q{application/data}; } if ($data =~ m[^\033c\033]) { return q{application/data}; } if ($data =~ m[^\!\\!\n]) { return q{application/x-prof}; } if ($data =~ m[^\177ELF]) { return q{application/x-executable-file}; } if ($data =~ m[^\366\366\366\366]) { return q{application/x-pc-floppy}; } if (length $data > 0774) { $substr = substr($data, 0774, 2); if (pack('H*', 'dabe') eq $substr ) { return q{application/data}; } } if ($data =~ m[^\-rom1fs\-\0]) { return q{application/x-filesystem}; } if (length $data > 0x18b) { $substr = substr($data, 0x18b, 1024); if (defined $substr && $substr =~ m[^OS\/2]) { return q{application/x-bootable}; } } if ($data =~ m[^FONT]) { return q{font/x-vfont}; } if ($data =~ m[^\%\!PS\-AdobeFont\-1\.0]) { return q{font/type1}; } if (length $data > 6) { $substr = substr($data, 6, 1024); if (defined $substr && $substr =~ m[^\%\!PS\-AdobeFont\-1\.0]) { return q{font/type1}; } } if ($data =~ m[^STARTFONT\040]) { return q{font/x-bdf}; } if ($data =~ m[^\001fcp]) { return q{font/x-pcf}; } if ($data =~ m[^D1\.0\015]) { return q{font/x-speedo}; } if ($data =~ m[^flf]) { return q{font/x-figlet}; } if ($data =~ m[^flc]) { return q{application/x-font}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '14025919') eq $substr ) { return q{font/x-libgrx}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', 'ff464f4e') eq $substr ) { return q{font/x-dos}; } } if (length $data > 7) { $substr = substr($data, 7, 4); if (pack('H*', '00454741') eq $substr ) { return q{font/x-dos}; } } if (length $data > 7) { $substr = substr($data, 7, 4); if (pack('H*', '00564944') eq $substr ) { return q{font/x-dos}; } } if (length $data > 4098) { $substr = substr($data, 4098, 1024); if (defined $substr && $substr =~ m[^DOSFONT]) { return q{font/x-dos}; } } if ($data =~ m[^\ 7) { $substr = substr($data, 7, 1024); if (defined $substr && $substr =~ m[^\357\020\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]) { return q{application/core}; } } if ($data =~ m[^GIMP\ Gradient]) { return q{application/x-gimp-gradient}; } if ($data =~ m[^gimp\ xcf]) { return q{application/x-gimp-image}; } if (length $data > 20) { $substr = substr($data, 20, 1024); if (defined $substr && $substr =~ m[^GPAT]) { return q{application/x-gimp-pattern}; } } if (length $data > 20) { $substr = substr($data, 20, 1024); if (defined $substr && $substr =~ m[^GIMP]) { return q{application/x-gimp-brush}; } } if ($data =~ m[^\336\224\225]) { return q{application/x-locale}; } if ($data =~ m[^\2254\22\336]) { return q{application/x-locale}; } if ($data =~ m[^\000\001\000\000\000]) { return q{font/ttf}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '02100106') eq $substr ) { return q{application/x-object-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '02100107') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '02100108') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '0210010b') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '0210010e') eq $substr ) { return q{application/x-library-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '0210010d') eq $substr ) { return q{application/x-library-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '02140106') eq $substr ) { return q{application/x-object-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '02140107') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '02140108') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '0214010b') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '0214010e') eq $substr ) { return q{application/x-library-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '0214010d') eq $substr ) { return q{application/x-object-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020b0106') eq $substr ) { return q{application/x-object-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020b0107') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020b0108') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020b010b') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020b010e') eq $substr ) { return q{application/x-library-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020b010d') eq $substr ) { return q{application/x-library-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '213c6172') eq $substr ) { return q{application/x-ar}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020c0108') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020c0107') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020c010b') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020c0106') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020a0108') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020a0107') eq $substr ) { return q{application/x-executable-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020c010e') eq $substr ) { return q{application/x-library-file}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '020c010d') eq $substr ) { return q{application/x-library-file}; } } if ($data =~ m[^Bitmapfile]) { return q{image/unknown}; } if ($data =~ m[^IMGfile]) { return q{CIS image/unknown}; } if ($data =~ m[^msgcat01]) { return q{application/x-locale}; } if ($data =~ m[^HPHP48\-]) { return q{application/unknown}; } if ($data =~ m[^\%\%HP\:]) { return q{text/x-unknown}; } if (length $data > 0) { $substr = substr($data, 0, 2); if (pack('H*', '01df') eq $substr ) { return q{application/executable}; } } if (length $data > 0) { $substr = substr($data, 0, 2); if (pack('H*', '0104') eq $substr ) { return q{application/x-shared-library}; } } if (length $data > 0) { $substr = substr($data, 0, 2); if (pack('H*', '0105') eq $substr ) { return q{application/data}; } } if (length $data > 0) { $substr = substr($data, 0, 2); if (pack('H*', 'fe04') eq $substr ) { return q{application/data}; } } if ($data =~ m[^0xabcdef]) { return q{application/data}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '000001f9') eq $substr ) { return q{application/data}; } } if ($data =~ m[^\]) { return q{application/x-archive}; } if ($data =~ m[^FORM]) { return q{application/data}; } if ($data =~ m[^P1]) { return q{image/x-portable-bitmap}; } if ($data =~ m[^P2]) { return q{image/x-portable-graymap}; } if ($data =~ m[^P3]) { return q{image/x-portable-pixmap}; } if ($data =~ m[^P4]) { return q{image/x-portable-bitmap}; } if ($data =~ m[^P5]) { return q{image/x-portable-graymap}; } if ($data =~ m[^P6]) { return q{image/x-portable-pixmap}; } if ($data =~ m[^IIN1]) { return q{image/tiff}; } if ($data =~ m[^MM\x00\x2a]) { return q{image/tiff}; } if ($data =~ m[^II\x2a\x00]) { return q{image/tiff}; } if ($data =~ m[^\x89PNG]) { return q{image/x-png}; } if (length $data > 1) { $substr = substr($data, 1, 1024); if (defined $substr && $substr =~ m[^PNG]) { return q{image/x-png}; } } if ($data =~ m[^GIF8]) { return q{image/gif}; } if ($data =~ m[^\361\0\100\273]) { return q{image/x-cmu-raster}; } if (length $data > 0) { $substr = substr($data, 0, 2); if (pack('H*', 'ffd8') eq $substr ) { return q{image/jpeg}; } } if ($data =~ m[^hsi1]) { return q{image/x-jpeg-proprietary}; } if ($data =~ m[^BM]) { return q{image/x-bmp}; } if ($data =~ m[^IC]) { return q{image/x-ico}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '59a66a95') eq $substr ) { return q{x/x-image-sun-raster}; } } if (length $data > 2048) { $substr = substr($data, 2048, 1024); if (defined $substr && $substr =~ m[^PCD_IPI]) { return q{x/x-photo-cd-pack-file}; } } if ($data =~ m[^PCD_OPA]) { return q{x/x-photo-cd-overfiew-file}; } if ($data =~ m[^\007\001\000]) { return q{Linux/i386 object file}; } if (length $data > 4086) { $substr = substr($data, 4086, 1024); if (defined $substr && $substr =~ m[^SWAP\-SPACE]) { return q{Linux/i386 swap file}; } } if ($data =~ m[^\;\;]) { return q{Lisp/Scheme program text}; } if ($data =~ m[^FFIL]) { return q{font/ttf}; } if (length $data > 65) { $substr = substr($data, 65, 1024); if (defined $substr && $substr =~ m[^FFIL]) { return q{font/ttf}; } } if ($data =~ m[^LWFN]) { return q{font/type1}; } if (length $data > 65) { $substr = substr($data, 65, 1024); if (defined $substr && $substr =~ m[^LWFN]) { return q{font/type1}; } } if ($data =~ m[^Return\-Path\:]) { return q{message/rfc822}; } if ($data =~ m[^Path\:]) { return q{message/news}; } if ($data =~ m[^Xref\:]) { return q{message/news}; } if ($data =~ m[^From\:]) { return q{message/rfc822}; } if ($data =~ m[^Article]) { return q{message/news}; } if ($data =~ m[^BABYL]) { return q{message/x-gnu-rmail}; } if ($data =~ m[^Received\:]) { return q{message/rfc822}; } if ($data =~ m[^MZ]) { return q{application/x-ms-dos-executable}; } if (length $data > 2080) { $substr = substr($data, 2080, 1024); if (defined $substr && $substr =~ m[^Microsoft\ Word\ 6\.0\ Document]) { return q{text/vnd.ms-word}; } } if (length $data > 2080) { $substr = substr($data, 2080, 1024); if (defined $substr && $substr =~ m[^Documento\ Microsoft\ Word\ 6]) { return q{text/vnd.ms-word}; } } if (length $data > 2112) { $substr = substr($data, 2112, 1024); if (defined $substr && $substr =~ m[^MSWordDoc]) { return q{text/vnd.ms-word}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '31be0000') eq $substr ) { return q{text/vnd.ms-word}; } } if ($data =~ m[^PO\^Q\`]) { return q{text/vnd.ms-word}; } if (length $data > 2080) { $substr = substr($data, 2080, 1024); if (defined $substr && $substr =~ m[^Microsoft\ Excel\ 5\.0\ Worksheet]) { return q{application/vnd.ms-excel}; } } if (length $data > 2114) { $substr = substr($data, 2114, 1024); if (defined $substr && $substr =~ m[^Biff5]) { return q{application/vnd.ms-excel}; } } if ($data =~ m[^\x31\xbe\x00\x00]) { return q{application/msword}; } if ($data =~ m[^PO\^Q\`]) { return q{application/msword}; } if (length $data > 1) { $substr = substr($data, 1, 1024); if (defined $substr && $substr =~ m[^WPC]) { return q{text/vnd.wordperfect}; } } if ($data =~ m[^StartFontMetrics]) { return q{font/x-sunos-news}; } if ($data =~ m[^StartFont]) { return q{font/x-sunos-news}; } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '137A2944') eq $substr ) { return q{font/x-sunos-news}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '137A2947') eq $substr ) { return q{font/x-sunos-news}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '137A2950') eq $substr ) { return q{font/x-sunos-news}; } } if (length $data > 0) { $substr = substr($data, 0, 4); if (pack('H*', '137A2951') eq $substr ) { return q{font/x-sunos-news}; } } if (length $data > 8) { $substr = substr($data, 8, 4); if (pack('H*', '137A2B45') eq $substr ) { return q{font/x-sunos-news}; } } if (length $data > 8) { $substr = substr($data, 8, 4); if (pack('H*', '137A2B48') eq $substr ) { return q{font/x-sunos-news}; } } if (length $data > 0) { $substr = substr($data, 0, 2); if (pack('H*', '87CD') eq $substr ) { return q{OS9/6809 module:}; } } if (length $data > 0) { $substr = substr($data, 0, 2); if (pack('H*', '4AFC') eq $substr ) { return q{OS9/68K module:}; } } if ($data =~ m[^\%PDF\-]) { return q{application/pdf}; } if ($data =~ m[^\%\!]) { return q{application/postscript}; } if ($data =~ m[^\004\%\!]) { return q{application/postscript}; } if ($data =~ m[^\033E\033]) { return q{image/x-pcl-hp}; } if ($data =~ m[^\<\!DOCTYPE\ HTML]) { return q{text/html}; } if ($data =~ m[^\<\!doctype\ html]) { return q{text/html}; } if ($data =~ m[^\]) { return q{A/E SGML Document binary}; } if ($data =~ m[^\<\!SQ\ STS\>]) { return q{A/E SGML binary styles file}; } if ($data =~ m[^\367\203]) { return q{font/x-tex}; } if ($data =~ m[^\367\131]) { return q{font/x-tex}; } if ($data =~ m[^\367\312]) { return q{font/x-tex}; } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\000\021]) { return q{font/x-tex-tfm}; } } if (length $data > 2) { $substr = substr($data, 2, 1024); if (defined $substr && $substr =~ m[^\000\022]) { return q{font/x-tex-tfm}; } } if (length $data > 1) { $substr = substr($data, 1, 1024); if (defined $substr && $substr =~ m[^WPC]) { return q{(Corel/WP)}; } } if ($data =~ m[^BLENDER]) { return q{application/x-blender}; } # autogerated code ends # fallback case { return 'application/octet-stream'; } } 1; __END__ =head1 NAME File::Type - determine file type using magic =head1 SYNOPSIS my $ft = File::Type->new(); # read in data from file to $data, then my $type_from_data = $ft->checktype_contents($data); # alternatively, check file from disk my $type_from_file = $ft->checktype_filename($file); # convenient method for checking either a file or data my $type_1 = $ft->mime_type($file); my $type_2 = $ft->mime_type($data); =head1 DESCRIPTION File::Type uses magic numbers (typically at the start of a file) to determine the MIME type of that file. File::Type can use either a filename, or file contents, to determine the type of a file. =head1 METHODS =head2 new Returns a new File::Type object. =head2 mime_type($argument) Takes either data or a filename, determines what it is, and passes the argument through to the relevant method below. If the argument is a directory, returns undef. =head2 checktype_filename($filename) Opens $filename (if possible; if not, returns undef) and returns the MIME type of the file. =head2 checktype_contents($data) Matches $data against the magic database criteria and returns the MIME type of the file. =head1 TODO =over 4 * Add additional magic match criteria =back =head1 BUGS None known. =head2 NOTES Some magic definitions in the mime-magic file used in the creation of this module vary from those in other apps (eg image/x-png not image/png). =head1 SEE ALSO L and L perform the same job, but have a number of problems that led to the creation of this module. L inlines a copy of the magic database, and uses a DATA filehandle, which causes problems when running under mod_perl. L uses an external magic file, and relies on file extensions rather than magic to determine the mime type. As a result, File::Type uses a seperate module and script to create the code at the core of this module, which means that there is no need to include a magic database at all, and that it is safe to run under mod_perl. L, which generates the code at the heart of this module. =head1 ACKNOWLEDGMENTS File::Type is built from a mime-magic file from cleancode.org. The original can be found at L. =head1 AUTHOR Paul Mison =head1 COPYRIGHT Copyright 2003-2004 Fotango Ltd. =head1 LICENSE Licensed under the same terms as Perl itself. =cut libfile-type-perl-0.22.orig/META.yml0000640000175000017500000000055410131560406020252 0ustar bastianbastian00000000000000--- #YAML:1.0 name: File-Type version: 0.22 license: perl distribution_type: module requires: IO::File: 0.01 Test::More: 0.01 recommends: {} build_requires: {} conflicts: {} provides: File::Type: file: lib/File/Type.pm version: 0.22 File::Type::Builder: file: lib/File/Type/Builder.pm version: 0.11 generated_by: Module::Build version 0.21 libfile-type-perl-0.22.orig/MANIFEST0000640000175000017500000000103110131560406020121 0ustar bastianbastian00000000000000Build.PL Changes MANIFEST This list of files META.yml Makefile.PL NINJA README data/mime-magic data/wizard.pl lib/File/Type.pm lib/File/Type/Builder.pm t/00setup.t t/01type.t t/02mime.t t/files/0001.avi t/files/0001.wav t/files/File-Type.html t/files/blank.bmp t/files/blank.gif t/files/blank.jpg t/files/blank.png t/files/blank.pdf t/files/blank.tif t/files/blank.zip t/files/id3lib1.mp3 t/files/id3v2.4.mp3 t/files/kite.asf t/files/rebound.wav t/files/standards.mov t/files/tarball.tar.bz2 t/files/tarball.tar.gz t/files/tarball.tar libfile-type-perl-0.22.orig/data/0000750000175000017500000000000010131561363017710 5ustar bastianbastian00000000000000libfile-type-perl-0.22.orig/data/mime-magic0000640000175000017500000011066610131560406021650 0ustar bastianbastian000000000000000 leshort 0x602 application/x-alan-adventure-game 0 string TADS application/x-tads-game 0 short 0420 application/x-executable-file 0 short 0421 application/x-executable-file 0 leshort 0603 application/x-executable-file 0 string Core\001 application/x-executable-file 0 string AMANDA:\ TAPESTART\ DATE application/x-amanda-header 0 belong 0x000003f3 application/x-executable-file 0 belong 0x000003e7 application/x-library-file 0 belong 0x000001b3 video/mpeg 0 belong 0x000001ba video/mpeg 0 beshort&0xfff0 0xfff0 audio/mpeg 4 leshort 0xAF11 video/fli 4 leshort 0xAF12 video/flc 0 string MOVI video/x-sgi-movie 4 string moov video/quicktime 4 string mdat video/quicktime 8 string mp42 video/quicktime 12 string mdat video/quicktime 36 string mdat video/quicktime 0 belong 0x3026b275 video/x-ms-asf 0 string ASF\ audio/x-ms-asx 0 string \\ndebian application/x-dpkg 0 long 0177555 application/x-ar 0 short 0177555 application/data 0 long 0177545 application/data 0 short 0177545 application/data 0 long 0100554 application/x-apl-workspace 0 string = application/x-ar 0 string !\n__________E application/x-ar 0 string -h- application/data 0 string ! application/x-ar 0 string \ application/x-ar 0 string = application/x-ar 0 belong 0x65ff0000 application/x-ar 0 belong 0x3c61723e application/x-ar 0 long 0x213c6172 application/x-ar 0 lelong 0177555 application/data 0 leshort 0177555 application/data 0 lelong 0177545 application/data 0 leshort 0177545 application/data 0 lelong 0x39bed application/data 0 lelong 0x39bee application/data 0 lelong&0x8080ffff 0x0000081a application/x-arc 0 lelong&0x8080ffff 0x0000091a application/x-arc 0 lelong&0x8080ffff 0x0000021a application/x-arc 0 lelong&0x8080ffff 0x0000031a application/x-arc 0 lelong&0x8080ffff 0x0000041a application/x-arc 0 lelong&0x8080ffff 0x0000061a application/x-arc 0 string \032archive application/data 0 leshort 0xea60 application/x-arj 0 string HPAK application/data 0 string \351,\001JAM\ application/data 2 string -lh0- application/x-lha 2 string -lh1- application/x-lha 2 string -lz4- application/x-lha 2 string -lz5- application/x-lha 2 string -lzs- application/x-lha 2 string -lh\40- application/x-lha 2 string -lhd- application/x-lha 2 string -lh2- application/x-lha 2 string -lh3- application/x-lha 2 string -lh4- application/x-lha 2 string -lh5- application/x-lha 0 string Rar! application/x-rar 0 string SQSH application/data 0 string UC2\x1a application/data 0 string PK\003\004 application/zip 20 lelong 0xfdc4a7dc application/x-zoo 10 string #\ This\ is\ a\ shell\ archive application/x-shar 0 string *STA application/data 0 string 2278 application/data 0 beshort 0560 application/x-executable-file 0 beshort 0561 application/x-executable-file 0 string \000\004\036\212\200 application/core 0 string .snd audio/basic 0 lelong 0x0064732E audio/basic 0 string MThd audio/midi 0 string CTMF audio/x-cmf 0 string SBI audio/x-sbi 0 string Creative\ Voice\ File audio/x-voc 0 belong 0x4e54524b audio/x-multitrack 8 string AVI video/x-msvideo 8 string WAVE audio/x-wav 0 string EMOD audio/x-emod 0 belong 0x2e7261fd audio/x-pn-realaudio 0 string MTM audio/x-multitrack 0 string if audio/x-669-mod 0 string FAR audio/mod 0 string MAS_U audio/x-multimate-mod 0x2c string SCRM audio/x-st3-mod 0 string GF1PATCH110\0ID#000002\0 audio/x-gus-patch 0 string GF1PATCH100\0ID#000002\0 audio/x-gus-patch 0 string JN audio/x-669-mod 0 string UN05 audio/x-mikmod-uni 0 string Extended\ Module: audio/x-ft2-mod 21 string !SCREAM! audio/x-st2-mod 1080 string M.K. audio/x-protracker-mod 1080 string M!K! audio/x-protracker-mod 1080 string FLT4 audio/x-startracker-mod 1080 string 4CHN audio/x-fasttracker-mod 1080 string 6CHN audio/x-fasttracker-mod 1080 string 8CHN audio/x-fasttracker-mod 1080 string CD81 audio/x-oktalyzer-mod 1080 string OKTA audio/x-oktalyzer-mod 1080 string 16CN audio/x-taketracker-mod 1080 string 32CN audio/x-taketracker-mod 0 string TOC audio/x-toc 0 beshort&0xfffe 0xfffa audio/mp3 0 string ID3 audio/mp3 0 short 03401 application/x-executable-file 0 long 0406 application/x-executable-file 0 short 0406 application/x-executable-file 0 short 03001 application/x-executable-file 0 lelong 000000314 application/x-executable-file 0 string // text/cpp 0 string \\1cw\ application/data 0 string \\1cw application/data 0 belong&0xffffff00 0x85011400 application/data 0 belong&0xffffff00 0x8501cb00 application/data 0 short 0575 application/x-executable-file 0 short 0577 application/x-executable-file 4 string pipe application/data 4 string prof application/data 0 string :\ shell application/data 0 string #!/bin/sh application/x-sh 0 string #!\ /bin/sh application/x-sh 0 string #!\ /bin/sh application/x-sh 0 string #!/bin/csh application/x-csh 0 string #!\ /bin/csh application/x-csh 0 string #!\ /bin/csh application/x-csh 0 string #!/bin/ksh application/x-ksh 0 string #!\ /bin/ksh application/x-ksh 0 string #!\ /bin/ksh application/x-ksh 0 string #!/bin/tcsh application/x-csh 0 string #!\ /bin/tcsh application/x-csh 0 string #!\ /bin/tcsh application/x-csh 0 string #!/usr/local/tcsh application/x-csh 0 string #!\ /usr/local/tcsh application/x-csh 0 string #!/usr/local/bin/tcsh application/x-csh 0 string #!\ /usr/local/bin/tcsh application/x-csh 0 string #!\ /usr/local/bin/tcsh application/x-csh 0 string #!/usr/local/bin/zsh application/x-zsh 0 string #!\ /usr/local/bin/zsh application/x-zsh 0 string #!\ /usr/local/bin/zsh application/x-zsh 0 string #!/usr/local/bin/ash application/x-sh 0 string #!\ /usr/local/bin/ash application/x-zsh 0 string #!\ /usr/local/bin/ash application/x-zsh 0 string #!/usr/local/bin/ae text/script 0 string #!\ /usr/local/bin/ae text/script 0 string #!\ /usr/local/bin/ae text/script 0 string #!/bin/nawk application/x-awk 0 string #!\ /bin/nawk application/x-awk 0 string #!\ /bin/nawk application/x-awk 0 string #!/usr/bin/nawk application/x-awk 0 string #!\ /usr/bin/nawk application/x-awk 0 string #!\ /usr/bin/nawk application/x-awk 0 string #!/usr/local/bin/nawk application/x-awk 0 string #!\ /usr/local/bin/nawk application/x-awk 0 string #!\ /usr/local/bin/nawk application/x-awk 0 string #!/bin/gawk application/x-awk 0 string #!\ /bin/gawk application/x-awk 0 string #!\ /bin/gawk application/x-awk 0 string #!/usr/bin/gawk application/x-awk 0 string #!\ /usr/bin/gawk application/x-awk 0 string #!\ /usr/bin/gawk application/x-awk 0 string #!/usr/local/bin/gawk application/x-awk 0 string #!\ /usr/local/bin/gawk application/x-awk 0 string #!\ /usr/local/bin/gawk application/x-awk 0 string #!/bin/awk application/x-awk 0 string #!\ /bin/awk application/x-awk 0 string #!\ /bin/awk application/x-awk 0 string #!/usr/bin/awk application/x-awk 0 string #!\ /usr/bin/awk application/x-awk 0 string #!\ /usr/bin/awk application/x-awk 0 string BEGIN application/x-awk 0 string #!/bin/perl application/x-perl 0 string #!\ /bin/perl application/x-perl 0 string #!\ /bin/perl application/x-perl 0 string eval\ "exec\ /bin/perl application/x-perl 0 string #!/usr/bin/perl application/x-perl 0 string #!\ /usr/bin/perl application/x-perl 0 string #!\ /usr/bin/perl application/x-perl 0 string eval\ "exec\ /usr/bin/perl application/x-perl 0 string #!/usr/local/bin/perl application/x-perl 0 string #!\ /usr/local/bin/perl application/x-perl 0 string #!\ /usr/local/bin/perl application/x-perl 0 string eval\ "exec\ /usr/local/bin/perl application/x-perl 0 string #!/bin/rc text/script 0 string #!\ /bin/rc text/script 0 string #!\ /bin/rc text/script 0 string #!/bin/bash application/x-sh 0 string #!\ /bin/bash application/x-sh 0 string #!\ /bin/bash application/x-sh 0 string #!/usr/local/bin/bash application/x-sh 0 string #!\ /usr/local/bin/bash application/x-sh 0 string #!\ /usr/local/bin/bash application/x-sh 0 string #!\ / text/script 0 string #!\ / text/script 0 string #!/ text/script 0 string #!\ text/script 0 string \037\235 application/compress 0 string \037\213 application/x-gzip 0 string \037\036 application/data 0 short 017437 application/data 0 short 0x1fff application/data 0 string \377\037 application/data 0 short 0145405 application/data 0 string BZh application/x-bzip2 0 leshort 0xFF76 application/data 0 leshort 0xFE76 application/data 0 leshort 0xFD76 application/x-lzh 0 string \037\237 application/data 0 string \037\236 application/data 0 string \037\240 application/data 0 string BZ application/x-bzip 0 string \x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a application/data 0 belong 0507 application/x-object-file 0 belong 0513 application/x-executable-file 0 belong 0515 application/x-executable-file 0 belong 0517 application/x-executable-file 0 belong 0x011257 application/core 24 belong 60011 application/data 24 belong 60012 application/data 24 belong 60013 application/data 24 belong 60014 application/data 0 belong 0601 application/x-object-file 0 belong application/core 0 belong 0607 application/data 0 belong 0x13579ace application/x-gdbm 0 lelong 0x13579ace application/x-gdbm 0 string GDBM application/x-gdbm 0 belong 0x061561 application/x-db 0 belong 0x053162 application/x-db 0 string =\n\n________64E application/data 0 leshort 0x183 application/x-executable-file 0 leshort 0x188 application/x-executable-file 0 leshort 0x18f application/x-object-file 0 string \377\377\177 application/data 0 string \377\377\174 application/data 0 string \377\377\176 application/data 0 string \033c\033 application/data 0 long 04553207 image/x11 0 string !!\n application/x-prof 0 short 0x0501 application/x-locale 24 belong 60012 application/x-dump 24 belong 60011 application/x-dump 24 lelong 60012 application/x-dump 24 lelong 60011 application/x-dump 0 string \177ELF application/x-executable-file 0 short 0x154 application/data 0 short 0x155 application/x-executable-file 0x438 leshort 0xEF53 application/x-linux-ext2fs 0 string \366\366\366\366 application/x-pc-floppy 0774 beshort 0xdabe application/data 0x1FE leshort 0xAA55 application/data 0x410 leshort 0x137f application/x-filesystem 0x410 leshort 0x138f application/x-filesystem 0x410 leshort 0x2468 application/x-filesystem 0x410 leshort 0x2478 application/x-filesystem 0 string -rom1fs-\0 application/x-filesystem 0 lelong 0x1b031336L application/x-bootable 0x18b string OS/2 application/x-bootable 0 string FONT font/x-vfont 0 short 0436 font/x-vfont 0 short 017001 font/x-vfont 0 string %!PS-AdobeFont-1.0 font/type1 6 string %!PS-AdobeFont-1.0 font/type1 0 belong 00000004 font/x-snf 0 lelong 00000004 font/x-snf 0 string STARTFONT\040 font/x-bdf 0 string \001fcp font/x-pcf 0 string D1.0\015 font/x-speedo 0 string flf font/x-figlet 0 string flc application/x-font 0 belong 0x14025919 font/x-libgrx 0 belong 0xff464f4e font/x-dos 7 belong 0x00454741 font/x-dos 7 belong 0x00564944 font/x-dos 4098 string DOSFONT font/x-dos 0 string \ application/x-archive 0 string FORM application/data 0 string P1 image/x-portable-bitmap 0 string P2 image/x-portable-graymap 0 string P3 image/x-portable-pixmap 0 string P4 image/x-portable-bitmap 0 string P5 image/x-portable-graymap 0 string P6 image/x-portable-pixmap 0 string IIN1 image/tiff 0 string MM\x00\x2a image/tiff 0 string II\x2a\x00 image/tiff 0 string \x89PNG image/x-png 1 string PNG image/x-png 0 string GIF8 image/gif 0 string \361\0\100\273 image/x-cmu-raster 0 string id=ImageMagick MIFF image data 0 long 1123028772 Artisan image data 0 string #FIG FIG image text 0 string ARF_BEGARF PHIGS clear text archive 0 string @(#)SunPHIGS SunPHIGS 0 string GKSM GKS Metafile 0 string BEGMF clear text Computer Graphics Metafile 0 beshort&0xffe0 0x0020 binary Computer Graphics Metafile 0 beshort 0x3020 character Computer Graphics Metafile 0 string yz MGR bitmap, modern format, 8-bit aligned 0 string zz MGR bitmap, old format, 1-bit deep, 16-bit aligned 0 string xz MGR bitmap, old format, 1-bit deep, 32-bit aligned 0 string yx MGR bitmap, modern format, squeezed 0 string %bitmap\0 FBM image data 1 string PC\ Research,\ Inc group 3 fax data 0 beshort 0xffd8 image/jpeg 0 string hsi1 image/x-jpeg-proprietary 0 string BM image/x-bmp 0 string IC image/x-ico 0 string PI PC pointer image data 0 string CI PC color icon data 0 string CP PC color pointer image data 0 string /*\ XPM\ */ X pixmap image text 0 leshort 0xcc52 RLE image data, 0 string Imagefile\ version- iff image data 0 belong 0x59a66a95 x/x-image-sun-raster 0 beshort 474 x/x-image-sgi 0 string IT01 FIT image data 0 string IT02 FIT image data 2048 string PCD_IPI x/x-photo-cd-pack-file 0 string PCD_OPA x/x-photo-cd-overfiew-file 0 string SIMPLE\ \ = FITS image data 0 string This\ is\ a\ BitMap\ file Lisp Machine bit-array-file 0 string !! Bennet Yee's "face" format 0 beshort 0x1010 PEX Binary Archive 03000 string Visio\ (TM)\ Drawing %s 0 leshort 0502 basic-16 executable 0 leshort 0503 basic-16 executable (TV) 0 leshort 0510 application/x-executable-file 0 leshort 0511 application/x-executable-file 0 leshort =0512 application/x-executable-file 0 leshort =0522 application/x-executable-file 0 leshort =0514 application/x-executable-file 0 string =\210OPS Interleaf saved data 0 string = Compiled SGML rules file 0 string \ A/E SGML Document binary 0 string \ A/E SGML binary styles file 0 short 0xc0de Compiled PSI (v1) data 0 short 0xc0da Compiled PSI (v2) data 0 short 0125252 SoftQuad DESC or font file binary 0 string SQ\ BITMAP1 SoftQuad Raster Format text 0 string X\ SoftQuad troff Context intermediate 0 belong&077777777 0600413 sparc demand paged 0 belong&077777777 0600410 sparc pure 0 belong&077777777 0600407 sparc 0 belong&077777777 0400413 mc68020 demand paged 0 belong&077777777 0400410 mc68020 pure 0 belong&077777777 0400407 mc68020 0 belong&077777777 0200413 mc68010 demand paged 0 belong&077777777 0200410 mc68010 pure 0 belong&077777777 0200407 mc68010 0 belong 0407 old sun-2 executable 0 belong 0410 old sun-2 pure executable 0 belong 0413 old sun-2 demand paged executable 0 belong 0x080456 SunOS core file 0 long 0xfa33c08e SunPC 4.0 Hard Disk 0 string #SUNPC_CONFIG SunPC 4.0 Properties Values 0 string snoop Snoop capture file 36 string acsp Kodak Color Management System, ICC Profile 0 string #!teapot\012xdr teapot work sheet (XDR format) 0 string \032\001 Compiled terminfo entry 0 short 0433 Curses screen image 0 short 0434 Curses screen image 0 string \367\002 TeX DVI file 0 string \367\203 font/x-tex 0 string \367\131 font/x-tex 0 string \367\312 font/x-tex 0 string This\ is\ TeX, TeX transcript text 0 string This\ is\ METAFONT, METAFONT transcript text 2 string \000\021 font/x-tex-tfm 2 string \000\022 font/x-tex-tfm 0 string \\input\ texinfo Texinfo source text 0 string This\ is\ Info\ file GNU Info text 0 string \\input TeX document text 0 string \\section LaTeX document text 0 string \\setlength LaTeX document text 0 string \\documentstyle LaTeX document text 0 string \\chapter LaTeX document text 0 string \\documentclass LaTeX 2e document text 0 string \\relax LaTeX auxiliary file 0 string \\contentsline LaTeX table of contents 0 string \\indexentry LaTeX raw index file 0 string \\begin{theindex} LaTeX sorted index 0 string \\glossaryentry LaTeX raw glossary 0 string \\begin{theglossary} LaTeX sorted glossary 0 string This\ is\ makeindex Makeindex log file 0 string **TI82** TI-82 Graphing Calculator 0 string **TI83** TI-83 Graphing Calculator 0 string **TI85** TI-85 Graphing Calculator 0 string **TI92** TI-92 Graphing Calculator 0 string **TI80** TI-80 Graphing Calculator File. 0 string **TI81** TI-81 Graphing Calculator File. 0 string TZif timezone data 0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0 old timezone data 0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0 old timezone data 0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\0 old timezone data 0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\4\0 old timezone data 0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0 old timezone data 0 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0 old timezone data 0 string .\\" troff or preprocessor input text 0 string '\\" troff or preprocessor input text 0 string '.\\" troff or preprocessor input text 0 string \\" troff or preprocessor input text 0 string x\ T ditroff text 0 string \100\357 very old (C/A/T) troff output data 0 string Interpress/Xerox Xerox InterPress data 0 short 0x107 unknown machine executable 0 short 0x108 unknown pure executable 0 short 0x109 PDP-11 separate I&D 0 short 0x10b unknown pure executable 0 long 0x10c unknown demand paged pure executable 0 long 0x10d unknown demand paged pure executable 0 long 0x10e unknown readable demand paged pure executable 0 string begin\040 uuencoded or xxencoded text 0 string xbtoa\ Begin btoa'd text 0 string $\012ship ship'd binary text 0 string Decode\ the\ following\ with\ bdeco bencoded News text 11 string must\ be\ converted\ with\ BinHex BinHex binary text 0 short 0610 Perkin-Elmer executable 0 beshort 0572 amd 29k coff noprebar executable 0 beshort 01572 amd 29k coff prebar executable 0 beshort 0160007 amd 29k coff archive 6 beshort 0407 unicos (cray) executable 596 string \130\337\377\377 Ultrix core file 0 string Joy!peffpwpc header for PowerPC PEF executable 0 lelong 0101557 VAX single precision APL workspace 0 lelong 0101556 VAX double precision APL workspace 0 lelong 0407 VAX executable 0 lelong 0410 VAX pure executable 0 lelong 0413 VAX demand paged pure executable 0 leshort 0570 VAX COFF executable 0 leshort 0575 VAX COFF pure executable 0 string LBLSIZE= VICAR image data 43 string SFDU_LABEL VICAR label file 0 short 0x5555 VISX image file 0 string \xb0\0\x30\0 VMS VAX executable 0 belong 0x03000000 VMS Alpha executable 1 string WPC (Corel/WP) 0 string core core file (Xenix) 0 byte 0x80 8086 relocatable (Microsoft) 0 leshort 0xff65 x.out 0 leshort 0x206 Microsoft a.out 0 leshort 0x140 old Microsoft 8086 x.out 0 lelong 0x206 b.out 0 leshort 0x580 XENIX 8086 relocatable or 80286 small model 0 long 0xe807 object file (z8000 a.out) 0 long 0xe808 pure object file (z8000 a.out) 0 long 0xe809 separate object file (z8000 a.out) 0 long 0xe805 overlay object file (z8000 a.out) 0 string ZyXEL\002 ZyXEL voice data 0 string BLENDER application/x-blender libfile-type-perl-0.22.orig/data/wizard.pl0000640000175000017500000000240010131560406021537 0ustar bastianbastian00000000000000#!/usr/bin/perl use warnings; use strict; use lib './lib','../lib'; use IO::File; use File::Type::Builder; my $in = new IO::File; my $out = new IO::File "> cases.pl"; die "No output file!" unless defined ($out); my ($line, $count) = (0, 0); my $build = File::Type::Builder->new(); if ($in->open("< mime-magic")) { while (<$in>) { $line++; my $data = $_; chomp $data; # special case for a couple of lines that are unparsable next if ($data =~ m/Content-Type/); my $parsed = $build->parse_magic($data, $line); if (!defined $parsed) { # warn "Skipping line $line\n"; next; } # output to new line if ($parsed->{pattern_type} eq 'string') { my $code = $build->string($parsed); next unless defined($code); print $out $code; $count++; } elsif ($parsed->{pattern_type} =~ m/^be/) { my $code; if ($parsed->{pattern_type} eq 'beshort') { $code = $build->be($parsed, 2); } if ($parsed->{pattern_type} eq 'belong') { $code = $build->be($parsed, 4); } next unless defined($code); print $out $code; $count++; } } } print "Read $line lines. Written $count conditions.\n"; exit; __END__ libfile-type-perl-0.22.orig/Makefile.PL0000640000175000017500000000044310131560406020750 0ustar bastianbastian00000000000000# Generated by Module::Build::Compat->create_makefile_pl use ExtUtils::MakeMaker; WriteMakefile ( NAME => 'File::Type', VERSION => '0.22', PL_FILES => {}, INSTALLDIRS => 'site', PREREQ_PM => { 'Test::More' => '0.01', 'IO::File' => '0.01', }, ); libfile-type-perl-0.22.orig/Changes0000640000175000017500000000237110131560406020273 0ustar bastianbastian00000000000000Changelog for File::Type 0.22 Thu May 06 11:00:00 BST 2004 - Added MIME type for PDFs - Added some MP3 detection 0.21 Mon Apr 26 14:10:00 BST 2004 - Differentiated .wav and .avi 0.20 Wed Mar 03 16:10:00 GMT 2004 - Added .asf movie support, and accompanying tests - Added NINJA file 0.12 Fri Dec 05 16:40:00 GMT 2003 - Fixed more minor documentation glitches - Removed File::Slurp dependency 0.11 Wed Sep 24 10:40:00 BST 2003 - Fixed minor documentation glitches 0.10 Mon Sep 01 11:45:00 BST 2003 - added mime_type method to take either file or data - removed superflous Build file from manifest, distribution - tidied test suite 0.05 Tue Aug 26 17:18:00 BST 2003 - fixed documentation bugs - added belong to generation and rules 0.04 Tue Aug 26 13:02:00 BST 2003 - first public release - fixed substr/undef warnings on small files 0.03 Tue Aug 26 11:14:00 BST 2003 - added and documented clearcode.org mime-magic - smaller test images 0.02 Fri Aug 22 15:00:00 BST 2003 - corrected Builder.pm to handle tar and gzip types - many additional tests 0.01 Thu Aug 21 17:30:00 BST 2003 - initial version - works for image/jpeg libfile-type-perl-0.22.orig/Build.PL0000750000175000017500000000040710131560406020274 0ustar bastianbastian00000000000000#!/usr/bin/perl use Module::Build; use strict; Module::Build->new( module_name => 'File::Type', license => 'perl', requires => { 'Test::More' => 0.01, 'IO::File' => 0.01, }, create_makefile_pl => 'traditional', )->create_build_script; libfile-type-perl-0.22.orig/README0000640000175000017500000000107510131560406017660 0ustar bastianbastian00000000000000NAME File::Type - determine file type using magic INSTALLING Install using the standard Module::Build method: perl Build.PL ./Build ./Build test sudo ./Build install A Makefile.PL is also included if you do not have Module::Build: perl Makefile.PL make make test sudo make install USAGE my $ft = File::Type->new(); # read in data from file to $data, then my $type_from_data = $ft->checktype_data($data); # alternatively, check file from disk my $type_from_file = $ft->checktype_filename($file); For further information, perldoc File::Type after installation.