From 0d81fe98f1d2bebc8cbeb14563b6cffe2cf2c676 Mon Sep 17 00:00:00 2001 From: kdx Date: Thu, 16 Mar 2023 23:32:20 +0100 Subject: celex --- README | 18 + celex.p8 | 1867 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1885 insertions(+) create mode 100644 README create mode 100644 celex.p8 diff --git a/README b/README new file mode 100644 index 0000000..bbfae12 --- /dev/null +++ b/README @@ -0,0 +1,18 @@ +celex +===== + +features +-------- + +- dash freeze removed +- no deadname +- cprint and fprint functions for easier text management +- screenshake on/off menuitem + +credits +------- + +kdx's celeste classic mod base +original game by maddy thorson and noel berry + +this cart is licensed under the cc by-nc-sa 4.0 license diff --git a/celex.p8 b/celex.p8 new file mode 100644 index 0000000..b99038c --- /dev/null +++ b/celex.p8 @@ -0,0 +1,1867 @@ +pico-8 cartridge // http://www.pico-8.com +version 41 +__lua__ +-- ~celex~ +-- maddy thorson + noel berry +-- modified by kdx + +-- globals -- +------------- + +room = { x=0, y=0 } +objects = {} +types = {} +freeze=0 +shake=0 +will_restart=false +delay_restart=0 +got_fruit={} +has_dashed=false +sfx_timer=0 +has_key=false +pause_player=false +flash_bg=false +music_timer=0 +screenshake=true + +k_left=0 +k_right=1 +k_up=2 +k_down=3 +k_jump=4 +k_dash=5 + +-- entry point -- +----------------- + +function _init() + menuitem_screenshake() + title_screen() +end + +function title_screen() + got_fruit = {} + for i=0,29 do + add(got_fruit,false) end + frames=0 + deaths=0 + max_djump=1 + start_game=false + start_game_flash=0 + music(40,0,7) + + load_room(7,3) +end + +function begin_game() + frames=0 + seconds=0 + minutes=0 + music_timer=0 + start_game=false + music(0,0,7) + load_room(0,0) +end + +function level_index() + return room.x%8+room.y*8 +end + +function is_title() + return level_index()==31 +end + +-- effects -- +------------- + +clouds = {} +for i=0,16 do + add(clouds,{ + x=rnd(128), + y=rnd(128), + spd=1+rnd(4), + w=32+rnd(32) + }) +end + +particles = {} +for i=0,24 do + add(particles,{ + x=rnd(128), + y=rnd(128), + s=0+flr(rnd(5)/4), + spd=0.25+rnd(5), + off=rnd(1), + c=6+flr(0.5+rnd(1)) + }) +end + +dead_particles = {} + +-- player entity -- +------------------- + +player = +{ + init=function(this) + this.p_jump=false + this.p_dash=false + this.grace=0 + this.jbuffer=0 + this.djump=max_djump + this.dash_time=0 + this.dash_effect_time=0 + this.dash_target={x=0,y=0} + this.dash_accel={x=0,y=0} + this.hitbox = {x=1,y=3,w=6,h=5} + this.spr_off=0 + this.was_on_ground=false + create_hair(this) + end, + update=function(this) + if (pause_player) return + + local input = btn(k_right) and 1 or (btn(k_left) and -1 or 0) + + -- spikes collide + if spikes_at(this.x+this.hitbox.x,this.y+this.hitbox.y,this.hitbox.w,this.hitbox.h,this.spd.x,this.spd.y) then + kill_player(this) end + + -- bottom death + if this.y>128 then + kill_player(this) end + + local on_ground=this.is_solid(0,1) + local on_ice=this.is_ice(0,1) + + -- smoke particles + if on_ground and not this.was_on_ground then + init_object(smoke,this.x,this.y+4) + end + + local jump = btn(k_jump) and not this.p_jump + this.p_jump = btn(k_jump) + if (jump) then + this.jbuffer=4 + elseif this.jbuffer>0 then + this.jbuffer-=1 + end + + local dash = btn(k_dash) and not this.p_dash + this.p_dash = btn(k_dash) + + if on_ground then + this.grace=6 + if this.djump 0 then + this.grace-=1 + end + + this.dash_effect_time -=1 + if this.dash_time > 0 then + init_object(smoke,this.x,this.y) + this.dash_time-=1 + this.spd.x=appr(this.spd.x,this.dash_target.x,this.dash_accel.x) + this.spd.y=appr(this.spd.y,this.dash_target.y,this.dash_accel.y) + else + + -- move + local maxrun=1 + local accel=0.6 + local deccel=0.15 + + if not on_ground then + accel=0.4 + elseif on_ice then + accel=0.05 + if input==(this.flip.x and -1 or 1) then + accel=0.05 + end + end + + if abs(this.spd.x) > maxrun then + this.spd.x=appr(this.spd.x,sign(this.spd.x)*maxrun,deccel) + else + this.spd.x=appr(this.spd.x,input*maxrun,accel) + end + + --facing + if this.spd.x!=0 then + this.flip.x=(this.spd.x<0) + end + + -- gravity + local maxfall=2 + local gravity=0.21 + + if abs(this.spd.y) <= 0.15 then + gravity*=0.5 + end + + -- wall slide + if input!=0 and this.is_solid(input,0) and not this.is_ice(input,0) then + maxfall=0.4 + if rnd(10)<2 then + init_object(smoke,this.x+input*6,this.y) + end + end + + if not on_ground then + this.spd.y=appr(this.spd.y,maxfall,gravity) + end + + -- jump + if this.jbuffer>0 then + if this.grace>0 then + -- normal jump + psfx(1) + this.jbuffer=0 + this.grace=0 + this.spd.y=-2 + init_object(smoke,this.x,this.y+4) + else + -- wall jump + local wall_dir=(this.is_solid(-3,0) and -1 or this.is_solid(3,0) and 1 or 0) + if wall_dir!=0 then + psfx(2) + this.jbuffer=0 + this.spd.y=-2 + this.spd.x=-wall_dir*(maxrun+1) + if not this.is_ice(wall_dir*3,0) then + init_object(smoke,this.x+wall_dir*6,this.y) + end + end + end + end + + -- dash + local d_full=5 + local d_half=d_full*0.70710678118 + + if this.djump>0 and dash then + init_object(smoke,this.x,this.y) + this.djump-=1 + this.dash_time=4 + has_dashed=true + this.dash_effect_time=10 + local v_input=(btn(k_up) and -1 or (btn(k_down) and 1 or 0)) + if input!=0 then + if v_input!=0 then + this.spd.x=input*d_half + this.spd.y=v_input*d_half + else + this.spd.x=input*d_full + this.spd.y=0 + end + elseif v_input!=0 then + this.spd.x=0 + this.spd.y=v_input*d_full + else + this.spd.x=(this.flip.x and -1 or 1) + this.spd.y=0 + end + + psfx(3) + freeze=0 + shake=6 + this.dash_target.x=2*sign(this.spd.x) + this.dash_target.y=2*sign(this.spd.y) + this.dash_accel.x=1.5 + this.dash_accel.y=1.5 + + if this.spd.y<0 then + this.dash_target.y*=.75 + end + + if this.spd.y!=0 then + this.dash_accel.x*=0.70710678118 + end + if this.spd.x!=0 then + this.dash_accel.y*=0.70710678118 + end + elseif dash and this.djump<=0 then + psfx(9) + init_object(smoke,this.x,this.y) + end + + end + + -- animation + this.spr_off+=0.25 + if not on_ground then + if this.is_solid(input,0) then + this.spr=5 + else + this.spr=3 + end + elseif btn(k_down) then + this.spr=6 + elseif btn(k_up) then + this.spr=7 + elseif (this.spd.x==0) or (not btn(k_left) and not btn(k_right)) then + this.spr=1 + else + this.spr=1+this.spr_off%4 + end + + -- next level + if this.y<-4 and level_index()<30 then next_room() end + + -- was on the ground + this.was_on_ground=on_ground + + end, --121 then + this.x=clamp(this.x,-1,121) + this.spd.x=0 + end + + set_hair_color(this.djump) + draw_hair(this,this.flip.x and -1 or 1) + spr(this.spr,this.x,this.y,1,1,this.flip.x,this.flip.y) + unset_hair_color() + end +} + +psfx=function(num) + if sfx_timer<=0 then + sfx(num) + end +end + +create_hair=function(obj) + obj.hair={} + for i=0,4 do + add(obj.hair,{x=obj.x,y=obj.y,size=max(1,min(2,3-i))}) + end +end + +set_hair_color=function(djump) + pal(8,(djump==1 and 8 or djump==2 and (7+flr((frames/3)%2)*4) or 12)) +end + +draw_hair=function(obj,facing) + local last={x=obj.x+4-facing*2,y=obj.y+(btn(k_down) and 4 or 3)} + foreach(obj.hair,function(h) + h.x+=(last.x-h.x)/1.5 + h.y+=(last.y+0.5-h.y)/1.5 + circfill(h.x,h.y,h.size,8) + last=h + end) +end + +unset_hair_color=function() + pal(8,8) +end + +player_spawn = { + tile=1, + init=function(this) + sfx(4) + this.spr=3 + this.target= {x=this.x,y=this.y} + this.y=128 + this.spd.y=-4 + this.state=0 + this.delay=0 + this.solids=false + create_hair(this) + end, + update=function(this) + -- jumping up + if this.state==0 then + if this.y < this.target.y+16 then + this.state=1 + this.delay=3 + end + -- falling + elseif this.state==1 then + this.spd.y+=0.5 + if this.spd.y>0 and this.delay>0 then + this.spd.y=0 + this.delay-=1 + end + if this.spd.y>0 and this.y > this.target.y then + this.y=this.target.y + this.spd = {x=0,y=0} + this.state=2 + this.delay=5 + shake=5 + init_object(smoke,this.x,this.y+4) + sfx(5) + end + -- landing + elseif this.state==2 then + this.delay-=1 + this.spr=6 + if this.delay<0 then + destroy_object(this) + init_object(player,this.x,this.y) + end + end + end, + draw=function(this) + set_hair_color(max_djump) + draw_hair(this,1) + spr(this.spr,this.x,this.y,1,1,this.flip.x,this.flip.y) + unset_hair_color() + end +} +add(types,player_spawn) + +spring = { + tile=18, + init=function(this) + this.hide_in=0 + this.hide_for=0 + end, + update=function(this) + if this.hide_for>0 then + this.hide_for-=1 + if this.hide_for<=0 then + this.spr=18 + this.delay=0 + end + elseif this.spr==18 then + local hit = this.collide(player,0,0) + if hit ~=nil and hit.spd.y>=0 then + this.spr=19 + hit.y=this.y-4 + hit.spd.x*=0.2 + hit.spd.y=-3 + hit.djump=max_djump + this.delay=10 + init_object(smoke,this.x,this.y) + + -- breakable below us + local below=this.collide(fall_floor,0,1) + if below~=nil then + break_fall_floor(below) + end + + psfx(8) + end + elseif this.delay>0 then + this.delay-=1 + if this.delay<=0 then + this.spr=18 + end + end + -- begin hiding + if this.hide_in>0 then + this.hide_in-=1 + if this.hide_in<=0 then + this.hide_for=60 + this.spr=0 + end + end + end +} +add(types,spring) + +function break_spring(obj) + obj.hide_in=15 +end + +balloon = { + tile=22, + init=function(this) + this.offset=rnd(1) + this.start=this.y + this.timer=0 + this.hitbox={x=-1,y=-1,w=10,h=10} + end, + update=function(this) + if this.spr==22 then + this.offset+=0.01 + this.y=this.start+sin(this.offset)*2 + local hit = this.collide(player,0,0) + if hit~=nil and hit.djump0 then + this.timer-=1 + else + psfx(7) + init_object(smoke,this.x,this.y) + this.spr=22 + end + end, + draw=function(this) + if this.spr==22 then + spr(13+(this.offset*8)%3,this.x,this.y+6) + spr(this.spr,this.x,this.y) + end + end +} +add(types,balloon) + +fall_floor = { + tile=23, + init=function(this) + this.state=0 + this.solid=true + end, + update=function(this) + -- idling + if this.state == 0 then + if this.check(player,0,-1) or this.check(player,-1,0) or this.check(player,1,0) then + break_fall_floor(this) + end + -- shaking + elseif this.state==1 then + this.delay-=1 + if this.delay<=0 then + this.state=2 + this.delay=60--how long it hides for + this.collideable=false + end + -- invisible, waiting to reset + elseif this.state==2 then + this.delay-=1 + if this.delay<=0 and not this.check(player,0,0) then + psfx(7) + this.state=0 + this.collideable=true + init_object(smoke,this.x,this.y) + end + end + end, + draw=function(this) + if this.state!=2 then + if this.state!=1 then + spr(23,this.x,this.y) + else + spr(23+(15-this.delay)/5,this.x,this.y) + end + end + end +} +add(types,fall_floor) + +function break_fall_floor(obj) + if obj.state==0 then + psfx(15) + obj.state=1 + obj.delay=15--how long until it falls + init_object(smoke,obj.x,obj.y) + local hit=obj.collide(spring,0,-1) + if hit~=nil then + break_spring(hit) + end + end +end + +smoke={ + init=function(this) + this.spr=29 + this.spd.y=-0.1 + this.spd.x=0.3+rnd(0.2) + this.x+=-1+rnd(2) + this.y+=-1+rnd(2) + this.flip.x=maybe() + this.flip.y=maybe() + this.solids=false + end, + update=function(this) + this.spr+=0.2 + if this.spr>=32 then + destroy_object(this) + end + end +} + +fruit={ + tile=26, + if_not_fruit=true, + init=function(this) + this.start=this.y + this.off=0 + end, + update=function(this) + local hit=this.collide(player,0,0) + if hit~=nil then + hit.djump=max_djump + sfx_timer=20 + sfx(13) + got_fruit[1+level_index()] = true + init_object(lifeup,this.x,this.y) + destroy_object(this) + end + this.off+=1 + this.y=this.start+sin(this.off/40)*2.5 + end +} +add(types,fruit) + +fly_fruit={ + tile=28, + if_not_fruit=true, + init=function(this) + this.start=this.y + this.fly=false + this.step=0.5 + this.solids=false + this.sfx_delay=8 + end, + update=function(this) + --fly away + if this.fly then + if this.sfx_delay>0 then + this.sfx_delay-=1 + if this.sfx_delay<=0 then + sfx_timer=20 + sfx(14) + end + end + this.spd.y=appr(this.spd.y,-3.5,0.25) + if this.y<-16 then + destroy_object(this) + end + -- wait + else + if has_dashed then + this.fly=true + end + this.step+=0.05 + this.spd.y=sin(this.step)*0.5 + end + -- collect + local hit=this.collide(player,0,0) + if hit~=nil then + hit.djump=max_djump + sfx_timer=20 + sfx(13) + got_fruit[1+level_index()] = true + init_object(lifeup,this.x,this.y) + destroy_object(this) + end + end, + draw=function(this) + local off=0 + if not this.fly then + local dir=sin(this.step) + if dir<0 then + off=1+max(0,sign(this.y-this.start)) + end + else + off=(off+0.25)%3 + end + spr(45+off,this.x-6,this.y-2,1,1,true,false) + spr(this.spr,this.x,this.y) + spr(45+off,this.x+6,this.y-2) + end +} +add(types,fly_fruit) + +lifeup = { + init=function(this) + this.spd.y=-0.25 + this.duration=30 + this.x-=2 + this.y-=4 + this.flash=0 + this.solids=false + end, + update=function(this) + this.duration-=1 + if this.duration<= 0 then + destroy_object(this) + end + end, + draw=function(this) + this.flash+=0.5 + + print("1000",this.x-2,this.y,7+this.flash%2) + end +} + +fake_wall = { + tile=64, + if_not_fruit=true, + update=function(this) + this.hitbox={x=-1,y=-1,w=18,h=18} + local hit = this.collide(player,0,0) + if hit~=nil and hit.dash_effect_time>0 then + hit.spd.x=-sign(hit.spd.x)*1.5 + hit.spd.y=-1.5 + hit.dash_time=-1 + sfx_timer=20 + sfx(16) + destroy_object(this) + init_object(smoke,this.x,this.y) + init_object(smoke,this.x+8,this.y) + init_object(smoke,this.x,this.y+8) + init_object(smoke,this.x+8,this.y+8) + init_object(fruit,this.x+4,this.y+4) + end + this.hitbox={x=0,y=0,w=16,h=16} + end, + draw=function(this) + spr(64,this.x,this.y) + spr(65,this.x+8,this.y) + spr(80,this.x,this.y+8) + spr(81,this.x+8,this.y+8) + end +} +add(types,fake_wall) + +key={ + tile=8, + if_not_fruit=true, + update=function(this) + local was=flr(this.spr) + this.spr=9+(sin(frames/30)+0.5)*1 + local is=flr(this.spr) + if is==10 and is!=was then + this.flip.x=not this.flip.x + end + if this.check(player,0,0) then + sfx(23) + sfx_timer=10 + destroy_object(this) + has_key=true + end + end +} +add(types,key) + +chest={ + tile=20, + if_not_fruit=true, + init=function(this) + this.x-=4 + this.start=this.x + this.timer=20 + end, + update=function(this) + if has_key then + this.timer-=1 + this.x=this.start-1+rnd(3) + if this.timer<=0 then + sfx_timer=20 + sfx(16) + init_object(fruit,this.x,this.y-4) + destroy_object(this) + end + end + end +} +add(types,chest) + +platform={ + init=function(this) + this.x-=4 + this.solids=false + this.hitbox.w=16 + this.last=this.x + end, + update=function(this) + this.spd.x=this.dir*0.65 + if this.x<-16 then this.x=128 + elseif this.x>128 then this.x=-16 end + if not this.check(player,0,0) then + local hit=this.collide(player,0,-1) + if hit~=nil then + hit.move_x(this.x-this.last,1) + end + end + this.last=this.x + end, + draw=function(this) + spr(11,this.x,this.y-1) + spr(12,this.x+8,this.y-1) + end +} + +message={ + tile=86, + last=0, + draw=function(this) + this.text="-- celeste mountain --#this memorial to those# perished on the climb" + if this.check(player,4,0) then + if this.index<#this.text then + this.index+=0.5 + if this.index>=this.last+1 then + this.last+=1 + sfx(35) + end + end + this.off={x=8,y=96} + for i=1,this.index do + if sub(this.text,i,i)~="#" then + rectfill(this.off.x-2,this.off.y-2,this.off.x+7,this.off.y+6 ,7) + print(sub(this.text,i,i),this.off.x,this.off.y,0) + this.off.x+=5 + else + this.off.x=8 + this.off.y+=7 + end + end + else + this.index=0 + this.last=0 + end + end +} +add(types,message) + +big_chest={ + tile=96, + init=function(this) + this.state=0 + this.hitbox.w=16 + end, + draw=function(this) + if this.state==0 then + local hit=this.collide(player,0,8) + if hit~=nil and hit.is_solid(0,1) then + music(-1,500,7) + sfx(37) + pause_player=true + hit.spd.x=0 + hit.spd.y=0 + this.state=1 + init_object(smoke,this.x,this.y) + init_object(smoke,this.x+8,this.y) + this.timer=60 + this.particles={} + end + spr(96,this.x,this.y) + spr(97,this.x+8,this.y) + elseif this.state==1 then + this.timer-=1 + shake=5 + flash_bg=true + if this.timer<=45 and count(this.particles)<50 then + add(this.particles,{ + x=1+rnd(14), + y=0, + h=32+rnd(32), + spd=8+rnd(8) + }) + end + if this.timer<0 then + this.state=2 + this.particles={} + flash_bg=false + new_bg=true + init_object(orb,this.x+4,this.y+4) + pause_player=false + end + foreach(this.particles,function(p) + p.y+=p.spd + line(this.x+p.x,this.y+8-p.y,this.x+p.x,min(this.y+8-p.y+p.h,this.y+8),7) + end) + end + spr(112,this.x,this.y+8) + spr(113,this.x+8,this.y+8) + end +} +add(types,big_chest) + +orb={ + init=function(this) + this.spd.y=-4 + this.solids=false + this.particles={} + end, + draw=function(this) + this.spd.y=appr(this.spd.y,0,0.5) + local hit=this.collide(player,0,0) + if this.spd.y==0 and hit~=nil then + music_timer=45 + sfx(51) + freeze=10 + shake=10 + destroy_object(this) + max_djump=2 + hit.djump=2 + end + + spr(102,this.x,this.y) + local off=frames/30 + for i=0,7 do + circfill(this.x+4+cos(off+i/8)*8,this.y+4+sin(off+i/8)*8,1,7) + end + end +} + +flag = { + tile=118, + init=function(this) + this.x+=5 + this.score=0 + this.show=false + for i=1,count(got_fruit) do + if got_fruit[i] then + this.score+=1 + end + end + end, + draw=function(this) + this.spr=118+(frames/5)%3 + spr(this.spr,this.x,this.y) + if this.show then + rectfill(32,2,96,31,0) + spr(26,55,6) + print("x"..this.score,64,9,7) + draw_time(49,16) + print("deaths:"..deaths,48,24,7) + elseif this.check(player,0,0) then + sfx(55) + sfx_timer=30 + this.show=true + end + end +} +add(types,flag) + +room_title = { + init=function(this) + this.delay=5 + end, + draw=function(this) + this.delay-=1 + if this.delay<-30 then + destroy_object(this) + elseif this.delay<0 then + + --rectfill(24,58,104,70,0) + --rect(26,64-10,102,64+10,7) + --print("---",31,64-2,13) + if room.x==3 and room.y==1 then + cprint("old site",64,62,7,0) + elseif level_index()==30 then + cprint("summit",64,62,7,0) + else + local level=(1+level_index())*100 + cprint(level.." m",64,62,7,0) + end + --print("---",86,64-2,13) + + draw_time(4,4) + end + end +} + +-- object functions -- +----------------------- + +function init_object(type,x,y) + if type.if_not_fruit~=nil and got_fruit[1+level_index()] then + return + end + local obj = {} + obj.type = type + obj.collideable=true + obj.solids=true + + obj.spr = type.tile + obj.flip = {x=false,y=false} + + obj.x = x + obj.y = y + obj.hitbox = { x=0,y=0,w=8,h=8 } + + obj.spd = {x=0,y=0} + obj.rem = {x=0,y=0} + + obj.is_solid=function(ox,oy) + if oy>0 and not obj.check(platform,ox,0) and obj.check(platform,ox,oy) then + return true + end + return solid_at(obj.x+obj.hitbox.x+ox,obj.y+obj.hitbox.y+oy,obj.hitbox.w,obj.hitbox.h) + or obj.check(fall_floor,ox,oy) + or obj.check(fake_wall,ox,oy) + end + + obj.is_ice=function(ox,oy) + return ice_at(obj.x+obj.hitbox.x+ox,obj.y+obj.hitbox.y+oy,obj.hitbox.w,obj.hitbox.h) + end + + obj.collide=function(type,ox,oy) + local other + for i=1,count(objects) do + other=objects[i] + if other ~=nil and other.type == type and other != obj and other.collideable and + other.x+other.hitbox.x+other.hitbox.w > obj.x+obj.hitbox.x+ox and + other.y+other.hitbox.y+other.hitbox.h > obj.y+obj.hitbox.y+oy and + other.x+other.hitbox.x < obj.x+obj.hitbox.x+obj.hitbox.w+ox and + other.y+other.hitbox.y < obj.y+obj.hitbox.y+obj.hitbox.h+oy then + return other + end + end + return nil + end + + obj.check=function(type,ox,oy) + return obj.collide(type,ox,oy) ~=nil + end + + obj.move=function(ox,oy) + local amount + -- [x] get move amount + obj.rem.x += ox + amount = flr(obj.rem.x + 0.5) + obj.rem.x -= amount + obj.move_x(amount,0) + + -- [y] get move amount + obj.rem.y += oy + amount = flr(obj.rem.y + 0.5) + obj.rem.y -= amount + obj.move_y(amount) + end + + obj.move_x=function(amount,start) + if obj.solids then + local step = sign(amount) + for i=start,abs(amount) do + if not obj.is_solid(step,0) then + obj.x += step + else + obj.spd.x = 0 + obj.rem.x = 0 + break + end + end + else + obj.x += amount + end + end + + obj.move_y=function(amount) + if obj.solids then + local step = sign(amount) + for i=0,abs(amount) do + if not obj.is_solid(0,step) then + obj.y += step + else + obj.spd.y = 0 + obj.rem.y = 0 + break + end + end + else + obj.y += amount + end + end + + add(objects,obj) + if obj.type.init~=nil then + obj.type.init(obj) + end + return obj +end + +function destroy_object(obj) + del(objects,obj) +end + +function kill_player(obj) + sfx_timer=12 + sfx(0) + deaths+=1 + shake=10 + destroy_object(obj) + dead_particles={} + for dir=0,7 do + local angle=(dir/8) + add(dead_particles,{ + x=obj.x+4, + y=obj.y+4, + t=10, + spd={ + x=sin(angle)*3, + y=cos(angle)*3 + } + }) + restart_room() + end +end + +-- room functions -- +-------------------- + +function restart_room() + will_restart=true + delay_restart=15 +end + +function next_room() + if room.x==2 and room.y==1 then + music(30,500,7) + elseif room.x==3 and room.y==1 then + music(20,500,7) + elseif room.x==4 and room.y==2 then + music(30,500,7) + elseif room.x==5 and room.y==3 then + music(30,500,7) + end + + if room.x==7 then + load_room(0,room.y+1) + else + load_room(room.x+1,room.y) + end +end + +function load_room(x,y) + has_dashed=false + has_key=false + + --remove existing objects + foreach(objects,destroy_object) + + --current room + room.x = x + room.y = y + + -- entities + for tx=0,15 do + for ty=0,15 do + local tile = mget(room.x*16+tx,room.y*16+ty); + if tile==11 then + init_object(platform,tx*8,ty*8).dir=-1 + elseif tile==12 then + init_object(platform,tx*8,ty*8).dir=1 + else + foreach(types, + function(type) + if type.tile == tile then + init_object(type,tx*8,ty*8) + end + end) + end + end + end + + if not is_title() then + init_object(room_title,0,0) + end +end + +-- update function -- +----------------------- + +function _update() + frames=((frames+1)%30) + if frames==0 and level_index()<30 then + seconds=((seconds+1)%60) + if seconds==0 then + minutes+=1 + end + end + + if music_timer>0 then + music_timer-=1 + if music_timer<=0 then + music(10,0,7) + end + end + + if sfx_timer>0 then + sfx_timer-=1 + end + + -- cancel if freeze + if freeze>0 then freeze-=1 return end + + -- screenshake + if screenshake and shake>0 then + shake-=1 + camera() + if shake>0 then + camera(-2+rnd(5),-2+rnd(5)) + end + end + + -- restart (soon) + if will_restart and delay_restart>0 then + delay_restart-=1 + if delay_restart<=0 then + will_restart=false + load_room(room.x,room.y) + end + end + + -- update each object + foreach(objects,function(obj) + obj.move(obj.spd.x,obj.spd.y) + if obj.type.update~=nil then + obj.type.update(obj) + end + end) + + -- start game + if is_title() then + if not start_game and (btn(k_jump) or btn(k_dash)) then + music(-1) + start_game_flash=50 + start_game=true + sfx(38) + end + if start_game then + start_game_flash-=1 + if start_game_flash<=-30 then + begin_game() + end + end + end +end + +-- drawing functions -- +----------------------- +function _draw() + if freeze>0 then return end + + -- reset all palette values + pal() + + -- start game flash + if start_game then + local c=10 + if start_game_flash>10 then + if frames%10<5 then + c=7 + end + elseif start_game_flash>5 then + c=2 + elseif start_game_flash>0 then + c=1 + else + c=0 + end + if c<10 then + pal(6,c) + pal(12,c) + pal(13,c) + pal(5,c) + pal(1,c) + pal(7,c) + end + end + + -- clear screen + local bg_col = 0 + if flash_bg then + bg_col = frames/5 + elseif new_bg~=nil then + bg_col=2 + end + rectfill(0,0,128,128,bg_col) + + -- clouds + if not is_title() then + foreach(clouds, function(c) + c.x += c.spd + rectfill(c.x,c.y,c.x+c.w,c.y+4+(1-c.w/64)*12,new_bg~=nil and 14 or 1) + if c.x > 128 then + c.x = -c.w + c.y=rnd(128-8) + end + end) + end + + -- draw bg terrain + map(room.x * 16,room.y * 16,0,0,16,16,4) + + -- platforms/big chest + foreach(objects, function(o) + if o.type==platform or o.type==big_chest then + draw_object(o) + end + end) + + -- draw terrain + local off=is_title() and -4 or 0 + map(room.x*16,room.y * 16,off,0,16,16,2) + + -- draw objects + foreach(objects, function(o) + if o.type~=platform and o.type~=big_chest then + draw_object(o) + end + end) + + -- draw fg terrain + map(room.x * 16,room.y * 16,0,0,16,16,8) + + -- particles + foreach(particles, function(p) + p.x += p.spd + p.y += sin(p.off) + p.off+= min(0.05,p.spd/32) + rectfill(p.x,p.y,p.x+p.s,p.y+p.s,p.c) + if p.x>128+4 then + p.x=-4 + p.y=rnd(128) + end + end) + + -- dead particles + foreach(dead_particles, function(p) + p.x += p.spd.x + p.y += p.spd.y + p.t -=1 + if p.t <= 0 then del(dead_particles,p) end + rectfill(p.x-p.t/5,p.y-p.t/5,p.x+p.t/5,p.y+p.t/5,14+p.t%2) + end) + + -- draw outside of the screen for screenshake + rectfill(-5,-5,-1,133,0) + rectfill(-5,-5,133,-1,0) + rectfill(-5,128,133,133,0) + rectfill(128,-5,133,133,0) + + -- credits + if is_title() then + cprint("x+c",64,80,5) + cprint("maddy thorson",64,96,5) + cprint("noel berry",64,102,5) + end + + if level_index()==30 then + local p + for i=1,count(objects) do + if objects[i].type==player then + p = objects[i] + break + end + end + if p~=nil then + local diff=min(24,40-abs(p.x+4-64)) + rectfill(0,0,diff,128,0) + rectfill(128-diff,0,128,128,0) + end + end + +end + +function draw_object(obj) + + if obj.type.draw ~=nil then + obj.type.draw(obj) + elseif obj.spr > 0 then + spr(obj.spr,obj.x,obj.y,1,1,obj.flip.x,obj.flip.y) + end + +end + +function draw_time(x,y) + + local s=seconds + local m=minutes%60 + local h=flr(minutes/60) + + --rectfill(x,y,x+32,y+6,0) + fprint((h<10 and "0"..h or h)..":"..(m<10 and "0"..m or m)..":"..(s<10 and "0"..s or s),x+1,y+1,7,0) + +end + +-- helper functions -- +---------------------- + +function clamp(val,a,b) + return max(a, min(b, val)) +end + +function appr(val,target,amount) + return val > target + and max(val - amount, target) + or min(val + amount, target) +end + +function sign(v) + return v>0 and 1 or + v<0 and -1 or 0 +end + +function maybe() + return rnd(1)<0.5 +end + +function solid_at(x,y,w,h) + return tile_flag_at(x,y,w,h,0) +end + +function ice_at(x,y,w,h) + return tile_flag_at(x,y,w,h,4) +end + +function tile_flag_at(x,y,w,h,flag) + for i=max(0,flr(x/8)),min(15,(x+w-1)/8) do + for j=max(0,flr(y/8)),min(15,(y+h-1)/8) do + if fget(tile_at(i,j),flag) then + return true + end + end + end + return false +end + +function tile_at(x,y) + return mget(room.x * 16 + x, room.y * 16 + y) +end + +function spikes_at(x,y,w,h,xspd,yspd) + for i=max(0,flr(x/8)),min(15,(x+w-1)/8) do + for j=max(0,flr(y/8)),min(15,(y+h-1)/8) do + local tile=tile_at(i,j) + if tile==17 and ((y+h-1)%8>=6 or y+h==j*8+8) and yspd>=0 then + return true + elseif tile==27 and y%8<=2 and yspd<=0 then + return true + elseif tile==43 and x%8<=2 and xspd<=0 then + return true + elseif tile==59 and ((x+w-1)%8>=6 or x+w==i*8+8) and xspd>=0 then + return true + end + end + end + return false +end +-->8 +-- centered print +function cprint(txt,x,y,c,c2) + fprint(txt,x-#txt*2,y,c,c2) +end + +-- fancy print +function fprint(txt,x,y,c,c2) + if c2 then + print(txt,x-1,y,c2) + print(txt,x+1,y,c2) + print(txt,x,y-1,c2) + print(txt,x,y+1,c2) + print(txt,x-1,y-1,c2) + print(txt,x-1,y+1,c2) + print(txt,x+1,y-1,c2) + print(txt,x+1,y+1,c2) + end + print(txt,x,y,c) +end +-->8 +function menuitem_screenshake() + menuitem(1,"screenshake "..(screenshake and"on"or"off"),menu_screenshake) +end + +function menu_screenshake() + screenshake=not screenshake + menuitem_screenshake() +end +__gfx__ +000000000000000000000000088888800000000000000000000000000000000000aaaaa0000aaa000000a0000007707770077700000060000000600000060000 +000000000888888008888880888888880888888008888800000000000888888000a000a0000a0a000000a0000777777677777770000060000000600000060000 +000000008888888888888888888ffff888888888888888800888888088f1ff1800a909a0000a0a000000a0007766666667767777000600000000600000060000 +00000000888ffff8888ffff888f1ff18888ffff88ffff8808888888888fffff8009aaa900009a9000000a0007677766676666677000600000000600000060000 +0000000088f1ff1888f1ff1808fffff088f1ff1881ff1f80888ffff888fffff80000a0000000a0000000a0000000000000000000000600000006000000006000 +0000000008fffff008fffff00033330008fffff00fffff8088fffff8083333800099a0000009a0000000a0000000000000000000000600000006000000006000 +00000000003333000033330007000070073333000033337008f1ff10003333000009a0000000a0000000a0000000000000000000000060000006000000006000 +000000000070070000700070000000000000070000007000077333700070070000aaa0000009a0000000a0000000000000000000000060000006000000006000 +555555550000000000000000000000000000000000000000008888004999999449999994499909940300b0b0666566650300b0b0000000000000000070000000 +55555555000000000000000000000000000000000000000008888880911111199111411991140919003b330067656765003b3300007700000770070007000007 +550000550000000000000000000000000aaaaaa00000000008788880911111199111911949400419028888206770677002888820007770700777000000000000 +55000055007000700499994000000000a998888a1111111108888880911111199494041900000044089888800700070078988887077777700770000000000000 +55000055007000700050050000000000a988888a1000000108888880911111199114094994000000088889800700070078888987077777700000700000000000 +55000055067706770005500000000000aaaaaaaa1111111108888880911111199111911991400499088988800000000008898880077777700000077000000000 +55555555567656760050050000000000a980088a1444444100888800911111199114111991404119028888200000000002888820070777000007077007000070 +55555555566656660005500004999940a988888a1444444100000000499999944999999444004994002882000000000000288200000000007000000000000000 +5777777557777777777777777777777577cccccccccccccccccccc77577777755555555555555555555555555500000007777770000000000000000000000000 +77777777777777777777777777777777777cccccccccccccccccc777777777775555555555555550055555556670000077777777000777770000000000000000 +777c77777777ccccc777777ccccc7777777cccccccccccccccccc777777777775555555555555500005555556777700077777777007766700000000000000000 +77cccc77777cccccccc77cccccccc7777777cccccccccccccccc7777777cc7775555555555555000000555556660000077773377076777000000000000000000 +77cccc7777cccccccccccccccccccc777777cccccccccccccccc777777cccc775555555555550000000055555500000077773377077660000777770000000000 +777cc77777cc77ccccccccccccc7cc77777cccccccccccccccccc77777cccc775555555555500000000005556670000073773337077770000777767007700000 +7777777777cc77cccccccccccccccc77777cccccccccccccccccc77777c7cc77555555555500000000000055677770007333bb37000000000000007700777770 +5777777577cccccccccccccccccccc7777cccccccccccccccccccc7777cccc77555555555000000000000005666000000333bb30000000000000000000077777 +77cccc7777cccccccccccccccccccc77577777777777777777777775777ccc775555555550000000000000050000066603333330000000000000000000000000 +777ccc7777cccccccccccccccccccc77777777777777777777777777777cc7775055555555000000000000550007777603b333300000000000ee0ee000000000 +777ccc7777cc7cccccccccccc77ccc777777ccc7777777777ccc7777777cc77755550055555000000000055500000766033333300000000000eeeee000000030 +77ccc77777ccccccccccccccc77ccc77777ccccc7c7777ccccccc77777ccc777555500555555000000005555000000550333b33000000000000e8e00000000b0 +77ccc777777cccccccc77cccccccc777777ccccccc7777c7ccccc77777cccc7755555555555550000005555500000666003333000000b00000eeeee000000b30 +777cc7777777ccccc777777ccccc77777777ccc7777777777ccc777777cccc775505555555555500005555550007777600044000000b000000ee3ee003000b00 +777cc777777777777777777777777777777777777777777777777777777cc7775555555555555550055555550000076600044000030b00300000b00000b0b300 +77cccc77577777777777777777777775577777777777777777777775577777755555555555555555555555550000005500999900030330300000b00000303300 +5777755777577775077777777777777777777770077777700000000000000000cccccccc00000000000000000000000000000000000000000000000000000000 +7777777777777777700007770000777000007777700077770000000000000000c77ccccc00000000000000000000000000000000000000000000000000000000 +7777cc7777cc777770cc777cccc777ccccc7770770c777070000000000000000c77cc7cc00000000000000000000000000000000000000000000000000000000 +777cccccccccc77770c777cccc777ccccc777c0770777c070000000000000000cccccccc00000000000000000000000000006000000000000000000000000000 +77cccccccccccc77707770000777000007770007777700070002eeeeeeee2000cccccccc00000000000000000000000000060600000000000000000000000000 +57cc77ccccc7cc7577770000777000007770000777700007002eeeeeeeeee200cc7ccccc00000000000000000000000000d00060000000000000000000000000 +577c77ccccccc7757000000000000000000c000770000c0700eeeeeeeeeeee00ccccc7cc0000000000000000000000000d00000c000000000000000000000000 +777cccccccccc7777000000000000000000000077000000700e22222e2e22e00cccccccc000000000000000000000000d000000c000000000000000000000000 +777cccccccccc7777000000000000000000000077000000700eeeeeeeeeeee000000000000000000000000000000000c0000000c000600000000000000000000 +577cccccccccc7777000000c000000000000000770cc000700e22e2222e22e00000000000000000000000000000000d000000000c060d0000000000000000000 +57cc7cccc77ccc7570000000000cc0000000000770cc000700eeeeeeeeeeee0000000000000000000000000000000c00000000000d000d000000000000000000 +77ccccccc77ccc7770c00000000cc00000000c0770000c0700eee222e22eee0000000000000000000000000000000c0000000000000000000000000000000000 +777cccccccccc7777000000000000000000000077000000700eeeeeeeeeeee005555555506666600666666006600c00066666600066666006666660066666600 +7777cc7777cc777770000000000000000000000770c0000700eeeeeeeeeeee00555555556666666066666660660c000066666660666666606666666066666660 +777777777777777770000000c0000000000000077000000700ee77eee7777e005555555566000660660000006600000066000000660000000066000066000000 +57777577775577757000000000000000000000077000c007077777777777777055555555dd000000dddd0000dd000000dddd0000ddddddd000dd0000dddd0000 +000000000000000070000000000000000000000770000007007777005000000000000005dd000dd0dd000000dd0000d0dd000000000000d000dd0000dd000000 +00aaaaaaaaaaaa00700000000000000000000007700c0007070000705500000000000055ddddddd0dddddd00ddddddd0dddddd00ddddddd000dd0000dddddd00 +0a999999999999a0700000000000c00000000007700000077077000755500000000005550ddddd00ddddddd0ddddddd0ddddddd00ddddd0000dd0000ddddddd0 +a99aaaaaaaaaa99a7000000cc0000000000000077000cc077077bb07555500000000555500000000000000000000000000000000000000000000000000000000 +a9aaaaaaaaaaaa9a7000000cc0000000000c00077000cc07700bbb0755555555555555550000000000000c000000000000000000000000000000c00000000000 +a99999999999999a70c00000000000000000000770c00007700bbb075555555555555555000000000000c00000000000000000000000000000000c0000000000 +a99999999999999a700000000000000000000007700000070700007055555555555555550000000000cc0000000000000000000000000000000000c000000000 +a99999999999999a07777777777777777777777007777770007777005555555555555555000000000c000000000000000000000000000000000000c000000000 +aaaaaaaaaaaaaaaa07777777777777777777777007777770004bbb00004b000000400bbb00000000c0000000000000000000000000000000000000c000000000 +a49494a11a49494a70007770000077700000777770007777004bbbbb004bb000004bbbbb0000000100000000000000000000000000000000000000c00c000000 +a494a4a11a4a494a70c777ccccc777ccccc7770770c7770704200bbb042bbbbb042bbb00000000c0000000000000000000000000000000000000001010c00000 +a49444aaaa44494a70777ccccc777ccccc777c0770777c07040000000400bbb004000000000001000000000000000000000000000000000000000001000c0000 +a49999aaaa99994a7777000007770000077700077777000704000000040000000400000000000100000000000000000000000000000000000000000000010000 +a49444999944494a77700000777000007770000777700c0742000000420000004200000000000100000000000000000000000000000000000000000000001000 +a494a444444a494a7000000000000000000000077000000740000000400000004000000000000000000000000000000000000000000000000000000000000000 +a49499999999494a0777777777777777777777700777777040000000400000004000000000010000000000000000000000000000000000000000000000000010 +00000000000000008242525252528452339200001323232352232323232352230000000000000000b302000013232352526200a2828342525223232323232323 +00000000000000a20182920013232352363636462535353545550000005525355284525262b20000000000004252525262828282425284525252845252525252 +00000000000085868242845252525252b1006100b1b1b1b103b1b1b1b1b103b100000000000000111102000000a282425233000000a213233300009200008392 +000000000000110000a2000000a28213000000002636363646550000005525355252528462b2a300000000004252845262828382132323232323232352528452 +000000000000a201821323525284525200000000000000007300000000007300000000000000b343536300410000011362b2000000000000000000000000a200 +0000000000b302b2002100000000a282000000000000000000560000005526365252522333b28292001111024252525262019200829200000000a28213525252 +0000000000000000a2828242525252840000000000000000b10000000000b1000000000000000000b3435363930000b162273737373737373737374711000061 +000000110000b100b302b20000006182000000000000000000000000005600005252338282828201a31222225252525262820000a20011111100008283425252 +0000000000000093a382824252525252000061000011000000000011000000001100000000000000000000020182001152222222222222222222222232b20000 +0000b302b200000000b10000000000a200000000000000009300000000000000846282828283828282132323528452526292000000112434440000a282425284 +00000000000000a2828382428452525200000000b302b2936100b302b20061007293a30000000000000000b1a282931252845252525252232323232362b20000 +000000b10000001100000000000000000000000093000086820000a3000000005262828201a200a282829200132323236211111111243535450000b312525252 +00000000000000008282821323232323820000a300b1a382930000b100000000738283931100000000000011a382821323232323528462829200a20173b20061 +000000000000b302b2000061000000000000a385828286828282828293000000526283829200000000a20000000000005222222232263636460000b342525252 +00000011111111a3828201b1b1b1b1b182938282930082820000000000000000b100a282721100000000b372828283b122222232132333610000869200000000 +00100000000000b1000000000000000086938282828201920000a20182a37686526282829300000000000000000000005252845252328283920000b342845252 +00008612222232828382829300000000828282828283829200000000000061001100a382737200000000b373a2829211525284628382a2000000a20000000000 +00021111111111111111111111110061828282a28382820000000000828282825262829200000000000000000000000052525252526201a2000000b342525252 +00000113235252225353536300000000828300a282828201939300001100000072828292b1039300000000b100a282125223526292000000000000a300000000 +0043535353535353535353535363b2008282920082829200061600a3828382a28462000000000000000000000000000052845252526292000011111142525252 +0000a28282132362b1b1b1b1000000009200000000a28282828293b372b2000073820100110382a3000000110082821362101333610000000000008293000000 +0002828382828202828282828272b20083820000a282d3000717f38282920000526200000000000093000000000000005252525284620000b312223213528452 +000000828392b30300000000002100000000000000000082828282b303b20000b1a282837203820193000072a38292b162710000000000009300008382000000 +00b1a282820182b1a28283a28273b200828293000082122232122232820000a3233300000000000082920000000000002323232323330000b342525232135252 +000000a28200b37300000000a37200000010000000111111118283b373b200a30000828273039200828300738283001162930000000000008200008282920000 +0000009261a28200008261008282000001920000000213233342846282243434000000000000000082000085860000008382829200000000b342528452321323 +0000100082000082000000a2820300002222321111125353630182829200008300009200b1030000a28200008282001262829200000000a38292008282000000 +00858600008282a3828293008292610082001000001222222252525232253535000000f3100000a3820000a2010000008292000000009300b342525252522222 +0400122232b200839321008683039300528452222262c000a28282820000a38210000000a3738000008293008292001362820000000000828300a38201000000 +00a282828292a2828283828282000000343434344442528452525252622535350000001263000083829300008200c1008210d3e300a38200b342525252845252 +1232425262b28682827282820103820052525252846200000082829200008282320000008382930000a28201820000b162839300000000828200828282930000 +0000008382000000a28201820000000035353535454252525252528462253535000000032444008282820000829300002222223201828393b342525252525252 +525252525262b2b1b1b1132323526200845223232323232352522323233382825252525252525252525284522333b2822323232323526282820000b342525252 +52845252525252848452525262838242528452522333828292425223232352520000000000000000000000000000000000000000000000000000000000000000 +525252845262b2000000b1b1b142620023338276000000824233b2a282018283525252845252232323235262b1b10083921000a382426283920000b342232323 +2323232323232323232323526201821352522333b1b1018241133383828242840000000000000000000000000000000000000000000000000000000000000000 +525252525262b20000000000a242627682828392000011a273b200a382729200525252525233b1b1b1b11333000000825353536382426282410000b30382a2a2 +a1829200a2828382820182426200a2835262b1b10000831232b2000080014252000000000000a300000000000000000000000000000000000000000000000000 +528452232333b20000001100824262928201a20000b3720092000000830300002323525262b200000000b3720000a382828283828242522232b200b373928000 +000100110092a2829211a2133300a3825262b2000000a21333b20000868242520000000000000100009300000000000000000000000000000000000000000000 +525262122232b200a37672b2a24262838292000000b30300000000a3820300002232132333b200000000b303829300a2838292019242845262b2000000000000 +00a2b302b2a36182b302b200110000825262b200000000b1b10000a283a2425200000000a30082000083000000000000000000000094a4b4c4d4e4f400000000 +525262428462b200a28303b2214262928300000000b3030000000000a203e3415252222232b200000000b30392000000829200000042525262b2000000000000 +000000b100a2828200b100b302b211a25262b200000000000000000092b3428400000000827682000001009300000000000000000095a5b5c5d5e5f500000000 +232333132362b221008203b2711333008293858693b3031111111111114222225252845262b200001100b303b2000000821111111142528462b2000000000000 +000000000000110176851100b1b3026184621111111100000061000000b3135200000000828382670082768200000000000000000096a6b6c6d6e6f600000000 +82000000a203117200a203b200010193828283824353235353535353535252845252525262b200b37200b303b2000000824353535323235262b2000011000000 +0000000000b30282828372b26100b100525232122232b200000000000000b14200000000a28282123282839200000000000000000097a7b7c7d7e7f700000000 +9200110000135362b2001353535353539200a2000001828282829200b34252522323232362b261b30300b3030000000092b1b1b1b1b1b34262b200b372b20000 +001100000000b1a2828273b200000000232333132333b200001111000000b342000000868382125252328293a300000000000000000000000000000000000000 +00b372b200a28303b2000000a28293b3000000000000a2828382827612525252b1b1b1b173b200b30393b30361000000000000000000b34262b271b303b20000 +b302b211000000110092b100000000a3b1b1b1b1b1b10011111232110000b342000000a282125284525232828386000000000000000000000000000000000000 +80b303b20000820311111111008283b311111111110000829200928242528452000000a3820000b30382b37300000000000000000000b3426211111103b20000 +00b1b302b200b372b200000000000082b21000000000b31222522363b200b3138585868292425252525262018282860000000000000000000000000000000000 +00b373b20000a21353535363008292b32222222232111102b20000a21323525200000001839200b3038282820000000011111111930011425222222233b20000 +100000b10000b303b200000000858682b27100000000b3425233b1b1000000b182018283001323525284629200a2820000000000000000000000000000000000 +9300b100000000b1b1b1b1b100a200b323232323235363b100000000b1b1135200000000820000b30382839200000000222222328283432323232333b2000000 +329300000000b373b200000000a20182111111110000b31333b100a30061000000a28293f3123242522333020000820000000000000000000000000000000000 +829200001000410000000000000000b39310d30000a28200000000000000824200000086827600b30300a282760000005252526200828200a30182a2006100a3 +62820000000000b100000093a382838222222232b20000b1b1000083000000860000122222526213331222328293827600000000000000000000000000000000 +017685a31222321111111111002100b322223293000182930000000080a301131000a383829200b373000083920000005284526200a282828283920000000082 +62839321000000000000a3828282820152845262b261000093000082a300a3821000135252845222225252523201838200000000000000000000000000000000 +828382824252522222222232007100b352526282a38283820000000000838282320001828200000083000082010000005252526271718283820000000000a382 +628201729300000000a282828382828252528462b20000a38300a382018283821222324252525252525284525222223200000000000000000000000000000000 +__label__ +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000770000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000770000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000070000000000000000006000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000060600000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000d00060000000000000066000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000d00000c000000000000066000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000d000000c000000000000000000000000000000000000000000000000060000000000 +00000000000000000000000000000000000000000000000000000000000c0000000c000600000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000d000000000c060d0000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000c00000000000d000d000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000006666600666666006600c00066666600066666006666660066666600000000000000000000000000000000000000 +0000000000000000000000000000000000006666666066666660660c000066666660666666606666666066666660000000000000000000000000000000000000 +00000000000000000000000000000000000066000660660000006600000066000000660000000066000066000000000000000000000000000000000000000000 +000000000000000000000000000000000000dd000000dddd0000dd000000dddd0000ddddddd000dd0000dddd0000000000000000000000000000000000000000 +000000000000000000000000000000000000dd000dd0dd000000dd0000d0dd000000000000d000dd0000dd000000000000000000000000000000000000000000 +000000000000000000000000000000000000ddddddd0dddddd00ddddddd0dddddd00ddddddd000dd0000dddddd00000000000000000000000000000000000000 +0000000000000000000000000000000000000ddddd00ddddddd0ddddddd0ddddddd00ddddd0000dd0000ddddddd0000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000c000000000000000000000000000000c00000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000c00000000000000000000000000000000c0000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000cc0000000000000000000000000000000000c000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000c000000000000000000000000000000000000c000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000c0000000000000000000000000000000000000c000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000100000000000000000000000000000000000000c00c000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000c0000000000000000000000000000000000000001010c00000000000000000000000000000000000000000 +000000000000000000000000000000000000000001000000000000000000000000000000000000000001000c0000000000000000000000000000000000000000 +00000000000000000000000000000000000000000100000000000000000000000000000000000000000000010000000600000000000000000000000000000000 +00000000000000000000000000000000000000000100000000000000000000000000000000000000000000001000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000010000000000000000000000000000000000000000000000000010000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000005050000005500000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000005050050050006000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000500555050000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000005050050050000000000000600000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000005050000005500000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000070000000000660000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000660000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000055505550555055500000555050500550555005500550550000000000000000000000000000000000000000 +00000000000000000000000000000000000000000055505050050005000000050050505050505050005050505000000000000000000000000000000000000000 +00000000000000000000000000000000000000000050505550050005000000050055505050550055505050505000000000000000000000000000000000000000 +00000000000000000000000000000000000000000050505050050005000000050050505050505000505050505000000000000000000000000000000000000000 +00000000000000000000000000000000000000000050505050050005000000050050505500505055005500505000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000605500055055505000000055505550555055505050000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000005050505050005000000050505000505050505050000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000005050505055005000000055005500550055005550000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000005050505050005000000050505000505050500050000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000005050550055505550000055505550505050505550000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + +__gff__ +0000000000000000000000000000000004020000000000000000000200000000030303030303030304040402020000000303030303030303040404020202020200001313131302020302020202020002000013131313020204020202020202020000131313130004040202020202020200001313131300000002020202020202 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +__map__ +2331252548252532323232323300002425262425252631323232252628282824252525252525323328382828312525253232323233000000313232323232323232330000002432323233313232322525252525482525252525252526282824252548252525262828282824254825252526282828283132323225482525252525 +252331323232332900002829000000242526313232332828002824262a102824254825252526002a2828292810244825282828290000000028282900000000002810000000372829000000002a2831482525252525482525323232332828242525254825323338282a283132252548252628382828282a2a2831323232322525 +252523201028380000002a0000003d24252523201028292900282426003a382425252548253300002900002a0031252528382900003a676838280000000000003828393e003a2800000000000028002425253232323232332122222328282425252532332828282900002a283132252526282828282900002a28282838282448 +3232332828282900000000003f2020244825262828290000002a243300002a2425322525260000000000000000003125290000000021222328280000000000002a2828343536290000000000002839242526212223202123313232332828242548262b000000000000001c00003b242526282828000000000028282828282425 +2340283828293a2839000000343522252548262900000000000030000000002433003125333d3f00000000000000003100001c3a3a31252620283900000000000010282828290000000011113a2828313233242526103133202828282838242525262b000000000000000000003b2425262a2828670016002a28283828282425 +263a282828102829000000000000312525323300000000110000370000003e2400000037212223000000000000000000395868282828242628290000000000002a2828290000000000002123283828292828313233282829002a002a2828242525332b0c00000011110000000c3b314826112810000000006828282828282425 +252235353628280000000000003a282426003d003a3900270000000000002125001a000024252611111111000000002c28382828283831332800000017170000002a000000001111000024261028290028281b1b1b282800000000002a2125482628390000003b34362b000000002824252328283a67003a28282829002a3132 +25333828282900000000000000283824252320201029003039000000005824480000003a31323235353536675800003c282828281028212329000000000000000000000000003436003a2426282800003828390000002a29000000000031323226101000000000282839000000002a2425332828283800282828390000001700 +2600002a28000000003a283a2828282425252223283900372858390068283132000000282828282820202828283921222829002a28282426000000000000000000000000000020382828312523000000282828290000000000163a67682828003338280b00000010382800000b00003133282828282868282828280000001700 +330000002867580000281028283422252525482628286720282828382828212200003a283828102900002a28382824252a0000002838242600000017170000000000000000002728282a283133390000282900000000000000002a28282829002a2839000000002a282900000000000028282838282828282828290000000000 +0000003a2828383e3a2828283828242548252526002a282729002a28283432250000002a282828000000002810282425000000002a282426000000000000000000000000000037280000002a28283900280000003928390000000000282800000028290000002a2828000000000000002a282828281028282828675800000000 +0000002838282821232800002a28242532322526003a2830000000002a28282400000000002a281111111128282824480000003a28283133000000000000171700013f0000002029000000003828000028013a28281028580000003a28290000002a280c0000003a380c00000000000c00002a2828282828292828290000003a +00013a2123282a313329001111112425002831263a3829300000000000002a310000000000002834222236292a0024253e013a3828292a00000000000000000035353536000020000000003d2a28671422222328282828283900582838283d00003a290000000028280000000000000000002a28282a29000058100012002a28 +22222225262900212311112122222525002a3837282900301111110000003a2800013f0000002a282426290000002425222222232900000000000000171700002a282039003a2000003a003435353535252525222222232828282810282821220b10000000000b28100000000b0000002c00002838000000002a283917000028 +2548252526111124252222252525482500012a2828673f242222230000003828222223000012002a24260000001224252525252600000000171700000000000000382028392827080028676820282828254825252525262a28282122222225253a28013d0000006828390000000000003c0168282800171717003a2800003a28 +25252525252222252525252525252525222222222222222525482667586828282548260000270000242600000021252525254826171700000000000000000000002a2028102830003a282828202828282525252548252600002a2425252548252821222300000028282800000000000022222223286700000000282839002838 +2532330000002432323232323232252525252628282828242532323232254825253232323232323225262828282448252525253300000000000000000000005225253232323233313232323233282900262829286700000000002828313232322525253233282800312525482525254825254826283828313232323232322548 +26282800000030402a282828282824252548262838282831333828290031322526280000163a28283133282838242525482526000000000000000000000000522526000016000000002a10282838390026281a3820393d000000002a3828282825252628282829003b2425323232323232323233282828282828102828203125 +3328390000003700002a3828002a2425252526282828282028292a0000002a313328111111282828000028002a312525252526000000000000000000000000522526000000001111000000292a28290026283a2820102011111121222328281025252628382800003b24262b002a2a38282828282829002a2800282838282831 +28281029000000000000282839002448252526282900282067000000000000003810212223283829003a1029002a242532323367000000000000000000004200252639000000212300000000002122222522222321222321222324482628282832323328282800003b31332b00000028102829000000000029002a2828282900 +2828280016000000162a2828280024252525262700002a2029000000000000002834252533292a0000002a00111124252223282800002c46472c00000042535325262800003a242600001600002425252525482631323331323324252620283822222328292867000028290000000000283800111100001200000028292a1600 +283828000000000000003a28290024254825263700000029000000000000003a293b2426283900000000003b212225252526382867003c56573c4243435363633233283900282426111111111124252525482526201b1b1b1b1b24252628282825252600002a28143a2900000000000028293b21230000170000112867000000 +2828286758000000586828380000313232323320000000000000000000272828003b2426290000000000003b312548252533282828392122222352535364000029002a28382831323535353522254825252525252300000000003132332810284825261111113435361111111100000000003b3133111111111127282900003b +2828282810290000002a28286700002835353536111100000000000011302838003b3133000000000000002a28313225262a282810282425252662636400000000160028282829000000000031322525252525252667580000002000002a28282525323535352222222222353639000000003b34353535353536303800000017 +282900002a0000000000382a29003a282828283436200000000000002030282800002a29000011110000000028282831260029002a282448252523000000000039003a282900000000000000002831322525482526382900000017000058682832331028293b2448252526282828000000003b201b1b1b1b1b1b302800000017 +283a0000000000000000280000002828283810292a000000000000002a3710281111111111112136000000002a28380b2600000000212525252526001c0000002828281000000000001100002a382829252525252628000000001700002a212228282908003b242525482628282912000000001b00000000000030290000003b +3829000000000000003a102900002838282828000000000000000000002a2828223535353535330000000000002828393300000000313225252533000000000028382829000000003b202b00682828003232323233290000000000000000312528280000003b3132322526382800170000000000000000110000370000000000 +290000000000000000002a000000282928292a0000000000000000000000282a332838282829000000000000001028280000000042434424252628390000000028002a0000110000001b002a2010292c1b1b1b1b0000000000000000000010312829160000001b1b1b313328106700000000001100003a2700001b0000000000 +00000100000011111100000000002a3a2a0000000000000000000000002a2800282829002a000000000000000028282800000000525354244826282800000000290000003b202b39000000002900003c000000000000000000000000000028282800000000000000001b1b2a2829000001000027390038300000000000000000 +1111201111112122230000001212002a00010000000000000000000000002900290000000000000000002a6768282900003f01005253542425262810673a3900013f0000002a3829001100000000002101000000000000003a67000000002a382867586800000100000000682800000021230037282928300000000000000000 +22222222222324482611111120201111002739000017170000001717000000000001000000001717000000282838393a0021222352535424253328282838290022232b00000828393b27000000001424230000001200000028290000000000282828102867001717171717282839000031333927101228370000000000000000 +254825252526242526212222222222223a303800000000000000000000000000001717000000000000003a28282828280024252652535424262828282828283925262b00003a28103b30000000212225260000002700003a28000000000000282838282828390000005868283828000022233830281728270000000000000000 +__sfx__ +0002000036370234702f3701d4702a37017470273701347023370114701e3700e4701a3600c46016350084401233005420196001960019600196003f6003f6003f6003f6003f6003f6003f6003f6003f6003f600 +0002000011070130701a0702407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000300000d07010070160702207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000200000642008420094200b420224402a4503c6503b6503b6503965036650326502d6502865024640216401d6401a64016630116300e6300b62007620056100361010600106000060000600006000060000600 +000400000f0701e070120702207017070260701b0602c060210503105027040360402b0303a030300203e02035010000000000000000000000000000000000000000000000000000000000000000000000000000 +000300000977009770097600975008740077300672005715357003470034700347003470034700347003570035700357003570035700347003470034700337003370033700337000070000700007000070000700 +00030000241700e1702d1701617034170201603b160281503f1402f120281101d1101011003110001000010000100001000010000100001000010000100001000010000100001000010000100001000010000100 +00020000101101211014110161101a120201202613032140321403410000100001000010000100001000010000100001000010000100001000010000100001000010000100001000010000100001000010000100 +00030000070700a0700e0701007016070220702f0702f0602c0602c0502f0502f0402c0402c0302f0202f0102c000000000000000000000000000000000000000000000000000000000000000000000000000000 +0003000005110071303f6403f6403f6303f6203f6103f6153f6003f6003f600006000060000600006000060000600006000060000600006000060000600006000060000600006000060000600006000060000600 +011000200177500605017750170523655017750160500605017750060501705076052365500605017750060501775017050177500605236550177501605006050177500605256050160523655256050177523655 +002000001d0401d0401d0301d020180401804018030180201b0301b02022040220461f0351f03016040160401d0401d0401d002130611803018030180021f061240502202016040130201d0401b0221804018040 +00100000070700706007050110000707007060030510f0700a0700a0600a0500a0000a0700a0600505005040030700306003000030500c0700c0601105016070160600f071050500a07005050030510a0700a060 +000400000c5501c5601057023570195702c5702157037570285703b5702c5703e560315503e540315303e530315203f520315203f520315103f510315103f510315103f510315103f50000500005000050000500 +000400002f7402b760267701d7701577015770197701c750177300170015700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700 +00030000096450e655066550a6550d6550565511655076550c655046550965511645086350d615006050060500605006050060500605006050060500605006050060500605006050060500605006050060500605 +011000001f37518375273752730027300243001d300263002a3001c30019300003000030000300003000030000300003000030000300003000030000300003000030000300003000030000300003000030000300 +011000002953429554295741d540225702256018570185701856018500185701856000500165701657216562275142753427554275741f5701f5601f500135201b55135530305602454029570295602257022560 +011000200a0700a0500f0710f0500a0600a040110701105007000070001107011050070600704000000000000a0700a0500f0700f0500a0600a0401307113050000000000013070130500f0700f0500000000000 +002000002204022030220201b0112404024030270501f0202b0402202027050220202904029030290201601022040220302b0401b030240422403227040180301d0401d0301f0521f0421f0301d0211d0401d030 +0108002001770017753f6253b6003c6003b6003f6253160023650236553c600000003f62500000017750170001770017753f6003f6003f625000003f62500000236502365500000000003f625000000000000000 +002000200a1400a1300a1201113011120111101b1401b13018152181421813213140131401313013120131100f1400f1300f12011130111201111016142161321315013140131301312013110131101311013100 +001000202e750377502e730377302e720377202e71037710227502b750227302b7301d750247501d730247301f750277501f730277301f7202772029750307502973030730297203072029710307102971030710 +000600001877035770357703576035750357403573035720357103570000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700007000070000700 +001800202945035710294403571029430377102942037710224503571022440274503c710274403c710274202e450357102e440357102e430377102e420377102e410244402b45035710294503c710294403c710 +0018002005570055700557005570055700000005570075700a5700a5700a570000000a570000000a5700357005570055700557000000055700557005570000000a570075700c5700c5700f570000000a57007570 +010c00103b6352e6003b625000003b61500000000003360033640336303362033610336103f6003f6150000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000c002024450307102b4503071024440307002b44037700244203a7102b4203a71024410357102b410357101d45033710244503c7101d4403771024440337001d42035700244202e7101d4102e7102441037700 +011800200c5700c5600c550000001157011560115500c5000c5700c5600f5710f56013570135600a5700a5600c5700c5600c550000000f5700f5600f550000000a5700a5600a5500f50011570115600a5700a560 +001800200c5700c5600c55000000115701156011550000000c5700c5600f5710f56013570135600f5700f5600c5700c5700c5600c5600c5500c5300c5000c5000c5000a5000a5000a50011500115000a5000a500 +000c0020247712477024762247523a0103a010187523a0103501035010187523501018750370003700037000227712277222762227001f7711f7721f762247002277122772227620070027771277722776200700 +000c0020247712477024762247523a0103a010187503a01035010350101875035010187501870018700007001f7711f7701f7621f7521870000700187511b7002277122770227622275237012370123701237002 +000c0000247712477024772247722476224752247422473224722247120070000700007000070000700007002e0002e0002e0102e010350103501033011330102b0102b0102b0102b00030010300123001230012 +000c00200c3320c3320c3220c3220c3120c3120c3120c3020c3320c3320c3220c3220c3120c3120c3120c30207332073320732207322073120731207312073020a3320a3320a3220a3220a3120a3120a3120a302 +000c00000c3300c3300c3200c3200c3100c3100c3103a0000c3300c3300c3200c3200c3100c3100c3103f0000a3300a3201333013320073300732007310113000a3300a3200a3103c0000f3300f3200f3103a000 +00040000336251a605000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005000050000500005 +000c00000c3300c3300c3300c3200c3200c3200c3100c3100c3100c31000000000000000000000000000000000000000000000000000000000000000000000000a3000a3000a3000a3000a3310a3300332103320 +001000000c3500c3400c3300c3200f3500f3400f3300f320183501834013350133401835013350163401d36022370223702236022350223402232013300133001830018300133001330016300163001d3001d300 +000c0000242752b27530275242652b26530265242552b25530255242452b24530245242352b23530235242252b22530225242152b21530215242052b20530205242052b205302053a2052e205002050020500205 +001000102f65501075010753f615010753f6152f65501075010753f615010753f6152f6553f615010753f61500005000050000500005000050000500005000050000500005000050000500005000050000500005 +0010000016270162701f2711f2701f2701f270182711827013271132701d2711d270162711627016270162701b2711b2701b2701b270000001b200000001b2000000000000000000000000000000000000000000 +00080020245753057524545305451b565275651f5752b5751f5452b5451f5352b5351f5252b5251f5152b5151b575275751b545275451b535275351d575295751d545295451d535295351f5752b5751f5452b545 +002000200c2650c2650c2550c2550c2450c2450c2350a2310f2650f2650f2550f2550f2450f2450f2351623113265132651325513255132451324513235132351322507240162701326113250132420f2600f250 +00100000072750726507255072450f2650f2550c2750c2650c2550c2450c2350c22507275072650725507245072750726507255072450c2650c25511275112651125511245132651325516275162651625516245 +000800201f5702b5701f5402b54018550245501b570275701b540275401857024570185402454018530245301b570275701b540275401d530295301d520295201f5702b5701f5402b5401f5302b5301b55027550 +00100020112751126511255112451326513255182751826518255182451d2651d2550f2651824513275162550f2750f2650f2550f2451126511255162751626516255162451b2651b255222751f2451826513235 +00100010010752f655010753f6152f6553f615010753f615010753f6152f655010752f6553f615010753f61500005000050000500005000050000500005000050000500005000050000500005000050000500005 +001000100107501075010753f6152f6553f6153f61501075010753f615010753f6152f6553f6152f6553f61500005000050000500005000050000500005000050000500005000050000500005000050000500005 +002000002904029040290302b031290242b021290142b01133044300412e0442e03030044300302b0412b0302e0442e0402e030300312e024300212e024300212b0442e0412b0342e0212b0442b0402903129022 +000800202451524515245252452524535245352454524545245552455524565245652457500505245750050524565005052456500505245550050524555005052454500505245350050524525005052451500505 +000800201f5151f5151f5251f5251f5351f5351f5451f5451f5551f5551f5651f5651f575000051f575000051f565000051f565000051f555000051f555000051f545000051f535000051f525000051f51500005 +000500000373005731077410c741137511b7612437030371275702e5712437030371275702e5712436030361275602e5612435030351275502e5512434030341275402e5412433030331275202e5212431030311 +002000200c2750c2650c2550c2450c2350a2650a2550a2450f2750f2650f2550f2450f2350c2650c2550c2450c2750c2650c2550c2450c2350a2650a2550a2450f2750f2650f2550f2450f235112651125511245 +002000001327513265132551324513235112651125511245162751626516255162451623513265132551324513275132651325513245132350f2650f2550f2450c25011231162650f24516272162520c2700c255 +000300001f3302b33022530295301f3202b32022520295201f3102b31022510295101f3002b300225002950000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000b00002935500300293453037030360303551330524300243050030013305243002430500300003002430024305003000030000300003000030000300003000030000300003000030000300003000030000300 +001000003c5753c5453c5353c5253c5153c51537555375453a5753a5553a5453a5353a5253a5253a5153a51535575355553554535545355353553535525355253551535515335753355533545335353352533515 +00100000355753555535545355353552535525355153551537555375353357533555335453353533525335253a5753a5453a5353a5253a5153a51533575335553354533545335353353533525335253351533515 +001000200c0600c0300c0500c0300c0500c0300c0100c0000c0600c0300c0500c0300c0500c0300c0100f0001106011030110501103011010110000a0600a0300a0500a0300a0500a0300a0500a0300a01000000 +001000000506005030050500503005010050000706007030070500703007010000000f0600f0300f010000000c0600c0300c0500c0300c0500c0300c0500c0300c0500c0300c010000000c0600c0300c0100c000 +0010000003625246150060503615246251b61522625036150060503615116253361522625006051d6250a61537625186152e6251d615006053761537625186152e6251d61511625036150060503615246251d615 +00100020326103261032610326103161031610306102e6102a610256101b610136100f6100d6100c6100c6100c6100c6100c6100f610146101d610246102a6102e61030610316103361033610346103461034610 +00400000302453020530235332252b23530205302253020530205302253020530205302153020530205302152b2452b2052b23527225292352b2052b2252b2052b2052b2252b2052b2052b2152b2052b2052b215 +__music__ +01 150a5644 +00 0a160c44 +00 0a160c44 +00 0a0b0c44 +00 14131244 +00 0a160c44 +00 0a160c44 +02 0a111244 +00 41424344 +00 41424344 +01 18191a44 +00 18191a44 +00 1c1b1a44 +00 1d1b1a44 +00 1f211a44 +00 1f1a2144 +00 1e1a2244 +02 201a2444 +00 41424344 +00 41424344 +01 2a272944 +00 2a272944 +00 2f2b2944 +00 2f2b2c44 +00 2f2b2944 +00 2f2b2c44 +00 2e2d3044 +00 34312744 +02 35322744 +00 41424344 +01 3d7e4344 +00 3d7e4344 +00 3d4a4344 +02 3d3e4344 +00 41424344 +00 41424344 +00 41424344 +00 41424344 +00 41424344 +00 41424344 +01 383a3c44 +02 393b3c44 + -- cgit v1.2.3