lmarbles-1.0.7.orig/0000700000175000017500000000000010063260671012430 5ustar uweuwelmarbles-1.0.7.orig/src/0000700000175000017500000000000010063260672013220 5ustar uweuwelmarbles-1.0.7.orig/src/gfx/0000700000175000017500000000000010063260672014004 5ustar uweuwelmarbles-1.0.7.orig/src/gfx/wood/0000700000175000017500000000000010063260672014754 5ustar uweuwelmarbles-1.0.7.orig/src/gfx/wood/background.bmp0000600000175000017500000063646607206511223017616 0ustar uweuweBM6=6(9  xf>)FI9[6Y7S' 2|6 #[/{BN%c*v#d:vp4mF&rB HU*z'e2g >"F(K"j:I[>.on.S6:E.NIg$*~G2\ *jB6VYRd;{HF>6B.~ i%#2NE:;e>j"p ^G"w>I\[J7|B5L*&~2\>>: 1N21r&ncBS:R#I.d+\$TOb{6:62v > 6 25Z( .2\8e D>zg >G.bv BFS&v .zB&|&Do *dd FL%k(f"r*3{<nb8fv> N 6V JB J6R : F[.[(QTeS BR$v2MJ_ .;nGVTfB *v\R r.>62N&z B>N:J 6 *q.]VB> :h&r/nf' 2:{Z*[*P-X\|^QrND(;r>lN:&jN2 .v:FJ20NNqqYYY++____qqqY+YqqY+qYqYYYqqY+YqqhNۄ>N>>$u>>UBe٭>>>>>o>N lo2Bkklo~][Wβqqq$Nq_qq__@YqYY++YqqqYqqqqqY+Y+qq$>>>$YNU@0@@+q+Y$$$Yq+qe$$Y<Y<([[[[\YәʇeӇ<$Ә$әʘ$$$$YNNN$NoN$$Nu٭u>NY<>>u([l~l]]ssjj=]o>o歭>>UuuU ۤŠђ$<>>> l>>gol54oo ([l&&RYYKU++Y$$+qq+++___+@+YqqYY++qq+Yqqqqqq$U U$(!+++$NYYqڙeYqqYYYqYʙeuKeY$Y<$({(dwN<Ә$K$$$$$Nʙ$$\$懙Y$YY$>N>>uu>N<ۙ<\<>4(d]l~~l]l~l[j]]=]Βۭ(l(llu4<$h<>>>o4 u(4oR44l44lll(]55~oqquUKU+Y♙$++++q@++@++__+++Yqqq++Y+q0qqY0q@@+Y++@+UUU >NU uY++YYY+YqYYqee$\☘$$ʘ>{d(h\>>>>><<>>NNNu<$h$$h$ ll![[[44k]]{s[3=]lRol(4 (l o>u>>٭o l(lu44oooolk44 o4]kR2+Y! 4o<<<<>uu>$NN<>h>U>$qqq+$q$$YYYYYq\Y⇇$$$U] 2og>Nي$$<>o>B><愄N$$\<ъNN<><u>ۄ>>ۄ<$<<>o(((((d]u( ul~~l]l]34]]]((]u >o>>o lkŚkllkk2Rಲ~ll[]kkl4@@$uuuUNuل$+qqq$0q+YY+YqqqYY@qqqqqqqq+q(u><>l >(N$qq++YڙqʙʘY+Y$$$\ʘ$Ә$$YY !(lgg2>>$K\Y$N$YN$\\Ӈg44o>R4(u$NUuْ>>u4kuۇ>>> uluuu(lol4~]]]]2~{Ƣ%]]j==](loo o2Rk[]l(ޚ[[Ԃ]Ϛ~o]]][(l++N>(>>ۤ<>ۄ<NhR(hY++qYʥeYYY+YYYYYY$$$$$$$ ][=44R2>><<ooR懇$\$<>BuuےNNBu<>N<>u4޲2lۇe<>lu4 u(l 4ޚk2R~~]{F?tt=loo~~l]lR4l][[Ԛ]]5ϴϲ4]]~4R4]lo00qq<uul٭>uۭhY\$ʙʘ☘Y+Y$ʥYY+YYq+YqY+q+Y<>\okkB\qqq+qYY$$$$N$YYYYʘYN<<ۄ>ulllllR>4(lo4uuهB<ۄoN>٭N>>>>uu42>шu>$<ӭ٭>>43Sk2o444]= =[]4o]kll4]]~=s]Aj]~4l]d]l2eqq$luR><<>>>>u(uoh$$N$<YʙNNN$\YYYʙʘʙY$$$<$YY\\( 3klo<YY\$$ʘ$$<يu<Nl4ll~o>o444l>NuuN<N$<<>>uuo22׫5NhoNN>>kl~~~]]]s=F%{]s]Ԗ[s]]j]s=jS=~4]]llYY$$N>>4 N$$N2Pgooo>hےN<$\<>NN$Nh$NN>>><\$>N<<<>>>>ےoooBuoh<ے>44lk[l~~= %%F 3=j=ss]ss]s[]l]Y$Nuull>NN<$N>u(k((N$$$N$NN$YʙNN<$ӘYYәN$(ŊYYY$N$ʘӘ$$$\\YN<\eN$+Nl=l>N$$$$$$$$N<<o4ll44 ooے 4R4>u<N<$hNu<<歭٭>Y<$$$$<ے>o542g45kl]]lRRR ===s==j===]s4!!KeUkkd!$<$<> 4(kل$$$ӘN$\Ә$\Y$$<<$\$NN$$$<N<\\U!eʘY$$$Ә$<ʘNʇ$$$$$$N<ه$$uooouْ>ْ>>oBY>><<>>o>>oo4ײuB׈2gou5(l4l~l~4o~] t==ݶF1FF===sssj/=wluu(Udd!k($$$<>lk(4 >>NNN>>>N\$Ӈ$<o>N$Ә\N<\\hۤ> (dloo~]=]l][{(ۘNqY$$$<$$$$eN>歄$<ۇ4ul4 o>4l(l uB<$$<愇‡NNN<oouuuuBBooo׫kkl44Ruk(u4o4~=t a=s= t 11 F ==j~jsj]sSk >ۙU٭٭>$Ә<>([d>>>>>>uuuuu(4>>懇٫dll >> ((!( >>lll l l l((d[[3D]4ll(l2 愄NNN$\\Y\$<$ʘNNNNۙ$Y$N$NN$Nә$< [1s>NqY$$$$$<$$$Nۇ<$\ӄلۇugۇ>4 >>4o42hhhh4ouۤ>Buل>>N’’2oBuo2oo422BkkuBg2k54B׫uu(k((ll=ttaM 1XFF ,s=/,hےNY+YYYUKK$>!dl> >N>ld((([wku٭Bْ٭w3{{{[[3{D3{3[[{D333333d4N> >>44 >\>o<<$YY$eee<$$<$Y$♙$$<$\ے u2<>>oRo<>NuN<\$N d>>>Ӥ d[{[du4(k4 uB4o4I3[{̶3yy3  F 33{[!uN$>>4d[(>N\ӄ<<<<>NYYYqY$☘$$Y> R4هY\Y\$Y$ۄNNh<<٭\hoooooۤhoo24k4>>h\<>ohے<huo<ӒBuk4oBBײ4oo52uBo撒hӒo’uB22oBBuuu l!( 4l[=[[[uooo>o4 2>4RR[33333[[[[ s=( N$$Nl[[$Ә>NY\\h\<NNY$$Yq$>> j<$$<<\>h\\hNolkklŲul44l442ggoluْoo>ooh\h4>44oBuhhoBu]![dd(l(d[(lRoo>o<ے>hNd[33l$$$$YY\hӘY$NN$NY$$$ۭlj]B<‡u$\\\Bohouuo>l>ol4oohooۤ>>o42>ۤhhBчh\\B׊2ooogooBB撤2o22o4Roײ44ooooo4ײo2hPBˆBooP4 4444~l~SyAg~js=s/s=sj/]==a=sYqqq+_ܓ+Y+q$YY$$e>N$$ dk( >> uoo> o2huBےlogPPےoRll](l((4RoR4l][[[]l([] oo h<l[ҳ 3ŭ$\Y<$YYYYӘYYYYY$$$N$Y\>>u4o<$hےoooduu o4uu44ku2og2Ro>44o44oou(uo2o>ooۤ4o>o>Nۤۇ­u\<ےoےo2ˆo\o42ol54ooo4oBu>>>oB4>>4׈u4>o4gggg~ςsSֻj=sjs=sqq@qqqq++ʇYYY$ ! $ә<$ >>o懒<ۇѫd<>o42g44(I[[d4 l(l4>>>><<YYYYYqYYYN<> uu>ۤ$Buuuul444(lْukl2<4kk4o244lಒےB4ooogoB(ْ>Bْْ24oB>撒u懒gh2’

45k44ok4oo2ooшok2o2o4oog22gokl544444RR4RRWԖAjsjjssjMaY+q0qYq+YYYYY\Y$uKۙ 4<<>NUNN<$<>uuduBdku 4 %Fj~4og4<$愒>>> o>ul><BB44>o4lo>>o4l4gR4RoR44ooohB4>>>2oulגol4ogo>44oooْN<<يBuBghh<2Bo2gou4o4o2oooB42o4Bol44l4o44o l(oooR555[4k]k&Aԕjj&sMMqqYY+qᓎqᎎYYYYYYʇN>☘$euBBkduuu!!>ooو44o>>Rlu44o 444ooBْoo444o4o2oohӤoPg22RRoo2ooBoolklےou٤>o4׈oh<<$$N<>NNBuuu4oog44oo<\\ >ے2> o>2(4ldkloo>oB4o4B4>((4>\4uo4uoo2oo44k>>Bluuu2o<uk4B٤$<<$<<ےoBgBk5Bhou5loo44l44l4244ulkk5luk(kl44]dl~k4ld] o45lk]A]SS,]/&/aqqq@q+qqY+u(NNNYYqYY\$<<\Y<$$$$$ʄeN$YY$$Ә$N>愄2oh>>g\h\<ۤod3j224R4oooBBBgh24u(k~oRk(kk4uogo2oB4loo>h4>lllulkoooook4454ْ2o>>o>ۤ>o224oouluuu>椤>gguBђBko4ooٲ44o454oll5[Sz[k]]l4l~4]4~~]l]]kA]~5R25Sz]~S]]/=a++qqqq++qqqʘY\\披KNeq+YYYYY\Y\qʙYqYqqYo>hhP<<2]3 zs2442g2Ѥ2BBo2o4kl44o44R44ײ4445BBooo4Bo44oۤ٤o2>4o2ooo2go44ul2>4uBoo>>>2

>$\<\N<ۇN٤P4[3F`~(R2g2555llR2o oooo4ײ444ulײB4B224o>ool4oے>goo42o4ggooghhhh<ۤ>><ے>>(u٤ۤo¤hgolulkk5o>o42RRl(k]lRol]klk~Ik]]~k~~RlW5WW7&ςϴ]&β]9/9aqYq+@0++Yq$eeeBuu$qq+$YYʘYYY$$ʘYY\\☘YYYYY++YY\YY\<$N\YY\<55PPgl㢳(>N<\Ӈ<<g2ٲloooײ44oo4oo4l(kku o44ogouoR42uu4ogo4ukB>>>ugPog‡¤<2o45kkul5k24l]k]]]lkl~k]]k[[]l~]~oR55AWRR~~]j~]R3=M@+qʘ++qqqʥ$egeB244]33ll\Yۇ<$<4ײoo444oے4u(k4l4oo4kk4o٤>gےou > uu>Bgou2go>2lo5k(ll4~]R~]kϚl]]]~~~]j]~]9A]~~~~~4gh~lll4&/+qʙ@++♥YY$<чhhe$YqYYY+eUe$qqʘ☙Y+YYY\YYYqY!dl4~77]=S[d><٭愄uhho44l4goo>oBo<>oo>odkْgے>42Ph2>okIޫoo442>ٲgo42~~4~~l]]RR]RRkR]]AWԚ]jR4]Ϛ]~R2ol42R=q☘0@ᨨYYY+YYYgPhqqYY$qqYY+YYYYYYqYY+YYqYq+qYYYYYY+Y>ud( o7&{d l(uuuuل$N<ۤN$<$BB>=]/tta3g22o22o2B5B45lo~oh4looo2Ro44Rou4>2ooog222ok24ku4(4o2>g>oӤo>Pےo٫u><>>N>><ђ\\P2loooR~~l~Ϛ]kR~2Rllk]]ԴWA]ϴ4~]]]lRWBk,YY+qYYᎨYʇW\([A9W~~33(l(ۤѭ¤\<>>هN\$$$h\o(l4>ooo44245og>>גӤۤPh244hے<>oBoh懤B(uۤNN\Y$˜YYNNN><\\<<\Ӥ̶MAI]RRRR~΃ރh2o74R4lk4gR5RRogoR~k4oBBB5B2gBϫ2Rlullu44ooh2\B2oB¤hBdB2>>oo2ukkku4Buْ<>>o e>>>[yF=a]]~j~R~RWWдl]j]]RRR[[l5]l]k5BBBl52oooo4kB׫dkײu2>>>o>4ooud<Ӥ>2>ۈ44ooB5k445k] ldk](](]l][ϲRRl~]]]~R~]{]2gPς]]]Ϛ]]=j]jj]Ԗ++Y+Yqʙ0+qq+qqqYUUe<YqYYYY\q+qYYYYY+YYY++Y++YYYY⇄$$<\YY$Y\ޖ]]s3Fpd( >>uooBo2>2kkgP2Bْ22و4u٤>> u4l44(lloRR o4ll~RR~4ޖl~4R~l~RR[[~~kkk7΃5Ж[]k&&/sԚqq+++0q+qqYYq+qqᓓYYee\„+YᎎYYYYYqYYYYYʙq+YqYYYYYqqYYY$ӘӇ<$$$$$$$$\k[F㢶[[d4>ےPP$PP>>>uu>>>o2oB椤2BoP2Ѥ2gg¤>>>>ol5u>k42ogo2o>444g> ~4RRRR5kRA]]]~]][Ԛk]k]ll5&WW2R]R999Y++Y++q++++++YqqYYqYeee<\YRl3[=̢F2g4وol4oou4B2\PP~ݱ ]ԴR2]33Ԃ]2P2(]=]]ARRςSzzSSs[]]]&24lϴRgPg2­ououu<<$hg4ْ4oْ224444lu44o4ޖ[޲4A]~~~lSk]A]]ޚW5ಲlRRR~R2~~ಃ&=Ԃqq+qqq+++qqqYYqqYYYᓨqYᘇee<\Y+Y++q+qqqqY$$Ә$$$$$$YY+eeeY\$Y$<$\ee<$ol hPg2~rt,W~[]RR~][[49ނA33z{Sz3[]j4l4Ro2goۤ<懤uهh‡hhhч<$222шBђo2oo2o2ou4ْB4o2o44lll RW]~2RR]SS]klkW55lR4~~RRo2RAjjj]]qqqqYqq+YqqqY+++YYYʇeB$eYYᎨ_+YYYYYY$<$ʘYYYYqYYY$e<$h\Y\$$\YYӘ$uNۤ<>4]d] ?` PPggggol42h22k]SFjR~=]A~kRl]]]]~ASS]/s=s]4ok222o4o>o2g2uBBoo22B<¤h\go’o4422gg22Bk4P<>o44BBB2Bk>4(445kk24]~~2~l~~~WW~~AA5σ5]jSqqYq0q0qYqqYq+qqq'qqYʇeh\Әo7&,/a j~jA[~~~~]=s===s]SS]RoR44o2o222]A~~{~2g44o>o2o2o44o>oo>o45Bg2ooۤP24Έ22BBooo ooۤoوgo4go4o2444llಲlo24~~RϖR2g55lllRR4]Wk5&/9Aq+qqY+++qYqYYq+qq+YYY<<NNu¤\ƒ= F]~]jj]lllll==`a=΃]d]l4kΒool4~]]]]AAA~~A]7R]~]SS~&~~l5oR4u4R2gggglPgo2P42P244ײB׈ouu4o4uB>hoo44llo>ol4kംWϚRRR~kRR~ϴ~]kR55k]]W5W7Rq++Y+++Y+++++Yq0qYqqqYYY+Y<$$<<Ӈ愄BY+qqY\YY☘o4B4o4Ro44ogodk~44]5~]ഴk]~R]~Rlϖ]5WR5ЃޚϚϚ~Msj++Y+++Y+q@qq+ژYY\e<4kl[[[~s3Sssj]5ך]][1F.jψ2Rlk>uo44444ll4o>l]lRϲ~~R~]22BW]~l~ϖ~A3Ɵ]]lԖj]]]A]]~o2oRRB22Bk>ۤuBlkloooo4dl5kRRoRRಲ5ϴlo2]~]44σ&gW]]]Aj jԚ+q++YYqYq++qY+Y+᎓Yqʙӄ׫eNhي‡YYYYʘ\YNN$<$N<<<‡懤NN$<$<<ۄNuB<<>ll~]s]]==,/jjj/S]5kl2][=p1jR4koog2o4o2o RRkl]4~]~RϚ5~o]2~R2A~~99[[]sj/jjssjj==ԯjj2~R22g2gPgβ44u4oo4o4kdllkd4oooR44l]]l]Wςk޲ϴ4Rl554~~RR422RAϴ~`=+qYY+++qY+q++Yqq+q+q++q@ʘq$Yu>NNuNNN>4>ϖjj=,s9/]BѤhR~1X`9kooB2gےo4lk(4ogRo]RR~шˆRlk~R44RoR7j]]S=ssԖjjjskRΈoPouk(5׈>oo>ou4gRll4o444(d]llkgPRlk]ϚAϲk4W~l5R527RRR~~Rs~R++q+qq++YqYqY++YYqYY\Y24goooo4gllkd4(22ಲಃ5W55kϲRo555]l~lllR25R]]4RΈ2gP22RR2R/3a=R&ᓓ++Y+++YYYYYYqYYY\$uBه\<ے<\\$$Y$N$<ل‡懄Nۄ>N<<<<<ل<<ۤ<><\N>>ل<>>>o愭>ll~//M=+++qYqqYYYYY+$<ʇӇ<<$N>>uuNӤ>><RAAΕA2oR2oo$>>2lo<\g~s?sjR2oي> lku>o2Phlg22k5l5]]44o5kllk]l4ll4]o4g44uuو45RR~24]~RlR~~ԂA&]jss/j/jkk~~RRRR~R2R2o44R2R5k2Rjl]l22σ7&2RWR224oR4l44 4 ۇ 4aEk~q+++qqqYYYYYYYYYY$$<<<<>uu<>>o(ogo4uBeN<4oo4g]2gۤ>$NoےےghӒ]~l42٫ol(dl2222R44222l]l4o4Ro(l44o2gR544B4o2oo׃55524~~oR7R޴]S,ss=S][~~]]]2~4~]RR~]]~]Rg~4ޖ22455]]][[4u4o>٭4kSƗS]4RR+++q+qqqYY$YYӘqYYYY<$NlI<YYY<\>>>>$\(>hےS4o2l~u44ےoool5222l~4~2Rײo> 44R4>ײolkB4>٫٤<>>>ۄےou>o>>>ldo4B22ookl4o44go4R4ll25l4><5BBB2o2o4RlR2oo2gԖSS==s]jjԂj3=]M3ƻ=jS=s]=52BIWkk ooP<4R lssM/R54+++Y++YYqYYʘ\$$$$☘ʙYYYӘY\h>ӘYY\$NNN‡<ے>ْۤ>><\h>>>>>4o45NNhh<24gg2~~[5lBBBeшBku4oوu>452oRzS92~~R2>o>ے4R42oR4޲ooײ444>~kl 4k]gg22g4k5u2BBBgo4oBo24Bo2Ԗ~&д=33]jjj =[3333S]s]]25BklgIIϖނkoB22oul 4Ի//,2ol44q+++YqqqqqYYY$>>N>٭>>N<<>٭>>>4B44l444׫B(k4o2R[9z7~,,jRR2>u٭o2224ooo25loo44oll4~lll5522guB4uBBBBBBBgggo’oђBBB2gg4]][]~777]j]j]]j==ݗ=~~S]~~]5ϲ5AWσ4RRΈ5o4l]F,&]5l2oooB+qqY+Y+YN$NY$$$$$>>o>>>٭>>N<<<٭hӄe<\hP<<ӘӇه<\$o><<<<撤<>N<<ۄلۄۘ(ku luRohgoo[3SSl[RRo2ooےooB>Pghh2>Ѳg2SƶƟ&, `]]4>loo44oooo22o4l4 oo4lk[]4o4ll]ll4ײolo>4P2o4BBgPo><<<<<>>ۤNu>>>o4oo>ے>44og5ޖ]=[[R2gΈ4oo>o o4ۤۤPggSM7&jk52'2o4RoR4ײ4BBB4hg2k444o o44ooo4ْhoˆۄ><\\u٤g2B5Bg222R]9999S9S9ABBWIjW5WW5RΈ55oσ2~4~s=j7&PoooBB+qژYq$Y$$YY$YYq\ʘӇ<<ђ>ۄ>٭>N>>>u>NNhhh>ol~[kBoooooooo>o2ghhgg\RAz3Aj/,M==~~[4>Rogo4B4oo2o>o4 lk(l4lk4R5lg22gggo>oooPgogђoPh>B2<ˆײooo4R ~~~&R[ˆBB2gB572R]AA&΃WAA7WЃ22RRΈ5oRR~RRss2~jЃ5Wo5+qqYYYYYY$$$$ژY☙N☘YӇe$<<<Ә\ӤNN$¤P\h<<<ۄ<„„ou<<>BoN<>>٭لN$N$ul4Rlo4uo22]]kಈ2ooo>o>>og222g4zS=j&]=Ro>2oPg2ggg5׈o>ooo]k]]k]]2Rl54B>>44lײ2goBoo22BoBBBPgkB\2kokl4olgRR~k22g52222Έ22g\R~~]552Έ2gg2oΈRΈ4kϲRRR~jAԚ55l4kqYq+Y$YY$$<Yq♘YәNNʙ\$<<<>>$<‡hY><>o4u4>>BBg~3]j2ے4ےoo2oيےo42g29//==]sj&4o4(4g2‡kײl(kl44lk[2oR4ooo444(l>h25BooBْײo2okk44(l(4(l oR2~4ϲ44ol4B4ooukgےoBBg22~kgϴ&βgβRoΈo222ޖRRR~/jj ՕԚAσq+Yڙ$\<Y$$ۙY$$$<<<٭<o>يN>>P2ooo444ooBBuBΒ2]3]]ђ>44>٤ooooۊgghgh3%ؕ=sjjԏԲ 4kuouBђo4uײool4oo4(l522ooo4uol]dl u(u2gPPPlo44l424kuooud4Plu o> oooggo44k4gu 24kB4luB4ld~RԖ~R2o55RRΈk~oRj=/,֟]R5ޖϲ2q+Yq$$NYY$Y$$Y$Ӈ<<<<$<‡dI3lo><$ۇgg撇h$<>N>ۄ>>٭o>ۄuNN4>ۤ>g2oR4Bْ’eBу=]jooBBgog>4oo>4>>\>><\,s]=%/,,u>>4B22B244o>44llll54ogo44 R4ld(l4l4ooh\\oRoR2o442o( >ldhlu(loou444oo4(4ooukkRْo>ۤP2uu4 24([kllR~]~~AA5552ΈR4oΈ֯Mƻ9Wl]]A++☇e$Y$Y$$$$\\<<ӘNNN\$>>oo<<>ou>ou٤h櫫u>oo>ll4ٲ5ooR2gl~&~]5oBهo>u(4ے„>B>Bh l4R4l5222>ےooۤ>4l>N><>4uuuo>>4uBBBo>o4oےo> ll4oBBѲl > lllk]~~]S[klRR2oklޖSz3=/ƻ~К2ԎYqYqqYYqq+$N$N$<ۙ$$$<NN\Pْ2k׫kl >>44o$Ӥ<\>4 o٭٭uuN>>uNk披uo4o>oR>>٫uu4oB~4R]~~l2gш2و44oou422>Boghg>4u2ے>Ro4Rβl2Rl R444Ro4>ۤ>444 >>luhBoooh<2gBBB44og\24o4424l4PP4ޖ]]zzzyzƻ9~~~9]kS[]=MMMjP]ϲ5~l]YqqʙqʙY$$$$$YY<$N$P\gh\Po44RgPѲk(( o o>oهN$<<oooo24Bo224oN$4[S~2R4ooo>4u>R4522R5׈2o2oo>(d o>ےo oo4luuےh\Po’oBBBهBuۇ>oB٭<224o4RR44g44ooB5BoooRAS]]9ԖԂ3s[kl]jsa=sj2RR4l(l]qqqqqYko24u(l(]dddlh\uk5![duuo>N<<ۄ<ۄ<<<>>hhoْBBBkBoolu4444oۈooo4uBk55g2]952ggoooo>hookko\Y$$Ӥ~szS2loϴ5ג2ooo4ْo45޲ooRo<4koo4oےo((u>uBu>>4u>>o>>h椤ۄ>’>BB4B22ײ4o42hP4ogBo24o~]]42~gR~~]]]]~42o~]]j=s9Rl]d5l]YYYYqʙqʙ>Nي$Әۄۇ><<<4وok޲R2k]]]]o2255o 444oo2Bg~]=Fl5oB4hgo2o55[522k>oo2ou(4>2u4ugB2hNh4u>>BBBш225׈o u4o55okoo4l2ggg222g2~4Rl~ogR4]~~~R~]~S]gP24M˶jl޲55~~~YqY\Y$ʥqڙ懇$$ue<od>>o (II޲><g>>>ے2β]ϴ]]4Rool >oooo2goBBBo22bpSR225Wψ5k54455kkdk5goBBuoB5Boou‡g><ۤ$o22oo2ے4oْgu>>kko>542R][]lR4l444ogooo>5oےeшoR2PsF2g5WIkuoBB4u444o4oo4BBoBBBBuBoˆh‡gouuфk>h2BB<$h>ۄو‡2oBuo2olk׃2Rl5l555kಲk4l޴2oRoR4kl44oR42olRR,ݯn9AllllWW$$YY oBѤhPPN٭><>’>ouBoѲk >(ooo>44oo44>o4k4ggR2Rl]2k~~lk4l4ll o>oo2gPoBgg244RRg]Ƣs~g2B52oBog2gggo2>BB>o2oBBB’o¤‡$<¤h撤>2uoےoo>ooBoo4uoogے>oo>ۤPoےuBۤN4>>4 ~42oRR4Roolkl4lײ4lkloo4lR>lkkllll4444oo44lB2RljtJtt9]]4~Έ5]YY$$Ne \\$$qYʘژYYڙ\<$$<BBBh\\\$<<<ۄo>Buo\\<٤hgBu44ْ4dd(>oۤguBo>4ookoo>׫4o4koooooч<<ۄBuuooRo2RR22Rk542o4׈2oײoْ4o2o4k5uooޫkݗJa=Rk~2~$NN$$Y$$$YN$$$$\lh4[kkII5\\hфۭNo>>oه>hےْhhl5]R2gR]]~ggRolll(ll4Bo44BooBBg\\5ll~2g4]jAgψog4ohhh\B4g<o4²2hh2oooP2B4o>>lo44~~~k]]]54o5kl4޲ol4k5l44og25oBooj`ݬMs//ϴ]k7]N$ Y$N<$ۘY$hh$hhӘNN$YYӘ<4Bkg\<<uل’oogo 4o4kkuooo>4oR5]5RR22βklSS44og44(llulBB4ooooBooB2gk]loggRS9W&RRohg4l<\Bْ4oooogh\BogP愇uklo4goB452oB4o2oB׈ou44ײoP44ooooш2<(k(44oR~2R4]k55kd[kl444o4kk4o4444o22oBB׈R~na.``E,]&A((lUuk!(u<$Ә<$۫dѫ<ӤgѲl4o(4>4kk42R2oo2uNۄuلْ<>B撤4oٲ4β]]2oR44uu4و׈oBB2oѲkײBhP4~k4(]~R]I?zRR2o4224uhkduB椤Poوgoo„<$ol442oooooRoooo44oo44444444oooR4ooooooooggo5(llll~ll]l~~k]]k54Rloo2βR5RkBBu5[5~=a=/a`jjԂ]]A(u(uu!(uuu(uh$>4ko2Ph2’N<>oPhPo>ou4>uu>u5kB>>o22RRkl~ll]ޖllk4>444oBB5k4B4Ph\k[k~R3Ƃ4Rg]Ro~>o<<٫u>׈<وokB$\Ӈuul4>2444oooghoo4BBgg442kookϲg22oog4oo44I~~~]k~]]~24o4lkσokk5422k4sa/J?ԟj$<<<<懇沫5kIdddddudkwޫudkk((dwd4oBBBu4o [d(uook2Phok4NNN$<ۭN$hgےo4k(lho׫ϫ2>l42R4R~l[]l~]d2oo4o22B>go4kk4loۤo4o2B<<(k[]~g2RRβ5R4l52Pg5lΈ554BRlϖЖԂ]]ޚ~k]~[WRRl4lW222W~jaF7]ԯ3SssӤ$$NN<<٫kkkw[ϫuB4Buuهddkul(u(uo kII22ۤ[kllloےϚ4oldu>NN$$ӄe<>ђ<<<>o>’Booo>oo oulo4ou44>Bu4]o2244]]~RRlϚ42>¤oBP4oB44oo2R4l><>U$ӒoRS%FSjR][](]lۤh\>o4dku2>l٤\(4>>u>gۤho4B>PhP>( >ll o[54ou>NN$懭٭ے>uo>oooo>ooۤ l4>hollo>(l4><$N<$>l!]55l52βo222oRoR4llkRkRgo4~]]]]~Rl]]2~~&R&WW5o4~][=aaaJJ9A],js==j<\\Y\N椇2g‡<<$<¤\hŠB¤<>2BogP24ho4 ْ>>uI2~kll>N<<$歭eNNR]]ϲR2~]lR4(Ik‡oBђ2Bogo422g<>o>NNӤPRS9SSƻ3=~424Bh2oo>44uk ud(24 ><$No(lϲR4o444o2oRR2o222ރ224oPPo44g΃W]]~~~ϴ]]A7R&&&22k4jMMa,дs/qq+qYә<<$e$$<u>يNBђ<<ђ>¤\hk52RRd424Rl[kog4l4>>>ѫkӇӤuuB2g\ےےN$hBNh<<<<<2RAzFss=]]oggP\o 2o44544kkפϖohB2g~R5&B2gg>>o&2\llloR5WWWW5ϖAϲϴ]]k~]]RWAAP55o4~ll~3MM/,7jj{q000qq++Yqڇ<$Y\Yʇee\\h\\\ӤPBBBu<$懇g\hP2B4lk4o(5llkkoRk4o2 >k懇ӄ‡<ۤۄ><>><<\\go ?z,,san2Έkkkoo4B4o22o޲ol(4kk4\PRRABΈ44ulullײBg24o~l~RR2522Έ5554ಲlWϲR&5W&4lR2goSFs&Ђԕsj]jjq0+qYYY+YYYYYYژYYY\NBluu54 5(42o4ll~4o~[kR<ۤudN<oooo224BllllBh\g25552 4 l55ooo~l]o~&5W4lRRRRlRoR&5W5&ނ444ol3ݗs]]A9jjqqq00+YYYv_+Y+Yqeeeeu!uue懇guuB<\PфBBBB>oo]3̫$N<$ۤolughhBPo42((o2lkR>2oo44ooRoPPo4>h<ۄۘooo4dIwId\$<$$$<>hۤh\Ӥ椒ےNۤے oBB¤ooٲo4k4h2oRPRR4h’kk22ˆgPhhBg2oBk(>>PgRl]SSs,&45ނlRo2222g2oΈ4ooRW5B25ϲ5]22RRRΈ2oooٲllςϲ2&552Pg5~R4k55WWWϲβ5Wl]kϚ~j=ԟSjSs/=/eYᨓq+@@@00\q0Cv_ܓq+++$$NӇhӤ<<<4l>g4[I'<<$$NӤ<Ә\<>>>>>><<<<>oo>>BP22 og 4ogoo45dk2~R454oogoooBl522BBgou4<ou >BIIגӘY$N>ے>u >>N>>>u<\oג4o2\gIA~2Ϛ54>4oo22kBB5׃B552gggg24> >>o>oooo449==3R~l]Ro225552Bg2R~o2lBB4o4ll25AW55RRײಲ~2Aϲ&в72RRϖAഴRRk]~Rl]AԖ]S9,sE //,NYvv +__ܝ@ܓܨ v+YYʘ\\$‡Y\\hѤhh<$>>>>u3yI2\\\YY\uu>>uuluul > >> >>>o>чBۭ(o>o(4o >2 5[SS]~~~4gooko2o55o22g22244 l u><<uo5ku4ll 2h\\P ]δ97RlϲR4WA555554 R4IkooB4gP22=sAj]~l~~5RR2R2BB55RRl~&&ЂAAA4lk5ll4ooB4l5g55ಈRl~4~~W5&WW]WWW]~&WSAW9~]]]A]]=jՕE(ūK!Uqq++v qeeeeUK+ᓨ K@_Y+Yʙ$\Ӈ<<$u>> 4u(((u>>uuSk2odk4o22]3S]Ak5k42β52d>\4k(4BBB222 [ԴԚ]β2~ς5555lдψk5kkk~4R4555ײ5kಲ5lllRRRςWAσA~RβA5ς9]]& j>ے4u٭uʙU!Kv ''''+q)*KY++qYYӘeeeۤ<<<<<歒<ۭu(4[S[4>ϒoRR 4lko4{yz&RWk~74l~422R22R~3SjsSSR&R4lR4~5g255gдAAAk4~>o444l&ΈβW]koRRRΈ5ϴ5WIW~ϴ&R7~~R]]]]AՂ\\hYNNN+Yū$YY+vvYqYʥeK +ܨv@0@ڥ+++ʥYʘӘӇ‡NNh<$<(u>>Rޖl>l4o2o4lgP2SSς~RlR&,22RR2]RR~P2RRR4oP422l~R4Ro4lS]jSy?y]j&]]]lR2RR~22׈52&&]WSSRoΈoR47gR2k~l[WPβЃW&&βW~&]~W~~~j //go5uouu(u>$ū!$YY+0燥!*ʘYvܓ00_+$$Y<k\\$<>>>ۤ>l[lۤoo>ooPP2д~9S&z9j7]g]RRoے>(lٲPSSj2R~]lR5kRggR5BдSS]ool4o2Rllk5kk2oRllWkΒΈ]]7ԂAj]~RRA]]~4l],9AIz9II[!ld0K+eKeq v v_@+e$<<Ә<׫o\YY'+Yee˜hh<<NN<<>N<44l5ޤ>44lo4klog]AAAAS3SֻzzSzSASSS]5Ro2g> BBBB4RR~]z99j,,,&2~]]s~gPPgBBR,/[I޲o25BR~]55542kllR&в&~Ϗ]AA~jAAԚj]]k]ll~kςԚd]Izz[][[4>Y@0@00_YeeKeqvLvC_ܨ_Y\\h<<$uBh\kw\'' Y++ʥUB­Ѥ¤BN>>ۄuN>Nh2z35lllkdk2o]W]jֶ?/3SsSƶjR2222( >oB52gRR,ձSֻS~~]s=R2l2P2B55Εjs[I޲55&&R2oR5kkkRRR5W55ς]R~]]R&WԖԚRR]]]9W\goRh44ogPhgoRoo YYYY@@CCCvvvvv_'eKᨨ_vv_+ _ʇ懇<\h\>(>4lY++vvv_quчBoo>ۭuu>>>N< 2>hhullkko4o kklR2~k]]~7~&~77A9A9A7Ѓl>22244~~2~]j9SSjs]==s9W225ײ4~gAj][4B4Ro~R4RR5W55kRЃW]j]]]]]]A]A]R4]AAA>2gk[Nl(>Nq_轠__eY<ѭ歭lے >o٭ۙ4>Nudk >duvx\$Uu4ol>>٭愄٭$udפo44Rkogoْ>4oo4ll4o u(u444WWWI999WAW&R΃]WWR~~&]SSS?`E8E ذ&&PR4ײoo4R&9Sj5B44Rooo4]AAW77RRRR2]]~&&Ѓ&RR&&&7П93z]>懄$$$$$_Cf_CC+@@+0q0ᓓ_vC+@_YqY<׫kBh (d(N>uuvvCYqeeUuلuۤۄ<٭>٭$uddBΒ244g252l4ٲْ>4uooloRW7~9&&WA5вRR]ss/a-J EsЂAA~42ggSSΈR24(W&]7W~77&]RR~9j~~~дԕмs~4NNNduhӤڨ轌vvC___+_0+@eUu<o4B&&&2~]jjԂ]]&AAAЃRWR22gR227j/M/M=,ss,/ՏAWRRo2A/j,o2o5ಲR~7д]&ಲ5RϴW5ം2R]kR~77WAσ&AA/]~4RN$$$$$YYʙN$q+_____Lv_Cq+e*!e⎓ڙ+ʙ$$\Ӈے4!du$ٙ_CC____Yeu¤22oBB2B‡Bug<<‡h>4B~o2~5oooBoo444oP2βWA5A]22R5472RR2244olSEֻS99&j&,999A7&W~j~&WWW2]RARσ~Pj?ւkkBuuo$$$$Y++++_____CCfff0_ܓv_v  0KYYYY\$$N<$<ӤBB‡PBوBgg2RlAYvv LfCvvvqe\\<<o2o>ۤ>IޒhBgh<פhBB\\¤oBβBBײ>4445WAA5ЃςAWAϚk[ޖ[I5kB4ۤP2jS֯A9W& &WAAR2RBIA&д72WW7Кβ5ϲ222o799/Ag2BkdBBљNYYq+ܓv_vv ᎨqY qKe+NeNB¤PPgggg4B5g2>g~]!茌蠠ܝvYY$$\e„чBg¤PBBg¤o444o\lBk¤P¤oo>ˆ5Έo4BB׫BBo>>>oul΃7ϴ5Wς]5lW޲4kkkuo>ے4llЀA9&&`?ƵA5ЂA9WWWW7j9S99]AA22WR555R27Լsl5BBBB5BeN$$$Nʙq_C_ܠCLLL_++وgA~~wvvCv0祥q⥥0Yʙ懫чB5BgBB‡2o٭>$\wwuk4B2\h2oB252gB׈lRo o2~W77A~~7~lo4׈555B>oo44oo2&R5]ϖRog24BooBBgP<$<$N2ΈR4>45[R297&WSײoolRRA&22&2β57RσЕE?Ɵ/ 44kk<$$<$Ә$$@_CfffffGL莙eYYq00@__v_+qeeY\Bk5R~]l5BB5Wk׈/44uvfC__v0YʇшB22>يB><\ӤBB>oo4du4k4N$4k((k]]]l[kkB5kkkوR77 Ԃޫ0CffCCvC_ܓq$eUUuuBBo撒>4u\<$$\l![[[{[]~BB244o77UCf"6L66fv蠽_蓨_Y$o2‡N4(4uђ77[d(_ܽ6"66666666fffffvCC___+\\2222<„ۤ$hho4N<$hwIBӤ>ldN<>lo22PPBѤ’g2>R44R22~R5&΃&ЃR2ogee\hNN> NNe!K+++YYhhNBB&j(>vGGfCffffCCC+>>>ْhʇhhBBk[[l4~~4o4R222ˆu2222o2242B5g255AσRl54ےBBل<u l((>o4lײΈ5I&δ]k]j]9RRoPBђ22]4o44&Ԃ]AA9AW&&,s9j,99A&2oo442$$NY$ʘYᓓ+_v򌌌CvC_CfffCfv+$><\Y+ ''Yh44&{[ٓ 6"fàffffff66ff6fCf_YYʙʙN>ه$\hh\h2ohhϚ42oggђBkBBoo>σRRBBو2222555׈o557B545oےuNوBBBBo<$<<>udu‡<<$ӤӇ222>g>oo42gPgB4’oooo25Bˆ2o42gBBB5kBBBuNNNNKwk$uϖ9A,AS9z5&RA޲224&2oR4 27&7&W&Ѐ&7&&&ЃЃ&/9]&A]A>NN$<<懇<<‡eev_C_CfCff_v___vvvۄ\h24lײolu4uk4<''ʙ+Yuo4R5kuu_666ス载CvCffCfCCY懇2Bg2(SS Е A997R54l42&&777ЂςϴWAAWAWЂ,/7ЂAAխ>>UӄuهuهN$<<<<$+ᓓ_CvCv 0qYYᎨ_'$Ku\goRl4l2gRou>h$+qN׈R4kkwKCffCܽCC_ܽffC򌌠YYe2go$ӇNY$ۄeuъuهN<$\ >oBB4PI55IIwu<eeeq@@Yu>BBB22hP\PouBBIגh>ukdkh<‡ۇۤے’o<$'_+eKKUUuukSd[w>oA~l~24ϚlNӘ$Y'q+'>!((ޚ&~ԖwU___@___q@qʥq@CC_C$No4B22NNN$NY$$Yъu¤Ӈ\<<<<$<\22oײ45oRgRΤےguчBu2ggo4Bo$ʥKu4u(l Rϖ9yASSIWSIk~ԚSS3($$eY(ul]~~k( v___+eUKK!!e!K_fܽC@q+YӭoBuN<uBB2g27kkIIwd<<$BBوo>ooo242gRْwwww!(hh4ku\Y>>oo~~&R]3!U 蓎qeKw!d!!!!Ke_____fffCܓYq$>4<>uukkײ4oಲ22gooBBBB\BBuogzkBu$$q@0_CCff6ff"fY I]S??&24422βWW55&WWWಲ~js, S,~A,l4oٲogoBBooo ]]ԕSSj]llwzeY$'Y!ūB4lok5u愥0+ff__Y$Y<ْ>ђ’NNN$<椤gg[uou7ԟ932444o׃&&&σ5W577==/jԚ~Ђ]oo4k5424BBoo>gے>oRRRjyS]~~R4kl>\'\h>oR2g2>k>lu44llk o]Ђ/3jчh\YY\< ]]jA]9]SIIw\$\g4o2٫e0q6f""ffC_qq$>>g>o2>$<<4224BBoBuB2\Poo撤ے5olW5l52R2BѤP\&֟5u$Yᨓv66GGGm66G6""6GfܓWB~3S~2oo>ے5в~~ЂWo55ϲR]ԯ=,,j,/j&244l44oo2>UuooBkk2o~k٤h>u>ug\h\hY\$4oP4kWI9g /aJaݯj&ЃB$\\Y l~~3?~I5\$BP\P2&7ъBKKq_ff"ffff+YNN2uggRPgoo>oBBo2u>u[oR]22RRR2PhP\A/פ''Y++Cf66666GGGGGG66G"6666fqNBB4ഖ5og Ro44k4oRR22>o44B44dA[ISzFsRj44ײlkd(٤>h<>$\\\\Ph\2o>ll]]&j&MMnsn/j׈ۤ<4422o٭>g5go2gPg4o\\2uuuukg׈2gRR2olluR>2oW9S5uهӘYCCܽ66f66G"""G6GG6"66GG66"CvvqYkk׃zy׈R&~&в&4o29Sjsaj~ϴWo4lll~lkk2R²zzS޲WA~~~2gRϲ45Wk44okBBu٭<dS/j/,js=s=Ms],,&2A~3[]A999SA / ֻ֏BWP7 Mj&qC"fqq☘$<>>442B4oΒog׫hh2 B'Pu愇>&uu٭Buo$>u!(>5lk5kduu__ff6f66"""66"GL"6666fffCC$u],& ARR׈Έ&&7]W~ll55WA/j=sjjԖAA]W> ooo4~9SA933AR2R~~~~4]44R4~lk~2>o4oouBueYYUŖ3j]ys/ =j==joR]9j,//,/s%?IRsj/jd@_fC_訓YqYY<☙YYYqY+Cfff66f"66"f66ffffCC$AW7577ƵR44&&4kWЀkkl9Ajj=ssԖ]A]WWW> >>gozj~7RR4~Rkl~]44R2Έ22o2Roo>BuBuuUqڙe>d33==??`Sƶa=]22A9jj,&//Szj /~dYvffCܓ$hے2oRol22¤P!uuloghoۭu\ o44]3&~R7g4l5kRoRRo2R22g2o4o>歄<$_C_YӤ[S]RR&MƬ=s=]R7]&jlR]=EI&g$Y_Cv_+ژqYN>ْo2225Boo2B<\hlo4d4g5uѲuل$+u4>uBPgъBkku׫uYqܽ6LÌf6666f6G666f__ԏWϏ9Akϲuo>2 AAWAA2A7/sം~&7&o4I939]4RR4~42ggR44k4l44l2 RR22RlBoooo\Yq__ffCYoklRo~j[=/s7 aJa==/]9~2~=j=43?FF?yz9P><蓓@ړ+ou2o2oBooo2oђu<\\\R]okowuqBgBЂ5& AAЃ]dޫчhP AWW5Az֏AAAj]]7δjū5kI~~4jԂ~kol5l45l5l4ll222oRlo4oooBu<$\\Ә+_CCfܽܓY\$B2]=a ˗`ςR4~Rjjs~j?9W77=]WIIkuq⨓+Yܓ+Y$$ۈB¤oooB’‡B<’o~lRl]5l4Bd!uvvv_qBBP\gh\+Cff66"666G"""ÌffffG66Ì6fC__Y۲[W&&RޖW~~~Wlu׭>R44l42R[[RRo22RRg2RooR442ol544B4o>24¤ۄqCfCCCYʫw(g/Ma MM/RR~5222Rj&7&A9Sj,jWkk!N\$+qٲ(k[B2>22o4kB4oP>B¤<ۭ((UܽCCʘYeeU!eqCCffff"6G"fL6f6f6fCCG6"6f66"f_ 42222gggk5k2gPo55ײlo22o2gogogg2oooR4l52uog<$ӘYᨎ''\g\lS~/ saJSS]]ψo¤\g2WBg'y?==s,&&]ϲهYY+++YBoooBk2oo44o222>o4R2oR2o24ddB4ْ\hhч\$hP\P~4zƗֱJJ=M/7A5Bk5B2Έkk55o{Szz2R2ۙ$\<4Wς~kkklR42g4BB=j]~\''蠽0@qeY+_CCܽC_CCCCff6f6ff6ff66GG666fffxfC6ffC"fC_ekw~&gPgP\g25ޖޖ52odo2ghRԖ/9Ea /Aj,9/ ,,MogBoBBBoۤoوooo2ol~o4l4lulu44 oo4([oooooo444gooo4Bu4o¤\PIIk5ll7~RRRR&/sta7PP΃B>(]oh>uuh'>]39PghgoW77&~R&R5β,j=] Ro 4 o>>>ے>24uo2RR52oo4BB522Κ4WR4~Rl]&,,sJgggP<$l]4l2hh>oBBBפ\g22RR2R454u>>>o24\RR2l455kR]]SS]ݶEtEaA'<٭ol4k\$>I\ӄ<$NN>ƗyS9A]]]kAAW/՟s]]R&~΃Ѐ&&7sslٙY_ _qڙ\\CCffff6mG"""GGmmG"m""G66666ff6fCvܽf66򌌌Cv⊸wBI9WP\\[/,&,Ԗ]ޚ(~l]]Ԃ9``?JntEJJEM,/ /s APg$„‡Έш22P2oo44llϚkl44ooghB¤22gg2gu5>o>>uoooo22ghPooh\hkl44ooςA7jM?Ea s]AWuu442g2A2PPgh>Rz/ME?`~ֵ~, / j/s &2~jF]4uYYY>>ۤӘY__fCCff"""66GGmGG"6"6GGG666666m6"ffff6ffffff"ff_eS9 74RlRk~R4(]]AAػaլ``E,ռs //j9/&ւ9دNoooo4u4o4og2oRR4oggg24Bu$\h\>44oϲ~]santaata]2uuoh2ooϲA5gےoBuuoRݗaJЏj//,j/ /aa`ě% ]2koᎎYڥl>hN懥eᨨ_"f6666GGGG6f"6G66G66"6Ì6GG6fffff6ffCff6fff66fvqBWֵ[]A]S3]ԖAA9,/=ˬ= ձEEƻS9SW&撤ےۄۇg2B22ΈB44RooooR4R2R522oooB4o>>o>oo44B4oRو44luRoo2oouuB>\\hgoo2R5AWstt&&4ْh<ۈ4kkײA95k2g>47/J/aռ //j,js ƶ/J8ta F?ƟASo♄K!uk4يeeUYCCfffff6f66"6GGGGGf66򌌌6f6f"6ffCCfffffffffffff66fܠh4&S9AWzR5W,ԏ&&Հ&M˗j&js կ=9s/j&o>>٭o2ogB42222Ro2g24R2BBoo2B22o5B4uBB44uo>ukkuuo<4>Bohh222R422[j~/ns=Ϗ7o2]]~jS3Sk\P]~Jt-JM,EֱJJn ?`E?9ho5k4kkl4oS39ּWЃ&A9z]77&/,Mj/j&s  ,jj,,,,дoBg2>шoo2B4B4B׃Έ4l224l4oooBo4l>>45kuu4ogӤ>gN>424225RR4]4],,=M9o>2oR\2sj9k2=/Jnnn&& , ر3EصֱzEEJat tMsjSzy42~kog\hhh<<<>4oӤo>2>>>ےۤ$h<>ˆْogP44Roo>RRgR~~j, sSS~sM ]ARgg7JJnaJJa s77 , ,j/,ռؼ&S/ԯ&&tF`&&ԏ99zW9֟W2g¤ے歭o<$N2o4(4og2R4224(>444ookSj,/===S&ച/js==M,sS~R2R~j /M/ a-aJ8EJ ,//sjՏ ԏ,&777&jF?J77jAj/ЂA55Bч$Yᘘ++___CC_CCܽ_+++q_vfffCfCfffvC_C_KyS&A9j,/ؼ A7& ռjsjjR Ѐ&A&Bu’22ggooo2oBBoo&&&go44o44o2oglo>oh<愄N\NBل$hh<ۤoo24RRl54ooo4(k5IϴS3sRP~]sj2P,M`Fttt,jj&/Maa/t8lj-,aݗE7&s, & Ђ&R&&aMkϲoAA7&R2ooѤu<ѫYqq+_qY____ܓ_q_C_CfffffCff66fffCCܓC+Agjs ЂA؟/ j=j~AR&7ЂЏAA/79e3zIB2gogg4ogg224ol5looll44o45kloh4ے<ےNۄ>B4o2o2R((u4445ooW7R7j7&s?y9A/ݶ tݗnaJ,,9-Jattn-t#Z aEE,,&&Џ,?~R4k(kuWAg7~254\BBшŠ٭楄eK!ūeq+ܓ___CCffCfffff6C_CCC+Nhg2[?`t jռ9صssК]9AA,Y$Nk5uBu$<<$Ӥ>ooooBuo2o4444lu42o>Poےooooۄ<歊B4ooRRR2Rಲ4~4ЂR~jjSSSS3//aa?rttttnaa,,լ8ttnt####-Հ Jֻ9 &7&557]s%?]54Ro>uuk(lംЂAA&75~5β25BBBuKuےoue0@qᓓ_Cܽvfv载CCf_ܽff\$u[[dF?,jFEص M//]A jj,j99/Y$$$\h4׫׫B¤Ng244>go>o44BBBBB2>oْh>24وoooo4o2oR2244R&ς]3z,&SSS7/aaannt8aJaJE%r..tnn----#ZrtnJ Mֵ Џ7?El4o>kkk&&jj3lЃWA9Ak5Bo>(uB44NU$+YYqYYYYYY______ܽffffCCܽC_v訨q(!`EE/`?ݬJ j]AAA ,,//&/ԏjԟjԱ+ʘʇ$BBuwuч<oo>Ng>4o>>o׈oBBggo4uuBo244oou4442ooo44o>o4555RRRRRl]]д]][AsSS9ƻ7MaJ-aJJJ-r#F`.n8#####Za& ֵ֯&ARϚWW555~jRo~5k(u(l4l޴ASSSj]Ђ9AAAWW95Rg25I9A2k>uUNN$YqeUU$\'___CCCܽf_ܓ+hlz֟=AF`#ts,,/ ,,jj,///,/Y><>>>>>>>>ggۤB2B’>oo4lk>oo>oooolk4444و4o4444ll~AWW]k]]s3֕&7 sMJJ--aJ--#..#r-#Z##8`Eռ ~σB5ݮjRkR2o>oWA]AsjjjA,,RRg&&99Ԛ(u!uu>ud!Y\kk55B<\__fC@@qᓎYk9zS ,MXFtaA///// j/=s/,sjjj,qʘ\Y\hh\h<<¤\PPPˆ24>ouu>>>oo2oR442oRkR~~]AA&&]]~ԏ,Ԃ~jjƵ-MհEEE8J|. .8##8-8Ǯˮ?ݵ ,,jjjԟ7W~BB2a8a&7R2]j=s9&7&AA&77&]lluu(5kkl5[zI4B95N++fC'+x0@00Yh7S997&M JrtnEAصs/js/, s]/q++YYڙ$N$Y\<<$$$No\hѤPoш444442g2o42R~R22&RRR~45kRl~l5ےo442~5~Έ]]l&]``ttat.n||.##Z----#8EEE&sss=7B\4ols8=&ldkk5BR~]]93AWS999Ajԟ/WA ,,,=J7&-&=&& ``]R<YYYd$YӤ\\ewSS=]Jtr-Հj,,/Ѐ&,j=/AIAWWk5wkIqq++Y++qq+++qYqq++$ʙKe$$$\\hh<’22o445444RR~]~2~~~4~~44Έ5W5R2oBBBׂW&&RײoR4/aJntan8#r..r8-J-ˮEEݻƶ,δMjg4Bl4//,-rn/]Ako oR7R7~~~l2WAAԂj/jj&] AMan8---ɬJa & Eݬ=]dIuu><<<\Y\$e$N!gPoYWkljs``.-/jݕsjԖAW‡<<<\Bϫdw[oh2kl4 >ۤ24~jݮ#-- ԕռ/j/sjjP\\YYYq$YYqYYqY$$Y\YY$hʤeh\$<<<<\\hBk5u2oBBBuwkl޲lkkl4444lk~R~4R4~RRR~]k5ggβW542gԼ&,ƻ/Etn /M=sSMM]jAAWgk5~l, 8r`=&]]&2]~S&ԂA]Ђt`t#8###JE & ---EEEF`/RPgRj4~&AzSI7ISW][l\PPPP,# AA,,صՕ=\Ә\$$$YYYYY$$\$YʙN$☇$Ә\Y>o4Bou4o4ޫײoo224o4~lo22ooll~4R444&WAA7RlR4555W7&A& `39&~~RRS Ѐ&j/j&R`E7]jssAЃAAЏЃA9AW98.##8---8#EtaJJaE 8Z##8rrrEE77 M ,/s/&ЀJtɵԂA 7 /E؟&Ph\<$e٭>>N\<$h\$Ә<懤<٫޲B4k555lo24(]~ll~]AAAAR5522ϲ52WAWWA&]j9W]l~24zjjԂjRΒPRR` &,,WAAWW9A WAAAWWWWW77,E# ..#8##-Ja MMؼ & -#Z#Z###ZZZOZZ##Z &77& ?=MM#8 9 EAWW5\чu<懇<<<\\\oBuه\h\\<$$NN<<ъ2BBшP22o2o>44oR4l2o44R ~Rog2255]j]Ђ\ghBuoo~ko>hP\P]SSA~&ԴЏ9j~& FEnJM ԕЀAAA&WЃЃ&&& aݗ.|.#8#8--a / հEE -Z###ZZZZZ#ZZZOOZOZ#&##ǀE-Zr ɵɵA88J-a--#EيB<ч<<<<<<<‡ۤ<>ф<<<<\$Nو&9W2R45R55lkRS&PPhӇk555BhR9z9SAj,]j?9A2&,ռ9`t ,s/ԕ9AWAIWWAЃ&յ`r##ZZZZ#- aEEǮE --ZZZZ#ZZZZZOOOZZZZZZZ#--8- .-88Ȯˡ8]A8EE-----8Z EE‡<<‡‡>ۇo‡NۇouB<<ۤ<<<懇h<„<dۤPP9A]ԱjЀ `..```ՕM ռ, j,, д&7& t.##ZZZ#88EصJ8#---`-JJ-#ZZ##ZZZZZOOOZZ##ZZ-----#Ğ#E8- ؼЀ E##-8  7\he<<>‡NoшBB2ےRWlkl5224222279Sz`W\<ْ><>>ےoo<椤„hNgۤ‡2Po5ђh< 4llk3Il4S2R54W&77Aƻ/3z$&Pg5k2oR2S7&W&,& S,,AA taanaJaE?Msss/jW &AjՕ 8#8Z#Z---ZZ8-=JJJ#Z||O|Z|t8n=J.8Ǟ8-- =Mss հJaJ8---?`j<<>>u撒BBBuBѤ4ψhg45I5BBˆo2¤PhP¤h\g¤g¤22N>o 2ރ55W&&&9 &>ʄу7&2252PhP&5 jjj&Џj֟]]]AյEtnt saat`FEEE/M j/],jjj/sMJ#-8##Z &--8-Js/հJJ-8#8-88#8###j&jtǞ888a /ԟ ЀЃWAЀ M/M-Jt-J/?yzguu<<$ 4o>2o42oBBB2’PPk[5kk54555B5BŠh''gBRggPlkA7& &7&β4Ә$$פP7~P\޲&j9ԏsj,ՀՀ9Ʊ/]l/J/MtF?=,MaEJE?8aJaaJ&j/s ,j,/s/ ˮEZ#-#8 &ּJ8-aEյJE8EttaaanaM -t& ?8. -J/՟ &ЏAAA , հJaJa8-]]<<<٭>N<Ӈhh<24o2o4o>oooo><$h<ooooo22IIςς7Ro52PP22BBB¤g<‡h$<ےgے24o[[5442Ph4oogˆ22’g2NNN>>>uu<Ӥ5Ϛ3SAj&&SMֻ<<\h2R][[lϖ57R]AؕS9/,/Mj/յ &sEJ/J8nJ-#``8Et.rM=Ԃ],s/M,/M/յJJJ-a-8#-8##8-E-J 쉮.nEEE &aaؼП -8EEJM,ss ԏЀ, ؼ , oPPhg>o>>oooBukσ4l5R4l4oo42hg>B¤ۇۤg<<\2ooۤ<\<<2Bo2o>u4o4oR&ԟ&Ԃ]]ԟ&WA9//,,/k>N$\hkPRRk2RW&Ϛ72&Ə֟j,jsss/յAAI7,/MM J-anJJ-8rJM/]]A]]j a---#-######8- հJJ----E-aE&--8Mɼ, E8EMj,Տ]Ѐ&WW Հ WA99A9ghhhoBk54444o4oRlllljԕԂAAA9ЏWԏ,`E/R44g2gP2522AR& j`,nJ=MհaEEEؕsAAA,ݗJJaJaaJ-J8.tJ ,/R]AlWޟ Et8-8#8##Z#8#--E? JJ8-- &&-# հݰ-#- -Eݬ,AصEEEƻ?3SzS2¤P2uBBPPoo44oB2>>22oo24lRo45>٭$>hшB¤g22ooPhgPP25WWI5k(R4lԯ9ss,&&S99jjAsS`%`?s~44>2R25P&RRj7S&&/=MMMa/99A,j=&/EE JJJJ-8?J յЂA&5WW5Ϗ-a88---##8#88-8#-JJJJJJJ-J -JEZZ#--- 7----sAAA رػjԏ]2ш’u5BBuBoooh2oB4oo444444u44ΈRRoR4o4uuNhYNB٭<’oooo2BB4P2445WޖA9A]]]Ԗ]j]/s,&77&&7&/9 j/sa`RRo2R&&j/P/&=ƶnJ=Ma/Maa 9j]=, M??/J88J8-J/ЃWAW EEaJ88888#Z##Z##8JJռ  a-8 -ZZZ#888---&#ǮZZ-/AσWAA7&&7& / & д2]2шB5kBo5k5B5o2og2gR44lײ44ooooo444o24o42Ro2oBe$$Ә<ŠuhPBo2BBB[޴]]ޚS[j~]Ԗsjs,,j///&Е9Aԏj/Fjд&7WW57&/A&/]==Ms /JJԂ//՟,/E JEnݡ &&&&&& &7ՀJE-8E###888#88-8JJƼEհȞt8#XZ-88-հ-8##-Z#---88ZԏޏWЂ &777& &7&/]l]j~5ΈoBgײo4w44gollo4ogg2R5lPu\$B$$\YoB2\\oےBBςWAWAj&7~jj/ԯj/s W&&,jAԂj/&/aWW&9/ƻ%?S s`t`,MJ8FjԂ/jjjjj]//j,,/AEEJJJtrr- ɀ 7& /E8--888--888- ՟EصEEZZ#nlj##ZZ8- J#-ZO8#---~7&&&7&&&ռؼ7&]l2~g>55k5Bޚ5R4o42244B55׃B45k5oh$\h٭NYY$<$ےooggoo2B2R]sj9jj=&Ѓ&AAAдjM/3zػ95&SESj,/ ݶF?M-JMԏՏ ss]]jЀ,յؼ Ѐ Jrr &&  && EE8888-8---8?EJ, Օ&  J8E#lj|ĺ#-JJJJ-E#OĮ-8###E-Ƽ RgAAsՀ WARo25~RlRgg22o4׃444~~R44o\go<goײkϚԚj]/]AW5&&&ЂAW~,j/Ա9zz99S7&s /Ƶ7,,/9j,,?rtJaa/,sjjjjص/&&7=/ %rEȮ-##a?Z#--##8E-J ,  7&-ǮZZ#..|OZt8tE##O#E.8--?&g~9Օؼ &WW&k2Ry5RWl5l]R2~RR2g5lo24222oRoN>NN$YYYu4444B>o>oo44o>>Bk55555kϖW~]]&&jWW&22lϲRײjԂ9SAԂ9ss &sرjj/sM`ˮEn-8a,/ԕs]jA,/,&&ar?E?r#88-88r88#OZ#8-J /,,J-8#Z.|O|r.ݗ--ZOt J ?zRПS=M/&&7R]Զ25&RW~~lಲ[555lRRR44Ѥ愇$$Y\<۫d5oo2244o4ooΈײBBW9R~~&~&RR25A555224ಲkB&777jaaJ/&ݱMj,j,&,, //հEFFtJJJ js]]]Ԛ59SAj]=s=/MEEJ`EE###ZEaJ- ##Z#Z##8J յ// 888#Zrȉ#ZE &#ZZZ8հ& &99Pg7&ؼJJJ 7&22~]3Ԗz3R~Ϗ9A~lR45oR555k<Ӈeʇe<ggg2g222g2SAAނ~~~~2]555kWlll22oo4oooB55kBWЃ&js=?``Հ//jj//s/7777&,/SJJJtE8/-a ,/jjj]sЀ&~3ƻMհJJ]l&s=J8E#O----- ---##88- ɵ jػM #8-888rEt8-J 77 8#ZZ#EMյ&,Sj/t/a8W9W&&&&25jsz~~~Џ9A]~~lR22RooRR5ಲRR2o55RѤe$YehoR]Rluuo22oooo222o2og2hg9A]R75kk5k׈BB222Ro>o>o><<22o[IA[[d(ueeq$\N$NN<$ә<$N<$$$$Y\Y$eeيu5W&&93`8Ǯ#aaՀ,/ԏj]/E88#.  ϖAσ&]] 57ZO8#888---a-J8  -`tn--8#-na&MasMˡ& ɮJ .,A&AA JA &WAWI5o9o~(l]9Sss&jj=,AWWϲoR2R~l~~l55B\<<YedBkdIIIWAA/,j ]WB\\YYYYY!eeeeъePPs%`Ѐ-/SS7& Ert88E&7& &WAAW5kkul4459IW9,/J=/taM8ZE8--##8#8Ǯ-#-#J   & -ɀ7A/Js/,հa Џ99ص///,&//,<\\\\Ưj]4gh>~Wԕj,7&,]j]SSA44oײ2o<$<\hB(BoϴR2R~~R222P‡<4>gBwSIss],,,- -##ZEɰ-8--88 ɮ-8  #- 9 հJtMM7AA///,,,j,j,Ph$Y?9Sz4~lo ~/j]j]=so352Bog>ۇh\4k5]k4Βg<‡BB‡$Y\IWR&7/&&R5BBkkuhhoو5W]΃¤‡>>kײBoԖ]WNۤ<<<ۇ<‡¤hh<<<\$椭>$N>>$luR2]]jj~]Ro2olRكkkЃBY_CYqqY<4l`r?JE=]9Ʊ &-Z-EE&9ւR]A[2>\\Y+<\hPB7&7  &8#88#OOOZ#88####--888Z-8nJ--#-#####O-###ZZZZOOĉ.ttEEּ777&& MJE?E2BBYSRR~I,j&==j47W~o> 4ْ4lײ4&WWA&ςB>ghh ((42gA]~77l4o4lloۤ>k޼Auo47%ȮE- 8#8-8OOOOOOOĉ--8-#ĺO.||Z#-8Z##8##Z88Zɀ-####ZZZZZ8MصЀ7EEJɀ &gh\<~l~]W&]jjƶ&ֻƶ~=R&5WA7W~4~4ooRR]W&&939AWo>4>g>BoBuB٤PB5ײB5k42&&j/Po42o4~ol44BЀ5Be+@@CC____$BRa-JJM/&/JJa -8#쉉#E--/,=/7PP$(=?E8.rȾȡġZOOZ#8#ZOOOZO#ZZ#O.|Z#88##-#8-8#-#-----8##ZZZ-8--ɼּ&& &-J---89gg]]l~]ԖAA59Sj]=z/RЈ4RWW7~&ԂAW4o(42>444luu44&7&k޲&5~֯s22~loR22R222&ЏЂ5u_CCf__00ehhAjEE88-Ja  &777 .ɰ.#.#---JMJJ &ASƯjj݉ZZZZOOOZ#-ljO##OOOOZ###ZOOOOOOZOOX|||ZOOZ88#Z#--8#-#8-888#888##Z#Z-8-JخE &8 R4~4llRg7&ԱjR,9W&7&s`]7&R]A&7&]44l4o>o44l4l44Boo42RR&&7&σ7&7&&]]/&&7777ԏ/&д5d$_f__CڥWlR]#888E` - 7Jsn-J-t###ZZ8-aJJJJEEE#ZZZZZZ###Z|#tn88XĪZOOZOOOOOXOͧ|OZ|OOOOO##Z#88--###ZZZZ###8####- -ɼE &ϖkd]]~&77RR7&A,&77A]]S3&΃RkBuooo2o4o2>>4RRR2&7&&WW7&7jjjM؁pȆEE??,&777&&&744l_C___Y[],/JE88## &&Ja.8n-88a8##lj#8## M ---˵&&& -ZOZ#ZOOZ##ZZZ#.Z||OOOOOͪͧͪX||O͉Z.|ZZ8#ZOZ-###8#8#######ZZZZZ####J---#-- --#رR~5&A&&9&=?FՏ /,7Ԃ]]ޖ]ll3Ԛ]4I9~σ222g25o4oRR~2~W7W&7&& լJ/aaQ1O徾1.FXF 77~]l5‡+Cq@eUBu4R]E#--8JՀռJݮtt#.##||-tMՀ& a--EݮE -#####Z#ZZZZZ||Z||ZZ产ͧͧͪͧ1X ccͧX11ccXOOZZ#ZZOOZOZZZ###Oͺ#ZZ#..t|8#Z#88ZZ#-ZZ8 Jn#8EJAA557WWWWA9AF?Հ&j]d44lRoR]l]lk޲R5A2R2224g2ϲ4kk&W7&&Ѐ& .tJ|.nJ-##OOZ|;톪???֏j==~]BB\C+qʘBk(2SS&--8--#ta?a`EJa8Z.#8#.tt8-MJJEJJJ-.8----#ZZ#ZZ|OXOOO||OOOOOOOͪX}cc}cQc1cQ|OQccc}OͪOͪOOOZZOZZZOͺZXX|.#||######ZZZZZ--8#8--t8-8a555дAЀR/%?J/lϲ](&~Ro~l]lR222k5Έ5ϴ229&7jMM`at8ơ-Jan.r8Ja8.......ˬa?`rFF=s]ވYY+_qʇ<\hBBa-#8tEEratˮ-8#tnt###Eˬ-8-հJJ8EE##888###ZZZ|ZZͪZ|Oͪͪccc}cccccc.cQcccQ}}ccOͪOOOOͧOOXXXXXOXZ||Z|8#OZ#Z8####---85]5~ޖA7ϴ]=F jϏ&kW]RoR2~~5k5WϲW75&/JantaMĆ߆ȕ//JaaJJJa.`.r|͡r- Jt`?p 1~j>$__+‡$gPA/JEǮ`?E & -EtJ---J-t--8#####E-հEJ-հJ##888#ZZ##ZOOOOOZOccccccQQcccccQQQc媧}}}cc}}}ͺ|ħX.OħOͪcccccccc}|ZO#|Z##88-8----#Z--EWWς5ARR,AAAԏ/&jFJ /?M7]ԕWAWA]]R~~&WWWW7& //&n=` t .pF`Ja=`F?F`tntȡtJ.7n`ݱp円Q[~R~R>$+q+Y\\hΈR]ֱMJ-`?ݰ7JJ`----8888t88`Eյ/ -8888-8#Z|||ZXOOcOcc}cc1cX1͛}1ͣXFXěr|X..XXc}cTcOX.|OZ#ZO##-8###-Z#8#-WϴAA]]]]]],A&Ajss?&&7AW~~]A&]j/ /,,=a=X1rMj7&&&sMsaa/&t`a݉O;ߑ}. =~N\Y'hg~S/a-JJ-%rE E88 -8--#-Z#8#Z`/, -J-8--8OX人O|OcccccO.|XX1attt `.XF.`.`X%.tsJJntt.FE.X}}ͧ.#OZZZZZOZ888#--8555ς]kςԂs=j]A]=`aE֟/,/&&Ѐ&Ђ]j3jjԚjAAj,&& MJaa nFȬ/aȾ.  .s=2&7ЂAA]~lsjsݗJ77ЀJn bp1N<ʤhhPg7P2jEJ JEJ - -88|ȉ#Z#E-J/-Jat-88-88|XOOͧOccO|Z#Z.a,&& ==s7/Ѓ77&/n.XX1.OOOOOOOO#-Z.#잏]ԖSς]jss=]jAԂjj]~js?J/,,j&7,jsjjjj]ԂԂЏ/sMsj,?aհanaF1Fb`.tt.˯/jsAAAA]RRR],/..8ɀ&77s QTH?FyPN>ug22WWWςj/sJJJ --7- -8-#Z####8#ȞjՀ  --8tt#Z|Z|||OͧOOcOOZ-MJJ,&77g27P77MˡFtt#OOOO.#|8R&]]]]ς]дj/jsj]jԖϚ]==]&/MF%r`a,M`jMj77,/&/sj&/jjjsjjsR[=`aMnˮ--`X?a,&7j]]APg2RlRޚ2PP\ASSnntǮ-&7&&&1F%,\4llR&&/&/JEtJ 77&&nE--88-88###Z#EFEj԰ M յ & -lj#|ĪXͧccccc8Oͧ|#a- J?E&&/WI9IWAl5]R2oo2ggB2gWBP2бa//rġO#O#8ĺJ##R]]j]]Ԛ]/ss]j]]]ം]j]jMaaraa`FM/,j]/Ms=/jj&/&/=/б,Зts=J`t.Xt..tss &R~j57gh\\2h4!( o>ookl kPPg5\PggPgίF1tn`nJ..=]][]~W55дд5A]]]]Aj~,s ?հݱaJaFEJ/=ݰ F 1tM=Mj/j,,/=&s=~~&ЂWWWϴ&]dku<$Ye$YӄB[s=E\PR4\R9]s/=?`M `|Ȱ. .r|aJt#|||.8####-8-8#--88E888-Jn հJnnnľZͧ}1ͧX|ccOͪ|ͧ|Oͧ}Xݗs7775!N$Y\<<\<2>>>]>< <3(4g\gg3]ݗMaySR&]]ϴl]~[j]]AԚԴ]3==?aMM & J// Ja ```ݗEtM7Fasj/,j],Aԕ]RooR~AAR]ԯAϚk4$YYYYq+Y]jj=lo>kzySj /arˣrO.ttt#r.8--8#t#.#a8tnJtrJt8nE-8E--a-aJJJJ-tnt.`|ljOOXXX1.XX.O|X|XZOOXX..tA\hN\Yh<<$!(N lolo\\ӇΤ\h4׈gz``F?%SR545Ѓ]]kl~l~~kl]k]k]lWAA/FJ/ Ma=J,MMa```a,F.M&R&WSW]]~4l[AA&j]d<+0YӒ4ll[]~ ><'o{&7&?8Z#nZX|.ntlj..rljt#n-##..#-8EE8JaJJ-n...|O.##ǺOXOXXͧXX..Xc|.OO#Z|.&&&77BB2N\Y<ۇ>ӭۭee$$hh'\ӇBUD1 ::: [l{3k$\<<‡\hk5W?2]ү3z5&&5k~4R4]~l~]IޖϲϖWWA]j]~~7/nEFJr`,//,=a=E?J`?F/=jj]A9W33{[]s9AAAAAAAAԂ&4$q@@Y\<(]AϚ(>2>o<A, & JJ 8.||#tt#.|#lj||Z|O-..88tJaatttna8.8n8t|Ǻͧ|X}}c}}争X|X|ar%ݗ77&A2kdN$$> >P<ń\ddHp`S&'YY'Ӈ<\>^: Q^::囗[dgB\h>>>ghϤ\ou~l]]]]93A]Ssj]Ԃ&W5o2RRll~~~l~l]]ԚAԟaaA]~2Rl~/?˶%FM,/  7&AW(]42YYq@_+qY+Y<صA/j/Ms==jsjAֻرa#8JJ-n8..|..#lj##X|.Z|||.#|..|t.|tlj|O퉺Oͧ|X.䪪X}|ͧO|ZOr.?=,&77&ЏA\4BBuh\\PRA9W5Bh\\Y\ohg}QQ?YY\\u H b H}^QİjWw44 >4[]ҋ ;QQ`~~k懇hhuu$l]k~l&RRԯsj&ϚAA~R~k4llklk]]ll~~~&R~&ԕ]~&&&7,s,/ƶ/jj,,,j/s,&4\\\hӘq++ᓓYʘ<\33=]=j,/E``aa.F.#|.na.X.....|#tn.tt|X争|X|t#|O|OͧͧcO##ZJsR22ײ<Tz }.a3>\\hӒll llo= cHXHP\\o242o<\Ѳ5IgW!<‡uu٫e$h\\oޫdwkl[zcQQ}b=~2R \4hl]u<ْBūۇ¤<N٭Ӈ>>lk{=sjs=jjJ?`aaJJJخEEttt.-Jljljt.|..ljOXXOX||XXXXO䧧O1ͪX||ZOXa2B5Bhl(lN<<<<>>NBuѤkh<Ӥ2ll~`c}c} } ;cQc1};cccQ^^ Q^^^;}QQ;.F]gR3z2hgg‡«]]]]=,//3=s====3s{3S]s=ssԚ]]]]]=33333{j4SS9W][~~R~lBΈ4B2&~&&&,]jjRRRRogoooӤUe0ʘYYhk̗F1FFF˶``%F`ݶݗ-t-aJnE`ݬaJa-հJJJatnt.#n-lj..tnat.|X1X..X||O|OOOXXXXOX#XOO8oggl4goPu\\BBBBh<22222pQTc1 QcX} cQ}; c} Q^c;cc}ccc ?~g~IgB\22[[=?%Fݗݬƻƶ=SSj&2]]]]]]j[s9SSS33SSS4RR~R22R~Βg4oB2jj/Ms &&]~R2ouBuBBe++Y$(h$\5ψ5PӤe2Roo o1c}1 1c QQXͧXX1H};c H }Q .~==PIIzW5l][]j3SM/aݗ`ݗ/3sj=jj~jj]]]]R~j~]39~]looRoB5ײ4BB׃ƻ``Ja]j444uuUUUчYᓓY$وSt.ttt t8nttnnantnJJa/JJa8t....tn-tt-a8n.nanlj.X||ħ|X|||X|Xͧ|OXO|ljOOXXXXͧ8#OZ|`]ΚS,]&5kl lBBBoo5Aψ\PBhgu(l(dBR&j1. QQ.X.n}}};;}t }}s,s&R\AIW9BP]~l]={ƻz=jjjjs,j=asa/j]]j=s===/]=SS=]~R2~]~]~~дA3[[kR5kR3%r=[](( ӘY+Y+q+qq+q<<>ӄђPg][ c-& 4j} 1 t/T%\2]]]],jԟ==jj,ԕss]],jjRAj/szsss,Ԃ7l4[y3~R4~~lkσ&&ԱntnadNYYN goR]jsaFr??Ft`%.tntn tn# --t-8..|..|||XXX1...11. XX.|..ͧOX.O.Xta.XX.XͧͪX.cX.}XOc j.XQXpM&9ABI55B(k4懇\\g5hN % ^^O bF2!$>]]]]]j]jj]sjjjssjjjjдWA///j/j]js=szƶs]]j99Aд~~d]2gR]33jlRR&ja..ˉt-a]ll[]l~ykl42lޚkl(]jR&s,հJaat-JJaatJJJ-88tn#..||||||||||X1XXXX|XX}|XX|..|..||..XXX|XXX.媺X|X͉|Occߪs=M//,Е&7PR44ooBBu׊Ә'h>RȾȶ`E pbl2B<=?Q} 2hB]jj]]]js/,ssssssjjjԖs]A]jjjjj//sj]]3/pbp?3l4oRoo2g2j]]33SjRj,snt݉Z#8JJ3 `jJ %y34R{{zƶ?Ɨ9E?ݬJ &7& JaJaJJJ-n#|r|.||||||XX|ͪX. XX|XͪXXXͧ|X|XͧXaXX|X|Xc1cc }F,&]7&&&,7,j2oBuB¤\~1}]PPg2h~]5As=sjjs/sԕs/]jjA9A]j,sԖj&~js]Fݯ]~3zzSS333[=sݬ/ant######`˗nnt.`.`zsjs=E?F??tJ-JEEEaJJ?`8ݬEE-.#lj|||.X.X䧪XXͪͧ䧪X䧺XXXO|ͧ|..XXXXͧX8}cM== ?ݬ=]P,a/Mԏ¤ge2g]7g={\\>>hB5Pgs[\g]AA]ԕj,j,],jjsjjjsjjj]]]j]AAA~]]~]A]~~]3=[j=s]~]l]]o3=l4~{3[=sJ8-8-݉....#-88---#.tnnaJEntEJJ--8---Jn8EtMMaatE.t-8J--J----t|쉉|||..XXXXͧX}XXXXXXX|..X|.Xc||X.|XXO|Xc.ljXͧ.ccX.ccX|Xttț 7΃2NBB2o\g]lB7]kPgR4oPSI22]~][zY<ъg4jA]&]&s]S=sj]sjj,j,~]AWA5~~=j&PPhPPgo>h]![zD(dl (d[kyJ t8t-8#t-#--aJaant--ttntaJaa-annaJ-.ntaaaa,anaan--n----8EEEE-88#||||XXXͪ}XXͪXͪ䧉.OX...XXX|OX...|.OXQQtO|XcQQ} .X|cX}톛#-j,,( \ג>k4~g2R΃AWo9Wh4][ψ5ϲR4lh(5kB\$\$u]~],Sԕjsjj/jjjs]~&~~~~]ς5lk޲R~~]3y~P''YӭUN\$\$$ kz33?.tnnn8t..-n8-JJa-Ett-an.nMM-8Ǘaa.a8ns/MjaaaJ n#-J JJ -8-JJ8...䧪ͧ䧪cXX|XX||䧪.|X.t|ͧͪXXXXXX}|Oc}X.X}OOͪcXccccQcX ||OOOǰ ==s][(l]{dgRoo4lg΃&Rgo]lkP2]4W4l]]jjjs` `Ea.a/MJJaaJn/aaan.taMMMa t.XO#tnJtaJ JJJJn.#|...䧧ͧXXX|XXX͉.XX8X..|XXͧX|X8ct.ͧ|..OOXcͪcX}cQQ䧉|X#ZZ-݉a>l4]]ogh4ggo27&7,/99/==2&lRR7ʙ]~]]jjjԯSԖj]j/,j,jjj]]]R&ϴll~4R2RB55Wϲ~4RRRjSzS3~uuBY\YYYqY$YY$<<4=FpF?ݗݗEE/,,,//a/nFXM=nү Fģ .|OO..88trˉ#lj||||XXXXO||XXͪ䧉|Xͧ|t..|XXXXX|XXXc}OXXXOO-t|ͺQQcXX|ͪX.产#ZOt/an[]gR]44(4&sMR,,/,jRΒP57N<~~jjsjs9jԖԖjjsj]~25loRl55555j3z~!u<ӘdYNNNYYYӘ\\holSzzzSIAI&j=s~]l][{3ƗsjJMt##Z.r.#.r.݉.#.OX|||XOO||OX|XOX....X䧧XXXX}}Xͧͧ||}c}ͧ#Zͪ|t-OO|#OZOZ#OcX톆 TTȾXX`rrr attpFs2P77<\]]sjjjj/]jjjj]j]jjjԃ]]]55ll]k~R4]]klll555lRR4l~~44~~~R2jSzS&]=s3yIB’NYY+YY$ژYN<<$Ӓ4k[I2243z39Wggo>2o(d%=JaJ-##-8ZX|X|..||X||||#|r|||XO䉉Z||.-J8#|.OcXXXXXXOXcc}䪪ͧ|.Xͪ|ZZZ##Z|XOͪ|XZZ#--ZccQ|.c|.8JǞO}1 Eݶ=lЂWԂ]=]s]sj]jjjjs/j~ԖԂ]]&~Ԃ]~5225k]R2~l~~R~~kklR4l444l~~2ЕEE?``FFS[k\q$Y+Y$ʘ\\\<ْS4ۭNƻ--8..at|.....t#t--8O#|人||||OXX|t#||X}.cXXXXXcc.}cc}X|cXXOOOOZZ##Z##ZO|O캺8-ɾOZOZZ#ͺZ.n,a|JJX1X.t#XZO훪..t. 1XľFțăς]js=sjjj=sssj,/s===jj=j]ലWWo44o4kRRRR~l ll4R~~4~l4k54RR4~lR2MݗaMa=/~zSN\Y\hY$qYYY\hh\\P<$<\$$PPP`JaEݰJlj..8-8#8#--J----#ZZljZ|OOOZOXt|#XX|||X}XXX}}|OO#ZOZOOZOZ8#ZZZ#OZ-8OOOZĉlj#-#ttaJJ|||.#ZOZc}.ZZ.供l4~k][[][{]]]====ssjj]]jjjj]s==sss,]jԂWW472l5ಲRll~~~5kв&]jj~R25SoP2[g\$$<Ӈ<<\\\\\\YY'qY+e222],ss8nat|#----88J-n--8#8-##Z#ͺ||ZO|8.XXXͧXͪ}ccXX. XͺXOX#OZ##ZZZ#####Z8--O8Oc|#|ZXXn#nͪ잛Qͺ͆^QQQ Z##.|2~l]~]=]Sjj]],]]]]]]=sjjjj/Ԗj]дW5ഃ]]]]ll5ϲ55~3zy?S2(d(>>¤<<$\\Y\\Y$’g~l]]`p`ta####tlj..###8--8#ZZZX|.X1ͧXX|ZO1XͧOQQc1.tt.1ͪOX-###888#ZOO88###OOȞ8-#.-nnɵtttntMEr?n#..rrr8Z..tt.}ccccĉ.X]j]j]]s[]]9]ԏԏjssj/ssssjj,jԂԏAAA5kk~4R~k5]ll5l]]7SSySAyS4>hg’ч2h4RR4222245777&&AAWlRR4R57΃goRo44 >>osa-|..8nt8#-J`EE,&2ghPb.F.|##rOOZZZOOOOOOOOOZOZZOZZ|ZZ####ZZ#88E-//%Eֵ&&W IuY\'&&9j9527&؏77&==`ƶ3z`F%?=////,///j,sjj/,jsMM=M=/MMj//jss==,,js///ss=sjj9A=s[=[sj]sjԂ]WA&д7~AAA27&2ol2gRo~4~oR΃3]4o&Wl4o>>>N<~9&&E8a8rE#8n-EEEƱ/hPhgoRjr%EJJJ8#--ZXOOZ#ZOOOOZZZZZZZZZOO|#OOZ#8#8ɰa8ݗ 7, &JjA & ɏg$'<57E?%?&gP\7&SSW2kޚa/====ssy%`F1|FFF`s/s/ssaؗMj//aaa==Ms/j,,/M==,]=====sssssjjԖ=j=]jj/sԯS,jWAW2&zSA~&R2~2RRR2RΈgR2z]ϲ7BA7A9WWWWWW554Roool27&A &&JE`8-E==N<Y\<4dkP2FƶaEnFr..##OOOZZZZZZZZ####8#rZrݬtaJ/Wweq$u&7AWWWσ<$$kdd!u懎Y׈,~~~~llkjs==a===nE,=Jta===MMsMݶ`ƗرEػֱ~j]jj,,],jj//ss/ՏЏ]W777&SzSjjAlRRؼЂA] MM&&7777Po4loәUN$Y\uulo R[jzFF`1.X..8ljZZZOZ##...rE.E8J8#8a-JJttJJMAW[ފe<2,&/z9W7g<$$<<ӘYYqY+q+q+_YYY'l9S,ԕsԂ2P\ᎎYYYYʇYY抭<<(kBu<<<u9AޏAkB2hӘ\\\Y\YYUYY$YY!BP''55g]7&?шϚ[][[]l]js]]]]jƶƶ33SԕAj/=M===s/j,jjsԂ//ԕj,js]/jsssMs/9ذJJaJaaJJaEE?E`EݬJ/, M=aMJJMMMհMMMMرر/JJJJE /JJ M/J-JJ-EEtaaJ / ,]]9AW՟Aj EE--88#--8-J//Ղ9AԂ9SzIAS5k[d٫٭>ޤ5RP=E ޒ]]{]d]]j]jjsjj]j]]]===ss3ֻ/SsssMss]sssԂjԂs/====saEJE8JJMMM ռa/MJJM/ ,/ /M& MհJE88EE-JJJJJJ ՕM՟ص-JJEEEaaJ/հs/ 9 WռհsՕ/s Հ---#Z88888---ɰռՏԕAWWA9Ay]o<\PPR~/?=- P~44ll~ll]]l(~],]]]]]],]js]]]js,j9SsԂ,sMs==ԟ999ԕԕԕA=9=sjj]=JJaaaMJaJJհMssJJaM/MհՕMMMM // /Mհհ հJJJ--r?EJ M/ հ,M ձ՟Jɰ aaJEa////Ԃ/j,, ԏ/,Џԕ J---8-8#Z#---88---------ɰ  ,E%9& &/s,`?`a 7ٲl~lll]]ll]]j]]]]]jl]]]]RR]/jjjԂjԕsԖ/ԕԕԕԕAԱssss/j/ss=sssj/ՕM/MMM/JM MMMM/Mհ MM/ՕMMհJJJJJJJJa-a-8?rJ/հصՕհ MaJ=/jjς/, 9 //ЏAAJJ-8#Z#8-888#8E8#-JM &7%7,,  JEJ//Տs&72ݗݗ.ta/&klkl]kl]]d]]]КA]]]jjjj]]j/ԏjjjjԂsԕ/ԏss===]j]j,]jsssՕ/MJMհ=J==MMM,JMM=MMMMJM ռJJرJaJJJJJEE8?r?/M/M հM//jAдЂj,  ,՟9aJJ-8----88E-8Ǯ#ǮZ#--8 Հ&&&ռ EJ & -F?`F`. AϚB4o4ul4l5]4llk]l~R]l]]]]]]]jj]]ддjsj,/s//j//js==/s,//aMM=MM Maa`JMM //MMJJ--JJJհaaJarrrrˬJaJ//ؼ/ՕJj//jկԖsAAjՏ  // /9صصص--8888----J888--Jn8--88-8Z8 9 ռ& JJ-EtJF` J9sЂ9ABBBll(lkl5l545k~k]~дW,,,,,j===sM=sՏ՟s/ssM/MaرJ//JհMJJJJ-JJMJMMM/MM8aaJJat?ȡ.`.tnռ /JՕ/,/j //// / ՏՏ/صJ------8--8---8n---88--##--- Հ& E9 EJJ #-J-aJ, M k55kk5llkk5l5׃555k5ϴ5[Ԛԏ]дWAԕ,,]jj]jj֗===sj//ssM==ssjs/jjjj=MjM//j,MJJɵ-JJJM=JJJJaJ/ /n8..#..E/հMMSAA/jM؟ /]Ԃഏ& AA/JɵJJ--888-8##888-888--8888----8---8,յS/؏ ?  - 8ɀ ,ԕ/M5B׃ײo4R4ll4Ro44]]ಃl]]]&]& Ђ,ԟjԕԖj/ԕjj]]]jjss====sjj==sjjjj/ԕ=/s=M=MaaMMaaaJJJJJJaaJMnantaJ 9ֻA /M & j / W , J-J88------888--88#8-88-a-8-8--8---ɰ-յM ,J-rr#J  &A],ՀR~oRk~4u((kk5]4~ko]j]]j//jjjjj,s/,s]jjsjjj/jssjss=s,js],jj,,]j]jj]=sMs/jj=/s=j&& A/js=M/ƻJaaرJMհ-JJJJJaaJJ8JصؕMհJJJJJaMaJJ``./ MյՕ/jsS֕//]jj/s,ՏE7? /M ----8-8888#8888#8#------J8#8-8-J-8J JJ  ɮ#JZ`a W&A//45]]ޚ(ll44RR]jsss=sssssjj]jԕssss/j,s,]sj]]j]]]]j]/jj/===sjssMssԕԕjjs=MհJJaaantttaJصMհ=MJtǬJ/ յJ ռؼ ]//ԕsj],j/jjjsj & M--ɰJ888----88888#8######88E8-8.E-a8--8-M-8E `tJ7&Aֵ7,ձRW]4l44l(kԂsss/j]]sjs=s=jjss/=]sssjj]jjj99ԖԖԖSs]/jj/s],js=ss//sssA//Օs/s=MM//ssՕ/M=MJaaJJJaJJ-JaJհJMJJJMsMMMJ,Jn`?M,/M/ M jj j ,j,j,jsjj/sM/s/,// JJJ8J-8EE8J88#8-88########--8t8--t#8--8n----8-JJհݱ #- aݰM,Еկ2R]R~~R2g22o>R~]Ԃ]jj]j]]jjj/s=ssjjssjjjԟssssԕƻSƻֱ99SsjjԖsjjԻԏjj//=Ԗj ss//jj/s/sMհMMaMMaMs/JaaaJJaaJa/MMJJJJJJaa=nFE/ M/&MMJJ /ռ Օsjj,/j,/,Օ=M/,=j/=M MJaJ---88----J-ɰ-8888---8888--888-8-J--8#`8n8--8E8-a-- ,JJE-E-r7&ɀE?Eյs,&,MRRo4~k~~l]kRRR&~j,]j/sj=/jsj///jsj,js/jj/jj],,j~]]]AAAz3SS99s/AAAA/,/=M===aaaaaaJaJJEEaaaaaaaJJJJJJJJaJJaaMsJ/`?E-aݗaEaEJ հJ=s , j /յ/,J՟Jذ,aJJJJMJJ---J--8--8888888-------8--a-J-nJ-E#tZ#-8-&,J-#--  `//,7//j //22R]]j,]]j]j,]j/s/,jjsssjss=jjsj/]]jjj,~jsjjss]ԖA9Sj9AؼAԂ///j sMss,sj / ,JJJaaJJJJaaJaaa8aJJJJJJJJMMMM=M MMaaJE```EEJ , JaJMaJJհ-J------8aJ-888n8-8888-8#8888--88--a--E#t8nE8JaJ  J  %`9ص&M,,//4RR2oR4~~~9ssssj],]jj,jjԖjjss,jsjjs//j/WԂ]]]]ϴд&&~jWA9999/sss/ /// s/MMMMJMJaJ MհJհ8a հJaJJMaaJMJaaJ=M=M=JJJJaJnaanݬatEEJ /հ-JJJJJJJaEMaaJt88JJJ-88n--8888-888888E-8aE8-at8-Ja8E-a8at8Et-- --&ɼ%? =j,////554]]k]ޖS9]jj/A39SS3Ԗj]~ss]js/ԕAjjԂW&ςjjj&,A99SMՕs=հ/JaEݬaaJ/JJհM aJaEaaaEtJaJJJaJ=MaJaMaJJaJaMMJaaMa`ݬ`rFJɵ JJ---aJa-at E EJaant-J-------8n-8#8E-----8-J--J-J-88-a8`888tEt8tEnaJEJE-&E 77%&,,s/25ވ5ϚSS]jj?3Ssj,]js]/s=sjMԂjjjԕjjjjA]д]Aj AԕԕJMMMMJM/MaJJJհJرJJaJJannJna8-JJJJaaJJaaլaaaaaJJM=MJJa/sMaaMMJaaan8``ȞE-  ɵ- - - ɰMJJJJaanaaaJJ--8En-E8n888n-n8--a8J-JJ--8JaJJEEJJJJ---EE8-88EE& E%ȡ 7,%&Ѐ&jσA555kSz3Ԛԏ]/j&~ssjs3s,sԕjjsj]AЃ]]],j]Ԛ /j,,/s//MMMMMaJaaJJJJJaJJaaatttt-aJJJaJaaaJMMaJaaa M , MJaatݬEErrEEErr-E-JJMMaaJaaJJanE8888-------a-naa---a8--J J-ؼJJJJaJJJ-JJJ#7Ǟ -E%Ь?`//A]S]]l]~l]]ԕj,jssjj,jjjjsjjsSS=MsssԕԏjjԂjԖjԂj]j],jssj/jj //j,,j,,jss/j,/sՕ==aaaJJaJJJJJJJJJJJaaaaaJMJ8aaaaaaaaJaaa-aaaJJsanaaaa8aanJJEJ-JE??Eaa-ݮEEEݮ8J8aEE8tݮ-------8--888-8888E8JJ-JJMɰɰJ-rEJ-ݬՀՀ %pr,,/,`E&5]l~R~44~44]sj]jsssss=,j=ssjԯ=jjjjjjԕjAԂj]]jjjjjssjjs=sjjjj,j/j///sMMs=s /s=aJaaaJJaaaaaaJJaaJaJJaaJMaaJJJaJaaaJJaJaaJJa-aJaJJ  հJaJ JJJaEEtEtJJ---E88888J---J---JaɼM----J-ɰ 8E----,&&?E& j/,A422~ llllk]ssjjs]jsjjjj,j=s/ssjjjs/sjjsjsj]sԂjj],j]jjj,j]]jj,jj],sjssss,,/M/sM==s/sհMMEaaJaaaaJJaJaaaaJaJaaaaJJJaaaJaaaaMMMMJM=a,,/ , // հM// հaJJJJհMMհJaaM--888--JJɰJMJJJJJaaaaaJJصص---JJ-JJ-E-J հ Eݻ/A2R4]kl~4R~d]l]]]s]]]jsssԖ/jssssjj=],jj,ss]/sjs=sԂj,sjjjssj,]]]jsjjjjjjsjjjj,j,jss/j=,jjj=sM=JM /MM//s/ =M//MMMaaaaaaaaaaaJJJaJMհaaJaJaaa-aJaaJaaaaJرJMMհ//=JJJ հ J &aJEaJM հ JJJJa-J-88-----JɵJ--JJJռ  --J-EE-J-/E/M52R~~~]ll(kk5(]]],jԖjssj/ss=sjjsjsssss/j,j,j,j,]jjj,sj]j],,=sss=ssj/s====s==aaMsssՕ==JJaaa8taanaaaaJJaaJJJaaJJJa-aaaaa-JaaaJJ=MM/ ՕJJEEaaaJ=ռ/ՕՕM=MM,JJaaEJ-JJ-----JJJaJMM/ 7 W-J--J8EJnEtJEM,Ѐ,s/] lψ5k]~R~klu]~~]]jԂs/j=sSs/=s=sj/=ss/jjjssjs,/=j]s/jj,j j]j/=//s=ssjss====ݗaaEaSaaaaaaaJJaaEEtE8aa-JJJJJaaMJaaaJ/JMMհJMM/MMJaE`EJ/JصJMMM صհJJaJ--JJյJa-aJJ/ ɵɵ--J--a---JaJEj k]k[Wll~~]jjjss]jj=s/,,,j/,/j/j]ԗ====aJaaMЀ,jsMMM==aa==ssss=s=sjs======sMMMM=MM=/M,/MsaJaaaصtرJMJaJJJJMՕ/ذJصJaEJհJJJJ==s =JaMJJJJMJJaMJJa/JJJɵ ɵ JJ8EEtEJ/Օkk[ഴԏ~]~]sj]]/j]/s/,s///jjsjjssЏ]=,]js==جEEJJas==s=====ss===aaaJaaJJرM=//MJJJJaaJaa-aaaa-aaaa֟جaJaaaaJJaJJJMհsMՕaaJJaJaaJaaJMJJEEEJɼ-صJJJaJJJ-aaJռJaJ]d]]]k]WWj~,jj]/jj,=s/sM/Ass=sj3MJدMM//M=====j//=Mss==Msssss===M=ՕMsM/// ,,,,/////ՕռJJMJJaJJJaaصEEaJJaaaaaaJaJMJJMJJJaJJa-JJ-JMM/ MMJaaرJJJJJJJJɰJJرa-8-aɵ-JJaJJaJJJJռհJJ4l~l]]]5ംSS[j]ss,/sM/MS3ԟ9j/j=]sjjjsssssssss/sՕs/Mjs=/,/==ss,s/,j//հJJaJaJJaaJJJM/JJMM/MMMMaJMMM JJJaJ-ر؟///sMMMaaJJJJaJJJJJ8-JJJJJJaհJaJ-J-JJJJJJaMհՕՏ/ ll4o4ಈ5l]yz9sj]jjj,j=M/ Օjs=/Mԟj/sJԖԕ=9999sAՕMM/ssM,/sj ,Օ,, s,/Օ=MaJJaMհMJ=MMMMMJՕJՕMMM//MM/// MJJյJEƮEEJJJJJ հJJJJJհJJaa-JɰJaJJ---JɰJ--J--J--JJJJJaMJM M՟M4(k4RR45ll~~~~~]~R44]S3SSS9ssj/sj/s=M=/[jjjj]jsԕAM//M=صss/jЀ,j / /=MMMMJJJJJJaaaJJaJMMMհՕMsMMMM//MՕMMJJJEE?հJJ--JJaJJJJ-aaaaJJ--JJJ---aJJJ--JJ---JJJJJJJJ JM//Օհ/sslluul4lײ2][l]]9SS9Szz3S99SSԯsj/MsMM,,/j]]]Ԗ/jjssjj/////M//=jj],sMs/,js`s/j,jMMհJJJaJaJaJJJJJJaJJaaaMհJհM/JMMMJMՕJaJMհJJJEEEJJMJaaJJJJJJJJ88JJɰɰ-aJJJMJMMհ/////sM/Օs/j,,>4lkl455kW]~k]]j]js=sss=j/js/j,///Ѐ M,,s// ss=ssԕss///ss=/jj,,,,jjjjjj/jj////j,/,///ss//s/,///MsMJaJMJMհJJJJJJJJJJJJرJa/Jذհ/MհJJM/ հaJJJJ-J-JJ-J J J-JJaJMհ ///M/ &7, ,,,, // j /,uluu((ku5kϫkkϚkRԚ]]]]j]/ss=]=j/j/M/j ///=/j=ssj/sj/jj]j,j//,,js ,/,]j /=SMհMMMMMMMհJJصJJaJJJ=ج՟հռ/MMJJJJJJa հMJJJJJصMհ ,j///Օj,E,/j,,///,!(kkkײBlRϚkl~~ll]д]]jj]jjs//ssssj/s,jssMss=/jM/ /MsM=ss/jsss]j]]]j]jjjjsMsss=/Տ ,/sM=/M/MرaaaMJJJJJJJJJJJرaaaռ,, , j/MصM/// jԕ,/s /9A ,/,jjԫu(uB22oR2oll~~4ll]lsjjjs=jjsS99SSSرՕMj/==[==[=[s==[==[]==ssss/s/ss/=j/s////JaaJJaJJJJaJJJaJJJaرJJرر= , /Օss/Օ/,jj /s,j/ss/հ=ՕՕռ,///ԕԏ/ss /j,,,jA9AAj,&Џۄ>>ۇ2ђl5kk]]Ԛ]jj]]]js==sss99999ԕj],j=/[=[[=[[[==9s==Sռ,///,MM/ հ MJJaرJجaaJJJaaaJaJaJJՕؼ/Տ// /,/,/j,,ԕ/,jjj/jj,jԼsjj s/,,/Տԏԏ/ /,ԕs/j/,j,,ЂAԕAWA ,//9&NNۄ歭׫k4kdkk]lkll(d]l]]]ԂWA]]jss=s=/jssԏAj]A]]][A[[[[[{SSSƶƻS=sjMs=, /MMMJMJرaرJM=JMհ//M/ /// ,,,, Ղ]&j]j/s] sjAԏԏԕ / ԏ&&ЂA9jΈέuBukk44ll444o 444R]AAA[]ςjssssj==j]]]]]]]jϴ]kd]k5lkkkk[[[wk(d[(dd(kkdkkkkkkk]AAԂԕssj/jjj////MJհJaJMJJJJJaJ=Mհ=հMM/ ص,j ///j, ]Ԛ~k/jjj/ԖԂj]]j Џ]ԚԚ&& &&PRz?%NۭooouRolloo4 4444l]ςAA]]jԂsԂԖԕ[=[]]]]~~4Bouulluuuu(uluuuu4يuooooo4>o4BBooR42R5&777~j]]]jsM///,/,,MMMJaaJհհՕՕMMM=JMs / j //ԏ /j]ϴAAA]5]~~l]]j]j]jj]ϴ&~ЃԏAAA&7&&&&AA &ƻzƻ9lʙ$$N>o>o4lkollkkA[[Ԛ]~ll]dd(o‡Nu׫kdddkdޖ]]jԚ99Դ[ԖAAAAςAWku4luo4Buo2¤<<$ӘYYYYqqܓ___v討Y'' \Ә$$(UN$Y\☘<2jF?ƶ%?~~R4kkk5kk/sj&A//ssssMM=sM=MM//,J-9AԂAԂޚdkkWς]ЂԂ&дЃ&&Ѓ&Έo>>2>2Rgg4BBшBш4~l~lBo>o g4R2]]l4]2&W9zԚ]~\'P\<ۤ<$$\qq+ܓCfC!(ҶD d(o>o]s??7&j/j,j//s/////ss===M===ر/ /-~llll4o4B4&7W~~~75W5вWBBײΈ2222oo5ײooogRR224422Bko2oo44RoBBg„4uddkBeeeeeۇ>oR4o 4o22R[[kA]lײ45lu4BooB<$$ӘqqY++_vUDHbH [11 11 Fݰa aa`FFFƏ&//7&&,,jj&&sjs/j//Ms=Ms=9՟Հ&2g22222P\hghPgg&ARR4R4l55B5WBW5B‡‡ oo4]]]dk[[]]RRl4l4ײײ5oB5Blu4oo>N<@q+____@0̳ 11 1 1}11H}} }}H}}}䣛X.tǰJMntMFs&,/,///==s==M=MM===j,52>2Ѥ<<<Uuu(uuuuB44l( >oo>ۤhhPgRl>BuohْNN$$hY\\\<<<$Y\YqYqYYYY☥ʇNN‡>2g2ol5Bl(u>懇<$$<¥$h\hhgg¤懇e\g5B'\$$ʎ'''\Uzp[P'gIW77W9eUUUeUeeUUK!U!(!( uu(!!d4uu444ou>>><$<懒ۤ$<Әh$N$<N$YY\YY$$$\Y\\\\PheB$Y'N\qY!TbP3WƢ?ڥ00UUUU(!!!ޫdluuNN$<<<NYY♇$ژ$NY\\$'iyيUqYY+ᓓ+$Y'Y>>NN<N$NNN۫udduBo!ф懇22Έ77lײkk(u(((ll~&&RΈ~RR22h\hho oRg2o2o22oj,j&j=Ԛ4RooRRo2ggg22<\h$<$$$$N\$ӘY\\B<<$$ʙ$$Y$ʘYYY\Y\YIyyzwŊU+qqᓓ_YolϕbTi P7P&?S7jfffCCfC_00@0$Ә$NN<$$N>>$22274l44 UU!d[l R4(l((d]]](loooRoR4ooooo> >>>ogo4kײ4uBl]A/]]ϴl5l5k]](k]kl55׫uBъ愇N愇„<\hh<<NY$dI(UYYᨨ___᎘uul[SFp>'<( gASz7PCCC_@00q$$N>>>uuo٭(!!]]!]!]((( lll(dddd](l4BBuuuuuBo44llllll~~R]&~Wl]Ϛ[ޖ[4׫׊ee歭愇撇hh>B(!{yy(4uNYY _@Ꭽ3y3\g4{`~jj3ԯ0@_ܓ_ܓ+qY+qqqYY> u(!!(!u<ۄ$N懇$ә$NeUew*w!!Uيo٭>uuيKKKU4u!(l( l4oo4~ 44l(](ll(ײB4 llll(]]l~l]]~]]jд57lײoo45k5 R4~554Έф\\Ӥ<q_+YqYYqqUuo{3]Pgl]FP2~7=T00@++NU (!Y\N<\YYYYY+qqqYqqYYYY\ʙeee>>UU(]]](ll(4o 4ll5Wkkk]jssj==]Ak2o4R5׈2ll~kgo<<<$<Ә<<<<Ӓ>455444o$$uu>\'q+_ 訓>Dd>ll<PgPRj??2]Fp%]<<>UUUUUUKKKKUKK!)!KKUUUU>N0__qUKK>>>u(udwwӤeuB$Y_______訓᎓+ܓ_Y$hggۤ>U(!4ll]]]k55&Ԛ]]]ԟAA555]22o2o2g2okӇ¤<<<>ueukuu٫k!!wwd楘YYC_ܓڥ0ܓܓ@+''\\\\hNl((ϚkϚނޚ]]]] WAAAAWA~&5~Rgggo22o524]kgg2g$<¤<<<>>ۭw>gB2g\PhPӘ [=[3zzz%F`FƯ%bT3=g2~N$$$Ә$<<> >Nuuulll![([]d[[{(u>>ڥ$Ӈ2g<׫uUY+qqqqY_++Yq>><<әUw! \YY+!d[SISy33S]lo]]]]=jsjss==]~]{Sz99zFFʙNNNN<NNN>>> ll]kk]]k][d4dlluә$$qY☥BBBۇBۇ<$<$ӘN$$ӘY<YY$$$$YY\<<„>N<>>>ےoldRlllll4k lu$$q+YYӇBeч<\\$$$\Nuu(dduu<$ۙhNNNo>uNNNN$NNN$ee$Keeee$$NuBBBB445uBu懇<<>ud]o<\\'h>\N>\[dF{]l=3]&7s?p`s,aMsj&,7jsj]j/j]~lkl $NuU>>UKu>>>>Nۭ44>R D(NۭN<qYYqY\uduukddkd5!kloNNN$$$ӘhNN\$00qeKeeUeUeUeeUeuP\<$<\'YYY\''''Y$KweY\\''''ʥY'Y@+qqq___0UuYUw>uk5gh\Yeee*w!!!e>(dk2\\2g4P'>([d?==~]]&7&??%%Fl]==J=sM`FF74RRR4<>>> oYNuu(>>>>Bْ><((ly{ \Y$<$$0+ʘYYUʙ<Ә\\\hgoklkdkd[d44luNN$YYY\$YYY0_ܓܓ@@@00eNN$$يNYᎎ YӘ\Y\Y\\YY$euww!!UYl!! dDdN$NN$Ne$ʙNN$\hP\\h<2B22ogg2224~l~5lu>ۙqY$Y_C_CCCܽ载fCC___Y$0qNN$$$$Y$$eʙee< lU!ddduNN$eKU+q0q\<<$hhh\Ӈ$¤h2oR ooooo22>44uuUNYYqܽfffffCCܽvff__v蓓+YqqYʙ$Y$\ʥeʇūeq+YYYY⥄Y᎓_+++ᓓ________qYqNwI (ūdw($q+@$$wd[wuY\\\\$h>u4٭> oo>>>NNNeUUe+_ܽCCCCܠffffffvffvvv_++ᓓYYY++Y$UweuK(Udd!4uu((!k!eUUN<<<YYژ+Y+e⨨YKK!K>Kd!!(((!!U u u٭>>>N$Yᓨ'ޚu<$ʘYYN>N<BIA5$$$\$qYژU٭d!Keq+++YY+YᎨ_q0ʙq00!yUKKU$$>(u>u4N>U<\Yqqq+Yq>4dū!wY$Ә$<$<$NN$$$$NY\'NN\Yᓎ᎓討qqᓎ'q+eUeKeY@@+qʙNUwyiU!*!+qqY$$\$$$N ><>ۇ٫(uْ<YYqq++q$dul>4wdwe\\$<$<>NN>>>N$$<<$NNNN$@0@@@q@000@@0+Y0UUeU!)**wwKUK*KUeeeeeU\ou>>„¤o>>NN歫uN >>>>N$>N$Uqqqq00Y+Yq0eK*w*!UK***w***w*)K!*iyyyiyi̸Kʇ+q__ᓨ_YY_v_++qqq_+ᓎ++*!*iU!!Ueew*ń q_eK$q+++ᓓ_vv__$qe@00_++q+ᓓ++__訨 'YNqq\\YNN$*U!!K0qq++UUUʘ☘>> 4wI!eee愄>$N>$YYUYY$$eKKKUeيUU!KUqUʘʄeYʎY$KuYYY\qYYq++0@@0UeU+qqqq@qY+Y++q@@+@)w*e0qYᎎv eeeeUKKe祥00@@@ʥ00_qqqqq@YqqY+YYʇ$Y<$ӘulY\NӘ$N\<$hۭ$祥0qq0!UUK$<$dudeNuN<\$YYYYYYYᎎYYYYYY\Y''' '\4>44q@@+eK!*!)KKKKUeU$ӭ!!u>o4lkl u!!euuwwIwwSzzSIIk[ld[[!wd(!k(www!uUKd!wwwd>u(wd!ee$ӘӘ\\\\Y+Y+' 訨++Y$CxfxCf"fCvvx0NN>YY' '''' ''''_v_vvvv _C_C_v__ܓܨڨ ++Y+Y_v+@0000)KK0q+@@YY⎎$懘N>oلNN<۽vffCCC_CC6"G"6f66f6Cܠvvvv討YY+YYYeKuKKYY$Y__vvf@0U00qq0e000__CffC⦆q0xxx@@_fLLLmLLLLLLmLmLLmàfLLLLLLÌLLLLLÌLÌf6m66f6ffCCCCx0CCܽfܽ____ڥ!))e)!*)Ke)*)K)KKeeeeeUUNe$<<YYK(K!*!!!!U>N$___@@00xܽvfffffffffܠfff"f"6ffffCGmG""mG@***!**KUUC00_fCڥܽffCC载ffC@ʘ$ vܽfff""f6f"6666ÌfCxfÌÌf66LLmmmmmmmLmmmmGGmLLLmLLLL򠌠vC_ffff_@@0@_CCfCx0@_Cܓ+ U uUu(((I[{{D!(!d[[ү 1F1Hb;bbT b3D!qv v vvC"fffx000vvvvvffff6666666""66f6f"fffGG""mmmG6K)U)K$+0x@qYU0fffffLvYeeK癥qCCvfCvffffxxCfv6fffCCfffff"""LÌLLLLÌLLfffx0@@0x0@0靝xC_0x**獍)*)x)))***![{D3D[[[[k3{zHbb111.ttt11͛c}b}1 =p bb;b(6ffff6fCffvv __ܓ_蠠ff666"f"G66""66ff6ffffG"GLm6ffC___ܓq++00q00CCff"x"fff_qYe*!祥0LLCf6fff000000vvCx@xfffvf@xx0)0000_v@0@x))*)x"f"6"6"x0)DiDiybpbpbbbT Tbbb;bぁ1 H;;};}X} }c;  =/M  .  pTQTyD!@fv q!KKeq__Cff"66""xx0xxm66fCfܽvC_ܓ___+0q0qY+e_蠠f""6"fv0Y'Yqff66fff66fܠ@qqq0@____vx@q0KUKe*eʙ _v0@x0x0xxxx"""m66mLLLmGmmG6"C6fx*i******ii!)*iiiiii*Di;; ;;; ;;;; HH1 1 M=jjst1bb%FHT; :U!w*KKKK!!>Y>$Y\qDi̸)!DDDDD!!ffq0q0000x@@+ᎨYUUe$YeeeY++0CCffffLLLffYY@0qqCff66Gmm"6G6vv UUYN$ژYY+q+@@00UK!!!KeUKeUKKUY''**!!))xx""GmmmmmGmmmLLmmG6mLmLLL6x)V D*)*Dl[d(D =]]o=zF% 1ߑ^:::TDUKwiibDDD;b3HTT>3 bߦHp ^ ;H}Q;(@UK00000@0ʥqʥʥʥUq@@x0xxf6LmLCCffYx66mmG"GmG6"fv U(u>NuNYY$$eww(uU'''$eU*x"LLLG"G"6)DyD(3=.X11HQQ4]dʎ'u̢b;^H Hl D = Q^^^ߦ円};T)))i*x@00UKKYڥqqY0__Cxx6mLCLffܓ@@__靅"mGGGG"GG""66fu!l(44>$NeuKeeKUU!!!N<' !H ^^Q; ;;D!D(<( Dl]Ң;T ;;; K!"ꜜ*)"""""""666"UKKq0ᓓܽC0xfLCffC____Cv"fGGGG"C@UUlldloۭ>N!!eeeeUeeYYYNqYq+q@x)V*fmm6fx)iiDD{٭K!YT;;; DD; :ifmmGG"0++00x@@+qCv0f"L0f0LfLG"+ڭu >ululNNNeeqeedeY_@0@x"L6"x) Tb*DDD; ;T;bifܝ祥0v_qq@ܽfC0@轨ᝌLG"0$u R(!l>٘qY++eeef"f6Gmmmmmm*D*덷xY_Lf@0LLL0@C66x! l44~]42d4Y☤P0ʘڝ"GmL""6G)iV))"GLC)!xKNNl45k5<\'> luo @@C"GGGiiV"mLܥ)iDD *iD 4~\Y>l!dw(lU0L6x"mf0iH D^::^:^ H]> uw[w]g2­eCxLLCff); ^ ;^: ^ H;QHDwIӇGLmf);H ;   ;D(U!oq@m""mm"C_KH ;  ;; D!Kqe獅"GG6; ;  ^ DDUvKi6"6_!KD;   V T_)*!i6xCvyDH ^ ;D! q+vLf))i)"_vND H ;;^ ddu$q܌0*)qD!D;D :; ^ !+L))f(D;  ;  ^D)xVfC(D  ;H !!eYv)V[H ;^:DDyu)VV"iKD ; Q;HH;  KVVHc1D ;; ^ H 1qe*V*D3{DD: ^ Hd>m"; DDDD*iV :^:::V)6m"ꅅViVVlmarbles-1.0.7.orig/src/gfx/wood/teleport0.bmp0000600000175000017500000001206607206511057017402 0ustar uweuweBM66(   :ƥzӮN>ĞgNrnӯŚYV3дӨѰ(֮ǟβΠ^fA*۶"زt*ƚʥRN}ְҵ6|ھžnjϪ^Y}ŚֶJ:ZJˢΦҮVE. rz:Һɢˠʫ~ҲxEĚ^_̤bg̺ʦپRJոֽRҪjfB/Ζz}řΪɢ̦ZQȞQFŞG3pb^4߱nw–vuĜƚV ʣ~2 B&㸚jjśѪ–>&ܴ޺Ұ˪Ѫǜʣڰήĕ˴v|ÓjrRB;~⾠3ƪ]£ֺήѪѮ>!ÕںΧҲF0习npˢrụfhâzVOj .š"&ǚNBZZbbN:bƞbY~VJ~jnB6뾢|.ֺƦ’ӪC*#6<5+p&KK AA5^OjH#K6`~H6R#ݐ`c`zRm#&cz/ݐӈ65 Rz..AK^rZQBZH)އQ!ȼRފA"t`谵6cAp.?X2jP5^+RR7BzQ^KȆr66zAӎH5K)`H+?Z"K{EEE{"g{~{jRA? ??{+55ȈE~~j#Rrr?7??H m#߳X..u֠E 2Rz t òCWA&K6XEZWu EHKcj` "CCQP).aٴ[щّ#~C* ԶC KP WfĘ~r5KR7tC|W{K^Ф3eS@Ii3 ?#{hVVhԐHr&K&ㆺuNMy>9uUa~+^]Ӿ"~{V"%|;ᕲ!+/X@@--ۨ:33fL{H]##&thh0pAZK&j\gg3q1N'qq9w׺OA?ǫ;Yh|W~аWb@-@@ªar&+C|;4000Cz`P5HLD8@}oqoog X]t"V%;4Y;;?z??\3ࡡG}}:͏Qm߆HHtVhY44V龃PKmr?g3D--$di6]^#r*h;4llllYYǕCK޳..g3:8@-g 2QQ~ +ȸjOY hǫ_^{b @---}b33W`jPK^]XW|ΜYll T%΀zߖ~Eہ}-@Dy{"X6<՞>EAVs l4V*z?M=}G-ʁ=w.߸rzW|%Yl Y;CtQנg}-x{Z?CC|ҽl Ts?ZA<7?Ek(i}ࡡ-۱ّ)AAzVV4 lYC莵-(EX`zzCT %,z縈ZC[xࡡ-gפ`AB?_T T"?Zz.ہ@-G}x[a?z؈C|;Yl TY|z!?WEN>a[x}ࡡ-LE&`صB_4 l|AEƭ.b@---vXr/t|Y YVWj6PROEMkiš-ͭȿ!A萦Yl YÂJQQW @@-}vL\2PP!ݾ|%Yl llTY|"ݼj"{D-@"jYYT l̶z^PR`23wbGG--@ guUXmߚW;4 llYYY|Xz^KHQ2@ࡡ@:Ī.n R˫;YTl hZc^]6ad-D3gLEXK5jCllT4hǀ?)掏͓}ࡡGʔ3\X~#K߃镫;ll lT YhǢ{zӃ+XoooDL~՚#?V 0sY4YYh%{z<ra٪=@@ʡ}@vbg2P`z|%Y4YΫ~ڵjں(qq1N193g\AK"zBY%Բ"Ar#)~f3$-@@g~j+rK~Whh̫?+`~aUugg>MNĉu&AcJV|C{~")KXei@e^ӳWh%_Vh?H5\kyWWyfPKKrjR66{ҀCt7Z^K#؃Ӭ(b셪ё~P瞂CԲCV ~6HݵE ֟u{zZ6#QCC{?烞cQ< R EkgnunU6]]5&WC þ* C5#m&~EXtA5#]?C?zڲ rrQcc5+t~"1٠{2r^555^]"??* Zյ#Atں`66r#^?z؞?"ARR/2Xڳnc#Zյ7rRr#PRrﵐK``" PKAAz..zA6+ K&+/uR6xwlސ.NL+zhm/NIB^ֆ @+FZeڂ3Vbj8m|J>jZzMV}m"b_l`dw~KI6X`\jV^C7v;= b{ *?FDt4]nKOZdm}ro@qg݇PPZeJ&D,7I8Xvx^rap & mol%fHK"^i{F%zUc6XrB2e|KAdv+vWZlNP=$3atQZ:JZeR:ORqzN^~ovA%l|QVF6zy8WjwovE2lVGDJgނiu: ow "yrb|^v.~njx&jF.TYan<rHBgtJBHF}FR_)rqmRh{ Z;E:9YnHHp}}suլ˜6#mu/>R2۲yHnom6J"GNmnQwW=W2R#ۋ2tuwPH=U-JTR?{?UR~A!h޶!m/ꊇC''cJ/mRWWHyR=f{^"􈜲#Q'BhtUow൩tWRum#>㌌WW=gc֜Э ϳ5g g"\.-w'厎7jߌӎu=-Wfr g-H'AU"g6wu""[.?{`V{{``G?}=y>㘌ABʫʐ+KRPwyW.UUNk\ m-ouHWCRKՇ=6wy˶?``ek\[CuQga7v++̷6#P3kV\g5Auyu'䝝SaSmc˩%¦``ͻ¼["5iSS9Sco#y#dI``Ng#mhߔgbKSÄ焷aa=T"`__V"mwuP#̠SSä@R#Aϼ`1I dE.qoPQRՌ̢SSħpٷaɇ꺂yAW(;;zzXN###-KلZ:|@@@KRuۋV``` e1{ FE?.."-y4<Z٠"Ջg"\`zzzz_;``,fCHTmBbpȏȏȏ | UTHuyV`_(;(]O3m>yЂ=S*<ȏ:hh=@ȏȏȏpp9|RCm#2t3V(;zzzzzzz;ѥ2Q65 4pȏȏiߎc܈Wt[`;;_zzzzzzzzzz;eIG3.q垘+@ďȏȏȏYR-3dO(z_zzzzzzz;_es{GQT5a iȏȏȏȏSbBƀ;;zzzzzzzzzzF^ssGӊȏi|&YWWRC"fN`_zzzzzzzzz;(}-U5SSiȏȏȏLBWW {(;zzzzzzzzzzz(F^^hAbpȏȏȏZô+R^F _zzzzzzzzzz_ͻ[-RRՠ|:ȏȏZĮؘ怙q[`;zzzzzzzzzzGt̮ZȏȏȏM:|5^(zzzzzzzzzzz_X{R#PR=|*ZȏȏM*"Ah=t;;zzzzzzzzz;(^NrftWBMȏȏZ49S5t-oUsIs^F_zzzzzzzzzz_;CWBj|ȏȏȏȏ٢{se;;zzzzzzz_z`{3ӎBpMȏȪp ab5>T20.3GNe;zzzzzzzzzz_;`VGQc-R=8|ȏȏҹ+c2ѻ;zzzzzzz;FE}q#mc焄:ȏȏZp* 5g~C0[gEzzzzzzzzzz_;V{ qc#hP#ƣgN?»sId¼#WRY9ηLÄKbg/ӥ3,`ͯͻX¼kթ%-55S9 S"2mPuUտ¦rk3#Png᷷ΔqQ/C!^eD`XfgP˺-RWb++bagPoomr3sUU.WH֋b5CWPPGredVx{.uЈT'=KʫYY+ou-"  Wo懶=uy-t#.\"g ݳrr uuoɿ7A&ʌj22C܇2RWwct=Ɍ嚈C'P#"" {fh=wojh氖QQQ'ՇւۭH'=ޘ=WRRm~/RR?{?RCT~6y~Th!~u坊WyJ-厕U6nN}GgՀJ6ywTW=-umRn~m-J Cu#敺Tlmarbles-1.0.7.orig/src/gfx/wood/teleport2.bmp0000600000175000017500000001206607206511101017372 0ustar uweuweBM66(   ~9rVnk>/]&9|rHj &GmFc2PȢ(}^>OsJ["XA4޶PRf6qN+]*}f^xH$vv~j jN5 *ѪuR~b.VyZj:^.ծjBVrAQnH zL " .xNH fV"r#z^X.JDa6zVna2Z~z{R̦۲fnY&g2pFH rBn_.zJf*Nbjj>g:bvwK7@rsJsFZWn>I2fV~Zn6b*xNb;^d.LT~%~vS¢D{VRjlBzZ"0_2^vrQ"rh6>٦ e0)`s aaa)C4<ܰNo0PuuB>&x0㰳ձc0 x4e(a ;SNs<ܳ#y(' Ĥ(yCNN`s4c!JLZ y&#-c2ce"Rٺ0>CNN9a42 0oyeah '9; R"hЮeoB-Rَ9eaa<<9)&a;a cg("xC:[=6'P0app'g'|'`#&a(9eau cZ[[|#y <"-Z=g'#`xRZMMMMMMMs -;;c6__M 66J|;oB '[|XM6j[=a4>-;u'X/_ 75++kz_jG&&S[jXDXX6 cc2x;u([X _z^Q @@*tb9PS#4'MM[/XX~j:>-s(Z 5{ +UUm{{@e;;;|jDVVVfffggg:`y&Ns6]{%̞ɖ/:bБMXVV6j[s&9=rzmاUUUUwkb;sM/V1q=c`oCy)'rz+mivQ*qs0Gox(MJX/EE6[u)N'J@O]+UUUUUUUUU+m{@p||jMEEEKKKKKTVg" q F +UUUUUUUUUU+؄jZp||gMKKKKKKKKV a4":qtrU+UUUUUUU+nO@W޺`0b[qKKKKKKKf~j9pu"a<[6QnUUUUUUUUUU6'cڲqqڽVKKKKKKKKTfXLM9s+UUUUUUUUUnmH,ɾ`u-Pbq=MLVKKKKKKKKTf=ZȐZ:: k{UUUUUUUUUU++{^wɫ䟐"`u#`6XTKK1VJb;oC#sb<'@mnUUUUUUUUݏO tLN>" B[J61KKKTKTTVrbcea"`oG0sqJ$i m zzﵥCC)u![JMME//JquxÆsЮcbX~A[|4)&G'_zOؒn{7 _;"R2Չ=j6r~DDXJ!|eS;Jd_lt墻J;>4apa6t~j:['GC>BZJ_ Q,,m{]v7*䁩-)>P|ZbtMq[=j[!'<SԎ:tZΩt`#SȺ0|j='c"Cx27zttSPg!bMb|'Z!['R#SPBqӅZb! R)))b!|ߦ2BSSNN dt}qZ2Rx`` [Z|Zg'Zu)y#u!ꚴ ua94&ʈ<|-""R"sܳe>No029aCy 44䶵s`;Ȑac2"#&#9ƕ2sʀyR(u 40y 0c:Rx` a܆PxNB<4s0&>ٸuuP0#&0<)&aaa s`>lmarbles-1.0.7.orig/src/gfx/wood/teleport3.bmp0000600000175000017500000001206607206511112017375 0ustar uweuweBM66(   "*Rzs+BXiWxbY(>R9VvVv ]&:Ox}v;Vrl@bS~w$6F tGnCb"/b3Nfn*9UlPzr?^hp^*B^Xf5QopHnni~NvEfl)zt"2F;Zz][uc^&6Gjm{fQzfk?^~!2Bp]V{Lrs&2^a|U~lOvMrwv|m[ dT~Ins3Nj{~}#mu/FczV_8Rj.Jjp|/F^Jrs;Z~dj [$7J[ Ѧvjj#i[4K#<3<K<{op6{U#4Jv\U26ۻij_`{牊<' vЍP_DD[6d5̸6K}UUd2V"'}pDDU2QЊ-ӑ&XxT"KT d55~o>e'K }?<2j5ζj\̶[6? {\_d'TΞIII8mTjН`c_{ " D⍶jPP7ȗ[Ddd`5e_)̽}<[Vxg󇑪P܊p2Uo~ᘄwTK2Pg_eNI{#'D-_V64ԍ97ևFFX9g5wW:.Ycv'6 K 8CA&Ie?62j5URd?4T[S$M ڨEEܠ}2,YGGG#dQK1}&AN\DTT1}wGOq dxևMLakELJȖ6GOƕ]ZO]OO %h-eήV4eIǁEknmn tNg551РqZBBB] /¬)KSe#&F!!Lrrkf&+?'6 ݐɾB]]HHyyߺ;~%w"#8ttbbgx{'Ko)GG]]y]6U57Ekararrra&#Q }}o ]yHH;GeVK?Ekka!L=kk &9#p1K?_RZ ]OHHߏ澜[J+8Lrrrrrrrra!̒J QаOHH Hy;Ovp6[6޽!araraaa=FEEDѡTT'U)œZ]]HH q/٠V [5MFk0arrrrrrrrrr+x5p-h%HHyB.v#}Ԓ7X&=rrrrrrrLk̶ ԝ\YZZHHHB_S#98karrrrrrrrrr= CܵΝ^>;HO^~jD{d{I9*8rarrrrrrra=F*+ pZ] Hߏ;dDI$!arrrrrrrrrraènҟzeـ.^| HH(Z~U-Ѷ)9ҋarrrrrrrrra!k9VvSeY|H HYUD̒$arrrrrrrrrrr0@mA+ HHy;.ej5)XAk!rrrrrrrrrrrakMN6jDRZHHyBej̶MkarrrrrrrrrrrbI5HHyHG嘞jeCm@u=rrrrrrrrrrraf$XjD^ZHHHy](ݤeMk!arrrrrrrrraéjw£HHy]Z){SvzAkarrrrrrrrrra0$IeUGOHH]qϭI+f=Lrrrrrrrar8*7doO]H Z€p숿ⵚշC k=rrrrrrrrrra0 89[{j:HHHHH]BGRįSo\̒fkarrrrrrr0&7ԖϜHHHHHH]G±\Ԣ'ܤ+rrrrrrrrrrL!ʪ5SޝBHHɯ_oh-QD&EEFk=aaarara!fMg[ ԰/]Z;HHHߏ]]O)ȞiT[v!arrrrrrrr=E8+ՠJS 吜HHH/ejQKT6pvևb =a!akEEx"[GG]Hyy]׾]OGU{6\##&MMarrrraakE7xUK6 eƺyy] 6xtfbb8x:.Z]H/ɐ)pii+EkrrLfF&vS[ DYqB]]]/5555gʲ@nmn $EDzIe-KvU5o>O]׾(B/j6}EFL=kMExd42α)/׾OB;O; /?ԙ D\x+N&Cm}i\̊-~Yqq(ws6KxI+񁁥 E_?[T)Y/)̖?IN&zC87 K4?soQ[jUj?<o~5jQ??22d`U1Kp_D#ԅ 'DD_PD# 'K6޽55\ed'۔ `Ue\#Kn>I6*V^&*B>~Q6A*R^~~j>*jBn>Z*Fu&=F".N$Z~6N&NZ"rJn>Z:^ .B6j~BBV6~5%J^'Vn6&v.\m2Br6Z>^.V*~bnBbNn*B^v.J:R>i4:.6<.NR~:r6V>6.:j&2brV~4:6F&NV&^f:.j*n2z:^LRz.>>U2v::rFj"*6^2F:V&ZrJfn"Rj"Nb*6J2z6%"Rr&b>jBn^BZ. *>*5>zBj*Jb"2"Nv.vrJ~FU !2*:J2>f.:N:N&nNr5v2NbBB:ZF *BV4z,:h"6>V"Vv.j6Vj& :G..r*Bj,f8BV &6:f*bz2r2Rb .FBj5n2R.BF[f#AN6R.B:R:"Ff:B^6J=v)^zNh &:N~:B6jzJB*f BR*b.":2~.r*j.*b6*<Jj$fN.:N"Rv "62N::v(Rc"n"6B*Bf2V2~2=3fv".b"Nr&6N:J>NJr*F&6Bf:bV"FV . >*VbB.n(Vj"VzBV:Fb2B2B.Bj~:6~)v>^NMM>>M>~ס ܡs>MKF'~'ss 硡ss>M>Ysssޡ%f`sKjjsՉieYF sqKsޡޡȡMM FFar`6?b rr`6rgrK!?bՅYrr`6grą's!]]5..Xzz]]]A]+CeX1ObN]]..+..5.ժX8.@a;GHX JG.Af-9SGHXSc ǧS0b0Sݵ;aP}Yp˼@8$O0LL`KTշSS0$00S00ǹ`cXza|SL4rzSz80aSa;MXޡh24U;;S0000SSnSS`sP2X9qP2X..9}h'' cP24e44C--''fO -- 0.ȃP2X3}c .sKP7.J49ae;Az.rKP70A.@.4kkk54.4.SSS.rx7!.22ȯ43AS0.qP2aA7A.k45kAJ;@4GK7描tIh76I +caWˡ7!0.k+ +SA44S.Ks^z$S9K^zzK5,AvĺKQ!X3Je,AK@@ 00ں@@zK !K@]}ғ6KKr00-K$9;;yKK3,Kv@Cy}&ď9@KK,Xv@@C;0-yK.s.@@0QȡKs\K4@0yyc&!@.s[\KK. yy`&@.s; 3 `Q&K@4sfeA;;QQQ殩@4s;'4-;0;- &ș|||C Q@@ꕕ 0-}Q!6@@@0;;;;; y}aK.@@@}}!!.@r`A0 };ď4@r`A00-ߧ!@;߃K@@0;ArKKK46߃aK!@@@0;ArK00 T0慮4.G3 h榦4.W;Au Kr!곺h!44W;A !KSz&ȡ74a03ǮK!ra374a40;A4.4.WP20!4A;;A5..@4S0AxT<3A4..4Sk.2GT͵AGP!`S.4@..SSS2`P20a慅A3P`44..4SS0!ĺ @@4WL.S{KK`>@4J}L470ⵈK>S@@@4S0!HoA4ac `!5cKK>e`!ǹp K!sĆ: `**!!插**5s!"***5:Y⦦!!!YliBpaYliB~ p!aa%Yl)Bffp⦏Ϧ!Y[ekaW55͸[(Y{k]aWr55ӱ͸[%ɞkc.55k45͞͸i)(0i5B%Ji)(#0iB#МB%Jkdi)iw 0iBTTTZZB%JZZTt7%i%P)Bt<7%=lP/i%P)BtElS7%PP/i%Pl%)Blmarbles-1.0.7.orig/src/gfx/wood/floor.bmp0000600000175000017500000000331607206511234016600 0ustar uweuweBM(   *EbKb!Ab!E[Eh!:Q!0E&:0:&5A&0*A!55K*K&Kh"=TFX0E0Q!0Q5W:[!:P&E&5AQAd0LlI_8V=Z4H!A[ -J/A).%>'?1 ,!8)@%<0D,D8L0<,8&=+<2M=O3N(?,6 8N5H%5) 5!0)8 . "Ab @a1L5D0@!0 ,#/$ )&AW%@U,< !)%!,0 !8#  /D: 05 )@$8 ',@O5C ) %5H' 9Z:W"9)5.@"/0Wv/Ul$C[5E*5Eg)Da?W:Q)D5<5@0<),#7%?T2C"/.71C):%,!,8)0.5"))*=%6#3." .%)   +)   "   %)"  AAWVVVVWAJJgAVWWWAVWAVJAAAWAVAWV)><>dRRO>>R[,>;;R>)T;;*??F;NG00;FFlG>;?;;?00-Fe..e+?..?JJ~:NFF--?...N?F-FN?NN?>;|?..}_Atuvwe--xF-y/z{FN000;;?+>;??;NsKAopqrF..;,;;;?..?./.-Nl?N;>.?emn_ijk>;>+,.eNeSRR[Rbcd\,]^_XYZ>T[?;;+,;?+0PQRO?+.N.;SOTUVWLM:NN???0;+;;;>O++?>G>H>,.++;IJKBCD+,++++1EEF?0.++.?.,++;?;>>@AA9:;;;;+;<=>>*,,)*+,-./012345678 !!"#$%&'()    AJJgAVWWWAAWVVVVWWAVAWVAVWAVJAAA>[,>;;R>)T)><>dRRO>>R;?;;?;;*??F;NG00~:NFF--?...N?F00-Fe..e+?..?JJtuvwe--xF-y/z{FN-FN?NN?>;|?..}_AopqrF..;,;;;?..?000;;?+>;??;NsKAijk>;>+,.eNe./.-Nl?N;>.?emn_`a+;0;>RR[RbcdT[?;;+,;?+0N;?;;;;GRR>\,]^_LM:NN???0;+;;;>OPQRO?+.N.;SOTUVWBCD+,++++1EEF?0.++?>G>H>,.++;IJK9:;;;;+;<=>>*,,++.?.,++;?;>>@AA !!"#$%&'())*+,-./012345678   lmarbles-1.0.7.orig/src/gfx/wood/wall.bmp0000600000175000017500000001006607206511244016417 0ustar uweuweBM66(`    nn22Fz&NV63g2^BNBJ.6&jM~2RBn>VZqB:&&":2R .BhB&JzPhXBVjBv2N&6:~~!Vz2brZ0^z.&J^2BrV:^'jfZ:WRz>_2f:r*2*CXr!2R4z&NBbFj66jBZ Rr)vB\Jr "2:6Z*T2:$b.:6>+n>N*zN5[.j:vFzNoV~b 6fBb*~&F *>.>n"Rr>g "8>Z,vJf2RBn$^#Y8_B^22Z*2B"F+b:fB/f:v..N"Jvb8W .BJf>rJv".N-U"b.N}JrBV.^bNv=w1vF>FV)r:^!BR.^n6Q(8J&BBBb>f&6"2>Nz2V4*Wn6J(P\*`z&*Gv .F>j2Rb:^6Z.T Z~*Vb.:NV*Bj&>b$fuJ6N.@0z>H^&2*n Zz&*:::4fv:j*D &:2r6+JBz.>R!Yu**&>fZ2V~2*O*r#.Jk6v*6^Bb2E:*>NIrFnRvJkZ:r)f.5 -M&f&Pb:JBhf>~1~>R>V%P"B&f:N9.U**Jj&*n6F2Jv*66~R{"("A6m6AAAAAmA{gY{A{`dURRRoIRR8פR9ƛMRRR;X}}YYjjj5bbA{XA_Ƨ]RPR ^QR9I՛O+fN дwwwд}6IIIIRIIyRRo`9R`d``:~–-9~\f***,ffA5 Y]]]Y]ӕheb]6]Y ] ^^AA66a666e00A 1A0NNtN NjYYAkkt뎃c(QvE66]6]Y@@E6]]6](9yF,gN1С `5ߌNYYߌ0;߮ЮNAcYQ]]]YbYb]]6YQQY4RfmmLc111 L1ڛ\iZY֞5A{Gj Nf?Y8Q ]6]]6YY]6]66 b'Dmmc11C1Akh5U jSAAc]QQ6]6Eb]]DQQ6M[2[]DDb66UUj---jUUY1e3AAAޱ򁁈uuHОj^6?QQb]]]]6]6]YQQ:P22[6"mE6]]]]bbYY6]6]1 1eI3f006бuﭭu4AjmJL(QYY]6]]YbǕ99[2e~Y]e66YY]bb]66ݽ6o3A066u}=6uuY zmJ?QE]e]6YbjQ99::~]]]]]]b(Y66]]Y16oI3AAдs4u6uuNnmA%c(@Yj]666]]b@9[2ޖ:~666Yab]]UƦAAk4su=uYA6/[YYb]]66Yj(Yb]`"o:6]6]bY66ᱱUƿAA'kKKs=u!Hm"%25bbj+Y]6]]b+bY6OLBd~o66.a]]cU< hAAkHKsss0Ek2ZYYb]]]]YjYbmDLBd:6唔RR]1AHKT?ss=0}}E[b(bjY66]6b(Y6D9L~]RRܔR6cU<{00БKus_?0u6c33dd]j+b]eEjh6]DLd~o66aa]]c<10e6XKsssu{u33Td2Z6ӅY6]Yj]6DO4d:~6]]bY66]ᱱUt0A鱁uTsssss67Ekld% ZbbYY]]]6YbbY6922:~66YaY]]30066usB?=u}}{X!jXd% ZYYbbbYYb6;I칱:"66]]]b((666661YBe0 sssBs0ށXUXu`bbbYYYbb]gI2[~~]]66YY6bY6]]mZIև__{_s?sB=6Ё{0=dpYbY<"6޸2ŷD666]mbbYb]66661 1~d3gss_XussssB_uXuXXX\<<b6bb6Y<]I[[m4]YRRb]m~3ۘBsssBsBB}6!lsHY]]<<<6]b<O2[6:G6EY]6111~d3˜B??sBsBB4}{uU<Y]6<<6]YfA`Y]b]]6666]Y6Y1 3u?BB_B_o__=""=60٭˵[]6]<<<<]6]<6SYBm"mؖ"D:B( 1jXu#<<˦<__"域ťU66]œ<<6e]<64y<<*,1YmP:d~Od絛D~XB<v챠8xfQV> ))))))))))WWWWW⍍$,22N2&N>8lmarbles-1.0.7.orig/src/gfx/wood/arrow_d.bmp0000600000175000017500000001122607206510746017122 0ustar uweuweBM(   Pz?`?_?`DhKpJoImInInImBd?`eÚWKrPyY…ZXWWTBe<[dÙfÛPyLtS}WƒZ‡YQ{IofÚLsLuUX[ÉZKpJpaÔS~ZMuKqSUÀWÅFlLrríYÉKrGkvôvóLsIohR|OxKpJoiR}R|R}YLjbӓaϑ_ˏ_ΐ_ϐ_ϏW΃S}rbitvsrrnWOwiclrvutj_Бcdoswvb̓aӒmveڙbԔlor\܍cѕubە]Ռcؗ_Ցg՝KqJnaq¬ju_Q|LqLsJoNv?aFkOvQzPxJpQ|}y~^vwxyxz{^qSSS`rstu^hiSSjklmnop]^_SS`abcdefMgQQRSSSTUVWXYYZ[\DEFFGHIJKLMMMNOP?A;<=>7849:234356-./01$%&'()*+, !!" # ?A;<=>7849:234356-./01$%&'()*+, !!" # ?;<=>7849:234356-./01$%&'()*+, !!" # Q|}y~^vwxyxz{^qSSS`rstu^hiSSjklmnop]^_SS`abcdefMgQQRSSSTUVWXYYZ[\DEFFGHIJKLMMMNOP?A;<=>7849:234356-./01$%&'()*+, !!" # =>849:234356-./01$%&'()*+, !!" # ?A;<=>7849:234356-./01$%&'()*+, !!" # Q|}y~^vwxyxz{^qSSS`rstu^hiSSjklmnop]^_SS`abcdefMgQQRSSSTUVWXYYZ[\DEFFGHIJKLMMMNOP?A;<=>7849:234356-./01$%&'()*+, !!" #BC ?A;<=>7849:234356-./01$%&'()*+, !!" # ?@;<=>7849:234356-./01$%&'()*+, !!" # lmarbles-1.0.7.orig/src/gfx/wood/arrow_l.bmp0000600000175000017500000001140207206510764017126 0ustar uweuweBM(   eÚPzidÙ?`R}fÛW?_rR|fÚPyKribaÔLs?`?acR}DhEjYLjvôríSLtPyKpMslcibӓhvóYÉUÀLuS}Y…Jo]pͫLrkãuodltaϑOxLsWÅUWƒZImFlUKpQ{g՝cؗrorv_ˏIoKrS~XZ‡XInKq_Ցbەmsvs_ΐGkFlZ[ÉYWInKq]Ռ\܍vwur_ϐLrMuZWcѕeڙvtrKpQ{JpbԔb̓jTImInaӒn_ϏIoBeBd_БWW΃<[?`@bOwS}R}TXЇAcAcGmAbAbInIoAc@bJpFkDhPzMsWLriVKqTNuMtJpPyOwJoKrKpCe?a?`|h|h|h|h|hp|hp|hp|h|hiz{thiz{thiz{thiz{t|iz{th}~ypiz{t}~ypiz{th}~ypiz{thiz{thqrsfthqrsfthqrsfthqrsft%qrsfthuvwxypqrsftiuvwxypqrsfthuvwxypqrsfthqrsftbcdefghbcdefghbcdefghbcdefgibcdefghjklmnopbcdefgijklmnopbcdefghjklmnopbcdefghbcdefgST0UVWXYST0UVWXYST0UVWXYST0UVWXZST0UVWXY[\<]^_`aST0UVWXZ[\<]^_`aST0UVWXY[\<]^_`aST0UVWXST0UVWXABCC#DEFGHBCC#DEFGIBCC#DEFGABCC#DEFJKBCC#DEFGLMNN*OPQRABCC#DEFJLMNN*OPQRBCC#DEFGLMNN*OPQRABCC#DEFABCC#DEF-./012345./012346./01234-./012378./012349:;<=>?@-./01239:;<=>?@./012349:;<=>?@-./0123-./0123 !"#$% !"#$% !"#$% !"#$& !"#$%'()*+, !"#$'()*+, !"#$%'()*+, !"#$ !"#$%                            lmarbles-1.0.7.orig/src/gfx/wood/arrow_r.bmp0000600000175000017500000001122607206510773017140 0ustar uweuweBM(   ?`<[S}OwBdBeIoW΃W_БImTInJp_Ϗn_ϐaӒWQ{KpKqrjb̓bԔYZMuLrtveڙcѕW[ÉZFlGkruwv\܍]ՌInXZ‡XS~UÀKrIo_ΐsvsmobە_ՑImZWƒULtWÅLsR|Ox_ˏvrocrcؗg՝JnQ|JoY…S}LuKrYÉvóhJoaϑtldbuKqu_KpPySrívôKpbӓilq¬jDheÚYLja?`LsaÔfÛR}c?_PyfÚR|iWr?`dÙR}PziJoLsJpLqNvPxQzOvFk?asssvsssvsssvsssvsssvsssv{{{{{{{{{{{{{{{{{{U{U{U{^U{U{U{^U{U{U{^xUUyz{xUUyz{xUUyz{|^^}~xUUyz{xUUyz{xUUyz{|^^}~xUUyz{xUUyz{UUyz{|^^}~rUUUUssrUUUUssrUUUUsst^^^^uvrUUUUssrUUUUswrUUUUsst^^^^uvrUUUUssrUUUUssUUUUsst^^^^uvefBUUghiefBUUghijfBUUghiklK^^mnoefBUUghiefBUUgpqefBUUghiklK^^mnoefBUUghiefBUUghifBUUghiklK^^mnoQRSTU3VWXQRSTU3VWXYRSTU3VWXZ[\]^;_`abRSTU3VWXQRSTU3VcdQRSTU3VWXZ[\]^;_`aQRSTU3VWXQRSTU3VWXRSTU3VWXZ[\]^;_`a>?@ABCCDE>?@ABCCDF>?@ABCCDFGHIJKLLMNO?@ABCCDF>?@ABCCDP?@ABCCDFGHIJKLLMN>?@ABCCD>?@ABCCDF?@ABCCDFGHIJKLLMN./012345./012345./0123456789:;<=./012345./012345/0123456789:;<=./012345./012345/0123456789:;<= #$%&' #$%&' #$%&'()*+,- #$%&' #$%&'#$%&'()*+,- #$%&' #$%&' #$%&'()*+,-    !"    !"    !"                     lmarbles-1.0.7.orig/src/gfx/wood/arrow_u.bmp0000600000175000017500000001140207206511003017122 0ustar uweuweBM(   OxhIoLsvóvôGkKrWÅYÉríeÚLrFlUÀSfÛKqMuZS~LtKraÔJpKpZ[ÉXULuLsfÚIoInQ{YZ‡WƒS}PydÙ<[BeTWWXZY…PyW?`BdImInImJoKpDh?`?_?`PzFl]UpͫInKqKpLrMsEj?aQ{kã@bg՝_Ցcؗ]Ռbەrucѕ\܍olbԔeڙvmcbaӒb̓vwsodc_Б_ϐjtuvrliOwWnrrsvtirS}W΃_Ϗ_ΐ_ˏaϑbӓYLjR}R|R}i?aCeKpKrLrMsFkAcAbAbAcR}TiDh@bAcT?`JpNuVWPzJpIoInGmXЇJoOwPyMtKq567#;<=>>?@+,-../01234 "#$%%&'()* !    67###+,-../01234 "#$%%&'()* !    rrr{|}~~fffZZqrstuvwxeffy`zhijklmnffop`abcdefffg`[\]W]^_`UVWXYZQRSTOP567###89:;+,-../01234 "#$%%&'()* !    rrr{|}~~fffZZqrstuvwxeffy`zhijklmnffop`abcdefffg`[\]W]^_`UVWXYZQRSTOPFG+,-../01234 "#$%%&'()* !    rrr{|}~~fffZZqrstuvwxeffy`zhijklmnffop`abcdefffg`[\]W]^_`UVWXYZQRSTOPN67###89:;<=>>?@+,-../01234 "#$%%&'()* !    LM56E;FGHIJK>>?@+,-../01234 "#$%%&'()* !    567###89:;<=>>?@+,-../01234 "#$%%&'()* !    CD567###89:;<=>>?@+,-../01234 "#$%%&'()* !    AB567###89:;<=>>?@+,-../01234 "#$%%&'()* !    lmarbles-1.0.7.orig/src/gfx/wood/barrier_lr.bmp0000600000175000017500000000225607206511027017604 0ustar uweuweBM(                                       lmarbles-1.0.7.orig/src/gfx/wood/barrier_ud.bmp0000600000175000017500000000225607206511040017572 0ustar uweuweBM(         lmarbles-1.0.7.orig/src/gfx/metal/0000700000175000017500000000000010063260672015106 5ustar uweuwelmarbles-1.0.7.orig/src/gfx/metal/background.bmp0000600000175000017500000063646607206511151017750 0ustar uweuweBM6=6(9  $$v`T@.*pR*:>r "r8,n!ph# rF<]f T+Pe R .hR&L > `0# e QXz;0h #< ,/AtI&,SR$H u> #LF%| dY J6 ^|U(hfu K#; A0` ".'>P4,9dF}$".1p-h *  V` :<+(>6 E)H(TZ.1$ 4F<ZO; JF X#0 rN;00(x'2p ufhB0:|-  .3 '-0ER>XT^h, 6 $` F #zn R-U/]G` YB\ P#s: ,/?$f<#9p/|J0>440(!#H2 z$$/,S(p mm]]]]mmmmmmmI''m]]]mmmI'm]]]]m''ImmImm]]]m'm]]]mm''''Im]mI''m]]m]]]]]]mm'I'mmmm]]]]]mmm'Im]]mmmmmIIm''mmmmmI''mm@@j??$$'mmmmII]mI''Im'm]]m'''m]mmmmImmm]]]]m]m]]mmmm''ImmI'Im'@I]Immmm'r$rmmmmmmm'r$?tq\?'mmmmmIm'ruuImmm]mrIImmmmmmm]mmI''Im]]]]'mm'''rrjjjrr@'I]]I@͌B$rrrB\gBB$rImmmmm]mIއr$B,2\zIIIIm]'r''mmmmmI'''''mmIImII'ruB$rr˞V$r'r]]?V VBu$'$uBu'rr$'mmmIIIm'?V$@^z,ѥVr'm]mI'?Bur'ImmmIIImImmmmmI''''''IIm'rrrr,ij@?Eg̥Brr۞$m]rBVuzu$$rrr']mr$rmIImm]@"urj ͞rImrm]]$BVzzzjr''''''Immmmmmm'rrr$$u?zz]ii"H B$$BiE\˷'@'''uBBu$rIm]]r$m]]]m'r'$zVE"$Im'rImmrru$uu@@rr'mmmmmI'rz"pHp|r''j$B, |333ii\ ѰEpp"^rImm''IIIm]rBHizr'mmr$'mmIr'ImI'@r'II'IIm'r???zj'Immmm'r^Hg7mIuBu,|axtƛ"?ur'mI''''˞^z^?r'm''m]]]mBz"$rr'Im'''''ImIm]mI''''II'rz"z?mImmmmI'ru" LLo%$å 3:Y99x3׃ur'mI'ޞ$rr$@jjjrrr]]]]]IBEi˞jImm'm]]Im'r''ImI''ruBEEEE?mmmmmr$VxQxb􎕳,zuð2̰||64(w׹׃ 'I]]z"irrrr'm'IIrB,}^z""mI'$@B˷$B\"B'mm]ru,i]mI'@a:UUabbƌEt3Z(Ћ,t$I'm]rBM^u$'m]]]]IIImmBMB$uEBr''r$B^@z^$ Mz$@^]]]mr$ ~;a ;aмbxQ++8JUL"u,2r''rzƓ>Brr'mm'r$^?z$$$'r$Buu$uuu'BBME$$?@zi,m'r$^;wګŦ`ڡC;+(`p$$ugדu$۞@? X铓 "^$$ˇ'ImmmII''''$u$rrjr$uêVVz$rI'$uzz, tt\Bu@??B$u\mr;<5C+(&+y!##`9+fk5cwS,BQQbppp3pZ~K2 "Vu$r''r$rI'rrj$rr$^"iΰpiVz''rBzE\Eiju$r$zm''9Ywc[+NT)&ֲ;h&x;C<+QHiurrr"^]]mIm'^urr͌͌pzIm'r^i,$'Im'rm]u$mmm'zxܦ(y SaQٙWTCwwLSSQxQU~9+cc~է~5CZ[Ocbx \Htm]Im'''""E$rrrzi,B$B$$r'III''uΰ\$rmIm]uummu{{<c>9**!‘CSccb>qahcC<+RЖS5T#k=y!ykw5;Kttx>urImmI'''B\MpV$'uu$r''$"^zizurrmmmrz\tQ"'mmruBmmmmmmی|seUbUԟQFTF#[+`69(c2oh6ZSxaܣ8_.Qgg::|$'''ruȰV$'mm''mrjHQxVzImImmruEp Br'm^iêBBu]mmmmImmmm'^H%b׃vKc[!=*`&ܡ`OZ|9(vY9 Ugxx=.W`ɓX;Zp>222Kӕ3xVB$u^^zEE?@rIImmI'zpxU{{pV$rrrrrr$$uumIz\ izmmmmIImmruLx{s*cx B\{ c6 h`x Bur,,gGb BVpM,z$r'I'mmmIruz\22mmmI'II'^ :UxxxfecC<*!!8!`hCk44y`)cx~{oИܑ#ܡ{+0lحFxQxS<(٣N6Z VLfX3Cy+`*![Q "^uuBMgQ \|Q>MzImI'$zE 2>>mmmmmmI$BLS 66RZZ#8kN46hOO9f#!!Fcc`yW&U;[FTn!TN H}|ț~R:CyTkTNJ+[Sɂp Lx|x,,,Mg2׹77i$'ÌHp>7mImm^Hyyw R Hp\##JJnNyO)hw5#TNwQ|[[(։呲=WW_y9wy=ll0nܧo Ss]m'$Dܑ+NdaCc{ \SCw8n_N#&O&###!#pLSCF!=kFy#*=n pp xa&n00؍k5w<]]]]I$"HG-1aX>x O(.yLH, Qx33R [Y+ڝw5#Ny:ShOU<< ɟ}kk*5YaoxQGaZZa22Q)! dcTll!`#Tyww<Ÿ5waZZ]'uVsG׃ 22׃\x7Q B$u >ן{Yէ{Y6y+hC<61hbeQK;+T4N>R[ 3>,B$uEtד7pxL [b#!*#w~Q>>>%g SZZ;;|xܒ!֣!=!9 ՏC!=y[6S{ ce:e[J0OZO0FFky!mIL:xx, DZ+9a\,i"""QQ&{:b­(ggM\|Qq7gʐ3b| ;CcH[|777fc;C5Ĝ86LElW!yyymIBEbRQȰs>h9&cHKX--x,, qѰX[񦦸B,KfY6DQf;h8ֲ;xǎxƃ̹2ה>U~5wk*nnNn==Ny`c|,EɻGGeda.&7:6O5 K5n4²H0W8&6 +mmIm]]r b--ɳ,q>Z&­6p\̟s9*U3QMu${9c6SSd<;hO֣AC9Y,gg>ɨ/Ⓝ3<9(TFT Br'rџfʆddȋN肔[TTkSSpQbeY+ +#T 3mmI'm(ZVQ:Ƀ>ptq329.4b݃Q1} gK+&6XKV"x:Sܑ9Y;ZcCF(*k.YxE,33 v 9(h6ژcw9}3\u'''BE:3>cOCէ*k!kTyw2H͒.k Ղ2mmmIEpQQaaФ77נ99Y ๓>QL|-b Hɻ{Lxxxc..+|L:f9N!*ģZM b{x>2Ґ9 [&S:17"z$rr?xb71p6cZ ;C6kkcw(.г\,>З1B,7Ga~oUЩ(¦6HtRYnnO |6ZMg2>a a Ze-2MEpErI^\>~SZ(9k8=yOp:dF>3ưDNJ[ 6 Lm''ͺ77} fGUtt22 H$Ûq>>3dsuuBBÛgQLQ9%GװM dzדKQ|i\q7dw~̥$rEpxQ \Y{~oM>OФEEi x50#6} Ny姏ǂD[Ys$$BgtHiu$ΰ3K:c;c褗F!=4)H{Ջ|xRZHH9w5wFmm'rQq2>Xgpa~>RRUb}}fX &!3,6 d;C!&-st77efab/'|gg2>:>>>>(48~=!TyxFNnnnmI@LK>g>g2>Q{RGG>22>bx9aKరQbx,EL>9xx KKQXKSwn¯a++C)O2ɽ{9<ov3v>>|R1-G|x3>vKUd<<;Ь+y(C`!\Lb7%KQ||\, ,ppBu\7p$$".֡9 ʐqR:17gLbQxRah4呐h`wIm'$"|{QҎb9YH>gsvUSZ71ǕK 篿FZX19+GX՘;U>>aʘC5nZ Cnn`6D--:xzB, LB73,L4&SZ ~R}o2,XR3>2 ..(pLh#mmII$f9+|K:Qa睝2;bQKU3gv}uB|Z5Y~`!+떂oXX Mxbc wyN 4.69K$$$$B,ƠpiuB,McS3ZO| LxbxxƛiiM欐cS|3>;xa;w&Smm'ͺ{ʼ7xxbbbH:KKb|3B$ppp{  ccէ4G1^,,~Z aEL+Nyc;YQg,V"iΰ3ƛzVV|Q>>FUEE,MM,zuBѹKyN&\6SxUC6III'ͺXx3o>%:x7>M\qp$uMƂ2gbc#YKǐUi'$uB|睝gQQQ;aKUb33Q}׃gBr$Bib;TT;x\B$uMMBrr\ Wy aS6**ŝ<`hmm''ru >gxƃ>s}:2g~x[xKQ9ҳpbGLVHt7Ȃ:UHZ36yx"m'@^\xS:7>>>Q>:Usɔ7>HzuƔa 934&cƠ \\Kr$uB`nυK: 4yCx<+kkmI'i}s>2g׃fʤ ΪSSgxhw<m'r">+{蕔27>țY;U2v>QY9(.UU{33>Kzz $ p2gУ aM$r$pCk:%X3xRBBu$B }X ~Q1KxUDg27:Y7>EH"p\|xv>Rݹɋ6mmmm]m'rz3xqqɕ|B,gp,73 >g2LX2N…33ab,ê,׃7xK׃ư xmImmmI@V>>Q>>KbHEX>Buga7 Ɠ ⓃQS)֣92>3{נ"u {f}iz"^B\p[. 8yQ\"zuEbbx6٭zr$"̄}H..Ybɕv>+$\Ux3&nN&ɰ1113p VqɕU>,gmmI@Q3Qa%XvBoss,,EGҊ(p|U>QrrzY"$i+k6Qѥ&A=.Z2v2\iz\\tqqR9K2t>-:G$EogL[+YgBXtH'mQdž[Ox|mmmm'r^q7%%ԕGoRXMbRҽQ\i{x賹vxx苌\xdK>"r'zQ||$Λ^.0lФ(ŝx,QTįC6 >MM,uB"g27v̰>SZSb,\"zG{Gq2LSr󄄓 ,bI'z=6SaH,mmmmmm]]mqɠ71|Ȱgsx3B$q ̠7KHL> 3}H$BImr",VuuiLZPPl֡SxL~99+\BMC5< Hp1>$rg2>qq$B5*OQ,B$Bz%-qq>2}prvrusѥCW8T&3mmmmB q//ݓ>:R| g%ɠׂ\$z3,̨ \3gѥB΂xyoq "LR9!0nդܕ>$i͋;Cex| Br'g23"YTu$zEדǂQtѰbL "@@u 3ur$K17zBy숈WNwUgmmm'ruQvv>ƠQp {/>g7irBH"russ}|\݄v2B\g2Mp44Xp"$$ppHQ+9w0ؙNx>, Z(+x ߂{;xB$΃bRQ<Įlّu'|p"zz^@j$$?L13'|>Xt<_WWW(mmI$ Qv73GM,Ȱsaxg"r$z''Bt,, >|pB\tE..|gê :K yٙbX7tbb{p׳7:QHVz,g:G{kčWqB}tK $r'zL}d%ɪ$B$,q&(4=88Tomm]]m'$H3b|bs>71ư3H|t2>$rBBm', q,i }/v|^^>R9dK2gܐ攠>9{ЗHHHv>>ׂ[9aRxHV\\Qf<у>H;RqEz?}77'IIIImI''ro+.yexizruư,""ZppHLxmm]]'rB s3DՐR%12ןs3ɔ7|pgg2>u "''uL1Ҋ,2v3|Hrg,Ƞ+y:ƃa`ퟠ,,1GY5wp\,΃2>x;w<+9{""QexMȰM pE z^^"Hp \"r'm''IImmIu|SUKY{r'mmurBѰmmm]]m'iR{Y~2>7{{K>uv2,EiHq"r'r$,|exg2Ѱ>2,B""2,Ώĉ&QOZDEd<g,BMgcН^$$Bуx|rrrm'r'm''''rE\Q+YR,rmm"$I]I$ggg2mmm'EQfYoQQGҐՏxR,Q>$Bt2,r'rHQ ~giΰvgH \" 6`*n؍.6H q}tME\M g\ ̠ \\׎Rxa6BrgxpurI]mI'mmII'mIImIrB@u,LZ6trmrIIrz\,Ȱߠmm]m'$V|:R:\2\,Mi2QÛRH']Ha<3}߰\pMƠ3+#CCFFaQb;Qts-H"u$@2 LR}>pȳӆ:x̃u2i]]]m'r@rr'I''II'r,x7"o,\Ei$m]pBBz\2m'o3b37Q3V΂̃ 'L9(x7:EE>džC#ٙU2V 3׃MurI /7L,Q,3~RUg,iMr'm@^zur$Brmmm$|ULEeo3Br'IIm]IL> B" ѹI$RfФQQ픹vׂ3K7>>EV-ヰg,ar$YYbg>qbQggћi qư|N[U7zr\>L$r$>>H,x՘ݓgiut\$r'ͥM䋌$''pf1x|-уrm]]m'mz}s-VBuMm$VҖbvq>v׳33}q12נt BBE3߃3Yƞr$-g>{R> ̥ug|6[t|'黽VÛQ\BBV"͌,ȃ99,ర|a׹ 3tpzr,Hzr'r$,\iVuVL+({9|r]'m|zr$,vmmmmI$ o|vt>3ssKɔK7s1>2rB͛g3BrrB> gG~q2,B$urBKQY ^'mu%|Bp}s\}t3tqqsoH,K>Q +s> u>p$BVq7KRЖQ | ~{YY+9++|\u$$muv> mmIu,וҖ|,,>>׹22gggK>׃Q{"BȰƠ7$B"הRt7q2iiuB?--ed96u$v> x,V,xqK:x(’7sQ>Mz@EB"HLZ͋xSҖQ>L~ИDgELwŐ|uu?͌VurII>t\rr mm]33x|,u䠠>v222׳Q,||bt3 H'r$EvדgpL6aqtg$ù׃v>p3qXZ VuB,gƠ>>ȰKK>ׂ aLHiu$uBBs9Z66L>3xV\$˞uvx.=+%铃gV Z ,\,,\E|;9L r$BÛMMVE:<mm'$ qɔQu-ɂ3>>ưx 3>7MrB"p XxQb׹X,,Ơ3$rrQ| UXYD ""ͪ\9.+^uB,g2B,$$r$vX<n+dKg,KXg,uu^z,,,,\B$uQ{9Y:({| 3ʅmmmImm]'$\Q,,tsG̠M,Ƞ3騂ur\,1Q:oa uu̠>>>\|iIIHQp `c|{~~Ղt\:w+rgMΰE$u\3>3awp\Ms$g%o}urB H9+{QHb逹\E>|a',>>33>Mgsxx,g22׃g37ݨ3H"z\,9w~7 HRx$BM>>,x\Luγ7H||U+.&>ȃ}R>>Ơ>>,UoHVu$?g>tt$rz|KQqHEzrB11%E$r$7GL"ru,x:LL-%>gg|DZ'\3XQ}v> Q7QȰ߰gvtq> }׹,}Y 73$zL%uzV\Q3p6$m'3>2EHX9.b>xZt3:ME>>7g$@H-}pzrVg>i$rr$7ɨ$׃mI$iƕeox6d/,|L6O&rg2x,\gg̥E,t>77X-xʢ{svr$>݄vE \QK-ӔMZ[$یXEXc`D7>BB3S(~Rsg,>3K "E>X₌r'I@g\uB%ɠrru3>3ѰuIr|Qu${ɹv2bԎOy.m]]ImuEKǕbXq{g7$usQxҐUQ:-7\EEE:3ggu$v:,уq>GN,ur gu2 פ~tx"$B|fcF(9 },gR~L973॰vr'IImtt\EEi,M17Ȫu$Π>>t\$m'Iz|7>Erz͝gmI$}s:bbQgg{ox,ru}Q :>7,ȃ>װzS;,Ȱt71K:9y.4 $ tGvBg>S   +yNx$,ga+|Ȱ2tMB$r$V q,BE1HV337''"|v2mIruLHE,,K mm]I'r? s7Lq7ɔBrruQ>2Y:|KXƂ33GѰ 6hn!;:,Ȱtt}敤xR9ٙW#r;;sg> >9U<9f~aLg2r$"gXeSFy#ha|pp\Λt}1,1%1 ߃7'z>>̥$']Iz,>2>{w<mm]]]IsqHxv1ME,\u2gQ{<a:1KqqqqfGЧϿդ ,,,|:xa5k5z$BHL1/t2b;| 3$E>KL 3k044y5y9>7,qq7 \,ד>Ȱ2tr$Vq}I]]'ru,}g2ʬmmVLs>Kvx:3,B22g2Ge:锠Gs}qtg3(n4Z$K>DU\$$"xxƓ -:7t3v>țEêpx>qXvK1=WģUQg2,,:K7tQ>2g>Xg,\êEXrI3>>3>mm$i}1K323Xbb \\\,,,tq>gtQ-gR ΥM,,Ͳ4W0zz"$$BE3}ȰMpQ,a7ssxt}>g13\[[{{ӕx2;#ض#Hbq>:K3M>s7נ>q,ƥ\\ߠ郛BrIVD肠>227m'rzt>Q}׹qt>q>>E\$Bqt3b Ƃ}x"$rr$uuBWD2EiHp\߰EiV"z,2stqqь^@$ub3>-R|,ttΚ¿+>>K ,דay؍wxQ is3|xbX>gKR3p|73,,>E"᝔ݔݹ3m't72g̃g2q}|\$uuu927L $B\M7Ȱu'@$$^r"L`v v2pppM$Br$Ã,\$B$'3|๨ѰV(LL:oDHMډ02B}\p%1/>t pxMBi\p,\p Ƃy5xqɳ3mm']z>32>3ư,gq--pi$}c BBr@?^zBVȰg^rz $rr$E,LDЂ3tsΪ$$$rImm,>Qr$,gt}s1gVBu$LaL~狰KK!B B?EvXx| t,|E |Vr'u,3,BBEUʬ >v7:mm'$߹7g,,,ME7Er$,2tV'rrrr g$urr"pư$rig|s>3Q$V޷]m'u>'Dr$z,3Qg,$r$fo aXN` M\E\iV"ΰgtXQp \\E$BMƂo}"rz,тu$uUUe:t>2vqRmI"QK1K3>22>3xb3ǂ$rr,\Br'rrru3H^rr$"LHB,̃ƃX-K>q7pri"ruV\M\\ur@$uRog,Eu$ gBr''mtKsɓ숈x MM|o:22g1,B$rrr$gߌurruiEzB$:逓>3>m'V7s:37q>gbaUKtQE\V$jj^B$̓q ?ri %%xxb>qM|Ԏ||M2v$uB$$M "ur?,QK>q|B\3QH"rrm$߃g׹72axxHMQߊ++g3I]r$z>X-GKr^"iB$$۪\G-/-G}, ߰gIHQ|\,Ks:3MU:ɨ}qs77|߃BziB 7L"z>fv77x1g&{6דEu''$Eу22 @zƳɔ| 2niVB,27{4ϙ5Ѓ3 ^tSyn8T,$IBi 7敕}zuBBEQ}-1|bs>mrzX>3L,\MƤӽ3Qb2Ƴ׹K2g,,,Ei ݹ u> ;U333>g,Y.N(¦S│E''u"H 3v,u''$g7K1e3E,黼Qt'''ru\H3ד2Aa>BrrBgu|6Wln+{߃>i$$Ke3gѥ\XXZ­ܠ2ߋܝ...9UK7eLHzraR2>r'm'$gKbbLpvbxtM"r''$^DRRbxxEuI$rrd&F< DZ1YCp$'@^Bu$$sKaSSXS;Нm]I3227}߃2-QɟRQ,\> 33gtt beR}|,Ƞ7څ4‘ț+~p*!!:G{aE$?+93gE"jr$z\Biq>x|BBrrr@ ~Rb||acQu^Hi$MHa<22gg>227 ,$$BpQRs}x277Ƃe:x}tMpZ B ,pxxp,2Q|б<>Ca|pbƃ3g\Vg > B$Iѹ>Q>.U,ttgLx px:RxKQS6hNwǽ-Sd>Π>QEB\373h=*6aF؜Wmrͤ- ƹv}\B2$rpXs9լưƠa >>{(+{g2KQ:Ha:3Q~됼 Hp3D69RofU t2pm$2>C#;#0NTm\pHHvb{Ћ,,$$>ݓ$B\>ܝ|KYc`g,$$ꎔLqqo™Wne>ZCSLE,pc(.xL£y9s>KsXtBr$B w5 ;gQ苝bg>3,G{|2gȥ}s-ҤuuV\nnn}gx|>xL"zB\_N&T00ДQKRՎ}B$uHh40.xQ6y_55k.J//HzrrrBs…\ >bxQ3׹srIm$%斩CwFwV͌m$΂K q~HM\iVx3iBuB,>Gb~a׹tQ7Qx\r$;ЧYobba睳\$$"\Qy00`* p|%fʖQE0Ř|a< {+.4!T## 87/Bru}s{p\|ǽ22g7>sa$rru ;yn:,,Bmmz1¿胂qK3g2v2׃M\r,$q,ߟ|ɓQQt͞ImI$p::1KL +:q22E|L=순_ y:x:>t|aw4!CQK7>5kTTa(5ZO壅5a/E,,M,o3Ȱדq SK7}Buvyn $$m'rip}ǕcNxx>>>7qנ3tvK:aH"HústBB ߔg22tțr']I'Qx[蕽K{(YxKg2x9<[[=l_ؙ_l73KXXqx+y#H1bN`xwcHc``6eQt3> p,,fț37Xstp L 311Ы`#=|2$mm]]'$bx H6bx{ɓqg2huiE$B"g223݄72 z''r 3QX̂GH Mxթ::<|37cD݀36OŬKImtoʘ L&LQQ93>g:9 ê>p$\Q2gה,2txtgȌ^$˷r$t3ߠso:{{,,M2>\ 4W*TCchcc >gMHQo9(##`D3xd~ZbXݓKKdwxQb KU[COCaMmm]Ir\qK:էSxc&H;ԢY,vvƪ$|fK,R VV$rz@$ug 2>-GYՖ:7guB$uEy00=hxx>Kas3ɨB2>+#3 )|L5n_4Hurr$׹ <<{7X>:fSfeQ+da[88=Qg2I]BUabլ> ߠ22;&n&;!88=yUCTę՗u$3<{YYeK73K:K3K>3aw.(kYx 6C72m'm]]'\ƕxxf9wQװ MEzpv>}RDBIIr䂧wFC2V"B4xx7b7>L>gCO#ţ4;<(.y+bzzV>X7ffռp b:3x¿+9[p"xx+<s7mIIIu::bbY< cʽ3EE x7$BEMq>L i,,QUf{dzQ"B\>\ \|,}g ?$B7Kǎ'mr7;2BU+.²|7X:}|o{3Ȱ7tgDSO.0.xg <9D>3L:fxQbqQ;y6[$$$ 71ɂD#Fd>qKII'$ΰet3}a9<6x zu$ Murr >>2gE,7:UKMgBðһq 3,Ȱ\u$rr$,tq33Er''ruH̰E"rB xDiNJMQ,|Yfbaō0xxV\ EB,gQeǕKbC5HLBBg3a+ LU>>I'ru|ƂK߃tQp\3VVB$E,\r?6~:->gȰ>:%|qpE,77,\\$,qg\jz" g>g^|u,xE,׃\ Lx3p \,ȥÛg pp\E$-XX/;wyCbxpV"??wa>>]mI$"fg33 g M \׃i'rY:Q|Lqנggs>ǟb,,tX2tpM,EB$$uiu$B[{b ,ƳQGtêp ,2׃xLcFNN |#J0y p ,Vpvp̓t,,3vv>>/e5yy#9xovg踭hp >pQӼQ׃|9Y ̂Qxoדj" Y9QcU3q3>qs}\,B^MKKgg+i,,\"", r$,9+Y}E>>Q}ߔ-H\11QБ9&TW윍ߖ9.4WlJn6H,M gBBg22>,,ȓ;CwOX>Thpg>Q|HHimIm'r >g>bʢb>3Qo뢧cЎ}MaK3e3>2tHz'r'g2g(Bg$mm'D-7\tqKXX|aYoXX> |v %ӕO0n8숈Yn04g2̹v>||̓MuuEMME,zib~ ZUebaCxo󳠤ЖbQQM:faR2|xݨaưM QK׃\zrmm'r>>3R}ҧS,,,$z"" >um'jHt$XX3Qb~Qq>|ɀԼ#W4ٍ0؍9|>Xh!WW_3tt2q|tB@$u M\z^""pswf:b;ЬfQME>3\m'rz 73QRbKx3ȰX1K:xb2KUM<|p$rr$uBM,E7K1Kg>3Q,΃BB^B2??r@rqQQEp, V| Lwyw4ٿŖ׃gg2ggQQQנ,iii, థ\iB\qw+w;eesxzuuQqt, uEt7a~~>Q-bb~gMߠ73v>|Kb7L.5B2>tts:M>3ƛq\$$|7,''''mIrio os2urrBE,z^͌ S褳K3>ZZE,xEbb>Qт3߰,,\VBÛvXKŦZb:7qq Þ$r$t,z1秏>KUa{RMgt3;"瑬Y.y'Ih[Hg}6YY Ezizibu''mv[&{YGII'rrru,r搼|\pg23Q\z kTN6Y(-Q173>,ppv>>c&FF򝂳:􎔳3ur'''Irguȹܝg>K7>:3g>ttуH6#"HQ>39?@I'I'hx|9uBBuip$rui"u,EbY99w6;{mr'm]zfq̠r]rr?L irr$QVggE Mtg"BW¡(.9Xpfד7,\,,\|ZC55<ʬ| ''uѠ׃mmIr?E1DEg2g>>>>vtg>>3tg>t\,6y|,ȃ\2 >7HzmAk`=!$B i'r^VEEY*ŸZ+@']$L,Ȱ$$$>\,萐eBu䰰ƠEg̥ayΪVz,u"E66+y(F&C$r'I''$,>73m'V26Lq77>>>72>:ɓ>3,_llhg Q2B'IuQ4n(ܘXp"rr$Ɩw&ʝL(r'rrrࠤiB$å\ u ѥ > BEƃ EE2׹|1>MЯNZQ5+|pL7-K3"zu,,^?pY9abcC!.n f}"$rѤ2Q'$VeaSZZR-32tǕK>Ԕ>g̃g,M _0CH2s$Bm'Bvaw(0yդQ H>,''u{9xТY- m'r" M}:z$"x u'IruBis[$uQ33g>>>x>QS5:>gN*yyդK3 $$giG-Q衅+qBH2p3:S~{}sҕg3:>ggg,xa+w|}73ME,Y{B$ۺBImi22ZC3,ERӻ,$'''$s|rm'$V>33 mI\^IrBK97vgB^ip>7q| 7KUC9oqЙ؈0y>,7ggț\,Xx,v\V@@ruH3 Ir"aS;ԕQgQRffxgqK>\p4.gt3HpY\Hrm?, ,Brruqss>\]mIg$rrr$turrg,ur'IrrrrIm$Vg D7XX1X iX5F[MN P&7gKSQѰƠ Ϊ"΃>vt3EzrrrȳLHg1--ru[h݀qQ7{f33>g2>QuuΌT`|v2یL(Lx%Br'r\,qB$Err'ir''r2X$zz"דqB'j^""$m"p|>2\Q9(9-1ɔ1%%> E1wk&6}Qkٶ#hHg2׽{9f׃>LQQ z~[a|'z :eǔ1mIi袦`` |xQ/zuBM ) 22 2Eu$ȺSRvu,}hEѥB$r]]mjBVr$z$у$MXɠr亊b韺\BBL}r'I$QK:x$|b +0g$BD}v2VHME$]I'r$ ,$$ƛE$>1?B΂׀q p\,ip1\]]'u99f3u|Nl!6xM7qtƳ清UǠY9f>qQsԽK77>E,g.(h|K:ƥx>2>>g{REzruip(ūSggMVrup|x,iH}79,B^r'm' g?$q2HUvR{ ,grB|}svg,zj]]B9>rB\k W* p\>̰XeCQ3 ->K>7/׳ru5Зד!.N!*eUI'!~>v>QaBrrrrC#`ИOHggEzr'$,\VB"HוUx׹t߰H͞$m]]ð2?rrq1b7ZpMM\rru--- ^''rf+`L3q^BbT5ʂMpx>,Xebࠕ7ȃo ׹X/3$'$иY+2 ݀蘫y!nkKX'?yy֋{>Qof ruH묘 *!CM2ѥzrg,B''ruHp733xNx$'m'@t VBq}\p΂ӽXv>,,Þ"LɔK1}L Q;wT=*CǓɊb>Ѱ,ȹ71K3GY9oנE/%R< >2u>X3$3թ9…>aU(+1eIrpbS!+[bɟKKǕ{xV'"9Qƃ:=_ viB'mm$i t3yirrrB݄qt ҆UbL9 ;96b >7H>>j|7:eDЩ5C%->|>>719{,K577q7ݹz$BѳyL>gvՏЎKKKmm'HD[ֶ;|Qx߃:oQ'@h,vٜ0(a2 ''r$um'Iu q,,g2\pQ\uB|\B$zԆ::Gfe|,N常Y.[Cy.=b3в*TFf}um^pNT!kw/ ;V?Ƃ73EQЧwwCK,t}2ׂQp2gMM;>X7Q>g37m'rua[#=k5;||x3 $EMl g>0Tk6 uIBr''mmI͛g DʕKs\ȃiB$rrQ:f2Q|>+y![ZZ#cfS(y<> mr:(_0Ny <;-9991Hzr73CSQ \| Ys7q,g>>2U{a->>cn9223ww떔vM,mm]'|===(2YaxG:3̓vtb#hL>T**cxBr'm$"BmmIm'$uB\ qד},tt ,ۂ:U gxxky[LB"z <9|w4F32: ''z>T0SR{LF!ư7>3|n5 g|[lln(Cb>B^m$QCNyN!*Ŀ&2ȗY<Y2> 2ъcWcܒ*֣Y7$rz"uj'II'j$ͺBE|,Q̛rmmsKv2ttH|N("Brr$V|:;9 "uLJW ʐQ3וC*y+B- &xgv1>,ppEȰ2gH0N< QWh_蠰$rmi[&O!4Ng}fUx|hw>q ̟n#nW`y<2pjuuBrrˇV\Bzurι ::7rד1ɳqtE,̼4$''ra:QE΂: kpBj>pJTc|3eDge[hO84H,BÛ渣8ىkdU>7X%a>zg>L;3t n=nD`gLưgr\"$B"@r$Bi"V",̹2qѰQ7m2>XBHh! umI$x>zuuaڡ[_V™00:x7ԆwWW_(o|iB\qkOab3K733bY|>2gx5CyNhZco|Br]I]'zEw[C`44X3Tx|p>cNc#|6xvxLg$u QEEߛu$uBiVVBr'BE7ΰtttɕXX>,'mbR{EV"VHc5NT9.p?'"{.Lq3K;T!w,Ek#F[Yx|xUv2 "rˌד߰,QQ22gx Z|Hp2L*lnkyx|:2z۞V\}\ t,$r$BBêurE>$,p $rr$ƃ>:X$rr$3%G%,Im{o|i"ELCT. zr$+.+a,:S#W!SMƥQ}f9nnN&м$$^ 3KȰt:g{fQ7tgm''mm'mmrHyb{<ܘ>23a4xMM 45n >ɂR՝\rBqɃ E"Br'uB,vBE>\rBBuB^$z gg2vQqVii7%-s\']]B\M| y_+ggQ,up>|L wpB$zNWn=!``[ piii\H< EHHxԂq%1|p^$uz\߰iBu$mm$EY((xx| |3ggKLD.4٣,ggg P+FK>}9Uu>vg$r''ޞBL gHV'mr$$$"p׹2 Mz]mr2gM\Cn\Ѡ,tt%t$$%|x|Y\Br22VI'r$u*xDIrzzxbxqXMȰ๹픃,ur$a|,߃3bHE\B}x|ưHj>QxO4b 6kk#Wn88.0WWn!aynN(;sXvGݹu'r" у\Bgggt}muȠ6TS}32g,,t}xb!J[UXݹ ;5PPh |ǽ2t $MvɳQ|$rz,l5w9|E@","BR2E2>v2EzHpZ4(;2qqq72,Bu^"z@uQRx|7>,u'r׹>>bZ6Wll_!cf-|HELc&5։T#T숈4(dlٯ>>>>ץi3MB2>m,L!T胠װ\,,bY !ȰM P x3b܋Q7Kfob Vg7Ԕ*(D$r@pxč4Q]͛z$i%/X2,׃gƹ2 ؍cst̹gE^'rp觯wSL̃$rzi Mk؉ӨqqM##=8#lll_fTTS߹tƥƃ3>7B$,>׃'zaT#Q׃gpEg+! PP !C-%ư JPP F;UQ:,u$^V,Q!kBrrj?E04’\$\,uBXV\q>q ݃=q$m]$b{9H,߰uVxܦNk!TNx>,,g>9n=։=lllWWnh6&Jg2ఃQ1/݄u$$EHLLa7mIrzkڗQ37>3YAlGϾ6bQyZ3:qEѰ|baOύ5;|i$rriEL񍍣d,Buig> p||M$B\㤤, 40Ndx>g$']]mBU:KEȰp KRl.yFkwy.+cLƃw488#=8 k[c>ڣ4w\g߂ fb31%%̠""L<mmmrzELDܲA*TNwdeKg6 ) aQ| ؾPأpQe:ZS:K3BBiiMtQx95p$r$,\haV 33vgbs17כru,r$xQMÛ`C5w!+9 QX"$]]uEu$Bx:U:Wģ&cL [pCN4#`N_lWnL2x[DD9717נHL Z&m'z !*0NU36ScFW*6QC8_ϙx3٭Дgi ర:Gc#h Bu,QgG:t$'Ii"uðX7,yW٫af H\>7>2rImm|V$uMw5NęT a |3 7X蝧n5ŖڦN4[ƃx,g2fCZp ſ ݓ>37v>[!ؙ#ZEm'zMQ=8=W*h׃QR{+ګcxbTϙNwk!A 2vɟɔQٍ0n u>R~g,Ȱp\ ݊g\Itiuΰv1>,\px_.v7buuXӽ7i$rrugȞ@"bFTNy;Q펎v;Cwű`k&QQatqQgg2KaS5.ݹ׃,2Y40_T M+JJ0S:>̹הcl 87K*!6;58=*x}>ߠxw0lBu\Q:2E\zzcM$' ijz\%g>|9{X7b r'r}Q~װMEjIu HX1`=Lvvg\!#!nWn(yګ[KVQ7Ơe~RL`#==*G>Bf,tBB2 [x,$"uz ׃QKv>pz'ݹQ2,r]^L66:1ǸnXi23knTčٯ ZZ6C \\3Mtqq>QK+.!633ga{ʆɳQgȃm^E6`=J l윶OSCNZ7v>Ĉ4x *=+볔xDofa!!J¿.w\\}qL)=l;,qsvg>>gggg$rêurruiɂgv>,>7ưE$rrqvg |ttB'riٍ4ٙN6Egɓ7tpEQU!#*yZw(L7Ό,ursvX(4:QggנG9YUa,mmIruE|ba8Wl쁶ګN>39.l Pb7S# ~UQT#Ocnhc珝x[Nlƃt>׃׃ț>6 'Iz\\Vz$$BEM,2,QpH$r$Q}Q\I'$ wl!~)kᩬxM\׹7E|5**NTTy>董NNgMU@r'tg6*ę<:v>>>>Qef3MEmmmm'r$BEx O!ll*k(8ɃQl0勗O=Wn DFkN`)h)*ll W=)Nk+¿lW x33ǤgxcCdԔru\\\V>1ǔ߰||f~x$B|ggQt}Br''r=0N Ƀ\Ȱ ,,C lTڂŅ99{Ǡ"$rvcO3>>>>>>>71K%2נưm'uEp諡O8l=nn8Nx3|HLllllN=lQ 6N8n8 8WWk*N0ll =63>>7Ǖx寸eB$z$ä Mƃ>XX>>xՑ+wZV"|qturr$M6)֍nkywUX,|UeeLCnllW032LwdмʬǂB$ Q;hS;5TnW6Q>>>777XXXX7/̃mI$V\p|x5#PPn= 8ll8hyWT6&5`nWW0J00PPlJlll *8l!g>>QQRYwwUQBBExGӽtg1ԕ7Kכ,ywДU:>׹ z yyO`NNUxpEDCk(wcZS&NWlWW8nkSc5y<>x5Q;…Kss>X>׃>2mmIrQxSţWPP lT==.[&On!`)Jl8kOlPؾP؜ll A8dvvQ+(;,,G-7>1e-vH LQkK7Q3>mm'$VEQ#nWP l=A!`.[LZ;!!AnFAJ lWPPPPP؈PP 8na223햏S3 |UUɔUfeUǹZFkC5kwQ3xД /Z؜QהY~;;dYNN.9q +>կy7ScTW0OĘ lllϿ>XXKKs3Q7mmr@3S`knlP =`)!6p؜lP#hhAl_PPPϾP_ϾPll#qgaSL\3>}U::KU:7ם9dGůyH|и{ ⫍lN׳vv2f:&F!!N.|xUg>v7;y>35Į7C  b& SX1-ƃ핕m]m? 3x6NWPP n`_ySx 8P&yJPP__PPPϾؾϾ쾈숮=ODQtg2g33-%L2q:ФK:b::{f:G4yxgN+% TT>>UUƃ׹ЫSC9QUC5N&Tl*b##LXXK>>ߠʐ6mmr?PPP 8h.ny숁P_=9N0_ϾϾϾؾlWT&D>2v׃33B>-a:ԕ1bb3:+cxQ2נx݄Kŭwb23̃+Yo>>vנb;c 3,,||x:SaFCw#lllZ !lĉk&Z77>>7>2vvׂ5N(]Igׂa!P_ lP&[N=왦TPlPT64_ؾؾl왙ag \ƃ$B3{:aXR}3>Q33Q>>>|x|Q Qʕ7/ N4..mS`= Pl!&l= WPW lP!O!4__ϾϾϾؾPlFC>,$ip79UUa:bx>gQƔ7 >ɔQb7v7>C|KXq<(N.n Ȱb99a6{s>UǕf;f1XQQið3׹>p3,sQ{> 17>xa;Qq>aЖ<.00lF x|SwNF-o`ֶPؾPWlT` Uf9+U:q%133xUU;0&L]mrTWPP P=*h[06bNWl  0AOOϾϾϾϾؾؾlPlA6bMi,M$V\K:;9:> Bɨ9+b>ts5…դq7,𓓳>>ׂx׹2KGUŦNT5Tn٣.—X> Lk _8ؾn*K%Ka&55_#D]]]rz&P W TOىOx P ll l_ #*T0PϾؾϾϾؾϴϾϾؾl숈wt, BB7bKбwxMBHד>(>􆬡Fny;q,Ơ17;H>>(.K7>xh֜lNTllnykNQ>gxn=TC6`_ؙfUa;ܘeɹ7KLFk!#cr$ 2`0!27bc#!;: gB|xK:{Ye:Y:5ٍ0y>LO lnWW#hg2>U 5T#*CUx.N&6C[7퐦lll0W(CmjE>c*ę숈 l숈PP AO#;ahJJ؜PP_ؾϾϴ_؈04wݹ߃\Eq->`čk51v,B$ruX c50:%7|kTd72,gp:9+dxRky<> FT8N!hx:G{2>2ɼ<O);x0ύN!N9cK>>KdyW c CN& >mmm'rz`0PP PPPPl!5)PPlWlPllPPP__ؾؾϾϾP숈 ٣%x7,MM|KeЫ##n0A z^ד2Lw.W;5n8y7ɳM ׂC+xUQbwCZxb1K5` aX-eK37Y&N973Q.0W0kܼ17槯lll`\!ZmmmI'z#8W PPP =!6ZN_PllPP l쾾_ϾϾ؈Pl l쮜 D::-7X>|M,ȂcWnn8=`6SEpM,icy!y`yN妱;U:3t pDcaxƃg>3S6ڡZeR`ګ5b>KQʐf;CTwxţ4Ͼ؜왣ly)n8=mmIr$iH!숈PPPPPPW8*ZLlll llPPP 쾾ؾϾϾl )1K>Q} ƤS40lll8!`~a:Q HH| |Z Hcyٙ4!Aٍ.C:U; 9.>>|bҎv2>>LC.&555Sڑ[aU3C5;:ZFy5QNϾɹ3WO4_؜mmmm''r$"H=WPPPPPllO;;hTW lPP ϾϾϾϾ윮lkh AASbocZaU1Q&숈nO珧լaS6xonW0`O44y37ܣn44!({>2̺ƃ22ZnlF#hC6b3Sw5&5&;ʝDSFwcb:.숈nU:>tפTNy54I'III''"H6&ĮPPPPPPl `S#ٙW P lPϾϾؾWĉ!*#=ay!Sf9w&yYf:ן)=!69CCc46sNl_C59aד>6yWg7g -kll8Fy9QbcF#55wOkklġaU>>37caOm'jVExkPPPPPPPkca Nn=*ĮPW؈PؾؾؾϾϾؾP0Tw5&CbkT.OSewf3>1oO#ڋG{YS0_F7ayPح pLHg>Z#n*Zx| , L9(9l WNxL輐ЬC5FyyFk#T&;Ֆ:6=Wllll0yX7be;&w&&===Tym'rjr^,cNPPPPPP쾈 P(aCNk*8왍*8ؾ0PؾؾؾT <;qg<&ZQvbK3::KewűSKTW04нKN8532Ѱ3g>xcTٍ[PPPPPPPPPP숈lPPP_b3QC)8_lWW¯Z` 숮 PؾlĉC LfK,,qǕ>vb13Qx:eaK71멱 S;踣l nZ00Tg>̳|5.MgݕUD cxKKύ*yNk=<5C兯caeL6ZՐUc0Wؾ4bǨX-ed7Z#4(mr$Bz?^Bȃ[! PPPPP쾾llP순PP_Q>O0l 0LO= l P0ؾl=#Zڸ+~|iK73߰KUd UfCC59SbxklA6UTnk ׹>3>>נHCn[HE+Q>v7>:w**׹7Kwk*4n0Tkw5&cSSCnlh敐wyٍl(Z:dyN*OZ褂TI$z"z>CPPPPPlPPPPx7bS8؍*)6З* J8_FC5+([H\u$ 2/:Udk&O6ЬywC9+ F##TF5dUU;FxK7;0L\ Y|>Uy!!g3QZNٙ٭c6De1WWk5eU:|; `P_n: kn*SЕbyk5QmV,EEೕ PPPPPPPPPP숈P7QS! lP8)D|!숮ֶJ*T_ 0#hc9܋r\Ȱד1:Ud5&CCwa;5kknW&CF[ps27:(6 hH3:Uk,Ȃ7׃5FF`FNS6:eQ+*l֡Lbb_lT==5l윮 lZЫ5<E^$z M\>vK:U&&ژy嘐&8``y(aR7UqgK:Sxv2c.TL3KKwS,>>šZ6df UdCCw&=l!C bbگb!__k ;y!#dmj\clPPP쾾PPPOx>>Qx)8P #Qxw4؈=T==!Z= lll #Z wy53g2ד3\q31K:o[wK7K5kS;FčyS&)8l_w|wPĉ=AH*l_0NOYU~dАK-:7-1p㽂Q7ǔoЏ `+(XK:<(NT։SRkZyyw9fdz 23,ΰg>ggg3< 6ɽ+f:f:QxU>Uʩǽ>Qbx瑸{ӔQոw5 剉k``*y>Q;< p\,3%Q3>>>3gK,UcT8įCGeUwCTlnWllll80P4!eИO0W8Ķ=#'B\uzHC8숈PPP숈ئQQxxxC0W llUPP؍NFllTAnUtt7FaűeQbU5d223Q3>U>b;a`!k#!*AgxwQ3>/Kgg2t3:s튂g{T؈؅! ;C  dC= Tn0Wl8#8=0Ͽ`lWW=ĉTy]rBzu$u"L; P숈 lW`&8 ll WxQ`PP_ύ!llAh`nWx:敤S;w(U%xbSNNhH23e:77aU򑭍808Ug+>–׃bfRqƌV>>sK>79_윜<###!177fUU!=yĮ !& c__dd{:U5k0؍8n؍rrRC# PP숈 6QHhN48=l WT&ZaCWlPPP؜08llnhnlQQw#`C¦;F!Kׂ3 KU:K7ɔ|a80n!賓>+Fݹ7vvga7$ד>by .<¿8W-ݓbĭFTРQCWNf:U!80ؾؾ0J=]]I''˞HF8lPP숈 (0W숈A8n4 .WllPl0*  Wnyyyk#T쮣QSUQ:DyNTNyy&Uo<5`(:>[Q>ߛp9(+W_&:K#:73䰊 vo~aL^p䂠g׃詯ZQ.40l X黻:Dhn6TT5;K=lTx||Z&N40Ͼ4!]ipbT PPl lPPlc؈W lA.*Zll *!  0N&hAxbНh`&w5ZYYʆ܋w..f3>ȰY.9c8l#&;U`WWT:9Y-,"ru" p̃QʐxxL8.0l6QKaSh#ky&O#nlģkGh*8n#O`59O=._04_ ]$EKTl PP윈 PPPPw:nW#T=n=A#P l_*l خ=`F=eQQS¬!`L2K6`*ny;23էZ&.G->g;Н W#b*=ĉד1YCF_0kXg30_ؙ!&lP왍wӻ purjuug,׹g(n4_4kll왣#F孿٭ʱwk8TTT5 Zؾ__W ϴϴϴ؈'IKkl8PP! 5Qxa(CaZ&`TWllؾ  WWn=##nǕQb4©.NL >xO8nN#!32>#n 77qggנ0؜l5T8lW_ύ+9{"Ì  @@\>,B$zz΃v 2ߖwWW_Tnl l0WWTF5Ĉllĉĉ!ŧ:PϴؾϴWI'˪bUFl*lPPl ` lWcګ``lllll쾾J J8nykU34&y#x>vLډ=.#xE,gQZ*Q>דKsv>>:_ϴ؜!#TT#!T :M\VVxa4,ruM2>3"B^"̓|Tؿ ZFWlllWkkǝ!숈lWWF*&s#Wϴ윙']i|_ #nPPPPl8cفl6xR*TAll lPؾؾJ_ؾP n#&>QDC55ДvvFnky#x"נ7>ƃ|33acϴOdcb,z$@id.٘>$u ҎxiV"V3QbxቍTC4_80WWddcch!=0W8WAAy[S_ϾϾ0]]]|&!!ֶCWPPlDD!ę |33c֭.llllPPl__WWؾP*aQQxC𓓓<ZSc&cQu,3YxڙϴhǤ7Q@?Xأ|ix{9~L\\ p37QxQyO**#` k٭NON!!l8=썯Cn0_ؾϾ__0]]]$|k!!!(؈PPT 6=LƛƃQ=W8lll8=0 PPPP_ؾPWWnSВ&yfQxnQ723Þz>e{G}>q-e;Ͼl NbK1:ɤVi:60W0Sbb9(6\ K%tL7R9ܫ6|xd;L|6WW4& Z`WT C__WP쾾Ͼ]]B[a։_PPW))*yQ >n0Wk` PP00ؾؾخىɳUyX>װ" ƔǟQQ3fd<>xb,ȂU;w֮0(Ƃ|H99>2g /{YdzGGeU l0hxl ;N0 ؜PϾmmu,ᡫ;;;6OW숈P8*ٙ&䃓>aT=T8*#C)`=쾾_PϾ8#677Q::x:`#᝕镘TӀ2"pǕ>䎢++d蘦Wؾϙ;ɤ05>g2Dc+Z숈L-ݓ7vv z$X:XX771KYY!W.\225[Tn08W윮 WlؾϾImz K ZxH*PlKyOOx..9; ,Hx.l0`)`W+:ggXU5W7CY&TJؑp>>/x>Bpt3Kɹ%xQ T8l0L2gKyllġC*__0l`O#Ͼm 7ɏ< ɓݔ: דqt\H ͌>>ו.(hgg\c5<$z*nl0ySw437bkT7|7W!W4韔Xqq ,i׃U+R:KcCcLvє17K dCϙll_m"R#nФ WCx3Ƥ;F x7>N=PP P 숈k5&WW.5KtM,Q%K7QGGԔ\2yNK>2\h5``5;>>9ūc[xC<{3{oHyNyؙ(а⹕Q7b| "V\p,,,B>{K7cDMq7Q7LL묩;;y숈ىw鹫.ؾI"QդZ+aS윮lJ0|<6xp37>Ɲ+Z숈 lWP T=)hhٜ4XE//K<+%Qpt>:S֭yUK7xƛ.wx b2,pL|[h[.[Q7>bUUV eoOCvױ4.wդ77Q13,V$uM$77e禯܋E7>Q:6#l=&F=!%2 .44mm'r|R< SZAWWnTMYC6xpL>>׳NFWll0ā  l숮nl*O`مԟ,,gqgYGeQ>fWأ:;c;pQ.45aw肠$u>Zk>gg:e|bUH6QXϙNf%uB$ru,ưȰ 7v>׃47:;ylNCZL&|.4¯mI'"k cC)08=WkO6>踯Qxxngw6<+N! a"$t݄xMo{%X汯wU;c:77LAىCU:o>BBru { \H3g2>U%W 37X73UWb3>S5wx+Sm'$͋ba;C蝑 W*Tn >QU<>>K{G27yF6Z*Wc_l PPW lKg3׹7:>נ4O{3{9dN4.!p2;r23e+.40.[͌uBRUw._TwNwa3b=W#Y{13B$$$$? (44<|"2>Q6+>ɃK>U;+4.LM\E S amIIV|xoCCS|W *։#h7ư>9{x>7K"PPW#ZO!8nWlnS|.l PWlC1Sc褔77q>הws2>N! >լ.0nH2׳fHzruƥN4(S@ra9n04NWl!)ߠ7\ipy.4;ఌtw.q#K>>77X:UX>7w4Im]mEQYYŅl`ֶO>v33vvK^|b;P`xS&N!_F>P PPWWWlT62K+ŗvK3X>БܧxnQ3$z\5Lp,UQ\z$\EH>V'rpx6&(FCF5Kfwll 2,ȃ zB2|L54ܖEzv>ҩ[LQCl.<{p׳Q{G:bQpQɳ߃v>adQ737'm]Iup򆤂c숈l!!#̰peg22vzSd`8PW!a4hKXZlPPPPJWny2:.܂27x&kܗQd.4+ГuBg3ag,tbu$u,\  v?E|S6&eи+U9(U>װ E\2|h#T:7XXIm]]^QR[QL֙숈W 8k&A*QvߛE 3t3ƌ[(`lPPn.|:>D֜PPll8ą9n+>/%1xk=n&a54_7Xx|QMKKg7K+Y ,M/ ת$']\2c ;o5FNYv,toHH(׃ћi,rigK:>gӼ;444cw9;b5Y\D`=e/逓XIm"| ;UF0؜T8&[F+9gu$Bi ߂}̃ƛ\H+pD순!=ىhKXlPl8=#*AF|kw[KXf9N!.|Z>X|37r⓹̠gXx.3tqƠzI>|Ч{bxZh!8֫72,G|6++U>gppz$?̓%>2g2g>>>:;0ayTyScw9: \Lha'mzbGa;Gfؿ&#¿M,Br$i ƛ |L+ nWh>x+=FCTũ pHSccX XҺ1+(ى9땂2 7ig7X55q>>s,rI 122Zk8= vB|bbxǓ gĝ3Vu^>X߰2g׹vgQx50( xK;x32>QbDD&WbKKIZ6ӼֿOS&T= 6++gMBu''$p,M\u>gQ T 0nM ..Ty&C ЖnCՊEH9GɹXKd ߂HvggtbMM>7Xxaűab7q7G-qgur3𻨓v3/1;n#ת$B\gX qoEÛv zEgggg,ȃ>|Z0Ͽ1>g1%oC`TllFSQQsebDZadk=nL|;2|"BImmrXg6# lkSx3qѥêz͘ܫC&a4FDDiu>%𤱸1tuBQ7UQQXg,Z$r>3|c[dR1/ Mד7>xYsi>7MbwWn$g>s3(©QDgУ04%Q>נg--#čWSvQ>>q]]Yh L ;yT&MKXsHurmmIuiptrg3gTWTkCD3tSaHx3>:;yN&L|\$- 1$rrtт +7 \gv𩯯rzȰLT*a1K3\>途;>țzBp\,,Mxcww=Ny3iV" \>3xoҠ2>b7,uru3N`Z|1/ؾ4f>߰3c`l4w2Ea&&wH[ | z"zrmmI'r@p cQ78:77EBj3||72w[ rBX:3$Ețc(7 vƝFyCLEzZN֡;S[[CUưXo+̛$$ ⃰,SyN9YQ3D-}2vX妸Н,B^zE3g(0`cԻ1UCln<:Ìba07>>S ] &O9(wp&aQQss,?\'Ir/\H (+a37椘؈ vƥ$r'I󀂂X>>e ,rrV}>\^'mIruêzzB +a7t7cN3'"64Wk UF帼2>Ye׃i^^,2>|, N8W_yCUR>XN<>71bddd;a:1 놕3(0lW=TK36!&a|QQErruQԩ5kT0y;5mIGeUYc5kdGo\EѰ$'ImmrtMp{9|ɟbWy>2v$$>tv> O r''$Im$Bur$rr$9GKQ+$rrHh#k9wd,::>t3vLx|̺NnH ff+.9Q7 ݨ->3:eӼ:O(.v<+!nٿ+X त7t$I'u5a+.4mmr-KXRxRYn ,2qQٍy|Y+0hx 2 >C[L271KKKX09v:5kż1ݓ 23׹/,ur'm$Es!Tywd4_`Zmmmmrg7XY9d>v:y<| p{aZh;Ԡt2Br'm?p>YYȰHCĭ| ใH?z>>|WW.']^"Bp z$@@$/ 3Xɹ3RH ,;٦Sʤ3q $$פ븐gQoC7fdd5Q7gv&.D| |>nWy,>;XǤ鄨|"''upf<։FUS4؈lkmIr37>xwh+weg\'B,EQ,BBΰnx \iH""\2 Q>C]r'"X|L$rrVt/\,2>| gg,yK}x//ɳ3$rr|Յ(o22ҼLL17>:{9fp Խ (ixx0yciB>KGf7>v1-s'rz[h&X1:Z`._WmIrgQ>xS6:QCaL*4+׃@]'rȂqi $;nE>7zzQ 䋧fllyu'''m}{a}ujrr$Hݓ,Mgד/⃰3ȃ:d9<>%>3qɔ,B$:b}32vEpaeKuuVHK}qX42$gi>cz>Q2xnY1II b:177ſ0WmI$>Q3S[;Ux`qxb(g2gr]]Im$,s-},B3 ?$=EpK3$u\ v l\']jj$\:Ya$'zvE\\ߔgȰ33>,>9ݓvv,tQכ^r@dx,,,uzur2rB,߃:+(T6M BB΃g>>;4.'ɝ .(93׹vi@\1%%ɽbb&lAIp7xbQwwS9MQpjmIIm'$t}$u|3Q{ip|W0.O,1-$BH+U/ D lng"$'um?q>qQI''$Ơ>KQ E,7%Kg>g| g ݓ2,,gg{vEu'r$+Lqu$ru㕤$$,\S~CXxL>7M.LðQdN0nc|2vx ,,/v>aC  ]I;;`CNbg,Qpȥ rrruqsQ$uHƂQf{ ElO\2B4N {DiHNThL2MVj@\Ir,qIIrð3e3>2%eQ\ðvLp >q,Z6of$$"H9|Qg>q"gB$@?@z""HGe3>Ơ&h rr$ƃS5W013 v݄/|܅NTT왣oʬTOD|cxg,,3,\у\iۥ$jΛ ҅{\Wc2ݓ\6FZ>ݹԺuLLדV$$$u$$iEr'I'r|{1}XX{{דqut> qݓq|5a>׳Qधt3q3\ה>|ttpBK:wŨ>z۞VE3 y00>7x+{,2ɹ>3a40nWl؍"{+O8O CpBB\̓qu$>Mj<2 pw7>izVL6SX,B$\}t,t u$uVI'zGX%vuuM߰ M>gNC{eY{->9(7tqנу3/-G%/E3wʆ\Ȱ׹>>Bzt7Ky0D>b99bEE7K>y4lnmf,uB>ƪrB$B\UUg k,,g3quz ~9ʔ2BȂXt>3>,,GLLH|zBi|e71X1a͠g3gg>,>G+9Sx<.(K7adǂ|Qɓ K/GvqÞ$^3(+9Gx ^Bê7BM3/1:51oRGeK> Q:;+FWW x;a14РYK>tǂیu>7ƪ'r$$Kg>&|B$rz31K+5L 7тQ\z$gKf<qx|\ȃ>2M, >>exgQy+K37:>vgg>EBBg7::铃Qg2$r$t+Y{^rBM3,1XGa(9327XXf ;!Ah֮Fr KKxHxX>5NwU2c-13^g2ד2zIr$31K׹Q[.֌$r$q|rƟ;7>g 3, |5 "@>%oR׃ v 22т7ǽ17H LɤQ\BÛЖ}>72M\$$,Kt $BȔSQ'$BB$ȃ;<<044[q7%GCw<;Z# l&mmmImmm''$>>x:ӻ7h`C>>דҎV'RQ\ȃ>grrruitUn r'BsGu$>hn#Z3%ư, VD4.+| $>>3s1,Mƹt׹t71dzՏ/u$ÛxaQ2XUx̃u-f3u|pa M,umIIrB"z₋(wU_4W왅K7> %{QZ-\>cOT_0 dŝ >>gg$$^p<.yH,g>|}-Ǖ, gv2>7X>3HL69[&(-uV,>: ݓXwnx2ః+9$mmrix:6gXǤ3rm]muiLG{5..(~o7>3דݓ7:dNll=!<m]mIImr$6мKИSм>>>g,uz|bK7|~{gvgg,|p2gg3xdc5yX>'$Q-12|!_H>ĉCt3|bruQS&Uda2vxpX1737v׃>>7>Xɔ3xCů5bɔt,7-%׹ v2vK&7Ѱ~$x<.~x2>3\umIrf--e7>GY7󓹓7ʣٙ_lFY~Qm$'mmmm$` USн֭N9c|3,$$BHfUQQv2gƃqU;&DM7"rI͎ L5OFyy< \M藫典S$$>:R22X|> > vXXGcU7߃x7KKq,|ܣNtp^$ubӻKEzuu|94¼ɔ73E$I$fY<9Y>S::>32׹3Ь[y4~Qmm]'Y?'mmm".ycaaf:!N+zurrze9м3:>>g3g3Mx<:Sȹ7''Bڒ((2KӢ&9 >>>XX>K7>%e|S&=yw׃KռX1}tB$B\Z.(f1>i$rB|-3B Y>KǕɳur|: f픳2׹׹qU;5y;7sɹ>Ѱ2ו.¦cm]m'+z'mm]I$)==[bUX!!Q}H"$rzQ9+oҎ3HLo6cCכv\$'z|c.wf멘Zd숈N購<_0N&ѹv v׹qt.n(Kv݀77>/%%1>-ԝc#X99ДXirz +(3$xBL}1>1oX,u,g32ה>Ⓚ׎{򯭭wQv2g}>qb,D<ܝxm]9YUm'?lP!ba1w#ĉ! 3prr3U-%XԊ|Q`{Nşݓ1D  zrrۗ !8Nk QUڡdlNWP0vv 2 34Ϝn!23>X-->敐5y0ya3K7GY~蔹 x|z'zL U>uaЖx/̛,MƠ7Ko7\E%>g2ɟvgM,qRװ|Hm]m dUpmm''$ZPUǔvC`kh>v\BrruiM QK/ |HLZOn’+OkFY+O6gVuuz6yٙ.#Do*#hZ5W|&Wy3>>7$rrr$z,S9y3fҏo3_FgKxpqV$IupxQ>,屝%,uBΰBu 1qװ,7%72g>77׳;.4(ᘤ>XXBB,Hykܼb| ,]mIm^Zdj'r$.=kb7>>gyygvvB$H\t DWCx׳藡C 29kw 2,nϙ_0Qy0WnTCWݕl,>B$$jj'xxKBH>2ga{xCya|,g>7Qݓ> $qoꆻ>y4(b:1>"$׹1qê, gg2X铹s ڒ+72\D540FQQhT0WFW 2vv=Ĉk H|ƃzuiE"?''t׹u$E2v23Qx>guuZ+44 L,g>׹7>VuuuE/19Yb1Q.0y+:sHK:sirH\,M7vg2׹XXKe<-%vzu^ kl.+ 5n5>,$mIuDip|>Q0l 67>ge&C|/2, H,3}s>704[ K:,[6:3\6N6#_Nn)gKOFTxMz" BBM鄄ݠt3Bg>q߃H^z(4!E>X>qp"êBq%b2ύydb.(<9ʼ@E2>t21⓹7:ee11e:G:Kii[n0CnlW>umm$Hy, LpW쮮c77>>x7ݹ߰,,Y9{+YxN0P왦 v7K2,,,a99ʂ>2aFT66ZZ!xNbŅ.+|$uziMB$̓$2// qgɨ,i \zIr,+.6>2XK2vߌi|3%%M>3­;b>Q(:a:<~Uurr@"X̃g2ɔvf1⹓XX>w& HH0!WWwUqrmmhN[ L.PP=#7X7Q )>vgv>7,|c++v7cO*kNyy`ZQqƂ/Xț '$\.4x>>Ⓚɔ2v׃V͊GogqQSv:ewxU5(wДB$,,>7qKvK-GfXXK// ז!;b|™lWkk=8Tqumm]$Z=5&T48**80PPPlW=kyKɔ7&9SMŐ1gL&.Zg1h8숈l!L>KQʬUbb蝘;x%c&Tę_0.*aiZ;}xH\E>{K232>>K݀>gQxgߛ$Bga.~QqX3,v2,p{9dg2tpp |׹ %:LQ:<<>.Bƹ,}32Y11> //鐑Ĉ&<;wN0wC:1%xpmmm]$ =8l_PP윁=Q7xcywƃ2gY>H22Lڣl#ZQbgg||,׳p\E⓹Yg>>qbKvvנ ssK7$r$>x,,>:w׹ץ$$2gv%bfe7-%#y5װ\\3דv>f9 e5TW#w9UU;5;7%IIm]]r"T8=PPPPJ =!&|7c6wdHד2Qfd}S a7US)!00asX2ոC5w11;O!0=`Uc*ywQ|1>Sv2>M, Q̹Ɇ&ϙ# |UXqv27Y$u,v>Q B"%}qK",K95'23Xv{fUן|6CwSX/g,pvK~{||{>3U/777X1Ԑ5<7g藝q7{{Rm]IzZn= lPPPl Tc:bo9ű+Ȃvvx>a{Yw`4.Nc|K>3S#kk/ɐ9*AlwadF#嘝c~һ+¦c1>,322=&6<ŸXM$B2g\a{o H x$$ȃɳsHB,HZZ|{-3۷uq3Ơ3g23>aK1,|29(9e{sqggpx7>3:1{9(YxȠ2׳3ư2go31KKeww6Cw; Ж,H==khaK3CWWAl=Ty5wTW8N:%4 *Q3qg2pHpD|Q;kwG$$\3/Bixf` x|zrg>zuziq7q7Xi >ݓv>2gg,:dgGt,p>2Ѱ712XQ,ד>mm\xyJ Pl#>׳c9 ʂgUGK>e3uuv>Egݓ׃>9{>gHLULH,2XXXKg߳K3ѰM2gMBQƃ> tpi\2  PP!CSՒLLQgg2߃G:wNggӕ,,๔DytzrB,C6a\ur"ffQcT4NyBtt\E>>\VrgX1q$$V 2⓹>XL;ww p>3׹/%Z݀グ,u˷r:<4= EMv 2'HZ숈PPP T :{c; Ȱ߃>>g|x}>Q;Wgg׊133g>9:--UWl0 ֣!=__외X>W(G,,> "?@@@BRddkFՎs>נrz踍___Ф,gtBs% }͞$$B,Q>>$$>X7+Y nwQԕt1x*w2gg ӝM$r@|<,<ٜPv,\37mmmm]'"p6y0lPPlT#<|ZggL 0>ћ\3v>t?uu>eݔ9 0Dv2g2t3,g:qH\3$$Q77g,ߕ+Ny+!T!Fw~ʆǽd[0ϭ>, [?z녭[v/&=0SΛKmmIIImmEL&.PPPPPTaaxa3>3ggRQ:8aQt,BsQ7 &&O8 J &>7K!W5x߰ > i΃>UwT<oaRK^$g―.؜0Sɓ3>MȺtg>Q1苊B$HK33bw٭y*T5w<{U5yTy_0kp͛Y>M,Eƃ:! ڲSg,Ed Z5mmmmIIImmm'rVHPPPnŖeYbossߠ5w x> čդu$OT3ǧnn== ؾW Pؾ_0wK =_OZS|LM vנ3豣;Q %ab>QL+.*N²ڂpHpQsefop"p""B$|---QQ3M,΃:cCw&&kF<w9yN-X3>: /a;k`#mmmmmmmmmmm'u0PPPP# KK::7sKQM|ZNnggn zrrz n0(ax #ٮlll0P؜lġf!W(| ݓ>wgSax3i$B6ZD[c|r|%//ԬwQs鄄 Bzz,%%% Qc&kCaUSa_8čy M,Epe%3MGT8n5:݄{eK>HkWWTmmmmm]mHnPPl=1K3737>:>{țLyny52>1|Bˇ'$.|xZ`lll0숈CfyT(\,Ezr"༖ 9+YI$p1/;&!0wX2g>vu>݀7>iHQ>Xtggx5ywSɀK|b;c(TFk&H:;;:K<#.: {QbbQ_044mmț_P&SQ>1K71-Ԕg<9KCwQ,@'rB&QFl lؾϾ숈__5U5č؍* \1Q>7  LwTkf͌uruExK:fbmIrz//C4R> >7v2țHE,sݓ>$$-qvwyг>Qb;򫝤dd[ՠKUd<7Qu Cb1aS/ﲍ4'E ZPl8CQ>X11d+ H,, S6D227Kcx2iB$ELQN0lll_ __؈؜Cc5TTy5x,g21x,,xxQ:K>6wĮ²6EE,$rr1:mm"pX58n3/v722gvҎv-bwU v>>> h ɐYMuȂqXUx+Y//O`[mIzQll8b>1׃7ǔKsacw5CZ,LSS|x2g>>cC;bzg׃؈l0W윈 __P_ϜW dC~2,\ߠUfL~{~aC=ntt"r'/:rm''V:d5S7X|g2X>׹tB7敂wC; >;844gM,g X>KsS.(/pLmI'''''ImmmmmI$icn! K׹󹃔1ɔ55|ΰLg߳Fy|"2v6k=W숈 ؾ_Fa~<bU7gț|6x..=*Dw£֍lN&/$%%$''rUg{YK%Ǡ>>>>7K>נ3$2X3> 7wf v7L40؉㧩7>>71 X1+ M̃xIrrr$rImmmmm"CNllT b>77772>-X3: &kTY{:g>xQ+NNĦcZ|7H2ppbU|)*8Wؾ_kc6aU:K1g߂2+..T5Daeӆ9ڡnl`Rݰur^Q,$rr$ -7fg9דX::K7v>u" gvvC~7Qf~cNP_5|3t}װ,g:f ll8k&>7gQ>g7>3pZyTx3袅GQgQa£!Tk!=!Ő1XqKDګUT 숈ؾؾؾٲ6[ФKKv┠yyݹxUKKQ|L#٦> 7K rrHB 1鹔fww33;f% ̠L ^ѹ ~NT5Co蘡CwFyTWأу1>:CNNyʤ,$I'$Um'$E͞r''mmI'r$3>v3yn  nw3>373>>v7X(n53{bw6DT06h(n nT &ؾؾϾ.¦CwQx$z׃,33f9y#wTkC6nlnC23QXԆ5y!k<\uQ:|iBr]]u\HIr$ pzr'mmmm'uêggwn lllk%敤b7v17y=C3fǃx[_.;H+4xO4Okn&nڡJlؾ_0PZ6+C7%1ʯTŬ/ΪUx:K2ɗwgXX7>u@p>v>>--ӕ ΰ,7ҩo݀..Ŀyf% 13M׹ҼFhDh8 TTw2v>/-:[##kdԳ>2}\$m]ˌmmm'B2|^'mmmmm'uuuêiȰy8 l S1:bbK7v2>1v>w#FCx37dwxQZ#WWgg|.2v3S_FڡNىkyw5&O0؜PP0藡yNU-acU u$Ã[C{7|E$Q>7/ݓMB3>XǖH 1R.W.~7s--:KKq17*=455ĮlTFCKGwf攔KK>g2>'mm'$mm''ru,߂QQx"m'r$BBBu$$uzi3|cFn8 l l! 7b:G723G>|CTT5a薘w&\, x[6ɤ¿y;d+6Sh`!JϾ숈!ڝ.NxL>X7u'$E+N9-BѥM\B 鄄/>$àKaLMt1>x7W;3Xs~+91>>7QgT+wy؜n!6d5 ae1X>UwU멩UQU33>7$r$B,mm'r$u^zMDSb'mm$,u@z,ߠTāl =# b>:G>>b::3xk `=8N=Z\ Xx7bb Kba DLyJ_ϴϴ؈Ww (.M\,Ȱ'rΎ릣(:Xv,ѥ$u7X>HEȳ9S<,HFFQ17v3Zdɹ>gg<Syy;լǕ17>הCf%UbUҼ萯9::>am'ruzVpE\Q6[[$'mBVΪzBB۪,ƃS!= l8TX7>>3x33U#&+** R E >vv3g>X3>xUw0ؾϴ؈llnCa~{~xuuB,Nw"\、cUvߥ$r|QX7b蒅k`F59>>>:KBg&!<>2MLdӼ,e-7#3b4UKRxQXGfU2!./73x;<9<ǔȰt䝧m'BVxa6O~VImmmmB\ê>aCT└:G>>3 Qb3#`&!88l WN  ggq217ɔTWؾϴϾĉlNH3r$,twW4Vuut||镺̰ȰBêwh:eo 94FCe/ɠo{YY-Hu$E_4{>g,Ì-oEBgMFF2yv>qX7:{e9F=n`6K 7eІ>gU,,ȰM>>:;C!ll8#;>>Ӕ>>3K>3Q;llW 0ī> 3>7ׂg227>Ǭ0ϾPPPPWFTCx>݀zr<40iB?^׳oưy400&G-Qbկn`6 :YY%BG4¦ǂ,uuX%uB뢻ݖF5H,g3Dgg3Ы {f38U/vXX7}qgȰHS9(*);'Big7cCܗr'mmI'r@ ׃,B\M̠t>>7;T=čl8k>3Q>77M4nlW Ɠ >݀>|gQQKKxxSW쾾Ͼϴ숈lWk`cw xz$z\ HSy9LBr7bgȰ70_kԳKGkCZxY<GUԀ y|:KEu^bKzBU%ݨKww5xtR>2Яfb3Sy0_` ݓ22t2.4N...9mzQaY9S"$mI'r$Bg\EiE Ѡ>׹QaCTWl8!S11:Q2377X1Gb k#8W.FNlNU3bx1 xS&kwaQ20ؾϾ00l=*ūQQM,VVEH|:bHH\$,>>, 7[(4: MfwyQL(Q/|`:fb3ƪe:x}+deX9>: 0 \QN7Q|,g1<4.HruV >v6 BrI''?Ȱq73 EEiƃ222g2v7KU!88!K7:31X%1##= N;&ll_Ua|Q|Q ynN&`LcL>1WؾPW؈!#FwC6ڸwCw+C6Lp\,M i$'\7gg,|L Z z$$2a, 煯e敳qp\yy :̰z'V :G9(&KK2{Q3>cF06>_n&xH|vv d m$Mv|LLҠmI'?ͥv V,ggg߃v7c!= T:KK111┼N!ACa90(&Z40nl*|NؙPPl!&dS[yk__637q7,Bu$ruHb~Yƃ>qQȃ g^rr3U:weK tQ.%X urr2:d>3~9(xgӬ%Uձy_gB>XUyn {ճs}31ǔ2R'r?,o: ErImIIr^"\2vư,ggߠ׃76`!8 =C;Gdz>37:U핔3w&fJa`l8֭nU4؜0nWٯw6=4_0WPP؜&;1;(y5Wb,Û> >ɔz$H:¼B$E >2–qi$rBxXݓ>:bư&nUz1kNKG\um]mr$B\v2ư,ΪiziưדxSTll CG::>נ>QU;Zc;w吤|`֙_K4!`!JTTTN5;a`.4_ l= 8TF v7a;Kum'uMʧg3'm'$>g,,êiΛț߃>x񉙜=C :dz>>w5`h~ 9NyZ[3O`=nnWJ0` ) PFTT8N5ǫ((y` *XQᡬaZ0_ڝ>13M3>H9YOc\z$$ɨ%xY9:K|i$$$,g2ɬXY1|Lqg,פ!Cc5F5 $Ã>~ӆ;C<܋ ;aS褕x㔂< Нa;o:1G733Q1K$'u׃>>zr']'E̓g\\i,,,,ê\\\g|! Ue:7739n**55hb `n4&p|<9O6C58>xD)A W*`#!=XXDc ##OC5ũK:攂wN9Y|:ɹ ׃7C& >:25Fz,t锂v2EuBK;y4KݻsviL,,M>[N!`5.4R2\̂w(9,p/V\>>e{U>XɆc>/bae:oU;v{2g>GUzI'rq6> ]mIrB\2v ,Ϊț\zΛ,,,LClWn#;:13w؜*ᑯ`ZС=40n[|YyZLycx>:y؈05__y5Т H.0_ύNkcCyyQ>23>ݳ&(҂o11f_!11%%%6xuuEMݓ v\K : "H++W>>B ,xǽY.w40=x ZZBr$>Ɍ̹b7Чa׀%-eeYbUeeg2bs gb(9pm'$}tc[33>mmmmIImI? 2vgM\ț,,,,,,,dٜWl!7ԕ7숈WTySc*nW43wW=hx‘͂Q N؈0_44;-/ HHH `ؾ0_OFTbg׃3ߓapLLR{X{0l_nU1G-锂|׹7>>g2;S+T#FNaЗ,Ƴb~Ueϙ BuuuVI''}1sQ>qf7ɕK-QefG-av2>7Et7{4HIruipaڒ+咤3Q>B]mmmI'up32ț,,țEE\ƃ EQ: &=X椔:C8PPnڡ`!W05>HO8lWn9 kWW4Lb%\Eؾϙ=A* HE>,ΛȰsɹ ؙa:xKKKӐb33ʆf c[+3>RXg3kL urrrB,E$'B|QMuqK:d.1>G{:17KK{-7>3bpp>QZ##*``:Kv>so P8=Thh&ف ġC8WbgQ{QOlTW4&Hx>>Zh*ؾlA=ltьVi?u 3,2>|ڭl؜9xʱ:>g|¿U߃ɽeɎ9Ny##(...9q-Y9o-vEYuI]]rj???BEr Qwn߳Ӹ<;, >>һ72b7XMB'BM>\DFٙO]B|e<9!8 =!#ŔQ>>$']mmmmmImrÌ߰,,,\Mƛ,,,MMу2׹v׹KO*#*5>:Kal*A։y(W);Wl=¬>>ҳ ęh쿅L\|QHSnPWlnֿWWdgь"$r$\>MEttBup Exh4؜4xwxdWWؙ!e>׹q7󓹹v>KUwNN(4MƔ2>3 Ewaj]]]mrjr$,z''r |a+47:3gvɔ},Ȱ  ؿBUJ= 픳3>,r']mmmmI'',>>ư\MM̹׃MMƃ2׃ ݹS[`!F;Q7>7>k88!nn!!yy8)|yl8!N>Kqv4蝲n4( ,>3 .0lynnn22EiugΛt$''u,.0_˜<Ф2gWl&5w v2>77:UYs,H|7KU:K>>Qfxr''''j/̰$'Ir^Ex&Ф1:Գ373E$UdTC,B"3 \Ȱ|#PPu\|ZT! X7rImmIIII'̓3q׃ƃ׹vѰ߃22׹vc`!=8nT|2vX7S`T=Nk=*C8=`y#Oxa…{KS`y|Ȱ #!nT==*ڋaCT׹v,,']uE.ٍؙ:xv W!d 7vg73ɓ>>LL$,Qde:q:Brr'r$r@$$'mB ~KݓX,,> ,@ðT0>z>|ig5Pl'rV"H[++CSb7rI]I?>222 v2߰MM g߃U;d7XZ6[5`TnkC`!OSTkybU >va:cQ ,byPW5!ܖ>>#CU7݃MgpE'IV7򣿯& K>ɻe5ٍTSUYXv2x>>uB͛"r''$V.nU Bruz$uuz\>󟂛Bruu/-:>B$ð s2r3yW4YpVu%-2g5n0m'$@i"La>>7tmmzH> ݀222vvvgM,\\gƂo ==c%11ݹd&&c=kcZ=n!~6Ĝ>X>pHg׳>QaLêED(00PkKR*cx7t̃HH|}\Brpq/1U c<;ag+y`֭CЂ:K133>׃Lr$Bzj$ yN#;: B@@uB$Bzz\EVVE" -:%>v7}ɓⓥrB>֮ϯ "-{sQ:wyCmmIg222>>>3qt Bmm'$Ûvvvg߰M zzBuuu$uBzi, 2>:ffS=8h6obxZD (Ty`yknQ3xR%23X:`y4&u$.Wv하X>|‘M\,,tvi'@-% K|x:eeԳ>23 T!*71ssK>Qɹ>ݹa99'''r"BHL:&y Qv>q/$'I]Ir$?p22t,btqt\ /1f<됋B,gY{Q>>$r3a#05uz3d:XIz,gq} $'m'MѠ׹vEzB$rrrr$$uiɟ1KKKǎQ3888=T& ~X1Kxcxa[+yw5yN`nM>|G>>v>>U9!*N$r c32>QUf⃗1|H"BV@uBu'/x%:11fk!n%X}}|t XU~ob\iI'r~Ǭ+(yfqzrmI]?H,3q7Xݓ>x9H,EM,,ߖYoǔg,$$\ewlC:7`CCU7m'ig2vד3q$'mImmIB׃gߥMzB$r''rr$u3ssKఠN#X7K7Qмba;w5y`ٍygqK7>>׃7n4wLEz,xn’߂3>(.5Uqz$mmrH']rt7:נLD{{ǂ7-GRUG5W#N:pÌ}t׃Xs-q"$̟9{Y(11X>M?rI$iBu΃ɟ>>3w|L|q{Kɂi"Mf4047:dw5F5&;x>Izigg22>3tprmmmm''Imm'$iEƃ2MMu$r']]]mruåE22QH ,,,4llc>7XX72>ᑡhhO=ى,>7Ԇ33qvx4±bLu$|Sxx+iBmmr$r,uII>U`+.9QU:k&C[Xv$2BƓq1-%X@È9攔K7v17pzu$r]zrrrr$,הKfdg27:fw(5w:g,q%136ᩬf.9;33\:acCCaQm$,ưg߃\Bmmm'''''uzM߃\iB$$r'Imr$\Mg\"^'''rZ =a:>1X2g:feC[6LL`0Ng\v:tq זY[SxQuLHxUQb;U 7qMBrI$iiߥB$ð ZwnٿU3>K̃gggQՆ:c;xZ#Įأ3|ƃ1:q3 2|,36&w+߃QxxR%U/2Vr'$ EBr˪܅40ϿZ&>Ҥyny&UDBu\3q>7s--}ݹ3>-e>X鹓XX732g$mmmmmm˪9}227g3nNY>g,$QUC0Ͽ߰,fXv :<<]mruz߰߃ư$'mIm'r$g2$rrrr'r$BBzr'm]]'rW =ka77b7vUUxk&<T(ZXaaa:2X1 |v2gp OYx3GXQxgȌ"''$HEEur"vڅTNWlP`NNT&9ab*nyC>vsLpBM>,>:dG藗UX23|p|K> ݓ7ƌ?'$jIm]]]$ ~XƠ>>Q߰,Ms~ ቙nL|zjj"d:1>.’D^'ui\ggу,'mmI'^g2 B$rrr$$u$rrr'm'']mN=8*;aUR::Kg߂`F§ #(o<91gȃ>敤|Mȃt,,OnT,Ȃ:ӻg3QȰBtQ M r^Hg9)_kkwofxHy3ЋBB3,373yw56d2,Լ> X33z'r'm]]]]'rB2%:>YG:2q>vcڡn|,Br]I'uv<9|004m,׃MiurImm''$z,gvנM,BuuBBuu$$u$uuuuB'IIImmm;F8==OC;UxZS>2g2QCS n*֭Gs1%+؍U1K|1gנC, {,,gEzr'm@Q3rz 226(TڭWlNs<cZeꕝN(CazBBMEM,ƃKs:kn=1ɔȰ+(O7/r'I?VI]]',399Q2{: /1蘫wŬ$r]'$2:;fKxWlw'ruM>׃2߃gzmmmIr$V, vuuBBBBBB$$uuuuuu$IIbFCaڼeǕvɒ w94A=8C7Xwl7:x%ݹ7>țM33QZCy>,D9,,,V$r^}2tBr䳳v>_Z&숈v&17bNl؜  ,  |b1K0W8yw> \a9ܑn4©Ө⹄/B$IIB\?IIr$"VBHx9g\>Ux:-%f~LL'B1>:5nWbIrV gggmmm]]]'r$zVivưBBBBuuuuu$$$$r'Im'HnWk;;Se~aU腭+Y+(.0k)>7QNWWlW賂K݀ɔ\Eg3xa+4(Zٸ>$u\2Bu͋> vƂXčS~l`x:oU[_l4.OH,2>993qq:ϮJdK>~h[444.w%%>ɂ3ț$rmmrΥ''ÛZ9[t2B┝c(DeYY~\Eƥ$]r Gy0WN'r?Ezr'mIm]]]'BȰ>׃gzzi^VzBBBBu$$r''S=٣C66;x =٭Ua;Uw=n=AQh忙_nŋD>q7x >>" cNaf.؈.f藒..g,\>;´.6nlNn.؜_NQ2''''$ͥBmY.+,?/AN~eL"i$r''$3++9{1:Ӽ!Fm'rj^i,,,,,,,uImmm'm]]]]'ziggg׹>M3׃g,\\\\ΪiiBj'mmٲ66LQ;33 X3gKѰ^[(>XcNKba Nl04¤>: c5y_PP.S>װ |_Z,BuEQ`WlnwX+lLt׃K\V$rrrrr@ ̰$m]rb9iIIgX&~R:|zurrmM{999Y{H!ykIBB,,BmmIIm'z\gg2vv2߰׃ggB^"zB$'m'W&`Z>:믦Cc)5=n =TfLSSNnŘ..Kד>\\EƠר-g|7e:ɳQt2e, yϿ&q6;:ɓvxd8&3>fn(6PyaKL.0hEÌO#lԀ>40|$uqqה1K|z$$$BzV^B$rr^zrmG V^''BȹY¿:x3M$IImIrXQd22g߃׃Mizj''I'''mrE`lT#CwKQ;<&O #č8Twfx| ܯ(d&N.4;33>>Qx褔у1{>Ka-g>;44>%G-:ܸŬהXZ>U5Cknyd>N>6(4#a> M7UW!cb1_$ip qsQHjI$,xp i$''ru2'$q>3E^rr$,3R$r''rrrrrr:xLON4m'r$BBBêB'mmI]m' 22׃gv> Vz'mmmmmImISNlTFٙTO#Twv:{oiXed|ʭضe:Ua9+<ɳvwT8#U&8WTX%%ǐ+Nwu2U5Į9s0>EE|us\ImÃbu2$2$BBB$$Ã>//urm'uzzi?u$ua(X7qQ{3fwD xZT_H27>7~9Ggg>Qfw# l8FaKQTkԄ Xbf9!왣S\ gL22tu̟>B$ui|;doRi>ߌuVqtƛ\࠳qqz$r'$|M,\ Qʱ50NKUw mmr$BurmIrB׃MMțדݓ7rIIImmmm'r|4٣Cҩk`#CZ6D6&N.+;:*٭yC> HDb:>\\>CUԨ2,>>3\U{+ |:녿`h(W;,ɓװx{g߂ Nn FЕ>:Y+e%/7aw!nϦBE[4 =>2,\g2K@,s>i9+2px$^HX7gvpMu$z?j">3K,\>Z_(9С0PI'rrrrr$uBu$rmmIBEtvM,\ –3E$m'$pL88l00TS:&ykA!&CCdF88x7Tyy>Kȹ />Q1,,,M/ɂ gtQMȃe{obxFN40lyȃ߰ao}Ȱ裿nWTbxbf&C96# uuBzEX%G)1,;.4|g> ד1rzLXQ2222 |3,"@$u x|}G{~ ߓbСn000O0Irr$uB$$rImI'$^ ׹M,׀X>\rImm'I'rAnn=[`!=`C;ww5n*gⳫ(`Kv,7 /Ep2݄>72v7vBz37>dfbQ3 N48ؙ.w2Q}Ugn400nTCUǤKG>4d3"(n Brj 1:N0.c >gMSwwMȰ 7 viuMK%eeU>v2߰ >,@B/1s{Qg-w(čFh Zh4mmrrr$$$rI]]m'ru">vB,>\rImm]m$"n=* #cX:НcY!CUʧ=OՕgvva:UQΰ ,\|g>7q̰Kg$t,>Udw<bcbU.y0CQ2 ,Ƞ>3:S0ؿ00F>̃B^Vȃ23ɃirIm\cn!KUbxFT|aŅ>gg7Lyn(c3<99Eț>2gggs>u"t>,g>b­kN77>yN)0 -s O WƂ,u$uueWw:$>xω x{Q2,,\M2tEtUw ,,ț VBpvX7>> `=4k3g7:Um'rrrrI]$M>>>>,i,3mmmI]r= 8*ScCZиy!&LNSɓggZcٙ|>>QN&6$i}|g2>>ɨgH3>;kW0_ύ;>::Oxg7bZ6bxdCed+<K>3e!Wwb,iw0WxB$B3K 6.y5+{,gvX++{72,B^ E,p?$$7.̰iiB$$$V3ư2\ >7KQ .5>q>mIr'I ד>>>,zBuM2vX mm]]'ð(+*llwC#nTc|S9 ;٣Q[y&O|pB$|oR|tg>2gQԻsȰדp>3(N*ؾ&eɔK¿wyS3׳<>>7-kwM -qQ%5!nuz3HY<<(<̓eV$"E,V$$z,2C0f⃳qt\BBu$rruΥMK/g׃XxZy Q2gmIm'rI]]r''''II$>3z^BÛgvQi$'mmr$D{9w*lyC#kN0_nFxQD;ʐ; Fyy9 \ǧab3ɀ2Lv2v݄ݳb.(_ؙ;:1S!_WlFs9W \Kpg />771;y4YG/ݤ~-U< uBQS:x|>3pBrr$u"͌H\uu,g.د22Q B$r'u,Ѡg-X7v>GcyT,mmIr$rm]']r'u33߰,z$BMMgv7gVImm]rh=WT##8b{wwd::ǂ|6ŘxxoהKQMU;x๓> ߃23:v݄1x9_4.W’ 73gv-┤ꖕ2>}:/a7/%U; ,Bbf9+Qg X2$I'r۞?^ Ͽg ,--M"vvוG{b5ĉ+H\Mmmr'ImI''urruit7װ,u$B \2>3gi'mI"DTZZګk=76<>Xv3Ბvv>s:>,77X׹>|CwYXKab&0(w;d%%Uy+z"\Xw |p,{{߃Q3>$mm'r']]B,!4L> />Ơ|-17%7E@ruL&WWnڋQ'r۞'Imm''r$zz$ ț,Þ$u\,g>3rmmmm'" L ZZCC&x+DБy(׹71oG|37>KG`TN51ǔgװD`&U9׹Ud5wNa3>ɻ%vX|x:5y>Cwʗ*!2>gu-v7S0&c31׹>>'mmrrrr'IIIm]]]'B HLh+ం݀v>s1>Qʢ-771,u'$H0W04y[a:]m??r'mI'ruizuuV>7׃,zuB\,g׹>rImI"(8866CUK:;; NqS9>ӎxH/w0=O2a%vL>>Y{f2gȪ}ٸ>2%XxB$EL:e &ݓdFn&.Cb7>g-L4+`L2v>g-o^@uu$B$Im]]ߺR6;:7X>KeKɔ{22MBr\,>>ummm]]p!![we77d`k#=T>22gx>>7 3Uw(F~g,t7݀|6777M{G%UR\e5 RwTky8ٙٯ>ׂs- HZC./qQfS "iiBmE}~+Ȫ$mmm]]m'ruLFy[&*FdXbh)Tn=+9x37gg߂33>7>77ЯWwSE\ƠKNNGK7׃ד Q.0.(2vvKUR㰰 /򦫤77ɳ6d--:3\BB\X%6yl٭'Irrrruz$$Bz\ț\B$$BV>ƛimmmI'BLwcON=&7:a6L&N!`#Ḹ3g32vv>7M!8ᤔN\\33ƃeX̃7[446v3s226 aЬe:-%X,g-dU> KC55Cęl8-%Qg,>UG:v/\$i 993gנM$mmI'M3.TN ׃ X//ɐyl04xXnAO֍!y5m'$B$$$uuuBzV^i\ț\Vu$$Bg>E^'mm]'ukn_y::b 9C6{QQvxxgvv vgd&ZMÛx}2Ke9G3Ƞ11Y+ H Qxxx|xvgg>{W :KK Ǽ:x2דX1GKq>xa9(5-%2ggMV >/77>v2q\I''r"xԽ>> \r'''B>awnnw >gv> /7&ll nk LQg>=#ڡůٍnm$BuuBzzi,Ȫi,iiu$$B\g>irmmmZw*W b::-e|::aR>>2;Q,UxK藝M\}ߠQ E|g Qp"$ה12l&: 7KX>3v<e>bUU>sYYF;U%e-gb3ѥu$ }>3Emm'r1KL LHi$rr3XUd2g3݄hn =5t>hFh;aw0mm]'rB\M,gi,,,BuuB\gzmmmmImmm'^7Mx||ǕѰKUq-eƥii `67>ggK,B$BL}/-{llCq77qqq9nT5薝А;{qg%3dUdw5Cc:V$rBKdz|,,zI'I'rz(Ny!O|Eu$^p2K>K--Qx72MQKy.y`#Tl.93vFnF:77&=mm]]Bΰ,Λgg,i,,z^,Ȱ\rmmm''m]mm]ۋ;5* <{GUx薤bU<5T2LЧL>ggtQ3Yv2,g2 VHɢ4.+1ݹ,i"i ߹݄XfL0حӎK,M3>nkSc Sw5;YwyY7Z*PPmmm]]$,gΪ,,iz,ߠ$mmmmImmm]@ STkOw~Qxk8!>vg|ycaН+Y/ݰ>>gg ȃ.4d|pQK/v>77vC6S(+􆸫6GߠK7c!n寑CnwCa{$͌$@^7}a& 4K3MMנ|;Y@mi>Wl37ttX/KԐ;;UX협#=n6xC5K>3bkTTaAPmm]mrBÛ\,,,Bți\,izBE rmmmmmm 9NT#`C;;xxfQفC 2#n{y(w:ROb2,QxSdU%KcSɄg1e9:.(a x+kd:s2>;yWWn5ycefb"$$rMttqq4숈b3װ>ڲp]]'H}>2v>3an3\$zE2>t\,>1+wX1dy.=#L, WxCwNFwSZ'ii\,BuuzM\iΪ,g2vg\Vz,\MBmmmmm]mmmmmuZ<<~3QUfҕⳤ yNl/ SnnFCW٭wUɕ yOZ3Cb>3g \w:ݹ+Ŗ9..yS>..Y|pn7>>1q2,;y0WnkFU%2 iΪp QCl`Е773׹ .4. 77\ur''r +4433긅33 \>vH\94n7n5;x$$ixwLLhy444T*CC8_lm$i,u$$,,ggBB,,$']Imm'Im''r|9 Z;SD::Ka8 9Ӏ׋ClĉyKSyxF4{>3MU;w;UݓCk<SCC ,g!!Ő7K},,g:4yc :-L:Ԩ,B$$ wN< ._4> BI'44.9X>bƀ7Qpv>X u$$z\+FNFUbCW5eV$ .(#Nn+hZOFl'iuuu,,guBzrm]]u(cSO6K%CT!!#{>R)!!*ydxbNw;yU7 2 z,7:we-sU<:Q 7[擹Kb>KKK:w:݀ɼfCCq2''u|Uyw(¸v 1Ц4(Y}um'rLR.+X >||>X7>ƛgHQ;ůFC SĮ;>,踉NW04&Q|FW0؈m'r$^z,uuuzêѰ,BBMu]'uH6Ywk`<{GMaK:;5kFFy~|ЬfcO*d:aţw;;ŧ2227BMg2U9<Ө/Q ddvv>v/R-:ovKUK+wFkwФ ti'$Ȃd񭿯դ>g2>b$' H xv\>XKQߠggݓ|;yT&OCĜ;Kт숮 XפN숈8IV\Bz\,ȰƛBM$'rD;;FNNT~f|Cű b37SccaLZ&yO Qg[C;x31,37ʩdU;UK>vHH2|+𔳳ɔ>:1ӻ%%/77v߰Ơ>Y51݄tƪze:cyg2}u,puiE7>s3g2>6`‰klT`n숍 2W0׹K_숈mm'r^z,Λzz\VưzuzB\rmmI"|&*OcU:xaSaSxߠ &cZbDCkFw2>LZS3Q3㟔ɔ>U7>E,ȰR>>, xgg~-X1 %}>vvafdwݓX/,R:;Zbg2>>נI$MVB$B\qTWl0+yTlT59Z Mg2E_kZƂKk!=WIm'$,BBBBBBBBBu,,ƛzBBuBz$Imm':#JbfocD7&ydS5w91xa Qv2g9<w~xvtMf¿yHiBVf7>2X7߂i>7RobvbH|x9.w>K1v>Ѱ6Qx|>g2qr'mmmzq\irr$Mgț>L[&&nlPWllyyN² B,ƚJP6aUbCFNIIr@zΛBBBBuuuuBBuuuM,B$$Bzr'mIm]]'Lkؾ=k5SGG{9x3:G觯8k~{>277<.+7a773M,XK$|9 |x +.4( |pið$B2f,,g:KQi2922p<;Kɓ{(..+Q̓נQggV$Imm'uBrmu\,>%%6`٭WlllĮP_l T5CűyY,+ Tw>x--373\B$pb<9SH*yʃ E3>,i\ Y(²sgg>>UbbR:2x+ϴ.{t vߛ]]m'r$"@r']]u\,M>7!lWlWnnT#&Fn_؜&dU:oxHyl k{e:X7׳LmI'r"V,\,$$B$jB$$$zzΛM,,$rrmmII]mr7:`* WT6g>;cc:7<:F3KxH37K{D ,77 S9>9Qӆ蝎o-z^^Q9eXqaO!e B |QC5v3||} MgQY. 2\,2I]rI]'$ E\: kWىĉNkw5 D#0OCdeeUUҩ5k =Tʤ>>2>3muΪiB$$$uB$$$r$B\MMrr']m'Ir%O88W>7S;e>xY>a!nǼp1>73|b{{ ,>>xbQ;a+9ҌzuuMQ9ӓ`#qqb핰2ggg(.5݃MQb5NF3s>E E"Ɛ44 gz''r˞rrrr@@BpMɂNneKUS&T__0#yfQ7:%xH9xL3K2g>C-eb"$|bUgǸyRbиwdӽbSx㔂xб5y:KMMu$BiE,БLM̥EƃtpVBr$zizB$˞zi ͌x7>3ylk;g|U;Zڦ_OZFTĮllWNw x'ΪB$$$$rrrruuB,,MM$$rIm]IrM*#knn8ǕGoUxxa:>:fC蕽,у-exK3ȃʼg2&% p\}K2 %w` [+eosU;dT5d{|Er^p|pM,t32ur'z",M gvv>g>5W8|,BzEfdC.NFOWl؍.&xx#8݄wU 5yT=y5rz\fYX/;hnlnT*=l57MqXar$BÛ\u$rrrrrrrrrrr''rr$,V^B$r'mmmIBQb y`O<:%ǐ|{S;xGԐưg4Z%X1׃21-d Mg2,> Mוd+‰yeUk !n.+R72 C6ff;&`5wCKr$^"͌37ur" .Ӄ}$$uBȰgt> 릿.N{a;NW0(Dt<+X3Tkc>2UFF=Į=k&c::17ƥ3XmuȰ,$rrrrr''Imr$uB,Vi$'mmIr kTOФ%X7Q:ʸ5ZxKGЎM>F04H7G:>X3Xv>1:̠3q,> ƃ C<77UwT=44n0¼vK U 4n(Y6(Nllcvxw 16n8=TF:K7>gm'r$B,,Bur'rrI''''r$u,țBmmmmIImm #C>X苂7ǕbUU:򣭉塤7Keww;b|ɀ7bA_&6|<+9>Ⳕv|x>햎>v271׃bߠ2܅y2>f5&`(ynxC!T7 &č=0l=gvǕKƛ ד7иdeeT8=W8!&Ǩ7\i$B,gv'r,Buu$r'rrr]mrruBEE,ƛurImm]'ShŔ:U:>>;;aCN<ߔ;А~s74=`#Nw;LS{p|Kɔ2Kɕҕ2׹:fw2׹Z&3wCdQH3k!FkWn5:Q1Kȥ La>>>\>7Kbűc04.*WlWυc||ݓvaCЬ5kNW숈c?jgtmzBBBBBrr'rr''IIrz\VE$z$mmmmmmm]mmm'|f&FCU::|kwQ觑Cx373>vve{f7XwS&yЂq%UMYd>X:߃>GTWN2G~sɔ<KUSHQt!Nk#Tģ&:Kɔу|(k55*U%7БOF~3z$zz$u,M}q2g,,>/Ьe3Z&…&؈P#5q̃:D6CFF=*n0윜nCZq>xx 'uBBuBuB$rrrrrrr'm'r,Ȱư,$$BmmmmmmmmmImIrp``5FC3>Sy=#T<>ggwL377>U; CU:xa&U9}%ʉ>eeb3>:7KU22Û2QNnT`5 fG77gxwNNy&N>gę4+z$@@uBqg|Q:aІ-a&Z2h_0 UȰ߳<08nk4ϙN#SR7QsXmrBBu$uu$u$$rrrrr$$rrIm'ruBu$uê,BzE^'mmo#Fy賽~QxR߂5NN L2Gn9SLxKeT8 f<ʤ\M3tݟK>,xy :eUMef{x-\a+0(aM"?uu3>Lܧ~ǩhHJ0_؜.x,Ȃw_08n.w;;<5'zêB$$$$uBB$rrrrr$ur'II'r$$$$uBiVBrImmmmI~9+FF<<!kLS6¸>&#[CE>>K>CT&3 vKQUNZ 7:C#!kb;Q ,-G wkUvq:M QK: >i^E\bϜ_y>>p"$rBE>9!T5oxNn=O5(_±xMpQsʸkNٍ00=`OQ3g333v2 XఛH'ru$$uuuurru'''rrrrrrrrzE̹2,\$m]]IIm]r 5TxaSTTSC&yc3:F=c&N( |fӔƂ7ߔKʐCNU7vvX:x365kg2>sK12>72$uVQn0!Z|"$B3L .y:cSDTn.444pp%;w9;D||EEH уưƃ>gg>ɟs iEE m$zê^$$$$uBBBBu$$$$$j$rrB,߃gz$mmmmm[5kTŝ|ZC c5yCCwy!8ģQek&CCkNFY9btȰf:w bKX7:ʝbX:72ȃ㤋~Y7,,u77KK>YYesԻgqKg3g,$uEwA 2r'$ bw&6` ϴ44*\7>>b\\"\,,Mưߠ>EzzzB$rr$uBu$$rr'II'ru,Mggț"@rImImmm ;<kŗLZ5Swڦ&5!*=NԆWnT56Fc|T5cRM2XR7K1g<;﨓gg32Qf:3נ3tQ 7҂Ƥbf{UQ1X 7}"@zȰxH7*8k ݄2r̔nlh> 7ǩyw`lW.h iiX/2g׃32vB$u?BuB,ưరM 22'Bzurr$B$rrr޷'mImI'''r$BVggg,E͞rImmmIrB\| `bRx|xUxxK>g>7Im\99|v<44- Ѻz@$,2fN;ҕF_l8AhE\ \,,M>g$B$B,3M>׃',,Bu$rrrrr۞u$rrrrrII'''mI'$,gM ,,zr']mImm]Bp|##5e<ה  Eg>a[nnQpţ4Ϝl_²6MzEv/7K1>>,BziiEz Λp>7%1K7>> xDSdI$iBurrrrrr$uurrrrrrrrrr'''''mm'rr$ȰM,,\ur'Im]m'mIImr$ipcyT[ObԕxUCNTĦS|ZSaaf<* `dkg,u\}}K93:Xg6(¯99 >79+ɀ vX1:⹓> B'{9,awTkcV$rj^;h=T&6x\<¿WWFk.(OLE$uбT4NQ|$^H%733`…>CnT'$uurrrrrr$uuuurrr$$$$$rrr'm]'rm]r$,Ȱ'I'mmmmImr`O=8Tk8`6 c*Tn6. 7 ɩJ J8`[TTkCwx,,1Ћ䐼> ODLa<9E7ǔQ7>3x KK:e177鹳7tzr:kb߳Br'''$qsdwTllNx  (n#&OCCwVEQNyB$z^,锔,\ ֭0Tw0=IBzzuurrrrrrr$$urrjBu$u$$$$uBu$r''I]Ir'I]'r$B,ȰurI'''IImmmmmm$*.Tn!ؙؿ 55&`!n٣bٍ&ɓ6W0٣kaMbQ>>󓹔Sp3c6o:ycZǔ:o{Qs,ʆY9:K:Q11ɳKssKQu$,uEQUfdd 1>$rr'uȃɕlll; $Z6kkSx|蝗HHBBi>35NWJJTeQzrr$>vX7QU|4000nk`T['uzB$rrrrrr$uBu$rru$uBj$uVVB$$r]]r'I]$zΰg,r'IImmmm]I[lll6xU5wF##kkOk9{fC W0n=ĉ#&Yg>>>Λ7K1> w.(g>Cf:+dЂ{9%t$u  K%Xɕe褋x:>B uuu|:f껓$>Ɨ&T0lxp pp5РѰE|pEB\̹2;8n urB}27>$u7/XҊggg‘QKCged<92ׂKgBX| >7K묬5ГݔU CNE\OL,u$j?EMo%⃰ME|L|7bn08kŬUƃ7{ gg\>7>vKņ%7Qi\>>–<4ؙNn_왙NXmm'$BBuB$rrrrr$$BuBBB$$$$$$u$$$B\g,r'mIrr'mmI'z,,\M,,Bjj'Immmm0   l #;T*T#OSDDLSCĭF#TT8=FKݓri%XUcH,gZyNkUKFUKBrr$7G{M37KKN444C7/詯ٍ.ph..{urr$RK:Y9e:%K!­C;d:7>>LM\pD:픓ݹX:Q1Gヰ:Q7>ǢnN00_PPύ=Oce1mIuzBu$$B$uu$$$rr$uuzB$$B$$uBÛѰB'I'r''Immmuiiê\$$V^?^rmmmmIm]mmIm]' +l W*cŒ#T&65(U#`cxwFT`hyT86x1QX2,rsbdkk&>Z&;K.n9~RԕͪfU73 B\3~+H>>דXn#aǔ7y9: [..ppzrr$HxG9ІkTF5wf7Xgggțqq>2nTb v>1:+蠓x{x >GʫCP =mmm''ruBu$$$$$u$$$$u,z$u$$$B,߰B''''mm'uizzB,gu\pz$r'mmmmmm]mI'I'YPPCC!Cũ\ŅQ5nS1ǘh!y&l!&:KKq\""2a9kN3g23tǽUʸ4썯ZQ >776l؜0l&5+mmI''ruu$$$$$$$$rr$$u$$u$$$BB'Imm'uiizBu,BV\MB$'mm]]]mmmmI'Ic._lā&Cchww&x{Б. 7yUU=.4=*8nF;K1qߠs+Nn…9RYSVuEDU픃7ɔ3wK,aϴ4y3Gx,,x,:|c5k4_==8Tbbxƃ77:;w0PJAOS3߰ʸ:5<3$ri3Zk!!ęPmm'$u$$rr$rrrr$BB$$$$$r$uuB$rrrrrImIVrrru, \êgr'I''''ImmI''Immmm'I'$!4_08ژc6hF5b3:&!n*+(n8*ATqb771ڲ0ى=aa<[ur$BiȂ%sqư3ƕ-%1::37-ԕK>yش# :RoZQ3 důT_ؙύWl8Tcw67xN0_0쾾NतФ豣kd,$rM|xc*쁶_mI$$$rrrrrrrrr$$uBuuBBur$uBBB$rrrrrr''mIuVBg22g2v EV?$$$z?j'mmI'mmmrO.00 8=cCC`#X>K5#Wa~F!NĉyD,fژ;:Xכ[wyy7ǩ$rupQLxbta2Q:xvXǤǂM\Hſ40*OwhhdwnNyd{K1%Щ<忦e~[Z؜_ؙl8TN.ND_숈숮F 㕔#y#kTk$g7K3xC_PPmIm'u$rrrrrrrrrrrruBBBBB$$BBBBzzz$rr''mm'$BV?rmIBÌpg22gvvvgѺHqI]mI˞zBmm]]$(W=&hŲ&*``c%XXݓC``ll&>w#y+kN܌<9y(X>3x;5>a+ uzHxpU| C.YU;Gw>2eGE#.W*n44TCF;fo1eeUf[wU:ZO=nn쮮8_0yw{—Qwlll`|7!__!ֲ<pX%:fQ3Q(PPP_؈mmm'jrrrrrrr'r$zBu$rr$BzBuzziu$$rrrrI'I]BE?mmm'Bi\ ,p}//qM]mmm]]mi'Im]]]I'Wn!55wk&U77ZO`C:*WTT#CНn4; .XeQZ*yGvM>Լ>>>|NDH9:떠gQ99xxܯ։nWFeЬՖ{;5n0k<7X>KLc#h)l88؍yfQ}t pak0+bXNW=;bɬw[>{4000.m$$$rrrrrr'I'r$uB$$uB"uuBV"u$$rr'm'$i"rImi,ư,iBu\ 2Q//$]mmm]ri j'm]]]?0lW0`wC剉F Q#w` lTqcWTx!FSx;Sڸ9c픓Qg D`9+G >X1e:722|0쾾Ͽ&Cn_| wyn&O8 Wϙ!6Ƴq2ѥ\3T8=93><=y<Ց!=!O75nx>퐯.4ى!`O!m$rrrrr'II'ruzzu$$BzuuuBzu$$$rrrr'$Bzm'Ûg\z$M>>ߝeXqzrIImmm'Imm'$P숮=!hZ)&!T#xQY*CA#RL.!SxLדɐ:ǕZLHדg6Kbfe>TlP4#&4_4[|+~Qc&T.NfyǕQtttQ>㎡։֍[g2y.4k*=ll4_N6E2vvE$,Q&=쿑QxʩąܤQxQlN`X#OZx|Dm$rrrrr$r''r$۞zÞBuBuu$uE"$$$$$rrrr$zr'mrB?rB,g2p'ImIBRfZ$'mmI'mu _숈=!(&*#8Z+4n*!yC`O`#5C ~aLڲĮCLpZv%9{1/ݔ9c g>>xRK1>[C:~{gĮ0Z)ٿ6x|p;YKUwCZx9+GeCgpMןa3Q6#TT#WP.ba_008ln444wDg>>zu9T#ƗTll&SZ5=5&T4SXKx6Z3|6'rrr$$r'r$$zBBuBzBrr$$u$rruBzm$gzuEt׃3xx||H'mmm'uaf皞'IruPPWN=!)OF#=llH_TN# CCCx6#+61s%>~4g׹ /7Ro;!k!cxʱSL||;UQpS{fUf5kwFZw(+xq7,$?iȳ:eƗůky`0n5Q;=WWFk0=!C;cb7gaR НН,23ҭn0*ZyٮĮlk6cwىN004(::aaڡZx>HIrrrr$$$$'rrr$uuuBBzzzzBuBB$r$uBuu$$u$ruuurmmIru,亥rEqbbx$]mIImI$E{ښ@rrjA4_PPP0W!N=ٍ#Dh 8N!&X-껓bC}㨄/QxS6Wnye{fx;,KKKG<¬9 X>~~"$I$>KӕQw+ڸ0Ͽww.W٦FP왭 bg+.¯k|Ƃg2nl0C5.W 8 =`5Ty4l 4wNN+;r''''r$$$$rrrrrr$$$BBBzzzuuuB$r'II'r$BBBBBur'$ImIrB$z$rrzq%7:KXK"'mmIm]mrLa)A*ֿؾPP0WW=!8W`)=8N!<9nCUFčϴ4*L׀%ӎ3CxbaoXsЫ)``n5x1ou\K:X7U<9Z Eͫ… u''{:o<Ly…<:C400T&!NU00l#,Mp!윙NN88=l_##5C ţIJ[x _0#ww4m''mmIr$$rrrrrrrr$$$$uBBBB$$$'ImmIr$uBBBBBuI'$Imm'B$r'mmIBst2דݓb?r'm]mHи04ęJ0ؙ_ؾPP=n)&k8PWN8[&y5`lϿ땳мUʬЫf:n00=JWnK::+1KKMtxQe1ׂQZ>> L4hV$r@ |>2>beG-㽂x|LZM!!։k FčOwC7|!ϴ4W!H ~Q,H)ψ0Tw`84ncxxbQnn|ɳ؜0Th  wNl'mm$$$rrrrrrr$$$Buu$BzzurIm'$BBB$BBI'rrrmI$$^$r'''Im$Eg>XKRՏ'm]I0_WϾPl W!Oh4؈lT`Fy#6!N>9NP *xS- b1ԸNFƃ>|5bC=P']Imm'r$$$$r$$uu$uuu$uBzB$rr]]'r$u^uB'rm]ju$^zImmm'uz\ɔYVI]mIruh!40lϾ숮l *COhOON_خ=h Z`5<|Dh#(bPl؍.N9CLLY<뢸#n;:1Z4`Z`ZE3: 7U{x^^,>HBY[¿y#&xES+yyy!`Zvg27.hSw5 TK|an9Q{wN0 `c::ФQ/EVQKec >> -4Pm]'''rrrr$$uuuu$$$$۞zBu$$uu$u$BBzz$']mI$uBBu$uB$'r$$mIjVjr'rBitӊm]]]]Iu#lؾPPP h*W0_*CUxwQbQʼnPPP4.Y !!w;U6ϴ L (w ݓ:\^xbyw B,ȃtV F4;fY؉6Xq2>Qu$Bnؙ`ͰN8=`e:;a//⃛|gƂ;44 )6ЕG{dy=km'''rruBBB$$$$uBzur$uBB^VzB$r']m'ruu$BB]r@rmm$ur'm'ru "$m]]mm]Irz )8lؾP쾾PPlA`5&*04y5bSN;6O*PP0#Qx| -ayZc~f1hA09|;wZ3 9,$$V<Uekdx\EQM"TTS胕x+ϮϿeGQBB C5WW0Zgb!00«7S=T>K٭nZ-GЬaxULMg>>2aT8wdx ymII''rrrr$$$u^$$$uzzrruuzizBrrr'ImIr$$BB''ru'm$uuuB'Immmm'u\Ȱ3q$Immޚ`8ϾPPؾ윮#&#=8WTT5`NnkZx{; 6_[LE,p [~99)kUY995FSǕKdyyx:>,HyTk;b׳+a4_Ndd6D+4nNTnWney؈( "":n5:1ߗֿ00eЬkkNN~3Qyky妸|L&mmm''''rrr$$$$u@zu$uuB$rrrrrr$uBiBr$$'m]rr$uBu$r$$rm'$B$$Vz'mmmmm'M3EurImmmmIrZ`(J _P؜l*OnW0(ڑwh*8TMůFkTٍ4S, R7 ; 99*#6+gMkncHHwn=!wUFFXy.DQ%vwXY93`kkn|\踭=9aDF<;dnlP.ںH7fl٣73a.WlF ;CF#TčFKQ6ܦw5KE\HY(N5X+EOAم!nl5#T<(4Nc >x9Tʕa7UZг`4k bg Hx>>3QC&T8lWKז8nn(x ٮW8 WlWl TŗxtS4<Sh#*(NI'''''r$uzBBurr''r$BzzBuur'III'r$uuz$rmI'r$zm]]mI^,2\rIIIxaֶJ0N#SaSy/BQa kyŤ2x\.ll0n=l|LN0؍+h+<X,\\|[2>E:ӤXx493>2g3%U>Ei$']mmmrÂ!=nT _00O[*&c;cSFW44YQS{G:Lb} r$>| F.07KZa;A.ģ)&TW9_4ܳKxKBu$uz Ya L Zbf-GZA4+a>v>QQ|QGdĮlW=nk5UeWy<Er  kNnn!kWJ8…g0شPWZ88`hhFlI]]''''''rrr$uzBu$r'IruBuB$'zBI]IIr$$rrr$uz^ImII]^$I]m'$׹vE"r]&T8n8  Pؾؾ08k666w;{~aթYwFT&ǩ#Dp:ǔK%ppxHr'rgK`N>XXٙAnny56 H6Nwq !44.[ 7>3,Buu\6h`...[Z|CFO~/ݓ>QDU:W=&7K<4;Q>B'z>+5w55hy0_4!W__65=J40lIII]I'''''I'r$uBBzzzB$rr''I'rr$uB']I^^r''I'r$j$Bz^@Imm'jrr$Bmmmmmu ggpEz$m]]' T80  PPؾT`ZLЩb*yCHLa2v q>ҼaQL"$'g7f!ؙx>ݓdl4NybbS`++zVV&.4_¦e::Kx//ݓbKX/D*lWJ4*a; 6_4L|3rBb;L`lPQb`NW0ؙ0;N0ϴϜ=mII'IIII'''r$uuBzzu$r''''rrrBBu]Ir$'r$r$^rr"z$rBEr''mmmmm'rV\EV$r'm]]Y(Įll PPPPPP ZxfUf5ycQ5C33vG:HzrۥK< O=Wؿwn왿`[LvȰ>̃p1>>g׃X~윍44lʝbKSS>L#00ؙ00yyFk=`O0nB>>k#ll_bwؙTFN_ϴkm]I]ImmI']'r$$uuuBuuBurr''''r$uu$rIur]rrrrru?$$B,z$$I''ImIz\ggȰpEurII;ţ 8숈PPPP8֘xbQUK&Ķ)ɳk=TSQ3 \|C2ד,g2xpȰ2E>X90;S0؈_n!A`;:y#>|Nny|24ؙnFnnWWn8dY$r^\+ƹv>+ٙTFn04CS;yؾ0n`Z33ϴ4nkSIIIIImI''''r$$$$$$$uu$'''''''''$$IrrrrrrrruBB$u,,VBr"rImmIm'\,ȰуggErrHS!!!=ā l P0PؾTbx:UU&ņK0yw岡L\V$uVH Œy>/BGxHky U;|דYYS|Qȥ3 >7xpi,M>iVz!*72Zy_lW=KUCT׋0Ys .4.A`OCO!W0؜ЖfH"@ruE)8Op2+ύa 55ZpH 4__N;>T.44…hZD|mmmIIIII''rr$$$$$$$rr'''''IIII'rrr$rm''rrrr$$BBê,$\$mmmmmIrV\\ȰQ}tE\S#kĮlW ll8n+x븸bZ)422 .0ϙT$u|ŦO4uʩccC6::x+Q794.+3\,3 7>>3E?jBQcCSQ&Wla3#Y{w0__.aCZH ܸmmI'I'I'rrrr$$rr''''mII'rr$r'I''''r$r''$B$$$B\,uImIVi\,țMt}7|DcyWWW nyc퐸NwUx 99;3+n44_؍ٯSV <£#4Xtu xw((KK3xSYƂ84cLHƪт>3v>$ru;Ь-5#ؙ0k űQ44¦5CC Q$r$z|Y(N4<><$ruƕ[4[Lx:aФ->,EViH |33>׳xdpȰ.I]'IIrrrrrr']'rrm]]]]II'r$$r'rrr'ji,$'r']]mmmB,iQQ7XDl=8 WW0ll! :CN٬tQchAęįKeLe3ț3в*ᱫZǻKҧ R>$u,ge;[9++SaZ5=*!88N薆1vcOOTniuzQxeeRL|+(fKGw׹7a6-Ƃ::xVVV\>f6`(+& |fy0O!4¸>׳QbDTW_49պu\2:x}b $$z><숈l0S|:e:>װ,Buu$$$$z ƂYêwmI]'rr''mm''''ImIImmr$uu$$$r$^i$rr@']mm'm$^E\Eiz,>11c WA*#Fk&OO`Fyl n#YDQӊx\\:K,LZZxQcZqg,ȰK Lof\,{.>:;g:xe6.Y~ggQfZLc<K3>3,\pz$ðgK~f,ȃymII''''rIImmIImmm'ruBBBz$$uu$rrrug"rއmmmImIruVE\\3K;wk=  *;;< c&l*&6Y{H;+|aȃ1.9x萎>߂K,g2>>KCN0x\Brp/M߰u$@Buz\CT455yC9{zV ƂLbg;C؈PmIm''''''''''ImmmI''r$BzzzBuu$uuuu$$r$B Bjj'mmmmmIBggư3Uw TC;:RՐ`ll*FZQ w9 Zw¬xЦ9of.(ɔbg3L|,M .ūQM,Qvb(4nF&6O.4cU63%UZOk6x|yA==)ԟ7SW,ÌpQ,ƔsB$$?"}+ٍ8f¿4& S&x=PP4.YFl0‘fU ڭ_؜ l_mmI]'mmmI'''''rr''ImmI'mrr$uzBBiiBurr$\VzBuz^$I'z\M;=l T8hg>>|S kNNwUg;…{ƂQQH\xfթyN&+.+pQt忣׃->H+q7T__Dx9Z6Œk4U-~wC{,Z0_O݀h(rEL99,ऱw|;0ؙ844...n(lTSmI]'Imm'''''I'r'''''mI'r$ii,,\Eiu$ri"uI]]mیM,,詣 T*8=FS肠t3Q xTT==Fhh#n٣C뼕: ;v+w x,,MpiEM>햝yy_Tw9a371HQ++x>t,g>>qg,xLk¿CFNwX.&ZLYCSU (4hxx蝗84O Qe;0w"$r$" , EHxxpp,,xU<{Ux0lW!).4ϣ)`A.6H#!#SmmmI']''''r''mImIII''rr$Bi\Ȱ,,țurr$VuuBrI]]mmmHѰHZā P썶*!Tc}x\E*[[ZZCk*&o苗f3gQx|\BV ΰ7:wyTO6~</%ZSe(9Ȃxx2gggQbU+‰#4a6#ϴ_=k[>>XX1;_*)cb>QwlW5 D0llW5f3BuV  M,ΛE,C 5NٍNZ+4N|3bn!)DL|xK鄄/mIII]]rrrmm'''''''''$B,M,ț $r$iBuuuB]]mI$SNWlWW8!#[6ܒ66[~Нp")+yaSU~ Qu,Ex XXdcš3XQ;TWW;; ZZL 72>3Q ;&*041ʣl_444~2 /7c=¯Ђo{UNWW0윙N56ZkW윙!ڤX7pBEQL,z c;d5wyk ưLc3k*6Ux7X//II'rrII'''I''''rr'II'rrr$$B ߰$$$uzBB$uB$mIm'uנQ&N0W8888.ύ.4SaZR| \..#9 H|Ơ ^^\䔳QX%//13Z!6F6 f1>Qb򅸧a+ٸ ZS`8 ݀:NW0.44.ya>נxaSh&TN0Jl _ϙ! c a. =TT&6HȪ^""BB q1XQQ/:Y9O8404!S||T;q7KCwnN+9ٍ5yn*ژܡpXXlW0Nh LHkT&Ŧ8k&`=Jy#8_4Sw`,ߔo+ wk4ؙ7K &`Z9y_¯[SY6m'''rrrrr$$$$''$$uBz׃2EB$rruuBu$r']mr>xxЫ._lP!()h:)8=4DM EiE\\$u,KbScC;Hx|Rf{!=.x(ٙTCФ>U#==k Fy7|c+ٙnDt3:++D L;=6xK3L!8`h5nn88684 WؙTTN4.Dה3wkTn_0؜=SQ|U...40_ύd mI'''rrrrrrrr$$$$u$r$uBBE߰,u$rrruBBB$$$$'m'rr$ug>37|L88=!8ll _n4wݹE`ĉ!x*WWn`p:UN44؜ؙl.<U; I'''''''rrrrrrr$uuuBzrrrrrr$BêEу>3,\VEEiBu$rr$uuuBBBuu$uuBzz,gǔ> Z`y!=!*W0l  4ύyГ M `WJ8)`&f: ΌEtt׃qݓXDᯭٍ=)ab3gMba:-X " wwZ<`FFZ37q73>UO,;9xMp>T0ύy<:CN4_#TT8윍֯w6_knnWW֡C~Uư00_4TC3MQ:f +y4_ϴύ6 mI''''rrrrrrrrr$uuuBzu$rr$Bê >73,,E"\iu$$$u$$uBz,\ ΛM\g23L&(`yNJ؍A |ٙl*O%giK7ɔ>vdh`N00w 할,:ViLacZSwTk5bQ>tQa0؍Z+66SxbxST=_4ab|c!4444+ &`0_5<aٿN!6!!L MHx.40_4yw3YY[6Zxd|숈ϴ4!uKɔQI'''''rrrrrrrruuBBB$rrruB,M߃3E$uu,EE׹,Mу ߠKqtUc` yl0loOLyP `;U t 1ǂ9{c ՝cwe{o|,΃UdQܝ\g} Wnx\|>v> < C!kܒ`0_.`6|Qw6 }Y)0l#1:e;;6L3:S|Ȱ؜_4ٍ05;d5N.w&60ش4y9E"3>mmIIrrr$uBBB,,B$'$Ȱgs3,z?ț\p Ȱ\M>3qXLLмyٍW쮙JWJ8&``8YĈ0CLM\1K(&[Y|Lb-

> w..g~kW0Oh9(b3vMc0TC*ؙٙn!44A4_…::SZ\3>-(94:GK:gggg7ӊ\,ݔ;klύhO)y(G9COT.4nNy!6!n_4 8444I$gmI'rrrrrrrr$$uBB,,^$rIuBtEVV\,,,ȰѠv>7>>>ț3>>Qb33t3QL6[y4=A=80Wc.ϙN6Q,M2K敕7x04YxpQ{U\Q31s3 :O8NxL Z;UK9qt>,,i\iΛΰ׃v22v׃2MȰ߃>KK>|F!.!`*n8WWlyD"#4000yCSțƂUb)!0)ꔠ||YCChZNl왣{axxxkؙ!gg2E^zpUc!W_lA`=JlkTO6SLp: Z`N0CfU73tM> G+.5QKUY£w&N؜43Q:eMxmmI'''r$uBzBrruȰg>>q7ѥMEEêB,Mt߃MM,߰߃Ơ>3qK7>>נ|+4£N=!#*`h`n00y[ZƛQ ‘)WWXXUy!~4J39y; &T֙TOLƃgE x5< 4l=` PPPll_0`HL 9>>,,H+¿ 6NeKU;;b>>ݻ7>> |{Yy7gs3\~֙ZYQЩaȰM͋ ZmI''I''r$uêB$rrrrrr$ƃ>> BBiiiiBBz,b߰ȰM̃2ד777Qx ­NT#ګOO*=!:Qxf(4.T8lnǓf `8؍!QZQš&S;w¦F#96Q7>߂pE7+.)N_&P윙ZȰ9(9%XȰa40ؿZ!֡1;k*׹g>sҐ7> Ha:>gbQ L*n)\3}bafKwIImm''$uuBêêBuuu$$$u\ggț\Λiê,,|ర̃ț\g7777aN5C5Ŧ&yTw:ǔ>С540NKd n0.嗤.!L\pxxLЖw.²6ZcQ 7̃ƋNW8*hZw(_N._ψP4Q|ggco% ,c(5w_#Cn왭hCU2Vi,Ƃ}}3n9MWn)|K:K>:wTTI'ruuBBzziizuuuuBêi,MM\,,M\,Λ\,,M߰v>>> ⓓKL)ᡫ 5w!T5&:K:a*Pl8O[&&T4xQ;4|6)D L:1ⓔQ||tы(_W.&N0!| 6D7vL= #hc4.0<CĮy59Nna͌HHpw4.Y(ՖfLY.*5mI'r$$$$uzziiê, ư,EE,,EȰ22>333}M,,,\3>>>>>/e6h;[*ֶn4 08F5b7q 6`n_4k*yN#O!0ϭ;>f0nFUGf `ࠠ>X݀ttȰ(‘22WW*`S)NTyhOSEx_0TUfWllnT妑.06x3߰Z <~[O)*._n4}׃ggvd9 O)*T(N)FIII'rrBBzzzziVțưƃу߃ưE\,,Ȱg37s\ưf **8 W_ JW_nyab1ea6 D#8lly&#ٍJ00)!4K ky&9Y{9aSO9b22vɠMMU55cٙę*)7>> E,K<ⓠi,MQUcSZ&`C+A!y5nll4NQ04[xgLyJ8*b3СnyC;Cl09XyyZZ 4_n`pMM Y9.4.S6We`mI'rrr$$BB,,,,,߰\,ΪiBBB\MM >׹דɂ||g733Qʘ# lP_8ى6<맩Ы&*#&&)*`4W0W _&Zx:Y`T!ڧNw改t|EVM,3 2:o~(NNZHLS9(=8#8؉SLbY`0_9~._0(Cx؍y;faCyWW =5 ;D´ϙ Y(.#`T0cZ6C#00WWln5 ʖ!mmm''rr$$$uuzBuB,\\Mggg EΪ,Mgƃ>7>>>7ɔqv3x薖UGٙ l04AA0A)Tyy5wwCC`OATn!0&00WJ`3RY`)WlPؙnwd:v|LRЗ| g2߂_.QȎ94.W=!8.9L )804SxL.Ͽ`;dd=8TGeK!y´ϴؙ ,Q:ayTkOO0ϙ000lW PkwdŭmImmmmmmmII''rr$BêEt̹װE EE\,ƃgנ7>7XvX11K3nPP W0_0088`&y…=8_n08nĭ.0ϙ96h[*O Wnĉ`77Q:G999attQ_!p+(JA==yXXX7X>77Rէ8__W PJ0ؙll`F!4._0nT!4=AOCC֭_44#AA!Tn 8#Lq븅+EO04* *8ϙ=0nw5ύF`9yTP0yk؈000؈CQؾ04:2y)Y:>7в!_W6ɓKWĉ* W___W 쮮n!((mmm''ruBBzuBBzBV ΛQQ3䃠ד>>X>XKa&!.l0n!y400PW!88PW#A= ؍6`! Wl0804ٙW8=k:߰߰KX236p6`=yLH:6048&O80&ܝիO! _AA*ى&SxwPPx>´4>>|)80<4_=_00 lؙ)mmmmmmmmmmmmmIII''''rrrrr$$$$uz"p3>vvvư333>ɳQQ =W_0WO .4PW N**!!؈ y`)W!#**l0W_89YRfǰx٭pԆZ+(#`Oh* 0#3W888``*Wy:Uƛ9W숮N5xb9.N|K>pL).CKwkٙ_Ͼؾ l0_0!Z]]]mmmm]mIIImI''r$BptуgQ>3QxQK:bbUO`nn J8*H Hcy4PJN!=W_0nyC`l44400؜lWl!!#6C99{x>77Q{[hLpn *ee6Tny…y=00!7y4_8=8*NϭWW!OZ>7Ȋ~[h#nٍnՖ hwhZC8W0ڋS`4ϾϾ_44444 mI'r$uzz"vg2׳}q7>Н{~xbUc6)F‰8n3p_0.#F_ϙ8 _0_WPPPll&5NkCh&..7R~. A)5C#0y+YwSZ66L0_Ͼ45CO8444n*#0W3ư3yNC6Z|.!O c& c4P__WnT(S_Wymm'rEMM>>3c{:Uaa6yy!yTa1p6y. 8yk`0_J 8 ؾPllW6寸7b & SaUo:sQxS cФ:|숈āW*A4J 8=88P WW_P00444caSSbQa;a6#8__*cŦnN`O)h`&HpȪ )(4__0lpLF884.񡫬ZhSФLh! =TNh_ W48.!8 PPl_ϙhZ| xSmI''mmr$Bi\E~Y~bx:>Qxxb:{f>.PWW8J =8  0_ؙ!#!!Qx7>g>ba S!.4);abC+48k` EZ4ؾ0_W8*H3C _!yn..+<4WWW!Okn00.y_000P  N M;wm]I'r$ue:ǔ77׃3Y99o.؈llW8֙8 l _ٿ444ښZZ Z:7>qQxʆ;5#A(4_){c&4l0ĭN[M\h.!\ E(؈l _*)#00++44ϴWP440aJP 숈l W___.H,,b ]]]mI'rui,,\ xҎ}|QQyME숈n=!4Wll JNn[cb|%%772227:Z6y0&ҽhPP8..+|l*ATTT5Z\ Z.؈؈ll0ؙ)O(4؜l PP&`&>g|Z!0P lAؙWnZDhU'j?͌i͌ ViiE ^^VzBr^O44P숈l8*`JJWW N(Cab7sXKK7q>737ac&wŘ64k3l88;W0 *O!#F5R64lW0____0 )C5k0__왿) pH||&P0nAJ000؍A*OύF m]]mmmm''rrrru$rrr$$rrrrr'?Zh!숈l!#JJJ8lA![ 7⹹⹹׹K2g2̹X%詸why4#>K숈Wl0*Eg2>kl ...Tn=A(0 W_0_*5 44ATٙ0 OnE2\ţP؜W٭=0_Jn0_lPح#mmmmmmImIIII'''''''''''''I''ImmmmmI'upZ.4ؾ왍800l8l*)6Ж33>v2ׂ>Qƃ׃>1:XҒ)8_.467 8Pl=)M36OAl _=4`)6WP00_4ygg3 Ȱ3QXv!))N;>1U` Pؙ0WN[[(WAW0yPֶ0l0W___wS!A`h&[wSk0_4y&Ֆb `kn4Ͼؙ!T40 __ψ00mmmImmmm'mmmmmmI]]Imm'zֿJ JJ W=!5kkb}t3>M,,S6Zȃڅ.TZ 6UaO0*#00000ϴ_خ#&hyN##P** 0l+..&c[+7C&Y!4« nPl 0.n0_=FW0.`O*n=kkhy4.Ÿd3x|Mư>>>>X7:b|Y:aC+(¿ى!nٙ4.+ !4(O6cbK:Ж>>x7733339aa8ٙn+bc_l#&LpHy0W Wؾmu.0PW#CY>>>77Xv>7ה3}Q2g22ss:Ԇ:KKK¯4.h+.+7ڧY6LLxxf:>Ke:7┳XtEKU<aFخĭ9;+(0P004&6ZyT_00P'۞O(ؙW 0(bg2>7K-KXǔ|ggt:7>핟K73\ 6Q:xQx{;attKKK::ǕKK3> izBM7xD6<5 8#5;y0lNyy!_8# lmm'@yJ OZxKK7X1xUGb w9K}|ɔQbsQM7 hhƃу>>>q71qt3>>tppz\pt-{N00n#*bQ;&y윙_yY6W llW]m]]]"xG\p,22>QS..agנ222ߠqKQQ| \,,\\g3|p",,M2 xc*nnnTyd: 5yT==TlPܝQ`8 8=8mm]]]]mͺfŲyTkx~++Z6--:;™&[ܘLp2>3>3у3-3og׃>xS_.db,3ưѥMȰ,pEizzBu$u,E \ȰM̓>:ShFN;a[Z;#=Wl9K1x֍lWč]]]]$ aʩw&[aRY+Yf;((cX؈8`6~NN+|>22vpѰgƠ>b+{1>xCyywUQQpM\, ,,BB,>q̊R2bxxnT!;a{Ֆ6O! 1Ԇ(ٍW_왜4mmm]]]mIrL:UUUU9Y w5򝝻2}ϾP hW.|gƛ,g,ȠUd-KQU:>🽎}ȪVH xQMi737qGЅ=*O5yyC7ǂxxxXeЬ븸fQ::xLHL6S6[aZ=4OZ`_ఠiziiM}MM||LK>K%XXX>ɔ>},pE|{ӻ\7>17Qc8W4.5Fŋ>K1KKf{~x>>b:K&n)y!`mmmmm'Im]m'Bip3eG;Q:||6S[hKL_ؙ(5م,izzV Q~Z6++cQQRһ%% E,K-ɃEEH, aT4Z5g >K9&OZx:!Ր:KK>x4 mm]I'I'mmmm$37U:ӼD4.(!nNwbSϭ[d9=;3͚@VEƠQQx;Z+~ ,3oՏK1QQt}tt,\qQq72g\ pHpzQ;aayc< Lg,E3ʬ5y=+4Yꎨ1K:#a]IImmmm]mVXKbx~O!405;(ŗUC)b}[Y~ד:xx|RM>>3H3ƂxQQQ>>>3>7}HH\,,,, ,g3KUū>77KQ>i2x4_4cU~Ж%mmmImm]]]'^HQ3 !n._ly<babb9[>79(+{17>qtѰ>," g>敂fo:̠у2{fa\ s+(:7׃qHz΃K0X:;;R:1''ImjVt1K1T¿.WFdxUK:҅9b>׃3q}q>vv7}Q\2ߛBB\ƤТYxț\gv%>x|QZ+.4¡1>3|>7Hbc6n04;17Sa::>/I]]mmm'rB\7X:搩Cc6&yU::71KЧY+9,Q,21柔,߰Όbſ.9q3M>b+[a5.9.y33уנQ1ZZh剭#c݀v>|3>7mmmmmIrut7UUbxD27|4.Eg22Z` \\M>XX>gtQq7>Kf{<9qX7|V\D.4.TNk4ϴ11>g3K7ɔȪ E\3>>ggt̠gggxЧYmmIII'ri t>K::37R{xx&y!"喇+4449 EE>%K7>1%%xp\Û>EVH Y(48J=*4qg>>gB̓–77QפRhw(m'u\s>Q7KKҎ:R菒xwx| ɠ/KKXr,\pKf[[O4 WWJJ4>M3qB,MqsXt>>>f+40Wb:'$pp߳3Q:Q|QQa쾴=b}s,>׌'$K[yش_ϴ4y రtѰQ|}11:17nly5xmmI'r$i\ƃQg>׹p|+yJ44) Ǖ1%%g̃>7}HzuuuB3tqqqq>3>7Ǽ5n4_4J| \> | Ӑ>cS6y40waRo{'IImmI'r$E у7>>Q>ݳ0_4:Q(NnJ!N兑~oKK  7gg,QtLb7}""uq>2>7:А` J n4n4.9 EizVHxR3ӢY{蔹UyN9f:baRm'Im]m$ztX37>ɨ!_[Ћ#yFCxbܢ9|,x2׃7Q Zhc}EzB3}| EMg2׹ЫT *k(5Y9R|p?$$۪ê\,s-:Q7:S&004U3IIm]mr$tqK-3>Kbh!44(acC;;a|׃+.4YQ77‹[yT5+<\"\||\g׃׃>´0 |HH|iuruBBΰדݓ >K&NȰ>''rb}}-ӻX1>3QQ 򸒦 F(cL7׃>>Qppv gWWyuu$Bzp߰ggEy.0>QM,B$$Ȱ,,tqXx+ܗEuB,\,]mII'r$"Q173QѠ>ד2xדvy0حuBgb}L6._0!6qtȰpEMq}s2x>79< M\^^EEƃ>mmmI'uB\|-1>s}|a;._Ͼ0.KK:bQ\, >222b3>0ϿE"zz,,t2!!0_4ح㨻נQp ߃K>ӕɓRL3bq17'r$HҟqɕX|;h)=44ؙ# :2>M, QK{9{Ҏ1s7Xb6*.4({>>xHVE 3~+ؙ=l4J᝔7/>M E\7߂GX21ԖHҎXXX]mIr" Q1X1ů`*8*SbaK-G9(9R7>3D73tzjuVRGcOؿ!!N0W*РȰgp\, ߃% 2典CY7>%-m''$BBp镖+6x¦wycc fa73>CUb>KE}ݓ}i$$\8&O[´_A[YYaxד\\ >q>qt(4¡ɟ%IImmmmIr,߂Q7⓳;:: CnTٙģTw7נ|Z hH{U|37sb,,:>v>7t|tt73t4yaUsssIImmI'r$\>3xG ))A*T(+~g7Y+f<{~|pMKfK>::bQȺ6[kT(.’Q 3>׹sq䂔`#=c>xpmBE3>xDL~oՏx>7K}}KЯ4..bK Ny;м-s3aa[c6NWT5v MQ>׹vv>>eU7>ppz$rm]]'BVEȠt}t/b襤x>ӻ6yw3>xD(™4C꼤KbŅZڡ=#h ݓ o{{Yg2ד2נ3>2Rt> B$r'm]'rr$uV 7}:37s>>fU:xE wŦkF[맬xU謸+bŅ&Fk`qS+Yv>b27sqq i$''ImmII'r$$u\\\tQKeǔ7q11uu xpN<<{g>KeGUQ;иk7%-{{w>>2Mu$'mI''rrrzVE3q17227>7B\QQ99deee>>1Xǔנ>4n!-USqɔ3"B$uBȃ:GɔQ71%騻%⹓vv74N6 x:1s}3,umI]mmmmmmI'$V>qs}ưv::>33ɨs𨻻q7v>7(4b:7>::K1sssspEz$r'I]]mmmm''uBVM3Ѡ}}}ҽKǕ>/XQ333KKɳ>ggKKq7>7<뼕K-ҽb Vummmmm'''?@uuBipY{oKK:}>3q3QK:K1s}pzu$rr''IIm]]mmmmmImmI'ruE\ppS:}s>>>33}xǔ}K73,\iB$r'Im]mmmmmmmmmI'ruz"H ׃>qqqK7Xq>tQQq7q3p͌"zBurImmmIIIIImIIIImm]mmmmmIr$BB,x ,EE\i\,\u$$r''Immmm'''mmmmmIm]]]mI'I]mmmmmmII'''r$j$rr'rrr'''''IImm]]]m'''mmmmIm]'mmmmm]mmIImmmmmmmIIII'Immmmmmmmmmmm]]mI''mmmmI'''''II'ImmmmmmmmmmmmmmmmmmmmmmmmmmmIIIm]]m''''IImmmm]mm]mmmmmmm]mmmm]mmmm]mmmmmmmmmmmm]]]]]]mmImmI']]]mmmmI'mmm]mmmmmIIIm]]lmarbles-1.0.7.orig/src/gfx/metal/teleport0.bmp0000600000175000017500000000000007206511057027656 1lmarbles-1.0.7.orig/src/gfx/wood/teleport0.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/metal/teleport1.bmp0000600000175000017500000000000007206511070027653 1lmarbles-1.0.7.orig/src/gfx/wood/teleport1.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/metal/teleport2.bmp0000600000175000017500000000000007206511101027650 1lmarbles-1.0.7.orig/src/gfx/wood/teleport2.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/metal/teleport3.bmp0000600000175000017500000000000007206511112027654 1lmarbles-1.0.7.orig/src/gfx/wood/teleport3.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/metal/wall_crumble.bmp0000600000175000017500000001006607206511207020261 0ustar uweuweBM66(`    :B5)6**NzRAFf,V^F">BV.6J'*:Zjjb6V:Zbf36:#*.*BBl:Jb"rr%2/BNNZRFNJBNRWJ62""FNz"2&"6C6>:BR6*02VB&j^ZF.>FfN2:Z.22:*&"*"2JB**. &"*:;76.'"*RdR]::>FN>nn**(&2,*5XNhJnbJ~bZ^b<:B3NRb:RJR>JBB:Nrf.**rVJ*.C&26FA85V^Rf~>bb*..BJZ+64%*662.BJpVNF2665:B&*$(&":>V@CK""BJ6&.2&-rjVbnfFB#"B:J722"&&&*,.<>ZZ..2JZVAJL.>>"6DLGBE&972frrYZb*>.BDZ>F>#./bjbZjVJJW(&.#"-2**>*>>C;>=SL_BJj&2B*** .6BNVBnn~RBJ226*"6FRR62=&262..6D>:JR&.&/.6*&^nnNVV0*A.::6.."/bbn2":26JV::6C&&&UJJJJLA:F>F7+*&F>:.2>/2Cbfr@CF!.&:B`VV^<>J62*JNR966&&6*:.!&&5>>2.*HB>"A:=#"";.3r&**#"&2F6BBB &*@2:FFF66?*&&/*."=>N-:6!&.&2:.MNY *#JFJ2.2#*24:;L:3AFR2>FZNNNJ>Vbv6FC222*&*!&"&XXXfL!A/sVs!AVVނVA//VV1ـ/V1t///VTyW/AVVffAWfVhbfAVVVfffVlTWfVVVffVVVVVVAfffffAAA AiKAԆ֡AVԆsAfAAtȫAAԆsAX 33KA^ t6b|t3AAT AhHA3AsAst AA$VTsb 6hAȶii0A نȶ侾h΍fy yp8^Ai $T:^As6 hٴ&68K 9^sM&96զ6 V6ViV8:)6^6vffFyΒ A^6sb$A|e6䒃`A6|6sy0VV?66A|s0tfVS{60VVTS;C"~0ysbv=ـ^fS;^I0ysbv=^<|A>Cvo>| 0,moҀ>0,m sդo9BVIC|D՛K VʘÍ՛^|C]EAbZ]E Tа|5]EbT0^AVbQA ΩhifS''' 2,,,"8,$$ 2??  G6,#7# & 'E. '3C6887K4.92   F0.2B$6949B92 2'?B,39C &?990$)$,9946J229.F6,  8 207.>.I8$$/HB9,F   22 C $$3C,.2?H>7? 2& .K@00.*&'9  222 22229>?   2 9$@?9 ?&2    B?CC9? &&?9+22 A32@@''?F&C>/%)9$ )$LA9>&? /3@  "A?4 '  @ $)") ?&?/1@&&? 2  $$33A'?'/E'&   "$A'/ &&H 6J<3&&&'B'3B(E?&H&  & @087AD/'5 IF5/?H?   A"&544F5//'? & &LL 5 >F?2 22 &@D%D?H5??&*  2@'&&DD&&'& ?? "'&??&&&&'& &   9&? &&?&? .2 2'?.G=?&@&& .$.9 2 FGGD   'F 9.  ?=99& HFF ? ? ,$. ??? ? ?? .lmarbles-1.0.7.orig/src/gfx/metal/wall.bmp0000600000175000017500000001006607206511177016556 0ustar uweuweBM66(`    *J6!;+."&NzR2:Z".:DKl*:B$"*&&3"..@fN"&&5KGj":6Nnr&6/B^F"&F:E2&*7.22F63.*VNfrr&.%C/>ZF4=F_bn0\<"6*r~**D4<B:6.1&* 6FE"&$.2RJE"BFf*."&"&&5::>.RJ>FRR*&&ZjV<)2-"!:62&**F2@carVJ44::>V,.2B:.BJ"&Vzz""".&)<,.222:6".&^&FBBJJ "626*.*(>L2*&2J~bN^^IMU82AfFB>>N1/.&66*.82/FNz".::4&.FEJVbRNrf*2)":B`2*B-=2<:BAF8ZNj&2.&&&"""R6"Bzb926Vdf/",2BF""&ZRF)*&"&.bfr3F>%2(*.;.2F.B2.VN:>BJnb2:*"**FRb.>:BBK&B:nn*&*&*")..,2@)&.46GJV:.*3(.B#""*66GJN8FNZ@J3*&$&"* FB>.&2.4=>G"=F0*>B96AFZ>BWSVbN226:R>B.*bjb&',6*,6A"*.?BD%*2'A:>B.64::"&&7B.22*2FR""ZZb&&*NJB&**266**:3*.&."N:2.JR=.6J6FNRZBJ>7:>,6."?FS5>.**."J62"".6*2+"&4B<*.&*&"3:.2.;.2*B2.nbR&"*:<:ZZ2>6BFFA:GBNN8>=&>J:B22"D>9&26""$*6.62Vs:s::+kO,OOHǚzOOzpHzOyz++sVsVsV:sssss|H2::::kO7ĺNzH|7OzHy3Z(sssV3ssss::ssٚs͉3s5ssssss5ٚ5s=͵RޠSIxRasssٞ22253V.2Qyi@O|ɚH1|::ƍkkkF===yR K)RĘ||Hy|H.[*.H1:Ƙ2,@iy蚈 /IH[|sRBf_ppTIoAڄV'^p|.pǚgg::ggi槧@iH(e pPHsdd8+/B TTڈŝt NVs<<޺H.2.|☱FR2Vsgki=LiO WYJH==|3sŁpz..yTTST&ůgRsVnUWf/(Ry|Hɚ|[6II*uIHsyiHHsW Hs9NpzpTTTAABB$xx HHHH|,IIkVssuHi|||||Ve S|1=H8(.zNBTگAgB.RVV<R ||pH|H7|R2s-ٟiRJNiyHxzNzpĐBAT.oނHD(|||y˧=:-aЮ||H|HV WI+R+O2V.yyT.SxTO2n$␄/zH+R==s:||||3 dH2a+.zNN.[xS35FIzxxĢ/BIu[yyl*LiHH|ɩɚO[aǰaoĩNB...dHٚD Lk@| XS|LVXii|HLH|Iyε1ٰxT.pp[[[=1n x.|Rͨ|y3AB:VHy pi|Rt=y+ĩĐT̈́o+T=sDn /I/R RgRRy͛(3ssg5sH|Ę+蚞..i䁁ǚ#x˄Ą(.yIp3Dn 1R 7ἍIyz3V3-jN555IH.i||G9Z.藛TyTy訨@+y<<͗KĢLFl9Fy]3`pHH7@|py=V9.Ą.I yOLp<<I钘7 Fg==yyVe۫[yS12dt.HpOLiT.袄p|@[Vss44͘j||Iα)[yyĐss31p|?Л=͚i.od.ɞs.|@=NH=xssr YY ]L(|.R7Vs!5T.|Lx|@+yLd~.VHpј..ss͚ss LY| .ЬkLss:#!V5TpHR/yVpdШV2N|N@=͗L˨фٚ3q4 YH|yxjcc=Ϳ s3%%{55z ޘ.g=V9Z.ɺzBZݨHHٟ44] ͨH j ܤ~d 3V&5551V::y{ŏ@ͻØHHLyĢ\Zs:44Y=Ly#~حc̈́33C 2223ٟsi%%ZpyBĄpzpyp|6.psqq Ʉ.õ[]] 2e!p1N3::5LL-+嗻x 6IͺH... ..|HH 4Gr΍`glXICC&&T&ڻ&&H||RZݤ""Wje*+LHhh <$"}E*&]9+nsI8F`{N8* ĕ߮K&̞Y4"Sԥ49%mGaP߶EܴhD/_.. rH\n]*l6 _:ƍڧsN0q_ҥ.,5K)"wZOЦqy]GŤ`:#aES!g=xR{TBݲI*hPlK.$eG6qJ0:#`DPY& Œ9ج|ͫ㵗p3}S;ѕnd9r_ ԥM<8_!69D˟o4 ŞpXyg& q>+Z:a4aIC! ٤z弌S;.wTR! Ė.$$̝L0T/洉䬀nHj[uUH9wqZٝxmP@L*lrD-~dr;o<\&qRT"_;g. UC]>6Fǝf>`>-ÁT**1N..`JhGhGͦb*ԤƊcd5 *c:.ƔnxTx]<ȍl;F w>浒< dH< ]. !#*iVo6ڬ>ժ˚p: do=$ ؠq~`P߭V:DDDDDDDDDDDDDDDD%D%DDDDDDDDDDDD%%D%%%D%DDDDDD%DDDDDDDDDDDDDDDD%%DDD%%DD%D%D%DDDDDDDDDDDDDDDDDDDDDDDD%D%%%%%%DDDDD%DDD%D%%DDDDDDDD%DDD%D%DDDDDDDDDDDDD%D%%%%%%%%%%%﫫Dv%%DDDD%DDDDDD%DDDDD%%D%%D%DDDD%DDDDDDDDDDDDDDDDDDDD%DDD%%%%%%%%%Dvv0v%DD%DD%DD%D%DD%DDDD%D%%%D%DDD%D%DD%DDDDDDDDDDDDDDDDDDDDDDDDDD%DDD%D%D%%%%%%%%%%%%%%vvvvDDDDD%%%%%D%D%%%%%%%%%%%DDDDDDDDDDDD%D%D%%%%%%%%%%%DDDDDDDDDD%DDDD%DDDDDDD%%%%DNN%D%%%%%%%DNLLvv0v00v%%%D%%%%%%%DD%%%%%%%%%%%%%%%%%%%D%%%%%%%%%D%%D%D%%%D%%%%%%%%DDDDDDDDDDDDDDDDDD%DD%DDD%DDDD%%%%%%%%%ޫN%%%%%%%DvN''',LN00N00v0v0v%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%DDDDDDDDDDDDDDDDDDDDDD%%DD%%D%%D%%%%D%D%D%%%%%%N%%%%%%NN,,'FL0NN0vN0NN0v%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ޫ%%%%%%%%%D%DD%DDDDDDDDDD%%%D%%DD%DDDDD%%DD%%DD%DD%DDDD%%%D%%%%%%%%%%%%%%%%%%NNLL,:,NNNvLLLLLޫf%%%%%%%%%N00%%%%%%%%%%%%%%%%%%%%%%%f%%%%%%%%%%%%%%%%D%DD%%DDDDDDDDD%DDD%%%%%D%%%DDD%%%%%%%%D%%DD%%D%%%%%%%%%%%%%%%%%%%%%%%%%%%%N,,',LLLLLLLLLL'LN0%%%%%%FNfff%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%DD%%DDDDDDDDDDDDD%DDD%D%%%D%%%DD%%D%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%v0L''L''''''''LLNfޥ%%%%%%vz0NN%%%%%%%%%%%%%%%ޫ%%%%%%ޫޫ%%%%%D%DDD%DD%%%DDDDDDDDDDDD%%D%%D%%%%%DD%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ޫN0'''''''''^''LLLv%%%%LLvF0%%%%%%%%%%%%%%%%%%%%%DD%D%%DDD%DDDD%DDDDDDDD%D%DD%DD%D%DDD%%%%%%%%%%%%%%%%%%%%%%%%%%%%%NN'''7^^7''''LLLN00ޫ%%%%'',Nv0%ޥޫ%%%%%ޫޫ%ޫޫf%%%%%%DD%%%%%D%%%DDDDDDDDDDDDDD%D%DD%D%DD%D%%%%0vޫ%%%%%%%%%%%%%%%%%%%%%%%%%%vN,'4^^^4=^^7'''''''''LN0%%v'''v0F00%f%%%ޫޫv0%%%%D%%%%%%%DDDDDDDDDDDDD%DD%D%%%%%D%D%0N0%ޫf%%%%%%%%ޫ%%%%%ޫ0v0FNFFLX^^^^^4^77$''''^4',Nޫ%''$,LLNFNf%ffޥ%%ޥޥ0000vvvޫ%%%%%%%%DDDDDDDDDDDD%D%DD%D%%N%%%DD%%%%:Fv0vf%0%%%%%%%%%0v0N:,Lvv'4^7^77$'4^'LNޫ0%v4''''vNFF%ޥfff00fvޫ000000000v0N0ޥޫ%%%%%%DD%DDDDDDDDDDDD%D%D%D%%%%%%N%%%%%%%%0N,NF0FF%0%%%%%%%%0:::L,,Fvv,''''^4^'^474ԋ,FL77'L'7Nv0ff0f0fffޥf0N0fޫf00FNf00NFN0Ff0ޫ%%%%%%%%%DDD%DDDDDDDDDDDDD%%D%%%DDDD%%%NN%%%%%%%%ޫN,0ff%%%%%%%%%%%ޫ00F,,,L0vN'L$'$747'^4'LL0vޫ%N74^'LF0ޥfffޥ0FF0ޥf0ff0000N0N0v0v0000ff0%%%%%%%%%%%%DDDDDD%%DDDDD%DD%%%%%%%D%%%%%%D0%%%%%%%%%%0NNFf%%%%%%%%f%%00N,,0vv0L,'L'''''^77'Lvf0%%L4^4vFFf00ff0fffFޫfff00000f000000FFFf0N0%%%%%%%%%%%%%%%D%DDD%DDDDDDD%%%%%%%%%%%%%%%0%%%%%%%%%%%%%%%%%FN,,0ޫFL,,''''^7^7^^LvN00%%%0744'0FFNf0fff0Nf%f0,ޥޥff000f0fFNN00ffޫޫ%%%%%%%%%%%D%DDDDDDD%%%%%%%%%%%%%%%%%%%%%%0N0%%%%%%%%%%%%%%%%vF,,,F%v0FNLL''^=^4^^ԋ000ޫ,$'LvvLL,,F0ޥv0Ff,fffffff0f0f00FFFN0ޫ%%%%%%%%%DDDDDDDDDDD%%%%%%%%%%%%%%%%%%%%%%%ޫޫ%ޫ%%%%%%%%%%%%%%%%%%%%%0FF0%FNL,C(4^^=C^'N%fN!4LL$4''''''LNv0f0F0FF0fffޥf0Fff0000FFNNN0%%%%%%%D%DDDDDDDDDD%%%%%%%%%%%%%%%%%%%%ޫ0%%f0%%%%%%%%%%%%%%ޫ0N000ޥ0,'=C^CC='N%NL''^^^^4^X',Nv0N0f0Fffff0fffff00fv00FFNFFFfvff%%%%%%%%%%%DDDDDDDD%%%%%%%%%%%%%%%%%%%%%%%ޫ00v0ޫ0N0%%%%%%ޫ0%%%%%%%%0FNFե%0F'ԇ(KCC(=^'N0N'L^CC^7'LLLvvFF00ffF,0fff0fޥf0000f0ޫffff%%%%%%%%%%%DDDDD%%%%%%%%%%%%%%%%%%%%%%%%%0NFFNFvޫ%%%N,0%%%%fff%N':F%%0,'CHCCCԋF%%ޫN=ԋ'CC$'''',Ff0F00ffFfޥfffffff00f0Ff00f000vF0ޫޫ%%%%%D%DDDDDDDDDDD%D%%%%%%%%%%%%%%%%%%%%%%%%%000NF0ޥf0ޫ%vN,,,N%ffN%00F0ff0N,C(CHLNF,^4^47'''7C^LNff0fffff0fFFNf0fffffޡf0FFffffՙFFvfޫ%%%%%%%%D%DDDDDDDDDDDDD%%%%%%%%%%%%%%%%%%%%%%00,,ե%ޫv,,,FFf %NF0000ޥvF0f0vL'^CCHHHC70ff0000,^C47$'CHCXFff0ffFFff0ffNff0ffffख़FFNF00f%%%%%%%DDDDDD%D%DDD%D%%%%%%%%%%%%%%%%%%%%ޫ00vFNF%vLL'',,Ff%%ffffFFFFfF,b0vv0000N0NN'^CHHHH.='NN00v0ՋC''C^'Nfff00ff0fff00ffffFFfFNF00ޥ0Ffޥޫޫ0ޫf%%%%DDDDD%D%D%%%%%%%%%%%%%%%%%%%%%%%%%%000fN,F'^^$L,,FF0fffff00fFFՙF0N,,Fv0F0NFFFLF:'^^^^C.HHC^':NޥfF4CCC47^CCC!8Fffff%ޥff00f0fffF00,0fF00ff0F00f0fffޥff0fN%%%%%DDDD%%D%%%%%%%%%%%%%%%%U%%%%%%%%0F0ޫ7ԋ'',00NF88fffffF,,0fޥvv,LLFNLFvNLL,ԇCC(CCC.<yA9 9`֌``rrrĚS5~`9B```ww<̩DDDDD%%%%ffff]], ]zz$тQ.,z,XX}HFFFΙR] 7zz,zz,z,CHQ:!KzX陙,X}}Z0FFCH8b ]]]],XH48]fC}dKX0,Z}HH48F0ZQHQw`K! !wr 99"Z ]]]]QBAAAy9yģ````w<AB؅By9`w<PP5ׅ䣅w<`Ȥ PIIA9PPy9iAAS S佹Ěyr5B``www̺wHD%%%%ޡ8]]z ,zzəRRzX$ OTK!Ιzz4Z47$47]]F,zXX}KX08K}ZZO"`d}H0FZZ,,ZHZbfl]  ]ZbF ,QQO!ZXщ!F4`FF,!тQrQw99Z!^8H.CC!^m]]]9įij†BB䣣```<`BPIϼ9AA†AAyyyAAyAA Sy佹yy 佽5``wHDD%%%%%ff8]1 R $$zz zZZX zzK}47Fz8RX747]]fz8 z470F8Hdԙf,r}Q%8,ZbR]f8!]]!8R] Qf881Qww`ZZщ,ޥFH""Zfb,!O`;" OH 9Z^.ͮ..ͮCb]]  r99A9""Qw"y IPPģ5B9ĘAAAiAiy܆ASyyy䤤y5򽣽````w;QQDD%%%%ffff1 $ z ΙdXFFK4, 1b7X]]]R噰7}Q48FX!ZOQQ``QQ,ъZ!!,b8R  ] ]] ]]]퐐R] fRXZr""Z!!b 0ff,dfͅr99}w9b.C.CCCC ] ]剤 9yAAAAPjy 5"`"``9y9`;B¼IIIjP†ĘSiyySyyyy9䤽yy򽚽佚```wwQDD%%%%fff0F,1 X$z Ι ΙXd7z zz44$}}4f XZZX]]]]bXdKf}X8X8ԅQ 88ZHQHH}zFC"ZHQC8XZe  ]]]] ]]]]]] Q"w``X.H80dZFf,}9P 9`щwr `ͩwC^,` `b]]O ĘiP+i>PAy`ֺw"";֣9y9B;TT֚ĆPPj//////jiS†SĆ yyyy yy5``ֺD%%%%%0fFb1RR1 11 X Ι8H7zzz47z zzX}}}7 ]R z7K}dzH݂HzRZd}bX!ZOZ^!HZC}OZX, ]  ]]   Q`QOOH"}KQZ 99B"w ĂOrrC8b88Z ]] ]!" PPjj95`Q""""`Bׅ;QQQQ`Ćj////IIjjjSS SyyBĆyyyyyĆyȽ`;̺%%%%%%f8 RR1 Ι]]] zΙRFzKd4 X$7$$47zX}K}48,]}}e}7fԂZ08}8,bQ}O<wH}щCHHޡ]   ]R]]]   Z`;!OQOZ!8}HO`""QZKXddPBBQQZ" OXZ; 9 Ęi>jj+>>yy`Q"օׅ;Q9Ĥ9ׯjjI+>SSSSAyBByyyĆy yyyyyr`;;"DD%%%%%8,RR1,Rzߨ$z RRRF}qKXz 4$zK,F,X7K}}}ZbFXXXXzXfOz] ZZf,CH""wщHCf] 1! ,Ρ "TZb8.O`֖K8!,]FXdBA9;H "dT""Q}5Pąݎ塡f`9iAjjiijA``̂"̂""֚ ĚB5Ai>jἼ¼I—IISSSyAAyyASSyS SyȽ";w%%%%f8b, R111K Rd}7 zL,4,F 74ZKKOb]]b8 zzbzf4H}O ffbw"HHHHK0R  ]!ZOe!  Q}QQ!bCZ.OHQ"rd7Xb,  HddAiTZ` r"`"9 `5IiBO]]];9A>I/jjj``""`"򅅽9B9Ęiii†¼—IIIyyĆׯ+†SAySSSy䚹`;"w`w%%%%]],!81R1!lR]1b ,7"q 7$$$z,0,XX8K}Z]!8F?Xe7zfFQmfFZQ`"HHHH7F]  ]] R!}O7e,  T}QZbb!тrXf[Ob 899+jr r֖rB9y 5~bf]!B/jj†```""B`"օBy rAiyAiyijPjj/j/IyySiiiB>ISAySyyy;w%%%%f,X,RF Ψe1Rze 1]z4QK}XΙX74zzzv8XzzX}}FCH4FF }f,XZZ,K,78Xb,F!H}] ]] !Ob ]8]] w`QXz!HZFC8";O QĘP+jT"9Hrr"B I>ABQf8BȘjj>>yȅ`օ~䤤`````y䘘AABi I/SyyyS i ܾSS熆yyyy;w`%%%ޡfff噙 , 0XzZ8]娎z z[XZZ$$zX747z4K ,8KC}HXbFf f7O.8]]C""HHCCbf] ]] !  ] 8ZefCF,Z8!ZQw0LK9Ajjj/jy`""r ""B9 ABBB}ff]IyyĽ򅽣̅5ywj//+SSSy55`%%%ࡡFFzz,F ݦ!]Ύ z$ d""}8F zXXXC}}4 7KXC}C}H, 00FCH.O11],7d""ւ""KKHKC}f]  ] ]]1  8ͦOb8,8QZFf!w`Z88F}9+jIA`rBHÖrr99 IyB䣉0Z֣BjIy5Ě55օB5yĤ`QQQw;`B9 P""ĆPi—+/IISĆ yIj†SyAyy5D%%%] F衡 7Kd81R z zRbK"׌d!, 4XX8ZZz4KK}7 ],}}Kd4X F ΡR]8'CHOb] !.,8H""w"HCCbb    8] "Q4bKX0C!X9b!R8QwOԙrPP˜PPIBjjPrTKT"By PB9fO"BIyBy~佣9B`yĤ9֖Q<̺;"9 ւ"A>I/jS S yy+J/ iSSyyyy%%%%]fFF,FRf}T} z zzFz}KZF 8b!XbX}eFfQZCHC7X F F,,F8ZzX""H}Hb`Q,FC"""CC} ,b}  ]  ! R`򖉦QB9}F4"!r ff8b`04/Ai>IIĹ`9P//P"}A䯯B9`O O`օB/䣽Ć䤚y95 `QQ""`QT;``999¼//S†yjJSS AyyyD%%%% f]]]f0zKd] [zzR }BKZZXXΙ b!bbZOe8RHCCHH}K},ffF8XXX"Q8 8F%K"rHZ,b88}O 1R ]]!dO1!"r"90}OFf,.`"X BBII r9jII 9B9dbfffօ9Iyy9ĘB9yyy5`9 y;Té;;򣚚"݉Ĥ9II//I++IIܗ/+熆SyyyDD%%]]]]]] ZO]1zz[z R1]H}8!OZ!bTQ!?F],Z͉KKKHKHd},Xq""X%}HOOX"Q"`HX!] ! }R]bZ`9ׂ""qdzf}`zfff,іHXFݣ9q#A//`B99IϜזdd5ȯ99䅉 ׯAII>99B9yyy5ģ;QQQQQQQ999Q}`r ĤI/Ij>iSSiSSyAyyyD%%f]衡 Ze]]Rz RRz7֊XeO.!,8OHK44CdZzF,f,"KC0}.FեFԉHHCH!dF ] 8] ]7XO;r99BւK7z,0F04,ffFFO}}dݖ9Bs9P/s/Pq99QO"BBPI/IAAPyyĽօ5;TQQ;`;ZOZщ"օPIiSijy99+J/I†SSyD%%]]]]]]吡]]] 7?R RR ΡR  "KKQQQQO.Od81RZ}HX77X,Xz0fFXZÌBC}KH}XXޥޙ,08Z}OQ`4C}XHF ]] ] ]w99",,FF4,z40޻8!bOօ; P#/ Q9Pjjss/9"`999ĘP;Z ZPj/IPAyyASyyyB5QQQQr;Z,,OH¼SSiSj/>A9BʵI/II†S SSD%%]]] R]zz]1?RRr;T`T̩O.OQQO ]8ZZX4Nz,,8XF87HBB"dHQKf0CCKw`Z880FFZΙf 1O8]8 zf"̂;̂QXXK,z,HZ!rB;"yPAʯP/PP/IjjI3IČdTBBAP5dΡf4"ףj/jj>P†yAB5B99`QQQQQ9r9QQZffZqPSiyAy،#AJ//ISSSSASD%%% 衡]]RRR]]R?$ə]? d`Q̈́.QOZR]b747XZ4F,,zXXCF8}rKZ,0}"4FFZdZ}CzF,, ]!!84X Z}QTQO,"}$FF,`""C PBy//I"KdqI/j///jdP f8BPI/jjj>˜ģ`;̺"""r9;QQOb衙8Z}4Q BA+>SiS+j>yB#+/I/SSSyDD%%%]]衡]]RR1]]]1zX&71111 ΡH׌;QO!ZTOO] 7ZFX$L,z4C77FXQ;ģ"֊HO0%,KH,޻O͉"zFF}C,  ]΄b!]Xλ88dO8b4֌0,K"`ѫNC"9yIBȯJ33J/BqII/Ij+jIT}ZĆ~}f C"AJ/j¼j>>B5BB5؅`````"֣ -,fX}d7H׸A+ +/jBBISSSADD%%%]]衡]]]]]1RΰedeΰΡ] T9r`~"TZ.HOZZޡޡ44X]F$KX}}80X"֣"""`},f08C4XfޡT`QC}!F,C7,] 廄]K;Hb ΙlmQ.RF8"Fff4H78H,IIĽ>jcJ3PIjIjjI/ };9APąOb,7BjJ/jjjjjjyA؅5``rrwQT;9`ez}}Ai+ ᗬIAȆ//ISDD%]]]]衡]]RR11]-R]R[X!~ׅ̺ZOO.ZZ]zz ] !444,KQTZ]0XOX}Hf!Q`H,480F  Z]!B1,R1!Z.8fOX0,8f,CC7CPIPjccc3//IA׊Ij>J/IQ9B9 jF,Bj//jjjjj95y5䅌ֹ`""`7R]dT5y++j羆I+DDDf]]]R]]1RR1X}-lR l !TģBB""QOZ}ZZOF R ]!K4z,LqX'ZQHKZOт`]],K}XCH}8]N!}щ}0, !1]޻O!]bd- fT8z8Z7fBIsI>j+jJccJ/9"jIjcJjAIĖZZr9P5d!fFBP////I/Ij+j>BB⽽`r`95m] $-AAAᾗιJJIi/II//II/DD]]]1噙 ]]11l[1RXzΙλ}r5B֌"Z.OOOщQbf XX z 744zF,F7ddFzX88!OQw.]bC0NXXHH%ޙ8ZOdFC0,0 fZ!]zd, ]FH!ff8QZF"}/> xx2JqIIj/JI†ģ}d99 P9`bFXKB///I/jjBBAyB;`򣽽`R11z7Aj/xJiAAIϓ/J/I/%f]虙R ]]1e1R7KyB5"""}ZCCH800KXz,7L,X8ffFfffQdbO}F04XHf,Q}}CF4!]8 ԦR]1   0,H FFfH7}BjIj/jij33cjʊI/JJJ"7H PPPPr;,zXuAIjj//Ijjjiȯ95yAy;̂;`551g//JJ/Ay jc22춶//IjDD%fFFRRR衡]]衡]117ΡR,,bl4zdi55wwQQZCCH7XZdd X7$}z,XXOd,Fff OZ C7X8}ffbOQHKXz!,] R fRb ]  ]7,#]][mq 4˜+ϜjPJc J3jH /sJJj9PKԉ` Pjj>78X9IϜ+IJ/IAAByS555`;;w;```R1X&q j/JJcJ//5Șy# 춷DDDD z,,,1RR]]]1RR] dXFģւ`"QO.}}}OѰ7XzFz$,,$4C!%f,ZdT``R b,Cq}CC,HHX0F廇щ}HK7,R ]RF]Rb!XΡ]]] }zdH, ]M-KTä A A3/I/3ccJ3}Z"I33J3JJ+ 9CZr PP+BTZCPjܗ//ϾIIAASyyyy5QQw`w!1mgiJJJJJs;`~>c22DDffz, ΙR??1]]1 zzzÉZzziP~;TͮdZ ?] X}QQTf0zHT` !dCCOO7XCTO8F8H͊"},Z!R] R,b 8m]] fC7q 9B זBjPj/˜jscJAdH9s33c JJJ/9+dͺ9P>i9`TdHCqss/JJ—IIȽyiSiyS 䣽OQ" j/J//VI&Qq c222붷DDf7,F ΰOmΡ 8R鎰R]ΙzX$X7}dXqAy-Q̂HQZ8,!lb]RH`XHHHd֤Ρbb}4z,4HQHOZ噻!QdX. R]?!]  fC"Q]P99ĽטjPJJIJc 3Jq}qrI33 x/ ˜ZZQPPiB;Q}Kd///J/I/IAy>SSy"O8!}F衡R>///c2/ƴ~~#Ja222涭Dfff] l47XzF XM}e 4Xΰb8RRΎl z$$4X7}¾Ϙ~;-QTOZ.OOfR!"Qщ"QQT!,,Xz0ffF8QQF0fHX0FHZZl ]]1!Zb  bOf};9 jÌ 9+j3J/P/J c/Z}HJc3xcAB>ݺr99y֖QHKPjj/JJ////+SA>—SA99bѺQbF ///Jc+nu~I 222222涶췷%fff]R44447,X7emKd b1R?elzz zz$$44XzqBPIIyQ}QOZCHzf !81]]QH}OKXq9Q R]!Q80F,7H"wHf8}`,C!bR] R] 8!R   ]] ]8Z""T`9A/Jc/>P Jc3jOCߌcacIS jBZ99̂I/J///IAyyA y`!OF /JJJ+ʧ출V22%%ff0],,Xe}Ш[[eQH 17X$[ zzz$z$$77KI ⅌TH.ZwQdZZX,]]] bXO7Xq9QR,CH}C7}OdQ`r0}!HC!8,]Rz ]b]]!"rP9""K}TrP A/cJcA JJcZ74CBJc aaI+i>~TZZÂB䚣`"T9//jJ//+SAIISyA`TOCHQHԙ IJ/jJJc S||뱱22涭%%f,84dz $ee$ $;7 ]1$m&R? Rz$$zzXTׯ򣹅QQZZZ``HCX,] ]] ]]Td9¼9FQCH""`9r"ddQdHb0FF`OOHC!R Ι R] ],]]Ow9 P9"9PœjxcAAᜑ3J}jcc  ac3sI+ JMTAB֖/jJJxjiAA/J5Td}ZщC!,fF ejJJcccV222뜷涷%%00,!}44[elXR1]?eƨ[1 $$z$7XZ-ףB;;r`Q8Od`"HH,,]]] ,}""B!F8OH"`QZ7FFޡ,bKQZ}OZ,R ]]R ] ] ZdR]r׊Ĥ9qBJc9ȯIJc PZ.qBj3J 33s//s`d9j½օjjxJ/ii//SiĽB;OZb8!00Fz/ciV汱V32%%fFb}Kd7z$z [}ƨ}-KԦ}1 ?ell e7z4X߂`55;QT`X !ZOZHZXFFf]]]]] 8d99PIjAZ 虡"BBKTTKfFff8dQQQH}CHXZ]  ]]軐d Z8Q87}K r䣨j3 J/yJ3gH/3c 3333sJxx3/dj9```B//ij/>iAydZZbZb0,XЧ////ccҬV٢VV2V2涭cD%ޡ,X4Kd z[ eÊXl!bݨ RRR?? 74z748T5;QOT,ZCZHщHF]]]] ]199-ݨX,f79A9B99QKdQH4,FFFFOCOH8fz} ] ]R8]H}"bT!" 7}B/JiiIsc >T<ϓ222cc J/IjIs3c 3I >jA5`5ףI33xJ+ASiSj9QO}T"ZHHfKTAjJJJ222ci ٱV2揳2涷%,X!KH [ [le 4l7zl?ΎXRRRR??ΰzX4X;;`;7d`dZZZQHXF,]],ZA m8]"˜AʖHKK4Ff,`r`!,7CZbzFX78b]]l8F8Kb"FZH eIJ3j ~yIcJj #qrϓ3cc׌ʣ샑5TB j`~ט33/JJJ ii+j+>iiIy9;ZO̦ZQOFf8Bij322ccc ۳VVٳoV,8}K}zRR l7[??R? }Ke Rb1R1111RRR zX}Ì555RR;T8щOC}H""}Xzb]  X9AAZ}8fF,4dj>Pj>ABBB"}88Qw!zX4X1 ]] É!0b8}Kz].``"r ;}P/s-~S/c #Qw32歶c/QeOIcc39>>y5~`B9/3J/+i+j+>I//QOQ``0f 3춶2cc >ٳoV챳2DDޡb44KH[R zzz7l1R X 1 R1R1]8XȆyyb88QzX,8ZZH}CC}Z陡X4 ]тPRX!F,qj jj>AB"qHK}4,FbZdd,z,Kddz8!]d7FXH"KC0ޡ ;Q``wQ;9P3/As3#dH32V2cJP,}Ja>`>Pjj5`ʌ>JxJ/j>>jᗾJ¯;Hw`T!FXœ/222VjpYYY222201F X}H}ݨe!ee7le?R111X?F$RR 1]11]1bݖļy֦QOQTZXX XZQOOO}77塙Ɏ]] !`r9&Xf8}Aj >>igggAyBKC7,FFF.O!bX8XzXK"dΡ] lAq}8 TQQ򂊊d33ϓ/ ZOrsccJ/qbq+coc/BʸA++j9"j/J+js/9̉```̉݅I2222춶cpp۳Y۳۳YV2V22붶Df1d}}dè74 7R 1]]11]dQd~yȹ;;`։Z} ,4HQZOHQ8f] 䅌;FF9Pji>gqqgj>j>AB׊HKKzz,ԉQOZZfFz ,X ]]]d/,'ף"9 ԰Ͼ>sAZ93cc/y F9Vo惶y+>y،#ijJxJJJI/J/I; 9""!TI/3 xccc2۳\۳ٳ2222%%fRzX7ZZ!}H}}ߨ}z7z,$K# ,$X,1z?] d5-55``TZ l7 OH}тQ4衡 R 9";dfffFdjIPqH9P ĤTC}H},LvLԮOZΙ OQ! ] QrPPC7BPräBqʊd Jc22223ZF 描5jj9׸i᜷cJJx JJ/yT ;9Te93ϯB++ xccW\۳۳VoY윬D%%ޡRΙ !Z}K4lz #;  RRzR1e~n--~5`̦K XX zOQeX]]!֣KddZX00FqBI>¼9KKB9999֊CCZ}7LLv$'}4щ! lZ RZO] 衡 ]bOQHIsj9BPP I9TdTOwȌysBP/3j;e/YooBAI//jiiAJcJJxxIT̚y qr79III#S+ aa2pYY۳ٳ222D%ޡR X!X!Z!XKXze4777RɊׅqZ4l?11?XC;Byn5`d}7 zzzXZ}"}7leR]]]]ZQ7Z fff,;/SSCH""։!b447KKK}bZHZb81} ] 1]]] ],,} qBPB֣Ĥ}B~3jȌ~Pi/3iB7],jVocIyA>/Jj>i+> x J/Iy-5 dт݅IPBqB~5揱o2J/p@@\۳٢22Df77l}XXdK 7ÊdK}KBB"HZ]]RM*XZ_I;`MK7z F XXXT}ZX]]]] ]!}KdKXF0,H#טjJiȂO}}C}KHKdr"F87CHd}4F,COZXΡ]]]]] XZ  ]]] ],77CQ;qÖ"P,ByBss…99/3 i]fИ22oi+//I+>>>i>+Jxxxcs/;5H"}9ׅׅ932j2@pWWpp|涶fzXZH4Qde7O֌qÊqe7 1 ;}b0F QuTMOdܗ罣y#X尰 Z;Zz衡]]]]40X ]XBII5QOKCKK"HH!,XX4$,0}}z]  ]]zXz]]] R]]] ՙQ;"T""Q"4 yAPI/֌-A// iy>`]]88FN92aJjIjj/>i> x惑II֧ Ĥ""T&BAy泳2|@@pWWpYٳٳ|fR zzz774ZQHdddQ`QK& RR bK" ߨ& ?XnA QZXz, 99Qd}7衡]]] ]]ݣ9Tzf7}X 7/JJ OOOHH#B}H}C}7z,7f,7,]  ]]z1R] ] }X]  ]fF4bZ"HЖ"Ê4P9T"d3j/ŒZZ^FXc2VJ/jiI/Jj ao惑aaVcsI~֣y yZZ;~I// 2@@ppp۳۳뢳DޡRRR zz7QQ;""ߨzR Zq""", [$?1?!}䬬+5 -TdO Ff,M9dH ]]] ]QP9d,0$K}z zB>/J/+#Hg y>"qz,z4 ]]] ]Ρ  4}4]] Rb8!QObrdT9"d;07BףTTQ//IČTQ8v,32Vjjj//j>///JJJ opa x aV涶/ŒByAIIPṛ5/ssoa2>#s|@@p\\W@Wppٳ۳%%fΙz4X, Ԋ"TdT"Te 1R}Q"C,zXRRRRZK/S>5~~Q}}}4F ,MBydKf衡]]]IK z4fzzB>ij/صQ̌ᗗ+9dK7XXz, zF, ]  ] ,z]] 74z]8OdCQ0 Q}dr"7ѣ9Kf833IBQ;yj3j>j֊8NFsV歑+j>JJ o oVJAyAQ7rr sS o2/qI@ppWWp@WٳDfRzz$7XZdú`;4R1R!HQ""K7 R11 q+yyBd}XzF5įdQH 1 ? 7Q9XKK陙Ș>JJ+SA  J/jP9}ZF,,,4,]   ΐ] ]]dF]] !,F!O!F QX``Z7ь9",$s2`O`I//>+jqÐfFj222oV+ jjJ Jaoo ocJ/I>7. P 9 I3A g>o涶涾ش 2@\\\\\ppppppp@۳Df? Rzzz4XzT;֖Qւ}z RRT"HRR1RRRd##+yy؅;TdZ4X,q顡,b?bOQ;d}z}X,$Bi++> 痬 JJJ9Z7bz,87z  e] d$] bFސԻZ`HZH;rTZ}I/ʌ`Q9y/J gFF,}A汭jjJJJJJJ aa//B/jԊPs׽—g i>iaMA3@\ppppp@p@pWpp@ٳ0RRzz$XXQ"QT;}7z Zd"!Xl R1RR1}#ug>5Ƚ`KKKKz7qBĘ5HH4b }T" λ!,0>j + > a a aj>BHZZCXzz    Z] ] "K8]]] FfbFFQ"Z!ZQr9qqAs2s5TQ`jJJq,lg/jJoo//AjsjzKIsP̯AB >汏 SyI|@WpppW@WWppp۳D z$7ZH`TQT";K,[lmÅ"Tl111RmQ>J+--ĽTqqKqyTdb}"9Ĥݙ]bZbF0F / > i  x aa q}4C4}C4FFX8    !X 4`!R] X,,bO""z,H`"׸32cAqBąd"ry// xJB}?xJJJc ۳p3JiiJB$9II"ݖBggioaigAy;-JWWWWWWWW@W@ٳ%fR΍ z$74Q̅`""""q X;QQ򂌣`Tmݐ11RRQ¾AT;I5MqKd9 }Q8 ,Q9rZ ] OZ FfdiJ > +j˜9B  ai447!}C,7b   Z]]d,8!F0,!Z}Cj222B9//x`l*aaxJJJc쭶ax VV J3y//-ף``̌`᷾oag~TTT3WpW@WWWWW@@WWٳDRRRR $zzXQ"";"z$z$ƌ֖;`B׊111ld33 qMI~׌q9P Td7]R1zTB;Tb]]!bsJ iB׌B>jJaa뾌44$zzXXC74  ] ] ] FdO! f,ZK"H8CHZ08.H}K+V2 5ģTQBIJaIyg JJ歭aox+ȯ/23siTT`# a混xy5Tj\phW@@WW@p۳?? z$X$X7ed;;;,ߊ ֌B!!1R8OPcg#K¾IyiBB9PI 5TQd,]XXZB} ]] 8,,HBjxJx + gB׌jxqXXCC}! ] ]]]  FXXZ8F]7HO4ffF^CC.Cт}#ciyB5T}ʽjac/a JJxa描a揱pp۳ooaxJ2IAj|2T̅5¾aooaai`;cWWWW@ppٳ۳%%f ???z z7`օ$}PP~Č}1sAI gQO}X bZOÅ,] 8dB>I/J+g9+jjxc}X0,,,b^!Od}4]] ]  ] ]8X88Q"HZZObޥZZ}щBAcJ//>;Q};j3JcccJsoaxVooooۿpp۳oooo+J-̽ i/+oa +-I|@WWhWWWhhppp\۳۳% ??? zz$}q׌-7BABȘ> ]]]z3 K4 +>>>-OOOOXR9 ]]]FF09I/ᠠPPj>> JcJiuX8!!OOZ     ffX}70FCCO]Xщ}򅣤IIsy}Z݉9IJ/cJcccVooJ coooophhWppoooA+۳s5;`w >a汳ox uBWGhWWp\pٳ۳%F?[ ? [ q֌"q$[$[$#5ȁiAdX 1RRR z߯3Q`Ax  ;OOQTP`f ]RF,//  >iiI/Ij+ii xH},FF!!!ZOO.O8]   FFf KKX,}ԉO!b8ZъH"` I yBdTֽI3/ᠠJc22c o VoVooo\pooaa 3/ٶ;` +>o x> @hhWWW@WWp۳0F??? ?z z $44$̖-è z[ze;;~BiA}}Zlbz$sтB9ܗx iOͺ"BBy¼˜4R]]f0,Cj +>/Ij>g J/P}!..OQCO. ] ]   8Ff,FF7"ZCѺ88 4HQ;`9BuBBBBTQQ//J/cccoxx 揱oppppoo/BJ۳T̚ iioooooxx i+c@hhhhhhWWWpٳ۳ٳٳDR ? ? [?z?z[[?z$$ ~Tezz z$}q>I>Bݦ ΰXXuĊe}T+ xxxiTQQ5ĆI/#8!R0f0ԂBA> ++iiĆ>/J˜9}!O.OwZO!   ]fF "CZ8ffԂ"d`"dd`B;QBssjPI32Vxxxp\ppppooBAJ;5֌B+Jpoo \@Wh)hhhhppWppٳ۳DFz??z? ? z[[? ?Ɏ[?[;5~Te[ KKTBii>}47}}QZR1 z4~/5ôyIs/yB//Jx+~TwօB9Ai!8] f7"+ iiiyAAJjPB}Z.}CX8CZ    FFFѣ }ZCfTbQHTBAAyysẢddQ;֌;55/caa+ opppppppBSIJcSy`̯ JJ\p\oax#J\hWhWGhppWpp۳۳%0 [[? ?z[[[[[??[[[RR?-֖e zzQi>K$z}48R]RR XeBs/5_IsBIj/JJ+ʊօף9j+Q] f!i+J+g iĤB#q-IBH!!щOQ8,7ddZ1  F!X F rXf0b!Z,F8wORR}Qds;QdÖ"̖;QṂ i3쭭 汳ppppppp2iyIJ3 ;MsJo\ox+g* hhGhWWWW\pWٳٳ0 [ ??z[[[[?????M55`Tez z}uݎ}iI>qHKQ7΍[RR 7IIgSܗy`֣9>/x+>AuT֌ׯAi  P"! ] 0"jJJJ >gBQdQ9P9"qdKCZQQZbFfԉԻ,] ,}4F7""Qԥ%,]%fr`OZO"TI3ŷQQ5;;æ/ oVoYppYppoAI/2 -̼3 2pp\op * hhhhhhhWWWWppDFz[[[[zz[z[[???[[[[??555ݨl? zzZA>/AH"}}"&R l?7}QP~ȗؖQ J> +qׯi>+᠑x"] ]f!JJ+iiׅ;ֺQQQ"`"KщdZZOфfbH4R  wr" ԦOZ,0Hbf]b`QOOOOd`̅QsI"Q`w̺QQ"Aj32cᠬ apV\pppAyj/揶y-5s \\hpppGh xihGGh)hhhhhhhhhpٳ۳p%F$$[? [[ɞ[?????????m-5`Tezz77zݖ>/I}BX qΰ ɨOּ_ʴ}jJjiB~ijJ >9]C>//J>ii;;wO.OH""HOOOOZbf04dZFF !b ]."dOOFXd7, F8ZOOQ̂`;QQ/I5זwQwr``wQI2xx pppYYppoJA>2ٱ~;I +i>J2hhhxhhWhWhhWhh۳۳p%0 z [[[?????lQM55;;-z liI/jÊr,[ &Ρ e݉اSၧ-T#ʯij+ 9A+jJJ } 8ZK///J/+>>>AiօQO.ZOщ""QOQb4d7fF !1 ]] ] ZOd}!!ZOZ!X4X0b.Q`d`"dTÅs;Q";w;``QMyA/II xxxop\\YpppyȽi/pۢ2;Ȝ i+Vphh \hGophhWhh)hhhp۳%0,z$$[[?[ɞ[?????΍?-M̹`֖M}Ê Ѧ/ji5։zu9lR;9SAiSyn~ij//+>䯯 Pj//ji#QO8 !ͮ4>j//jjP>++Sy`dZZ..C֌HQQ!8!OFޡ]1!.R!ZdHZ8ZC}ZCLfb!CQrQd;TAyT"QQQwcppGGhp\cGhhGGhhWhhGhhhWpppp%$[zz[[[??????[Q55;}-#uee}JIT}Z7zB$[ }`QQ5iSSB/j>g#֣ Ę//j>؀#H8!ZQAj// > j +iA.Z.ZCOQ""QwOZ}"Q!1 ]  `}8Z}}H7}7L ]F,0"`TQQQ֣B5;;;TQTH"T` B-ȆI xxaophhhWpp ABs쭱/ا5hx+YphhhhGhhh)GhhhhGGWppppppՎ7ɞ[[??--Q-5;TMMߊ}KTʯ/IS-z8ZZBz RRTZ#iAju;``օ9IjI; F0,ъQ9A/j+idOO..OOQ;򣣌QւO!OZdֹQ8fޡ] ] fZr9!Fb88,,0NKZe0XZ""`"TdщQ}TȌT֖Qd"II/5; IIᑷ xaphGhhWY B;׆IJc+_ @op\ @hWW)GhGhhG㈿GGGhGGWppp@@@7$$$ɞ[?????RΎ;-T`}l$ 4qee- IBT} };ue[RZ!4XlB/+_3j #$,zXO}e PʂR0f8ZіBijjJJ x үd}C.Q;99`QQZ74dQ!  bT8࡙bb0FC"wZF!O}HQQ}OT֌Ay5;;Q}T;33sČֆyāiappWWhhGhhhp\piS>Joy۳opoo +VW)h@G)h)hhhGhG)hGhhWWWppppppppp0,7$$[[[???[???RQQֹle}m XqBjy555dTPq&R]!}}}}/ _ +3/i#zz XzλF,ߊBP B ]]]]]fffff08Zdq"BjJ x+}C..y9ÉQOO`Q8dO ]]   ,dbf,8XX774d9"0,}}}֣}QQ 9;By// Bq#/ąM55;;BAJphhhhhhpppagBy/ASao xiV\@hh)hWGhhh)hhhGhWWppWpp@W@ppFzXɞ[[[[[[??lMTTօTmX ܼ ÊqؽyA~e[R1XZZdÖėii/if,,߂9PP "Lf] 0FZHd /x i׊}ZOZZH yւQ!Zdz`.R ] ]] ]] ] F8,!]]0FbX84X4}qrԡH""֌` 9؅A/y5ÖB TÂT;->2ٳppppp\\WhGhhWpppʵ¯uyjJi쬠ُp>  VV\Wkh)hWWhhk)hk)GhhGGWh@phW@WWWpW,[[[[??????MTdæl[m7ZBByļy;;Ae[ b4}#5J+#MXzFF,CCK<9IB},FfFF噡Ff,}CB9JJJ+B#ddZт TZX!F,ZQ]]  ]]RfXzz,f8X7z}4ԙ!H"Hd;Xq` 5;AJ ABuBBB;֌AJppWhWp\pGhGhWWhWp۶>n #JcWi >gu J\hhGhhhk)))))GGhhWWppp@@Wp@WW@pp@Dz$$ɞ[[[?[[[?l#qTTÎKT--~ySi5Te[]RR7qB>j+/ jez F^Cͮ"Bd}zF zF774XzfF,ZK7KPIj/¯QdѦ ¼SA5"f,b8bZOf]]] ]8.Qed$f -Bq;800!Q-55~~5佽J¸T`ygjVphW\pWp\WWhGWp@Yi S#ʠ汢波n⬱۱+ \\hhhhGh))k)))kkk)G)hhh@WpWWWWWWW@WpDD,$Ǟ[[?[????lƊd;;Î!md;T-le#;~ByIIبR1,XX#A>_SxJ/+KK7 Ι,^CrKZzࡡX F4C49A> jjB9Ö III9ʖZfFQZ8] R!Q`O};z]XqB/ig#זX0F,C""P ~5MĤ2Ycq#ף-uiyBAg +pGhh)W\pp@kWh@pYo > +22/ ʸ>۳Vpui\khhhhGG)hk))))kk))hGhWpWWWWWW@DDz$$ɞ[[[[????eq4d;Xle֣u7-`5ا5II#½qmX77X݌nx ++A}47, ,8=.CHHւ"Z ]]] ,F0z44C}d;;ȯP999KQyœ䌂ԙ ]ZOZ ]]]  TO-I4F}qPJ2+Kz7HQ P` 55䣣y9+c223ħ;5B~ʵ++jiVphppW\VVY\@{hpgni梢J aa>xVY \GGGGG)k)))kkkkk)kkGGhhhpppWWWDDǞǞɞ[[?4}el;;}leByII5-}77/I܁ + + A#7z87777XX,ջ'.C`IP}e,]RRFF877騊qÊ-BA999`QA/jI`Qf]88! ]]]  ! ϼH ދK/JcacjqKXT֖Q"򹤚5IPiBBI22¯䘯A +ܗ2cVpc3sJJJ3Y{{p>x Jٶ涃涬 xaVV2\Gh))k))kkkk)kkkk)GGhhhhhhhhhWDDDXǞ[[[[[??lMMMÂqmɰeQèm~BA/ʊ54R] j 47XXX8bNN'CCCHH" H! Rf]8,78,}}eߊ999`T׽A//P䣖Z ޡbZO8]퐐  !T f"|2sJV3IK}dTmZ!Z̹†PPB2s¼/yj>i痬Vccpp) >++/J//9B"3hhGG>gҷ붃 ۱ +>\WGk))kk)G)))kkkkkk)))GhGhhhhhhhhhDD7$ɞɞ[?m&&K-è??e}ߨ7dTd~_B>5M&##-䘌zFzi }7X7X778,F0vՋ,r8Fff 77Xzz X"99 B iI+ģ !b !8e  ]FIs|YJc23JJK}7XOOQw`PIs3iA+x3j>YYYp i /Ij 9qHVGGa i惃 2 i>ch))G)))G))))G)kkkkk)hGhhhhhhWDXɞ[[[??llÊl [M--Ǝ}Tl~iܸ5קƊʯjB$揶x+ #K8XX400FFvvF'C7щLL00,ezX FzX ֣9PP⁀ +B֖O] ]  ]] fd/ i>+jἼy`!F8OOOO` qiij23i #3c2VVVVV //TH9Ihax۳ggۭ淃x +Ykkk)))kk)kkhhhhhhhhGhhhhhp\hhWhD7$$ɞ[[[??ee[1T;& edeq—+SnuMB䯣į衡7qoax ~}Z87X47Xfvv''47LL'^=='''',,, 7d78,F,? 0 5B ggAO      ]]  O"9jiT Q FՋZ}OOqAJJA i+jc//jq"9jcYVV/AA½̌"QQq9hGoo揱 iV J \kG))))kkk㈈hhhGhhGhhGhhhhhhWɞ[[[llle[}5 7Z7-y羾/A#$ i5B9BΙ ߴA3oooȖdщ8X',Fv'^'$7'LvvL''''^=C^'LFzъKC7,軐ޙ"Ĥ9B~5⸸iOb]  ]] ]   !qqqeQ``Qff00bZjs3ciܗcVosPHϭ3J/i55 Q9I@hhppo i 汳c JJcc2\kk)kkkkkkkk))GhGhGhhGhGhhWhhhhhN$Ǟ[[[???}&-y~? 5ISAS$KlΙ 4ߊoop+qQ^,FXXFKf0'Ԯ'LLLLNL''CHC7XHZbFޡ廐ff8BBB5ByM}Z! ]  ]]]  ] !7X 8.!vNN'3cgʴB/32jr""33Iy~; ";2@@@\ a + +ig+c2cx朗+ /JYW))kkk)kkkkkk{kkhGhhhGhhGhhhhhhhhDNɞ[[[??11?? [[ȽulzΙ݌眾 ggش&Xz7K K o"Q.8NF8O}7ՙFC'''LNL'^^CCK}` TT9F0Z""ׅS B!R   ]   ]]]]]]] ffU]8NLCCrIsssJ3J/I />g#H...<9 -~5 "/VVa  +2a  Y)kkkkkkkkkkkkkkkkGhhWhh)hhhhhhhhhhGhhhhhDN&$Ǟɞɞ[[Ǟ??1 [7l~5ģ5Tm7[zlyI gȀe74ez 1]]1ΙX#  oo ;QO8NN!}7K,'4rC74vvL'=KHqq9Q9rFF]fXd;;5 Bdbbf     ]]]]]] fF%]f0'4C͉C Is3333I5``"KCC..(<<<<"<``BQBB/V Wpa汱/쑠梱S c3\h)Gkk)kkkkk㈈hGp)GhhhhhhhhhhhhhDL$Ǟ[ɞ[?[$&eMy y5qe&y+gnn~#XɎ7111 }#q aaoxgH^8HH9K7XPIC}CLvvL'"BB9 HH`fff b8;" ABBB;qXb,      ]] ޫf0:'^^32223sI `.O..=^Cwwwww"<"2۳pi/J>AA33Y))k))kkkkkkkkkk{{{㈈hhhWYWGhhhhhGhhhhDD[[[[[????????? #~5BMM׆/guMf] R1]]]]4so x oo #Q8`r Ps3K"II""HԮ͉ cccZZԮ^L fb88K"r"5BBqf]f]]    ] %%ޫޫ^^vvLLL^=H"̩̩8=<<<+ gظAIkkG)㪪k{Ekkh)hhWYYhhGhhhGhGGhhhhDCɞ[[[[[[??[[ɞ[[zzz$B5qT֌}}MSl z[??]}2axoaao q}æO̤s2I97zKP|sB#BH"⠭\o +O(.HCb0b,CQ`"BB#qOZ塡R]] %  DNNLH.C.((((=񐲲((ͩ̂`ģQ`QKHic2ۿpV>+Jj~~Ag+a+Pj2Wk))kkkkkkkkkkkhWpphhhWGhWZ}$Ǟ[[[[[[?[[gB#eM`//yMez#}?? F!OO¢ُoao3jdZ`P¼Q}zf9cj׸dZ"9xpoa Q(HCCLN Fb<9P+gq7Ԯ!!8b , ] %  %%D'LLN=.CwLNN((t8.(<wwQ9;OX7PJc2cV٢//By__ BPYkkk)))))k){k{kk)㈿W))GhhhhhhDDKɞ[[???[[[[z$[zЖq}}inul?RR8ʘP?Re!FтQT2ooY jA`rPr9,77z0zB/J£C"P3Vpoc/C.^0fff8OPj+4.(Cbz]    vvLLLL''L'Hw=L^=!==(((.(<<#/ٱa qI)k))kkkkkk{kkkkkk)hhkkGhhGhh$ɞ[[???[??[[[[-RÊ#&$ RXBq7ԎOO;yg>są `4,FzF,s"}}"3\GoV3PCC.Cf,f!ZPPjJ/jAqKH}CCKH!bN  L4ԋ'''CC...(C^^^^^==(=((6(=(͝.wrJ3/jKHCH"".Cbf  %LHqqq7C(=.^(==^=^=((==6=(==((...ww"9 Of1,sWphhGWJc۱++ jVۏ2+K{k)))k))kk㪪kkk)kkkkk))k)hhhhhGhDDMMe$[[[[??????[?l--l[ y>ܠBe[RRR l7&MR]  ѦQQ֣A+Jc2Vc>q#ZZъK4FFzz0 7774}O8C9YhhhGh\oP<CC.C'fFb7B>IJgqq<HH<HKե  ޫ%DDDvLK"B9j>gH((===(((=(((86((((.((=(....C" IP.8fF廻XC@GGGGp ۏ /ᠭoa#kk)k㈈k)kkkkkkkkkk)kkk)k)hhhhDOTɞ[??-ll[7M>R?llXR[X8XKTQіBg> qHz, 8XZ4zz470zzFF X}ÂKCq9\GhGGho x i^(CC'00,F,ZQA/JcJq"q>cp c @kk))))k))k))kkkkk{{kkk)))))hhhGhhhD%OM&&ɞǞ??11R΍[ƌ[[??[ R&#؁iyyue? ݎXe7ə Kd"ZQׯ>j BK4,zfޙ,,K,,ՙFfXQ݂;8dchGGhhxx j׉^(C^Lvfbf,O;"ij2>qq"BK'Lvv L'^=''L'$$qB32YYYp\cP<t((Ӈ(=(((==(=(((((((.=HQBg".]]FF 7c@hGGY􃭠+aaٳYp 2ߊ/kkkk)kk㪪Ekk)))㈈hhDDD%.QQuMǞ[[???R1M[?[?[ Ύ#؆IA*l[֖ll?7ݨXd"QZC9BK4KXzfFFf,X}qzFFfH!}}CԮ\Ghh)\oaa jC='^(C=Nޥf9 J3gBׯj'LL''vD%%%ޫNNL'^(=''''H9YVY\\YJPH(=((ttt(((=(==(.(N8O9> O]0fFf] ϒ@hG\pVc22 >x۠ i3hp2 Ќ3kkkkkkkkkk)))kk{{{kEkkkkhGhDDDDͦT-MMu$[[????R11˞? [ Ƨ+in&Ύ-~e[ ?}Kdq"dOKHq"BBBBK$77z F,X}K,Fzv0,OX87CH/cVpGhGooooVj"'tC'LNff}I #Jjjjig9qqqHqK4vN^^^^q/phh aVAEkkkkk)))hkkk{k{k{{EEk))khhhDDDͦTT-Ǟ???????[???4z&iSiu?RR&~M?[?"";"dXKz,Ι,8FF C}XCԋ,F0,CP+cWWp\c(H='',HZrϼ9jV2cccc3/jP9 jJcc2V3P.(((((twwwrϼIPjcY@@\J>c\\\Y3H(((t((=((t.(=%b}5/2>q48Z`BBBX"Icic\Vo2/g AJuM3ph۶ h)kk)k)){k㪪kEkkkhDDD%Q-T-TǞ??????$ [ lqAᬗ+ʕ[R 51R? KqBq9TH}XXHH"d7z z R噙FFFF,z0F7KXLX}4陻.A W\GGV"H<<HvՋCTO8b9I9Bj2cVc33s333333c|YP"(ttH..(((.(===.(..(^=0%;I2 i æAiP/J 7B/3נV@cA#u ا--Ȝpha۷J@kkk)㈈kk))))kkkkkkEEEkkk@hDDD.ͦQTT-#Ǟ[????[??R[$ ɨݨ4uJ+?uȧe?R?RRKH"9;֖d}T```Kΰ RFfF004'4H}7'9i c\@WG3j"HHH<=HC'NO`OZ8b8OP/jJc2c3332YVV3/sI9>#5/s#ȗi/춒Vۿ)hhhhGhh)kkkk{E{{k{h㈈T;7$ڞ[[[???[m[&&[?[Ö;;׌eR1R[[1144BPIjPgąZZdde衡]]衡F78,FFXHKqHZщqiܯBjVpxJJj4'=(='LfFFN84L''(tttttt6tt6ww<CHH'<>"̈́=(==(==((((((..(==^0% ,B2S87*g xaזQ`s|IiȵgBio汷涬pWhhGhhG)Gk)kkkk{Ek{k{{{@hhMM-`;l$ǞǞ???&Mlڎ$ [M--TTT~mz1ΰ Rz7騌I3jȖ QOO;R]]]]]]噙Kq"qqw; +Jy"qqiaoa c\VP^7(^((^%%DDDL'tt6tt6t6ӟ<<<<<<<<=(HBP"=88===((=(((((=(^N%%% fR!ݖĜM44qKJŒM}+Sφȅ-/>WWph@WhhhG))kk{kk{E{{{W@hMQ-`;TǞ[[???*le&&?[l-}BMlRR?&1 7XBIsPqQ}}`"ZR]]]]]]]]fF,,}"֖""99i>+ B; x\jgC(((='LvLL'(tttt(^<<<Cww<< BHB#uæXqXZ֯Ajg2> p\\GhWWhkkkk{{{{{{{㈿GhDDDdT`;qǞڞ[?&u*&eǰƧ-eeM}}-ee#-lR1[&$[R , ReZZ}HO}C}}]]]] f47݌B5Q oxS׸AiixopGxHCCӲ't666tt(tt66t666tt66ttt<BBϘrwH='3H(^^=^N%f] ]]]萐 OQԨjJa ZZTօT!b}7}}mee#I2 +/igpYpGWWhGGk{㪪EEE㿿GhhDDMQ-;uڞ[[?e&mM-MMƖ~lu-l11--1]5qHC!^C4847 ]]R]] ࡡeP x  AJ~ʸ/  xHKCvv''C((6tt666ӝtttttt6tttt66t<>3IwwCC('"CN'^^^=ff f ޡff,b8AJ!dzXd8zKւ!è#/i쬶ii2phhhWWhhk{{{{E{k㪈hhDDƦMT֌#ЕǞ?Ǟ[&MM~;m&ez$}RRÅ 1 eqII 88bC8zXzF]]]1] ]FX9y9TÌcax+gng>įAgxjHC''''^^ӟttt6t6tt6t66t<<<<"H<.^^ ='==衡 ]bOdT֣܌b88͖XQ,Rq}s/3-Bל٢J>+pWpppۿhhW@WGGGk{㪪{{EEEk{h)khDvKƦQT`#*[[Ǟeleƴ~5e&Mm[BRz&zR1Rm9R ֽIz8XΙR] ]]]]] f00B/cxn/++s/goYVjB4''4HHCC<tttttttt66tj ԰ FF]]]] ]FFFF,K9B9֊coV/ i++SBJ xJjj33jH<JY+i +j/cpooox aaVYY3g<Hi陙F ]]]]] ] 8X80XH 9;׌3a2Va +>ooxaoc\\@\YcJPH<PIrttttӲC<9j3\\@\> >3VW\VY@#=(^CP3..==: ]0Kf,BfFF00FF0jP#LFFX}8R9ᾶ/⧵#;s2/oop۳VYpWWp\pWWhhhhhhh@㪪{EE@\W㪔))kDZQMM~ǞǞƴM&l&*-MM--55~MM[&T&&M& 11-l1},XKKBq,zzz F FKdT}}4,ģʌa\oo i oaao\Y\hhW\Ycj9H".''^^H q''::LLNN:%] O"9dZ!b8OOFBd44}B3\pGGxzRb!M` 汏a波e7}2\cVVcJV\pWpWGhhGhhWk㪪E{{{{{{㪪k{kkQQmm&mn*Ǟ&ŕeee&*M-u-n;~~;M[&mM-lM~اmRzm?1R,,KB/Iq-}X,F,$zFFf ] f b7CdIssIׅKzH9j/JaY\pYpVi>ooo\WWh\Vcjr<<HHHHHt/Yh\aV\\V3jPBHPjc\pV/q<''C3c3P,'L,LL:%]"8],!ZHB+jjĖ\GG>#L,OwIϗc/dccV2V ٳYpW\p@WhGWWhGkk{{{kk{)TTm&&&unڞ&m&&&M-;y5~~M&MM-T-; lX&1OTR00F7j陙,FzFFf  0'7C9/37z,,FCBAAjcopppa aaoY\phh\YcjjIP"<<<<twIVYo\\WWYcjB".Hj\ppY3BHԋ^C9///+B}''',LLLNNL',%T}F8OCT; 33/ > Vhۃ#z0 T-`y᷷J>#u᭭YVcpWpW@WWhWWW@hk{k{{{{{{k{)QTm&&M**&ee&M-S 5~lllM̧-Bg~~T7Ml1QlF 7}~;4zF,zՙ,FFf]!bFfޡ044KBj>Čd$LL0XdIVVYY\ppo oooh㈈)hYcV2c3jPrBBH..^C a᠃p>'F,!!.-|cJjׯ۳۳ooWW\WWWWWW@@WWWkkk{{{㪪{{kkk{:d-m&*uuMmlln5~eee--~5S+Aȅߨ#1!l1,XT9׊zFF,,FFfXf0L474KH$L$'77,79I//cV\ppaooop\WGW\\h)hG\\\\V/jwrPI333aaooV3JjiCC=.(.""<9c@W\\3qg xx@hh $!`I@@A>/ap۳2o涑p۳@WWWWWpW@\\\Wh))k{㪪{{{{{{k{k{k)%CM&*ǞMM&&MM-~;~m&Ŏ--5SyA+i-? Rɰz XߊTeF,,F噙ff F$4X4qqq$$$z,'74KLL7qJcc\WaoaaooooY\\Whh\\V P>PjjjJJcco3jBKCф^'..q$}}ݩI2@/IVppp欠pٳWp@Wpp@p\\pWhkk{{{{k{kôMڕeƵ-MMMee̴M~Sy5&Mƞ-~--5 Sg X*11T1z4X ΙFFՙF,FFFf,8 F,X0zHzzzL$$X47$774dA\\\hhooa aYVY\YYYW)WGGhh\ax jjYo xj >YJJjqH'L'=jJsjCX',vLvL^C'^<"JVJBqHHC^^C<>"ԙv0NNNv0vvvvNv0v000000ffff8dbO0֘PqHdq32۱2cj>gAcWG #!5##>ϒ@22Gpii x cVVYp\Y\@h))kkk{{{{{{{)QMeu-Mun--5ȧM5̴un5yS-Mee$?1eQRz zFF,FF ]ff ,CHQK4,,,zX47X4"AVpGhh\GhhG  xcYYVkk)hG\YoVY\ jjjP"L,Lvv(L^Hx"HHHHH 94N0vvN0Nvvvvvv000Fff0fffffF8,//jjjAqM좭J#~Ƚ+pWpgZOw`ÊB2|Y 揷a涶泱acV۳Y\p))kE{{{{{{{%-MM˕ƴ-MM̴--~e~*-;;̴-5Ҿ+SnMl1R R  FFFFF, FFࡡFFF!CQ}陙F,!C4Crj3Yhhh@hhhaaa>> >+xoYV {㪪khYa3acY\Yo jB"qH,FLvNLԮHHH^^CH$KCCH<KXNNL0Nv0vvvvvv00f00000f,bFXCqB/2c/+guJ/+ւBj2p#TQQ`TK9;2Va2摬ٳ涶涃@ppppYYY\@hkEE{{{k{M*˞eMTTM̵-n55Me*uMT-Q~_ -[$[Ree 噙FFF,,FFf]!Z4FfX}b8,FF0FFFXCԉj2GGGG@hho xa +++xVojj\{{)h\Yoa cVY\h\a >jjqHH^NvNvv'=HHH^^CHLHC^C^47NNN00vvv00f0000F00fzXb}K/۳>ʊM#IIyBw`~c#*#HQO5ôI2|2a2a混WVWh@pY\\\\)kE{{{DNZ-M*e#**~-55MmeMQMT~5 Su[[z1eR F,,,FFFff]]]OT0!000ff0F0,8C}OZdBj/ahG)@hoaxx J+j V\@{{{kk\\o xVV\h\i jqHFvNvL'CHHqHC=CC4'K"^'C==,F0NNvv0vvvvvvvN000FFFFffF !^CCKۈGpoV2i䣽yļIIʴQ`;Jp#uQd֤!}Icaa۳Wphp\Wp@@W㿿hkE{ﻊ*--T-~-5y~MM~-ŞMæM;yM1111 $RR 7efF,FF]f !щQZFFFF,f00ffbCZZ.HQP aGGkhhY xx >>Jcx+Y\{{{{k)GVY3>jj3VVjgjj"qLNNvLCHHHCC'^'C('(='LNvvN:vNNNNv0N0F00FFF000000fF,F !CK}ic惑a//JIy;IŒOQ;ۑ#dyyqXeJVcx>i۳p)Ghp\p@@pWhkkE{{W{k'*&ڎ*uô~-M5~~M~~&l&lmM _&?[111[ R}7 z ,,ՙ,Fffff0ջX,F0NՙfF XZd>+GG)@Whhoo ++A> jY\Y@)\VVx"gj3>>>jj9KHK,0'CHHC(CCCY@h))))h\Y9 jjxJjjP9HK4'LvvL'HCCHH<HKCCCC^^LNNv﫫FNNF0N000FFN,,N0F,!Og>+yggBuu +WhGG\\\@hh㪪E{kh)0uum˞&qMQ-nM_n-5~-MƞmeMB IS#ǍR1RRRQK RF,,,'Z,FFFFF0,z,ޡF8!bbZj3ph)kW\\\\\oay`-BgqY\@kkW\Vj">j jx3>HX',,v'^HHԮHHHHHHHC'47:,^=='LvL,FLFFNFf00FFFF,z,bCr/cVaa  #Byj//iQTig᜗++ +i>xa SAixphhppp\YYY\Wh{㪪kEEEEk)hhhhh))%ZQM*--u-~;u5~̵55nQlelQ~B+ Ҁ&[l1?RΰmeXΙ ,,L7449P4塡0,FF0,777z00fz!ZOԋ!Z9JVW)p\\Go --;#qW\\W@)\Vx"g> >ׯ9"H^''Lv'CHHH<HHC'CC=^L7'L^C='ԋFNNF000FF0,XCH3 ص* igqÌAiijJ3e`5iA淃惭V++ܗppp\\ppp\Y@WWW@kkkEEEEEkhhW))DC̴*l-;~-;~~n_~̵-5~nM&eemlTȁ +n?e1RRz?7;`4$''^KKK"P3PdFFvFXF0X4XzF虙,!N,Z9V G\Gox+gTTQqqBc\\\\khh\cjj3c/ggB"4'vv'Hxaoaa22+ +++pWpp@WWWhk{kEkkhG㈿))-M&&55---~~-~n~5~~n--mMn5 SxҀu1RlƎ?1RRR11RmTQMQ9 ֌֊7,$KKKKqIAd,FN40 z4}Z7 ff],88},NQrjs2oooaaYhhooa #KQQOOOB/V\W\\k))\aY\V3jggBPq^'''CH<HHHH^7CH^'LLLvN^.CC^LFvFNFFFFF000Lz'ՙ!"9/2 > +jJjAg JQgioao+ gҗ 汏Whhhhhhh)kkkkkkk)GhWW@WWb--m-~5yy~-~~~̵~~-~5~MQ5ܷa_ƞΰ[ R1R111T-}}`Z'CKHׯqqzz,7dXffbZCH},ZPJoohWhhha +T͇.H/YWh)))))h\\Y3jggg9HH^'^CHHn_> oop)hWphhGk))))k㪪kk{)GWWWpM---5yy~~~uyn-~~Mn~~l-~y淾?[11RÌQmeTT}}}KBj˜BHKKK"4F,!HQQHH'HщT/VVah)GGhha #qHO!ZdBc\\G{GVx >gׯ"qqHHC7'^CH<"CCH<</으Ij 汏 u*#oopp\hGhGG)k)kkkkEEEkk))hpaD%O;Q-5ySS5-n~n5~n-5~-M?l;yāa *?R?R1QTQ}}eXe};HCCHB>jsc/I/Iqq;B f8ZdCHQdqAx oGhhhhVYa  gBK"O.O"3h\@\)GGGGYYxg<KC4^=ԝC<<ii>i܁M#~A/+J汳opphppp))))kkkkkk)kkkhGhhW۳DTQ-5 S~n~5nnnMu~̵-̴lmyS*R[R1-Q`Îe}q}7X}CׯB/s////j#qqB}Zd""HCK#A/Jihhhh\ + BH.HKc@\Wh㿿h\GoxggAP99 KX],!Z"Bq#74ddPJ/i JVh)hh gg j>H}HK3@\\Y)hWo  BHHC((HHCCH<9qHHH4'LLvLLLLN,,0FFFFFFFL7C}}ZZOOQKs/BB9~-ç׽J ص5+nM~y95y~~y>i>/VV@pohppppp\\p@))kkkkk{kkkkk)khhhhp揳DNQ-5ySSSSS5~_5n5S~*&&-~~5&eM5SSSa?1R[lR11mZ![ldQqKz ,Z9ȯiA׌ףPPK78H׌KMB>Y@\aa > >>>>BHKHK#j2VYh@WGGoaiHCCCCCHH<<HHqHCCC^'LLL,,L,LNFFF,F0z74444CCZQQQTPM#BBBČ-5#K+/;yI>S_Ľօ~~-;IIJVYWpGGpppGkkkkkkkkk)hhhpoDDDQ;--5yySSS~n_5n_S5M&-5~MlelM~5__?RR[R11mQeXߨ !֚9yjP9Aqd8λbHT;gA KCq`Q`ĤAJJV\\VV>> qKq/3Jo\hG\\\\\\Gooax>qHH<CCHq"gPqqqCCC7'LLLL,,FFFF,,,,z744Z<̂;jBB I ׅA¸# ~` IIAA9Q֌MM;I >YWWppoY\hhG)kkk)k))))kkkkp@hhhoaDC;~ySSAy_~5S5~m5~M̴-nnؗ涬_RR?11Q;QlXK݉TK4OQwBy3;TÖ׌Hq"dH}Xz,!Ì gjg#"dÂףBBcccca x c  x g>sJV\h\\\\\\oox   >qHHCHCCH">""qCC4'LLL'''L,LFF,,ՙ,z$7CZ.ͺO9#qq#2/2#i /ysI555;̌ףyy#VYYYWWpWppppV\pWh)kkk)h)Gkk\VY\WWo~ySySy5yS_܁~n*M~~̴-mM-_aڍ?R?R1111Tmz ÅT̺`~5yqCH"KCH"HH}X !H;׸>ig"OO/2c> ##g aa>xo x+gBP/@hW\\YGoo xx < >dZԄHݖ/@Yg#gVYo oojqP \hG)G\\GGo xxx igq!ZZCKg/Y #j a>ooo xiq#xV\GhhhGGYVoo\ooooaaoa q<BB9Hqq4$$$Lv,XCC(..ͩQׯVp #g/ْٳ gui-M;`̹wOQj@WGG\\Y汶止phh)h)kkhkkh)kk)kVٳ\ppWGGWaD^_SSyyyyySun~M~--5n~y aǞ[?1Q;##~-~5T;qHKK4KqK}}K8"B+  ix-d}ZZZg+x>Bq a > xoaoaxqHj V\)GGhh\VVooooa   qq<qqBaYo\\YVj9j/qq#$$$LLL^K8="p>Isog /XQwwZ!ZQ~>YpG)))GpoVYpoa@Wh\WhWWkkkkkk))k)kk)kkkW٢pWhD~SSyySSASS__5~5-5QM~MMxx[[[[?1RmQ;q&5`-`#9B`"9B"}HK4XX}HHK}KHZіPii +>JAMddQZ}i ao>gP3a ax jqgJVGhGGYYooo xa>qHH"Px a\o\\\a>9P|3P>+jjj33qq4X7'CKH!.8.HK3@@Asao 2Q``i 쒿W@hGYpxchhGW\WhhWWkkk))kk))pٳY\pGG۱Dv~_ySSy SSS_un55n5MM-&leM an[?ɞɍRR-~M ȆyŒM9P׊K4}HKCHdH>++ii J/#"djco+ijoooo \\Y qchYYoaa aoa gHHj >i J>ʖ"Bj xooJ/3/VoVo x ooh\VqI|hh\Yoa a oY3 g> \VVVVY\\a\ CKߋ 7|@{2-}5yj>n 2/ʌBTdHqʯjJ/c/2YWoccYhG S+V@h))h\\@W@\kkk))))kk㈿۳@phpD.BB__Sܾy_M-55m~&lڦy+n[1111m`M$ sᆽأI>9׊CN,C}CCC""Bi + j"""Td#i/x aJYoaa xao\qqq"j\E{{)W\YY\\\x aoooaaxHj3cxxaooa  Y\aaa xjx>gHHHP>> a\WpY\G\ gKH$v,,!I2|P;O5 g /B 55QQdK x 3uMBcVVoۿpox+cW))hY@@)kkkkhhhhhWp@@۳pppW@@Wpp5_~5痗羬S5y5MM~~melȬ *[?1RM-Ψ~ yjByj+A g"HCHjcc gʌB"5 >+ s/ oa aao\hV  >CHH>gg#>JcV2cYpphG)Vcg#$$陥00̅yg/¼~ʌBiaoo >4z4{@VY۳x +2\hGhaaJ)kkkk)@@p붶揳pW5؁Sҗ_yy~5~-u~&-M-ҷa u?11R-5yBzɨT#i5~5A9}CHCH""9qʸ>xVBA֣ujx > +  aaY\\h\HK>Y\\\\YVoa xxx aoooooxjcaaa  oax+>xo >i jgqq<9g#qq##B+ > a\pGG))\ *$NFFF}Q" > c /،BJ A9|VVV +2kkVcWWh))k)k@p\V a @ۢYD5__5SS+y5~~55*lM5-A쏷x*?111eT ~~B##"OC.C.CHף9Ęj3j iBB9I>>xxxxx aooo\GhVHCHBj 3J aaaa  aooa+9BjaVoao aaa jox ggBBJ3xj>gP>a))GGG)Goa g#XFFzXZsI+> >x2J>A>igBAj ooa3AK$I@{2Vx xa xcYW))WpۿkkhhpgS x W@٢cDCB5ȚS+~yMe~~~a*1111111mMMʅ~BB~ʀg H.CC.CC99 #>3J igʯ2g>x  i xx aVYGooh\ 9qHHjx a oVVax oog>cY\a x Ya gB9>jjja\Y\YVjBט>i V\kk)GGGGai7zFbZQr Iľ+ g+ j>coo/HB3{YWcJaax)GaWh)kkh)h@V җ涷 |듬sD'"~5SS痗ȵ-~ySاul-;~Ĭ _uǍ111R1[llzzlz-#B~B > ydK}C}щQB#u/ccx qjVia g aa aa\GGGG\\qHHHj x VV aooo xYYo  \>g3/JVYhGGYa3jP9qggg>3@k))G)GGo qz,FF,,QyI든+/2I ##g>VPg#H9|@Vpco混@hhkGpo@hkGh@W+ S||vȁyySܗ++欬n-uyS~nMl;_S u?11111111?MqX?quB~>J+׌H#q#>/JJJ g x a x oa3j>ooooo\YGGGGGo Hq""BjJJx> Vooooo9> o\a  Yoj>PjjIhGYYYYVY39qq#gט2|@h)GG)GGG>zF,0Xd sJ+iJj#ii>iYhcccjИ\{GWG\Vhhkhۢ汢W@WW+ii ٳۢg|@@|sySK__S+++_n~y5__uelmM *&11111R[&߰z4&z֣ז>>ȌdHHqפAqq䘘iq9jJ ii xxaoV2 ooo\h\ooG)G\oa iPj/ >xoYo\qj>ix oaoV3VVc jP//c\GG\ooo\GhGYJ+gB>J/gB3V)GG>u$LzCQAj9Agg xppWp\2V >3WG)GhVcY2@Wh)pWhV > ۳~S|@||SyIsD8555SSҗ܀n~_yyy~l&**_ܵ111111?e-qM7zX777M5g + B"qq>#-A>P#Aj3 a  oaaoYoaaohGGojqqqqg+/Jx> aao\\\oGYJP>>iao\aVoc jBB"PcVVY\ao\Yca ccj""`s|EE))GGGaH$LC}"#_yAjPj3J phWpp\WW))\p G)o2@hُWWWWۢJ pWh__|yM-5SD__ySܗ+__yySSgnnmemM*_ n~Tl11111111R1Rz z[747qB+ >99BB>¯׸>jjA"ׯi +x aaaxaG\\\\\GGo x qqHHqIcx>xxo\o h\2BKKjJ>gcoooooocYVcx"<9qaV\GG\YoYVYjq`9|{)))Yjg$44}`yἆjI>JVcVo\Y@k\kGhhhpoppᠱ)2@h\a汳۳\Yca)p涶쬁y|s~lM-~DK5ȁȁҗa_nn~~SSn-mMuanش11111uMX zmyiii+ i+j9ļ>AAA+J3cJ>gg i a + oo >q \p\GG\hhGGGGoaJjJ>>xao\\o\oa a\hqqjjg aooaaaV\VJq"HKqqjxV\\\\\\VjqqdQQQ`I@{{{hhV >#C" y;ȼIP>q oppYYG)Gk)k)hGGppVYWhhh\YV)V3 ٳ뱱 a@۳~MȾ~&*l:~SS _u*M~~5SS˞&eme*ȗaanl1RRR[lÊ}R1R [~ȸ   y/iyiyA>a >+ aoaa xoa #J@@phpphhG\hGGhhG\ >gqqq>33xj >x>aVoYxxo\V+jjgooax \)WWVJ//HHJVWhGGhhGh\VY\\\a>##u}OHI|@ha>qqKrPyw +qgVV\VY{㪪))hWYVVY@hWpYoYG2x+ppW|`--`y5e˞ڕ*Syyܾ_M-_AgƦ&e-ܬa+u?111Rul[ RRRRΎ~yx >ȯy>jii+ xaaaxx ooax a #u@\\\\G\GGhhGGGjgqqq aaxxj  xYYca WJgq#9jj xa a  Y J9qCC.H/3VW))))hW\\\Y\V#ЦHdI3|@{hg9HKP99;`yB cY@@YYk{{)hhGhWYYWhWpVhGGc/opp۳ٳi۳ےSsy--~-mlڕ*nn_ ._ySx~-~y~nm-a n11?l}ݰR[ I22a +~ׯAA9AJJ aaoa oaax>qjY\@p\G)\\\GGG\og xxx iao\ xaa ׯPjx a xVYpW>>'C"PJV\㈈))h\\\\J+g"QdHq9I2oJjIjK9B;~`օgJ2Vp\ph\\Wk{{k))hW\c\@hW\Y\hkkVj+apٳ WW۳|엁~ ܧmM;-lnxDȁySSy _yS__~--&n_*?11l[ze̴R?ɨ-Py2@VaJJ ABף֯JcoVVoa \o xoVa  V\WphGG\hhhhGGo g oo x x>g xa x x> xBjPg>3xJoK47BJ3 aaa q933j ao+uщqׯjV\h))))kEEE{))\\YYYV>BKݨK|{k)Goa jg׊}!m3s3pcph)kEh{hhhG))h2ᜱ۳ >汬 iAASSul?Ǟm~Sso0ȁySSSS ay~M~Sҁ-Mn nڍ111elmR}M/3J$$ ,qq##ddqA3 oY\h\\\Y\pGpGG\apYYY\\aaaaa aoa oooxo x \Ya>qqcVYVooVJqqHq<Ps3J/ xoVqOOZ}qjccaoY\G))))kEEE{)hGGh+#mZCP@{GGGG\c !!8ݹPVYV\Whh)kE{{{{{㈈)GYcjppa+ SSySSIM?[?&MnS|뷬axD%rȁSSSa 5-M-~ SMnSaa_RRR11111?&[ ?lMn*|Œ$ߊ"HHQ>J3xx aoo\Y\p\\\p\hpkGG\poaaooY\Wh\Y\\oooo aoox Y\Y3> caoc3JPHHq<9P33 g> Vc;TQ}KjaVYY\)kkkk{EEEEEEE㈈)k)\i KOdHs{G))G\V H!.JY\YYWWW)kE{E{{{)k)GW J@ppp g 뢬I555~Ml[[?ڦ-~y惶D,SSyyS _-~-ȗȵ~nMuxx*R?111R1?&Tl7ΎQA_#uiM$ ݂""QKjoc oYGhhG\\\hhhG)hoo\Wh\ooY\ xaoo o\V ica3xaa >KC99B c2IQ`"Va\)㪪{{{{EE㿈)hh\o +iʊTd\Eh))GppaQi>V\Y\p@@@kEEEE{kEEEEkhWpWag汱۶羗S_u[??[Ǟ&*s||%ySyySxa_M~~nҁҁ~_gR1111}e[ [ΰAn[ z, z}""QQH}B>cao\\hhhhh\Y\\\hhpYphG)))GG\WW@hhGG\ooVVoGaxxaoo YYV3>xJx oa aajqqHHC^qq 3cPOPϭVoaV)kkEEEEE{E)\ooooox i ׌;Cj@)G)GGGh\ <"֚P/@W@\\@@pWk{{{{{kEEEk)))h\xJ@hp+aٶSܾ~u&l[?*uul-s|||%ySySSaȵM~5_S+ҁy_  ??1111? eRXlmAB&R [zR z [Å9q""HJo\p\\hGh@pW\\p\pWh)GhGh\h)hh\G)\ao\\\VVaaox ah\ x\\3xca x xa3B74H>jjC<IJc >\kkk{{{{E{EEE{Eh\oo+ȸ䤅QZ8@)hh)Goq"KHJ22k{W){{㪪khEEEE{kkaxWۿ ܏ȁI_M?[?un_*u5ISܗ^ SSSSSSxҵM5yxSnnya+*?RR1?el emmm[ R IPq# Y\p\\GhGhhhW@@hhWppppWhhGGhhhhhhWY\h Y\\\YYVa ao xx aoojaooaag3JK$47CH<BC^CׯjiWE{EEEE{EE{{YYooax PXK"VEEW)khG q$KijJc@@{kkE{kkEEEkWcophpx ٳ_Sȵ&uiҵ*_اu*uy_vSSySx5My xSS_~5җxo n[111?11[l}Mee[ [1m #"׌ׯi/cph)㈿GhWWh)GGGGhG\@hkh\\\VYYW\ooa> o\aa o\Vxxo gg gVV3jqqHCCHHqHCCCCj32\V3\EEEEEEE{E{{hhooa+ȅTe8!!!CP{{@)hGh\\ KleI2YY\{{EkkkEE{)\Ycph g p۳__AgnuuSoo_uunnu*nSҀySSySSS ynyS S_~ x n[R??R111 le&}æe?R ?e[ΙX7[qB׌"B/aoWh)k)khhGGWWWhh)GhGhhG)\Yh)\\G xa ao o\x ++ xY\2jKC.CCCCCCC<cVcJ9j@EEEEEEEEEEEE{E{{k㿿h\+ #KX7bb!!8ZP|{{@@hhpY3qKߴyy*>3c|@EEEkk)EEE{{E{@aphG ۢ_ҁgnngS۳oa _g+y~b5SSyS 5nxS_~~_ x+Ǎ1111R11[lm} ?ݰ ΰTè[P A#BxJpG)kk)))W@@W@WhhhhWWWGhGh\\h)hhG\\Yh)k)hGGh\\G\ax aa x\o a\o g+VWY.C((CCC.HC< PB|EEEEEEEEEEEEEEEEEE{{㿿hha iq.|{{@\phhWW\ qB IqBP/V|{EEkkk{{{YaGGpY+ yyҁ __笃o aa+nSSS_--~~M*a nna [1΍??[111?&MQæ?RR 7 Ύ;z4ߌjׅjqIJ۳\Gk)))@pp@WW@GGGGGGhY\\G)hGhk{)Go\Yaxj axa  x \JcVj#g/@jq=..CCCC4C.Ci*ׯIjVkWpkkh\ @۳Ҿ뢳묾뱱۱pphp r_5M-y+_nySu[????R[&MeߊT}emB Mz4K"ׂ#ףBJcYY\kkk)Whh@Wk)GoopppooYY\kk)GGGGax a>VVaoooxx xYxg Wx7qHHHKHH"9/c|EEEEEEEEEEEEEEEEEE)W\\\cg##K!8bXÚϓ@hGG)V xx >auʽAȌYW)W\㪪)@c+J۱+җٱ뱱뱱汳WhhGhpa _0Qyܗ܁*&m5S_y ?R[?1??eߨ}׆1#e`$Kq`Ay B+ jJ22Vpk)))GGoooooVcY)kGhGGG i  Va axaoaaoY gѮ\oa3"qHK"9PBjJ@EEEEEEEEEEEEEEEEEEEEEEk)\c qq9זdCX8K֤|{W)h)Gh\ +2>ui،jW\k)VpW_Ҿ냷٢ٳ2Va@GGhhp_D ySS 5Mm*_S__SS+Sn[?1lMel ΎM[z7 e}æ;;֌׌Bj g c@hkk)kkkk{hG)Ga  惠a 3\hkkkGGGo >x3j>xoaxo oYa\\o gH}KV\@|>3VYV\pWWh)EEEEEEEEEEEEEEEEEEEEEEE{khhoVqHK88,`9Ih)Gk)\\\\\\x+#y/c@h\@@WW@@kh@Yx>۳ 붬汱a涃VVWWWhhpp+DDSҁҗmn___~5 ڞ????111?e-~}$R?  z$};;BA׸+YY@kkk{GGG >xx+ x/ coYWkkG)Go ixxig+ V +xopoYVYpGGGa>qV22@\V3 cYW)kk{{EEEEEEEEEEEEEEEEEEEEE\\@hGGGh\V+q$X8b,,8;`|EkE)Y2ci JVpYY@\\@كii۳a ٳ@@pWppDDbSSS;M&mu_S__n笗ҁn&l???&*~䴨[?7Ρ$;T;BABq-ׯBg>JY\kkk)kk{{{{hGGp+ g++ J YYY\h)k)GGoo  i YaxhooV\hGo"H"V\oVVVV\hG)))EEEEEEEEEEE{EEEEEEEEEEEW\\Y\GGhpL,z,,dQ|{{{{)kEEk)@\cJY\pY\\@@ ٱx볭a쭱ۿWppWpppp۳涶DD-yҗS~mluS~ +_*Ǟ˴*?1111l-Čeel z [e[?$~5`;M};ׅy5-yB׌iI3VYp))kk{GhGhp i  acY\o\hGG))GGoox>>ijxaa xaYoYYYVpGGoJBx oaiY\\h))kk))GkEEEEEEEEEE{EEEEEEEEEEEEEkW\Y\\\hGhphYx qz,z b!Q̤s{EEEEEEk)))W\Vp\YY\VYW>i欗ao2@WW@p@WW@۳ppppԅ SA_n*ny痗_*ȁSSue~??11111?My5#}}?Ι [zMIP׌Ai/33V VWkk){{{k)Ghh Ҁ_ iiii cV\\hGGoa>gJJxx aaaYY\p\\G +>u\\cY\k)kkE㪪EEEEEEEE{E{{EEEEEEEh@W\\@\VYhWV>q',FFbO5{EEEEEEEEEE))ppYpVYVV\hW@2 x xVpWp\Whh\@WpoaDv 灁MSҗy_nn Sunnڍ11111ֽȌ RR ɰ [ƌ;leMϜTs׌BIJ/J3c@)EkGkV +++x+>+jcY\\oG xx 3YY x a a\YYppY))\g#qu###qq>>3Y{EEEEE{EEEE{EE{EE{EE{EEEEE{W\@\Y\\pW\xg$z , !Q``I|{{E{{EEEEE{kk)hpYaY\V\@hh٬A+뭬x@\Y@V@@WWpp۳ԣ_n*u__~S5n5_秴&M~~˞?l-yuM-ql[? [l&mez- [7#s-Is-#BIJJ32@{k{{{{kk)Ghۑ>+ Sg Vooooxx xx aY\\\Yc aVVYpphWhh\a **#q##q#Y@{{{EEEEEEEE{EEE{EEEEEEEEE{)p@\\\\Wp\Yc g$,,z ,ù5 3{{{EEE{EEE{@\\p\WWh++뱱JVY\ppp۳YYYphWW@@@WWWpp۳Nqҁ_n**_yS~~+nm*n5˞ڞ111m#M&-M[Rzl}z[`;XqI9Tq/j/J/YEk㪪)Gp x2>i + ȯ \Y x aa JVVYY\\YVVaYY\GG))2Jigg>+>I|{E{{{EEEEEEEEEEEEE{EEEEEEEEEEk@W@YVV JYhhGag$ Ιbwr3|@{EEEEEEEE{{{pVcW\Y\WWk㿈W2i돭aJ cVYp\WhWp@p@YWpp@@WW@pW@DXi܁_n*˕_S__an**~5?lM$q}[R R $ $$ƖezK9TÖB jPjc@{kkkkGhhpY i>>>gg>A> Yoooo aa x cVY\pp\p\\YVVV\pppYpp\233c2V22c33ccV@{{EEE{EEEEEEEEEEE{{{{EEEEEEkW\@\Vxi Yp R !w|@{EEEEEEEEE{{{{h\YYYop\GhWYYY\WW@Wkhh@W@WWW@@W@W@W@@WWW@p۳iҁҗSҁ_n˞~y-*na nuMu~󍍞1MR Rzzz$X 7q}}K,z;Ê;BB׌I2|k)hGhcxi +>> >gAgaooo\\Y\aaaooV\\p\YY\\p\ppWWpp\\\\VcVhW\2V\W@W@@Y{EE{EEEEEEEEEE{{{{EEEEEkkW\\Vc > >c>##[? !ݺ|@@EEEEEE{EE{{)hpp\Vhh+ ccYW@khWWWWhhp۳KiSS_&&*5Sn*_  _ym1-~# RR zzz $$əK$$z"""QT""Bi2\)kkhhx ng> ȧggooVY\h\ooaxxoV\YYYVYpp\\\\p@pYVYGYۭaaoY\p\\@㪪E{{EEEEEEEEE{{{EEEEEkW +#ᶏooҵʵeXzzQ{{{kEEEEEEEEE{{E{{{kkpYGGcVYhh\icaco\Wkkkk@W@@hhhh@ppppDzҁҁҁn*ŵn_5*unxxҀ_S-SuRRRz zɎX}èz}QQqS3@))hpooa +uׯi++ +ᗯAi oo\hp\a>J2V\pWhp\\YYVYY\)YVVp c \\\\Wh)kE{{EEEEEEEE{{{{{{EW ngܜo gguMmz?Zs@@kEEEEEEEEE{E{{WppV\)Gp V22@hk{@@@@@@@@WWh@@@W@WW%Aҁ_n**n_5Sȴ*o_*_Sڞ???SIA*#e RR? 4}$X7}dqdHHT~y/\hp gggu# i> A>>>ao\aa\\\GGog +2Y\@YYYVVYYٳaaa x2\\\k{{EEEEEEEE{{{{{E{hWpo+ ؁2G+q4[R b832Y){EEEEEE{{{{))kkpYpk iJ>+JcY㪪k@\@@@Y@@W@@W\p@hW@W@۳޻____~u&&5_~ȾSu*n+ anҁꞞ??1nASuuظM[R ?$}TQz744ZdqHHHQъT>|aggʊu# >i5 c aoY\oGhhY\a cc2VVY\\\VVVVV\\\\\ +**#Ê3{{{{{{{EEEEEEE㔔kkhG㔪)GWpY\  3Vp2z??8!OT2 o\{EEEEEE{{{{{摜Y{i Y@@{{{k{{Wp\YpY@@YV2ۢ@@WDy_n__n_nu&*n_~M~Sy*_緶ҵ_???1M؁#ظu[ RR? [ &ÖK7zz}q9HHHѮBox+g~u AjAAsccxJph\hh@W\oYoVY\\\YYYYp\\\Y\\\@pWk)hh>#uqq |@@@{{{{EEEEGp\Y{khpYoYiGpViʊX[[!8Jj \{{{EEE{{kk)))WYVS \p{{{{EW@@@pWVٳ2@p@Db_nn*Mu~_nnnn笷___??11*#u*u??[?RR [?? $}77z 7}"PIHKOHC"`qgj2\x gg+iq gA>jI/3 GY\W\@)\GGhWhhWp@@pp@WhGGWhGhphhi 92YV2V\Wkk@@E{EE{kh)@V2@@W\Vo BWc>  88ݦyS>@{EEEkV+>V/ȗx2\{{{{E{{@@W@@hc x xJ\@@@@@p%%n****55__5&u_羗n1 zR? [R[}q4zzz zX4#I}}Z}Kd#+J i g 3IB>j>AjPjJ>>>pVhWkhG))GGhh)))k\\ph)k))GWWGhp2J>5#;BjcVYYkkhW@@@\@@@@@@۶@Y|Y@WWa S#3Vj&l}}Z ??RRMT~s|@@@{㪪EEEEEkhYc  hYJy2G{EEE{EE{{@hW@@۳춶SSi VY@D ~n&uu*5n_n*Sܾܵ?ڞ1[[[[?RR?[[?zzɎK}4X zzK}C}HKщ`Tqi+>>> ics˜/> ȯA>/ +j cc oGkGGhhhhG)Gh@\\h)G)G\\Ghpc~B5dqY\kkk))W@@@/I33//VYV22Y@WWWaا# 2Y>״ݎZ}m1R--Qs{E)EEEEW\VVaWc؁笗h))kEE{EEEE{h 2@@@du***Mŵ_Sn_n*u_SS___?m&??[??[ [[??[ eK7ǰz[ 7777KC}QHT##  VVc3/>ii g g A JpoYph@p\pp\Y\hhppp@phhGhGpVo\)hc #Q;yPB׸gg+\W@5ؽyB؀n_S/3332|phGpoo+ABʖT2@@3~èH}!??m`5{{{EE{@\2V JWkW/gg痗WkEEEEEEE{{{hhےٱ뱢볢뢱YDDD -~u&****_S_n*ŵ~S_n**mˍ[?[? [ R?[[ K7X[&ׯzzzz44щHOQBxxa ˜g>j++>i++>A jJj+ xoxxaVW@YYWWYcY\@@@p@WWhhYoaap-æTj//¸>2@\@@@\V2SB;~y-u~~_A>2YWpoaiATQ{@BdCZb[z`;Qw s|@㪪EE{EkWVV᳈W2 gA/2Wh㈈kEE{EEE{EE{{{W@o۳ٳ惷汱222D%ԽyM&**__**u_SSnn*˞?Ŏ11[[[?[z[ [?[ zKKKߨll?RB? z z,,XZ}QQT;9joi9B + JjI gg xoax c\\\@WYcJcV\\pp@@@WGoĴOQQ3ciׅJs3c223j~~5;lŴ~ȁA>>Y\hp\o g_B~;; @q#A777z [X̩-s2㪪EE{{{㈿\2jjVkiᗗ)㪪{{EEEEEEEEEEE)WWY۳ۢa梢2%~*굵*n_n*&_ҁ~*ڍ?111[[[?[[[z1RR[?? 7}}Zllm&?5$ z7!4dT2V歠gq>c+3+>++>/2a > a 2@@VcY\cJJxcVY\@@\W\G\oYpp\ca\@cA`O}B/sט9BIjAMM&~A/>jjcWkW\pi~̴QQI@@ iBK4X4z zemQwQ-I/Y{E{Ekkk@YV@Yii+c@hk){EE{{E{E{EE{EEkk\ٱ뱶XAص**___n**˞_S_n󍍍1??[[ [[ [[??[[dKellem#AM7R XXzXHTTQTIsVg### cᠠxci V+ >x xc/j///+ijcV|\\\\\oa WYJJc/9ZZÌA+j`-QT;TZqB5B;-`5555A>i3kkW\\@>;æd`@@+$47eݦTI2V2c2@{E{{{k\@V\kVjᬾ))@@{{{{{{E{E{{W۱2ٳ@٢ 좳_****nn_n**uŕ˞ڵn_~111111111??[RR?z[[ɍ??X7qKemQm&Tyy~  z,z݊TQTB3Vc#/cxJxi iigJ g + c¯BgijjJ\\\\ aYx dH}b7qצOl}O}lÖ`I//xVphkYcco TæOmO@@Yjj9B$le!Qw~~/J3|@{{Ek@Y@k+ W@@{{{{{{{{{kWpV۳惷 DDLAAصuunn*ŕ*ŕ*nS_u11111111RR[[ [[ ??[ɰ7Êqq}ݦOO;5Ǝ R zKTQTT~P+#MJJxig+++iB i>> V2i~##ʌׯ>gj3V2 >xYJ7447Fz7}HMl!mOlbelAI윸nV))WW\I3V++B---d |@J AAB$Xel55SI2{{{{Eh@kk)@jY@@22|||@{{{{{{pYoY22ٳ춬淃汳混Dҁ_*****ŵnu*Sҁu??1111???lRR?? ΍RRz7K#}æ-OMTm1R ɨqTTQyjiiÂi/3Jx gjJ +-䯅-BABAAA/3c Ycem}eXX77X4C}z lOTOXQQlQikh\WY As볳ii~-TQ;||c B}&M~55nA|@{{{{@\{\ YpW@syyI|{{{{kh@YV@涃涶۱x汱DD$AS_*******n___Sn?????11111?1?[11 ?z[[R1R $4ææm!lmmMMQMÊ}11R?? dQQ;yyBP3ccco2ii>iiJx/iBy9`׌֣׸g+scc J22b? zưzXX[zѨ mQ!!~u*/Wi“|Ȍ-QQæ֣PIPק5y5QMÖqdM~5n~SIc@{kW㪔Y/Y\G)@/S55y55|EE{Wpc2Wٶ淬Dqҁ_*u****nҗnڞ??1111?11 ɰ[RR z$7qdͦO!lmlݦM}}TX111R z[,ÊTQTօBBB`טJJ c oV ʧjjiA##AAB׌9I/JJ xxcZ8Rb ,X$$XXX77 ,zzz74Tm!l~~ܬVpVi/-QOQ`֌q-~5̦m XC}Öʸ؀y~;y“@{{)kYV٭VWhAy Sy5MQ5 @{{{kWY2 + 梳o aD,ȁ_n**˕*nҗܗܵ???1111111??11?[[[[[R1?[4d}!OmOde1RR?zzRKÖTT5~䚽̖A Yc ׀ #i>B gBB~`ׅ9ׯi>J  >i>jŒdbX7zzzzzzz$7 z$zߊZ݄b Q`5y+>cJjByy~qQOBeR4e>>ā_5n3|{EE{{{{kWYcVYE@{@yyS ~~QmmQ{{{)Goc2涷뷷ٱ惶D4PAn*n̵m&-ܵ?Ǟ11111?R1RR [?RR zz7ݦdQ-Q}4 z T֣B;"Qq9jjhY g>iظgy>/yBj/i> igA i #X7}}7z [ ?Rz zzX}}Xl8̚;-Bg i~;mmZQƖJsTX8݊M J붶SAy_uu9k{{{k\VVV\{{ٜSSy5-Melmͩ{{Ek)YcW쏢ٳ混붃SDLQB _n-M*_ n&l1111[???? [ɍ???zlZTTQOe4z z zXXQ;QddHPœYo/˜>gi>IᾜSؽBI/3c J ʌA/Ji-ߨߨ4 Ιz l? X7Xz,HqQKT"dIⵀg+##-q;T}ZZZ}֌;ʅZXlѦT 2AܗjjAyV{{{{{{cYYW{{@{@@V5~Mm&e@{{{hٳcٳٳ DS_uMM*n_+n*~unn*Ml?111?1΍?[?? ? ?[???? zX7ZMô̌QQ}XeZXXz zR zlmd;;;H}ZZZ}"9/V J3I//S >> IsiiBBijJ > ~53c + $$$zz R lz zXzz}leQdOeeg +jݨQQQQmZOT;``ׅBlOQI2볳_+is|2@E{{{Yc V{{@@Y-Mmlll!.{))hpVJ 좢۳SDD}Bg_uMM**nn*x_____&?11????????? [z[[[[[[ zɎ7TQ4Xmz [[XݦÖTT";}ZH>3+>ij+/c/gi>igʧ/ J˜קByBׯi++>/ ## Rz ZqM$elR 7ɰ};l!Z!l}}95A lz !}}ddZÌ;~#ʊ}}m}ds2i眗~u-J|||{E{{EEEWVYk{{\*leel$l`{{))@۳V22 p@۳췬Ղ_nMu~_n*n _n5n__-ˍR[[[?[&[?΍???[[[??  zXߦMṂK$7Ql z R z77ZÖdHC8!O͖9/>ggA"Pcjii#3/ //~59ʸ+c i~¸$$z [zzΙRRR l}7鰎 zRR7ݨ7}ߨZZ}e!!T;~9ii|/eX 4le"TqQ̴qB;Qs@ Jᾬ5-MB/3VE{{{22V\{hV mmm[Ǟ8wk)p٢2iܗWp\@@W@ۢS nnnMu__n*x nn____~_eR?[zǎ&eR?[???zz zzzzz$7mOQ$$4}`è[ zz R [ 7Q"H},,88֣BHqA3A#q3/j//#Byy#iJj~qzzRRRRXz X eݨ7 XKTdXB5/i277ɰeH̖-TmTTmX+++n~~5;MM~i J2{EEE{{@cYV{{W g##M&$$[eT{{kG\YٳVW+pW@۳涶_0Hnnum*5ܗ ܀_xnn_nS&[[$ǎǞ[[?????z  z$$ݦQ;9g#mQw`$z Ι z XH"qCԋ8!ǑK/3s##Bj/-yB¯`TÊə R1X z ?7l Xd8;T;yAIJŒ7ɰe7}MQQ-;æQTZely@WaJ/+_uM~M&M>@E{cV\h)\ai gnMߕ[[ls)khٳ22Wi>WWpٱ뱶SnD,9S_n-5܁ _n_nny[??Е[?[??Rz$4lݦd`/2VcuZO`4$z 1? 8zdKC4=QT;dBjJc/2jAB/קy 5iiBΙRR1RRR Z$zzə Ι477747z Ì"QQXd݊BM4lX eZÖTݨTmæ;9js@ۃJ۱u-5|@@EE{{㪿Y22VW{{c _$[[Ó{{{k@W@ ܬWY@WW\܁n%yu*-_ _S_n*Ǖ**?[?RR?? [? z$$$e!Ö2)@ciu4T$zRRRΰl԰zHKCC}ԄQ"HB2ٓ B׌ׅ;l!e7[1ΰXX R}T;ɎQQbbM;Qݰ[eZߦ--7 ݖM}?mMTļ2@WJ22~Ŧ~-;@{{EEEEE{WYYٳ\㪪{) xҧǞs@hh@WiYpWW ܾ_nDFA_nMu~_ ܀_܁n*ڞ?[ɕ[[??[[[[[[ $$$emq>|WJAK}׌ezR 7lzΨQHCCCCC((OOHQO.OQ2|cjBuЊi TB&8.T}lΡ11zXXzօ;qe 7};OZr;ߨÊ}"æ}&ðÖݨ}Xe̹įiّ٢}&`~I@{{{E{Ekk\V2@k{{W&ɞ?T{)h\ٳ뱳@xpppWW\2ܗ_n%ҁص~_ܗ nSn*˞???΍[**ڞ[??[[[[[[ zz$$$$$ɰmOOZ&/@Y3Aߊ#Me[R  z}dHCCZ==^Z..Q B/\V2QT;yR?!!ZTTTMZ1111 K}4ə F l}[eZ`Z` TTe}}}m;B5-z;ml7 mT`Ią5y222JJJ*KMlmQ-MmM/{{@W)YYYٱ2Vk{{hhhGWص&&ǎw|@Gp@p@W@@WW۱ܗ_nD.yS5nȁn*uǞ??еu?[[?Ɏ[[[[$$z z$zz$$zlZQgJV2c uqM֊ߨ&lR[R}}C74^88!...`ׯ@V|ٿ@j⯅;T֣5~# Rle7[RRR1XK7zXəRXz [mTTZäIQeƊM;Ćy-#z4e?֤s~y-#J2B#}MMe!l~ys@@\2V@Y۳o2ٿ㪪hhGn-Mml{Wٳ@W@hW2nn%%yҁ춬5~nlǞ??**[[[[ɞ[zz$zz$$$[zɎddÊB2V2 q;}mR[?zCKC7b!Z....Qw5׆+A/YVVVY|3TÊTæ-I/R?R1XK747X 4l݊}l7XݎQd`IT4æƊTA~[M z}s-5uiJAuelm;s2oۿ\VY@{E{kGhnM&ߕǞl @hhx뢢泱pWWW@惷_D^AҗܬnS~&ڞl??ɞ[[[$? $$zz$zz [ɰ8ѦQP/Vʌ;}ƨ[RR??RΙXC}C!X888!=.ͩ`5SVVcJj jJc3jBd}Xllý/111R11ΰ1R?R17KKKe7XK}`- R QQTIs&}Z7TuuBnnR[ƨzz-5-~y5-~~eݎeeTy@poo@{E{{{Gp-Mm˕˴@@hYS볳@Wp@붷S _*uDD}؁쬾ȵySy*ڎ???[[[?[??[$$$$z zz zzQjoogqq##1? R,KZC!!^=Qw5¯3>j9H} R5n1R?R1R1Kdd$Xr/} X7[X-e&Mn~~-[[ez ]R$&-B5~;Tezlem!m555 |Wo@㪪{WWp~nMm[[e;I@)ٳW@@@W۱ ܗ Ҁ***DD0qAA笶Syȧ؁y~u˞ǎl[? ?? $z$$$z$zXzXeOA ;`4e[[HZ.O..ZCC.`5/jgg>£"HH ln~eR11RR1R11XT7 $#e ]ZTQqÌɎ5S?[ee [Ρ]̽Mly5;y;7 7emmQȾ@㪪{@pn~Ǟ?ڞI|@h\iSٳ+W٢뱢묗ҵ**DLsSy5~-~؁+Ҁu&ڎl$z$$[ z$$$$z$$z7lej/x іTK4ezRR1RX RR!T....CC=ͩͩw`B9iABA"X7eel[RR1 RR1R1Re}}}d,zzKe Ιeue7ʘ4~5M[[l&l$[ mZ̊e$lK-TTz z,eeemmT`ys+SW{{@ppgnM??lI|kkh@붷@@@@@۳| _****Dy_5~n~uܗ ҧ**$$[[$zzzz$$74Xi >cgu}ZTQzRz][$ 8OQ.͝͝``wQQyAz7 ?[R]1?m1ݎ R7Muq*$ Ιɰzɨel~¼[my}mm!e1 }m!lTð4;5MQ}Mz &&eeem-~Ľ~ȁS/I볢V\W{@+uǞe/)a @@@|| ҵ*Ny_~MM-~nu*u*$?$z zzzz$Ɏeel!}ʘic#}Z}Ê[Rz? 8ZQ....̺wdZ}9B}zzz 퍎&l111Ύ-T1}lX u?R4 [K}>J[Xle?? [l&l[$uTZlRT֌Tm}7$$mmM;5yyS쳱cV@@@ i nu*˞lllBkkW +ٳY@@@| nn_nּ~_u*n~_˞u[z $$$z$lee/KK}ƨez11zRR1!OQ<<(C.Mݎ?1[ !eK >#RRR [[7l?R? [mTm?]RTXR}MIBM$ ?[?-Qd##ا_5-M--Q;~;-nS5_5~~~~y~nȁ܆SSS~~؀n*Ƶy~MɎ?uPW@W淬 泳ܬ@@@@@x_S__AvDD% _ҁyyܾs~*ڞ?ڞ[$$Шue$$$$$4#/cc*$zzrl[[$ RR[[?R1b.Q...Cԇ!8!b1T;؅u111 lleuʸg*zR?ɰ[?l&&eRR?leelbT 5Suz el``MM n~nM-TQT;_~n~ش-n5yS~~SSySy_~**uSƍ[e@p 2ٿ@җ~AqDF ___g-*?ڞ$uq$ƨeXɎe/2Y2i#z7y z 1?[[[ RR118O<ͮCCCԇԻ]11Kuuuu#[11111導ZÊ*u*[RXlMT R1΍b}lMe&leml?m̚y+>_صmeMQQQMM~5~-~5~5~55_~-uM#u*n_AM$Ihhh g混쳿@@۱ ҁܗAyXDDDZ9_ 5_ȁ5__~*??$q#q7ߨ$ z[e}ýskWc #, `-$z 11R??z1R ?R111Jp۬iu{묾@@@@@|+//%%DD89ׁnn_n_~~~#M*&ǞMƨ&l7l$ z$$$eBs ׅzz 1RR???bR!llelXb 1mݨ[ R11lyj+ #Bʀnǰ[?[l?M#??M7MƎeM~&~-OlZ-TMMu-;-----MMiۿ)\ƞ?l&u|{@@_ys|@뒒@@ +>q0DD0Cnn~555*ŕڞǕ&$Ɏmô&e$$$ߨeߨe$z$zzzXTys|| q-QT;q Ι RRRR [ ?1111111!mM?111?[&-ᗜ+guuygg*[?[?M&R1ez &-5S?R~ėϗ5~&emݦQTTQMQM;n;~̴~gVhxƎ??ڴ2{@|ȁI5ُ2|@S_>zDD%yS_nn~55yy_n*ڞڞ&eml$$$$&$$$$$zzIccjM7X zRR R1RRR?1RR?RRR1111Oæ-qe RR΍??le&mƞ[&~SIII +i #*#i2nnx_[??[[[[&M 1&e&&&?7SM&R?[lyy}mݦæMMTTTMM-~~--Bgᳳhp[?&2kk{뗁-灁_M*뾁2@@۶S Si%DDFȁ_nn~n5555~-M˞ڞ˕ߨlMKlzߨlz$$ɰ>J/AX}zF zRRRRRRR [[ RRR111111Q̦[ M-mMyIsi2x [ǎl?[ɰ?RR?ellleMXə~g[R?R?ڴSB-&mmmme}}mݦMMM--T~~T-~~A2@h z$@W*SS~*_@W ҁF%DDDֽy_~nn___n~nM*le&-&&e[lX$$X`#ijiq RRR1R ? 1RR??R111111R11!;meÌg# zMu*Mu--T-5yľ|@|Ja xxaax+?1R1lmM;5m&&[Rشel[le&mmmmlmm!læm-~،uB/2phW+n$2@p뜁~nun5***SSS/2@@SP=%NDDy_~n~__5_5-MMlڞ˕&&M&e&&&ell&$$ΰM9# H ?R1 RRR R ???111111111111QlB* R?#~؀-mM-M&&MM|@2J泳o  a uzm?111Re;5&uMem&&ƦèleelmM-Mq#BI2@@٬_zucWW+nnnu_S_n**泗g pp Sy%ޛDD0QS_nnn~_~-Qm&MMe&$&}M7$Xzzuq#q7llX RR[ ΰRRR? [b?R111R1111![uq&ڞ?؁ȴǍel?l~5Ss|@@ٱ2x  +*[?[?R1?mQ--euneelBu&ll$$eeƦMmMMM*M/@W@S#jV@W@_unyS_5*&Sn۳a ׇ%DDDͽ5܁_~nn~_55~~~Ш$7}l$4ԎX +>q*XXZKe z[R[X? R 1[ ?11R?11111111111?&&uT;;&M~ئ11mmM5  * R1le1R1lO&M-~ڍ1ΰ&Tyl[&Ũl& lƦMMMMM-+|{@g**&#c@k@Snn***~s~*󵁁쬁ҁ g%D%`ByS܁_nnn--~55~~**ڕ&&&&e$ll7$Ɏ;9i>$ݨݨ&z[[ ɨe R 1RR1R11RR11R11[?&lm~-&111ellm*unVa x + *?[1R[?R111m-&MMBn#&[ɰ1-&ɞǞ&m}&[[[ƴM*;n~y|@@Y/ul&*ŧ@W_n_n*S~**n__+ҁ g+z%DD%%N.g܆S5n-M-nMll&&&$eݨɎQAJx ccJzXeXle7$[[zRzel R z 1RRRR11R11RRR1R?11lô-;-l11&ya axu&11RR1mMMTMMu5M&&1 l&Е?l?l7&MuƴnnA2 S[/V@nnnn___ҁ_*܁__ٳ+ BЫDdS_MMM-uM$$$mƨQT~9Jc@g$ư [[ Rz4[ R Ɏ[RR1111111111R1?1??MTm?1111l1?&u_I M*lRRRR?1m--~5~yM&e?R&e[?l??el&&-BSi眢|@3n#&~@W|nn~n___n~nnܾ_ ٱA0DDDDdBBIS_-&&˕&*uu$K}}}&7M;gcW}[zz [ ? [zR11R1R111??1?l?11?lle*Ȭ@p۱nm[?[?11M~Sy5S[?l[R&&l[?ɞ&eǎlelMuuu#gSᬬ笢2ʵ&e&#jn*Mnn~_ҁ_nn**_܀_뱷܁SALDDDHySnMŕ˕$lM&&Ʀ&l}oVp>*Mlz $7$[[[? zX[ R11?111111?11?111?~|@@ppnmll7??e-M&&?&e[l&l[*mQ-M}-BA痗cc**ƕlڨ&#±@@|ܵMn~~~__n***ꕕ*Ҁa混S¯q0DD%"9ܗ_~nu**ꕕ?&&ee}$Xu# aoaa\\3q#?z z ? [$[RR1111111e1??111111&-ȬY@@@ۢMM-M*uu?1l&*?e&&[eMM-~5`~~S+붷+ ee[e*3W@nMn5_~55**˕nnҷ欬SLDDS܁ҁ5n*uu*ꕕǞeeШ&e}ШɎel!u>o a#q?zzz [ [[[ ??11111111111111?llڎ111111111MB>/V۳~*M-Muu*e1l1&Mn~[ɨ[[?[ڎ&meemM~Byi붷 *eeM@{|5u-n~5~5~**n_SA},%DDDD%FT_yܾSSnun**&&&lK}ee&$$$$zlmMq#cci +TMm[ RR R??[ R ??R1R11111!-~5~&&1?1111mu>混gellM1lm&?*u?????[&&ll-~n~iAҁ _nzzP@{{|5u-5~~M󕕕*u_SS_ܗA5%DDDD%0ý`Sx nel&&&&luuM&$$ɎlZOÊ#Jc ̴?[ zɍ΍RR΍R????΍RRR1111111m5`;~شˍ1M~A+Ae[[[[z[[1?Ş1???11?&l&Шel&MMMu;5_ySS_uMm$$@{{{@뢓--u**u_5n5S+gi4%DD%Ѥy笷__Ǟ˕le&e&##quШ$$77e}݉d3ci}!lz? ??[??΍R?[[[ɰ?R11R11111`;M&1???111m5ᬗg[R?[??R??m&?111~M[emMuM&ǎlle&&;n~__u&eǞ[$*\{{@|灵m*Muuu*******n_S LDDdSn_*˕l&M*&&ô--u[[$$llZ}A44$z? zR ??R1R??[$? R11R1111?????1111m-~_yS nn_uRR ΍1?&&11lڍ?uڍR[ƴ-ǎMM~n-Ml[[[???# cٿ{__*&MM*****굁SSܾ+>DDD%BA ҵڕŕl?ʴ&ôuMT#-$XZ}3> q$zz ?z????΍RR?z? RR11RRR11??11111111lM5__nnn*?R΍???1??l&ƦMmmm˞??1ǨM&ll#~~;~&&* @@_nꕞu*******u****n_җ>y7vDDDDKg*ulˎƴʀMMMMMףq$ee}ߴj>*z ?R ? ?RRRRRR[[R11ɕu*?111111111-y n#*l[RR??11M-M&ll&&ڍ#u[ ?MTè`B~[z$˕g@|Sn***ڕ****m*unnҗP,%DDDDDHry+صn*˕e*M،~_;TMM-5A-uul}K}q*uuz$7[ ??z[ z z ΙRRRR1l?11l&*#**11111111111111Mg*&΍?΍111?e&?11?*u$?[m&l[&-MMl[[$u @ _n***ڞ*ꕕꕕ˕&*___ܬ//%%DDDBSS܁*u*lM-A~QMM-~yȀ&&KÊM; x$z ? [ R [[ z[ R1111[ǎ?R11RQ-uꕞ?11111111111-nڍ[R11111lM-u&[[M&l?[ z[*n W@pn****ڕꕕꕕڕ&M؁ҁܗS‚f%DDD8___ҁ_nu#*MSIJ+A`̦M--BČleTqT-èl/Jɰ$ Rz[$$?RR [$$zz R11RRR??z $e?11l S5n[11SSu~[?11111111l˞[[ΞRlM;l? z[??$*uu#u*uiWS_n*ꕕ˕ڕڞmu~ܾ SB%DދB___ҁu*u#*uM*&Ĝ~QmQ~~ByyuelqKM&llmÅ/o$[l?[zzz[zz[z[z RR $$$ R111111R?mz#[1e; S51?Mܷ~MeǍ[11111111111e[??RQݎ?R$ zzu#pp۬n*u*˕ڞڕڕu-n5S뢶%DDDD%d5،___gnnuuuM*;yyJi~QTT-~~ا#*qMK&}&eeco$lelll7Ɏ$zzzz?1R?[$zR111R111Reeɕ*u[11?mM-T&11111*uڎ[?1R?11?111111eeme[?Ύlee7$z$$pan***ꕕڕڕڕڕ*;5S2JBdDDD%fK____~n~~-~yn ~;~~ʧ&eKݨmmc *&4$$z zzz z RR zz$$$R1RR1R11[[[ #?R11????1111111?MSs5Ml&l[?[1???11111?mme[R1ΰX$zzu#j@W_˕ڕڕڕ˕괧;_2223£Z%DDDD9~؁_~~yy+ gBSȌ-#M-nM-èMmZ22cguƊq$$$zzz$$$z$z Ι z z[Ɏ]1R1R11R?u111???MS5-n[ɰ[111?l?RRΰ#I@_˕ڕ˕ڕڕ˕&M~n52IZ0%DDv9_ySAا~¾IᗾJ¾ -&m،u-;Qme}~|2uX$Xz$$z RRz$1RRRR11[??eư111[11?1?MSySy___*R?u[?1R?R??R??z*#+|{@|܀*ڞڕ˕˕*n~yyܗ3cI`%DDD0;_ȁyy55;-ؗ3붑ȧ#umM~MqMTTmZ;y//j++>>iqݨe$$z$z?RRRR &l]R?ɰ[111R11R΍R??l111111mM11M~_S眾guЕڕ*ueǞ???[ R1Rzqg Jnڞڞڕ˕&ꕕMM5ySS/sDDDD%__ȁnn5᜜볱붶c #MM-MMMMMMlݦQT+4$zzzz RRRR 7lR?$lR?!l111111M&[R1[˞ln___nʵu**nM&**ףj/2nu˞˕˕*uuM******~~y S/3f%%%%%Fd5BAS؀nu-ȆI/汏涶i#u-u׌#&eemÊ~i##$7$z ΙRRRR R[ 1??11RRRRe??&ˎ&&u܁SSnu__اngg gnuףj/c2|2ȵŕ˞ڞڕꕕ*nn-M*-;S5JJ%%D%%"9~+ nMM~¾揶nu*MBMm-m$l}M-- I*uuzXX77 z RRXe7z?R $lRR1?[l11R R#M[1m*úyS痗_ n_ȁ_i>++>i> >P/s2|2|23Ayڞڞڞ*n__nnu;~SyJc/"C%DD%`9_gn~~n-n_A羾i~###--M&&M#ʸ-&M&e&Q;By~#uuX$X4}}Mz$zz z[z 虰$z[ [[R [&MmRRR1&e[R[$Mʧ[&11lmu-́S緷_~؁22s/i~˞˕ڞڕ굵ng_-MM-5`;/s9HDDԖ5B_> S__~M*~+ innul*~5~MMTlleݦ5n #4}};;$ R le[ 11?衰-??1΍e&e??uMMMl1111111111lmm&u_羾y_SS羾c3/Iקq*ˎ?ڞ˕˕󕕕u-n5__uuMu5yȅ~Is333 }D%%bȯSSAuuu_S+/اMl&Mn5#MMMM*le}-IssϜA7eel}M$ }7Ǩq#R 1 ֨?1R΍R Ɏ[[ &&uM1111emu_S痗SySsssSA#$Ǟ?ڞڞڕꕕ*u**nnMMMu;5yy5~~ʌ92332IKDDDD%KBBySS_nnn~gi i gȀ&~--M-&lɰmAs2뒢>$X777XXe$zzzX1zߨ׌R??e~ yTTè?RR1$[$[ &l?11111l&u5Syyy555~uM&[[[[[[?ڞڕ***u-M&uny5~~B933 HDD%XQBȁnnMu_ܗ_؁iS#uu--mM-Mƨelmø uXlz $$z[$$z z[ɨ#R}æmÌش*R[le&$RRR[?111111111M-nnnuM*&&llmm*mˎڎ???[[ R?[??????ڞ˕*****M**m&l&ŴIn~~_yjs3r%DvK_؁__nnn*MngAnnAS uMMu&}lɰƌu#&[ $$$$ z[ R $?11 le;׆y#-~[11[e$[11????11&ml11*m*mel?ll11???ڞڞ˕***&&ƴ;s|_~~ļs3Jj",%%D%DD%ѣB___n-nniggS ا**#nu-uMmeeelXBu>ʸij>~} z [ $ɎǨ11 lؽM#u? ? ?R[[[l[11??1e-e??111&M*&?????????ڞڞڞڕڕ&M-~s|y_5_SIJ/HvD!5_n__~_~-n_ ii+Aصu-~;-uuMMm&$eݨXA~#j/J2yyߨ$ƨezz[ Ɏ7Rlu-e?RRXl[MƖS~e$[R?[[[$eM&?R111?&&l[1???ڞ˕ڞڞ˕ڞڞڞ&-~~5 ss~y IPDD%,Q_55y_nn؀_ AᗾI~n----M&ɨB׸+3c\3iBBاɨ-#[zzz[z$$$$#l}ݎzle3su-71[[$e?RRR1??11?11ڞڕ??ڕڞ˞ڞŵ-~5yIϾSȚSy5y y0DDDFȽ~yySSgnng S+Ͼ܁nu---MMMeTׯjYWY\Y>#Aj׊u~B z[zz[?zle[7&l sAeMR$[$&[[R??11111111?1???ڕ**˞ڍڞڞڞ˕ڞ?u~_ySφ55y皤H%%DD%8~~SSSAny—IȵM----MQM&74APig>2WpW\W/#>i#-z$[ z $* 1liSB#}M]? [[[?[l[RΞl[111Mnu?ڕڞڞ˞˞~y5~SS !%%%DDDD%.`Ľ~؁gSSi⁁nAشu-MM-Ш77I3J>hpW\u⯧&}[ ?[*l $$umM--e[? [[ [$[[???1???111??1΍[˞?m***ڞڕڕڕڞuunSISyyyS Ě֮b%%%DDDD%%`B__n~MungS܁ص-n-Q#ߨ4ÌIj gui>[$ $[ [[l[zzz4[???lM-#?R?&$ǎ&*ˍ?1?Ǟ?Ǟ*?*~n_&˕ڞڕ**u_SyyyyիDDDD%Z _ _ S_#u&m*-~yȵuu--MuQB/@Vcaax>### /A#ƨe&$[ [?[΍[[z#u?[[[[meB~& [[?[u*M~&?[[[˕e??˦~~~M&ڕڞڞ**˞#_I|syyISB}FDD%%__u**M_n*Mu-Muu*ߨe}q9sُY jg##AJA$#[?[[ ?ɕ*&z1l[ll?~;*[?[??s~l--Me?[[?1111ˎ&MM&&ڞ?ڕǞǞڞ***Bij3|SySI5`5Q%%D=y5~~S_#~-MMnnu****󕕕eK9ۿ BiMШ$ ?5ȧe[?[???[zzz[R?zz[ee߅u#ƞɍ[&[R1&-em55-&e&Ǟ11ڦ*Ǟ?ڞڕڞ*Ǟuj_Sy^%%~B5ظ_ȁyy;;TMMMme˕]\pGGWWV+#،Mƨ$[?[##-#u1e??[$[zzl Rmm}Q~T----M??R[?Mle--M&&˞ڞ?11111?ŵˍ˞ڞڞ˞ڞڕڕڕڞڕꕕ*~ISySyyy.8DQAyȁS5;-Meee&dB/Y@W+#q-Tl$$$z?eMBq[ɨul&7?ô-#u*&[??[&M&eڎǞ[1ƞ????&n55nڍeڞ˞ڕڕڕڞڕ*u*ڕ*n_|S_5ĘP X%DDD%CAyyAyyyyyy~&&&lڞellŴYYcVc#ʸBB#ôTMle$[[[Mu$M##ݨ}Me-Mʴ&m?[[[lM[le1?Ǎ???eMu*&MMlڞڕڞڕڞ&*nnŴ~s|S_~yP%D%DDDDNCyyySAAAAAy5;--MƦ&ǎ&lTʽij/u~B~Tq#7[[ [[l$[eÊ~~M&[[[&uڍ?[??*????1???&-~*ڕm&ڞڞڕڕڕڕǕڕmn5yu*uܼIy_Ƚyy9"'DDDDD%,CB5ȁAAyyS ySĚ`;~;-MMuڎllmMTBi>jSMuqqM->uz$z[$l$ ɨƨ7KMdMÅ֣†;*[[Ǟ?[??Ǟ?*ˍ1Ǟl?1&*ڞڞڕڕڞڞڞu~5S___ASS5yII`D%}Q5AAAyy S y`ww----umelmôiSAā~eߨ&ƨ֘/Jq7[zz ze}Ö-TBAB~M&l˞[[[$$[1R?[[ll˞?ڞ?e&&˞????Ǟڞڞڕڕꕕڕ*un5SSAAj5yS FDDD%O`9yS yyy ```;--MM-;;_yyyB~&eeeeuB>s3+$lM}}e4O;T5~~~5BM&˕$??[??Ǟ˞?e&˞?Ǟ[??????ڕڕꕕ*5SSAA+j SSSSI ;Z%D%%D,KB9ASĚ `````;;--~uT~;;~;~-u-T/MШeߨMmæT5佣5Ay~ߕ[$[?[???Mu-u&???????Ǖ˕*u5Ac2 ܾIϼ}F%%DDD%HĤ ````;~~Ʀæô-~;~;~;-uTTT#/IiM}}ÊQQ-̌~5~BاȽ_ȵ[ڕ?R?[[???&M*e?????ڞ?ڕ˕ڕ*uܗic2sX0%DL" P ``~اm~̌~~555MT--q#B-#uuuuuMMMTmM5;M~5~5n-~* [ǕǞ???&?ڎ?ڎǕڞꕕڕ굵nn__AjJc2ۢ2222I"CvDDDD,Cr Ĥy ``BTT`55BqB~BB~#Muu*MM#TQ-ÊMMn~~y~Muyu[z˕??lMƕ&*&&u?ڞڞu****˕*un_g_gn/3ٳ|c3/9DDDDDDDb` PI ``ģB-æ`5`5Ƚȣȣ~yyB׌׸AiȧuMuMe&&&&õ-MMQTM-#MM--5 5-;y/n#uM&Mn*n--M*n_ص**&&&Munꕕ*SA ȁi|뜗s3B}vDDDDDDPPI 5r׌5yȣȯ~95~ M?[ڨ&ee*uMMôT-Ê-uuM*-55-ȼ/ʵ#nu*Mu**M*MuM&Mn*Mu*****M~___gg**g+i볳 AIS ,DDDDDDFC"BI B;ôT-~B5y9ȣB;5~-&l[[MMM*-#qq#uMuMM-MŴ5Aig i> **&*MMMMMle&M*&le&uuuun~__guu*u >Sʧ |ٳ2iyS缆;8DDDDDD7 5׌֧T-;~5ySAףĆy5j¯ʴM[&uuquMuMM&M~ I+ +#*M*&*u~5&e&&le*unn_n~_gnng_ʵ#|+g †Q%%DD ~MMQ--T`~I333I  iاuM[lǞ[[MuM*u#Ŵ&ƌ#i/ji+j+~nMmM55_-*M&&Muunnn_؀~ȁyȽҁ__SSAASSn+@٢+y9։8%%DD 5``~-QMMMQʅ9/3Ai>B#&$***uuM&˨/2붑J 3  j~Mmu~5~-̵n5n؀_ҁ_ASiJ/+SiA|2JjAi¼"X0DDDD0Qr 5~~~~;KKOqs2Y쾜g#u˕eee&&*MuAscJJ i**~n-5~~5__gi i ++i>+s|c/j/IjjIP9K,%%DDDDD%D%f! y555~~-;-qKM-TA/3J32223/Piז##u**$zڞ&uBySiA i > g#*u#Mn--~_~g +ij jJ듓sIPP9K%DDDDDDDDDD^ yy5~;;~q#dMMu-y2YY|2j###u###uǎ-M--~y_B_gBn~j>>j+ qn~#_yy___gS+jjj xJx뢱|s/PP}LDDDDDDNDNP y5֧;;;#uMMM~i/c222J/Ag#uu**ŕЕ$&*M--؁~###~>JJ3gASyAASB i砬cccJ JJ23ss9NDDD,O<`P S y5~5_5n#uMMMM-~BAJccc333J A ʧ##u*&&---MuMu~jcVc+i>i9j+ +/Jj>>/J􃑑cJJc23sssI!fD%D%b P y5~~-MMMMMMT;` PJ3c3J 32VYY2s+u*****$$M*MMMMM&uu؅icVcJJ3ccjJJJJJ/Jj>>j3s3222梱223J33I w!0DDDD'K" 55~`5`~MQ-;`5B>/JJ3c2\@ْ2/####uuuuu##q**uMMMMM#uuu~~3c3VY\Yc2ccc3JijcVV|VV2YY2췾233ss3/BKN%%D%DDDXrP ~`555~;-TM--;`5~B+/J/3cccJAq#q*######u$$*M*-Mu~~#~ʌ VVYY@@YYYYYY2cJjj3VY2|Y|2V||Y||sss쓓3sI 7LDDDDDF'Ѻ``;B;̴-QQQ-֌ JJJJJ/jyiAgqqq$Ŵ-#AgظAJ2VYYYYYYYYYYYY2ccccVVVYVY22333sss33ϼr'%DDDDD0````֌̖TMMQ--~i>Ij/Jj/22||222c3+#*&*uȯAiiAijI/xccYY\٢VY|\YYVVVVY|YVV2V22cc/III//IPrQC!%%%%DDDD0bZr``TTQQT-;-BBiiAJJ3c\YVVc i##uuu*g +/c333 2VYYV2|V||VVVV2ccJIIII/II Q%%DD%DDDD`--Q--;~5Bg j/322222222|2YVx ###g ggg i+>JJJ/I/c3///jjIjjII "LDDDDDDDZQ׌`~~~~;-;~n~n AjJ//j/Js3cVVVcxJgA i>ii>>>J/>i+jȯyi> AiAiS iiy9Z0DDDDDDDDD%%f8!"`;;~~yy5_SIscccccc2223PJcccccJxJJjxx>+>IyiAAiAA⯯yAAAʊ8F%%%DDDDDLN`;~~~~5_~~~~~y+++/222ccV|V22cc>ᾬIϾ/+i+AAyyy"H,N%DL<"""`;;;~~~55~~55~n;n~ʸi>>+JscccccVVVVV22cc////IIIIjP9rwTdNvDDD%0Odd;`;;;֌;`~`~̧Ș¼¼I/ϜJ//JJ3J3/J/i+AAĆ 9B`͇^80%%DDDDDDDD%%%%%%ff!Z}Hd""̌"``;;`PIIIIIIII PII//Ijj˜9>jPABB`;ZCb0%%%%%%%%%DDDDDDD%DD%!CщQ"`򅣚P PPIIPĤ9"HC88'%D%%%DDDDDDDDDDDDDDD%%%f00HHHQw"wrrQQQZCԋ0v0DD%D%DDDDDDDDDD%D%%D%%%ޥf0NF0NF:8^8%%%%%%%%%D%DDDDDDDDDDDDDDD%%%D%D%D%%%%%D%D%D%D%D%%%%DD%DDDDlmarbles-1.0.7.orig/src/gfx/stone/teleport0.bmp0000600000175000017500000000000007206511057027704 1lmarbles-1.0.7.orig/src/gfx/wood/teleport0.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/stone/teleport1.bmp0000600000175000017500000000000007206511070027701 1lmarbles-1.0.7.orig/src/gfx/wood/teleport1.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/stone/teleport2.bmp0000600000175000017500000000000007206511101027676 1lmarbles-1.0.7.orig/src/gfx/wood/teleport2.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/stone/teleport3.bmp0000600000175000017500000000000007206511112027702 1lmarbles-1.0.7.orig/src/gfx/wood/teleport3.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/stone/wall_crumble.bmp0000600000175000017500000000735607206511133020315 0ustar uweuweBM(`    vjjF>>²^RR.&&fZZ~~>66NFFnbbzz2..~vvVNNξ~nn"rffRJJҲ&f^^JBBB::bVV:22ƺnn.**ήrrβ&""ªvffB22zffn^^RFFjVVھZJJrbb~~nZZRBBvvF66r^^zz~jjvbbƶҶrrJ>>ZNNVFF^NNvvzrrJ::>22.""bRR2**fVV6..ζ6**~~nnrrڶvv:..ƮB66ޮvvjZZN>>~ffʦ2&&ֺzzF::zzjjNBBnn*""^JJbNNֶʪrZZv^^~~¦zjjƲVJJ¢ƪnVV޾zbbfRRrrʮvvj^^~rr&fd`!!!r&\m$mf]Hmdff`!!]``&\&R$md][6Rd`m{0!]f{&\&$R$&d]!0mmmf`mmR$9 4MIdmmm{fmmmH[HV^9 4@IVfddmm`fmmmr[rHRV^I 7@mr{!!vHEVV?W@WJ HrVVVR`{6Rx<=M4L)-Li! HH VVV?Rf`{6REVEVwM@)-CVH0 TTCXR: -pQlI_IXVXx6r?bRX(-!bVUHxVVVXx\\r?b%w9(B-QK4rVx\GoW5higX6rVV?94(Qp<?<[VV< 4%C#m4w9U7WX4IR#> 4%_M4^E\VE#r=&Guw< RHrE7RPG *%[[Er`IvLM9?6EyVP) 49Xr{Ew#Er(P&AXMGG_lv7[r^V4I4#7MP9w?f\RX4.I4GG)4Mbb?rvw@xGoW(EEx7-wwMM2-WS444WCV!(4@%\\\\EX@wwM@.iMY4@@CCV!XC# !K{MIX@9B*b !BJMr\m`m??X@44(.(Y(J4P47wb\!8C<^bC{#HH$^C7 4iRC#{Pl4XxRHHrRxC77B-BBlJ7P99C#{w^RR-w,gIVU<%RUw==-w4NYFK>W9=VU4M@9w9ww ^M-_QNQv9=@9=^ R#)5D .?VC=b9M4G)5NN~>@%>>2:6.6>::6222.2:6:>:>>26626.*.6..F:>F>BB6:.**:.2:26>662*.:22B::>6:6.2B:>>6>F>>J>B:.6                                                                                                        lmarbles-1.0.7.orig/src/gfx/stone/wall.bmp0000600000175000017500000001004607206511123016571 0ustar uweuweBM&&(`    o^^kZZeTTp__raauddwffjYYzii||Ǹ̽;ònnbQQXIIO@@\MMbSS{jjvv|kkG::n]]gVVaPPhYYtccveeƷοTEExxppŴ±K>>,##xggZKKPAA[LLrr~mmH;;VGGWHHsbbzzyyxx://uuA441((*!!-$$4))6++;00I<<cTTqqq``%gXX_PP^OORCCƵoo"]NN+""&.%%<11ooJ==L??@33l[[D77}}' ssfUUUFF! =22rr2))>335**yhhYJJ#M@@7,,C66m\\tt$E88F99/&&B55ʻij}llPCC9..}}~~8-- ɺȹ0''SDDfWWQDDSGG[KKhWWaRR@55/''@88WIIJ>>ppmmiXXPBB#F<<:22/((8//F;;TFFXKKUGG@44E::900:..H<<OCCJ??NBB@66>22<44=33@77?77C885++]OOPDDTGG6--,$$6,,B77G;;A773)))!!NCCE996..8..hZZVHHF::( 5,,(!!:11D::I>>) $[[\nnpqWp[[]v'\p}UUyp[[\nnpqK^^쁅pYnYXAp[[]]\Z͠[U]ZYYA]WW\KgЍ}Aoӈ[[U]ZYYA]5DD@]ځpU[[U]ZYYA]^y@_Nq[w]UYnn\w^yuNvXA}D*^DMuqn\w,a7aNP5XlM^wvL,,9(MMA}*_uB%|:H/ ,MMWb@M*fwA\]D&|:Hk h?37EMWl+MfwD_,k h?3#WXMM)$ff,,J%9{4/MW]oM)5MwZUUv89>-k#?)WXMMu5Mwe_-k#?&WXof,a,,M,%#S{4hMWZw*MM5vn\U#->RBWZMM5vD_->R&WZZe@M,M-Qi i.#pZeuMm5L.S.P>.#AZB_']Af-,,fek;"2i Mpa_55D_f5AZk;"jS>.SFZZB_5qD_f5yKK*tS>.SFAZ#BDq}YUf5DKKTI i Wo9BL]f5T;I{.9k,ZX#Bw]f5DKKTI{.9k,WAX #An\@fMDELL,T2j k^Wl #-wDfMw\qU-T>>S~$,X #-LwDfMDELL,T>>S~$,WAX? Mq\yfMDLLL,J 22!.aqc? #+vDfv\y(--,J">J,)@\? #vDfMDLLL,J">J,)lo! +y]w@,ELDL,#.Nq! eMWvNL,J>S#Bw! e,ELDL,J>S#,)Coj{y^CMMm,fBLDDP i .]<P~$.6-6SI#J(X]/H~x-NJ-eLDkk&\lX. LD]vDaM-T,LB{q\VPNa%&(+99 .(5K@vwp. C(aM-T,LDJF&E\lp#LDU'fMMJJ:O-,-.4+n_U]yw]]@aO0%q]vMl#BfMMJJ:O-,L,&---bo-LDUWuBaMfPIIO-,7r/M)qDy]'yU]wDqwMMM[Z-BeBaMfPIIO-,)f&8MXZ@y]Uy_f_T"IO- &eb(y]WuW^Uwg.deLCaxeuL__f_T"IO-(##eUU,fI"B T\gmB%r,wy' . GW]ol+M(8Br^^.{2B,'X+L+r_,J> B,^@pp\mxT,".{..kqnmmx5@@.4.B,,D'wWmxT,".B,,D'qMDJ@pAAfJ-JFr>": 4 kvZJMWfJ-Jm":O-B*DyJMWfJ-JFr>":O-B*Dy-pp,6TF~TT34reZc-BLu6Tf5;4;.TT|B-fLy\o-BEu6TF~TT|B-fLy}]]NbnU5dd+f*x))(a(&74k\sNuw_(5M/~kBBB*Doaw_JJrk~kBBB*Dpo[Nev]ln]5CL55LCCeaNGT]sNeKwuMmrx*~r8BB,BZeCwuMmrBBBr8BB,Bn~WnnoY\w@^^vvLCCCm*aa,.$^s~^wwqDfve/{r~~B,xx]8wwqDfNN,rrr~~B,xxLoHTmnoolopq]W^DL5EEEfE_r^ocs;tuvwuMaxxy\vtz . <{| PF(xy}c|Nw]][]exkkkkO~Bxxwb:VWXAYZZ[\]^LL_+`"aDXbc4OadeMffefgh i3 3 R j# k]l`V,fD@yy@DB P9| | % B~xx-B-,(+)CDCE(FGHHHH6I  ? 344@AL()*+,- ./012  344,_g   !!""""#$%&'da  T&Blmarbles-1.0.7.orig/src/gfx/stone/arrow_d.bmp0000600000175000017500000000000007206510746027146 1lmarbles-1.0.7.orig/src/gfx/wood/arrow_d.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/stone/arrow_l.bmp0000600000175000017500000000000007206510764027166 1lmarbles-1.0.7.orig/src/gfx/wood/arrow_l.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/stone/arrow_r.bmp0000600000175000017500000000000007206510773027202 1lmarbles-1.0.7.orig/src/gfx/wood/arrow_r.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/stone/arrow_u.bmp0000600000175000017500000000000007206511003027173 1lmarbles-1.0.7.orig/src/gfx/wood/arrow_u.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/stone/barrier_lr.bmp0000600000175000017500000000000007206511027030313 1lmarbles-1.0.7.orig/src/gfx/wood/barrier_lr.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/stone/barrier_ud.bmp0000600000175000017500000000000007206511040030274 1lmarbles-1.0.7.orig/src/gfx/wood/barrier_ud.bmpustar uweuwelmarbles-1.0.7.orig/src/gfx/title.bmp0000600000175000017500000060206607171614217015645 0ustar uweuweBM66(    + F<_M"+5#`-CI7b_9'B*BImxKMNY !]^Xlb'@mIGorwaa!('X;.>1<AA=K.-QaZU8KXylgXWw:'$+K,U? 93EB"lY#*$ $Z_%6A++ZM-*)1/97NR86G;$3A?SCU[FafG.N 8N7;REBRqSO`U{}WhiZSN[-^m|aGVedbg7NsekuUipp  C0 O4/('#G6)) WG!4*#?9#KO#M=' *31+"4+c\-%-E:-xg/:</NE2 4YV51.6BB8&%977<7Z_b`cqaFHaonbN`ev{ilZdo{~rFQr]Zsyxy}bw %   !"2 <65/T8@+>@ 3!,+.8)##A/2/=:#/!38OChO  ;.! !aG#.$#AA$$$&$$0$--$UN%77&('"'HB(.;)**2+@A,,8E..$...JM/NU/SN0#-16422&520A3[L444?J5?:5GJ5JA66)-6V_8!,8CV9(:90<99?;";US<>J=-,=0D=FB=HN=[Z>/>41>OX?<?ULA!+Bb_CZTD&2D7IDKEDKSDK\E=CF#;FSQG+;G26H.HEAHeZI>;IieJRXJ]WK6DKFIKduL&ALYbM>BO0!!!!!ORRdd11!OO!!OO!!!!!!!!OOO!!!!!!!JJ!!!!!!!RԲ!!!!!"!!J!!!!!OOOO!!OOO!!!!!R"!!!!O!!!!!!!!!OO!!!!!!!!!!S!OOO!!!!OOOOONS/JJJJJJJJJJJJJJJJJJ]OOO!!!!!!!!!!!!!!O!!!O!!!!JJJJJJJJJJJ!!!!!!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!R!!!!!!!!!!!OOĠQOOOO!!!""!PS wz{>l21O!!!!OO!!OOOO!!!!!!!OOO!!!!!!J!!!!!!!!!!OS!!!!OOO!!!JJJ!!!!!!!O!!!!OOOOOO!!!!OR!!!!!!!O!!!!!!N"OO!!!!!!!!!!!!O!!OR!!!!OON+Ġ!JJJJJJJJJJJJJJJJJJ'!!!!!!!!!!!!!O!!!!!JJJJJJJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!! OO!!"SRJd wEvg1!!OOO!OOOO!!!!O!!O!!!!!!!!!!!!!!!!!!!!!O!!!!!OOO!!!JJJJJ!!!!!!!!!!!!!!OOO!!!!!!!!!!!!!!!O"NMO!!!!P(NO!O!!!!!!!!O!OO!OR!!!!OOOOPOOJJJJJJJJJJJJJJJJJJJ',O!!!!!!!!!!!!!!O!!!!!!JJJJJJJJJ!JJ!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!RO!!!!!!!!!!!!!!!Z"!O``e AAAv`11OOO!O!OOOO!!!!!!!!!!!!!J!!!!!!!!!!!!!!!!O!!!!!!O!!!!!!!!!OOO!!!OOO!!!!!!!!OOO!!!O!!!!RO!!!!!O1!!!"Y!O!!!!!!!!!!!!OO!!O!!!!!!!OOP.!!!O!JJJJJJJJ!JJJJJJJJJJYO!!!!!!!!!!!OOO!O!!!JJJJJJJJJJJ!!!!!!!!!!!!!!!!!!!!!!!!!!ROO!!!!O!O!OZZewwv<Z1O!!OOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!POOO!!J!!O!!!!!!!!!!!!O!!!O!!!!!OOO!!!!!!"O!!!!!!!!OOOOOO!!!!!!!O!!OOJJJJJJJJJJJJJJJJJJJJJJJJ!Z"O!!!!!!!!!!!!OOO!!!!JJJJJJJJJ!J!!!!JJJ!!!!!!!!!!!!!!!!!!!"O!!!!!!O!!1ml AAAgdOOO!OOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!O!!!!!!!!!OO""OROOO!!!!!O!!!!!!!!!!!!!!!!!OOO!!!!!P!O!!!!!!!!!!OSOOOOR!!!!!!Vaۗ!OJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!O!O!!!!JJJJJJ!J!!!JJJ!!!!!!!!!!!!!!!!!!"S!!!!!!gOOO!!JZ1lwwwAAMNR!!!!!!!!!!!!!NN+1!!!!!OOOORR2O!!!""NVM]RRRROOJJJJJJJJJJJJJJJJJJOO!!!!JJJJJJ!!!!!!!!!!!!!!!!!!!!!OOOO!!O!!!!!!OOOSNNO! qwwwmm`2OOOOOOOOO!!!!!!!!!!!!JJ!!!!!!O!OOOOPPPRN!!!!!!!O!OS!OO!OORRRİ0]!N!!!!!MO!"!!/!!!!!!!!OZŘ!!!ĶRRRRROO!JJJJJJJJJJJJJJJJJJJJJJJO"!!!"JJJJJJJJJ!!!!!!!!!!!!!!!!!!!!OOO!OO!!!!!!!!OOSS!g wwwvmgg2İ!O!!!!!!!!!!!JJJJ!!!!!!!OOOOPRR iZOO"O!!!!!!!S!!!!OOOORO>4jN!O!!!!N"!!!!1"SMS!!!!ҩ!!!!!!!O!!!!!!J]ORRR!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJN!!PJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!!!!!OOORO!OOOO!!!!!!!!!OOOOOO!!!l wwlggЭOOOOOOOO!!!!!!!!JJJJ!!!!!O!!OOORRRRRRPO1!!!!R"!!!!OO!!]!!!!!OROO/`OOONNM""SUM""NRO!!!!!!!!!!!!OOO!!!!!!OOR!!O!JJJJJJJJJ!JJJJJJJJJJJJJJJJ!!PJJJJJJJJ!!!!!!!!!!!!!!!!!!!!!OOR!OOOOOOO!!!!!!!!!!!OOOO!!!!!!! q wwgg111OOOOO!!!!!!!JJ!!!OOORPRRRN!!!O!!!OO!OR!!!!OOOPRORmҩZNM/YS1Ǽ""!O!"OO!!!!!OOO!!!!!!!!!"O!O!!OO!JJJJJJJJJJJJJJJJJJJJJJJJ!J!JJJJJJJJJJJJJJ!"!!!!!!!!!!!!!!!!!!!!O!OOOOOOOO!!!!!!!O!!!!O!!!!O!!!!gAAAwlggmgOOOOOOOOORR!!!!!!J!!!!O!!OORRRRORNO!!!!!!!!NN!!"O!RP!!!!!!!OORR1OO!!/,MOOO!S(NN"OO!!!OOOO!O!!!!!!!!"!!!!!!!!!!JJJJJJJJJJNJJJJJJJJJJJJJ"!!JJJJJJJJJJJ!!!O!!!!!!!!!!!!!!!!!!!OOOOOOOO!!!!!!!!!!!!!!!!!!nvvvw lggggOO!OOOOOO!!!!JJJJJJJ!!!O!!!OPRROORRU!!!!!!!+OOPO!!O!!!!RROOROO!!!!!!ONM""/Ǯ(O!!OOOOO!!!!!!!!OR$P!!!!!!"!!!!!!JJJJJJJJJJJJJJ!JJJJJJJJJJJJJJJJJJJJJ!!!!OJJJJJJJJJJJJJJJJJ!!!J!J!!!!!!!!!!!!!!!!!!!!!OOOOOO!!!!!!!!OR!!!!!!!!!eĤOOO!J!!O!!!!!!!!OO!!!!!!!!OOOOOOOO!!J!!!S!!!!!!!!!!!!!!!!!!OOOORw!!JJ!R!!!!!!!!!!!!!ORRO!!OORS"!!O!!!!!O!!Rlj!M!!!!OO!N"!!"!OO!!;;nn]]R!J!O!!!O!!!!JJJJ!!!!OO!!!!!!!!OO!!OO!!!!!JJ!!!!!!OOO ]ϯOOOO!JJ!!!!!!!!!O!!!!!!!!!O!O!!!!OOOOOOO!!!!!OP!!!!!!!!!!!!!!!!OOOOORROR!!!!!ROO!!!!!!!!!ORRO!!OOO"OORRO!!OO!!NRSO!!!O!!"SP!!OO!!j;1]RRR!!!O!!!!!!!JJJ!!!!!!O!!!!!!!P"O!!!!!!!JJJ!!!!!OOŚOOOOOOO!JJJ!!!!!!!!!!!!OO!!ORN""!!N!!O!!OOOOOOOOO!!!!J!!P!!!!!!!!!!!!!!!OOOOROO!!!J!!J!OOO!!!!!!!!!OOR!O!ORONUSNO!!!!O"R`O!!!O!!!O!OO!Omy]RO!!!!O!!!!!!!!JJJJ!!!!!!!O!!O!"N"!!!!OPRRO!O!!JJ!!!!!OROOOOOOO!JJJJ!O!!!!OOO!O"PNOO!OOOOOOORSSOOOO!JJ!!!P!!!!!!!!!!!!!!!OOOOP{N!!!!JJ!!!!!JJ!OO!!!!!!!!!!OOOO!!O!OOS2``SN!!"!!!!!SUźO!!!!!!!!SNN"OOOO!;;1RRRRO!!!O!!!!OO!!!!J!OO!!!!S!!!ROOOOOO"O!!JJ!!!!OSS`OOOOONRO!!J!!OO!OOS"OOOONR!POOORRRSIJOOOOO!!!!!!!!!!!!!!!!!!OOOOOOORRR@Z!!!!!!!!!!!!!!OO!JJ!"!OO!!!!!!!!OOO!!!O!SPOO$֍!!!!!ZS!!!O!!!!!İOO1dn;;d1RRROO!J!!O!!OOM!!!!!!!!ǰ!!!!!!!!!ROO!"!!JJJ!!!!İVeaOOOOSO!!!!RO!P1ZSSOO!OSSNMMSSRPݫOOOO!!!!S!!!!!!!!!!!!!OOOOOORRSR@Z!!!!!!!!!!!!!!!JJSOOOO!!!!!!!!O+SOOO!!!SPOOSPP+Ǎ!"!R!!!!!!!!O!!!!!J!!!!!PZdn<ċ!!!!!!!!!!OOOZVSOOOOSSRROaOOOO!!J!!O!OOOOPR!!!JS2ZZZ`` N"ZR!!!!!!!OOO!O!!!JJ!!(]OŲSO!!!+`O!!!,!!!!Z^M!OOOOO!!!8!!P!!!!!!!!gl www <<𫋋!!!!!!!!!!!!ROO""S!!RRROOO!!!!!]O!!O!!O!!!!!!OOOOOJJJJ!!!]O!!!OǚOOOם!JJ!OO!!!!!!!OOOOS3ƤOOOOPSRROOOlOOOOO!!!!J!!OOOOOO!!!!!mmg^`eSe!!O!!!O!O!!!!NO!!O!!ٰR/R^кSO!!КRĺOO!!!wҍ!!!!O!e̝J!!OOOOO!!!u"!SUO!!!!!!!!P ww nЩ!!!!!!!!!!S!!!!]SROO!OOOO!!!!!!!"UP!!!!!O!!!!!!N!!O!!JJJJJJO!"PZ!!OOJ6!OOO!!!!!!OOOORZ/1ZYdOOOOSSSZS[ĺRRRROOOٲOOOOO!!!!!!!OOSSO!!!!d1`e`m۴2U!!!N!O!!!!!NO!!JJjS11O!!SO!b!mv"!!!!O!!!!!!!V12SROOO!"!Sll EEzw mgd]!!!!!!!!O"O!!!!!]RRONOOOOOO!!!!՚!!!O!O!!!!SO!!JJJJJ!!S`"!!O("!O!!!!!OOOOR2`2]!]̚OOOS+ǫROZROOOOOOO!!!OORZZZS!!!O̺e1122ZZZ`SΚ!!R!SN""Z"JJ!O!OOOR]]51RO!ROOOOOOO!!!!!OU!!!!!OO!!!!]MݰZSRO"O!RVl EEzw l1!!!!!!!!!O!!!!!ROO!OOOOOOO!!!!!!!!!O!!!!!O!!J](2S!!RZJ2UOOO!!!!!!OO1!gSOO!!ORRP`OOOOOO!!!!!!!!!!!OPieeNO!!!!12вZZ2`OZ򚋍!!PNN(N]R!!ZORSO!!ROOO!!!!!!gmN!!!!!O!!!!!!`j`ZZZSSROSn EEw llgd1!!!!!!!!R!!!!!!RROOOOO!!!!!O!!!OO!!!!!!N!!J""!N\2!]ƞ"OOO!!!!!!!OOO!!g^S!!!OO!OSRRSOOe"""OOO!!!!!"OOl eU!!!!!gZZDZZ1`R!!Қ!OSRSZO!!O!OŭOORR^OO!!!OOOO!!!!!O!djZ!!!!!RO!!!!!!!ʰ21ĺZZS2!dg EEEz gjdd1O!!!!!O"!!!!!OZRROOOROOOOOO!!!!!!!O"O!!!!!!!!!!!!!JJSNNRNMS"N+O!!Z`P!O"OOOO!!!!!!!!!O!ZZZO!!!!!!OOOОOOÚROOO!!!!!!!!`R!ml gU!!!1ĞRS1RSSO!!!V!!O!=!!!!!J"!!!!OOOOOe !OOO!!ROO!!!O!!!!!!!OOOO!!!!!1Zְ!!dEEEz lźgdR!!!!!ON!!!!!!!!!!ZRO!OOOO!!!!!!!!OOOO!!!!!!!!SO!!!!V"OR1`ĥ!!!`֫!!R"ROOO!!!!!!!!P!]1O!!!!!O!OO!OROO6!OO!!!!!!!ggO!!!1`!!RZM!!l""OOOOsO!!!!JJ"!!!!OOŚOOORRmOOO!RRRSOO!!OO!!!!!O!!!!!!O12S!n wwwwEEzz llg1ggЫ!!!!!!!!!!!!!!RROOOOO!!!!!!!O!!!!!!!!!!!OR!!XJS]ROҩ5!!!!`!!"!!OSSSOOO!!!!!!!OO!!!!!!!!OŲ!!!OOO!!!!!!!īOOR!!!mZ2!!!S]`!!!!O"ՍOOOOPZO"SO!!!JJ!!!!ORgORRR2Ş!OOO!RR1!!!OOOO!!!!!!RO!!!!!!!!O"n;yvwwwwEEzzqlld1d]O!!!!!PP!!!!!!!!!RROOOOO!!!!!!!!O!!!!!!OO!!!!!!!!!O"!OO!!F`J,!!!O!!!!OOROOS1SO!!!!!!!!!OO!OO!!!!!!!OOZ!!OO!!!OOOO!!!Oźg!!!ZPOOOO""!!"SRO!!!!J"!!!!!OgROORRd!!!!!!!RO!!!!!OOOOO!!!!!!!OO!!!!!!]Sd!!OOO!!P!!!!!!!!!!!!!OS]ROOO!!!!O!!!!!R 2!!ddl ll <`źJ!OO!!!!!!!JJJ!ROO!!!!!O!O"!ORORPROOO!!!!!!!!!!JJJJJJJJNS!!$!JJJ!!M;հSMRJ!!!!g隐!!!!!kZ!N!!OZm͝ROSRO!!!!!!!!!!!OO!!!JJ!!OOOOO!!!!!!!!!!!OS S"!!!1!!!"R!!!SP"]O!!OO!!!!!!Ov 2!!dlll {32JJ!OJ!!"JJJ!!!!NO!!!!2Zj!!"!!!O"!O!!O!!!!!!!!!!!!!+J!!ٺ`!!O+]2N!!!!OO!!!!!!ROO!!v<^1]!"NSղ"RRR`ʼnOOJJJJJJJJ!OJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!OOOOOOO!O!!!!!!!!!!!!!!!!!O!!OOPgddZdOOO!!!!!!!!!O!!P!J!!!!OOOOOOOOO!!!!!!!!O!!!!!O!!OOOOOO!!!!!!!!O!!!!!JJJJJJJJJJJJ!!!!!l1ROOO!!Ol+"P NZ`1Z!JJJJJJJJJNJJS!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!O!OOOOO!!!O!!!!!O!!!!!!!!!OOOORmdZdd!!!!!!!!!!!!!!!!"!J!!!OOOOOO!!!!!!!!!!O!!!O!OOOOOOOOOOOO!!!!!!!!!OO!!!!JJJJJJJJJJ!!!!!!!!!jRO!!!! ]!"/]Ѳ ] p!]JJJJJJJJJ!!JJJJRJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!OOOOOOOO!O!!O!!!!!!!!!!!!!!!OOOO1ggdddO!!!O!!!!!!!!!!JJJ!!!!OOOOOO!!!!!!!O!!!!!!!!!OOOOOOOOO!!!!!!!!!!!!JJ!!!!!!!!!11RO!!!!!!!Q(NS9!"O!OSNJJJJJJJJJJJJJJ!PRJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!OOOOOOO!!!!!!!!!!!!!!!!!!!!!OOPdmgdddO!!!O!!!!!!!!!!O"O!!J!!!O!!OOOOO!!!!!!!!!!!!!!O!OOOO!!!O!O!!!!!!!!O!!!!JJJJ!JJ!!!!!!!!!!OSOO!M]!!V!O!!!!2JJJJJJJJJJ!J'J!RJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!OOOOOOOOO!!NO!!!!!!!!!!!!!OOOdmgmd1d1!!!!!!!!!!O!O!!!!!!!!!OOO!!!!!!!!O!!!!!!!!!!O!OO!OOO!!O!!!O!!O!O!!!!!!!JJJJJJJJ!OOO!!!O11O!!J!!@!O!!!!!!ʗJJJJJJJ!OJJJRJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!OOOOOOOOOOOOO!O!!!!!!!!!!!!!!OOOZg1Z1O!!!!!!!!!!OOOO!!!!!!!J!!!!!!!OOOOOOOO!!!!!!!!!!!!!!!!!!!OOOOOO!!!!O!OO!!O!!!!!JJJJJJJ!OROOOOOZO!!!!O!"]^T!!RJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!OOOOOOOOOOOOO!O!!O!!!!!!!!!!!!!!!!!OO+1ggO!!!!!!!!!!OOOOOOOO!!!!!!!!J!!!!!!!OOOOOO!!!!!!!!!O!!!!!!!!!!!!!OOOOOO!!!!!!!!!!!O!!!!!!JJJJJJJJJJJJJ!ORROOOgd!!!!H"J!UNORM!]x>!!UJJ!O!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!OOOOOOOOOOO!!!!!!!!!!!!!!!!!!!OO!OZgemg1!!!!O!!!OOOOOOOOOOOOO!!!!!!!!!!!!!OOOOO!!!!!!!!!!!!!!!!!!!!!!!OO!OOO!!O!!!!!!!!!!!!!!O!!!!JJJJJJJJJJJJJJJJRRRROOO1SO!!"禞SOJMZSPN!OY OSʼnJJJJJOO!JJJJJJJ!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!OOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!gg1!!O!!OOOOOOOOO!!!!!!!!!!!!!!!OOOO!!!!!!!!!!!!!!!!!!!!!!!!O!O!!!!!!!!!!!!!!!!!!!!OJJJJJJJJJJJJ!R1RRROOOUO!!O+J2Y""ZR!OP!P$!JJJJJJJJJO!!JJJJJJ!J!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!O!OOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!O!Olmg1OOO!OOOO!OOO!!!!!!!!!!!!!!!OOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJ!ROOO!OOǥ"P!PY!!ON2O""V!!!JJ!!!JJJJJ!JJOJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!OOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOng]OO!OOOOOOOO!OOO!!!!OOO!!!!!!!!!OO!OOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJ!!OROOOOOOOOP"NO!N!!O!O"OOP!!!PJ!!!!JJJJJJJ!JJ!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!OOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOd1dgdROOOOOOOOOOOO!O!!!OOOOO!!!!!!!!O!OOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJ!OORRROOOOOOSO!!MM!!!!",!"O2NSN"SeJ!!JJJJJJJJJ!OJJ!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!O!OOO!OOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!dggЫ/ROOOOOOOO!OOO!O!O!!OOO!!!!!!!!OOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJ!ORRRROOOOOOO"!!M"O!!!!!!!!!SZ!!!"PN"Z"NP2JJ!!!JJJJJJJ!OJJ!"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!OO!!!OO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OZd1ROOOOOO!!!OOOOOOOO!O!OO!!!!!!!!!!!!!OOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJORRROOOOOZZiNOOOO!PSS!O!OOOOO++OҍJJ!!JJJJ!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!ZZg1RRRROO!!!O!OOO!O!!!!!!!!!!!OOO!!!!!!!!OOOOO!OOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJORRRROOOOOO!OİlvviVOOOR!!!!OOOOO!O!JJ!JJJJJJJ!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!OO!!!!!!ZZZRROOO!!!!!O!!OO!!!!!!!!!!!!!!OOOO!!!!!OOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJORRRROOOPOOOOdjlSRSOO!!!!OOO!!!!!!!!O!JJ!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!O!!!!"OO!!!!!!!!!!!!!!!!!!!!!!!!!!!!ZZeŲROOO!!!!O!!!OO!!!!!!!!!!!!!!!OOO!!!OOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJ!ORRRRRROOOOOOOOO!O11m@@VPOO!!R!!!!OO!!!!!!!!!!!JJJJJJJJJ!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!S1ZdRO!!O!!!!!O!!!!!!!!!!!!!!!!!!!!OO!!OOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJ!RRROOOOO"S!!!OO!!!!!!!Z]ȶOO!!!O!R!!!!!!!!!!!!!!!JJJ!JJJJJJ!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!OP11dd1R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJ!!RROOOOO!!!!O!!!!!!R25ĩO!!S""SNM!!!!!!!!"!J!JJJJJJ!!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!JJJJ!!!!!!!!!!!!!!!!!!!!!!!!O!!!11d1]R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOO!OO!OOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!JJJJJJJJJ!ROOOO˗!!!!O!!!!!!!ĚROOOOOO!!!!+`!!!!!O!!JJ!JJJJO!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!!!!!!O]1d11]RO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOOO!OOOOOOOOO!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OJJJJJJ!OOO!!!!!!!!!!!1RROOOO!!!!!OS!!!!!!RP!!OJ!!JJJJJJJ!!J!JJJJJJJ!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!1d111R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!OO!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJ!OOO^v@!!!!!!!!!!!`O!!!!!!!O!!1!!!!!!!!"O!OOY!"!!!!JJJJJJJJJJ!O"JJ!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!O1Zd1O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!JJJJJJJJ!ORORVeq!!!!!!!!1!!!!!!!!!!!O!Mȯ!!!!ONO!O!!!!JJJJJJJJJRON"!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!O!O1dg1O!!!!!!!!O!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!O!!!!O!!!!!!!JJJJJJJ!OORROORSlw "!!!!!!!O!!!l!!!!O!!!!!!!!!!2!!!"MY!!!OPJO!!!!!!!JJJJJJJJN"O!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!O21dg11RO!!!!!!!!O!!O!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!O!!!!!OOO!!!!!JJJJ!!OOZl w 1!!!!!!""!!!!!!!!!!!!!!!!!!Nȶ!!!PJOO!!!!!!!JJJJJJRЭ]1SS"""JJJJJJJJJJNJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!PS1Z2111R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!O!!!!!O!O!O!!!OJJJJJJJ!OOOOOOOjO!O!!!!!!!쫈!J!!!!""NO!!!!!!!S!!!!!!!!!!!!JR!!!!!!!!!!JJJJJSZU11SSJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!,!!!!!!ORZd1g11R!!!O!!!!OO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!O!O!!OO!!!!!!JJJJJJJ!!!!O!OOOOOOOj2ĶO"N"!!NNO!!!!!J!!"OO!!!!!!/N!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJ11gպ]RJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!"1Zdj11RO!!!!O!OOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!O!O!OOOOOOO!!!!!!!!JJJJJJJJJ!!!!!!!!OO+RO"S!VNN"!!SZgO!J!M!ROO!!!!!!!!!!N!!!!!"""O!!O!!!OO!!!JJJJJ1īY1R!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!SdZZdjd11RO!!OOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OO!!OOOOOO!!!!!!!!!JJJJJJ!!!!!!!!!!!OOOOOOOPe2"O`2NPOZO!J!!!PO!!!!!!!!!!!S!!N!!!!!!!OO!JJJJJJ+!SROJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!JJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!PZdggddZ1RRO!!OOROO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OO!O!O!OOOO!!!!!!!!!JJJJJJ!!!!!OOOOOOOOOO!!!O2+֐1RJOOO!O!OO!O""!!!!MMNg1!!!!!!!!!!!O!!JJJ!OJJJJJRO!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!OSggg11ROOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!OOO!!!!!!!!JJJJJJ!!!!OOOOOOOO!!!!!OPOOٲZOPOOOO!O!NNNNP!S````!!!!!!!!!!Y!JJJJJJJJ!O!JJJJJJJ!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!SZg ndgZZROOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OO!!!!!!!!!!JJJJJJ!!!!OOOOOO!!!!OS!!S!```O!!OOO!!!V!!Se!!!!!!!!!!JJJJJJJJOO!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!vAgd11ROOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OO!OOO!!!!!!!!!!!JJJJJJJ!!!!!!OOO!!!!!S!"Ziಚ!!!OOOOO1mЗ!!JJZ"!!!!!!!!!JJJJJ!!!JJJJO!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!Ogw g̰O!!!!!O!OOOOOOO!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OO!!O!!!!!!!!!!!JJJJJJJJJ!!!!!OOOO!+1VSwS!!OO!!ORSŰ!!!Jmj.!!!!!!!!!!JJJ!OOO!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!O1XU9!5ү]R5S2O!!JJJJJJ]1O!!!J!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!Z<m<2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!O!O!!!O!!!!!!!!!!!OO!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!JJJJJJJJJJJ!!SO!Y!!!O!!!!RNO!!!JJO!!!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!1jnರO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOOO!O!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJ!!!!RRO""!O!!!OOūO!!JJJJJJJJJ!O!!!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!O11dnggī!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!O!!!!!!!!!!!OO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJ!!!!RPJTMTN!!OR2RROO!!!!!JJJJJJ!OOO!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!J!!!!!!OddgggŰR!!!!!!!!!!!!!!!!!!!!!!!!!!!OOOOO!O!!!!!!!O!O!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!JJJJJJJJJJJJJJ!!O!OJJ>8NS!O]OO!O!!!JJJJJJJ!!OO!!!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!dggū!!!!!!!!!!!!!!!!!!!!!!OOO!!!!!!!O!!O!!!!!!O!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJO!!!!!!!!!"J,r!Y!!1RRRO!!!!!JJJ!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!Oggge2!!!!!!!!!!!!!OOO!!!!!!!O!!O!O!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJO!!!J!!!!!!!!J5!ORZZ1RRROOO!!!JJJ!JJ!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!PSSg`gee1R!!!!!!!J!!!!!!OOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJOO!!!!!!!!!!!!"!OSֲRO!!!!JJJJ!!!!!!!J!!!!!!!!!!!!!!!!JJJJJJJOJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!SlgO!!!!!!!!!!!OO!!!O!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJ!!!!!!!!!!!!!"!!!JJ!1ZRRO!!JJJ!!!!!!!!!!JJ!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!P`ee1Z!!!!JJ!!!!OO!!O!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!JJJJJJ!!!!!!!!!!!!!!!!!$Z!!!JZOOO!!JJJJ!!!OOO!!!!!!!J!!!!!!!!!!!!!!!!!!!!!!!JJ!!!JJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!OR1l հ1O!!!J!!!!!!OOOOO!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!JJJJ!!!O!O!!!!!!!!!!!!!S]!!!!!!1djRRRO!!!!JJJJJJ!!!!!!"OO!!!!!!!!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJJJ!JJJJJ!!!!!!!!!!!O!!!!1l g1]RO!J!!!!OOO!!!O!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!JJJJJJJ!!O!!!!!!!!!!!!OSNO!!!!!!!!!!1ZRRRO!!!!JJJJJJJJ!!!!!!!!!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJ!JJJJJ!!!!!!!!!!!!!!!!!1gg1O!!!JJJJJJJJ!!!OOOO!OOOOO!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!JJJJJJ!OO!!!!!!!!!!!!!!"NZROO!!!!!!!!!!!!!!ŞZROOO!!!JJJJJJJ!$!!!!!!!!JJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!OOO!!!O1djmd]O!!JJJJJJJJJJJ!OOOO!O!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJ!!!!!!!!!!!!!!!!!OOOOOOO!O!!!!!!!!`ZZO!!!JJJJJ!!!O"!!!!O!!!!!OOOOO!O!!!!O!!!!!!!!!!!!!!!!!OOO!!!JJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!"PP!!!!!!11d]O!JJJJJJJJJJJJJJJJ!!!!!!!O!!!O!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!JJJJJJJJ!!!!!!!!!!!!!OOOOOOOO!!!!!!!!ZROOOO!!JJJJJJJJ!!!!!!!!"O!O!!!!O!OOOOOOO!!!!OO"!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJ!!!!!PPPO!!!!!1dd11R!!JJJJJJJJJJJJJJJ!!!!!!O!!O!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJ!!!!!!!!!!!!!!O!OOOOOOOOOOOO!!!!!!!!!!!!!!mmdROO!!!!JJJJJ!!!!!!!!!!!!!!!!!OOOOOOOO!!!!O!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJJJ!!!!PPPPO!!!!!O111R!!JJJJJJJJJJJJJJJ!!!!O!O!OO!O!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJ!!!!!!!!!!!!!!!OO!2OOOOOOOO!!!O!!!!!!!!dgSROO!!JJJ!!!!!!!!!OR!!!!!!!!!!!!OOOO!!!!!O!!!!!!OO!!!!!!JJJJJJJJJJJJJJJJJJJJJJJJJ!!!PPPO!!!!!O1dndddd1OO!JJJJJJJJJJJJJJJJJJJJ!!!OO!OOOOO!!!!OOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJ!!!!!!!!!!!!OO!!!PPOOO!O!!!!!!!!!!!11O!!JJJJJJJJ!!!!!!!!!OOOOO"!JJ!!!!!!!OOO!!!!!!!!!!OO!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJJJJJJJ!!!PPP!!!!!!!O;;ff]!JJJJJJJJJJJJ!!!!OO!OO!OOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJ!!!!!!!!!OO!!OO!!!NOOOOO!!!!!!!!!!!!!O!!!JJJJJJJ!!!!!!!!!!OOOROO!PO!!JJ!!!!!!!!!!!!!!!!!!!!OO!!!!J!!!!!!JJJ'JJJJJJJJJJJJ!!!!"P!!!!!!!!!!!!1d]//!JJJJJJJJJJJJJJJJJJJ!!!!!OOO!O!OOO!"!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!JJJ!!!!OOO!!O!!!!POOOO!OO!!!!!!!!!!!!!!!OOO!!!!!JJJJJJ!!!!!!!OOOORROOO!!JJJJ!!!!!!!!OO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJ!!!"O!!!!!!!!!!!!1n]RJJJJJJJJJJJJJJJJJ!!!!OO!OOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!JJJ!!!OOOO!!!!!!O!!SROOOOOO!OOOO!!!!!!!!!!!!!ORdROO!!!JJJJJJ!!!!!OOO!J!!!!!!OR!!!!!!!!!!!OO!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJ!!OO!!!!!!!!!!!!1d]!JJJJJJJJJJJJJJJJJJJ!!!!!!O!!!OOOOOO!!!!!!!!!!!!O!!!!!!!!!!!!!!!JJ!!!!!!!!!OO!!!!OSRRRRROOOOOOO!OOO!OO!!!!!!"O1ūOOOO!!JJJJJJJ!!!!!!OOPROO!!!!!!!'!!!!!!R!!!!!!!!!!OOOO!!!!!!!!!!!!!!!!!J!JJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!gm𭫞O!JJJJJJJJJJJJJ!!!!!!!OOOOO!!O!!!!O!O!!!!!!!!!!!!!!!!!!!!!!!!JJJJJ!!!!!!!!!!!!!!!RRRRROOOOOO!OO!!!!!!OOR1RRO!!!!JJJJJJJJJJ!!!!!!!ORPOOOO!!!!!JJ!!!!!O!!!!!!!!!!!OO!!!!!!!!!!!!!!!!!!!!!!!!OOJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!!RgmjdвO!JJJJJJJJJJJJJJJJJJJJJJJJJJ!!!!!OOOO!O!OO!OO!!!O!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJ!!!!!!!!!!!!!!!!!!!RRRRRRROOOOOO!!!!!!OORR]OOO!!!!!JJJ!!!!!OOOOOO!!!!!!!!JJJ!!!!P!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!m1]11!JJJJJJJJJJJJ!!!!!!OO!!O!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJ!!!!!!!!!!!!!!!!!!!PRRRRRROOOOOOO!!!!OORROOO!!!!!!JJJJ!!OOOOROO!!!!!!JJ!!!!!!NOOO!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!S1]11]JJJJJJJJJJJ!!!!!!!O!!OO!!!!!!!O!!!!!!!!!!!!!!!!!!!JJJJ!!JJJJ!!!!!!!!!!!!!!!!!RRRROOOOO!!!!!OOOORSR!OO!OO!!!!!JJJ!!OOO!!!!JJJ!!!!O!O!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!!gZd1OOJJ!!!!!!OOOOOO!!!!!!!!O!O!!!!!!!!!!!!!!!!!!!!!!!!JJJJJ!!JJJJ!!!!!!!!!!!!!!!!RRROOOOOO!O!OOOO!OO!!!!!!J!OROOROO!!!!!!!PO"O!OOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!SZZ1d]O!!JJJJ!!!!!!!!!OOOOO!!!!!!!OO!!!!!!!!!!!!!!!!!!!!!!!!!JJ!!JJ!!!!!!!!!!!!!RRRROOOO!!!!O!OOOOOOO!!!!!!J!ORROOORRROOOO!!!!!"!JJ!!!!ROOROOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!JJJJJJJ!!!!!!!!!!!!!!!!!PZ`ZdJ!!!!!!!OO!OOOOOOO!O!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!JJ!""JJJ!!!!!!!!SORRRRRROOOOOOOOOOOSOO!!!!!!!!!!JJ!RRORROOO!!!!!!!!!!!!OOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!OO!!OO!!!!!!!!JJJJJJJJJJJJJ!!!!!!!!!!!!!!!!!PSźdd1!J!!!!!!OOOOOOOOO!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJ!JJJJ!JOOOOOOOOOOOOOOOOO!!O!!!!!!!!!OOOOOOOO!!!!!!!!!PJJJJ!!!!!!!OOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOOOO!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!SdZZggd]O!J!!!!!!OOO!!!!O!!OO!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJJJJgOJJOOOOOOOOOOOOOOOOOOOROOOOO!!!!!!!!!OOOOOOOOOO!!!!!!O!!JJJJJ!!!!!!!OPSOOOOOOOROO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOOOOOOOO!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!SdggжO!J!!O!!OO!O!O!!!OO!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!JJJJJ!ĚJJJJJS!!OOOOOOOOOOOOOOOOORRSOO!!!!!!!!!!!!O!OOOOOOOO!!!!!!!OO"JJJJ!!!!!!!O^OOOOORRO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOOOO!!!!!!!!!!!!!!!JJJJJJJJJJJJJJJJJJJ!!!!!!!!!!!!!!!PggnЫ]O!!!!!"!OO!OOOO!!!!OO!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!JJJJSJJJJZ!!OOOOOOOOOOOOOOOOOORO!O!!!!!!!!!!!!!!!!!!!!!!!OOOOOORROO!!!!!!!O!J!!!!OOmOOSSROO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ORRRRRRRRRPPO!!!!!!O!!!!!!!!!!JJJJJJJJJJJJ!!!!!!!!!!!!!!!!g]O!!!!!"!OOOOOO!!!OO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JJJJ!JJ!!JĐ!OOOOOOOOOOOOOOOOOOOOOOOO2OOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!OOOOOOSOOO!!!!!!!!!!!!!!!OOORUO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!PPPO!OO!O!!!!!!!!JJJJJJJJJJJJ!!!!!!!!!!!!!!!d7"NĥRR4uWMONOJ!!!!!OS"SOOO!O!!!!!!!!!!!!!!!!NN!!!!!N!!OOOOOOORPRR!!JJJJ!!!!OR5 sBFv|rmj]""M($P!!!!!!!!!!!!!!!!OOOOOPOO!!OOOOOOOO!!!!!!!JJJJJJJJJJJJ!!PZ;;dd1ZR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!жORR]S!!!!!!!!!!OOOOOOOOOO]Z1]SĺROO!!!!!!!!!!!!!!!!!!!!!!!!!O!O!!!OOOOOORRO!!!!JJJJ!!!!ORRRRd1OOOO!!!!O!OO!!!"!!RR/+OOOROO!!!!!!JJJJJJJ!Pjd11R!!!!!!!!!!!!!!JJ!!!!!!!!!!!!!!!!!!!!!P$!OOROOOR+(M!!!!!!!OOOOROOOOOOOOOOOOOOR]1S]O!!!!!!!!!!!!!!!!!!!!!!!O!!!OO!OOOPOPO!!!JJJJJJJJ!!!!OORRRRR111POOR!O!!!!O!!!!!!!!!"ROOOOOOOPOOOO!!!O!PSRO!!!!!!!!!JJJJJJJJJJJ!!Zgdddd1īOO!!!!!!!!!!!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!PMOOROOOSUOOҺ!!!!!!!!!OOOOOOO!OOOOOOOO!!!!!!!!!!!!!!!!!!!!!O!!!OO!OOOOOORRO!!J!JJJJJ!!OO+ORRRSPOOOOOO!!!!!!!!!!!!!!!!!PSOROOOOOOOO!O!OOSSSOO!!!!!!!!!!JJJJJJJJJJJJJJ!!!2ngdZ]R!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!RRRONS11UOOOOO!!!!!!!!!OO!OOO!OOOOOOOOROOO!!!!!!!!!!!!!!!!!!!!!!!!!!O!OOOOOOORRRRRSPRRO!!JJJ!!PPRRPPOOOOO!!!!!!!!!!!!!!!!!OOOOOOOOOOO"OOO!OSZOOOOO!!!!!!!!!!!!!JJJJJJJJJ!gdRO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ʤRROONĶRN"OO!!!!!!!!!OO!!!!!O!OOOOOOOOOOOROOOO!!!!!!!!!!!!!!!!!!!!!!!OOOO!!!OOORRPRRR!!JJJJ!!!!OOORRRPOOOO!!!!!!!!!!!!!!!!!!!!!!OOOOOOOOOOOOOOOOOOOOZZ`ZSOO!!!!!!!!!!!!!JJJJJJJ!2mjf1O!!!!!!!!!!!!!!!!!!!!!!!!!!OROORROOO!1ROSOO!!!!!!!!!!!OOO!!!!!OOOOOOOOOOOORS1OOOOOO!!!!!!!!!!!!!!!!!!!!!!!!OO!!!POOOOORSRRRR!!!!JJ!!OORRRRRPPOOOOOOOOO!O!!!!!!!!!!!!!!!!!!!!!!!POOOO!OOOROOOOOOOOOUZddg̴OOOOO!!!!!!!!!!!!JJJJJJ!!gA wg111R!!O!!!!!!!!!!!!!!!!!!!!!!!!!OROO!ROOO!!!!!!!!!!!!O!!!!!O!OOOOOOOOOSOOOOO!!!!!!!!!!!!!!!!!!!!!O!!SSOORRRR!!!!JJJ!!OORRRRRPPOOOOOO!!!!!!!!!!!!!!OO!!!OOOOOOOO!OOOOOOSgng]OOOOO!!!!!!!!!!!!!!JJJJ!!SAAAAZd1R!!!!!!!!!!!!!!!!!!!!!!!!OROO!!ROO!ONNO!!!!!!!!!!OO!!O!OOOOOOO1OOOO!!!!!!!!!!!!!!!O!OOOO!!OO!!!SSROOOR`ZSRR!!!!JJJJ!!!!OORRPRRROOOOOO!!OO!!!!!!!!!!!!OO!!OOROOOOOOSPNNNOOmnаOOOOOO!!!!!!!!!!!!!!!JJJJ!PAAAvmg1R!!!!!!!!!!!!!!!!!!!!!!!!!!!OOOO!!!SO!!!OO"O""!!!!!!!OOO!!!O!O!OOOOOOO`OO!!!!!!!!!!!!!!OO!!!!!!!!!!!!ROOOOOOORROO!!!J!!!!ORRROOOOO!O!!OOO!!!!!!!!!!OOOO!SPRUaiVSP221OOOOOOOO!!!!!!!!!!!!!!JJJr1222SOOOOOOO!!!!!!!!!!!!!!!!!!!!JJJJ"eqzAv]!!!!!!!!!!!!!!!!!!!!!!!O!ZZ11OO!!!!ORZj1OOOO!!!!!!!!!!OOOOOO1OOOOO!!!!!R!!!!!!!!!!!!!!!!!!OOOOOORаS!!JJ!!!OOOOOOOOO!!OOOOO!!!!!!!!!!!!!!!!OOOOOgvAvAwEw 2`$OOOOO!!!!!!!!!!!!!!!!!!!!!!!JJSizzww 1!!!!!OO"!!!!!!!!!!!!!!!!J!!O!!R1O!!!OORZ^l11ROO!!!!O!!!!!OOOROOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!OOOOOS]!!!!J!!!OORRROOOOOOOOOO!!!!!!!!!!!!!!OOOOOm 6 ' 3'&D, PPPP (@ PPPPPP!@H33 2 PP LD !P -=; @0 == 3 !0 &. PP  *J KC :::: 34D PP F8 ++ FB PP ( @0 M- 3 @ : == M# P! J #M#;JF PP 6F  N * H@( O7+C3M:*J6F 80 (,$>*::* "2 3 J @!!0 :* ' JJ BB >. *:3 /"@!PPPPPP P0H 6: : NB2 G =3 H8 N ***FH !!@(L M---=M3K$(0!P!@ 4F2 O2B B B * DD$G--M3  <,,<<< 4N BB >N$ PP L F *:'--K6<80!PPPPP PP  77' '' ?$$$44.>F6J::LL 8@008L$N>  *:::*J C+7*<@0 PP PPP PP! 8 >6J*:::O 2"B B.L, J*:*J8H +  -=- &@ PPPPP!0 M M 8 *:-= 3 .(!P!! D4& ::; K:PP . **: 8@0 ' - <@  : """ ; **J& 0@( **:K+ : BBB >.& 3 ?2 !!PP PPPLD **J&  /G - (>& : FN P L  -M( !@ $> " BB ::& NN ==M N .> FF&6 "2 :. 0!    =6 @ PP PP *: <*G -== 7::::: ::::J $B? LL ,, F6 8 !! 4 & * ** 3C /@ PPPPP PP!@H 6 N" B L>& **: $<8H * 3 == L8H@ PP !06 -- ><  - O&!! L<.F*:: =- PP <$ : < ?G - .H   DD"" G ; J& HH =M7"*JJJJ*:  N. 6J**  '0!PP PP(&J*J (L ? , : 6F B ,P  # =-  00 > ""2 "" B * F> ==- 66 : "2 / 2 6F 8@ 0@ L< 6 ==  !PPP &* . *: .$,8 (L>? ===D<( PP $N == K 6 /3EE=3PP (L<J:::* =- PP , :: F.8 O  ( !PPP08,** $   ( -=:**J**:B B 6F D>: =-M3C @PPPP 6* ( 3 .$ N :  B .P0 3 --76 @@D.  O  BB:* 6 -==- B / '' G "B $,( ! ( F&B#G L(H PP FJ & HH8L :'  OFF 66J*: : &/ @ @@ >6 H@ ,6 :4 H8 <$ & :    @PP PPP0 NF F$F2BB <4 : J ,8  8$ 7 -=  , !P  == ; PPP N>  !P0@ &J* ** @0 P0@H8L 4 C G/ * &< 2 M- @0@H :: .,O/ 3M?B 8  B J&  $ =3 2$PPPP NF* D  C =  L, $.6 : 22 P0 #CK . J: B"/G G /  : **** =  7 C C;;  G & < HHH( .F = ,L PP *  $==  KN >J:: J/G 0 !! 6 0 P0 * @ 8 4. J* "+ M3'8!PPPP! N  B .<  *J, !0 H(>? M== 6$D 0! H( C- 3C8 @!PPD4 O55 G/O*!!@ & E%  PP PPP!!@,G# K'G *JN$ 8$ M- >NH0 4> ::J&D,"2 3--. , & & 3M- C2 : : B  :J&> ,& 2$0PP PP .:*  @ +#M-= * : :* /O PP <C  D.&J: ?' KK7G 2" :: B B-= M#3 MMM 33 # + ?" .$ L (( HH  ==- D, PP ,$ :* <8 !@ 4 '== =M ;6$ NNF ** *J. (0 PP F ! PP 6 P0@H8 $ 6J :"M 2" 2* F6 :  0! ( # -- 2 N$ L8 @0 @ J/ M <8H, ** :*  GI K 0@H4. J  8PPPP !0  :*F> ,L M J6 8@ <4.**J >22 3 &$ F3M -G:::  2"B: 6 ,D. ?= 'PP PP <4::>4 H -+: & ::  PP <   $.6 B"' ; 7 " BB :*-I- M-- -  M MM 33 +7JF D ,L ( 8L< - == $ PP 8,::  !( D>===C;+7 4N&J::*J&F.8 0!P6J--?.$L(HPPPPPP0H(NF6:*J&2 2"B B"2N:::*FNDL@0P0H+M--C2*6F> @!0 .F -- H( J :: ? 3 M ,8H@ < &*  G& !!PP PP & ::6 4 3  <(( ,D :* F M > 3M B""B* & D,(88< ?'!PPP P!  : &. G + 4$ F  PP H8 & = && B'+C+' "B BBJ #  --MM - -   =- - 3 * > 48 H< 3M-= "J >N !P @H ** ** F>&@H F& , PP P!  -= @ & :: / ;  ; / D** 1 3C H@0!!PPPP. *::* 6 F> G   O*$D, L< :: L. G3=633  *JND8  .8PPP PPP LF*F 0 2' - =G .. .F B  !! @H >O =- ++ B"7+  : BK+MM#3 ### # 33 M -- == - ": 6& D @0 8  == -C F !P !0 J :* NF 0@ 33 .> . 6 @! PP PP L< -= P0 > * G ; E=M#K7OF:: A =H  J*::& * G'M- =-$ << ::: . (( O?K -=**::*$HF3+7G PPPPP0(:*6DH0'3+BF6 "" : 3#;8H@@0!P!0HB--==- ?2 ?'KK7?2:JJ** >$BGM))#KKKK+ C3--===-M :*FDL@0P@H8/3M-== 2J!P !! F& ::::N PP  . 6N 6@!PP PP 8 M-PP$J?C5 ;K7*:95L8 ***F??--F>$4N.F::::&4D,LO?G=::.4<(0!PPPP $.: .!PP===FF*>PPP4 BPP@A)(PPlmarbles-1.0.7.orig/src/gfx/lights.bmp0000600000175000017500000000250207215204736016003 0ustar uweuweBMB(0 @  mmm%$7!!!! x >CNM9{Oi0088QQUU--v))77FF!!** DEa+iVegML\!Zt!!````ggKKOOQQ|88zz//C^xrUR@DDll]]GG++""@@ZZ%%&&K[\VRRgg__NN))((BDt}Z33>>rrcc99NN2211?W|RPK00<<jj}}jjccQQ s &&""QkSYaO5v~ZZuunnll[[,,%%&&0pZ[@)f''NNoohh..""""""""""""""""""";"""""vwxyz{|}"~""abcMdefg"hijTklAm"nopqrstu"KLMMMNOP"QRSTUVWX"YZ[\]^_`"3456789:";<=>?@AB"CDEFGHIJ" !"#$%&'()*"+,-./012" lmarbles-1.0.7.orig/src/gfx/tiny.sdlfnt0000600000175000017500000000156007061716432016213 0ustar uweuweBM>(@ @ @@ #@8Ä9yD}N@NDG4D9N@ D 9TDD(D HD!AQ%DDRAQATDD QMD@TQX%2(@@@ "DB|DDYP%D@TAA(B PE D@TQe4!1@ 8B 'DAI8 U%|@XAUQyA QMd@VQe6P!Q)`BP "E@B)dE3MP%D@TAQEPQ( $@4 XXՎyQEB9UDD(AEDQ%D@RAQEQQEH@"@@ E@BC 88GyDANx}QE@0@@0 @` lmarbles-1.0.7.orig/src/gfx/m_sframe.bmp0000600000175000017500000001641207441476413016313 0ustar uweuweBM  (( 62*"jZ~B.j&~n? "zvF2>&JrZ:nNbnV>j^6~.>R*FVB*.VJ&RJ ~jz%6r:2f^"FF Bfva.Nrfvzֆ֪־ֶֺvBbւ֢^RjR2&>VnNXN֒zbrR "2*J6~.8 "vzFN֖֎:֊~vz֦֮֞r[6BJ>:.&ֲ֚*VfZFZN "&*&&Rf^J &j"tj"n'ѱ摾CC92tfffmfffthQܯ"==CCC>2K4eaUx~hffffffffffffiqްIdd2=@@==>2WOahffffffffffffjx򚚚y!BcEcY_*4W9DF-apϭnsʪӮfffʮ}R񷚚N9fffhfmݎTUVWN,4fffuff1ERS++fffli7Q+jthhiyy1I1O+P``fffmyy1L1MMNfffhyyyGKK9fffyy"99>JjtA9>I*`gyC@Fqq|uq"CCDEx|8[:: BCC7|y "5;/@@A""P*뚚/678%992:=KWD{D@Ꚛ5./01(234$5">9@{隚%&'()*+,-]C={^||]š!  !"#$zCC{{|:pwu-Fޡ 7zCCC{|}~rrks}0]榿 >=CCCpqrslituvdwmffffsgxyG5 W9>=Cghifffjjklkmffffffno]Ǩླྀ”ffffffffffff]ԄߒԆ]ܦcTy^lmarbles-1.0.7.orig/src/gfx/m_frame.bmp0000600000175000017500000001573207441476337016141 0ustar uweuweBM(( NVJ:>B""^FFnjfbZ2R rjvzffrR~Rzb26 6V&J^:v~n*v*j&.."BZ&""~>B "&""*: &&J ""*2&z6N."F 2 &*f> "rrN RZVvSr6\S_aVF,C+=A0K*+,CKtL=V#7N]]]]]]]]uXlJU]]'??/!% 2 L?7E=?&? ']UlF%V]]]]]]]]]VVWVV]]]]7%=L> 8& ) >%eS3 ?VVVUdz%? O=.nrrre]]]7""wV]]NV70/; "b4n3?? 0d/ LV7+V<- L.7sS_,sn%30=!"<%0."VX\[ AdV* /AtK op & 7@nNN+3!.8 &|_e"o/&vJO.\_K !@ln "(:*..F +wl> ) _\3L2 =4~L "-b0> tw#* 2.WM O4Q ]wZK*|4N%?; KxE70 w( RB& %Q|& !}T LF4*.*% b3!lN.-[ % 2`{ )& sH&'*uo%4< O!7Q &[? ;[y2 Az! ;>x""S[!t <0;AdV77ml Ap 9) Ix / &$vNF )&Z(=& sVl{ v*=L * )0Gw zNN]eSR /O 'QSj >Fpu"KFCM9  b_^]]]\0 bZAO/7%%l$2 2+N%A0t NNNfO * 't 73 ?=JVlB3A"VL %3 ) % o*7NVNN_pV0 \'o $>9?3 R+VNNNNVVnoLL!!9 ??>?32 7N]VV]nNN^.F2) 3 2? 0O NV]VN]^]]^ F) L/&  VNVVVm *9 =L0 7VN7kl777V4 ;" ) 8/&/o 1E77VNNhVi7j. 2&%t+'0= N]P+g,]]]6 ;7%%%O  S Wb +cde]]f_: >W + l+Z) )B4%%"""0`]]]a= 077 "';***Z[0%V\]]]^_ 2X7]_dV I )FQ"0F2OWSXNNVY+ 'WS]NN]]NNn_) 9 3l0L=(T )AUNVE<FoF\]]]r_SN]]a 27QL//.1R9 CSNS+<Sf]]]DSd6NNNf_  =vL MNO P4S67X\]]]]_cNVVVN' 2Fwg G* ;;!HI> 8J+K*8_]V7]dS]NNNyS47VN_9O!KlM o<@.A9)"BC/ DEF ;9_a]]]]S_]Nb["%NJb*K+VzS3) )8;2 ) 9<%3=>) !$<%? Sa]]]]]__V0B'>/=K`d|%VN^_M"A 2O w1) 2 34567+"*.!&8#/ 9!:#7VN]]]]_SV+0/ 9%-*2 7d7VN]]]d ! 2 0v( ) *++ ""+,-. ) /'07]]XS_*?; 9 >O;2 FV_a^]]]]]]]N]N o  O.p !"#$% &'7\SEF> )"_^]]]]]NVVt9 >  %VJC'? 2 ) ?F_an]]NNV+"03# vro& &LfmNiWlmarbles-1.0.7.orig/src/gfx/f_yellow.bmp0000600000175000017500000003450607206511405016334 0ustar uweuweBMF9(@8  44{|   *  !!(# & ! **" *")! ( !!#"(#,333## '#)***!  *  (33$&) "!***"**   # (*0 #! 2    (!!   #**,1""  #"!)((&*-"!" (*!(( (  +,* * ** !*! "-  # %*"#   #  "  !!**!( /*(" "* ("(! #*. *(   lmarbles-1.0.7.orig/src/gfx/logo.bmp0000600000175000017500000054062607344165507015474 0ustar uweuweBM6(`              %%%***+++(((!!!  &&&++++++'''!!!  ###(((******)))&&&$$$!!! """)))---,,,'''   $$$***///222333333222...***&&&    """"""!!!      000gggcccZZZRRRWWWKKK<<<... EEEjjjdddXXX[[[XXXLLL???111$$$    !!!,,,666AAAIIIOOOXXX^^^eeehhhaaa[[[>>>111000...+++'''!!! (((TTTfff^^^VVVYYYXXXKKK===...  ...===KKKbbbXXXXXXWWWVVVTTTQQQeee\\\UUULLLBBB888,,,"""  %%%,,,333999===>>>SSS\\\WWWTTTNNN444'''$$$###  '''000777>>>BBBEEEFFFFFFFFFFFFEEEDDD@@@:::222(((   ###(((...333999===BBBEEEGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHGGGGGGFFFFFFEEEDDD@@@:::333***   MMMfff888%%% !!!BBBYYYAAA,,, SSSYYYDDD,,, """DDD[[[KKK777$$$  $$$333>>>DDDGGGFFFEEEDDD>>>333$$$ !!!///???eeegggAAA111$$$444FFFTTT]]]aaa]]]eeessscccJJJ===777---""" )))xxx@@@,,,!!!BBB[[[DDD/// ;;;oooPPP,,, 000:::ZZZ[[[KKK;;;,,, MMMgggqqq''')))333777<<<@@@EEEKKK]]]___NNNHHH'''000;;;FFFPPPXXX___bbbbbbxxxiiiAAA,,,)))$$$ 111CCCTTTfffxxxrrraaaSSSGGG???999666555444444555777<<>>???666 mmmsssRRR777$$$ ,,,^^^>>>###^^^vvvLLL--- CCCXXX:::!!!dddwwwQQQ000000===  888qqqDDD000000111333444444333111000777rrrmmmlllJJJ+++MMMbbbFFF222 QQQlllHHH000   ```BBB(((SSSllldddVVVKKKDDD@@@===;;;999555000+++&&& PPPSSS===+++TTTzzzQQQ444###!!!(((111===LLL[[[eeeuuuFFF&&&))),,,YYY~~~nnnXXXpppDDD333SSShhh̷{{{\\\CCC000%%% """***555dddLLL$$$QQQ~~~VVVYYY555  &&&+++SSSZZZqqq˹zzzZZZAAA111)))%%%$$$$$$#########"""""""""!!! $$$===___RRR))) dddxxxZZZDDD111""" [[[AAA%%%"""mmmݩxxxSSS999'''"""]]];;;  ___ίUUU666""" QQQ((("""```TTTMMMMMMRRRXXX\\\^^^[[[TTT\\\111 """bbb}}}TTT000(((NNNYYY@@@))) 777aaațuuuXXXDDD111### XXX>>>$$$ ZZZ|||uuurrrrrrqqqooommmhhhaaaZZZRRRHHHAAA888444333444444777666333///(((111eeeHHH333"""  888ά]]]JJJDDDGGGNNNXXXccclllBBBGGGtttFFFMMM___<<<$$$ 555uuummmҪdddMMM>>>444@@@mmm+++ |||eeeBBBOOO333  III}}}qqqЧhhhXXXRRROOOOOONNNMMMMMMMMMLLLJJJGGGBBB:::222MMMccc000 ;;;OOOxxxȦttt\\\DDD///aaa>>> ===fffwww汱gggNNN:::&&& ```333 WWWrrreeeDDD*** ccc555 rrr|||===((( """444}}}ӱWWW111YYYMMM111 ###aaaNNNqqqԩttt^^^GGG111 mmm/// rrr¶~~~xxxrrrppppppqqqsssrrrqqqllleeeZZZMMM>>>LLLUUU777&&&  GGGzzz达~~~ssspppppprrrnnn %%%fff555%%%bbbAAA%%% """000iii\\\[[[mmmОuuuVVVppp===%%%  ppp:::OOOMMM,,, &&&222[[[\\\[[[lllӮyyypppcccQQQqqqAAA+++ ---cccAAAjjjһqqqSSS888"""bbb/// ooo```eeeyyy齽eeeKKK222 555KKK'''  CCCKKKfffԠsssKKK+++OOOBBBBBB\\\uuuνmmmAAA  (((>>>߶VVV///FFFWWW999 :::$$$222OOOuuuYYY>>>&&& +++999XXX  eeebbbûvvvaaaJJJiii555&&&  444TTTuuuЬvvv>>>   ===׵HHH^^^@@@###''';;;aaa:::555CCCYYYzzzȊkkk888$$$ vvv>>>```DDD### (((;;;aaa;;;555DDDZZZzzzƿqqqUUUQQQ,,,  !!!HHH 777aaaκ___@@@&&& <<>>RRR ***SSS맧iii777WWW;;; """III((('''BBBooo“iiiGGG000%%%KKK$$$ %%%>>>qqq777\\\묬ooo<<< ^^^CCC&&&(((VVV >>>qqqɩTTTvvv[[[OOOHHHfff]]]rrrooo...  ###VVV222[[[ѭiiiFFFAAACCCBBBAAA>>>:::555FFF\\\zzz***  """KKK888000```؈***000KKKSSSꦦ```---BBBHHH$$$  222VVVFFFDDDzzzddd???(((666www```̆FFFOOOHHH&&& :::ddd***TTT޿lllHHH---;;;PPP))) %%%RRR777lllϰcccIIIDDDYYYYYYzzz666///111aaa{{{mmmXXXPPPKKKlllYYYssssss111 444bbb ===rrr|||EEE FFFHHH  """III666 ...YYYTTT000 ddd555+++III___111WWW域___000^^^AAA$$$ &&&RRR///333bbbͳdddJJJ===222......KKKkkk{{{ttt 444TTT333cccǮhhh### &&&&&&%%%$$$$$$$$$%%%&&&%%%######HHH::: GGG@@@111hhhbbbGGG###444VVV<<<۳iii000XXX444 <<>>!!! !!!III999'''TTTμmmmfff,,, TTTvvv}}}nnn EEE999666iiiֻppp  >>>vvv444 ???WWW==={{{222999```///nnnrrr777DDDGGG (((EEEkkkUUUͩ^^^@@@))) """HHHAAA>>>TTT""" ---XXX111 :::ggg111^^^͞iii::: ccc888555VVV<<>> ___888  ???LLL EEEyyyԴ~~~kkk%%%XXX{{{yyyBBB  &&&TTT 999oooг}}}   HHHsss777aaa"""OOOmmmEEE%%% BBB```...jjjЁBBB YYY,,, 111EEEUUUͩggg>>>+++ &&&OOO<<<000tttֶccc+++QQQKKK(((***SSS<<< %%%NNNȖ```111PPPBBB:::MMM;;;pppӹ%%% [[[666!!!EEEnnnYYY}}}߼wwwzzz(((gggrrrjjj;;;```AAAyyysss>>> PPPCCC+++WWW ///^^^⡡ddd444___777+++OOONNN...\\\eee111,,,WWW222 444ccc777iiiƘvvvddd```]]]lll(((  kkkyyylll"""///bbb;;;pppέ___YYY%%% ```|||bbb 111UUU,,,___,,,'''NNNRRR777tttےTTT)))UUU999###444Ưsssddd...)))VVV,,,&&&cccxxx:::```???  AAAYYY@@@sssȗ^^^000;;;MMM### ===OOO888mmmͷ###mmm|||{{{ZZZkkkѣ~~~iiiccccccVVV+++ eeecccKKK000]]]444gggɄKKK### ---RRR''' """JJJFFF %%%PPPttt??? EEEEEE  888bbb444jjj디PPP### EEENNN+++***UUU///+++YYY\\\EEE@@@GGGEEE111 hhhhhhMMM666MMM<<>>NNN444ggg¨uuuggg 222PPP XXXǓeeeJJJCCCIIILLL]]] MMM555 %%%OOO<<<)))VVVݘ[[[,,,bbb444===UUUAAAwwwƅNNN%%%...SSS((('''KKKGGG???}}}yyy===YYYDDD$$$ GGGDDD !!!JJJQQQ222)))000888hhh RRR666;;;NNN:::nnn״ZZZ444JJJGGG!!! FFF+++###;;;kkkrrr """CCCaaa999jjj贴|||III###---NNN###  (((sss444!!!333bbbOOOhhh777 EEEMMM)))(((PPP<<<(((SSSѤlll:::^^^666>>>MMM///```Ġ}}}aaaNNNiii AAA999 ___CCCoooŏ[[[999+++111<<>>OOO666iii×fff:::bbbDDD ...jjjrrrLLL 111___AAAYYY[[[///TTT'''  """vvvddd777'''777aaaMMMɆPPP***bbbAAA  BBBNNN FFFzzzخvvvCCC QQQDDD ;;;KKK )))XXXӬ~~~VVV:::,,,uuu((( ,,,[[[ 111XXX˔^^^555 +++AAA222 666ddd;;;ppp}}}FFF ---RRR''''''PPP<<<)))UUU쪪mmm:::NNN@@@&&&KKKFFF111kkkIII!!! ,,,SSS---...ZZZ!!!///___ܘ\\\///222<<<>>>NNN111ddd׮|||JJJ$$$WWWAAA """DDDiiiwww ###BBBYYYOOOΠlll<<< YYY)))  EEEuuu___---<<>>aaa IIIyyyBBB CCCGGG### 111^^^333eeeЌRRR'''+++LLL### 444fff !!!KKKබKKK""" TTTGGG !!!FFFYYYmmmWWW***SSS###  RRRlllOOO*** """MMM///***[[[ƛlllBBB!!!bbb888 ;;;```???rrrخyyyEEE ;;;MMM###  &&&QQQ...///^^^ᲲyyyEEE ...KKK!!! ###EEEPPP///YYYі]]]000 ZZZ...000]]]444fffҏUUU***aaa::: GGGDDD ###MMMwwwBBB FFFHHH ///[[[!!!555mmm___111```444'''PPP<<<(((TTT䞞aaa111eee333///^^^@@@ttt߲{{{FFF ===RRR***  ===[[[kkkŔ\\\,,,333HHH555~~~ppp///  &&&RRR222...aaa۹^^^666 ;;;TTT...000]]]333bbbἼSSS)))[[[--- FFFDDD %%%PPP岲yyyEEE ///TTT''' 111[[[  BBBsss䩩mmm;;; SSS>>> %%%OOO<<<)))VVV祥hhh777<<>>tttɉQQQ'''UUU))) ###JJJFFF %%%TTTƀIII###DDDGGG!!!  BBBMMM EEE}}}sss>>> GGGBBB ***VVV!!!444eeeరxxxEEE 222eee???'''  ,,,kkklllǗ^^^...AAA===rrr333 )))WWW%%%333hhhѫ~~~QQQ---PPPFFF$$$ %%%OOO<<<(((SSSșbbb444```999<<>> !!!CCCYYY000\\\禦hhh666WWW<<<***UUU///...]]]娨nnn<<<$$$$$$RRR*** ???YYYCCCzzz‚KKK### ---OOO%%%  $$$KKKGGG)))XXXޜccc666TTT))) EEEPPP HHH򭭭mmm:::OOOAAA777\\\888hhhTTT---  '''777BBBpppvvvcccGGG999444...&&& %%%ssseee໻OOO(((LLL666vvv222 777aaaBBByyyѮTTT000!!!jjj;;;!!!***UUU///---[[[Ò\\\///bbb333 CCCNNNAAAtttӓXXX+++HHHIII!!! 000ZZZ  !!!GGG}}}{{{DDD :::JJJ"""  !!!HHHEEE $$$OOOMMM&&&MMM]]]888444aaa555hhhՓXXX,,,^^^000 >>>WWW !!!JJJ|||III$$$ ]]]777777fff;;;oooHHH!!! ,,,OOO%%% ,,,WWW )))UUUϘgggBBB***"""888SSSjjjuuusssjjj[[[hhhnnn___CCC:::000######ppp```خxxxEEE%%%WWW"""  lll666$$$<<>>vvvЕ^^^333EEEEEE +++WWW ---]]]ؓWWW+++^^^000 !!!HHHEEE CCCuuu䲲cccMMM???444WWW999$$$,,,AAA___mmmRRRKKKiii\\\EEE555&&&!!!___YYY~~~͠iii===%%%UUU000 RRRlllOOO***AAAQQQ !!!MMMۺ___RRR''')))===QQQRRRhhh;;;''';;;```???rrrٰ{{{GGG!!! ;;;MMM### ***SSS... ###KKKmmm888ccc333111\\\!!! %%%OOO꣣ddd333^^^666000]]]555fff䬬vvvDDD!!!>>>333 ddd/// DDDOOO !!!JJJzzzCCC :::JJJ""" ***UUU///666iii䬬uuuDDD SSS((( !!!HHHEEE ###LLL짧iii666XXX===:::]]]222^^^ϩyyyiii[[[bbbTTTcccuuuzzznnnOOO111UUUfffJJJ777%%%  OOORRRuuu༼XXX555666<<<555~~~ppp///  FFFUUU $$$SSSͥttt333IIIgggqqq^^^www555"""000]]]222aaa㽽TTT***[[[--- BBBLLL888jjj|||BBB NNN@@@ ###GGGPPP===sssvvv??? QQQDDD  %%%OOO<<<***XXXWWW... CCC>>> 777ggg<<>>...$$$>>>```<<>>\\\AAA)))  333\\\[[[ݼ```???qqq((( qqqddd666''' %%%PPP111,,,^^^غpppEEEnnnTTT|||nnn888((( AAAMMM DDDyyyԩrrr@@@ EEEFFF %%%KKKFFF===sss```...^^^111'''NNN::: """KKK坝^^^...aaa222666ddd>>>uuuܭ}}}NNN'''TTTppp HHH999  """JJJFFF &&&QQQ򰰰rrr>>> QQQCCC 888iii %%%RRRᰰzzzFFF!!! FFFEEE  %%%LLL:::&&&RRR碢ccc333aaa:::333^^^ $$$III}}}༼~~~  &&&===wwwɠqqqFFF###XXXMMM111 ///^^^LLLuuuɠsssMMMaaa,,,CCCuuu___--- (((VVV444222eeeиQQQ)))///zzzssssss444"""555ccc666ggg޷NNN%%% ...SSS((( 999[[[+++XXXuuu;;;YYY??? ===aaa===uuuooo:::MMM@@@***UUU///111fff漼```555 RRR'''===VVVBBByyyńMMM%%%---QQQ&&& 111``` !!!KKKTTT***...OOO###  ???XXX CCC{{{uuu@@@ EEEFFF $$$IIIDDD444cccବzzzssskkk[[[###***888|||dddӤqqqCCC!!! DDDUUU666 )))rrr<<<___ҭZZZmmm...vvv222 ,,,[[[777kkk###cccSSS/// ***TTT...+++XXXÒ\\\///bbb333)))PPP::: @@@zzz⏏LLL!!! ;;;OOO&&& ///[[[!!!111bbbǀHHH!!! ;;;NNN$$$  !!!HHHEEE '''WWWŞrrrFFF"""iii NNN444 222___555fffؖ[[[...___000+++YYY222GGG|||̙bbb444WWW((( 333```555fff̉NNN%%%UUU)))666aaa """IIIꥥsssVVVLLLKKKFFFfff  +++???yyyTTT}}}٢jjj;;; +++YYY888  !!!OOO<<>>___...(((QQQ---(((UUU✜___000ddd555%%%IIICCC222cccmmmBBB///+++,,,III666 ...GGGTTTGGGoooٙ___///,,,ZZZ777 888KKK111VVVooo```<<<  RRRmmmOOO***666fffAAAyyyܻuuu >>>Ĩxxx}}}555$$$999^^^===pppٰ{{{GGG!!! ;;;MMM### +++RRR;;; BBB???PPPDDD ===bbb HHHggg555WWW;;;000]]];;;tttԴmmmBBBSSSWWW111  CCCNNN GGG~~~|||EEE GGGHHH  ###LLL---AAAvvv޲{{{GGG fff333 CCCNNN FFF~~~qqq=== OOOBBB444^^^ FFF}}}CCC###```((( 444QQQPPP>>>gggыOOO%%%+++WWW444 )))iii777fffŠvvvUUU>>> 555~~~ppp000 ;;;LLL GGG֯hhhbbbhhh {{{ʾfffUUU111 ---ZZZ!!!111```㽽TTT***[[[--- <<<^^^+++]]]XXX''' WWW,,,222___===tttxxxCCC GGGIII!!!  %%%OOO<<<...cccںTTT--- %%%JJJ$$$  666eee:::nnnύTTT))) VVV))) !!!HHHTTT>>>vvv任PPP&&& JJJ777666ddd666lllƂIII""" ---QQQ&&& ###EEEYYY,,,^^^WWW))) GGG@@@!!!===jjj...888cccyyy>>>999RRR...===???>>>rrrȤ}}}ZZZYYY sss444!!!@@@QQQ !!!MMMѥtttQQQGGGMMM}}} ###ɶfff999+++ $$$KKK::: &&&QQQəccc555```999***PPP:::???}}}www:::bbb<<<(((RRR...444hhhˊQQQ''' WWW*** AAAMMM $$$SSS⿿hhh>>>XXXQQQ$$$JJJ111 ###,,,*** ***UUU///...]]]⟟ccc333fff666 DDDRRRAAAyyyÏXXX+++NNN:::***TTT///+++YYYۖYYY,,,```111///VVV---==={{{xxx;;; \\\...(((III]]]888gggccc///NNNIII&&& %%%QQQDDD|||ͩ___[[[ qqqfffBBB''' EEEUUU $$$SSS̝hhh@@@111555hhh AAAƪ{{{rrr666$$$>>>YYY DDDxxxԩrrr@@@ EEEFFF  :::ZZZ'''YYYTTT%%% :::NNN''' GGGSSS...___ۚ___111]]]555666dddCCC«{{{PPP***!!!222rrr((( aaaQQQ555...SSSDDD+++ !!!GGGDDD $$$MMMrrr>>>PPPCCC  CCCQQQEEE|||ʗ```111OOO;;; FFFPPP !!!III響jjj777ZZZ>>> <<<[[[ %%%SSS[[[***IIIEEE  444[[[***;;;qqq吐MMM!!! ^^^=== 333SSS IIIάaaa^^^   BBBxxx___--- !!!KKK/// (((XXXȖ```555"""###ddd!!!rrrjjjbbb111 222aaa666fff޷NNN%%% ...SSS((('''KKKDDD999xxxxxx:::eee777>>>XXX)))YYYꪪppp===QQQCCC ***UUU///555pppǭeee:::QQQ222@@@@@@$$$---]]]DDDAAA000 777KKK)));;;```???uuuŃKKK### ...SSS))) BBBRRR """NNNϞggg555PPP<<<888]]]<<>>111___FFFޭzzzQQQ```zzz###EEEppp...oooeeeQQQ777 BBBDDD  @@@YYY EEE}}}{{{FFF !!!aaa555 ###IIIQQQ,,,UUU֩sss???WWW111<<>> OOO"""  &&&NNN;;;'''SSS㞞```111]]]666'''EEE___+++^^^WWW333999TTT...<<>>  ppphhh:::PPPBBB  aaafffCCC'''999MMM FFF}}}թrrr===UUU&&& ```ĥuuulll)))333bbb DDDxxxԩsssAAA FFFHHH %%%EEEaaa """PPP꽽xxxDDD!!!ccc999  '''RRR333...]]]ߥhhh666aaa::: >>>SSS###KKK򵵵pppSSS444777rrriiioooȓ^^^333DDDCCC EEEPPP ###LLLLLL&&&000ddd???$$$ $$$zzzӦooo::: 444BBB @@@YYY DDD|||rrr>>> QQQDDD (((DDD___999ooo󻻻[[[777]]]EEE%%%...\\\ %%%UUUjjj666NNN888;;;JJJ<<>>KKK$$$ BBBxxx___,,,<<>>333fff999  $$$NNN888(((SSSɁGGG :::???111___***RRR̓[[[///SSSOOO''' (((vvvFFF ***TTT((( {{{111 @@@VVV ###QQQ͝eee333000KKK  (((ȴ|||'''@@@>>> ,,,XXXē]]]000ddd555 ...OOOQQQ???{{{㢢mmmCCC$$$jjjAAA  &&&OOOAAA&&&HHHppp۔UUU((( UUU))) 222UUU444UUUŗyyyttt ttt]]]BBB===QQQ{{{՗\\\///SSS''' ---ZZZ!!!111```촴OOO+++www>>> SSSɘaaa111\\\%%% )))RRR...)))VVVߘ\\\---aaa222 &&&@@@\\\;;;'''QQQ潽kkkEEEGGGLLL///???\\\444___דWWW+++///BBB&&&OOO,,, <<>> YYY)))  $$$LLL999&&&PPPНmmmDDD%%%  ***]]]nnnXXX...AAA;;; DDDOOO GGG󭭭lll:::MMM@@@"""999SSSXXX...YYYtttNNN\\\@@@'''111zzz444NNNxxxߡfff666222@@@ ===SSS(((SSSvvv;;;^^^JJJ###  000PPP(((ddd333 QQQqqqMMM%%%FFF555+++\\\ÒYYY+++SSS???www888 UUU>>>ppp۲}}}III""" ,,,OOO%%%  111PPPTTT000aaaѡtttMMM,,,___LLL,,, JJJ@@@TTT}}}uuu|||φMMM''' TTT>>> ///CCC\\\뾾ssspppEEE ***\\\:::***)))???fffّRRR%%% XXX(((  >>>WWWBBBwww鼼fffBBB(((ZZZVVV###@@@ppp޹RRR/// fff%%% 666eee:::nnnGGG!!! ;;;NNN$$$ 222GGGmmmCCC]]]äZZZ444 &&&qqqVVVsss㭭ttt@@@ 666999+++RRR+++???}}}BBBhhhRRR***'''JJJ((( RRR888)))zzz'''III999000ccc㾾TTT'''PPP::: '''ʻ555DDD555aaa俿VVV+++]]]/// ///LLLTTT***:::nnnϦ~~~VVV555sssBBB&&&ddd]]]hhhVVVjjj```UUU[[[~~~qqqDDD***<<>>WWWsss泳www|||]]]888((('''DDDssskkk666 SSS$$$ 333```555eeeװfffJJJ666+++pppUUU‘qqqlll~~~ݳ~~~OOO555UUU111***UUU///,,,\\\ؒVVV***]]]/// )));;;IIImmm\\\Ŭjjj|||$$$"""wwwxxx繹NNN***VVV--- :::XXX///hhhꛛ^^^444===]]]999 ûXXX:::+++ddd999{{{)))JJJ 666iii߹NNN$$$ XXX555 AAAɸXXX $$$fff'''"""000TTT˛eee666WWW;;; ,,,FFFjjj000DDDvvvЭeeeEEEwww555zzzpppkkkfff@@@rrrBBB777<<>>@@@ GGGDDD """LLL짧ggg555WWW<<< !!!///;;;VVVvvvñwww ***ʖbbb===***###ZZZ%%%DDDUUU $$$UUU迿[[[999}}}KKK333!!!|||Ԧ~~~bbbPPP===bbb444 aaannn444JJJ<<>>SSSOOOHHHyyyж|||ddd~~~  sssyyynnnhhh666CCC}}}&&&"""777[[[᭭sss^^^IIIQQQ!!!******"""(((222===GGGWWWppp®CCC III,,, ,,,UUU彽wwwJJJ111OOO333 CCCOOO HHH}}}׿rrr---dddmmmMMM888777EEE\\\ttt紴[[[SSS :::^^^===sssyyyCCC :::JJJ""" %%%...000```QQQ333222KKKmmm尰|||VVVAAAPPP(((***JJJLLLBBB~~~ⳳgggJJJ~~~CCC555+++%%%###!!!(((}}}Ь~~~eeesss***BBBNNNKKK!!!BBBwwwخxxxCCC \\\+++ (((͸(((???777444DDDkkk߹PPP''' UUU))) !!!444EEErrrXXXsssuuu}}}{{{|||oooUUUiii666???nnn111TTTٵlllddd  AAA@@@333 (((888UUUЧ///``` 444iii矟lllKKKlll 777fff;;;mmmµ bbbZZZCCC,,,"""$$$111AAASSScccqqq~~~}}}BBB ...ZZZ!!!///```ҍRRR''' XXX,,, """%%%"""PPP~~~hhhLLL???===GGGUUUgggttt͖nnnRRR222 +++GGGbbb"""...^^^ѵ~~~dddpppeee555///)))888HHHmmm|||qqqhhhcccfffvvv˶{{{ aaa '''III~~~թrrr===VVV'''  AAA¡iii  wwwGGG???DDDaaaŕ^^^111ddd555***888???xxxdddǾxxxqqqrrrjjjTTT]]]666...333HHH )))HHHqqqyyyddd  111DDDTTT\\\NNN;;;111 )))KKKzzzƘaaa444 <<>>TTTRRR<<>>QQQlllpppooolllPPP  ###---666@@@JJJTTT^^^```PPP===555&&&HHHrrrTTTVVV  $$$>>>VVV,,,555aaa|||000  !!!IIIFFF $$$NNNӭCCC 222```"""  ###000BBBRRRbbb===VVV BBByyyttt??? EEEEEE  LLLkkk222!!!###***888MMMfffyyyiii !!!111???QQQqqqjjjzzzttt```LLL999+++!!!***CCChhhiiiSSS222+++HHHkkk QQQŶ&&&nnn222999XXX͝eee333000KKK  }}}((( '''aaa]]]UUU\\\}}}۲}}}III""" ,,,OOO%%%  %%%)))+++QQQvvvuuuBBB===>>>RRRlll===$$$ &&&333<<>>222""" """(((///777@@@JJJRRRYYYcccttt|||wwwzzzgggGGG666 !!!777NNNWWW<<<999GGGaaaYYY <<>>CCCaaaɘ___///<<>>555((('''PPP<<<(((TTTᚚ]]]///ccc444 (((444???HHHOOOTTTWWWWWWTTTKKK>>>,,,  !!! !!!###&&&+++000666:::;;;:::777222,,,&&&!!! sssxxxLLLOOOkkkÒYYY+++SSS???bbb~~~aaaiiiWWWyyyxxxrrr|||˜eee666WWW;;;     &&&OOO<<<(((TTTﱱ}}}YYYNNNSSS___]]]MMM   BBBMMM EEE~~~ooo;;; OOOAAA  $$$&&&((((((%%%     bbb [[[^^^xxx㾾TTT'''PPP:::eeeRRR;;;111֫vvvBBB FFFHHH   AAAMMM EEE}}}UUU<<<777===CCCwww""" 555ccc666iiiŁHHH!!! ,,,OOO%%%   DDDCCC uuukkknnn߹NNN$$$ XXX555 +++xxxgggRRRjjj+++߹PPP''' UUU)))555ccc777kkkҒ[[[666%%%"""(((888<<<***SSS...***YYYڔWWW+++^^^000yyyrrr{{{ܴ~~~III ccc000ZZZyyy~~~jjjRRRGGG***ŕ^^^111ddd555***TTT...,,,ZZZ壣ggg999ddd--- EEEPPP HHH響iii666XXX=== zzz{{{aaa&&&خxxxCCC \\\+++"""~~~rrrhhhQQQBBBDDD```***RRRУmmm<<<OOOAAA FFFQQQ ###LLLvvvBBB  OOO@@@777fff;;;ppp{{{DDD :::KKK"""  XXX~~~rrr]]]TTT""":::թrrr===VVV'''  333___bbbQQQ???===[[[>>>***ڲ|||III""" ---OOO%%% 999^^^>>>tttɈPPP'''"""SSS''' +++WWW ---]]]ՎSSS(((ZZZ---///lllyyyiiiWWW...SSSѣkkk888222QQQ###  ###YYYVVVMMM<<<444===>>>⿿VVV+++^^^000---ZZZ!!!222cccۚ___000ddd555 !!!HHHEEE ###MMM飣ddd333aaa::: $$${{{kkk^^^PPPddd>>>```͝eee333000KKK +++pppFFF999---111EEE˛eee666WWW<<< $$$LLL:::'''SSSooo<<<OOOAAA;;;```???vvvuuu@@@ EEEFFF  $$$zzz[[[RRRGGGLLLdddɘ___///<<>>е㾾TTT'''PPP:::!!!;;;NNN,,,MMMŔ___222ggg777)))SSS...---\\\䤤hhh777WWW<<< ???XXX FFFppp<<<PPPCCC 444[[[000+++555UUU߹NNN$$$ XXX555 ,,,MMM'''666^^^Уnnn===RRREEE  FFFPPP &&&QQQyyyCCC :::JJJ""" 333aaa;;;rrrIII""" ---QQQ'''  111qqq$$$"""---NNN~~~ܴ~~~III ccc000 :::hhh !!!BBBlll۲~~~JJJ### VVV,,,999^^^ """KKKʼnQQQ''' XXX+++)))SSS...777jjjђXXX,,,aaa222,,,___(((JJJ|||خxxxCCC \\\+++(((KKKAAA+++NNN|||XXX,,,```;;;...ZZZ&&&'''OOOҘ```222]]]666 DDDUUU :::mmmޡggg777MMM@@@(((MMM444+++NNNթrrr===VVV'''  555]]] 333\\\̝ggg888HHHMMM'''&&&LLLIII666^^^ܧooo=== QQQCCC 999lll(((KKK{{{籱xxxEEE ;;;NNN$$$  """EEEMMM 999aaaѣkkk888222QQQ### """AAAccc ???jjj׮yyyFFF!!! eee999  !!!AAAnnn111PPP{{{㶶LLL%%%---QQQ&&& 111VVV'''CCChhh쿿SSS***\\\... >>>|||000SSS}}}Ξfff444///JJJ +++OOOFFF(((KKKyyy⿿XXX...IIIQQQ+++###<<>> %%%777HHHmmmۯwwwEEE!!! GGGIII!!!  &&&;;;kkkӢiii:::[[[<<<!!!AAA``` <<>>$$$ !!!444CCC^^^ddduuu뾾PPP)))<<>>\\\***AAAUUUcccjjjpppxxx£xxxmmm```SSSdddXXX555$$$ $$$''' !!!***222===EEEPPP^^^ttt欬___HHH333ddd444333%%%(((000999CCCMMMZZZmmmgggMMM888SSS=== 222DDDbbbPPPIII===444//////222333444666666666666777777888888:::DDDWWWyyyͪccc '''HHHKKK)))111666888;;;DDDVVVpppӿsssggg\\\TTTZZZKKK999  KKK666''' ###,,,<<>>222%%%111MMMrrr}}}fff ...LLL&&& ###111FFF```xxx{{{qqqhhh]]]OOO<<<%%%888LLLZZZ```PPP<<<111 +++KKK{{{ܺ]]]000DDDUUUbbbMMMGGG///$$$ %%%AAAoooħiiiDDD '''888JJJ[[[\\\VVVSSSSSSSSSTTTUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVXXX]]]jjjlllSSS;;;*** ---DDD>>>IIINNNQQQSSSUUUUUUUUUUUUWWWZZZ```jjjttteeeXXXMMMBBB;;;666222,,,'''"""  &&&///777@@@IIIRRR[[[dddLLLTTT000(((&&&HHHssskkk***###,,,555===GGGPPPXXXaaaWWWRRR===444 ???gggwwwQQQ  ###+++111666999;;;<<<<<<<<<<<<========================<<<888222&&&  """...666;;;=====================<<<:::777333---'''!!!  !!!'''---444<<>nn~~7!+):: */04>!808" D-D"6)88(+!!7!*)--E;67< !-&7"5> ####=-46 /9  2+)!<-!!#=7>, " (C8*!+1  -,2#" /9!!+)##F22E-!77#D 225#2-& $F1!7*("#=#8222E,:-*/C8 1)*=======77!+;<<<-)+!77!)4 EE2=2==2=>668><<-&1C0))000C148==222=8C9; #D<<:"10)/70;8$-:<.DE===#==###=##" DDD 44885 "##;;========/!!9/;8### 0!7!/"###EF225;()#/* :<<">!!7/9#<:-5+77764"##%#859)1#)/!D <10!!(C#=FFF "!+# =#22225>"- E779;6"C$:<(+9"#= 8==!9;:<)+7!F2222##"88&85 > ""FE#587!918."8!!#810):<...2#########2 ;;)) "/!====77C4>"-  $!!7!*"8F2=2;)"#0/*C-;/*!7"<<0..<:"77;05 ##<0=#109! <:5*!9)66FF,"**F#222=85"::D 7+)"+; :)(8>#=" 2=)!9<>)1FFEFF222= <:""#=22FE$E" /9!!!;0",9!7">50;04....#58$9*++>"9!#===)()85"# ,9*777!>"E==4#5)/+; &60(+82"$-.:-+;01###<()## 5/9::(+7!/)22 %::+(::<##22=2" 68#<- 1!>")+-:518#225!,-<<"!!65=2222#"<<=2$ %%%DD F2)(+7!+( "2;+* "(9**/;#D.... ""#=#"> $!!!!"*!)"==#4*/0>"# :&>(!!8   E2204#)/!/<>)(7)C8''97!"..!!*/;C4 & ,%$"0)E<C)!!*##5)>$- 2/(:2==")C:-E8 6)9 ;)C5"#EE%: 15#2F$% $22=#,:.    &&  %"0)*!!**+5 :);1!9..:8>##$!77>"!===!!/)45F -D/9771822501)7*+ :"67*+ <- /9!764 ,$77!!" 9!77!!9()& D8/<8*!4##">6)FE-<<581))>""-< E=#=#=2=2==#")))" :: E15#8C(9! <#=#$08 65"#=22 DEF==##=22%<,---&  F5;(++**18.<6))#0/7!)C4=D:&"88> >58+! !7"===!*/)C"#F:&0;/!)68#5EFE "=#1)7+1&<<E8;/!!$0/*()#2  3&!*45)/7# );"(/!!045EE-:"81 -:<2###=2EF2#">)((65 D 04##4*,&< #>"##% (0 :5"22F D F====22#<3<::<<<::--  16);+9/;01:<C/)##)9!7+(68.:  24888"##" 5)/70851;*!4===*!*;)4"<<: 5;+**+)8 "#">E EF22=2FE88>### 86;9!!*)%, << E" 1C)(9!!75 <<*+## %,-.)/*!01>" "77>"##"41-0)++)6# 2,&-:2FF2"6)+//01 :. D77(C#"5  =4 == ,*/"%:""=22 D DF2====22& B<<<:<:::<:<-41)/!*)0-<F87!* "!*&& "1)==718<!!"##$%& '  $(!)68B- 9*!7785##"  &:6));0##;5-:"--==86/)  5/9;  !ED:<>555 22&77!*< 2F  , =#=====2> ' ---<<<:F#""6)!/) &<  77#8 !--551"!7==;0<  ##A:*!C1##" D<<800###58++ &<##*9 :- !+)1#"6(*!1D -:: 2 >>"=2FF=#&- /9*!!77*)12:<<<&& E D E#=======82' && -:<<.< 2=# 6;9!!*9/$, -:<.&E777 "####8>::5"8"!7==9/<  #?@ ;/)C  :<< 11485 ####">46); ##540(+7C85#=5>7>> 4=22!!>2+(lmarbles-1.0.7.orig/src/gfx/win_icon.bmp0000600000175000017500000000304607523032603016314 0ustar uweuweBM&&(  ||000r  C !!>>++ # 44kkll.. D 99yy`` N (( E Y $ 5 \ 3  . A < *  ===ggg```???888mmm>??iiiqqqwwwEEF!#$hhhyyy^^^==> ">>>oookkkFFF(*+89:GGG456$&(!"# !%%=>?@<56789:;<./001234&'()*+,-% !"#$%  %%n%%{%%=>?@<vwwxyz=>?@<56789:;<opqkrstu56789:;<./001234DhFijeklmn./001234&'()*+,-%C`abcdefg%&'()*+,-% !"#$%CZM[\]S^_% !"#$%BSTUVWXQYC KLMNOPQR  EFGHIJ BC%D%%=>?@A56789:;<./001234&'()*+,-% !"#$%  lmarbles-1.0.7.orig/src/gfx/figure.bmp0000600000175000017500000000470607441477113016004 0ustar uweuweBM &( x )*+NNN```567 VVVsssJJJ{{{hhhCCC  # N \.QBB88<DJJ\\f ))ff#2p Na.  BB55 v>JJ]]pT ~~"4::FNN`b-.,;qq=?JLWZ\m~~!!QT 21NPba)*UVB8 qq;?JMJ\)f~"22-2DYBB88}0JJRRm))``~~"NNZ[,.  ?vv9<]5pp~"/2bfBFNQ*2(44GZBZr:Od,=PrRzNn_[Rz>Ti*6JlBVnrxKf.?PF^v ''5E ,$:."n=*08(vVAN:eNG35"it`N:.j}h"r"Z'u,TOjX4\2 \"nf;va?q?&NR~dI^:j.l6ll.36*$*)43*43*43$$423.)*lнźŽǼlͼŹ̹κ˼̽ŽlÿL==L=.~xx~}}x~s|wwwqr~s}p{|r~q{uzutq}sp{zyt|xsuz{qxstzztp}x.ouyzuu{|}~otutvwoxnopqrshYYhlbeTcbbmhTagUUaebmhYUiii_WUXbYlaV^]]]^kUXbhW]\\\[]^WacYV]`ff`[ViUjYU[\dff`]Wgehc[``dd`[_aeZ[``[[]_abZ[\]^_ZTTUVWXY=O<?@?9AB7789:;<3436)$$*)43$5((5*434#(-*-''''"-43'!&! '"5$ &,,%/#$4/0121&'(3* %++,& #-.!%&!!'() ! "#$            lmarbles-1.0.7.orig/src/gfx/board.bmp0000600000175000017500000027440607206511324015610 0ustar uweuweBMy(w  ttSSv??Z/.C;))=+$!). "33JYZFGekj::S22I>>Y##6++@eetqqn{{OPp~~YZ88QJKkc`QQt00Gnk[\yv^^)55500%*"""""""""!!"""!""""""$#!!!!!!!&330***0""""""!!!!""""" !!!!!!!W)9%*%MM0 """""""!!""$ !!!? 5M*%0000"""!!""!!!""""""""""$ # !!!!! !E34%M%"""!!!!"!""""""$ !"!!!!!!!#!!! &3(( ) 'EX25OJ(% %%0!!4 +%*(L ))I2IO ((%%%%%%%% %!'%*%(P'L LLHH  %%%%%%%P!%%(((J )PP (*%%%%%%%$(! (P( L) ( (( %%%%%%%%%$*!!  0BBDo???7)         0      % 5    ! BeVDo@DA&)                        !"  BVVdF7;A+           Q         0   0!!" DFBVF?775         Q              0 'Q ! 0A<<<@577     ' '    0  PJJ11JPPJLJkii9JPP JJP PPPP  Q    !4 *(((%1% %%% !4** *%%%%%%"*  **%%%%%%%% "J)***%%%%%%%%%%%%(L"%(**%%%%%%%%*%%%%"Q "***%%% %%% %%%%1%% %%  """**%% %% %%%%%%%%%%%% % !""!!%% %%%%%%%  !4%%% %%%%%% " %%%%%%%% %% """%%%%%% %%! ""%%% %%%*%%%""N*%%%%%%%%%" %(M%%%%%%%%%%%%%%%%  !%%%%%%%%%%%%%%%%%!"!%%%%%%%%%%%%%  " %%%%%%%%%%%%%%%%   "#*%%%%%%%%$:$""  R%%%  %%%%%:" R% *( %% :$"R %%%% **%$:%%%%%0 """"4: !%%%%%%%%*%'L(%%%:b%%%%% """%%%%%%0 %* 'J%%:b%%"""%%%%%%%%  * (P %%$$%% %%%%""" %%%%%%%%%% **%%%% **%%""" % %%%*N%%%*% %%%* "" %%*%%%%%1%%%%% ** "" % %%%%%%% 11%%%%% *%%%J (*%% """  ""$% %%%%%%% %%%%% %%%%% %%( %% "" % %%%%% %%% 0%%%%%%%%%  %% *""5 %"$$%%%%%%%%%%% 0%%%%%%%%%%% %%% P% ""5 "$!%%%%%%%%%%%%%%%%%% %%%% (%% """ %%%%%%%%*%%%%%$%%%%% *%0% %%"" %%%%%%%%%*%%%%%%%%%%%*%% *0 '%"%%%%%**%%%%%%%%%%%%% *% % %"%%%%%%*%%%%%%%%% %%%*%% % L%""%%%%%%%%%%%% %%%%%% %% %%%*%%%%%  *%%%%%%%%% %%% %%%%%%%%%%%%% %0%%%% *%%!" %%%%%%%%% %%%%%%%%%%%%%% %%%%%%*% **%%% "  "%%%%%%%%*%%%%%% %%%%%%%%%% %%%%%%%%**%% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%* %**%% ! " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%*%% !! ! %%% %%%%%%%% %%%%%%%%%%%%%%%* !%%%%%%%%%%%%%%%%% % %% %%%%%%%%%% %%%%"%%%%%%%%%%%%%%%%%%0 %% %%%%%%%%%%%% L ""% %%%% %%%%%%%%%%% % %%%%%%%%% %%%  !""%%%%%%%%%%%%%%%% %%%*%%%%%%%%%%%%%0 %""""1%%%%%%%% %%%% %%%%%% %%% %%%%%%%%%%%%%%"1"%%%%%%%% %%%%%% % %%% L %% %%*%%%%%*%%%%%%%""%%%%%%%%%%%%%%%%%%%%*%%%% ' %%%% %%%%%%%%%%**%%**%%% %%%% """%%%% %%%%%%%%%%%%%%%%%%%%%'L' 1*%% %0%%%%%%*%%%*%*% %%%%"""%%%%% %%%%%%*%%%%%%%%%%%%% L''***%%%%%%0%%%%%%*%%**%%%%%% &%%% "!%%% %%%%%%%%%%%%%%*%%%%% LL'1%% %%%0%%%%%%%%%%*%%% +%%%%% %%% %%%%%%%%%%%%%%% ( %%%% %%%% %%%%%%%%%%**% &%%%%%"%%%%%%%%%%%%%%%%%% %%%* *%%0 %%%%%%%% %%%%%%%%%%% +%%%  "%%%%%%%%%%%%% %%%****%%  %%%%%%% %%%%%%%%%% 3% %""%%%%%%%%%%%%%%%%%%%%%**%% %%%%%%%%%%%* **%%%*%%%% &&% %  """%%%%%% %%%%%%%%%%% %%% %%%%%*%%%%*%%%%%%%%% &%   ""%%%%%%%%%%%%%%%%%%%%%%%%*%%%%%+% %  %""""%%%%%%%%%%%%%%%%%%%%%%%%%*%%%%%%%% 3% %%   %""%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%%%%%*%% %%% &%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1%%%%%% %%%"  &%""%%%0 % % %%%%%%*%%%%%%%%%%%I&%%%% &%%%"% %%%%0%%%0%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%4%% %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% % %&&%%%%%%%%  %%%%%%%%%%%%%*% %%%%%%%%%%%%%%%%%%%%%% %%4%%%%%%  % %%%%%%% % %%%0%%%**%%%% %%*%%%%*%%%*  L%4 %%%% %%%%%%%%%%%%%%%%%%%* %%%%%%% &%%%%%%%%%%%%% *%%% %*%%% %%%*%%%%%&&%%% %%%%%%%%%%%%%%%%% **%%%%%%%%%%*%%%**%%% %% &5%%%%4"""% %%%%%%%%%%%%%%%%%%**%%%%%%%%%%%%% %%%%%%%%%%%% % && %% %"""*%%%%%%%%%%% %%%%%%%%%%%%%* %%%%%%**%%%%%%%)& %"%%%%%%%%%%%%% %%%%* %%%%% %%%%%%%%**%%%% %* ) ") %%%%%%%%%%%  %%%%% %$%%%**%%%**%%%%%%%**%%  $" &%%%"%%%% %%% %%% %%%%*%% :%%%%*%**%***%%%* **%%%*%%  %%"""%%%%%%%%%%*%%%% %******%%%%%**%%%%% * **%%%%  %""%%%%%%%%%%*%%%%***%%%%% %%%%%%%%*%%%%%%%05%%$  %%%%%"%%%%%%%%%%%%%%%%%*%*%****%%%%%%%%%%%%%%  5%%$   %%%""%%*%%%%%%%%%%*%% %%%%*%%*%%%%%%%%%%%%%%*%%! %%% %%%%%%%%%*%%% %%%%**%*%%%%%%%%0%%%%%%%%% **%%  %%%"%%%%%%%%%%%%*%%   %% *%%%%%%%%%*%%%%%  ** &%% %%%%%%%%%%% %%  %%%% **%%%%%% %%%% %%%!)E%% "%%*1%%%%%%  %%%% %%% % %%%%%%%%%%%%%5 %%%)' %%%%%%%%N%%%% %%%%%% %%*%%*%%%%%%%%%%*%%%%%%"")%%%%%%%%%%%%)'%%%%%%%**%%*%%%%%**%%%%% %% %""  "%%%%%%%%%%%%%%%%%%X( %%%%%%%*%**%*%%*%%**%%%%%**  ""  "%%%% %%%%%%%%%%%i(1%% %%%*%%*%*%*%%*%%%%%%%*  "&  %%%%%%%%%%%%%%1 %%%%%%%%%%***%%%*%%**%%%%%  "&3 %"""%%%%%%%%%%%%%%%%%%%%%% %%%%*%%*%%% ",+& %""%%%%%%%%%%%%%%%%%%%%%%%%*%%%%**%*%*%% ++&&)%%%%% %%%%%%%%%%%%%%%%%%*%%%%%*%%%%*%% *"&&)% % %%%%%%%%0%%%%%%%%%%%%%%*%%%%*%%*%%%%**%%%%%  %!&&& ""% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%*%%%%%%%%%%*%%% &  %%%%%%1%% %%%%%%%%%%%%1%*%%%%%%%%%%*%%%%%%%%%%%%%% )& %"%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% % ) & %""%1%%%%%%%%%%%%%%%%%%%%%*%%%%%%%%%%%%%%%%%%%%    &&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%%*%%% &&++% *%%%%%% %%%%%%%%% %%%%%%%%%%%%%%%%%%%%*%%%%%%% +&+++% %%%%%%%%%%%%%%%%%%%%%*%%%%%%%%%%%%%%%%%% %*%,-+++%"%%%*%*%%%%%%%%%%%%%%%%%%%%%%*%%%%%%**%0"+++&+%%%%% %%%%%%%%%%%%%%%%%%%% %%*%%%%%%%%%%%%%%%%%*% "++-,,%% %%%*% %%%%%%%% %%*%%%%%%%%%%%%%%%%%%*%%%%%%%%%%*%%%%%%%L,+,++%%%%%%% %%%%%%%*%%%*%%%%%%%%%%%%%%%%%%%*% %%% %%%%%%% "++,++*%%%%% %%%%%%*%% %%%%%%%%%%%%%%%%%%%%%*%%%%%%%% "&,++%*%%%%%%%%%**%%%%%%%%%%%%%%%%%%%%%%%%** %"&,&5*%*%%%%%%*%% %%%%%%%%%%%%%%%%%%%**%%%%%*%  %++&&&*%%%%%%%%**%**%%%%1%%*%%%%%%%%%0%%%%%% %%%%%*%%  %""""+++,&%%%%%%%0%%%%*%%%%%%%%%%%%%%%0%%%%%%%%%***%%%%%%5 %""++++&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*%%%%%****%%% %%%%% %++++)%%%%%%% %%% %%%%%% %%%%%%%%%%%%%%%1%**%%%% % %% %"++5&%%%%%%%%%%%%%'%%%%%%%% %%%%%%%%%%%%%%%%%%*%%**%%%%%*%% % %%R&&%%%"%%%%%%%%%%%%%%%%%*%%%%%%%%% %%%%% %%%%%%%%%%%*** *%%%%*%%5  %&3%%%"%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %*%%%%%%%*%%%%%%%%%%%%%%%%**% %%%%**%%%%%%55  %&&3%%%%"""""%%%%%%%%%%%%%%%%% %%%%%%%%% %%%%*%*%%%%%%%%%%%%%%%*%%%%%%%%%%%%%%%%5 %&&%%%"""%%%%%%%%%%%%%%%%% %%%%%%%1*%%**%*%%%%%%%%%%%%%%*%%*%%%%***%%%%*  %&) %"""%%% %%%%% %%%  %%%%%*%%%%%*%%1%%%%%%%%%%1%%%%%**%%%%*%00 & % """ %%*%%%%%%%% %%%%%%*%%%%%%%%%%%%%%%1*%%%%%%%****%%%% 6  %"! " % *%%*%%% %%%%%%%%%%%%%%**%%%%%%%%%%%%%%1%*%%%%%%%*****%*%%%%  3 %!"% 1%%%%%%%%%%%% %%%%%*%** %%%% %%%*%%%%%%%%%*%%%%%*%%****%* %%%% %##&%%%%%%%%%*%%%%%%%%%%*%****%%%%%%%%%%%%%%%%*%%%%*%%**%** %% ###&3%%%%%%%*%%%%%%%%%%%%%%%%%%%*%**%%%%%%%%%%%%%%*%%%%%*%%%%%%***%*%%%%%  ::3)%%% %%%% %%%%%%% %%%%**%%* %%%%%%%%%%%%* %**%%%%%%%****%%% #:) %%% %%%% %%%%%%%%%%***%%*%%%%%%%%%%%%*%%%%%**%*%%%% :' %"%%%%%%%%%%%%%%%%%%%%%%%"% %%%%%%% %%%** %%****(*%%%% #  %""%**%%%%%%%%%%%%%%%%%%%*%%%%%%%%%%%%%%% *%%*****%%!# %%%%%"%%%%%%%%%%%%%%%%%*%%%%%% %%%%%%%%**%%%%%% %%%% %**%*%%* %*%!#  %%%%%%%%%%%%%%%%%%%%%%% %%%% %%%**%%%% %%N%**%%%%% !# %%%%%*%%% %%%%%%%%%%%%%%% %% %%*%%1%%% **%%%%%   %%%%%%%%%%*%% %%%%%%%%%%%%%%%** %%*%%%*(%% " %%%%"%%*%*%%%%% %%%%%%%%% %%% %%%%%%%% %%%%% **** ***%*  %%* %%*% %%%%"%%*%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% %%%* %** *%%%*%*%** %%    %%*   %%%%%%%%%%%%%%%%%%%%%%%%%*%%%%%%%%% %% %%%** ******* %%* %   %%%%  %%%%*%%%%%%%%%%%%%%%%*%%%%%%%%%% %*****%1%** %%%    %%%% %%  % %*%%%%%%%%%%%%%%%%%%%%%%%%%%%%****  %%%** *     %**% %%  % %%%%%%%% %%% %%%%%%%%% %%% %%%% %%%**% %%*1 %   ' %%%**%%%%% %%% ""  %%*%%%%%% %%%%%% %%%%*%%%%%% % %%% %*%%%% *%% 1 %%%% %   N%%*%%%*%%  %%%  %% *%%%%%%%%%%%%%% %%%%%%%%%***%%%%%%%*%% %  %%   %%% %%%%* *%%% &  %%%%*%%*%%%%%%%%%%%%%%%%%%%%%%%%%**%%%%%%%  %% % %%  *%%%%%%% 5!) %%%%4**%*%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% % %  %*1%%%**%   *%*%%*%%*0 EE+%"! %%%**%%%%*%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%** %*%%%%*%%%%   *  %%% %%%%*%%%%%%% %%%O&I,-%0"" %%%***%%%%%%%%%%%%%%%%%%*%%%%0%%%%* %%% **%  %*%%  % %%  %%%%%*%%%%%%O)+7 %%" %%%%*%%%%%%%%%%%%%%%%%%%%%%%**%%1 %%%% %   %% %%%*%%%%  5*%%!  %%%%**%% %%%%*%%%%%%%%%%%% %%%%%%%%%%%*%%%% %%%*** %  %  %**%%%%%%%%  )5 %%%%%%%**%%%%%%%%%%%%%%% %%%%%%%%%%*%%* % 0%     $%%*%%%%%%*0 ))% 5&**%%%% %%%%%%%%%%%%%%%%%0%%%*%  % 0% %1 *%%0 * *%%%%%%%%%%*%0  O)% ")*%%% 1%%%%%%%%%%%%%%%% %%%  %%%%0 %%* %  0 %  %  %* *"%%%%%%% %%%  OE%% """"1*%%%%*%%%%*%%%%%%%%% %%%%%% %%%%% % 0 %1 *   %%%1 $%%%% %%%%%%%) O% " 1*%%%%%%%%%%%%%%* *%%%%%%%% %%%%%%%%%*%% %    11%%%% %%%% **%%%%%%% *) )% & *%*606%%%%%%%%%%*%%%*%0%%%*%%%%% %%*%%%%  0 %  1%%%%%%%%%  **%%%%%%%  " &+*%* (M%%%%%'%%%*%%***%%%%*%%%%% %%%%%**%%%%  %%  1%1**%%%%%*%%*%% I """ 5+7%%*%%%*%*N1%%* * %%*%%%%%%%%%%%%%*%% %%%%%% %% % %    %%%%***%)  %"- 1%%%%%%%%*%%%%*% %%%% %%%*% %% %1  % %% ****O))) """38 %%%%%%%% *%% %* %%%  %%%*% %%  %% %*%* I) "" k2%%%%%%%%%%** %%%*%%%%  %% %%****%%%%%%%1%   %%%% )&) " %%%%%%%%%%* *%%%*% *%%%%% %%%%%* *1%%% %%% %%%%%%* O3O  (%%%%%%%%%%%%%%* *%%* *%%%%%%%%%% 11%%%%%%**%%% %%% %%$%%% %%O) " %%**%%%%%%% %**%%%%%%%%%%%% * *%*%%*%% %%%**01 %% *$%% %  O) %% %%%**%%%%%%%*%%*%%%%%%%%%%%%%%%** *%*%% % 1 **%%*%0%%%*   % )%! %%%%%%%%%%%****%%%%*%%%%%%%%%%%%%% %%*% %%% %*%%*%%%*%  % ) ) % " %%%%%%%%****%%%*%%%%  %%%%%%%%%%*%% %%*% *%% % %%% %%(*%%%"%0%%0 )  % "" %%%%%%%%%%%***%*%1%%%%%%%%%%%%%%%%*%**%%%%* %%*1%%%%(*%%$%0%%%%&O % " %%""%%%%%*%%%%%*%*% 1%%%%%%%%%%%%%%%%*%%%*% *1 %%%* (*%% %%% O%" %%$%%%%%%%% %% *1%*%%%%%%%% %%**% %* %*%  *%% :*%%%%" %%%%%%%% (*%%%%%%% %%%% *%%* (  %%%%  * %*$:$(%%%  %%%%*%%%*%%    %%%%%%%%%%%%%% % %** *  N *  %%  % %%*%* *%))&5% %  %%!%%%%%%%%*%%%  %%%%%%%%%%%%%* % ***    *%% %%%%% %%  * *%))&+% 0% %%%%%%%%%%%*%%*%%%* *    %%%%%%%%%%%%% %%%**** * **%% ** %% %%% %% % %*** %% ))&+ 04&%%%"%%%%%%%%%%%%%%%%*  %%%% %%%%%%%%%%%%%%  %***%  % *%%%%%% * *%%)3&&&(%%%*%%%%%%%*% *N  %%% %%%%%%*%%%%%* %* %%11*     %%%%%%  0 I)3&+**4 %%%%*%%%%%%* ( %  *%%% %%% %%%*%%%%%% %%% *%%** 1      %%%%   %E))I, * %%%%%6%*%%%%%% *%*   * *%%%%%%% %%%%%%%%%%%%%  % % %*%    % %%%%* %  % )+* %%%**%%**% *%%  L %%%%%%%%%%%%%%%%% %*0  *%*%  %*    +  &%%***%% *%%%*%1%  *%*%%%% %%%%*%%* %  *** (* *%     %  % E5  '&&&****%)kk%%%% %   N**%%%%%%%%%%%%%%  ** *  % %*  %* *     %% % E* 4&3&&&**%*8'%%%% * %%%%%%%%%%%%%%%%%%  ** *(*1*%%    ( %% %  %% "&&&,+%6""6""666""6666666666664"44"%%0%"46+&&,+64""66 6664"%%%4&&&+&644666"6666Q6444"44""44"""!*%%&&+66"666664 44"""44"**44&& "!66""4"66666640 006*%%&&%%%%%*%%*  %% *%%%**%%%%%%%%%%%%*  * *   % *%'NNNN%* 111N%%%%%%%%  %%%%***1%4 3&&%%%*%%%*%*  %%%%*%%%%%%%%%%%%%%%%%* **   1* 1%*%N % %N%%%%%%%%%%%%%%**%%44 &%% * *%%**   %%%%% %%%%%%%%%%%*%%%% *  %%*%%   N% % 1   %**%%%%*%%% %%%%%%%%4  3%% *%*%** LL%*%**%%%%%%%%*%%%%%%%%  %%%%%%%%%  N1*  **%%%%%%%%%%%%%%%%%%%  %%%%%%%*%%*%*%**%%  'LkLkL' %%%%%**%%%%%%%%%%%%%* % %%%%%%kN *% *%%%%%%%%%% % %% %%%%%%%%*%**%%% -C-/@;V;;<'P (%** N kP(P**%%%%%* %*%%%%%**%%%* %%%%1%%%%%%%%%(5 $$:s $ 811J H%"%* N '( (*%%% %%% %%%%%%%%*%*%%*% %%15+ $!:: '**(JH %***% ('%%%  %%% P%%%****%%%**%*%1%%%%% 0 %57+ ### %(P(%%*%*N( %*  (*%%%%% (%*%%**%%%%*% %%%** 0 889"##  P(**%% ( (**%%%%% *%*%**%% %%%%%% 99$ %PLPO % *%% P )  '' *%% P%*%%%***%%% *%%   R (LO P P%  % 'HkP ''  **%%%%*%%%%%%1%*% !R:*'OPPL **%% %% () 'N  (***%%*%%%%%%%%% !#1PL L(*%%%% %%%'(%''N 1%%   %%%%%%% !%1( P ) P%%%***** %%% (''k  (%%*% %***%*%%%%%% ( )K)(P(%%%%**%%%* L)kk *% (%%%%***% *%%%%%%%%%%LL!*1J HKE)O P***%%%*****%1(  'N **% *%%%%%%%%%%*%%*%%%%%%*%%%%!! ( HKK) (*%*%%%****((J(1 * 1 *%% %* %%%%*%%%%%$!!% *(J)HHKK ((P%%%** *%  ((((( ( 1*%%% %*%%%%%%%*%%%%   %*1( LKXX)  (%%**1 * ((*   (1*% %%%*%%%%%*%**%%%%% %%%%%**JHYXH J*%%*(*** 1*1 ((**  *%%%%** %%%%%%%% 5%%%%%%%%1' (((1 %**( **%** (**  * %%*%%( %%*%%%%#%%%%%%%% %%( O(1(((%%%##**1( %** L (* %** * % %%  %%%%%*%%$#!L5*%%%**%% %1NPP(*%%% **1(1*%%%  ** %%%* *  %%%%%%%*%#L **%*%*%*((1%Q%Q %*%%% * * % %*%%**  %%%%%%%% L5%*%**%%%%%**%QQQQQ%*%*1***   *%%%*%%%%*%  %%*%%%   ***%%%% %**%QQQ%4%%**1*(****%%%%%%%* *% *%%%%" ! 5**%%%% % QQ%Q1"%%**(* *%%%%%* * **%  %%%%%% ! 5%%%% %***%** *%*%%%* **% %*%%%%%% 5%Q %4**%*%%** *%%%%%% **%1%%*%%%%% %    %%(%**(%1*%****%% **%%%%%%%%%%   0 %****%%*%***%%** %% % %%%%%%%%%%%  !0** %%%*%****%* %%% *%%%%*%%% !%%%%**%**%%%*% *%% %%%%%*% % !!!QQ %%%**%***%%%% 1%%%% %%%%%%  !!! !!Q%%***%*(1*%%%%%%%%%%  %%%%%*%%*% !  Q%0***%(1%%%%%%%  %%%%%%%%%%!QQ%*%*( %%%%*   %%%%%%%%%%%*%0 "!%%* %%%%*  %%%%%%%%%% **( %%%%%%* %%%%%% %"!"""%%***%* ('**%%* %%%%%%%% %%""""%****%%11LjN **%%%%1%  %%% %%""!"""%*%%**( I %% %%%% %% "" !""%%*%(L*%% %%%%% " ""% %1(( *%%%%%%%  %"" $""%%%%*(****%%%% Q %%" !""%%%%%%%*******%%%%  %%*%% %%%%%%**% %%%%  ** *% %% %%%%% % % %%%%%0%""*%   1*% %%%% %%$% %% !  %%%%% $:M%%- "! %%%% :6%8!  %% %%%!$$ $%! %%%%%%%"$: * %%%%%%%%"$(P%!  %%%%%%%%"$Q*(P*%% "" 0%%%%%%%"*(* %" %%"$*  ""  0%%""" *(   """" %"""1(%  0""""   %%"" ((%*%%) "  %%%%%%"""%%%%%%%) %"  %%%%%%""""% %%%%%%&&%%%%"""  %%"""*"(%%%%%%%%&&%%%%"""  %%""" "*(P%%%%%%&&%%%%%""  %"""J%%%%%&3%%%%"  %%%""""((%%%%%%&3%%%%""  %%"!( (%%%%%%1%%%55&%%%""" "%* (%%%%%%%%%% &%%% %%%"" %"" (%%%%%%%%2% %%%%00""  %*(%%%%%%&,&+5*%%%%%%%"" 1%% % (*%%%%%1,,+C+%*%%%%%%%"" (Q  1*%% %%%%1,,,+,%%%%%%%%%%"" " %%%%%%%%% %%1,,,,,%%%%%%%%% ""%%* *%%%%%%%% %%1+8&,+%%%%%%%%00"(QQQ%%% *%%%%% %%%&83,,%%%%0%"  %%Q%%Q** % %%%%%%%%%%%%%%%&8+881%%%%  % % %%Q0% % %%%%%%%%%%%%%%%%%%%%1&3&&&1%%%%%0 ! QQQ%***%%%%%% %%%%% %%%%%%%11&&3,+%%%%0""  !! MQQ%* ***%%%%%%%%%%%  %%*11&,3,,%%1%%"  %! %Q% %%*%%%%%%%%%%%% %%% %%%1&C&+,% %%%%""+ ! *%% %%%*%%%% %%% %%%00%%&,&&& %%% "" 8 !%% %%* %%%%%% %% %% %%%%% %&&&&&% %%%%%%%% """ %% %* %%%% %%%%% %%%%%%% %%1,&&++%%%%%%%%%%" $! %%%%** %%% %% %%%%% %%%%+&++&%%%%%%%%" ! %(%%%**%%*%%%%%%%%%%%%+&&,&%%*%%%""  %*  *%%%% %%%%%%%%&&+,,% "" !0*% %%%%%% %%%%%%%%%%%%%%%&&+,+%%%%""" :%%% %%%%%%%%%%%%%%%%&/+++ %%%%%" b!%%%"  %%%%%%%%%%%%%%%%%%%%+V++%%***%%*%%" 6%:!%%% %%%%%%%%%%%%*%%5< /5%%*%%*%" 6%!%%%   %%%%%%%%%%%% @+%**%%% !%%%   %%%%%%%%%%%% 8,%%***%%%%%%%%%  %%%%%%%%%%% +%%****%%*%% %%*( %%%%%%%%%*%**%% 5%****** *% %%%)J%%% %%%%%% %%%*%%%% %*%%* %%%% %%*)1% % %%%%%%%%%% **** % %%%%1%%%%%%%%* &%*** * %%" %*1(%% %%%%% %%%% * %%"%%%%%%% ((%%  %%%% %%%%%%%%* %% % %%%%%*((*%   %%%%%%%%* %%%%%% *((%   %%%*%% 0 (  %%%%%%! %!% )J  %%%$ ) %%  %%%%"01   %%%% * ) %* (%  $$ *(   "$$   %( %% $  !N % (* :$!!% *( *J(%% % %$: %J( %% % !:%"(( '(%%* *%# %1Pj( )%*% # %*H )E( %%%%%R ""!!"4%0 !"!!!!"""!"""""""  %""4( """!!!""""""""""""!  %*!!""0'J1""""!!!!!!""""""""""""! %! !!""6i'6""""""!!!!""""""""""!!$ ! "0iO """"""""""!"""""""""""""""!$ %('ZG23S%%%%%%%% %0  %% %0%('L2h.Y3%1%%%%%%%%%  %%%!  %*( Tff?K % %%%%% %%%%% %%  ! %* Kh.g+3%%%%%%%%%%%%% %%%%% 0%%%* KhggZK %%%%%%%% %%%%%%%%%%%%  %!!%*I..GZK %%%%%%%%%%%%%%%%%%  %%%%!!  *()2?h.KP%%%%%%%%%%%%%%%%%%%*%%%%%%%*%!  LKZGhK(%%%%%%%%%%%%%*%%%%%%%%%%% %%% *% %*(Hg.fH( %%%%%%% %%%%%%%%%%%%%%%% %%%% %% %(P)Z.fY( *%%%%%%%%%%%%%%*%%*%%%%% 0%%%%    ;>;d^]a]e-5    &3&8+3&&I&&&&3 &)&&&3&+5I)I  %%%   L    5?>FV_]ac_-&     L 8&&&33&&&&&&&& I))&&I3&5 5I  *%%%%1Q      >@V_]a]U/&    &&3)&&&&&&&&&& &))&+&3++& &&&&& %%% *  L   77U`]]]B/5   &&&&&&&,&& &)I&&&&8&& &&&*%%% *  LLLL  5/\]^_^V>  55&& 3&&&&&+&& &&I&&&&3&&&&&)+%%%!%%**([Z2++KP%% "%%*%%%%%%%%%%%%%%%%%%%%%) % *HKK++5*%%""%%%%%%%%%%%%%%%%%%%  % %( KKZ?K(%%%%%% %%%%%%%%%%%%%%%%) % %P3K5Z2(*% % *%%%%%%%%% %%%%)  !:$$"% %HY2ZHK(%%%%%%**%%%%%%%%%%%%%%% )!!$$ 1%*(LK22EK%%%%%**%%%% %%% *% %%%%% %$%**( IIK) %"%%%%%%%% % !!%%*P )KK)(%%%**%%%%%%%%% % %%! * %%*P))KK)%%*%%%*%%%%%0% %&& %!"% ('XK)L*%%  %*%*%%%%%%%0% %%&& % %%(( KK)(*%%%%%%%*%%%%%%%&& %%!!! !"%( ))(*%% %%%%*%%%%%%%%&&   !!" %%%%( )EHP% %%*%%%%*%%%% %&& %%%  !4%00%( ))LK % %%% *%****%%%%%%%%%&&%% %%% %%% %%%*(L) J%%%%% %****%*111%%%%%%1&&&%%  %%%%!"% %% (J) '( %%%* %%&&&%%%%%%%%%%6%% % %* )'L  %%%%%%* %%%&+%%%%%%%%%%""0 %%%*%%%** ) )1 %%%%%*% %%&%%%%%%%%%!! ""6% %  %%%%%%%%%*))))%%%%%***%%%%%&&% %%% %%%%!!!%""%%%  %%%%%%%*((LHLL0%%%%%%%%%%% %%%%%*%3&&%%%%%%%%%%%%!!! ""%%%%%%%%%%%%%%%%* ( H) %%%%%%* *%%%%%)&&%%%%%%%%%%%%%%%!!!! "" %%%%%*%%%%%%( H)H %%%%%%%*%%*%%%%%%%%%%!!!  """ %% %%*%%%%%%*HEK)H%%%%%*%**%%%=&*%%%%%%%%!!!! """%%%%%%%%*P)K5E)'%%%*%%%%0%**%%8&&&0*%%%%%%%%!!!! $$%%"""(%%*%%%%%%%*JH)I)%%%%%%%%%*% *%*%% %&&%%%%%%%%!  %%"""""0%%* !!!""446!!!!!"%%%%%%"!!  %%"" """0 !!!!!!"""""4"64!!""%%%%%%%%""! %" !R"""0!!!"!!""""%%%%%%"  ":""0"""!!"4%%%%%% %%%%"" """"""1""""""""""4"%%%%%%%%%%"" %%*%%%%%%%%%%%%%%%% ('E)(%%%%%%** %*%1%%%%%%% %%%%%""" %%%%%%*%*%%%%%%%%%%%% EL(% %*%%*%%%%  **%%%%0%%% %%%%%%" %%%%%%**%%%%%%%%%%%% %1(( HP %%**%%% %%%%%%%%%%%" E  0% 1%%%%%*%%%%%%%%%%%%%%%*1**H %%**%% *%%% %%*%%%%1 %%%  ) %%%%%%%%%%%%%%%%%%%%%*** %** *%%**%%%%%%%%%     O &&&& LL++++&+++++&5  &  &557A@FW.     LLL 5+C+3,++C-++&5 &55 5 &&&&&&&&UV&&&&&&&&)%%%        &&&))  5+++&+,++&5+55   +5+87@VG8     LL 5&++&++++,+5&& &55 5&3&&&&&+&)&&3&&&%%%0      &&&)  9+5+&+,++&+5     +5577@U@8  LLL++&,5&&,,++++55 &3&&&,+))&&&+&&&%%%%4         &&8 )+ 52+&++++55&    +5577@U<)     L9  +&+&5+ &,,+5++  & &&&&&)& &3&&%%4   %       &&&  & &++&&5+55)555    &+5.>FU<)      9%&&55++,-5+++5   +&&,&5&&&&)&%   "%%% %%%%***%%***%%%%%%*  ' %%* %%****%%%%%%%**%%%&%%  %%  %%%%%%%**%%%%%% % )' %%%*%* %%*****%%%%%% &&%%  "0%% 1*%*%%*%%* 'S)K' %%%%***** %**%*% *%%***%%%%%%&&%%"  $  %%%%*%*%%%*S33T %*%%%***%%**1  %%*%%%% )%   :  %% %%%%%%%*%%%%%%%* KK %%%%%%%%% **%%% %** **%%*E% %" : %%%%%%%%%%%%%%* )))%0 %%%*%%***%%% **%*%%%& E% " $! %%% %%%**%%%%%* ''L'%% %%%*%%**% **%*%0%%*%%%%%%%%"  ,!! %%%%%%%%%%%*%%%*((J(% %%*% **%%*%%%%%% %%%E &%%%  +%! % %%%%%%%%%%%%%%%%N(**( 1  * %*****%  %%%%%%%%)  %%%%%4 )  %""% %%% %%%%%% ( (% %*%  *****% 1 (*%%%*%%%%  %%% ) E%%%"""%%%%**%%%%%% %%%% ((%% % (  **(   1 %%%%%%%%% %%0")  %%"%%1 %*%%%%%0%%%%%%0* (  %   %1%1 %*%%%%%%  %Q"O I%%4 *%*%*%%%%%%%%%%1(* %*%   ***%*% %%% %%   E%%%% %%%*%*%%%%*%%%%%%%% %***%%%%(**** *%%%% )01 )""%%%%%*%%%%%%%%%%%%% % (* %%*( * ** %%* %" "  %%%%%%%%%%%%%%  **% %%*** ***%%%% "&""0% %%%%%%%%%%%%%%%%% %****% %% % ) ) %%"+&%%""""% %%%%%% %%%%%%%%%%% ****%%**%%%%%  %%"5%" %%%%%%%%%%%%%%%%* *%%%%****%%%%%*%*%%) %"%%%""0 %%%%%% %%%%% %**((( %*% %**%***%**%%%%%%%)%%"! &"% %%%%%  $! %%( (( % *%%*%%  %**%%*%% ") ) %%%%%$%((P(*%**%%*****%( *%%**%%  %! ) ) % %% %%%:(P (P****% ******%*%%***%%)  !   %% %%%%1 ( (%*%%%***%%%%*%**%%%%**%%%%%  !) " %%%%% *(( (%**%%%*******%% ****%%%%%%%   "%%(P (1 %%%%********%*%%%%%%%%    %( (Q %%%%** 1***** %*%*%%%%%   %%**(P O( %%%%*****% * **%%%   ! %%%%*%*PO L %%%%%*%% (  *%% !  3#%%%*L)OJ   %%%%%%% (*%%  !  %%%"%*PH))L(*%%%%%* ( !   %%%*( )H) (*%%***%% )  "%%*(LL)) %% **%%%%) %%%% (JLLLJ1 *%%%%& %"%% *PPJ(%%% %+5& %%%  *J%*%%"%  "+5,&&% %%%% %(( %%  +55,&%%%"%%%% J1%* :39955%%%%""%%%%%( J* %% L #555 %"J( %  5#+8 %%%%(%Q%%L55% %!% %%%0%%+5 % "%%%1%*% %%!55 %%"%%%% ( 0 %%%*%%%0 !+5%%%%%(J% %%%**%%075+  %%%   *((*% %%*%#-5, %0% %%((*%%%%*%%+5%"4*1% %%%%*% &5%*64% " %%%%% %%&%%%%1%%*% &  %%*%% %%%%%%%%% $ &  % *%%% (1*%%%%%$# &3  % *%%%%% ( (1%%%$"3 %%4%%%% (P %%$&+&2 %%*%%%*(%%% $&++-+%%"*%%%%$ **(1% $,++--!$*%"  %%%01%%% %$+++-/0!!**1%*%% % %%%%1&++,.%"! ****%*M%1O *% %%)Q&+++-"%***%**% (% O %%  L&++,"*%%%%%** *(%( O(%%L &&,""%%%%%%**% "%( O(%%   +&+ %**%%% % PPO(%*" ")&& %%*%%%%%  O(%  %""&&%(%%%%%! ( )HE *  "&%%'%%%%( O)K))*   %%%" ""%%%%()O )))  %"""   %%%%%%* KO ))E "  %%%%%%*  )))) L % %%(') E)IE %L ! !!$!!!!"1 ** %!!!# ! ! !!!!!!6%N *!  ## !!!!!!!!1% *!!##! !!!!$"!"# !!!!!!!!!! % *!!##   $$ $"  !!!"!!"0JM*M!##!$#$$#"%%%% J)K22 L % %%%%% (EIIE   %%*%%%%% 1)+H  %%*%%%%Q"  (* %%%% %% % (( %%%%%%%% %%         3DF??G??+    % %%  % &  & 5&+&          )  +ADB?ECD58      %   && & 5+++        /7@BACC55   %6     &, & &+&5&+++             5@>@?A7>??5   %% %     &L 3 +&5&++&+,       ,  257;<=>/77?8 3       +5+ &&+&&& +&+&,+++++lmarbles-1.0.7.orig/src/gfx/marbles.bmp0000600000175000017500000024206207441476746016162 0ustar uweuweBM2D2(@@ ...JJJRRRNNN666" >>>ZZZ222jjjbbb^^^"&*rrrzzz  %) 6zY*gI ..BBYRRfN``2ypv"!zf:oZ&bzJ *j..BBRR``62uu26jjZZ(*zzNNAHsv .BbbRd"22.22{' &6FBVn>Rf6FZ"0=:j)@*:N4]07oo^]#*BJzz jj.NNBR`22r+JzZg 3..BBRR``ww9:ooZZbbzzFJvz jj. BR`.6w.2:J_:Nb.>NJfJ^vNjNrRzV^jt 2*N#^26&*zJ6>*"nR>gVB^FrZ7BzV^ZQ*f"Jrl z).BR`Z}  # 4} ~~# ~4~ 4}4#}# 4  *~ 4 # *~ވވ눈~~~Jވ 눈ވވ누ބ~󈄄ވ눈ވ눈ބ눈}눈ވ섄ބ섄J넄섄}ބ섄ވވ섄Jބ섄J󈄄섄섄}ވ섄J섄섈섄}݈섄݆섄섄섈섈݄섄ވJA݆숈섄#섄J섄섄섈4섈섄숈4섄섈섈섄섄ވ섄섈섄섄J#섄 섈섄J섈 4섄섄섈섄섈섈섈섈섈숈섄섈J섄섄~섈섄섈 섄#섄 섈#섈#섈 섈섈섈섈݆섈섈섈섈}숈섈섈~숈섈섈섄섈섈섈섈섈섈섈}섈섈숈섈섈섄섄|섄섈섄~숈}숈섈|||||ۈ|||섄݆|섈|숈||섈ۄ섈||v||숈4||섈||숈#||| ||섈|||섈#|||섈 섈 |||||섈||||섈||#|섈||v섈|v|숈||섄||||숈|||섈|||섄|섈|숈||섈x|섈||섄|섈섈섈|섈}#숈A섈섈숈섈섈섄섈섈섈섈섈섄숈섈섈섈섄섈섈섄섄#########ۈ݄4*+<<+**+<<+**4<+4**+<<4*#*+<++*#4+<****<<++44+<<+*#*+<$$<+$<<<+$<<+*<<<<<<<#<<<<<**<<+<+4<<<$$<<<***+#<<<+<<<<<<<+<<<<$<<<<<<<#<<+$*<<<<<*<4<$$<<<**<<<<#$$$<$$$$<$+<<*<+4$$.$$<<<<<<<*<<+<$$..$$$<<*<<<<+$$<$$$$$$<<<<+<<$$$$$$$$$<<<<+*+$<$$$$$$$*<<<<<+$$$$$$$$$$<*++<+4$$$$$$<<<<<<<<+*+.))...$....$<<<<<<**$.))).$$$$<<<<<<<**<$$..)))..$<<*<<<+**$).$......<$****+4+$.$.).$$$./+<<<*+*+.....$.).$$<<$<+<<*+.)..)..$$$$$$**<<+**.))).)...<<<<<<+*<4.)))))..$8.$<<<**..)))..$.<<<+<<*$))).$$<<<<*<*!$..)))..$<<+<<*!$)))))......<+<<*4!.)))).$$$+<<<+*$))))..)).$<+*<<+$))))...<$$<+<+*)))%))..$$<<<<+.))../<<<<<+$%..$<<<+<+.))).$$<*<<+)))..../<<<<+.).$<4+<<<+.%)).$<++*<+))%..../<<*<4...$<<<+*%).$<<<<<4$%..$<*<<*!+%)).<<<++*.%%%...$<<<+*$).$<<<<$4$%))./<*+<*)..$<<<***%)).$$<<<<4%).<<<+<#../+<*<4%..$<<<<4%))..$<<<<4.$<<<+<%).$<<*<4%%)...<<<+)).$<<++..<<<++%..<<<++).$++<+))..$<+<+..<*<++).$<*+<..$<<<+*%)./+<<#*%..<<<<4)8$<<<*)./+<<*%)..$<<<#*%..<<<<4%)..$<<**)..<<<<.$<<++)..<<+<).$<+<<)$<<+<)..<<++.$<++<..<<<+).$<<<<).$<<+%).$<<+%).$<+<).$<<<)).4+<<%).<<<<).<<*<%$$*<++).<+<4*)..$<<#*).<+<#*%).<<++..$<<#*).<<<<4).$<+<4).<++.%.<<<*.).$<<*.).<<+*.).$<<*.)..<<<*...<*+#.).<+**.).$$+*:).<++:::..<<+::)).<++::.).<<*).<<**::).$<+*)$<<*:).$<+::%).$<+:8.<<<:::.<<<:::::)..$<<::%).$<+<:%)$<+*:::::%))<++:::8.$<??C.$<4:::C???C:)$<*:CCC:..$<*C?=::).<*#::?CCC.$+4CCCCCC:).<4:??C::).<*CCC..$*+?>>>?C8$<#+C>?CC:8.<*:??C)$$+#*:C=??.$<+:CC?C:)$<#+:C?>?CC)$<4+C>>?::).<+:::::CC8.$<:::?>>>?C)$+:CCCCC=C:)))$$:C?>?:::).<+::C>?CC.$<=CC=>C::).$>>>CC:).$:?>>C::)).$:CCCC::.$+::CC>?C:)$<:=?CC.$.<:???C:.$*:CCCC,.+C??CCCC:::8$<C>>?C8.<::::C>C%).$<:=C?C.$++:::CCCC:).4+:C=C:::::.$$4::C=C.$*:::CC:).$C=C::).4+:C>?C:).+C::CCC:).$+::CC?C::).:::::))..::C:).+:::8$::::)..CC::)$:C=:..$::::.<::CCCC:.$*:::)).*:).4:::::::)4:::::)):::).*:::::..*:C:::).4::CC).::)*:::::*:)*::*:::).<:::::)*::)*::::)*:).).:$.$:$:$::)....$....$$.)<<$<$)<*4*###*#*4*#*#*#+***4***+*+#****#<*+.*+..*+.*#.*+*+.$*+.* ~~A A~ ~A  AA#A@AAAAAAA}AAAAAAAA~@~AAAAAA#AA@AAAAA@AAAAAAAAAAAAAAAAAAA ~A~AAAAA AAAAAAAA }}}A}}}@AAA~}}AAAAAAAA~ A}}xx}}AAAAAA~}@}A}}}}AAAA@}}}}AA}AAA~}A}}}A}}AAAAA}}}}}}}AAAA}}}}}}AAAAAAAAAxgx}xxxx}AAAAAxx}}}@AAAAA}}}xxxx}AAAAA}x}xxxxxAAA}x}xx}}xJAAAxxxx}x}}AAAAxxxx}}}}AAAxxxxAAAA~}xx}xAAA}xxx}x}@AAAA}x}}~@AAAxxxx}AAAA݃xxxxxx~A}ރx}}AAAA}axxx}AAA}xxxA}}AAxчaxx}}AAAAxчjxx}AAA}x}AAAAxчx}~AAAxччxxxxAAAxчx}AJAAAgчx~~AxxxxxJAA}ччxxAAA@ччχjx}AAAAA ςччxx}@A~чςу@AA}jςxx}AAAAччiчx}AAAAAтςjxOAAA@jjxx}AA тчтςчхx}}AAAAчςjςxAAAAAςijxxAAA ттiЁjxx}AAAAтjςуxAAAA ςςςχx}A@AAAЂЂ}AAA#тςςjxxxAAAЁЂчx}AA~~тЁЂчxx@AтЁӀςχxxAA~~jЁЁЇx}~AjςρЂxxAA~тЀЂχxxA~ςЁςx}Ajςρςxx}AAςӀЁЂx AςӀπЂчxxAAA тӀςχx}AAтχx~AAςЁӀЂxx}AA ЁЂxxAAAA ρҀӀЂxx}AтӁςxAAAAтӀxAAтЀӀӀςxxA~AтЀӀӀςx}~A~ςӀӀ}A~AЁӀӀЂxxAA~тӀӀӀςxAA~AӀxxAAӀӀӀςчx}AAӀЇx}AA~ςӀӀςx}AA~ЀӀςx}AЀӀχx}A~ςӀЂxJ~AЁӀчxAAAӀӁxAAЀӀӀς}}A~ӀЂxAA ӀЂxx}AӀӁςxAӀχxAAAЁӁχx}AЀԀςxAAAA πӀx}AρӁxA~ӀχAAӀςx}AAԀӀςAA~gЀӀχ}AAӀчxxAAgԀЂxxA~ӀχxA~ЁӀЂA}сӀЂxA~~сԀЁςxxAӀӀЇчxA~рӀЂxAAӀЂxAAсӁx}тԀςу}ӁчxAЀӀx}AЀԀςуxAA~ЀӀЂx@~ЀӁςxxAӀx}A~ЀӀχ}~~ҀA~~Ӏx}AAӀҀx~ۀӀЂxAҀx}A~Ҁx}AA~ӀуAЀԀxA~πҀ}AہӀAAAӀxxAӁςуx}AԀxxAԀ}}ӀЇx}ҀЂуAЀЂ}~AӀӁ}AӀςxAAԀЂ}~ԀЂxx}Ӏx Ђуx}ӀЂуxӁςxԀЇxxAA|Ҁςу}~#|ӁxAӁA}уx}A AӀAAԀЁ}~чxAԀx}A||ςч}~ԀЂ}|ӀxԀЂx}AӀӀЂx}||Ӂχx|ӁЇxӀуx}~Ӏ}~Ӏx}x~ӀЂуx}ЀӀуӀЂ}~||ӀЇ~|Ӏx}~ԀчxAӀуx Ӏς}}ӀЂx}ӀxԀςx ӁxҁxAӀxӁxӁЇxӁAӀςxӁ}Ԁуxx}ӀxAӀЂ}ҀxӀЂуxӀЂӁςу~ӂxӀуxӀЂxӀЇxӀχӀχԀЂӀςҀx~ӀЂԀЂчԀӀуxҀЇxӁЂχ}ӀЇxҀЇ}Ԁч}ӀӀЂ}ӀЂxӀӀxԀЂуxӀxӀу}ӀуxӀχxԀxχчxӀЁчAԀЂчAӀч~ӀЂ~Ӏч}Ӏ~ԀςAӀЇ~ӀЂχ ӁӀӀЂԀӀςӀЂ ԀЂт#ӀӀςӀчӀЂ πӀЂԀЀЂAԀӀԀӀӁԀςρЂρπρ Ѐ ρ"    " ""  "T T TTT"T " "   UT TT "TT  UOT "OT "D̴T D̼T ̴O ̴D̴T Dδ̴O ̴̴O D̴̴  μDT̴̼TTDTTOJ̴̼ T JD T ̴TO T"T ĵĺTĵ ĺ T"   ĺ̴ ĵĵĺ ĺT ĺ ĺ ľĺ T ĵļ TTĵĵ  "κĺTTκĵĺ T "κĹ TTĵľTT "ľ ľöĺ T"øľ""ľ " øø øĺ ľø ĺT øĺT øø ĵ ĺ"ĺ Ŷĺ ø"T"øĵ öĺ Ĺöĵ ø ĺ ŷ Ŷ ý Ĺ ĵ ýĹ ööĺT½Ĺ Ĺ " ýĹøŶĵ  ĺ θýŶ "½ö ö öĺöĹ T½žø "ýĹ TŸĹ Tĺ ø ½ĺŶĹOŽö  J½öĹ øθ½ ζöö öŶĹ ζĺ ŽöT ŶĹ ½ ½ζö Ŷ ö ö ý ½ö ½Ŷ Ľ½øĵTT"Ž ½TĽöž̽" öĺTŶ̴  ½öĹ ö" ö Ĺ Ĺ½öøö ½ĵ̼Tö ½ö ½" ̴T ýŻ ¿Ĺ" Żĺ ÷ ½ û½ø Ŷƽøöö½ƽĹ ½ŸĹTŸĺ ö½ŸĹ½½ö½Tø½ŸöĹĹ½Ĺ½ŸĺŶĴ½Ĺ½Ĺļøļļĺļ½øļøļŶļŸŶĹŸööĴŸĺ "ö½Ŷø Ŷ"ø T"øøT T  T ŸT !  Ÿ Ķ  ö" û" ÷!BBBB!!!B!B!B!!!!!!B!!B!!B!BBBB!!B!!B!BBBBBBB!BBBBBB!B!BBB!B!BBB!BBB!BB!BBB!!!!!B!!B!BB!BB!B!!!B!!BB!!BB!!!BBBB!BB!BBBBBB!!!B!!!!BB!!BB!B!BB!B!BB!BB!!!!BBB!BBBBB!BB!B!BBB!B!!B!!B!!!!4/////44//4/#///#////44!4/#//#//#//4//4//B/!/!4!!/!/!!/!////////////4///!////////4B/B/!/!/B/4B/!/B/!B///4!/!4//!+/B/!///!///#!/#4!/#!!!!!!/!/!/B#/#/B/#/#//!!!!!!B//4/B/!/!#/!4!///////4//////////////4//4////#/##4#/4//4//#///////////4/###/#4/#/#/#//4///#/////#/44/@gyyg@ @gyyg@ @yg@gyy gyyg~ gygggyg gyyg@ @g{aa{y{{{yy aa{g@y{{{yyy {aaa{@@yy{{yaaaaaa{{@@g#a{{yy{y{{{yg {{{{y{yyyyyg aaga@{{yyyy {{aa{y@yyyy aaa{aaa{{yyyyxaajaa{aa{yyyy{x aaajjaaa{yyyyxaaaaaayyyy{{y#aaaaayaaaa{{yyg#aaaaaaaa{@y{{{yx#aaaaaaaa{@ggyx aaaaaa{{{{yyg@jfjjajjja{{yyy@@ajfffaaa{{{y{gAajfffjjaa@yyyy@}affjjjjjjaa@O@y}ajjffaajJaa{yg@}jjjjajfaaa{yyg{y}jfjjfjjaaayy{@}jffffjjjaa{{a{xyuuuuffffjjjj{{{y@}jffubbuuffjjaja{{{yyAubufffububfjaa{a{y@y}jfbbuufjffffjjayyxyy}fffffbbbbjjjjjj{gyyfufuffuufjaya{{gyxAfffuuufffjjffjayg{{gfffbuuufffjjjaaa{yyg@iffuhhhhbbuuufjja{{yygibuffubhhhhbuujUa{{y{gaubbbbbufuhbbbujaaa{gygiuufbhhhbbufuufj{{yygifubbubhhhhbufjjjUa{{ygibbbhhbbbubhbbfaaJ{y{{gjuubhbbhhbbufuufj{gxT{gifuubbhhhhbbuujjjJa{yjbbbbhheeeehhhhbfjjja{yyx@bhhhhhbhhehhhbbufjaa{y{yaubhheeehhhhhhhbuujjay{yuhbbhheeehhbbbmuffj{yygxbbhhhhhhheehhbujfjja{yyx@uhhhhhhehbhhhhbbfjayy{yyubbheheehhhhbbbbffjJy@yybbhhhbhhehhhhhuufjia{y{Ahhehhhheeceeehhhhffja{{yybhhecceeheeeeehhbuufja{yyy#bbhheeccdehhhhhhbbujjJayyhhheheeecqqcehbbhbujjyyyy bheheeeeeeeeeehhuffjaayyy bbhheeeeeeeeehehhbuj{yyyy#bhhhhhceceeeehhbbbufaay@ybhhheeeeeeceehhhbufjjjayygbhhccqceccqqqccehhhbffja{ygghhheccqooceeccceehhbujj{{yxx#bheeeccqodooceehehhbujja{yxghhheecccqqqqqqchhbbbufjaxgyxbheeeceqoqqcccceehbffjjayxyxhhheeccodqddceeehehbujj{yxxbheeeecqqoqccceeehhbufjayxyhheeeccqccdqqceehhhbujjay{yxxheeeoooocqdodoqccehbbufjUxyy~heeecqodkkddcocccehhbujjayyyheecqqqqoookdqceeehhbufjayy{~heeedoodododoooqehhbbufjUxyy }heecqdoookoddqccccehufjja{yy~eeecqodddodooqceehhbhujj{yyyeeedoqookdkdodqcehhbbfjja{y@ ~heedqododkdodoqeeehbufjay{y hheecodkkkkkknkkooeeebbbja{yxxmeecooodkkpkkdoodoeeebbfjj{yxymeeecdodkkdkkkkoccecebbfjayxyyheeqdodoknkodkoooqeehbbufa{yxymecqddkkkdkkkodqcceehbufjj{{gxheecodkkkknkkdkooceehhbuja{gxyeeeqodokknkkkkdqdqeehbufjj{yyxheddodkkkkkknkokoceehhbfja{yyycqodddknknkkkkpkdoochhhbfja{ygeeqkkkkkkkkknkkokooeeehuuja{yxecodokppnnnknkkkocceeebbfja{xycoqoknkknpppnkkdodceehbbfja{yx#eedkkkknpnknnpnkdqceehbffjUg{{ecqodknpnnnnnkknkdqehhbuujy{yyeqookkkknppnnnnkdodqehbufj{{yheqokknnpnnnppkdkkdeehhbfaayxgqdkkknnnknnnkkknnkoocehbbfjyx{}qqqkpppppppnnkkdoooocehbfjjaya }ecdnkkppsppppnkdkqcccehbbuj{ga }qdodknppnsssppnkkocchbbbufj{y{gcccknnnppsppprpnkkoqehbuujja{y}codkkkpsppnrsnnnnnooeebufj{{y{edodnpppnprrnnppkoooqehbfjayg{ ~eeqdnnnpsppnprpnkkkqeeehbfjygxfeonnpppspppnpnknknkddehhbuj{y{@ioodknprsspsspnnkkdooqeehbfja{{@iooonnnpsssspsspnokceeeehbfj{yg@iconnknsppppsspppnkoccehbuuja{y~fqokkpspppsppprsrpkkddhhbfjj{y{@iqlknnnppssssppnknnndqcehujj{gieqknnpppssssrpnpnkooocehbfj{xTAieccokppspspsprrpnkkoceehbfjaaghcokpspstssspspnnnknkocehbufjygghqdkknps|stttspnnnoolqqcebujjy{gmkkdnppppptttssppnkoochhhhffjyxghdonppnppssspttspppkocehbujfj{y}edkkkppsspssssnrspnnkocehbfj{{Ahqknppppssttprssnnnkkkqeebfjayg@hecokpspspsssssppnnololcehufaygxheodkknpssstsssrspkkoqehhhbfjaygqookpssstvvtssppnkkkkkdeebbujayxcoknpnpsttvtvvsspnnoqcceehuuj{y{connnnpssstvvvttsrnkocehbbbuj{{{cokknssssttpsttttsrpkqeehbujja{{qlnnpppsvtsstssprrrpnkdehbfjaygyeclnppsssstvtsssrnnnnkoqehbuayxeqookpsstttst|vsspnnlqqqehbuf{xxclokknnpstvvtsspsrpnkdqehhbuja{yqknkpssvvvvwvtssnnkokkoqehbfjaxxdkknppsptwwvwvvtrpnklceeehbujyx{eknprpstttsvwvtttspnoocehbubja{gdkknpsssstvvtstttsrnnkoehbfjayy{cknpppssvvvtvttrsrspnkoqehufjy@}ecdnpsssttvvvtssspnkknoqehbfj{xgcodoknptvvvvttttspppklccchbffa{gdkkknppppsvvvttsrsspkoochbbufa{yeknknptvwvwwwvtssrnkoooqehbujj{gckknpssptvwwwvvvtspnkqeeehhujayAednnspstvvtvvwwvtsspnlqehbbfjj{geknppsttttvwttsttpssnndqehufaaxghlnpssstttwvvvvtpprppnkochbbja}eqqknrttvvvvwwtstspnkkkocehufaggeoknnnprvvvwvvtttnpppkqeeehufa{gqnppppspsstvvwttsrppkokqehuufa{gbkpprssvvzwzwzvvsrpkoqqccehuja{@fknnstttttwwwzwvttrpnlcehbbufa{ikkprstvvwvvvvvtvtsppnlcebujjayukpsspsvvvvzwvsstssppnkoehbfjyfqkppstvtvzvvvwtsppppnkocehujax@ulkkkpsvwvwvwvtstsspkoolcehbfj{~uknpppnsttzwwvtttsnpnkqeehhbfj{@unppspsstssvwwwvsrsnnolqchubjja@aknrsrpstwzzzwwvttsnooeeeehbfaygknnppvvvvvwzwwvvtppnkqehmufujyAnnprsptvwwwvvvtvvsrpnkqehufaaxgkprpsstvvwzwwvtsssspnkkchhbjayaqokrtvtvwwwwvvvtspknnkoqehbfay gkknnprtvzzwwwvsssppndqqqehbfaygnpppsspsvvzzwtttspnnnkchhbbfjy ynrrsttvttttttvvvsppnooqehbfjay onppttttvwzzzwwvvrpnkeehhhbfaxknppstvwvvwvwwwvtsrpnocebfffaanpprsttvwzzwtttvtsppnkochbfjygqnstttvvvvzwwwtsnpnpnnlcehbjaylkonstwwvwzvttttsrnkkoocehbfjannnpppsvzzzwvttsrrppkqeehhbfjanprtpststtwzzwttsnpnkkqchuffjanpsttvwvvwvttvwvsppnkoqeehujagkknrsttttvwzwwtvtsppklehbbbfayknnprsttwwwtvtvvtsppnklehbjajykprprsttvwwwwtsrssrpnklcehbjaeopsvtttvwvwvvvsrnnnnkoqehbfjxkkkkpswwwwwvwtttsppkooqqehbfaykpprpppsvzzwwttsrrnnkochhbufjykprstttvtstwwwvsrpnkkloehmfjaykprsttvwwwwvsrttvrpnooeehmbjaxannprtvtttvvwvwvprrpkochuubfjykkprsttwwvtttttssrpnklceujaaprrspttvtwwvvspprppnklcehuja gqkptttttwvtvtttsnnkkooqhhbfj jnpknpvwwwvvvttsrrpnlceehhbfjyprssrsntwzwvtssrpnnnkqhbbbfj gpppsvvvvtptwwvtrpnnkqqeebfja gnspttvvwwwtspsttspkklcehbbfj knnrsttvtsttvttsrpnnkqhbffjjknrrptttvwvtrrsrrrpkkqchhfjxnrrprtttvvtvvtppnnnnkqeebufalknstttttvvtttssrkooqccehfjjpppnnsvwvvtttpssppnkqehhhufanprstsrsvvwvtssrpnnooqehujjaprrsttvttssttttpppkoleehhujynnsttttwvwwtrpssrrkoocehbfjagnppsstvvtssstssrpnkllebffj Anrrrssttvttspppppnkocehhfjnrrrtttttttttspkkoloqcemffkprsttsvttttsrrnnkqceehhffyppppsttvttvtsrnpnnkoehbuuj Akrsttrptvttsrtrpnkolqehbjj@prsstvwvtstttspppkoqqemmfjAkprttvvvwvvrrrrrpkllchhufjhnpprstttsnpprrrpklddehff@bprrrsstttttrpknnnkocehbufpnpsssrstsssrrnllqqcehbf@bnrssrstttssrrpppkleehbbu@hppprtttssvssrpnnlkqchbfjgmnrstsrttttrrrrkkklceehbf@hrrssstttrttsspnnnlcehhbf@bnpstptttvtsprppnlqoqebuf@lnppsstssrpnknpnkocchbfiqnrrrrsssssrpkklollchbficnnnstsssrsppppkqcehehbalprrpprstsrpppnkkochbuuiopprsssrprrspnkkklcchufalppssrstsspppppnoqeehbuadrrrrstssssrpkklklcehbfaenprtttrssspppnkoccehbfiopppprssrpnkklnklchhbiqnpprrrprprpnodcccehbicknnnsrrrpppnnkoeehbbilppnppprrpppnkkolchbuaonppsrppnpppnnkocchhbiopnppprsrpkkkkklqcehbiorrrrrrppnppnldqccebbieknrsssrrpppnnkqehhhbimpnpppppnnkoqddcchhabnppppppppnnoqehhhhainknpppppnnkkolchbfgbnnpnknnpknkkodcehbgmnnpppnnkkkkkoqeehhabnpnnpppnnkoqoqqehbgbprpppppppnnooeeehbauknprpppnnkkkodchbuggpnnnnpnnkoceeehhAknnnpnnkkkkqehbbkokknnnkkklodehb@nnnnlkknnkoqcehhgnnnnpnkoooooqehb@npnppnnnkoqeeheb@nppnnknkkoooebbbAlkpnppnnkloqceebjkkkkkkklchhm@@knnkkoooocemdcoknkolqcemgnnlqcqooocemakkkpnoeeeeee@gkkkkoknoehmbgknnnkokqloemglonknnolqcem abcdcefg gfcddhi@gihqcei@yueemhi@ @ucolmigybellej yicodmjgueddef@"OJU^JOOUU^UO O"^U"" OU^^"T TO^UJTTO^TO" TUU^J" J^^UT TU^^^^^^^^^^ ]^^UO^^^^^^^ ^^^^^TO^^^^U^^^^^^^^TOTU ^^^^^^^^^^UU ^^^^^^^^^U^^ ^^U^O^^^^^T^ ^^^^^^TT^^^U ]D]^^]]]^^^^^T^U ]]N]]^^^^^^^T^^U^]]NN]]^^^T^^^^U ]^^D^]]]]^^^^^^^ ^]]]]^^^]^^^^^TU ]^]D]^]]^T^^^^^U]DD^]]]]^^^OUU^U ]]]]]]^^^^^^^^^O^NIINNN]NNNN]^^^^^^OODNIKIIN]]]]^^^^^^^TTD]]NNIIINN]^^T^^^^OO]IKN^NNNNNN^^TTOT^"ODN]NIKND]]NJ^^^^TUOONNNNN]NKN]]^^^^U^^TJNINNINN]]]]]^OO^^^OONIIININNN^^^^^^JT^"DIKKWKKIIIINN]NN^^^^TODNIIKEWWKKINNDN]^^^^^ODKEKIIIKWWKIN]]^^^^T^JDNIWEKWINIIIINN]^^U^^ODIIIIIEEWKNNNNNN^U^^T"DIKKKKIIIKKKN]^D^^U^UODIIKKKKIKINNKIN]^UT^^UDIIIWWWKKIINNN^]]^^^^ONIIWMMMMWEWWWIINND]^^^^UNEKKIWWMMMMEKKINNU]^^^UJDKWWWWEWKKMEEWKNN]^^^U^UNKKKWMMMEWWIKKIIN]^^T^^UNKWEEWEMMMMWKINNNNJ^^^^JNEEEMMEEWWEMEWIN]^J^^^^JNKWWMEWMMWEKIKKIN]^UUT^UNKWKWEMMMMEEWKNNNNJ^^T^"DEEEEMMHHHHMMMMEKNNN]^^^UODEMMMMMEMMHMMMEWKIN]^U^^^"^KWMMHHHMMMMMMMEKWNN]^T^^T^WMEEMMHHHMMWEWEKIIN^^^UUTDEEMMMMMMMHHMMWWNINN]^^^UODWMMMMMMHMEMMMMEWIN]^^^^^"UWEEMHMHHMMMMWWWWKINJ^T^^T]EEMMMEMMHMMMMMWIINN]^^^TOOMMHMMMMHHFHHHMMMMKIND]^^^^ "EMMHFFHHMHHHHHMMEKKIN^^^^^ EEMMHHFFGHMMMMMMEWKNNJ^^T^"MMMHMHHHFFGFHMEWMWWNN]^^^^TEMHMHHHHHHHHHHMMWIINN^^^^^"WWMMHHHHHHHHHMHMMEKN]^^^^^ EMMMMMFHFHHHHMMWEWKIN]^^T^"EMMMHHHHHHFHHMMMEKINNN^^^J EMMFFGFHFFGGGFFHMMMWIIN]^^UUMMMHFFLRRFHHFFFHHMMEKNN^^^UUEMHHHFFGRQRRFHHMHMMWWNN]^^UUMMMHHFFFGGGGGGFMMWEWKIN]UJ^UWMHHHFHGRGGFFFFHHMWKINN]^J^UMMMHHFFRGGLRFHHHMHMWKNN^T^UUEMHHHHFGFRGFFFHHFMMWWIN]^TU^MMHHHFFGFFGGGFHHMMMWKNN]U^^UJMHHHRRRRFGRRRQFFFHMWWKINJU^^OMHHHFGRRPPRLFRFFFHMMWKNN^^^^"MHHFGGGGRRRPRLFHHHMMWKIN]^^^ OMHHHLRRRRRRFRRRGHMMWWWINJU^^ JMHHFGRRRRPRRLGFFFFHMWINN]^^^THHHFGRRRRRRRRGFHHMMEMKNN^^^^"HHHGRGRRPRPRRGGFHMMWWINN]^^T TMHHGFRRRRPRRRRGHHHMEWINN^^^^MMHHFRRPSPPPPSPPRRHHHEEKN]^^UUMHHFRRRRPPSPPRRQRRHHHEEINN^^J^MHHHFRRRPPRPPPPRFFHFHEWIN]^U^^MHHLRRRRPSPRRPQRRGHHMEWKI]^^U^MHFGRRPPPRPPPRRGFFHHMWKINN^^UUMHHFRRPPPPSPPRPRRFHHMMWKN^^UU^HHHLRRRPQSPPPPRGGGHHMEKINN^^^UMHGRRRPPPPPPSPRPRFHFMMWKN]^^^^FGRRRRPSPSPSSPSPRRRFMMMEIN]^^JHHGPPPPPPPPSSPPRPRRHHHMKIN]^^UHFRRRPVVSSSPSPPPRFFHHHEWIN]^U^FRLRPSPPSSVVSPPRRRFHHMWWIN]^^UHHGPPPPSVSPSVVSPRGFHHMWIINUU^^HFGRRPSVSSSVSPPSPRLHMMEKIN^^^^HGRRPPPPVVVSSSSPRRRGHMWKKN^^O^MFFRPPSSVSSSVVPRPPRHHMMWI]]O^UULRPPPSSSPSSSPPSSSSRRFHMEWIN^J^"JGGGPVVVVVVVSSPPRRRRRFHMWKNN]^^ JHFRSPPSVXXSVVSPRPGFFFHMWEIN^U^JLRRRPSVVSXXYVVSPPRFFMEWWKIN^^^ UFFGPSSSVSXVSVVVSPPRGHMEKINN^^^"JFRRPPPVXVVSXXSSSSSRRHHEKKN^^^^"HRRRSVVVSVXXVSVVPRRRFHMEIN]^U^ OHHFRSSSVXVVSVXVSSPPGHHHMWKN^UUIHRSSVVVXXVVSSSPSPSPRGHMMWKN^^^ONRRRPSSXXXXXXVSSPPRRRGHHMWIND^^ONRRRSSSVXYYYXXXVSRPLHHHHMWIN^^UONFRSSPSXXVVXYYVVVSPRFFHMEKKN]^^OKGRPPVXVVVYXVVXXXVPPRGMMEKNN^^^ONLRPSSSVXYXXXXVSSSSSRGFHMKNN^OU"NHGPSSSVVXXYYVVSVSPRQRFHMEIN^UOONHFFRPVXXXXXXXXXVSPPRFHHMEIN^]UTHFRPSXXXZYYXVXVSSSSSPRFHMWWIN^U^MGRPPSVYZYYZZYXVSSRRRGGFHEKNNU^JMPPRSSVVVXZZZYYXXSPRRFMMMMIIN^UUMRRSVSVSXXXXVZZYXSVPRFHMEKNIN^^JHRPPPVXXXXXYYXVXYXSSSRFHMWIN^^OOMFPSVVVVXYZZXXYVSSSSPPGHHWIN]^UJMHFRPSXXYVXYYYYVSVSRRRRFHMKI]^UJMHRRPPSVXYXZYXVXYVPPRLHMMMWIN]^UFRRPVYYYZ[[ZYXXVSPPPPPRHHWWIN]^UFRPSVSVYZ[[Z[[YXVSSRGFFHHMKIN^^^FRSSSVXXXYZ[[[ZZYXSPRFHMEWWKN^^^FRPPVXYXYZZXYZZZYXXVPLHHMWINN]^^FRSSVVVY[ZYYZYXVXXXVSPRHMWIN]^U^HFRSVVXYYYZ[ZXXYXSSSSPRGHMEI]^UTHFRRPVXYZZZYYZ[YXVSSRFGGHMWII^UUFRRPPSSVYZ[ZZYYXXXVSPRFHMMWIN]^^RPSPVXY[[Z\\[ZYYVSPRSPRGHMEIN]UJLPPSVSXXZ\\[\[[ZXVSSRFHHHMWWN^U^FPSVXVXZZXY[\[[ZZYSSRRFHMWKWN]^ULPPSSYYYYZZ[ZYZ[ZYXVSPRHMWIN]^^^FPSSVXXY[[[Z[[ZXXXXVSPRFHMWIN^TJHFRSSYYYZZ[\[[YYYXSSPSRGHMEIN^UJFRRRQSXZ[[[[ZZ[ZYVVVPRFFFMEII]^URPPPSVVVVYZ\[[ZYXYXVPRRFMEWKK]^^HPSSSVZ[\\\\\\ZYXXSPRRRGHMWKNN^UFPPSXYYXZ[\_\\\ZZXVSPFHHHMMKN]^JHRSVXXYZ[[Z[\\\ZZYYVSRGHMWKINN^JFPSSXXZ[ZZ\\[ZYZZYYXSSRGHMWI]]UJMRSVXYXZ[[\Z[[[YXVXXVSPRFMWKN]OJHFGPVXZ[Z[[[\\ZYZYVSPPPRFHMKI]UUFLPSSSVV[[\\\[Z[ZVVVVPGHHHMWI]^UFSVVVVXXXYZ[\\[ZYXXVPRPGHMWKI]^UWPSVXXX[\\_`__\[YXVPRFGFFHMKN]^OISSSXYZZZZ\___\[[ZXSSRFHMWEKI]^TNPPVXXYZ\\[[[[\[[ZYXVSRFHEKNN]^OWPSXXVY[[[\_\[YYZZYXVSPRHMEIN^T"KFPVXYZ[Z[_\[\\[YVVVVSPRFHMKN]UOKRPPPVY[\\\\\\[YZYXVPRRRFHMKIN^TWPSVVVVXZ[__\[[ZZXVVSPGHHMMWIN^OWSVXXXXYYYY[\\\[YXXVSRRGFMKKNN]O]PSXXXXY[_``__\[[XXSRQHHHHMWI]^"JPSSVX[[[[[\__\\[ZYVSPGHMWKIIN^OSSVVYVZ[__\[[[[[[YXVSPFHMWI]DUJPVXXYY[[[\___[YXYYXVSPPFMMKN]^ ]GRPXZ[[[\\_\Z[[ZYVPSSPRGHMEI]^JPPSSVXZ\_`\\\[YYYXVSRGGGHMEI]^"OSVVVXXXX[\___[ZZYVSSSPFMMWKIN^USXXYZZ[ZZYZ[[\\ZYVVSRRGHMWIN]^ RSVXZZYZZ_`_`\\[[XVSPHHMMMWI]UPSVVYZ[\\Z\\\\\[ZYXVSRFHEIIID]SVVXYYZ[\_`_[ZZ[ZYXVSPRFMWIN^UFSXZZY[[Z\_\\\ZYVVVVSSRFHMWN]^ RPRSX[\\\\_\[[[ZZXSPPRRFHMWIN]SSVVVVX[_``\\[ZYXXVVPGHHMMWIN]SVXXYYZYXZ_``\ZZYVVSPPGFMKIIN]SVXYZ[\[\\\ZZ[\[YVVSPRGHHMKN]UQSSXYZ[ZZ\\__\[[ZYXVPRHMWWWI]^PSSVXYZ[\_\[[[\[[YVVSPRHMENDN^PVXVXYZ[[\__[ZYXYYXVSPRFHMKN]TFRVY[ZZZ[\\\\[[YXSSSSPRGHMKINUQPSPVY\__\\\\ZZZYXVPRRGGHMWI]^SVVVXSVY\``_\ZZYXXVSPRFMMWKIN^SVXYZZY[ZYZ\_\[YXVSPPRRHMWKN]^SVXYZ[[\\_\[YX[[[XVSRRHHMMWN]U]SSVXZ[[ZZ[\\\\[ZXXVPRFMKKWIN"^PSVXYZ[[_\[ZZZZZYXVSPRFHKN]]TVXXXYZZ[[\\\[YVVXVVSPRFHMKN] OGPVZ[ZZ[\\[[[[ZYSSPPRRFMMWKN DSVPSV[\\\[[[ZZYXXVSRFHHMMWIN"UVVYYXXVZ\_\\ZYYXVSSSPFMWWKKN ^SVXY[[\[ZYZ\\\ZXVSSPGGHHWIN] JSXXZZZ\\_\[XVYZZYVPPRFHMWKIN PSVVYZ[[ZYZZ[[ZYXVSSPFMWIKNNPSXXXZZ[[\ZZXXYXXXVPPFFMMINUSXXXXZZ[[[[[[ZXVSSSSPGHHWKK]RPSYZ[ZZ[[[Z[ZYYXPRRGFFHMINNVVVSVY[\\[Z[ZYYXVVSPGHMMMKK^SVXYZYVY[\_[ZYYXVSSRRGHMKNN]VXXYZ[[[ZYYZ[[ZVSVPRRHHMMWN^SVYZ[Z[\\\\ZXVYYXXPRRFHMWKN]USVVYYZ[[ZYYYZYYXVSPRRHWIIN OSXXXYYZ[[[[YVVVVVSPRFHMMIN"SXXXZZZZ[ZZ[ZYVPPRRRFFHWIKTPVXYZZY[[ZZZYXXVSPFFHHMMIK^VVVSYZ[[[Z[ZYXVVSSPRHMWKIN OSXYZZXYZ[[[ZXZXVSPRRGHMKNNOVXYYZ[\[ZYZZZYVVVPRFFHMWINOPSXZZ[[[\\[XXXXXVPRRFMMKINMSVVXYZ[ZYSVVXXXVPRFGHMKIOEVXXXYYZZZZZXVPSSSPRFHMEKTIVSVYYYYYZYYYXXSRRGGFHMEIOWSXYYXY[ZZYYXXVVVPRHHMWEKOMXVVXZZZYY[YYXVSSRPFFMWKN^ESXYZYXZZZZXXXXSPPRFHHMEIOMXXYYY[[YXZZYYVSSSRFHMMEIOWSVYZZZZ[[[YVXVVSRFRGHWWIORSVXYYZYYXVSSSVSPRFFMWKNFVXXXXYYYYYXVPPRRRRFMWKNFSSVYZYYYXYVVVVPGFHMHMEDLVXXVVXYZYXVVVSPPRFMWKWNRVVXYYYXVXXYVSPPPRFFMKKDLVVYYXYZYYVVVVVSRFHHMWWDRXXXXYZYYYYXVPPRPRFHMWKDHSVXZZZXYYYVVVVPRFFHMWKNLVVVVXYYXVSPPRSPRFMMWNFSSVXXXVXVXVSRGFFFHMWNFPSSSYXXXVVVSSPRHHMWWNLVVVVVVXXSVVSPPRRFMWKDLSVVYXVVSVVVSSPRFFMMWNLVVVVVXYXSPPPPPRGFHMWNLXXXXXXSVVVVSRGGFFHWWNFQSXYYYXXVVVSSPFHMMMWNMVSVVSVSVSPRFGGFFMMDWSVVVVVVVVSSRFHMMMMDNSPSVVSVVSSPPRRFMWI^ESSVSPSSVSSPPRFFHMW^MSSVVVVSPPPPPRLHHMMDESVSVVVVSSPRFRFGHMW^EVXSVVVVVVSSRRHHHMWDKPSVXXVVVSPPPRFFMWK^UVSSSSVSSPRFHHHMM"OPSVSVSSPPPPGHMWWPRPPSSVPPPRRFHMWOSSVSRPPSSPRGFHMMUSSSSVSPRRRRRFHMW"OSVSVVSSSSRFHHMHWOSVVVSPSPPRRRHWWWORPVSVSSSPRRGFHHWDPPPQPPPRFMMMOJQSSQPRRQRFHMT"GFRSSPQRGFHMTJSSRFFFRRRFHMTDPPPSSRHHHHHHOUQPPQRPSLHMMWOSSSSPRPGRRHMTJLRSQSSRRFFHMT DEFGFHIJJKFGLMNOJNMFFMNOUWHHMMNO OKFRLMNJUEFFLHN"UNFQGMD"JKFGLHIO4*+<<+**+<<+***<+44#*+<+*4#4+<<+4#*++**4*+<<+44+<++*4*+<$$<<<<<<+#$<<+*<<<<<<<#<$<<<**<<<<+#<<<$$<<<****#<<<<<<<<<<<+<<<<<<<<<<<+#<<<<*<<<<<*<4<$$<<<**<<<<4$$$<$$$$<<<<<*<+4$$.$$<<<$<<<*<<+<$$..$$<<<*<<<<+#$$<$$$$$$<<<<<<<$$$$$$<$$<<<<<*+$<$$$<$$<*<<<<<+$$$$$$$$<<<*++<+4$$$$$$<<<<<<<<+*<.88...$....$<<<<<<**$.8888.$$$$$$<<<<<4*$$$..888..$<<*<<<<**$88.$......<<****<4*$.$.88.$$$.+$<<<*+**.....$.8.$$<<<<+<<*+.8..8..$$$$$$**<<<**.888.8...<<<<<<+*<4.88,,,8,888..$..$<<<**$.88,,,,,,8..$.$<<<<<*$,,,888,,,,8.$$<<<<*<*$.8,,,,8.8888..$<<+<<*.8,888,%,,......<++<*4.8,,8,88,,,8.$<$<<<<+*$8,8,,,8,8..88.$<+*+<+.888,,,,888...<$$<<<+*888,%%%%,,,,,8,..$$$<<<+8,,88,%%%%%,,,8..+$<<<<+$,,,,%,,8,%,%,,..$$<<+<+8,,8%%%%,,,8,,88.$<<*<<+88,,,,,%%%%,,8....<<<<<+8,,,%%,%,,,%,%8.$<+<<<<+.,,,%,,%%,,,8,,8.$<+<*<+.8,,,%%%%%,%,,..8.+<<*<4.,,,,%%&&&&%%%%,8...$<<<+*$,%%%%%,%%&%%%,,,8.$<<+<<4<,,%%&&&%%%%%%%,,8..$$4<<*<,%,,%%&&&%%,,%,,88.$<<++*.,,%%%%%%%&&%%,,.8..$<<<+*$,%%%%%%&%,%%%%,,8.$<<<<<4<,%,%&%&&%%%%,%,,88.+$4<<*$%,%%%,%%&%%%%%,88..$<+<***%%&%%%%&&(&&&%%%%,8.$$<<<<4,%%&((&&%&&&&&%%,,,8.$<<<<#,,%%&&(('&%%%%%%,%,..+<<*<4%%%&%&&&(''(&%,,%%,..$<<<<*,%&%&&&&&&&&&&%%,88..$<<<<4,,%%&&&&&&&&&%&%%%,.$<<<<<,%%%%%(&(&&&&%%,,%,8.$<<*+4,%%%&&&&&&(&&%%%,,8...<<<+,%%(('(&(('''((&%%%,88.$<<++%%%&(('--(&&(((&&%%,,..<<<++,%&&&(('----(&&%&%%,,..$<<++%%%&&(((''''''(%%,,,,8.$++<+,%&&&(&'-''((&(&&%%88..$<+<+%%%&&((-'''-(&&&%&%,,..<4<++,%&&&&(''-'(((&&&%%,,8.<<*+<%%&&&(('(('''(&&%%%,8..$<<<+*%&&&--22''2-2-'((&%,%,8.++<<#*%&&&('-2112'(-'((&%%,,..<<<<4%&&(''''---12'(&&&%%,,8.$<<<*%&&&'------'--2'&%%%,,8.++<<*%&&('-2--12-''((((&%,8..$<<<#*&&&('-2-2----''&&%%,%,..<<<<4&&&'-'-21-1--''(&%%%,8.8<<<**%&&''-2-21----'&&&%%,,..<<<<%%&&(-1101111011--&&&,,,.$<<++%&&'-22111011-----&&&,,8..<<+<%&&&(--21121111-((&(&,,,.$<+<<%&&'2-22101--1---'&&%,,,8$<<+<%&''-111121112-'((&&%,,8..<<++%&&(-2111101121--(&&%%,,.$<++<&&&'2-21101111-'''&&%,,8..<<<+%&'--21111110121-'&&%%,8.$<<<<('-22210101101012--(%%%,8.$<<+&&'111111110011-1--&&&%,8.$<<+&(--213300010111-((&&&%,8.$<+<(-'-10110330011---(&&%,,8.$<<+&&'11110301033012'(&&%,,8.++<<&('-21030003011012'&%%,,8.<<<<&'--111133300001---'&%,,8.<<*<%&'-11013000331-11-&&%%,,$$*<++'21110001000110001-'(&%%,8.<+<#+'''1333333300112----(&%%8..$<<*&(2011335533301-1'(('&%,,8.<+<+'---1033055633011-((%,%,,8.<<<<(''100033333353011-'&%,,8..<<<#+(-2111353305500000--&&,,8.<<<<4&-2-0333035530331---'&%,8.$<+<*&&'-000353303530111'&&&%,8.<++8&-003335333030101012'&%%,,.<<<*.---10356553530011---'&&%,8.$<<*8---0003566635530-1'&&&&%%8.<<+*.(-0010553356633301-((&%,,8.$<<*8'-11353336533555311-'%%,,..<<<*.'-100035635353000102'(&%,..<*<#.&'1003335366530301---(&%,8.<<**.&((-135555355553011-(&&%%8.$$+*%(2135557665533000001-(&%,,8.<++%'-110367667765300---'''&,,..<<+%112033333777663501--(%%%%88.<++%--03333535557765331-'&%,,.8.<<*&-1113556556653563001-'&%,8.<<**%'10333336775565100011'&&%8.$<+*%&(-135565566660330---'(&%,8$<+*%&-21103566765556311-'&%%%,8.$<+'--1366679976553011111-&&%,8.$<<'-10303679999963300-'((&&%,8.<<<&2010356567999776501-(&%,,,,.<<<(-1135636773677765531'&&%%8..$<<'-00333697667653555301-&%,8.$<+<&('0355666797656500001-'&%,8$<+*&'--1356777677965300-'''&%%88<+<'--110036797766355301-'&%%,8.$<<'101336997;;9766301-11-'&%,8.$++-110335379;999975301-(&&&%,,.<+<(10353577669;9977630--(&%,,,.$<+'110366667997679765301-&%,8.$<<<(103355699979973535301-'&%,8.<*+&(-03666779;9966650110-'&%,8.<++(---10379999779763331-(('%,88$<+'11113335699997656531--(%,,,8$<<&1000379;;;;;;765501---'&%,,..<+&110566579==;;;973301'&&&%%,.$<*&-0353679979;;;976600-'&%,,8..<+(133357977;;9767766500-'&%,8$$+<%-03366799;999975355301-(%,,.$**&('135799999;;767630111-(&%,8$++&-10003597;;;779733331'&&&%,8$<<'03333553679;;9765331-1'&%,,8$<+,1335559;==>==;96331-''('&%,.$<*8000567777;===;997530-(&%,,,8<<*.1135567;;999999976530-(&,,..$<*,133536999;=;9667763301-&%,8.<*48'13567979=99;996333301-(&%,.$+*,-111369;9;;;;9676531---(&%,8.<*,103333579==;997753301'&&%%,8.<*,03555666669;;;965530--'(%,,..$*$10555369=>>>=;99650--&&&&%,8$<4+1003699999;>=;;976301'&%,,8,.<*00356579==;99999965301'&%,8$$+#*135566999;===9656653011(%%,.$<<'-157999;;=;9997631001-'&%%8$<#+1100357;=>;;;9666530-'''&%,,<<4+033355359;?>=977630001(%%,,8.<+05367797777999;96330-2'&%,8.$<-03377679=>>?=;995301&&%%%,8$+1033679;;9;9;=;976530-(&,,88$$03356679;=>=9779765301-(%,8.<+'03776999;?=;;96333300-(&%,.$<-1'059;;;;>;999775011--'&%,8.$00333339>>>;;97653331'&&%%,8.$0356667667=>>;77633011'(%,88.$035679;9;;;779;963301-'&&%,.$+1005679779;>=;9976531-&%,,%8$<10035679;=;99999963301-&%,.$.<135356799===9765665301-(&%,.$*(-3697799;;;9996500001-'&%,8.+110136;==;;;97776531--''&%,8$<13355336;>>=;976553012(%%%,8.<03367779767;?;9633011--&%%8.$<0356799;;=;965999530--&&%%,.$+$0035799779;9;;973531-(%,,,8.4<1035677;=997777765301-(&,.$$*355367797;=;963353301-(&%,.$*'1579779;99999760011--'%%%8.$031039C;99997765530-(&&%%,8.4+35665537;?=;766330001'%,,,8.+33569999767;;;753001''&&,8.$+053779;;=;9636776311-(&%,,8.103567:97677997653001'%,,8..10553779:;97556553311'(%%8.+0555577:99:9973300001'&&%,8$-10679779997976651--'((&%8..3330369;;97976633301'&%%%,8$0356765699=97665300--'&%,..$3556799976679973331--&&%%,.<03679799;;;75366351--(&%,,.$+0306679976667665301--&,88.40355667999963333301-(&%%8.#35357777977976311---'(&,88*135677699777635301'(&&%%88<3333679997976533001-&%,,8.*056773679997375301--'&%,..*356679;97677763331-''&%,,.*13577999;;95355531--(%%,8.%03356797633335531-''&%88*%355566777773310001-(&%,,*8303666667666550--''(&%,8*,05663697766553331-&&%,,,*%5335777669665300-1'(%,8.<%05676577775555011-(&&%,8*%55666996577663000-(&%%,8*,0367777999635330-'-'&,,8*-0356676653000301-((%%8.(35535666665311----(%%8.'003676665633331'(&%&%%$'3553356765333011-(%,,,.23356663355630111-((%,,$'336656766333330-'&&%,,$'55556766665311-1-(&%,,$&033777566633331'((&%,8.'333356653011-01-(%%,.'033555353530-'(((&%,.&10036555333001-&&%,,.-33333353333011--(%,,$'03365330333001-((%%,.-33333565311111-'(&%,.-553555333330-''((&,,.&10566653333001'&%%%,.%3033333301-'''((%%$,03333333300-'&%%%%$8010333330011-'(%,8<,003010030011''(&%,<%003333011111-'&&%%$,0303333001-'-''&%,<,35333333300--&&&%,$,103553330111''(%,,<+300003001-(&&&%%4*10333001111'&%,,##1-11003111--'&%,#*0030-11001-'(&%%#+0000301-----'&%,4*030330000-(&&%&,#*033301011---&,,,#*-13033001--'(&&,#$0111121'(%%%**10011-'--(&%*4'(-101--'(&%**30-'&''--(&%*$01130-&&&&&&*+1111-10-&%%,#*00001-1'2-&%*+'-0100--'(&%*#$%&'(&)*+,&--&./+.&((&.*+,&&%%.**)&2'%.++,&''&.#<8&-'%$4+8&''&)*" ! !  ! ! !!!" ! !  !"! !  B !" !!      @ ! !"!"! "!!!!                !          !    !    !         !    "!          "           A     "                            !                                               !                                                                                                              !                                                                                                                                                                     @                                                                                                          @   @                                                                                                                                                                                                                                                                                                                                                lmarbles-1.0.7.orig/src/cfg.c0000600000175000017500000001206610061601555014127 0ustar uweuwe/*************************************************************************** cfg.c - description ------------------- begin : Sat Aug 5 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "cfg.h" #include "sdl.h" #include #include #include #include "file.h" #include #include #include #ifdef _WIN32 #define MKDIR(d, p) mkdir(d) #else #define MKDIR mkdir #endif char c_pth[512]; Cfg cfg; /* get the full path of the cfg file */ void C_StPth() { DIR *dir; #ifdef _WIN32 snprintf( c_pth, sizeof(c_pth)-1, "%s/lgames", (getenv( "HOME" )?getenv( "HOME" ):".") ); #else snprintf( c_pth, sizeof(c_pth)-1, "%s/.lgames", getenv( "HOME" ) ); #endif /* create .lgames directory if not found */ if ( (dir = opendir( c_pth )) == 0 ) { fprintf( stderr, "Config directory ~/.lgames not found. Creating it.\n" ); MKDIR( c_pth, S_IRWXU ); } else { closedir(dir); } /* get full path of config file */ strcat( c_pth, "/lmarbles.conf" ); } /* load it */ void C_Ld() { char str[256]; FILE *f; struct stat dir_stat; printf("loading configuration...\n"); // load init // if ((f = fopen(c_pth, "r")) == 0) { printf("cfg file '%s' not found; using defaults\n", c_pth); C_Def(); } else { stat( c_pth, &dir_stat ); if ( dir_stat.st_size != sizeof( Cfg ) ) { fprintf( stderr, "config file '%s' corrupted... using defaults\n", c_pth ); C_Def(); } else { #ifdef ASCII F_GetE(f, str, F_VAL); if (strncmp(str,"ascii",5)) { printf("cfg file '%s' not in ascii; using defaults\n", c_pth); C_Def(); } else { F_GetE(f, cfg.prf_nm, F_VAL); cfg.prf_nm[strlen(cfg.prf_nm) - 1] = 0; F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.prf); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.s_vol); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.s_on); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.ani); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.trp); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.fscr); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.dim); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.diff); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.k_up); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.k_down); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.k_left); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.k_right); F_GetE(f, str, F_VAL); F_ValToInt(str, &cfg.k_undo); } #else fread(str, 5, 1, f); if (!strncmp(str,"ascii",5)) { printf("cfg file '%s' in ascii but raw binary data expected; using defaults\n", c_pth); C_Def(); } else { fseek(f,SEEK_SET,0); fread(&cfg, sizeof(Cfg), 1, f); } #endif } fclose(f); } } /* save it */ void C_Sv() { //save init // FILE *f = fopen(c_pth, "w"); #ifdef ASCII char str[256]; F_WrtE(f, "ascii"); F_WrtE(f, cfg.prf_nm); F_IntToStr(str, cfg.prf); F_WrtE(f, str); F_IntToStr(str, cfg.s_vol); F_WrtE(f, str); F_IntToStr(str, cfg.s_on); F_WrtE(f, str); F_IntToStr(str, cfg.ani); F_WrtE(f, str); F_IntToStr(str, cfg.trp); F_WrtE(f, str); F_IntToStr(str, cfg.fscr); F_WrtE(f, str); F_IntToStr(str, cfg.dim); F_WrtE(f, str); F_IntToStr(str, cfg.diff); F_WrtE(f, str); F_IntToStr(str, cfg.k_up); F_WrtE(f, str); F_IntToStr(str, cfg.k_down); F_WrtE(f, str); F_IntToStr(str, cfg.k_left); F_WrtE(f, str); F_IntToStr(str, cfg.k_right); F_WrtE(f, str); F_IntToStr(str, cfg.k_undo); F_WrtE(f, str); #else fwrite(&cfg, sizeof(Cfg), 1, f); #endif fclose(f); } /* default values */ void C_Def() { strcpy(cfg.prf_nm, "Michael"); cfg.prf = 0; // sound // cfg.s_vol = 6; cfg.s_on = 1; // gfx // cfg.ani = 1; cfg.trp = 1; cfg.fscr = 0; cfg.dim = 1; cfg.diff = DIFF_NORMAL; // controls cfg.k_up = SDLK_UP; cfg.k_down = SDLK_DOWN; cfg.k_left = SDLK_LEFT; cfg.k_right = SDLK_RIGHT; cfg.k_undo = SDLK_SPACE; } lmarbles-1.0.7.orig/src/cfg.h0000600000175000017500000000304107427015733014136 0ustar uweuwe/*************************************************************************** cfg.h - description ------------------- begin : Sat Aug 5 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef CFG_H #define CFG_H enum { DIFF_EASY = 0, DIFF_NORMAL, DIFF_HARD, DIFF_BRAINSTORM }; // config file // typedef struct { // profile char prf_nm[12]; int prf; // level set // int ls; // sound int s_on; int s_vol; // gfx // int ani; int trp; int fscr; // fullscreen int dim; // dim effect on? int diff; // difficulty int k_up; // controls int k_down; int k_left; int k_right; int k_undo; } Cfg; void C_StPth(); void C_Ld(); void C_Sv(); void C_Def(); #endif lmarbles-1.0.7.orig/src/sdl.c0000600000175000017500000003347307524354576014201 0ustar uweuwe/*************************************************************************** sdl.c - description ------------------- begin : Thu Apr 20 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "sdl.h" #include #include extern int trm_gm; Sdl sdl; // sdl surface // /* load a surface from file putting it in soft or hardware mem */ SDL_Surface* SS_Ld(char *fname, int f) { SDL_Surface *buf; SDL_Surface *new_sur; char path[strlen(SRC_DIR)+ strlen(fname) + 2]; sprintf(path, "%s/%s", SRC_DIR, fname); buf = SDL_LoadBMP(path); if (buf == 0) { fprintf(stderr, "ERR: ssur_load: file '%s' not found or not enough memory\n", path); if (f & SDL_NONFATAL) return 0; else exit(1); } new_sur = SS_Crt(buf->w, buf->h, f); SDL_BlitSurface(buf, 0, new_sur, 0); SDL_FreeSurface(buf); return new_sur; } /* create an surface MUST NOT BE USED IF NO SDLSCREEN IS SET */ SDL_Surface* SS_Crt(int w, int h, int f) { SDL_Surface *sur; SDL_PixelFormat *spf = SDL_GetVideoSurface()->format; if ((sur = SDL_CreateRGBSurface(f, w, h, spf->BitsPerPixel, spf->Rmask, spf->Gmask, spf->Bmask, spf->Amask)) == 0) { fprintf(stderr, "ERR: ssur_create: not enough memory to create surface...\n"); exit(1); } SDL_SetColorKey(sur, SDL_SRCCOLORKEY, SDL_MapRGB(sur->format,0,0,0)); SDL_SetAlpha(sur, 0, 0); // no alpha // return sur; } /* return display format */ int SS_DpyFmt(SDL_Surface *sur) { if ((sur = SDL_DisplayFormat(sur)) == 0) { fprintf(stderr, "ERR: ssur_displayformat: convertion failed\n"); return 1; } return 0; } /* lock surface */ void SS_Bgn(SDL_Surface *sur) { if (SDL_MUSTLOCK(sur)) SDL_LockSurface(sur); } /* unlock surface */ void SS_End(SDL_Surface *sur) { if (SDL_MUSTLOCK(sur)) SDL_UnlockSurface(sur); } /* blit surface with destination D_DST and source D_SRC using it's actual alpha and color key settings */ void SS_Blt(void) { #ifdef SDL_1_1_5 if (sdl.s.s->flags & SDL_SRCALPHA) SDL_SetAlpha(sdl.s.s, SDL_SRCALPHA, 255 - sdl.s.s->format->alpha); #endif SDL_BlitSurface(sdl.s.s, &sdl.s.r, sdl.d.s, &sdl.d.r); #ifdef SDL_1_1_5 if (sdl.s.s->flags & SDL_SRCALPHA) SDL_SetAlpha(sdl.s.s, SDL_SRCALPHA, 255 - sdl.s.s->format->alpha); #endif } /* do an alpha blit */ void SS_ABlt(int alpha) { #ifdef SDL_1_1_5 SDL_SetAlpha(sdl.s.s, SDL_SRCALPHA, 255 - alpha); #else SDL_SetAlpha(sdl.s.s, SDL_SRCALPHA, alpha); #endif SDL_BlitSurface(sdl.s.s, &sdl.s.r, sdl.d.s, &sdl.d.r); SDL_SetAlpha(sdl.s.s, 0, 0); } /* fill surface with color c */ void SS_Fill(int c) { SDL_FillRect(sdl.d.s, &sdl.d.r, SDL_MapRGB(sdl.d.s->format, c >> 16, (c >> 8) & 0xFF, c & 0xFF)); } /* get pixel */ Uint32 get_pixel( SDL_Surface *surf, int x, int y ) { int pos = 0; Uint32 pixel = 0; pos = y * surf->pitch + x * surf->format->BytesPerPixel; memcpy( &pixel, surf->pixels + pos, surf->format->BytesPerPixel ); return pixel; } // sdl font // /* load a font using the width values in the file */ SFnt* SF_Ld(char *fname) { SFnt *fnt = 0; FILE *file = 0; char path[strlen(SRC_DIR)+ strlen(fname) + 2]; int i; sprintf(path, "%s/%s", SRC_DIR, fname); fnt = malloc(sizeof(SFnt)); if (fnt == 0) { fprintf(stderr, "ERR: sfnt_load: not enough memory\n"); exit(1); } if ((fnt->ss = SS_Ld(fname, SDL_SWSURFACE)) == 0) exit(1); fnt->algn = TA_X_L | TA_Y_T; fnt->clr = 0x00FFFFFF; fnt->h = fnt->ss->h; //table file = fopen(path, "r"); fseek(file, -1, SEEK_END); fread(&fnt->off, 1, 1, file); #ifdef DEBUG printf("offset: %i\n", fnt->off); #endif fseek(file, -2, SEEK_END); fread(&fnt->len, 1, 1, file); #ifdef DEBUG printf("number: %i\n", fnt->len); #endif fseek(file, -2 - fnt->len, SEEK_END); fread(fnt->lw, 1, fnt->len, file); #ifdef DEBUG printf("letter width: %i\n", fnt->len); for (i = 0; i < fnt->len; i++) printf("%i ", fnt->lw[i]); printf("\n"); #endif fclose(file); //letter offsets fnt->loff[0] = 0; for (i = 1; i < fnt->len; i++) fnt->loff[i] = fnt->loff[i - 1] + fnt->lw[i - 1]; //allowed keys memset(fnt->keys, 0, 256); for (i = 0; i < fnt->len; i++) { fnt->keys[i + fnt->off] = 1; } fnt->lX = fnt->lY = fnt->lW = fnt->lH = 0; return fnt; } /* load a font with fixed size */ SFnt* SF_LdFxd(char *f, int off, int len, int w) { int i; SFnt *fnt; char path[strlen(SRC_DIR)+ strlen(f) + 2]; sprintf(path, "%s/%s", SRC_DIR, f); fnt = malloc(sizeof(SFnt)); if (fnt == 0) { fprintf(stderr, "ERR: sfnt_load: not enough memory\n"); exit(1); } if ((fnt->ss = SS_Ld(f, SDL_SWSURFACE)) == 0) exit(1); fnt->algn = TA_X_L | TA_Y_T; fnt->clr = 0x00FFFFFF; fnt->h = fnt->ss->h; fnt->off = off; fnt->len = len; for (i = 0; i < len; i++) fnt->lw[i] = w; //letter offsets fnt->loff[0] = 0; for (i = 1; i < fnt->len; i++) fnt->loff[i] = fnt->loff[i - 1] + w; //allowed keys memset(fnt->keys, 0, 256); for (i = 0; i < fnt->len; i++) { fnt->keys[i + fnt->off] = 1; } fnt->lX = fnt->lY = fnt->lW = fnt->lH = 0; return fnt; } /* free memory */ void SF_Fr(SFnt *fnt) { if (fnt->ss) SDL_FreeSurface(fnt->ss); free(fnt); } /* write something with transparency */ int SF_Wrt(SFnt *fnt, SDL_Surface *dest, int x, int y, char *str, int alpha) { int c_abs; int len = strlen(str); int pix_len = 0; int px = x, py = y; int i; SDL_Surface *spf = SDL_GetVideoSurface(); pix_len = SF_TxtW(fnt, str); for (i = 0; i < len; i++) if (!fnt->keys[(int)str[i]]) str[i] = ' '; //alignment if (fnt->algn & TA_X_C) px -= pix_len >> 1; else if (fnt->algn & TA_X_R) px -= pix_len; if (fnt->algn & TA_Y_C) py -= fnt->h >> 1; else if (fnt->algn & TA_Y_B) py -= fnt->h; fnt->lX = px; if (fnt->lX < 0) fnt->lX = 0; fnt->lY = py; if (fnt->lY < 0) fnt->lY = 0; fnt->lW = pix_len; if (fnt->lX + fnt->lW >= spf->w) fnt->lW = spf->w - fnt->lX; fnt->lH = fnt->h; if (fnt->lY + fnt->lH >= spf->h) fnt->lH = spf->h - fnt->lY; if (alpha != 0) SDL_SetAlpha(fnt->ss, SDL_SRCALPHA, alpha); else SDL_SetAlpha(fnt->ss, 0, 0); for (i = 0; i < len; i++) { c_abs = str[i] - fnt->off; D_DST(dest, px, py, fnt->lw[c_abs], fnt->h); D_SRC(fnt->ss, fnt->loff[c_abs], 0); SS_Blt(); px += fnt->lw[c_abs]; } return 0; } /* lock font surface */ void SF_Bgn(SFnt *fnt) { SS_Bgn(fnt->ss); } /* unlock font surface */ void SF_End(SFnt *fnt) { SS_End(fnt->ss); } /* return last update region */ SDL_Rect SF_LstR(SFnt *fnt) { SDL_Rect rect={fnt->lX, fnt->lY, fnt->lW, fnt->lH}; return rect; } /* return the text width in pixels */ int SF_TxtW(SFnt *fnt, char *str) { unsigned int i; int pix_len = 0; for (i = 0; i < strlen(str); i++) pix_len += fnt->lw[str[i] - fnt->off]; return pix_len; } // sdl // /* initialize sdl */ void Sdl_Ini(int f) { sdl.scr = 0; if (SDL_Init(f) < 0) { fprintf(stderr, "ERR: sdl_init: %s", SDL_GetError()); exit(1); } SDL_EnableUNICODE(1); atexit(SDL_Quit); } /* free screen */ void Sdl_Qut() { if (sdl.scr) SDL_FreeSurface(sdl.scr); } /* set video mode and give information about hardware capabilities */ int Sdl_StVdMd(int w, int h, int d, int f) { int depth; #ifdef DEBUG SDL_PixelFormat *fmt; #endif if (sdl.scr) { SDL_FreeSurface(sdl.scr); } else { /* load window icon on first time setup */ SDL_Surface *icon; if ((icon = SDL_LoadBMP(SRC_DIR "/gfx/win_icon.bmp")) != NULL) { SDL_SetColorKey(icon, SDL_SRCCOLORKEY, SDL_MapRGB(icon->format,255,255,255)); SDL_WM_SetIcon(icon, NULL); } } // is this mode is supported depth = SDL_VideoModeOK(w, h, d, f); if ( depth == 0 ) { fprintf(stderr, "ERR: SDL_VideoModeOK says mode %ix%ix%i is invalid...\ntrying to emulate with 16 bits depth\n", w, h, d); depth = 16; } // set video mode if ((sdl.scr = SDL_SetVideoMode(w, h, depth, f)) == 0) { fprintf(stderr, "ERR: sdl_setvideomode: %s", SDL_GetError()); return 1; } #ifdef DEBUG if (f & SDL_HWSURFACE && !(sdl.scr->flags & SDL_HWSURFACE)) fprintf(stderr, "unable to create screen in hardware memory...\n"); if (f & SDL_DOUBLEBUF && !(sdl.scr->flags & SDL_DOUBLEBUF)) fprintf(stderr, "unable to create double buffered screen...\n"); if (f & SDL_FULLSCREEN && !(sdl.scr->flags & SDL_FULLSCREEN)) fprintf(stderr, "unable to switch to fullscreen...\n"); fmt = sdl.scr->format; printf("video mode format:\n"); printf("Masks: R=%i, G=%i, B=%i\n", fmt->Rmask, fmt->Gmask, fmt->Bmask); printf("LShft: R=%i, G=%i, B=%i\n", fmt->Rshift, fmt->Gshift, fmt->Bshift); printf("RShft: R=%i, G=%i, B=%i\n", fmt->Rloss, fmt->Gloss, fmt->Bloss); printf("BBP: %i\n", fmt->BitsPerPixel); printf("-----\n"); #endif return 0; } /* show hardware capabilities */ void Sdl_HwCps() { const SDL_VideoInfo *vi = SDL_GetVideoInfo(); char *ny[2] = {"No", "Yes"}; printf("video hardware capabilities:\n"); printf("Hardware Surfaces: %s\n", ny[vi->hw_available]); printf("HW_Blit (CC, A): %s (%s, %s)\n", ny[vi->blit_hw], ny[vi->blit_hw_CC], ny[vi->blit_hw_A]); printf("SW_Blit (CC, A): %s (%s, %s)\n", ny[vi->blit_sw], ny[vi->blit_sw_CC], ny[vi->blit_sw_A]); printf("HW_Fill: %s\n", ny[vi->blit_fill]); printf("Video Memory: %i\n", vi->video_mem); printf("------\n"); } /* update just one rect */ void Sdl_Upd(int x, int y, int w, int h) { SDL_UpdateRect(sdl.scr, x, y, w, h); } /* do a full update */ void Sdl_FUpd() { SDL_UpdateRect(sdl.scr, 0, 0, 0 ,0); } /* draw all update regions */ void Sdl_UpdR() { if (sdl.rnum == SDL_MAX_RGNS) SDL_UpdateRect(sdl.scr, 0, 0, sdl.scr->w, sdl.scr->h); else SDL_UpdateRects(sdl.scr, sdl.rnum, sdl.rgns); sdl.rnum = 0; } /* add update region */ void Sdl_AddR(int x, int y, int w, int h) { if (sdl.rnum == SDL_MAX_RGNS) return; if (x < 0) { w += x; x = 0; } if (y < 0) { h += y; y = 0; } if (x + w > sdl.scr->w) w = sdl.scr->w - x; if (y + h > sdl.scr->h) h = sdl.scr->h - y; if (w <= 0 || h <= 0) return; sdl.rgns[sdl.rnum].x = x; sdl.rgns[sdl.rnum].y = y; sdl.rgns[sdl.rnum].w = w; sdl.rgns[sdl.rnum].h = h; sdl.rnum++; } /* fade screen to black */ void Sdl_Dim(int steps, int delay, int trp) { #ifndef NODIM SDL_Surface *buffer; int per_step = trp / steps; int i; if (trm_gm) return; buffer = SS_Crt(sdl.scr->w, sdl.scr->h, SDL_SWSURFACE); SDL_SetColorKey(buffer, 0, 0); D_FDST(buffer); D_FSRC(sdl.scr); SS_Blt(); for (i = 0; i <= trp; i += per_step) { D_FDST(sdl.scr); SS_Fill(0x0); D_FSRC(buffer); SS_ABlt(i); Sdl_FUpd(); SDL_Delay(delay); } if (trp == 255) { D_FDST(sdl.scr); SS_Fill(0x0); Sdl_FUpd(); } SDL_FreeSurface(buffer); #else Sdl_FUpd(); #endif } /* undim screen */ void Sdl_UnDim(int steps, int delay, int trp) { #ifndef NODIM SDL_Surface *buffer; int per_step = trp / steps; int i; if (trm_gm) return; buffer = SS_Crt(sdl.scr->w, sdl.scr->h, SDL_SWSURFACE); SDL_SetColorKey(buffer, 0, 0); D_FDST(buffer); D_FSRC(sdl.scr); SS_Blt(); for (i = trp; i >= 0; i -= per_step) { D_FDST(sdl.scr); SS_Fill(0x0); D_FSRC(buffer); SS_ABlt(i); Sdl_FUpd(); SDL_Delay(delay); } D_FDST(sdl.scr); D_FSRC(buffer); SS_Blt(); Sdl_FUpd(); SDL_FreeSurface(buffer); #else Sdl_FUpd(); #endif } /* wait for a key */ int Sdl_WtFrKy() { //wait for key SDL_Event event; while (1) { SDL_WaitEvent(&event); if (event.type == SDL_QUIT) { trm_gm = 1; return 0; } if (event.type == SDL_KEYUP) return event.key.keysym.sym; } } /* wait for a key or mouse click */ void Sdl_WtFrClk() { //wait for key or button SDL_Event event; while (1) { SDL_WaitEvent(&event); if (event.type == SDL_QUIT) { trm_gm = 1; return; } if (event.type == SDL_KEYUP || event.type == SDL_MOUSEBUTTONUP) return; } } /* lock surface */ void Sdl_Bgn() { if (SDL_MUSTLOCK(sdl.scr)) SDL_LockSurface(sdl.scr); } /* unlock surface */ void Sdl_End() { if (SDL_MUSTLOCK(sdl.scr)) SDL_UnlockSurface(sdl.scr); } /* flip hardware screens (double buffer) */ void Sdl_Flp() { SDL_Flip(sdl.scr); } lmarbles-1.0.7.orig/src/sdl.h0000600000175000017500000000676507524047645014206 0ustar uweuwe/*************************************************************************** sdl.h - description ------------------- begin : Thu Apr 20 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef SDL_H #define SDL_H #include #include #ifdef __cplusplus extern "C" { #endif // draw region // #define D_SRC(p, i, j) {sdl.s.s = p; sdl.s.r.x = i; sdl.s.r.y = j; sdl.s.r.w = sdl.d.r.w; sdl.s.r.h = sdl.d.r.h;} #define D_DST(p, i, j, k, l) {sdl.d.s = p; sdl.d.r.x = i; sdl.d.r.y = j; sdl.d.r.w = k; sdl.d.r.h = l;} #define D_FSRC(p) {sdl.s.s = p; sdl.s.r.x = 0; sdl.s.r.y = 0; sdl.s.r.w = sdl.d.r.w; sdl.s.r.h = sdl.d.r.h;} #define D_FDST(p) {sdl.d.s = p; sdl.d.r.x = 0; sdl.d.r.y = 0; sdl.d.r.w = (p)->w; sdl.d.r.h = (p)->h;} typedef struct { SDL_Surface *s; SDL_Rect r; } DrawRgn; // Sdl Surface // #define SDL_NONFATAL 0x10000000 SDL_Surface* SS_Ld(char *fname, int f); SDL_Surface* SS_Crt(int w, int h, int f); int SS_DpyFmt(SDL_Surface *sur); void SS_Bgn(SDL_Surface *sur); void SS_End(SDL_Surface *sur); void SS_Blt(void); void SS_ABlt(int alpha); void SS_Fill(int c); Uint32 get_pixel( SDL_Surface *surf, int x, int y ); // Sdl Font // #define TA_X_L (1L<<1) #define TA_X_C (1L<<2) #define TA_X_R (1L<<3) #define TA_Y_T (1L<<4) #define TA_Y_C (1L<<5) #define TA_Y_B (1L<<6) typedef struct { SDL_Surface *ss; int algn; int clr; int h; char lw[256]; int loff[256]; char keys[256]; char off; char len; //last written rect int lX; int lY; int lW; int lH; } SFnt; SFnt* SF_Ld(char *fname); SFnt* SF_LdFxd(char *fname, int off, int len, int w); void SF_Fr(SFnt *sfnt); int SF_Wrt(SFnt *sfnt, SDL_Surface *dest, int x, int y, char *str, int alpha); void SF_Bgn(SFnt *sfnt); void SF_End(SFnt *sfnt); SDL_Rect SF_LstR(SFnt *fnt); int SF_TxtW(SFnt *fnt, char *str); // Sdl // #define SDL_MAX_RGNS 200 #define SDL_DIM_STEPS 8 #define SDL_DIM_DELAY 20 #define SDL_DIM() Sdl_Dim(SDL_DIM_STEPS, SDL_DIM_DELAY, 255) #define SDL_UNDIM() Sdl_UnDim(SDL_DIM_STEPS, SDL_DIM_DELAY, 255) typedef struct { SDL_Surface *scr; DrawRgn d, s; int rnum; SDL_Rect rgns[SDL_MAX_RGNS]; } Sdl; void Sdl_Ini(int f); void Sdl_Qut(); int Sdl_StVdMd(int w, int h, int d, int f); void Sdl_HwCps(); void Sdl_Upd(int x, int y, int w, int h); void Sdl_FUpd(); void Sdl_UpdR(); void Sdl_AddR(int x, int y, int w, int h); void Sdl_Dim(int steps, int delay, int trp); void Sdl_UnDim(int steps, int delay, int trp); int Sdl_WtFrKy(); void Sdl_WtFrClk(); // hardware funcs // void Sdl_Bgn(); void Sdl_End(); void Sdl_Flp(); #ifdef __cplusplus }; #endif #endif lmarbles-1.0.7.orig/src/empty.prfs0000600000175000017500000000004007426033210015241 0ustar uweuweMichaellmarbles-1.0.7.orig/src/win32.ico0000600000175000017500000003014607523001044014655 0ustar uweuwe(h  00hV00!( pL@|pD @Gwp|p|Gxp|@pwpDDH@???##???( )1! !)()),)R Zc s R<9Z<9k<9s<9{<9ZYZZ]Zsik  <9<9<9    01414189ABEBikikYZ]Z #- *' ,+ 21 " /+  *-&/4/,(- 3/2*  &-$*???##???(0 LD @ x@G@0@D@w@D@DwwdnjwȌLD LT|@W`@LD @ @LtÇÇ(0@)19  !! !!$)9<9BB JJ R s BABJQRRQRRURZYZZ]Zsqssus{}{      89ABQRus   !"'&# $*+%!()' $       !   !"'&# -,"'&# $*+%!12- $*+%!()' /0.()' $  $    !"'&# $*+%!()' $ ÇÇ( @`LĽP̈dp |@|HtGwx p@DDpqDD@pDpwvDDDwww@Lxwnj@Epw̌Hdww\ FHppl`pDD@LDpLPL`LtPH???80 0 8???( @!)) 11 99 ! !!$!)()),)1419<9BB JJ R ZZ c k ss {{ B<9J<9R<9c<9BABJIJRURZYZZ]Zceckikkmk{iksqssus{y{        <9       ! !$!(),)014189ikikABEBIJMJUR]Zmkus}{nn( & :E? nGSVNK= .gjg3."QVSLH:N`f_NF% 1ksqi/:VceYH?oB_dbVE%1+mpsm1]U`d_N=nDTYRN?33mjg/1@XXRH<'AK<o5+3,3oIH"iiii1 1n6" n>FF?6i>QSQKE iiHVc_NH8iAVeeXK:P_[SK%DBNF:)oo???80 0 8???(0`D@DDd@lD LT||@dALȌ|@ |B |DD@D44$DFDd@aaCdED@@lD ww4dLTqwww$0lE||@wxwwR\|ddAwwqax||@LȌ|Bwaȇl@ |@r@|A xq|Dwww w`lD@@@FtFL\D\AȌ|@\w@ |@ ||lF l????????(0` ! 1  !)()141J c BEBRQRRURcacsqs      ()89EBQR]Zqs         &                   !!   !#$#"!    !%((%"    &  #$'*)%!  &   "%%''%"  #%%"#!  """              &     ????????lmarbles-1.0.7.orig/src/lmarbles.60000600000175000017500000000235210061600713015104 0ustar uweuwe.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .TH MARBLES 6 "February 14, 2001" .SH NAME marbles \- build figures out of colored marbles .SH SYNOPSIS .B marbles .SH DESCRIPTION This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page. .PP You goal in the puzzle game .B marbles is to create a more or less complex figure out of single marbles within a time limit to reach the next level. Sounds easy? Well, there is a problem: If a marble starts to move, it will not stop until it hits a wall or another marble. .SH OPTIONS None. .SH FILES .TP .IP "~/.marbles.cfg" Automatically generated configfile. This is not meant for human editing. .TP .IP "/var/lib/games/lmarbles.prfs" Global preferences and score file. Not for human editing. .SH BUGS Please report any bugs you find to Michael Speck .SH LICENCE .B marbles is covered by the GNU General Public License(GPL). .SH SEE ALSO .BR lbreakout (1) .PP /usr/share/doc/marbles/* .SH AUTHOR Michael Speck .PP This manual page was written by Uwe Hermann , for the Debian GNU/Linux system (but may be used by others). lmarbles-1.0.7.orig/src/timer.c0000600000175000017500000000255007736356341014524 0ustar uweuwe/*************************************************************************** timer.c - description ------------------- begin : Mon Aug 14 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include "timer.h" #include "sdl.h" int t_c, t_lc; /* get milliseconds since last call */ int T_Gt() { int ms; t_c = SDL_GetTicks(); ms = t_c - t_lc; t_lc = t_c; if (ms == 0) { ms = 1; SDL_Delay(1); } return ms; } /* reset timer */ void T_Rst() { t_lc = SDL_GetTicks(); } lmarbles-1.0.7.orig/src/timer.h0000600000175000017500000000207007206540570014515 0ustar uweuwe/*************************************************************************** timer.h - description ------------------- begin : Mon Aug 14 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef TIMER_H #define TIMER_H int T_Gt(); void T_Rst(); #endif lmarbles-1.0.7.orig/src/file.c0000600000175000017500000000763107250440452014314 0ustar uweuwe/*************************************************************************** file.c - description ------------------- begin : Tue Sep 26 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "file.h" #include #include int f_ln = 0; /* read an entry and return if the correct flag is set else read next entry */ void F_GetE(FILE *f, char *str, int flgs) { int i = 0; char c; str[0] = 0; while (!feof(f)) { fread(&c, 1/*sizeof(char)*/, 1, f); /* MUST BE exactly on byte */ if (c == 10) { f_ln++; // increase line counter // continue; // ignore returns // } str[i++] = c; str[i] = 0; if ( (c == ';' && flgs & F_VAL) || (c == '>' && flgs & F_SUB) || (c == ')' && flgs & F_COM) ) break; if (c == ';' || c == '>' || c == ')') i = 0; } if (i == 1) str[0] = 0; } /* returns the first character bigger than 32 */ char F_FstC(char *str, char **n) { int i = 0; while (str[i] <= 32) { i++; if (i >= strlen(str)) return 0; } *n = str + i; return str[i]; } /* returns the last character bigger than 32 */ char F_LstC(char *str) { int i = strlen(str) - 1; while (str[i] <= 32) { i--; if (i <= 0) return 0; } return str[i]; } /* read value to v */ int F_GetV(char *str, char *v) { int i; char *n; for (i = 0; i < strlen(str); i++) if (str[i] == '=') { F_FstC(str + i + 1, &n); strcpy(v, n); v[strlen(v) - 1] = 0; // mask semicolon return 1; } return 0; } /* check entry for type and target name and assign p the value */ int F_CkE(char *str, int t, char *nm, char *v) { char *n; if (strlen(str) == 0) return 0; if (t & F_VAL) { F_FstC(str, &n); if (strncmp(nm, n, strlen(nm))) return 0; if (v != 0 ) return F_GetV(str, v); else return 0; } else if (t & F_SUB) { F_FstC(str, &n); if (!strncmp(nm, n, strlen(nm))) return 1; } else if (t & F_COM && F_FstC(str, 0) == '(' && F_LstC(str) == ')') return 1; return 0; } /* write an entry with a semicolon at its end */ void F_WrtE(FILE *f, char *str) { char f_str[strlen(str) + 2]; sprintf(f_str, "%s;", str); fwrite(f_str, strlen(f_str), 1, f); } /* convert an integer to string */ void F_IntToStr(char *str, int i) { sprintf(str,"%i", i); } /* convert an float to string */ void F_FloatToStr(char *str, float f) { sprintf(str,"%2.2f",f); } /* convert a value only containing one integer */ void F_ValToInt(char *str, int *i) { str[strlen(str) - 1] = 0; *i = atoi(str); } /* convert a value only containing one float */ void F_ValToFloat(char *str, float *f) { str[strlen(str) - 1] = 0; *f = (float)strtod(str, 0); } /* convert a value only containing one character */ void F_ValToChar(char *str, char *c) { str[strlen(str) - 1] = 0; *c = (char)atoi(str); } lmarbles-1.0.7.orig/src/file.h0000600000175000017500000000265707214524370014326 0ustar uweuwe/*************************************************************************** file.h - description ------------------- begin : Tue Sep 26 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef FILE_H #define FILE_H #include #define F_SUB 0x0001 #define F_COM 0x0002 #define F_VAL 0x0004 void F_GetE(FILE *f, char *str, int flgs); int F_CkE(char *str, int t, char *nm, char *v); void F_WrtE(FILE *f, char *str); void F_IntToStr(char *str, int i); void F_FloatToStr(char *str, float f); void F_ValToInt(char *str, int *i); void F_ValToFloat(char *str, float *f); void F_ValToChar(char *str, char *c); #endif lmarbles-1.0.7.orig/src/game.c0000600000175000017500000022263507524340171014312 0ustar uweuwe/*************************************************************************** game.c - description ------------------- begin : Mon Aug 14 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "game.h" #include #include #include #include "file.h" #include "cfg.h" #include "menu.h" #include "timer.h" Game gm; /* levelset names & levelsets -- levels.h */ extern char **ls_lst; extern int ls_n; extern DLst l_sts; /* line counter -- file.c */ extern int f_ln; /* config -- cfg.c */ extern Cfg cfg; /* Sdl -- sdl.c */ extern Sdl sdl; /* profiles -- profile.c */ extern DLst prfs; /* terminate game -- sdl.c */ extern int trm_gm; void modify_score( int *b_lvl, int *b_tm ); /* initialize game */ void G_Ini() { FILE *f; int i; char str[256]; int ok = 0; // cursors // char data[32], mask[32]; char csr[6][256] = { { 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }, { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, }, { 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 2, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 2, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 0, 0, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 0, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 0, 2, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 0, 0, 0, 2, 1, 2, 1, 1, 2, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 2, 1, 2, 2, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 2, 2, 1, 2, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 2, 1, 1, 2, 1, 2, 0, 0, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 2, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 2, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, }, { 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 0, 0, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 2, 1, 1, 1, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 1, 1, 1, 2, 0, 0, 2, 1, 1, 1, 2, 0, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 2, 1, 1, 1, 1, 2, 0, 2, 1, 1, 1, 1, 1, 2, 0, 0, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, }, { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 2, 0, 0, 2, 1, 1, 2, 2, 2, 0, 0, 2, 2, 1, 1, 1, 2, 0, 0, 0, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 2, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 2, 0, 0, 0, 2, 1, 2, 0, 2, 1, 1, 1, 1, 2, 0, 2, 1, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 0, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, } }; // initialize dyn list l_sts DL_Ini(&l_sts); l_sts.flgs = DL_AUTODEL; l_sts.cb = L_DelSt; // load level sets printf("loading levelsets...\n"); for (i = 0; i < ls_n; i++) { printf("%s... ", ls_lst[i]); sprintf(str, "%s/levels/%s", SRC_DIR, ls_lst[i]); f = fopen(str, "r"); if (f != 0) { f_ln = 1; if (L_LdSt(f)) { ok = 1; strcpy(((LSet*)l_sts.tl.p->d)->nm, ls_lst[i]); } else L_AddInvSt(ls_lst[i]); fclose(f); } else { L_AddInvSt(ls_lst[i]); printf("WARNING: levelset not found...\n"); } } // found something ? // if (!ok) { printf("ERROR: no valid level set found; need at least one level set...\n"); exit(1); } /* clear gm struct */ //memset( &gm, 0, sizeof( gm ) ); // initialize gfx set DL_Ini(&gm.g_sts); gm.g_sts.flgs = DL_AUTODEL; gm.g_sts.cb = G_DelGSt; // load gfx sets G_LdGSts(); // load board gm.s_brd = SS_Ld("gfx/board.bmp", SDL_SWSURFACE); SDL_SetColorKey(gm.s_brd, 0, 0); // load lights gm.s_lghts = SS_Ld("gfx/lights.bmp", SDL_SWSURFACE); // load marbles gm.s_mrb = SS_Ld("gfx/marbles.bmp", SDL_SWSURFACE); // load figure gm.s_fig = SS_Ld("gfx/figure.bmp", SDL_SWSURFACE); // load marble frame gm.s_mf = SS_Ld("gfx/m_frame.bmp", SDL_SWSURFACE); // load marble select frame gm.s_msf = SS_Ld("gfx/m_sframe.bmp", SDL_SWSURFACE); // background // gm.s_bkgd = 0; // load fonts gm.f_sml = SF_LdFxd("gfx/f_small.bmp", 32, 96, 8); gm.f_wht = SF_LdFxd("gfx/f_white.bmp", 32, 96, 10); gm.f_rd = SF_LdFxd("gfx/f_red.bmp", 32, 96, 10); // level gm.c_lvl = 0; // marble gm.m_v = 0.15; gm.m_a.p = 0; gm.m_a.f = 4; gm.m_a.c = 0.016 + 0.008; gm.m_a.w = gm.m_a.h = 32; gm.m_act = M_EMPTY; gm.m_o_x = gm.m_o_y = -1; gm.m_warp = 0; // marble select frame gm.msf_a.f = 4; gm.msf_a.w = gm.msf_a.h = 40; gm.msf_a.c = 0.02; gm.msf_a.p = 0; // marble frame gm.mf_a.f = 4; gm.mf_a.w = gm.mf_a.h = 40; gm.mf_a.c = 0.02; gm.mf_a.p = 0; // layout gm.b_x = 640 - 200; gm.f_x = 35; gm.f_y = 145; gm.i_x = 20; gm.i_y = 25; gm.t_x = 40; gm.t_y = 105; gm.s_x = 15; gm.s_y = 290; // geometry gm.t_w = gm.t_h = 32; gm.f_w = gm.f_h = 12; gm.f_fw = gm.f_fh = 130; gm.scr_w = 640; gm.scr_h = 480; gm.brd_w = 200; gm.s_w = 170; gm.s_h = 175; gm.c_off = 12; // cursors memset(data, 0, sizeof(data)); gm.c_u = gm.c_d = gm.c_l = gm.c_r = gm.c_s = gm.c_w = 0; gm.c_n = SDL_GetCursor(); Cr_Ld(csr[0], data, mask); gm.c_u = SDL_CreateCursor(data, mask, 16, 16, 8, 8); Cr_Ld(csr[1], data, mask); gm.c_d = SDL_CreateCursor(data, mask, 16, 16, 8, 8); Cr_Ld(csr[2], data, mask); gm.c_r = SDL_CreateCursor(data, mask, 16, 16, 8, 8); Cr_Ld(csr[3], data, mask); gm.c_l = SDL_CreateCursor(data, mask, 16, 16, 8, 8); Cr_Ld(csr[4], data, mask); gm.c_s = SDL_CreateCursor(data, mask, 16, 16, 8, 8); Cr_Ld(csr[5], data, mask); gm.c_w = SDL_CreateCursor(data, mask, 16, 16, 8, 8); // map animations gm.m_ani = 0; // oneway animation info gm.ma_ow_a.f = 4; gm.ma_ow_a.c = 0.008; gm.ma_ow_a.p = 0; gm.ma_ow_a.w = gm.t_w; gm.ma_ow_a.h = gm.t_h; // teleport information gm.ma_tlp_a.f = 4; gm.ma_tlp_a.c = 0.008; gm.ma_tlp_a.p = 0; gm.ma_tlp_a.w = gm.t_w; gm.ma_tlp_a.h = gm.t_h; gm.tlp_a = 32; // sounds #ifdef SOUND gm.wv_tlp = sound_chunk_load("teleport.wav"); gm.wv_sel = sound_chunk_load("select.wav"); gm.wv_stp = sound_chunk_load("stop.wav"); gm.wv_clk = sound_chunk_load("click.wav"); gm.wv_exp = sound_chunk_load("explode.wav"); gm.wv_alm = sound_chunk_load("alarm.wav"); gm.wv_arw = sound_chunk_load("arrow.wav"); gm.wv_scr = sound_chunk_load("score.wav"); #endif // shrapnells DL_Ini(&gm.shr); gm.shr.flgs = DL_AUTODEL; gm.shr.cb = Shr_Del; gm.shr_a_c = 0.1; // credits gm.cr_a_c = 0.1; gm.cr_tm = 3000; gm.cr_y = 10; // shnapshot gm.snap = 0; } /* terminate game */ void G_Trm() { // release gfx if (gm.s_brd) SDL_FreeSurface(gm.s_brd); if (gm.s_lghts) SDL_FreeSurface(gm.s_lghts); if (gm.s_mrb) SDL_FreeSurface(gm.s_mrb); if (gm.s_fig) SDL_FreeSurface(gm.s_fig); if (gm.s_mf) SDL_FreeSurface(gm.s_mf); if (gm.s_msf) SDL_FreeSurface(gm.s_msf); // release fonts if (gm.f_sml) SF_Fr(gm.f_sml); if (gm.f_wht) SF_Fr(gm.f_wht); if (gm.f_rd) SF_Fr(gm.f_rd); // release dynlists DL_Clr(&gm.g_sts); DL_Clr(&l_sts); DL_Clr(&gm.shr); // cursors // if (gm.c_u) SDL_FreeCursor(gm.c_u); if (gm.c_d) SDL_FreeCursor(gm.c_d); if (gm.c_l) SDL_FreeCursor(gm.c_l); if (gm.c_r) SDL_FreeCursor(gm.c_r); if (gm.c_s) SDL_FreeCursor(gm.c_s); if (gm.c_w) SDL_FreeCursor(gm.c_w); // free map animations // if (gm.m_ani) free(gm.m_ani); // sounds #ifdef SOUND if (gm.wv_tlp) sound_chunk_free(&gm.wv_tlp); if (gm.wv_sel) sound_chunk_free(&gm.wv_sel); if (gm.wv_stp) sound_chunk_free(&gm.wv_stp); if (gm.wv_clk) sound_chunk_free(&gm.wv_clk); if (gm.wv_exp) sound_chunk_free(&gm.wv_exp); if (gm.wv_alm) sound_chunk_free(&gm.wv_alm); if (gm.wv_arw) sound_chunk_free(&gm.wv_arw); if (gm.wv_scr) sound_chunk_free(&gm.wv_scr); #endif } /* open a new game */ int G_Opn() { Prf *p; DL_E *e; int flgs = SDL_SWSURFACE; // get current level set gm.c_l_st = (LSet*)DL_Get(&l_sts, cfg.ls); // check if current level set is valid if (!G_CkLSt()) { // restore menu MM_Shw(MM_RSZ); return 0; } // current profile gm.c_prf = (Prf*)DL_Get(&prfs, cfg.prf); // current set info gm.c_s_inf = Prf_RegLS(gm.c_prf, gm.c_l_st); // dim & resize if (cfg.dim) SDL_DIM(); if (cfg.fscr) flgs = flgs | SDL_FULLSCREEN; Sdl_StVdMd(gm.scr_w, gm.scr_h, 16, flgs); // create background gm.s_bkgd = SS_Crt(gm.scr_w, gm.scr_h, SDL_SWSURFACE); SDL_SetColorKey(gm.s_bkgd, 0, 0); // get highest score gm.hi_scr = 0; e = prfs.hd.n; while (e != &prfs.tl) { p = (Prf*)e->d; if (p->scr > gm.hi_scr) gm.hi_scr = p->scr; e = e->n; } // clear old chapter gm.o_ch = -1; // init first level L_Ini(0, 0); return 1; } /* close game */ void G_Cls() { // dim if (!trm_gm && cfg.dim) SDL_DIM(); // free background if (gm.s_bkgd) SDL_FreeSurface(gm.s_bkgd); // free level free(gm.c_lvl); gm.c_lvl = 0; // restore cursor SDL_SetCursor(gm.c_n); // show menu MM_Shw(MM_RSZ); } /* game's main loop */ void G_Run() { int leave = 0; int restart = 0; int ms; SDL_Event ev; SDL_Surface *buf; int flgs; int restore_pos; int tm_rel = 0; int ign_c_stat = 0; int bonus_level, bonus_moves; /* bonus for level completion and remaining moves */ while (!trm_gm) { // clear input while (SDL_PollEvent(&ev)); // main loop while (!leave && !trm_gm && !gm.l_done && !restart) { // don't consume all cpu time SDL_Delay( 5 ); restore_pos = 0; // do not restore old position ign_c_stat = 0; // do not ignore cursor state // get input if (SDL_PollEvent(&ev)) { switch (ev.type) { case SDL_QUIT: trm_gm = 1; break; case SDL_KEYUP: switch (ev.key.keysym.sym) { case SDLK_TAB: SnapShot(); break; case SDLK_ESCAPE: if (G_CfmQut()) leave = 1; break; case SDLK_p: G_Ps(); break; case SDLK_r: if (G_CfmRst()) restart = 1; break; case SDLK_f: buf = SS_Crt(gm.scr_w, gm.scr_h, SDL_SWSURFACE); D_FDST(buf); D_FSRC(sdl.scr); SS_Blt(); cfg.fscr = !cfg.fscr; flgs = SDL_SWSURFACE; if (cfg.fscr) flgs = flgs | SDL_FULLSCREEN; Sdl_StVdMd(gm.scr_w, gm.scr_h, 16, flgs); D_FDST(sdl.scr); D_FSRC(buf); SS_Blt(); Sdl_FUpd(); break; default: /* if no marble is selected we don't have to check anything */ if ( !gm.m_sel ) break; /* warp? */ if (gm.m_mv && (ev.key.keysym.sym == cfg.k_right || ev.key.keysym.sym == cfg.k_left || ev.key.keysym.sym == cfg.k_up || ev.key.keysym.sym == cfg.k_down)) { gm.m_warp = 1; break; } // undo key if (ev.key.keysym.sym == cfg.k_undo) { restore_pos = 1; #ifdef SOUND sound_play(gm.wv_clk); #endif } // up key if (ev.key.keysym.sym == cfg.k_up && (gm.m_vd & MD_U) && !gm.m_mv) { ign_c_stat = 1; gm.c_stat = C_U; Mr_IniMv(); #ifdef SOUND sound_play(gm.wv_clk); #endif } // down key if (ev.key.keysym.sym == cfg.k_down && (gm.m_vd & MD_D) && !gm.m_mv) { ign_c_stat = 1; gm.c_stat = C_D; Mr_IniMv(); #ifdef SOUND sound_play(gm.wv_clk); #endif } // left key if (ev.key.keysym.sym == cfg.k_left && (gm.m_vd & MD_L) && !gm.m_mv) { ign_c_stat = 1; gm.c_stat = C_L; Mr_IniMv(); #ifdef SOUND sound_play(gm.wv_clk); #endif } // right key if (ev.key.keysym.sym == cfg.k_right && (gm.m_vd & MD_R) && !gm.m_mv) { ign_c_stat = 1; gm.c_stat = C_R; Mr_IniMv(); #ifdef SOUND sound_play(gm.wv_clk); #endif } break; } break; case SDL_MOUSEBUTTONDOWN: break; case SDL_MOUSEBUTTONUP: if ( ev.button.button == 1 && gm.m_mv && ( gm.c_l_st->limit_type == MOVES ) ) { gm.m_warp = 1; break; } gm.bttn[ev.button.button] = 1; if (ev.button.button == 1) { if (gm.c_stat == C_SEL) Mr_Sel(ev.button.x, ev.button.y); else if (gm.m_sel && !gm.m_mv) { // start movement of selected marble Mr_IniMv(); } } else if (gm.m_sel && !gm.m_mv) Mr_Rel(ev.button.x, ev.button.y); break; case SDL_MOUSEMOTION: if ( !ign_c_stat ) Cr_Cng(ev.motion.x, ev.motion.y); gm.o_mx = ev.motion.x; gm.o_my = ev.motion.y; break; default: break; } } // hide if (!leave && !restart) { Mr_Hd(); MF_Hd(); Tm_Hd(); Inf_Hd(); Shr_Hd(); Cr_Hd(); } // update ms = T_Gt(); MA_Upd(ms); if (restore_pos) Mr_ResPos(); if ( !Mr_Upd(ms) ) restart = 1; MF_Upd(ms); Shr_Upd(ms); Cr_Upd(ms); if (!Tm_Upd(ms)) restart = 1; if (Inf_Upd() && G_CfmWrp()) { gm.c_ch = gm.w_c; gm.c_l_id = gm.w_l; restart = 1; } // show if (!leave && !restart) MA_Shw(); if (!leave && !restart) { Mr_Shw(); } if (!leave && !restart && !gm.l_done) { MF_Shw(); Tm_Shw(); Inf_Shw(); Shr_Shw(); Cr_Shw(); // refresh Sdl_UpdR(); } else sdl.rnum = 0; // reset redraw regions // reset buttonstate memset(gm.bttn, 0, sizeof(gm.bttn)); } // leave ? if (leave) break; // init next level if (gm.l_done || restart) { if (gm.l_done) { // figure animation FA_Run(); // bonus summary if ( !gm.c_s_inf->cmp[gm.c_ch * gm.c_s_inf->l_num + gm.c_l_id] ) { /* level wasn't completed until now so gain score for it */ bonus_level = LB_COMPLETED; bonus_moves = gm.c_lvl->tm * LB_PER_MOVE; modify_score( &bonus_level, &bonus_moves ); BS_Run( bonus_level, bonus_moves ); tm_rel = ( 1000 * gm.c_lvl->tm ) / gm.c_l_st->ch[gm.c_ch].lvls[gm.c_l_id].tm; Prf_Upd(gm.c_prf, gm.c_s_inf, gm.c_ch * gm.c_l_st->l_num + gm.c_l_id, tm_rel, bonus_level + bonus_moves ); } } if (cfg.dim) SDL_DIM(); if (!restart) if (!L_FndNxt()) // game finished ? break; L_Ini(gm.c_ch, gm.c_l_id); restart = 0; } } // save profiles Prf_Sv(); } /* load all gfx sets */ void G_LdGSts() { char d_nm[256]; char path[256+64]; DIR *dir = 0; struct dirent *e; struct stat s; GSet *g_st; printf("loading graphics sets...\n"); // create directory string // sprintf(d_nm, "%s/gfx", SRC_DIR); // find and open directory // if ((dir = opendir(d_nm)) == 0) { fprintf(stderr, "ERROR: can't find directory '%s'\n", d_nm); exit(1); } // well, let's check for directories // while ((e = readdir(dir)) != 0) { sprintf(path, "%s/%s", d_nm, e->d_name); stat(path, &s); if (S_ISDIR(s.st_mode) && e->d_name[0] != '.') { printf("'%s'... \n", e->d_name); // load gfx // g_st = (GSet*)malloc(sizeof(GSet)); memset(g_st, 0, sizeof(GSet)); strcpy(g_st->nm, e->d_name); g_st->ok = 1; sprintf(path, "gfx/%s/%s", e->d_name, "background.bmp"); g_st->s_bkgd = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL); SDL_SetColorKey(g_st->s_bkgd, 0, 0); sprintf(path, "gfx/%s/%s", e->d_name, "wall.bmp"); if ((g_st->s_wl = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "floor.bmp"); if ((g_st->s_flr = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "arrow_r.bmp"); if ((g_st->s_r_arw = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "arrow_l.bmp"); if ((g_st->s_l_arw = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "arrow_u.bmp"); if ((g_st->s_u_arw = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "arrow_d.bmp"); if ((g_st->s_d_arw = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "barrier_lr.bmp"); if ((g_st->s_lr_bar = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "barrier_ud.bmp"); if ((g_st->s_ud_bar = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "teleport0.bmp"); if ((g_st->s_tlp_0 = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "teleport1.bmp"); if ((g_st->s_tlp_1 = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "teleport2.bmp"); if ((g_st->s_tlp_2 = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "teleport3.bmp"); if ((g_st->s_tlp_3 = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; sprintf(path, "gfx/%s/%s", e->d_name, "wall_crumble.bmp"); if ((g_st->s_crmbl = SS_Ld(path, SDL_SWSURFACE | SDL_NONFATAL)) == 0) g_st->ok = 0; if (g_st->ok) { printf("ok\n"); // opaque SDL_SetColorKey(g_st->s_flr, 0, 0); SDL_SetColorKey(g_st->s_wl, 0, 0); } DL_Add(&gm.g_sts, g_st); } } closedir(dir); } /* delete a gset */ void G_DelGSt(void *p) { GSet *st = (GSet*)p; if (st->s_bkgd) SDL_FreeSurface(st->s_bkgd); if (st->s_wl) SDL_FreeSurface(st->s_wl); if (st->s_flr) SDL_FreeSurface(st->s_flr); if (st->s_u_arw) SDL_FreeSurface(st->s_u_arw); if (st->s_d_arw) SDL_FreeSurface(st->s_d_arw); if (st->s_r_arw) SDL_FreeSurface(st->s_r_arw); if (st->s_l_arw) SDL_FreeSurface(st->s_l_arw); if (st->s_lr_bar) SDL_FreeSurface(st->s_lr_bar); if (st->s_ud_bar) SDL_FreeSurface(st->s_ud_bar); if (st->s_tlp_0) SDL_FreeSurface(st->s_tlp_0); if (st->s_tlp_1) SDL_FreeSurface(st->s_tlp_1); if (st->s_tlp_2) SDL_FreeSurface(st->s_tlp_2); if (st->s_tlp_3) SDL_FreeSurface(st->s_tlp_3); if (st->s_crmbl) SDL_FreeSurface(st->s_crmbl); free(st); } /* pause game */ void G_Ps() { SFnt *ft = gm.f_sml; SDL_Surface *buf; char str[256]; SDL_Event e; int leave = 0; int flgs; int mx = gm.o_mx, my = gm.o_my; // save screen // buf = SS_Crt(gm.scr_w, gm.scr_h, SDL_SWSURFACE); SDL_SetColorKey(buf, 0, 0); D_FDST(buf); D_FSRC(sdl.scr); SS_Blt(); // cursor SDL_SetCursor(gm.c_n); // fill with black D_FDST(sdl.scr); SS_Fill(0x0); // write info ft->algn = TA_X_C | TA_Y_C; sprintf(str, "Game paused"); SF_Wrt(ft, sdl.scr, gm.scr_w / 2, gm.scr_h / 2, str, 0); Sdl_FUpd(); // wait for 'p' while (!leave) { SDL_WaitEvent(&e); switch (e.type) { case SDL_QUIT: trm_gm = 1; leave = 1; break; case SDL_KEYUP: if (e.key.keysym.sym == SDLK_p) leave = 1; if (e.key.keysym.sym == SDLK_f) { cfg.fscr = !cfg.fscr; flgs = SDL_SWSURFACE; if (cfg.fscr) flgs = flgs | SDL_FULLSCREEN; Sdl_StVdMd(gm.scr_w, gm.scr_h, 16, flgs); D_FDST(sdl.scr); SS_Fill(0x0); SF_Wrt(ft, sdl.scr, gm.scr_w / 2, gm.scr_h / 2, str, 0); Sdl_FUpd(); } break; case SDL_MOUSEMOTION: mx = e.motion.x; my = e.motion.y; break; } } // restore screen D_FDST(sdl.scr); D_FSRC(buf); SS_Blt(); Sdl_FUpd(); SDL_FreeSurface(buf); // cursor Cr_Cng(mx, my); //reset time // T_Rst(); } /* check if the figure has been completed */ void G_CkFgr() { int i, j, k, l; Lvl *lvl = gm.c_lvl; for (i = 0; i < lvl->m_w - lvl->f_w; i++) for (j = 0; j < lvl->m_h - lvl->f_h; j++) { gm.l_done = 1; for (k = 0; k < lvl->f_w; k++) { for (l = 0; l < lvl->f_h; l++) { if (lvl->fgr[k][l] != -1) if (lvl->map[i + k][j + l].m != lvl->fgr[k][l]) { gm.l_done = 0; break; } } if (!gm.l_done) break; } if (gm.l_done) return; } } /* confirm warp */ int G_CfmWrp() { SFnt *ft = gm.f_sml; SDL_Surface *buf; SDL_Event e; char str[256]; int leave = 0, ret = 0; int mx = gm.o_mx, my = gm.o_my; // save screen // buf = SS_Crt(gm.scr_w, gm.scr_h, SDL_SWSURFACE); SDL_SetColorKey(buf, 0, 0); D_FDST(buf); D_FSRC(sdl.scr); SS_Blt(); // cursor SDL_SetCursor(gm.c_n); // fill with black D_FDST(sdl.scr); SS_Fill(0x0); // write info ft->algn = TA_X_C | TA_Y_T; sprintf(str, "Your current position is level %i of chapter %i.", gm.c_l_id + 1, gm.c_ch + 1); SF_Wrt(ft, sdl.scr, gm.scr_w / 2, 200, str, 0); sprintf(str, "Do you really want to enter level %i of chapter %i?", gm.w_l + 1, gm.w_c + 1); SF_Wrt(ft, sdl.scr, gm.scr_w / 2, 200 + 15, str, 0); sprintf(str, "(All changes in the current level will be lost!)"); SF_Wrt(ft, sdl.scr, gm.scr_w / 2, 200 + 30, str, 0); sprintf(str, "(press y/n)"); SF_Wrt(ft, sdl.scr, gm.scr_w / 2, 200 + 50, str, 0); Sdl_FUpd(); #ifdef SOUND sound_play(gm.wv_clk); #endif while (!leave) { SDL_WaitEvent(&e); switch (e.type) { case SDL_QUIT: trm_gm = leave = 1; break; case SDL_KEYUP: switch (e.key.keysym.sym) { case SDLK_y: ret = 1; leave = 1; break; case SDLK_n: ret = 0; leave = 1; break; default: break; } break; case SDL_MOUSEBUTTONUP: switch (e.button.button) { case 1: ret = 1; leave = 1; break; default: ret = 0; leave = 1; break; } break; case SDL_MOUSEMOTION: mx = e.motion.x; my = e.motion.y; break; } } #ifdef SOUND sound_play(gm.wv_clk); #endif // restore screen if (cfg.dim) SDL_DIM(); if (!ret) { D_FDST(sdl.scr); D_FSRC(buf); SS_Blt(); if (cfg.dim) SDL_UNDIM(); else Sdl_FUpd(); // cursor Cr_Cng(mx, my); } SDL_FreeSurface(buf); // reset time // T_Rst(); return ret; } /* confirm quit */ int G_CfmQut() { SFnt *ft = gm.f_sml; SDL_Surface *buf; SDL_Event e; char str[256]; int leave = 0, ret = 0; int mx = gm.o_mx, my = gm.o_my; // save screen // buf = SS_Crt(gm.scr_w, gm.scr_h, SDL_SWSURFACE); SDL_SetColorKey(buf, 0, 0); D_FDST(buf); D_FSRC(sdl.scr); SS_Blt(); // cursor SDL_SetCursor(gm.c_n); // fill with black D_FDST(sdl.scr); SS_Fill(0x0); // write info ft->algn = TA_X_C | TA_Y_C; sprintf(str, "Do you really want to quit? (y/n)"); SF_Wrt(ft, sdl.scr, gm.scr_w / 2, gm.scr_h / 2, str, 0); Sdl_FUpd(); #ifdef SOUND sound_play(gm.wv_clk); #endif while (!leave) { SDL_WaitEvent(&e); switch (e.type) { case SDL_QUIT: trm_gm = leave = 1; break; case SDL_KEYUP: switch (e.key.keysym.sym) { case SDLK_ESCAPE: case SDLK_y: ret = 1; leave = 1; break; case SDLK_n: ret = 0; leave = 1; break; default: break; } break; case SDL_MOUSEBUTTONUP: switch (e.button.button) { case 1: ret = 1; leave = 1; break; default: ret = 0; leave = 1; break; } break; } } #ifdef SOUND sound_play(gm.wv_clk); #endif // restore screen if (!ret) { if (cfg.dim) SDL_DIM(); D_FDST(sdl.scr); D_FSRC(buf); SS_Blt(); if (cfg.dim) SDL_UNDIM(); else Sdl_FUpd(); // cursor Cr_Cng(mx, my); } SDL_FreeSurface(buf); // reset time // T_Rst(); return ret; } /* confirm quit */ int G_CfmRst() { SFnt *ft = gm.f_sml; SDL_Surface *buf; SDL_Event e; char str[256]; int leave = 0, ret = 0; int mx = gm.o_mx, my = gm.o_my; // save screen // buf = SS_Crt(gm.scr_w, gm.scr_h, SDL_SWSURFACE); SDL_SetColorKey(buf, 0, 0); D_FDST(buf); D_FSRC(sdl.scr); SS_Blt(); // cursor SDL_SetCursor(gm.c_n); // fill with black D_FDST(sdl.scr); SS_Fill(0x0); // write info ft->algn = TA_X_C | TA_Y_C; sprintf(str, "Do you really want to restart? (y/n)"); SF_Wrt(ft, sdl.scr, gm.scr_w / 2, gm.scr_h / 2, str, 0); Sdl_FUpd(); #ifdef SOUND sound_play(gm.wv_clk); #endif while (!leave) { SDL_WaitEvent(&e); switch (e.type) { case SDL_QUIT: trm_gm = leave = 1; break; case SDL_KEYUP: switch (e.key.keysym.sym) { case SDLK_r: case SDLK_y: ret = 1; leave = 1; break; case SDLK_n: ret = 0; leave = 1; break; default: break; } break; case SDL_MOUSEBUTTONUP: switch (e.button.button) { case 1: ret = 1; leave = 1; break; default: ret = 0; leave = 1; break; } break; } } #ifdef SOUND sound_play(gm.wv_clk); #endif // restore screen if (cfg.dim) SDL_DIM(); if (!ret) { D_FDST(sdl.scr); D_FSRC(buf); SS_Blt(); if (cfg.dim) SDL_UNDIM(); else Sdl_FUpd(); // cursor Cr_Cng(mx, my); } SDL_FreeSurface(buf); // reset time // T_Rst(); return ret; } /* check if level set can be played and ask for confirmation if it got errors */ int G_CkLSt() { char str[256]; SFnt *ft = gm.f_sml; SDL_Event e; if (gm.c_l_st->ch == 0) { D_FDST(sdl.scr); SS_Fill(0x0); sprintf(str, "This level set cannot be played.\n"); ft->algn = TA_X_C | TA_Y_C; SF_Wrt(ft, sdl.scr, sdl.scr->w / 2, sdl.scr->h / 2, str, 0); Sdl_FUpd(); Sdl_WtFrClk(); return 0; } if (!gm.c_l_st->ok) { D_FDST(sdl.scr); SS_Fill(0x0); sprintf(str, "This level set has errors. Play anyway? (y/n)\n"); ft->algn = TA_X_C | TA_Y_C; SF_Wrt(ft, sdl.scr, sdl.scr->w / 2, sdl.scr->h / 2, str, 0); Sdl_FUpd(); while (1) { if (SDL_WaitEvent(&e)) switch (e.type) { case SDL_KEYUP: switch (e.key.keysym.sym) { case SDLK_ESCAPE: case SDLK_n: return 0; case SDLK_y: return 1; default: break; } case SDL_MOUSEBUTTONUP: switch (e.button.button) { case 1: return 1; default: return 0; break; } break; } } } return 1; } // marble // /* hide current marble */ void Mr_Hd() { if (!gm.m_sel) return; D_DST(sdl.scr, (int)gm.m_x, (int)gm.m_y, gm.t_w, gm.t_h); D_SRC(gm.s_bkgd, (int)gm.m_x, (int)gm.m_y); SS_Blt(); Sdl_AddR((int)gm.m_x, (int)gm.m_y, gm.t_w, gm.t_h); } /* show current marble */ void Mr_Shw() { if (!gm.m_sel) return; D_DST(sdl.scr, (int)gm.m_x, (int)gm.m_y, gm.t_w, gm.t_h); D_SRC(gm.s_mrb, (int)gm.m_a.p * gm.m_a.w, gm.m_id * gm.t_h); SS_Blt(); Sdl_AddR((int)gm.m_x, (int)gm.m_y, gm.t_w, gm.t_h); } /* update current marble return 0 if times out( moves ) */ int Mr_Upd(int ms) { float c; // change int stp = 0; // marble stopped ? if (!gm.m_sel || !gm.m_mv) return 1; // marble animation (frame) switch (gm.m_d) { case 1: case 2: gm.m_a.p += gm.m_a.c * ms; if (gm.m_a.p >= gm.m_a.f) gm.m_a.p = 0; break; case 0: case 3: gm.m_a.p -= gm.m_a.c * ms; if (gm.m_a.p <= 0) gm.m_a.p = gm.m_a.f; break; } c = ms * gm.m_v; switch (gm.m_d) { case 0: gm.m_y -= c; if (gm.m_y <= gm.m_ty) { Mr_Stp(); stp = 1; } break; case 1: gm.m_x += c; if (gm.m_x >= gm.m_tx) { Mr_Stp(); stp = 1; } break; case 2: gm.m_y += c; if (gm.m_y >= gm.m_ty) { Mr_Stp(); stp = 1; } break; case 3: gm.m_x -= c; if (gm.m_x <= gm.m_tx) { Mr_Stp(); stp = 1; } break; } // warp??? if ( gm.m_warp ) { gm.m_x = gm.m_tx; gm.m_y = gm.m_ty; Mr_Stp(); stp = 1; gm.m_warp = 0; } // check time if move limit // if ( stp && gm.c_l_st->limit_type == MOVES && gm.m_act != M_TLP_0 && gm.m_act != M_TLP_1 && gm.m_act != M_TLP_2 && gm.m_act != M_TLP_3) { gm.c_lvl->tm--; if ( gm.c_lvl->tm <= 0 && !gm.l_done /* completion with last move is okay */ ) return 0; } // stopped and awaiting action ? if (stp && gm.m_act != M_EMPTY) Mr_Act(); else if (stp) { #ifdef SOUND sound_play(gm.wv_stp); #endif } return 1; } /* select a marble */ void Mr_Sel(int x, int y) { int mx, my; mx = (x - gm.l_x) / gm.t_w; my = (y - gm.l_y) / gm.t_h; if (gm.m_sel) { gm.mf_a.p = gm.msf_a.p = 0; Mr_Ins(); } // set selected gm.m_sel = 1; // get map position gm.m_mx = mx; gm.m_my = my; // check valid moving directions Mr_CkVDir(mx, my); // delete marble from background L_DrwMpTl(mx, my); // get position in screen gm.m_x = mx * gm.t_w + gm.l_x; gm.m_y = my * gm.t_h + gm.l_y; // get id // gm.m_id = gm.c_lvl->map[mx][my].m; // delete marble from map gm.c_lvl->map[mx][my].m = -1; // save old position gm.m_o_x = (int)gm.m_x; gm.m_o_y = (int)gm.m_y; gm.m_o_move_count = gm.c_lvl->tm; #ifdef SOUND sound_play(gm.wv_sel); #endif } /* release a marble */ void Mr_Rel(int x, int y) { Mr_Ins(); gm.m_sel = 0; SDL_SetCursor(gm.c_n); gm.m_o_x = gm.m_o_y = -1; } /* initialize movement */ void Mr_IniMv() { int x_a = 0, y_a = 0, tx, ty; int t_fnd = 0; // direction gm.m_d = gm.c_stat -2; if (gm.m_d < 0 || gm.m_d > 4) return; // direction verified; activate movement gm.m_mv = 1; // store position if no action if ( gm.m_act == M_EMPTY ) { gm.m_o_x = (int)gm.m_x; gm.m_o_y = (int)gm.m_y; gm.m_o_move_count = gm.c_lvl->tm; } // clear previous action gm.m_act = M_EMPTY; // compute target position switch (gm.m_d) { case 0: y_a = -1; break; case 1: x_a = 1; break; case 2: y_a = 1; break; case 3: x_a = -1; break; } tx = gm.m_mx + x_a; ty = gm.m_my + y_a; while ( // target already found !t_fnd && // wall gm.c_lvl->map[tx][ty].t != M_WALL && // crumbling wall gm.c_lvl->map[tx][ty].t != M_CRUMBLE && // marble gm.c_lvl->map[tx][ty].m == -1 && // up !((gm.c_lvl->map[tx][ty].t == M_OW_D || gm.c_lvl->map[tx][ty].t == M_OW_D_C || gm.c_lvl->map[tx][ty].t == M_OW_L_C || gm.c_lvl->map[tx][ty].t == M_OW_R_C) && y_a == -1) && // down !((gm.c_lvl->map[tx][ty].t == M_OW_U || gm.c_lvl->map[tx][ty].t == M_OW_U_C || gm.c_lvl->map[tx][ty].t == M_OW_L_C || gm.c_lvl->map[tx][ty].t == M_OW_R_C) && y_a == 1) && // right !((gm.c_lvl->map[tx][ty].t == M_OW_L || gm.c_lvl->map[tx][ty].t == M_OW_L_C || gm.c_lvl->map[tx][ty].t == M_OW_U_C || gm.c_lvl->map[tx][ty].t == M_OW_D_C) && x_a == 1) && // left !((gm.c_lvl->map[tx][ty].t == M_OW_R || gm.c_lvl->map[tx][ty].t == M_OW_R_C || gm.c_lvl->map[tx][ty].t == M_OW_U_C || gm.c_lvl->map[tx][ty].t == M_OW_D_C) && x_a == -1) ) { // check action switch (gm.c_lvl->map[tx][ty].t) { case M_TLP_0: case M_TLP_1: case M_TLP_2: case M_TLP_3: t_fnd = 1; gm.m_act = gm.c_lvl->map[tx][ty].t; break; case M_OW_U: if (y_a != -1) { gm.m_act = M_OW_U; t_fnd = 1; } break; case M_OW_D: if (y_a != 1) { gm.m_act = M_OW_D; t_fnd = 1; } break; case M_OW_L: if (x_a != -1) { gm.m_act = M_OW_L; t_fnd = 1; } break; case M_OW_R: if (x_a != 1) { gm.m_act = M_OW_R; t_fnd = 1; } break; } tx += x_a; ty += y_a; } // crumbling wall if (gm.c_lvl->map[tx][ty].t == M_CRUMBLE) gm.m_act = M_CRUMBLE; tx -= x_a; ty -= y_a; gm.m_tx = tx * gm.t_w + gm.l_x; gm.m_ty = ty * gm.t_h + gm.l_y; // wait cursor SDL_SetCursor(gm.c_w); } /* stop a marble */ void Mr_Stp() { int mx, my; // position in screen gm.m_x = gm.m_tx; gm.m_y = gm.m_ty; mx = (gm.m_x - gm.l_x) / gm.t_w; my = (gm.m_y - gm.l_y) / gm.t_h; // position in map gm.m_mx = mx; gm.m_my = my; // check valid moving directions Mr_CkVDir(mx, my); gm.m_mv = 0; gm.m_a.p = 0; // check cursor // Cr_Cng(gm.o_mx, gm.o_my); // if no action check if the figure is completed if (gm.m_act == M_EMPTY || gm.m_act == M_CRUMBLE) { gm.c_lvl->map[mx][my].m = gm.m_id; G_CkFgr(); gm.c_lvl->map[mx][my].m = -1; } } /* insert a marble into map */ void Mr_Ins() { int mx, my, x, y; mx = (gm.m_x - gm.l_x) / gm.t_w; my = (gm.m_y - gm.l_y) / gm.t_h; x = mx * gm.t_w + gm.l_x; y = my * gm.t_h + gm.l_y; //hide frame MF_Hd(); // draw to background D_DST(gm.s_bkgd, x, y, gm.t_w, gm.t_h); D_SRC(gm.s_mrb, 0, gm.m_id * gm.t_h); SS_Blt(); // to screen D_DST(sdl.scr, x, y, gm.t_w, gm.t_h); D_SRC(gm.s_mrb, 0, gm.m_id * gm.t_h); SS_Blt(); // and to map gm.c_lvl->map[mx][my].m = gm.m_id; } /* check valid directions */ void Mr_CkVDir(int mx, int my) { gm.m_vd = 0; if ( gm.c_lvl->map[mx][my].t != M_OW_D_C && gm.c_lvl->map[mx][my].t != M_OW_U_C && gm.c_lvl->map[mx - 1][my].t != M_WALL && gm.c_lvl->map[mx - 1][my].t != M_CRUMBLE && gm.c_lvl->map[mx - 1][my].m == -1 && gm.c_lvl->map[mx - 1][my].t != M_OW_R && gm.c_lvl->map[mx - 1][my].t != M_OW_R_C && gm.c_lvl->map[mx - 1][my].t != M_OW_U_C && gm.c_lvl->map[mx - 1][my].t != M_OW_D_C) gm.m_vd = gm.m_vd | MD_L; if ( gm.c_lvl->map[mx][my].t != M_OW_D_C && gm.c_lvl->map[mx][my].t != M_OW_U_C && gm.c_lvl->map[mx + 1][my].t != M_WALL && gm.c_lvl->map[mx + 1][my].t != M_CRUMBLE && gm.c_lvl->map[mx + 1][my].m == -1 && gm.c_lvl->map[mx + 1][my].t != M_OW_L && gm.c_lvl->map[mx + 1][my].t != M_OW_L_C && gm.c_lvl->map[mx + 1][my].t != M_OW_U_C && gm.c_lvl->map[mx + 1][my].t != M_OW_D_C) gm.m_vd = gm.m_vd | MD_R; if ( gm.c_lvl->map[mx][my].t != M_OW_L_C && gm.c_lvl->map[mx][my].t != M_OW_R_C && gm.c_lvl->map[mx][my - 1].t != M_WALL && gm.c_lvl->map[mx][my - 1].t != M_CRUMBLE && gm.c_lvl->map[mx][my - 1].m == -1 && gm.c_lvl->map[mx][my - 1].t != M_OW_D && gm.c_lvl->map[mx][my - 1].t != M_OW_D_C && gm.c_lvl->map[mx][my - 1].t != M_OW_L_C && gm.c_lvl->map[mx][my - 1].t != M_OW_R_C) gm.m_vd = gm.m_vd | MD_U; if ( gm.c_lvl->map[mx][my].t != M_OW_L_C && gm.c_lvl->map[mx][my].t != M_OW_R_C && gm.c_lvl->map[mx][my + 1].t != M_WALL && gm.c_lvl->map[mx][my + 1].t != M_CRUMBLE && gm.c_lvl->map[mx][my + 1].m == -1 && gm.c_lvl->map[mx][my + 1].t != M_OW_U && gm.c_lvl->map[mx][my + 1].t != M_OW_U_C && gm.c_lvl->map[mx][my + 1].t != M_OW_L_C && gm.c_lvl->map[mx][my + 1].t != M_OW_R_C) gm.m_vd = gm.m_vd | MD_D; } /* handle actions! */ void Mr_Act() { int x_a = 0, y_a = 0, ow = 0, mx = gm.m_mx, my = gm.m_my, tx, ty; int i, j; // crumbling wall ? if (gm.m_act == M_CRUMBLE) { tx = mx + (gm.m_d == 1 ? 1 : gm.m_d == 3 ? -1 : 0); ty = my + (gm.m_d == 0 ? -1 : gm.m_d == 2 ? 1 : 0); if (gm.c_lvl->map[tx][ty].t == M_CRUMBLE) { #ifdef SOUND sound_play(gm.wv_stp); #endif if (gm.c_lvl->map[tx][ty].id > 0) gm.c_lvl->map[tx][ty].id--; else { Wl_Exp(gm.l_x + tx * gm.t_w, gm.l_y + ty * gm.t_h, gm.m_d); gm.c_lvl->map[tx][ty].t = M_FLOOR; // check moving direction Mr_CkVDir(gm.m_mx, gm.m_my); Cr_Cng(gm.o_mx, gm.o_my); // reset restore position gm.m_o_x = gm.m_tx; gm.m_o_y = gm.m_ty; gm.m_o_move_count = gm.c_lvl->tm; #ifdef SOUND sound_play(gm.wv_exp); #endif } // draw to background L_DrwMpTl(tx, ty); // draw to screen D_DST(sdl.scr, gm.l_x + tx * gm.t_w, gm.l_y + ty * gm.t_h, gm.t_w, gm.t_h); D_SRC(gm.s_bkgd, gm.l_x + tx * gm.t_w, gm.l_y + ty * gm.t_h); SS_Blt(); // add refresh rect Sdl_AddR(gm.l_x + tx * gm.t_w, gm.l_y + ty * gm.t_h, gm.t_w, gm.t_h); } // no action // gm.m_act = M_EMPTY; return; } // oneway ? switch (gm.m_act) { case M_OW_U: y_a = -1; ow = 1; gm.c_stat = C_U; break; case M_OW_D: y_a = 1; ow = 1; gm.c_stat = C_D; break; case M_OW_R: x_a = 1; ow = 1; gm.c_stat = C_R; break; case M_OW_L: x_a = -1; ow = 1; gm.c_stat = C_L; break; } if (ow) { /* mx += x_a; my += y_a; while (gm.c_lvl->map[mx][my].m != -1) { mx += x_a; my += y_a; } mx -= x_a; my -= y_a; if (mx != gm.m_mx || my != gm.m_my) { Mr_Ins(); Mr_Sel(gm.l_x + mx * gm.t_w, gm.l_y + my * gm.t_h); }*/ #ifdef SOUND sound_play(gm.wv_arw); #endif Mr_IniMv(); return; } // teleport ? if (gm.m_act >= M_TLP_0 && gm.m_act <= M_TLP_3) { for (i = 0; i < gm.c_lvl->m_w; i++) { for (j = 0; j < gm.c_lvl->m_h; j++) if (gm.c_lvl->map[i][j].t == gm.m_act && (i != gm.m_mx || j != gm.m_my)) { // only warp if destination is empty // if (gm.c_lvl->map[i][j].m == -1) { gm.m_mx = i; gm.m_my = j; gm.m_x = gm.m_mx * gm.t_w + gm.l_x; gm.m_y = gm.m_my * gm.t_h + gm.l_y; #ifdef SOUND sound_play(gm.wv_tlp); #endif } gm.c_stat = gm.m_d + 2; // restore c_stat for movement initialization // initate movement Mr_IniMv(); /* // check if the figure is completed gm.c_lvl->map[gm.m_mx][gm.m_my].m = gm.m_id; G_CkFgr(); gm.c_lvl->map[gm.m_mx][gm.m_my].m = -1;*/ return; } } } // gm.m_act = M_EMPTY; } /* restore old position */ void Mr_ResPos() { if ( !gm.m_sel || gm.m_o_x == -1 ) return; gm.m_act = M_EMPTY; gm.m_tx = gm.m_o_x; gm.m_ty = gm.m_o_y; if ( gm.c_l_st->limit_type == MOVES ) gm.c_lvl->tm = gm.m_o_move_count; Mr_Stp(); } // timer // /* hide time */ void Tm_Hd() { int w = gm.brd_w - gm.t_x * 2; int h = gm.f_wht->h; D_DST(sdl.scr, gm.t_x + gm.b_x, gm.t_y, w, h); D_SRC(gm.s_bkgd, gm.t_x + gm.b_x, gm.t_y); SS_Blt(); Sdl_AddR(gm.t_x + gm.b_x, gm.t_y, w, h); } /* show time */ void Tm_Shw() { SFnt *ft; char str_tm[16]; char str_sec[4]; int tm; // adjust time // if ( gm.c_l_st->limit_type == TIME ) tm = gm.c_lvl->tm / 1000; else tm = gm.c_lvl->tm; // select font ft = gm.f_wht; if ( gm.c_l_st->limit_type == TIME && tm <= 30 ) ft = gm.f_rd; else if ( gm.c_l_st->limit_type == MOVES && tm <= 10 ) ft = gm.f_rd; // draw "time" ft->algn = TA_X_L | TA_Y_T; if ( gm.c_l_st->limit_type == TIME ) SF_Wrt(ft, sdl.scr, gm.t_x + gm.b_x, gm.t_y, "Time:", 0); else SF_Wrt(ft, sdl.scr, gm.t_x + gm.b_x, gm.t_y, "Moves:", 0); // compute and draw time str if ( gm.c_l_st->limit_type == TIME ) { sprintf(str_tm, "%i:", tm / 60); sprintf(str_sec, "%i", tm % 60); if (strlen(str_sec) < 2) strcat(str_tm, "0"); strcat(str_tm, str_sec); } else sprintf( str_tm, "%i", tm ); ft->algn = TA_X_R | TA_Y_T; SF_Wrt(ft, sdl.scr, gm.scr_w - gm.t_x, gm.t_y, str_tm, 0); Sdl_AddR(gm.t_x + gm.b_x, gm.t_y, gm.b_x - gm.t_x*2, ft->h); } /* update time return 0 if time out */ int Tm_Upd(int ms) { #ifdef SOUND int old_sec = gm.c_lvl->tm / 1000; #endif gm.blink_time += ms; // if limit_type is MOVES, time is ignored // if ( gm.c_l_st->limit_type == MOVES ) return 1; gm.c_lvl->tm -= ms; // new second ? #ifdef SOUND if ( old_sec != gm.c_lvl->tm / 1000 && old_sec <= 30 ) sound_play(gm.wv_alm); #endif if (gm.c_lvl->tm < 0) { gm.c_lvl->tm = 0; return 0; } return 1; } // level info // /* hide level info */ void Inf_Hd() { D_DST(sdl.scr, gm.b_x + gm.s_x, gm.s_y + gm.s_h - 20, gm.s_w, 20); D_SRC(gm.s_bkgd, gm.b_x + gm.s_x, gm.s_y + gm.s_h - 20); SS_Blt(); Sdl_AddR(gm.b_x + gm.s_x, gm.s_y + gm.s_h - 20, gm.s_w, 20); } /* update level info */ int Inf_Upd() { int x, y; x = (gm.o_mx - gm.c_x - gm.b_x) / L_SIZE; y = (gm.o_my - gm.c_y) / L_SIZE; if (gm.o_mx < gm.c_x + gm.b_x || gm.o_my < gm.c_y || x >= gm.c_l_st->l_num || y >= gm.c_l_st->c_num) { sprintf(gm.inf_str, "Chapter %i, Level %i", gm.c_ch + 1, gm.c_l_id + 1); return 0; } if (!gm.c_s_inf->cmp[y * gm.c_s_inf->l_num + x] && !gm.c_s_inf->c_opn[y]) { sprintf(gm.inf_str, "Access Denied"); return 0; } sprintf(gm.inf_str, "Chapter %i, Level %i", y + 1, x + 1); if (gm.bttn[1]) { gm.w_c = y; gm.w_l = x; return 1; } return 0; } /* show level info */ void Inf_Shw() { gm.f_sml->algn = TA_X_C | TA_Y_B; SF_Wrt(gm.f_sml, sdl.scr, gm.b_x + gm.brd_w / 2, gm.s_y + gm.s_h - 5, gm.inf_str, 0); } // cursor /* load cursor */ void Cr_Ld(char *src, char *d, char*m) { int w=16, h = 16; int i, j, k; char b_d, b_m; int p; k = 0; for (j = 0; j < w * h; j += 8, k++) { p = 1; b_d = b_m = 0; // create byte for (i = 7; i >= 0; i--) { switch (src[j + i]) { case 2: b_d += p; case 1: b_m += p; break; } p *= 2; } // add to mask d[k] = b_d; m[k] = b_m; } } /* change cursors appearing */ void Cr_Cng(int x, int y) { int mx, my, cx, cy; if (gm.m_mv) { if (x > gm.scr_w - gm.brd_w) SDL_SetCursor(gm.c_n); else SDL_SetCursor(gm.c_w); return; } mx = (x - gm.l_x) / gm.t_w; my = (y - gm.l_y) / gm.t_h; if ( mx >= 0 && my >= 0 && mx < gm.c_lvl->m_w && my < gm.c_lvl->m_h && (gm.c_lvl->map[mx][my].m != - 1 || (gm.m_mx == mx && gm.m_my == my))) { // on marble SDL_SetCursor(gm.c_s); gm.c_stat = C_SEL; } else if (!gm.m_sel || x > gm.scr_w - gm.brd_w) { // nothing selected SDL_SetCursor(gm.c_n); gm.c_stat = C_NONE; } else { // up, left, right, down cx = x - (gm.m_mx * gm.t_w + gm.l_x + gm.t_w / 2); cy = y - (gm.m_my * gm.t_h + gm.l_y + gm.t_h / 2); if (abs(cx) > abs(cy)) { if (cx > 0) { if (gm.m_vd & MD_R) { SDL_SetCursor(gm.c_r); gm.c_stat = C_R; } else { SDL_SetCursor(gm.c_n); gm.c_stat = C_NONE; } } else { if (gm.m_vd & MD_L) { SDL_SetCursor(gm.c_l); gm.c_stat = C_L; } else { SDL_SetCursor(gm.c_n); gm.c_stat = C_NONE; } } } else { if (cy > 0) { if (gm.m_vd & MD_D) { SDL_SetCursor(gm.c_d); gm.c_stat = C_D; } else { SDL_SetCursor(gm.c_n); gm.c_stat = C_NONE; } } else { if (gm.m_vd & MD_U) { SDL_SetCursor(gm.c_u); gm.c_stat = C_U; } else { SDL_SetCursor(gm.c_n); gm.c_stat = C_NONE; } } } } } // frame // /* hide marble frame */ void MF_Hd() { int x, y, w, h; if (!gm.m_sel) return; // get size if (gm.msf_a.p == gm.msf_a.f) { w = gm.mf_a.w; h = gm.mf_a.h; } else { w = gm.msf_a.w; h = gm.msf_a.h; } // get position x = gm.m_x + (gm.t_w - w) / 2; y = gm.m_y + (gm.t_h - h) / 2; // hide D_DST(sdl.scr, x, y, w, h); D_SRC(gm.s_bkgd, x, y); SS_Blt(); Sdl_AddR(x - 1, y - 1, w + 1, h + 1); } /* update marble frame */ void MF_Upd(int ms) { if (!gm.m_sel) { gm.mf_a.p = gm.msf_a.p = 0; return; } if (gm.msf_a.p != gm.msf_a.f) { // still select animation gm.msf_a.p += gm.msf_a.c * ms; if (gm.msf_a.p >= gm.msf_a.f) gm.msf_a.p = gm.msf_a.f; } else { gm.mf_a.p += gm.mf_a.c * ms; if (gm.mf_a.p >= gm.mf_a.f) gm.mf_a.p = 0; } } /* show marble frame */ void MF_Shw() { int x, y; AInf *a; SDL_Surface *s; if (!gm.m_sel) return; // get animation info if (gm.msf_a.p == gm.msf_a.f) { a = &gm.mf_a; s = gm.s_mf; } else { a = &gm.msf_a; s = gm.s_msf; } // get position x = gm.m_x + (gm.t_w - a->w) / 2; y = gm.m_y + (gm.t_h - a->h) / 2; // show D_DST(sdl.scr, x, y, a->w, a->h); D_SRC(s, (int)a->p * a->w, 0); SS_Blt(); Sdl_AddR(x, y, a->w, a->h); } // map animations // /* get position and type of all animations */ void MA_Ini() { int i, j; // free and reallocate m_ani if (gm.m_ani) free(gm.m_ani); gm.m_ani = (MAni*)malloc(sizeof(MAni) * gm.c_lvl->m_w * gm.c_lvl->m_h); gm.ma_num = 0; // parse level map for (i = 0; i < gm.c_lvl->m_w; i++) for (j = 0; j < gm.c_lvl->m_h; j++) switch (gm.c_lvl->map[i][j].t) { case M_OW_U: case M_OW_D: case M_OW_L: case M_OW_R: case M_OW_U_C: case M_OW_D_C: case M_OW_L_C: case M_OW_R_C: gm.m_ani[gm.ma_num].x = i; gm.m_ani[gm.ma_num].y = j; gm.m_ani[gm.ma_num].t = gm.c_lvl->map[i][j].t; gm.m_ani[gm.ma_num].a = &gm.ma_ow_a; gm.ma_num++; break; case M_TLP_0: case M_TLP_1: case M_TLP_2: case M_TLP_3: gm.m_ani[gm.ma_num].x = i; gm.m_ani[gm.ma_num].y = j; gm.m_ani[gm.ma_num].t = gm.c_lvl->map[i][j].t; gm.m_ani[gm.ma_num].a = &gm.ma_tlp_a; gm.ma_num++; break; default: break; } } void MA_Upd(int ms) { if (!cfg.ani) return; gm.ma_ow_a.p += (float)ms * gm.ma_ow_a.c; if (gm.ma_ow_a.p >= gm.ma_ow_a.f) gm.ma_ow_a.p = 0; gm.ma_tlp_a.p += (float)ms * gm.ma_tlp_a.c; if (gm.ma_tlp_a.p >= gm.ma_tlp_a.f) gm.ma_tlp_a.p = 0; } /* show map animations */ void MA_Shw() { int i; int x, y; if (!cfg.ani) return; for (i = 0; i < gm.ma_num; i++) { // get position in screen x = gm.l_x + gm.m_ani[i].x * gm.t_w; y = gm.l_y + gm.m_ani[i].y * gm.t_h; // draw empty floor D_DST(sdl.scr, x, y, gm.t_w, gm.t_h); D_SRC(gm.c_g_st->s_flr, 0, 0); SS_Blt(); // oneway D_DST(sdl.scr, x, y, gm.t_w, gm.t_h); switch (gm.m_ani[i].t) { case M_OW_R: case M_OW_R_C: D_SRC(gm.c_g_st->s_r_arw, (int)gm.m_ani[i].a->p * gm.t_w, 0); SS_Blt(); break; case M_OW_L: case M_OW_L_C: D_SRC(gm.c_g_st->s_l_arw, (int)gm.m_ani[i].a->p * gm.t_w, 0); SS_Blt(); break; case M_OW_U: case M_OW_U_C: D_SRC(gm.c_g_st->s_u_arw, 0, (int)gm.m_ani[i].a->p * gm.t_h); SS_Blt(); break; case M_OW_D: case M_OW_D_C: D_SRC(gm.c_g_st->s_d_arw, 0, (int)gm.m_ani[i].a->p * gm.t_h); SS_Blt(); break; } D_DST(sdl.scr, x, y, gm.t_w, gm.t_h); switch (gm.m_ani[i].t) { case M_OW_U_C: case M_OW_D_C: D_SRC(gm.c_g_st->s_lr_bar, 0, 0); SS_Blt(); break; case M_OW_L_C: case M_OW_R_C: D_SRC(gm.c_g_st->s_ud_bar, 0, 0); SS_Blt(); break; } // teleport D_DST(sdl.scr, x, y, gm.t_w, gm.t_h); switch (gm.m_ani[i].t) { case M_TLP_0: D_SRC(gm.c_g_st->s_tlp_0, (int)gm.m_ani[i].a->p * gm.t_w, 0); SS_ABlt(gm.tlp_a); break; case M_TLP_1: D_SRC(gm.c_g_st->s_tlp_1, (int)gm.m_ani[i].a->p * gm.t_w, 0); SS_ABlt(gm.tlp_a); break; case M_TLP_2: D_SRC(gm.c_g_st->s_tlp_2, (int)gm.m_ani[i].a->p * gm.t_w, 0); SS_ABlt(gm.tlp_a); break; case M_TLP_3: D_SRC(gm.c_g_st->s_tlp_3, (int)gm.m_ani[i].a->p * gm.t_w, 0); SS_ABlt(gm.tlp_a); break; } // marble on animation if (gm.c_lvl->map[gm.m_ani[i].x][gm.m_ani[i].y].m != -1 && ( ((gm.blink_time / 250) & 1) || gm.l_done ) ) { D_DST(sdl.scr, x, y, gm.t_w, gm.t_h); D_SRC(gm.s_mrb, 0, gm.c_lvl->map[gm.m_ani[i].x][gm.m_ani[i].y].m * gm.t_w); SS_Blt(); } // refresh rect Sdl_AddR(x, y, gm.t_w, gm.t_h); } } // shrapnells // /* add new shrapnell */ void Shr_Add(int x, int y, int w, int h, Vec d, SDL_Surface *s_shr) { Shr *s; s = (Shr*)malloc(sizeof(Shr)); s->d = d; s->x = x; s->y = y; s->w = w; s->h = h; s->a = 0; if ( s_shr ) s->s_shr = s_shr; else { s->s_shr = SS_Crt(w, h, SDL_SWSURFACE); D_DST(s->s_shr, 0, 0, w, h); D_SRC(sdl.scr, x, y); SS_Blt(); } DL_Add(&gm.shr, s); } /* delete shrapnell */ void Shr_Del(void *p) { Shr *s = (Shr*)p; if ( s->s_shr ) SDL_FreeSurface(s->s_shr); free(p); } /* hide shrapnell */ void Shr_Hd() { DL_E *e = gm.shr.hd.n; Shr *s; while ( e != &gm.shr.tl ) { s = (Shr*)e->d; D_DST(sdl.scr, (int)s->x, (int)s->y, s->w, s->h); D_SRC(gm.s_bkgd, (int)s->x, (int)s->y); SS_Blt(); Sdl_AddR((int)s->x, (int)s->y, s->w, s->h); e = e->n; } } /* update shrapnell */ void Shr_Upd(int ms) { DL_E *n, *e = gm.shr.hd.n; Shr *s; while ( e != &gm.shr.tl ) { n = e->n; s = (Shr*)e->d; s->x += s->d.x * (float)ms; s->y += s->d.y * (float)ms; s->a += gm.shr_a_c * (float)ms; if (s->a >= 255) DL_DelE(&gm.shr, e); e = n; } } /* show shrapnell */ void Shr_Shw() { DL_E *e = gm.shr.hd.n; Shr *s; while ( e != &gm.shr.tl ) { s = (Shr*)e->d; D_DST(sdl.scr, (int)s->x, (int)s->y, s->w, s->h); D_SRC(s->s_shr, 0, 0); SS_ABlt(s->a); Sdl_AddR((int)s->x, (int)s->y, s->w, s->h); e = e->n; } } // wall // /* explode crumble wall into lot of pieces */ void Wl_Exp(int x, int y, int d) { int i, j; int sz = 4; Vec v; int x_r, x_off, y_r, y_off; // direction values SDL_Surface *s_shr; if ( !cfg.ani ) return; x_r = y_r = 200; x_off = y_off = 100; // adjust direction values switch (d) { case 0: y_r = y_off = 100; break; case 1: x_r = 100; x_off = 0; break; case 2: y_r = 100; y_off = 0; break; case 3: x_r = x_off = 100; break; } for ( i = 0; i < gm.t_w; i += sz ) for ( j = 0; j < gm.t_h; j += sz ) { v.x = (float)((rand() % x_r ) - x_off) / 1000; v.y = (float)((rand() % y_r ) - y_off) / 1000; s_shr = SS_Crt(sz, sz, SDL_SWSURFACE); D_DST(s_shr, 0, 0, sz, sz); D_SRC(gm.c_g_st->s_crmbl, i, j); SS_Blt(); Shr_Add(x + i, y + j, sz, sz, v, s_shr); } } // figure animation // /* main animation function; select and explode marbles one by one */ void FA_Run() { int i, j, k; int m_cnt = 0; // marble count int m_pos[gm.c_lvl->f_w * gm.c_lvl->f_h][2], b; int ms; SDL_Event e; int leave = 0; int tm, c_tm; // time in ms if (!cfg.ani) return; if (gm.m_sel) Mr_Ins(); // count marbles and get position for ( i = 0; i < gm.c_lvl->m_w; i++ ) for (j = 0; j < gm.c_lvl->m_h; j++ ) if ( gm.c_lvl->map[i][j].m != - 1 ) { m_pos[m_cnt][0] = i; m_pos[m_cnt][1] = j; m_cnt++; } // unsort positions for ( k = 0; k < m_cnt * 5; k++) { i = rand() % m_cnt; j = rand() % m_cnt; b = m_pos[i][0]; m_pos[i][0] = m_pos[j][0]; m_pos[j][0] = b; b = m_pos[i][1]; m_pos[i][1] = m_pos[j][1]; m_pos[j][1] = b; } // explosions MF_Hd(); T_Rst(); tm = 250; c_tm = 0; m_cnt--; SDL_SetCursor(gm.c_w); while ( (m_cnt >= 0 || gm.shr.cntr > 0) && !trm_gm && !leave ) { // termination ? if (SDL_PollEvent(&e)) { switch (e.type) { case SDL_QUIT: trm_gm = 1; break; case SDL_MOUSEBUTTONUP: case SDL_KEYUP: if (e.key.keysym.sym == SDLK_TAB) SnapShot(); else leave = 1; break; } } // show shrapnells Shr_Hd(); ms = T_Gt(); c_tm -= ms; MA_Upd(ms); Shr_Upd(ms); MA_Shw(); Shr_Shw(); Tm_Shw(); Inf_Shw(); Sdl_UpdR(); //add new shrapnells if (m_cnt >= 0 && c_tm <= 0) { FA_Add(m_pos[m_cnt][0], m_pos[m_cnt][1], gm.c_lvl->map[m_pos[m_cnt][0]][m_pos[m_cnt][1]].m); c_tm = tm; m_cnt--; #ifdef SOUND sound_play(gm.wv_exp); #endif } } } /* add shrapnells at x,y with marble-id m */ void FA_Add(int mx, int my, int m) { int x, y; int i, j; int sz = 4; // size SDL_Surface *s_shr; Vec v; x = gm.l_x + mx * gm.t_w; y = gm.l_y + my * gm.t_h; // delete from screne gm.c_lvl->map[mx][my].m = -1; L_DrwMpTl(mx, my); Sdl_AddR(x, y, gm.t_w, gm.t_h); // create shrapnells for ( i = 0; i < gm.t_w; i += sz ) for ( j = 0; j < gm.t_h; j += sz ) { v.x = (float)((rand() % 200 ) - 100) / 1000; v.y = (float)((rand() % 200 ) - 100) / 1000; s_shr = SS_Crt(sz, sz, SDL_SWSURFACE); D_DST(s_shr, 0, 0, sz, sz); D_SRC(gm.s_mrb, i, gm.t_h * m + j); SS_Blt(); Shr_Add(x + i, y + j, sz, sz, v, s_shr); } } // credits // /* initiate credits */ void Cr_Ini() { gm.cr_st = 0; gm.cr_a = 255; gm.cr_c_tm = gm.cr_tm; sprintf(gm.cr_str, "'%s' (Author: %s)", gm.c_l_st->ch[gm.c_ch].nm, gm.c_l_st->ch[gm.c_ch].authr); gm.cr_w = SF_TxtW(gm.f_sml, gm.cr_str); gm.cr_h = gm.f_sml->h; gm.cr_x = (gm.scr_w - gm.brd_w - gm.cr_w) / 2; } /* hide credits */ void Cr_Hd() { if ( gm.cr_st == 3 ) return; D_DST(sdl.scr, gm.cr_x, gm.cr_y, gm.cr_w, gm.cr_h); D_SRC(gm.s_bkgd, gm.cr_x, gm.cr_y); SS_Blt(); } /* update credits */ void Cr_Upd(int ms) { if ( gm.cr_st == 3 ) return; switch ( gm.cr_st ) { case 0: // undim gm.cr_a -= gm.cr_a_c * (float)ms; if ( gm.cr_a <= 0 ) { gm.cr_a = 0; gm.cr_st = 1; } break; case 1: // just show till timeout gm.cr_c_tm -= ms; if ( gm.cr_c_tm <= 0 ) gm.cr_st = 2; break; case 2: // undim gm.cr_a += gm.cr_a_c * (float)ms; if ( gm.cr_a >= 255 ) { gm.cr_a = 255; gm.cr_st = 3; } break; } } /* show credits */ void Cr_Shw() { if ( gm.cr_st == 3) return; gm.f_sml->algn = TA_X_L | TA_Y_T; SF_Wrt(gm.f_sml, sdl.scr, gm.cr_x, gm.cr_y, gm.cr_str, (int)gm.cr_a); Sdl_AddR(gm.cr_x, gm.cr_y, gm.cr_w, gm.cr_h); } // modify score // void modify_score( int *b_lvl, int *b_tm ) { /* modify score according to difficulty level */ switch (cfg.diff) { case DIFF_EASY: *b_lvl /= 2; *b_tm /= 2; break; case DIFF_NORMAL: break; case DIFF_HARD: *b_lvl *= 2; *b_tm *= 2; break; case DIFF_BRAINSTORM: *b_tm *= 5; *b_lvl *= 5; break; } } // bonus summary // /* give a bonus summary */ void BS_Run(float b_lvl, float b_tm) { SDL_Surface *buf; SDL_Event e; int leave = 0; int coff, cy; // level completed int toff, ty; // time bonus int soff, sy; // score int ms; int sw = 80, sh = gm.f_sml->h; // string width, height float b_c = 1.0; // bonus change float scr = gm.c_prf->scr; int end_scr; int old_scr; end_scr = gm.c_prf->scr + (int)b_lvl + (int)b_tm; // normal cursor SDL_SetCursor(gm.c_n); // darken screen buf = SS_Crt(gm.scr_w, gm.scr_h, SDL_SWSURFACE); SDL_SetColorKey(buf, 0, 0); D_FDST(buf); SS_Fill(0x0); D_FDST(sdl.scr); D_FSRC(buf); SS_ABlt(128); SDL_FreeSurface(buf); D_FDST(gm.s_bkgd); D_FSRC(sdl.scr); SS_Blt(); // positions cy = 200; coff = 200; ty = 220; toff = 200; sy = 250; soff = 200; // info gm.f_sml->algn = TA_X_L | TA_Y_T; SF_Wrt(gm.f_sml, sdl.scr, coff, cy, "Level Bonus:", 0); SF_Wrt(gm.f_sml, sdl.scr, toff, ty, "Move Bonus:", 0); SF_Wrt(gm.f_sml, sdl.scr, soff, sy, "Total Score:", 0); Sdl_FUpd(); // show bonus first time gm.f_sml->algn = TA_X_R | TA_Y_T; BS_Shw(gm.scr_w - soff, sy, (int)scr); Sdl_UpdR(); SDL_Delay(500); BS_Shw(gm.scr_w - coff, cy, (int)b_lvl); Sdl_UpdR(); #ifdef SOUND sound_play(gm.wv_exp); #endif SDL_Delay(500); BS_Shw(gm.scr_w - toff, ty, (int)b_tm); Sdl_UpdR(); #ifdef SOUND sound_play(gm.wv_exp); #endif SDL_Delay(500); T_Rst(); while ( !leave ) { // break? if ( SDL_PollEvent(&e) ) switch ( e.type ) { case SDL_QUIT: trm_gm = 1; break; case SDL_MOUSEBUTTONUP: case SDL_KEYUP: leave = 1; break; } // time ms = T_Gt(); // hide BS_Hd(gm.scr_w - coff - sw, cy, sw, sh); BS_Hd(gm.scr_w - toff - sw, ty, sw, sh); BS_Hd(gm.scr_w - soff - sw, sy, sw, sh); // update old_scr = (int)scr; if ( b_lvl > 0 ) { b_lvl -= b_c * (float)ms; scr += b_c * (float)ms; if ( b_lvl < 0 ) b_lvl = 0; } if ( b_tm > 0 ) { b_tm -= b_c * (float)ms; scr += b_c * (float)ms; if ( b_tm < 0 ) b_tm = 0; } if ( (int)scr >= end_scr) scr = end_scr; if (b_lvl == 0 && b_tm == 0) scr = end_scr; #ifdef SOUND if ( (old_scr / 50) != (int)scr / 50 ) sound_play(gm.wv_scr); #endif // show BS_Shw(gm.scr_w - coff, cy, (int)b_lvl); BS_Shw(gm.scr_w - toff, ty, (int)b_tm); BS_Shw(gm.scr_w - soff, sy, (int)scr); Sdl_UpdR(); } } /* hide number */ void BS_Hd(int x, int y, int w, int h) { D_DST(sdl.scr, x, y, w, h); D_SRC(gm.s_bkgd, x, y); SS_Blt(); Sdl_AddR(x, y, w, h); } /* show number */ void BS_Shw(int x, int y, int v) { char str[10]; sprintf(str, "%i", v); SF_Wrt(gm.f_sml, sdl.scr, x, y, str, 0); Sdl_AddR(x - SF_TxtW(gm.f_sml, str), y, SF_TxtW(gm.f_sml, str), gm.f_sml->h); } // snap shot // /* take a screenshot */ void SnapShot() { char filename[32]; #ifdef SOUND sound_play(gm.wv_clk); #endif sprintf(filename, "snapshot_%i.bmp", gm.snap++); SDL_SaveBMP(sdl.scr, filename); } lmarbles-1.0.7.orig/src/game.h0000600000175000017500000001716507524046657014333 0ustar uweuwe/*************************************************************************** game.h - description ------------------- begin : Mon Aug 14 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef GAME_H #define GAME_H #include #include #include "levels.h" #include "dynlist.h" #include "profile.h" #include "sdl.h" #include "audio.h" // gfx set // typedef struct { char nm[16]; // name int ok; // can be used SDL_Surface *s_bkgd, // background *s_wl, // walls *s_flr, // floor *s_r_arw, *s_l_arw, *s_u_arw, *s_d_arw, // arrows *s_ud_bar, *s_lr_bar, // barriers *s_tlp_0, *s_tlp_1, *s_tlp_2, *s_tlp_3, // teleporters *s_crmbl; // crumbling wall } GSet; // animation information // typedef struct { int f; // frame limit // float c; // change per millisecond // float p; // current position // int w, h; // size of one sprite // } AInf; // map animation // typedef struct { int x, y; // position in map int t; // type AInf *a; // animation info } MAni; // position typedef struct { int x, y; } Pos; // vector typedef struct { float x,y; } Vec; // shrapnell typedef struct { SDL_Surface *s_shr; // picture; Vec d; //direction float x,y; //position int w, h; // size float a; // alpha } Shr; // cursor states // #define C_NONE 0 #define C_SEL 1 #define C_U 2 #define C_R 3 #define C_D 4 #define C_L 5 // valid marble directions // #define MD_L (1<<0) #define MD_R (1<<1) #define MD_U (1<<2) #define MD_D (1<<3) #define L_GREEN 0 #define L_ORANGE 1 #define L_RED 2 #define L_WHITE 3 #define L_SIZE 12 typedef struct { // gfx sets // DLst g_sts; // gfx sets // // mouse button state // int bttn[4]; // graphics // SDL_Surface *s_lghts; // lamps displaying level progress // SDL_Surface *s_brd; // side board // SDL_Surface *s_mrb; // marbles // SDL_Surface *s_fig; // figure // SDL_Surface *s_bkgd; // background // SDL_Surface *s_mf; // marble frame // SDL_Surface *s_msf; // marble select frame // // fonts // SFnt *f_sml; // info // SFnt *f_wht; // time // SFnt *f_rd; // time2 - not much time left // // references // Prf *c_prf; // current profile // SInf *c_s_inf; // current profile level set info // LSet *c_l_st; // current level set // GSet *c_g_st; // current gfx set // Lvl *c_lvl; // current level // // player // int hi_scr; // last hiscore // int c_l_id; // current level // int c_ch; // current chapter // int o_ch; // old chapter // int l_done; // level finished // // marble // float m_v; // marble velocity per millisecond // int m_sel; // selected a marble ? // int m_mx, m_my; // position in map // int m_o_x, m_o_y; // old position // int m_o_move_count; // old move count // float m_x, m_y; // position in screen // int m_mv; // moving ? // int m_d; // direction of moving // int m_vd; // valid directions // int m_tx, m_ty; // target position in screen // int m_id; // current type of marble // AInf m_a; // animation information // int m_act; // action type // int m_warp; // warp marble to destination // // marble frame and marble select frame AInf mf_a; // animation info AInf msf_a; // animation info // layout // int l_x, l_y; // offset of level relative to 0,0 -- in L_Ini() int f_x, f_y; // figure offset relative to b_x, 0 int b_x; // board x int i_x, i_y; // info position relative to b_x,0 int t_x, t_y; // timer position relative to b_x,0 int s_x, s_y; // set info position relative to b_x,0 int c_x, c_y; // position of first chapter info relative to b_x,0 -- in L_Ini() // geometry // int t_w, t_h; // tile size // int f_w, f_h; // figure marble size // int f_fw, f_fh; // figure frame size // int scr_w, scr_h; // screen size // int brd_w; // board width int s_w, s_h; // size of set info int c_off; // offset between chapter infos // // cursors // int c_stat; // cursor state // SDL_Cursor *c_u, *c_d, *c_l, *c_r, *c_s, *c_n, *c_w; // cursors // old mouse pos // int o_mx, o_my; // level warp // char inf_str[64]; // warp info string int w_c, w_l; // warp level and chapter // map animations // MAni *m_ani; // animations int ma_num; // animation number AInf ma_ow_a; // oneway info AInf ma_tlp_a; // teleport info int tlp_a; // telporter alpha // sounds #ifdef SOUND Sound_Chunk *wv_tlp; // teleport Sound_Chunk *wv_sel; // select Sound_Chunk *wv_stp; // stop Sound_Chunk *wv_clk; // click Sound_Chunk *wv_exp; // explode Sound_Chunk *wv_alm; // alarm Sound_Chunk *wv_arw; // arrow Sound_Chunk *wv_scr; // score #endif DLst shr; // shrapnells float shr_a_c; // alpha change per second // credits float cr_a_c; // alpha change per msecond float cr_a; // current alpha int cr_tm; // shown how long ? int cr_c_tm; // current time char cr_str[256]; // what is shown... int cr_x, cr_y, cr_w, cr_h; // shown where ? int cr_st; // state: 0 undim, 1 shown, 2 dim // snapshot int snap; // blink time // int blink_time; } Game; void G_Ini(); void G_Trm(); int G_Opn(); void G_Cls(); void G_Run(); void G_LdGSts(); void G_DelGSt(void *p); void G_Ps(); void G_CkFgr(); int G_CfmWrp(); int G_CfmQut(); int G_CfmRst(); int G_CkLSt(); // marble // void Mr_Hd(); void Mr_Shw(); int Mr_Upd(int ms); void Mr_Sel(int x, int y); void Mr_Rel(int x, int y); void Mr_IniMv(); void Mr_Stp(); void Mr_Ins(); void Mr_CkVDir(int mx, int my); void Mr_Act(); void Mr_ResPos(); // timer // void Tm_Hd(); void Tm_Shw(); int Tm_Upd(int ms); // level info // void Inf_Hd(); int Inf_Upd(); void Inf_Shw(); // cursor // void Cr_Ld(char *src, char *d, char*m); void Cr_Cng(int x, int y); // frame // void MF_Hd(); void MF_Upd(int ms); void MF_Shw(); // map animations // void MA_Ini(); void MA_Upd(int ms); void MA_Shw(); // shrapnells // void Shr_Add(int x, int y, int w, int h, Vec d, SDL_Surface *s_shr); void Shr_Del(void *p); void Shr_Hd(); void Shr_Upd(int ms); void Shr_Shw(); // wall // void Wl_Exp(int x, int y, int v); // figure animation // void FA_Run(); void FA_Add(int mx, int my, int m); // credits // void Cr_Ini(); void Cr_Hd(); void Cr_Upd(int ms); void Cr_Shw(); // bonus summary // void BS_Run(float b_lvl, float b_tm); void BS_Hd(int x, int y, int w, int h); void BS_Shw(int x, int y, int v); // shnapshot // void SnapShot(); #endif lmarbles-1.0.7.orig/src/levels.c0000600000175000017500000006547607524361451014707 0ustar uweuwe/*************************************************************************** levels.c - description ------------------- begin : Mon Aug 14 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #include #include #include #include #include #include #include "levels.h" #include "dynlist.h" #include "game.h" #include "file.h" #include "sdl.h" #include "timer.h" #include "cfg.h" /* game struct -- game.c */ extern Game gm; /* line counter -- file.c */ extern int f_ln; /* Sdl -- sdl.c */ extern Sdl sdl; /* profiles -- profile.c */ extern DLst prfs; /* config -- cfg.c */ extern Cfg cfg; char **ls_lst = 0; int ls_n = 0; DLst l_sts; /* count and create a list with all loadable filenames found in SRC_DIR/levels */ void L_CrtLst() { int i; char d_nm[256]; char path[256+64]; DIR *dir = 0; struct dirent *e; struct stat s; ls_n = 0; // create directory string // sprintf(d_nm, "%s/levels", SRC_DIR); // find and open directory // if ((dir = opendir(d_nm)) == 0) { fprintf(stderr, "ERROR: can't find directory '%s'\n", d_nm); exit(1); } printf("searching for level sets...\n"); // well, let's check the count the entries // while ((e = readdir(dir)) != 0) { sprintf(path, "%s/%s", d_nm, e->d_name); stat(path, &s); if (S_ISREG(s.st_mode)) { (ls_n)++; printf("'%s'\n", e->d_name); } } if (ls_n == 0) { fprintf(stderr, "ERROR: '%s' seems to be empty\n", d_nm); closedir(dir); exit(1); } else printf("...total of %i\n", ls_n); // now we'll create the list // rewinddir(dir); ls_lst = malloc(sizeof(char*) * (ls_n)); for (i = 0; i < ls_n; i++) { do { e = readdir(dir); if (e == 0) continue; sprintf(path, "%s/%s", d_nm, e->d_name); stat(path, &s); } while (!S_ISREG(s.st_mode)); ls_lst[i] = malloc(strlen(e->d_name) + 1); strcpy(ls_lst[i], e->d_name); } // close dir // closedir(dir); } /* free list memory */ void L_DelLst() { int i; if (!ls_lst) return; for (i = 0; i < ls_n; i++) free(ls_lst[i]); free(ls_lst); } /* callback for dynlist l_sts to delete a level set */ void L_DelSt(void *p) { int i; LSet *st = (LSet*)p; if (st->ch) { for (i = 0; i < st->c_num; i++) free(st->ch[i].lvls); free(st->ch); } free(p); } /* add an empty and invalid entry */ void L_AddInvSt(char *nm) { LSet *st = malloc(sizeof(LSet)); st->c_num = 0; st->ch = 0; st->ok = 0; strcpy(st->nm, nm); DL_Add(&l_sts, st); } /* set marble, type and id of a map tile */ void L_StMpT(MapT *tl, int m, int t, int id) { tl->m = m; tl->t = t; tl->id = id; } /* parse and add a new lset from file f */ int L_LdSt(FILE *f) { int i, j, k, l; char val[64]; char str[512]; LSet *st = malloc(sizeof(LSet)); // info section // F_GetE(f, str, F_SUB | F_VAL); if (!F_CkE(str, F_SUB, "", 0)) { printf("ERROR: line %i: '' expected\n", f_ln); free(st); return 0; } // levels per chapter // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "levels", val)) { printf("ERROR: line %i: 'levels' expected\n", f_ln); free(st); return 0; } st->l_num = atoi(val); // chapters // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "chapters", val)) { printf("ERROR: line %i: 'chapters' expected\n", f_ln); free(st); return 0; } st->c_num = atoi(val); // limit type // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "limit", val)) { printf("ERROR: line %i: 'limit' expected\n", f_ln); free(st); return 0; } if ( !strncmp( "time", val, 4 ) ) st->limit_type = TIME; else st->limit_type = MOVES; // info section // F_GetE(f, str, F_SUB | F_VAL); if (!F_CkE(str, F_SUB, "", 0)) { printf("ERROR: line %i: '' expected\n", f_ln); free(st); return 0; } // get memory st->ch = malloc( sizeof(Chptr) * st->c_num ); for (i = 0; i < st->c_num; i++) st->ch[i].lvls = malloc( sizeof(Lvl) * st->l_num ); // chapters for (i = 0; i < st->c_num; i++) { // chapter start // F_GetE(f, str, F_SUB | F_VAL); if (!F_CkE(str, F_SUB, "", 0)) { printf("ERROR: line %i: '' expected\n", f_ln); goto failure; } // name // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "name", st->ch[i].nm)) { printf("ERROR: line %i: 'name' expected\n", f_ln); goto failure; } // author // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "author", st->ch[i].authr)) { printf("ERROR: line %i: 'author' expected\n", f_ln); goto failure; } // gset // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "gfx_set", st->ch[i].g_st)) { printf("ERROR: line %i: 'gfx_set' expected\n", f_ln); goto failure; } // open for play ? // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "open", val)) { printf("ERROR: line %i: 'open' expected\n", f_ln); goto failure; } st->ch[i].opn = atoi(val); // levels // for (j = 0; j < st->l_num; j++) { // level start // F_GetE(f, str, F_SUB | F_VAL); if (!F_CkE(str, F_SUB, "", 0)) { printf("ERROR: line %i: '' expected\n", f_ln); goto failure; } // time // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "limit", val)) { printf("ERROR: line %i: 'limit' expected\n", f_ln); goto failure; } st->ch[i].lvls[j].tm = atoi(val); // map width // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "map_w", val)) { printf("ERROR: line %i: 'map_w' expected\n", f_ln); goto failure; } if ((st->ch[i].lvls[j].m_w = atoi(val)) > L_MAX_W || atoi(val) < L_MIN_W) { printf("ERROR: line %i: 'map_w' out of range (%i-%i): %i\n", f_ln, L_MIN_W, L_MAX_W, atoi(val)); goto failure; } // map height // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "map_h", val)) { printf("ERROR: line %i: 'map_h' expected\n", f_ln); goto failure; } if ((st->ch[i].lvls[j].m_h = atoi(val)) > L_MAX_H || atoi(val) < L_MIN_H) { printf("ERROR: line %i: 'map_w' out of range (%i-%i): %i\n", f_ln, L_MIN_H, L_MAX_H, atoi(val)); goto failure; } // figure width // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "fig_w", val)) { printf("ERROR: line %i: 'fig_w' expected\n", f_ln); goto failure; } st->ch[i].lvls[j].f_w = atoi(val); if ((st->ch[i].lvls[j].f_w = atoi(val)) > F_MAX_W || atoi(val) < F_MIN_W) { printf("ERROR: line %i: 'fig_w' out of range (%i-%i): %i\n", f_ln, F_MIN_W, F_MAX_W, atoi(val)); goto failure; } // figure height // F_GetE(f, str, F_VAL); if (!F_CkE(str, F_VAL, "fig_h", val)) { printf("ERROR: line %i: 'fig_h' expected\n", f_ln); goto failure; } if ((st->ch[i].lvls[j].f_h = atoi(val)) > F_MAX_H || atoi(val) < F_MIN_H) { printf("ERROR: line %i: 'fig_h' out of range (%i-%i): %i\n", f_ln, F_MIN_H, F_MAX_H, atoi(val)); goto failure; } // figure start // F_GetE(f, str, F_SUB | F_VAL); if (!F_CkE(str, F_SUB, "

", 0)) { printf("ERROR: line %i: '
' expected\n", f_ln); goto failure; } // figure // for (k = 0; k < st->ch[i].lvls[j].f_h; k++) { F_GetE(f, str, F_VAL); for (l = 0; l < st->ch[i].lvls[j].f_w; l++) { if (str[l] >= '0' && str[l] <= '9') st->ch[i].lvls[j].fgr[l][k] = str[l] - 48; else if (str[l] != 32) printf("WARNING: line %i: bad figure marble '%c'\n", f_ln, str[l]); else st->ch[i].lvls[j].fgr[l][k] = -1; } } // figure end // F_GetE(f, str, F_SUB | F_VAL); if (!F_CkE(str, F_SUB, "
", 0)) { printf("ERROR: line %i: '
' expected\n", f_ln); goto failure; } // map start // F_GetE(f, str, F_SUB | F_VAL); if (!F_CkE(str, F_SUB, "", 0)) { printf("ERROR: line %i: '' expected\n", f_ln); goto failure; } // map for (k = 0; k < st->ch[i].lvls[j].m_h; k++) { memset(str, 0, 256); F_GetE(f, str, F_VAL); for (l = 0; l < st->ch[i].lvls[j].m_w; l++) { if (str[l] >= '0' && str[l] <= '9') L_StMpT(&st->ch[i].lvls[j].map[l][k], str[l] - 48, M_FLOOR, 0); else switch (str[l]) { case 'a': case 'b': case 'c': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_WALL, str[l] - 97); break; case ' ': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_FLOOR, 0); break; case 'u': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_OW_U, 0); break; case 'd': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_OW_D, 0); break; case 'r': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_OW_R, 0); break; case 'l': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_OW_L, 0); break; case 'U': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_OW_U_C, 0); break; case 'D': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_OW_D_C, 0); break; case 'R': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_OW_R_C, 0); break; case 'L': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_OW_L_C, 0); break; case 'w': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_TLP_0, 0); break; case 'x': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_TLP_1, 0); break; case 'y': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_TLP_2, 0); break; case 'z': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_TLP_3, 0); break; case 'A': case 'B': case 'C': L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_CRUMBLE, str[l] - 65); break; default: L_StMpT(&st->ch[i].lvls[j].map[l][k], -1, M_EMPTY, 0); break; } } } // map end // F_GetE(f, str, F_SUB | F_VAL); if (!F_CkE(str, F_SUB, "", 0)) { printf("ERROR: line %i: '' expected\n", f_ln); goto failure; } // level end // F_GetE(f, str, F_SUB | F_VAL); if (!F_CkE(str, F_SUB, "", 0)) { printf("ERROR: line %i: '' expected\n", f_ln); goto failure; } } // chapter end // F_GetE(f, str, F_SUB); if (!F_CkE(str, F_SUB, "", 0)) { printf("ERROR: line %i: '' expected\n", f_ln); goto failure; } } // return 1 in any case cuz 0 assumes that an empty set must be added printf("ok\n"); DL_Add(&l_sts, st); st->ok = 1; return 1; failure: DL_Add(&l_sts, st); // L_DelSt(st); st->ok = 0; return 1; } /* initialize level l */ void L_Ini(int c, int l) { char *nm; DL_E *e; int gst_ok = 0; int px, py, i, j, k; Lvl *lp; char str[64]; int off; char *str_num[] = {"1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "10."}; float mv_mod; // show credit when new chapter if ( gm.o_ch == -1 || gm.o_ch != c ) Cr_Ini(); // set level & chapter index gm.o_ch = c; gm.c_ch = c; gm.c_l_id = l; gm.l_done = 0; // set open flag gm.c_s_inf->c_opn[gm.c_ch] = 1; // copy current level if (gm.c_lvl) free(gm.c_lvl); gm.c_lvl = malloc(sizeof(Lvl)); memcpy(gm.c_lvl, &gm.c_l_st->ch[gm.c_ch].lvls[gm.c_l_id], sizeof(Lvl)); // load gfx set nm = gm.c_l_st->ch[gm.c_ch].g_st; e = gm.g_sts.hd.n; while (e != &gm.g_sts.tl) { if (!strncmp(nm, ((GSet*)e->d)->nm, strlen(nm)) && ((GSet*)e->d)->ok) { gm.c_g_st = (GSet*)e->d; gst_ok = 1; break; } e = e->n; } if (!gst_ok) { printf("WARNING: unknown or unuseable gfx set '%s';\nsearching for a good one...\n", nm); // find first useable set e = gm.g_sts.hd.n; while (e != &gm.g_sts.tl) { if (((GSet*)e->d)->ok) { gm.c_g_st = (GSet*)e->d; printf("'%s' used instead\n", gm.c_g_st->nm); gst_ok = 1; break; } e = e->n; } if (!gst_ok) { printf("ERROR: no good gfx set found...\n"); exit(1); } } // set bkgd picture if (gm.c_g_st->s_bkgd) { for (j = 0; j < gm.scr_w - gm.brd_w; j += gm.c_g_st->s_bkgd->w) for (k = 0; k < gm.scr_h; k += gm.c_g_st->s_bkgd->h) { D_DST(gm.s_bkgd, j, k, gm.c_g_st->s_bkgd->w, gm.c_g_st->s_bkgd->h); D_SRC(gm.c_g_st->s_bkgd, 0, 0); SS_Blt(); } } else { D_DST(gm.s_bkgd, 0, 0, gm.scr_w - gm.brd_w, gm.scr_h); SS_Fill(0x0); } // add board D_DST(gm.s_bkgd, gm.s_bkgd->w - gm.s_brd->w, 0, gm.s_brd->w, gm.s_brd->h); D_SRC(gm.s_brd, 0, 0); SS_Blt(); // add static level gfx lp = &gm.c_l_st->ch[gm.c_ch].lvls[gm.c_l_id]; gm.l_x = (gm.scr_w - gm.brd_w - lp->m_w * gm.t_w) / 2; gm.l_y = (gm.scr_h - lp->m_h * gm.t_h) / 2; for (i = 0; i < lp->m_w; i++) for (j = 0; j < lp->m_h; j++) L_DrwMpTl(i, j); // add marbles for (i = 0; i < lp->m_w; i++) for (j = 0; j < lp->m_h; j++) if (lp->map[i][j].m != - 1) { D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + j * gm.t_h, gm.t_w, gm.t_h); D_SRC(gm.s_mrb, 0, lp->map[i][j].m * gm.t_h); SS_Blt(); } // add figure px = gm.b_x + gm.f_x + (gm.f_fw - lp->f_w * gm.f_h) / 2; py = gm.f_y + (gm.f_fh - lp->f_h * gm.f_h)/ 2; for (i = 0; i < lp->f_w; i++) for (j = 0; j < lp->f_h; j++) if (lp->fgr[i][j] != -1) { D_DST(gm.s_bkgd, px + i * gm.f_w, py + j * gm.f_h, gm.f_w, gm.f_h); D_SRC(gm.s_fig, 0, lp->fgr[i][j] * gm.f_h); SS_Blt(); } // add player info off = gm.f_sml->h + 2; gm.f_sml->algn = TA_X_L | TA_Y_T; SF_Wrt(gm.f_sml, gm.s_bkgd, gm.i_x + gm.b_x, gm.i_y, "Player:", 0); gm.f_sml->algn = TA_X_R | TA_Y_T; SF_Wrt(gm.f_sml, gm.s_bkgd, gm.scr_w - gm.i_x, gm.i_y, gm.c_prf->nm, 0); gm.f_sml->algn = TA_X_L | TA_Y_T; SF_Wrt(gm.f_sml, gm.s_bkgd, gm.i_x + gm.b_x, gm.i_y + off, "Score:", 0); gm.f_sml->algn = TA_X_R | TA_Y_T; sprintf(str, "%i", gm.c_prf->scr); SF_Wrt(gm.f_sml, gm.s_bkgd, gm.scr_w - gm.i_x, gm.i_y + off, str, 0); gm.f_sml->algn = TA_X_L | TA_Y_T; SF_Wrt(gm.f_sml, gm.s_bkgd, gm.i_x + gm.b_x, gm.i_y + off*2 + 5, "HighScore:", 0); gm.f_sml->algn = TA_X_R | TA_Y_T; sprintf(str, "%i", gm.hi_scr); SF_Wrt(gm.f_sml, gm.s_bkgd, gm.scr_w - gm.i_x, gm.i_y + off*2 + 5, str, 0); // add name of levelset above set info gm.f_sml->algn = TA_X_C | TA_Y_T; SF_Wrt(gm.f_sml, gm.s_bkgd, gm.b_x + gm.brd_w / 2, gm.s_y + 5, gm.c_l_st->nm, 0); // compute position of first chapter gm.c_x = 50; // changed gm.c_y = gm.s_y + (gm.s_h - gm.c_l_st->c_num * L_SIZE) / 2; // add chapter numbers gm.f_sml->algn = TA_X_L | TA_Y_T; for (i = 0; i < gm.c_l_st->c_num; i++) { SF_Wrt(gm.f_sml, gm.s_bkgd, gm.b_x + gm.c_x - 30, gm.c_y + i * L_SIZE, str_num[i], 0); } // draw chapter lights for (j = 0; j < gm.c_l_st->c_num; j++) for (i = 0; i < gm.c_l_st->l_num; i++) { D_DST(gm.s_bkgd, gm.b_x + gm.c_x + i * L_SIZE, gm.c_y + j * L_SIZE, L_SIZE, L_SIZE); if (!gm.c_s_inf->c_opn[j]) { D_SRC(gm.s_lghts, L_RED * L_SIZE, 0); } else if ( gm.c_s_inf->cmp[j * gm.c_l_st->l_num + i] ) { D_SRC(gm.s_lghts, L_GREEN * L_SIZE, 0); } else { D_SRC(gm.s_lghts, L_ORANGE * L_SIZE, 0); } SS_Blt(); } // current level is white D_DST(gm.s_bkgd, gm.b_x + gm.c_x + l * L_SIZE, gm.c_y + c * L_SIZE, L_SIZE, L_SIZE); D_SRC(gm.s_lghts, L_WHITE * L_SIZE, 0); SS_Blt(); // initiate animations MA_Ini(); // undim D_FDST(sdl.scr); D_FSRC(gm.s_bkgd); SS_Blt(); if (cfg.dim) SDL_UNDIM(); else Sdl_FUpd(); // reset timer T_Rst(); // reset marble and frame gm.m_mv = 0; gm.m_sel = 0; gm.mf_a.p = 0; gm.msf_a.p = 0; gm.m_act = M_EMPTY; gm.m_mx = gm.m_my = -1; if ( gm.c_l_st->limit_type == TIME ) { /* set time from seconds to milliseconds if time used */ gm.c_lvl->tm *= 1000; gm.c_lvl->tm+=1000; } else { /* gm.c_lvl->tm containts the move limit. this is modified according to the difficulty levels */ switch ( cfg.diff ) { case DIFF_EASY: mv_mod = (int)ceil((float)gm.c_lvl->tm * 0.2 * ( 5 - gm.c_ch ) ); gm.c_lvl->tm += mv_mod; if ( gm.c_lvl->tm % 2 ) gm.c_lvl->tm++; break; case DIFF_NORMAL: mv_mod = (int)ceil((float)gm.c_lvl->tm * 0.1 * ( 5 - gm.c_ch ) ); gm.c_lvl->tm += mv_mod; if ( gm.c_lvl->tm % 2 ) gm.c_lvl->tm++; break; case DIFF_HARD: mv_mod = (int)ceil((float)gm.c_lvl->tm * 0.05 * ( 5 - gm.c_ch ) ); gm.c_lvl->tm += mv_mod; if ( gm.c_lvl->tm % 2 ) gm.c_lvl->tm++; break; case DIFF_BRAINSTORM: break; } } // init blink time // gm.blink_time = 0; // cursor state gm.c_stat = C_NONE; SDL_SetCursor(gm.c_n); // reset shrapnells DL_Clr(&gm.shr); } /* draw a map tile to gm.s_bkgd with x,y position in the map using current map */ void L_DrwMpTl(int i, int j) { switch (gm.c_lvl->map[i][j].t) { case M_WALL: // add wall shadow on right side ? // if ( i + 1 >= gm.c_lvl->m_w || gm.c_lvl->map[i + 1][j].t == M_EMPTY ) { D_DST(gm.s_bkgd, gm.l_x + (i + 1) * gm.t_w, gm.l_y + j * gm.t_h, 1, gm.t_h + 1); SS_Fill(0x0); } // add wall shadow on bottom ? // if ( j + 1 >= gm.c_lvl->m_h || gm.c_lvl->map[i][j + 1].t == M_EMPTY ) { D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + (j + 1) * gm.t_h, gm.t_w + 1, 1); SS_Fill(0x0); } // add wall shadow on left side ? // if ( (i == 0) || ((i - 1 >= gm.c_lvl->m_w) || gm.c_lvl->map[i - 1][j].t == M_EMPTY )) { D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w - 1, gm.l_y + j * gm.t_h, 1, gm.t_h + 1); SS_Fill(0x0); } // add wall shadow on top ? // if ( (j == 0) || ((j - 1 >= gm.c_lvl->m_h) || gm.c_lvl->map[i][j - 1].t == M_EMPTY )) { D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + j * gm.t_h - 1, gm.t_w + 1, 1); SS_Fill(0x0); } D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + j * gm.t_h, gm.t_w, gm.t_h); D_SRC(gm.c_g_st->s_wl, gm.c_lvl->map[i][j].id * gm.t_w, 0); SS_Blt(); break; case M_CRUMBLE: D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + j * gm.t_h, gm.t_w, gm.t_h); D_SRC(gm.c_g_st->s_flr, 0, 0); SS_Blt(); D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + j * gm.t_h, gm.t_w, gm.t_h); D_SRC(gm.c_g_st->s_crmbl, gm.c_lvl->map[i][j].id * gm.t_w, 0); SS_Blt(); gm.f_sml->algn = TA_X_R | TA_Y_B; switch (gm.c_lvl->map[i][j].id) { case 0: SF_Wrt(gm.f_sml, gm.s_bkgd, gm.l_x + (i + 1) * gm.t_w - 1, gm.l_y + (j + 1) * gm.t_h - 1, "1", 0); break; case 1: SF_Wrt(gm.f_sml, gm.s_bkgd, gm.l_x + (i + 1) * gm.t_w - 1, gm.l_y + (j + 1) * gm.t_h - 1, "2", 0); break; case 2: SF_Wrt(gm.f_sml, gm.s_bkgd, gm.l_x + (i + 1) * gm.t_w - 1, gm.l_y + (j + 1) * gm.t_h - 1, "3", 0); break; } break; case M_EMPTY: break; default: D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + j * gm.t_h, gm.t_w, gm.t_h); D_SRC(gm.c_g_st->s_flr, 0, 0); SS_Blt(); break; } // static animations ? // if (!cfg.ani) { D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + j * gm.t_h, gm.t_w, gm.t_h); switch (gm.c_lvl->map[i][j].t) { case M_OW_U: case M_OW_U_C: D_SRC(gm.c_g_st->s_u_arw, 0, 0); SS_Blt(); break; case M_OW_D: case M_OW_D_C: D_SRC(gm.c_g_st->s_d_arw, 0, 0); SS_Blt(); break; case M_OW_L: case M_OW_L_C: D_SRC(gm.c_g_st->s_l_arw, 0, 0); SS_Blt(); break; case M_OW_R: case M_OW_R_C: D_SRC(gm.c_g_st->s_r_arw, 0, 0); SS_Blt(); break; } D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + j * gm.t_h, gm.t_w, gm.t_h); switch (gm.c_lvl->map[i][j].t) { case M_OW_U_C: case M_OW_D_C: D_SRC(gm.c_g_st->s_lr_bar, 0, 0); SS_Blt(); break; case M_OW_L_C: case M_OW_R_C: D_SRC(gm.c_g_st->s_ud_bar, 0, 0); SS_Blt(); break; } D_DST(gm.s_bkgd, gm.l_x + i * gm.t_w, gm.l_y + j * gm.t_h, gm.t_w, gm.t_h); switch (gm.c_lvl->map[i][j].t) { case M_TLP_0: D_SRC(gm.c_g_st->s_tlp_0, 0, 0); SS_ABlt(gm.tlp_a); break; case M_TLP_1: D_SRC(gm.c_g_st->s_tlp_1, 0, 0); SS_ABlt(gm.tlp_a); break; case M_TLP_2: D_SRC(gm.c_g_st->s_tlp_2, 0, 0); SS_ABlt(gm.tlp_a); break; case M_TLP_3: D_SRC(gm.c_g_st->s_tlp_3, 0, 0); SS_ABlt(gm.tlp_a); break; } } } /* proceed to next valid level */ int L_FndNxt() { int i, j; // proceed to next level gm.c_l_id++; if (gm.c_l_id >= gm.c_l_st->l_num) { gm.c_l_id = 0; gm.c_ch++; // check if this chapter can be entered or if this was the last chapter if not take first unsolved level found if (gm.c_ch >= gm.c_l_st->c_num || !gm.c_l_st->ch[gm.c_ch].opn) { for (i = 0; i < gm.c_ch; i++) for (j = 0; j < gm.c_l_st->l_num; j++) if (!gm.c_s_inf->cmp[i * gm.c_l_st->l_num + j]) { // not all levels completed jump back to first unsolved level gm.c_ch = i; gm.c_l_id = j; return 1; } if (gm.c_ch >= gm.c_l_st->c_num) return 0; else return 1; } } else { // check if all levels of this chapter has been solved for (i = 0; i <= gm.c_ch; i++) for (j = 0; j < gm.c_l_st->l_num; j++) if (!gm.c_s_inf->cmp[i * gm.c_l_st->l_num + j]) { return 1; } // yes! open next chapter if ( gm.c_ch < gm.c_l_st->c_num - 1 ) gm.c_s_inf->c_opn[gm.c_ch + 1] = 1; } return 1; } lmarbles-1.0.7.orig/src/levels.h0000600000175000017500000000544207426022332014670 0ustar uweuwe/*************************************************************************** levels.h - description ------------------- begin : Mon Aug 14 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef LEVELS_H #define LEVELS_H #include #define MAX_LVLS 10 #define MAX_CHPTRS 10 #define L_MAX_W 13 #define L_MIN_W 4 #define L_MAX_H 14 #define L_MIN_H 4 #define F_MAX_W 10 #define F_MIN_W 2 #define F_MAX_H 10 #define F_MIN_H 1 // level bonuses // #define LB_COMPLETED 1000 #define LB_PER_MOVE 50 // limit type // #define TIME 0 #define MOVES 1 // tile types // enum { M_EMPTY = 0, // background // M_FLOOR, // simple floor // M_OW_U_C, // oneway directed to north (up) closed to the left and right side // M_OW_D_C, // analog // M_OW_L_C, // analog // M_OW_R_C, // analog // M_OW_U, // oneway to north not closed at the sides // M_OW_D, // analog // M_OW_L, // analog // M_OW_R, // analog // M_WALL, // impassible wall // M_TLP_0, // teleporter // M_TLP_1, // analog // M_TLP_2, // analog // M_TLP_3, // analog // M_CRUMBLE, // crumbling wall // M_NUM }; typedef struct { int m; // marble // int t; // type // int id; } MapT; typedef struct { int tm; // time // int m_w, m_h; // map size // int f_w, f_h; // figure size // int fgr[F_MAX_W][F_MAX_H]; // figure // MapT map[L_MAX_W][L_MAX_H]; // map // } Lvl; typedef struct { char nm[64]; char authr[32]; char g_st[32]; int bkgd; int opn; // levels from this chapter can be played Lvl *lvls; } Chptr; typedef struct { char nm[64]; int c_num; int l_num; Chptr *ch; int ok; int limit_type; /* which type of limit? */ } LSet; void L_CrtLst(); void L_DelLst(); void L_DelSt(void *p); void L_AddInvSt(char *nm); int L_LdSt(FILE *f); void L_Ini(int c, int l); void L_DrwMpTl(int x, int y); int L_FndNxt(); #endif lmarbles-1.0.7.orig/src/Makefile.am0000600000175000017500000001126310061601046015251 0ustar uweuweDEFS = @DEFS@ @arch_flag@ @inst_flag@ @prf_flag@ @sound_flag@ @ascii_flag@ marblesres.o: win32.ico @echo "1 VERSIONINFO" > $(PACKAGE).rc @echo "FILEVERSION `echo $(VERSION) | $(AWK) '{ gsub(/\./,","); print }'`,0" >> $(PACKAGE).rc @echo "PRODUCTVERSION `echo $(VERSION) | $(AWK) '{ gsub(/\./,","); print }'`,0" >> $(PACKAGE).rc @echo "FILEFLAGSMASK 0" >> $(PACKAGE).rc @echo "FILEOS 0x40000" >> $(PACKAGE).rc @echo "FILETYPE 1" >> $(PACKAGE).rc @echo "{" >> $(PACKAGE).rc @echo " BLOCK \"StringFileInfo\"" >> $(PACKAGE).rc @echo " {" >> $(PACKAGE).rc @echo " BLOCK \"040904E4\"" >> $(PACKAGE).rc @echo " {" >> $(PACKAGE).rc @echo " VALUE \"CompanyName\", \"LGames - Michael Speck\"" >> $(PACKAGE).rc @echo " VALUE \"FileDescription\", \"@appname@\"" >> $(PACKAGE).rc @echo " VALUE \"FileVersion\", \"$(VERSION)\"" >> $(PACKAGE).rc @echo " VALUE \"InternalName\", \"$(PACKAGE)\"" >> $(PACKAGE).rc @echo " VALUE \"LegalCopyright\", \"GNU Public License\"" >> $(PACKAGE).rc @echo " VALUE \"OriginalFilename\", \"$(PACKAGE)$(EXEEXT)\"" >> $(PACKAGE).rc @echo " VALUE \"ProductName\", \"@appname@\"" >> $(PACKAGE).rc @echo " VALUE \"ProductVersion\", \"$(VERSION)\"" >> $(PACKAGE).rc @echo " }" >> $(PACKAGE).rc @echo " }" >> $(PACKAGE).rc @echo "}" >> $(PACKAGE).rc @echo "0 ICON win32.ico" >> $(PACKAGE).rc @windres -o $@ -i $(PACKAGE).rc bin_PROGRAMS = lmarbles lmarbles_SOURCES = audio.c cfg.c dynlist.c file.c game.c levels.c main.c menu.c \ profile.c sdl.c timer.c audio.h cfg.h dynlist.h file.h game.h levels.h \ menu.h profile.h sdl.h timer.h win32.ico lmarbles.6 lmarbles_DEPENDENCIES = @win32_deps@ lmarbles_LDADD = @win32_deps@ @mixer_flag@ man_MANS = lmarbles.6 DATA_FILES = \ gfx/board.bmp gfx/f_red.bmp gfx/f_small.bmp gfx/f_white.bmp \ gfx/f_yellow.bmp gfx/figure.bmp gfx/lights.bmp gfx/logo.bmp \ gfx/m_frame.bmp gfx/m_sframe.bmp gfx/marbles.bmp gfx/tiny.sdlfnt \ gfx/title.bmp gfx/win_icon.bmp \ \ sounds/alarm.wav sounds/arrow.wav sounds/click.wav sounds/explode.wav \ sounds/select.wav sounds/stop.wav sounds/teleport.wav sounds/score.wav \ \ levels/Original \ \ gfx/stone/arrow_d.bmp gfx/stone/arrow_l.bmp gfx/stone/arrow_r.bmp \ gfx/stone/arrow_u.bmp gfx/stone/background.bmp gfx/stone/barrier_lr.bmp \ gfx/stone/barrier_ud.bmp gfx/stone/floor.bmp gfx/stone/teleport0.bmp \ gfx/stone/teleport1.bmp gfx/stone/teleport2.bmp \ gfx/stone/teleport3.bmp gfx/stone/wall.bmp \ gfx/stone/wall_crumble.bmp \ \ gfx/metal/arrow_d.bmp gfx/metal/arrow_l.bmp gfx/metal/arrow_r.bmp \ gfx/metal/arrow_u.bmp gfx/metal/background.bmp gfx/metal/barrier_lr.bmp \ gfx/metal/barrier_ud.bmp gfx/metal/floor.bmp gfx/metal/teleport0.bmp \ gfx/metal/teleport1.bmp gfx/metal/teleport2.bmp \ gfx/metal/teleport3.bmp gfx/metal/wall.bmp \ gfx/metal/wall_crumble.bmp \ \ gfx/wood/arrow_d.bmp gfx/wood/arrow_l.bmp gfx/wood/arrow_r.bmp \ gfx/wood/arrow_u.bmp gfx/wood/background.bmp gfx/wood/barrier_lr.bmp \ gfx/wood/barrier_ud.bmp gfx/wood/floor.bmp gfx/wood/teleport0.bmp \ gfx/wood/teleport1.bmp gfx/wood/teleport2.bmp \ gfx/wood/teleport3.bmp gfx/wood/wall.bmp \ gfx/wood/wall_crumble.bmp DOC_FILES = manual/manual.html manual/arrow.jpg manual/arrow2.jpg \ manual/crumble.jpg manual/teleport.jpg manual/marbles.jpg EXTRA_DIST= empty.prfs $(DATA_FILES) $(DOC_FILES) install-data-local: #directories $(mkinstalldirs) $(DESTDIR)$(inst_dir) $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/stone $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/metal $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/wood $(mkinstalldirs) $(DESTDIR)$(inst_dir)/sounds $(mkinstalldirs) $(DESTDIR)$(inst_dir)/levels #data files for file in $(DATA_FILES); do\ $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/$$file;\ done #profiles $(mkinstalldirs) $(DESTDIR)$(prf_dir) if ! test -f $(DESTDIR)$(prf_dir)/lmarbles.prfs; then \ $(INSTALL_DATA) -m 666 empty.prfs $(DESTDIR)$(prf_dir)/lmarbles.prfs; \ fi; uninstall-local: rm -rf $(DESTDIR)$(inst_dir) rm -f $(DESTDIR)$(prf_dir)/lmarbles.prfs win32rootdir=`pwd -W | awk '{ gsub("/","\\\\"); print}'` win32-install-script: @$(STRIP) $(PACKAGE)$(EXEEXT) @echo "Source: \"$(win32rootdir)\\$(PACKAGE)$(EXEEXT)\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@ @for file in $(DATA_FILES) $(DOC_FILES); do \ win32src=$(win32rootdir)\\`echo $$file | awk '{ gsub("/","\\\\"); print }'`; \ win32dest=`dirname $$file | awk '{ gsub("/","\\\\"); print }'`; \ echo "Source: \"$$win32src\"; DestDir: \"{app}\\$$win32dest\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ done @list='$(SUBDIRS)'; for subdir in $$list; do \ (cd $$subdir \ && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); \ done lmarbles-1.0.7.orig/src/Makefile.in0000600000175000017500000003431010063260672015270 0ustar uweuwe# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ AWK = @AWK@ CC = @CC@ EXEEXT = @EXEEXT@ ISCC = @ISCC@ MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ appname = @appname@ arch_flag = @arch_flag@ ascii_flag = @ascii_flag@ inst_dir = @inst_dir@ inst_flag = @inst_flag@ mixer_flag = @mixer_flag@ prf_dir = @prf_dir@ prf_flag = @prf_flag@ sound_flag = @sound_flag@ win32_deps = @win32_deps@ win32_inst_script = @win32_inst_script@ DEFS = @DEFS@ @arch_flag@ @inst_flag@ @prf_flag@ @sound_flag@ @ascii_flag@ bin_PROGRAMS = lmarbles lmarbles_SOURCES = audio.c cfg.c dynlist.c file.c game.c levels.c main.c menu.c profile.c sdl.c timer.c audio.h cfg.h dynlist.h file.h game.h levels.h menu.h profile.h sdl.h timer.h win32.ico lmarbles.6 lmarbles_DEPENDENCIES = @win32_deps@ lmarbles_LDADD = @win32_deps@ @mixer_flag@ man_MANS = lmarbles.6 DATA_FILES = gfx/board.bmp gfx/f_red.bmp gfx/f_small.bmp gfx/f_white.bmp gfx/f_yellow.bmp gfx/figure.bmp gfx/lights.bmp gfx/logo.bmp gfx/m_frame.bmp gfx/m_sframe.bmp gfx/marbles.bmp gfx/tiny.sdlfnt gfx/title.bmp gfx/win_icon.bmp sounds/alarm.wav sounds/arrow.wav sounds/click.wav sounds/explode.wav sounds/select.wav sounds/stop.wav sounds/teleport.wav sounds/score.wav levels/Original gfx/stone/arrow_d.bmp gfx/stone/arrow_l.bmp gfx/stone/arrow_r.bmp gfx/stone/arrow_u.bmp gfx/stone/background.bmp gfx/stone/barrier_lr.bmp gfx/stone/barrier_ud.bmp gfx/stone/floor.bmp gfx/stone/teleport0.bmp gfx/stone/teleport1.bmp gfx/stone/teleport2.bmp gfx/stone/teleport3.bmp gfx/stone/wall.bmp gfx/stone/wall_crumble.bmp gfx/metal/arrow_d.bmp gfx/metal/arrow_l.bmp gfx/metal/arrow_r.bmp gfx/metal/arrow_u.bmp gfx/metal/background.bmp gfx/metal/barrier_lr.bmp gfx/metal/barrier_ud.bmp gfx/metal/floor.bmp gfx/metal/teleport0.bmp gfx/metal/teleport1.bmp gfx/metal/teleport2.bmp gfx/metal/teleport3.bmp gfx/metal/wall.bmp gfx/metal/wall_crumble.bmp gfx/wood/arrow_d.bmp gfx/wood/arrow_l.bmp gfx/wood/arrow_r.bmp gfx/wood/arrow_u.bmp gfx/wood/background.bmp gfx/wood/barrier_lr.bmp gfx/wood/barrier_ud.bmp gfx/wood/floor.bmp gfx/wood/teleport0.bmp gfx/wood/teleport1.bmp gfx/wood/teleport2.bmp gfx/wood/teleport3.bmp gfx/wood/wall.bmp gfx/wood/wall_crumble.bmp DOC_FILES = manual/manual.html manual/arrow.jpg manual/arrow2.jpg manual/crumble.jpg manual/teleport.jpg manual/marbles.jpg EXTRA_DIST = empty.prfs $(DATA_FILES) $(DOC_FILES) win32rootdir = `pwd -W | awk '{ gsub("/","\\\\"); print}'` mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = bin_PROGRAMS = lmarbles$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ lmarbles_OBJECTS = audio.o cfg.o dynlist.o file.o game.o levels.o \ main.o menu.o profile.o sdl.o timer.o lmarbles_LDFLAGS = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ man6dir = $(mandir)/man6 MANS = $(man_MANS) NROFF = nroff DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best SOURCES = $(lmarbles_SOURCES) OBJECTS = $(lmarbles_OBJECTS) all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .o .s $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status mostlyclean-binPROGRAMS: clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) distclean-binPROGRAMS: maintainer-clean-binPROGRAMS: install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) list='$(bin_PROGRAMS)'; for p in $$list; do \ rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ done .c.o: $(COMPILE) -c $< .s.o: $(COMPILE) -c $< .S.o: $(COMPILE) -c $< mostlyclean-compile: -rm -f *.o core *.core clean-compile: distclean-compile: -rm -f *.tab.c maintainer-clean-compile: lmarbles$(EXEEXT): $(lmarbles_OBJECTS) $(lmarbles_DEPENDENCIES) @rm -f lmarbles$(EXEEXT) $(LINK) $(lmarbles_LDFLAGS) $(lmarbles_OBJECTS) $(lmarbles_LDADD) $(LIBS) install-man6: $(mkinstalldirs) $(DESTDIR)$(man6dir) @list='$(man6_MANS)'; \ l2='$(man_MANS)'; for i in $$l2; do \ case "$$i" in \ *.6*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man6dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man6dir)/$$inst; \ done uninstall-man6: @list='$(man6_MANS)'; \ l2='$(man_MANS)'; for i in $$l2; do \ case "$$i" in \ *.6*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f $(DESTDIR)$(man6dir)/$$inst"; \ rm -f $(DESTDIR)$(man6dir)/$$inst; \ done install-man: $(MANS) @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-man6 uninstall-man: @$(NORMAL_UNINSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-man6 tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) subdir = src distdir: $(DISTFILES) $(mkinstalldirs) $(distdir)/gfx $(distdir)/gfx/metal \ $(distdir)/gfx/stone $(distdir)/gfx/wood $(distdir)/levels \ $(distdir)/manual $(distdir)/sounds @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done audio.o: audio.c audio.h cfg.o: cfg.c cfg.h sdl.h file.h dynlist.o: dynlist.c dynlist.h file.o: file.c file.h game.o: game.c game.h levels.h dynlist.h profile.h sdl.h audio.h file.h \ cfg.h menu.h timer.h levels.o: levels.c levels.h dynlist.h game.h profile.h sdl.h audio.h \ file.h timer.h cfg.h main.o: main.c ../config.h menu.h sdl.h dynlist.h audio.h cfg.h levels.h \ timer.h profile.h game.h menu.o: menu.c menu.h sdl.h dynlist.h audio.h cfg.h profile.o: profile.c profile.h levels.h dynlist.h cfg.h file.h sdl.o: sdl.c sdl.h sndsrv.o: sndsrv.c sndsrv.h dynlist.h timer.o: timer.c timer.h sdl.h info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am install-exec-am: install-binPROGRAMS install-exec: install-exec-am install-data-am: install-man install-data-local install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-binPROGRAMS uninstall-man uninstall-local uninstall: uninstall-am all-am: Makefile $(PROGRAMS) $(MANS) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(mandir)/man6 mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ mostlyclean-am clean: clean-am distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ distclean-generic clean-am distclean: distclean-am maintainer-clean-am: maintainer-clean-binPROGRAMS \ maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am .PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile install-man6 uninstall-man6 install-man \ uninstall-man tags mostlyclean-tags distclean-tags clean-tags \ maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \ installcheck-am installcheck install-exec-am install-exec \ install-data-local install-data-am install-data install-am install \ uninstall-local uninstall-am uninstall all-redirect all-am all \ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean marblesres.o: win32.ico @echo "1 VERSIONINFO" > $(PACKAGE).rc @echo "FILEVERSION `echo $(VERSION) | $(AWK) '{ gsub(/\./,","); print }'`,0" >> $(PACKAGE).rc @echo "PRODUCTVERSION `echo $(VERSION) | $(AWK) '{ gsub(/\./,","); print }'`,0" >> $(PACKAGE).rc @echo "FILEFLAGSMASK 0" >> $(PACKAGE).rc @echo "FILEOS 0x40000" >> $(PACKAGE).rc @echo "FILETYPE 1" >> $(PACKAGE).rc @echo "{" >> $(PACKAGE).rc @echo " BLOCK \"StringFileInfo\"" >> $(PACKAGE).rc @echo " {" >> $(PACKAGE).rc @echo " BLOCK \"040904E4\"" >> $(PACKAGE).rc @echo " {" >> $(PACKAGE).rc @echo " VALUE \"CompanyName\", \"LGames - Michael Speck\"" >> $(PACKAGE).rc @echo " VALUE \"FileDescription\", \"@appname@\"" >> $(PACKAGE).rc @echo " VALUE \"FileVersion\", \"$(VERSION)\"" >> $(PACKAGE).rc @echo " VALUE \"InternalName\", \"$(PACKAGE)\"" >> $(PACKAGE).rc @echo " VALUE \"LegalCopyright\", \"GNU Public License\"" >> $(PACKAGE).rc @echo " VALUE \"OriginalFilename\", \"$(PACKAGE)$(EXEEXT)\"" >> $(PACKAGE).rc @echo " VALUE \"ProductName\", \"@appname@\"" >> $(PACKAGE).rc @echo " VALUE \"ProductVersion\", \"$(VERSION)\"" >> $(PACKAGE).rc @echo " }" >> $(PACKAGE).rc @echo " }" >> $(PACKAGE).rc @echo "}" >> $(PACKAGE).rc @echo "0 ICON win32.ico" >> $(PACKAGE).rc @windres -o $@ -i $(PACKAGE).rc install-data-local: #directories $(mkinstalldirs) $(DESTDIR)$(inst_dir) $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/stone $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/metal $(mkinstalldirs) $(DESTDIR)$(inst_dir)/gfx/wood $(mkinstalldirs) $(DESTDIR)$(inst_dir)/sounds $(mkinstalldirs) $(DESTDIR)$(inst_dir)/levels #data files for file in $(DATA_FILES); do\ $(INSTALL_DATA) $$file $(DESTDIR)$(inst_dir)/$$file;\ done #profiles $(mkinstalldirs) $(DESTDIR)$(prf_dir) if ! test -f $(DESTDIR)$(prf_dir)/lmarbles.prfs; then \ $(INSTALL_DATA) -m 666 empty.prfs $(DESTDIR)$(prf_dir)/lmarbles.prfs; \ fi; uninstall-local: rm -rf $(DESTDIR)$(inst_dir) rm -f $(DESTDIR)$(prf_dir)/lmarbles.prfs win32-install-script: @$(STRIP) $(PACKAGE)$(EXEEXT) @echo "Source: \"$(win32rootdir)\\$(PACKAGE)$(EXEEXT)\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@ @for file in $(DATA_FILES) $(DOC_FILES); do \ win32src=$(win32rootdir)\\`echo $$file | awk '{ gsub("/","\\\\"); print }'`; \ win32dest=`dirname $$file | awk '{ gsub("/","\\\\"); print }'`; \ echo "Source: \"$$win32src\"; DestDir: \"{app}\\$$win32dest\"; CopyMode: alwaysoverwrite" >> @win32_inst_script@; \ done @list='$(SUBDIRS)'; for subdir in $$list; do \ (cd $$subdir \ && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); \ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lmarbles-1.0.7.orig/src/levels/0000700000175000017500000000000010063260672014512 5ustar uweuwelmarbles-1.0.7.orig/src/levels/Original0000600000175000017500000002045707426071336016221 0ustar uweuwe levels = 8; (per chapter) chapters = 4; limit = moves; (either moves or limit) name = Tutorial; author = Michael Speck; gfx_set = stone; open = 1; limit = 13; map_w = 8; map_h = 8; fig_w = 2; fig_h = 2;
56; 65;
cccccccc; c 5 b c; cbb c; c 6 b6c; cccc b c; ...c b c; ...c 5 c; ...ccccc;
limit = 19; map_w = 10; map_h = 9; fig_w = 4; fig_h = 2;
1 ; 1898;
aaaaaaaaaa; a 1 8 a; a bb bb a; a b b a; a 8 a; a aaaa a; a a..a a; a9 a..a 1a; aaaa..aaaa;
limit = 23; map_w = 11; map_h = 9; fig_w = 3; fig_h = 3;
4 ; 6 6; 4 ;
.aaaaaaaaa.; .a 4a.; .a cc caa; .a 4c a; aac cc c a; a c a; a6 cc a; aaaaaaaa6 a; .......aaaa;
limit = 22; map_w = 10; map_h = 10; fig_w = 3; fig_h = 1;
313;
bbbbbbbbbb; b 1b; b aab; ba a aa3b; b a a b; b 3a b; b a b; b a aa b; b a a b; bbbbbbbbbb;
limit = 25; map_w = 9; map_h = 9; fig_w = 3; fig_h = 3;
2 ; 787; 2 ;
aaaaaaaaa; a2c c7 a; a cc a; acc c ca; a a; a8c c cca; acc c2a; a7 a; aaaaaaaaa;
limit = 21; map_w = 10; map_h = 12; fig_w = 3; fig_h = 3;
7 9; 8 ; 9 7;
bbbbb; b 8 b; b b b; b b b; b b b; b bbbbbb; bbb b; b9 bbbb7b; bbb b; b bbb; b7b 9b; bbbbbbbbbb;
limit = 31; (seconds or moves) map_w = 10; map_h = 10; fig_w = 4; fig_h = 3;
5 ; 2343; 5 ;
aaaaaaaaaa; a5 2a; abb b4b a; a3b b b a; a a; a b b b a; a b5 b a; a bbb b a; a 3 a; aaaaaaaaaa;
limit = 63; map_w = 13; map_h = 12; fig_w = 5; fig_h = 3;
55 5; 5000 ; 5 5;
...ccccccccc.; ...c a 5c.; ...c0a c.; ...ca aac.; cccc aa 5c.; c0a 5 ccc.; c c..; c a5a aaaaccc; c a 5 c; c5 aa 0aadc; cc l c; .cccccccccccc;
name = A few problems; author = Michael Speck; gfx_set = wood; open = 0; limit = 16; map_w = 8; map_h = 7; fig_w = 3; fig_h = 3;
1 1; 232; 1 1;
bbbbbbbb; b1 c 2b; b R cb; bc2 1 3b; b L cb; b1 c 1b; bbbbbbbb;
limit = 35; map_w = 12; map_h = 9; fig_w = 5; fig_h = 3;
55 ; 50015; 5 ;
bbbbbbbbbbbb; b 5 c 5b; b y ccc b; b5 0l y b; ccc cc c b; .c 5 c b; .c 0cc c1l b; .c 5 cbbbb; .ccccccc....;
limit = 19; map_w = 8; map_h = 8; fig_w = 3; fig_h = 3;
1; 2 ; 1 ;
cccccccc; c 1 c; c ccc cc; c 2 c; c ccc cc; c 1 c; c c c; cccccccc;
limit = 22; map_w = 11; map_h = 10; fig_w = 3; fig_h = 4;
9 ; 8 ; 8 ; 393;
....bbb....; ....b3b....; ....b b....; bbbbb bbbbb; b b; b8bbbbbbb8b; b b.....b b; b9bbbbbbb9b; b 3 b; bbbbbbbbbbb;
limit = 54; map_w = 12; map_h = 7; fig_w = 4; fig_h = 3;
8 ; 7997; 1 ;
bbbbbbbbbbbb; b7 c 9b; b c c1 c cb; b c b; b c c cb; b9 7c 8b; bbbbbbbbbbbb;
limit = 30; (!) map_w = 13; map_h = 13; fig_w = 6; fig_h = 3;
99 ; 77 77; 88 ;
....ccccccccc; ....c 9 c; ....c bbbbb7c; ....c c; ccc.c b b c; c7ccc 7b b c; c b b c; c 8c; c bbbb8cccccc; c b..b c.....; c7bbbb c.....; c 9 c.....; cccccccc.....;
limit = 64; map_w = 13; map_h = 13; fig_w = 5; fig_h = 5;
5 5 ; 5 1 5; 1 1 ; 5 1 5; 5 5 ;
bbbbbb.......; b5 b.......; b aa5b.......; b 1a bbbbbbbb; b a a 1b; b 5 a5 ab; b aa a b; b 1a a b; b 5a5 a5b; bbbbbbbb 1a b; .......b aa b; .......b 5 b; .......bbbbbb;
limit = 16; map_w = 11; map_h = 9; fig_w = 5; fig_h = 3;
4 ; 8 8 ; 1 1 1;
bbbbbbbbbbb; b8b b b b8b; b AAA b; bbA 1 1 Abb; b b; bb 4 bb; b AA AA b; b b b1b b b; bbbbbbbbbbb;
name = Sometimes Tricky; author = Michael Speck; gfx_set = metal; open = 0; limit = 24; map_w = 13; map_h = 12; fig_w = 4; fig_h = 3;
5 5; 77 ; 5 5;
..aaaaaaaaaaa; ..a7 5a; aaa b bb b a; a b a; a b a; a bb5b bb a; a b b a; a b 5b aa; aa bb bb a.; .a b a.; .aaa5 7a.; ...aaaaaaaaa.;
limit = 42; map_w = 12; map_h = 8; fig_w = 4; fig_h = 4;
2 ; 21 ; 89; 9 ;
aaaaa.......; a a aaaaaaa.; a 9a x a.; a 98aa aaa; aaa aa12 a; .a x a2 a; .aaaaaaa a a; .......aaaaa;
limit = 98; map_w = 11; map_h = 11; fig_w = 5; fig_h = 4;
555 ; 10701; 232 ; 9 ;
cccccccccc.; c0 5c2 cc; c c0 c; c ccucccc c; c 3c 9c c; c l l lc1c; c 5cu c c; c ccc c; c2 c cc 5c; cc 1c 7 cc; .ccccccccc.;
limit = 28; map_w = 11; map_h = 10; fig_w = 3; fig_h = 4;
1 ; 32 ; 23; 1 ;
bbbbbbbbbbb; bx 1c c 3b; b c c b; bccc c c b; b xc2 b; b 2cy b; b c c cccb; b c c b; b3 c c1 yb; bbbbbbbbbbb;
limit = 38; map_w = 9; map_h = 11; fig_w = 3; fig_h = 3;
7; 98 ; 7;
ccccccc..; cz 7 c..; cb bb ccc; c9 c; c b bbbuc; c b z c; c dc; c bbbbb c; c b 8c; c7 ccccc; ccccc....;
limit = 20; (!) map_w = 12; map_h = 9; fig_w = 3; fig_h = 2;
5 ; 4 4;
......aaaaaa; ......a A 4a; aaaaaaa a; a a a; ay wauwdaa; a 5a a.; aaaaaaadyuaa; .....a4 a; .....aaaaaaa;
limit = 42; map_w = 12; map_h = 9; fig_w = 4; fig_h = 3;
99 ; 7887; 9 ;
bbbbb..bbbb; b 9 bbbb xb; b a 9 d b; b wa a7 b; b a w a8b; b7l a8x b; bbb a bb; ..bbbb r9b.; .....bbbbb.;
limit = 22; map_w = 9; map_h = 7; fig_w = 4; fig_h = 2;
1289; 3 ;
...aaa...; .aaa3aaa.; aa a a aa; a9 2 1a; aa a a aa; .a a8a a.; .aaaaaaa.;
name = Hardcore; author = Michael Speck; gfx_set = metal; open = 0; limit = 44; map_w = 12; map_h = 12; fig_w = 5; fig_h = 3;
8 ; 97 79; 8 ;
.....aaaaaaa; .aaaaa a; .a 9aaa a; .a aaa a a; .a a u a a; aa a 8R 9 a; a 7 L8 a aa; a a d a a.; a a aaa a.; a aaa7 a.; a aaaaa.; aaaaaaa.....;
limit = 37; map_w = 11; map_h = 11; fig_w = 3; fig_h = 5;
7 ; 7 ; 3 ; 9 9; 3 ;
aaaaaaaaaa.; a7 a 9a.; a a aa; a aaa ya 3a; a az aaa a; a3 xa a; aa zax a; .a aaa 7aa; .a ya aaa.; .a9 a...; .aaaaaaa...;
limit = 14; map_w = 8; map_h = 8; fig_w = 3; fig_h = 2;
131; 2 ;
cccccccc; c1 w 1c; c c; cx y xc; cccc 3c; ...cy wc; ...c2 c; ...ccccc;
limit = 44; map_w = 13; map_h = 9; fig_w = 3; fig_h = 3;
232; 7 7; 232;
..aaaaaaaaa..; ..a2aa7aa2a..; cca a y a acc; c2 y z 2c; ccc z ccc; ..cc3 a 3cc..; ...ccU7Dcc...; ....c c....; ....ccccc....;
limit = 35; map_w = 10; map_h = 12; fig_w = 3; fig_h = 4;
6 ; 656; 6 ; 4 ;
......aaaa; ......a 4a; ....aaa a; ....a6 uwa; ..aaa l a; ..a6 ryaaa; aaawl 6a..; a r aaa..; ayd 6a....; a aaa....; a5 a......; aaaa......;
limit = 47; map_w = 9; map_h = 9; fig_w = 3; fig_h = 4;
4 4; 5 ; 6 ; 5 ;
ccccccccc; c4 d r 5c; c a a a c; cr r d lc; c a6a a c; cu d l dc; c a a a c; c5 l u 4c; ccccccccc;
limit = 43; map_w = 11; map_h = 11; fig_w = 5; fig_h = 3;
1 1 ; 59395; 191 ;
....bbb....; .bbbbybbbb.; .b 5 5 b.; .b1aa3aa1b.; bb ax za bb; bz wb; bb w y bb; .b1 a9a 1b.; .b 9 9 b.; .bbbbxbbbb.; ....bbb....;
limit = 23; map_w = 10; map_h = 9; fig_w = 3; fig_h = 3;
2 ; 1 1; 2 ;
..aaaaaaaa; ..ax A a; aaa aaa; a2a a1a; ar xw la; a1a a2a; aaa aaa; a A wa..; aaaaaaaa..;
lmarbles-1.0.7.orig/src/main.c0000600000175000017500000003241210063260401014302 0ustar uweuwe/*************************************************************************** main.c - description ------------------- begin : Sam Aug 5 12:36:32 MEST 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifdef HAVE_CONFIG_H #include "../config.h" #endif #ifdef _WIN32 #include #endif #include #include #include #include #include "menu.h" #include "cfg.h" #include "levels.h" #include "timer.h" #include "sdl.h" #include "audio.h" #include "profile.h" #include "game.h" // timer -- timer.c // extern struct timeb t_c, t_lc; // quit game quickly ? // int trm_gm = 0; // menu config -- cfg.c // extern Cfg cfg; // menu manager -- menu.c // extern MMng mm; // sdl struct // extern Sdl sdl; // levelset list and number of entries -- levels.c // extern char **ls_lst; extern int ls_n; // profiles // extern DLst prfs; // string list for the menu -- profile.c // extern char **prf_lst; extern int prf_n; // menu entry containing the profile list // MEnt *me_prf, *me_del, *me_clr; // menu actions MUST BE GREATER THAN 0 // #define MA_NONE 0 #define MA_QUT 1 #define MA_PLY 2 #define MA_HSC 3 /* ==================================================================== Clear the SDL event key (keydown events) ==================================================================== */ int all_filter( const SDL_Event *event ) { return 0; } void event_clear_sdl_queue() { SDL_Event event; SDL_SetEventFilter( all_filter ); while ( SDL_PollEvent( &event ) ); SDL_SetEventFilter( 0 ); } /* previously defined hiscore.h but this file no longer needed */ typedef struct { char nm[12]; int lvl; int lvs; int scr; int pct; } H_E; /* show hiscore and highlight rank r */ void H_Shw() { int i, j; SDL_Surface *buf = 0; SFnt *ft; Prf *p; int e_h = mm.ft_nml->h + 2; int off = 50; int a_y = 100; char str[12]; int e_num = prfs.cntr > 10 ? 10 : prfs.cntr; H_E hscr[e_num]; DL_E *e; // save screen // buf = SS_Crt(sdl.scr->w, sdl.scr->h, SDL_SWSURFACE); D_FDST(buf); D_FSRC(sdl.scr); SS_Blt(); // darken screen // if (cfg.dim) SDL_DIM(); // draw background // D_FDST(sdl.scr); D_FSRC(mm.ss_bkgd); SS_Blt(); // brighten screen // if (cfg.dim) SDL_UNDIM(); else Sdl_FUpd(); // create highscore list // memset(hscr, 0, sizeof(hscr)); e = prfs.hd.n; while (e != &prfs.tl) { p = (Prf*)e->d; for (i = 0; i < e_num; i++) if (p->scr >= hscr[i].scr) { for (j = e_num - 1; j > i; j--) hscr[j] = hscr[j - 1]; hscr[i].scr = p->scr; hscr[i].pct = p->pct; hscr[i].lvl = p->lvls; strcpy(hscr[i].nm, p->nm); break; } e = e->n; } // write hiscores // SF_Wrt(mm.ft_nml, sdl.scr, sdl.scr->w / 2, 50, "Best Profiles", 0); mm.ft_nml->algn = mm.ft_sel->algn = TA_X_L | TA_Y_T; for (i = 0; i < e_num; i++) { if (0) // changed later ft = mm.ft_sel; else ft = mm.ft_nml; ft->algn = TA_X_L | TA_Y_T; SF_Wrt(ft, sdl.scr, off, a_y + i * e_h, hscr[i].nm, 0); ft->algn = TA_X_C | TA_Y_T; sprintf(str, "%i", hscr[i].lvl); SF_Wrt(ft, sdl.scr, sdl.scr->w / 2, a_y + i * e_h, str, 0); sprintf(str, "%i", hscr[i].scr); // sprintf(str, "%i (%i.%i%%)", hscr[i].scr, hscr[i].pct / 10, hscr[i].pct % 10); ft->algn = TA_X_R | TA_Y_T; SF_Wrt(ft, sdl.scr, sdl.scr->w - off, a_y + i * e_h, str, 0); } mm.ft_nml->algn = mm.ft_sel->algn = TA_X_C | TA_Y_C; Sdl_FUpd(); // wait for a click // Sdl_WtFrClk(); //darken screen // if (cfg.dim) SDL_DIM(); // restore screen // D_FDST(sdl.scr); D_FSRC(buf); SS_Blt(); // brighten screen // if (cfg.dim) SDL_UNDIM(); else Sdl_FUpd(); // reset timer // T_Rst(); } // menu callbacks // /* activate / deactivate sound */ void CB_Snd() { #ifdef SOUND sound_enable(cfg.s_on); #endif } /* set sound volume */ void CB_StV() { #ifdef SOUND sound_volume(cfg.s_vol * 16); #endif } /* create a profile */ void CB_CrtP() { Prf_Crt(cfg.prf_nm); Prf_CrtLst(); // update menu entries // ME_CngSwX(me_prf, &cfg.prf, prf_lst, prf_n); ME_CngSwX(me_del, &cfg.prf, prf_lst, prf_n); ME_CngSwX(me_clr, &cfg.prf, prf_lst, prf_n); } /* clear a profile */ void CB_ClrP() { Prf *p = DL_Get(&prfs, cfg.prf); DL_Clr(&p->sts); p->lvls = 0; p->scr = 0; p->pct = 0; } /* delete a profile */ void CB_DelP() { if (prfs.cntr < 2) { printf("WARNING: last profile cannot be deleted\n"); return; } // delete from list // DL_Del(&prfs, cfg.prf); Prf_CrtLst(); // update menu entries // ME_CngSwX(me_prf, &cfg.prf, prf_lst, prf_n); ME_CngSwX(me_del, &cfg.prf, prf_lst, prf_n); ME_CngSwX(me_clr, &cfg.prf, prf_lst, prf_n); } void CB_SrtP() { // Prf_Srt(); } /* init menu add all entries check them */ void MM_CrtE() { SDL_Surface *ss_bk, *ss_lg; SFnt *ft_y, *ft_w, *ft_t; Menu *_main, *opts, *snd, *new, *edit, *del, *clr, *crt, *c_del, *c_clr, *c_crt, *gfx, *ctrl; MEnt *e; char *str_diff[] = {"Easy", "Normal", "Hard", "Brainstorm"}; // load and assign gfx // ss_bk = SS_Ld("gfx/title.bmp", SDL_SWSURFACE); ss_lg = SS_Ld("gfx/logo.bmp", SDL_SWSURFACE); ft_y = SF_LdFxd("gfx/f_yellow.bmp", 32, 96, 10); ft_w = SF_LdFxd("gfx/f_white.bmp", 32, 96, 10); MM_Ini(ss_bk->w / 2, ss_bk->h - 100, 50, ss_bk, ss_lg, ft_y, ft_w); // add copyright // ft_t = SF_Ld("gfx/tiny.sdlfnt"); ft_t->algn = TA_X_R | TA_Y_B; SF_Wrt(ft_t, ss_bk, ss_bk->w-3, ss_bk->h-1, "(C) 2000 Michael Speck", 0); ft_t->algn = TA_X_L | TA_Y_B; SF_Wrt(ft_t, ss_bk, 0, ss_bk->h-1, "http://lgames.sourceforge.net", 0); SF_Fr(ft_t); // create and add entrys // _main = M_Crt(); MM_Add(_main); opts = M_Crt(); MM_Add(opts); snd = M_Crt(); MM_Add(snd); new = M_Crt(); MM_Add(new); edit = M_Crt(); MM_Add(edit); del = M_Crt(); MM_Add(del); clr = M_Crt(); MM_Add(clr); crt = M_Crt(); MM_Add(crt); c_del = M_Crt(); MM_Add(c_del); c_clr = M_Crt(); MM_Add(c_clr); c_crt = M_Crt(); MM_Add(c_crt); gfx = M_Crt(); MM_Add(gfx); ctrl = M_Crt(); MM_Add(ctrl); // main // M_Add(_main, ME_CrtSub("New Game", new)); M_Add(_main, ME_CrtAct("Best Profiles", MA_HSC)); M_Add(_main, ME_CrtSub("Options", opts)); M_Add(_main, ME_CrtAct("Quit", MA_QUT)); // options // M_Add(opts, ME_CrtSub("Controls", ctrl)); M_Add(opts, ME_CrtSub("Graphics", gfx)); #ifdef SOUND M_Add(opts, ME_CrtSub("Audio", snd)); #else M_Add(opts, ME_CrtSep("Audio")); #endif M_Add(opts, ME_CrtSep("")); M_Add(opts, ME_CrtSub("Back", _main)); // sound // e = ME_CrtSw2("Sound: ", &cfg.s_on, "Off", "On"); e->cb = CB_Snd; M_Add(snd, e); e = ME_CrtRng("Volume: ", &cfg.s_vol, 1, 8, 1); e->cb = CB_StV; M_Add(snd, e); M_Add(snd, ME_CrtSep("")); M_Add(snd, ME_CrtSub("Back", opts)); // new game // M_Add(new, ME_CrtAct("Start", MA_PLY)); M_Add(new, ME_CrtSep("")); M_Add(new, ME_CrtSwX("Difficulty:", &cfg.diff, str_diff, 4)); if (cfg.ls >= ls_n) cfg.ls = 0; // maybe someone deleted some level sets // M_Add(new, ME_CrtSwX("Levelset:", &cfg.ls, ls_lst, ls_n)); me_prf = ME_CrtSwX("Profile:", &cfg.prf, prf_lst, prf_n); M_Add(new, me_prf); M_Add(new, ME_CrtSep("")); M_Add(new, ME_CrtSub("Edit Profiles", edit)); M_Add(new, ME_CrtSep("")); M_Add(new, ME_CrtSub("Back", _main)); // edit // M_Add(edit, ME_CrtSub("Create Profile", crt)); M_Add(edit, ME_CrtSub("Clear Profile", clr)); M_Add(edit, ME_CrtSub("Delete Profile", del)); M_Add(edit, ME_CrtSep("")); e = ME_CrtSub("Back", new); e->cb = CB_SrtP; M_Add(edit, e); // create // M_Add(crt, ME_CrtStr("Profile Name", cfg.prf_nm, 11)); M_Add(crt, ME_CrtSub("Create Profile", c_crt)); M_Add(crt, ME_CrtSep("")); M_Add(crt, ME_CrtSub("Back", edit)); // confirm create // e = ME_CrtSub("Yes", crt); e->cb = CB_CrtP; M_Add(c_crt, e); M_Add(c_crt, ME_CrtSub("No", crt)); // clear // me_clr = ME_CrtSwX("Profile:", &cfg.prf, prf_lst, prf_n); M_Add(clr, me_clr); M_Add(clr, ME_CrtSub("Clear Profile", c_clr)); M_Add(clr, ME_CrtSep("")); M_Add(clr, ME_CrtSub("Back", edit)); // confirm clear // e = ME_CrtSub("Yes", clr); e->cb = CB_ClrP; M_Add(c_clr, e); M_Add(c_clr, ME_CrtSub("No", clr)); // delete // me_del = ME_CrtSwX("Profile:", &cfg.prf, prf_lst, prf_n); M_Add(del, me_del); M_Add(del, ME_CrtSub("Delete Profile", c_del)); M_Add(del, ME_CrtSep("")); M_Add(del, ME_CrtSub("Back", edit)); // confirm clear // e = ME_CrtSub("Yes", del); e->cb = CB_DelP; M_Add(c_del, e); M_Add(c_del, ME_CrtSub("No", del)); // graphics // M_Add(gfx, ME_CrtSw2("Animations:", &cfg.ani, "Off", "On")); // M_Add(gfx, ME_CrtSw2("Transparency:", &cfg.trp, "Off", "On")); M_Add(gfx, ME_CrtSw2("Fullscreen:", &cfg.fscr, "Off", "On")); M_Add(gfx, ME_CrtSw2("Dim Effect:", &cfg.dim, "Off", "On")); M_Add(gfx, ME_CrtSep("")); M_Add(gfx, ME_CrtSub("Back", opts)); // controls M_Add(ctrl, ME_CrtKey("Up", &cfg.k_up)); M_Add(ctrl, ME_CrtKey("Down", &cfg.k_down)); M_Add(ctrl, ME_CrtKey("Left", &cfg.k_left)); M_Add(ctrl, ME_CrtKey("Right", &cfg.k_right)); M_Add(ctrl, ME_CrtKey("Undo", &cfg.k_undo)); M_Add(ctrl, ME_CrtSep("")); M_Add(ctrl, ME_CrtSub("Back", opts)); // default valid keys MM_DfVKys(); // adjust position of all entries in all menus // MM_AdjP(); // call all callbacks // MM_CB(); // check for errors MM_Ck(); } /* init sound, menu, profiles, game main loop for the menu */ int main(int argc, char *argv[]) { SDL_Event e; int go_on = 1; int ms; char aux[64]; #ifdef _WIN32 /* Get Windows to open files in binary mode instead of default text mode */ _fmode = _O_BINARY; #endif // just query version? // if ( argc > 1 && !strncmp( "--version", argv[1], 9 ) ) { printf( "%s\n", VERSION ); return 0; } // random init srand(time(NULL)); // sdl init // #ifdef SOUND Sdl_Ini(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER); #else Sdl_Ini(SDL_INIT_VIDEO | SDL_INIT_TIMER); #endif sprintf( aux, "LMarbles %s", VERSION ); SDL_WM_SetCaption(aux, 0); // show logo // Sdl_StVdMd(512, 384, 16, SDL_SWSURFACE); // show hardware capabilities // Sdl_HwCps(); // load config // C_StPth(); C_Ld(); // load profiles // Prf_Ini(); if (!Prf_Ld()) cfg.prf = 0; // create levelset list and reset config's levelset index if nescessary // L_CrtLst(); if (cfg.ls >= ls_n) cfg.ls = 0; #ifdef SOUND audio_open(); sound_enable( cfg.s_on ); sound_volume( cfg.s_vol * 16 ); #endif // game init // G_Ini(); // init and show menu// MM_CrtE(); MM_Shw(MM_RSZ); event_clear_sdl_queue(); //menu loop T_Rst(); // reset time // while (go_on && !trm_gm) { M_Hd(mm.c_mn); if (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) trm_gm = 1; if (e.type == SDL_KEYUP && e.key.keysym.sym == SDLK_ESCAPE) go_on = 0; switch (MM_Evt(&e)) { case MA_QUT: go_on = 0; break; case MA_PLY: if (G_Opn()) { G_Run(); G_Cls(); } break; case MA_HSC: M_Shw(mm.c_mn); Sdl_UpdR(); H_Shw(); // defined in main.c // break; } } ms = T_Gt(); M_CmA(mm.c_mn, ms); M_Shw(mm.c_mn); Sdl_UpdR(); SDL_Delay( 5 ); } // terminate menu // MM_Trm(); // terminate game // G_Trm(); // close soundserver // #ifdef SOUND audio_close(); #endif // save config // C_Sv(); // free levelset list // L_DelLst(); // save profiles // Prf_Sv(); Prf_Trm(); // free screen // Sdl_Qut(); printf("Bye, bye!\n"); return 0; } lmarbles-1.0.7.orig/src/manual/0000700000175000017500000000000010063260672014475 5ustar uweuwelmarbles-1.0.7.orig/src/manual/manual.html0000600000175000017500000003240407570177201016651 0ustar uweuwe LMarbles Manual Page

LMarbles

Copyright 2000 Michael Speck
Released under GPL


  1. Menu
  2. How To Play
  3. Controls
  4. Creating Your Own Levels

Menu

  • [New Game] (submenu)
    • [Start]
      Starts a game.
    • [Difficulty]
      • Brainstorm:You play against my solution made after some time passed. I had to play the levels for real so this is a fair move limit.
      • Easy: You play against my solution +100% (-20% per chapter).
      • Normal: You play against my solution +50%moves (-10%per chapter).
      • Hard:You play against my solution +25% moves (-5% per chapter).
      Hard gives you twice the score and Brainstorm five times the score of a Normal game. Easy cuts your score in half.
    • [Levelset]
      Set of levels you want to play (e.g. 'Original').
    • [Profile]
      Profile you want to play with (e.g. 'Michael'). Any progress and score will be written to this profile.
    • [Edit Profiles] (submenu)
      • [Create Profile] (submenu)
        Enter a profile name (eg your own name) and simply create it. Now choose this new profile at [New Game]/[Profile] and start the game.
      • [Clear Profile] (submenu)
        This will clear score and any level progress of the choosen profile.
      • [Delete Profile] (submenu)
        This will remove a profile. Of course, a new one using the same name can be recreated (which would be same like simply clear it).
  • [Best Profiles]
    A list of the ten best players with the following information: name (left side), number of levels finished (middle), score (right side), average time needed in percent (in brackets; 100%-not even one second needed(impossible); 0%-every single second has been used).
  • [Options] (submenu)
    • [Graphics] (submenu)
      • [Animations]
        Enables/Disables animations.
      • [Fullscreen]
        Switches between windowed and fullscreen mode.
      • [Dim Effect]
        Enables/Disables dim effect. ('Disabled' is recommended when using SDL older than version 1.1.4.)
    • [Audio] (submenu)
      • [Sound]
        Enables/Disables sound.
      • [Volume]
        Sets volume of sound.
  • [Quit]
    Quits the game!

ToC


How To Play

Marbles is very similiar to Atomix and was heavily inspired by it. Goal is to create a more or less complex figure out of single marbles within a time limit to reach the next level.
Sounds easy? Well, there is a problem: If a marble starts to move it will not stop until it hits a wall or marble.

There are also some obstacles:
arrow
If a marble moves on such an arrow it will change its direction to the direction the arrow points at. If a marble comes from the direction the arrow points at it will stop before the arrow.
arrow2
These yellow and black stripes mean this tile can neither be accessed from these sides nor from the side the arrow points at. So there is only one way to get past this obstacle.
teleport
If a marble encounters such a teleport it will teleport to the second one of the same color and keep on moving in the same direction.
crumble
Such a crumbling wall takes one, two or three hits before it vanishes completely. The number of hits left is displayed by a small digit in the lower right corner of the crumbling wall.

You play against a move limit and you'll gain the following score when you finished a level:
DifficultyLevel BonusBonus per remaining move
Easy50025
Normal100050
Hard2000100
Brainstorm5000250
You will not gain points twice for the same level!

If you run Marbles the very first time only one profile (named 'Michael') exists. You probably want to play with a profile named like you. How to create and use a new profile is described in Menu.
Levels are grouped in chapters and chapters are grouped in levelsets. Right now, Marbles comes with just one levelset called 'Original' containing three chapters with ten levels each. Of course, you can create your own levelsets.
You have unlimited tries to solve a level! The order in which you solve levels of one chapter does not matter! There are small lights in the right lower corner of the screen of one of the following colors: red(cannot be accessed), orange(can be accessed, not solved yet) and green (already solved, you will not gain any score for solving it again). Just click on a light and confirm to change the level. To enter a new chapter ALL previous levels have to be solved.

Although the interface is quite intuitive you should take a look at the controls.

ToC


Controls

Use your mouse to:
Select a marble: Left-click on it. (You can simply change selection by clicking on another marble)
Release a marble: Right-click anywhere.
Move a marble: When you selected a marble move the mouse pointer into the wanted direction. If movement is possible the mouse pointer will change into a big arrow pointing into the direction. Then simply left-click.
Change the level: As written in 'How To Play' these lights in the right lower corner represent the levels. Simply left-click on a green or orange one and confirm the change. (If you choose the current level (white frame) this will be the same as restarting this level.)
Confirm: When you quit, restart or change the level you will be asked to confirm first by pressing 'y' or 'n'. You can do this with left-click(yes) or right-click(no) as well.

Important keys:
[Escape]: Quits the game after confirmation.
[r]: Restarts level after confirmation.
[p]: Pauses game.
[Space]: If you think your last movement was wrong you can restore the old position by pressing Space as long as the marble did not hit a crumbling wall (can be redefined in options/controls).

You can use the cursor keys to move a marble (can also be redefined)!

If your difficulty is 'Training' press a movement key or left mouse button while a marble is moving to 'warp' it to its destination!

ToC


Creating Your Own Levels

As described in 'How To Play' levels are grouped in chapters and chapters are grouped in levelsets. A levelset is a file in Marbles' subdirectory 'levels' without any extension. When finished with the creation you must become root and copy it to the install directory usually /usr/local/share/games/marbles/levels (if you installed marbles). That's it. Of course, you must test and change a lot while developing so you should extract Marbles' source somewhere temporary, run configure with the option --disable-install which allows you to work in Marbles' temporary 'levels' directory where you can simply edit and test your levelset. (the 'levels' directory should already contain a file called 'Original').

Once again step by step:

  • temporarily extract the source somewhere (e.g. /tmp)
  • change to this source directory
  • run './configure --disable-install'; 'make' (do not type 'make install'!!!)
  • change to ./marbles/levels
  • create an empty file without any extension (e.g. 'Brainstorm')
  • edit this file properly (as described below)
  • test it by running Marbles (binary can be found in the parent directory of 'levels')
  • when everything works fine, become root and install it to Marbles' install directory (usually /usr/local/share/games/marbles/levels - of course, you must have installed Marbles before doing this)

When testing your levelsets you should use a separate profile (e.g. called 'Testing').
If you start creating a new levelset with, say, ten levels per chapter but you have made only one level so far Marbles will stop parsing the file and ask for confirmation if you try to start this levelset (press 'y' or left-click). All levels before the error can be played without problems but because Marbles stopped parsing further levels does not exist. Changing to such a non-existing level might result in an infinite loop. But when you are finished with creating your levelset no errors or warnings should occur! (If you run Marbles in an xterm errors and warnings will be displayed.)

If you have problems writing the file, take a look at 'Original'.

How to write the file:

Syntax:
<subsection>
starts a subsection (e.g. <level>)
</subsection>
ends a subsection (e.g. </level>)
(comment)
such a comment must not contain any '<' or '>' or ';'
normal entry;
(e.g. in subsection map of a level: ...a 1 aa...;)
variable = value;
(e.g. author = Michael Speck;)

Normal entries and initializations have to end with a semicolon! Subsections and comments must not end with a semicolon!

Each levelset starts with a subsection called 'info' containing information about the number of levels per chapter and the number of chapters.
<info>
levels = levels_per_chapter;
(maximum is 10)
chapters = chapter_number;
(maximum is 10)
</info>

It follows the definition of each chapter containing information about name, author, used graphics set, whether this chapter is open from the very beginning and definition of each level (number of levels as you defined in <info>). Usually only the first chapter is open for playing from the very beginning.
<chapter>
name = Name Of The Chapter;
author = Your Name;
gfx_set = GfxSet;
(either 'stone' or 'metal' or 'wood'; e.g. gfx_set = stone)
open = Open?;
(1 = open; 0 = all previous levels have to be completed first)

...levels

</chapter>

A level is defined as follows. It contains information about the time (in seconds), size of the map, size of the figure and two subsections with the figure and the map.
<level>
time = time_in_seconds;
(e.g. time = 90;)
map_w = map_width;
(ranges between 4 and 13)
map_h = map_height;
(ranges between 4 and 14)
fig_w = figure_width;
(ranges between 2 and 10)
fig_h = figure_height;
(ranges between 1 and 10)
<figure>
...
</figure>
<map>
...
</map>
</level>

A figure tile is either a marble ID from 0 to 9 or [Space] for no marble.
marbles

Example:
<figure>
 1 2 ;
23454;
 1 2 ;
</figure>

Valid map tiles are:
'a', 'b', 'c' - different walls
'A', 'B', 'C' - crumbling walls ('C' three, 'B' two, 'A' one hit)
[Space] - floor
'.' - background
'u','d','r','l' - arrows without barriers (up, down, right, left)
'U','D','R','L' - arrows with barriers (up, down, right, left)
'w','x','y','z' - teleports of different colors
'0'..'9' - marbles

Example:
<map>
....aaaa;
..aaa 2a;
.aa1  xa;
aa  u aa;
a 2  xa.;
aaaaaaa.;
</map>

So this is the structure of a levelset:
<info>
...
</info>

<chapter>
...

<level>
...
<figure>
...
</figure>
<map>
...
</map>
</level>

...(more levels)

</chapter>

...(more chapters)

Once again: Taking a look at 'Original' might help you a lot...

ToC



Contact

Last Update: December 9th 2000

lmarbles-1.0.7.orig/src/manual/arrow2.jpg0000600000175000017500000000161407207042551016417 0ustar uweuweJFIFHHCreated with The GIMPC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222 "0!12AQRa"Bbq3%!a"13qA ?ׅKsSRD..U$EzyI#  (m0|i ]qBMMI_Ehv#vBdE<֖opot{qAS}j\NBlBS%rU1 CBvSEimMG"f5Im.HGV  xc0~ْo.UQnJ4/=* PҺҩovƻu^W݂]KD5H<#ךk-vs/.x=˺ձMzc 8ֿj;)enS3Zrߪ$z=^U%NSHMs,qdOx^JԨzu3)_{/W=CV}qU9o9<>tn5 E8uHڦ 3gΡt7J 4msqrO0lmarbles-1.0.7.orig/src/manual/marbles.jpg0000600000175000017500000000523007207475346016642 0ustar uweuweJFIFHHCreated with The GIMPC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222 @"3!1AQa"2qB#R$!"1A2aQ ?c%fCchpQ7iKV6 $c?FՄ(H=@I)8HRh=Źhȝ3U#%h )7!n I U* m DYXW>Up@ڇTIׅ±"޵#"kA/,t(榣[$;[ KVA $I") E BBLOs8M)59 I<*}H IW6ŕH?e1A">ǭ#dt-H#crҽwSK_f] t$rS{}(- v-Ya*!?W}'+IL+{>!hK[P A)V,2Q>s#D~*Wqm(P"WE5WǮnń&R bJ`ѥaV@ں 9` >):h[|3#S)ZQI90Tg mWwn[Z1^K$( r/ S:Βu)1D`JT ֓;[ }L!'LZDLA#st-l h $Os„{ mC+'+{( Ċ]6%?Dda҆ ^!6"j*qDxGqn_(lލ L0;3ᰉn٦$ +n|uX"Lƅ>Բ]c7RBh5ŹhKc>P#餼 R1L{,Y.!ҙJvXNA۟4`ᴠǃȤMѸƋ=~̣~=ִ~)!I'+]e$lv*V!܉+I|`OO$!<Oц P9=JS0;_sp hʑ^ٕ#ROh ͱeDU(l~*qH)5v΢&6*0 @v=CLCVmʊ_SCe rzz -Ggk:A}"!JR iIJT#Ly,,SIRO"o]!&I- ~aޚmeeL,}5"fľ9-M;/Ym+wݨeJf:[s5߱ .j Ɣ/ȡ !$K7_/吁ӣSq7UtOnUǥXm+Z "n *i|OjtV'h$P|#ju%V_0G ќuEqq]ף!C*kRP7imR^y($}#MCxi^/AcQ̋nȱY_|fVeF3(V{WzGktuRB~yG7;m>&:LcP(4nv?lv\PGjjm;Ɲ4+\EmR>ܚuxHhۤ<֬*dX/*8YPe2Rǟޙ6M)ELcz+U*`۔??J|p;WW!Z7ail~0T@'lJA_;iLq'zM_Vlordk00P.$(G'qMkjiK*pLX1}iOaFalַ~ǻBƹ|RPB4ki덾u}փk;qUtOnWou~c+Nm%@v=DZLjCvѪZW7:mS+2@yGoԸ쵦;^:BaN6d7{u\ڻҥ}H68<8fzե"w>Jy!R;O*HĪꙑ`}*,uʠ @v=zhZoAVW說=+..49v2@z:)f n|+qz֢iUioHGc59ͩ)Jde%N۽ e2FC@E(*IYa H@JS.q?Q0iP*aFHSs PY} Nwqȧ~$U`9`HBR(C.}.2=Ӛۨ&cEUߥmn  kDZETh'SKOΜ|Sk2BylG֘\vZ*)W>Y1ZS(0i\&ColAw>1eNEh.ȋkqlmarbles-1.0.7.orig/src/menu.c0000600000175000017500000003634607524345552014357 0ustar uweuwe/*************************************************************************** menu.c - description ------------------- begin : Sat Aug 5 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "menu.h" #include #include #include "cfg.h" extern Sdl sdl; MMng mm; extern Cfg cfg; // menu entry // /* free entry */ void ME_Fr(void *e) { DL_Clr(&((MEnt*)e)->sw); free(e); } /* all entries have these init steps in common */ void ME_Ini(MEnt *e, int t, char *n) { DL_Ini(&e->sw); e->sw.flgs = DL_NOCB | DL_AUTODEL; e->a = 255; strcpy(e->nm, n); e->t = t; e->dx = e->dy = e->dw = e->dh = 0; e->x = e->y = 0; e->cb = 0; } /* set range */ void ME_StRng(MEnt* e, int *p, int min, int max, int stp) { e->p = p; e->min = min; e->max = max; e->stp = stp; } /* create an empty entry */ MEnt* ME_Crt() { MEnt *e; e = malloc(sizeof(MEnt)); if (e == 0) { printf("ME_Crt: Ups... not enough memory to create menu entry...\n"); exit(1); } return e; } /* create separator */ MEnt* ME_CrtSep(char *s) { MEnt *e = ME_Crt(); ME_Ini(e, ME_SEP, s); return e; } /* create two switches group */ MEnt* ME_CrtSw2(char *n, int *p, char *cap1, char *cap2) { char *sw; MEnt *e = ME_Crt(); ME_Ini(e, ME_SWT, n); ME_StRng(e, p, 0, 1, 1); sw = malloc(32); strcpy(sw, cap1); DL_Add(&e->sw, sw); sw = malloc(32); strcpy(sw, cap2); DL_Add(&e->sw, sw); return e; } /* create multi switches group */ MEnt* ME_CrtSwX(char *n, int *p, char **caps, int num) { int i; char *sw; MEnt *e = ME_Crt(); ME_Ini(e, ME_SWT, n); ME_StRng(e, p, 0, num - 1, 1); for (i = 0; i < num; i++) { sw = malloc(32); strcpy(sw, caps[i]); DL_Add(&e->sw, sw); } return e; } /* create range */ MEnt* ME_CrtRng(char *n, int *p, int min, int max, int stp) { MEnt *e = ME_Crt(); ME_Ini(e, ME_RNG, n); ME_StRng(e, p, min, max, stp); return e; } /* create action */ MEnt* ME_CrtAct(char *n, int a_id) { MEnt *e = ME_Crt(); ME_Ini(e, ME_ACT, n); e->act = a_id; return e; } /* create an edit min is the current length max the max length and p the char pointer */ MEnt* ME_CrtStr(char *n, char *p, int m) { MEnt *e = ME_Crt(); ME_Ini(e, ME_STR, n); e->max = m; e->min = strlen(p); e->p = (int*)p; return e; } /* create a submenu */ MEnt* ME_CrtSub(char *n, void *m) { MEnt *e = ME_Crt(); ME_Ini(e, ME_SUB, n); e->smn = m; return e; } /* create a key */ MEnt* ME_CrtKey(char *n, int *p) { MEnt *e = ME_Crt(); ME_Ini(e, ME_KEY, n); e->p = p; return e; } /* update the string and compute size */ void ME_SUpd(MEnt* e) { char c; switch (e->t) { case ME_STR: sprintf(e->str, "%s: %s", e->nm, (char*)e->p); break; case ME_SWT: sprintf(e->str, "%s %s", e->nm, (char*)DL_Get(&e->sw, *e->p)); break; case ME_RNG: sprintf(e->str, "%s %i", e->nm, *e->p); break; case ME_KEY: c = *((char*)e->p); if (c > 32 && c < 127) sprintf(e->str, "%s: '%c'", e->nm, c); else if (*e->p == 0) sprintf(e->str, "%s: ???", e->nm); else switch (*e->p){ case SDLK_UP: sprintf(e->str, "%s: Up", e->nm); break; case SDLK_DOWN: sprintf(e->str, "%s: Down", e->nm); break; case SDLK_LEFT: sprintf(e->str, "%s: Left", e->nm); break; case SDLK_RIGHT: sprintf(e->str, "%s: Right", e->nm); break; case SDLK_SPACE: sprintf(e->str, "%s: Space", e->nm); break; default: sprintf(e->str, "%s: %i", e->nm, c); } break; default: strcpy(e->str, e->nm); break; } e->dw = SF_TxtW(mm.ft_nml, e->str); e->dh = mm.ft_nml->h; e->dx = e->x - (e->dw >> 1); e->dy = e->y - (e->dh >> 1); } /* edit string */ void ME_Edt(MEnt *e, int c, int u) { if (e->t != ME_STR) return; if (c == SDLK_BACKSPACE && e->min > 0) { //clear last char ((char*)e->p)[--e->min] = 0; } else if (c >= 32 && c < 128 && e->min < e->max) { //letter ((char*)e->p)[e->min++] = u; } } /* change multi switches group */ void ME_CngSwX(MEnt *e, int *p, char **caps, int num) { int i; char *sw; DL_Clr(&e->sw); ME_StRng(e, p, 0, num - 1, 1); for (i = 0; i < num; i++) { sw = malloc(32); strcpy(sw, caps[i]); DL_Add(&e->sw, sw); } *e->p = 0; } // menu // /* create an empty menu */ Menu* M_Crt() { Menu *m; m = malloc(sizeof(Menu)); if (m == 0) { printf("M_Crt(): Ups... not enough memory to create a menu\n"); exit(1); } m->c_e = 0; DL_Ini(&m->ent); m->ent.flgs = DL_AUTODEL; m->ent.cb = ME_Fr; return m; } /* clear a menu */ void M_Fr(void *m) { DL_Clr(&((Menu*)m)->ent); free(m); } /* add an entry and select first entry as current */ void M_Add(Menu *m, MEnt *e) { DL_Add(&m->ent, e); if (m->c_e == 0 && e->t != ME_SEP) { m->c_e = e; m->c_e->a = 0; } } /* hide a menu */ void M_Hd(Menu *m) { DL_E *e = m->ent.hd.n; MEnt *me; while (e != &m->ent.tl) { me = (MEnt*)e->d; D_DST(sdl.scr, me->dx, me->dy, me->dw, me->dh); D_SRC(mm.ss_bkgd, me->dx, me->dy); SS_Blt(); Sdl_AddR(me->dx, me->dy, me->dw, me->dh); e = e->n; } } /* show a menu by drawing each entry */ void M_Shw(Menu *m) { DL_E *e = m->ent.hd.n; MEnt *me; M_SUpd(m); while (e != &m->ent.tl) { me = (MEnt*)e->d; if (me == m->c_e) { if (me->a > 0) { SF_Wrt(mm.ft_nml, sdl.scr, me->x, me->y, me->str, 0); SF_Wrt(mm.ft_sel, sdl.scr, me->x, me->y, me->str, (int)me->a); } else SF_Wrt(mm.ft_sel, sdl.scr, me->x, me->y, me->str, 0); } else { SF_Wrt(mm.ft_nml, sdl.scr, me->x, me->y, me->str, 0); if (me->a < 255) SF_Wrt(mm.ft_sel, sdl.scr, me->x, me->y, me->str, (int)me->a); } Sdl_AddR(me->dx, me->dy, me->dw, me->dh); e = e->n; } } /* do an ME_SUpd() for all entries */ void M_SUpd(Menu *m) { DL_E *e = m->ent.hd.n; while (e != &m->ent.tl) { ME_SUpd((MEnt*)e->d); e = e->n; } } /* compute new alpha value for all entries */ void M_CmA(Menu *m, int ms) { DL_E *e = m->ent.hd.n; MEnt *me; while (e != &m->ent.tl) { me = (MEnt*)e->d; if (me->a < 255 && me != m->c_e) { me->a += mm.a_c * ms; if (me->a > 255) me->a = 255; } e = e->n; } } // menu manager // /* initialize graphics, menu and positions of menu and logo */ void MM_Ini(int x, int y, int ly, SDL_Surface *ss_bk, SDL_Surface *ss_lg, SFnt *fn, SFnt *fs) { mm.ss_bkgd = ss_bk; mm.ss_logo = ss_lg; mm.ft_nml = fn; mm.ft_sel = fs; mm.ft_nml->algn = mm.ft_sel->algn = TA_X_C | TA_Y_C; mm.x = x; mm.y = y; mm.ly = ly; mm.lx = (ss_bk->w - ss_lg->w) / 2; DL_Ini(&mm.mn); mm.mn.flgs = DL_AUTODEL; mm.mn.cb = M_Fr; mm.c_mn = 0; mm.a_c = 0.28; #ifdef SOUND mm.s_clk = sound_chunk_load("click.wav"); #endif } /* show the menu sets a new video mode if wanted */ void MM_Shw(int rsz) { if (rsz) Sdl_StVdMd(mm.ss_bkgd->w, mm.ss_bkgd->h, 16, SDL_SWSURFACE); D_FDST(sdl.scr); D_FSRC(mm.ss_bkgd); SS_Blt(); D_DST(sdl.scr, mm.lx, mm.ly, mm.ss_logo->w, mm.ss_logo->h); D_SRC(mm.ss_logo, 0, 0); SS_Blt(); if (cfg.dim) SDL_UNDIM(); else Sdl_FUpd(); if (mm.c_mn == 0 || mm.c_mn->ent.cntr == 0) { fprintf(stderr, "MM_Shw(): Ups... no current or empty menu defined!\n"); exit(1); } mm.c_mn->c_e->a = 0; M_Shw(mm.c_mn); Sdl_UpdR(); } /* free memory used */ void MM_Trm() { if (mm.ss_bkgd) SDL_FreeSurface(mm.ss_bkgd); if (mm.ss_logo) SDL_FreeSurface(mm.ss_logo); if (mm.ft_nml) SF_Fr(mm.ft_nml); if (mm.ft_sel) SF_Fr(mm.ft_sel); DL_Clr(&mm.mn); #ifdef SOUND if (mm.s_clk) sound_chunk_free(&mm.s_clk); #endif } /* add a menu */ void MM_Add(Menu *m) { DL_Add(&mm.mn, m); if (mm.mn.cntr == 1) mm.c_mn = m; } /* adjust position of all entries in all menus relative to mm.x | mm.y as centre */ void MM_AdjP() { DL_E *m = mm.mn.hd.n; DL_E *e; MEnt *me; int i; while (m != &mm.mn.tl) { e = ((Menu*)m->d)->ent.hd.n; i = 0; while (e != &((Menu*)m->d)->ent.tl) { me = (MEnt*)e->d; me->x = mm.x; me->y = (mm.y - (((Menu*)m->d)->ent.cntr * mm.ft_nml->h) / 2) + i * mm.ft_nml->h + mm.ft_nml->h / 2; i++; e = e->n; } m = m->n; } } /* allow default keys: alphanumerical and arrows */ void MM_DfVKys() { int i; memset(mm.vkys, 0, sizeof(mm.vkys)); for (i = 32; i < 128; i++) mm.vkys[i] = 1; mm.vkys[SDLK_UP] = 1; mm.vkys[SDLK_DOWN] = 1; mm.vkys[SDLK_RIGHT] = 1; mm.vkys[SDLK_LEFT] = 1; mm.vkys[SDLK_p] = 0; mm.vkys[SDLK_f] = 0; mm.vkys[SDLK_r] = 0; } /* checks if all menus contain at least one entry and if every menu has an current entry selected stuff like submenu in an entry is not checked */ void MM_Ck() { #ifdef DEBUG DL_E *e = mm.mn.hd.n; Menu *m; printf("checking menu... "); // no menu at all? // if (mm.mn.cntr == 0) { printf("NOT ONE MENU FOUND!\n"); exit(1); } if (mm.c_mn == 0) { printf("NO CURRENT MENU SELECTED!\n"); exit(1); } while (e != &mm.mn.tl) { m = (Menu*)e->d; if (m->ent.cntr == 0) { printf("YOU'VE ADDED AN EMPTY MENU!\n"); exit(1); } if (m->c_e == 0) { printf("NO CURRENT ENTRY SELECTED!\n"); exit(1); } e = e->n; } printf("OK\n"); #endif } /* process incoming events */ int MM_Evt(SDL_Event *e) { DL_E *m, *le; MEnt *me; int ex = 0; // waiting for a key ? // if (mm.c_mn->c_e->t == ME_KEY && *mm.c_mn->c_e->p == 0) { if (e->type == SDL_KEYUP && mm.vkys[e->key.keysym.sym]) { // check other key entries for their value // m = mm.mn.hd.n; while (!ex && m != &mm.mn.tl) { le = ((Menu*)m->d)->ent.hd.n; while (!ex && le != &((Menu*)m->d)->ent.tl) { me = (MEnt*)le->d; if (me->t == ME_KEY && *me->p == e->key.keysym.sym) ex = 1; le = le->n; } m = m->n; } // set key if (!ex) { *mm.c_mn->c_e->p = e->key.keysym.sym; if (mm.c_mn->c_e->cb != 0) mm.c_mn->c_e->cb(); } } return MM_NONE; } // normal event switch (e->type) { case SDL_MOUSEMOTION: return MM_SelE(e->motion.x, e->motion.y); case SDL_MOUSEBUTTONUP: if (e->button.button == 1) return MM_UseE(MM_INC); else return MM_UseE(MM_DEC); case SDL_KEYDOWN: switch (e->key.keysym.sym) { case SDLK_RETURN: return MM_UseE(MM_NONE); case SDLK_UP: return MM_PrvE(); case SDLK_DOWN: return MM_NxtE(); case SDLK_LEFT: return MM_UseE(MM_DEC); case SDLK_RIGHT: return MM_UseE(MM_INC); default: if (mm.c_mn->c_e->t == ME_STR) ME_Edt(mm.c_mn->c_e, e->key.keysym.sym, e->key.keysym.unicode); return MM_NONE; } return MM_NONE; } return MM_NONE; } /* use an entry submenu: set submenu action: return action range: change pos due to c (inc or dec) str: add or delete char */ int MM_UseE(int c) { MEnt *me = mm.c_mn->c_e; switch (me->t) { case ME_SUB: #ifdef SOUND sound_play(mm.s_clk); #endif if (mm.c_mn->c_e->cb != 0) mm.c_mn->c_e->cb(); mm.c_mn = (Menu*)me->smn; break; case ME_ACT: #ifdef SOUND sound_play(mm.s_clk); #endif if (mm.c_mn->c_e->cb != 0) mm.c_mn->c_e->cb(); return me->act; case ME_SWT: case ME_RNG: #ifdef SOUND sound_play(mm.s_clk); #endif if (c == MM_DEC) { *me->p -= me->stp; if (*me->p < me->min) *me->p = me->max - ((me->max - me->min) % me->stp); } else if (c == MM_INC) { *me->p += me->stp; if (*me->p > me->max) *me->p = me->min; } if (mm.c_mn->c_e->cb != 0) mm.c_mn->c_e->cb(); break; case ME_KEY: *me->p = 0; if (mm.c_mn->c_e->cb != 0) mm.c_mn->c_e->cb(); break; } return MM_NONE; } /* select prev entry */ int MM_PrvE() { DL_E *e = DL_GetE(&mm.c_mn->ent, mm.c_mn->c_e)->p; while (e != &mm.c_mn->ent.hd && ((MEnt*)e->d)->t == ME_SEP) e = e->p; if (e != &mm.c_mn->ent.hd) { mm.c_mn->c_e = (MEnt*)e->d; mm.c_mn->c_e->a = 0; } #ifdef SOUND sound_play(mm.s_clk); #endif return MM_NONE; } /* select next entry */ int MM_NxtE() { DL_E *e = DL_GetE(&mm.c_mn->ent, mm.c_mn->c_e)->n; while (e != &mm.c_mn->ent.tl && ((MEnt*)e->d)->t == ME_SEP) e = e->n; if (e != &mm.c_mn->ent.tl) { mm.c_mn->c_e = (MEnt*)e->d; mm.c_mn->c_e->a = 0; } #ifdef SOUND sound_play(mm.s_clk); #endif return MM_NONE; } /* select an entry at pos x,y if valid */ int MM_SelE(int x, int y) { DL_E *e = mm.c_mn->ent.hd.n; MEnt *me, *old = mm.c_mn->c_e; while (e != &mm.c_mn->ent.tl) { me = (MEnt*)e->d; if (me->t != ME_SEP && x >= me->dx && x < me->dx + me->dw && y >= me->dy && y < me->dy + me->dh) { mm.c_mn->c_e = me; mm.c_mn->c_e->a = 0; #ifdef SOUND if (mm.c_mn->c_e != old) sound_play(mm.s_clk); #endif return MM_NONE; } e = e->n; } return MM_NONE; } void MM_CB() { DL_E *e = mm.c_mn->ent.hd.n; MEnt *me; while (e != &mm.c_mn->ent.tl) { me = (MEnt*)e->d; if (me->cb != 0) me->cb(); e = e->n; } } lmarbles-1.0.7.orig/src/menu.h0000600000175000017500000000647607524047710014360 0ustar uweuwe/*************************************************************************** menu.h - description ------------------- begin : Sat Aug 5 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef MENU_H #define MENU_H #include "sdl.h" #include "dynlist.h" #include "audio.h" // menu entry // // entry types // #define ME_SEP 0 #define ME_SUB 1 #define ME_SWT 2 #define ME_RNG 3 #define ME_ACT 4 #define ME_KEY 5 #define ME_STR 6 typedef struct { char nm[32]; char str[64]; DLst sw; int t; int *p; int min; int max; int stp; int act; void *smn; int x, y; int dx; int dy; int dw; int dh; float a; void (*cb)(void); } MEnt; void ME_Fr(void *e); void ME_Ini(MEnt *e, int t, char *n); MEnt* ME_CrtSep(char *s); MEnt* ME_CrtSw2(char *n, int *p, char *cap1, char *cap2); MEnt* ME_CrtSwX(char *n, int *p, char **caps, int num); MEnt* ME_CrtRng(char *n, int *p, int min, int max, int stp); MEnt* ME_CrtAct(char *n, int a_id); MEnt* ME_CrtStr(char *n, char *p, int m); MEnt* ME_CrtSub(char *n, void *m); MEnt* ME_CrtKey(char *n, int *p); void ME_SUpd(MEnt *e); void ME_Edt(MEnt *e, int c, int u); void ME_CngSwX(MEnt *e, int *p, char **caps, int num); // menu // typedef struct { DLst ent; MEnt *c_e; } Menu; Menu* M_Crt(); void M_Fr(void *m); void M_Add(Menu *m, MEnt *e); void M_Hd(Menu *m); void M_Shw(Menu *m); void M_SUpd(Menu *m); void M_CmA(Menu *m, int ms); // menu manager // // resize or keep resolution ? // #define MM_KP 0 #define MM_RSZ 1 // return values for MM_Evt(..) // #define MM_TRMGM -1 #define MM_NONE 0 // increase or decrease a value when use entry ? // #define MM_INC 0 #define MM_DEC 1 typedef struct { SDL_Surface *ss_bkgd; SDL_Surface *ss_logo; SFnt *ft_nml; SFnt *ft_sel; int x, y; // centre of menu in ss_bkgnd // int lx, ly; // position of logo // float a_c; // alpha change per ms used for enlightning // int d; // delay per loop // DLst mn; Menu *c_mn; char vkys[SDLK_LAST]; #ifdef SOUND Sound_Chunk *s_clk; #endif } MMng; void MM_Ini(int x, int y, int ly, SDL_Surface *ss_bk, SDL_Surface *ss_lg, SFnt *fn, SFnt *fs); void MM_Shw(int rsz); void MM_Trm(); void MM_Add(Menu *m); void MM_AdjP(); void MM_DfVKys(); void MM_Ck(); int MM_Evt(SDL_Event *e); int MM_UseE(int c); int MM_PrvE(); int MM_NxtE(); int MM_SelE(int x, int y); void MM_CB(); #endif lmarbles-1.0.7.orig/src/sounds/0000700000175000017500000000000010063260672014533 5ustar uweuwelmarbles-1.0.7.orig/src/sounds/explode.wav0000400000175000017500000005575406363113210016723 0ustar uweuweRIFF[WAVEfmt "V"Vdata[}~}}~}~}~}~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}}~}}~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}xlrRdudguk]AP]xPTp7DFtkg}]=A6>;@?@CAFD^N=OHOM\bGVUUZW]Z_]aacddggjillnnpqqssuuwwxyz{|}~wĤnO=@BDGN[rrZW`p|zf_gj~~~}}{zxtiYA/(!! "#&'*,.02468:<>@BDGIKR^SPZbzueb`cedeegmkgkkrupssuuuvvxxyy{}{Ƕzumq~}~{sYTko^YaXA4/ "H;J8)6 ,:JRNI;2*,/0235699<=?ABDFHIKLOPRSUWXZ[]^`abdefhijlmnopqrstuvwxyz{|}~~~|vlbSUYGB6JQN6-0 !#"&$('++.0149FZln~~}|{zuvxvvuutrm_RC6DB'#$'"',).00./135:KUZadXUYHJS]jnlWP`lkcb``bhc]``aaccefghijkmmopqrstuvwyy{|}~ɻurfWSUTMPSSLLMORSW^d`hhelsq`Zb_TPBB=:BHK[nfrshqwv}stu}|{xxxxxpnvolj^SLJQNIJDHIOC9A=A>BBCFFHEIHKKMNOQQTTVVXY[\]`enmkllutp~pw~uvw}vxyuvwwyy}~Ų~}t|v{{tvzuxy{¿}sphS^jhna]cddZ]g]eocj\RWE?ISLGFHE=9/58?J=125/37/.-3/%'(%()')*+../124578:;=>@BDFGIKMOPPQSTUVXY[\]^_abceffhijmmlnorx|ð}}}wqptoozsqocbggd^Z\Y[[\]]__abjomkfhiijkmooquvywuvy~~|{{{|~uwugimvzqvwvy}~}}||zywwxsmovriijiafrea`cdYWKQXJEIQ^abVOVNTFAJKMS^[_jqlsww}z~{}}}~}~|~|}|||{{{{zzyyxxxwwuutrnlhdmrljhgfa]\ZW`db\SN@C<:FNQWPKU[[[cea`a^_fopms|{t|x{~zwsxvr}zt}yuyucbhpzzpmoirwkf`cmuwv{ymgebbefpusvw~{}~~}}}|||{{{zzyyyxuuwwututtn`ODELQZjqrhVG<810-+'$($'&2IU_^XL@4./0235679:<=?ACDFHJKMOQSTVXZ\]`cddegiloqrtuwxy}¹~~}||{zzyyxwwvvutssrqqqppoonnmmllkkjjiihhgggffeddcccaab^]ZUOLJNSL@8?;6DFDA>94/'-7>:9@FOOJKOTUTSNIFKV[[ZXPT_^]Z^`owrlb`\ZVZ\XYQUQEFHJI?>ACDCGFGKILORTRQMGHLMNPV_hknqnjjnswzyy{}{}~wyzvtpqquvruplkhhkssuwolmifeippooonqspporrnkjjginnlhdbaZXWUSOTPQRNJJMINRPNPTRQUXUPLJNPOONQSUZXY\\[[]]_ab``c`afldbmljebedfghiijkllnoprrstvxxxxyzxy|~|}}{yzyz|{z{}~utqptplljilqupqtyvn{~rmiflojdYX`fjnfgvvxzywulbfmqpovwqxnijhsnoh`mpeb^_gfgadd\_acc_\]]]\bd^fihntrpqvywy|~}~~~{~}}{tpturpme```dcb`bb^[TKFDFDENROOJD?;@BADMPOQPQORTUXXVY^acbdehpwwnje][[\glhgegd`\VURTSUZXVWXZ]`^aggjkwymr{rtvjgq~j\VTV`hghd^bfiebejljfaabgnpllnlnpoqtv}|{zz|wstxxwxxxxslgdeipljmokquoururuwu{|~~}zvtwuxwutpmjjmnolggfjfdefgdcbddeefgikjkmoprqrrrssvvxyyyyzz{{{||}|w{xuvvtnnlkje`\\bcbb_^^_acaadhkkmmmmmoqpqqrpnoqtrqrstx}z~|}|zzzyyyvsqoljjklllkgc`_ba\^[UUSX[YVPPRQTUSUXWXWX[RRXSPPRRWWUWUVTSRSTQNNOPRMDENNOPOKLPE@BLPKF=EIBADJPMGGKKGHFGHIJJLLPQPSUVXZZ\^^``aceehjijiklmmoppqrtstuvwy|||}}~Ŀ~}}}{xqkmloprsnptwxyxxzyz{zx||{|}~}vppoorrvz{xuusw{|zyz{{}xutz}{nhebdjjgfhjlkjnkhgeegjhjorurnprrxwrqnrvsruxyzxx|~|~~~}{zzz{|}{ww{z{xwsstwyuxz{||||}}~|}zz|{|wupmmhkmlkhggggb`__\\]^a_][WWX\a`\YQPUY[UPMOVWTMLRSTWXXXZYYXW^d[V_][VTXVbfdcbgegdddfpiopijeg`\blrnnnunm{qksyz~~zzzwusxxqqsqtspnjmlkmkjheecaehhgffea__cefd`chmjdhkkquusportuuroqvxzz{~yw{}}~~~~{zy~}}}|~}{zwrqsppniie][VTVUTQQOOOMJINPPPPOPRQPNOPRWUSQOQSTSWUJDACDHIDGJMOF@?CEGIGIJLLOVWUUV[`dghehnpw}{~xy~zyzxxxwsppnnoojglovvnkluslmifkpssjluz|}{wz|~}|zyz{zxtqkhklpokjjjjhdddbb_`bbbb^[`eijhfacbbbcfdba`a_]\ZZ]]ZY[__ZZZZYY\\[[]^__`bdedeghhjjmqssttuvuuvwxxyz|~}~~|{zy}{}|y{}~|ywwywxypjjpuqmjikjljijjihc]Y\db]\__`ZNQVWYVWZQMRUXYVUWSQONMKKIKRURSSV[Z[YY[]`dfgggdaabbb`]_^\\ZYZ\\^_bc]`][][`akrqjfgfjknnrssursrpmmswxzy|{~~|{~{y|}{zw}{urwxxxvvvuruspqrv}}{{~~~|||xwyvwwsyrjnnwrsporqywys|}ww}|vzy{w~{wvy}~}}~~}zz{~|w{|~~~}~|yz|{xv~vty~~~~~yvx}~~{zzwsvz{xtrooomnqrpnrwvtqqqrutuuxvutsvvurquxzurpnoqrrttux{|x{{}}wroppooppomnsojlmpoqogihhkiigiiikmlhikmnkkkmrsonmlnqronmotxz|~{~}zwspoqsrv{{|{|~{vvxvtrrv{}{|{vsrrstuuy~zyzyz}}~zttvwxyxuttomopz|utptspuvtsuuurrpmpnplc_`b^XXafb]\[WUVYXSRTWZXWY]___^abfjkqssoptw||z|{yzz|{wstuvwtrqpw~zusspqty|zxtuwtnkntyyvstw||}}}~{ofekpttmd^^`fjiid\VSV\bfhgc]XTUY_fhgb[Y\ciiigdbabdghjkihijjlmlkhiklnmppqstvvwwxz}|zxyzz|zwvvttuutqmoonolkkiigddegfbbbda[YXXYYZ^`^\\[\]^``abcdeceedbacfjkjijlpqqpqtttuuvvvusuwtsqollmnokhfedfhhjjjihhhhgkmjgecdhgijghfghlmkkloomhfippopqqqtqoopmkkeilhgkrtnfaejs}rlijmmostqsttx~~{z||{~|xwvwy{}}|{||~~}~~yuuvpmqw}|tpmgdccbbccaa_[\\[\a`bb__Z[\`ceedjloqmijpuxxxvx|~|{z{|{z|{zz{~~||~}|z{~|~~{~ywtutuvrrrsutrnkkkmkkjjiggghgijnoljkkjmnswwwvvvyz{|{{|}|zyyz}|{ywxxxuuwxwwxvvtsssrqrqporqrsqrrqqssprvwwxutstxxxwutsvwqosspjfgiqrpnmnrwvrntz|tjopspkmhowtsqpporroqqxyw{yww|}wz|||yvtz}}xttsz{uxxyv|}~~}}}|}~~{|~~{{yutwyz|{zxwvuttsvxxxvuqonlllllllkklllmoprstutuxxuttv|~}ywx||yvrruplnoqqqoomjifeeecb`^_dhedcbcfjijjjjjknpprqpnlnrrstsssstutroopoqpqsvvrrpppqrrsuwyxuvwxvz{{~~}{}~|}~~~~~~}zz|{|~~|xuuwvrqpprstusqrqnmnpppoolnpmkehmspiihtvmqqjjjkqnfgeadfmqpikniiefgioqqjgjmrsusqtz~xxusvvz~}yy||~}~}|z{}}|}~|z}|z{~}xw||z}}|y|{~y~~|ywzx}{~}{|zz{}|||}~zwtuwwwuvwyvuvutrsswxwwwvrrv{}|}~}~}|{|~~}||zwy{{zyvwxtssrsuuurtvwxtrrtrqrrtutrqtuwvonoqpprrtuuuuuvvwxwuttuxxxurpqwxyuoqt{}|ys{}}}{~|~|}~|ywxz{zyyxusssxxvvvvvuqsvwvuw|}{zwy{}~{w|~yy}{xusy~}zzy}|xxzz|{zwy{yz|{}~~~{yxxx{}~zxusttvxyzzwwtssrrqstuwywwxwwxxw}|yy}~}~|~||{|{}}z|{z}~zz|{~}}|z{zyy{}}|z|}|}z}}~||{}}yuuvwwz{zxtsuxxwwxwxyvrpssttqoqrsvvtstwyy||{|{yvwxwussstutrqrstx{yurpprtvtnmnpoqpkedsyytmdampuy|snmopv|vrv}xlfglsuuwuv{{vtrv~~z~||w|~}~}|z~{wz|{~zw}~yxwwwwx{|}|zxxyzz{}{yz}}}|{{|||~{yyzwwtqssurpnlkmmkkmlkigggdabegigbdeeffgksqmhkooqstsqmry{xqpu{{ywtvz}}zxzztlnqqrrsuspmlknlimpwwqqtsqsyyttwuwvu~}{}yvx{}~}}}xxxzz|zwxvywvxvx}{xwz|{y}}~zwxxxxz{{zvtppvwrjdjx}xngiptsoijqquxwwvy}zz{z}|z~|}~}yxwwyx|~~|yxuvurw|}{y|||}}~}{{xwvuttusrropuurommnnnklpsvwwusrruy|||~{zyzz{zywvwvwwuwuttvurtsrtuqppppommopsuwvwxtpmoqssuwxwwuvvttuvuttrrtvwvuttpmoppqrssswy||yyxz|z}~~}{~}}~}}xvxxwwxxxxwvvusrqqrrrtttttsuuuvxz{||}~}|}}}~~}}}}}zz|~|~~~}|{}}|~xz~vxs~vtxsxt{v~|ytrstpqqz}}z}~}~z{}ttx~||z|yvzxtvwz{yuyw}||}tz~y{~|}v}u{msxytlktwzcutu{||ioqlrp~|i~y}mtrvxi~|ws}z{rrfefmo~rnzqrz{}~}}yy}}~wv|}~}xw||}|zyyy|wtwupqtr|vqsy{urtwxwstrsw||xyzxy~{w|~}|{zz~}~}ytvyz}~|}~~}~~{{{{zzywvvusuvy{zwtrrtttsrpqsqommmmooprpppqppooppnmoqrrpquuuutttutwzxvuv{|{~~}|{yyxyyy{|}}|y}~||{yz}zyzxxwwz}~|~|~}z{}}~{{~~{{zzyz{zxtrqrstsqponmnnppqsspnnoopopqmkijlmligedceiiffdaeec__ekpj^^emssommiiqwwux|~}yx{~}}~}}~~~}~~}||}}~~}}~~}}}|{zyxxz{|{xxwxxwwwvutvvustuvwuttuvutuwvvvvuuttssrrqrssuuurqrtuuuuvxxwxyzzxyz{}~~}|{||}~|{|}~~}~~|}~~}{yyyxywvuuwwvuttutuutstuvwtrrtvwxwxyyy{|~zwxwz|||~}|}zyy{{|{|zz}|}}~}|z{}~|}~~~}}~~}~~}}~}~~~~~~|~~~}~~|}~~~}|}{zwxzz||yw{|xz}~~~~ywx~~x{{y{}}{~~}x}~{{|{{|}}{{~~~|}~}||{|~}||||{{{zwxyxyz}{||zz{|}}~}~~~~}}}|z{||}|zyyyywwvvvwwvtuuvxxyyyxwwxxxwwwwxyz{{z{}}}||{{zyyy{zzzzzyzzzzz{{zz{xyy{|{{z{y{{|~~wxy{}~w|t}yvz|{}x{{y|~{|z||x}{~yx{~||}{{}~}}|{}xz{}}z{zyxzyzz{||~~}}~~~}~~~||{|}~~~}}}{zzyzz||zyywxwvvvwyyxwwy{yvwyz{zyzzz{}~~}}~~~}|}||~~}{{zz|{}|{{{||}~~}{||||zzzzzyxxyyzyyxwxvwwuxxxzxwwwxvwwxywwxz{zyyzzxxyz{zz{||{z|||{{|{|{|~|zxz|{{{{{|||{||}~~~~~~~}}}~~~~}}}}||||||{{||||}}~~~~~~~~~~~~~~~~~}||||}|||{{{{{|||}~~~~~~~~~|}}||{{{|{|zzzyyyyz{zyy{}~||}~}}|}}~}|||}}||~~~}|{}~~|wx}xvx|~}z}}||~~||}~~~}}~~}~~}}~}}}}}~~}}|||}}}~~|{zyyyzzzyyyz||||zzz{{|||||}}||||}~~~~~~~~~~~~~~}}}~~}}}~~~~~~~~~~~~~}}||||||||||||}}{|{|{{||||{{{||||{|}||{{}~}{{{{}~~~}~}}zz{zzzyyyxyzyyzyyyyz{{{{|{{{z{|}|||}~~~~~~}}}}}}}|||{{{{|}|yyxxxxxwwwwxxxxz{{{zyyzz{{|}}|{{|}}||}~~~~}|||}}}}}}}}|{{{}~~}||}}||{{{{{|{{|||{|}}|{||}}~}}}}}~~~~}}}~~~~~~~}}}}}||||||||{{{{{{{{zzzzzzz{{{|||||{{{{||}}}}}}}}}}}}}|}}~~~~~~~~~~~~~~~}}}~~~~}~}}}}}}}}}}}}}}}~~~~~~}~~~}}~}}||}}}}}}}}}~~}}}}}~}}}||}~~~~~}|}}~~~~~~~~~~~~~}}~}}}}}}|{|}}||{|~}~~~~}~~~~~~~~}~~~}}~~~~~~~~~~~~~~~~}}}~~~}|||||||}}~~~~~~|}}}}}|}}}}~~}}}~~~~~~~~~~}}}}}}}}}~}}}}}}}||||||||}}}}}|}}}~~~~~~~~~~~~~~~}}}~~}}}}}||}}}||}~}}~~~~~~~~~~~~}}~~~~~~~~~~~~~~}|||}}~~~~~~~~~~~~~~~~~}}}}}|}}}||||||}||||||}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~}}~~~~~~~~~~~~~~}}}}~}}}}~~~~~~~~~~~~~~~~~~}}}}}}}~~~~}}~~~~~~~~~~~~~~~~}}~}~~~}}|}}}}}}}}}}}|||||||}}}}}}|||}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~}}}}~~~~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}||}}||}}}}}~~~~}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~}~~~~}}}}}}}~~~~~~~~~~~~~~~~~~~~~}}~}}}~~}}}}~~~~~~~~~~~~~~~~~~~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~lmarbles-1.0.7.orig/src/sounds/select.wav0000400000175000017500000000254406030574246016542 0ustar uweuweRIFF\WAVEfmt VVdata7~{xvtpmigecb_^]^cgfglmmprqrstsrrstttvwwustvuuvvvwxxvuspnnjffhiilnopty¾~}|{{yyxtrnkhgfbaabbab`_`behiloqtxz{~zuoje\TLGC@;::;=>?AEGKPRPOONLMRVX[blwľ~wtnhd`^YWWVVUXZ\^djpx~þ~ulcWF90$   (1:BJTbku~yslhaXRPNKHFGHHKPT[dksɾ{oaVNFB?:742/-,026>GQYbnwüwk`SI@4(  !0CTcqƾveTB2#!)4BRbrǶtZ>(  *5AO]l{˿mWB2%  '7EYm̿tbRF?82,'%$$$)/8FSbtͼr\L@5-&!"(4BTevǯjXH9+ ):K[m|xh]ULC<9555;DP`p̿xmcXLC:3.,/5BRewи|jZJ8( /AScvҽ}sfVD4'!(8HZn}ǵyiXKB6-#$,;L^oưlU=*!0AUgwкo^L=.#,>Qdu͸t[C*.@Sdwνr_N?426@P^ly¯jR?."".>RexʭpT=*&2?L^pq\LB<:;BLXfsĻwcP@4-+,2>JZl{xld^ZX[bgp|¼pf^XWVY`hs~zsnjghilr|xrlf`\ZXZ^dlr{xpjd_ZZ]_dkr{ukd]VPNNNS[bkv~}~}yuojhggikpz|qe\URQU\blv}lmarbles-1.0.7.orig/src/sounds/score.wav0000600000175000017500000000115407207216414016371 0ustar uweuweRIFFlWAVEfmt "V"Vdata@|zz~z~~xtjnlzxzxv~zlv|tb~^d~Zlbf`ȘxFzDʊ.*vbtjJzhp|jZz`NSȳ<.Hdټg&=P˴B+H^ݽo(;NzεH'GXྯy*8OqѱS %HV8 3Odֵk(!#AS}ɰL#!,J[ڽ6""8Pmдb)"'DVįG$"1Maֹx4#%=Rt̲[)$+GZC%%5OfҶq1%(AUzȯU(&/K]ս=&'9Rkϳj.'+EXĭN((2O`Ӹ8()=Un˰b,)-JYF))5RaѴw2*)CVsǬY++/NZպ@**;Ueΰo2,,HX{«S-+4Q^Ѷ>-,@UmȮg3-0KZҽN/-9Sc̳z=./DWtì`3.5N^ϹJ0/=Uiɱt;02HZz[308P`̷F01@WlƮn814J\ξU21:Sc˴A11CYpŬf514N]κM1135J[y˽_75;RaɵM55BYjĭv?67K]wɽ`86;T`ȴK66CZgŪx=86M]uɼ`88I]k¼yI>@Q`xgB?DXeW@@J^k{I@AQavhBADYdUA@J_h}HAARbthCADZdWBAK^j{LBBRawiEBFYeYBBK^l|MBCRbvkEBEYeYBBJ_i~KCBRbskDCDZdXBBK_i}LCCSbukFCFYe[DCL^k}OCDRbvlGCGYe\DDK_kNDDRbsmFDFZdZDCK`hMDCScrmGDF[e\EDM_k~PEETcunJEIZf_GFN`lRFGTduoJGI[f^GGNajQHGUdrpIII]f_HHObkTIIVetpNIL]haKJQbmVJKWeuqOKM]hcLKQclVLLXfsrOMM_hbLMQdkVMMYgsrPMO_idONTdmZNNYgusSNP_ifONTdmZOOYgtuROP_i~eOOSdlXONYgruQOP`i~fPOTel[OOZgtuTOQ_igQOUdn\PPZgtvUPQ_j~hQPTdm[PPZhrvSQP`i}gPPTel[PPZhsvUQQ`j~hRPUdm^QQZgtwVQR`j~jRQVdn^QQZhsxVQR`j}hQQUem[QQ[itsTRRbjdRRWgnYRR^jwoTSUelbSS[iqzYTTak|lVTXfn`UT]iuvYUVcliVUZhp_VV`kxsYVXengWV]is}^WXbl{pYWZgodWX_kuz\XYdm}mYX\ipbXXalvv[YYfniYY]kp_YXcmwrZYZhnfYY_lr|^YYem{o[Y\iodZYalux^Z[fnl[Y^jqcZZclxu]Z\goj[Z_ks~aZ[dm{r\Z]hpgZZalu{_Z[en}o[Z^jqd[[bmvx][\gok[[_kqa[[dnxt\[\iog[[`mr}`[[fnzp\[^jpf\[bmuy_[[gnj[Z_kr|`[[fn|m\[_kqa\[enzp]\_kqe\]dnxt^]_jqh]]dnwxa]_iqk^^cmvzc^_ipn_^cmu}e_`hp~pa_cmtg``hp{sb`cmsha`gpyvcablqja`fpvycaalqlaaeov{daakqoaaeou~fabiq}rbadnuhabiq{tcbdmtjbbhpzwdadlslbbgpxyebclrncbgov{fbckqpcbfou~gcbkq|rcbeoshcbiqztccdnsjcchqywdcdmsmcchpxzfcdlsoccgpw|hcdlrqdcgov~icdkr}secfoujddjq{uecenticbjqzsccfouicdkr~rdcgow|iddlrpechpv{gddmsnddiqyygdfntneejqzwhegotlfekr{ufegpukefls}tgfipw~kfgmsrgfjqw|jggospgfjrx{ighoupgglrzyjgipuohgms{wigiqumhhmt|uihjrwmhint~tihlrx}miiptrjhlsx|kijpvqiimtzzlikqvqjint{xkikrvojint{wjikrwnijou~vkjlsx~njjputkjmsx}mjjqurjjmtz{ljkqvrkjnt{zmjlrvqkjot{xkjlswojkou}wkjmsy~okkqvtlknty|mkkrvrkkou{zmkmsxrllpu}wmlntxollqv~ullouz}olmrwtmlpu{{omntwrmmqv|ynmotyrmnrwwnmpuz~qnnswunnpv{|pnotxtnnrv}zpnpuysonsw}xoopvzrootxwoorv{}ropuxuposw|{popvytopsx~yqoqvzspptxwqorwz~qppuyvppsw||rpqvyupptw}zqpqvyspptxxqprw{~spquywqpsw||rqqvyuqqtx}{rqrvzuqquxyrqswztqqvxwqqsx|}sqrvzwrrtx|}trswzwrrux|}trswzwsruy||srswzwssuy}}tstw{wssvy}|tstx{wssvy}|tstxzwtsvz}|tttx{wttvz~|utux{xttwz~|utuy{wttwz~|utuy{wutwz~|uuvy|xuuw{|vuvy|xuuxz{vuvy|xuux{{vuvz|wuux{{vuvz|xuvx{{vuwz|xvvy{{vvwz|wvvy{{vvwz|wvvy{{vvwz}xvvy{{vvwz}xvvy{{wvx{}xvvy{zvvx{}wvwy|{wvx{}xvwz|{wwx{~~xwwz|{xwx{}ywxz|}xwx{}zxxy|~yxx{||xxy|}zxxz|}yxy{}{xxz|~yxy{}|yxy|~zyy{|~yyy|}{yyz|~zyy{}|yyz|~{yy{}~zyz|}|yy{}~zyz|}}zyz|~{zz{}~zzz|~|zz{}{zz|}}zz{}~{zz{}~zzz|~|zz{}{zz|}}zz{}~|zz|}~{z{|~|zz{}{z{|~}{z{}~|z{|}~{{{}~}{{|}{{{|~~{{{}~|{{|~{{{}~}{{|}|{{}~~{{|}~|{{|~{{{}~}{{|~|{{}~~|{|~~}|||~|||}~~|||~~}||}~|||}~~|||~}||}~}||~~||}~}||}~}|}~~}}}~}}}~}}}~~}}}}}}~}}}~~}}}~}}~}}}~~}}~~}}~}}}~~}}~~}}~}}~~}}~~}}~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~lmarbles-1.0.7.orig/src/sounds/teleport.wav0000600000175000017500000004245407207000272017115 0ustar uweuweRIFF,EWAVEfmt "V"VdataE~{uia]VKEEA74;=6:LTOZrsht~n{zl|vk|rl||gdpcJLTA+27"# */0;JOR]ecciib`fe][aaYV_`QMZZ@5FE#0- % *$'<87KVU_ljhrrfgneX_f[R[aWRZ]VRSQNI@DVYKLZYKLWULMUUOOTVRNQWQHINF7361"#"" $-8AEJXa[V_eYOW\RJQXRLQYVOQ[ZPOXXLHNLA=AA;;AEFKSYbkpy{}ksugp}ukr}xot}yqtztntvmlw{svιų¼Ƽĸ³ķĬúɻ|w}vnmh[ONQF7ATKM@1?I8/@D1.AB47FH?>IND>GL>6@C3/<=02CD8?PMCMXQKTYQPZZSX`[Xbf^`mqjkt{vnt}uhoxk^hpbYhpc`ryjk~psrxyɴոߺḶڷѸκض̫ǩŬڽͻþźtw}rfnqa[geUYf\R`fXXgdX`kbYch]X`aVT[YPQXXQSYXQRVRLLLFCEB;=B<6=C96BB69E=1:B4+:<(&84 $71 *<5(4C:/;F;3?E84CD69HE:BMF@JLBBKG9=G<-6@1#1<, 2?/(>I85KRA@WYGK`^OYjc[iskkwvpw{qoyvijtl_dlbZbg_\ehdfmqopuxxx|̾ŷļ˽vwzpiki_]b]TW^XQYaZWaf`^ehc`df`[^`ZUY\USXXPPURKKPKDFGB>??<:;<98;=;;?@>;>B<5:?3*47&!22#72 +=1#4@/)<@.0C@/7H@4BMB2:?.$24 30(=1#8F2.IN7>[T@Qi[Ndte`rzqox}{uu|zljso__haTZb[U_d]_igckqkmy{u}ýѿǷμó̼Ǿxs}wdfreS^jUEZdHA`fGJmjMZylRd|gQgw[KfoQIgiIIe]?:;AFD@FNJ?EPF6=H9(2<+-4%!26)+;;06C?8CNIHV\UYgg`iupjwwpvo|}lepn\YdaSUa]T\g`[gneesunužÿĻþ~jnzjWbkUHZ]DBYV>GaWCUm]OhwaZsw^]toV[ocN[kXGXaG;QR42KB%-D3,=).<)!7@.-AC5:G?5>B51<7*/9/%19,%27'#13%%21&)32*-6824>A;=EGBCFEDC=<@:.1:/"/9*"6=*+@=-7H?8HOFJWVR]c_epnlv{uu}|uwytpqkfgc\\^YW\]Z^cabjjgovtvϺŵ¼ĿɿmmujWZcUFOWHAOSDFVUISb\Venebprdesm]dqbR`iQE[]?;TK*0F4'9!)424 <6"/F<->M?4DK94DD02D<'0@0/;'05-,.)'5-'6=55@C=?GHDEHGCA?=<96785345335669;:=B??GLIKV\Y\hnijvypr}}rt{mmwq_ameU[i^Q_i\VhobdvxouȸӸ˳ŶĿ˵ѺȯïѾɾ|o{kYjnRI_]AD\R;I]L>VbLLiiS_yjXoeZw|ZXvmIRmV6K^;&CH91 3#4 )8:>$,KD,=VC0IW;2NO.1L> /D*.8,* * -!#5'2>0.@F;>?HNIL\^U]oj_l|rhytn~pmzxigpmaaie\`ga]glcgwvmz~ųĹɯҷ˭ɮͷȴ϶Ƭʿ½vsrjec`[XWSPPNLMOLLRTQT\]Z_fgdglmjjklicbd\RSRE<@=/*1,(!%''0)(4<66BG?ALLCGOH?EH=6<9,).%" ! * #4%5@00GJ;@SOCKWNELQHBEF@;:<82263.2756=?>EKHKTURYbaainlnvvtw{wvywssrnmnheih`cjeajqlmz}̻ºƺؿ̬Żɺʿ°vy}pfmoa\ecSS^WJPZRHS\SO\cZZgi`dokckpe`idUV]O@HI5.:4 $2%$,&(**"43)1B>5ANE=LSC?QN9:C@55:4,./(%(% !"#!!(..07<<>CGFFHIGFEEEB@BB==A@:8>D<8AD;9CD;>IIDJTTRZ`_`hjgjpmhorhgsqemzpgyppp{sy~ȰɳƸҼǵ¿ƴ˾ι̶ƵɽǼǼĶö}yzzx|zvzypnsneglf`ehb`fgcdgebcb^[ZVQQPJFHG>>E@68:;5022-)+,'$))##)%!%'!!&! #$#%.)'4914A?8=E@9>B<8LQBBQM?ISF@ON?DPE=IJ;=H>264;93782251+.0)',+&',+(*/0.17859@?;@GDAHMHFNSLJSVNNYYOR]XNV]SOZ\RUa\Uah^_nmcmypk{ruu~{ƽȺɺʾо̾Ƚʼystr|ls~shtykgspcemd[acXU]YORXPJSSILUNGPSHHRMDKPGDLJBEICADB>@@;:;7233,)-+$$*&%*#*-"$2/",8-%5:+-=8,7@40=<16?50:9-/7/&-1&".."%2-",9.'8?01DB3=LB;JQEFURJS[SS][T[aYW`_UZaZU^aZZdd\bjfajpjistmrzvs{z{žʽ˾Ǹ͹¬|rrocrn^v{aawn[gtbYkkWZj_O]fSNb_JRdVGY`KH]WBLZJ?PQ>@OE9EI;;F?5?B54?9+3:-&33$&3,",3)&22(,5/*25-/73.5812;829>65><37>6/78.-40(-1+(/0*-3/.4514:76>?;AGCBMOGNYSO\`UWe`U^h[UcdUXf^R^gYUfgW^mcXhp``spam|pj~sz{ƿǿ½·}|ypsunimohejkdcihabie_dga^dc]`d^]b`[]_YWZWRRROKJIGDACC</6B7-;?/.;7*/8/'05+'24)+62*181/9;59A?=EJGKRRRX[Z\`__bb`ab__a_]^_\\^][]^\\__]`cbbhjhmsrt{~¿̾}ruucrze^rp[ashYgra[nn]cri]krb`oj]dl`YdcUW^TKRSFDLF<@D<8>>88<;78:987897589549923:5/480-64*.6.(24)*61(29/-::/4@80?+6K>4JSAE]WHYhWSjiV_qbUhnWXndN]mVKdeJQiZG^kRPlhScxh`znvz̾ǿο;zuyvllojdhiddggeghhiijllmnnmoomlmjghgaab\XYVPOOJGHEAAA=<>:9=;7;?98>>8;@<9=?::=;7995464024/,11)+3.'05+*75*1=3,;?03A;/9A30=:.3;1+55(+5-$/5((74(3?50BG9@RLBR]OObaS]k`Yhj[_kaWcfWWd\OY`RO^\NWcZUdi^drojwx{½~|mwldus^cuiYkva^ut^i}oau~hg|ubmyf]mlW[h[MY\JGUM=EN>6EE46F=06398/072*06-)34),61)29.-:9.5@81>C55D?19D7.=>,.=3$2:(%95#/?0(>C/6LC5IVCC[YGUfWPehU[mbTdjWVg^O[bPN_YIUaPLaaP[mbZnvfk|o~ŽĿų¶vvm~|fkznaovfduremypiuznmxukovlgnmbch`Y^]TTXQKOOFEIE>BC>=@@=?@@@A@CDABGD>CF>:BA67@9/7=1,87*.:1(38++83)3:/.<:.8B62A@19E8/?A-0A5%6>('<6#0@.'=?+4H<1EM;=SM?O\LJ_]NYgYRddRYhZN_bMPbVFYaLMd\J\lXUonZh}me~oxx½ȺƸɿŻ¿ÿʿ˺½ӽоιӾưƶ~{|sx{qpyumtxooyvnu{rpxvmpumhnnddje]acYV\XORVMHOLBEKC>GG=@IC=EI@@HG?BHC=AE=9@@67?:28>30:8,2:1+67+/92+6:/0=:08A72?@36C;/:A1.>:)2?1*;=,2B8-=C35GA5BM?>PNAKYNIY\NR`XN[aRQ`ZNW^RO\YOX_VUb_W`h^_ljblumly{ry{ǽž~zvzzs}tuzqx~sqzxmpwohopgeli`ch`[a`VW\UNTTKJQMEJOGDLLEFLJDGKGCEHD?BE?;AB99B=5;@74=;15;3.77.192-79/1=7.9@20@<,5C3)=?).C6&9C,,D<)9H3-EC-9L:0HK5=TF8OXAC]S?RbID_[BPdNC^`EOgVGahNUoaOhsXZwmWmfb~evxmt}v~{˿տɼӿɹѿɷ̽İĸ~|zy|{v{{srwrlpqiinichjbafb[_aXV\WPTVNMSPJNRKJPNGLOHFKICEHC?BC>=BA;=B=9>@98?;59<439605922:717<43;:26<618:2196/4;41:<36?:4=A88B?7>D;:DC;BJB@KLCGPKENQIIRPINTNLTUOS[WT\_Y\d`^egbdjhflmjmsqpvxvy|{|~¿ſμº͹öιij̸­Ƶõ{yw{wqttmmqlglmefke^eg\\d]T[_SQ[WLRYPKUVLMTPHLPIEKJBBHC=BE=9/7?3/=>/4B8,:B/-A;(4C1(=?)1E8*?G13I@/?K74IE2?M<6KJ7ARC:OR=CWJ;NVABXO>O\IF]ZHUfUOefS]n`Xkm[ctg_ruck|pgz~mryo~tvu|}ĿпĻκķκų͹įʷĭȹĬ÷}wst|tlsujjrlellcdjc^ddZ\b[V]\TW\UQYXOSXQMTSJLRJELLBDJD>EH>>HC:BG=:EB6;,5?2,;;-2?6.;@35C>4>F:7EC7>H>9FH;@KC;EC8=E<5AC58E=2>D53C>.8D5-?>+2B4);?,0C8*;D01F?.=J73IE2>N=5JL7?RC6KP:>SG6JS<D95B?29C60>>/4@5-;>.3A8.G87HD7BM?;LK;ERD=NN=DRD@?<=>;9;;78:758945:638;55=:4:@97BA9?HA=HI@DMGAKMCEMGAIKACLF?HLBCNIAKQGHURJT[RR_^U_h__kkcjrkisslqwqnuuorwrpwwquzvu|}x|~¼Ž¼ƾüɾʿ·¹¸¾~y{zuruqklnhehgabeb_bb__a`^__^]\\[ZYYXVUUSQQPNLMLIIIFDFFAAEA=BC<=E@:CF<=HA9DG9;H?3@E44D;-:A//@8)7A.,@;)7E2.EA-:7::5596258337736:76;<9=CEADIFDIKFGKHDHJDDIFADGA@FD?CGCBIHDINJKRSPU[XY`a_chfflmjlqomqrnospnqsopsqpstrswwwy||}ûĺĿĸƿǻļʾϽµǴƻðĻųƾȷȶƽzzyvssqomllihhgfeeeccddbacb_`a_\^^ZY[YTUVRPRPLLNKHIIFEGGCDGEBEGBBHE@EHAAIEOB9MOQC5HM7;OD5IQ=@UL?Q[ILaZN^hY[lg\iqdesneouiiupgpujjupiqvmnxuow|vx|ûŻ÷ɽǻ̼ѽų˵ȿDZƾȲ̶İ̶Ů~x{xqyymovnhooghlieghedeedbbca_`a][^\WXYUSUSOOPMLMLJIJIGIIFGIGDHICEJEAGH@BHB=DE;7>@66=917;32:817=65>=7=C<DIBBJHBGKDCJHBFJCAHF?CF@?ED?CGBCIHFLNKNTRRXYW\`^_ddbfhfhkjillklnllnmkmomlqqnqurryyv{|}Ÿ³ɺƶо˺ϼ̸ջƱϴ˯ͽʮͽ̱п̱νƬŴ}}|ywxvrrtpmppkjnkfikedhgacga^cb[\`ZV[ZSTXRNSRLNQLJOMHLMHIMIFJJEGIFDGFCDEBACA?@?===:;<98:958:66;:6;>99A?:@D>>FD>DHAAIF@GIABJE?GH?AHB=EF>AIC?HJCFNJHPRMQWUSZ\X[`^^ccadgeeiigikiilljlmlmnnoqqrttuxyy|~ƾƽʿʾпƹ˺´ɶȿȵɿȵɷɿŴù~{z{xvwvssspppmlmkijiffhdcec_`a][^\WXZVTVVQRUQNQRMMRNJOPIJPJELLDFLFAHH?BIA;DD:7DF9>J@:GH;@KB;HI?C?;@?:<@;:?=9=@;;B?:@C<=D@B?;@A:9BC:>F?;EE:@H>;GD9AI<:HC8BI;;IB7CI:;IB7DI:=LC;IM?DRIBQSFLXNIWWKR\RN[ZPW_VT_^U\c[Zdb[aga`igbimhjqomrurtxwvz{z|~}~ŷʹö̹ʶ;ɳμɲлȱкDZиİ͵ʾŮö~|~}yy{xtvwrptqkopihmicgh``e`[`aZ[`\W\]WW\XTXYSSWSNRSLMQMHMNGGLGCHHBCGB?DC>@C?>BB?BCABDBADDACDBBDB@BC?@B@>AA>?B?>AA>@B@?CC@BFCCHHEIMJJOOLOSOOTSPTVRSWVSWYUW\YW\^Y[a^[ad^aheailfiqnjsvpr{ws{}wy}z}¼ŶȾǶʽųʹðʷ±̷²Ͷ˵ξdzʹñ}}|xz{wuxvqsupmqoikmgejgadf__c_[``Y\`YX]ZTY[SSZTNUULNTMHPOFJPGDLJAFKB@IE=DI>?ICAKC=II=BLA;HD8AH<:GB8BH;@KF?INDGQLFPTJMWQLUWOQYTOWYRT[WSZ\UW_[W^aZ]d`]eg`dlhenpinvqnwyrv~yv~y|{~ĹŸľĶŽŵȽƶ˾Ƿ̽Ŷʻ³ƶülmarbles-1.0.7.orig/src/sounds/click.wav0000600000175000017500000000114207145777404016354 0ustar uweuweRIFFbWAVEfmt "V"Vdata6~}~{f{v|v{|}|}~{|z}z}|~yv}z{~|||{~}besxppy}pm~sv}t}{qgnzu|q{v{vyt|xyhxhkxoptq{wsuyttyzq~w|jW_xYisu||zryxz{nhvobxSgnwxkQ3S[y|~ox]ad_M}|IOxpvwWUbOGOpOY{nI;csQUO;?[7r;GOuEo]{uw{vzrSmpyyigcfygzlg}Ypdnz_wlww~{t]GuiczSBI_gnSWECULJ+MaWb}kevWedkEC]kbkntduqxeupjqhjkx}~n{w}|}|~|~~zyv~y}~}lmarbles-1.0.7.orig/src/sounds/arrow.wav0000600000175000017500000000451407206775671016431 0ustar uweuweRIFFL WAVEfmt "V"Vdata zwwzw}r7SJ^݃)<P^}VSEBVVoXBo:z:&^fl^4<ftf,Brt^tr:Sl,S}^XzwfaJolrw^Mtw?:6779;>BDFGGGLb˽¿kZG=,)*/7:HQXVY\P3(/*& ,36DNYUWVYZ^cglsz~ȼ}wrngYXXTG7&*2*)5' -:O]l{zúĻʽuwt]``HP[I=JJ5*#),=Uecfsngb_QKFLOMGILKQXXbmsy~Ƽ}nnsuib[]c_LNROOTUMW^XFEQKNHB>83("&,5;FIFMW`ls{ƽ˶ƶxovrekdX^Y__UPVRRYTMNK8),$#, #include #include #include "cfg.h" #include "file.h" // profiles // DLst prfs; // string list for the menu // char **prf_lst = 0; int prf_n = 0; // profile source path // char prf_pth[256]; // configuration // extern Cfg cfg; /* initialize dyn list and source path */ void Prf_Ini() { DL_Ini(&prfs); prfs.flgs = DL_AUTODEL; prfs.cb = Prf_Del; sprintf(prf_pth, "%s/lmarbles.prfs", PRF_DIR); } /* terminate profiles; must be saved first */ void Prf_Trm() { Prf_DelLst(); DL_Clr(&prfs); } /* load profiles */ int Prf_Ld() { Prf *p; SInf *st; int s_num = 0, p_num = 0; FILE *f = 0; int not_f = 0; char str[256]; #ifdef ASCII int i; #endif printf("loading profiles... "); // read access ? // if ((f = fopen(prf_pth, "r")) == 0) { printf("\nWARNING: file %s does not exist; cannot read profiles\n", prf_pth); Prf_Crt("Michael"); not_f = 1; } else { /* load ascii identification */ #ifdef ASCII F_GetE(f, str, F_VAL); str[strlen(str) - 1] = 0; if (strncmp(str,"ascii",5)) { printf("\nWARNING: trying to load raw binary data in ascii; cannot read profiles\n", prf_pth); Prf_Crt("Michael"); not_f = 1; } else { #else fread(str, 5, 1, f); if (!strncmp(str,"ascii",5)) { printf("\nWARNING: trying to load in ascii instead of raw binary format; cannot read profiles\n"); Prf_Crt("Michael"); not_f = 1; } else { fseek(f, SEEK_SET, 0); #endif /* load numbers of profiles */ #ifdef ASCII F_GetE(f, str, F_VAL); F_ValToInt(str, &p_num); #else fread((void*)&p_num, sizeof(int), 1, f); #endif if (p_num <= 0) { printf("WARNING: bad profile counter: %i\n", p_num); Prf_Crt("Michael"); not_f = 1; } else { while (p_num--) { p = malloc(sizeof(Prf)); #ifdef ASCII /* name */ F_GetE(f, p->nm, F_VAL); p->nm[strlen(p->nm) - 1] = 0; /* levels played */ F_GetE(f, str, F_VAL); F_ValToInt(str, &p->lvls); /* score */ F_GetE(f, str, F_VAL); F_ValToInt(str, &p->scr); /* percentage */ F_GetE(f, str, F_VAL); F_ValToFloat(str, &p->pct); /* number of levelsets */ F_GetE(f, str, F_VAL); F_ValToInt(str, &s_num); #else /* name */ fread(p->nm, sizeof(p->nm), 1, f); /* levels played */ fread(&p->lvls, sizeof(p->lvls), 1, f); /* score */ fread(&p->scr, sizeof(p->scr), 1, f); /* percentage */ fread(&p->pct, sizeof(p->pct), 1, f); /* number of levelsets */ fread(&s_num, sizeof(int), 1, f); #endif DL_Ini(&p->sts); p->sts.flgs = DL_AUTODEL | DL_NOCB; if (s_num >= 0) while (s_num--) { /* level sets */ st = malloc(sizeof(SInf)); #ifdef ASCII F_GetE(f, st->nm, F_VAL); st->nm[strlen(st->nm) - 1] = 0; F_GetE(f, str, F_VAL); F_ValToInt(str, &st->num); F_GetE(f, str, F_VAL); F_ValToInt(str, &st->l_num); F_GetE(f, str, F_VAL); F_ValToInt(str, &st->c_num); for ( i = 0; i < st->c_num; i++) { F_GetE(f, str, F_VAL); F_ValToChar(str, &st->c_opn[i]); } for ( i = 0; i < st->num; i++) { F_GetE(f, str, F_VAL); F_ValToChar(str, &st->cmp[i]); } #else fread(st->nm, sizeof(st->nm), 1, f); fread(&st->num, sizeof(int), 1, f); fread(&st->l_num, sizeof(int), 1, f); fread(&st->c_num, sizeof(int), 1, f); fread(st->c_opn, sizeof(char), st->c_num, f); fread(st->cmp, sizeof(char), st->num, f); #endif DL_Add(&p->sts, st); } DL_Add(&prfs, p); } } printf("ok\n"); #ifdef ASCII } #else } #endif fclose(f); } Prf_CrtLst(); return !not_f; } /* save profiles */ void Prf_Sv() { DL_E *e = prfs.hd.n, *le = 0; Prf *p; SInf *st; FILE *f; #ifdef ASCII int i; char str[256]; #endif printf("saving profiles... "); if ((f = fopen(prf_pth, "w")) == 0) { printf("WARNING: no write access to %s\n", prf_pth); } else { /* save ascii identification */ #ifdef ASCII F_WrtE(f, "ascii"); #endif /* save numbers of profiles */ #ifdef ASCII F_IntToStr(str, prfs.cntr); F_WrtE(f, str); #else fwrite((void*)&prfs.cntr, sizeof(int), 1, f); #endif while (e != &prfs.tl) { p = (Prf*)e->d; #ifdef ASCII /* save name -- 12 chars */ F_WrtE(f, p->nm); /* levels played */ F_IntToStr(str, p->lvls); F_WrtE(f, str); /* score */ F_IntToStr(str, p->scr); F_WrtE(f, str); /* percentage */ F_FloatToStr(str, p->pct); F_WrtE(f, str); /* save number of levelsets */ F_IntToStr(str, p->sts.cntr); F_WrtE(f, str); #else /* save name -- 12 chars */ fwrite(p->nm, sizeof(p->nm), 1, f); /* levels played */ fwrite(&p->lvls, sizeof(p->lvls), 1, f); /* score */ fwrite(&p->scr, sizeof(p->scr), 1, f); /* percentage */ fwrite(&p->pct, sizeof(p->pct), 1, f); /* save number of levelsets */ fwrite(&p->sts.cntr, sizeof(int), 1, f); #endif /* save all levelsets */ le = p->sts.hd.n; while (le != &p->sts.tl) { st = (SInf*)le->d; #ifdef ASCII /* save name -- 32 chars */ F_WrtE(f, st->nm); /* save number of flags */ F_IntToStr(str, st->num); F_WrtE(f, str); /* save level peer chapter number */ F_IntToStr(str, st->l_num); F_WrtE(f, str); /* save chapter number */ F_IntToStr(str, st->c_num); F_WrtE(f, str); /* save chapter open flags */ for ( i = 0; i < st->c_num; i++ ) { F_IntToStr(str, st->c_opn[i]); F_WrtE(f, str); } /* save flags */ for ( i = 0; i < st->num; i++ ) { F_IntToStr(str, st->cmp[i]); F_WrtE(f, str); } #else /* save name -- 32 chars */ fwrite(st->nm, sizeof(st->nm), 1, f); /* save number of flags */ fwrite(&st->num, sizeof(int), 1, f); /* save level peer chapter number */ fwrite(&st->l_num, sizeof(int), 1, f); /* save chapter number */ fwrite(&st->c_num, sizeof(int), 1, f); /* save chapter open flags */ fwrite(st->c_opn, sizeof(char), st->c_num, f); /* save flags */ fwrite(st->cmp, sizeof(char), st->num, f); #endif le = le->n; } e = e->n; } printf("ok\n"); fclose(f); } } /* create a new profile */ void Prf_Crt(char *nm) { Prf *p; DL_E *e = prfs.hd.n; // if the name already exists the profile is not created // while (e != &prfs.tl) { if (!strcmp(((Prf*)e->d)->nm, nm)) { printf("WARNING: profile '%s' already exists\n", nm); return; } e = e->n; } p = malloc(sizeof(Prf)); strcpy(p->nm, nm); p->scr = 0; p->pct = 0; p->lvls = 0; DL_Ini(&p->sts); p->sts.flgs = DL_AUTODEL | DL_NOCB; DL_Add(&prfs, p); } /* delete an existing profile by pointer */ void Prf_Del(void *p) { DL_Clr(&((Prf*)p)->sts); free(p); } /* register or find a levelset with name nm */ SInf* Prf_RegLS(Prf *p, LSet *l_st) { int i; DL_E *e = p->sts.hd.n; SInf *s; /* maybe it already exists */ while (e != &p->sts.tl) { s = (SInf*)e->d; if (!strcmp(s->nm, l_st->nm)) { if (l_st->c_num != s->c_num || l_st->l_num != s->l_num) { // seems to be changed; clear it // s->num = l_st->c_num * l_st->l_num; s->l_num = l_st->l_num; s->c_num = l_st->c_num; for (i = 0; i < s->c_num; i++) s->c_opn[i] = l_st->ch[i].opn; memset(s->cmp, 0, sizeof(s->cmp)); printf("WARNING: profile '%s': set info '%s' seems to be out of date\n", p->nm, l_st->nm); } return s; } e = e->n; } /* must be registered */ s = malloc(sizeof(SInf)); strcpy(s->nm, l_st->nm); s->num = l_st->c_num * l_st->l_num; s->l_num = l_st->l_num; s->c_num = l_st->c_num; for (i = 0; i < s->c_num; i++) s->c_opn[i] = l_st->ch[i].opn; memset(s->cmp, 0, sizeof(s->cmp)); DL_Add(&p->sts, s); return s; } /* create profile name list */ void Prf_CrtLst() { int i = 0; DL_E *e = prfs.hd.n; Prf *p; Prf_DelLst(); prf_lst = malloc(sizeof(char*) * prfs.cntr); while (e != &prfs.tl) { p = (Prf*)e->d; prf_lst[i] = malloc(sizeof(p->nm) + 1); strcpy(prf_lst[i], p->nm); i++; e = e->n; } prf_n = i; } /* delete profile name list */ void Prf_DelLst() { int i; if (prf_lst == 0) return; for (i = 0; i < prf_n; i++) free(prf_lst[i]); free(prf_lst); } /* sort all profiles best profile comes first */ void Prf_Srt() { void *p; DL_E *e = prfs.hd.n, *e2; if (prfs.cntr == 0) return; while (e != prfs.tl.p) { e2 = e->n; while (e2 != &prfs.tl) { if (((Prf*)e2->d)->scr > ((Prf*)e->d)->scr) { p = e2->d; e2->d = e->d; e->d = p; } e2 = e2->n; } e = e->n; } } /* update Profile p's score and info s is rem_time / max_time of that level */ void Prf_Upd(Prf *p, SInf *inf, int l_id, float pct, int scr) { float new_p; #ifdef DEBUG float old_p = p->pct; printf("level %i...", l_id); #endif if (!inf->cmp[l_id]) { /* mark as completed */ inf->cmp[l_id] = 1; /* update percentage */ if (p->lvls == 0) p->pct = pct; else { new_p = (p->pct * p->lvls + pct) / (p->lvls + 1); p->pct = new_p; } p->lvls++; p->scr += scr; #ifdef DEBUG printf("marked as completed\n"); printf("added %4.2f: percentage changed from %4.2f to %4.2f\n", pct, old_p, p->pct); printf("score added: %i\n", scr); #endif } #ifdef DEBUG else printf("already finished\n"); #endif } lmarbles-1.0.7.orig/src/profile.h0000600000175000017500000000332207207202501015024 0ustar uweuwe/*************************************************************************** profile.h - description ------------------- begin : Sun Sep 17 2000 copyright : (C) 2000 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef PROFILE_H #define PROFILE_H #include "levels.h" #include "dynlist.h" typedef struct { char nm[32]; int num; int l_num; // levels per chapter // int c_num; char c_opn[MAX_CHPTRS]; char cmp[MAX_LVLS * MAX_CHPTRS]; } SInf; typedef struct { char nm[12]; int lvls; int scr; // total score gained float pct; // percentage of time needed to complete a level DLst sts; } Prf; void Prf_Ini(); void Prf_Trm(); int Prf_Ld(); void Prf_Sv(); void Prf_Crt(char *nm); void Prf_Del(void *p); SInf* Prf_RegLS(Prf *p, LSet *l_st); void Prf_CrtLst(); void Prf_DelLst(); void Prf_Srt(); void Prf_Upd(Prf *p, SInf *inf, int l_id, float pct, int scr); #endif lmarbles-1.0.7.orig/src/audio.c0000600000175000017500000001103207524101047014462 0ustar uweuwe/*************************************************************************** sound.c - description ------------------- begin : Sun Jul 29 2001 copyright : (C) 2001 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifdef SOUND #include #include "audio.h" /* ==================================================================== If audio device was properly initiated this flag is set. If this flag is not set; no action will be taken for audio. ==================================================================== */ int audio_ok = 0; /* ==================================================================== If this flag is not set no sound is played. ==================================================================== */ int sound_enabled = 1; /* ==================================================================== Initiate/close audio ==================================================================== */ int audio_open() { if ( Mix_OpenAudio( MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 256 ) < 0 ) { fprintf( stderr, "audio_open: can't open audio device: %s\n", SDL_GetError() ); audio_ok = 0; return 0; } audio_ok = 1; return 1; } void audio_close() { if ( !audio_ok ) return; Mix_CloseAudio(); } /* ==================================================================== Sound chunk ==================================================================== */ Sound_Chunk* sound_chunk_load( char *file_name ) { char path[512]; Mix_Chunk *chunk = 0; if ( !audio_ok ) { fprintf( stderr, "sound_chunk_load: cannot load WAV '%s' as audio device isn't initated properly\n", file_name ); return 0; } /* use SRCDIR/sounds as source directory */ sprintf( path, "%s/sounds/%s", SRC_DIR, file_name ); chunk = Mix_LoadWAV( path ); if ( chunk == 0 ) { fprintf( stderr, "chunk_load: couldn't load WAV '%s': %s\n", path, SDL_GetError() ); } return (Sound_Chunk*)chunk; } void sound_chunk_free( Sound_Chunk **chunk ) { if ( !audio_ok ) return; Mix_FreeChunk( (Mix_Chunk*)(*chunk) ); *chunk = 0; } /* ==================================================================== Sound stuff ==================================================================== */ /* ==================================================================== Enable/disable sound ==================================================================== */ void sound_enable( int enable ) { if ( !audio_ok ) return; sound_enabled = enable; if ( !enable ) Mix_Pause( -1 ); /* stop all sound channels */ } /* ==================================================================== Set general volume of sounds. 0 - 127 ==================================================================== */ void sound_volume( int level ) { if ( !audio_ok ) return; if ( level < 0 ) level = 0; if ( level > 127 ) level = 127; Mix_Volume( -1, level ); /* all sound channels */ } /* ==================================================================== Play a chunk. ==================================================================== */ void sound_play( Sound_Chunk *chunk ) { if ( !audio_ok ) return; if ( !sound_enabled ) return; /* use first free sound channel and play sound one time */ Mix_PlayChannel( -1, (Mix_Chunk*)chunk, 0 ); } /* ==================================================================== Music stuff ==================================================================== */ /* ==================================================================== Set general volume of sounds. 0 - 127 ==================================================================== */ void music_volume( int level ) { /* not implemented */ } #endif lmarbles-1.0.7.orig/src/audio.h0000600000175000017500000000424307523732270014504 0ustar uweuwe/*************************************************************************** sound.h - description ------------------- begin : Sun Jul 29 2001 copyright : (C) 2001 by Michael Speck email : kulkanie@gmx.net ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef __AUDIO_H #define __AUDIO_H #ifdef SOUND /* ==================================================================== Wrapper for the SDL_mixer functions. ==================================================================== */ /* ==================================================================== Initiate/close audio ==================================================================== */ int audio_open(); void audio_close(); /* ==================================================================== Sound chunk ==================================================================== */ typedef Mix_Chunk Sound_Chunk; Sound_Chunk* sound_chunk_load( char *file_name ); void sound_chunk_free( Sound_Chunk **chunk ); /* ==================================================================== Sound stuff ==================================================================== */ void sound_enable( int enable ); void sound_volume( int level /*0 - 127*/ ); void sound_play( Sound_Chunk *chunk ); /* ==================================================================== Music stuff ==================================================================== */ void music_volume( int level ); #endif #endif lmarbles-1.0.7.orig/src/dynlist.c0000600000175000017500000001411007206540570015054 0ustar uweuwe/*************************************************************************** dynlist.c - description ------------------- begin : Sat Apr 8 2000 copyright : (C) 2000 by email : ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dynlist.h" #include #include #include /* initialize list */ void DL_Ini(DLst *dlst) { dlst->cntr = 0; dlst->hd.p = dlst->tl.n = 0; dlst->hd.n = &dlst->tl; dlst->tl.p = &dlst->hd; dlst->hd.d = dlst->tl.d = 0; dlst->flgs = DL_NONE; dlst->cb = 0; } /* insert an item at index */ int DL_Ins(DLst *dlst, unsigned int index, void *item) { int i; DL_E *cur = &dlst->hd; DL_E *new_entry; if (index > dlst->cntr) { fprintf(stderr, "ERR: dl_insert: index %i out of range...\n", index); return 1; } if (item == 0) { fprintf(stderr, "ERR: dl_insert: item is NULL...\n"); return 1; } for (i = 0; i < index; i++) cur = cur->n; new_entry = (DL_E*)malloc(sizeof(DL_E)); new_entry->d = item; new_entry->n = cur->n; new_entry->p = cur; cur->n->p = new_entry; cur->n = new_entry; dlst->cntr++; return 0; } /* insert at the end of the list */ int DL_Add(DLst *dlst, void *item) { return DL_Ins(dlst, dlst->cntr, item); } /* delete an entry */ int DL_DelE(DLst *dlst, DL_E *e) { if (e == 0) { fprintf(stderr, "ERR: dl_delete: entry is NULL...\n"); return 1; } if (dlst->cntr == 0) { fprintf(stderr, "ERR: dl_delete: list is empty...\n"); return 1; } if (e == &dlst->hd || e == &dlst->tl) { fprintf(stderr, "ERR: dl_delete: trying to delete hd or tl..\n"); return 1; } e->p->n = e->n; e->n->p = e->p; dlst->cntr--; if (dlst->flgs & DL_AUTODEL) { if (dlst->flgs & DL_NOCB) free(e->d); else { if (dlst->cb == 0) { fprintf(stderr, "ERR: dl_delete: no destroy callback installed...\n"); free(e); return 1; } (dlst->cb)(e->d); } } free(e); return 0; } /* delete entry containing this item */ int DL_DelP(DLst *dlst, void *item) { int i; DL_E *cur = &dlst->hd; if (item == 0) { fprintf(stderr, "ERR: dl_delete: item is NULL...\n"); return 1; } if (dlst->cntr == 0) { fprintf(stderr, "ERR: dl_delete: list is empty...\n"); return 1; } for (i = 0; i <= dlst->cntr; i++) if (cur->n != &dlst->tl) { cur = cur->n; if (cur->d == item) break; } else { fprintf(stderr, "ERR: dl_delete: list does not contain item 0x%x...\n", (int)item); return 1; } cur->n->p = cur->p; cur->p->n = cur->n; dlst->cntr--; cur->n = cur->p = 0; if (dlst->flgs & DL_AUTODEL) { if (dlst->flgs & DL_NOCB) free(cur->d); else { if (dlst->cb == 0) { fprintf(stderr, "ERR: dl_delete: no destroy callback installed...\n"); free(cur); return 1; } (dlst->cb)(cur->d); } } free(cur); return 0; } /* delete item at index */ int DL_Del(DLst *dlst, unsigned int index) { int i; DL_E *cur = &dlst->hd; if (index >= dlst->cntr) { fprintf(stderr, "ERR: dl_delete: index %i out of range...\n", index); return 1; } if (dlst->cntr == 0) { fprintf(stderr, "ERR: dl_delete: list is empty...\n"); return 1; } for (i = 0; i <= index; i++) cur = cur->n; cur->n->p = cur->p; cur->p->n = cur->n; dlst->cntr--; cur->n = cur->p = 0; if (dlst->flgs & DL_AUTODEL) { if (dlst->flgs & DL_NOCB) free(cur->d); else { if (dlst->cb == 0) { fprintf(stderr, "ERR: dl_delete: no destroy callback installed...\n"); free(cur); return 1; } (dlst->cb)(cur->d); } } free(cur); return 0; } /* get the item with index 'index' */ void* DL_Get(DLst *dlst, int index) { unsigned int i; DL_E *cur = &dlst->hd; if (index >= dlst->cntr) { fprintf(stderr, "ERR: dl_get: index %i out of range...\n", index); return 0; } for (i = 0; i <= (unsigned)index; i++) cur = cur->n; return cur->d; } /* get the current entry from a pointer */ DL_E *DL_GetE(DLst *dlst, void *item) { int i; DL_E *cur = &dlst->hd; if (item == 0) { fprintf(stderr, "ERR: DL_GetE: item is NULL...\n"); return 0; } if (dlst->cntr == 0) { fprintf(stderr, "ERR: DL_GetE: list is empty...\n"); return 0; } for (i = 0; i <= dlst->cntr; i++) if (cur->n != &dlst->tl) { cur = cur->n; if (cur->d == item) break; } else { fprintf(stderr, "ERR: DL_GetE: list does not contain item 0x%x...\n", (int)item); return 0; } return cur; } /* clear all entries of list */ void DL_Clr(DLst *dlst) { DL_E *cur = dlst->hd.n; DL_E *n; while (cur != &dlst->tl) { n = cur->n; DL_DelE(dlst, cur); cur = n; } } lmarbles-1.0.7.orig/src/dynlist.h0000600000175000017500000000350707206540570015071 0ustar uweuwe/*************************************************************************** dynlist.h - description ------------------- begin : Sat Apr 8 2000 copyright : (C) 2000 by email : ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DYNLIST_H #define DYNLIST_H #ifdef __cplusplus extern "C" { #endif //dl flags #define DL_NONE (0) #define DL_AUTODEL (1L<<0) #define DL_NOCB (1L<<1) typedef struct _DL_E { struct _DL_E *n; struct _DL_E *p; void *d; } DL_E; typedef struct { unsigned int flgs; unsigned int cntr; //don't edit DL_E hd; //don't edit DL_E tl; //don't edit void (*cb)(void*); } DLst; void DL_Ini(DLst *dlst); int DL_Ins(DLst *dlst, unsigned int i, void *item); //insert item int DL_Add(DLst *dlst, void *item); //insert at the end int DL_DelE(DLst *dlst, DL_E *e); int DL_DelP(DLst *dlst, void *item); int DL_Del(DLst *dlst, unsigned int i); void* DL_Get(DLst *dlst, int i); DL_E *DL_GetE(DLst *dlst, void *item); void DL_Clr(DLst *dlst); //clear full list #ifdef __cplusplus }; #endif #endif lmarbles-1.0.7.orig/NEWS0000600000175000017500000000000007426016447013130 0ustar uweuwelmarbles-1.0.7.orig/TODO0000600000175000017500000000002710061602205013110 0ustar uweuwemr.bones's suggestions lmarbles-1.0.7.orig/LMarbles.prj0000600000175000017500000000445307570172321014661 0ustar uweuwe# Anjuta Version 0.1.8 Compatibility Level: 1 An Atomix-like puzzle game. props.file.type=project anjuta.version=0.1.8 anjuta.compatibility.level=1 project.name=LMarbles project.type=GENERIC project.target.type=EXECUTABLE project.version=1.0 project.author=Michael Speck project.source.target=lmarbles project.has.gettext=0 project.programming.language=C project.menu.entry=Marbles Version 0.1 project.menu.group=Applications project.menu.comment=Marbles Version 0.1 project.menu.icon=marbles_icon.(null) project.menu.need.terminal=0 project.configure.options= anjuta.program.arguments= project.config.disable.overwriting=0 0 0 0 0 0 0 0 0 project.config.extra.modules.before= project.config.extra.modules.after= module.incude.name=include module.incude.type= module.incude.expanded=0 module.incude.files= module.source.name=src module.source.type= module.source.expanded=0 module.source.files=\ dynlist.c dynlist.h sndsrv.c sndsrv.h menu.h menu.c sdl.c \ sdl.h cfg.h cfg.c levels.h levels.c game.h game.c timer.h timer.c \ profile.h profile.c file.h file.c \ main.c module.pixmap.name=pixmaps module.pixmap.type= module.pixmap.expanded=0 module.pixmap.files= module.data.name=data module.data.type= module.data.expanded=0 module.data.files= module.help.name=help module.help.type= module.help.expanded=0 module.help.files= module.doc.name=doc module.doc.type= module.doc.expanded=0 module.doc.files= module.po.expanded=0 module.po.files= compiler.options.supports= compiler.options.include.paths= compiler.options.library.paths= compiler.options.libraries= compiler.options.libraries.selected= compiler.options.defines= compiler.options.warning.buttons=0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 compiler.options.optimize.buttons=0 1 0 0 compiler.options.other.buttons=1 0 compiler.options.other.c.flags= compiler.options.other.l.flags= compiler.options.other.l.libs= project.source.paths= lmarbles-1.0.7.orig/aclocal.m40000600000175000017500000002414310063255456014303 0ustar uweuwednl aclocal.m4 generated automatically by aclocal 1.4-p4 dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. dnl SDL Stuff # Configure paths for SDL # Sam Lantinga 9/21/99 # stolen from Manish Singh # stolen back from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS dnl AC_DEFUN(AM_PATH_SDL, [dnl dnl Get the cflags and libraries from the sdl-config script dnl AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], sdl_prefix="$withval", sdl_prefix="") AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], sdl_exec_prefix="$withval", sdl_exec_prefix="") AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], , enable_sdltest=yes) if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi AC_PATH_PROG(SDL_CONFIG, sdl-config, no) min_sdl_version=ifelse([$1], ,0.11.0,$1) AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" dnl dnl Now check if the installed SDL is sufficiently new. (Also sanity dnl checks the results of sdl-config to some extent dnl rm -f conf.sdltest AC_TRY_RUN([ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { return 1; } } ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" AC_TRY_LINK([ #include #include "SDL.h" ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) rm -f conf.sdltest ]) dnl dnl Search for specific programs dnl dnl strip reduces executable size by getting rid of extreneous symbols AC_DEFUN(AC_PROG_STRIP,[ AC_CHECK_PROG(STRIP, strip, strip) test -z "${STRIP}" && AC_MSG_ERROR(strip was not found on this system) ]) dnl Inno Setup 2 iscc is the win32 installer script compiler AC_DEFUN(AC_PROG_ISCC,[ AC_CHECK_PROG(ISCC, iscc, iscc) test -z "${ISCC}" && AC_MSG_ERROR(Inno Setup 2 iscc was not found on this system) ]) # Like AC_CONFIG_HEADER, but automatically create stamp file. AC_DEFUN(AM_CONFIG_HEADER, [AC_PREREQ([2.12]) AC_CONFIG_HEADER([$1]) dnl When config.status generates a header, we must update the stamp-h file. dnl This file resides in the same directory as the config header dnl that is generated. We must strip everything past the first ":", dnl and everything past the last "/". AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, <>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, <>; do case " <<$>>CONFIG_HEADERS " in *" <<$>>am_file "*<<)>> echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx ;; esac am_indx=`expr "<<$>>am_indx" + 1` done<<>>dnl>>) changequote([,]))]) # Do all the work for Automake. This macro actually does too much -- # some checks are only needed if your package does certain things. # But this isn't really a big deal. # serial 1 dnl Usage: dnl AM_INIT_AUTOMAKE(package,version, [no-define]) AC_DEFUN(AM_INIT_AUTOMAKE, [AC_REQUIRE([AC_PROG_INSTALL]) PACKAGE=[$1] AC_SUBST(PACKAGE) VERSION=[$2] AC_SUBST(VERSION) dnl test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi ifelse([$3],, AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) AC_REQUIRE([AM_SANITY_CHECK]) AC_REQUIRE([AC_ARG_PROGRAM]) dnl FIXME This is truly gross. missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) AC_REQUIRE([AC_PROG_MAKE_SET])]) # # Check to make sure that the build environment is sane. # AC_DEFUN(AM_SANITY_CHECK, [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "[$]*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "[$]*" != "X $srcdir/configure conftestfile" \ && test "[$]*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "[$]2" = conftestfile ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi rm -f conftest* AC_MSG_RESULT(yes)]) dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) dnl The program must properly implement --version. AC_DEFUN(AM_MISSING_PROG, [AC_MSG_CHECKING(for working $2) # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if ($2 --version) < /dev/null > /dev/null 2>&1; then $1=$2 AC_MSG_RESULT(found) else $1="$3/missing $2" AC_MSG_RESULT(missing) fi AC_SUBST($1)]) lmarbles-1.0.7.orig/README0000600000175000017500000000523410063254275013321 0ustar uweuwe LMarbles an Atomix-like game by Michael Speck ******************** I. Requirements II. Installation III. Manual IV. Feedback ******************** ******************** I. Requirements ******************** LMarbles runs in X and requires SDL and SDL_mixer. (both any version) ******************** II. Installation ******************** Enter your favorite shell and type in the following stuff (in the directory you extracted the LBreakout source) > ./configure [--disable-sound] [--disable-install] [--enable-ascii] [--localstatedir=HIDIR] --disable-sound: no sound --disable-install: no installation; play from source directory --enable-asci: for big-endian machines --localstatedir: install global highscores to this directory REPLACES --with-profile-path TO COMPLY WITH AUTOCONF; THE DEFAULT LOCATION NOW DEPENDS ON YOUR DISTRIBUTION: PREVIOUSLY IT WAS /var/lib/games. USE --localstatedir=/var/lib/games FOR EXISTING HIGHSCORES. > make > su (become root) > make install (if install wasn't disabled) > exit (become user again) > lmarbles Building on Win32: 1) Install the following win32 tools: MinGW MSYS Inno Setup 2 2) Install the following win32 libaries: SDL (you might need to edit sdl-config) SDL_mixer 3) From the build root, create win32dll directory and copy the following win32 dlls to it: SDL.dll SDL_mixer.dll msvcrt.dll (freely available from Microsoft) 4) configure will need to find SDL.dll. You can either register SDL.dll or simply copy it to the root build directory. 5) Setup environment. To get things to compile, I setup the following environment variables: SDL_CONFIG - fully qualified path to sdl-config CFLAGS - tell build process where to find include files LDFLAGS - tell build process where to find libraries PATH - ensure that Inno Setup 2 iscc is in the PATH 6) Do a full build by issueing the following commands: configure --disable-install make 7) Create a win32 installer by issueing the following command: make win32_installer You'll find lmarbles--win32.exe in the build directory. It is a standalone installer for marbles. ******************** III. Manual ******************** For more information about the game see src/manual/manual.html. ******************** IV. Feedback ******************** Please visit http://lgames.sf.net if you have any suggestions or problems. lmarbles-1.0.7.orig/configure0000700000175000017500000021210610063256244014342 0ustar uweuwe#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Defaults: ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: ac_help="$ac_help --with-sdl-prefix=PFX Prefix where SDL is installed (optional)" ac_help="$ac_help --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)" ac_help="$ac_help --disable-sdltest Do not try to compile and run a test SDL program" ac_help="$ac_help --with-sdl-prefix=PFX Prefix where SDL is installed (optional)" ac_help="$ac_help --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)" ac_help="$ac_help --disable-sdltest Do not try to compile and run a test SDL program" ac_help="$ac_help --disable-sound Disables sound" ac_help="$ac_help --enable-ascii Enables 'save as ascii' option (for big-endian)" ac_help="$ac_help --disable-install No installation. Played from the source directory." # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. build=NONE cache_file=./config.cache exec_prefix=NONE host=NONE no_create= nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= target=NONE verbose= x_includes=NONE x_libraries=NONE bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' # Initialize some other variables. subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. ac_max_here_lines=12 ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi case "$ac_option" in -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) ac_optarg= ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case "$ac_option" in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir="$ac_optarg" ;; -build | --build | --buil | --bui | --bu) ac_prev=build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build="$ac_optarg" ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir="$ac_optarg" ;; -disable-* | --disable-*) ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "enable_${ac_feature}='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix="$ac_optarg" ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he) # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat << EOF Usage: configure [options] [host] Options: [defaults in brackets after descriptions] Configuration: --cache-file=FILE cache test results in FILE --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [same as prefix] --bindir=DIR user executables in DIR [EPREFIX/bin] --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] --libexecdir=DIR program executables in DIR [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data in DIR [PREFIX/share] --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data in DIR [PREFIX/com] --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] --libdir=DIR object code libraries in DIR [EPREFIX/lib] --includedir=DIR C header files in DIR [PREFIX/include] --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR EOF if test -n "$ac_help"; then echo "--enable and --with options recognized:$ac_help" fi exit 0 ;; -host | --host | --hos | --ho) ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) host="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir="$ac_optarg" ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix="$ac_optarg" ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix="$ac_optarg" ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix="$ac_optarg" ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name="$ac_optarg" ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir="$ac_optarg" ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site="$ac_optarg" ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir="$ac_optarg" ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers) echo "configure generated by autoconf version 2.13" exit 0 ;; -with-* | --with-*) ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` eval "with_${ac_package}=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes="$ac_optarg" ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries="$ac_optarg" ;; -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; *) if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then echo "configure: warning: $ac_option: invalid host type" 1>&2 fi if test "x$nonopt" != xNONE; then { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } fi nonopt="$ac_option" ;; esac done if test -n "$ac_prev"; then { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... messages and results # 5 compiler messages saved in config.log if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>./config.log echo "\ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. " 1>&5 # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell metacharacters. ac_configure_args= for ac_arg do case "$ac_arg" in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ac_configure_args="$ac_configure_args '$ac_arg'" ;; *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally # because not all systems understand e.g. LANG=C (notably SCO). # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! # Non-C LC_CTYPE values break the ctype check. if test "${LANG+set}" = set; then LANG=C; export LANG; fi if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo > confdefs.h # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. ac_unique_file=Makefile.am # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_prog=$0 ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then echo "loading site script $ac_site_file" . "$ac_site_file" fi done if test -r "$cache_file"; then echo "loading cache $cache_file" . $cache_file else echo "creating cache $cache_file" > $cache_file fi ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross ac_exeext= ac_objext=o if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break fi done if test -z "$ac_aux_dir"; then { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 echo "configure:577: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" for ac_dir in $PATH; do # Account for people who put trailing slashes in PATH elements. case "$ac_dir/" in /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do if test -f $ac_dir/$ac_prog; then if test $ac_prog = install && grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : else ac_cv_path_install="$ac_dir/$ac_prog -c" break 2 fi fi done ;; esac done IFS="$ac_save_IFS" fi if test "${ac_cv_path_install+set}" = set; then INSTALL="$ac_cv_path_install" else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL="$ac_install_sh" fi fi echo "$ac_t""$INSTALL" 1>&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 echo "configure:630: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "$*" != "X $srcdir/configure conftestfile" \ && test "$*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { echo "configure: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" 1>&2; exit 1; } fi test "$2" = conftestfile ) then # Ok. : else { echo "configure: error: newly created file is older than distributed files! Check your system clock" 1>&2; exit 1; } fi rm -f conftest* echo "$ac_t""yes" 1>&6 if test "$program_transform_name" = s,x,x,; then program_transform_name= else # Double any \ or $. echo might interpret backslashes. cat <<\EOF_SED > conftestsed s,\\,\\\\,g; s,\$,$$,g EOF_SED program_transform_name="`echo $program_transform_name|sed -f conftestsed`" rm -f conftestsed fi test "$program_prefix" != NONE && program_transform_name="s,^,${program_prefix},; $program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" # sed with no file args requires a program. test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 echo "configure:687: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftestmake <<\EOF all: @echo 'ac_maketemp="${MAKE}"' EOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftestmake fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$ac_t""yes" 1>&6 SET_MAKE= else echo "$ac_t""no" 1>&6 SET_MAKE="MAKE=${MAKE-make}" fi PACKAGE=lmarbles VERSION=1.0.7 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } fi cat >> confdefs.h <> confdefs.h <&6 echo "configure:733: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (aclocal --version) < /dev/null > /dev/null 2>&1; then ACLOCAL=aclocal echo "$ac_t""found" 1>&6 else ACLOCAL="$missing_dir/missing aclocal" echo "$ac_t""missing" 1>&6 fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 echo "configure:746: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoconf --version) < /dev/null > /dev/null 2>&1; then AUTOCONF=autoconf echo "$ac_t""found" 1>&6 else AUTOCONF="$missing_dir/missing autoconf" echo "$ac_t""missing" 1>&6 fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 echo "configure:759: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (automake --version) < /dev/null > /dev/null 2>&1; then AUTOMAKE=automake echo "$ac_t""found" 1>&6 else AUTOMAKE="$missing_dir/missing automake" echo "$ac_t""missing" 1>&6 fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 echo "configure:772: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoheader --version) < /dev/null > /dev/null 2>&1; then AUTOHEADER=autoheader echo "$ac_t""found" 1>&6 else AUTOHEADER="$missing_dir/missing autoheader" echo "$ac_t""missing" 1>&6 fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 echo "configure:785: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (makeinfo --version) < /dev/null > /dev/null 2>&1; then MAKEINFO=makeinfo echo "$ac_t""found" 1>&6 else MAKEINFO="$missing_dir/missing makeinfo" echo "$ac_t""missing" 1>&6 fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:802: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="gcc" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:832: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" break fi done IFS="$ac_save_ifs" if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$ac_dir/$ac_word" "$@" shift ac_cv_prog_CC="$@" fi fi fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then case "`uname -s`" in *win32* | *WIN32*) # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:883: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="cl" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi ;; esac fi test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:915: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF #line 926 "configure" #include "confdefs.h" main(){return(0);} EOF if { (eval echo configure:931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ac_cv_prog_cc_cross=no else ac_cv_prog_cc_cross=yes fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:957: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 echo "configure:962: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no fi fi echo "$ac_t""$ac_cv_prog_gcc" 1>&6 if test $ac_cv_prog_gcc = yes; then GCC=yes else GCC= fi ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 echo "configure:990: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then ac_cv_prog_cc_g=yes else ac_cv_prog_cc_g=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 if test "$ac_test_CFLAGS" = set; then CFLAGS="$ac_save_CFLAGS" elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1024: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_RANLIB="ranlib" break fi done IFS="$ac_save_ifs" test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" fi fi RANLIB="$ac_cv_prog_RANLIB" if test -n "$RANLIB"; then echo "$ac_t""$RANLIB" 1>&6 else echo "$ac_t""no" 1>&6 fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 echo "configure:1052: checking for Cygwin environment" >&5 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_cygwin=no fi rm -f conftest* rm -f conftest* fi echo "$ac_t""$ac_cv_cygwin" 1>&6 CYGWIN= test "$ac_cv_cygwin" = yes && CYGWIN=yes echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 echo "configure:1085: checking for mingw32 environment" >&5 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_mingw32=no fi rm -f conftest* rm -f conftest* fi echo "$ac_t""$ac_cv_mingw32" 1>&6 MINGW32= test "$ac_cv_mingw32" = yes && MINGW32=yes echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 echo "configure:1116: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$CYGWIN" = yes || test "$MINGW32" = yes; then ac_cv_exeext=.exe else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= if { (eval echo configure:1126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.$ac_ext | *.c | *.o | *.obj) ;; *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; esac done else { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } fi rm -f conftest* test x"${ac_cv_exeext}" = x && ac_cv_exeext=no fi fi EXEEXT="" test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} echo "$ac_t""${ac_cv_exeext}" 1>&6 ac_exeext=$EXEEXT # Make sure we can run config.sub. if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 echo "configure:1153: checking host system type" >&5 host_alias=$host case "$host_alias" in NONE) case $nonopt in NONE) if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } fi ;; *) host_alias=$nonopt ;; esac ;; esac host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 echo "configure:1175: checking for main in -lm" >&5 ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_lib=HAVE_LIB`echo m | sed -e 's/[^a-zA-Z0-9_]/_/g' \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` cat >> confdefs.h <&6 { echo "configure: error: lib math is needed" 1>&2; exit 1; } fi CFLAGS="$CFLAGS -Wall" # Check whether --with-sdl-prefix or --without-sdl-prefix was given. if test "${with_sdl_prefix+set}" = set; then withval="$with_sdl_prefix" sdl_prefix="$withval" else sdl_prefix="" fi # Check whether --with-sdl-exec-prefix or --without-sdl-exec-prefix was given. if test "${with_sdl_exec_prefix+set}" = set; then withval="$with_sdl_exec_prefix" sdl_exec_prefix="$withval" else sdl_exec_prefix="" fi # Check whether --enable-sdltest or --disable-sdltest was given. if test "${enable_sdltest+set}" = set; then enableval="$enable_sdltest" : else enable_sdltest=yes fi if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi # Extract the first word of "sdl-config", so it can be a program name with args. set dummy sdl-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1262: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_SDL_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else case "$SDL_CONFIG" in /*) ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. ;; ?:/*) ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a dos path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_path_SDL_CONFIG="$ac_dir/$ac_word" break fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" ;; esac fi SDL_CONFIG="$ac_cv_path_SDL_CONFIG" if test -n "$SDL_CONFIG"; then echo "$ac_t""$SDL_CONFIG" 1>&6 else echo "$ac_t""no" 1>&6 fi min_sdl_version=1.0.0 echo $ac_n "checking for SDL - version >= $min_sdl_version""... $ac_c" 1>&6 echo "configure:1297: checking for SDL - version >= $min_sdl_version" >&5 no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" rm -f conf.sdltest if test "$cross_compiling" = yes; then echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { return 1; } } EOF if { (eval echo configure:1376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* no_sdl=yes fi rm -fr conftest* fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then echo "$ac_t""yes" 1>&6 : else echo "$ac_t""no" 1>&6 if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" cat > conftest.$ac_ext < #include "SDL.h" int main() { return 0; ; return 0; } EOF if { (eval echo configure:1420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" fi rm -f conftest* CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" { echo "configure: error: lib SDL is needed" 1>&2; exit 1; } fi rm -f conf.sdltest CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" # Check whether --with-sdl-prefix or --without-sdl-prefix was given. if test "${with_sdl_prefix+set}" = set; then withval="$with_sdl_prefix" sdl_prefix="$withval" else sdl_prefix="" fi # Check whether --with-sdl-exec-prefix or --without-sdl-exec-prefix was given. if test "${with_sdl_exec_prefix+set}" = set; then withval="$with_sdl_exec_prefix" sdl_exec_prefix="$withval" else sdl_exec_prefix="" fi # Check whether --enable-sdltest or --disable-sdltest was given. if test "${enable_sdltest+set}" = set; then enableval="$enable_sdltest" : else enable_sdltest=yes fi if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi # Extract the first word of "sdl-config", so it can be a program name with args. set dummy sdl-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1496: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_SDL_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else case "$SDL_CONFIG" in /*) ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. ;; ?:/*) ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a dos path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_path_SDL_CONFIG="$ac_dir/$ac_word" break fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" ;; esac fi SDL_CONFIG="$ac_cv_path_SDL_CONFIG" if test -n "$SDL_CONFIG"; then echo "$ac_t""$SDL_CONFIG" 1>&6 else echo "$ac_t""no" 1>&6 fi min_sdl_version=1.1.5 echo $ac_n "checking for SDL - version >= $min_sdl_version""... $ac_c" 1>&6 echo "configure:1531: checking for SDL - version >= $min_sdl_version" >&5 no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" rm -f conf.sdltest if test "$cross_compiling" = yes; then echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { return 1; } } EOF if { (eval echo configure:1610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* no_sdl=yes fi rm -fr conftest* fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then echo "$ac_t""yes" 1>&6 CFLAGS="$CFLAGS -DSDL_1_1_5" else echo "$ac_t""no" 1>&6 if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" cat > conftest.$ac_ext < #include "SDL.h" int main() { return 0; ; return 0; } EOF if { (eval echo configure:1654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" fi rm -f conftest* CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" : fi rm -f conf.sdltest sound_flag="-DSOUND" mixer_flag="-lSDL_mixer" # Check whether --enable-sound or --disable-sound was given. if test "${enable_sound+set}" = set; then enableval="$enable_sound" sound_flag=""; mixer_flag="" fi echo $ac_n "checking for main in -lSDL_mixer""... $ac_c" 1>&6 echo "configure:1698: checking for main in -lSDL_mixer" >&5 ac_lib_var=`echo SDL_mixer'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lSDL_mixer $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo "$ac_t"""SDL_Mixer found"" 1>&6 else echo "$ac_t""no" 1>&6 echo "$ac_t"""SDL_Mixer NOT found: Audio disabled"" 1>&6; sound_flag=""; mixer_flag="" fi ascii_flag="" # Check whether --enable-ascii or --disable-ascii was given. if test "${enable_ascii+set}" = set; then enableval="$enable_ascii" ascii_flag="-DASCII" fi inst_dir="$datadir/lmarbles" prf_dir=$localstatedir # Check whether --enable-install or --disable-install was given. if test "${enable_install+set}" = set; then enableval="$enable_install" inst_dir="." prf_dir="." fi inst_flag="-DSRC_DIR=\\\"$inst_dir\\\"" prf_flag="-DPRF_DIR=\\\"$prf_dir\\\"" case "$host" in *-mingw32) win32="yes" win32_inst_script="`pwd -W`/installer.iss" arch_flag="-march=i586" win32_deps="lmarblesres.o" ;; *) win32="no" win32_inst_script="" arch_flag="" win32_deps="" ;; esac if test "x$win32" = xyes; then for ac_prog in mawk gawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1787: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_AWK="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi AWK="$ac_cv_prog_AWK" if test -n "$AWK"; then echo "$ac_t""$AWK" 1>&6 else echo "$ac_t""no" 1>&6 fi test -n "$AWK" && break done # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1820: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_STRIP="strip" break fi done IFS="$ac_save_ifs" fi fi STRIP="$ac_cv_prog_STRIP" if test -n "$STRIP"; then echo "$ac_t""$STRIP" 1>&6 else echo "$ac_t""no" 1>&6 fi test -z "${STRIP}" && { echo "configure: error: strip was not found on this system" 1>&2; exit 1; } # Extract the first word of "iscc", so it can be a program name with args. set dummy iscc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:1852: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_ISCC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$ISCC"; then ac_cv_prog_ISCC="$ISCC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_ISCC="iscc" break fi done IFS="$ac_save_ifs" fi fi ISCC="$ac_cv_prog_ISCC" if test -n "$ISCC"; then echo "$ac_t""$ISCC" 1>&6 else echo "$ac_t""no" 1>&6 fi test -z "${ISCC}" && { echo "configure: error: Inno Setup 2 iscc was not found on this system" 1>&2; exit 1; } fi appname="LMarbles" trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Any assignment to VPATH causes Sun make to only execute # the first set of double-colon rules, so remove it if not needed. # If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 DEFS=-DHAVE_CONFIG_H # Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} echo creating $CONFIG_STATUS rm -f $CONFIG_STATUS cat > $CONFIG_STATUS </dev/null | sed 1q`: # # $0 $ac_configure_args # # Compiler output produced by configure, useful for debugging # configure, is in ./config.log if it exists. ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" for ac_option do case "\$ac_option" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) echo "$CONFIG_STATUS generated by autoconf version 2.13" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; *) echo "\$ac_cs_usage"; exit 1 ;; esac done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" trap 'rm -fr `echo "Makefile src/Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF $ac_vpsub $extrasub s%@SHELL@%$SHELL%g s%@CFLAGS@%$CFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g s%@FFLAGS@%$FFLAGS%g s%@DEFS@%$DEFS%g s%@LDFLAGS@%$LDFLAGS%g s%@LIBS@%$LIBS%g s%@exec_prefix@%$exec_prefix%g s%@prefix@%$prefix%g s%@program_transform_name@%$program_transform_name%g s%@bindir@%$bindir%g s%@sbindir@%$sbindir%g s%@libexecdir@%$libexecdir%g s%@datadir@%$datadir%g s%@sysconfdir@%$sysconfdir%g s%@sharedstatedir@%$sharedstatedir%g s%@localstatedir@%$localstatedir%g s%@libdir@%$libdir%g s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g s%@INSTALL_DATA@%$INSTALL_DATA%g s%@PACKAGE@%$PACKAGE%g s%@VERSION@%$VERSION%g s%@ACLOCAL@%$ACLOCAL%g s%@AUTOCONF@%$AUTOCONF%g s%@AUTOMAKE@%$AUTOMAKE%g s%@AUTOHEADER@%$AUTOHEADER%g s%@MAKEINFO@%$MAKEINFO%g s%@SET_MAKE@%$SET_MAKE%g s%@CC@%$CC%g s%@RANLIB@%$RANLIB%g s%@EXEEXT@%$EXEEXT%g s%@host@%$host%g s%@host_alias@%$host_alias%g s%@host_cpu@%$host_cpu%g s%@host_vendor@%$host_vendor%g s%@host_os@%$host_os%g s%@SDL_CONFIG@%$SDL_CONFIG%g s%@SDL_CFLAGS@%$SDL_CFLAGS%g s%@SDL_LIBS@%$SDL_LIBS%g s%@sound_flag@%$sound_flag%g s%@mixer_flag@%$mixer_flag%g s%@ascii_flag@%$ascii_flag%g s%@inst_flag@%$inst_flag%g s%@prf_flag@%$prf_flag%g s%@inst_dir@%$inst_dir%g s%@prf_dir@%$prf_dir%g s%@win32_deps@%$win32_deps%g s%@arch_flag@%$arch_flag%g s%@AWK@%$AWK%g s%@STRIP@%$STRIP%g s%@ISCC@%$ISCC%g s%@win32_inst_script@%$win32_inst_script%g s%@appname@%$appname%g CEOF EOF cat >> $CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. ac_file=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_cmds # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file else sed "${ac_end}q" conftest.subs > conftest.s$ac_file fi if test ! -s conftest.s$ac_file; then ac_more_lines=false rm -f conftest.s$ac_file else if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f conftest.s$ac_file" else ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" fi ac_file=`expr $ac_file + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_cmds` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` else ac_dir_suffix= ac_dots= fi case "$ac_given_srcdir" in .) srcdir=. if test -z "$ac_dots"; then top_srcdir=. else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" top_srcdir="$ac_dots$ac_given_srcdir" ;; esac case "$ac_given_INSTALL" in [/$]*) INSTALL="$ac_given_INSTALL" ;; *) INSTALL="$ac_dots$ac_given_INSTALL" ;; esac echo creating "$ac_file" rm -f "$ac_file" configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." case "$ac_file" in *Makefile*) ac_comsub="1i\\ # $configure_input" ;; *) ac_comsub= ;; esac ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` sed -e "$ac_comsub s%@configure_input@%$configure_input%g s%@srcdir@%$srcdir%g s%@top_srcdir@%$top_srcdir%g s%@INSTALL@%$INSTALL%g " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file fi; done rm -f conftest.s* # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where # NAME is the cpp macro being defined and VALUE is the value it is being given. # # ac_d sets the value in "#define NAME VALUE" lines. ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' ac_dC='\3' ac_dD='%g' # ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='\([ ]\)%\1#\2define\3' ac_uC=' ' ac_uD='\4%g' # ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_eB='$%\1#\2define\3' ac_eC=' ' ac_eD='%g' if test "${CONFIG_HEADERS+set}" != set; then EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF fi for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac echo creating $ac_file rm -f conftest.frag conftest.in conftest.out ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` cat $ac_file_inputs > conftest.in EOF # Transform confdefs.h into a sed script conftest.vals that substitutes # the proper values into config.h.in to produce config.h. And first: # Protect against being on the right side of a sed subst in config.status. # Protect against being in an unquoted here document in config.status. rm -f conftest.vals cat > conftest.hdr <<\EOF s/[\\&%]/\\&/g s%[\\$`]%\\&%g s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp s%ac_d%ac_u%gp s%ac_u%ac_e%gp EOF sed -n -f conftest.hdr confdefs.h > conftest.vals rm -f conftest.hdr # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. cat >> conftest.vals <<\EOF s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% EOF # Break up conftest.vals because some shells have a limit on # the size of here documents, and old seds have small limits too. rm -f conftest.tail while : do ac_lines=`grep -c . conftest.vals` # grep -c gives empty output for an empty file on some AIX systems. if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi # Write a limited-size here document to conftest.frag. echo ' cat > conftest.frag <> $CONFIG_STATUS sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS echo 'CEOF sed -f conftest.frag conftest.in > conftest.out rm -f conftest.in mv conftest.out conftest.in ' >> $CONFIG_STATUS sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail rm -f conftest.vals mv conftest.tail conftest.vals done rm -f conftest.vals cat >> $CONFIG_STATUS <<\EOF rm -f conftest.frag conftest.h echo "/* $ac_file. Generated automatically by configure. */" > conftest.h cat conftest.in >> conftest.h rm -f conftest.in if cmp -s $ac_file conftest.h 2>/dev/null; then echo "$ac_file is unchanged" rm -f conftest.h else # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" fi rm -f $ac_file mv conftest.h $ac_file fi fi; done EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h exit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 lmarbles-1.0.7.orig/configure.in0000600000175000017500000000406610063253556014755 0ustar uweuwednl Process this file with autoconf to produce a configure script. AC_INIT(Makefile.am) AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE(lmarbles,1.0.7) dnl Checks for programs. AC_PROG_CC AC_PROG_RANLIB AC_EXEEXT AC_CANONICAL_HOST dnl check for libraries AC_CHECK_LIB(m, main,, AC_MSG_ERROR(lib math is needed)) CFLAGS="$CFLAGS -Wall" dnl check SDL version AM_PATH_SDL(1.0.0,, AC_MSG_ERROR(lib SDL is needed)) CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" AM_PATH_SDL(1.1.5, CFLAGS="$CFLAGS -DSDL_1_1_5",) dnl check sound sound_flag="-DSOUND" mixer_flag="-lSDL_mixer" AC_ARG_ENABLE( sound, [ --disable-sound Disables sound], sound_flag=""; mixer_flag="") dnl check if SDL_mixer's installed dnl if not: clear sound_flag and mixer_flag AC_CHECK_LIB(SDL_mixer, main, AC_MSG_RESULT("SDL_Mixer found"), AC_MSG_RESULT("SDL_Mixer NOT found: Audio disabled"); sound_flag=""; mixer_flag="") AC_SUBST(sound_flag) AC_SUBST(mixer_flag) dnl check ascii-flag ascii_flag="" AC_ARG_ENABLE( ascii, [ --enable-ascii Enables 'save as ascii' option (for big-endian)], ascii_flag="-DASCII") AC_SUBST(ascii_flag) dnl installation & prefix path inst_dir="$datadir/lmarbles" prf_dir=$localstatedir dnl check if installation was disabled AC_ARG_ENABLE( install, [ --disable-install No installation. Played from the source directory.], inst_dir="." prf_dir=".") inst_flag="-DSRC_DIR=\\\"$inst_dir\\\"" prf_flag="-DPRF_DIR=\\\"$prf_dir\\\"" AC_SUBST(inst_flag) AC_SUBST(prf_flag) AC_SUBST(inst_dir) AC_SUBST(prf_dir) case "$host" in *-mingw32) win32="yes" win32_inst_script="`pwd -W`/installer.iss" arch_flag="-march=i586" win32_deps="lmarblesres.o" ;; *) win32="no" win32_inst_script="" arch_flag="" win32_deps="" ;; esac AC_SUBST(win32_deps) AC_SUBST(arch_flag) if test "x$win32" = xyes; then AC_PROG_AWK AC_PROG_STRIP AC_PROG_ISCC AC_SUBST(win32_inst_script) fi appname="LMarbles" AC_SUBST(appname) AC_OUTPUT(Makefile src/Makefile) lmarbles-1.0.7.orig/config.guess0000700000175000017500000011315007523016263014754 0ustar uweuwe#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. timestamp='2001-09-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Written by Per Bothner . # Please send patches to . # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi dummy=dummy-$$ trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int dummy(){}" > $dummy.c ; for c in cc gcc c89 ; do ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; if test $? = 0 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; rm -f $dummy.c $dummy.o $dummy.rel ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # Netbsd (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # Determine the machine/vendor (is the vendor relevant). case "${UNAME_MACHINE}" in amiga) machine=m68k-unknown ;; arm32) machine=arm-unknown ;; atari*) machine=m68k-atari ;; sun3*) machine=m68k-sun ;; mac68k) machine=m68k-apple ;; macppc) machine=powerpc-apple ;; hp3[0-9][05]) machine=m68k-hp ;; ibmrt|romp-ibm) machine=romp-ibm ;; *) machine=${UNAME_MACHINE}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE}" in i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. cat <$dummy.s .data \$Lformat: .byte 37,100,45,37,120,10,0 # "%d-%x\n" .text .globl main .align 4 .ent main main: .frame \$30,16,\$26,0 ldgp \$29,0(\$27) .prologue 1 .long 0x47e03d80 # implver \$0 lda \$2,-1 .long 0x47e20c21 # amask \$2,\$1 lda \$16,\$Lformat mov \$0,\$17 not \$1,\$18 jsr \$26,printf ldgp \$29,0(\$26) mov 0,\$16 jsr \$26,exit .end main EOF eval $set_cc_for_build $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then case `./$dummy` in 0-0) UNAME_MACHINE="alpha" ;; 1-0) UNAME_MACHINE="alphaev5" ;; 1-1) UNAME_MACHINE="alphaev56" ;; 1-101) UNAME_MACHINE="alphapca56" ;; 2-303) UNAME_MACHINE="alphaev6" ;; 2-307) UNAME_MACHINE="alphaev67" ;; 2-1307) UNAME_MACHINE="alphaev68" ;; esac fi rm -f $dummy.s $dummy echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; arc64:OpenBSD:*:*) echo mips64el-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hkmips:OpenBSD:*:*) echo mips-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mips-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; sparc*:NetBSD:*) echo `uname -p`-unknown-netbsd${UNAME_RELEASE} exit 0 ;; atari*:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; sun3*:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) case "${HPUX_REV}" in 11.[0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; esac ;; esac fi ;; esac if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi rm -f $dummy.c $dummy fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; hppa*:OpenBSD:*:*) echo hppa-unknown-openbsd exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*X-MP:*:*:*) echo xmp-cray-unicos exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY-2:*:*:*) echo cray2-cray-unicos exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i386-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in big) echo mips-unknown-linux-gnu && exit 0 ;; little) echo mipsel-unknown-linux-gnu && exit 0 ;; esac ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. ld_supported_targets=`cd /; ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build cat >$dummy.c < #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 printf ("%s-pc-linux-gnu\n", argv[1]); # else printf ("%s-pc-linux-gnulibc1\n", argv[1]); # endif # else printf ("%s-pc-linux-gnulibc1\n", argv[1]); # endif #else printf ("%s-pc-linux-gnuaout\n", argv[1]); #endif return 0; } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) if test "${UNAME_MACHINE}" = "x86pc"; then UNAME_MACHINE=pc fi echo `uname -p`-${UNAME_MACHINE}-nto-qnx exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[KW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lmarbles-1.0.7.orig/install-sh0000700000175000017500000001272007142767061014447 0ustar uweuwe#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 lmarbles-1.0.7.orig/lmarbles32.gif0000600000175000017500000000140207522517175015076 0ustar uweuweGIF89a 000 r C!!>>++ #44kkll.. D99yy`` N (( E Y $ 5 \ 3  . A < * ===ggg```???888mmm??>iiiҫqqqwwwȓFEE$#!hhhyyy^^^>==" >>>oookkkFFF+*(:98GGG654(&$#"!! ! ,    !"#$%&'()*+,-.//0123Ʌ456789:;Ն<=>?@߆$$ԽAB$CDEAdФJ2)(AJ0i (EJЩTZ "e *V@"*Vͪu+.!YhEJ/$f¥ ٯ`ÊL1cȔ1C0bƐ-k,ڴ!gICF6m:&ݵl`ۺ r8rV7oő_;vx\عԆKn_B5:eȘY4դYS6q02N;lmarbles-1.0.7.orig/lmarbles48.gif0000600000175000017500000000135207522517214015103 0ustar uweuweGIF89a00 gEE99 0PP\\ ((ss " HVVVsss765bbbPPP*)(FFF̲# ! ?,00pH,Ȥrl:h@HE@@0VP0]!,v 0P8 kzLo ujyF} ] xI   uGH]  ɮ T{UUYۡ[]_TY^`{egiCyd̠۽pб . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dsp16xx \ | fr30 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | m32r | m68000 | m68k | m88k | mcore \ | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el | mips64vr4300 \ | mips64vr4300el | mips64vr5000 | mips64vr5000el \ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ | mipsisa32 \ | mn10200 | mn10300 \ | ns16k | ns32k \ | openrisc \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | s390 | s390x \ | sh | sh[34] | sh[34]eb | shbe | shle \ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ | stormy16 | strongarm \ | tahoe | thumb | tic80 | tron \ | v850 \ | we32k \ | x86 | xscale \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alphapca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armv*-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c54x-* \ | clipper-* | cray2-* | cydra-* \ | d10v-* | d30v-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | m32r-* \ | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | s390-* | s390x-* \ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | v850-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | ymp) basic_machine=ymp-cray os=-unicos ;; cray2) basic_machine=cray2-cray os=-unicos ;; [cjt]90) basic_machine=${basic_machine}-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mipsel*-linux*) basic_machine=mipsel-unknown os=-linux-gnu ;; mips*-linux*) basic_machine=mips-unknown os=-linux-gnu ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sparclite-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=t3e-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; windows32) basic_machine=i386-pc os=-windows32-msvcrt ;; xmp) basic_machine=xmp-cray os=-unicos ;; xps | xps100) basic_machine=xps100-honeywell ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; mips) if [ x$os = x-linux-gnu ]; then basic_machine=mips-unknown else basic_machine=mips-mips fi ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh3eb | sh4eb) basic_machine=sh-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; c4x*) basic_machine=c4x-none os=-coff ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto*) os=-nto-qnx ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lmarbles-1.0.7.orig/missing0000700000175000017500000001420207142767061014037 0ustar uweuwe#! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright (C) 1996, 1997 Free Software Foundation, Inc. # Franc,ois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing - GNU libit 0.0" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER([^):]*:\([^)]*\)).*/\1/p' configure.in` if test -z "$files"; then files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^):]*\)).*/\1/p' configure.in` test -z "$files" || files="$files.in" else files=`echo "$files" | sed -e 's/:/ /g'` fi test -z "$files" && files="config.h.in" touch $files ;; automake) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print \ | sed 's/^\(.*\).am$/touch \1.in/' \ | sh ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 lmarbles-1.0.7.orig/mkinstalldirs0000700000175000017500000000133607142767061015252 0ustar uweuwe#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.1.1.1 2000/08/05 10:36:33 michael Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" 1>&2 mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here lmarbles-1.0.7.orig/Makefile.am0000600000175000017500000000551107570172615014501 0ustar uweuweSUBDIRS = src EXTRA_DIST = lmarbles.spec AUTHORS COPYING ChangeLog INSTALL README \ README-SDL.txt TODO LMarbles.prj lmarbles32.gif lmarbles48.gif AUTOMAKE_OPTIONS = foreign WIN32_TEXT = AUTHORS COPYING ChangeLog INSTALL README README-SDL.txt TODO marbles.spec WIN32_LOCAL_DLL = SDL.dll SDL_mixer.dll WIN32_SYS_DLL = msvcrt.dll win32text: $(WIN32_TEXT) @echo Converting text files for win32 installer @-rm -rf ./win32text @mkdir ./win32text @for textfile in $(WIN32_TEXT); do \ $(AWK) '{printf "%s\r\n",$$0}' $$textfile > ./win32text/$$textfile ; \ done win32-installer-script: @win32_inst_script@ @win32_inst_script@: win32text @echo Generating win32 installer script @echo "[Setup]" > $@ @echo "AppName=@appname@" >> $@ @echo "AppVerName=@appname@ $(VERSION)" >> $@ @echo "AppPublisher=Michael Speck" >> $@ @echo "AppPublisherURL=http://lgames.sourceforge.net/index.php?project=@appname@" >> $@ @echo "AppSupportURL=http://lgames.sourceforge.net/index.php?project=@appname@" >> $@ @echo "AppUpdatesURL=http://lgames.sourceforge.net/index.php?project=@appname@" >> $@ @echo "DefaultDirName={pf}\\$(PACKAGE)" >> $@ @echo "DefaultGroupName=@appname@" >> $@ @echo "OutputDir=." >> $@ @echo "Uninstallable=yes" >> $@ @echo "AlwaysCreateUninstallIcon=yes" >> $@ @echo "AdminPrivilegesRequired=1" >> $@ @echo "[Tasks]" >> $@ @echo "Name: \"desktopicon\"; Description: \"Create a &desktop icon\"; GroupDescription: \"Additional icons:\"" >> $@ @echo "[Files]" >> $@ @(cd win32dlls; for file in $(WIN32_LOCAL_DLL); do \ echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> $@; \ done) @(cd win32dlls; for file in $(WIN32_SYS_DLL); do \ echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{sys}\"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall" >> $@; \ done) @echo "Source: \"win32text\\*.*\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> $@; @list='$(SUBDIRS)'; for subdir in $$list; do \ (cd $$subdir \ && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); \ done @echo "[Icons]" >> $@ @echo "Name: \"{group}\\@appname@\"; Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; WorkingDir: \"{app}\"" >> $@ @echo "Name: \"{group}\\@appname@ Manual\"; Filename: \"{app}\\manual\\manual.html\"" >> $@ @echo "Name: \"{userdesktop}\\@appname@\"; Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; WorkingDir: \"{app}\"; Tasks: \"desktopicon\"" >> $@ @echo "[Run]" >> $@ @echo "Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; Description: \"Launch @appname@\"; Flags: nowait postinstall skipifsilent" >> $@ @$(AWK) '{printf "%s\r\n",$$0}' $@ > marbles.iss.w32 @mv marbles.iss.w32 $@ win32-installer: win32-installer-script $(ISCC) installer.iss @-rm -rf win32text @mv setup.exe $(PACKAGE)-$(VERSION)-win32.exe @echo Self installer created: $(PACKAGE)-$(VERSION)-win32.exe lmarbles-1.0.7.orig/Makefile.in0000600000175000017500000003337310063260671014510 0ustar uweuwe# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ AWK = @AWK@ CC = @CC@ EXEEXT = @EXEEXT@ ISCC = @ISCC@ MAKEINFO = @MAKEINFO@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_CONFIG = @SDL_CONFIG@ SDL_LIBS = @SDL_LIBS@ STRIP = @STRIP@ VERSION = @VERSION@ appname = @appname@ arch_flag = @arch_flag@ ascii_flag = @ascii_flag@ inst_dir = @inst_dir@ inst_flag = @inst_flag@ mixer_flag = @mixer_flag@ prf_dir = @prf_dir@ prf_flag = @prf_flag@ sound_flag = @sound_flag@ win32_deps = @win32_deps@ win32_inst_script = @win32_inst_script@ SUBDIRS = src EXTRA_DIST = lmarbles.spec AUTHORS COPYING ChangeLog INSTALL README README-SDL.txt TODO LMarbles.prj lmarbles32.gif lmarbles48.gif AUTOMAKE_OPTIONS = foreign WIN32_TEXT = AUTHORS COPYING ChangeLog INSTALL README README-SDL.txt TODO marbles.spec WIN32_LOCAL_DLL = SDL.dll SDL_mixer.dll WIN32_SYS_DLL = msvcrt.dll ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \ Makefile.am Makefile.in NEWS TODO acconfig.h acinclude.m4 aclocal.m4 \ config.guess config.h.in config.sub configure configure.in install-sh \ missing mkinstalldirs DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --foreign --include-deps Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status $(ACLOCAL_M4): configure.in acinclude.m4 cd $(srcdir) && $(ACLOCAL) config.status: $(srcdir)/configure.in $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) config.h: stamp-h @if test ! -f $@; then \ rm -f stamp-h; \ $(MAKE) stamp-h; \ else :; fi stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES= CONFIG_HEADERS=config.h \ $(SHELL) ./config.status @echo timestamp > stamp-h 2> /dev/null $(srcdir)/config.h.in: $(srcdir)/stamp-h.in @if test ! -f $@; then \ rm -f $(srcdir)/stamp-h.in; \ $(MAKE) $(srcdir)/stamp-h.in; \ else :; fi $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h cd $(top_srcdir) && $(AUTOHEADER) @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null mostlyclean-hdr: clean-hdr: distclean-hdr: -rm -f config.h maintainer-clean-hdr: # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. @SET_MAKE@ all-recursive install-data-recursive install-exec-recursive \ installdirs-recursive install-recursive uninstall-recursive \ check-recursive installcheck-recursive info-recursive dvi-recursive: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ test "$$subdir" = "." && dot_seen=yes; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist -rm -rf $(distdir) GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz mkdir $(distdir)/=build mkdir $(distdir)/=inst dc_install_base=`cd $(distdir)/=inst && pwd`; \ cd $(distdir)/=build \ && ../configure --srcdir=.. --prefix=$$dc_install_base \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) dist -rm -rf $(distdir) @banner="$(distdir).tar.gz is ready for distribution"; \ dashes=`echo "$$banner" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ echo "$$dashes" dist: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) dist-all: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) distdir: $(DISTFILES) -rm -rf $(distdir) mkdir $(distdir) -chmod 777 $(distdir) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done for subdir in $(SUBDIRS); do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ chmod 777 $(distdir)/$$subdir; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ fi; \ done info-am: info: info-recursive dvi-am: dvi: dvi-recursive check-am: all-am check: check-recursive installcheck-am: installcheck: installcheck-recursive all-recursive-am: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive install-exec-am: install-exec: install-exec-recursive install-data-am: install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-recursive uninstall-am: uninstall: uninstall-recursive all-am: Makefile config.h all-redirect: all-recursive-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: installdirs-recursive installdirs-am: mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic mostlyclean: mostlyclean-recursive clean-am: clean-hdr clean-tags clean-generic mostlyclean-am clean: clean-recursive distclean-am: distclean-hdr distclean-tags distclean-generic clean-am distclean: distclean-recursive -rm -f config.status maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-recursive -rm -f config.status .PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ install-data-recursive uninstall-data-recursive install-exec-recursive \ uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ all-recursive check-recursive installcheck-recursive info-recursive \ dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ install-exec-am install-exec install-data-am install-data install-am \ install uninstall-am uninstall all-redirect all-am all installdirs-am \ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean win32text: $(WIN32_TEXT) @echo Converting text files for win32 installer @-rm -rf ./win32text @mkdir ./win32text @for textfile in $(WIN32_TEXT); do \ $(AWK) '{printf "%s\r\n",$$0}' $$textfile > ./win32text/$$textfile ; \ done win32-installer-script: @win32_inst_script@ @win32_inst_script@: win32text @echo Generating win32 installer script @echo "[Setup]" > $@ @echo "AppName=@appname@" >> $@ @echo "AppVerName=@appname@ $(VERSION)" >> $@ @echo "AppPublisher=Michael Speck" >> $@ @echo "AppPublisherURL=http://lgames.sourceforge.net/index.php?project=@appname@" >> $@ @echo "AppSupportURL=http://lgames.sourceforge.net/index.php?project=@appname@" >> $@ @echo "AppUpdatesURL=http://lgames.sourceforge.net/index.php?project=@appname@" >> $@ @echo "DefaultDirName={pf}\\$(PACKAGE)" >> $@ @echo "DefaultGroupName=@appname@" >> $@ @echo "OutputDir=." >> $@ @echo "Uninstallable=yes" >> $@ @echo "AlwaysCreateUninstallIcon=yes" >> $@ @echo "AdminPrivilegesRequired=1" >> $@ @echo "[Tasks]" >> $@ @echo "Name: \"desktopicon\"; Description: \"Create a &desktop icon\"; GroupDescription: \"Additional icons:\"" >> $@ @echo "[Files]" >> $@ @(cd win32dlls; for file in $(WIN32_LOCAL_DLL); do \ echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> $@; \ done) @(cd win32dlls; for file in $(WIN32_SYS_DLL); do \ echo "Source: \"`pwd -W`\\$$file\"; DestDir: \"{sys}\"; CopyMode: alwaysskipifsameorolder; Flags: restartreplace uninsneveruninstall" >> $@; \ done) @echo "Source: \"win32text\\*.*\"; DestDir: \"{app}\"; CopyMode: alwaysoverwrite" >> $@; @list='$(SUBDIRS)'; for subdir in $$list; do \ (cd $$subdir \ && $(MAKE) $(AM_MAKEFLAGS) win32-install-script); \ done @echo "[Icons]" >> $@ @echo "Name: \"{group}\\@appname@\"; Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; WorkingDir: \"{app}\"" >> $@ @echo "Name: \"{group}\\@appname@ Manual\"; Filename: \"{app}\\manual\\manual.html\"" >> $@ @echo "Name: \"{userdesktop}\\@appname@\"; Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; WorkingDir: \"{app}\"; Tasks: \"desktopicon\"" >> $@ @echo "[Run]" >> $@ @echo "Filename: \"{app}\\$(PACKAGE)$(EXEEXT)\"; Description: \"Launch @appname@\"; Flags: nowait postinstall skipifsilent" >> $@ @$(AWK) '{printf "%s\r\n",$$0}' $@ > marbles.iss.w32 @mv marbles.iss.w32 $@ win32-installer: win32-installer-script $(ISCC) installer.iss @-rm -rf win32text @mv setup.exe $(PACKAGE)-$(VERSION)-win32.exe @echo Self installer created: $(PACKAGE)-$(VERSION)-win32.exe # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: lmarbles-1.0.7.orig/README-SDL.txt0000600000175000017500000000065107144450761014561 0ustar uweuwe Please distribute this file with the SDL runtime environment: The Simple DirectMedia Layer (SDL for short) is a cross-platfrom library designed to make it easy to write multi-media software, such as games and emulators. The Simple DirectMedia Layer library source code is available from: http://www.libsdl.org/ This library is distributed under the terms of the GNU LGPL license: http://www.gnu.org/copyleft/lesser.html lmarbles-1.0.7.orig/config.h.in0000600000175000017500000000035307570173476014475 0ustar uweuwe/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */ /* Define if you have the m library (-lm). */ #undef HAVE_LIBM /* Name of package */ #undef PACKAGE /* Version number of package */ #undef VERSION lmarbles-1.0.7.orig/lmarbles.spec0000600000175000017500000000456407570172526015132 0ustar uweuweName: lmarbles Version: 1.0.6 Release: 1cl Summary: Atomix-like game of moving marbles in puzzles Summary(pt_BR): Jogo tipo Atomix, de mover bolas de gude em labirintos Summary(es): Atomix-like game of moving marbles in puzzles Group: Games Group(pt_BR): Jogos Group(es): Juegos License: GPL URL: http://lgames.sourceforge.net/%{name}/%{name}.html Source: http://ftp1.sourceforge.net/lgames/%{name}-%{version}.tar.gz Patch: %{name}-prefsdir.patch BuildRoot: %{_tmppath}/%{name}-%{version}-root %description Marbles is very similiar to Atomix and was heavily inspired by it. Goal is to create a more or less complex figure out of single marbles within a time limit to reach the next level. Sounds easy? Well, there is a problem: If a marble starts to move it will not stop until it hits a wall or marble. And to make it even more interesting there are obstacles like arrows, crumbling walls and teleports! %description -l pt_BR O Marbles muito parecido com o jogo Atomix, pois foi inspirado nele. O objetivo criar uma figura de bolas de gude mais ou menos complexa dentro de um limite de tempo. Parece fcil? Bem, h um problema: quando uma bolinha de gude comea a se mover, s pra quando bate em uma parede ou outra bolinha. E para ficar mais interessante, h alguns obstculos como caminhos de mo nica, paredes que desmoronam e teletransporte! %description -l es Marbles is very similiar to Atomix and was heavily inspired by it. Goal is to create a more or less complex figure out of single marbles within a time limit to reach the next level. Sounds easy? Well, there is a problem: If a marble starts to move it will not stop until it hits a wall or marble. And to make it even more interesting there are obstacles like arrows, crumbling walls and teleports! %prep %setup -q %patch %build %configure --datadir=%{_datadir} make %install mkdir -p %{buildroot}/%{_localstatedir}/games %makeinstall DESTDIR=%{buildroot} bindir=%{_prefix}/games %clean rm -rf %{buildroot} %files %defattr(0644,root,root,0755) %doc AUTHORS COPYING README ChangeLog %{name}/manual %attr(2755,root,games) %{_prefix}/games/%{name} %{_datadir}/games/%{name} %attr(0664,root,games) %config %{_localstatedir}/games/%{name}.prfs %changelog * Thu Nov 30 2000 aurlio marinho jargas + marbles-001126-1cl - changed prefs dir - adopted lmarbles-1.0.7.orig/acinclude.m40000600000175000017500000001346307522374255014644 0ustar uweuwednl SDL Stuff # Configure paths for SDL # Sam Lantinga 9/21/99 # stolen from Manish Singh # stolen back from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS dnl AC_DEFUN(AM_PATH_SDL, [dnl dnl Get the cflags and libraries from the sdl-config script dnl AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], sdl_prefix="$withval", sdl_prefix="") AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], sdl_exec_prefix="$withval", sdl_exec_prefix="") AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], , enable_sdltest=yes) if test x$sdl_exec_prefix != x ; then sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_args="$sdl_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi AC_PATH_PROG(SDL_CONFIG, sdl-config, no) min_sdl_version=ifelse([$1], ,0.11.0,$1) AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" dnl dnl Now check if the installed SDL is sufficiently new. (Also sanity dnl checks the results of sdl-config to some extent dnl rm -f conf.sdltest AC_TRY_RUN([ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { return 1; } } ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" AC_TRY_LINK([ #include #include "SDL.h" ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) rm -f conf.sdltest ]) dnl dnl Search for specific programs dnl dnl strip reduces executable size by getting rid of extreneous symbols AC_DEFUN(AC_PROG_STRIP,[ AC_CHECK_PROG(STRIP, strip, strip) test -z "${STRIP}" && AC_MSG_ERROR(strip was not found on this system) ]) dnl Inno Setup 2 iscc is the win32 installer script compiler AC_DEFUN(AC_PROG_ISCC,[ AC_CHECK_PROG(ISCC, iscc, iscc) test -z "${ISCC}" && AC_MSG_ERROR(Inno Setup 2 iscc was not found on this system) ]) lmarbles-1.0.7.orig/stamp-h.in0000600000175000017500000000001210063255462014326 0ustar uweuwetimestamp lmarbles-1.0.7.orig/AUTHORS0000600000175000017500000000022607525140320013477 0ustar uweuweMichael Speck **** Contributions **** Fix for input bug in Win32, a better installation system and memory leak fixes. - Lee Read lmarbles-1.0.7.orig/INSTALL0000600000175000017500000001547207142767061013505 0ustar uweuweBasic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Type `make install' to install the programs and any data files and documentation. 4. You can remove the program binaries and object files from the source code directory by typing `make clean'. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. lmarbles-1.0.7.orig/ChangeLog0000600000175000017500000000551610063254371014213 0ustar uweuwe1.0.7: - configure option --with-profile-path has been replaced with autoconf option --localstatedir (04/06/14 M.S.) - data files will be installed to $datadir/lmarbles instead of $datadir/games/lmarbles (04/06/14 M.S.) - replaced strlen with sizeof when building config path (04/06/09 M.S.) - renamed marbles.prfs to lmarbles.prfs in the Makefile (04/06/09 M.S.) - included header for NetBSD (03/09/30 H.F.) 1.0.6: - renamed project to LMarbles (02/11/24 M.S.) - fixed security holes created by improper use of sprintf (02/11/24 M.S.) 1.0.5: - switched to SDL_mixer (02/08/10 L.R.) - bunch of memory leaks fixed (02/08/10 L.R.) - for Win32: (02/08/10 L.R.) - edit bug fixed - installation details added to README - much improved installation system - files are always opened in binary mode - transparency bug fix 1.0.4: - fixed a bug in the sound server that caused Marbles to crash when exiting too fast (01/07/02 M.S.) - fixed a bug that caused Marbles to forget the last used profile (01/07/02 M.S.) - fixed a bug in autoswitch which restarted the level when the figure was completed with the last move (01/07/02 M.S.) - fixed a bug in restart routine that allowed selection of a ghost marble (01/07/02 M.S.) 1.0.3: - score is now properly modified (02/06/24 M.S.) - fixed a bug that caused an infinite loop when left-clicking an empty tile directly after deselecting a marble (02/06/22 M.S.) - added a missing include at top of timer.c 1.0.2 -compileable for Win32 with MinGW -fixed more color keys -using gettimeofday() instead of ftime() for compatibility with FreeBSD 1.0.1: -no crash when pressing move key when no marble is selected -configure option 'with-profile-path' named correctly -color key of marbles set correctly 1.0: -moved config file to ~/.lgames/marbles.conf -rearranged the levelsets into one set with 32 levels where each level has now a move limit instead of a time limit (now you'll have time to think) -fixed some warnings -profile path is no longer hard-coded -profile directory is created if not existing -not 100% cputime consumed -ASCII option ( big-endian ) works again -man page properly installed 010307: -minor bug fixes -added an 'experimental' levelset with a move limit instead of a time limit (tell me what you think of this!) -on a graphic a marble blinks -added manual page (thanks to Uwe Hermann) -fixed all '-Wall' warnings (thanks again) -script 'missing' is now executable (and again :) 001211: -various difficulty levels (e.g. 'Training' with no time limit) -marbles move faster; in 'training mode' they can even be 'warped' -you can use your keyboard to move a marble -'save as ascii' configure option (for big-endian) -works with any bit depth (16 bits no longer hard-coded) 001126: -various bug fixes (most important: chapters are opened properly, profile file included) 001124: -initial public release lmarbles-1.0.7.orig/acconfig.h0000600000175000017500000000044507426016447014370 0ustar uweuwe#undef ENABLE_NLS #undef HAVE_CATGETS #undef HAVE_GETTEXT #undef HAVE_LC_MESSAGES #undef HAVE_STPCPY #undef HAVE_LIBSM #undef PACKAGE_LOCALE_DIR #undef PACKAGE_DOC_DIR #undef PACKAGE_DATA_DIR #undef PACKAGE_PIXMAPS_DIR #undef PACKAGE_HELP_DIR #undef PACKAGE_MENU_DIR #undef PACKAGE_SOURCE_DIR lmarbles-1.0.7.orig/COPYING0000600000175000017500000003543307142767061013506 0ustar uweuwe GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS

Table of Contents