0 D$404mNJN…L04e$ĞFHuqaY}ÎÒ},…•¡mª,Òª™mÂÊÚÔ^æîÖ \2Tv˜ºÜşïÍ«‰gE#"3DUfwˆ™ª»Ì¬h$ÿÿÿÿÿÿÿÿ2Tv˜ºÜş2Tv˜ºÜşgÅzUS¨«¼E†B¦‰X¨Zÿÿÿÿÿÿÿÿğ""""""""""""""""""""""""""""""""Ğp Ğ Ğİİ Ğff Ğff Ğff »»»»»»»»UUUUUUUUEEEEEEEEDDDDDDDD"""""ò/"òÿÿ"ÿÿÿÿÿÿÿÿòÿÿ/""""""""DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDTEDDUUDTUUEUUUUUUUUUUUUUUUUUUUU""""bb&&"ff"böo&böo&"ff"bb&&""""""""ffffffff""""""""ffffffff"""""""""""""""""""""""B"""D""BD""DD"ò/""ÿÿ"òÿÿ/ÿÿÿÿôÿôÿDODODDDDDDDD""""""""""""""""$"""D"""D$""DD""333000000PUUPUUPPPPPUPPPUUPUU%%%%RRRR%%%%RRRR%%%%RRRR%%%%RRRRğğğğğğğÿb&b&b&b&b&b&b&b&b&b&b&b&b"b"b"b"İ}İ-=33-333#333#233"233""3#""2""""""""`f ``f```f" """""""""""""""""""™ùùùİùùùİùùùD$""B"RED"UUDRUUEUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU """ffffff """ """ffffff """""""ffffffff""""""""ffffffff"""""BDD"DDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$"DDD"DDD$DDDDDDDDDDDDDDDDDDDD333 PUUPUUPUUPUUPUUPUUPUUPUU&&&&bbbb&&&&bbbb&&&&bbbb&&&&bbbbğğğğğ"&"&"&"&b&b&b&b&b&b&b&b&b&b&b&b&33300 "0 0 0 "0""""""PU PPUPPPU" """"pwwpwwpwwpwwpwwpww""""""""-""’-Òİİ-BDDDD"B$B"B$B"BDT%"DUU"TUU%UUUUUUUUUUUUUUUUUUUU"R%""UU"RUU%UUUUUUUUUUUUUUUUUUUU"""fffpfffp""""""fffpfffp""""""""""""""""""""""""""""""""""""""""ò/"òÿÿ"ÿÿÿÿÿÿÿÿòÿÿ/""""""""""33 03303303303333 ""İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ 333`ff`ff`````f```ff`ff((((‚‚‚‚((((‚‚‚‚((((‚‚‚‚((((‚‚‚‚ğğğğğğğ""""fff"ffff""""""""fff"ffff"""" "   "333 """"""€ˆ €€ˆ€€€ˆ" """""""ÿ"""ÿ"""ÿ"""ÿ"""ÿ"""ÿ"""ÿ"""ÿ"""""DD""ÔO""ÔO""ÔM""ÔM""DD""""""R%""UU"RUU%RUU%RUU%"UU""B$""B$"""""""""""""""""""""""""""""""""&b&bbb&&"ff"fænffænf"ff"bb&&&b&b"""""""""""""""""""""""""""""""""R%""UU"RUU%UUUUUUUUUUUUUUUUUUUU""33 03303303303333 ""İİİİÿİİİÿßİİÿÿßİÿÿßİÿÿİİİİİİİİİİ000000333`ff`ff`ff`ff`ff`ff`ff`ff))))’’’’))))’’’’))))’’’’))))’’’’ğğğğğ""""ffff"fff""""""""ffff"fff"""" 333 "   """""""™ ™ ™ " """"""""""""""""""""""""""""ÿÿÿÿÿÿÿÿ"""""DD""ÔM""ÔM""ÔM""´K""DD"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&bffffff&böofföo&bffffff&bbbb&&&&bffffff&böofföo&bffffff&bbbbDDDD@@@@@""33 03303303303333 ""İİİİİıßİıÿÿİÿÿÿÿÿÿÿÿıÿÿßİİİİİİİİ00000000€ˆˆ€ˆˆ€€€€€ˆ€€€ˆˆ€ˆˆ""""&&&&bbbb""""""""bbbb&&&&""""ğÿğÿğÿğğğğ00 "0 0 0 "0333""îî àààîàîààîî ""ÿ"""ÿ"""ÿ"""ÿ"""ÿ"""ÿ"""ÿ"""ÿ""""""""""""""""""""r'""ww"rww'wr'w""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&bffffff&böofföo&bffffff&bbbb&&&&bffffff&böofföo&bffffff&bbbb""""""""""""""""%"""U"""U%""UU"""â."¢ªª*¢ªª*"ªª"" "" "" "" "" "" "" "" ""ªª"¢ªª*¢ªª*"â."3333€ˆˆ€ˆˆ€ˆˆ€ˆˆ€ˆˆ€ˆˆ€ˆˆ€ˆˆİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİğÿğğğğÿğÿğğğğÿ00 "0 0 0 0 0 "0""ff ` ff "`` "`f f` ""DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"r'""r'""r'""r'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&bffffff&bÿÿffÿÿ&bffffff&bbbb&&&&bffffff&bÿÿffÿÿ&bffffff&bbbb"""""""""""""""""""R"""U""RU""UU@DDDD@DD@DDD" "" "" "" "" "" "" "" "™™ ™™ ™ ™™ ™™ """""""""""""""""r'""r'""r'""r'"ğğğğğğğğğğÿğğ3333 ""   """"ff ` ff "f"f ""DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD$ªªªª§wzªwªz§ªwªª§§§§wz§§§§zªwwz§""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""&&&&bfffföo&böofföo&böoffff&bbbb&&&&bfffföo&böofföo&böoffff&bbbb"""""""""""""""""""""%%""R"""R""@@@@@@@@DDDDİİİİİİİİİİİİİİİİİİİİ3333™™ ™™ ™™ ™™ ™™ ™™ ™™ ™™ wr'wrww'"ww""r'"""""""""""""""""ğğğğÿğÿğğğÿğğ "     """îî àààîàîààîî ""DDDDDDDDDDDDDDDDDDDDDDDDDDDDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ffffff """ """ffffff """""""""""""""""""""""""""""""""""""""""""""""""""""""R"%%"%R""%R""""""""""D"D"@"@"@"@@@@@@@@@ˆˆˆˆˆ€ˆˆ€ˆˆˆˆˆ€ˆˆˆˆˆ33033000330ğÿğğğğğğğğÿğğğğğğğğğğğğÿ ""   ""3333""îî àààîàîààîî ""BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""fffpfffp""""""fffpfffp""""""""""""""""""""""""""""""""""""""""""""""""""""Â"""ì,,"ÂÂÎ"R","""""""D""@D "@"""""@Ğİ"@Ğİ"@Ğİ"@Ğİ"@Ğİ"@Ğİ"@Ğİ"@Ğ݈ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ3303333ğÿğğğğğğğğğğğğÿğğğÿ ""     ""`p``ff`İİ`İİ`İİDDD$DDDDDDDDDDDDDDDDDDDDDDDDDDDD""""r"""r'"w"'r'"ww""r'""w"""'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""("b‚"æ&("b"%" DDDDDDDDD"""""""""D"D"@Ğ"@Ğİ"@Ğİ"@Ğİ™™™™™ ™™ ™™ ™™™ ™™™™™ff`ff```ff`ğÿğğÿğğÿğÿğğğğğÿğğğğğğ """"""""" """ """"""""" """Ğp Ğ Ğİİ Ğff Ğff Ğff 3333       "@@"@@"@@"@@"@@"@@"@@"@@""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""İİİİÿİİİÿßİİÿÿßİÿÿßİÿßİİÿİİİßİİİ DDDDİİİİİİİİİİİİİİİİİİİ"""""""D""@D " @"İ "İ "İ "™™™™™™™™™™™™™™™™™™™™™™™™ff`ffffğÿğÿğğğÿğğÿğğÿğğÿ""""""p"""p"""""""""p"""p"""" "@ DD @ DD "@""@"" "      3333"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""@Ğİ"@ğÿ"@ğÿ"@ğÿ"@ğÿ"@ğÿ"@ğÿ"@Ğÿİ "İ "İ "İ "İ "İ "İ "İ "@DDDDİİİİİİİİİİİİİİİİİİİfffff`ff`fffff`fffffÿÿÿÿÿğğÿğÿğÿğğÿğğÿÿÿÿ""ÿ/"òÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿ""ÿ/"òÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ""ÿ/"òÿ"ÿÿÿÿÿğğÿğğÿÿğğÿğğÿÿÿÿ""ÿ/"òÿ""""/"""/"""/"""/"""/"""/"""/"""/""""ÿÿÿÿ""""""""""""""""""""""""ò"""ò"""ò"""ò"""ò"""ò"""ò"""ò"""""""""""""""""""""""""""ÿÿÿÿ""""""""ÿÿÿ/"""/"""/"""/"""/"""/"""/""""òÿÿÿò"""ò"""ò"""ò"""ò"""ò"""ò"""ò"""ò"""ò"""ò"""ò"""òÿÿÿ"""""""/"""/"""/"""/"""/"""/ÿÿÿ/"""""@"@"@"@@D"@@D"@"@"@"""D"D""""DDDDDDDDffffffffffffffffffffffffğğğğğğğğğğğÿğğğÿÿÿÿÿ/""ò/""ò/""ò/""ò/""ò/""òÿÿÿÿÿÿÿÿ/""ò/""ò/"""/"""/""ò/""òÿÿÿÿÿ/òÿ/""ò/""ò/""ò/""ò/""ò/""òÿÿÿÿÿÿÿÿ/""ò/""ò"""ò"""ò/""ò/""òÿÿÿÿÿÿÿÿ/""ò/""ò/""ò/""ò/""ò/""òÿ/òÿÿ/òÿ/""ò/""ò/"""/"""/""ò/""òÿÿÿÿÿÿÿÿ/""ò/""ò""""""""/""ò/""òÿÿÿÿÿÿÿÿ/""ò/""ò/"""/"""/""ò/""òÿ/òÿÿ/òÿ/""ò/""ò"""ò"""ò/""ò/""òÿÿÿÿÿ/òÿ/""ò/""ò/""ò/""ò/""ò/""òÿ/òÿÿÿÿÿ/""ò/""ò"""ò"""ò/""ò/""òÿ/òÿÿ/òÿ/""ò/""ò"""ò"""ò/""ò/""òÿ/òÿÿÿÿÿ/""ò/""ò""""""""/""ò/""òÿ/òÿÿ/òÿ/""ò/""ò/"""/"""/""ò/""òÿ/òÿÿ/òÿ/""ò/""ò""""""""/""ò/""òÿÿÿÿÿ/òÿ/""ò/""ò""""""""/""ò/""òÿ/òÿ""""òÿ""ofÿ/ooföooÿöofÿöòÿ"/""""""""òÿ""_Uÿ/__Uõ__ÿõ_Uÿõòÿ"/""""""""òÿ""ˆÿ/ˆøÿøˆÿøòÿ"/""""""""òÿ""Ÿ™ÿ/ŸŸ™ùŸŸÿùŸ™ÿùòÿ"/"""""ÿÿ"òîî/ïşïşïşîşïşîşïşïşòîî/"ÿÿ""ÿÿ"òff/òöo/òff/òoo/òof/òfo/"ÿÿ""ÿÿ"òff/òöo/òff/òöö/òfö/òöf/"ÿÿ"""""òÿ""ÿÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿòÿ"/"""""ÿÿ"òÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòÿÿ/"ÿÿ""ÿÿ"òÿÿ/òÿÿ/òÿÿ/òÿÿ/òÿÿ/òÿÿ/"ÿÿ"İİİİİİİİİßıİİİİİİİİİİßıİİİİİİİİİ""""""""".â""â.""â."".â"""""""""İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİğğğÿÿ /"/""""""/"/""""/"/""""""/"/"""" ™™ ™™ ™™ ™™ ™™ ™™   PUUPUUPUUPUUPUUPUU  €ˆˆ€ˆˆ€ˆˆ€ˆˆ€ˆˆ€ˆˆ  àîîàîîàîîàîîàîîàîî    `ff`ff`ff`ff`ff`ff """""""""""""ò/""ò/""""""""""""""""""" îî îî """ "" """""""îî îî  """ """ """"""îî  îî """ "" """îî  îî """ """ """"""""""îî  îî """" """"îî  îî """ "" """""""""""îî  îî """ "" """""""""""""""""""""""""""""""""////""""////""""////""""////""""""""""™™ ™™ ™™ ™™ """"""""""""UU UU UU UU """"""""""""ˆˆ ˆˆ ˆˆ ˆˆ """"""""""""îî îî îî îî """"""""""""    """"""""""""ff ff ff ff """""""""""""""ÿÿ""ÿÿ""ÿÿ""ÿÿ"""""""""" "p pwwpwwpwwpwwp " """""""îî îî îî """ "" """"""p "w"w"w "w "w """""""w "pwwwpw pw """" """"""w "pwwww w ""p """""""""p "w"pw"pw "pw "w """"""""p "w"w"w "w"w"" """"""""""""""""""""""""""""""""////òòòò////òòòò////òòòò////òòòò""""""""" "" "" "" """""""""""""""""" ""P""P"" """""""""""""""""" ""€""€"" """""""""""""""""" ""à""à"" """""""""""""""""" """""" """""""""""""""""" ""`""`"" """""""""""""òÿÿ/òÿÿ/òÿÿ/òÿÿ/òÿÿ/òÿÿ/""""" "p ww ww p " """""""""""""" ""à""à"" "" """"""""""ÿÿÿ"/"""/"""/"""/"""/"""/"ò"/"òÿÿÿÿ"""""ÿ//"ò"ÿ"ò"/""""ÿÿò/ÿÿò/ÿÿÿÿ""""òòÿ"ÿò/"òòÿ"""""ò/ÿòò/ÿòÿÿÿ"""ò"""ò"""ò"""ò"""ò"/"ò"/"ò"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ""""""""""""" "" """""""""""""""""""""""""" "" """""""""""""""""""""""""" "" """""""""""""""""""""""""" "" """""""""""""""""""""""""" "" """""""""""""""""""""""""" "" """""""""""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ"""p""p"" """""""""""""""""" ""à"" """"""""""""""""""""""/"ò"/"ò"/"ò"/"""/"ò"/"ò"""""ÿÿÿ/"ò/ÿÿòÿÿÿòÿ"ÿò/ÿÿò/ÿÿò/""""ÿÿÿÿò/ÿò/"ÿÿ/"ÿÿò/"òò/ÿÿò/ÿÿ""""ÿÿÿÿ/"ò"/"ò"/"ò"/"ò"/"ò"/"ò"""""ÿÿÿ"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/""òÿ"""/""""""""""""""""""""""ÿÿÿ"""""ÿò/"ÿò/"ÿò/"ÿÿ/"ÿÿ/"ÿò/ÿÿÿÿ""""ÿÿ/ÿÿÿ/ÿÿò/ÿÿò/ÿÿò/ÿÿò/ÿÿÿÿÿ""""ò/ÿÿò/ÿÿò/ÿ"ò/ÿÿò/ÿÿò/"òÿÿÿ"""""/ÿÿ"/ÿÿ""ÿ""/ÿÿ"/ÿÿ"/ÿ"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""òò"""/""òò""""""""""""""""""""""ÿò/"ÿò/""""""""""""""""""""""""ÿÿ/ÿÿÿ/ÿ""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/ÿÿÿ/ÿÿ""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/ÿÿ"/ÿÿ"""""/"""/"""/"""/"""/"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/"""""""""""""""""""""""""""""""""""""""""""""""""""""""""ÿÿÿÿÿÿÿÿ""""""ÿÿ""ÿÿ""ÿÿ""ÿÿ""""ÿÿÿÿÿÿÿÿ""""ÿÿ/"ÿÿ/"ÿÿ/"ÿÿ/"""""/"""/""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""ò"""ò"""ò""""""""""""""""""""ÿ"""ÿ"""ÿ""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""D"D"@Ğ"@Ğİ"@Ğİ"@Ğİ@DDDDİİİİİİİİİİİİİİİİİİİ DDDDİİİİİİİİİİİİİİİİİİİ"""""""D""@D " @"İ "İ "İ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""@Ğİ"@ğÿ"@ğÿ"@ğÿ"@ğÿ"@ğÿ"@ğÿ"@Ğÿİİİİÿİİİÿßİİÿÿßİÿÿßİÿßİİÿİİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ "İ "İ "İ "İ "İ "İ "İ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""@Ğİ"@Ğİ"@Ğİ"@Ğİ"@Ğİ"@Ğİ"@Ğİ"@Ğİ Ğ@DD@@@@@D@@@@DD Ğİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ "İ "İ "İ "İ "İ "İ "İ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""@Ğİ"@Ğİ"@Ğİ"@Ğİ"@Ğİ"@"@DD"İİİİİİİİİİİİİİİİİİİİDDDDİİİİİİİİİİİİİİİİİİİİDDDDİ "İ "İ "İ "İ ""DD""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""€BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB2bbjjjbbR2bbjjjbbR2(bbjjjbbR2((bbjjjbb((R2(bbjjjbbR2(bb)jIbb(((R2bbjbbR2(((bbjbb(R2((bb9bb((R2bbbb((R2‚r‰iH©™‚rR2³yÃR2³yÃR2ØÚŠÚÙR288888888888888888888888888888888888888X44444x4444ˆ¨x˜ˆ¨³yèx˜ˆ¨444ˆx4444h8888888888888888888888888888888888888888888888R2R2b{{‚bbbbbrbbbbbbbbbbb{{{k‚rK{{{{{{‚r;{{{{{{{{{{{{{{‚;{{{{{{{{{{‚r;{{{{{{{{{{{{{{{{‚r;{{{{{{{{{{{{{bR2bkŸ¿~¿­½N~bbbbbbbbbbk““sK[[[[[k““sKkjjrKkKkbR2(bk¾­Übbbbbbbbbbbbk“““Kk“““KkjjrKkKk‚rR2bk±‚bbbbbbbbr [k“““Kk“““KkjjbrKkKk +(R2bk [[[[[[[[[[[[+bbbbbb [[[[[[[[kjj‚brKk±KkKkR2(bk;{{{{{{{{{{{{bbb [[k3jj3 [+Kk [[[[[[[[[[[[+Kk [[[[[[[[[[[+KkR2bkbbb;{{{{{{{ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂkjÁjKk [[+fKk;{{{{{{{{{kKk;{{{{{{{{{Kk(R2(bkbbb½o^­½~¿_¿¯­ÿ½o¿Ş¿Ÿ¿Kk²²²²²²KkKkKkKkKkKkKk(R2bkbbb¿Ÿ®®Oo®¾¿No¿o¿½KkKkKkKkKkKkKk&KkR2bkbbbKkCCKkKkK[[[[[[[+KkKkKkKkR2bkgbbb [[[²²²²²²²²²²²²²²²²²²²²²²²²²kKkKkK{{{{kKk [[[[+Kk [[[[[[[[kR2bkg‚brKk­o¿¿_KkKkKkKkKkKkKk;{{{{{{Kk;{{{{{{{{{R2bkK{{{k½®­½¯ŞK{{{²²²²kKkKkKkKkKkKkllR2bk`   €“““KkŸN¿½­Ÿ®~~­Kk““sK²²²²kKkf;;;Kk†–Kk||R2bk`   €“““Kk¯aKk“““K²²²²kKkKk†–Kk||R24444444x¨4444x444bk`   €“““Kk²²²²Kk“““K²²²²kKk&KkKk±ll4444x44x4h8888888Rb[[[[[[[[[[[[[[[[[[[[[[[[[ppp[[[[[[[[[[[[[[[[[[[[[²²²²kK[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[+{{{{{{{{{‚rK{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{;{k;{{{{{{{{{ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ{{{{{{{{{{{{{{{{{{{{{{{{{{{kŸ®~¯ı½‚K{{k½o¿­½®N¿­®O½o¿K{{{;{{{k;KkœœKkKkN½¿         €Kk­nŞo®­¿KkjjKk;3Kk3œœKkKk½NŸ~½¿`        €K{{{{{{{{{{{{{{{{{{{{{{KkjjKk;KkŒŒKkKkݱKkKkKkjjKk±;KkŒŒKkKk + [[[{kKk~®_N_O®­¿­¿®O [[[[[[[[[[+&KkjjK[[[[[+; [[[²²²²²²Kk²²²²²²[[[[[[[[[[[+KkKkKkfKkvKk;{¿~®_N_ܾ~Ÿ¿½®?Kk [[[[[[+K²²²²®_²k;K{{kÂÂÂÂK{{{{{{{{{{{{Kk [+KkKkK{{{{{{{;{Ÿ~~o®¿N¯½o¿?KkK{{{{{Kk½o¿Kk;{Kk**KkKk*JKkKkKkKkKkKkN½.­®¯~¿­­­nN¿­İ?KkKk¿Ÿ¿KkŸ~®¯­İKkKk:*KkKk**KkKkKkKkKkKk­~_¿.®~¯¿Ü?KkKk®¿KkKkK[[kqK[[kKkKkKkKkKk?KkKkKkK+ k²²Kk&KkKkKkKkfKk±?;{{{{{{{{{{KkKk²²²K+ kCKkCKk [[[[[+;KkKkKk; [+ [[[[[[[[[+Kk [[[[[[²²²²²²²²²²²²²²+ kKkKk;{{{{kfKkKkKkKkvKkKkK{{{{{{{{kK+ ²²²²²²²²²²²²²²²²k`€KkKkKkK[[[[[[[[[[[[[[[[[[[[+KkKk`€jKkK+ k`€KkKkKkKk±KkKk`€jKkK+ k±KkfKkKkK[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[kK[[[[[kjKkŒŒœœK[[[[[[[[[[[[[[[[[[[[[[[[[[k«»»«KkK{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{;{{{{{{kZK{{{{{{ŒŒœœ;{{{{{{{{{{{{{{{{{{{{{{{{{k«»»«KkKk½o¿­nŞo®­¿.­®¿½®­¿¿nvv½o¿İKk­¿ŸoN_O®Ÿ~¿­½o½j`€KkjjjKkKk`                              €KkKk†–Kk½o¿¿ŸN®­N½ŞşN½Kk.®~¯~¿¯jo¿½oN­¿~­N¿`€Kkjo­o¿¯½®¿­jjKkKk`                              €KkKkfKk.­Kkj£jjjjK[[[kj®_­nŞjjKk;{{{{{{{{{{{{{{{{`                              €‘K{{{{{{{{{{{{{{{{{KkKk±K²²²²²²²²²²²²jjK{{{{j®¯­¯jjKk†–K[[[[kvvKkKk [[[[[[[[[[[[[[[+ [[[[[[[[[[[[[[[[[[+;¯.¿~~N_ZKkj¯¿¿­jZKk + [[[[[[[kKkKk;{{{{{{{{{{{{{{k;{{{{{{{{{{{{{{{{{kllKkj~Nn¿İjKkKkŸN¿½K{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{KkKkgKkKk||KkjjKkKkŸ¿½¿­İKkO®Ş®_Kk_¿Ü~.­KkKkgKkggKk||Kkj!KkKkKkŸ¾½N½¿¯ŞKk½~¿­®O½o¿KkfKkKkKkll˜²²²²²¨ˆ˜4¨ˆxˆZxAK²²²²²²²²²²kKkKk­nŞKko®­¿ÜKk&Kk&K[[[[[[[[[[[[[[[[[+K[[[[[[²²²’bbbbbbbbbbbbbbbbbbbb¢²²²kKkKk;{{{{{{{kKkKkK[[[[[[[[[[[[[[[+mK{{{{{{{{{{{{;{{{{{{k‚bbbbbbbbbbbbbbbbbbbbrKk£Kk&Kk&;vKk [[[[[[+Kk;{{{{{{{{{{{{{{{{}Kk½~ı­K+‚bbbbbbbbbr +‚bbbr [[kKkK[[[[[[[[[[[[[[+ [+Kkf [+KkKkŞ¿N_O®KkO­ŸN½N®.N½oK[[[[[[[[[[[[[[[[kKk;{{{{{{{{{{{{{{kKk;{fKkKkvv±Kk­®¿½oN_­o¿KkKkKkKkKkKkK[[[[[[[[[[[[[[[[[[[[[[kKkv±Kk²²²²²Kk±Kk±KkKkK[[[[[[[[[[[[[[[[[[[[[[[[[[[[k‹››››‹ [[[[[[[[[[[[[[[[[[[[[[[+ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[+ËÛÛËK[[[[[[[[[[[[[[[[[[[[[[[[[[kK{{{{‹››››‹;{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{K{{{{{{{{{{{{{{{{{{{{{{{{{{{kËÛÛË;{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{KkKkKk¿¿½o½o¿¿¿Ÿo_N_jKkKkKkKkKk­½®N¿­vv¾­­¿¯Kk¯o¿½KkO~~®OKkŸ­®O½o¿­nŞÜ~_¿.KkKkKkN½N­­N¯Kk½o½½o¿Kk¯®.Şvvo¿Kk~®_N_İKk®Kk¾®_Ÿ®N½Ş®O¾jKk½oN­Kk¿½o¿¿~KkKkKk®¯vv¿~¯¿KkKkKk.¯¿¿­.o®½¿­¿¯jKk [[[k®¯¿ÜKk& [+†–K[[[[[[+&KkvvKk& [[[[+Kk +&Kk½o¿­½¿>¾¿­¿NjN­oN¾­;{{{K{{{n®.­N¾~ŞKkKkK{{{{{{Kk±KkKkKkKkKkŸO½¿¯O®ZZZ,,­Kk/½o¿­nŞo®­¿ÜKkKkKkKk [[[[[[[[[[[[[[[[[[[[[[[kKkKkKkKk½o¿®¿­<<N­Kk/.oN­¾¿¿¯ [[+KkKkKkKkK{{{{{{{{{{{{{{{{{{{{{kKkKkKkKk®O<<Kk/KkKkKkKko®­¿KkKŸŸn~N_vvŸ¾ON¿­KkKkKkKkKk,,Kk/KkKkKkKk¾¾¿­KkKk¯¿KkKkKkKkKk²²²²²²²²²²²²²²²²²+ [[[k/? [[[[kKkKkKkKk;{½o¿KkKk;KkKk²²k;{{{{/?K{{{{{{;†–Kk&;{†–KkKk†–;{{{k†–Kk†–;²²k?Kk Kk [[[[[[kg [[[[[[[[+KkKkmmKk²²k®½N?KkKk®~Şm½®K{{{{{kgK{{{{{{KkKk}}Kk²²k?KkKk}KkKkgKkKk±KkKk²²k?Kk± KkKkQKkgKkK[[[[+K[[[[[[[[[[[[[[[[²²²[[[[[[[[[[[[[[[k [[[[[[[[[[[[[[[[[[[[[[[[[[[[ppp[[[[[[[[[[[k [[[[[[[[[{{{{;{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{k;{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂkKkKk¯¿½¿N½N®Kkİ®_Kk/KkKkvvvvKk­½~N½­nŞİjKk­¾NN½¿¯`€Ş®_KkKk½o¿­¿­nN¿­Kk/½o½O~®½­Kk®_½o¿Kk¯.o¿¿Kk½o¿Şj­¾®n¿Kk`€¿>¾~®¿KkKkKk/KkKk½o¿Kk®Ojj¾~Ÿ¿Kk`€KkKkKk/K[[[[[[+KkKk.o¿¿j¯¿­Kk†– [[[[[[[[kKkKkKk/ [[[[[+;{{{{{{{KkvvvvKk½®®nZZjKkK{{{{{{†–;& [+;{ [+KkK{{{{Kk [[[[[[[[[[[[[[[[+KkO~N_o½Ü.o¿¿KkKk.N½o +KkKkKk`€Ÿ~®¯­İKk;{{{{{{{{{{{{{{Kk~®­½­®~­KkKkKkKkKkKk`€KkŞ­½¿N¿­v®Ov`€½o¿KkZZKkKkKkKk†–KkKk`€Kk`€KkKkKkKk±K[[[[[[[[[[[kKkK[[[[[[[[[[[[[[[[[[[[[[kKk [[[[[[k1KkKk [[[[[[[[[[[[[[+†–K{{{{{{{{{{{{{Kk;{{{{{{{{{{{{{{{{{{{{{{{[[[[[[[[[+Kk;{{{{{{{²²²²²²²²²²²²²²²k&;{{;{{{{{{{{{{{{{{{{Kk®¯­.­~ÜKkK{{{{{{{{{KkN¿­¿LLO®¯KkKkKkKkKk\\­®~Ÿ¿ÜKkN­½N~¿ŸN®­N½ŞKkKkKkKk\\KkKk±Kk±Kk±KkLLK[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[k [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[+¶Kk [[[[[[[[[[[[[[[[[[[[[[²²²²²²²²²²²²ÓÓÓÓÓÓÓ{{{{{{{{K{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{¶Kk;{{{{{{{{{{{{{{{ĞüüüæüüüÒkKkKk¶KkKk.N½¿¯KÓÓÓÓÓÓÓÓÓÓÓÓÓĞüåãäçæüÒk½o®­¿Kk.N½o¾¿Kk½o¿¿~N¿­µ~¿_¿¯®O¶¶Kk½o®­¿Kk¿KĞÒĞíæêéåæêÒk.o®KkKk¶KkK{{kKĞğñôÒĞåìèéçìèÒk­¿¿nKkKk [[[[[[[[[[[[[[[[[[+¶¶K[[[[[+;{;{ +fKĞõöÒÔíæïèéÕkN½Kkm [+;;{{{{{{{{{{{{{{{{¶¶KkKkKĞòóôôÒĞåêéçèÒkKk}Kk Kk¶¶¶KkKkKĞÒÔåïèÕk [[[[[[kKkKk_NŸ~o®­¿KkgKkfKÑÑÑÑÑÑÑÑÑÑÑÑÑÔâÕk&Kk&KkKkKkg¿®_oKkKÑk;{{{{{{{Kk± KkK[[[[[[[[[[[[[[kK      kmK[[[[[[[[[[[[+Kk [[[[[[[[[[[{{{{{{{{{{{{{{{{{{{{{fKbbb  kN½¿½N®­¯};{{{{{{{{{{{{;;{{{{{{{{{{{{{½®­¿¿nvvv½o¿vvvİİİK%%%%%%$%%%%%%%%%%%%%%%%%%%$%%%%%%%%%%%%%k.¿N_ `€,,Kk`€<<Kk`€<<Kk†– + `€,,±vvvvK[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[+ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[kKkSSKN.®~¯kcSScK.o¿¿½o¿­nŞ­½¿½Ÿo¿­ccK¿¯~¿­­~Ş®¿Ü{{{;{{{kKkKkKkKk33KkKkKkCCKk#K[[[[[[[[[[[[  $](,+ /ø/ç/Ö/Å/´/£/’/’//€/€/€/€/€/€/€/€/€/€/€/€/€/€/€/€/€0*€)‘(‘(¢(³'Ä'Õ'ö'(()I*Z+k,|-}.~.///////////// ``a b cdefghijklmnoooooooooooooo{``` a bcddeffghhjklmmooooooooooop wwwwwwwwwwwwwwwwwwwwwwwwwwwwww               t à   ! " #$$%%& & ' ((() * * ++,, - . .... / 001111223 3 3 3 3 334 4 45678:<===>??$hloooooooooooooooooooooooooooo     !"#$&'()*+,-../////////t•öÀ?İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿÿÿÿÿÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİİİİİİİİİİİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİİıÿıİßÿßİİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİİİßıÿßÿİİİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİİİßıİßÿßİİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİİİİİİİİİİİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİÿÿßÿİÿıßÿİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİÿÿßÿİÿıßÿİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİÿİİÿİÿıßÿİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİÿÿßÿÿİıÿÿİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİÿÿßÿÿİıÿÿİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİİıßÿİÿİİÿİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİÿÿßÿİÿıÿÿİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıİİÿÿßÿİÿıÿÿİİßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßİİİİİİİİİİİİİİİİİİİİİİİİİİıßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿÿÿÿÿÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿÿÿÿÿÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿßİİİİİİİİİİİİİİİİİİİİİİİİıÿÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßÿıÿÿıßÿıÿÿıÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßÿıÿÿıßÿıÿÿıÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßÿıßÿıßÿıßİıßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿıßÿıßÿıÿÿıÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿıßÿıßÿıÿÿıÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßÿıßÿıßÿİİÿıßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßÿıÿÿıÿÿıÿÿıÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßÿıÿÿıÿÿıÿÿıÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßİİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿİİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİıÿÿÿÿÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıßİİİİİİİİİİıßİİİİİİİİİİıßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿİİİİİİİİİİÿÿİİİİİİİİİİÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİıÿÿßİİİİİİİİıÿÿßİİİİİİİİıÿÿßİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİÿÿÿÿİİİİİİİİÿÿÿÿİİİİİİİİÿÿÿÿİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİMôÿôÿÔİİİİİİMôÿôÿÔİİİİİİMôÿôÿÔİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİDDODODİİİİİİDDODODİİİİİİDDODODİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİMDDDDDDÔİİİİMDDDDDDÔİİİİMDDDDDDÔİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİDDDDDDDDİİİİDDDDDDDDİİİİDDDDDDDDİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİMDDDDDDDDÔİİMDDDDDDDDÔİİMDDDDDDDDÔİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİDDDDDDDDDDİİDDDDDDDDDDİİDDDDDDDDDDİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİMDDDDDDDDDDÔMDDDDDDDDDDÔMDDDDDDDDDDÔİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİMDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDÔİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİMDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDÔİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]EDDTEDDTEDDTEDDTEDDTEDDTEDDTEDDTEDDTEDDTÕİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]Õİİ]ÕİİUUİİUUİİUUİİUUİİUUİİUUİİUUDDUUDDUUDDUUDDUUDDUUDDUUDDUUDDUUDDUUDDUUİİUUİİUUİİUUİİUUİİUUİİUUİİUUİİUUİİUUİİUUİİUUİİUUİİUUİ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUETUUETUUETUUETUUETUUETUUETUUETUUETUUETUUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕ]UUÕUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿÿUUUUUUUUUUUõ_UUUUUUUÿ_õ_UUUUUUUUUÿUUõ_õõ_UUUUõ_Uõ_UõÿUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUõ_UUÿÿõ__Uÿ_UUõÿ_õUÿUUõ_õõÿ_õ__Uÿ_UÿÿUUõ__õÿ_Uÿÿõ_UUUUÿUUÿÿUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUõ_ÿõUÿõÿÿõ_ÿUUõ_õõUÿUUõ_õõ_õõÿÿõ_ÿõUÿUUõÿUõ_õõUÿõ_Uÿ_õÿÿõUÿUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUõ_õõUÿõõõõÿUUUõ_õUÿÿUUõÿÿõ_õõõõõÿUõUÿUUõ__õ_õõUÿõ_Uõ_UÿUõUÿUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿÿUÿÿõõõUÿ_UUõÿ_UUÿUUõ_õõ_õõõõUÿ_UÿÿUUõ_õõ_õUÿÿUÿ_ÿÿUÿUUÿÿUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÿ_UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD`[-- title: The Sky House -- author: Ahmed Khalifa -- desc: A metroidvania game about a flying house -- script: lua -- input: gamepad local ADDR=0x3FC0 local PALETTES = { {name="DB16", data="140c1c44243430346d4e4a4e854c30346524d04648757161597dced27d2c8595a16daa2cd2aa996dc2cadad45edeeed6"}, {name="PICO-8",data="0000007e25531d2b535f574fab5236008751ff004d83769cff77a8ffa300c2c3c700e756ffccaa29adfffff024fff1e8"}, {name="ARNE16",data="0000001b2632005784493c2ba4642244891abe26332f484e31a2f2eb89319d9d9da3ce27e06f8bb2dceff7e26bffffff"}, {name="EDG16", data="193d3f3f2832743f399e2835b86f50327345e53b444f67810484d1fb922bafbfd263c64de4a6722ce8f4ffe762ffffff"}, {name="A64", data="0000004c3435313a9148545492562b509450b148638080787655a28385cf9cabb19ccc47cd93738fbfd5bbc840ede6c8"}, {name="C64", data="00000057420040318d5050508b542955a0498839327878788b3f967869c49f9f9f94e089b8696267b6bdbfce72ffffff"}, {name="VIC20", data="000000772d2642348ba85fb4b668627e70caa8734a559e4ae99df5e9b287bdcc7185d4dc92df87c5ffffffffb0ffffff"}, {name="CGA", data="000000aa00000000aa555555aa550000aa00ff5555aaaaaa5555ffaa00aa00aaaa55ff55ff55ff55ffffffff55ffffff"}, {name="SLIFE", data="0000001226153f28117a2222513155d13b27286fb85d853acc8218e07f8a9b8bff68c127c7b581b3e868a8e4d4ffffff"}, {name="JMP", data="000000191028833129453e78216c4bdc534b7664fed365c846af45e18d79afaab9d6b97b9ec2e8a1d685e9d8a1f5f4eb"}, {name="CGARNE",data="0000002234d15c2e788a36225e606e0c7e45e23d69aa5c3d4c81fb44aacceb8a60b5b5b56cd9477be2f9ffd93fffffff"}, {name="PSYG", data="0000001b1e29003308362747084a3c443f41a2324e52524c546a0073615064647c516cbf77785be08b799ea4a7cbe8f7"}, {name="EROGE", data="0d080d2a23494f2b247d384032535f825b314180a0c16c5bc591547bb24e74adbbe89973bebbb2f0bd77fbdf9bfff9e4"}, {name="EISLAND",data="051625794765686086567864ca657e8686918184abcc8d867ea78839d4b98dbcd29dc085edc38de6d1d1f5e17af6f6bf"}, } function updatePallete(index) local pal=PALETTES[index].data for i=1,#pal,2 do poke(ADDR+i//6*3+i//2%3,tonumber(pal:sub(i,i+1),16)) end end -- create animation object -- frames: array of the upper left corner of each frame -- size: 0 means 8x8, 1 means 16x16, etc -- fps: frames per seconds function createAnimation(frames,size,fps) return {cf=0,frames=frames,size=size,t=1/fps*1000,spf=1/fps*1000} end -- reset the animation to the original frame -- anim: animation object to reset function resetAnimation(anim) anim.cf=0 anim.t=anim.spf end -- Draw the current animation object -- anim: animation object to draw -- dt: delta time since last update -- x,y: position of upper left corner -- ts: transparent color -- flip: 0 no flip 1 flip horizontally function drawAnimation(anim,dt,x,y,ts,flip) anim.t=anim.t-dt if anim.t<=0 then anim.t=anim.t+anim.spf anim.cf=anim.cf+1 if anim.cf>=#anim.frames then anim.cf=0 end end local f=anim.frames[anim.cf+1] for i=0,anim.size do for j=0,anim.size do if flip==0 then spr(f+i+j*16,x+i*8,y+j*8,ts,1,flip) else spr(f+i+j*16,x+(anim.size-i)*8,y+j*8,ts,1,flip) end end end end Laser={} Laser.new=function(x,y,f) local temp=0 if f==22 or f==38 or f==7 then temp=7 end if f==134 or f==150 or f==23 then temp=23 end return{x=x,y=y,f=temp,t=0, update=Laser.update,draw=Laser.draw, reset=Laser.reset} end Laser.reset=function(l) l.t=0 end Laser.update=function(l,dt) l.t=(l.t+1)%100 local vis=true if l.f==7 and l.t>50 then vis=false end if l.f==23 and l.t<=50 then vis=false end if (l.t==0 and l.f==7) or (l.t==51 and l.f==23) then sfx(7,4*12,-1,1) end if vis and checkSpriteCollision(p,l) then deathInit() gState=3 end end Laser.draw=function(l,x,y,dt) if l.f==7 then if l.t<=50 then spr(l.f,l.x+x,l.y+y,2) elseif l.t>80 and l.t%20<10 then spr(77,l.x+x,l.y+y,2) end elseif l.f==23 then if l.t>50 then spr(l.f,l.x+x,l.y+y,2) elseif l.t>30 and l.t%20>10 then spr(77,l.x+x,l.y+y,2) end else spr(l.f,l.x+x,l.y+y,2) end end Spikeball={} Spikeball.new=function(x,y,f) local r=24 if f==54 then r=48 end return {x=x,y=y,f=f,r=r, update=Spikeball.update,draw=Spikeball.draw} end Spikeball.update=function(s,dt) local dx=p.x-s.x local dy=p.y-s.y local dist=math.sqrt(math.pow(dx,2)+math.pow(dy,2)) if dist=0 and angle<90 then line(s.x+4+x,s.y+4+y,s.x+4+x,s.y+4+y,0) elseif angle>=90 and angle<180 then line(s.x+4+x,s.y+3+y,s.x+4+x,s.y+3+y,0) elseif angle>=-90 and angle<0 then line(s.x+3+x,s.y+4+y,s.x+3+x,s.y+4+y,0) elseif angle>=-180 and angle<-90 then line(s.x+3+x,s.y+3+y,s.x+3+x,s.y+3+y,0) end end FinishSprite={} FinishSprite.new=function(x,y,f) return {x=x,y=y,f=f, update=FinishSprite.update, draw=FinishSprite.draw} end FinishSprite.update=function(f,dt) if checkSpriteCollision(p,f) then sfx(2,3*12,-1,1) trans=20 shift=0 gState=4 startTime=time()-startTime end end FinishSprite.draw=function(f,x,y,dt) spr(f.f,f.x+x,f.y+y,2) end Spikesquare={} Spikesquare.new=function(x,y,f) local angles={} if f==70 or f==71 then angles={90,0,270,180} elseif f==86 or f==87 then angles={90,180,270,0} elseif f==102 or f==103 then angles={0,180} elseif f==118 or f==119 then angles={90,270} end local ca=0 for i=0,#angles-1 do ca=(i)%#angles local temp=math.rad(angles[ca+1]) local dx=math.cos(temp) local dy=math.sin(temp) if not checkSolidCollision({x=x,y=y},dx,dy) then break end end return {x=x,y=y,f=f, a=ca,angles=angles, ox=x,oy=y,oa=ca, move=true,acc=0, update=Spikesquare.update, draw=Spikesquare.draw, reset=Spikesquare.reset, speed=f%2+1} end Spikesquare.reset=function(s) s.a=s.oa s.x=s.ox s.y=s.oy end Spikesquare.update=function(s,dt) local temp=math.rad(s.angles[s.a+1]) local dx=math.cos(temp) local dy=math.sin(temp) for i=0,2 do if checkSolidCollision(s,dx,dy) then s.a=(s.a+1)%#s.angles sfx(8,7*12,-1,1,7) else s.x=s.x+s.speed*0.25*dx s.y=s.y+s.speed*0.25*dy end end if checkSpriteCollision(p,s) then deathInit() gState=3 end end Spikesquare.draw=function(s,x,y,dt) spr(s.f,s.x+x,s.y+y,2) local angle=s.angles[s.a+1] if angle==90 then line(s.x+4+x,s.y+5+y,s.x+3+x,s.y+5+y,0) line(s.x+4+x,s.y+4+y,s.x+3+x,s.y+4+y,0) elseif angle==270 then line(s.x+4+x,s.y+2+y,s.x+3+x,s.y+2+y,0) line(s.x+4+x,s.y+3+y,s.x+3+x,s.y+3+y,0) elseif angle==0 then line(s.x+4+x,s.y+3+y,s.x+4+x,s.y+4+y,0) line(s.x+5+x,s.y+3+y,s.x+5+x,s.y+4+y,0) elseif angle==180 then line(s.x+3+x,s.y+3+y,s.x+3+x,s.y+4+y,0) line(s.x+2+x,s.y+3+y,s.x+2+x,s.y+4+y,0) end end Collectible={} Collectible.new=function(x,y,f) return {x=x,y=y,f=f,col=false, sy=0,dy=2*math.random(0,1)-1, update=Collectible.update,draw=Collectible.draw} end Collectible.update=function(c,dt) local isCoin=false if checkSpriteCollision(p,c) and not c.col then c.col=true if c.f==17 then rKey=true elseif c.f==33 then gKey=true elseif c.f==49 then bKey=true elseif c.f==65 then oKey=true elseif c.f==193 then fKey=true elseif c.f==97 then lEngine=true elseif c.f==113 then rEngine=true elseif c.f==81 then coin1=true isCoin=true elseif c.f==129 then coin2=true isCoin=true elseif c.f==145 then coin3=true isCoin=true end updateMap(isCoin) saveGame() isSavePoint=false end end Collectible.draw=function(c,x,y,dt) if c.col then return end c.sy=c.sy+c.dy*dt/100 if (c.dy>0 and c.sy>=0) or (c.dy<0 and c.sy<=-4) then c.dy=c.dy*-1 end spr(c.f,c.x+x,c.y+c.sy+y,2) end SavePoint={} SavePoint.new=function(x,y) return {x=x,y=y,t=0, update=SavePoint.update,draw=SavePoint.draw} end SavePoint.update=function(s,dt) t=(t+1)%20 if checkSpriteCollision(p,s) then flicker=sx==rx and sy==ry and isSavePoint if not flicker then sfx(6,4*12,-1,1) end saveGame() isSavePoint=true end end SavePoint.draw=function(s,x,y,dt) if sx==rx and sy==ry and isSavePoint then if t>10 then spr(1,s.x+x,s.y+y,2) else spr(161,s.x+x,s.y+y,2) end else spr(1,s.x+x,s.y+y,2) end end Death={} Death.new=function(x,y,vx,vy,f) return {x=x,y=y,vx=vx,vy=vy, anim=createAnimation({f,f+16,f+32,f+48,f+64},0,10), alife=true} end Death.update=function(d,dt) d.x=d.x+d.vx d.y=d.y+d.vy if d.anim.cf==#d.anim.frames-1 then d.alife=false end end Death.draw=function(d,dt) if d.alife then drawAnimation(d.anim,dt,d.x,d.y,2,0) end end Player={} Player.new=function(x,y) return {x=x,y=y,vx=0,vy=0,mvy=10,dir=0, state=0,wState=0, sft=0, anim=createAnimation({264,265,266,267,268,267,266,269,270,269},0,20), wAnim=createAnimation({282,283,284,285,286,285,284},0,15) } end Player.update=function(p,dt) p.sft=(p.sft+1)%6 p.state=0 p.vx=0 if btn(2) then p.state=1 p.dir=1 p.vx=-2 end if btn(3) then p.state=1 p.dir=0 p.vx=2 end if btnp(5,1,60000) then if not checkSolidCollision(p,0,gravity) then p.wState=1 p.vy=gravity*-5 sfx(1,45+p.sft%2) else p.vy=gravity*-5 sfx(1,45+p.sft%2) end if p.wState==1 then p.mvy=gravity*1 end end if p.wState==0 and not btn(5) and p.vy<0 then p.vy=p.vy*0.5 end if checkSolidCollision(p,0,gravity) then p.mvy=gravity*3 p.wState=0 end if (btn(1) and gravity==1) or (btn(0) and gravity==-1) then p.mvy=gravity*3 p.wState=0 end if p.state==1 and p.sft==0 and checkSolidCollision(p,0,gravity) then sfx(0,2*(p.sft%2),-1,3) end end Player.draw=function(p,x,y,dt) if p.state==0 or not checkSolidCollision(p,0,gravity) then resetAnimation(p.anim) p.anim.cf=2 end if p.vy>0 then p.anim.cf=1 end if p.vy<0 then p.anim.cf=0 end if p.wState==0 then resetAnimation(p.wAnim) p.wAnim.cf=0 end local shift=0 if p.anim.cf%2==1 then shift=-1 end temp=0 if gravity==-1 then temp=2 end drawAnimation(p.wAnim,dt,p.x-3+p.dir*6+x,p.y+gravity*shift+y,2,p.dir|temp) drawAnimation(p.wAnim,dt,p.x-5+p.dir*10+x,p.y+gravity*shift+y,2,p.dir|temp) drawAnimation(p.anim,dt,p.x+x,p.y+y,2,p.dir|temp) end function checkSolidCollision(o,sx,sy) return checkTileCollision(o,sx,sy,2) or checkTileCollision(o,sx,sy,11) or checkTileCollision(o,sx,sy,12) end function checkPointRect(po,p1,p2) return po.x>=p1.x and po.y>=p1.y and po.x<=p2.x and po.y<=p2.y end function checkSpriteCollision(e1,e2) local p1={x=e1.x+2,y=e1.y+2} local p2={x=e1.x+6,y=e1.y+6} local po={x=e2.x+2,y=e2.y+2} local result=checkPointRect(po,p1,p2) po={x=e2.x+6,y=e2.y+2} result=result or checkPointRect(po,p1,p2) po={x=e2.x+2,y=e2.y+6} result=result or checkPointRect(po,p1,p2) po={x=e2.x+6,y=e2.y+6} return result or checkPointRect(po,p1,p2) end function getSavePoint() for x=0,29 do for y=0,16 do local tile=mget(rx*30+x,ry*17+y) local tempSave=tile==1 or tile==177 if tile%16==1 and not isSavePoint then return {x=x,y=y} end if tempSave and isSavePoint then return {x=x,y=y} end end end end function loadGame() rx=sx ry=sy local start=getSavePoint() p=Player.new(start.x*8,start.y*8) for i=1,#sprites do if sprites[i].reset then sprites[i].reset(sprites[i]) end end end function saveGame() sx=rx sy=ry end -- initialize the required data function init() debug=false channel=0 debugX=2 debugY=1 isSavePoint=true startTime=0 twice=0 gravity=1 endAnim=createAnimation({281,297,313,329,345,329,361,0},0,10) endWAnim=createAnimation({280,296,312,0,0,0,0,0},0,10) trans=0 camX=0 camY=0 vibrate=20 pt=time() t=0 dt=0 death=0 if debug then sx=debugX sy=debugY else sx=4 sy=7 end cx=0 cy=0 dialog=false dialogText="" sprites={} gState=0 loadGame() exp={} for x=0,7 do exp[x]={} for y=0,7 do exp[x][y]=false end end exp[rx][ry]=true dials={} for i=0,15 do dials[i]=true end rKey=false gKey=false oKey=false bKey=false fKey=false lEngine=false rEngine=false coin1=false coin2=false coin3=false end init() function printCenter(string,x,y,color,scale) local width=print(string,0,-100,color,false,scale); print(string,x-width/2,y,color,false,scale) end function checkTileCollision(e,xoff,yoff,type) local x=e.x+2+xoff local y=e.y-1+yoff local bv1=mget(rx*30+math.floor(x/8),ry*17+math.floor((y+8)/8))%16 local bv2=mget(rx*30+math.floor((x+3)/8),ry*17+math.floor((y+8)/8))%16 if bv1==type or bv2==type then return true end local tv1=mget(rx*30+math.floor(x/8),ry*17+math.floor((y+2)/8))%16 local tv2=mget(rx*30+math.floor((x+3)/8),ry*17+math.floor((y+2)/8))%16 if tv1==type or tv2==type then return true end local rv1=mget(rx*30+math.floor((x+3)/8),ry*17+math.floor((y+2)/8))%16 local rv2=mget(rx*30+math.floor((x+3)/8),ry*17+math.floor((y+8)/8))%16 if rv1==type or rv2==type then return true end local lv1=mget(rx*30+math.floor(x/8),ry*17+math.floor((y+2)/8))%16 local lv2=mget(rx*30+math.floor(x/8),ry*17+math.floor((y+8)/8))%16 if lv1==type or lv2==type then return true end return false end function sign(v) if v>0 then return 1 end if v<0 then return -1 end return 0 end function spikeDirection(e,x,y) local tile=mget(rx*30+math.floor((e.x+x*4+4)/8),ry*17+math.floor((e.y+y*4+4)/8)) return { x=math.floor(tile/32)*(2*sign(math.floor(tile%32/16))-1), y=(1-math.floor(tile/32))*(2*sign(math.floor(tile%32/16))-1) } end function updatePhysics(e) e.vy=e.vy+gravity*0.5 if sign(e.vy)==sign(e.mvy) and math.abs(e.vy)>math.abs(e.mvy) then e.vy=e.mvy end for i=1,math.abs(e.vx) do if checkSolidCollision(e,sign(e.vx),0) then e.vx=0 break end if checkTileCollision(e,sign(e.vx),0,15) then if spikeDirection(e,sign(e.vx),0).x==sign(e.vx) then deathInit() gState=3 break else e.vx=0 break end end e.x=e.x+sign(e.vx) end for i=1,math.ceil(math.abs(e.vy)) do if checkSolidCollision(e,0,sign(e.vy)) then e.vy=0 break end if checkTileCollision(e,0,sign(e.vy),15) then if spikeDirection(e,0,sign(e.vy)).y==sign(e.vy) then deathInit() gState=3 break else e.vy=0 break end end e.y=e.y+sign(e.vy) end end function updateMap(isCoin) if not isCoin then trans=6 vibrate=10 sfx(2,3*12,-1,1) else sfx(9,4*12,-1,1) end for x=0,239 do for y=0,135 do tile=mget(x,y) if rKey and (tile==44 or tile==60 or tile==203 or tile==219) then mset(x,y,29) end if gKey and (tile==12 or tile==28) then mset(x,y,13) end if bKey and (tile==76 or tile==92 or tile==139 or tile==155) then mset(x,y,45) end if oKey and (tile==171 or tile==187 or tile==108 or tile==124) then mset(x,y,61) end if lEngine and rEngine and (tile==140 or tile==156) then mset(x,y,0) end if fKey then if tile==25 then mset(x,y,93) end if tile==169 then mset(x,y,185) end if tile==105 then mset(x,y,202) end if tile==72 then mset(x,y,122) end if tile==216 then mset(x,y,154) end if tile==217 then mset(x,y,201) end if tile==153 then mset(x,y,186) end if tile==137 then mset(x,y,170) end if tile==179 then mset(x,y,154) end if tile==195 then mset(x,y,201) end if tile==131 then mset(x,y,74) end if tile==121 or tile==25 or tile==138 or tile==218 then mset(x,y,93) end end end end end function hideSprites(tile,x,y) if tile==22 or tile==134 then return 176 end if tile==38 or tile==150 then return 192 end if tile%16==1 or tile%16==6 or tile%16==7 or tile%16==13 then return 0 end -- if math.floor(tile/16)==12 then return 0 end if tile%16==0 and (tile>16 and tile<160) then return (math.floor(tile/16)-2)*16+11 end if tile==160 then return 18 end if tile==428 and fKey then return 0 end if (tile==44 or tile==60) and rKey then return 0 end if (tile==12 or tile==28) and gKey then return 0 end if (tile==76 or tile==92) and bKey then return 0 end if (tile==108 or tile==124) and oKey then return 0 end if (tile==140 or tile==156) and rEngine and lEngine then return 0 else if tile==140 and lEngine then return 172 end if tile==156 and rEngine then return 188 end end if tile%16==3 or tile%16==8 or tile%16==9 or tile%16==10 then return 0 end return tile end function backgroundTiles(tile,x,y) if tile%16==3 or tile%16==8 or tile%16==9 or tile%16==10 or tile%16==13 then return tile end if tile==41 and coin1 then return 81 end if tile==57 and coin2 then return 81 end if tile==73 and coin3 then return 81 end return 0 end function spawnSprites() if not (cx==rx and cy==ry) then cx=rx cy=ry sprites={} for x=0,29 do for y=0,16 do local v=mget(cx*30+x,cy*17+y) if v==7 or v==22 or v==23 or v==38 or v==134 or v==150 then sprites[#sprites+1]=Laser.new(x*8,y*8,v) elseif v==6 or v==54 then sprites[#sprites+1]=Spikeball.new(x*8,y*8,v,24) elseif v==70 or v==71 or v==86 or v==87 or v==102 or v==103 or v==118 or v==119 then sprites[#sprites+1]=Spikesquare.new(x*8,y*8,v) elseif v==177 then sprites[#sprites+1]=SavePoint.new(x*8,y*8) elseif v==93 then sprites[#sprites+1]=FinishSprite.new(x*8,y*8,v) elseif (v==17 and not rKey) or (v==33 and not gKey) or (v==65 and not oKey) or (v==193 and not fKey) or (v==81 and not coin1) or (v==129 and not coin2) or (v==145 and not coin3) or (v==97 and not lEngine) or (v==113 and not rEngine) or (v==49 and not bKey) then sprites[#sprites+1]=Collectible.new(x*8,y*8,v) end end end end end function worldTIC() -- if btnp(4,1,60000) then gState=2 end -- update game camera if p.x+4>240 then p.x=p.x-240 rx=rx+1 end if p.x+4<0 then p.x=p.x+240 rx=rx-1 end if p.y+4>136 then p.y=p.y-136 ry=ry+1 end if p.y+4<0 then p.y=p.y+136 ry=ry-1 end -- checkDialog() spawnSprites() -- update the exploration map exp[rx][ry]=true -- update game objects Player.update(p,dt) updatePhysics(p) for i=1,#sprites do sprites[i].update(sprites[i],dt) end -- draw screen if fKey then vibrate=1 if pt%1200<120 then trans=1 sfx(2,3*12,-1,1) end end if vibrate >0 then vibrate=vibrate-1 -- camX=math.random(-2,2) -- camY=math.random(-2,2) poke(0x3FF9,math.random(-2,2)) poke(0x3FF9+1,math.random(-2,2)) sfx(4,0,-1,2) else poke(0x3FF9,0) poke(0x3FF9+1,0) camX=0 camY=0 if gState==1 then sfx(-1,0,-1,2) end end spr(16,0,0) cls(pix(rx-1,ry)) map(rx*30,ry*17,30,17,camX,camY,2,1,backgroundTiles) for i=1,#sprites do sprites[i].draw(sprites[i],camX,camY,dt) end Player.draw(p,camX,camY,dt) map(rx*30,ry*17,30,17,camX,camY,2,1,hideSprites) if trans>0 then trans=trans-1 cls(15) end --if checkTileCollision(p,0,0,444) end function deathInit() if vibrate>0 then sfx(-1,0,-1,1) end death=death+1 deathPart={} for i=0,20 do deathPart[i]=Death.new( p.x+math.random(-2,2), p.y+math.random(-2,2), math.random(-2,2), math.random(-2,2), 260) end sfx(2,3*12,-1,2) end function deathTIC() twice=twice-1 if twice<0 then twice=0 end spr(16,0,0) cls(pix(rx-1,ry)) map(rx*30,ry*17,30,17,camX,camY,2,1,backgroundTiles) for i=1,#sprites do sprites[i].draw(sprites[i],0,0,dt) end map(rx*30,ry*17,30,17,0,0,2,1,hideSprites) for i=0,#deathPart do Death.update(deathPart[i],dt); Death.draw(deathPart[i],dt); end if pt%500<250 then printCenter("Tap (X) twice to Respawn",15*8,8*8,15,1) end if btnp(5,1,60000) and twice<=0 then twice=15 elseif btnp(5,1,60000) and twice>0 then loadGame() gState=1 twice=0 end if fKey then poke(0x3FF9,math.random(-2,2)) poke(0x3FF9+1,math.random(-2,2)) end end function getDialogIndex() for x=0,29 do for y=0,16 do local index=mget(rx*30+x,ry*17+y) if math.floor(index/16)==12 then return index%16 end end end return -1 end function checkDialog() local dialogIndex=getDialogIndex() if dialogIndex>=0 and dials[dialogIndex] then dialog=true dials[dialogIndex]=false end if dialogIndex==0 then dialogText="What happened?" end if dialogIndex==1 then dialogText="Hello anyone around?" end if dialogIndex==2 then dialogText="Whaaat? I must be careful." end end function dialogTIC() rect(40,50,160,40,0) rectb(42,52,156,36,15) printCenter(dialogText,15*8,66,15,1) printCenter("Press Z to continue",15*8,10*8,15,1) if btnp(4,1,60000) then dialog=false end end function hideMap(tile,x,y) if (math.floor(tile/16)==14 or tile==252) and not exp[x-81][y-103] then return 250 end return tile end function mapTIC() if btnp(4,1,60000) or btnp(7,1,60000) then gState=1 twice=0 end -- draw inventory cls(13) map(2*30,6*17,30,17,0,0,2,1,hideMap) print("Bag",10.5*8,1*8) if pt%500<250 then spr(251,(21+rx)*8,(1+ry)*8,2) end if not rKey then spr(247,8*8,4*8,2) end if not gKey then spr(247,10*8,4*8,2) end if not bKey then spr(247,8*8,6*8,2) end if not oKey then spr(247,10*8,6*8,2) end if not lEngine then spr(249,6*8,5*8,2) end if not rEngine then spr(249,16*8,5*8,2) end if not coin1 then spr(248,12*8,6*8,2) end if not coin3 then spr(248,14*8,6*8,2) end if not coin2 then spr(248,13*8,4*8,2) end if pt%500<250 then printCenter("Press (Z) to Close",15*8,13*8,15,1) end end function menuTIC() twice=twice-1 if twice<0 then twice=0 end if fy==nil then fy=0 dir=1 end if btnp(5,1,60000) and twice<=0 then twice=15 elseif btnp(5,1,60000) and twice>0 then gState=1 twice=0 startTime=time() if debug then updateMap(true) end end -- draw main menu cls(13) map(1*30,6*17,30,17,0,0,2) for x=0,3 do for y=0,5 do spr(16*y+x+298,x*8+175,y*8+20+fy,2) end end if t%10==0 then if fy<=-2 or fy>=2 then dir=dir*-1 end fy=fy+dir end if pt%500<250 then printCenter("Tap (X) twice to Start",15*8,14*8-3,15,1) end printCenter("Game by Ahmed Khalifa",15*8,16*8,15,1) end function endTIC() shift=shift+0.3 if shift>150 then shift=150 end camX=math.random(-2,2) camY=math.random(-2,2) spr(16,0,0) cls(pix(rx-1,ry)) rect(0,0,240,shift,13) if shift>7*8 then spr(40,25*8,7*8,2) end if shift>5*8 then spr(40,8*8,5*8,2) end if shift>2*8 then spr(40,13*8,2*8,2) end --if shift>12*8 then spr(40,16*8,12*8,2) end map(rx*30,ry*17,30,17,camX,camY+shift,2,1,backgroundTiles) map(rx*30,ry*17,30,17,camX,camY+shift,2,1,hideSprites) if trans>0 then trans=trans-1 cls(15) end numCoins=0 if coin1 then numCoins=numCoins+1 end if coin2 then numCoins=numCoins+1 end if coin3 then numCoins=numCoins+1 end if shift==150 then sfx(-1,0,-1,2) printCenter("THE END",15*8,4*8,15,2) printCenter("Death: "..death,15*8,6*8,15,1) printCenter("Time: "..math.floor(startTime/1000).." secs",15*8,7*8,15,1) printCenter("Coins: "..numCoins.."/3",15*8,8*8,15,1) printCenter("Inspired by REDDER and VVVVVV",15*8,10*8,15,1) -- printCenter("REDDER and VVVVVV",15*8,11*8,15,1) printCenter("Thanks to", 15*8,12*8,15,1) printCenter("Ben Allen, Mike Cook, Trelemar",15*8,13*8,15,1) printCenter("Widget, James Watkins, and Joni Kittaka",15*8,14*8,15,1) printCenter("Game by Ahmed Khalifa",15*8,16*8,15,1) else sfx(4,0,-1,2,15*(1-shift/150)) end end -- update function function TIC() -- calculate delta time dt=time()-pt pt=time() t=t+1 -- state managing if dialog then dialogTIC() elseif gState==0 then menuTIC() elseif gState==1 then worldTIC() elseif gState==2 then mapTIC() elseif gState==3 then deathTIC() elseif gState==4 then endTIC() end end