Created
May 2, 2019 02:13
-
-
Save ironcladlou/c7dcb145c1997b2d2b863d887475161f to your computer and use it in GitHub Desktop.
Chicks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pico-8 cartridge // http://www.pico-8.com | |
version 18 | |
__lua__ | |
-- global | |
debug={ | |
enabled=true, | |
show={ | |
data=false, | |
timers=true, | |
}, | |
data={}, | |
} | |
function debug:print(s) | |
if(not self.enabled) return | |
print(s) | |
end | |
function debug:report(key, data) | |
if(not self.enabled) return | |
self.data[key]=data | |
end | |
function debug:draw_data() | |
if(not self.enabled) return | |
if(not self.show.data) return | |
for key, data in pairs(self.data) do | |
print(key..": "..data) | |
end | |
end | |
world={ | |
objects={}, | |
object_count=0, | |
} | |
function world:create(obj) | |
self.object_count+=1 | |
obj.id="obj"..self.object_count | |
self.objects[obj.id]=obj | |
debug:report("world.object_count", self.object_count) | |
return obj | |
end | |
function world:destroy(obj) | |
self.objects[obj.id]=nil | |
debug:report("world.object_count", self.object_count) | |
end | |
animations={ | |
chick_idle_e={i=0,len=2,jitter=10}, | |
chick_idle_w={i=0,len=2,jiter=10,flip_x=true}, | |
kid_idle_e={i=16,len=2,jitter=10}, | |
kid_idle_w={i=16,len=2,jitter=10,flip_x=true}, | |
adult_idle_e={i=32,len=2,jitter=7}, | |
adult_idle_w={i=32,len=2,jitter=7,flip_x=true}, | |
egg_idle_e={i=48,len=2,jitter=3}, | |
egg_idle_w={i=48,len=2,jitter=3}, | |
} | |
chicken={} | |
function chicken:new() | |
self.__index = self | |
return setmetatable({ | |
position={}, | |
motion={ | |
vel=vector:new(1, 0), | |
acc=vector:new(0, 0), | |
}, | |
sprite={}, | |
anim={}, | |
lifecycle={ | |
name="adult", | |
duration=3, | |
}, | |
}, self) | |
end | |
function age(o) | |
local lifecycle=o.lifecycle | |
local name=lifecycle.name | |
local t=lifecycle.timer | |
if not t then | |
t=timer:new(lifecycle.duration) | |
lifecycle.timer=t | |
end | |
t:update() | |
if(not t.done) return | |
local current=lifecycle.name | |
if current=="adult" then | |
o.lifecycle={ | |
name="kid", | |
duration=3, | |
} | |
elseif current=="kid" then | |
o.lifecycle={ | |
name="chick", | |
duration=3, | |
} | |
elseif current=="chick" then | |
o.lifecycle={ | |
name="egg", | |
duration=3, | |
} | |
elseif current=="egg" then | |
-- todo | |
end | |
end | |
function meander(o) | |
local motion=o.motion | |
local anim=o.anim | |
local lifecycle=o.lifecycle | |
local heading=motion.vel:heading() | |
local motion_class="idle" | |
if motion.acc.x != 0 or motion.acc.y != 0 then | |
motion_class="walk" | |
end | |
local key=lifecycle.name.."_"..motion_class.."_"..heading | |
local meta=animations[key] | |
debug:report("meander:key."..o.id, key) | |
debug:report("meander:meta.i."..o.id, meta.i) | |
if anim.id!=key then | |
o.anim=animation:new(key, meta) | |
end | |
end | |
function animate(o) | |
o.anim:update() | |
o.sprite.i=o.anim.sprite.i | |
o.sprite.flip_x=o.anim.sprite.flip_x | |
o.sprite.flip_y=o.anim.sprite.flip_y | |
end | |
function render(o) | |
local sprite=o.sprite | |
local position=o.position | |
spr(sprite.i, position.x, | |
position.y, 1, 1, sprite.flip_x) | |
end | |
animation={} | |
function animation:new(id, meta) | |
self.__index=self | |
return setmetatable({ | |
id=id, | |
meta=meta, | |
i=0, | |
offset=0, | |
sprite={}, | |
}, self) | |
end | |
function animation:update() | |
self.i+=1 | |
local spd=0 | |
if self.meta.jitter then | |
spd=flr(rnd(self.meta.jitter)+1) | |
else | |
spd=self.meta.spd | |
end | |
if(self.i%(30/spd)==0) then | |
self.offset+=1 | |
self.i=0 | |
end | |
if(self.offset>=self.meta.len) self.offset=0 | |
self.sprite.i=self.meta.i+self.offset | |
self.sprite.flip_x=self.meta.flip_x | |
self.sprite.flip_y=self.meta.flip_y | |
end | |
-->8 | |
-- init | |
function _init() | |
for i=1,5 do | |
local c=chicken:new() | |
c.position=rnd_position(119, 119) | |
world:create(c) | |
end | |
end | |
-->8 | |
-- update | |
function _update() | |
local chikn={} | |
for id, o in pairs(world.objects) do | |
if(o.lifecycle) add(chikn, o) | |
end | |
foreach(chikn, age) | |
foreach(chikn, meander) | |
end | |
-->8 | |
-- draw | |
function _draw() | |
cls() | |
cursor(0, 0) | |
color(7) | |
map(0,0, 0,0) | |
local animated={} | |
local renderable={} | |
local chikn={} | |
for id, o in pairs(world.objects) do | |
if(o.lifecycle) add(chikn, o) | |
if(o.anim) add(animated, o) | |
if(o.sprite) add(renderable, o) | |
end | |
debug:report("draw.chikn", #chikn) | |
debug:report("draw.animated", #animated) | |
debug:report("draw.renderable", #renderable) | |
foreach(animated, animate) | |
foreach(renderable, render) | |
if(debug.enabled) foreach(chikn, print_timer) | |
if(debug.enabled) foreach(chikn, print_lifecycle) | |
if(debug.enabled) foreach(chick, print_anim) | |
debug:draw_data() | |
end | |
function print_timer(o) | |
local t=o.lifecycle.timer | |
if(not t) return | |
print(t.seconds, o.position.x-2, o.position.y-2, 3) | |
reset_cursor() | |
end | |
function print_lifecycle(o) | |
print(o.lifecycle.name, o.position.x+5, o.position.y-2, 3) | |
reset_cursor() | |
end | |
function print_anim(o) | |
print(o.anim.id, o.position.x-2, o.position.y-2, 7) | |
reset_cursor() | |
end | |
function reset_cursor() | |
cursor(0, 0) | |
color(7) | |
end | |
-->8 | |
-- utils | |
compass={ | |
e="e",ne="ne",n="n",nw="nw", | |
w="w",sw="sw",s="s",se="se", | |
} | |
vector={} | |
function vector:new(x, y) | |
self.__index=self | |
return setmetatable({ | |
x=x, | |
y=y, | |
}, self) | |
end | |
function vector:string() | |
return "x="..self.x..",y="..self.y | |
end | |
function vector:heading() | |
local v=self | |
if(v.x==1 and v.y==0) return compass.e | |
if(v.x==1 and v.y==-1) return compass.ne | |
if(v.x==0 and v.y==-1) return compass.n | |
if(v.x==-1 and v.y==-1) return compass.nw | |
if(v.x==-1 and v.y==0) return compass.w | |
if(v.x==-1 and v.y==1) return compass.sw | |
if(v.x==0 and v.y==1) return compass.s | |
if(v.x==1 and v.y==1) return compass.se | |
end | |
function rnd_position(max_x, max_y) | |
return { | |
x=flr(rnd(max_x)), | |
y=flr(rnd(max_y)), | |
} | |
end | |
timer={} | |
function timer:new(seconds) | |
self.__index = self | |
return setmetatable({ | |
seconds=seconds, | |
done=false, | |
}, self) | |
end | |
function timer:update() | |
if(self.done) return | |
if(not self.i) self.i=0 | |
self.i+=1 | |
if self.i % 30 == 0 then | |
self.seconds -= 1 | |
if self.seconds <= 0 then | |
self.seconds=0 | |
self.done=true | |
end | |
end | |
end | |
__gfx__ | |
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b3bbbbbbbbbbbbbb | |
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
0000a00000000a000000a0000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
00aac9000000aa0000aac90000aac90000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbb3bbb | |
000aa0000006aca0000aa000000aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
0006d0000006d9000006d000000d600000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
0000088000000000000008800000000000000880000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
0000870000700000000087000000088000008700000008800000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
07007c900070000007007c900700870007007c90070087000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
07777800007700000777780007777c900777780007777c900000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
0077700000777780007770000077780000777000007778000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbb3bbbb | |
006d0000006d8c78006d0000006d000000d60000006d00000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
0006d0000006d9080600d000000600000d00600000d600000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00088800000000000008880000000000000888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
70007c800007000070007c807008880070007c807008880000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
77777799007600087777779977777c807777779977777c8000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
07776780077677780777678007777799077767800777779900000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00667700007777c80066770000666780006677000066678000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00940000009489800094000000940000004900000094000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00094000000949000900400000090000040090000049000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00067000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00677700006777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
06777770067777700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
06777770677777770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
06777770677777770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
00d77d000dd777d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
000dd000000ddd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |
__map__ | |
1e1e1e1e0e1e1e1e1f1e1e1e1e1e1e1e0f1e1e1e0e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e | |
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e | |
1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e0e1e1e0f1e1e1e1e1e1e0f1e1e1e1e1e1e0f0f1e1e1e0f1e1e1e1e1e1e1e1e1e0e0f1e1e1e0f | |
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e0e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e0f1e1e1e | |
1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e | |
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e | |
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e | |
1e1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e | |
1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e | |
0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e | |
1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e | |
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f | |
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e | |
1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1f1e1e1e1e0f1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e0f1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e | |
0e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f | |
1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e | |
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e | |
1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e | |
0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e | |
1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e0f1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e | |
1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e | |
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e0e0f | |
1f1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1f1e1e1e0f1e1e1e1e1e1e1e1f1e1e1e1e1f1e1e0f1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e0e1e1e1e1f1e1e1e1e1f1e1e | |
1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f | |
1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e | |
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e | |
0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e1e0e1e0e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e | |
1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e | |
1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1f0f1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e | |
1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e1e1e1e0e1e1e0e1e1e1e1e1e1e1e1e0e1e1e0e1e1e1e1e1e0e1e1e1e1e1e0e1e1e0e1e1e1e1e1e0e1e1e0e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e1e1e1e1e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e1e1e1e0e1e0e1e1e0e1e1e0e1e1e1e1e | |
1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1e1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1e1e1e1f1e1e1f1e1e1f1e1e1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1e1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1e1e1e1f1e1e1e1e1f1e1e1f1e1e1f1e1e | |
0f1e1e1e1e1e1e1f1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1f1f1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e0f1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment