-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy patheasing_gallery.p8
699 lines (622 loc) · 34.4 KB
/
easing_gallery.p8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
pico-8 cartridge // http://www.pico-8.com
version 34
__lua__
-- easing function gallery with an automatic graph of the function over 0,1
-- dev note: if you want to add your own function, add an ef_ function
-- as below here, then find the gc_easing_functions list and
-- add it there, following the pattern.
-- @todo: could use derivatives as well
-- @{ easing functions
function ef_linear(amount)
return amount
end
function ef_cos(amount)
return 0.5 - 0.5*cos(amount/2)
end
function ef_smootherstep(x)
return x*x*x*(x*(x*6 - 15) + 10);
end
function ef_sin_smootherstep(x)
return ef_smootherstep(sin((x/2 + 0.5)))
end
function ef_out_quad(amount)
return -1 * amount*(amount-2);
end
function ef_out_cubic(amount)
local t = amount - 1
return (t*t*t+1)
end
function ef_out_quart(amount)
local t = amount - 1
return -1 * (t*t*t*t- 1)
end
-- @{ spring
function e_exp_approx(f)
return 1 + f*(1 + f/2*(1 + f/3*(1 + f/4)))
end
function ef_spring_criticallydamped(amount)
local omega = 3.14159*2
local v0 = 0
local x0 = 1
return ( (v0 + x0 * omega) * amount + x0 )/(e_exp_approx(omega * amount))
-- return e_exp_approx(omega * amount)
end
-- (x_0 * cos(alpha * t) + sin(alpha*t)*(v_0 + omega * psi * x_0)/alpha)e ^ (-omega * psi * t)
function ef_spring_underdamped(amount)
local omega = (3.14159 * 2)
local psi = 0.5
local alpha = omega * sqrt(1 - (psi * psi))
local v0 = 0
local x0 = 1
return (
x0 * cos(alpha * amount) + sin(alpha * amount) * (v0 + omega * psi * x0)/alpha
) / e_exp_approx(omega * psi * amount)
-- return (1/e_exp_approx(-omega * psi * amount))
-- return (
-- x0 * cos(alpha * amount) - sin(alpha * amount) * (v0 + omega * psi * x0)/alpha
-- )
end
-- @}
crop = 0.30
function ef_out_quart_cropped(amount)
local amount_cropped = min(amount, crop)
local t = amount_cropped - 1
local result = -1 * (t*t*t*t- 1)
if amount >= crop then
amount = amount - 0.3
return (result * (1.0 - amount) + 1.0 * (amount))
end
return result
end
-- @}
function make_easing_function(name, func)
local plot_vals = {}
for i = 0, 60 do
add(plot_vals, func(i/60))
end
return {
name=name,
ef=func,
plot_vals = plot_vals
}
end
-- !!!! add to this list if you want to add a new easing function !!!!
gc_easing_functions = {
make_easing_function("critically damped spring", ef_spring_criticallydamped),
make_easing_function("under damped spring", ef_spring_underdamped),
make_easing_function("smootherstep", ef_smootherstep),
make_easing_function("linear", ef_linear),
make_easing_function("out quadratic", ef_out_quad),
make_easing_function("out cubic", ef_out_cubic),
make_easing_function("out quart", ef_out_quart),
make_easing_function("out quart cropped", ef_out_quart_cropped),
make_easing_function("kaneda", ef_out_quart),
make_easing_function("cosine", ef_cos),
make_easing_function("smootherstep of sin", ef_sin_smootherstep),
}
function make_ef_ui_single()
return {
x=64,
y=64,
space=sp_screen_center,
current_index=1,
frame=0,
current_loop_duration=120,
direction=1,
current_position=0,
loop = "loop",
angle = 0,
smoke={},
-- lightning={},
update=function(t)
t.frame = (t.frame + t.direction)
if (
(t.direction > 0 and t.frame >= t.current_loop_duration)
or (t.direction < 0 and t.frame <= 0)
) then
-- @note for recording
-- @{
-- extcmd "video"
-- @}
if t.loop == "bounce" then
t.direction *= -1
else
if t.direction > 0 then
t.frame = 0
t.direction = 1
else
t.frame = t.current_loop_duration
end
end
end
local ef = gc_easing_functions[t.current_index].ef
t.current_position = ef(t.frame / t.current_loop_duration)
-- @note for recording
-- @{
-- if t.frame == 0 then
-- extcmd "rec"
-- end
-- @}
if btnn(0) then
t.current_index = (t.current_index - 1) % (#gc_easing_functions+1)
if t.current_index == 0 then
t.current_index = #gc_easing_functions
end
end
if btnn(1) then
t.current_index = (t.current_index + 1) % (#gc_easing_functions+1)
if t.current_index == 0 then
t.current_index =1
end
end
if btnn(2) then
t.current_loop_duration += 15
end
if btnn(3) then
t.current_loop_duration -= 15
end
t.current_loop_duration = max(15, t.current_loop_duration)
if btnn(4) then
t.direction *= -1
end
if btnn(5) then
if t.loop == "loop" then
t.loop = "bounce"
else
t.loop = "loop"
end
end
end,
draw=function(t)
-- header
local ind = "⬅️ "..t.current_index.." ➡️"
print(ind, -2*#ind, -58, 6)
-- the current easing function handle
local efo = gc_easing_functions[t.current_index]
-- plot
line(-30, -30, 30, -30, 6)
for i=0, 60 do
local xval = i-30
local yval =-20*efo.plot_vals[i+1] -30
line(xval, yval, xval, yval, 3)
end
-- current bubble
local xval = -30 + 60 * t.frame/t.current_loop_duration
local yval = -20 * t.current_position - 30
circ(xval, yval, 3)
-- main circle
local name = gc_easing_functions[t.current_index].name
if name != "kaneda" then
circfill(-30+60*t.current_position, 0, 10, 6)
else
t:draw_kaneda()
end
-- text at the bottom of the screen
local name = "name: " .. efo.name
print(name, -2*#name, 30, 6)
local v = flr(t.current_position*100)
if t.current_position < 0.05 then
v = 0
end
local value = "value: " .. v .. "%"
print(value, -2*#value, 36, 6)
local cycle = "loop time (⬆️/⬇️): " .. t.current_loop_duration/60 .. "s"
print(cycle, -2*#cycle, 42, 6)
local anim = "loop (❎): " .. t.loop
print(anim, -2*#anim, 48, 6)
local dir = "dir (🅾️): " .. t.direction
print(dir, -2*#dir, 54, 6)
end,
draw_kaneda=function(t)
if t.frame == 0 then
t.smoke = {}
-- t.lightning = {}
t.light_particles = {}
t.angle = 0.35
end
local cp = t.current_position
-- bottom of the motorcycle
p1 = {-30+60*cp, 0}
-- top of the motorcycle
p2 = {
p1[1] + 20*cos(t.angle),
p1[2] + 20*sin(t.angle)
}
p_light = {
p1[1] + 15*cos(t.angle)+6,
p1[2] + 15*sin(t.angle)
}
if cp < 0.85 then
t.angle = 0.35
-- x y r c
add(t.smoke, {p1[1]+rnd(6)-3, p1[2]-rnd(8)+8, 1, 6+flr(rnd(2))})
else
t.angle = 0.35 - 0.1*ef_linear((cp-0.85)/0.15)
cp = 0.75
end
-- if (t.current_position > 0.20 and t.current_position < 0.5) then
-- if g_tick % 6 == 0 or t.lightning == {} then
-- t.lightning = {}
-- t.last = g_tick
-- for i=1,6 do
-- add(
-- t.lightning,
-- {
-- -30+(40*((i-1)/6))*(4*t.current_position-1)+rnd(6)-3,
-- p1[2]+rnd(20)-20
-- }
-- )
-- end
-- end
-- end
-- dust clouds
for i=1,#t.smoke do
local sp=t.smoke[i]
circfill(sp[1], sp[2]-sp[3]/1.5, sp[3], sp[4])
sp[3]+=0.15
end
-- for i=2,#t.lightning do
-- local l1 = t.lightning[i-1]
-- local l2 = t.lightning[i]
-- for i=-2,2,0.25 do
-- line(l1[1]+i+rnd(2)-1, l1[2]+i+rnd(2)-1, l2[1]+i+rnd(2)-1, l2[2]+i+rnd(2)-1, 11)
-- end
-- end
-- for i=p1[1],-30,-1 do
-- circfill(i+rnd(6)-3, p1[2]-rnd(8)-r/1.5, r+rnd(2), 6+flr(rnd(2)))
-- r+=0.25
-- end
-- motorcycle
for i=1,12 do
local offset=0
if i-1 < 3 or 12-i < 3 then
if i < 6 then
offset = 3-i
else
offset = i-10
end
len = 20-offset
end
local p2 = {
p1[1] + len*cos(t.angle),
p1[2] + len*sin(t.angle)
}
local p1 = {
p1[1] + offset*cos(t.angle),
p1[2] + offset*sin(t.angle)
}
-- print("offset: "..offset)
line(p1[1]+i, p1[2], p2[1]+i, p2[2], 8)
-- wheel
if i>3 and i < 10 then
local len = 7
local p2 = {
p1[1] + len*cos(t.angle),
p1[2] + len*sin(t.angle)
}
len = -5
local p1 = {
p1[1] + len*cos(t.angle),
p1[2] + len*sin(t.angle)
}
line(p1[1]+i, p1[2], p2[1]+i, p2[2], 5)
end
end
circfill(p_light[1], p_light[2], 4, 9)
circfill(p_light[1], p_light[2], 2, 10)
add(t.light_particles, p_light)
-- light trail
if t.light_particles then
for i=2, #t.light_particles do
local p1 = t.light_particles[i-1]
local p2 = t.light_particles[i]
for i=-2,2 do
circfill(p1[1],p1[2],2.5,10)
end
end
end
end
}
end
-- @{ std lib
function _init()
stdinit()
game_start()
end
function _update60()
stdupdate()
end
function _draw()
stddraw()
end
-- coordinate systems
sp_screen_center = 3
function game_start()
g_objs = {
make_ef_ui_single(),
}
end
------------------------------
function stdinit()
g_tick=0 --time
g_ct=0 --controllers
g_ctl=0 --last controllers
g_cs = {} --camera stack
g_objs = {} --objects
end
function stdupdate()
g_tick = max(0,g_tick+1)
-- current/last controller
g_ctl = g_ct
g_ct = btn()
updateobjs(g_objs)
end
function updateobjs(objs)
foreach(objs, function(t)
if t.update then
t:update(objs)
end
end)
end
function stddraw()
cls()
drawobjs(g_objs)
end
function drawobjs(objs)
foreach(objs, function(t)
if t.draw then
local cam_stack = 0
-- i think the idea here is that if you're only drawing local,
-- then you only need to push -t.x, -t.y
-- if you're drawing camera space, then the camera will manage the screen
-- center offset
-- if you're drawing screen center
if t.space == sp_screen_center then
pushc(-64, -64)
cam_stack += 1
end
t:draw(objs)
for i=1,cam_stack do
popc()
end
end
end)
end
--returns state,changed
function btns(i,p)
i=shl(1,i)
if p==1 then
i=shl(i,8)
end
local c,cng =
band(i,g_ct),
band(i,g_ctl)
return c>0,c~=cng
end
--returns new press only
function btnn(i,p)
if p==-1 then --either
return btnn(i,0) or btnn(i,1)
end
local pr,chg=btns(i,p)
return pr and chg
end
function pushc(x, y)
local l=g_cs[#g_cs] or {0,0}
local n={l[1]+x,l[2]+y}
add(g_cs, n)
camera(n[1], n[2])
end
function popc()
local len = #g_cs
g_cs[len] = nil
len -= 1
if len > 0 then
local xy=g_cs[len]
camera(xy[1],xy[2])
else
camera()
end
end
function elapsed(t)
if g_tick>=t then
return g_tick - t
end
return 32767-t+g_tick
end
__gfx__
00600000101221010000000033000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0066000000088000000c000030000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0066600010033001000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00666600283083820cc8cc0000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0066650028380382000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0066500010033001000c000030000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00650000000880000000000033000330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00500000101221010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000b00000000000000000000000000bb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000bbbb0000000000000000bb00000bbbb000000000000000000000000000006500000ef00000000000000000000000000000000000000000000000000
00000000bb00bb0000000000000bbbb0000bb0bb00000000000000000000000000000745600cd000000000000000000000000000000000000000000000000000
00000000b0000b000000000000bb0bb000bb000bb000000000000000000000000000980780ab0000000000000000000000000000000000000000000000000000
00000000bbb00b0000000000bb000b000bb00000bb0000000000000000000000000ba00099900000000000000000000000000000000000000000000000000000
00000000b0b00b00000000bbb0000b00bb0000000bb00000000000000000000000dcb0000ab00000000000000000000000000000000000000000000000000000
00000000b0b0000000000bb000000b00b000000000b0000000000000000000000fe0a00000cd0000000000000000000000000000000000000000000000000000
0000000bb0b00000000bbb000000bb000000000000b0000000000000000000000f00b000000e0000a90000000000000000000000000000000000000000000000
000000bb00b000000bbb00000000b0000000000000b0000000000000000000000000c000000f00dcb00000000000000000000000000000000000000000000000
0000bbb000bb00000b0000000000b0000000000000b0000000000000000000000000d000000ffe00000000000000000000000000000000000000000000000000
0000b000000bb00000000000000bb000000000000bb0000000000000000000000000e000000f0000000000000000000000000000000000000000000000000000
0000b0000000bb000000000000bb0000000000000bb0000000000000000000000000f00000ce0000000000000000000000000000000000000000000000000000
0000bb0000000b000000000000b00000000000000b0000000000000000000000000f000000cd0000000000000000000000000000000000000000000000000000
00000b0000000bb00000000000b0000000000000bb00000000000000000000000000000000b00000000000000000000000000000000000000000000000000000
00000bb0000000b00000000000bb00000000000bb000000000000000000000000000000008b00000000000000000000000000000000000000000000000000000
000000b0000000bb000000bbbbb000000000000b0000000000000000bb00000000000000cba00000000000000000000000000000000000000000000000000000
000000000000000b0000bbbbb0000000000000bb000000000000000bbbbb000000000000d0987000000000000ff0000000000000000000000000000000000000
00000000000000bb0bbbbb0000000000000000bb00000000000000bb000b0000000000ffe0009a0000000000efedc00000000000000000000000000000000000
00000000000000b00b000000000000000000000b00000000000000b0000bb000000000f000000bcd0000000cd000b00000000000000000000000000000000000
00000000000000bbbb000000000000000000000bb000000000000bb00000bb00000000000000000e0000000b00009a0000000000000000000000000000000000
0000000000000000000000000000000000000000bb00000000000b0000000b00000000000000000fed00009a00000bc000000000000000000000000000000000
00000000000000000000000000000000000000000bb000000000bb0000000b00000000000000000000cb0080000000d000000000000000000000000000000000
000000000000000000000000000000000000000000b000000000b00000000b000000000000000000000a9870000000e000000000000000000000000000000000
000000000000000000000000000000000000000000bbb000000bb00000000bb000000000000000000000000000000ef000000000000000000000000000000000
00000000000000000000000000000000000000000000bbbbbbbb0000000000b00000000000000000000000000000effb00000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000abcd00a00000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000b00000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000bb0000000000000000000000000000000c000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000de00000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000
__label__
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000006666600000066600000066666000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000066600660000060600000660066600000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000066000660000066600000660006600000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000066600660000000600000660066600000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000006666600000000600000066666000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000033333333333333333333333333333000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000003333300000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000033330000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000333000033300000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000003000303300000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000030000330000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000030033030000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000030300030000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000033000300000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000300333000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000003666666666666666666666666666666666666666666666666666666666666000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000888889990000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000008088999999900000000000000000000000000000000000000000000000000000
000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9980000000000000000000000000000000000000000000000000000
00000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa998000000000000000000000000000000000000000000000000000
00000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa998000000000000000000000000000000000000000000000000000
00000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa998800000000000000000000000000000000000000000000000000
000000000000000000000000000006aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9988880000000000000000000000000000000000000000000000000
00000000000000000000000000006666667777700666660000000000000000000008999999988880000000000000000000000000000000000000000000000000
00000000000000000000000000066666776666676666666000000000000000000000889998888888000000000000000000000000000000000000000000000000
00000000000000000000000000066667766666666666677777000000000000000000088888888888800000000000000000000000000000000000000000000000
00000000000000000000000000666677666666666666776666677777000000000000008888888880880000000000000000000000000000000000000000000000
00000000000000000000000000666676666666666667766666777777700077700000008885555558880000000000000000000000000000000000000000000000
00000000000000000000000000666766666666666677666667777777666777776000000888555555888000000000000000000000000000000000000000000000
00000000000000000000000000666766666666666776666677777766667777777600000088555555808800000000000000000000000000000000000000000000
00000000000000000000000000666766666676666776666677777766667777777760007780855555580800000000000000000000000000000000000000000000
00000000000000000000000000066766666776667776666777777666667777777776677778885555558880000000000000000000000000000000000000000000
00000000000000000000000000066766667776667776666777777666666777777666676777085555558080000000000000000000000000000000000000000000
00000000000000000000000000006676667776667776666777667666666777766666766677008555555800000000000000000000000000000000000000000000
00000000000000000000000000000677667777667777666677677666667777666667776777700055555500000000000000000000000000000000000000000000
00000000000000000000000000000067767777767777766676677766667777666666760007000005555550000000000000000000000000000000000000000000
00000000000000000000000000000066777777776777776666677766667777666666700000000005555550000000000000000000000000000000000000000000
00000000000000000000000000000006666777777677777776667777666777766677777770000000555555000000000000000000000000000000000000000000
00000000000000000000000000000000666677777777777777667777777777777777777767000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000006667777777677777666677777700007777777666000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000066777776607777706667777000000007777760000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000006666666000000000777770000000000777000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000666660000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000006600666066606660000000006060666066006660660066600000000000000000000000000000000000000000
00000000000000000000000000000000000000006060606066606000060000006060606060606000606060600000000000000000000000000000000000000000
00000000000000000000000000000000000000006060666060606600000000006600666060606600606066600000000000000000000000000000000000000000
00000000000000000000000000000000000000006060606060606000060000006060606060606000606060600000000000000000000000000000000000000000
00000000000000000000000000000000000000006060606060606660000000006060606060606660666060600000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000606066606000606066600000000060006000606000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000606060606000606060000600000060006000006000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000606066606000606066000000000066606660060000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000666060606000606060000600000060606060600000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000060060606660066066600000000066606660606000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000600006600660666000006660666066606660000006000666660000600666660006000000000066600660000000000000000000
00000000000000000000000000600060606060606000000600060066606000000060006660666006006600066000600600000000606000000000000000000000
00000000000000000000000000600060606060666000000600060060606600000060006600066006006600066000600000000006606660000000000000000000
00000000000000000000000000600060606060600000000600060060606000000060006600066006006660666000600600000000600060000000000000000000
00000000000000000000000000666066006600600000000600666060606660000006000666660060000666660006000000000066606600000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000060000660066066600000060006666600060000000000600006600660666000000000000000000000000000000000
00000000000000000000000000000000000060006060606060600000600066060660006006000000600060606060606000000000000000000000000000000000
00000000000000000000000000000000000060006060606066600000600066606660006000000000600060606060666000000000000000000000000000000000
00000000000000000000000000000000000060006060606060000000600066060660006006000000600060606060600000000000000000000000000000000000
00000000000000000000000000000000000066606600660060000000060006666600060000000000666066006600600000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000660066606660000006000666660006000000000066000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000606006006060000060006600066000600600000006000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000606006006600000060006606066000600000000006000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000606006006060000060006600066000600600000006000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000666066606060000006000666660006000000000066600000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__music__
00 01424344