Audio-Musepack-1.0.1/0000755000076500007650000000000011505546504013611 5ustar danieldanielAudio-Musepack-1.0.1/data/0000755000076500007650000000000011505546504014522 5ustar danieldanielAudio-Musepack-1.0.1/data/test.mpc0000644000076500007650000014510611174144322016203 0ustar danieldanielMP+rYf|_ʒʒ`F?`F?`F?`F?+(C'SNE (:f|?矹ggw>g>׳CE&cfʘ8LMBTzyiZ ?Q2hjz@l{ Vflj6%~ǡM-KaCOS nѼ~)~?xkAh$l}JПa6h۬r {]VfI"V͹~*178YLKtDg@g>~qq~?O&EueBڃKuw~[YL/S<2TY@lh5 #o@8-YAKN]dU=-~^d%, +ŚGȩbp7~ VF޼/x~85/E$Rw蜧{Tb]xtyCrr̉),'0~?+3W*$'I~=Я S˹ 5zgM%uy^sCH'""W hΐYKmR.ED}4:j_Io|Ac1"ٚ4O''^D$nE?yz!g鮚wI&P%JAu"x, "c ݮ{ ]WQRW_Ojuo]!vmۖKn}%Smli5Ofm%QӶ;QU&iT_u_3Qz/K bFJDCɡZ,zNDdFGwMuWv]9V]͜b#wђhK! L>;V5_r.u~ya.  X1UFpa43 i/*Jdϥ%E.Kі mS>Y,=183=P5NK;)rvϏT#jNSL+ ~(h=6}ŹR? LH̓;gy42\S*xwF_+/3x<&avKv{ 6>:>t7|݇ݦe-kGW.(D~x"~]&ʡy ~r!|Q~oqh"ң=7\#zCxwkw;-ձJͽQ|za=Aθ뚨-}qjx}z{~~w+~H:v*ܲV  sR 2%#7uOX}YxBزefn9&JXo+X$_!-)K7KQ>gT[Q[n^싰H[H`vi')b,'5As*> Tߎ;e~\:Cfm>.hm(qQfu:$ķ8Qs@M˨X:}[_grAEGt+V_"r!`kؚL{T\yzE')k]q ߖϫl<\:E}5тt4#/h5YJf0f~tGl]0fn).=uu밺~צ$~s8%w "ޗF{9sJ~F﾿oUNKM;u <wրVC[?Ѹl?`:Ums:k"—L}w:/=PiߣyEE7pSGۙR :4hK_0͕@6lٮփ RV'8s)B)mq‰?Q~hUUDs"53$Oa*}Sͫ<[@X&ZbVZ{ h}{ŗ}?,13LM%K^x{2q7гP7xs.Բ g>.&|WLy𹪞S]}wz;+b~,أߏ_IcX.rMS֦Y }2+oo?~nw1m|T Ш~rQ P^EfwvhXE-qSd0pG+aFTfs-sA> !4 {SI,JʔW>{p~e]戩hov:K.!b}Q-ŕNGvG1=1-+ϒ54ד;?L?&A4Y<̻KB+nmœN}d3;)J5v8%dY?t77lV+QuqK&9Y iZTgpdMqEf,ڟ4aioG̛(ӊI+vb2k_s"ίVh Up "ନe8$\;ViZ.s\3RUZyÎpLU%,(NzQu%pd t>'&_>d3}:e=z ۼ.bqsHK7vFMA?c Y%z\ (`J$(/\˕Xm&`P vge$f9 lr![4X^v~em;tShqAx9^_wv~҇-j#Ǟ4g,_?x&3-{=b n#(}a9#B^< P̾Ib/B ORA7fz@ l8?:~DMdVʾ:]U/:?h>s~}pW3ew)CUqw ԙGrsP2R(>2ԻR7o_[W5?WjrN];ҏ53= $QY`g ;}R=ʽ_GvEfvoƟt7'o%"jg/O־+@1k)ŷо/9˼lQ;_]lÖu\mقWo7ƨ"&U/T)Hj bzȹY' u IIh5nU[:av+>x[ܐ @䲜ݑ]lt~7mXh]aykh,SK~b퉋jy+RWۿgfNj=BUzL(oVa΀m}:;dA7bb4C=|nk-rTL s'_̠oFO95\ġlUNxNʆBcA\"e2Eh/-Xv)йMD] aLQ/v]H{ǒdo9:a/Puj8d^IX6s8;ǎ̋-I'4!?#t_cYnevOn{>I9BVQ^zwVE,r%.V|\K9Թ ӳw;lǓ9䈯ԫ_!a]ߺ~Q ߠN\QX Ҿڦ]0ǃ'ueZG陬G݃?0)|C)Aw^2}kP@Wup{a׾5;:q?eZWvٝՊuf'1Ѹ?υVjp@TZvbZ$?TMqKƒ ݴ\Wm:il^O&È u3r)\o 'zQ6dֿ T_:~1iVr~!"?oETys9OM=%Qt-ndYRuEΌ)TE,ygP.|G <]=TS:-mU8V;⽹Q*\Y ^7{`*s|6^4r:YΣu!U߷WL*41i,Ul+*n݄Ә{"'#mQD&f1n}-%B))#Fh•UhMyk 6jЖCIo@b:)LNLcT&EL-|Xdfi[zu=/9<ǝӴGo3$oHf2{g-c`n.İS#UR5#o'ђv/^ڽaB]lmNW96ZSo3ef1׭Gm7M_Q]~/1z֜r2Q ɽ /:ikǗ%g;ml7l^6pcr-''vSQ}w Vr3Dש߫ Su(+d5@Q,&MNaYN 8RGAEg6s9.w[$<_ut?'v V)~RN_5[fr0Wm6gHldV`_ւ_Rvv%"_]iUY]gKl/0+T :ï%N}dcaþy/ ⬎5x~Աܝȳ/g޻8^oGZ-%@|CiI>)㺔gd݉c? u3ȅuQ}y96atbjW >|&P/؇94_r㝉~">4PfW9}/(+K^/_{Vkeܟ1u=V#i@۷LIIoIĹQӪk}U*=6w߾tןeN`W*%QVT"(mޛy#. BCծ}K%Z32G6̔)N0 U?^](sV`o˹]Ufhîq7YrIWFw*y7A<.&t͊G+gΆ6/ `Z5fpTkzo{u2xa|3ٶͽ7?Wrٝu8~A4Qm{Y~U8{\/zCP7с \y~/MֿlTBue6~߮ ܟ#N P‹ygىm?CN h~Z‘(h E[*.sR\fVyTp*.M'_XmDy~ʥjLq㞭2Th}}T1D40p/zKM['je $!,t/)YwԗI~Œr:sZ@VIҤl)"Krd_.JqGkX<+ w= } 70ɝ/|Nì'{tV|ԍSOG=\6=sDZ--J.3}w@2*Il7׊ub צmb5lz[vq|z# wϲ"Y Ko+ի'왽W俉/'yNvEUD{ZhY,G*V LW^uC'5rzLЛR:B%[~83E;>*ܱBԻ߂';LzV%~6 oE6u:Έ}jYλ=機6jw5:&bU]^jЩx'Oٶhrb|*13L2$D.ݚh׹k+\.u<&X,K|J)7 HY ĉz~~sL-uvrŭ-MsIa5${1˨\$HM d+2f[>%5m|*n8nSq3&[ĉ=%oc]GI1/M6ʅc\u'=D6dq̷_3 oM0׶kp|ӮYJodO%?`zUG j?_՟w͎˗t]$(B Oѻ~.;@q839 wW!q="Z֎/*5sٔ 1:EQ9U[3\Frm8+rwlY`Ҽo<'(Јf/[=P:_fn!mH=_?&;{ǩCbEy9"7*۟x~46ӈ\s|O(J!DY3p8!u@"kZ rɦ&>IfMx|Y;,ΨE v`EnGvmD)Li"{gnbW̳ﬔavm=!a*R['~_z=uPW97gJ?x-F'.&O{z;ATYek}ɏڽ*X&lshf23*]>59CfVt6줞Ox[v&9ˉę-!̌̾RR'/ϭr\f*E?]jM[j|}_pq"{/K^ʘѯ_t#[ %xf /kYlx4Zғ,$XY{^Gdyɾ#]kIyPybX 6R=&nRA;3b]ϞAw7W#=NMm]?vkLP! a."ӭD~{{O)ڰ[vͿUWB{|cƚ.˿wWc]ZvCso'/o5xUZU [j:C@R!etPy+=-'.hJ3T23bNUĖ"s 쓅h%nleq)Arg @gVv^R&2xow&fѴRXHwVaUW4hN#[g2dZ`ݶz ̎S07?m7yٿ3zoz PWt^85?'gd>ɥc}WubmMkν77wo?mSG4۩^@<_Rv}w&ʼnMyr6rԫw !}6d>m<.X`.U QWHZȳKZ'O2>20a3⎗XV{-6og++aA—xmgk9w?B!hmyJ[=]蕸yo!~ʤNX{gw NM~3E7wϰoVI8;g5 ^0xߪvv ~gՇjH-Cӫ9h)$XH!g vQew"r HSU7j͟WmI.%Wr5I&t!}+x<oN'[(gkExPɋOw"]*z۞#b_lRPj0k!3nd&X^(i6ӝm1YG}{4G%\r`:X+5(a7sx9,o1|EgZ m =WM4&_4"=^cBӐ3@Cbw7~!oLkЙ1w i6X˼%_}rY9|ns3}6αîUOn{s } R N9~ )dvE.:BS=GqON6tɝɛ}Ǯxuav]_?DYϿk_{FˇTTyXd[gr# TBrI<lj'F؁oH7;:R%AH۪ͭ-3t$آApg`ٛ(L3/ e?B>k? 쾰>UX%⬄ɗЎt~M*pt2ݠF33Hg;wt2Y\'en Lʣk$m Imuz7k põN$]DkCs>vG6z8Lx=nWħkX+wZAezQ:Dsd53٫^6 |۫Wū@V\ c6/RC1bMԇHrǘ2Y:ZfqnyO/kzWȤSTҋd{Tbovq+grۃz)7lTULEꌪfm!YD?h'UڢPm$ lՅS76KrЖ vBRF)p?[}=Z!FLS;Y-^2S| (9i~kی,e:f֟h(BIUYEۀߖރe0 e}]w5Aw::vȱ~ϗSL I<=}SbKN6oaPQ/|ttqG(?yu }˥17:UJ|毿Q˞b3jwi-LןkhQw0M1B||l.~[Yʹޝۢïw[F2`ΟF&p_k;xx~{oޞGoyⷲڼ~jnpV(!8@%D@$!7§\[:D˵fD'MDr1>'VV)r{Uf mmuF9q\27Hk9J_-w+rNK.SF Z6ݦܲ dӕށm]NlVj/<99s I֥_nt9;eĻDֺ.e~L/34kx&y%{*5uZ/Z\9VvCN%d&%չdۀ=_>VVJ{0p[,WqVŹX YUtOaO.xͺݖez?do頻++s{ۺ?R]_{=O3ܣiϙiܘ_{Fvwy&0N); B EC@㼇=UQu[LmknK٬fs9n]ߒuU5LCҴd8ֺ,U҄yDLй`؆,`WgҊ|]DlN61ˢ4J'Eru hIo?e`)u~rj1祍:L'e}8]܄W;h,b~25wކ:uh WI%5o%IITeSoEU#o$鷠[+Yv8I2_1jPZ c(U#b[ٲ>g?k5oWWi{h_O?\Gnr_|60Z[ Hh@O ~覊T{Aoo{G϶}//T~_2߻( [zYwfsli<)M"7Um@ʿUXTe$ )6[{H?[SO x4f:\6,e^5ZP2T ߵ@0i#Ι\9{s}>?}Vb;HnlӇvr4x%6MUc/\-h}k\p?WaݞDHcĦ;tl#,^_;;S?#ԣ}6< zW6j>_ I)([u^:NJ}ØXH֘a'zwH` 'O$=KrlfodϦCںE\7?Jj'{7f2T_^u_,:q´Sc)E;{L;1[:cSW~r4Dwd* 766|'% v[,va>lTo|KЅ?>nF=U.tPpNU?{/q͕ N0C.KFF3H_GFQ=X|7BxVLMoyQ/?*owX0_ͦaݺdh]cb;݅֎xԬZNck8w`GێO\Hsw\uoRM8$deZAԭܾ?*7}n\vNE>[ (['i=`]\W&թt]!FY=WB <Sz]rO`梁5mZ۹Wv沩@6[y(@͛&l2rY3,WTb`++)?x>k'~JUF"S"t~=lt1]px[\}6??Br[g{t7_~qʀf g޳wϾNN?ZLa?p?E߻t_*}/7}%Πtr~PKaj@D/ڢ? xΣZz}~[[KϮ.fnE0ut''2f#&ﯶc*]qEF[/*~dawDoVf^nZ¥ |~!+B\*)y`ڕ:?g,m|ʃ 9dw>&O~O+pw'EVp}R݋ ^->i6ߝfEFSj1ʫ~1P/(5: 'avU([ͮ|7@l3<N>+Y0֤NzxxHz9QyؤF)ك_箆Fbؤ{OmY8y~qsn;?u1XFSFքt?yn9}y5e \CqWWz ޕlCABn{w^z㭗}mI̋ׄ Έ^>wMҴ.E-Qo2~:W)UwUW) q׻G4}ۑ4ֶǂ0l ni0~٭{mb 4B+S\Vv|ڰ3}z}T}$BWTn)($h۶ e{.4mw)f۪,Q.zl暘TYfmئ29SW5\arlK VW`_O\)䦀fM%]D ^Dkv#SׄQ%-m+~(iirnr1/&^eodN/WIoO#)'>ֲw1刁vB'Iw/L^G\O'Ӭ37gfAuLެ6g풴+6UJMϊޙo~ NA&g]:!+RAz4~#zv9>T -aָD Z' f}{7Qݟ:77ߋ=}t9=~(V#ۮ߶5}ϽM:v+v^S/腀\2re5t\M]%2[]rSε*OBgS*Ql㱋s%~zJaռU:ci) zٽ׋N ARi=vPXϻaZe<DSqD0-`Vu%PMϲj(dMӘyX2xYlO؟,72S-K)#8~b~əby?N<{3}5۴;Plĺ 拗?/︱}MŘ=,!~~U kh?# gkYOkڛ54W(%|uM.Gq SY>M4+tu>10uo_ϟzGm~MuEo֗?_H&!]u9 VFJ3~bO'~8 4 MS7`͙lm!l|I҇F7'>hvTRhT޾!#կύ gnL|My [Jǵ$^GSyRa ]U=dҬjjLK]Zx ϭ^\*\4R ާU+SX WKNJC]p7eo;#> +`+?NKnwb[jI:@\+ ֌cځͯ%sZh|n3~6en˿]-/?sܲ=C_mN::4ܞ4fw*y^܈t_o+rMz3oN#Tw/c7O Lį{?u&j煩 *1i^ED ,pO[ve&0+`q{"Vvb+2!ٯxζ<(Eޏ8~cQ)(Q<3>kd!{ C:5; ǸHBB;Ĩ@U:1ݲㆩlM WĠhgkVY&9@M֌yk2u6_Ͽ?޶5M 3vj95QCEm|8 k@DЩ;S}?Ic}|q%5N4)R"(IGYHj{)*t\%$Fd9Ak' Ok'4_1Qo\}>RT\ U5~ TԚ{9 -=q/Q~o5ag]oڹW]7zڐx$jz zil4-.8. 4v1}L NAڔoo3ox嶔Lj;Pؑ[훍PFrUCP/,`+hp071BD"W_9mEjqY6uҫQ~%oүïl4wzw1\t,F;.n؝崷 Ց[M-k[Li1h3y69}.Bhߥ׾9^+5wi- [1#DEp23> `{5'rR'pGKWWDtV0i+KI oNǾv)BJ˜Aw+toO9ǪnUn2?bVv!P08Rtn8۞Ym}c0dwQEdoOLe&/%h;+CmT+kT.1'3\>;JoqG`Wv!PzY(zvL? j]˄ڡ_/F;Bz=]3n2+ۥXZ 2rԜa!cbA0^u)n(m]6;idQxibo&f}ƐC.'g,R`f)^"f ZpM/Kn9ڷ/dO6E99:=PCf}QH4m`TnnjKÝ%z-ى?1#+ yb3<~;ϴxr=GN]:݈{giI7wv)ؒŬҌ9нg߸èrqŒC`{};aKR?6h:T=k6&^yԂ%s"ѱ@S\{OO^f<+' UrI do/¬X'EW{|ܷHɈN% A>7PDr&aX6'M-{4Ewuvs F1~3lۨe16P!f{cos]Wo`~i ])CJC[q? /3gߝ-% =ݧjmf*&X2uyo KBrՔ. eA- d{}W+lˇUW9XN@77γWq"3,C47R޸w8!]n4k`C!{\ Rll+PBǗ-c8@KOmn7@*[ky0McFfe^xA޵2>x[œ5FWnrlxkCJ6K%RUE0X\~ ~OIDxB!6Fco7% S.n%bT1w,+-3`?=C59\zWXg.=aͷnNJJfr7]oվZ ?*dz+)tJ!JQ :R8'a7 اBˋzn]u-hD"C"R+FdUJupz.)\ мCEWnD<Rybs{oPYFǦ][?-yO5<7~K~UWEc[/?{<](&.N& t^|OMҙB*[h-3֩>#ҍk >d~uV|g]'z?Æ5hȭs~LW'dx>_o+cnռMAD5~8jY44N@u>Gn,$,ڵE"iG唭&h}&/~km,6clwxjmpNټm?J/WD W}s1!>`ƿ\;F 6hI< y(!/vvԊ hl ^@dvTj֌LXɅ&c99f%osICNO~w$j{pN4T(#N[w4A;Nʍt7Jm =^#:LsC:z3 H<-l~ې^WR}m'kūGN5g xy=_c&jߴCbغ|}n_7Mxsr{bٌxxԐCb#" f`eȼm=L Tk,e*sG'1{ZmBr (QEV\[Hź׋j ~Sg ʎQX}aP\jk:4U.;p. YGzU0x~RϞ*K[wC[u$w\w1qf&??jsiPN6 "ok2cRG4vAV mn쏢J gq@\w@_͸-SZ<-t3q~cqFU} нdz{ !-6QuIqV&>zF7bp"/IwM0vе}ƛqr uJ*^>r=_ty;%\.cwk=6<zMYGD1ұ'GQڣ yLw }-f0m'l 9nzotzmE*;955s.1̖O518:j]815ءe{]_巆`ykW@EO``4TäU߽h+G=.˃nEcU w.*+}w:l2?6^QV(tyyu[7C{J1q֟2l~T36]% 9"_"y3$,i~oNP{Sü7Z&+ٗ%K~#}S<+6b^#ϊ7}U]O3Ͽbf;O~^D^{5}懢Н~ۀ{ww:I/éO}F]Liƀ'#OΦܧ?/qJj/9U6km,rūtڜ2?}NTA7^WXSl*T@rZUwT8B4  e!<K 0&ʔ]X%2Ѣ*Lg3s_XH(PVe6lTҞQwG}la$m`H]uW ?J?-@"5Ew;+Ǣy 4ZhͿfFP@} fz쏃D b}*Y,\T/n>5-j;۾zsXO~v|ŵ٨G{A&da[r>HJj_O+f\n֤,c}Cڼg 3ďl8k ge@zX2O=֬!.8ݭ*:>xbU?9g%6P{G{ʁb0\ZESthYs!3Uш=F/N sLe;ecbn~wH7vhf}}3T^ڡ~@(=`E`ଠEkr~i*¡][A\VrˤRXf1jDJGB-*B*xgu\\1-ٰsYo^9ބ ɅvՉ,qV"m.` QhףWmY\MQ`c` \(w:w.GovOĪ9 =rl*0 yUpE@\׮fq}LAU9i9&[X(vOx: Oi'OP\6?D:Eio_ǒCҚpՌvK?P'$/,B|V&]<[fzqծBMdwVM}7Qvkb*e܋:t{xUgOC._5_"G}6/.e ^{[-YOcnK[|zdGYdѢ5` [ 'yU[6_og痹Ӊ\XrҨ(Ui` d]|J ë&UFl度AxµG=N=p.i.; YG݄z/HsE 0aA _#/s([Km{Kw]()km-/$)nݳ}Vyi?Q~"6W=߿@_v~?1*;]zDzx4N~FOJID٠n&/$kթ& n]=|O6}稭\X&+ȎhKs}Kl:dsnczzߋ)!S;tB AJMhr3DmC9em-y͍hFr[MuܚjS/|p'_5i%Y&>2 inՏ&kfu#Z^#<İӧrsOKl"{A`@MedjN-_\Cn do;?;2{wО(d3"7I&{WTWubY.>7$3hS8WO+''Ց-,koXAn JT:$.uo*\:t5AmJ=ۻ_i_HheOn9f^wȞ*?gz^!<߾ɍ-kUELu/7rj4ՊJdKV ϐc8/R#Xg;/zbߪ=stdgnvDB GhRkܘtD6Jחn͜=BBl7${vV+Y ۾Gux%OE^w<׌ f,vzʙPѧYU׶PLwקG}Ce.Lm['5xsVGN?1߬i#9/A kPPVMzVT Xw0e.\oG9qc* :; =Ocd>,;}C[Bڼ4m"ޡ!N=JK}e^1&ڿ4EkVnXY@㌇ϫAL źM_IMtJ1bʍfL*_w#2oyLʣ-oKTn݁]$YZymSQ=(+9H󛋵 4"KSꛗCr !ˇQˈ;m _-61Q l^Qe"qqO~s7jK-!]wg='?Yр2I#S ͘X;}wǃW_G~/VF*:/P_2pӽpm(LT]{f0>]WkF=~m]_)sm(\yR ۲ XmJ؆i;y"q[NDK [F"02F7ʭ]\Y[s6Q]>#lv}%,U?9oY]y}Ϲk:|hj:=kտCgsD<PIkHF/лi>7Iuk$Ql͓ N̹Jj.@VscA6wJC\GD<{~Ju커e'zF{0ëyC!ާ6?kG~\usscl\w0 iAߪ?3xXo6HlSk߷?O]JԿ=B٭vd=SB j5" 'h'm v}9wMHuƵ\7.QغT" wD @EZaH̚gyRE \{}$x\# L΁u6O}9o rPDŽEHK3uGطt@Cc_zzwMј_ojKoN{Nx:[$Xiu2QJ5@" 6Is v?~mxii?<`^7{sm b)ASlW>G/;hç !=Eo^lZ2d"gmB+Y9]{yK0K v@ iFTK̉'o=h"MYCCZdq Ow]O(f`ų.\'Z\T>.vi{J=y'p|рʡe_jxO+/Hl~2Z2@ US%'fYUuԙW}[u葠K#1k'$IxA4Q^fuokbڦ-2}kg̬Cp0jp9e¨m~7$9쿰z{%oV6vf׹A? >Öm>,>G Y[vWBe&jx)ս0َO Bum$kv#.*iz-5,;aB?rqiO䕡% rI&*cџx<vh}20\djT2`N ȥQcFw&ev:Y jua迥%M,;IU<9m_\K z#l~u[>hoӗ3wu O/lG{mZ2{ u%(b#md~鯧j2jvfx8~A߹'WEH8ޤ]+8+돊Ì߸9K#]AwI;o W0w(rO=;ݝUٶK~ T=-qF #t=h(\% γ`Uޛ[[.׭:s'!bG_X9؉h0I]֠&GlvrYArլ,G4:H#+{^e9pNbw5sQ2nIC`9aեs)za.JO@U=KMT)$S.qn7.\;?Dp$ܣC,X?u+?yN޲La-tXprF~׶=7މNo݊i抦[z^u8ev_Q~/VO\NO 0q{ o{]}slGd1X~S3;mrrx%Rb5p8ˆlOAcٝ:LrAmf;z 4N L>MgA)0.C=zWZ6n&zM[g7e-ѱMk!)1KWvջ]9(Â9OCݤda{һMv׈ /o" ·}R9X3ʗ'.>$jߜy<´W>>|$6Vyk{>]J+0#yg7nf\+ ڛ[y?^9WP!ڳk4LGvU9We_O:w@n )6ЀDnnu^*ڟt5Qxh k\+N,Ue[E"\߫W⢺]Z2Fd`-!zT}WVz=I;;J{ܪsE4? SojhT̷cC8jtHp&1&ry`eE !_7j|-KxۓEdNx*:l宿?%뾜o`ءT0Y u77vi3<_O)aݻ vj ;ug}M{U'_N-i6?^1@_E&O*TFS>uJ1Px :`(~N̶{.g63s˶\f|)}}礽.Y աpςF>暠5Q7 Ho,'OdGqs'm;<\UUz\rhra^7MOIq36@D$L&Qi8ח5A!)lYg+k]hm;W}뎚ھܪm^GxRt51n*B@Z~|\6}FnE&+?wbzN_}ǽB1k=!AU"wNWI"S, Bʹ'c3#Zbڱm.n:*NKӱrGob楜 %P2[hSdW5AاLsi 9 7Lj 1WJS\xk*'7'Row`O<Ϩc4|O"-)_+˽WޔO6& c5Y"( =1mL>dg3Lz6pAZ9{t١J;{gIWץ?uyB_hlVcP.'go|*7_O*7}׭a{bT$ Bv 37GBn̵ȚӀk'`RP 3sٙީf3c(z>1VjeSa432/ /?<}VVs?C'' /d適w"^-S~7-DHD@:9E޺8n%`ܫx* ܍+eI'vSBbܗ\ Iѧz)mdIέ/8e줙H'7n7OIa3V,g|^ ,'7C>F^ǰɪs;lAg1oZt,trv eUOﻓN\e8/{$/;/#Y6ekQ|T\OPO#Vǔ˸sNMK؇}?G iTTe<ü-h,S>(33z|֭~Mx;ݻzd:֮zS >\"pn@зNOuQo Ud'YBP3OHs*vvugZO^7媵jw]k2ZKj[=8[9ع[< _Yw .mpŕ>BLStz79uL(+7fU/:z:n(?=o?Rm;k1̙S^|5S|ChGфkfBKY䑦mBhQ>G 3YnWn7%(|hF̏3\>o{#xvG ]OR*+wa~0wܩ淪njP#Q}723kW֡:J:0 dU `βsڃ~~ HqIT[1 4<.{45oCT27ItP /WG=r{{˺׾RHޜ;NgXEonnf _k[wډ=n^ꄧuoAȳ+Q{ ź3])t=fLNlO#<0޲l*Vu6ؚ9?`͕YWfKW!u.+dn颫>YdKWff{i"fq-!74⫗K6)&>ٕY(U_<MMQ}&SP[J+a{cy|owɫh|W8u8ީ+!r>s{uTiEQro~@sP!eָИ|U[W3ѺYlɥ.m~b?dnϱ8ZpeOڿB,$~y~G6e/!t12*{ĿHR?bPNempR; ~>#)lAk'2o{v_ UQܚIխ%K˶6u]jID]Ϧ;fk3T[)4jjjkI-inmUQvor.]HGJjڼoGDz&ݩ-,PդgF:^ׁnWz#Gh3Ee][Ѩn7tp wM{Эv8}Xnֱvhw_4 tkpl#h8v@cMvݚm.]i׵mml7mzuUDUEUeWMvmm۶(m,X RfX[[,)ڜzp1F7T\qv @);WC'.d}{wۣpruun5lsUbىڲniw̭TyatkvӴMt[B Ak6n:"nwn&dךZ)ngjݕf'|5 m)RٳHroI6߲vm;mlwvx ݵv.ZFc][pxg۽ᮇ[9c躯wc[X@wCfWhs)4#啜9S7lۦiE*hCnD;PwM:vCū6Zצk۶kw4gim[4m۴m6kv5[SkmuKM6mڜ޼]8zqYSl?юOe*wwF'r]dx4b*\joC~/||>voWH]큮cݾ/|E ă|{Eކ[ꊺ'Rv{߽D{<^"w/Hp^_t7݋up7o+vǺڻhn/бr w|ߵPx74tbW+Pnnz*pގF{6cf78Pm86z7wEzC7G ^mw^bl{{Btoފݵ`7hv nvniڶm6iumTUUfm[ x?nb Tzkq̺lhSpjUK J\8Gp}wwwo]Wh6Fv*owtz;w|"{E?HUuv4tw.]ˇ. н U߷7/?|8px:ur\0 " _<{C/FVw{vFZŮX6{`uv4Xuwu]7ۉT{jýw,퍺 ,h+{7n7@u4wbX#pwPEhpwv\n`hw;z: tp; Dp@m4vk6ڶm&mm۶]mrkvfh&:6nBm ȻkUU.̱7 4|T]ᨭFpw8x3{;v]6 G/W zpmuh;ځ7mo/×"/64юnwFx?-_+ |;A@c}{(Vހco_ Xow_W6u{@xHnpP(zڮuBkootpWFotp(}PnGíp|?|/" |">_D>@@DX/^+hw@Cmu7hXpmw7m5nm]۶] `8p ;mMm۶۶Mۊm@n ,KW3@ht#m|>;ж]۶KuZ\mv=hэhڽX4]{?u{|__}н6xoC/?hˇA@GۻսX6[DD~._Fw;pUF7AK»K" _pX@EzcZ6wӁ(nn&ݮw{wkw7@ۻ۶{w c@w} [U;ڻ۸*zouo@: X 8»7hCѭDF+V@7x;  4&iڶ]mڮkv۶m۵nmT۶WUUUUUFS:[ ?i\S"EK/]D"" /D"H |tZ:|k^z"/^o?@.@] v7 o?@>:|/s{|)]{Ͽ]>?._tp7h7݀7z@hzF7j7 x7@vpww;h87@mڶmmdۦmӶmv۶m]۶]Ӷ׶k.mm۶ڥf`[+Ӛ>ـ[o4Ght?p/y>O(x~Cnn pGK" "Dw |С/-@@"EފW8ྻp{{_@D |. һ/ ^{>x߿|D˗/"K/x-@AK;xcFo/ u| ]7сvdž7X]`ѹ/}| | .=";| k;8:po;{7@n<v^8t{7ڴmkͶm۶;mwAk\γmSr3Wu_@P|u` p 8 x.;|"Adt"A|/{tKtE>]@x@""w  |"w|@/ @"=@:t_@D|C?CD>ȴ6m;6 {;۽hh"zk4p`4 wX o0hh 7v4nFOpAc9thpGnE4{wwowxuEwpnp4ݚt6kۦk6mqr+.~ fm r2OH~@'z}_0 :R?/"]_t/x7h: -~Zwþ vx/p@/ A-t_,7 | . ҿ߽|^8FэY`PC[ow wov*ѱ Sn(ޭ :poow7<p |F@ XwFa]ֻށV4ot^8 44w4 8]ڥMkmK{Nn6hT u""^/_/ܻpo4h:w hH"tH"DEADA_ /ȗ^ /| \D?K"x_{h8lw,L^{qW ?;/A4{? wp _u(*n]@X(wd{vuc퀯w݃|@/_{ "@{︷7pp@hlh7@wv]sۤm]kmۦikӤtm۶mNֵKmvmv6kӵYmحmݭo. ț='9\v-4ȇ.]]Ȁ/_/"_Dʇ/8@w; w8E/ ˇ//_||?|ϳDw_{"/A>t/D Cx".tw_s@+z.8Gٮ h;"/]|/A> /_k}эUW`uG;v(Fw  |@;;`nEH_D ^A߿/^""_Dhn@@wۭ Xh ]tmm6mFwux 0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0@APETAGEXARTISTMassive Attack ALBUMSpecial CasesTITLESpecial Cases [Akufen remix]Track2APETAGEXAudio-Musepack-1.0.1/data/test.ape0000644000076500007650000027641311174144322016177 0ustar danieldanielMAC 4qX =eI `T=Dr$o e d7@ 0%#x,&,')+/147:F >~ A5+D9GBJs8MgTP2S;=V0Yl7\P_Fb@e9 h,k/n(q| t-wrDz_J}b^Zk98V~SiDz5N2:¦  _f@1D x6H9e\v 3jhsPuhX$'5&sc3N. {G~p#m~'X\{MG-Iri%aDKfmU¾L$UNy@5=!>[Ȣs0MNكt;ҙ61yHI [_ (A`K(`2QgR@<=LC`1> d 4쁖b^*;T. K#Jk*g̢K]!VwV7F.ɍ(V=֎yϖg&!Z)`Tqes+F[ӱbgxBh~aLH%Q6|~gҞG#dK|j^/wFNjk8Aõ18EEE[w>r9À%7tyW“7]l_JKH]ֳda,/wxB~n:o~s6.OmSf$P:s%c)zK1D\ !bRO uw`r2ca~62ZVj()91hpz N9IoDd+h^#p8.sɏ3F3nl6_}?уwD]x&.:L,x+܄C^*:R^`5eu$Pv.七%.0WTO #^t &e8bll??]_g8]'gDq#j^@M-~c"fےlt[ -ao]@B#ݗ<6fuO 曉 7TX^w*#`ȡU;@@۽(aqyfdQirܣ P%B7=VfR$1 /Qv;HyK9MۮKwVe|\qy+v:9n҂{]M)ƫgmL%IG/\Ukr_U <=喻Gߤn `2/tb֟t DzMÇeIzr[q\nB[ E9p" ^$b*DԊhJ&;ȥ$:g&h4g.*Vt]utnCJ;=dJpiа <9W0ci _=sלd0VXh+P#@NUƺ{JIlܢ|_Wml)KYЀ,:ZR;qM8ue䂭L3d}DgP’U;`}!׫h4%TKͯ TR:އikx%nM'sp\.`&66_ncU/(X)J ZO"|cTI"~9%Z$ "vU쩶3%͸ uFbf":5={}ɒj,Oto`0.!j9G-@YqOFcsj򫸴Fs;?7MHϮm-+#"zqwҹ [n鵤ڜU#d MB{+nQEnPDPR􂠀b) 1s\x鵹_c׍WLEX} NYp[1ܓ]^R8*guyr:b2lݏ g];Os4g; "WiBsXPf AEa bWEia8* CrD@72$;Ж"69&8"$F(&qCt 2\ۥeb7 _xA0z2RF[W49Ʉ 4m0,7v^4-mCfpNgjJ%̵d`2Zm˘=:3MNObwǗ*b]=x;b.Z!F1Rcgy.^bf/Kx$:85R- ! OVX/j ~ Y򢧇t^\ئ+D:ϰߠx|HUstEi1s}Y6L5uJ4)"󻼫rEXDtAPW+`B Iya2]Lg EU5vT^P+ݎ'l q`?K`̪VY> :0F38},hVzΈ3]oi[)G=$YLK*#+e.p-hEjHɀ`FWYN!!=l[+1b^I5|lRIp;b~N.t:w~sx:֒?1.]ky 'b ؑr4$漮=؁B>Ճp8 "qTd@4boԮ3H!}Lqh0eG41gYuf;9V*sb:f#@?%oR6c j(0RӾ\PesjMnd<:^djAXhpFҘ[9u2K@w_Ù"u!n?/!;Z}$u{py/]Rm`bVG];\9#\fe(|[pDxmh2\|Eup Q3[4r+#)5o29xFtuPo2B"ߖ]RƫrnBs ov n˚^㵾ۥc#TgPcӺ,}B-|At,#f)Hiȋc7ݡ؋ge5Iy3t%b58Y6-1u|a^Du(_"qa/!unרOK)˺th\NnՂ.5T$(ԕ3䣑5_:2Dʟe h$g~DS#q^tOZB{@Q[wւNS9p؅"8m43ɲcvE f#,1VM%e@QЫtF\ h/l,^RnW{WP%YO0{^Q>ob1%y e9 :2ݡ=.FR~DyW_)AFڪMӮYOi<܃*Sg_m<t0ף[KqB~䄂?ʠev#ק w~;DEx ::2q dSC\8s^@B6I OPwSN88Ģ - ̧`o]6M d j` o1.E&N qp ?TեBR `ِB/U@KtFd*,jNۄ V6Sd҈L\x&Z+ `) 1~%xsFXS}9і(\ճ= } B&8h:Mt|Q[Su})aЇca> ]`^!t5zjT l؛QA3d<GerJpeMV_ʟEqN?-`%\^o.WuPDv㣹^XA~<Z(Q2=.;҃\巹#gl)6^i fdr!?dkhJǚ BpbO \o, @ )bNw6eHlw&P#ogdj,b=MM|wkN?ݟJ=~J7c!,Qe|gT3J$%T2axcpP  DM֢]~~#W ]mpRXqZ61v!U$!=iiMqa-H.JHnN'YX `8L=$ u'ß?V{kMo A, l{kHxs6N;UPQ3Han0HZq1>- dM{Dl^L#x[nAy > LC w4u\ _HM6e?ZkzURr^]z|\Ѱfx{ZfFoG5${ޘ*/ͫ6flx&c<G)9eV.+䷗t&:%8c. ȷ0*4VpL|77?*OAOHH36g/"]ORl)92AnĊ ]Jm@ԤHt]xÒ UCbe(ŸQ!!LPUҷO ܘ}tG.t4L{}ش?,3S[ E&P @-XknڕHf5;ù\IGđYoq=ЊA4YX6 *e˪h)t^П'Qcl>ԱFRښ#zjE:(3v!K&yI cIs PzLCzd ,!ҏߧx5_O /quМB͙ P, tck+[$ gb1!77e:t@3VV"ԕ׮7;ŲXu"˽ګŜDK@r5i >9%z67T.HGbhBӣ_;ZGc7' 1^L+j- Z+\q?DbЋ{EcT&AUl0:c? RD%jenݨ"2HI0DCIDڑxeR7[Wp9A0\3/ǠCZ!g)N%gpȴ}aeM&|!0UPݡ"u-& ,y7",-'9t8 )<<ɩ} xIM5 -AJ<mPH2ag2<Pk2CY˞\:"!615oid6R5('O#"Un,(uHGw;,M.XeȀkd&㦰_gѶ?P=g/X7D~O2͔{֧U>2Ӎ.:fP a#wvٙPhVv-tYYx^Jʚ9d]U#do\oRKҙw34oPӄ R0aD$)Ξ{LV*d534R¾e, ,}X|#t;`~e/ ? 5[Ud^4A(8n9Zlw:*>vU Bq^z{N2Ř2l*kZ=,[n]$Hw fk7*^?,80ENI@fwIY0˭*??QθZ"/an>Nw%M(/6[:&I+$wfBZ!DX>v wlri8b.&[\< ` jk^,^W=uGj>Y!9'GGGɛ3C#_Q 6c3΍Hc^OJluKn2y9Sc]t\ j^ǎxُ0T8pۃ0ŒZ1z暅mؽ~!xHiBru`w;~,{EGdGvi~Pib2P.x c8@pG|B 6^EP oG*hJ{ϼj:\5 Ĵ+eLjc1ȐA =sqk!5Aaw +Esm@ W50ɗaG0:1Yza],+a'Q 2`i$ȠU^9jЭ`' m6L|J tg5bǥ| 6o1 jh#\ky_9 &6,$k07,^$LVS@|==~:A. &}H:M[ DA$$Nz n{Vc&}OyO B4w+Z]1Pp=v@i~p^u]"%k%m@4d/QFFguxF6^! `wH{9rIF\6kiDCe/6y5/F>Zylx>BfyiO{}[ xG16ߵyx만]jNvP\@sK*5:+).7\XlB~;]Ny#$4] Es6'B΁R-"7 te,ܞ HSY56j?(zMK好V8̓Q3q@DY^xʎ=,z7t|%%Wwh2%?y#lqQW.i|~S;Xʑ sQN&T]w `{,KeHfPb$A;S \Beeǧܟ5zwxIV@{*{jҵ)£jU(8nvqj3D)A.ˈJQJiD`HC8;^lh~ j(ѹ9}XrKTѥ+PB]&tWeh(CTΟ+ bVb.׼~s7xvEǟ~dkOӻ žN 3T* oM&,9{3"MB6$mWŽ)=L}/gs{QB`yi"z@_8${߇.[VG}mUbT<[B Uz9 Z=5fZbZm^D$|V): joddym _COրg\l([jQ;RȖ:- szDr 2_¬5H=K|Hes[W;db=I/SojF&Tm;[AM c{uB0mua ኑt140@߲c#3 77>Bˢ^BTjY)źkJ'u 4?&;cq+Ւͩ$)1޾3sk75T ?e׸r1("# ՘p躿 \䤃c@tXq,|g:R/>AzZU¬ԭ}ǡ)ڴxp 哴ygKZY4;E"XK|&k$F7q#}-`Hw!Qa/JJRnE^ р+t;9Ob.ڵ6{5j9HlYc"K1i˅Z]uTT]CepEfFo Ϯ=bL!rsG]⧾lQ&Gv 2HʔtNOɘ xUX|dW@ +_ePվTJ=tō^nov-.r>Nm]& ㌋AIyVRϢR{+mpYLZRX+I).yzMs MÛ1{&Dy4&L mLeQbC׷4e˿W9ax9@c4%32 +BCoΥ bsb&œ,=BG̝ fo(HƑ& "vB>?|+{t>_ZY7+w7Hg‘їGvBM#7!;GCiӛwk(ɰ$QllֵJ_usN8Bo]"CTJo^,eҐ;_ρ1.ؓD1am7t9s?BD.Eoq|{0*b,cz N.78zzc<sP9&P"ߓC@% ]4haNnOŌR B!/e3tEd,w<@Tsr_Q +<7^x;xF;e ^/98RBZB Q>xA\y_*J?+0]^Z=Z#_pMql&Fyu! ^]1=ظChW+i, h?coUUv",7вB7E6vY6GZQ>ܦd 5S6W4*#fɋ.{ $F^cQ"A6 EM)Aw[͉ x^mz7)D%hoI0Fb+Mn\4~}U&oHEzwb J$_3&ځBT+5 G2HdŬ_Rj4?KVMI@VpZ*O=\ِunОy(&/)&nSseVqmvQ9*jT;y )rml6GKWo?Vr#M7WeO!ץ}F5.pW}?K1^Hȵ>cvQ,G*J#;RΣn"PT+S,oI0W-/LH/u橜JO5[2%'mZ2 ˖1pz=7>PȰ_%nbQ:F䋞/XE!&Tc$~cjUa"J Je$qaa ݅>+=K0E9T)8o T` 2;=15(0{.h<&) @nj >,{+ƶ$"@A,Ȓ89H*4_~&RHД+̅l7ڳec{/@.9E?PL6#?Yk-BzXna @`|g[0-❲CI$•Ѯ`ڡ$y49HvzZ2leNjbQ^O2R嶟>viylf'"6+:t"Reä|E~֌Zs|.3Y>61fm^*A?UHaL:g =ll]A |otjj+j-L}sW t2z&*bXӕY}v Q^tkNTq#0%^=3ؓ ǥ̔kuQ 4)bm+`*'pҍ]T׆d47\nΘK!Qӡ=drs|Ѻ}s!?5aeXpu`1.ZBx}$!{E9o$/m qfA4g7isWO\.0kQ^ |nWv{^-HA)xFZ *e65P:Fn`.Ԉd툫̩E G#*UcBIT]FŒWQB%Г SK1-Kā|YF=>4MukoT ffGN YலX[W?s9EN'')15UjA|p=smݻbI9V-d)~۪HV*h8UJէ{}9GU ÜK\qn< cS9i5Vf A'~=xϣ"2τʩĴm;MMI''QO/,E&MrY +ڡ`*cI!apGng1nGobIݐEmK0ʿCAH A1ȄB،R!>jm$r$y^U,~'8X(eU#sK,Vlf  /l{ʄW!L GD552|Wwډ8cxlZ6qm1P}_Shc{֥f%9϶ǴfaG .)GPɗo"G7\䝥Q|K ^}8&h#8~X$"ɦ#CegѢڵ >B7^$ͅX /c$qө;(1VOE]=oYn.zwAQu) mB|=,i jߣP3<ҷ[ hoV?ED9O1*L$|#eT яECvuecU7ŧhavݚ /5i k'?9]p*zT2,-~;Qgy=GP=Kшxd*ukK6Et6s:zG=Jǭl[h"Ͱ񾟿9h?:-'LtielrzPW#W݇=` 7qhC= Ct6﫞󆋛zLS˫jdgѶV٣nO9zx v˵w`BIqCJ xu}BS# k ]>[vAqrtxx(Fl7%MV(¢}!鸼 V1}L[.x^cό ݧ]I>lW9Wfz ǘo["c{}$U҈jz"f0 vUoj#幈EjE7Ƕ)eR,BwGӔ0iw&ې)FXY_ 6.Ln~!'Qw>UM8DZ>qU}{RAir[>3$#,۬{v GkM% _CK._BJ[}f"sOuEB. {ƛ'C2AO_>əaPmt,`Kx=.8Q̛o>GghXAߤ椊ri D)dܢ/Ĝj-?-f!EF9O5'Bb⳪iY8>ƐH@1נv.dC55$ۄ e9)j2=x\"LvKDK$ת,Չ1Jp/$RwdŸI݁?LncKck!3ul26 Q׋_+Gx.e.Wכ@WoJw=ɴ2j?t;ܸ4q%Ez/_ÿɟk0e tJEܸTW,vY OnƮ?8:Vfj1Z1I5!Aq QAb.y:*m꼇>-sMgkԘ\6zh޻&RTþ',I/sөJפ6[;o;{w'rӟPYu>)lVK#)9J.hċaNA# P{9EYQ% bvu/cTQ hrS]ْܖXYCӇgp [I ؂B}"Ŗ:p&EC1ӻC`YղaZ0 f*"2jN_ˌ_ ZOzt%jW/ y`s1pR.C7Zc@cos^Mz4\?=goDq'әZ^"hJ'/"Q3m+9> dVmcpu7eU.Ѧ.22fiklaԲK ?O˻r`)NFA1 ,lpjXWV3D)Zh_ ՅH@QD:F鶺|Q/b{'?.'./dIY;êz)Yy*N_ V2IV`ΏN?ԾbBc)emaQ"C܃(nP$)Tˮ! ĺcQwJc&-v[+J3 ]剒^deG@W!;aew 5A{\4u$m[.,%d[tMk?iYoPǯ1]Mv#!TBԝmU̖ |u͡)k|ĕVl0|}};_'4o*&lvib~؍QBi]UH;"L?u}u}`57%@نlCх5 cp7Bm }0gA84Nh_ۄuJ{jā|„}A oSݭʮ]hgK(+ʎqlZmD zDwnu.C%fEi,S亂Cop`h"q~`soʫsMY7JlFЈH8AR$,;qW5G1UYq ӀikzxΗjA[r,f䀫s6|"ߤ=")7;IJ:ȑ 1AKVIcƎё  #!ML؟rDKjd70Pb=|cH/VV*?nzauR+B] rG}2YBU䣪au0BkEFg`;+9^2^ =;}q >/%BM}m Np-8(wi^ډ;:Räg잵wd!8/>m=7+/}0VuC9ise]lAꇳ.qCf`BuWfC1 ݘDh>ݿ)@Gɭ{yw^V(=9)9J1$ַ.nwKY"ԹWf( &}[4wK>;T3b`!+Bof{$X܌QcloA^W[劵u߯.brB x[2 {ٟMfG5q-!3)k=8XD:o_=e Rzolg[6 F6k1 N,yϸfR6G:Y$PGS!vv$X0r1{V l?ljڗs6q+$0r =qvwwO:xᙼýBTa熝C!nϿAp=dKr{ 78*Xݣ-k#X<a5uïIiZqUK\";OjtHyGR hوQ#I%>CD3Ͱo7^8WCocZ hR Ws{ZLm8as|UiВo;ݫf |u.6v_x%Ly ۰5ĭGNϔמod\9%Vmq֥7'm 7SU/67[#AG< LĈ-OO\e (9Ή ~o'B#hEwrx"?sS"zh,_Sve9TDž &7D x?b,ZK@@mM=pXf#Ing6MqBG^F3DXH/K#ҰCpt^>U {ٷ=ac҆@:6g%2ohV]8iGAՇ#/c3D ]iO 08#Na,\V~HcpGzX&4؟bqJ4aW5F_t'6e+W5Vâ3`%l%nlc$Ao%Kv YK)~<={M⛟w,Y=;M`ߺ(o/i} TBJ0kw_}~q=wboWۡmpYPIP):bPiTr;zh#U@NYK%d2"ӱc 6'F#hi1db3 `J?gM=a#>)Ѡt@MJ`XKrmoIDO\bs.E_;~mj^@SX%0ZjstvS8eU HŸ,~ :FvUg &: 24³]L-gk/wSqjtkFSgRvD5M֠ A[trnuglEAqS ^  FdA0᦭s ĥL6%e}ɏYT2, 6}d6^#~"͓`9W6{Uq!BReR&W޾:4I&K27\XFp!C_i GSLM~FG%O;QQb \z+4ڥ"a se gj2SX`+d {+Bkyj=UMrhNixUtߛQ,bيe@kqTo$Zw2xWY٨6UlPäe2C-nt Z|iT :bJ"uL_),j_ow401B$9*T<~31Xس"3RK]coYSOT "{B#){+b&Z-)&f q"*{7y'j8fU͘mmNn6U}I<5(a^muTS sb:' ȅVKC -c;i'XWUT gMojy+c-Ӎ6mNδV9[&pM]w*&֔L'N Pa(-eauc*(ڄ>k0X>Oؼ yzto0 Pܶ { Bk9 |Frs(;,ɩ[,>V]JC6ߟ]>lL`|9F5xXDZU=P2}e[;+1z\x;/.ؕ" moͪ] v$,>Co !SOY"T ){{bB#+)&fZ-q&* "y{j7fU'͘8mޓUmNIn65}^<u(a8=[@8iwfAPETAGEX TitleLittle Deuce Coupe ArtistBeach BoysTool Version10.0.146 Tool NameMedia CenterTrack6Year1990GenreRock AlbumSurfer Girl WM/AlbumArtistBeach BoysAPETAGEX Audio-Musepack-1.0.1/inc/0000755000076500007650000000000011505546504014362 5ustar danieldanielAudio-Musepack-1.0.1/inc/Module/0000755000076500007650000000000011505546504015607 5ustar danieldanielAudio-Musepack-1.0.1/inc/Module/Install.pm0000644000076500007650000003013511505546473017562 0ustar danieldaniel#line 1 package Module::Install; # For any maintainers: # The load order for Module::Install is a bit magic. # It goes something like this... # # IF ( host has Module::Install installed, creating author mode ) { # 1. Makefile.PL calls "use inc::Module::Install" # 2. $INC{inc/Module/Install.pm} set to installed version of inc::Module::Install # 3. The installed version of inc::Module::Install loads # 4. inc::Module::Install calls "require Module::Install" # 5. The ./inc/ version of Module::Install loads # } ELSE { # 1. Makefile.PL calls "use inc::Module::Install" # 2. $INC{inc/Module/Install.pm} set to ./inc/ version of Module::Install # 3. The ./inc/ version of Module::Install loads # } use 5.005; use strict 'vars'; use Cwd (); use File::Find (); use File::Path (); use vars qw{$VERSION $MAIN}; BEGIN { # All Module::Install core packages now require synchronised versions. # This will be used to ensure we don't accidentally load old or # different versions of modules. # This is not enforced yet, but will be some time in the next few # releases once we can make sure it won't clash with custom # Module::Install extensions. $VERSION = '1.00'; # Storage for the pseudo-singleton $MAIN = undef; *inc::Module::Install::VERSION = *VERSION; @inc::Module::Install::ISA = __PACKAGE__; } sub import { my $class = shift; my $self = $class->new(@_); my $who = $self->_caller; #------------------------------------------------------------- # all of the following checks should be included in import(), # to allow "eval 'require Module::Install; 1' to test # installation of Module::Install. (RT #51267) #------------------------------------------------------------- # Whether or not inc::Module::Install is actually loaded, the # $INC{inc/Module/Install.pm} is what will still get set as long as # the caller loaded module this in the documented manner. # If not set, the caller may NOT have loaded the bundled version, and thus # they may not have a MI version that works with the Makefile.PL. This would # result in false errors or unexpected behaviour. And we don't want that. my $file = join( '/', 'inc', split /::/, __PACKAGE__ ) . '.pm'; unless ( $INC{$file} ) { die <<"END_DIE" } Please invoke ${\__PACKAGE__} with: use inc::${\__PACKAGE__}; not: use ${\__PACKAGE__}; END_DIE # This reportedly fixes a rare Win32 UTC file time issue, but # as this is a non-cross-platform XS module not in the core, # we shouldn't really depend on it. See RT #24194 for detail. # (Also, this module only supports Perl 5.6 and above). eval "use Win32::UTCFileTime" if $^O eq 'MSWin32' && $] >= 5.006; # If the script that is loading Module::Install is from the future, # then make will detect this and cause it to re-run over and over # again. This is bad. Rather than taking action to touch it (which # is unreliable on some platforms and requires write permissions) # for now we should catch this and refuse to run. if ( -f $0 ) { my $s = (stat($0))[9]; # If the modification time is only slightly in the future, # sleep briefly to remove the problem. my $a = $s - time; if ( $a > 0 and $a < 5 ) { sleep 5 } # Too far in the future, throw an error. my $t = time; if ( $s > $t ) { die <<"END_DIE" } Your installer $0 has a modification time in the future ($s > $t). This is known to create infinite loops in make. Please correct this, then run $0 again. END_DIE } # Build.PL was formerly supported, but no longer is due to excessive # difficulty in implementing every single feature twice. if ( $0 =~ /Build.PL$/i ) { die <<"END_DIE" } Module::Install no longer supports Build.PL. It was impossible to maintain duel backends, and has been deprecated. Please remove all Build.PL files and only use the Makefile.PL installer. END_DIE #------------------------------------------------------------- # To save some more typing in Module::Install installers, every... # use inc::Module::Install # ...also acts as an implicit use strict. $^H |= strict::bits(qw(refs subs vars)); #------------------------------------------------------------- unless ( -f $self->{file} ) { foreach my $key (keys %INC) { delete $INC{$key} if $key =~ /Module\/Install/; } local $^W; require "$self->{path}/$self->{dispatch}.pm"; File::Path::mkpath("$self->{prefix}/$self->{author}"); $self->{admin} = "$self->{name}::$self->{dispatch}"->new( _top => $self ); $self->{admin}->init; @_ = ($class, _self => $self); goto &{"$self->{name}::import"}; } local $^W; *{"${who}::AUTOLOAD"} = $self->autoload; $self->preload; # Unregister loader and worker packages so subdirs can use them again delete $INC{'inc/Module/Install.pm'}; delete $INC{'Module/Install.pm'}; # Save to the singleton $MAIN = $self; return 1; } sub autoload { my $self = shift; my $who = $self->_caller; my $cwd = Cwd::cwd(); my $sym = "${who}::AUTOLOAD"; $sym->{$cwd} = sub { my $pwd = Cwd::cwd(); if ( my $code = $sym->{$pwd} ) { # Delegate back to parent dirs goto &$code unless $cwd eq $pwd; } unless ($$sym =~ s/([^:]+)$//) { # XXX: it looks like we can't retrieve the missing function # via $$sym (usually $main::AUTOLOAD) in this case. # I'm still wondering if we should slurp Makefile.PL to # get some context or not ... my ($package, $file, $line) = caller; die <<"EOT"; Unknown function is found at $file line $line. Execution of $file aborted due to runtime errors. If you're a contributor to a project, you may need to install some Module::Install extensions from CPAN (or other repository). If you're a user of a module, please contact the author. EOT } my $method = $1; if ( uc($method) eq $method ) { # Do nothing return; } elsif ( $method =~ /^_/ and $self->can($method) ) { # Dispatch to the root M:I class return $self->$method(@_); } # Dispatch to the appropriate plugin unshift @_, ( $self, $1 ); goto &{$self->can('call')}; }; } sub preload { my $self = shift; unless ( $self->{extensions} ) { $self->load_extensions( "$self->{prefix}/$self->{path}", $self ); } my @exts = @{$self->{extensions}}; unless ( @exts ) { @exts = $self->{admin}->load_all_extensions; } my %seen; foreach my $obj ( @exts ) { while (my ($method, $glob) = each %{ref($obj) . '::'}) { next unless $obj->can($method); next if $method =~ /^_/; next if $method eq uc($method); $seen{$method}++; } } my $who = $self->_caller; foreach my $name ( sort keys %seen ) { local $^W; *{"${who}::$name"} = sub { ${"${who}::AUTOLOAD"} = "${who}::$name"; goto &{"${who}::AUTOLOAD"}; }; } } sub new { my ($class, %args) = @_; delete $INC{'FindBin.pm'}; { # to suppress the redefine warning local $SIG{__WARN__} = sub {}; require FindBin; } # ignore the prefix on extension modules built from top level. my $base_path = Cwd::abs_path($FindBin::Bin); unless ( Cwd::abs_path(Cwd::cwd()) eq $base_path ) { delete $args{prefix}; } return $args{_self} if $args{_self}; $args{dispatch} ||= 'Admin'; $args{prefix} ||= 'inc'; $args{author} ||= ($^O eq 'VMS' ? '_author' : '.author'); $args{bundle} ||= 'inc/BUNDLES'; $args{base} ||= $base_path; $class =~ s/^\Q$args{prefix}\E:://; $args{name} ||= $class; $args{version} ||= $class->VERSION; unless ( $args{path} ) { $args{path} = $args{name}; $args{path} =~ s!::!/!g; } $args{file} ||= "$args{base}/$args{prefix}/$args{path}.pm"; $args{wrote} = 0; bless( \%args, $class ); } sub call { my ($self, $method) = @_; my $obj = $self->load($method) or return; splice(@_, 0, 2, $obj); goto &{$obj->can($method)}; } sub load { my ($self, $method) = @_; $self->load_extensions( "$self->{prefix}/$self->{path}", $self ) unless $self->{extensions}; foreach my $obj (@{$self->{extensions}}) { return $obj if $obj->can($method); } my $admin = $self->{admin} or die <<"END_DIE"; The '$method' method does not exist in the '$self->{prefix}' path! Please remove the '$self->{prefix}' directory and run $0 again to load it. END_DIE my $obj = $admin->load($method, 1); push @{$self->{extensions}}, $obj; $obj; } sub load_extensions { my ($self, $path, $top) = @_; my $should_reload = 0; unless ( grep { ! ref $_ and lc $_ eq lc $self->{prefix} } @INC ) { unshift @INC, $self->{prefix}; $should_reload = 1; } foreach my $rv ( $self->find_extensions($path) ) { my ($file, $pkg) = @{$rv}; next if $self->{pathnames}{$pkg}; local $@; my $new = eval { local $^W; require $file; $pkg->can('new') }; unless ( $new ) { warn $@ if $@; next; } $self->{pathnames}{$pkg} = $should_reload ? delete $INC{$file} : $INC{$file}; push @{$self->{extensions}}, &{$new}($pkg, _top => $top ); } $self->{extensions} ||= []; } sub find_extensions { my ($self, $path) = @_; my @found; File::Find::find( sub { my $file = $File::Find::name; return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is; my $subpath = $1; return if lc($subpath) eq lc($self->{dispatch}); $file = "$self->{path}/$subpath.pm"; my $pkg = "$self->{name}::$subpath"; $pkg =~ s!/!::!g; # If we have a mixed-case package name, assume case has been preserved # correctly. Otherwise, root through the file to locate the case-preserved # version of the package name. if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) { my $content = Module::Install::_read($subpath . '.pm'); my $in_pod = 0; foreach ( split //, $content ) { $in_pod = 1 if /^=\w/; $in_pod = 0 if /^=cut/; next if ($in_pod || /^=cut/); # skip pod text next if /^\s*#/; # and comments if ( m/^\s*package\s+($pkg)\s*;/i ) { $pkg = $1; last; } } } push @found, [ $file, $pkg ]; }, $path ) if -d $path; @found; } ##################################################################### # Common Utility Functions sub _caller { my $depth = 0; my $call = caller($depth); while ( $call eq __PACKAGE__ ) { $depth++; $call = caller($depth); } return $call; } # Done in evals to avoid confusing Perl::MinimumVersion eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@; sub _read { local *FH; open( FH, '<', $_[0] ) or die "open($_[0]): $!"; my $string = do { local $/; }; close FH or die "close($_[0]): $!"; return $string; } END_NEW sub _read { local *FH; open( FH, "< $_[0]" ) or die "open($_[0]): $!"; my $string = do { local $/; }; close FH or die "close($_[0]): $!"; return $string; } END_OLD sub _readperl { my $string = Module::Install::_read($_[0]); $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg; $string =~ s/(\n)\n*__(?:DATA|END)__\b.*\z/$1/s; $string =~ s/\n\n=\w+.+?\n\n=cut\b.+?\n+/\n\n/sg; return $string; } sub _readpod { my $string = Module::Install::_read($_[0]); $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg; return $string if $_[0] =~ /\.pod\z/; $string =~ s/(^|\n=cut\b.+?\n+)[^=\s].+?\n(\n=\w+|\z)/$1$2/sg; $string =~ s/\n*=pod\b[^\n]*\n+/\n\n/sg; $string =~ s/\n*=cut\b[^\n]*\n+/\n\n/sg; $string =~ s/^\n+//s; return $string; } # Done in evals to avoid confusing Perl::MinimumVersion eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@; sub _write { local *FH; open( FH, '>', $_[0] ) or die "open($_[0]): $!"; foreach ( 1 .. $#_ ) { print FH $_[$_] or die "print($_[0]): $!"; } close FH or die "close($_[0]): $!"; } END_NEW sub _write { local *FH; open( FH, "> $_[0]" ) or die "open($_[0]): $!"; foreach ( 1 .. $#_ ) { print FH $_[$_] or die "print($_[0]): $!"; } close FH or die "close($_[0]): $!"; } END_OLD # _version is for processing module versions (eg, 1.03_05) not # Perl versions (eg, 5.8.1). sub _version ($) { my $s = shift || 0; my $d =()= $s =~ /(\.)/g; if ( $d >= 2 ) { # Normalise multipart versions $s =~ s/(\.)(\d{1,3})/sprintf("$1%03d",$2)/eg; } $s =~ s/^(\d+)\.?//; my $l = $1 || 0; my @v = map { $_ . '0' x (3 - length $_) } $s =~ /(\d{1,3})\D?/g; $l = $l . '.' . join '', @v if @v; return $l + 0; } sub _cmp ($$) { _version($_[0]) <=> _version($_[1]); } # Cloned from Params::Util::_CLASS sub _CLASS ($) { ( defined $_[0] and ! ref $_[0] and $_[0] =~ m/^[^\W\d]\w*(?:::\w+)*\z/s ) ? $_[0] : undef; } 1; # Copyright 2008 - 2010 Adam Kennedy. Audio-Musepack-1.0.1/inc/Module/Install/0000755000076500007650000000000011505546504017215 5ustar danieldanielAudio-Musepack-1.0.1/inc/Module/Install/AutoInstall.pm0000644000076500007650000000363211505546473022023 0ustar danieldaniel#line 1 package Module::Install::AutoInstall; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub AutoInstall { $_[0] } sub run { my $self = shift; $self->auto_install_now(@_); } sub write { my $self = shift; $self->auto_install(@_); } sub auto_install { my $self = shift; return if $self->{done}++; # Flatten array of arrays into a single array my @core = map @$_, map @$_, grep ref, $self->build_requires, $self->requires; my @config = @_; # We'll need Module::AutoInstall $self->include('Module::AutoInstall'); require Module::AutoInstall; my @features_require = Module::AutoInstall->import( (@config ? (-config => \@config) : ()), (@core ? (-core => \@core) : ()), $self->features, ); my %seen; my @requires = map @$_, map @$_, grep ref, $self->requires; while (my ($mod, $ver) = splice(@requires, 0, 2)) { $seen{$mod}{$ver}++; } my @build_requires = map @$_, map @$_, grep ref, $self->build_requires; while (my ($mod, $ver) = splice(@build_requires, 0, 2)) { $seen{$mod}{$ver}++; } my @configure_requires = map @$_, map @$_, grep ref, $self->configure_requires; while (my ($mod, $ver) = splice(@configure_requires, 0, 2)) { $seen{$mod}{$ver}++; } my @deduped; while (my ($mod, $ver) = splice(@features_require, 0, 2)) { push @deduped, $mod => $ver unless $seen{$mod}{$ver}++; } $self->requires(@deduped); $self->makemaker_args( Module::AutoInstall::_make_args() ); my $class = ref($self); $self->postamble( "# --- $class section:\n" . Module::AutoInstall::postamble() ); } sub auto_install_now { my $self = shift; $self->auto_install(@_); Module::AutoInstall::do_install(); } 1; Audio-Musepack-1.0.1/inc/Module/Install/Fetch.pm0000644000076500007650000000462711505546473020622 0ustar danieldaniel#line 1 package Module::Install::Fetch; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub get_file { my ($self, %args) = @_; my ($scheme, $host, $path, $file) = $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return; if ( $scheme eq 'http' and ! eval { require LWP::Simple; 1 } ) { $args{url} = $args{ftp_url} or (warn("LWP support unavailable!\n"), return); ($scheme, $host, $path, $file) = $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return; } $|++; print "Fetching '$file' from $host... "; unless (eval { require Socket; Socket::inet_aton($host) }) { warn "'$host' resolve failed!\n"; return; } return unless $scheme eq 'ftp' or $scheme eq 'http'; require Cwd; my $dir = Cwd::getcwd(); chdir $args{local_dir} or return if exists $args{local_dir}; if (eval { require LWP::Simple; 1 }) { LWP::Simple::mirror($args{url}, $file); } elsif (eval { require Net::FTP; 1 }) { eval { # use Net::FTP to get past firewall my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600); $ftp->login("anonymous", 'anonymous@example.com'); $ftp->cwd($path); $ftp->binary; $ftp->get($file) or (warn("$!\n"), return); $ftp->quit; } } elsif (my $ftp = $self->can_run('ftp')) { eval { # no Net::FTP, fallback to ftp.exe require FileHandle; my $fh = FileHandle->new; local $SIG{CHLD} = 'IGNORE'; unless ($fh->open("|$ftp -n")) { warn "Couldn't open ftp: $!\n"; chdir $dir; return; } my @dialog = split(/\n/, <<"END_FTP"); open $host user anonymous anonymous\@example.com cd $path binary get $file $file quit END_FTP foreach (@dialog) { $fh->print("$_\n") } $fh->close; } } else { warn "No working 'ftp' program available!\n"; chdir $dir; return; } unless (-f $file) { warn "Fetching failed: $@\n"; chdir $dir; return; } return if exists $args{size} and -s $file != $args{size}; system($args{run}) if exists $args{run}; unlink($file) if $args{remove}; print(((!exists $args{check_for} or -e $args{check_for}) ? "done!" : "failed! ($!)"), "\n"); chdir $dir; return !$?; } 1; Audio-Musepack-1.0.1/inc/Module/Install/Makefile.pm0000644000076500007650000002703211505546473021301 0ustar danieldaniel#line 1 package Module::Install::Makefile; use strict 'vars'; use ExtUtils::MakeMaker (); use Module::Install::Base (); use Fcntl qw/:flock :seek/; use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub Makefile { $_[0] } my %seen = (); sub prompt { shift; # Infinite loop protection my @c = caller(); if ( ++$seen{"$c[1]|$c[2]|$_[0]"} > 3 ) { die "Caught an potential prompt infinite loop ($c[1]|$c[2]|$_[0])"; } # In automated testing or non-interactive session, always use defaults if ( ($ENV{AUTOMATED_TESTING} or -! -t STDIN) and ! $ENV{PERL_MM_USE_DEFAULT} ) { local $ENV{PERL_MM_USE_DEFAULT} = 1; goto &ExtUtils::MakeMaker::prompt; } else { goto &ExtUtils::MakeMaker::prompt; } } # Store a cleaned up version of the MakeMaker version, # since we need to behave differently in a variety of # ways based on the MM version. my $makemaker = eval $ExtUtils::MakeMaker::VERSION; # If we are passed a param, do a "newer than" comparison. # Otherwise, just return the MakeMaker version. sub makemaker { ( @_ < 2 or $makemaker >= eval($_[1]) ) ? $makemaker : 0 } # Ripped from ExtUtils::MakeMaker 6.56, and slightly modified # as we only need to know here whether the attribute is an array # or a hash or something else (which may or may not be appendable). my %makemaker_argtype = ( C => 'ARRAY', CONFIG => 'ARRAY', # CONFIGURE => 'CODE', # ignore DIR => 'ARRAY', DL_FUNCS => 'HASH', DL_VARS => 'ARRAY', EXCLUDE_EXT => 'ARRAY', EXE_FILES => 'ARRAY', FUNCLIST => 'ARRAY', H => 'ARRAY', IMPORTS => 'HASH', INCLUDE_EXT => 'ARRAY', LIBS => 'ARRAY', # ignore '' MAN1PODS => 'HASH', MAN3PODS => 'HASH', META_ADD => 'HASH', META_MERGE => 'HASH', PL_FILES => 'HASH', PM => 'HASH', PMLIBDIRS => 'ARRAY', PMLIBPARENTDIRS => 'ARRAY', PREREQ_PM => 'HASH', CONFIGURE_REQUIRES => 'HASH', SKIP => 'ARRAY', TYPEMAPS => 'ARRAY', XS => 'HASH', # VERSION => ['version',''], # ignore # _KEEP_AFTER_FLUSH => '', clean => 'HASH', depend => 'HASH', dist => 'HASH', dynamic_lib=> 'HASH', linkext => 'HASH', macro => 'HASH', postamble => 'HASH', realclean => 'HASH', test => 'HASH', tool_autosplit => 'HASH', # special cases where you can use makemaker_append CCFLAGS => 'APPENDABLE', DEFINE => 'APPENDABLE', INC => 'APPENDABLE', LDDLFLAGS => 'APPENDABLE', LDFROM => 'APPENDABLE', ); sub makemaker_args { my ($self, %new_args) = @_; my $args = ( $self->{makemaker_args} ||= {} ); foreach my $key (keys %new_args) { if ($makemaker_argtype{$key}) { if ($makemaker_argtype{$key} eq 'ARRAY') { $args->{$key} = [] unless defined $args->{$key}; unless (ref $args->{$key} eq 'ARRAY') { $args->{$key} = [$args->{$key}] } push @{$args->{$key}}, ref $new_args{$key} eq 'ARRAY' ? @{$new_args{$key}} : $new_args{$key}; } elsif ($makemaker_argtype{$key} eq 'HASH') { $args->{$key} = {} unless defined $args->{$key}; foreach my $skey (keys %{ $new_args{$key} }) { $args->{$key}{$skey} = $new_args{$key}{$skey}; } } elsif ($makemaker_argtype{$key} eq 'APPENDABLE') { $self->makemaker_append($key => $new_args{$key}); } } else { if (defined $args->{$key}) { warn qq{MakeMaker attribute "$key" is overriden; use "makemaker_append" to append values\n}; } $args->{$key} = $new_args{$key}; } } return $args; } # For mm args that take multiple space-seperated args, # append an argument to the current list. sub makemaker_append { my $self = shift; my $name = shift; my $args = $self->makemaker_args; $args->{$name} = defined $args->{$name} ? join( ' ', $args->{$name}, @_ ) : join( ' ', @_ ); } sub build_subdirs { my $self = shift; my $subdirs = $self->makemaker_args->{DIR} ||= []; for my $subdir (@_) { push @$subdirs, $subdir; } } sub clean_files { my $self = shift; my $clean = $self->makemaker_args->{clean} ||= {}; %$clean = ( %$clean, FILES => join ' ', grep { length $_ } ($clean->{FILES} || (), @_), ); } sub realclean_files { my $self = shift; my $realclean = $self->makemaker_args->{realclean} ||= {}; %$realclean = ( %$realclean, FILES => join ' ', grep { length $_ } ($realclean->{FILES} || (), @_), ); } sub libs { my $self = shift; my $libs = ref $_[0] ? shift : [ shift ]; $self->makemaker_args( LIBS => $libs ); } sub inc { my $self = shift; $self->makemaker_args( INC => shift ); } sub _wanted_t { } sub tests_recursive { my $self = shift; my $dir = shift || 't'; unless ( -d $dir ) { die "tests_recursive dir '$dir' does not exist"; } my %tests = map { $_ => 1 } split / /, ($self->tests || ''); require File::Find; File::Find::find( sub { /\.t$/ and -f $_ and $tests{"$File::Find::dir/*.t"} = 1 }, $dir ); $self->tests( join ' ', sort keys %tests ); } sub write { my $self = shift; die "&Makefile->write() takes no arguments\n" if @_; # Check the current Perl version my $perl_version = $self->perl_version; if ( $perl_version ) { eval "use $perl_version; 1" or die "ERROR: perl: Version $] is installed, " . "but we need version >= $perl_version"; } # Make sure we have a new enough MakeMaker require ExtUtils::MakeMaker; if ( $perl_version and $self->_cmp($perl_version, '5.006') >= 0 ) { # MakeMaker can complain about module versions that include # an underscore, even though its own version may contain one! # Hence the funny regexp to get rid of it. See RT #35800 # for details. my $v = $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/; $self->build_requires( 'ExtUtils::MakeMaker' => $v ); $self->configure_requires( 'ExtUtils::MakeMaker' => $v ); } else { # Allow legacy-compatibility with 5.005 by depending on the # most recent EU:MM that supported 5.005. $self->build_requires( 'ExtUtils::MakeMaker' => 6.42 ); $self->configure_requires( 'ExtUtils::MakeMaker' => 6.42 ); } # Generate the MakeMaker params my $args = $self->makemaker_args; $args->{DISTNAME} = $self->name; $args->{NAME} = $self->module_name || $self->name; $args->{NAME} =~ s/-/::/g; $args->{VERSION} = $self->version or die <<'EOT'; ERROR: Can't determine distribution version. Please specify it explicitly via 'version' in Makefile.PL, or set a valid $VERSION in a module, and provide its file path via 'version_from' (or 'all_from' if you prefer) in Makefile.PL. EOT $DB::single = 1; if ( $self->tests ) { my @tests = split ' ', $self->tests; my %seen; $args->{test} = { TESTS => (join ' ', grep {!$seen{$_}++} @tests), }; } elsif ( $Module::Install::ExtraTests::use_extratests ) { # Module::Install::ExtraTests doesn't set $self->tests and does its own tests via harness. # So, just ignore our xt tests here. } elsif ( -d 'xt' and ($Module::Install::AUTHOR or $ENV{RELEASE_TESTING}) ) { $args->{test} = { TESTS => join( ' ', map { "$_/*.t" } grep { -d $_ } qw{ t xt } ), }; } if ( $] >= 5.005 ) { $args->{ABSTRACT} = $self->abstract; $args->{AUTHOR} = join ', ', @{$self->author || []}; } if ( $self->makemaker(6.10) ) { $args->{NO_META} = 1; #$args->{NO_MYMETA} = 1; } if ( $self->makemaker(6.17) and $self->sign ) { $args->{SIGN} = 1; } unless ( $self->is_admin ) { delete $args->{SIGN}; } if ( $self->makemaker(6.31) and $self->license ) { $args->{LICENSE} = $self->license; } my $prereq = ($args->{PREREQ_PM} ||= {}); %$prereq = ( %$prereq, map { @$_ } # flatten [module => version] map { @$_ } grep $_, ($self->requires) ); # Remove any reference to perl, PREREQ_PM doesn't support it delete $args->{PREREQ_PM}->{perl}; # Merge both kinds of requires into BUILD_REQUIRES my $build_prereq = ($args->{BUILD_REQUIRES} ||= {}); %$build_prereq = ( %$build_prereq, map { @$_ } # flatten [module => version] map { @$_ } grep $_, ($self->configure_requires, $self->build_requires) ); # Remove any reference to perl, BUILD_REQUIRES doesn't support it delete $args->{BUILD_REQUIRES}->{perl}; # Delete bundled dists from prereq_pm, add it to Makefile DIR my $subdirs = ($args->{DIR} || []); if ($self->bundles) { my %processed; foreach my $bundle (@{ $self->bundles }) { my ($mod_name, $dist_dir) = @$bundle; delete $prereq->{$mod_name}; $dist_dir = File::Basename::basename($dist_dir); # dir for building this module if (not exists $processed{$dist_dir}) { if (-d $dist_dir) { # List as sub-directory to be processed by make push @$subdirs, $dist_dir; } # Else do nothing: the module is already present on the system $processed{$dist_dir} = undef; } } } unless ( $self->makemaker('6.55_03') ) { %$prereq = (%$prereq,%$build_prereq); delete $args->{BUILD_REQUIRES}; } if ( my $perl_version = $self->perl_version ) { eval "use $perl_version; 1" or die "ERROR: perl: Version $] is installed, " . "but we need version >= $perl_version"; if ( $self->makemaker(6.48) ) { $args->{MIN_PERL_VERSION} = $perl_version; } } if ($self->installdirs) { warn qq{old INSTALLDIRS (probably set by makemaker_args) is overriden by installdirs\n} if $args->{INSTALLDIRS}; $args->{INSTALLDIRS} = $self->installdirs; } my %args = map { ( $_ => $args->{$_} ) } grep {defined($args->{$_} ) } keys %$args; my $user_preop = delete $args{dist}->{PREOP}; if ( my $preop = $self->admin->preop($user_preop) ) { foreach my $key ( keys %$preop ) { $args{dist}->{$key} = $preop->{$key}; } } my $mm = ExtUtils::MakeMaker::WriteMakefile(%args); $self->fix_up_makefile($mm->{FIRST_MAKEFILE} || 'Makefile'); } sub fix_up_makefile { my $self = shift; my $makefile_name = shift; my $top_class = ref($self->_top) || ''; my $top_version = $self->_top->VERSION || ''; my $preamble = $self->preamble ? "# Preamble by $top_class $top_version\n" . $self->preamble : ''; my $postamble = "# Postamble by $top_class $top_version\n" . ($self->postamble || ''); local *MAKEFILE; open MAKEFILE, "+< $makefile_name" or die "fix_up_makefile: Couldn't open $makefile_name: $!"; eval { flock MAKEFILE, LOCK_EX }; my $makefile = do { local $/; }; $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /; $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g; $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g; $makefile =~ s/^(FULLPERL = .*)/$1 "-Iinc"/m; $makefile =~ s/^(PERL = .*)/$1 "-Iinc"/m; # Module::Install will never be used to build the Core Perl # Sometimes PERL_LIB and PERL_ARCHLIB get written anyway, which breaks # PREFIX/PERL5LIB, and thus, install_share. Blank them if they exist $makefile =~ s/^PERL_LIB = .+/PERL_LIB =/m; #$makefile =~ s/^PERL_ARCHLIB = .+/PERL_ARCHLIB =/m; # Perl 5.005 mentions PERL_LIB explicitly, so we have to remove that as well. $makefile =~ s/(\"?)-I\$\(PERL_LIB\)\1//g; # XXX - This is currently unused; not sure if it breaks other MM-users # $makefile =~ s/^pm_to_blib\s+:\s+/pm_to_blib :: /mg; seek MAKEFILE, 0, SEEK_SET; truncate MAKEFILE, 0; print MAKEFILE "$preamble$makefile$postamble" or die $!; close MAKEFILE or die $!; 1; } sub preamble { my ($self, $text) = @_; $self->{preamble} = $text . $self->{preamble} if defined $text; $self->{preamble}; } sub postamble { my ($self, $text) = @_; $self->{postamble} ||= $self->admin->postamble; $self->{postamble} .= $text if defined $text; $self->{postamble} } 1; __END__ #line 541 Audio-Musepack-1.0.1/inc/Module/Install/Include.pm0000644000076500007650000000101511505546473021140 0ustar danieldaniel#line 1 package Module::Install::Include; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub include { shift()->admin->include(@_); } sub include_deps { shift()->admin->include_deps(@_); } sub auto_include { shift()->admin->auto_include(@_); } sub auto_include_deps { shift()->admin->auto_include_deps(@_); } sub auto_include_dependent_dists { shift()->admin->auto_include_dependent_dists(@_); } 1; Audio-Musepack-1.0.1/inc/Module/Install/Base.pm0000644000076500007650000000214711505546473020436 0ustar danieldaniel#line 1 package Module::Install::Base; use strict 'vars'; use vars qw{$VERSION}; BEGIN { $VERSION = '1.00'; } # Suspend handler for "redefined" warnings BEGIN { my $w = $SIG{__WARN__}; $SIG{__WARN__} = sub { $w }; } #line 42 sub new { my $class = shift; unless ( defined &{"${class}::call"} ) { *{"${class}::call"} = sub { shift->_top->call(@_) }; } unless ( defined &{"${class}::load"} ) { *{"${class}::load"} = sub { shift->_top->load(@_) }; } bless { @_ }, $class; } #line 61 sub AUTOLOAD { local $@; my $func = eval { shift->_top->autoload } or return; goto &$func; } #line 75 sub _top { $_[0]->{_top}; } #line 90 sub admin { $_[0]->_top->{admin} or Module::Install::Base::FakeAdmin->new; } #line 106 sub is_admin { ! $_[0]->admin->isa('Module::Install::Base::FakeAdmin'); } sub DESTROY {} package Module::Install::Base::FakeAdmin; use vars qw{$VERSION}; BEGIN { $VERSION = $Module::Install::Base::VERSION; } my $fake; sub new { $fake ||= bless(\@_, $_[0]); } sub AUTOLOAD {} sub DESTROY {} # Restore warning handler BEGIN { $SIG{__WARN__} = $SIG{__WARN__}->(); } 1; #line 159 Audio-Musepack-1.0.1/inc/Module/Install/Metadata.pm0000644000076500007650000004302011505546473021277 0ustar danieldaniel#line 1 package Module::Install::Metadata; use strict 'vars'; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } my @boolean_keys = qw{ sign }; my @scalar_keys = qw{ name module_name abstract version distribution_type tests installdirs }; my @tuple_keys = qw{ configure_requires build_requires requires recommends bundles resources }; my @resource_keys = qw{ homepage bugtracker repository }; my @array_keys = qw{ keywords author }; *authors = \&author; sub Meta { shift } sub Meta_BooleanKeys { @boolean_keys } sub Meta_ScalarKeys { @scalar_keys } sub Meta_TupleKeys { @tuple_keys } sub Meta_ResourceKeys { @resource_keys } sub Meta_ArrayKeys { @array_keys } foreach my $key ( @boolean_keys ) { *$key = sub { my $self = shift; if ( defined wantarray and not @_ ) { return $self->{values}->{$key}; } $self->{values}->{$key} = ( @_ ? $_[0] : 1 ); return $self; }; } foreach my $key ( @scalar_keys ) { *$key = sub { my $self = shift; return $self->{values}->{$key} if defined wantarray and !@_; $self->{values}->{$key} = shift; return $self; }; } foreach my $key ( @array_keys ) { *$key = sub { my $self = shift; return $self->{values}->{$key} if defined wantarray and !@_; $self->{values}->{$key} ||= []; push @{$self->{values}->{$key}}, @_; return $self; }; } foreach my $key ( @resource_keys ) { *$key = sub { my $self = shift; unless ( @_ ) { return () unless $self->{values}->{resources}; return map { $_->[1] } grep { $_->[0] eq $key } @{ $self->{values}->{resources} }; } return $self->{values}->{resources}->{$key} unless @_; my $uri = shift or die( "Did not provide a value to $key()" ); $self->resources( $key => $uri ); return 1; }; } foreach my $key ( grep { $_ ne "resources" } @tuple_keys) { *$key = sub { my $self = shift; return $self->{values}->{$key} unless @_; my @added; while ( @_ ) { my $module = shift or last; my $version = shift || 0; push @added, [ $module, $version ]; } push @{ $self->{values}->{$key} }, @added; return map {@$_} @added; }; } # Resource handling my %lc_resource = map { $_ => 1 } qw{ homepage license bugtracker repository }; sub resources { my $self = shift; while ( @_ ) { my $name = shift or last; my $value = shift or next; if ( $name eq lc $name and ! $lc_resource{$name} ) { die("Unsupported reserved lowercase resource '$name'"); } $self->{values}->{resources} ||= []; push @{ $self->{values}->{resources} }, [ $name, $value ]; } $self->{values}->{resources}; } # Aliases for build_requires that will have alternative # meanings in some future version of META.yml. sub test_requires { shift->build_requires(@_) } sub install_requires { shift->build_requires(@_) } # Aliases for installdirs options sub install_as_core { $_[0]->installdirs('perl') } sub install_as_cpan { $_[0]->installdirs('site') } sub install_as_site { $_[0]->installdirs('site') } sub install_as_vendor { $_[0]->installdirs('vendor') } sub dynamic_config { my $self = shift; unless ( @_ ) { warn "You MUST provide an explicit true/false value to dynamic_config\n"; return $self; } $self->{values}->{dynamic_config} = $_[0] ? 1 : 0; return 1; } sub perl_version { my $self = shift; return $self->{values}->{perl_version} unless @_; my $version = shift or die( "Did not provide a value to perl_version()" ); # Normalize the version $version = $self->_perl_version($version); # We don't support the reall old versions unless ( $version >= 5.005 ) { die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n"; } $self->{values}->{perl_version} = $version; } sub all_from { my ( $self, $file ) = @_; unless ( defined($file) ) { my $name = $self->name or die( "all_from called with no args without setting name() first" ); $file = join('/', 'lib', split(/-/, $name)) . '.pm'; $file =~ s{.*/}{} unless -e $file; unless ( -e $file ) { die("all_from cannot find $file from $name"); } } unless ( -f $file ) { die("The path '$file' does not exist, or is not a file"); } $self->{values}{all_from} = $file; # Some methods pull from POD instead of code. # If there is a matching .pod, use that instead my $pod = $file; $pod =~ s/\.pm$/.pod/i; $pod = $file unless -e $pod; # Pull the different values $self->name_from($file) unless $self->name; $self->version_from($file) unless $self->version; $self->perl_version_from($file) unless $self->perl_version; $self->author_from($pod) unless @{$self->author || []}; $self->license_from($pod) unless $self->license; $self->abstract_from($pod) unless $self->abstract; return 1; } sub provides { my $self = shift; my $provides = ( $self->{values}->{provides} ||= {} ); %$provides = (%$provides, @_) if @_; return $provides; } sub auto_provides { my $self = shift; return $self unless $self->is_admin; unless (-e 'MANIFEST') { warn "Cannot deduce auto_provides without a MANIFEST, skipping\n"; return $self; } # Avoid spurious warnings as we are not checking manifest here. local $SIG{__WARN__} = sub {1}; require ExtUtils::Manifest; local *ExtUtils::Manifest::manicheck = sub { return }; require Module::Build; my $build = Module::Build->new( dist_name => $self->name, dist_version => $self->version, license => $self->license, ); $self->provides( %{ $build->find_dist_packages || {} } ); } sub feature { my $self = shift; my $name = shift; my $features = ( $self->{values}->{features} ||= [] ); my $mods; if ( @_ == 1 and ref( $_[0] ) ) { # The user used ->feature like ->features by passing in the second # argument as a reference. Accomodate for that. $mods = $_[0]; } else { $mods = \@_; } my $count = 0; push @$features, ( $name => [ map { ref($_) ? ( ref($_) eq 'HASH' ) ? %$_ : @$_ : $_ } @$mods ] ); return @$features; } sub features { my $self = shift; while ( my ( $name, $mods ) = splice( @_, 0, 2 ) ) { $self->feature( $name, @$mods ); } return $self->{values}->{features} ? @{ $self->{values}->{features} } : (); } sub no_index { my $self = shift; my $type = shift; push @{ $self->{values}->{no_index}->{$type} }, @_ if $type; return $self->{values}->{no_index}; } sub read { my $self = shift; $self->include_deps( 'YAML::Tiny', 0 ); require YAML::Tiny; my $data = YAML::Tiny::LoadFile('META.yml'); # Call methods explicitly in case user has already set some values. while ( my ( $key, $value ) = each %$data ) { next unless $self->can($key); if ( ref $value eq 'HASH' ) { while ( my ( $module, $version ) = each %$value ) { $self->can($key)->($self, $module => $version ); } } else { $self->can($key)->($self, $value); } } return $self; } sub write { my $self = shift; return $self unless $self->is_admin; $self->admin->write_meta; return $self; } sub version_from { require ExtUtils::MM_Unix; my ( $self, $file ) = @_; $self->version( ExtUtils::MM_Unix->parse_version($file) ); # for version integrity check $self->makemaker_args( VERSION_FROM => $file ); } sub abstract_from { require ExtUtils::MM_Unix; my ( $self, $file ) = @_; $self->abstract( bless( { DISTNAME => $self->name }, 'ExtUtils::MM_Unix' )->parse_abstract($file) ); } # Add both distribution and module name sub name_from { my ($self, $file) = @_; if ( Module::Install::_read($file) =~ m/ ^ \s* package \s* ([\w:]+) \s* ; /ixms ) { my ($name, $module_name) = ($1, $1); $name =~ s{::}{-}g; $self->name($name); unless ( $self->module_name ) { $self->module_name($module_name); } } else { die("Cannot determine name from $file\n"); } } sub _extract_perl_version { if ( $_[0] =~ m/ ^\s* (?:use|require) \s* v? ([\d_\.]+) \s* ; /ixms ) { my $perl_version = $1; $perl_version =~ s{_}{}g; return $perl_version; } else { return; } } sub perl_version_from { my $self = shift; my $perl_version=_extract_perl_version(Module::Install::_read($_[0])); if ($perl_version) { $self->perl_version($perl_version); } else { warn "Cannot determine perl version info from $_[0]\n"; return; } } sub author_from { my $self = shift; my $content = Module::Install::_read($_[0]); if ($content =~ m/ =head \d \s+ (?:authors?)\b \s* ([^\n]*) | =head \d \s+ (?:licen[cs]e|licensing|copyright|legal)\b \s* .*? copyright .*? \d\d\d[\d.]+ \s* (?:\bby\b)? \s* ([^\n]*) /ixms) { my $author = $1 || $2; # XXX: ugly but should work anyway... if (eval "require Pod::Escapes; 1") { # Pod::Escapes has a mapping table. # It's in core of perl >= 5.9.3, and should be installed # as one of the Pod::Simple's prereqs, which is a prereq # of Pod::Text 3.x (see also below). $author =~ s{ E<( (\d+) | ([A-Za-z]+) )> } { defined $2 ? chr($2) : defined $Pod::Escapes::Name2character_number{$1} ? chr($Pod::Escapes::Name2character_number{$1}) : do { warn "Unknown escape: E<$1>"; "E<$1>"; }; }gex; } elsif (eval "require Pod::Text; 1" && $Pod::Text::VERSION < 3) { # Pod::Text < 3.0 has yet another mapping table, # though the table name of 2.x and 1.x are different. # (1.x is in core of Perl < 5.6, 2.x is in core of # Perl < 5.9.3) my $mapping = ($Pod::Text::VERSION < 2) ? \%Pod::Text::HTML_Escapes : \%Pod::Text::ESCAPES; $author =~ s{ E<( (\d+) | ([A-Za-z]+) )> } { defined $2 ? chr($2) : defined $mapping->{$1} ? $mapping->{$1} : do { warn "Unknown escape: E<$1>"; "E<$1>"; }; }gex; } else { $author =~ s{E}{<}g; $author =~ s{E}{>}g; } $self->author($author); } else { warn "Cannot determine author info from $_[0]\n"; } } #Stolen from M::B my %license_urls = ( perl => 'http://dev.perl.org/licenses/', apache => 'http://apache.org/licenses/LICENSE-2.0', apache_1_1 => 'http://apache.org/licenses/LICENSE-1.1', artistic => 'http://opensource.org/licenses/artistic-license.php', artistic_2 => 'http://opensource.org/licenses/artistic-license-2.0.php', lgpl => 'http://opensource.org/licenses/lgpl-license.php', lgpl2 => 'http://opensource.org/licenses/lgpl-2.1.php', lgpl3 => 'http://opensource.org/licenses/lgpl-3.0.html', bsd => 'http://opensource.org/licenses/bsd-license.php', gpl => 'http://opensource.org/licenses/gpl-license.php', gpl2 => 'http://opensource.org/licenses/gpl-2.0.php', gpl3 => 'http://opensource.org/licenses/gpl-3.0.html', mit => 'http://opensource.org/licenses/mit-license.php', mozilla => 'http://opensource.org/licenses/mozilla1.1.php', open_source => undef, unrestricted => undef, restrictive => undef, unknown => undef, ); sub license { my $self = shift; return $self->{values}->{license} unless @_; my $license = shift or die( 'Did not provide a value to license()' ); $license = __extract_license($license) || lc $license; $self->{values}->{license} = $license; # Automatically fill in license URLs if ( $license_urls{$license} ) { $self->resources( license => $license_urls{$license} ); } return 1; } sub _extract_license { my $pod = shift; my $matched; return __extract_license( ($matched) = $pod =~ m/ (=head \d \s+ L(?i:ICEN[CS]E|ICENSING)\b.*?) (=head \d.*|=cut.*|)\z /xms ) || __extract_license( ($matched) = $pod =~ m/ (=head \d \s+ (?:C(?i:OPYRIGHTS?)|L(?i:EGAL))\b.*?) (=head \d.*|=cut.*|)\z /xms ); } sub __extract_license { my $license_text = shift or return; my @phrases = ( '(?:under )?the same (?:terms|license) as (?:perl|the perl (?:\d )?programming language)' => 'perl', 1, '(?:under )?the terms of (?:perl|the perl programming language) itself' => 'perl', 1, 'Artistic and GPL' => 'perl', 1, 'GNU general public license' => 'gpl', 1, 'GNU public license' => 'gpl', 1, 'GNU lesser general public license' => 'lgpl', 1, 'GNU lesser public license' => 'lgpl', 1, 'GNU library general public license' => 'lgpl', 1, 'GNU library public license' => 'lgpl', 1, 'GNU Free Documentation license' => 'unrestricted', 1, 'GNU Affero General Public License' => 'open_source', 1, '(?:Free)?BSD license' => 'bsd', 1, 'Artistic license' => 'artistic', 1, 'Apache (?:Software )?license' => 'apache', 1, 'GPL' => 'gpl', 1, 'LGPL' => 'lgpl', 1, 'BSD' => 'bsd', 1, 'Artistic' => 'artistic', 1, 'MIT' => 'mit', 1, 'Mozilla Public License' => 'mozilla', 1, 'Q Public License' => 'open_source', 1, 'OpenSSL License' => 'unrestricted', 1, 'SSLeay License' => 'unrestricted', 1, 'zlib License' => 'open_source', 1, 'proprietary' => 'proprietary', 0, ); while ( my ($pattern, $license, $osi) = splice(@phrases, 0, 3) ) { $pattern =~ s#\s+#\\s+#gs; if ( $license_text =~ /\b$pattern\b/i ) { return $license; } } return ''; } sub license_from { my $self = shift; if (my $license=_extract_license(Module::Install::_read($_[0]))) { $self->license($license); } else { warn "Cannot determine license info from $_[0]\n"; return 'unknown'; } } sub _extract_bugtracker { my @links = $_[0] =~ m#L<( \Qhttp://rt.cpan.org/\E[^>]+| \Qhttp://github.com/\E[\w_]+/[\w_]+/issues| \Qhttp://code.google.com/p/\E[\w_\-]+/issues/list )>#gx; my %links; @links{@links}=(); @links=keys %links; return @links; } sub bugtracker_from { my $self = shift; my $content = Module::Install::_read($_[0]); my @links = _extract_bugtracker($content); unless ( @links ) { warn "Cannot determine bugtracker info from $_[0]\n"; return 0; } if ( @links > 1 ) { warn "Found more than one bugtracker link in $_[0]\n"; return 0; } # Set the bugtracker bugtracker( $links[0] ); return 1; } sub requires_from { my $self = shift; my $content = Module::Install::_readperl($_[0]); my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg; while ( @requires ) { my $module = shift @requires; my $version = shift @requires; $self->requires( $module => $version ); } } sub test_requires_from { my $self = shift; my $content = Module::Install::_readperl($_[0]); my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg; while ( @requires ) { my $module = shift @requires; my $version = shift @requires; $self->test_requires( $module => $version ); } } # Convert triple-part versions (eg, 5.6.1 or 5.8.9) to # numbers (eg, 5.006001 or 5.008009). # Also, convert double-part versions (eg, 5.8) sub _perl_version { my $v = $_[-1]; $v =~ s/^([1-9])\.([1-9]\d?\d?)$/sprintf("%d.%03d",$1,$2)/e; $v =~ s/^([1-9])\.([1-9]\d?\d?)\.(0|[1-9]\d?\d?)$/sprintf("%d.%03d%03d",$1,$2,$3 || 0)/e; $v =~ s/(\.\d\d\d)000$/$1/; $v =~ s/_.+$//; if ( ref($v) ) { # Numify $v = $v + 0; } return $v; } sub add_metadata { my $self = shift; my %hash = @_; for my $key (keys %hash) { warn "add_metadata: $key is not prefixed with 'x_'.\n" . "Use appopriate function to add non-private metadata.\n" unless $key =~ /^x_/; $self->{values}->{$key} = $hash{$key}; } } ###################################################################### # MYMETA Support sub WriteMyMeta { die "WriteMyMeta has been deprecated"; } sub write_mymeta_yaml { my $self = shift; # We need YAML::Tiny to write the MYMETA.yml file unless ( eval { require YAML::Tiny; 1; } ) { return 1; } # Generate the data my $meta = $self->_write_mymeta_data or return 1; # Save as the MYMETA.yml file print "Writing MYMETA.yml\n"; YAML::Tiny::DumpFile('MYMETA.yml', $meta); } sub write_mymeta_json { my $self = shift; # We need JSON to write the MYMETA.json file unless ( eval { require JSON; 1; } ) { return 1; } # Generate the data my $meta = $self->_write_mymeta_data or return 1; # Save as the MYMETA.yml file print "Writing MYMETA.json\n"; Module::Install::_write( 'MYMETA.json', JSON->new->pretty(1)->canonical->encode($meta), ); } sub _write_mymeta_data { my $self = shift; # If there's no existing META.yml there is nothing we can do return undef unless -f 'META.yml'; # We need Parse::CPAN::Meta to load the file unless ( eval { require Parse::CPAN::Meta; 1; } ) { return undef; } # Merge the perl version into the dependencies my $val = $self->Meta->{values}; my $perl = delete $val->{perl_version}; if ( $perl ) { $val->{requires} ||= []; my $requires = $val->{requires}; # Canonize to three-dot version after Perl 5.6 if ( $perl >= 5.006 ) { $perl =~ s{^(\d+)\.(\d\d\d)(\d*)}{join('.', $1, int($2||0), int($3||0))}e } unshift @$requires, [ perl => $perl ]; } # Load the advisory META.yml file my @yaml = Parse::CPAN::Meta::LoadFile('META.yml'); my $meta = $yaml[0]; # Overwrite the non-configure dependency hashs delete $meta->{requires}; delete $meta->{build_requires}; delete $meta->{recommends}; if ( exists $val->{requires} ) { $meta->{requires} = { map { @$_ } @{ $val->{requires} } }; } if ( exists $val->{build_requires} ) { $meta->{build_requires} = { map { @$_ } @{ $val->{build_requires} } }; } return $meta; } 1; Audio-Musepack-1.0.1/inc/Module/Install/Can.pm0000644000076500007650000000333311505546473020263 0ustar danieldaniel#line 1 package Module::Install::Can; use strict; use Config (); use File::Spec (); use ExtUtils::MakeMaker (); use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } # check if we can load some module ### Upgrade this to not have to load the module if possible sub can_use { my ($self, $mod, $ver) = @_; $mod =~ s{::|\\}{/}g; $mod .= '.pm' unless $mod =~ /\.pm$/i; my $pkg = $mod; $pkg =~ s{/}{::}g; $pkg =~ s{\.pm$}{}i; local $@; eval { require $mod; $pkg->VERSION($ver || 0); 1 }; } # check if we can run some command sub can_run { my ($self, $cmd) = @_; my $_cmd = $cmd; return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd)); for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') { next if $dir eq ''; my $abs = File::Spec->catfile($dir, $_[1]); return $abs if (-x $abs or $abs = MM->maybe_command($abs)); } return; } # can we locate a (the) C compiler sub can_cc { my $self = shift; my @chunks = split(/ /, $Config::Config{cc}) or return; # $Config{cc} may contain args; try to find out the program part while (@chunks) { return $self->can_run("@chunks") || (pop(@chunks), next); } return; } # Fix Cygwin bug on maybe_command(); if ( $^O eq 'cygwin' ) { require ExtUtils::MM_Cygwin; require ExtUtils::MM_Win32; if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) { *ExtUtils::MM_Cygwin::maybe_command = sub { my ($self, $file) = @_; if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) { ExtUtils::MM_Win32->maybe_command($file); } else { ExtUtils::MM_Unix->maybe_command($file); } } } } 1; __END__ #line 156 Audio-Musepack-1.0.1/inc/Module/Install/WriteAll.pm0000644000076500007650000000237611505546473021313 0ustar danieldaniel#line 1 package Module::Install::WriteAll; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = qw{Module::Install::Base}; $ISCORE = 1; } sub WriteAll { my $self = shift; my %args = ( meta => 1, sign => 0, inline => 0, check_nmake => 1, @_, ); $self->sign(1) if $args{sign}; $self->admin->WriteAll(%args) if $self->is_admin; $self->check_nmake if $args{check_nmake}; unless ( $self->makemaker_args->{PL_FILES} ) { # XXX: This still may be a bit over-defensive... unless ($self->makemaker(6.25)) { $self->makemaker_args( PL_FILES => {} ) if -f 'Build.PL'; } } # Until ExtUtils::MakeMaker support MYMETA.yml, make sure # we clean it up properly ourself. $self->realclean_files('MYMETA.yml'); if ( $args{inline} ) { $self->Inline->write; } else { $self->Makefile->write; } # The Makefile write process adds a couple of dependencies, # so write the META.yml files after the Makefile. if ( $args{meta} ) { $self->Meta->write; } # Experimental support for MYMETA if ( $ENV{X_MYMETA} ) { if ( $ENV{X_MYMETA} eq 'JSON' ) { $self->Meta->write_mymeta_json; } else { $self->Meta->write_mymeta_yaml; } } return 1; } 1; Audio-Musepack-1.0.1/inc/Module/Install/Win32.pm0000644000076500007650000000340311505546473020462 0ustar danieldaniel#line 1 package Module::Install::Win32; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.00'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } # determine if the user needs nmake, and download it if needed sub check_nmake { my $self = shift; $self->load('can_run'); $self->load('get_file'); require Config; return unless ( $^O eq 'MSWin32' and $Config::Config{make} and $Config::Config{make} =~ /^nmake\b/i and ! $self->can_run('nmake') ); print "The required 'nmake' executable not found, fetching it...\n"; require File::Basename; my $rv = $self->get_file( url => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe', ftp_url => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe', local_dir => File::Basename::dirname($^X), size => 51928, run => 'Nmake15.exe /o > nul', check_for => 'Nmake.exe', remove => 1, ); die <<'END_MESSAGE' unless $rv; ------------------------------------------------------------------------------- Since you are using Microsoft Windows, you will need the 'nmake' utility before installation. It's available at: http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe or ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe Please download the file manually, save it to a directory in %PATH% (e.g. C:\WINDOWS\COMMAND\), then launch the MS-DOS command line shell, "cd" to that directory, and run "Nmake15.exe" from there; that will create the 'nmake.exe' file needed by this module. You may then resume the installation process described in README. ------------------------------------------------------------------------------- END_MESSAGE } 1; Audio-Musepack-1.0.1/inc/Module/AutoInstall.pm0000644000076500007650000005423111505546473020416 0ustar danieldaniel#line 1 package Module::AutoInstall; use strict; use Cwd (); use ExtUtils::MakeMaker (); use vars qw{$VERSION}; BEGIN { $VERSION = '1.03'; } # special map on pre-defined feature sets my %FeatureMap = ( '' => 'Core Features', # XXX: deprecated '-core' => 'Core Features', ); # various lexical flags my ( @Missing, @Existing, %DisabledTests, $UnderCPAN, $HasCPANPLUS ); my ( $Config, $CheckOnly, $SkipInstall, $AcceptDefault, $TestOnly, $AllDeps ); my ( $PostambleActions, $PostambleUsed ); # See if it's a testing or non-interactive session _accept_default( $ENV{AUTOMATED_TESTING} or ! -t STDIN ); _init(); sub _accept_default { $AcceptDefault = shift; } sub missing_modules { return @Missing; } sub do_install { __PACKAGE__->install( [ $Config ? ( UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config} ) : () ], @Missing, ); } # initialize various flags, and/or perform install sub _init { foreach my $arg ( @ARGV, split( /[\s\t]+/, $ENV{PERL_AUTOINSTALL} || $ENV{PERL_EXTUTILS_AUTOINSTALL} || '' ) ) { if ( $arg =~ /^--config=(.*)$/ ) { $Config = [ split( ',', $1 ) ]; } elsif ( $arg =~ /^--installdeps=(.*)$/ ) { __PACKAGE__->install( $Config, @Missing = split( /,/, $1 ) ); exit 0; } elsif ( $arg =~ /^--default(?:deps)?$/ ) { $AcceptDefault = 1; } elsif ( $arg =~ /^--check(?:deps)?$/ ) { $CheckOnly = 1; } elsif ( $arg =~ /^--skip(?:deps)?$/ ) { $SkipInstall = 1; } elsif ( $arg =~ /^--test(?:only)?$/ ) { $TestOnly = 1; } elsif ( $arg =~ /^--all(?:deps)?$/ ) { $AllDeps = 1; } } } # overrides MakeMaker's prompt() to automatically accept the default choice sub _prompt { goto &ExtUtils::MakeMaker::prompt unless $AcceptDefault; my ( $prompt, $default ) = @_; my $y = ( $default =~ /^[Yy]/ ); print $prompt, ' [', ( $y ? 'Y' : 'y' ), '/', ( $y ? 'n' : 'N' ), '] '; print "$default\n"; return $default; } # the workhorse sub import { my $class = shift; my @args = @_ or return; my $core_all; print "*** $class version " . $class->VERSION . "\n"; print "*** Checking for Perl dependencies...\n"; my $cwd = Cwd::cwd(); $Config = []; my $maxlen = length( ( sort { length($b) <=> length($a) } grep { /^[^\-]/ } map { ref($_) ? ( ( ref($_) eq 'HASH' ) ? keys(%$_) : @{$_} ) : '' } map { +{@args}->{$_} } grep { /^[^\-]/ or /^-core$/i } keys %{ +{@args} } )[0] ); # We want to know if we're under CPAN early to avoid prompting, but # if we aren't going to try and install anything anyway then skip the # check entirely since we don't want to have to load (and configure) # an old CPAN just for a cosmetic message $UnderCPAN = _check_lock(1) unless $SkipInstall; while ( my ( $feature, $modules ) = splice( @args, 0, 2 ) ) { my ( @required, @tests, @skiptests ); my $default = 1; my $conflict = 0; if ( $feature =~ m/^-(\w+)$/ ) { my $option = lc($1); # check for a newer version of myself _update_to( $modules, @_ ) and return if $option eq 'version'; # sets CPAN configuration options $Config = $modules if $option eq 'config'; # promote every features to core status $core_all = ( $modules =~ /^all$/i ) and next if $option eq 'core'; next unless $option eq 'core'; } print "[" . ( $FeatureMap{ lc($feature) } || $feature ) . "]\n"; $modules = [ %{$modules} ] if UNIVERSAL::isa( $modules, 'HASH' ); unshift @$modules, -default => &{ shift(@$modules) } if ( ref( $modules->[0] ) eq 'CODE' ); # XXX: bugward combatability while ( my ( $mod, $arg ) = splice( @$modules, 0, 2 ) ) { if ( $mod =~ m/^-(\w+)$/ ) { my $option = lc($1); $default = $arg if ( $option eq 'default' ); $conflict = $arg if ( $option eq 'conflict' ); @tests = @{$arg} if ( $option eq 'tests' ); @skiptests = @{$arg} if ( $option eq 'skiptests' ); next; } printf( "- %-${maxlen}s ...", $mod ); if ( $arg and $arg =~ /^\D/ ) { unshift @$modules, $arg; $arg = 0; } # XXX: check for conflicts and uninstalls(!) them. my $cur = _load($mod); if (_version_cmp ($cur, $arg) >= 0) { print "loaded. ($cur" . ( $arg ? " >= $arg" : '' ) . ")\n"; push @Existing, $mod => $arg; $DisabledTests{$_} = 1 for map { glob($_) } @skiptests; } else { if (not defined $cur) # indeed missing { print "missing." . ( $arg ? " (would need $arg)" : '' ) . "\n"; } else { # no need to check $arg as _version_cmp ($cur, undef) would satisfy >= above print "too old. ($cur < $arg)\n"; } push @required, $mod => $arg; } } next unless @required; my $mandatory = ( $feature eq '-core' or $core_all ); if ( !$SkipInstall and ( $CheckOnly or ($mandatory and $UnderCPAN) or $AllDeps or _prompt( qq{==> Auto-install the } . ( @required / 2 ) . ( $mandatory ? ' mandatory' : ' optional' ) . qq{ module(s) from CPAN?}, $default ? 'y' : 'n', ) =~ /^[Yy]/ ) ) { push( @Missing, @required ); $DisabledTests{$_} = 1 for map { glob($_) } @skiptests; } elsif ( !$SkipInstall and $default and $mandatory and _prompt( qq{==> The module(s) are mandatory! Really skip?}, 'n', ) =~ /^[Nn]/ ) { push( @Missing, @required ); $DisabledTests{$_} = 1 for map { glob($_) } @skiptests; } else { $DisabledTests{$_} = 1 for map { glob($_) } @tests; } } if ( @Missing and not( $CheckOnly or $UnderCPAN ) ) { require Config; print "*** Dependencies will be installed the next time you type '$Config::Config{make}'.\n"; # make an educated guess of whether we'll need root permission. print " (You may need to do that as the 'root' user.)\n" if eval '$>'; } print "*** $class configuration finished.\n"; chdir $cwd; # import to main:: no strict 'refs'; *{'main::WriteMakefile'} = \&Write if caller(0) eq 'main'; return (@Existing, @Missing); } sub _running_under { my $thing = shift; print <<"END_MESSAGE"; *** Since we're running under ${thing}, I'll just let it take care of the dependency's installation later. END_MESSAGE return 1; } # Check to see if we are currently running under CPAN.pm and/or CPANPLUS; # if we are, then we simply let it taking care of our dependencies sub _check_lock { return unless @Missing or @_; my $cpan_env = $ENV{PERL5_CPAN_IS_RUNNING}; if ($ENV{PERL5_CPANPLUS_IS_RUNNING}) { return _running_under($cpan_env ? 'CPAN' : 'CPANPLUS'); } require CPAN; if ($CPAN::VERSION > '1.89') { if ($cpan_env) { return _running_under('CPAN'); } return; # CPAN.pm new enough, don't need to check further } # last ditch attempt, this -will- configure CPAN, very sorry _load_cpan(1); # force initialize even though it's already loaded # Find the CPAN lock-file my $lock = MM->catfile( $CPAN::Config->{cpan_home}, ".lock" ); return unless -f $lock; # Check the lock local *LOCK; return unless open(LOCK, $lock); if ( ( $^O eq 'MSWin32' ? _under_cpan() : == getppid() ) and ( $CPAN::Config->{prerequisites_policy} || '' ) ne 'ignore' ) { print <<'END_MESSAGE'; *** Since we're running under CPAN, I'll just let it take care of the dependency's installation later. END_MESSAGE return 1; } close LOCK; return; } sub install { my $class = shift; my $i; # used below to strip leading '-' from config keys my @config = ( map { s/^-// if ++$i; $_ } @{ +shift } ); my ( @modules, @installed ); while ( my ( $pkg, $ver ) = splice( @_, 0, 2 ) ) { # grep out those already installed if ( _version_cmp( _load($pkg), $ver ) >= 0 ) { push @installed, $pkg; } else { push @modules, $pkg, $ver; } } return @installed unless @modules; # nothing to do return @installed if _check_lock(); # defer to the CPAN shell print "*** Installing dependencies...\n"; return unless _connected_to('cpan.org'); my %args = @config; my %failed; local *FAILED; if ( $args{do_once} and open( FAILED, '.#autoinstall.failed' ) ) { while () { chomp; $failed{$_}++ } close FAILED; my @newmod; while ( my ( $k, $v ) = splice( @modules, 0, 2 ) ) { push @newmod, ( $k => $v ) unless $failed{$k}; } @modules = @newmod; } if ( _has_cpanplus() and not $ENV{PERL_AUTOINSTALL_PREFER_CPAN} ) { _install_cpanplus( \@modules, \@config ); } else { _install_cpan( \@modules, \@config ); } print "*** $class installation finished.\n"; # see if we have successfully installed them while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) { if ( _version_cmp( _load($pkg), $ver ) >= 0 ) { push @installed, $pkg; } elsif ( $args{do_once} and open( FAILED, '>> .#autoinstall.failed' ) ) { print FAILED "$pkg\n"; } } close FAILED if $args{do_once}; return @installed; } sub _install_cpanplus { my @modules = @{ +shift }; my @config = _cpanplus_config( @{ +shift } ); my $installed = 0; require CPANPLUS::Backend; my $cp = CPANPLUS::Backend->new; my $conf = $cp->configure_object; return unless $conf->can('conf') # 0.05x+ with "sudo" support or _can_write($conf->_get_build('base')); # 0.04x # if we're root, set UNINST=1 to avoid trouble unless user asked for it. my $makeflags = $conf->get_conf('makeflags') || ''; if ( UNIVERSAL::isa( $makeflags, 'HASH' ) ) { # 0.03+ uses a hashref here $makeflags->{UNINST} = 1 unless exists $makeflags->{UNINST}; } else { # 0.02 and below uses a scalar $makeflags = join( ' ', split( ' ', $makeflags ), 'UNINST=1' ) if ( $makeflags !~ /\bUNINST\b/ and eval qq{ $> eq '0' } ); } $conf->set_conf( makeflags => $makeflags ); $conf->set_conf( prereqs => 1 ); while ( my ( $key, $val ) = splice( @config, 0, 2 ) ) { $conf->set_conf( $key, $val ); } my $modtree = $cp->module_tree; while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) { print "*** Installing $pkg...\n"; MY::preinstall( $pkg, $ver ) or next if defined &MY::preinstall; my $success; my $obj = $modtree->{$pkg}; if ( $obj and _version_cmp( $obj->{version}, $ver ) >= 0 ) { my $pathname = $pkg; $pathname =~ s/::/\\W/; foreach my $inc ( grep { m/$pathname.pm/i } keys(%INC) ) { delete $INC{$inc}; } my $rv = $cp->install( modules => [ $obj->{module} ] ); if ( $rv and ( $rv->{ $obj->{module} } or $rv->{ok} ) ) { print "*** $pkg successfully installed.\n"; $success = 1; } else { print "*** $pkg installation cancelled.\n"; $success = 0; } $installed += $success; } else { print << "."; *** Could not find a version $ver or above for $pkg; skipping. . } MY::postinstall( $pkg, $ver, $success ) if defined &MY::postinstall; } return $installed; } sub _cpanplus_config { my @config = (); while ( @_ ) { my ($key, $value) = (shift(), shift()); if ( $key eq 'prerequisites_policy' ) { if ( $value eq 'follow' ) { $value = CPANPLUS::Internals::Constants::PREREQ_INSTALL(); } elsif ( $value eq 'ask' ) { $value = CPANPLUS::Internals::Constants::PREREQ_ASK(); } elsif ( $value eq 'ignore' ) { $value = CPANPLUS::Internals::Constants::PREREQ_IGNORE(); } else { die "*** Cannot convert option $key = '$value' to CPANPLUS version.\n"; } } else { die "*** Cannot convert option $key to CPANPLUS version.\n"; } } return @config; } sub _install_cpan { my @modules = @{ +shift }; my @config = @{ +shift }; my $installed = 0; my %args; _load_cpan(); require Config; if (CPAN->VERSION < 1.80) { # no "sudo" support, probe for writableness return unless _can_write( MM->catfile( $CPAN::Config->{cpan_home}, 'sources' ) ) and _can_write( $Config::Config{sitelib} ); } # if we're root, set UNINST=1 to avoid trouble unless user asked for it. my $makeflags = $CPAN::Config->{make_install_arg} || ''; $CPAN::Config->{make_install_arg} = join( ' ', split( ' ', $makeflags ), 'UNINST=1' ) if ( $makeflags !~ /\bUNINST\b/ and eval qq{ $> eq '0' } ); # don't show start-up info $CPAN::Config->{inhibit_startup_message} = 1; # set additional options while ( my ( $opt, $arg ) = splice( @config, 0, 2 ) ) { ( $args{$opt} = $arg, next ) if $opt =~ /^force$/; # pseudo-option $CPAN::Config->{$opt} = $arg; } local $CPAN::Config->{prerequisites_policy} = 'follow'; while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) { MY::preinstall( $pkg, $ver ) or next if defined &MY::preinstall; print "*** Installing $pkg...\n"; my $obj = CPAN::Shell->expand( Module => $pkg ); my $success = 0; if ( $obj and _version_cmp( $obj->cpan_version, $ver ) >= 0 ) { my $pathname = $pkg; $pathname =~ s/::/\\W/; foreach my $inc ( grep { m/$pathname.pm/i } keys(%INC) ) { delete $INC{$inc}; } my $rv = $args{force} ? CPAN::Shell->force( install => $pkg ) : CPAN::Shell->install($pkg); $rv ||= eval { $CPAN::META->instance( 'CPAN::Distribution', $obj->cpan_file, ) ->{install} if $CPAN::META; }; if ( $rv eq 'YES' ) { print "*** $pkg successfully installed.\n"; $success = 1; } else { print "*** $pkg installation failed.\n"; $success = 0; } $installed += $success; } else { print << "."; *** Could not find a version $ver or above for $pkg; skipping. . } MY::postinstall( $pkg, $ver, $success ) if defined &MY::postinstall; } return $installed; } sub _has_cpanplus { return ( $HasCPANPLUS = ( $INC{'CPANPLUS/Config.pm'} or _load('CPANPLUS::Shell::Default') ) ); } # make guesses on whether we're under the CPAN installation directory sub _under_cpan { require Cwd; require File::Spec; my $cwd = File::Spec->canonpath( Cwd::cwd() ); my $cpan = File::Spec->canonpath( $CPAN::Config->{cpan_home} ); return ( index( $cwd, $cpan ) > -1 ); } sub _update_to { my $class = __PACKAGE__; my $ver = shift; return if _version_cmp( _load($class), $ver ) >= 0; # no need to upgrade if ( _prompt( "==> A newer version of $class ($ver) is required. Install?", 'y' ) =~ /^[Nn]/ ) { die "*** Please install $class $ver manually.\n"; } print << "."; *** Trying to fetch it from CPAN... . # install ourselves _load($class) and return $class->import(@_) if $class->install( [], $class, $ver ); print << '.'; exit 1; *** Cannot bootstrap myself. :-( Installation terminated. . } # check if we're connected to some host, using inet_aton sub _connected_to { my $site = shift; return ( ( _load('Socket') and Socket::inet_aton($site) ) or _prompt( qq( *** Your host cannot resolve the domain name '$site', which probably means the Internet connections are unavailable. ==> Should we try to install the required module(s) anyway?), 'n' ) =~ /^[Yy]/ ); } # check if a directory is writable; may create it on demand sub _can_write { my $path = shift; mkdir( $path, 0755 ) unless -e $path; return 1 if -w $path; print << "."; *** You are not allowed to write to the directory '$path'; the installation may fail due to insufficient permissions. . if ( eval '$>' and lc(`sudo -V`) =~ /version/ and _prompt( qq( ==> Should we try to re-execute the autoinstall process with 'sudo'?), ((-t STDIN) ? 'y' : 'n') ) =~ /^[Yy]/ ) { # try to bootstrap ourselves from sudo print << "."; *** Trying to re-execute the autoinstall process with 'sudo'... . my $missing = join( ',', @Missing ); my $config = join( ',', UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config} ) if $Config; return unless system( 'sudo', $^X, $0, "--config=$config", "--installdeps=$missing" ); print << "."; *** The 'sudo' command exited with error! Resuming... . } return _prompt( qq( ==> Should we try to install the required module(s) anyway?), 'n' ) =~ /^[Yy]/; } # load a module and return the version it reports sub _load { my $mod = pop; # class/instance doesn't matter my $file = $mod; $file =~ s|::|/|g; $file .= '.pm'; local $@; return eval { require $file; $mod->VERSION } || ( $@ ? undef: 0 ); } # Load CPAN.pm and it's configuration sub _load_cpan { return if $CPAN::VERSION and $CPAN::Config and not @_; require CPAN; # CPAN-1.82+ adds CPAN::Config::AUTOLOAD to redirect to # CPAN::HandleConfig->load. CPAN reports that the redirection # is deprecated in a warning printed at the user. # CPAN-1.81 expects CPAN::HandleConfig->load, does not have # $CPAN::HandleConfig::VERSION but cannot handle # CPAN::Config->load # Which "versions expect CPAN::Config->load? if ( $CPAN::HandleConfig::VERSION || CPAN::HandleConfig->can('load') ) { # Newer versions of CPAN have a HandleConfig module CPAN::HandleConfig->load; } else { # Older versions had the load method in Config directly CPAN::Config->load; } } # compare two versions, either use Sort::Versions or plain comparison # return values same as <=> sub _version_cmp { my ( $cur, $min ) = @_; return -1 unless defined $cur; # if 0 keep comparing return 1 unless $min; $cur =~ s/\s+$//; # check for version numbers that are not in decimal format if ( ref($cur) or ref($min) or $cur =~ /v|\..*\./ or $min =~ /v|\..*\./ ) { if ( ( $version::VERSION or defined( _load('version') )) and version->can('new') ) { # use version.pm if it is installed. return version->new($cur) <=> version->new($min); } elsif ( $Sort::Versions::VERSION or defined( _load('Sort::Versions') ) ) { # use Sort::Versions as the sorting algorithm for a.b.c versions return Sort::Versions::versioncmp( $cur, $min ); } warn "Cannot reliably compare non-decimal formatted versions.\n" . "Please install version.pm or Sort::Versions.\n"; } # plain comparison local $^W = 0; # shuts off 'not numeric' bugs return $cur <=> $min; } # nothing; this usage is deprecated. sub main::PREREQ_PM { return {}; } sub _make_args { my %args = @_; $args{PREREQ_PM} = { %{ $args{PREREQ_PM} || {} }, @Existing, @Missing } if $UnderCPAN or $TestOnly; if ( $args{EXE_FILES} and -e 'MANIFEST' ) { require ExtUtils::Manifest; my $manifest = ExtUtils::Manifest::maniread('MANIFEST'); $args{EXE_FILES} = [ grep { exists $manifest->{$_} } @{ $args{EXE_FILES} } ]; } $args{test}{TESTS} ||= 't/*.t'; $args{test}{TESTS} = join( ' ', grep { !exists( $DisabledTests{$_} ) } map { glob($_) } split( /\s+/, $args{test}{TESTS} ) ); my $missing = join( ',', @Missing ); my $config = join( ',', UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config} ) if $Config; $PostambleActions = ( ($missing and not $UnderCPAN) ? "\$(PERL) $0 --config=$config --installdeps=$missing" : "\$(NOECHO) \$(NOOP)" ); return %args; } # a wrapper to ExtUtils::MakeMaker::WriteMakefile sub Write { require Carp; Carp::croak "WriteMakefile: Need even number of args" if @_ % 2; if ($CheckOnly) { print << "."; *** Makefile not written in check-only mode. . return; } my %args = _make_args(@_); no strict 'refs'; $PostambleUsed = 0; local *MY::postamble = \&postamble unless defined &MY::postamble; ExtUtils::MakeMaker::WriteMakefile(%args); print << "." unless $PostambleUsed; *** WARNING: Makefile written with customized MY::postamble() without including contents from Module::AutoInstall::postamble() -- auto installation features disabled. Please contact the author. . return 1; } sub postamble { $PostambleUsed = 1; return <<"END_MAKE"; config :: installdeps \t\$(NOECHO) \$(NOOP) checkdeps :: \t\$(PERL) $0 --checkdeps installdeps :: \t$PostambleActions END_MAKE } 1; __END__ #line 1071 Audio-Musepack-1.0.1/lib/0000755000076500007650000000000011505546504014357 5ustar danieldanielAudio-Musepack-1.0.1/lib/Audio/0000755000076500007650000000000011505546504015420 5ustar danieldanielAudio-Musepack-1.0.1/lib/Audio/APETags.pm0000644000076500007650000000114211505266615017202 0ustar danieldanielpackage Audio::APETags; # Base class wrapper. use strict; use Audio::Scan; our $VERSION = '1.0'; sub new { my ($class, $file) = @_; my $method = ref $file ? 'scan_fh' : 'scan'; my $self = Audio::Scan->$method($file); bless $self, $class; return $self; } sub _extract { my ($self, $type, $key) = @_; return $self->{$type} unless $key; return $self->{$type}{ucfirst $key} if defined $self->{$type}{ucfirst $key}; return $self->{$type}{$key}; } sub info { return shift->_extract('info', @_); } sub tags { return shift->_extract('tags', @_); } 1; __END__ Audio-Musepack-1.0.1/lib/Audio/Musepack.pm0000644000076500007650000000402711505546415017532 0ustar danieldanielpackage Audio::Musepack; use strict; use base qw(Audio::APETags); our $VERSION = '1.0.1'; 1; __END__ =head1 NAME Audio::Musepack - An object-oriented interface to Musepack file information and APE tag fields. =head1 SYNOPSIS use Audio::Musepack; my $mpc = Audio::Musepack->new("song.mpc"); my $mpcInfo = $mpc->info(); foreach (keys %$mpcInfo) { print "$_: $mpcInfo->{$_}\n"; } my $mpcTags = $mpc->tags(); foreach (keys %$mpcTags) { print "$_: $mpcTags->{$_}\n"; } =head1 DESCRIPTION This module returns a hash containing basic information about a Musepack file, as well as tag information contained in the Musepack file's APE tags. =head1 CONSTRUCTORS =over 4 =item * new( $filename ) Opens a Musepack file, ensuring that it exists and is actually an Musepack stream, then loads the information and comment fields. =back =head1 INSTANCE METHODS =over 4 =item * info( [$key] ) Returns a hashref containing information about the Musepack file from the file's information header. The optional parameter, key, allows you to retrieve a single value from the info hash. Returns C if the key is not found. =item * tags( [$key] ) Returns a hashref containing tag keys and values of the Musepack file from the file's APE tags. The optional parameter, key, allows you to retrieve a single value from the tag hash. Returns C if the key is not found. =back =head1 NOTE This module is now a wrapper around Audio::Scan. =head1 SEE ALSO L, Audio::Scan =head1 AUTHOR Dan Sully, Edaniel@cpan.orgE Original Author: Erik Reckase, Ecerebusjam at hotmail dot comE =head1 COPYRIGHT Copyright (c) 2003-2006, Erik Reckase. Copyright (c) 2003-2007, Dan Sully & Slim Devices. Copyright (c) 2003-2010, Dan Sully. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.2 or, at your option, any later version of Perl 5 you may have available. =cut Audio-Musepack-1.0.1/lib/Audio/APE.pm0000644000076500007650000000412311505266615016365 0ustar danieldanielpackage Audio::APE; use strict; use base qw(Audio::APETags); our $VERSION = '1.0'; 1; __END__ =head1 NAME Audio::APE - An object-oriented interface to Monkey's Audio file information and APE tag fields. =head1 SYNOPSIS use Audio::APE; my $mac = Audio::APE->new("song.ape"); foreach (keys %$mac) { print "$_: $mac->{$_}\n"; } my $macTags = $mac->tags(); foreach (keys %$macTags) { print "$_: $macTags->{$_}\n"; } =head1 DESCRIPTION This module returns a hash containing basic information about a Monkey's Audio file, as well as tag information contained in the Monkey's Audio file's APE tags. =head1 CONSTRUCTORS =over 4 =item * new( $filename ) Opens a Monkey's Audio file, ensuring that it exists and is actually an Monkey's Audio stream, then loads the information and comment fields. =back =head1 INSTANCE METHODS =over 4 =item * info( [$key] ) Returns a hashref containing information about the Monkey's Audio file from the file's information header. The optional parameter, key, allows you to retrieve a single value from the info hash. Returns C if the key is not found. =item * tags( [$key] ) Returns a hashref containing tag keys and values of the Monkey's Audio file from the file's APE tags. The optional parameter, key, allows you to retrieve a single value from the tag hash. Returns C if the key is not found. =back =head1 NOTE This module is now a wrapper around Audio::Scan. =head1 SEE ALSO L, Audio::Scan =head1 AUTHOR Dan Sully, Edaniel@cpan.orgE Kevin Deane-Freeman, Ekevindf at shaw dot caE, based on other work by Erik Reckase, Ecerebusjam at hotmail dot comE, and Dan Sully, Edaniel@cpan.orgE =head1 COPYRIGHT Copyright (c) 2004, Kevin Deane-Freeman. Copyright (c) 2005-2007, Dan Sully & Slim Devices. Copyright (c) 2007-2010, Dan Sully. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.2 or, at your option, any later version of Perl 5 you may have available. =cut Audio-Musepack-1.0.1/Changes0000644000076500007650000000113511505546446015111 0ustar danieldanielRevision history for Perl extension Audio::Musepack. 1.0.1 Sat Dec 25 21:05:30 PST 2010 - Skip tests if Test::Pod::Coverage isn't installed. 1.0 Fri Dec 24 19:55:53 PST 2010 - Implement as a wrapper to Audio::Scan 0.6 Fri Jan 5 19:50:25 PST 2007 - Fix MANIFEST to include data files. 0.5 Fri Jan 5 19:08:13 PST 2007 - Added POD & Coverage - Fixed META.yml - Fixed tag reading for APE files. - Fixed skipping over ID3 tags. 0.03 Sat Nov 26 00:12:09 PST 2005 - Sync up with SlimServer changes. - Add APE.pm from kdf. 0.01 Sun May 9 17:04:14 PDT 2004 - Import from Erik Audio-Musepack-1.0.1/MANIFEST0000644000076500007650000000074211505266523014745 0ustar danieldanielChanges Makefile.PL MANIFEST README data/test.ape data/test.mpc lib/Audio/Musepack.pm lib/Audio/APE.pm lib/Audio/APETags.pm META.yml t/basic.t t/pod.t t/pod-coverage.t inc/Module/Install.pm inc/Module/Install/Metadata.pm inc/Module/Install/Base.pm inc/Module/Install/AutoInstall.pm inc/Module/Install/Include.pm inc/Module/Install/Makefile.pm inc/Module/Install/WriteAll.pm inc/Module/Install/Win32.pm inc/Module/Install/Can.pm inc/Module/Install/Fetch.pm inc/Module/AutoInstall.pm Audio-Musepack-1.0.1/t/0000755000076500007650000000000011505546504014054 5ustar danieldanielAudio-Musepack-1.0.1/t/basic.t0000644000076500007650000000066511505265440015326 0ustar danieldanieluse Test::More tests => 8; use File::Spec::Functions qw(:ALL); BEGIN { use_ok('Audio::APE'); use_ok('Audio::Musepack'); }; { my $ape = Audio::APE->new(catdir('data', 'test.ape')); ok($ape); my $tags = $ape->tags; ok($tags); is($tags->{'ARTIST'}, 'Beach Boys'); } { my $mpc = Audio::Musepack->new(catdir('data', 'test.mpc')); ok($mpc); my $tags = $mpc->tags; ok($tags); is($tags->{'ARTIST'}, 'Massive Attack'); } Audio-Musepack-1.0.1/t/pod-coverage.t0000644000076500007650000000041711505546321016613 0ustar danieldanieluse Test::More; eval "use Test::Pod::Coverage"; plan skip_all => "Test::Pod::Coverage required for testing pod coverage" if $@; plan tests => 2; pod_coverage_ok("Audio::Musepack", "Audio::Musepack is covered" ); pod_coverage_ok("Audio::APE", "Audio::APE is covered" ); Audio-Musepack-1.0.1/t/pod.t0000644000076500007650000000020111174144322015006 0ustar danieldanieluse Test::More; eval "use Test::Pod 1.00"; plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; all_pod_files_ok(); Audio-Musepack-1.0.1/META.yml0000644000076500007650000000110011505546474015060 0ustar danieldaniel--- abstract: 'An object-oriented interface to Musepack file information and APE tag fields.' author: - 'Dan Sully, ' build_requires: ExtUtils::MakeMaker: 6.42 configure_requires: ExtUtils::MakeMaker: 6.42 distribution_type: module generated_by: 'Module::Install version 1.00' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: Audio-Musepack no_index: directory: - inc - t requires: Audio::Scan: 0.85 perl: 5.005 resources: license: http://dev.perl.org/licenses/ version: 1.0.1 Audio-Musepack-1.0.1/README0000644000076500007650000000223311505266615014473 0ustar danieldanielAudio::Musepack version 1.0 ======================= The README is used to introduce the module and provide instructions on how to install the module, any machine dependencies it may have (for example C compilers and installed libraries) and any other information that should be provided before the module is installed. A README file is required for CPAN modules since CPAN extracts the README file from a module distribution so that people browsing the archive can use it get an idea of the modules uses. It is usually a good idea to provide version information here so that people can decide whether fixes for the module are worth downloading. INSTALLATION To install this module type the following: perl Makefile.PL make make test make install COPYRIGHT AND LICENCE Put the correct copyright and licence information here. Copyright (C) 2003 by Erik Reckase Copyright (C) 2005-2007 by Dan Sully & Slim Devices Copyright (C) 2007-2010 by Dan Sully. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.2 or, at your option, any later version of Perl 5 you may have available. Audio-Musepack-1.0.1/Makefile.PL0000644000076500007650000000027711505266615015573 0ustar danieldanieluse inc::Module::Install; name('Audio-Musepack'); license('perl'); perl_version('5.005'); all_from('lib/Audio/Musepack.pm'); requires('Audio::Scan' => '0.85'); auto_install(); WriteAll();