pico-8 cartridge // http://www.pico-8.com version 42 __lua__ -- beam clash -- by trolldecker function _init() -- states: -- 0: title -- 1: action -- 2: score -- 3: over if debounce==nil then debounce=0 end if timer==nil then timer=0 end cur_state=0 init_field() init_player() init_scores() end function _update() if cur_state==0 then ply:title_input() elseif cur_state==1 then for p in all(plys) do if p.human then p:input() else p:think() end p:update() p:check() end elseif cur_state==2 then scores:update() ply:score_input() elseif cur_state==3 then ply:end_input() end ply:tick_debounce() timer+=1 end function _draw() cls(0) upd_bg() draw_field() for p in all(plys) do p:draw() end draw_hud() end -->8 -- field/bg function init_field() srand(42) field={ x1=0, y1=8, x2=127, y2=127 } function field:width() return self.x2-self.x1 end function field.height() return self.y2-self.y1 end pfield=copy(field) pfield.x1=3 pfield.y1=11 pfield.x2=124 pfield.y2=124 function pfield:clear() for y=0,127 do for x=0,127 do sset(x,y,0) end end end stars={} for i=1,10 do stars[i]={ x=rndint(pfield.x2-pfield.x1), y=rndint(pfield.y2), len=rndint(10), spd=rndint(5) } end for i=11,50 do stars[i]={ x=rndint(128), y=rndint(field.y2)+8, len=0, spd=0 } end end function upd_bg() for i=1,50 do stars[i].x-=stars[i].spd if stars[i].x<(pfield.x1-stars[i].len) then stars[i].x=pfield.x2 stars[i].y=rndint(pfield.y2) end line( stars[i].x, stars[i].y+pfield.y1, stars[i].x+stars[i].len, stars[i].y+pfield.y1, 13 ) end end function draw_field() rect(0,8,127,127,12) rect(1,9,126,126,13) rect(2,10,125,125,1) spr(0,0,0,32,32) end -->8 -- player function init_player() winner=0 win_limit=5 ply={ id=1, human=true, scrx=10, scry=1, x=pfield.x1, y=63, xspd=1, yspd=0, col=10, crash=0, } function ply:input() id=self.id-1 if btn(⬅️,id) and self.xspd!=1 then self:redirect(-1,0) elseif btn(➡️,id) and self.xspd!=-1then self:redirect(1,0) elseif btn(⬆️,id) and self.yspd!=1 then self:redirect(0,-1) elseif btn(⬇️,id) and self.yspd!=-1 then self:redirect(0,1) end end function ply:think() if rndint(100)<5 then self:check_around() else self:check_ahead() end end function ply:check_ahead() if self.xspd!=0 then if self:check_x(self.xspd) then self:check_around() end else if self:check_y(self.yspd) then self:check_around() end end end function ply:check_x(spd) return sget(self.x+spd,self.y)!=0 or self.x+spdpfield.x2 end function ply:check_y(spd) return sget(self.x,self.y+spd)!=0 or self.y+spdpfield.y2 end function ply:check_around() -- basically narrow down the list of possible directions and randomly select a random remaining one. local possible_dirs={ {spd=-1,axis="y"}, -- north {spd=1,axis="y"}, -- south {spd=1,axis="x"}, -- east {spd=-1,axis="x"} -- west } local available_dirs={} for d in all(possible_dirs) do d.spd=self:check_dir(d) if d.spd!=0 then add(available_dirs,d) end end local count=0 for d in all(available_dirs) do count+=1 end if count>0 then self:favour_direction(available_dirs, count) end end function ply:check_dir(dir) for c=1,2 do local spd=0 if dir.spd!=0 then spd=(c*dir.spd) end if dir.axis=="x" then if self:check_x(spd) then return 0 end elseif dir.axis=="y" then if self:check_y(spd) then return 0 end end end return dir.spd end function ply:favour_direction(dirs, length) dir=dirs[rndint(length)] if dir.axis=="x" then self.xspd=dir.spd self.yspd=0 else self.xspd=0 self.yspd=dir.spd end end function ply:score_input() if btn(🅾️) and debounce==0 then next_round() debounce=10 end end function ply:title_input() if btn(🅾️) and debounce==0 then cur_state=1 srand(timer) debounce=10 end end function ply:end_input() if btn(🅾️) and debounce==0 then _init() debounce=10 end end function ply:tick_debounce() debounce-=1 if debounce<0 then debounce=0 end end function ply:redirect(x,y) self.xspd=x self.yspd=y end function ply:update() self.x+=self.xspd self.y+=self.yspd end function ply:check() if self.xpfield.x2 or self.ypfield.y2 then self:halt() end if sget(self.x,self.y)!=0 then self:halt() end end function ply:halt() self.x-=self.xspd self.y-=self.yspd self.crash+=1 cur_state=2 sfx(0) end function ply:draw() sset(self.x,self.y,self.col) end plys={ copy(ply), copy(ply) } p2=plys[2] p2.scrx=74 p2.id=2 p2.human=false p2.x=pfield.x2 p2.xspd=-1 p2.col=12 for p in all(plys) do p:draw() end end function init_scores() scores={0,0} function scores:update() for p in all(plys) do if p.crash==0 then scores[p.id]+=1 p.crash-=1 winner=p.id end end end end function next_round() pfield:clear() init_field() init_player() cur_state=1 srand(timer) for p in all(plys) do if scores[p.id]>=win_limit then winner=p.id cur_state=3 end end end -->8 -- helpers -- table copy -- src: https://www.lexaloffle.com/bbs/?tid=2951 function copy(o) local c if type(o) == 'table' then c = {} for k, v in pairs(o) do c[k] = copy(v) end else c = o end return c end function rndint(x) return ceil(rnd(x)) end -->8 -- ui function draw_hud() for p in all(plys) do print(scores[p.id],p.scrx,p.scry,p.col) end if cur_state==0 then draw_title() elseif cur_state==2 then report_winner(winner) elseif cur_state==3 then declare_winner(winner) end end function report_winner(id) line2y=64+3 rectfill(64-(4*8),64-8,64+(4*8),64+16,0) rect(64-(4*8),64-8,64+(4*8),64+16,7) print("crash!",64-(4*3),64-3,7) if id==0 then print("draw :(",64-(4*3)-2,line2y,7) else print(("ply"..winner).." scores!",64-(4*6),line2y,7) end end function draw_title() print("beam",64-(4*4),60,10) print("clash",64-(4*2),70,12) print("press 🅾️",64-(4*4),80,7) end function declare_winner(id) print(("p"..id).." wins!",64-(4*4),60,7) print("press 🅾️",64-(4*4),66,7) end __label__ 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000aaa0000000000000000000000000000000000000000000000000000000000000ccc000000000000000000000000000000000000000000000000000 0000000000a0a0000000000000000000000000000000000000000000000000000000000000c0c000000000000000000000000000000000000000000000000000 0000000000a0a0000000000000000000000000000000000000000000000000000000000000c0c000000000000000000000000000000000000000000000000000 0000000000a0a0000000000000000000000000000000000000000000000000000000000000c0c000000000000000000000000000000000000000000000000000 0000000000aaa0000000000000000000000000000000000000000000000000000000000000ccc000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc cddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddc cd1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dddddd1dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000ddddddddd000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000dddd00000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d00000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000d00000000000000000000000000000000000000000000000000000000000000000001dc cd10000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd100000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d00000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dddd0000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000d000000000000000d0000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d00001dc cd100000000000000000000000000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000bbb0bbb0bbb0bbb000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000b0b0b000b0b0bbb000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000bb00bb00bbb0b0b000000000000000000000000000000000000000000000000000000000000001dc cd1a00000000000000000000000000000000000000000000b0b0b000b0b0b0b0000000000000000000000000000000000000000000000000000000000000c1dc cd1000000000000000000000000000000000000000000000bbb0bbb0b0b0b0b000000000000000000000000000000000000000000000000000000000000001dc cd100000000000000000000000d000000000000000000000000000000000000d00000000000000000000000000000000000000000000000000000000000001dc cd100000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000cc0c000ccc00cc0c0c000000000000000000000000000000000000000000000000001dc cd100000000000000000000000000000000000000000000000000000c000c000c0c0c000c0c000000000000000000000000000000000000000000000000001dc cd100000000000000000000000000000000000000000000000000000c000c000ccc0ccc0ccc0000000000000000000000000000000000000dddd0000000001dc cd100000000000000000000000000000000000000000000000000000c000c000c0c000c0c0c000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000cc0ccc0c0c0cc00c0c000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000777077707770077007700000077777000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000707070707000700070000000770007700000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000777077007700777077700000770707700000000000000d00000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000700070707000007000700000770007700000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000d00000000000700070707770770077000000077777000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d00000001dc cd10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000d00000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000d00000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ddddd00000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd100000000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000d00000000000000000000000000000000000000001dc cd10000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd100000000000000000000000000000000000ddd0000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000001dc cd100000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd10000000000d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd10000000000000000000000000000000000000000000000ddddd000000000000000ddddddddd000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000d00d00000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc cd1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111dc cddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddc cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc __sfx__ 1a060000216502b65030650326502c6502665034600156301f6302463026630206301a630006000962013620186201a620146200e620306000961013610186101a610146100e610306002f6002f6002e6002d600 001000000d6000d6000d6000d6000d6000d6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 002000001885000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000